home *** CD-ROM | disk | FTP | other *** search
/ The CDPD Public Domain Collection for CDTV 3 / CDPDIII.bin / pd / utilities / monitors / beermon / moni.doc < prev    next >
Text File  |  1992-08-24  |  56KB  |  1,200 lines

  1. *****************************************************************************
  2. *                                                                           *
  3. * Documentation for the BeerMon V0.43 update release. Date: 25-Aug-92       *
  4. *                                                                           *
  5. * - (C) 1990,1991,1992 by Carnivore/BeerMacht                               *
  6. *                                                                           *
  7. * DISCLAIMER                                                                *
  8. *                                                                           *
  9. * This program is FREEWARE, this means that you can copy it freely as long  *
  10. * as you don't ask any more money for it than a nominal fee for copying.    *
  11. * If you want to distribute this program you should keep this document and  *
  12. * the schematics with it.  This program cannot be used for commercial       *
  13. * purposes without written permission from the author.  The author is not   *
  14. * responsible for any loss of data, damages to software or hardware that    *
  15. * may result directly or indirectly from the use of this program.           *
  16. *                                                                           *
  17. * This version and all updates are published by * TRSI *                    *
  18. *                                                                           *
  19. *****************************************************************************
  20.  
  21. It is done. The BEERMACHT presents the BeerMon, which seems to contain some
  22. outstanding features other known monitors don't have.Any hints, comments,
  23. bug reports or opinions are highly appreciated and can be made in those
  24. german BBS the BEERMACHT appears in, prefered in these ones:
  25.  
  26.         ICEHOUSE       +49  203 xxxxx  (get the numbers somewhere)
  27.      or CONTROL TOWER  +49 2137 xxxxx  (get the numbers somewhere)
  28.      or BEERKRUG       +49 2102 xxxxxx (just for very private usership)
  29.      or PUNGENT STENCH +49 2102 xxxxxx (even more private usership :-)
  30.  
  31. Now let's start with the documentation...
  32. The BeerMon is another kind of monitor compared to those of the past like
  33. C-monitor, Amon, etc. He is a monitor of the nasty type because he makes no
  34. use of any library, device or even Kickstart stuff, in fact you may rip out
  35. the Kickstart ROM once the BeerMon is running. The BeerMon includes a full
  36. screen editor which is of use in most cases. So if you got the taste of gore
  37. now here's the most important thing. If you build the hardware add-on which
  38. is described in the schematics you are able to break any program just with
  39. reset and you are able to access any byte of memory untouched. This works
  40. because the hardware contains expansion memory in which backup of workspace
  41. memory is moved. Into this memory expansion the monitor can be loaded by
  42. executing the "init"-command on this disk. If you aren't able to build this
  43. board (blame on you), you could also use the BeerMon with in some cases 
  44. reduced capabilities. So if you have some other kind of memory expansion you
  45. may load the BeerMon into it using the "init$c0" CLI-command on this disk.
  46. The memory should for best results be physically but not logically available
  47. (this can be done with those $c00000 expansions in A500's by switching the
  48. expansion off, resetting and switching it on again). If the BeerMon is
  49. located in there you may start him just by JMPing to the startaddress for
  50. which he has been relocated using the "hunkwiz" -relocater. Take the file
  51. "relocate" to see how to do it. Or you set this funky bus error vector at $8
  52. with the startaddress and the magic button (see schematics) brings you to
  53. paradise. Well, this should only be a hint how to be more powerful than only
  54. start the BeerMon from CLI, which is also possible but not the most advanced
  55. and consistent method. Note the fact, that the BeerMon has never been
  56. designed for CLI usage and therefor may have some disadvantages when you
  57. return to the CLI. So the choice is yours...
  58.  
  59. ························· SUMMARY OF CHANGES ······························
  60.  
  61. CHANGES made until V0.43 (aug 1992)
  62.  
  63. - split up 'C' command into bitsum, bootsum, datasum and kicksum commands
  64. - added 'megasum' command, which calculates checksums of Sega Megadrive ROM
  65.   images
  66. - added 'famisum' command, which calculates checksums of Famicon ROM images
  67.   and reports some information on the ROM image.
  68. - added 'smdplay' and 'rawplay' commands which transfer organised and raw
  69.   binary data to a Super Magic Drive console copier connected to the
  70.   parallel port. See cable wiring at the end of this file.
  71. - added 'smd2raw' command which converts Super Magic Drive data to raw
  72.   binary data
  73. - added complete 6502/65SC802/65SC816 assembler and disassember for those
  74.   who are interested in the Famicon machinecode.  Disassemble the file
  75.   'G65816' using the 'u' command to view all possible instructions of these
  76.   CPUs.
  77.  
  78. CHANGES made until V0.42 (july 1992)
  79.  
  80. - added support for the HD-compatible disk drive Chinon FB357A, which is
  81.   used in recent A3000 models.  If such a drive is detected, all standard
  82.   DD disks inserted are treated as before, while HD disks are handled
  83.   with twice the standard number of sectors per track.  All disk-related
  84.   commands like 'format', 's' and 'S' take care of this difference.  As a
  85.   side effect, the internal disk-DMA buffer constantly is twice as big as
  86.   before.
  87. - the 'M' command has been redesigned to allow the HD bitmap information to
  88.   fit also on a NTSC screen.  The disktype,filesystem and diskinformation
  89.   previously reported by this command can now accessed with the new 'info'
  90.   command.
  91. - the disassembler now supports the complete set of <ea>-addressing modes.
  92.   Located on this disk is a file named NewModes.asm, which shows most of
  93.   the additions. Here is a small excerpt:
  94.   - move.l ([address16,pc],Rn.s*k,od.w),Dn
  95.   - move.l ([address16,pc],Rn.s*k,od),Dn
  96.   - move.l ([address32,pc],Rn.s*k,od.w),Dn
  97.   - move.l ([address32,pc],Rn.s*k,od),Dn
  98.   - move.l ([address16,zpc],Rn.s*k,od.w),Dn
  99.   - move.l ([address16,zpc],Rn.s*k,od),Dn
  100.   - move.l ([address32,zpc],Rn.s*k,od.w),Dn
  101.   - move.l ([address32,zpc],Rn.s*k,od),Dn
  102.   - move.l ([id.w,An],Rn.s*k,od.w),Dn
  103.   - move.l ([id.w,An],Rn.s*k,od),Dn
  104.   - move.l ([id,An],Rn.s*k,od.w),Dn
  105.   - move.l ([id,An],Rn.s*k,od),Dn
  106.   - move.l ([address16,pc,Rn.s*k],od.w),Dn
  107.   - move.l ([address16,pc,Rn.s*k],od),Dn
  108.   - move.l ([address32,pc,Rn.s*k],od.w),Dn
  109.   - move.l ([address32,pc,Rn.s*k],od),Dn
  110.   - move.l ([address16,zpc,Rn.s*k],od.w),Dn
  111.   - move.l ([address16,zpc,Rn.s*k],od),Dn
  112.   - move.l ([address32,zpc,Rn.s*k],od.w),Dn
  113.   - move.l ([address32,zpc,Rn.s*k],od),Dn
  114.   - move.l ([id.w,An,Rn.s*k],od.w),Dn
  115.   - move.l ([id.w,An,Rn.s*k],od),Dn
  116.   - move.l ([id,An,Rn.s*k],od.w),Dn
  117.   - move.l ([id,An,Rn.s*k],od),Dn
  118.   with address16 being an address which can be reached using 16 Bit offset
  119.   with address32 being an address using 32 Bit offset
  120.   with id and od being values in 16 or 32 Bit format
  121.   with Rn.s*k being either an address- or a data register of either word or
  122.   longword size and scaled with the optional scale factor of 2,4 or 8.
  123.   NOTE:zpc represents a programcounter which is assumed to be 0 for the
  124.   address calculation.  Each item inside the outer brackets can be omitted
  125.   to create a new addressing mode like e.g.:
  126.   - move.l ([address16,pc]),Dn
  127.   - move.l ([An],Rn.s*k),Dn
  128.   - move.l ([]),Dn
  129.   NOTE:because of the obvious complexity of these modes and the parsing
  130.   code needed, the assembler doesn't support them until major rework is
  131.   done.  Besides you are advised to get yourself the Programmers Reference
  132.   Manual M68000PM/AD from a Motorola distributor.  This unique manual
  133.   gives many informations on the MC68000/68010/68020/68030/68040/68851 and
  134.   MC68881/68882 instructions.  Possibly you'll enjoy the MC68030UM/AD User
  135.   Manual as well, because it contains complete informations on all
  136.   addressing modes.
  137. - added CPU32 instructions to assembler and disassembler:
  138.   - BGND
  139.   - LPSTOP  #value
  140.   - TBLU.s  Dm:Dn,Dx
  141.   - TBLUN.s Dm:Dn,Dx
  142.   - TBLS.s  Dm:Dn,Dx
  143.   - TBLSN.s Dm:Dn,Dx
  144.   - TBLU.s  <ea>,Dx
  145.   - TBLUN.s <ea>,Dx
  146.   - TBLS.s  <ea>,Dx
  147.   - TBLSN.s <ea>,Dx  ;s=b/w/l
  148.   NOTE: CPU32 is an universal CPU core compatible to the MC680x0 family,
  149.   which gets used in the MC683xx controller series.
  150. - added MC68040 instructions to assembler and disassembler:
  151.   - PFLUSHN (An)
  152.   - PFLUSHAN
  153.   - MOVE16 (address),(An)
  154.   - MOVE16 (address),(An)+
  155.   - MOVE16 (An),(address)
  156.   - MOVE16 (An)+,(address)
  157. - added MC68040/68881/2 floating point instructions to disassembler.
  158.   refer to the file M68881.asm for further information on these:
  159.   - FABS.f op1          FSABS.f op1         FDABS.f op1
  160.   - FACOS.f op1
  161.   - FADD.f op2          FSADD.f op2         FDADD.f op2
  162.   - FASIN.f op1
  163.   - FATAN.f op1
  164.   - FATANH.f op1
  165.   - FCMP.f op2
  166.   - FCOS.f op1
  167.   - FCOSH.f op1
  168.   - FDIV.f op2          FSDIV.f op2         FDDIV.f op2
  169.   - FETOX.f op1
  170.   - FGETEXP.f op1
  171.   - FGETMAN.f op1
  172.   - FINT.f op1
  173.   - FINTRZ.f op1
  174.   - FLOG10.f op1
  175.   - FLOG2.f op1
  176.   - FLOGN.f op1
  177.   - FLOGNP1.f op1   (Devpac V3.02 has a bug here)
  178.   - FMOD.f op2
  179.   - FMUL.f op2          FSMUL.f op2         FDMUL.f op2
  180.   - FNEG.f op1          FSNEG.f op1         FSNEG.f op1
  181.   - FREM.f op2
  182.   - FSCALE.f op2
  183.   - FSGLDIV.f op2
  184.   - FSGLMUL.f op2
  185.   - FSIN.f op1
  186.   - FSINCOS.f <ea>,FPc:FPs                  FSINCOS.f FPm,FPc:FPs
  187.   - FSINH.f op1
  188.   - FSQRT.f op1         FSSQRT.f op1        FDSQRT.f op1
  189.   - FSUB.f op2          FSSUB.f op2         FDSUB.f op2
  190.   - FTAN.f op1
  191.   - FTANH.f op1
  192.   - FTENTOX.f op1
  193.   - FTST.f <ea>                             FTST.f FPm
  194.   - FTWOTOX.f op1
  195.   with FPm, FPc, FPs being any floating point register
  196.   with op1 being one of: <ea>,FPm  -  FPm,FPc  -  FPm 
  197.   with op2 being one of: <ea>,FPm  -  FPm,FPc
  198.   with f being one of b, w, l, s, d, x, p in <ea>-mode and b, w, l, s in
  199.   register mode.
  200. - fixed assembly and disassembly of these instructions:
  201.   - PTESTR (An)     (Bug in Devpac V3.02)
  202.   - PTESTW (An)     (Bug in Devpac V3.02)
  203.  
  204. CHANGES made until V0.41 (may 1992)
  205.  
  206. - hardware schematics needed some changes: (see HardIFF and HardIFF2)
  207.   - 74F138 input G1 must be tied to _R/W instead of R/_W (Thanx Taipan/UFO)
  208.   - both pins 30 and 32 of the RAMs should be connected to +5V, as some
  209.     static RAMS use pin 30 as a second chip-select input.
  210. - support for international filesystem (new OS2.0 DOSTypes DOS\2 and DOS\3)
  211.   added to all filesystem related commands.  The following commands have
  212.   visibly changed:
  213.   - 'format', see commandlist for changes in parameters
  214.   - 'install', see commandlist for changes in parameters
  215.   - 'M', now also reports the filesystem (not international/international)
  216.   NOTE: the BeerMon recognises the filesystem of a disk by examining the
  217.   bootblock.  Within AmigaDOS (read:outside the BeerMon), DOS\2 and DOS\3
  218.   disks can ONLY be used with OS 2.0 or higher.
  219. - completely rewritten clockchip handling, both the standard (A500/A2000)
  220.   MSM6242 RS clockchip and the new A3000 clockchip can be used for creation
  221.   date of files and disks, if they are detected and they seem to be
  222.   functional.  The century leap is also handled, so you may use the BeerMon
  223.   until the end of the year 2077 :-)
  224. - presense of a MC68040 is detected
  225. - added MC68040 instructions to assembler and disassembler:
  226.   - MOVEC reg,Rn with reg being one of SRP,URP,TC,DTT0,DTT1,ITT0,ITT1
  227.   - MOVEC Rn,reg with reg being one of SRP,URP,TC,DTT0,DTT1,ITT0,ITT1
  228.   - CINVA mode   with mode being one of NC,DC,IC,BC
  229.   - CPUSHA mode  with mode being one of NC,DC,IC,BC
  230.   - CINVP mode,(An)  with mode being one of NC,DC,IC,BC
  231.   - CPUSHP mode,(An) with mode being one of NC,DC,IC,BC
  232.   - CINVL mode,(An)  with mode being one of NC,DC,IC,BC
  233.   - CPUSHL mode,(An) with mode being one of NC,DC,IC,BC
  234.   - MOVE16 (Am)+,(An)+
  235.   - PTESTR (An)
  236.   - PTESTW (An)
  237.   - PFLUSH (An)
  238.   - PFLUSHA!  (named this way instead of PFLUSHA because of name conflict
  239.     with the incompatible MC68851/MC68030-MMU PFLUSHA instruction)
  240. - added MC68851 MMU (only) instructions to assembler and disassembler:
  241.   - PVALID An,<ea>
  242.   - PFLUSHR <ea>
  243.   - PFLUSHS #n,#m
  244.   - PFLUSHS Dn,#m
  245.   - PFLUSHS reg,#m with reg being either SFC or DFC
  246.   - PRESTORE <ea>
  247.   - PSAVE <ea>
  248.   - PScc <ea>
  249.   - PBcc.s address ,s=w/l
  250.   - PDBcc Dn,address
  251.   - PTRAPcc
  252.   - PTRAPcc.s #value ,s=w/l
  253.   where cc is one of the MMU conditioncodes:
  254.   bs,bc,ls,lc,ss,sc,as,ac,ws,wc,is,ic,gs,gc,cs,cc
  255.   - PMOVE mmur,<ea> with mmur being one of PSR,PCSR,CAL,VAL,SCC,AC
  256.   - PMOVE <ea>,mmur with mmur being one of PSR,PCSR,CAL,VAL,SCC,AC
  257. - added FPU instructions to assembler and disassembler:
  258.   - FBcc.s address ,s=w/l
  259.   where cc is one of the FPU conditioncodes:
  260.   f,eq,ogt,oge,olt,ole,ogl,or,un,ueq,ugt,uge,ult,ule,ne,t
  261.   sf,seq,gt,ge,lt,le,gl,gle,ngle,ngl,nle,nlt,nge,ngt,sne,st
  262. - changed disassembly of short branches from Bcc.S to Bcc.B, because this
  263.   is the official syntax. the assembler accepts both versions.
  264. - 'vc' command parameter handling fixed.
  265. - assembler/disassembler validation sources ported from OMA2.0 assembler to
  266.   Devpac V3.02 (because of horrid OMA bugs :-)
  267. - BMPE preferences editor was redesigned with GadToolsBox V1.3, so the
  268.   version bumped to V0.11
  269.  
  270. CHANGES made until V0.40 (march 1992)
  271.  
  272. - external preferences editor BMPE added, which allows you to define your
  273.   personal
  274.   - screenmode (PAL/NTSC, Force PAL, Force NTSC)
  275.   - colours (back- and foreground RGB values in hexadecimal notation)
  276.   - keymap (german or american layout)
  277.   - key repeat rate (fast, medium, slow)
  278.   - cpu-restrictions (standard or economy, use economy ONLY if you own a
  279.     'crippled' CPU MC68EC030 such as the infamous VXL board, which is known
  280.     to miss a MMU)
  281.   - 10 functionkeys
  282.   The settings can be saved and loaded according to the Prefs path you
  283.   specify.  A modify-function then performs the patching of BeerMon
  284.   executables, which are not older than this version V0.40
  285.   NOTE:  BMPE NEEDS OS 2.0!  - the gadtools.library and the GadToolsBox are
  286.   too good to be ignored, and it's time to upgrade to OS2.0 anyway :-)
  287. - added patch area to BeerMon, which gets used by BMPE
  288. - the MMU related commands now tell you if you don't have one (just in case
  289.   you didn't know it :-)
  290. - 'mmu' command reports DRP contents, if a MC68851 MMU is installed
  291. - added MMU instructions to assembler and disassembler:
  292.   - PMOVE DRP,<ea> (MC68851 MMU only)
  293.   - PMOVE <ea>,DRP (MC68851 MMU only)
  294. - 'r' command now only reports those registers and flags , which are allowed
  295.   with the detected CPU
  296. - occupy and exor commands changed, you now may use o, ow, ol, e, ew or el
  297.   according to your intention to use a byte, word or longword argument
  298. - history function now ignores empty commandlines                   ^ö^ HI
  299. - when aborting the 'fi' function, the current address is reported.  " PBA!
  300. - the help key now increments the help page each time it is pressed
  301. - checksum command 'C' now also calculates 256/512 KB kickstart checksums
  302. - 'i' command now shows full $100 bytes of the original vector table.
  303.  
  304. CHANGES made until V0.39 (february 1992)
  305.  
  306. - shift-tab keyfunction added, deletes all characters from current cursor
  307.   upto the right border
  308. - history has been added: shift-keypad-8/2 (up/down) recalls upto 10 lines
  309. - cursor movement extended: shift-keypad-7/1 (home/end) places cursor in
  310.   the first column of the first/last row
  311. - nop command added, it simply sets the specified number of NOP instructions
  312. - mmuon and mmuoff commands added.  These allow enabling/disabling of
  313.   address translations (so you may examine the A3000 ROM or deactivate other
  314.   MMU setups)
  315.   BTW:keep your hands of those low cost turboboards using the MC68EC030 or
  316.   even the MC68EC040, sooner of later you'll regret that this CPU doesn't
  317.   have a MMU!
  318. - finally adding/listing/removing of breakpoints added
  319. - completely rewritten exception handler; now works on MC68000/10/20/30 CPU
  320.   and also handles FPU/MMU exceptions
  321. - cls added, clears the screen
  322. - find instruction command added. This allows you searching for special
  323.   instructions using the * and ? joker.
  324.   Just try something like 'fi fc0000 fc1000 "move*d?,a"'
  325. - MOVE <ea>,SR will be disassembled correctly again.
  326.  
  327. CHANGES made until V0.38 (january 1992)
  328.  
  329. - presence of a MC68851 MMU or a MC68030-built-in-MMU is detected
  330. - 'r' command now also explains the CACR settings
  331. - 'R' command added, reports FPU registers in hex and scientific notation
  332. - 'mmu' command added, reports MMU registers and their bit settings
  333. - 'ramsey' command added, (only useful if you have an A3000)
  334. - renamed the 'keymap' command back to 'k', someone really seems to use it :-)
  335. - fixed a V0.36+ bug: 'x' easily crashed on machines without MC68030
  336. - effective address info ('dv') no longer ignores index scaling
  337. - FDxx Dx,label displacement bug fixed (another bug in OMA2.0)
  338. - added FPU instructions to assembler and disassembler:
  339.   - FNOP
  340.   - FMOVECR #m,FPn with m being one of 0,$b-$f,$30-$3f
  341. - added MMU instructions to assembler and disassembler:
  342.   - PMOVE mmur,<ea> with mmur being one of SRP,CRP,TT0,TT1,TC,MMUSR
  343.   - PMOVE <ea>,mmur with mmur being one of SRP,CRP,TT0,TT1,TC,MMUSR
  344.   - PMOVEFD <ea>,mmur with mmur being one of SRP,CRP,TT0,TT1,TC
  345.   - PFLUSH #n,#m
  346.   - PFLUSH Dn,#m
  347.   - PFLUSH reg,#m with reg being either SFC or DFC
  348.   - PFLUSHA
  349.   - PLOADR #n,<ea>
  350.   - PLOADW #n,<ea>
  351.   - PTESTR #n,<ea>,#m,An
  352.   - PTESTW #n,<ea>,#m,An
  353. - lowmem for workspace and hunk-copymem routine moved from $c0 to $100 to
  354.   allow handling of FPU and MMU traps in a future version
  355. - if EXEC isn't corrupted, any even VBR value is allowed
  356.   NOTE:you MUSTN'T change VBR within a routine executed with 'g'
  357.   NOTE:if you change the VBR with 'r', it won't be set until 'g' is used
  358. - fixed bug in resident list display (/9), occured if bit 31 was set.
  359. - on startup, the completion of the current blitter operation is waited for.
  360.  
  361. CHANGES made until V0.37 (december 1991)
  362.  
  363. - the OS2.0 hardlink feature is now fully supported with both OFS and FFS.
  364.   hardlinks and dirlinks are reported when using the 'dir' command.
  365.   the commands 'cd','del','L' work with and without links in the usual way.
  366. - Workspace and BackupMem allocation procedure has been changed due to
  367.   popular demand. Don't miss reading the decription of the 'W' command.
  368. - finally the BeerMon both works on PAL and NTSC Amigas.  The NTSC mode is
  369.   derived from bit 12 of VPOSR, so the agnus jumper is considered and not
  370.   the BeamCon0 settings.
  371. - the presence of 1.5 MB graphics memory is detected, which is a possible
  372.   configuration on the A500 plus.
  373. - the presence of a FPU and its type (MC68881/2) is reported
  374. - fixed bug where 'dir f' reported hashchainkey instead of the
  375.   fileheaderextension key.
  376. - exit function 'X' now clears the Chip memory, because the OS2.0 doesn't
  377.   do it anymore. The fillvalue is $ffffffff.
  378. - CloseLibrary-bug in OS2.04 bootblock removed.
  379.  
  380. CHANGES made until V0.36 (november 1991)
  381.  
  382. - fixed bug in ASCII-edit part of the 'm' function
  383. - fixed filesystem bug (fileheaderextension blocks were not 'official' style)
  384. - renamed some ECS registers (the new hardware reference manual is out now :-)
  385. - relaxed CIA timing values (any A1000ers out there with MatsuShit(a) drive?)
  386. - major assembler/disassembler update from old Motorola syntax to new one
  387.   quick docs: offset(An)      changed to (offset,An)
  388.               offset(An,Rm.s) changed to (offset,An,Rm.s)   ,s=w/l
  389.               address(PC)     changed to (address,PC)
  390.               offset(PC,Rn.s) changed to (address,PC,Rn.s)  ,s=w/l
  391.               address         changed to (address)
  392.               address.w       changed to (address).w
  393. - scaling now is possible:    (address,An,Rm.s*k)           ,k=1,2,4,8
  394. - added FPU instructions:     FDBcc Dx,address    FRESTORE <ea>
  395.               FSAVE <ea>      FTRAPcc             FTRAPcc.s #value ,s=w/l
  396.               FScc <ea>
  397.   where cc is one of the FPU conditioncodes:
  398.   f,eq,ogt,oge,olt,ole,ogl,or,un,ueq,ugt,uge,ult,ule,ne,t
  399.   sf,seq,gt,ge,lt,le,gl,gle,ngle,ngl,nle,nlt,nge,ngt,sne,st
  400. - disassembler suppresses leading 0's (e.g. '4' instead of '$0000004')
  401. - moved column of disassembler operands ('ftrapngle.l #k' looks so nice :-)
  402. - now detects and supports MC68000/10/20/30
  403. - vbr,sfc,dfc,msp,cacr,caar are handled correctly if they are available
  404.   (vbr should remain 0 until the ultimate solution has been figured out)
  405. - support for A2000A clockchip ($d80000) had to be removed, because it
  406.   trapped on my A3000
  407. - no more interference of backupmem-search with CPU data caching
  408. - support for 2MB chipmem. if available, the screen defaults to $1f4000
  409. - cleaned up grabbing of the system a bit, return to CLI a bit more
  410.   (but you still shouldn't use it with enforcer :-)
  411. - improved mouse-acceleration in memory view mode ('b')
  412. - power-led blink removed (wasn't that difficult...)
  413. - the reset command ('X') now works with Kick 1.2/1.3/2.04
  414.  
  415. CHANGES made since V0.28 (june 1990) upto this version 0.35 (oct 1991)
  416.  
  417. - the BeerMon status is now: (C) by Carnivore/BeerMacht, but FREEWARE.
  418. - dramatic increase in scrolling speed
  419. - finally debugged 'del' function
  420. - minor debugging of (dis)assembler
  421. - diskroutines now use timer instead of delay loops.
  422. - FastFileSystem and OldFileSystem support for disks
  423. - Copper-assembler/disassembler with symbolic ECS registers
  424. - text-snapping with right mousebutton
  425. - second screen, swapping with 'shift-help'
  426. - a help-function with 'help'
  427. - added MC68010 instructions
  428.   NOTE: currently on startup the VBR register MUST be set to zero (default).
  429.   So don't use a 'MoveVBR'-type programm.  The new registers are currently
  430.   ignored, if you execute a program.  You need to set them by yourself
  431.   (e.g.  MOVEC a0,vbr)
  432. - added MC68020 instructions (currently without extended <EA> and
  433.   coprocessor instructions).  Disassemble the file 'DemoCode' to get an
  434.   idea of it.  The sourcecode to 'DemoCode' is part of this distribution.
  435. - added 32 bit support for most functions
  436. - invalid syncs are reported
  437. - syncs can be determined (or guessed?)
  438. - format and install commands added
  439. - time and date infos are set when using format, save
  440. - start and endaddress are saved as a filecomment and are shown using the
  441.   dir command. So typing 'L' + return loads the file to the propper address.
  442. - more info is given using the 'dir f' command
  443. - scrolling backwards is added, usefull in disassembly (CPU/Copper) and the
  444.   memory dump commands
  445. - nice pic on startup (well, it uses no valueable ram, it's my DMAbuffer :-)
  446. - the code grew more and more, therefor a complete new hardware design, now
  447.   offering 256 KB of static memory.
  448.   With it $BFDxxx, $BFExxx and $DFFxxx register values appear at $F3Dxxx!
  449.   BeerMon may support this feature some day.
  450. - on reset-entry, available Zorro-II(I) boards can be configured with the
  451.   config command (well, there is still no HD-support, should I add the
  452.   ability to use AMAX-HDdrivers?  Uummmphh, not now ;-)
  453. - Bcc.L (MC68000) has been changed to Bcc.W (because .L implies the MC68020+
  454.   32 bit offset branches)
  455. - the sourcecode isn't part of this distribution anymore, portions of it
  456.   may or may not be released, if someone asks me for it.
  457.  
  458. and more to mention, but I'm a bit lasy...  so wait for the next update
  459. (more frequent than in the past) and spend me some beer if we happen to
  460. meet :-)
  461.  
  462. ···········································································
  463.  
  464. now some general notes about the BeerMon...
  465.  
  466. the mouse:    enables you to set the cursor (left mousebutton). Pressing
  467.         the right mousebutton stops any textoutput on screen, until
  468.         it is released again. If you press the right mousebutton
  469.         when no function is activated, the string below the
  470.         mousepointer is copied to the current cursor position.
  471. escape key:    aborts any command (even load/save...)
  472. tab key:    sets the cursor to next item of data in a block (skips
  473.         spaces, is useful in directory and hexdump).
  474. shift-tab    deletes all characters between the current cursor position
  475.         and ending with the last column.
  476. help key:    a brief command summary, pressing it multiple times advances
  477.         the page.
  478. shift-help    swap screens 1 and 2
  479. backspace    behaves as usual
  480. shift-backspace    clears screen del behaves as usual shift-del inserts spaces
  481. shift-keypad-8    goes backwards inside the history buffer.  The history depth
  482.         is 10 lines.
  483. shift-keypad-2    goes forwards inside the history buffer
  484. shift-cursor    moves the cursor to the limit of the selected direction
  485. shift-keypad-7    moves the cursor to the first column of the first row
  486. shift-keypad-1    moves the cursor to the first column of the last row
  487. muliate:    the standard mode which you usualy would enter, without
  488.         freezing.
  489. freezing:    is in work, not yet finished, but seems to become funky.
  490. the display:    currently in pal, but there will be other options in future.
  491. the keymap:    defaults to german keymap, but can be changed with "k"
  492. CPU:        currently MC68000/10/20/30/40 are tested, the MC68010+ might
  493.         get useful in future due to the vector base capability to
  494.         trick some protections vomiting on the those pointers around
  495.         $000xxx (full tracing of every prg may become possible).
  496. agnus:        new angus chip is recognized and may be used with 1, 1.5 or
  497.         2MB chip memory (-> play sound, workspace).
  498.  
  499. well, now we come to the command list, < > means optional parameter(s)...
  500. -----------------------------------------------------------------------------
  501.  
  502.  m <addr1> <addr2>
  503.       gives a hexdump as well as display in ASCII of specified or following
  504.    memory locations.  Both can be edited using the cursor.
  505.  
  506.  a <addr1> <addr2>
  507.       gives a display of specified or following memory locations in ASCII.
  508.    This can easily be edited using the cursor.
  509.  
  510.  ? value <operation value> <operation value> <...>
  511.       returns the result of a calculation.  "value" is interpreted as a
  512.    hexadecimal value, if it is not preceeded by a "#" sign.  In case it is
  513.    interpreted as a decimal value.  The operations can be one of the
  514.    following:
  515.             +   add to
  516.             -   subtract 
  517.             *   multiply by
  518.             /   divide by
  519.             !   or with
  520.             &   and with
  521.             =   exor with
  522.             <   shift left "value" times
  523.             >   shift right "value" times
  524.  
  525.    The result is returned as a hexadecimal, decimal and binary value.
  526.  
  527.  c addr1 addr2 addr3
  528.       compares the memory beginning with "addr1" and ending with "addr2"-1
  529.    with the memory locations starting at "addr3".  The result is a list of
  530.    all memory locations which are different.
  531.  
  532.  t addr1 addr2 addr3
  533.       tranfers the memory beginning with "addr1" and ending with "addr2"-1
  534.    to the memory locations starting at "addr3"
  535.  
  536.  nop addr num
  537.       fills the memory beginning with "addr" with the specified number "num"
  538.    of NOP instructions ($4E71).
  539.  
  540.  o addr1 addr2 byte
  541.       fills the memory beginning with "addr1" and ending with "addr2"-1
  542.    with the specified one-byte value "byte".
  543.  
  544.  ow addr1 addr2 word
  545.       fills the memory beginning with "addr1" and ending with "addr2"-1
  546.    with the specified two-byte value "word".
  547.  
  548.  ol addr1 addr2 long
  549.       fills the memory beginning with "addr1" and ending with "addr2"-1
  550.    with the specified four-byte value "long".
  551.  
  552.  e addr1 addr2 byte
  553.       performs an exor operation with the memory beginning with "addr1" and
  554.    ending with "addr2"-1 using the specified one-byte value "byte".
  555.  
  556.  ew addr1 addr2 word
  557.       performs an exor operation with the memory beginning with "addr1" and
  558.    ending with "addr2"-1 using the specified two-byte value "word".
  559.  
  560.  el addr1 addr2 word
  561.       performs an exor operation with the memory beginning with "addr1" and
  562.    ending with "addr2"-1 using the specified four-byte value "long".
  563.  
  564.  f addr1 addr2 byte <byte> <byte> <...>
  565.       searches for one to 14 bytes beginning with "addr1" and ending with
  566.    "addr2"-1.  The result is a list of all memory locations where the
  567.    specified byte or sequence can be found.
  568.  
  569.  f addr1 addr2 "text"
  570.       searches for a text of up to 14 characters length beginning with
  571.    "addr1" and ending with "addr2"-1.  The result is a list of all memory
  572.    locations where the specified text can be found.
  573.  
  574.  fi addr1 addr2 "pattern*?"
  575.       searches for a fragment of disassembled instructions beginning with
  576.    "addr1" and ending with "addr2"-1. An ending '*' joker is obsolete.
  577.    Example: if you use the pattern "*q.w*1,(?,?0,d1.w)" 
  578.    any occurence of these instruction could be shown:
  579.        ADDQ.W #1,(2,A0,D1.W) as well as SUBQ.W #1,(9,D0,D1.W)
  580.    When the 'fi' function is aborted, the current address is shown.
  581.  
  582.  F addr
  583.       searches for all conditional branch-instructions relatively accessing
  584.    the specified address.  Any occurence is shown in disassembled form.
  585.    Possible instructions would be:
  586.  
  587.          BEQ.B/W $xx
  588.          BRA.B/W $xx
  589.          BSR.B/W $xx
  590.          DBF Dn,$xx ...
  591.  
  592.  F addr pc
  593.       searches for all instructions accessing the specified address using
  594.    the pc-relative addressing-mode.  Any occurence is shown in disassembled
  595.    form.  Possible instructions would be:
  596.  
  597.          LEA $xx(PC),Ax
  598.          JSR $xx(PC)
  599.          MOVE.B/W/L $xx(PC),xx ...
  600.  
  601.  p addr1 addr2 <period>
  602.       plays DMA-sound using the chip memory locations beginning with
  603.    "addr1" and ending with "addr2".  The current address of the sound DMA
  604.    is shown while playing the sound.  If no period is specified a period of
  605.    $100 is used.  The length of sounddata to be played is not limited to
  606.    128 KB.
  607.  
  608.  r <register value>
  609.       displays current CPU-register contents and flags if no parameters are
  610.    given.  Only those registers and flags which are valid for the installed
  611.    cpu are shown.  If register and value are specified the register is
  612.    modified accordingly.  Possible registers are:
  613.  
  614.          D0 - D7
  615.          A0 - A7
  616.          VBR (new with MC68010 - shouldn't be changed without reason)
  617.          SFC (new with MC68010)
  618.          DFC (new with MC68010)
  619.          CACR (new with MC68020, extended with MC68030 - see note)
  620.          CAAR (new with MC68020)
  621.          USP
  622.          ISP (formerly SSP on MC68000)
  623.          MSP (new with MC68020 - note, that EXEC doesn't initialize this one)
  624.          SR (extended with MC68020) - see note) 
  625.  
  626.    note: SR explanation (MC68000+)
  627.   680x0  bit - function
  628.      0   #15 - T1, Trace 1
  629.      2   #14 - T0, Trace 0
  630.      0   #13 - S, Supervisor Stackpointer
  631.      2   #12 - M, Master Stackpointer
  632.      0   #10 - \
  633.      0 ..#8  - /  Interrupt Mask
  634.      0   #4  - X, Extend Flag
  635.      0   #3  - N, Negative Flag
  636.      0   #2  - Z, Zero Flag
  637.      0   #1  - V, Overflow Flag
  638.      0   #0  - C, Carry Flag
  639.  
  640.    note:CACR explanation (MC68020+)
  641.   680x0  bit - function
  642.      3   #13 - WA, Write Allocate (should be set)
  643.      3   #12 - DBE, Data Burst Enable
  644.      3   #11 - CD, Clear Data Cache           \
  645.      3   #10 - CED, Clear Entry in Data Cache /reads back 0
  646.      3   #9  - FD, Freeze Data Cache
  647.      3   #8  - ED, Enable Data Cache
  648.      3   #4  - IBE, Instruction Burst Enable
  649.  
  650.      2   #3  - CI, Clear Instruction Cache           \
  651.      2   #2  - CEI, Clear Entry in Instruction Cache /reads back 0
  652.      2   #1  - FI, Freeze Instruction Cache
  653.      2   #0  - EI, Enable Instruction Cache
  654.  
  655.  R
  656.       displays current FPU-register contents. Reported are:
  657.  
  658.          FP0 - FP7 in 96(80) bit extended real notation and in
  659.                    signed scientific notation with SNAN/NAN/INFINITY
  660.          FPCR      exception mask, mode control
  661.              bit - function
  662.              #15 - BSUN, Branch/Set on UNordered
  663.              #14 - SNAN, Signalling Not A Number
  664.              #13 - OPERR, OPerand ERRor
  665.              #12 - OVFL, OVerFLow
  666.              #11 - UNFL, UNderFLow
  667.              #10 - DZ, Divide by Zero
  668.              #9  - INEX2, INEXact operation
  669.              #8  - INEX1, INEXact decimal input
  670.              #7  - \           0          0        1
  671.              #6  - /PRECision  0 eXtended 1 Single 0 Double
  672.              #5  - \           0      0      1       1
  673.              #4  - /RND, round 0 Next 1 Zero 0 Minus 1 Plus
  674.  
  675.          FPSR      condition code,quotient byte,exception,accrued exception
  676.              bit - function
  677.              #27 - N, Negative
  678.              #26 - Z, Zero
  679.              #25 - I, Infinite
  680.              #24 - NAN, Not A Number
  681.              #23 - S, quotient Sign
  682.              #22 - Q, Quotient 
  683.          ... #16 -    byte (7 least significant bits)
  684.              #15 - BSUN, Branch/Set on UNordered
  685.              #14 - SNAN, Signalling Not A Number
  686.              #13 - OPERR, OPerand ERRor
  687.              #12 - OVFL, OVerFLow
  688.              #11 - UNFL, UNderFLow
  689.              #10 - DZ, Divide by Zero
  690.              #9  - INEX2, INEXact operation
  691.              #8  - INEX1, INEXact decimal input
  692.              #7  - IOP, Invalid OPeration  (BSUN|SNAN|OPERR)
  693.              #6  - OVFL, OVerFLow
  694.              #5  - UNFL, UNderFLow         (UNFL|INEX2)
  695.              #4  - DZ, Divide by Zero
  696.              #3  - INEX, INEXact operation (INEX1|INEX2|OVFL)
  697.  
  698.          FPIAR     floating point instruction address register
  699.  
  700.  mmu
  701.       displays current MC68851/68030 MMU-register contents. Reported are:
  702.  
  703.          TT0,TT1 - Transparent Translation
  704.              bit - function
  705.              #31 - \
  706.          ... #24 - /LAB, Logical Address Base
  707.              #23 - \
  708.          ... #16 - /LAM, Logical Address Mask
  709.              #15 - E, Enable
  710.              #10 - CI, Cache Inhibit
  711.              #9  - R/W, Read/Write
  712.              #8  - RWM, Read/Write Mask
  713.              #6  - \ 
  714.          ... #4  - /FC, Function Code
  715.              #2  - \ 
  716.          ... #0  - /FCM, Function Code Mask
  717.  
  718.          TC        Translation Control
  719.              bit - function
  720.              #31 - E, Enable
  721.              #25 - SRE, Supervisor Root Enable
  722.              #24 - FCL, Function Code Lookup enable
  723.              #23 - \
  724.          ... #20 - /PS, Pagesize (¼..32KB)
  725.              #19 - \
  726.          ... #16 - /IS, Initial Shift (0..15)
  727.              #15 - \
  728.          ... #12 - /TIA, Table Index A (1..15)
  729.              #11 - \
  730.          ... #8  - /TIB, Table Index B (0..15)
  731.              #7  - \
  732.          ... #4  - /TIC, Table Index C (0..15)
  733.              #3  - \
  734.          ... #0  - /TID, Table Index D (0..15)
  735.  
  736.             (DRP - Dma Root Pointer, MC68851 MMU only)
  737.          CRP,SRP - Cpu, Supervisor Root Pointer
  738.              bit - function
  739.              #63 - L/U, Lower/Upper limit
  740.              #62 - \
  741.          ... #48 - /LMT, Limit
  742.              #33 - \
  743.          ... #32 - /DT, Descriptor Type
  744.              #31 - \
  745.          ....#4  - /TA, Table Address
  746.  
  747.          MMUSR   - MMU Status Register
  748.              bit - function
  749.              #15 - B, Bus error
  750.              #14 - L, Limit error
  751.              #13 - S, Supervisor only
  752.              #11 - W, Write protected
  753.              #10 - I, Invalid
  754.              #9  - M, Modified
  755.              #6  - T, Transparent translation
  756.              #2  - \
  757.          ... #0  - /N, Number of levels
  758.  
  759.  ramsey
  760.       displays current ramsey configuration (A3000 only). Reported are:
  761.          Static Column Mode:(on/off)    (some call it Page-Detect Mode)
  762.          Burst Mode:(on/off)
  763.          Burst Wrap Mode:(on/off)
  764.          Chips onboard:(256KBit*4/1MBit*1/1MBit*4/4MBit*4)
  765.          Refresh Rate:(154/238/380/off)cycles
  766.  
  767.  bs addr
  768.       adds a memory location to the list of breakpoints, if the location
  769.    specified is even, hasn't been set yet and if it is a valid RAM
  770.    location.  Breakpoints may also be placed in MMU-protected RAM, but not
  771.    in ROM.  Up to 10 breakpoints at one time are possible.
  772.  
  773.  bl
  774.       shows the breakpoint locations in disassembly.
  775.  
  776.  bc addr
  777.       removes a specified memory location from the list of breakpoints.  If
  778.    the parameter 0 is used, all breakpoints will be removed.
  779.  
  780.  g addr
  781.       executes a subroutine at the specified memory location. The
  782.    CPU/MMU/FPU-registers are set before execution and the resulting
  783.    register contents are displayed after the execution.  All CPU/MMU/FPU-
  784.    exceptions are controlled and the memory location where it occured is
  785.    displayed. Take care, that the active stackpointer doesn't trash important
  786.    data.  Before the execution the specified breakpoint locations are
  787.    prepared an available CPU cache is cleared (not disabled!).  After the
  788.    execution the previous instructions will be restored.  When an exception
  789.    occurs, the stackpointer is corrected, so executing
  790.          lea ($40000),a7
  791.          illegal
  792.    results in the expected register display, though the code has been
  793.    started via 'JSR'.
  794.  
  795.  mmuoff
  796.       disables the MMU (if you are lucky to own one :-).  This affects all
  797.    memory operations like viewing, editing, disassembling, saving - but NOT
  798.    program execution, which uses the MMU setup, visible with 'mmu'.  With
  799.    this command you may e.g.  examine the A3000 built-in alpha ROM or change
  800.    MMU-protected RAM). If you don't have a MMU, you will be told.
  801.  
  802.  mmuon
  803.       enables the MMU.  If the current MMU setup is mangled, or has never
  804.    been initialised this could result in a MMU exception.  If you don't
  805.    have a MMU, you will be told.
  806.  
  807.  x
  808.       exits the monitor.  If the monitor has been invoked from CLI, he
  809.    returns to it.  If the monitor is located in the module a reset is
  810.    performed.  If the monitor is invoked by a freeze mechanism, the freezed
  811.    program is continued.
  812.  
  813.  X
  814.       exits the monitor and performs a complete hardware-reset including
  815.    clearing of the memory.
  816.  
  817.  B rgb1 rgb2
  818.       changes the background and foreground colors of the display.
  819.  
  820.  W <addr>
  821.       displays the current workspace locations if no parameter is
  822.    specified.  In case a parameter is specified and there is backup memory
  823.    either in the module or in special memory areas, the workspace is
  824.    changed to the specified chip memory location.  The previous memory
  825.    locations used as a workspace are restored using the backupmemory
  826.    contents saved while startup.  If there is no module installed the
  827.    monitor first checks, if execbase checksums are valid.  If they are, the
  828.    memlist is scanned for a chunk of graphics memory being big enough to
  829.    hold the screen and the diskDMAbuffer.  The text 'Scr(SYS)' reflects
  830.    this case.  If none is found or execbase seems corrupted, absolute
  831.    memory is used; conflicts of possible code/workspace overlay are
  832.    handled correctly.  The text 'Scr(ABS)' reflects this case.  The above
  833.    is valid for exchange memory, too.  The corresponding texts are
  834.    'Exg(SYS)' and 'Exg(ABS)'.  If the chunk in the memlist is more than
  835.    big enough, the workspace is placed at the end of it.  Currently the
  836.    following locations are scanned for memory expansions during startup, if
  837.    no chunk of fast memory being big enough is found using the memlist, or
  838.    if execbase seems corrupted.
  839.  
  840.    $f00000 $200000 $c00000 $80000
  841.  
  842.    If there is no backup memory found or you pressed right mousebutton
  843.    during startup, no backupmemory is used and therefor the original
  844.    contents cannot be restored when changing the workspace or exiting.
  845.    The workspace memory which is used for screenbitmap and disk drive
  846.    DMA-buffers defaults to $74000 in absolute mode, if there is a 8371
  847.    agnus.  With 1 MB continous ram below $100000 and a big agnus chip, the
  848.    workspace defaults to $f4000.  With 1.5 MB continous ram below $180000
  849.    and a big agnus chip, the workspace defaults to $174000.  With 2 MB
  850.    continous ram below $200000 and a big agnus chip, the workspace defaults
  851.    to $1f4000.  If the absolute workspace would overlay with the memory
  852.    in which the monitor is located, the absolute workspace is placed just
  853.    before the programcode.  Keep in mind, that if any absolute memory is
  854.    used, returning to the shell is rather risky, because unexpected things
  855.    *may* happen.
  856.  
  857.  i
  858.       displays the contents of the CPU-exceptionvectors, DMA- and
  859.    interrupt-registers determined during startup.  The vectors are changed
  860.    within the monitor to prevent executed programs from creating any alerts
  861.    and gurus.
  862.  
  863.  d <addr1> <addr2>
  864.       disassembles the memory locations beginning with "addr1" and ending
  865.    with "addr2"-1 if they are specified.  The disassembly can be edited
  866.    using the cursor.  If no valid instruction is given the line is not
  867.    accepted and not altered in memory.
  868.  
  869.  dm
  870.       changes the way offsets are displayed in disassembly between decimal
  871.    and hexadecimal form.
  872.  
  873.  ds
  874.       changes the way offsets are displayed in disassembly between signed
  875.    and unsigned form.
  876.  
  877.  dv
  878.       toggles the calculation of the effective address on the right part of
  879.    the disassembly.  In the worst case of abnormally large instructions
  880.    (movem), you may want to toggle this function off.  Note that currently
  881.    predecrement and postincrement is ignored.
  882.  
  883.  n addr
  884.       invokes the built-in MC680x0 line-assembler at the specified address.
  885.    The current instruction is displayed.
  886.  
  887.  N addr
  888.       invokes the built-in 6502/65SC802/65SC816 line-assembler at the
  889.    specified address.  The current instruction is displayed.
  890.  
  891.  auto
  892.       enables automatic immediate operand size selection for
  893.    65SC802/65SC816 instructions.  This function is of use in both assembly
  894.    and disassembly, because it remembers previous SEP #$xx and REP #$xx
  895.    instructions.  Note that the functionality depends on a linear flow of
  896.    code. The default size is 16 bit for accumulator and index registers.
  897.  
  898.  accu [8|16]
  899.       forces accumulator immediate operand size to either 8 or 16 bits and
  900.    disables automatic immediate operand size selection.
  901.  
  902.  index [8|16]
  903.       forces index register immediate operand size to either 8 or 16 bits
  904.    and disables automatic immediate operand size selection.
  905.  
  906.  u <addr1> <addr2>
  907.       disassembles the memory locations in 6502/65SC802/65SC816 mode
  908.    beginning with "addr1" and ending with "addr2"-1 if they are specified.
  909.    The instrucions are shown in hexadecimal, mnemonic and ASCII notation.
  910.    The effect of SEP #$xx and REP #$xx instruction on immediate opperands
  911.    is commented.  The disassembly can be edited using the cursor.  If no
  912.    valid instruction is given the line is not accepted and not altered in
  913.    memory.
  914.  
  915.  K <fn "text1|text2...">
  916.       defines commands or command sequences to be executed when pressing
  917.    one of the function keys.  The parameter "fn" may be one between f1 -
  918.    f10.  The "|" sign results in a return key being written into the input
  919.    buffer and is not needed for the last command in a sequence.  If no
  920.    parameters are specified the current function key settings are
  921.    displayed.
  922.  
  923.  D <n>
  924.       selects another diskdrive.  The parameter "n" may be one between 0
  925.    and 3 where 0 corresponds to DF0.  The current directory is set to the
  926.    root directory.  If the specified diskdrive is not available the drive 0
  927.    is selected.  If no parameter is specified the current diskdrive is
  928.    returned.
  929.  
  930.  dir <f>
  931.       first reports the name of the disk or the current subdirectory and
  932.    the number of free and used blocks.  The filelist of the current
  933.    directory including the comment and the size in bytes and blocks is
  934.    returned.  Existing hardlinks are reported with the corresponding object
  935.    refered to.  Note that linked files and directories do support their own
  936.    datestamp, but don't support their own protection bits and file comments
  937.    If the option f is given, the time and date of creation, the protection
  938.    bits, the file/dirheader key, the fileextension key and the first
  939.    datablock key is also returned.  If the disk is not a dos disk or if any
  940.    other errors occur a corresponding message is returned.
  941.  
  942.  bootsum addr
  943.       calculates and sets the checksum of an AmigaDOS bootblock located at
  944.    the specified address.  The previous and the new checksums are returned.
  945.  
  946.  datasum addr
  947.       calculates and sets the checksum of an AmigaDOS datablock located at
  948.    the specified address.  The previous and the new checksums are returned.
  949.  
  950.  bitsum addr
  951.       calculates and sets the checksum of an AmigaDOS bitmapblock located
  952.    at the specified address.  The previous and the new checksums are
  953.    returned.
  954.  
  955.  kicksum addr
  956.       calculates and sets the checksum of a kickstart image.  The specified
  957.    locations are checked to represent a valid kickstart image, and the size
  958.    of it is determined (256/512 KB).  The previous and the new checksums
  959.    are returned.
  960.  
  961.  megasum addr
  962.       calculates and sets the checksum of a SEGA Megadrive ROM image.  The
  963.    specified locations are checked to represent a valid ROM image.  The
  964.    previous and the new checksums are returned.
  965.  
  966.  smdplay addr
  967.       transfers the datablock beginning with the specified location to a
  968.    Super Magic Drive copier unit connected the parallel port, if it passes
  969.    an integrity check.  If the unit does not respond in time, a timeout
  970.    error is reported.  During transfer the current address and the number
  971.    of blocks to go is shown.  The transfer can be aborted using the escape
  972.    key.  The datablock represents a SEGA Megadrive module with Super Magic
  973.    Drive header and organisation.  Refer to the section near the end for
  974.    information on the supported cable wiring.
  975.  
  976.  rawplay addr
  977.       transfers the datablock beginning with the specified location to a
  978.    Super Magic Drive copier unit connected the parallel port, if it passes
  979.    an integrity check.  If the unit does not respond in time, a timeout
  980.    error is reported.  During transfer the current address and the number
  981.    of blocks to go is shown.  The transfer can be aborted using the escape
  982.    key.  The datablock represents a SEGA Megadrive module in raw binary
  983.    format without any headers.  Refer to the section near the end for
  984.    information on the supported cable wiring.
  985.  
  986.  smd2raw addr
  987.       converts the specified datablock in Super Magic Drive format into raw
  988.    binary format, if it passes an integrity check.  During conversion the
  989.    current address and the number of blocks to go is shown.  The resulting
  990.    data starts with addr and ends with addr+modulesize followed by $200
  991.    bytes of memory filled with $55.
  992.  
  993.  v <sync>
  994.       changes the syncword for all disk file and track operations to the
  995.    specified value.  The value is checked for consistency and invalid syncs
  996.    are noted, but not ignored.  If no parameter is specified the current
  997.    syncword setting is returned.
  998.  
  999.  vc <track>
  1000.       tries to find out the sync marks on the specified track of the
  1001.    selected drive, or on track 0, if no track is specified.
  1002.    (NOTE: this function needs major rework...)
  1003.  
  1004.  l addr cyl <num>
  1005.       reads the specified number of AmigaDOS cylinders to the specified
  1006.    memory locations from the selected diskdrive beginning with cylinder
  1007.    "cyl".  If no parameter "num" is specified only one cylinder will be
  1008.    read.  Note the difference between cylinders and tracks:  a disk
  1009.    contains 83 cylinders and 166 tracks.  The length of one cylinder is
  1010.    2 sides * 11 sectors * $200 bytes = $2c00 bytes in DD mode and
  1011.    2 sides * 22 sectors * $200 bytes = $5800 bytes in HD mode.  While
  1012.    reading tracks a list is displayed reporting which cylinder, head and
  1013.    sector has just been read to which address and which error occured if
  1014.    there has been any.  The number of retries is set to three for each
  1015.    sector.
  1016.  
  1017.  s addr cyl <num>
  1018.       writes cylinders to the selected diskdrive.
  1019.  
  1020.  l addr sec <num> s
  1021.       reads the specified number of AmigaDOS sectors to the specified
  1022.    memory locations from the selected diskdrive beginning with sector
  1023.    "sec".  If no parameter "num" is specified only one sector will be read.
  1024.  
  1025.  s addr sec <num> s
  1026.       writes sectors to the selected diskdrive.
  1027.  
  1028.  L filename addr
  1029.       loads an AmigaDOS file named "filename" and located in the current
  1030.    directory to the specified address "addr".  The filename can be quoted
  1031.    to include spaces.  If the disk has been changed, the current directory
  1032.    is set to the root directory.  While loading the current loadaddress is
  1033.    displayed.  If there is any error a corresponding message is returned.
  1034.    Both OFS and FFS disks are supported.  The OS2.0 link-feature is
  1035.    supported, too.
  1036.  
  1037.  S filename addr1 addr2
  1038.       saves an AmigaDOS file named "filename" into the current direcory.
  1039.    Saving begins with "addr1" and ends with "addr2"-1.  While saving the
  1040.    current saveaddress is displayed.  If there is any error a corresponding
  1041.    message is returned.  If the screen flashes there has been a readerror
  1042.    while saving and you should check the consistency of the disk structure.
  1043.    The time and date information is set, if there is a clockchip (either
  1044.    A500/A2000 or A3000 version) installed and the chip appears functional.
  1045.    Otherwise the the creation time is reset to 00:00:00 on 01-Jan-78.
  1046.  
  1047.  cd :
  1048.       sets the root directory as the current directory.
  1049.  
  1050.  cd subdir
  1051.       sets the specified subdirectory named "subdir" as the current
  1052.    directory.  This is only valid for the disk which is currently installed
  1053.    in the selected diskdrive.  Before any file- or dosoperation is done
  1054.    with a changed disk the current directory is reset to the rootdirectory.
  1055.    The OS2.0 link-feature is supported, too.
  1056.  
  1057.  mk subdir
  1058.       creates a subdirectory named "subdir" in the current directory of the
  1059.    selected diskdrive.
  1060.  
  1061.  del "name"
  1062.       deletes a file named "name" and being located in the current
  1063.    directory of the selected diskdrive.  If "name" is a subdirectory it is
  1064.    also deleted if it has been empty.  Linked files and directories are
  1065.    handled correctly.
  1066.  
  1067.  M
  1068.       returns the block allocation map of an AmigaDOS disk inserted in the
  1069.    current diskdrive.  A filled squar indicates that a sector is currently
  1070.    allocated and in use.  The upper part represents head 0 with sectors
  1071.    incrementing from 0 to 10 in DD mode and from 0 to 21 in HD mode, while
  1072.    the lower part represents head 1.
  1073.  
  1074.  info
  1075.       reports the drivemode (DD or HD).  The sector of the bitmap is also
  1076.    displayed and if the disk is validated or not.  No writing fileoperation
  1077.    can be performed without a validated disk.  The type of the filesystem
  1078.    is reported, too (DOSType, OFS or FFS and non international or
  1079.    international).
  1080.  
  1081.  format "name" <q> <0/1/2/3>
  1082.       initialises the disk in the selected drive.  No verification is done.
  1083.    If the option q is specified, only the boot- and root-tracks are
  1084.    formatted.  The disk won't be installed.  If no third parameter is
  1085.    given, the disk is initialised as a standard OFS disk, otherwise the
  1086.    parameter selects the filesystem between:
  1087.              0: non international OldFilingSystem  (DOSType DOS\0)
  1088.              1: non international FastFilingSystem (DOSType DOS\1)
  1089.              2:     international OldFilingSystem  (DOSType DOS\2)
  1090.              3:     international FastFilingSystem (DOSType DOS\3)
  1091.    The default '0' is readable with any version of AmigaDOS.  All other
  1092.    filing systems need OS2.0 to be recognised as a valid disk outside the
  1093.    BeerMon.  A HD disk inserted in a Chinon FB357A HD diskdrive will be
  1094.    formatted with 3520 sectors representing 1.76 MB.
  1095.  
  1096.  
  1097.  install <0/1/2/3/4>
  1098.       installs the disk in the selected drive.  If no parameter is
  1099.    specified, a WB2.x bootblock is installed, whose DOSType is determined
  1100.    by examining the DOSType entry of the previous bootblock.  If this entry
  1101.    is invalid, the disk is rejected.  The previous bootblock is ignored, if
  1102.    the optional parameter is specified, which selects between:
  1103.              0: non international OldFilingSystem  (DOSType DOS\0) WB2.x
  1104.              1: non international FastFilingSystem (DOSType DOS\1) WB2.x
  1105.              2:     international OldFilingSystem  (DOSType DOS\2) WB2.x
  1106.              3:     international FastFilingSystem (DOSType DOS\3) WB2.x
  1107.              4: non international OldFilingSystem  (DOSType DOS\0) WB1.3
  1108.    The last version is rather antique and should only be used if you have
  1109.    to ensure that the CLI screen is opened early, when using OS2.0.  Take
  1110.    care not to change the filesystem of a disk already containing files, or
  1111.    they are likely to become unreadable .  Use the 'M' command to find out
  1112.    the type of such a disk.
  1113.  
  1114.  cls
  1115.       clears the screen.
  1116.  
  1117.  time
  1118.       returns the current time and date, if there is a clockchip located at
  1119.    the ususal location (either A500/A2000 or A3000 version).
  1120.  
  1121.  / [0..9]
  1122.       returns info on several system structures.
  1123.    Needs some rework.
  1124.  
  1125.  V <addr1> <addr2>
  1126.       disassembles the copperinstructions at the memory locations beginning
  1127.    with "addr1" and ending with "addr2"-1, if they are specified.  The
  1128.    disassembly includes symbolic register names and can be edited using the
  1129.    cursor.  If no valid instruction is given the line is not accepted and
  1130.    not altered in memory.  The new ECS registers are handled, too.
  1131.    Examples of valid instructions:
  1132.              -Move #$8201,BplCon0      -dc.l $1800fff
  1133.              -EndList                  -Wait $0c,$00,1,$7f,$7f
  1134.              -Skip $0c,$00,1,$7f,$7f
  1135.  
  1136.  h start end <addr> <jmp>
  1137.       generates an object module including the data beginning with "start"
  1138.    and ending with "end"-1.  A code transfer routine is added using the
  1139.    destination address "addr" or the parameter "start" if it is not
  1140.    specified.  The program is executed using the parameter "jmp" or the
  1141.    parameter "start" if it is not specified.  The transfer routine disables
  1142.    DMA transfer, changes interrupt masks and flags and loads the active
  1143.    stackpointer (which mostly is the USP) with the value $80000.  The
  1144.    generated module may (and should) be edited according to your needs
  1145.    before being saved to disk.
  1146.  
  1147.  b <addr>
  1148.       shows memory locations beginning with "addr" in form of a bitmap.
  1149.    Moving the mouse up increases the startaddress.  The right mousebutton
  1150.    toggles between Medres and Lores screenresolution.  The escape key exits
  1151.    the bitplane display.  This is no IFF-searcher and is only intended to
  1152.    get a quick overview about memory contents such as free space, code,
  1153.    diskbuffers, bitplanes, bobs or sounddata.  The memory locations need
  1154.    not to be in chipmemory but may be any valid memory location below
  1155.    $c80000.  You may also display memory locations beginning with $f00000.
  1156.    Take care of not displaying any locations without ram installed such
  1157.    e.g.  $b00000.
  1158.  
  1159.  P
  1160.       toggles printer output.  If a printer is connected to the centronics
  1161.    port and online.  Any text output is both displayed on the screen and
  1162.    sent to the printer if this function is enabled.
  1163.  
  1164.  k
  1165.       toggles the current keymap between german keymap and usa keymap.  As
  1166.    a default setting the german keymap is used.
  1167.  
  1168.  config
  1169.       performs an autoconfig procedure for Zorro-II and Zorro-III
  1170.    expansions inside the lower 16MB address space.  This enables you to use
  1171.    Zorro type RAM-expansions (e.g.  at $200000) after you entered the
  1172.    module via reset (CTRL-A-A) or you performed the MC680x0
  1173.    RESET-instruction.
  1174.  
  1175. *****************************************************************************
  1176.  The supported Super Magic Drive cable wiring:
  1177.  
  1178.           Amiga Parallel Port              Super Magic Drive
  1179.                 D0    2  ----------------------  2  D0
  1180.                 D1    3  ----------------------  3  D1
  1181.                 D2    4  ----------------------  4  D2
  1182.                 D3    5  ----------------------  5  D3
  1183.                 D4    6  ----------------------  6  D4
  1184.                 D5    7  ----------------------  7  D5
  1185.                 D6    8  ----------------------  8  D6
  1186.                 D7    9  ----------------------  9  D7
  1187.                 GND  17  ---------------------- 17  GND
  1188.                 BUSY 11  ---------------------- 11  BUSY
  1189.                 SEL  13  ----------------------  1  STROBE
  1190.  
  1191.  
  1192. *** So that's all, share, spread and enjoy the word and also the disk.
  1193.  Greetings rush out to my friends around in TRSI, ESCape, the incredible
  1194.  FakeBuster, CodX, PBA and anybody elso who has been involved, or just
  1195.  deserves it.  The next update will be released every now and then, if
  1196.  enough changes or additions have been made, so don't hesitate to give
  1197.  suggestions and/or bugreports.
  1198.  
  1199. signed: Carnivore/BeerMacht 25.08.1992
  1200.