S-C Macro Assembler 3.0

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.


Contents
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

Tech Note describing changes from 2.0 to 3.0

Tech Note - S-C Macro Assembler 3.0

Source Code Files

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.

"General" Assembler

80-column Display Drivers

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.

"Particular" Assembler: 6502, 65C02, R65C02, 65802, 65816

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.

S-C ProDOS Interface

All of the above depends on having another package, which I called "S-C ProDOS Interface", in the SCI folder.

Another "Particular" Assembler: Motorola 6811

My plan, as I faintly remember it, was to upgrade all of the cross assemblers to work as plug-ins to the "General" assembler. I did convert the Motorola 6811 cross assembler, although it has not been thoroughly tested.

Building Instructions

To build a working version:

  1. All of the above has to be assembled. (Choose one of the "particular" assemblers.)
  2. BLOAD the various binary files into memory at specific locations, and
  3. BSAVE the result.
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 tocontents
-------------------- ----------------------------------------
ASM1/SCASM 2000-21FFnot movedLOADER
2200-49FF8000-A7FFS-C MACRO ASSEMBLER
4A00-4BFFA800-A9FF40-col driver
-------------------- ----------------------------------------
SCI/B.SCI 4B00-5FFFAA00-BEFFS-C ProDOS Interface
-------------------- ----------------------------------------
ASM1/B.IO.TWO.E 6000-60FFA800-A8FF//E 80-COLUMN DRIVER
ASM1/B.IO.STB80 6100-61FFA800-A8FFSTB80 DRIVER
ASM1/B.IO.VIDEX 6200-63FFA800-A9FFVIDEX VIDEOTERM DRIVER
ASM1/B.IO.ULTRA 6400-65FFA800-A9FFVIDEX ULTRATERM DRIVER
-------------------- ----------------------------------------
ASM65816/SCASM.65816 6600-71FFD400-DFFFASM PARTICULAR