The S-C Macro Assembler was a product of S-C Software Corporation, for the Apple II family of computers. The first version, called simply "S-C Assembler ][", was released in 1978. See history here. After a long successful run, S-C Software closed up shop in the summer of 1988. The source code presented here was for version 3.0 of the S-C Macro Assembler, which was never released.
Tech Note for 3.0 |
Source Code Files |
• "General" Assembler |
• 80-column Display Drivers |
• Assembler: 6502, ..., 65816 |
• S-C ProDOS Interface |
• Assembler: Motorola 6811 |
Building Instructions |
This is the source code for a never-released version which (according to the file-modification dates) I was working on as late as November 14, 1990. I am pretty sure that I was actually using this version both to assemble itself, and to work on projects for Applied Engineering (my employer at the time).
The source code for this version of S-C Macro Assembler was in three folders (on an Applied Engineering Vulcan Hard Drive): ASM1, ASM2, ASM65816, and SCI. It consisted of many separate files.
A control file in ASM1, named X.ACF, contains .INB operators to include all of the source files in the proper order for the main part of the assembler. This part was "general", in that it could be used with any of a number of "particular" assemblers for various microprocessors.
A control file in ASM65816 assembles the "particular" assembler for the chips used in the Apple II family: 6502, 65C02, 65802, and 65816.
A control file in SCI assembles the S-C ProDOS Interface.
Optional 80-column drivers may be assembled also.
After assembling all the parts mentioned above, I would BLOAD the various parts and BSAVE a packaged BRUN-able file. This will be explained more later.
These additional source files are needed to handle 80-column displays. Each of the files in ASM1/ starting with "IO." should be assembled separately, without a control file.
These additional source files are needed to configure the assembler to assemble for various versions of the 6502 family (6502, 65C02, R65C02, 65802, 65816) and for Steve Wozniak's Sweet-16 interpreter. There should be a control file with .INB's for these, and with a .TF for the output, but I cannot find it.
All of the above depends on having another package, which I called "S-C ProDOS Interface", in the SCI folder.
To build a working version:
BLOAD ASM1/SCASM BLOAD SCI/B.SCI BLOAD ASM1/B.IO.TWO.E BLOAD ASM1/B.IO.STB80 BLOAD ASM1/B.IO.VIDEX BLOAD ASM1/B.IO.ULTRA BLOAD ASM65816/SCASM.65816 BSAVE SCASM.SYSTEM,TSYS,A$2000,L$5200
When SCASM.SYSTEM is BRUN, it will load at $2000. The SC.LOADER module will then proceed to select an 80-column driver, and move the various parts to the correct position in memory. For example, the "particular" code assembled from ASM65816 will be move up to $D400 in the Language Card.
binary file | loads at | moved to | contents |
---|---|---|---|
-------------------- | --------- | --------- | ---------------------- |
ASM1/SCASM | 2000-21FF | not moved | LOADER |
2200-49FF | 8000-A7FF | S-C MACRO ASSEMBLER | |
4A00-4BFF | A800-A9FF | 40-col driver | |
-------------------- | --------- | --------- | ---------------------- |
SCI/B.SCI | 4B00-5FFF | AA00-BEFF | S-C ProDOS Interface |
-------------------- | --------- | --------- | ---------------------- |
ASM1/B.IO.TWO.E | 6000-60FF | A800-A8FF | //E 80-COLUMN DRIVER |
ASM1/B.IO.STB80 | 6100-61FF | A800-A8FF | STB80 DRIVER |
ASM1/B.IO.VIDEX | 6200-63FF | A800-A9FF | VIDEX VIDEOTERM DRIVER |
ASM1/B.IO.ULTRA | 6400-65FF | A800-A9FF | VIDEX ULTRATERM DRIVER |
-------------------- | --------- | --------- | ---------------------- |
ASM65816/SCASM.65816 | 6600-71FF | D400-DFFF | ASM PARTICULAR |