S-C Software Corporation 2331 Gus Thomasson, Suite 125, P.O. Box 280300, Dallas, Texas 75228 (214) 324-2050 S-C Macro Assembler Version 1.1 Here is your copy of the latest upgrade to the S-C Macro Assembler. Version 1.1 includes many small enhancements, and is compatible with the //e, Videx, and STE 80-column Systems as well as 40-column Apples. This disk contains eight versions of the S-C Macro Assembler. A version loading at $1000 and a version loading at $D000 are provided for four different configurations: a normal 40-column Apple J[ or If Plus, a 40- or 80-column Apple //e, an Apple ][ or ][ Plus with the Videx 80-column card, or an Apple ][ or ][ Plus with the STB-80 card. The HELLO program checks to see whether you have an Apple //e or an older version. If not a //e, HELLO next presents a menu for you to choose a 40-column, Videx, or STB-80 version. HELLO then displays a menu so you can choose between the $1000 and the $D000 versions for the configuration you have. Both //e versions begin operation in 40-column mode. If you have the //e 80-column card, you may switch to 80-column mode by typing PR#3. You may wish to construct a HELLO program which more directly loads the version you normally use. It is quite simple, and can be done with a one-line program. For example, to start up the //e $D000 version: 100 PRINT CHR$(4)"EXEC LOAD LCASM.E":END Or the Videx $1000 version: 100 PRINT CHR$(4)"BRUN S-C.ASM.MACRO.l000.VIDEX" The file named APPLESOFT is an Integer BASIC program which will be executed instead of HELLO if you have an Apple ][ with Integer BASIC on the motherboard. It operates in much the same way as HELLO, with the exception that the //e versions are not offered. There are several files called EXAMPLE ... which contain examples of all the new directives in use. The Version 1.1 disk is not copy-protected in any way. Make a back-up copy now, and store the original in a safe place. You may also use the FID program (from the DOS 3.3 Master Disk) to move individual files to your working disks. You will probably want to do this, and rename the files for easy access. - 1 - -------------------------------------------------------------------------- Features added in support of Apple //e: 1. The Apple //e version allows you to change between 80- and 40- column screens at will, using PR#3 to go to 80-columns, or ESC-control-Q to go to 40-columns. If you choose to enter 80-column mode, the //e version assumes you have the Apple 80-column card installed. 2. In both normal input and edit modes, the DELETE key ($FF) acts like a backspace key. It is interpreted the same as a left arrow (control-H, $88). 3. Unfortunately, the Apple //e 80-column firmware makes it impractical to support the ESC-L command to LOAD a file by lifting the filename from the screen. ESC-L is supported only in 40-column mode. 4. The //e firmware handles ESC-cursor motions in a slightly different manner. The right arrow will not terminate the ESC-IJKM mode. About the 80-column Macro Assembler versions: 1. When using the Escape key editing functions (keys A-F, IJKM, and @) you should exit the ESCape mode with some key other than right arrow. This is because the right arrow key will send the character beneath the cursor to the escape-key processor and some funny things might happen to the screen if the key matches one of the valid ESCape key functions. 2. To exit from the Videx or STB-80 assembler you should use PR#3 to unhook the assembler I/O hooks. Then type FP (or INT, if you have an Integer BASIC motherboard). Forgetting to type PR#3 could cause random results. 3. To return to the assembler after using a printer, use RESET to turn off the printer and return to the assembler. Although PR#3 appears to let you return to the assembler you will find that some of the keyboard editing functions may not work right because the assembler is not hooked into the I/O hooks. The RESET will cause the assembler to hook itself back into the I/O hooks and return I/O to your 80-column card. 4. In using the MNTR command, the ESCape editing functions will not work from the Apple monitor unless you type PR#3 to unhook the assembler before typing MNTR. You should then return to the asseinbler with 3D0G or RESET to have the assembler rehook itself back into the I/O hooks. - 2 - -------------------------------------------------------------------------- Extended or Modified Features: 1. The .HS directive now allows optional "." characters before and after each pair of hex digits. (e.g., .HS ..12..34..) This makes for easier counting of bytes, and allows you to put meaningful comments above or below the .HS lines. (page 5-6) 2. .DO--.FIN sections can now be nested to 63 levels, rather than just 8 levels. (pages 5-9, B-2) 3. In the EDIT command, the insert mode is now invoked by control-A (for ADD), rather than control-I. This was done because the TAB key on the //e produces a a control-I code. The TAB or control-I keys now perform a clear-to-tab function. Skip-to-tab is still invoked by control-T. (page 4-10, ref card) 4. Comment lines may begin with either "*" or ";" (page 3-5) 5. Memory protection during assembly has been expanded. In addition to the space for the private label and symbol tables, and the space from the base of the source code to the end of memory, the assembler now protects system areas at $00lF-$02FF and $03D0-$07FF. (page A-2) 6. New user parameters have been added to allow memory protection to be over-ridden. $101C-101D ($D01C-D01D) contains the lower bound,- and $101E-101F ($D01E-D01F) contains the upper bound of an area the user wants to UN-PROTECT. These locations contain zeroes when full memory protection is in force. (The parameter for the starting page of the symbol table has moved from $101D to $1021, or $D01D to $D021.) (pages A-2, D-2) 7. The TAB character at $100F ($D00F) may now be set to any character, including non-control characters, if you so desire. The TEXT/ command now outputs the current TAB character (default ctrl-I). It used to output control-I no matter what the current TAB character was. (pages 3-2, D-l) 8. Line numbers may now have up to five digits, in the range from 0 through 65535. Previous versions restricted line numbers to no more than four digits. (pages 2-1, 3-1) 9. The .BS directive now generates a RANGE ERROR if the number of bytes is negative, or greater than 32767. (Pages 5-7, B-l) - 3 - -------------------------------------------------------------------------- New Features: 1. The .SE directive has been added, to allow re-definable symbols. Symbols which are originally defined by the ·SE directive may be re-defined within the same assembly. This directive allows a counter within macro definitions, as shown in the file EXAMPLE OF .SE DIRECTIVE. Here are some other examples: 0006- 1000 A .SE 6 0060- 1010 A .SE A*$l0 0008- 1020 B .EQ 8 000C- 1030 A .SE A/B A label defined with a .EQ statement cannot be redefined. 2. Binary constants are now supported. The syntax is "%l10000l110l" (up to 16 bits). To make it easier to read the binary constants, you may include optional periods as visual separators between the binary digits or groups of digits. Here are some examples: 0800- AD 08 01 1000 LDA %100001000 0803- 29 7F 1010 AND #%01111111 0807- 01 80 1020 .DA %1000000000000001 0809- 34 12 1030 .DA %0001.0010.0011.0100 3. ASCII literals with the high-bit set are now allowed, and are signified with the quotation mark: LDA #"X generates A9 D8. Note that a trailing "-mark is optional, just as is a trailing apostrophe with previous ASCII literals. 4. Blanks are now compressed inside macro skeletons when they are added to the symbol table. This saves about 30% of the space used by the skeletons. 5. .PH and .EP directives are now available, to start and end a phase. With these directives you can assemble a section of code that is intended to be moved and executed somewhere else, without having to create a separate Target File. .PH effectively sets the origin to , but keeps the target address unchanged. When the .EP is encountered, the origin is reset to match the target address. 0800- AD 03 9D 1000 START LDA DATA 0803- 60 1010 RTS 1020 *------------------------------ 1030 .PH $9D00 9D00- A9 08 1040 PATCH LDA /ADDR 9D02- 60 1050 RTS 9D03- 1060 DATA .BS 1 1070 .EP 1080 *------------------------------ 0808- 00 9D 1090 ADDR .DA PATCH SYMBOL TABLE 0808- ADDR 9D03- DATA 9D00- PATCH 0800- START - 4 - -------------------------------------------------------------------------- Notice that the object code column and the symbol table show the code to be in different locations, but if you examine memory you will find all the code starting at $800. 6. We added .DUMMY and .ED directives to start and end a dummy section. A dummy section assembles, but no object code is produced. Dummy sections are useful when specifying data blocks, or when you want to run an assembly for syntax checking, but do not want to generate object code. .DUMMY and .ED are like the DSECT and DEND directives in Apple's Tool Kit Assembler, with the exception that the dummy origin is not automatically set to $0000. Any .OR directives within the dummy section will only be effective within the section; .DUMMY saves the current origin, and .ED restores it. 0800- 34 12 1000 ADDR .DA LABEL 1010 *----------------------------- 1020 .DUMMY 1030 .OR $1234 1234- AD 00 08 1040 LABEL LDA ADDR 1237- 1050 NEXT .BS 1 1060 .ED 1070 *----------------------------- 0802- AD 35 12 1080 GO.ON LDA NEXT SYMBOL TABLE 0800- ADDR 0802- GO.ON 1234- LABEL 1237- NEXT 7. HIDE now performs MERGE prior to HIDE, in case you forgot to do so. This allows a string of "LOAD HIDE LOAD HIDE....LOAD HIDE MERGE" commands to merge a lot of source files together. Fixes to Known Problems: 1. We eliminated the endless loop which occurred when a character greater than "Z" was typed in column 1 as a command. 2. Listings controlled by the .TI directive now properly space at top of each page, and at beginning of symbol table. 3. The .AS and .AT directives now assemble lower case properly. 4. We changed the way the relative branches are assembled, so that "*" is equal to the location of the opcode byte. It used to be the location offset byte, which was nonstandard. However, we still do not recommend you use the "*+nn" or "*-nn" addressing in relative branches: it is a dangerous practice. 5. Pass two errors now emit the proper number of object bytes, so that false range errors are not indicated in an assembly which has undefined labels. - 5 - -------------------------------------------------------------------------- Full Screen Editor Addendum S-C Macro Assembler 1.1 The new version of the S-C Macro Assembler is now availiable. This version has a standard 40 column, Apple lie, VIDEX, and STB 80 column assembler all on the same diskette. The patch addresses in the new Macro Assembler however are all different. The Macro Assember code shown on page 9 of the Screen Editor manual is shifted up by 5 bytes. The EXEC file on page 8 would have the following line changes to accomodate the shift in patch addresses: 1080 D06B:4C E0 F7 1100 F7E8:4C 6F D0 4C 78 D0 AD 88 C0 Note the following addresses change: D066 --> D06B D06A --> D06F D073 --> D078 These changes have already been applied to the current disk file6 "ED l.l", and "ASMED 1.1". New functions added to the Editor. The keyboard for the Apple II Plus is not the same as that used on other computers such as the Apple IIe and the Franklin Ace computers. Some keys chosen for their convenient fingertip location on the Apple II Plus are not so convenient on other keyboards. Therefore the following editor key functions have been defined as duplicates. Franklin & Apple II Plus Apple IIe Function ------------- --------- --------------------- Shift 2 (") @ long scroll back : , horizontal scroll left - . horizontal scroll right Note that the key functions ",." have a nice feature in that the shift functions are "<>1' on all the keyboards. This jogs your memory about thier true function, left and right horizontal scroll. -------------------------------------------------------------------------- New Files on disk: ED 1.1 - An EXEC file to be EXECed from the 1.1 version of the S-C Macro Assembler which is running in the language card. This EXEC file will load the Full Screen Editor into the unused 4K bank of memory on the language card. ASMED 1.1 - An EXEC file which can load the S-C Macro Assembler version 1.1 and the Full Screen Editor into your language card and start the assembler. You should move the file "S-C.ASM.MACRO.D000" from the Assembler diskette to this Editor diskette to be able to use this EXEC file. There 45 a BLOAD command in this EXEC file to load the Assembler, the file names must be made to match. B.DRIVER.AP2E - Apple IIe 80 column video driver. This is the object file used by the SYSGEN program to build an Apple lie Full Screen Editor version. S.DRIVER.AP2E - Apple IIe 80 column board video driver. SYSGEN - This Applesoft program has been updated to allow the new Apple lie driver to be one of the selections on the menu. Note that the Apple IIe driver should only be used with the S-C Macro Assembler version 1.1 for the Apple IIe. The 40 column driver can also be used with the Apple IIe but you must always enter the Editor in 40 column display mode. If you do not have a 80 column card for your Apple IIe then the 40 column driver must be the driver that you use. --------------------------------------------------------------------------