SPASM - Fast, Single-Pass Assembler

 

SPASM is a fast, assembler-interpreter system for System/360/370 Assembler language.  It provides: 

  1. nearly full language compatibility with IBM's Assembler language, 
  2. extensive and detailed diagnostics, 
  3. numerous debugging aids, 
  4. the ability to interpret or execute freely the assembled code (and change modes dynamically), 
  5. easy-to-use I/O macros, 
  6. a batching monitor, 
  7. an extensive user guide, and 
  8. numerous language extensions. 

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:

  1. Tape Description and installation guide
  2. User Guide
  3. Object module for OS version of SCT
  4. Object module for DOS version of SCT
  5. Object module for SPASM functional routines
  6. SPASM macro library
  7. Source code for the SCT
  8. Source code for the functional routines
  9. Test/verification programs
  10. Miscellaneous test programs (for testing re-enterability, etc.)

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:


Return to Site Home Page 


This page was last updated on June 10, 2016.