Document Navigation
Table Of Contents
Previous
Next

XI. ADAPTING TO YOUR SYSTEM

In general, if you have FLEX up and running and have at least 16K of user memory, there will be no need for any adapting whatsoever. Some users, however, always feel the need to modify certain things and this section describes how to make all the changes which we felt might be desired (and which would be feasible). With the exception of MEMEND, these changes must all be made to the object code of the assembler. This can be done by loading the assembler (with a GET ASMB.CMD command), making the desired changes in memory, and saving the result on disk (with the SAVE command).

MEMEND

If using the automatic table setup which the assembler performs for you, the MEMEND value in FLEX should be set to the last address which the assembler should use. FLEX initializes MEMEND to the actual end of user memory. You may have an application where you don't want this to be the case. If so, set MEMEND manually before executing the assembler.

EXIT ADDRESS

When the assembler is finished, it jumps into FLEX's warm start. If you wish it to exit to some other address, place that address at location $0027.

OUTPUT CHARACTER ROUTINE

As supplied, the assembler outputs through FLEX's PUTCHR routine. This takes advantage of the escape-return sequence in FLEX to pause or terminate an output listing. If, however, you wish to output through some user supplied output routine, place the address of such a routine at location $002A. This routine should output the character in the A register and return without affecting any registers except the condition codes.

TAPE OUTPUT CHARACTER ROUTINE

Presently, tape output is performed character at a time through the PUTCHR routine in FLEX. This causes any tape output to be routed to the terminal which may be the same port on which the tape device is located. If you require a different output routine for tape, place the address of such a routine at location $002D. This routine should output the character in the A register to the tape device and return without affecting any registers except the condition codes.

LINES PER PAGE

If the page mode is selected, the assembler automatically places a header at the top of each page (with the current page number) and performs a page eject at the bottom. The number of lines which are output before the page eject occurs (including the header lines) is set at location $0018 in the assembler. This value is currently set to 58 lines. Change if desired.

LABELS PER LINE

The symbol table output is done with multiple symbols per line. Currently there are 5 labels per line. If desired, this number can be changed by setting the byte at location $0019.

AUTO FIELDING COLUMNS

As explained in the special features section, this assembler performs auto fielding. The columns in which the fields are placed are currently set to 8, 15, and 25 for the mnemonic, operand, and comment fields respectively. If desired, these columns can be changed by altering the three bytes beginning at location $001A.

TAPE CONTROL

When tape output is selected, the assembler turns on the tape unit, delays for a set period, then begins the output. When the last data has been output, the assembler turns the tape unit off. This tape on and off control is performed by outputting up to four characters for each function (on and off). Currently these characters are all set to nulls ($00) as the assembler expects manual tape control. If you wish to set these characters, the four tape on characters should be placed at locations $001E through $0021. The four tape off charcters should be placed at locations $0022 through $0025.

The time delay for tape turn-on can also be adjusted by altering the byte at location $001D. This byte is currently set to 4 (roughly 2 seconds) and should be raised for longer delays or lowered for shorter delays (can be zero for no delay).

SETTING UP THE TABLES MANUALLY

If you wish to set up the necessary tables and buffers manually, you may do so. This requires that you supply the starting and ending addresses of the five tables described in the section on special features and set a byte called MANUAL to some non-zero value. This MANUAL byte is located at $0003 and is currently equal to zero. The assembler tests this byte and if zero, performs automatic table setup. If non-zero, the assembler picks up the table start and end addresses from the following locations:

SOURCE BUFFER BEGIN $0004
SOURCE BUFFER END $0006
MACRO NAME TABLE BEGIN $0008
MACRO NAME TABLE END $000A
MACRO ACTIVATION BUFFER BEGIN $000C
MACRO ACTIVATION BUFFER END $000E
MACRO TEXT BUFFER BEGIN $0010
MACRO TEXT BUFFER END $0012
SYMBOL TABLE BEGIN $0014
SYMBOL TABLE END $0016

NOTES:

  1. The Macro Name Table and the Symbol Table must be an even multiple of 8 bytes in size!
  2. The assembler uses a large stack area to maintain all its temporary variables and buffers. This stack requires 0720 hex bytes of RAM starting at FLEX's MEMEND and growing down from there. This implies two things: if manually setting up the tables you must leave this space free and if you want to move where the stack resides, you must set MEMEND accordingly as the assembler will always place its stack so that it sets up against MEMEND.
  3. When manually setting up the tables, you will probably want to use all the space between the end of the assembler itself and (MEMEND-$0720). Thus the lowest table would start just after the last byte of the assembler as found on the disk and the highest table would end at (MEMEND-$721).


Table Of Contents Previous Next
Document Navigation