Jump to content
IGNORED

Supermon instructions


sup8pdct

Recommended Posts

Dug through all my stuff and found this. I typed out as the papers where too bad to scan...

 

 

 

 

 

 

Supermon user instructions
Welcome to the world of SuperMON and the ability to take full control of your ATARI computer at all times.
Here is what SuperMON can do for you
Give you the ability to break into a programs execution at ALL times, see where the program was executing at that moment and trace it back through the stack while giving you COMPLETE disassembly power.

Allow you tto call the Hex/Dec and Dec/Hex conversion routine from any Gr.0 screen and return without affecting the program

Have complete access to the disk drives direct from SuperMON
Where applicable, SuperMON allows bank selecting the extra RAM in a simple, safe way, making the tedious job of bit masking a thing of the past.

SuperMON can be used as a standalone addition, but ties in fully with other Super Products such as SuperRAM, SuperDOS and SuperMAX.

In the following pages, we’ll cover each SuperMON function separately and have a look at SuperMONs command structure as well.

For XL/XE owners: where the sequence OPTION/RESET is mentioned, substitute SELECT/RESET instead as the OPTION key retains its function of selecting/deselecting BASIC


GENERAL STRUCTURE
This means there is no ‘normal’ command within the Atari computer to direct it to go to SuperMON. To achieve entry into SuperMON, you have to either press the Shift and Control keys down and while down press the ESCAPE key, or press the OPTION and RESET keys together. SUPERMON resides in the unused (on Rev. ‘B’) 4K of the operating system, and as such is invisible to the system. As it replaces the XL operating system with revision ‘B’, there also is no memory lost.

Some programs (Electronic Arts in particular) check for the presence of a monitor, on the 400/800 this can be negated by setting the SuperMON switch to the OFF position, while on the XL one, simply switch back to the normal XL operating system. 400/800 owners have the advantage here that after loading, they can switch SuperMON back on and still have access to the program through the OPTION/RESET sequence. Please note that any attempt to enter SuperMON whilst it is switched out will result in a system crash!
As SuperMON now has automatic density seeking when accessing the disk drives, it can be used equally in single and double densities as well as addressing drives 1 through 4.

The key delay and repeat rates have been altered dramatically giving you superfast editing and cursor control.

As you now have the rev ‘B’ operating system in your 400/800, you’ll have no more problems with your drive or printer ‘Going to sleep’

LIST, STEP, TRACE and ASCII display can now all be sent to the printer if required, whilst any repeatable function can be stepped along simply by pressing the RETURN key, and if set for printer output, will continue to do so until a different command is selected.

COMMAND STRUCTURE
All commands except disk functions can be accessed without recalling the menu, simply by pressing the command letter (in brackets). The disk functions HAVE to be selected from the disk submenu in order to safeguard disk access. If a non-command letter is pressed, a bell tone will be heard and the menu re-displayed.

Although in all examples a comma (,) will be used as a delimiter, ANY non-hexadecimal (0-9 and A to F) character may be used. As an example, the Change command (location,byte,byte,etc) 4000,1,2,3,4,5,6,7,8,9 is equally valid as 4000;1,2/3/4.5<6:7+8,9 ONLY in the FIND command are the > and# used for special purposes and should not be used as delimiter.

We’ll now cover each command individually.

©HANGE memory
The response is the prompt ‘ENTER ADDRESS, CONTENTS’
Input the HEX address followed by a comma followed by between 1 and 100 values separated with a comma. SuperMON will put the values sequentially into memory at the address specified. EG: 4000,1,2,3,4,5,6,7,8,9 will change location 4000 to a 1, 4001 to a 2 4003 to a 3 etc


(M)OVE one or more bytes in memory.
The response is the prompt ‘DESTination,START,END.
Input as the first parameter the location where you want to put the first buye you are moving. The second parameter is the location of the first byte you want to move and the third parameter the last byte to be moved. EG: 4000,6000,67FF will move the block of memory residing between 6000 and 67FF into 4000 to 47FF. SuperMON can shift any amount of memory to any location without overwriting the original code if there is no overlap. You may move up or down at will. 4000,4001,5FFF will move the entire block of memory from 4001 to 5FFF down one byte in memory.
(F)IND a Hex sequence in memory.
The first prompt is ‘ENTER HEX SEQUENCE’
Enter the bytes separated by a delimiter. There is no length limit.
The second prompt is ‘FROM, TO’
In reply to this, specify to which area of memory you want to look for the sequence.
EG: first prompt response 44,4f,53 (the letters DOS)
Second response 1000,9FFF
SuperMON will now search the entire area from location 1000 to location 9FFF for a 44, and if it finds this will check the next location to see if it contains a $F and if so, the following one for a 53. If this is found, it will list to the screen the memory address of the first byte and continue the search till it reaches 9FFF.
WILD CARDS
Wild cards are characters that tell SuperMON that ANY byte it finds in that spot in the sequence should be accepted as a match. PLEASE NOTE that there is a delimiter BEFORE the wildcard, but NOT after. If you are looking for a sequence but are not sure of one of the bytes, substitute an asterisk (*) EG: in the sequence above, if you wanted to find DOS as well as DIS or DAS, you would enter 45,*53
Another wild card is the greater than sign (>). This is unique to SuperMON and makes the FIND command extremely powerful. It will take a while to understand its full potential, but works as follows:
If you are looking for a (STA) instruction into e.g. a cartridge (a common protection technique, as this has no result in a cartridge but DOES change memory if it is RAM) you could specify 8D,>A0 (8D is the code for STA, Store the Accumulator).
The second prompt could be e.g. 8000,BFFF. SuperMON will now scan the memory from 8000 to BFFF (which can be a 16K cartridge) for a sequence starting with 8D, followed by any byte, followed by a byte starting with the value A, ignoring the second nybble. Therefore 8D,50,A0 and 8D,33,A8 and any similar instruction would be found and listed. The input is limited to three bytes, the 3rd byte MUST finish with a 0 such as A0, B0, 20 etc. Any bytes after this will simply be ignored.
As soon as you again select the (F)ind command you will have full editing and can cursor up and replace the A0 with e.g. B0 and return, return. SuperMON will repeat the entire operation but now looking for anything stored in the block of memory from B000 to BFFF.
Once fully understood, this is one of the most powerful debugging tools available.





(V)erify one section of memory against another.
The prompt is again ‘DESTination, START, END’ and in this case the first parameter indicates the first location in memory of one block, the second parameter is the first location of the second block and the third parameter the LAST location of that block to be verified.
EXAMPLE: 4000,7000,7FFF will compare 4000 to 7000, 4001 to 7001, 4002 to 7002 etc etc till 7FFF is reached. All differences will be shown to the screen in double column format, showing the location and contents of one block and the location and contents of the other block.



(A)SCII display
The prompt for this is ‘ENTER ADDRESS’
In response enter the address of the first byte to be displayed. SuperMON will now display an entire page of memory at once, giving the text equivalent of any byte in memory, a dot for those that have no equivalent and a space for spaces. Pressing return adds the next page etc etc.
This is a quick way to find commands etc in adventure games, but you wouldn’t cheat would you.
Inputting the address followed by a P (no spaces) will send the display to the printer as well as screen.

(L)IST memory
The prompt for this is ‘ENTER ADDRESS’. Enter the address of the first instruction you want dissembled. SuperMON will now display the following information: the address, the hex value/values therein, the mnemonic code for the instruction, the address or value for the instruction to use and the ASCII equivalents of the values. As a bonus, SuperMON will flag the right margin with an asterisk (*) for any indirect instruction (ML users only). By inputting the address followed by one or more letter L (no spaces) SuperMON will display as many extra screens as there are letters L. Control 1 will start/stop the display. By following with a letter P, everything will be directed to the printer as well.

(S)tep and (T)race through the program while executing it.
The prompt for this is ‘ENTER ADDRESS’. The STEP function will actually execute the program while under your control, step by step meaning instruction by instruction.
The TRACE instruction is identical, but continuous, and can be controlled with the Control 1 key.
Display will be one line, identical to the list instruction, followed by a line displaying the Accumulator, X register, Y register and the decoded processor status register, The last displays the letter of any flag set e.g. Break enable flag set, Z means zero flag set etc.
The STEP instruction will follow branches, Jumps etc and store values if required. A built in safety prevents the setting of interrupts as well as not allowing SuperMONs own pointers to be changed, thus retaining control at all times. A unique feature of SuperMON is the ability to follow a jump subroutine instruction. The prompt ‘Follow JSR Y/N’ appears. By pressing the ‘Y’ key you will cause SuperMON to follow, pressing any other key will cause SuperMON to ignore this instruction and continue with the section of code where it was. Each STEP is executed by pressing RETURN.
If you answer NO to 4 consecutive questions, SuperMON will presume you are only interested in the main line code and will from then on ignore all JSR instructions. Answering ‘Y” at any time before the count of four resets the counter.
Inputting the address followed by a letter ‘P’ (no space) will cause the output to also go to the printer.


®un at given address
The prompt is ‘ENTER ADDRESS’ input has to be HEX address. The program will RUN from this address. The break key and software break vector are NOT restored, pressing break will (usually) bring control back to SuperMON, as will the program encountering instruction 00 (software break instruction BRK ). If the code ends in a RTS instruction, it will NOT crach but return to SuperMON.

(G)O CART.
This will return you to basic if present, without re-initialising if basic is present. If not, XL and XE owners are presented with the prompt SURE Y/N. only Y is positive. Any other key will cancel. SuperMON will force system to activate basic, reset the screen and vector through basic initializing it.

(D)ISK utilities.
This brings up the disk utilities sub menu, from which all disk commands have to be selected. This prevents accidentally accessing the disk. The command letter here is in inverse to differentiate. The default drive is number 1, but whenever selecting the disk menu, you may input a number from 1 to 4 to set the drive. Nothing will appear to change, but the drive specified will now be accessed until changed or until RESET is pressed.

Please note that all sector numbers are displayed and input in Decimal.

(B)OOT drive one only.
This will boot the disk in drive one as if you have just switched on. The break key and software break remain (usually) under SuperMON control and pressing BREAK will return you to SuperMON.

(D)OS
This will check to see if dos is in memory and if so, will display the DOS menu. If not, will load DOS from disk.

(I)NDEX
This will display in 2 abreast format the files on a DOS 2 type directory, including deleated files. The display has, to the left of the name the first sector number of the program, while the length is displayed on the right as normal. Free number of sectors on the disk is also displayed.

(F)IND
The prompts and parameters are identical to the find command in memory, except that instead of address, you are asked to input the sector number (Dec).
Wild cards may again be used in the same manner.
If you are searching a dos type file, the sequence you are looking for may be split by the sector link data and not be found. It is therefore a good idea to use S (special) function to load those programs into memory and search there.

(W)RITE directly, one or more sectors to disk.
This is the dangerous one!!!
You are asked to input firstly the sector number on the disk, then the start address and end address in memory. The contents of this memory will be written to CONSECUTIVE sectors on the disk.
Example: A sector number 5 and address 600,67F will write one sector. In single density this is from 600 to 67F, in double density it is from 600 to 6FF. 4000,4FFF will write 16 double or 32 single density sectors. The final prompt for this function tells to insert the disk and press return, and is accompanied by TWO bell tones, the only time you will hear this. It serves to introduce a slight delay and to tell you: MAKE SURE YOU HAVE EVERYTHING RIGHT!

®EAD one or more sectors from disk.
This reads from disk as many sectors as necessary to fill the memory specified. It is the reverse of the write command.

The (S) command
This is the special DOS files mode. It will ask for the start sector of the program (use the (I)ndex command) and start address in memory. It will ignore the 6 byte header, load the program in one continuous block into memory till the end of the file, including all appended files and stripping off all link data in each sector. This is often used with the (F)IND command when dealing with DOS files on disk. The difference with the ‘L’ option on the dos menu is that it will put the program where you specify and return control to you.
NON MENU FUNCTIONS
Some functions do not appear on the menu because they can be accessed from outside SuperMON. Two of these are the Hex/Dec and the Dec/Hex number conversion routines. To convert a number from Hexadecimal to Decimal, press Shift/Control ‘$’ simultaneously from any Gr.0 screen. You will be asked to input the number and the converted number will be displayed. To convert from Decimal to Hex, press S/C ‘#’. These functions will return to where you were. You will not end up in SuperMON.
The next two functions are probably the most significant of the changes made to SuperMON in early 1986. The first is the screen dump, which allows a quality as good as most commercially available and disk based programs but can be accessed when other programs are in memory.
At any time you may press S/C ATARI key (inverse) and whatever is on the screen will be dumped to your printer. Resolution will be 320 dots across and four colours (patterns) are provided for. This will print Gr. Modes 0 in normal text, 1 and 2 is enlarged and gr. 7, 71/2,8,9,10,11 as graphics. Modes 3,4,5 and 6 are ignored. Any player missiles are ignored (sorry about that) and redefined character are printed as normal charactors. Many programs will continue running after the printer dump is finished. This depends on the type of program. Most adventures will continue if you print while they wait for key input.
These functions are disabled when the keyboard is disabled.

SUPERBIN
This is a built in binary loader, capable of loading and running any binary load format file anywhere in memory. It is accessed automatically from the boot section on a disk which SuperBIN has been written, using the AUX.SYS file in SuperDOS. SuperBIN can be used equally without SuperMON.

Helpful Hints
When entering SuperMON through S/C ESC, the current address pointer will be found in location $160 and $161, the stack pointer value in $162.


Addendum.

The above is a direct copy of the Original SuperMON manual. You may note, no mention has been made on how to access the extra banks of an expanded Xl or XE despite it being mentioned.
I have discovered that putting the bank number directly before the address of most commands will select the bank to use. As with all banked memory, it will appear in the $4000,$7FFF window. I have found only numbers 1 to 8 can be used so far. E.g. (L)ist 14000 will list contents of extra ram bank 1, 24000 extra ram bank2 etc.

The HHT have a slightly modified version that uses joystick ports for some reason.

 

James

  • Like 4
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...