home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / utilities / misc / skick / skick.doc < prev    next >
Text File  |  1993-04-26  |  27KB  |  556 lines

  1.  
  2.                         +++++++++++++++++++++++++
  3.                         +                       +
  4.                         + S K I C K v 2.0 & 3.0 +
  5.                         +                       +
  6.                         +  (C) SinSoft 1992,93  +
  7.                         +                       +
  8.                         +     User's manual     +
  9.                         +                       +
  10.                         +++++++++++++++++++++++++
  11. Introduction.
  12. =============
  13.  
  14. SKick  is  the replacement for Kickit, ZKick and LKick kickers, intended for use
  15. on  A500,  A600, A1200 or A2000 machines with OS2.0 in ROM (for instance A500+).
  16. Its  task  is to soft-kick any other version of kickstart into RAM.  'Any other'
  17. means  also  the  1.3  kickstart,  which  was unavailable to kick with any other
  18. kicker.   KickIt  and  ZKick  both require 1.3 ROM for operation and function of
  19. LKick from 2.0 isn't very stable.  SKick is fully assembly-written program, with
  20. many facilities added.  The main advantages of SKick are:
  21. - ability to relocate any kickstart image, when the relocation table is supplied
  22.   into any  kind  of  RAM  (CHIP,  FAST,  EXP etc.)
  23. - standard  operation  (like  Kickit etc.), when table is not available
  24. - patch function (patches kickstart image prior its start, which may correct
  25.   known bugs etc.), using supplied patch file
  26. - powerful command line and Workbench interface
  27. - Graphic User Interface (GUI)
  28. - all operations during kicking are made so 'purely' as possible, all structures
  29.   are exactly in the same state as if kicked from ROM
  30. - small code size (even if most powerful, SKick is the shortest from all the 
  31.   kickers)
  32. - relocation tables for new kickstart versions will be automatically available
  33.   for registered users
  34. - loaded kickstart survives any 'soft crash' (without corrupting execbase or 
  35.   kickstart itself) and user reset
  36. - allows use of CoolCapture, romtags and memtags with user programs without any
  37.   limitation
  38.  
  39.  
  40. 1. Copyright.
  41. =============
  42.  
  43. SKick and its documentation files are Copyright (C) SinSoft 1992, Prague, CSFR.
  44. ===============================================================================
  45.  
  46. This  archive  may be freely redistributed, but only in totally unchanged state,
  47. i.e.   no  files  can be added, deleted, modified etc.  All copyright notices in
  48. the   program   and  its  documentation  must  remain  on  their  places.   Also
  49. '.displayme' and other files, usually with 'wonderful' ANSI graphics, so obvious
  50. at various BBS's, cannot be added.
  51.  
  52. 2. Contents of the archive.
  53. ===========================
  54.  
  55. This .LHA archive MUST contain following files:
  56.  
  57.     SKick          -  executable code of the program
  58.     SKick.info    -  program icon
  59.     SKick.doc     -  this file
  60.     History.doc   -  development history - PLEASE READ FOR LATEST CHANGES
  61.     AllocKick     -  a little utility for non-autoconfig memory owners
  62.     AllocKick.doc -  its separate documentation
  63.  
  64.     directory Kickstarts:
  65.         kick40009.A4000.BETA.RTB    a) d)
  66.         kick40009.A4000.BETA.PAT
  67.         kick40009.A600.BETA.RTB        a)
  68.         kick40009.A600.BETA.PAT
  69.         kick40003.A3000.BETA.RTB    a)
  70.         kick40003.A3000.BETA.PAT
  71.         kick40003.A600.BETA.RTB        a)
  72.         kick40003.A600.BETA.RTB
  73.                 kick39115.A3000.BETA.RTB    a) e)
  74.         kick39115.A3000.BETA.PAT
  75.         39115_Romkick.RTB        a)
  76.         39115_Romkick.PAT        
  77.         kick39110.A500.BETA.RTB        a)
  78.         kick39110.A500.BETA.PAT
  79.         kick39106.A1200.RTB        b)
  80.         kick39106.A500.BETA.RTB        a)
  81.         kick39106.A500.BETA.PAT
  82.         kick39046.A500.BETA.RTB        a)
  83.         kick39046.A500.BETA.PAT
  84.         kick37175.A500.RTB         b)
  85.         kick36143.A3000.RTB        c)
  86.             kick36143.A3000.PAT
  87.         kick34005.A500.RTB
  88.         kick34005.A500.PAT
  89.  
  90. Notes:
  91.     General:  All the files are created for use on the A500/600/1200/2000
  92.     although  their  original  target  machine  may  be different.
  93.     On  the original target machine, they may be usable without .PAT file,
  94.     but it is not guaranteed.
  95.  
  96. a)
  97.     These kickstart versions are available only to official developers.
  98. b)
  99.     Patch table not required to use these kickstarts.
  100. c)    
  101.         This 'historical' version of OS is obsolete and it is not
  102.         recommended to use it.
  103. d)
  104.     CPU >68020 is needed to run this release because of the new
  105.     utility.library.
  106.  
  107. e)    Original A600/1200 files are NOT supported for this release.
  108.     A600/1200 users can't use PCMCIA and hard drive with this kickstart.
  109.  
  110. NOTE TO COMMODORE:
  111.   Sorry  CBM  for  a  small  law-break (I hope small) from my side:  I'm not the
  112. official  developer,  but I have Your BETA releases on my drive:  they came into
  113. Czech republic  from  some  pirate  BBS  in  Germany and they are available from
  114. general  Amiga population.  I've never misused or abused them and I also keep in
  115. mind  Your  copyrights:   I  never redistribute them.  But when I've got them, I
  116. wanted  to help another people and do some useful work:  All known kickers (they
  117. are  PD,  aren't they?) seemed to be imperfect in some aspects for me and then I
  118. realized  to  write my own kicker to meet all my needs and give it to all people
  119. which need it too.
  120.  
  121. 3. System requirements.
  122. =======================
  123.  
  124. SKick may be operated, if the following requirements are met:
  125. - Computer: Amiga 500, 600, 1000, 1200 and 2000 with 68000, '010 and '020 
  126.   processors
  127. - Minimum 1 meg of RAM (possibly only Chip RAM, expansion RAM isn't needed when
  128.   relocation is to be used)
  129. - Kickstart   2.0  or  3.0  in  ROM  (not tested with V36, because there are not
  130.   machines with V36 ROM in Czechoslovakia, developed and tested under 37.175 and
  131.   39.106)
  132.  
  133. That's  all.  When Your system meets all these requirements, You are able to use
  134. SKick.   Of course, large amount of RAM (especially expansion RAM) will help You
  135. use non-relocatable kickstarts (they are located from $200000 obviously), but it
  136. is not necessary.
  137.  
  138. Skick is designed to work on machines without a MMU.  For machines with the MMU,
  139. there  exist suitable software to do such work.  Especially, program SoftBoot is
  140. available  to  official developers and allows to remap any RAM to the $F8 space,
  141. thus emulating the ROM.
  142.  
  143.  
  144. NOTE:  Because of a nature of 2.0 system, it is impossible to kick anything from
  145. address  $c00000  exactly.  The first usable address is $c40000.  1.3 system did
  146. allow  this, 2.0 doesn't.  It is because the system restart is more drastic than
  147. on 1.3 system. 
  148.     
  149.  
  150. 4. Installation.
  151. ================
  152.  
  153. Installation  of  SKick  and  related  files  is  very  simple.   Please  follow
  154. instructions below:
  155.  
  156. On  Amiga  3000,  there  is the convention, that during cold start process, file
  157. 'DEVS:kickstart' is read into memory and run.  To make the possibility to choose
  158. from  several  kickstarts,  SKick searches kickstart images and related files on
  159. the directory DEVS:kickstarts.  Your first step is to issue the command
  160.  
  161. >Makedir DEVS:kickstarts 
  162.  
  163. from  the  Shell,  so  the appropriate subdirectory will be created on Your boot
  164. partition (usually hard disk).
  165.  
  166. Your  second  step  is  to  copy  the  auxiliary files (.RTB and .PAT) from this
  167. archive,  if  You  wish  to  use  them, and to add appropriate kickstart images.
  168. SKick can handle both 'exact ROM images' and files intended for Kickit and other
  169. kickers.
  170. When  copying  kickstart  images,  rename them with names of .RTB/PAT files, but
  171. without  any  extension; or, vice versa, rename auxiliary files according to the
  172. main  file.  All the files of one particular kickstart must have identical names
  173. (except extensions).
  174.  
  175.  
  176. IMPORTANT  NOTE:  There are no kickstart images in this archive!  Supplied files
  177. only  allow  to  use  standard  1.3  (34.5),  2.04 (37.175) and 3.0 (39.106) ROM
  178. images,  which may be obtained from Commodore.  There are also files for another
  179. kickstart  versions,  available  to official developers only.  I hope that SKick
  180. will  help  them to keep their work.  It's only a dream for me to be an official
  181. developer...   
  182. ANOTHER  NOTE:  Last days, more and more people ask me why their kickstart files
  183. can't  be  used  with SKick.  The reason is simple:  their files are PATCHED, so
  184. the  checksum  doesn't match to the reloc and patch tables.  They also ask me to
  185. support  these  patched  files.   My answer is simple:  NO.  NEVER.  Why ?  It's
  186. also  simple:   1) These files are obviously available on various BBSs, they are
  187. never  distributed  by Commodore.  Their contents is unpredictable, similarly as
  188. their   function.    All   the  patches  do  'cosmetic  changes'  like  removing
  189. Beta-requesters,  replacing  various  texts  in  the ROM with another ones (like
  190. Amiga  Workbench  >  AmigaOS 3.0) etc. However, there is no way how to determine
  191. all  the  patches  and  verify  them  for their correctness (I think that such a
  192. 'patcher' can't be a good programmer) 2) Because such files can be considered as
  193. pirate  files,  their  support  may  be interpreted as support of piracy itself.
  194. However,  SKick  was  never  designed  to  be  the pirate program and I will not
  195. support piracy as such.
  196.  
  197.  
  198. The  third step is to copy SKick itself (with its icon) into any place where You
  199. wish to have it.  Please read the following chapter for more explanation.
  200.  
  201. 5. SKick usage
  202. ==============
  203.  
  204. SKick may be called either from the Shell or from the Workbench.
  205.  
  206. 5.1 Invocation from the Shell
  207. =============================
  208.  
  209. When invocating SKick from the Shell, following template should be used:
  210.  
  211. NAME,ADR/K,FORCE/S,EXT/S,CHIP/S,FAST/S,NOEXT/S,NOREL/S,NOPATCH/S,QUIET/S,
  212. GUI/S,RELSTACK/S,FASTRES/S,KILLTAGS/S,CORR5M/S,DEBUG/S
  213.  
  214. There are two optional parameters and many switches.
  215.  
  216. NAME
  217. ==== 
  218. This  parameter  specifies  the  file name with full path of the kickstart to be
  219. loaded.   If  omitted,  SKick will do nothing, until GUI is called either by its
  220. switch  (GUI)  or  by pressing left mouse button during program run.
  221.  
  222. ADR
  223. ===
  224. ADR parameter allows You to specify the address for the relocatable kickstart to
  225. be  loaded.   The address must be entered in hex, and only the upper byte of the
  226. address is  entered.   It  is  also  assumed  always to be in 24-bit space.  For
  227. example, when You wish to load Your kickstart image from $C80000, please specify
  228. Your  wish  with  'ADR  C8'  or 'ADR $C8', or possibly 'ADR $00C8'.  NOTE:  This
  229. option  is  only  useful  for  special cases, like debugging etc.  Normally, the
  230. fully automatic search for the appropriate place is performed and the best place
  231. for  the  kickstart  is found.  NOTE for users with 'kickstart RAM':  A1000's or
  232. any  other  machines, having RAM from $F00000, allow loading into this location.
  233. In  such  case,  the  command  SKick  <name> ADR F0 FORCE has to be used, as the
  234. kickstart RAM isn't normally accessed, and obviously it is not added to the free
  235. memory list.
  236.  
  237. FORCE
  238. =====
  239. This  switch  allows  You  to  force  load  to  the place, which is not normally
  240. contained  on  the  memlist.  It is designed to help when loading kickstart into
  241. non-autoconfiguring  memory  expansion  board, which was not added to the system
  242. yet.   This  switch is not recommended for general use, as its incorrect use may
  243. cause  drastic  unpredictable  results.   No  checking  is done if the memory is
  244. present;  if  it  isn't  the 'Kickstart image has incorrect checksum' message is
  245. issued and the program terminates.
  246.  
  247. EXT,CHIP,FAST
  248. ============= 
  249. These 3 switches specify the kind of memory the free space will be searched for.
  250. Only  one of them may be selected; when unspecified, all standard memory address
  251. ranges are scanned in the order of EXT, FAST and CHIP.
  252.  
  253. NOEXT
  254. =====
  255. This  switch  excludes external memory from being searched.  Search is performed
  256. for FAST and CHIP memory only.  This switch may be used, if user wants to have a
  257. big  amount of memory in one large block.  Normally, its use is not recommended,
  258. because the speed of kickstart will be decreased when multi-bitplane video modes
  259. are selected.
  260.  
  261. NOREL
  262. =====
  263. NOREL  switch  disables  the  relocation process even if the relocation table is
  264. present.   Kickstart  will  be  loaded  exactly to the place it is assembled, if
  265. available.   When the kickstart is assembled from $200000 and You have expansion
  266. RAM,  there  are  no  problems.  Problems will occur when using normal ROM image
  267. from $f80000 or $fc0000, for example kickstart 1.3.  In these cases, this switch
  268. cannot be used.
  269.  
  270. NOPATCH
  271. =======
  272. This  flag  suppresses  the patch facility.  Normally, when .PAT file is present
  273. for  given  kickstart,  it will be opened and kickstart patched to correct known
  274. bugs.   When  this flag is used, patching is suppressed.  NOTE:  Some kickstarts
  275. may  REQUIRE  patching.   For  example,  39.46  Beta  contains very serious bugs
  276. preventing it from being started without patching on most machines without 68020
  277. or  greater  CPU.   Standard 1.3 must be patched to allow more than 512K of CHIP
  278. RAM during reboot and to allow correct performing of user reset (CTRL-LA-RA).
  279.  
  280. QUIET
  281. =====
  282. The  QUIET flag supresses all messages writen by the program.  When started from
  283. Shell,  it  has  the  same  effect  like  >NIL:  redirection.  When started from
  284. Workbench, program window is not opened.
  285.  
  286. GUI
  287. ===
  288. The  GUI  switch  activates  the  GUI  screen  of  the program.  GUI may also be
  289. obtained  by pressing the LMB during program run; this may be used when SKick is
  290. run from Startup-Sequence automatically.
  291.  
  292. RELSTACK
  293. ========
  294. In current versions of 3.0 (V39.106 and above), for example in A1200, supervisor
  295. stack is allocated from the top of Chip RAM, when Fast RAM is unavailable.  This
  296. causes  problems  on  machines with Chip RAM only, such as unexpanded A1200.  To
  297. prevent this, RELSTACK option should be included in the command line or ToolType
  298. flag.   When  this  option  is  active,  supervisor  stack is transferred to the
  299. beginning  of  RAM  (standard  AllocMem) and the space already allocated is made
  300. free  prior  the kickstart is attempted to load.  
  301. This  option  is not affected by the GUI mode and cannot be selected from there.
  302. In  other situations than mentioned above (3.0 ROM & Chip RAM only), use of this
  303. option is useless and causes greater memory fragmentation.
  304.  
  305. FASTRES
  306. =======
  307. This option allows Skick's resident module to be allocated in Fast RAM.  Default
  308. memory  location for the module is somewhere in Chip RAM, because it is the most
  309. safe  place.   If particular configuration allows it, specifying this option may
  310. increase speed of reboot/reset.  This option is ignored when booting 1.3 system,
  311. because  it is not usable in this case.  It may also cause problem under certain
  312. conditions.  If Your machine crashes with this switch active, don't use it.
  313.  
  314. KILLTAGS
  315. ========
  316. This  option  allows to kill all the KickTags and MemTags as well as CoolCapture
  317. vector  before  installing SKick's ones.  This ensures that the machine is clear
  318. when  the  new  kickstart  starts.   Note  that  this is done automatically when
  319. kicking  1.3 system (there is a risk of incompatibility of the modules available
  320. for  2.0  only  (like  NewAlert))  or  when  performing hard-load (risk that the
  321. modules or their parts are located in memory occupied by kickstart image later).
  322.  
  323. CORR5M
  324. ======
  325. This  option  is  useless  for the most of users except owners of GVP A530 Turbo
  326. Harddisk.   Those may buy 4M expansion memory modules (SIMMs) to expand original
  327. 1M  capacity  of 32bit RAM.  The manufacturer doesn't recommend mixing of 1M and
  328. 4M  modules;  if  it  is done (4M one must be the first, 1M one the 2nd), system
  329. reports 8 Megs of total capacity, but physically it has 5 Megs with the last one
  330. Meg  mirrorred  4  times.   CORR5M  option  allows  to use this configuration by
  331. correcting  the  BoardSize item of the memory board's ConfigDev structure to the
  332. correct 5 Megs.
  333.  
  334. DEBUG
  335. =====
  336. Sometimes  users  report  incorrect SKick operation, but it is hard to determine
  337. the  cause of it.  To gain additional information about the kicking process, the
  338. DEBUG option was introduced.  When active, two special SKick features are turned
  339. on:  
  340. 1)  The  message  'Space  for  resident module allocated at $XXXXXXXX' is issued
  341. during  the  Skick  run.  The programmer then may decide if it is correct, or he
  342. may  view  it  using the debugger etc.  
  343. 2)  After  every reboot, color effects are visible on the screen.  These effects
  344. are  tracking  the SKick resident module functions and they may really help with
  345. finding problems.  The colors have 'pastel' shades as the opposite of the bright
  346. ones  when  the  kickstart  itself  reports an error condition.  For the general
  347. user, it is important that the colors should appear in the order of (red, green,
  348. blue)   or  maybe  (green,  red,  green,  blue)  -  it  depends  on  the  memory
  349. configuration.   All the colors must be detectable, although some of them may be
  350. displayed  for  a very short time - it depends on the CPU speed.  When the Skick
  351. doesn't  work  correctly (crashes, doesn't recognize expansion boards, kickstart
  352. isn't  reset-proof etc) please try this option, observe the screen carefully and
  353. mail me a bug report with Your observation included.
  354.  
  355.  
  356. 5.2 Invocation from Workbench.
  357. ==============================
  358.  
  359. Invocation  of  the  program from Workbench is very simple:  double-click on its
  360. icon  and  it  will  be performed.  Using 'Information', You may specify all the
  361. Tool Types like from Shell.  All switches are defined as FLAGS.
  362.  
  363. One example:
  364. NAME=devs:kickstarts/kick39046
  365. FLAGS=QUIET|EXT
  366.  
  367. This  definition  automatically loads kickstart named kick39046, does relocation
  368. and  patching,  scans only EXT memory for the space and doesn't issue any screen
  369. output.
  370.  
  371. 5.3 Suggested usage
  372. ===================
  373.  
  374. SKick  is  designed to be called as the first command from the Startup-sequence,
  375. either  with any name, or without it.  When the name is present, SKick will load
  376. appropriate  kickstart  image,  when  running  from  ROM  one.  When the name is
  377. missing,  SKick  will  do  nothing  and remain in ROM.  HOWEVER:  If the user is
  378. holding  LMB during Skick's run, Skick will open its Graphic User Interface.  It
  379. is  the screen very similar to Boot Menu.  There are all the kickstarts found in
  380. the  DEVS:Kickstarts  directory  displayed  and the user may choose any of them.
  381. The ROM kickstart is also displayed as one of them.  They are sorted accordingly
  382. to  their  versions  and revisions.  There are only version and revision numbers
  383. displayed,  not the names of disk files, with the remark (RAM) or (ROM).  In the
  384. lower  part  of  screen, there are 3 gadgets:  Patching (ON/OFF), Load into (ANY
  385. RAM/CHIP  RAM/FAST  RAM/EXP  RAM/NOT  EXP  RAM/) and Relocation (ON/OFF).  These
  386. gadgets play the role of command line switches.
  387.  
  388. Once the GUI is activated, the selection must be made (there is no CANCEL gadget
  389. in  this  version, may be in future ...).  After the selection is made, selected
  390. kickstart  is  simply loaded, regardless of the actual system status (of course,
  391. when  the currently running kickstart is selected, it is NOT reloaded).  This is
  392. done  in  TWO  steps, if necessary.  Let's suppose that RAM kicstart is running,
  393. and we wish another RAM kickstart.  Immediately, SKick will reset the machine to
  394. ROM  and  reboot  it,  but  it  remembers  Your choice first.  When started from
  395. startup-sequence,  it  ignores  all its defaults and also the LMB, automatically
  396. loads  required  RAM  kickstart  and  reboots  again.  When it is called now, it
  397. ignores  its  defaults,  but LMB may be used to change kickstart using GUI.  The
  398. new  kickstart will remain active until next cold start (i.e.  not reboot/reset)
  399. of the machine is performed.  When some loaded kickstart is default and You wish
  400. to  remain  in  ROM,  after  selecting it from the GUI Your select overrides the
  401. default.  Even if rebooted, SKick will NOT load its default file and will remain
  402. in  ROM.   As  an  example,  when we wish to beta-test version 39.110 for a long
  403. time, we put into startup-sequence this line as a first command:
  404.  
  405. SKick devs:kickstarts/kick39046 QUIET
  406.  
  407. This  will  start  39.046  kickstart immediately after system power-up.  When we
  408. wish  to  remain  in  ROM or to use another kickstart, for example 34.005, it is
  409. necessary  to  hold LMB during boot (if we boot from HD it is only 2-3 sec after
  410. Boot  Menu),  and  to  select  our  choice.   Until next cold start (power down,
  411. double-reset  as  explained below or very hard crash), the selection will remain
  412. active  and  SKick  will not be doing anything.  
  413. It is a good idea, to put the SKick icon also in some place to change kickstart,
  414. when  the  system  is fully up and running.  Suggested setting is to use the GUI
  415. switch,  which will bring the menu screen automatically and in every case. 
  416.      NOTE:  When in the Startup-sequence, in the SKick command, the name is used
  417. (i.e.  some RAM kickstart is selected as a default), it is necessary to put some
  418. name  to  the  icon  too,  even if any name is overriden with our choice.  It is
  419. necessary  because  the  Skick  called  from Workbench must know the conditions,
  420. which  have  its  'college' from startup-sequence.  So the suggested setting for
  421. Workbench is:
  422.  
  423. NAME=DUMMY (or anything else)
  424. FLAGS=GUI
  425.  
  426. or  only  the  second  line  if  the  default kickstart is ROM (no name given in
  427. startup-sequence) or the SKick command is not used in it at all.
  428.  
  429. NOTE:   The  name  of  kickstart  file  is  limited  in  length.  Maximal length
  430. correctly  processed  by  SKick  is 32 characters.  It is the length WITHOUT the
  431. path,  only  pure  filename.  Please accept this limitation.  Longer names cause
  432. malfunction (not crash) of SKick.
  433.  
  434. To  force  the machine to return to the ROM kickstart, very simple operation may
  435. be   used.    The  user  simply  hits  the  reset  combination  (Ctrl-LeftAmiga-
  436. RightAmiga).   The display will disappear from the screen.  After some time from
  437. releasing  reset  buttons,  the screen color will change to 'medium gray' (it is
  438. the  FIRST  color change from many others).  ALso the power LED will shine fully
  439. from  this  moment.   This  is  the exact time to hit the reset combination once
  440. again.   Now,  any  reset-resistant things (all captures, memtags, romtags etc.)
  441. are off and system is performing cold start. I think that there is no need for a
  442. special program (like KillZKick), because this operation is handy and easy.
  443. Note: This doesn't work on A1200. Sorry. The solution is coming...
  444.  
  445.  
  446.  
  447. 6. Theory of operation
  448. ======================
  449.  
  450. This chapter will be included only in the developer's package.
  451.  
  452.  
  453. 7. Troubleshooting
  454. ==================
  455.  
  456. Symptom            Cause            Solution
  457. ---------------------------------------------------------------------------
  458. Error message from    According to the    According to the message
  459. SKick is displayed    message
  460.  
  461. Power LED blinks    Many...            Try a different kickstart to 
  462. after kicking                    find the problem
  463.  
  464. Kickstart does not    ColdCapture        Do not use programs modifying
  465. survives reboot        changed, ExecBase    ColdCapture and corrupting
  466.             corrupted        system areas
  467.  
  468. Kickstart does not    Crash too deep        Don't crash :-)
  469. survives crash        (ExecBase destroyed)
  470.  
  471. Power LED blinks    Kickstart checksum    Possibly after a crash.
  472. repeatedly, RED        failed (image        Don't modify running images!
  473. screen            patched/destroyed)
  474.  
  475. Any other        I don't know        Ask me for a solution, if You
  476.                         can't find any (use E-mail).
  477.                         Use the DEBUG mode first!
  478. 8. File structures
  479. ==================
  480.  
  481. 8.1 .RTB file
  482.  
  483. .RTB  file  consists  of  two parts.  The first part contains all the relocation
  484. offsets  compressed  by  my  own simple algorithm.  It is created with a special
  485. program  called  RTG  (relocation  table generator) from specially pre-processed
  486. kickstart  image.   How  to  get  this image, it is my magic and I'll never tell
  487. anybody  about  it.  One note only:  generation of 39.046 .RTB took 1 1/2 hours.
  488. (Manual work, + about 10 mins my 7MHz '010 CPU time).  Second part contains BCPL
  489. relocation  table and it is required for 1.3 ROM only.  It was created manually,
  490. analysing  dos.library,  which is written in BCPL in 1.3.  .RTB file is not easy
  491. to create.  I don't recommend anybody to try it *without* very good knowledge of
  492. assembly  language and machine code (not the same).  N.B.  Auxiliary tools to do
  493. such work took 1 month to develop.
  494.  
  495. 8.2 .PAT file
  496.  
  497. Patch file has a very simple structure.  It contains pairs of longs.  Every pair
  498. represents  an  offset  from  kickstart  beginning (first long) and the value to
  499. patch  (the  second one).  Bytes and words cannot be patched individually, every
  500. patch  must be coded as a long, even with 3 bytes identical with original.  When
  501. a  longer  patch  is to be coded, it must be coded as a sequence of these simple
  502. patches.   This  stupid mechanism will be improved in next release.  There is no
  503. order specified, because every patch has its own, fully coded offset.  It allows
  504. simple  addition  of new patches to the existing file.  Patch file must be ended
  505. with two longs of zeros.
  506.     From  revision  3.12,  there may be also relocative patches coded.  They
  507. differ from a standard patch by the most significant bit of offset, which is set
  508. to  1.  In this case, current loading address is added to the patch value before
  509. storing  it.  This feature is needed for 39.110 patch.  For example, to code JMP
  510. start+$7F900  patch  to  the address start+$100, where start is the current loa-
  511. ding  address,  use the sequence 000000fe XXXX4ef9 80000102 0007f900, where XXXX
  512. is original contents of ROM at address start+$fe.
  513.  
  514. N.B. To create patch file, I'm using this algorithm:
  515. 1) First, I patch new values directly into the kickstart with a debugger.
  516. 2) I load another copy of kickstart into memory (my 6Megs allow this)
  517. 3) I write simple program to generate the patch file directly with debugger's
  518.    assembler (I'm using Mon 1.55 by Timo Rossi, which seems to be the most
  519.    powerful PD debugger known to me). This program is so simple so I never save
  520.    it.
  521. 4) I save (with the debugger) the table to the disk.
  522.  
  523. 9. Known bugs
  524. =============
  525.  
  526. On certain configurations, SKick crashes when kicking the image.  However, after
  527. a  manual  reset,  prepared image is kicked up and problems no more occur.  This
  528. bug  seems  to  occur  mostly  on A1000 and its cause is unknown yet.  The final
  529. kick-up  is done by performing system restart almost identical with manual reset
  530. and I don't know why this sometimes doesn't work.
  531. Problems  may  be  also  caused  by  some  non-standard add-ons and boards.  For
  532. example, Skick causes problems when ALF harddisk is on the system.  Its resident
  533. modules  interfere  with  SKick's module and the results are unstable.  However,
  534. under certain limitations (load image below the ALF's modules, not to the end of
  535. RAM) SKick seems to be usable.
  536.  
  537.  
  538. 10. Final words...
  539. ==================
  540.  
  541. This  program,  its documentation and all other files contained in this archive,
  542. are  (C) Copyright Pavel Troller, Jagellonska 16, 13000 Praha 3, Czech Republic.
  543. This  package is provided as is, any warranties cannot be applied.  Any usage of
  544. this program or other parts of this archive, will be done at Your own risk!
  545.  
  546.  
  547. If You have any suggestions, questions, criticisms or flames please feel free to
  548. write  me.  I'm sorry for the fact I'm very busy and I cannot reply by any other
  549. form  than  E-mail.   Also updates, new .RTB and .PAT files may be sent only via
  550. elec- tronic media.  Don't send disks, I will never return them!!!
  551.  
  552. My email address is:
  553.             Internet:    PATROL@ACI.CVUT.CS
  554.             BITNET:        PATROL@CSPUNI12.BITNET
  555.  
  556.