SPASM - Fast, Single-Pass Assembler
SPASM is a fast, assembler-interpreter system for System/360/370 Assembler language. It provides:
The few restrictions derive from the one-pass load-and-go nature of the assembler.
The system runs in about 75K of memory, and is re-entrant. It is written entirely in
F-level Assembler language. An implementation guide is included in the distribution
tape (and available below in PDF format). The distribution tape also
includes a DOS version.
The version of SPASM was obtained from the SPLA tapes
available at https://www.cbttape.org/spla.htm.
The thirty files were extracted from the SPL603 tape image and used to
reconstruct the ten datasets contained on a HET
format tape image as standard labeled tape files. That tape image is
available for download from this site as spasm.tgz
[MD5: C249968D68C05AC04F024F89F4FF8C42].
The eleven files are all RECFM=FB,LRECL=80,BLKSIZE=3200 and the contents of the
files are:
The following jobstream may be used to print the tape description and installation guide (file #1):
// JOB //TWO EXEC PGM=IEBGENER //SYSPRINT DD SYSOUT=A //SYSIN DD DUMMY //SYSUT1 DD UNIT=TAPE,DISP=(OLD,PASS),VOL=SER=SPASM5,DSNAME=FILE1,LABEL=(1,SL,,IN) //SYSUT2 DD SYSOUT=A
The User Guide (file #2 on the tape) is available in a PDF: SPASM User Guide.
The following jobstream may be used to link-edit the SPASM load module:
// JOB (SYS),'INSTALL SPASM',CLASS=S,MSGCLASS=X //THREE EXEC PGM=IEBGENER //SYSIN DD DUMMY //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=FILE3,DISP=(OLD,PASS),UNIT=TAPE,VOL=SER=SPASM5, // LABEL=(3,SL,,IN) //SYSUT2 DD DSN=&FILE3,DISP=(NEW,PASS),UNIT=SYSDA, // SPACE=(80,(160,20)), // DCB=(RECFM=F,LRECL=80,BLKSIZE=80) //FIVE EXEC PGM=IEBGENER //SYSIN DD DUMMY //SYSPRINT DD SYSOUT=* //SYSUT1 DD DSN=FILE5,DISP=(OLD,PASS),UNIT=TAPE,VOL=SER=SPASM5, // LABEL=(5,SL,,IN) //SYSUT2 DD DSN=&FILE5,DISP=(NEW,PASS),UNIT=SYSDA, // SPACE=(80,(1120,20)), // DCB=(RECFM=F,LRECL=80,BLKSIZE=80) //LINK EXEC LKED,PARM.LKED='LIST,MAP,NCAL' //LKED.SYSLIN DD DSN=&FILE3,DISP=(OLD,PASS) // DD DSN=&FILE5,DISP=(OLD,PASS) // DD * ENTRY SPASEXEC NAME SPASM(R) //LKED.SYSLMOD DD DSN=SYS2.LINKLIB,DISP=SHR <== TARGET LIBRARY //
Note that the load module will be placed in SYS2.LINKLIB. The Link-Editor will receive a return code 0004 because the external symbol SPATCHES will be unresolved; this is expected and normal.
The following jobstream may be used to run the suite of test/verification programs (file #9 on the tape):
// JOB //GO EXEC PGM=SPASM //SYSPRINT DD SYSOUT=A //SYSLIB DD DISP=SHR,DSN=SYS1.MACLIB //SYSIN DD DSNAME=FILE9,UNIT=TAPE,VOLUME=SER=SPASM5,LABEL=(9,SL,,IN),DISP=(OLD,KEEP)
I hope that you have found my instructions useful. If you have questions that I can answer to help expand upon the information I have included here, please don't hesitate to send them to me: