***************************************************************************** * * * Documentation for the public release of BeerMon V0.28 1.7.90 * * * ***************************************************************************** It is done. The BEERMACHT presents the BeerMon, which seems to contain some outstanding features other known monitors don't have. The BeerMon, as well as the sourcecode, the schematics and the documentation being part of this distribution appear by courtesy of the original author who reserves no rights and places all this into the PUBLIC DOMAIN. Any hints, comments, bug reports or opinions are highly appreciated and can be made in those BBS the BEERMACHT appears in, prefered in these german ones: CAESAR'S PALACE +49 211 7270374 or AIRPORT +49 211 7338332 Now let's start with the documentation... The BeerMon is another kind of monitor compared to those of the past like C-monitor, Amon, etc. He is a monitor of the nasty type because he makes no use of any library, device or even Kickstart stuff, in fact you may rip out the Kickstart rom when the BeerMon is running. The BeerMon includes a full screen editor which is of use in most cases. So if you got the taste of gore now here's the most important thing. If you build the hardware add-on which is described in the schematics you are able to break any program just with reset and you are able to access any byte of memory untouched. This works because the hardware contains autoconfig memory in which backup of workspace memory is moved. Into this memory expansion the monitor can be loaded by executing the "init"-command on this disk. If you aren't able to build this board (blame on you), you could also use the BeerMon with in some cases reduced capabilities. So if you have some other kind of memory expansion you may load the BeerMon into it using the "init$c0" cli-command on this disk. The memory should for best results be physically but not logically available (this can be done with those $c00000 expansions in A500's by switching the expansion off, resetting and switching it on again). If the BeerMon is located in there you may start him just by JMPing to the startaddress for which he has been relocated using the "hunkwiz" -relocater. Take the file "relocate" to see how to do it. Or you set this funky bus error vector at $8 with the startaddress and the magic button (see schematics) brings you to paradise. Well, this should only be a hint how to be more powerful than only start the BeerMon from cli, which is also possible but not the most advanced and consistent method. Note the fact, that the BeerMon has never been designed for cli usage and therefor may have some disadvantages when you return to the cli. So the choice is yours... now here some general notes about he this release of the BeerMon... the mouse: enables you to set the cursor (left mousebutton). Pressing the right mousebutton stops any textoutput on screen, until it is released again. escape key: aborts any command (even load/save...) tab key: sets the cursor to next item of data in a block (skips spaces, is useful in directory and hexdump). muliate: the standard mode which you usualy would enter, without freezing. freezing: is in work, not yet finished, but seems to become funky. the display: currently in pal, but there will be other options in future. the keymap: defaults to german keymap, but can be changed with "k" cpu: currently 68000 and 68010 are tested, the 68010 might get useful in future due to the vector base capability to trick some protections vomiting on the those gory pointers around $000xxx (full tracing of every prg becomes possible). agnus: new big angus chip is recognized and may be used with 1 MB chip memory. well, now we come to the command list, < > means optional parameter(s)... ----------------------------------------------------------------------------- m gives a hexdump as well as display in ASCII of specified or following memory locations. Both can be edited using the cursor. a gives a display of specified or following memory locations in ASCII. This can easily be edited using the cursor. ? value <...> returns the result of a calculation. "value" is interpreted as a hexadecimal value, if it is not preceeded by a "#" sign. In case it is interpreted as a decimal value. The operations can be one of the following: + add to - subtract * multiply by / divide by ! or with & and with = exor with < shift left "value" times > shift right "value" times The result is returned as a hexadecimal, decimal and binary value. c adr1 adr2 adr3 compares the memory beginning with "adr1" and ending with "adr2"-1 with the memory locations starting at "adr3". The result is a list of all memory locations which are different. t adr1 adr2 adr3 tranfers the memory beginning with "adr1" and ending with "adr2"-1 to the memory locations starting at "adr3" o adr1 adr2 word fills the memory beginning with "adr1" and ending with "adr2"-1 with specified two-byte value "word". e adr1 adr2 word performes an exor operation with the memory beginning with "adr1" and ending with "adr2"-1 using the specified two-byte value "word". f adr1 adr2 byte <...> searches for one to 14 bytes beginning with "adr1" and ending with "adr2"-1. The result is a list of all memory locations where the specified byte or sequence can be found. f adr1 adr2 "text" searches for a text of up to 14 characters length beginning with "adr1" and ending with "adr2"-1. The result is a list of all memory locations where the specified text can be found. F adr searches for all conditional branch-instructions relatively accessing the specified address. Any occurence is shown in disassembled form. Possible instructions would be: BEQ.S/L $xx BRA.S/L $xx BSR.S/L $xx DBF Dx,$xx ... F adr pc searches for all instructions accessing the specified address using the pc-relative addressing-mode. Any occurence is shown in disassembled form. Possible instructions would be: LEA $xx(PC),Ax JSR $xx(PC) MOVE.B/W/L $xx(PC),xx ... p adr1 adr2 plays dma-sound using the chip memory locations beginning with "adr1" and ending with "adr2". The current address of the replayer is shown while playing the sound. If no period is specified a period of $100 is used. The length of sounddata to be played is not limited to 128 KB. r displays current cpu-register contents if no parameters are given. If register and value are specified the register is modified accordingly. Valid registers are: D0 - D7 A0 - A7 USP SSP SR g adr executes a subroutine at the specified memory location. The cpu-registers are set before execution und the resulting register contents are displayed after the execution. Any cpu-exception is controlled and the memory location wehre it occured is displayed. x exits the monitor. If the monitor has been invoked from cli, he returns to it. If the monitor is located in the module a reset is performed. If the monitor is invoked by a freeze mechanism, the freezed program is continued. X exits the monitor and performes a complete hardware-reset including clearing of the memory. B rgb1 rgb2 changes the background and foreground colors of the display. W displays the current workspace locations if no parameter is specified. In case a parameter is specified and there is backupmem either in the module or in special memory areas, the workspace is changed to the specified chip memory location. The previous memory locations used as a workspace are restored using the backupmemory contents created while startup. If there is no module installed the monitor searches other memory expansion to backup memory while startup. Currently the following locations are scanned for memory expansions during startup: $c00000 - $80000 - $200000 and the module memory If there is no backupmemory found or you pressed right mousebutton during startup, no backupmemory is used and therefor the original contents cannot be restored when changing the workspace or exiting. The workspace memory which is used for screenbitmap and disk drive dma-buffers defaults to $74000 if there is no big agnus with 1 MB chip memory or $f4000 if there is both. The workspace should not overlay with the memory in which monitor is located, which is possible on amigas having no fastmem or module installed. i displays the contents of the cpu-exceptionvectors and the dma and interrupt-registers determined during startup. The vectors are changed within the monitor to prevent executed program from creating any alerts and gurus. d disassembles the memory locations beginning with "adr1" and ending with "adr2"-1 if they are specified. The disassembly can be edited using the cursor. If no valid instruction is given the line is not accepted and not altered in memory. dm changes the way offsets are displayed in disassembly between decimal and hexadecimal form. ds changes the way offsets are displayed in disassembly between signed and unsigned form. n adr invokes the built-in line-assembler at the specified address. The current instruction is displayed. K defines commands or command sequences to be executed when pressing one of the function keys. The parameter "fn" may be one between f1 - f10. The "|" sign results in a return key being written into the input buffer and is not needed for the last command in a sequence. If no parameters are specified the current function key settings are displayed. D selects another diskdrive. The parameter "n" may be one between 0 and 3 where 0 corresponds to DF0. The current directory is set to the root directory. If the specified diskdrive is not available the drive 0 is selected. If no parameter is specified the current diskdrive is returned. dir returns the filelist of the current directory including size and date of creation. At the end of the list the numbers of free and used blocks are returned. If the disk is not a dos disk or if any other errors occur a corresponding message is returned. C adr d calculates and sets the checksum of a amigados datablock located at the specified address. The previous and the new checksums are returned. C adr b calculates and sets the checksum of a amigados bootblock located at the specified address. The previous and the new checksums are returned. V changes the syncword for all disk file and track operations to the specified value. The value is not checked for consistency and you should know which are valid. If no parameter is specified the current syncword setting is returned. l adr cyl reads the specified number of amigados cylinders to the specified memory locations from the selected diskdrive beginning with cylinder "cyl". If no parameter "num" is specified only one cylinder will be read. Note the difference between cylinders and tracks: a disk contains 83 cylinders and 166 tracks. The length of one cylinder is 2 sides * 11 sectors * $200 bytes = $2c00 bytes. While reading tracks a list is displayed reporting which cylinder head and sector has just been read in to which address and which error occured if there has been any. The number of retries is set to three for each sector. s adr cyl writes cylinders to the selected diskdrive. l adr sec s reads the specified number of amigados sectors to the specified memory locations from the selected diskdrive beginning with sector "sec". If no parameter "num" is specified only one sector will be read. s adr sec s writes sectors to the selected diskdrive. L filename adr loads an amigados file named "filename" and located in the current directory to the specified address "adr". The filename can be quoted to include spaces. Be sure that the current directory is set to the root directory when reading from a new disk and you have been in one or more subdirectories before. This can be done with the "CD :"-command or the "D drive"-command. While loading the current loadaddress is displayed. If there is any error a corresponding message is returned. S filename adr1 adr2 saves an amigados file named "filename" into the current direcory. Saving begins with "adr1" and ends with "adr2"-1. While saving the current saveadddress is diplayed. If there is any error a corresponding message is returned. If the screen flashes there has been a readerror while saving and you should check the consistency of the disk structure. The time and date information is at this time reset to 1-Jan-78. cd : sets the root directory as the current directory. cd subdir sets the specified subdirectory named "subdir" as the current directory. This is only valid for the disk which is currently installed in the selected diskdrive. Before any file- or dosoperation is done with a changed disk you must return to the rootdirectory first. mk subdir creates a subdirectory named "subdir" in the current directory of the selected diskdrive. del "name" deletes a file named "name" and being located in the current directory of the selected diskdrive. If "name" is a subdirectory it is also deleted if it has been empty. M returns the block allocation map of an amigados disk inserted in the current diskdrive. The "#"-sign indicates that a sector is currently allocated and in use. The sector of the bitmap is also displayed and if the disk is validated or not. No writing fileoperation can be performed without a validated disk. h start end generates an object module including the data beginning with "start" and ending with "end"-1. A relocater is added using the destination address "adr" or the parameter "start" if it is not specified. The program is executed using the parameter "jmp" or the parameter "start" if it is not specified. The relocater disables dma transfer, interrupt masks and flags and loads the active stackpointer with the value $80000. The generated module can be edited before being saved to disk. b shows memory locations beginning with "adr" in form of a bitmap. Moving the mouse up increases the startaddress. The right mousebutton toggles between Medres and Lores screenresolution. The escape key exits the bitplane display. This is no IFF-searcher and is only intended to get a quick overview about memory contents such as free space, code, diskbuffers, bitplanes, bobs or sounddata. The memory locations need not to be in chipmemory but may be any valid memory location below $c80000. Take care of not displaying any locations without ram installed such e.g. $b00000. P toggles printer output. If a printer is connected to the centronics port and online. Any text output is both displayed on the screen and sent to the printer if this function is enabled. k toggles the current keymap between german keymap and usa keymap. As a defualt default setting the german keymap is used. *** So that's all, share, spread and enjoy the word and also the disk.