--- /dev/null
+* F4$DUM - DEC 10 2006 - VERSION 1
+*
+* FORTRAN COMPILER DUMMY DEVICE DRIVERS AND DATA POOL INITIALISATION
+*
+* THIS MODULE MUST BE THE LAST ONE BEING LINKED TO THE F4 COMPILER.
+* THESE ROUTINES ARE CALLED BY F4-IOS AND THE INITIALISATION ROUTINE
+* IS OVERWRITTEN BY THE DATA POOL AFTER INITIALISATION.
+*
+* HONEYWELL X16 16 BIT COMPUTER SOFTWARE
+*
+* PROGRAM LENGTH: 48 WORDS
+*
+* THIS SOURCE IS RECREATED FROM THE EXISTING SLST FILE:
+* - SLST-FRTN.IMG (WHICH ORIGINATES FROM HONEYWELL)
+*
+* THE SOURCE IS RECREATED BY: THEO ENGEL (THEO.ENGEL@HETNET.NL)
+*
+ SUBR F4$INI,SIZE
+ SUBR F4$DUM,DUM
+ SUBR O$LH
+ SUBR O$ME
+*
+ SUBR I$AA
+ SUBR I$CA
+ SUBR I$PA
+ SUBR I$MA
+ SUBR C$6TO8,C$68
+*
+ SUBR O$PB
+ SUBR O$AB
+ SUBR O$MB
+*
+ SUBR O$LA
+ SUBR C$8TO6,C$86
+ SUBR O$MA
+*
+ REL
+*
+DUM EQU *
+ DAC *-*
+ JMP* *-1
+*
+O$LH EQU *
+O$ME EQU *
+ DAC *-*
+ IRS *-1
+ JMP* *-2
+*
+* SOURCE INPUT
+I$AA EQU *
+I$CA EQU *
+I$PA EQU *
+I$MA EQU *
+C$68 EQU *
+ DAC *-* DUMMY SOURCE INPUT
+ JMP* SI
+*
+* OBJECT OUTPUT
+O$PB EQU *
+O$AB EQU *
+O$MB EQU *
+O$MS EQU *
+ DAC *-* DUMMY OBJECT OUTPUT
+ JMP* OO
+*
+* LISTING OUTPUT
+O$LA EQU *
+C$86 EQU *
+O$MA EQU *
+ DAC *-* DUMMY LISTING OUTPUT
+ JMP* LL
+*
+* JUMP TABLE TO APPROPRIATE DUMMY DRIVER IN F4-IOS
+SI XAC F4$DUI POINTER TO DUMMY SOURCE INPUT DEVICE DRIVER
+OO XAC F4$DUO POINTER TO DUMMY OBJECT OUTPUT DEVICE DRIVER
+LL XAC F4$DUS POINTER TO DUMMY LISTING OUTPUT DEVICE DRIVER
+*
+* PURPOSE OF INI ROUTINE IS TWOFOLD:
+* - INITIALIZE THE MEMORY BOUNDARIES BEING USED BY THE F4 COMPILER CODE
+* AND I/O DRIVERS TO DETERMINE THE SPACE FOR THE DATA POOL
+* - INITIALIZE AND LINK THE DATA POOL TO THE F4 COMPILER VIA SECTOR 0
+*
+DP EQU * START OF DATA POOL
+*
+SIZE DAC *-*
+ LDA SIZE GET RETURN ADDRESS
+ SUB N1 MINUS 1
+ STA SIZE = CALLING ADDRESS
+ LDA NOP
+ STA* SIZE REPLACE CALL BY NOP
+NEXT LDA MTOP MEMORY BOUNDARY
+ SUB CTOP MINUS CODE LENGTH
+ SUB O103 ='103
+ STA LO SAVE DATAPOOL SIZE
+ LDA* MTOP CONTENT MEM BOUNDARY
+ IAB => B = CONTENT MEM BOUNDARY
+ LDA PAT PATTERN
+ STA* MTOP STORE PATTERN
+ LDA* MTOP AND TRY TO GET IT BACK
+ SNZ
+ JMP* SIZE MEMORY SIZE = MTOP
+ IAB
+ STA* MTOP RESTORE CONTENT MEM BOUNDARY
+ LDA MTOP
+ ADD M4K INCREASE MEM BOUNDARY WITH 4K
+ STA MTOP
+ ERA UPP 16K?/20K?
+ SZE
+ JMP NEXT NO
+*
+* THE ADAPTION PROCESS STOPS HERE WHEN MTOP = 16K
+* THE DATA POOL SIZE (LO) IS ADAPTED THEN FOR THE MTOP = 12K
+* FOR A 16K MACHINE THE UPPER 4K IS NOT USED FOR THE DATAPOOL.
+* TO USE THAT UPPER 4K, THE VALUE OF 'UPP' HAS TO CHANCE TO '50000
+*
+ JMP* SIZE YES; STOP IF MTOP = UPP
+*
+* WORKSPACE
+*
+MTOP OCT 20000 MINIMUM MEMORY TOP (8K INIT)
+NOP NOP NOP OPERATION
+CTOP DAC DP CODE TOP
+UPP OCT 40000 16K (20K => '50000)
+M4K OCT 10000 4K
+PAT OCT 12525 MEMORY PATTREN
+O103 OCT 103 ='103
+N1 OCT 1
+*
+*
+* THE FOLLOWING TABLE LINKS THE DATA POOL VIA SECTOR 0 TO THE F4 COMPILER
+*
+*
+ ABS
+ ORG '100
+ DAC DP-4,1 (100)
+ DAC DP-3,1 (101)
+ DAC DP-2,1 (102)
+ DAC DP-1,1 (103)
+ DAC DP,1 (104)
+ DAC DP+1,1 (105)
+ DAC DP+2,1 (106)
+ DAC DP+3,1 (107)
+ DAC DP+4,1 (110)
+ DAC DP+5,1 (111)
+ DAC DP+6,1 (112)
+LO DAC DP+7 (113) DATA POOL SIZE
+*
+ END
--- /dev/null
+* F4$IOS-B - DEC 12 2006 - VERSION 1
+*
+* FORTRAN COMPILER IO SELECTOR
+*
+* WHEN THE COMPILER IS STARTED, REGISTER A SPECIFIES THE DEVICES
+* TO BE USED FOR SOURCE INPUT, OBJECT OUTPUT AND FOR LISTING OUTPUT.
+* THE IOS SELECTOR HONORS THIS SELECTION BY ACTIVATING THE SELECTED
+* DEVICES FOR THESE TASKS.
+*
+* THE FOLOWING OPTIONS ARE SUPPORTED:
+*
+* A[ 8-10] SOURCE INPUT DEVICE (1=TTY 2=CR 3=HSR 4=MAGTAPE-UNIT 1)
+* A[11-13] LISTING DEVICE (0=SUP 1=TTY 2=LP 4=MAGTAPE-UNIT 2)
+* A[14-16] OBJECT OUTPUT DEVICE (0=SUP 1=PTP 2=TTY 4=MAGTAPE-UNIT 2)
+* THE LISTED DEVICE ALLOCATION IS SET BY F4IOS
+* THIS VERSION OF F4IOS DOES NOT, WITHOUT MODIFICATION, SUPPORT OTHER
+* DEVICES FOR THE SPECIFIED TASKS.
+* THIS ALSO MEANS THAT TAPE UNIT 2 CAN EITHER BE USED FOR
+* OBJECT OUTPUT OR FOR LISTING OUTPUT
+*
+* IN CASE NO DEVICE SELECTION IS SPECIFIED IN REGISTER A, A DEFAULT
+* SELECTION IS MADE BY F4IOS:
+* - SOURCE INPUT 3=HSR
+* - LISTING OUTPUT 1=TTY
+* - OBJECT OUTPUT 1=PTP
+*
+* F4IOS LINKS, TO SUPPORT THE SPECIFIED IO, THE DRIVERS FOR THESE DEVICES.
+* HOWEVER, IF FOR INSTANCE NO MAGTAPE IS AVAILABLE IN A PARTICULAR
+* INSTALLATION, THE MAGTAPE DRIVER CAN BE REPLACED BY A DUMMY DRIVER.
+* THE COMPILER FOOTPRINT IN MEMORY BECOMES SMALLER THEN. DO NOT LINK
+* THE MAGTAPE DRIVER IN THAT CASE. THE F4$DUM MODULE RESOLVES THE CALLS
+* TO THE MAGTAPE DRIVER AND MUST BE THAT LAST MODULE TO BE LINKED.
+*
+* HONEYWELL X16 16 BIT COMPUTER SOFTWARE
+*
+* PROGRAM LENGTH: 415 WORDS
+*
+* THIS SOURCE IS RECREATED FROM THE EXISTING SLST FILE:
+* - SLST-FRTN.IMG (WHICH ORIGINATES FROM HONEYWELL)
+*
+* THE SOURCE IS RECREATED BY: THEO ENGEL (THEO.ENGEL@HETNET.NL)
+*
+* SUBR F4$INT,F4IN IO INITIALISATION ROUTINE
+* SUBR F4$IN,F4SI GENERAL SOURCE INPUT ROUTINE
+* SUBR F4$OUT,F4OO GENERAL OBJECT OUTPUT ROUTINE
+* SUBR F4$SYM,F4LO GENERAL LISTING OUTPUT ROUTINE
+* SUBR F4$END,F4EN END COMPILATION
+*
+* SUBR F4$DUI,IL1 DUMMY SOURCE INPUT DRIVER
+* SUBR F4$DUO,OL4 DUMMY OBJECT OUTPUT DRIVER
+* SUBR F4$DUS,LL9 DUMMY LISTING OUTPUT DRIVER
+*
+ SUBR F4$INT,F4IN
+ SUBR F4$IN,F4SI
+ SUBR F4$OUT,F4OO
+ SUBR F4$SYM,F4LO
+ SUBR F4$END,F4EN
+*
+ SUBR F4$DUI,IL1
+ SUBR F4$DUO,OL4
+ SUBR F4$DUS,LL9
+ REL
+*
+*******************************************************************
+* F4$INT -- INIT COMPILER DATA POOL AND STORE IO DEVICE SELECTION *
+*******************************************************************
+*
+F4IN DAC *-*
+ JST SDEV SET THE SELECTED DEVICES
+ JST PUTR PUNCH LEADER IN CASE PTP IS OBJECT DEVICE
+ CALL F4$INI SET THE SIZE OF THE DATA POOL
+ CRA
+ STA SCNT SOURCE INPUT RECORD COUNTER/LINENUMBER = 0
+ IRS INFL SET 1ST-TIME-CALL FLAG FOR LISTING DRIVER
+ JMP* F4IN
+*
+**************************************
+* GENERAL SOURCE INPUT ROUTINE *
+* CALLING SEQUENCE: *
+* CALL F4$IN *
+* DAC SOURCEBUFFER *
+**************************************
+*
+F4SI DAC *-* SOURCE INPUT DRIVER
+ LDA* F4SI GET SOURCE BUFFER ADDRESS
+ STA IB1 AND STORE
+ STA IB2
+ STA IB3
+ STA IB4
+ STA IB5
+ STA IB6
+IL6 LDA DSRC LOAD SELECTED SOURCE DEVICE
+ JST SWCH JMP SWITCH
+ JMP IL1 0 NON
+ JMP IL2 1 TTY
+ JMP IL3 2 CR
+ JMP IL4 3 HSR
+ JMP IL5 4 MAG TAPE
+ JMP IL1 5 NON
+ JMP IL1 6 NON
+* DUMMY SOURCE INPUT DEVICE DRIVER: SELECT PROPER DEVICE
+IL1 LDA MO5 7 NON =-5 MESSAGE LENGTH, 5 WORDS LONG
+ JST PRBF
+ DAC MDEV MESSAGE: DEVICE? (NO DRIVER FOR REQUESTED DEVICE)
+ JST STOP SET DEFAULT OR NEW DEVICE SELECTION
+ JMP IL6
+*
+IL2 CALL I$AA TTY = SOURCE INPUT DEVICE
+IB1 DAC *-* SOURCE BUFFER ADDRESS
+ JMP IL2 EOM/EOF RETURN
+ JMP IL7 NORMAL RETURN
+IL3 CALL I$CA CR = SOURCE INPUT DEVICE
+IB2 DAC *-* SOURCE BUFFER ADDRESS
+ JMP IL3 EOM/EOF RETURN
+ JMP IL7 NORMAL RETURN
+IL4 CALL I$PA HSR = SOURCE INPUT DEVICE
+IB3 DAC *-* SOURCE BUFFER ADDRESS
+ JMP IL4
+ JMP IL7
+IL5 CALL I$MA MT = SOURCE INPUT DEVICE
+IB4 DAC *-* SOURCE BUFFER ADDRESS
+ OCT 50 BUFFER LENGTH (WORDS)
+ OCT 1 TAPE UNIT 1 = SOURCE DECK
+ JMP ERR0 RECORD NOT READABLE RETURN
+ JMP ERR1 END OF TAPE RETURN
+ JMP IL5 END OF FILE RETURN; READ NEXT FILE
+ CALL C$6TO8 NORMAL RETURN; CONVERT RECORD TO ASCII
+IB5 DAC *-* SOURCE BUFFER ADDRESS
+ OCT 50 BUFFER LENGTH
+IL7 LDA SCNT SOURCE RECORD COUNTER
+ ADD N1 =1
+ SSP
+ STA SCNT SOURCE RECORD COUNTER
+ IRS F4SI SET RETURN ADDRESS
+ JMP* F4SI
+*
+**************************************
+* GENERAL OBJECT OUTPUT ROUTINE *
+* CALLING SEQUENCE: *
+* A = OBJECT BUFFER ADDRESS *
+* X = - BUFFER LENGTH (WORDS) *
+* CALL F4$OUT *
+**************************************
+*
+F4OO DAC *-* OBJECT OUTPUT DRIVER
+ STA OSRC EXTERNAL OBJECT BUFFER ADDRESS
+ LDA 0 - BUFFER LENGTH (WORDS)
+ TCA
+ STA OBFL + BUFFER LENGTH (WORDS)
+ STA MTBL
+ ADD OPTR POINTER TO OUTPUT BUFFER
+ ADD IFLG INDEX FLAG
+ STA ODES INDEXED DESTINATION
+OL1 LDA* OSRC MOVE OBJECT TO INTERNAL OUTPUT BUFFER
+ STA* ODES
+ IRS 0
+ JMP OL1
+OL6 LDA DOBJ
+ JST SWCH JMP SWITCH
+ JMP* F4OO 0 SUPPRESS OBJECT OUTPUT
+ JMP OL2 1 PTP
+ JMP OL3 2 TTY
+ JMP OL4 3 NON
+ JMP OL5 4 MAG TAPE
+ JMP OL4 5 NON
+ JMP OL4 6 NON
+* DUMMY OBJECT OUTPUT DEVICE DRIVER: SELECT PROPER DEVICE
+OL4 LDA MO5 7 NON =-5
+ JST PRBF
+ DAC MDEV MESSAGE: DEVICE?
+ JST STOP SET DEFAULT OR NEW DEVICE SELECTION
+ JST PUTR PUNCH TRAILER IN CASE PTP IS SELECTED
+ JMP OL6
+*
+OL2 CALL O$PB PTP = OBJECT OUTPUT DEVICE
+ DAC OBUF OUTPUT BUFFER ADDRESS
+ JMP* F4OO EXIT
+OL3 CALL O$AB TTY = OBJECT OUTPUT DEVICE
+ DAC OBUF OUTPUT BUFFER ADDRESS
+ JMP* F4OO EXIT
+OL5 CALL O$MB MAG TAPE = OBJECT OUTPUT DEVICE
+ DAC OBUF+1 BUFFER ADDRESS
+MTBL OCT 0 BUFFER LENGTH (WORDS)
+ OCT 2 TAPE UNIT 2 = OBJECT DECK
+ JMP ERR1 END OF TAPE RETURN
+ JMP* F4OO EXIT
+*
+**************************************
+* GENERAL LISTING OUTPUT ROUTINE *
+* CALLING SEQUENCE: *
+* CALL F4$SYM *
+* DAC LINEBUFFER *
+**************************************
+*
+F4LO DAC *-* LISTING OUTPUT DRIVER
+ LDA SPSP <SPACE><SPACE>
+ STA OBUF SET LINENUMBER FIELD
+ STA OBUF+1 (6 CHARS) TO SPACES
+ STA OBUF+2
+ LDA* F4LO EXTERNAL BUFFER ADDRESS
+ ADD ILPB +INDEX / LENGTH
+ STA OSRC INDEXED EXTERNAL BUFFER ADDRESS
+ LDA MO50 ='-50
+ STA 0 X = INDEX INTO THE LINE BUFFER
+LL1 LDA* OSRC MOVE LINE TO INTERNAL DRIVER BUFFER
+ STA LBUF,1
+ IRS 0
+ JMP LL1
+LL10 LDA INFL NON-ZERO WITH 1ST CALL
+ SNZ
+ JMP LL2 EQUAL 0
+* 1ST CALL OF LISTING DRIVER
+ LDA* F4LO EXTERNAL BUFFER ADDRESS
+ ERA IB6 EQUAL TO SOURCE BUFFER ADDRESS??
+ SZE
+ JMP LEX NOT EQUAL; EXIT
+ LDA DLST YES; GET REQUIRED LISTING DEVICE
+ ERA N2 EQUAL 2 ? (LP)
+ SZE
+ JMP LL2 NOT LP
+ CALL O$LH YES, LP. INIT THE HEADER
+ DAC OBUF
+LL2 LDA* F4LO EXTERNAL BUFFER ADDRESS
+ ERA IB6 EQUAL TO SOURCE BUFFER ADDRESS??
+ SZE
+ JMP LL3 NO
+ LDA TPTR YES, EQUAL TO SOURCE BUFFER
+ STA TEMP TEMP = PTR TO DEC CONV TAB
+ LDA SCNT GET SOURCE LINE NUMBER
+ STA NUMB LINENUMBER TO PRINT
+* WITH ZERO BEING TRUE, LEADING ZERO'S OF THE LINENUMBER ARE SUPPRESSED
+ IRS ZERO LEADING ZERO FLAG IS TRUE (SET TO FALSE WITH 1ST NONZERO)
+ JST CDIG DIGIT 1
+ JST CDIG DIGIT 2
+ JST CDIG DIGIT 3
+ JST CDIG DIGIT 4
+ JST CDIG DIGIT 5
+LL3 LDA DLST WHICH DRIVER TO OUTPUT LISTING?
+ JST SWCH JMP SWITCH
+ JMP LL4 0 SUPPRESS LISTING
+ JMP LL5 1 TTY
+ JMP LL6 2 LP
+ JMP LL9 3 NON
+ JMP LL8 4 MAG TAPE
+ JMP LL9 5 NON
+ JMP LL9 6 NON
+* DUMMY LISTING OUTPUT DEVICE DRIVER: SELECT PROPER DEVICE
+LL9 LDA MO5 7 NON =-5
+ JST PRBF
+ DAC MDEV MESSAGE: DEVICE?
+ JST STOP SET DEFAULT OR NEW DEVICE SELECTION
+ JMP LL10
+*
+LL5 LDA O43 TTY = LISTING OUTPUT DEVICE (35 WORDS)
+LL13 STA 0 REMOVE TRAILING BLANKS
+ LDA OBUF,1
+ ERA SPSP
+ SZE
+ JMP LL11
+ LDA 0
+ SNZ
+ JMP LL12
+ SUB N1
+ JMP LL13
+LL11 IRS 0
+ LDA 0
+ TCA A = - LENGTH (IN WORDS) OF THE LINE TO PRINT
+LL12 JST PRBF PRINT THE LINE
+ DAC OBUF
+ JMP LL4
+LL6 CALL O$LA LP = LISTING OUTPUT DEVICE
+ DAC OBUF OUTPUT BUFFER (60 WORDS)
+ JMP LL4
+LL8 CALL C$8TO6 MAG TAPE = LISTING OUTPUT DEVICE (UNIT 2)
+ DAC OBUF OUTPUT BUFFER
+ OCT 50 BUFFER LENGTH (WORDS)
+ CALL O$MA
+ DAC OBUF OUTPUT BUFFER
+ OCT 50 BUFFER LENGTH (WORDS)
+ OCT 2 TAPE UNIT 2 = OBJECT DECK
+ JMP ERR1 EOT RETURN
+LL4 CRA NORMAL RETURN
+ STA INFL RESET 1ST-TIME-CALL FLAG OF THE LISTING DRIVER
+LEX IRS F4LO SET RETURN ADDRESS
+ JMP* F4LO
+*
+* CONVERT 1 DIGIT FOR PRINTING A 5 DIGIT LINENUMBER
+* USED BY THE OUTPUT LISTING DRIVER
+CDIG DAC *-*
+ CRA
+ STA 0 X=0 (COUNT=0)
+ LDA NUMB NUMBER (OR RESIDUAL OF NUMBER) BEING CONVERTED
+CV1 SUB* TEMP TEMP = POINTER INTO CONVERSION TABLE
+ SPL
+ JMP CV2 NEGATIVE
+ STA NUMB STILL POSITIVE
+ IRS 0 COUNT + 1
+ JMP CV1
+CV2 IRS TEMP TEMP = POINTER TO NEXT ITEM IN CONVERSION TABLE
+ LDA TPTR POINTER TO TABLE
+ SUB TEMP MINUS THE CURRENT POINTER TO THE TABLE
+ STA T1
+ ADD N1 +1
+ TCA
+ LGR 1 = INDEX IN BUFFER
+ IMA 0 A = COUNT
+ SNZ
+ JMP CV3 COUNT = 0 => DIGIT WOULD BE 0
+CV4 ADD O20 ='20 (TO MAKE ASCII DIGIT OF SPACE)
+CV5 ALR '10
+ IRS T1
+ JMP CV5
+ ADD OBUF,1
+ STA OBUF,1
+ CRA
+ STA ZERO RESET THE LEADING ZERO FLAG
+ JMP* CDIG
+CV3 LDA ZERO NONZERO IF STILL LEADING ZERO'S
+ SZE
+ JMP* CDIG NONZERO, SO STILL A LEADING ZERO
+ JMP CV4 ZERO, SO NOT A LEADING ZERO, SO OUTPUT
+*
+**************************************
+* STOP COMPILATION: F4$END *
+**************************************
+*
+F4EN DAC *-*
+ LDA DOBJ OBJECT DEVICE?
+ JST PUTR PUNCH TRAILER IN CASE OF PTP
+ LDA DOBJ
+ ERA N1 PTP?
+ SNZ
+ OCP '102 YES; PTP OFF
+ ERA N5 OBJECT DEVICE MAGTAPE?
+ SNZ
+ JMP LE1 YES
+ LDA DLST LISTING DEVICE MAGTAPE?
+ ERA N4
+ SZE
+ JMP LE2 NO
+LE1 CALL O$ME WRITE EOF ON UNIT 2 (OBJECT OR LISTING DEVICE)
+ OCT 2 UNIT 2
+LE2 LDA MO6 ='-6
+ JST PRBF PRINT EOJ MESSGE
+ DAC MEOJ
+ JST STOP STOP
+ LDA DEFT
+ JMP* F4EN AND RESTART
+MEOJ OCT 106612 END OF JOB MESSAGE
+ BCI 1,EN
+ BCI 1,D
+ BCI 1,OF
+ BCI 1, J
+ BCI 1,OB
+*
+**************************************
+* STOP AND (RE)LOAD DEVICE SELECTION *
+**************************************
+* CALLED BY SOURCE, OBJECT AND LISTING (DUMMY) DRIVERS OF F4-IOS
+* CALLED BY F4$END (WHICH IS ALSO PART OF F4-IOS)
+*
+STOP DAC *-*
+ LDA DEFT LOAD DEFAULT DEVICE SETTINGS
+ HLT STOP AND POSSIBLY ADAPT THE SETTING
+ JST SDEV SET THE NEW DEVICE SELECTION
+ JMP* STOP
+*
+**************************************************************
+* SAVE DEVICE SELECTION AS DEFINED DURING COMPILER (RE)START *
+**************************************************************
+* DEVICE SELECTION AS SPECIFIED IN REG-A (SOURCE, LIST, OBJECT), OR DEFAULT
+*
+SDEV DAC *-* SET SELECTED DEVICES
+ SZE
+ STA DEFT STORE REQUESTED DEVICES
+ LDA DEFT LOAD DEFAULT IF NOTHING SPECIFIED,
+ LRL 6
+ ANA M7
+ STA DSRC SOURCE DEVICE
+ CRA
+ LLL 3
+ STA DLST LISTING DEVICE
+ CRA
+ LLL 3
+ STA DOBJ OBJECT DEVICE
+ JMP* SDEV
+*
+******************************************************************
+* PUNCH LEADER/TRAILER IN CASE PTP IS THE SELECTED OBJECT DEVICE *
+******************************************************************
+* A[14-16] = SELECTED OBJECT DEVICE
+*
+PUTR DAC *-*
+ ERA N1 =1 PUNCHER SELECTED?
+ SNZ
+ CALL O$PLDR YES; PUNCH LEADER/TRAILER
+ JMP* PUTR
+*
+**************************************
+* PRINT MESSAGE FROM BUFFER ON TTY *
+**************************************
+* CALLING SEQUENCE:
+* JST PRBF A = - MESSAGE LENGTH IN WORDS
+* DAC MESSAGE
+*
+PRBF DAC *-* PRINT BUFFER
+ STA 0 X = A = - BUFFER LENGTH
+ LDA* PRBF BUFFER ADDRESS
+ IRS PRBF SET RETURN ADDRESS
+ STA BA STORE BUFFER ADDRESS
+ SKS '104 TTY READY?
+ JMP *-1
+ OCP '104 SET OUTPUT MODE
+ LDA CRLF
+ JST PRA PRINT 2 CHARS IN A
+ LDA 0
+ SNZ
+ JMP* PRBF
+P1 LDA* BA GET 2 CHARS
+ JST PRA PRINT 2 CHARS IN A
+ IRS BA
+ IRS 0
+ JMP P1
+ JMP* PRBF
+*
+**************************************
+* PRINT 2 CHARS FROM REG-A ON TTY *
+**************************************
+*
+PRA DAC *-*
+ LRL '10
+ OTA 4
+ JMP *-1
+ LLL '10
+ OTA 4
+ JMP *-1
+ JMP* PRA
+*
+**************************************
+* SWITCH VIA JUMP-TABLE *
+**************************************
+* CALLING SEQUENCE:
+* LDA INDEX INTO JUMP-TABLE
+* JST SWCH
+* JMP -- JUMP-TABLE ENTRY 0 (INDEX 0)
+* JMP -- JUMP-TABLE ENTRY 1 (INDEX 1)
+* ETC
+*
+SWCH DAC *-* SWITCH
+ ADD SWCH
+ STA SWCH
+ JMP* SWCH
+*
+**************************************
+* ERROR HANDLING ROUTINES *
+**************************************
+*
+STRT EQU '1000 COMPILER START ADDRESS
+ERR0 LDA MO2 =-2
+ JST PRBF
+ DAC MUR MESSAGE: UR (RECORD UNREADABLE)
+ JMP ERR2
+ERR1 LDA MO3 =-3
+ JST PRBF
+ DAC MEOT MESSAGE: EOT (END OF TAPE)
+ERR2 JST STOP
+ LDA DEFT LOAD DEVICE SETTINGS (REG-A)
+ JMP STRT RESTART COMPILATION
+*
+**************************************
+* F4-IOS DATA AREA *
+**************************************
+*
+DEFT OCT 311 DEFAULT SELECTION OF IO DEVICES (I 3=HSR; L 1=TTY; O 1=PTP)
+* DECIMAL CONVERION TABLE (USER FOR PRINTING NUMBERS)
+DTAB OCT 23420 =10000
+ OCT 1750 =1000
+ OCT 144 =100
+ OCT 12 =10
+ OCT 1 =1
+DSRC OCT 0 SOURCE INPUT DEVICE AS SPECIFIED DURING START
+DLST OCT 0 LISTING DEVICE AS SPECIFIED DURING START
+DOBJ OCT 0 OBJECT OUTPUT DEVICE AS SPECIFIED DURING START
+IB6 OCT 0 SOURCE BUFFER ADDRESS
+SCNT OCT 0 SOURCE RECORD COUNTER
+INFL OCT 0 FLAG LISTING DRIVER (NONZERO WITH 1ST-TIME-CALL)
+OSRC OCT 0 POINTER TO EXTERNAL OBJECT BUFFER
+BA EQU * BUFFER ADDRESS
+TEMP EQU * TEMP POINTER TO DECIMAL CONVERSION TABLE
+ODES OCT 0 INDEXED POINTER TO INTERNAL OBJECT BUFFER
+NUMB OCT 0 TEMP STORAGE FOR LINENUMBER TO CONVERT/PRINT
+ZERO OCT 0 SET TO 0 WITH 1ST NONZERO DIGIT IN LINENUMBER
+T1 OCT 0
+OPTR DAC OBUF POINTER TO OUTPUT BUFFER
+TPTR DAC DTAB POINTER TO DECIMAL CONVERSION TABLE
+*
+OBFL EQU * OUTPUT BUFFER LENGTH FOR BINARY OUTPUT (WORDS)
+OBUF OCT 4 OUTPUT BUFFER (60 WORDS; MUST NOT EXCEED 60 WORDS)
+ OCT 300
+ OCT 0
+ OCT 2
+ OCT 302
+ BCI 3,
+ BCI 3,EOB
+ BCI 3,000300
+ BCI 1,
+ BCI 3,000000
+ BCI 1,
+ BCI 3,000002
+ BCI 3,
+ BCI 3,
+ BCI 3,
+ BCI 3,
+ BCI 3,
+ BCI 3,
+ BCI 3,
+LBUF BCI 3, END OF LISTING BUFFER
+ BCI 3,
+ BCI 3,
+ BCI 3,
+ BCI 3,
+ BCI 2,
+*
+CRLF EQU *
+* MESSAGE: DRIVER? (NO DEVICE DRIVER FOR REQUESTED DEVICE) 5 WORDS LONG
+MDEV OCT 106612 MESSAGE: DEVICE?
+ BCI 1,DE
+ BCI 1,VI
+ BCI 1,CE
+ BCI 1,?
+*
+MEOT OCT 106612 MESSAGE: EOT (END OF TAPE)
+ BCI 1,EO
+ BCI 1,T
+MUR OCT 106612 MESSAGE: UR (UNREADABLE RECORD)
+ BCI 1,UR
+MO3 OCT 177775
+MO2 OCT 177776
+M7 OCT 7
+MO6 OCT 177772
+N4 OCT 4
+N5 OCT 5
+O20 OCT 20
+O43 OCT 43
+N2 OCT 2
+MO50 OCT 177730 ='-50
+ILPB OCT 40050 INDEX LISTING BUFFER
+SPSP OCT 120240 <SPACE><SPACE>
+IFLG OCT 40001 INDEX FLAG
+MO5 OCT 177773
+N1 OCT 1
+ END
+++ /dev/null
-* C210-001-6601 (FRTN) 3C NO.180463000 REV. D
-*
-*
-*
-* COMPUTER. DDP-116,516
-*
-*
-*
-*
-* PROGRAM CATEGORY- COMPILER
-*
-*
-*
-*
-* PROGRAM TITLE. FRTN
-* EXPANDED FORTRAN IV COMPILER
-* FOR DDP-116,516
-*
-*
-*
-*
-*
-*
-*
-* APPROVAL DATE
-*
-*
-* PROG--------------------- ------------
-*
-*
-* SUPR---------------------- ------------
-*
-*
-* QUAL---------------------- ------------
-*
-*
-* NO. OF PAGES ------------
-*
-* REVISIONS
-*
-* REV. D ECO 5249
-* REV. C ECO 3824 10-31-66
-* REV. B ECO 3476 09-19-66
-* REV. A 06-08-66
-*
-* AUTHOR
-*
-* HONEYWELL. INC. - COMPUTER CONTROL DIVISION
-*
-*
-* PURPOSE
-*
-* THIS PROGRAM IS DESIGNED TO COMPILE ASA STANDARD FORTRAN IV
-* PROGRAMS IN ONE PASS, GENERATING OPTIMUM OBJECT CODE FOR THE
-* DDP-116 OR DDP-516.
-*
-*
-* RESTRICTIONS
-*
-* MINIMUM 8K CORE STORAGE
-*
-*
-* STORAGE
-*
-* 6682 (DECIMAL)
-* 15034 (OCTAL)
-*
-*
-* USE
-*
-*
-* ********************************
-*
-* *FORTRAN-IV OPERATING PROCEDURE*
-* ********************************
-*
-* 1. LOAD THE COMPILER SYSTEM TAPE USING STANDARD 'LOAD-MODE'
-* (DDP-116), OR "PAL-MODE (DDP-516) LOADING PROCEDURES
-*
-* 2. SET THE (A) REGISTER FOR THE DESIRED INPUT/OUTPUT DEVICE
-* SELECTION AS DESCRIBED BELOW, SET (P) TO '1000, SET THE
-* SENSE SWITCHES AS DESCRIBED BELOW, AND PRESS START.
-*
-* 3. INPUT/OUTPUT DEVICE SELECTION (BITS SET IN (A) ON ENTRY).....
-* 1......IF SET, CERTAIN ERROR CHECKS ARE NOT MADE. THIS
-* OPTION IS USED WHEN COMPILING THOSE PARTS OF THE
-* LIBRARY WRITTEN IN FORTRAN LANGUAGE AND IT ALLOWS THE
-* LIBRARY TO TAKE ADVANTAGE OF THE COMPILER'S LOGIC TO
-* GENERATE SPECIAL CODING.
-*
-* 2-7....NOT ASSIGNED
-*
-* 8-10...INPUT DEVICE SELECTION
-* 1 = ASR-33/35 KEYBOARD (OR ITS PAPER TAPE READER)
-* 2 = NCR CARD READER
-* 3 = DIGITRONICS PAPER TAPE READER
-* 4 = MAGNETIC TAPE ( UNIT 1 )
-* 5-7 = (SPARES)
-*
-* 11-13..SYMBOLIC LISTING SELECTION
-* 0. SUPPRESS ALL SYMBOLIC LISTINGS
-* 1. ASR-33/35 TYPEWRITER
-* 2. LINE PRINTER
-* 3 = ( SPARE )
-* 4 = LISTING ON MAGNETIC TAPE UNIT 2
-* 5-7 = (SPARES)
-*
-* 14-16..BINARY OUTPUT SELECTION
-* 0. SUPPRESS BINARY OUTPUT.
-* 1. BRPE HIGH SPEED PAPER TAPE PUNCH
-* 2. ASR BINARY OUTPUT ASR/33
-* 3. ASR BINARY OUTPUT ASR/35
-* 4 = MAGNETIC TAPE OUTPUT
-* 5-7 (SPARES)
-*
-*
-* 4. SENSE SWITCH SETTINGS AND MEANINGS.......
-* 1......EXPAND THE SYMBOLIC LISTING TO INCLUDE
-* SIDE-BY-SIDE OCTAL INFORMATION.
-* 2......INHIBIT SYMBOLIC LISTING (AS LONG AS SSW-1 NOT SET).
-* 3......PAUSE BEFORE INPUT OF THE NEXT RECORD. DURING
-* THIS PAUSE, THE (A) REGISTER WILL DISPLAY THE CURRENT
-* STATUS OF THE I/O KEYBOARD, IT MAY BE
-* CHANGED AT THIS TIME IF DESIRED BEFORE RESETTING
-* SSW-3 AND PRESSING START TO CONTINUE.
-* 4......CAUSE TRACE COUPLING INFORMATION TO BE INCLUDED
-* IN THE OBJECT CODING BEING GENERATED REGARDLESS OF
-* ANY TRACE STATEMENTS WITHIN THE PROGRAM (OPERATOR
-* OVERRIDE).
-*
-* 5. WHEN BINARY TAPE IS BEING GENERATED, THE COMPILER
-* AUTOMATICALLY TURNS ON THE TAPE PUNCH AND PUNCHES OUT A
-* LENGTH OF LEADER. AFTER THE END-OF-JOB IS TYPED, A LENGTH OF
-* TRAILER IS PUNCHED BEFORE TURNING OFF THE PUNCH, AND THE LINE
-* PRINTER IS ADVANCED TO THE NEXT PAPER SEAM. PRESS 'START'
-* TO PROCESS THE NEXT PROGRAM (BATCH COMPILING).
-*
-* FOR ASR BINARY OUTPUT, NO LEADER OR TRAILER IS
-* PROVIDED, AND THE BINARY PUNCH IS LEFT ON THROUGHOUT
-* THE COMPILATION.
-*
-*
-* ERRORS
-*
-* THE ERROR MESSAGES OUTPUT BY THIS COMPILER ARE LISTED ON A
-* SEPERATE DOCUMENT FOR EASE OF DISTRIBUTION.
-* *************************
-* *DATA POOL ENTRY FORMATS*
-* *************************
-*
-* THE DATA POOL CONSISTS OF FOUR FORMS OF INFORMATION
-* 1. THE ASSIGNMENT TABLE CONSISTS OF 5 WORDS, STARTS
-* AT THE END OF THE COMPILER AND EXTENDS TOWARD THE
-* END OF MEMORY.
-*
-* TDCCCCCCCCCCCCCC....DP(A+4)
-* CCCCCCCCCCCCCCCC....DP(A+3)
-* CCCCCCCCCCCCCCCC....DP(A+2)
-* IIAAAAAAAAAAAAAA....DP(A+1)
-* NRRRMMMLLLLLLLLL....DP(A)
-*
-* T = TRACE TAG
-* D = DATA TAG
-* C = SIX 8-BIT CHAR. OR BINARY CONSTANT
-* I = ITEM USAGE (IU)
-* 0 = NO USAGE 2 = VAR/CONSTAN^
-* 1 = SUBPROGRAM 3 = ARRAY
-* A = ASSIGNMENT ADDRESS
-* N = NAME TAG (NT)
-* 0 = NAME 1 = CONSTANT
-* R = ADDRESS TYPE (AT)
-* 0 = ABSOLUTE 3 = STRING-REL
-* 1 = RELATIVE 4 = COMMON
-* 2 = STRING-ABS 5 = DUMMT
-* M = ITEM MODE (IM)
-* 1 = INTEGER 5 = COMPLEX
-* 2 = REAL 6 = DOUBLE
-* 3 = LOGICAL
-* 4=COM/EQU LINK
-* 2. THE DO TABLE 'FLOATS' ON TOP OF THE ASSIGNMENT
-* TABLE AND CONTAINS THE INFORMATION NEEDED TO CLOSE-OUT
-* A DO-LOOP, EACH ENTRY IS 5 WORDS.
-* 00IIIIIIIIIIIII
-* 00TTTITTTTTTTTT
-* 00XXXXXXXXXXXXX
-* 00UUUUUUUUUUUUUU
-* 00NNNNNNNNNNNNNN
-* I = INITIAL VALUE/OR RPL
-* T = TERMINAL VALUE
-* X = INDEX
-* U = INCREMENT
-* N = STATEMENT NUMBER
-*
-* 3. THE EXPRESSION TABLE (A0I TABLE) 'FLOATS' ON TOP
-* THE DO TABLE AND CONSISTS OF 2 WORD ENTRIES.
-*
-* NOOOOOOOOIIIIIII.....DP(I+1)
-* 00AAAAAAAAAAAAAAAA...DP(I)
-* N = NEGATION INDICATOR
-* O = OPERATOR
-* I = INDEX (OPERATOR LEVEL)
-* A = ASSIGNMENT TABLE REFERENCE
-* 4. THE TRIAD TABLE IS USED TO OPTIMIZE EXPRESSIONS AND
-* IS AT THE END OF MEMORY EXTENDING DOWN TOWARDS THE
-* COMPILER. EACH ENTRY IS THREE WORDS LONG.
-*
-* S000000000PPPPPP.....DP(L+2)
-* 0011111111111111.....DP(L+1)
-* 0022222222222222.....DP(L)
-* S = TEMP STORAGE INDICATOR
-* P = OPERATOR
-* 1 = FIRST OPERAND ADDRESS
-* 2 = SECOND OPERAND ADDRESS
- ABS
- ORG '100
-*
-* ************************************
-* * DIRECTORY OF FORTRAN IV COMPILER *
-* ************************************
-*
-*
-*
-*..............ENTRANCE GROUP
- DAC A3 (ENG1) COMPILER ENTRANCE/INITIALIZE
- DAC DP DATA POOL START
-*
-*..............INPUT GROUP
- DAC IC00 (IPG1) INPUT COLUMN
- DAC UC00 (IPG2) UNINPUT COLUMN
- DAC CH00 (IPG3) INPUT CHARACTER
- DAC ID00 (IPG4) INPUT DIGIT
- DAC IA00 (IPG5) INPUT (A) CHARACTERS
- DAC FN00 (IPG6) FINISH OPERATOR
- DAC DN00 (IPG7) INPUT DNA
- DAC II00 (IPG8) INPUT ITEM
- DAC OP00 (IPG9) INPUT OPERAND
- DAC NA00 (IPG10) INPUT NAME
- DAC IG00 (IPG11) INPUT INTEGER
- DAC IV00 (IPG12) INPUT INTEGER VARIABLE/CONSTANT
- DAC IR00 (IPG13) INPUT INTEGER VARIABLE
- DAC IS00 (IPG14) INPUT STATEMENT NUMBER
- DAC XN00 (IPG15) EXAMINE NEXT CHARACTER
- DAC SY00 INPUT STMBOL
-*
-*..............TEST GROUP
- DAC TS00 (TSG1) ALL CHARACTER TEST (EXCEPT C/R)
- DAC IP00 (TSG2) )-INPUT OPERATOR
- DAC A1 (TSG3) C/R TEST
- DAC B1 (TSG4) , OR C/R TEST
- DAC NU00 (TSG5) NO USAGE TEST
- DAC NC00 (TSG6) NON CONSTANT TEST
- DAC NS00 (TSG7) NON SUBPROGRAM TEST
- DAC AT00 (TSG8) ARRAY TEST
- DAC IT00 (TSG9) INTEGER TEST
- DAC NR00 (TSG10) NON REL TEST
-*
-*..............ASSIGNMENT GROUP
- DAC AS00 (ASG1) ASSIGN ITEM
- DAC TG00 (ASG2) TAG SUBPROGRAM
- DAC TV00 (ASG3) TAG VARIABLE
- DAC FA00 (ASG4) FETCH ASSIGN
- DAC FL00 (ASG5) FETCH LINK
- DAC KT00 (ASG6) D(0)= SIZE OF ARRAY DEFLECTION
- DAC DM00 (ASG7) DEFINE IM
- DAC DA00 (ASG8) DEFINE AF
- DAC AF00 (ASG9) DEFINE AFT
- DAC LO00 (ASG10) DEFINE LOCATION
- DAC AI00 (ASG11) ASSIGN INTEGER CONSTANT
- DAC AA00 (ASG12) ASSIGN SPECIAL
- DAC NXT GET NEXT ENTRY FROM ASSGN TABLE
- DAC BUD BUILD ASSIGNMENT TABLE ENTRT
-*
-*..............CONTROL GROUP
- DAC B6 (CNG1) JUMP
- DAC C5 ILL TERM
- DAC C6 (CNG2) CONTINUE
- DAC C7 (CNG3) STATEMENT INPUT
- DAC C8 (CNG4) STATEMENT SCAN
- DAC A9 (CNG5) STATEMENT IDENTIFICATION
- DAC NP00 (CNG6) FIRST NON-SPEC CHECK
-*
-*..............SPECIFICATIONS GROUP
- DAC EL00 (SPG1) EXCHANGE LINKS
- DAC NM00 (SPG2) NON COMM0N TEST
- DAC ND00 (SPG3) NON DUMMY OR SUBPROGRAM TEST
- DAC SC00 (SPG4) INPUT SUBSCRIPT
- DAC IL00 (SPG5) INPUT LIST ELEMENT
- DAC R1 (SPG6) FUNCTION
- DAC R2 SUBROUTINE
- DAC A3 (SPG7) INTEGER
- DAC A4 REAL
- DAC A5 DOUBLE PRECISION
- DAC A6 COMPLEX
- DAC A7 LOGICAL
- DAC B2 (SPG8) EXTERNAL
- DAC B3 (SPG9) DIMENSION
- DAC B7 INPUT DIMENSION
- DAC B4 (SPG10) COMMON
- DAC B5 (SPG11) EQUIVALENCE
- DAC C2 (SPG12) RELATE COMMON ITEMS
- DAC C3 (SPG13) GROUP EOUIVALENCE
- DAC C4 (SPG14) ASSIGN SPECIFICATIONS
- DAC W4 (SPG15) DATA
- DAC R3 (SPG16) BLOCK DATA
- DAC TRAC (SPG17) TRACE
-*
-*..............PROCESSOR GROUP
- DAC V3 (PRG1) IF
- DAC R7 (PRG2) GO TO
- DAC IB00 INPUT BRANCH LIST
- DAC W3 (PRG3) ASSIGN
- DAC C9 (PRG5) DO
- DAC V7 (PRG6) END FILE
- DAC V6 BACKSPACE
- DAC V8 REWIND
- DAC V5 (PRG7) READ
- DAC V4 WRITE
- DAC V2 (PRG8) FORMAT
- DAC SI00 INPUT FORMAT STRING
- DAC IN00 INPUT NUMERIC FORMAT STRING
- DAC NZ00 NON ZERO STRING TEST
- DAC W8 (PRG9) PAUSE
- DAC W7 STOP
- DAC R8 (PRG10) CALL
- DAC G2 ASSIGNMENT STATEMENT
- DAC R9 (PRG11) RETURN
- DAC G1 (PRG12) STATEMENT FUNCTION
- DAC W5 (PRG13) END
-*
-*..............PROCESSOR SUBROUTINES GROUP
- DAC PO00 (PSG1) INPUT CHAR AND OUTPUT PACK
- DAC HS00 (PSG2) TRANSMIT HOLLERITH STRING
- DAC DP00 (PSG3) DO INPUT
- DAC DS00 (PSG4) DO INITIALIZE
- DAC DQ00 (PSG5) DO TERMINATION
- DAC EX00 (PSG6) EXPRESSION
- DAC CA00 (PSG7) SCAN
- DAC ST00 TRIAD SEARCH
- DAC TC00 TEMP STORE CHECK
- DAC ET00 (PSG8) ENTER TRIAD
- DAC GE00 (PSG9) GENERATE SUBPROGRAM ENTRANCE
-*
-*..............OUTPUT GROUP
- DAC OL00 (OPG1) OUTPUT OBJECT LINK
- DAC OI00 (OPG2) OUTPUT I/O LINK
- DAC CN00 (OPG3) CALL NAME
- DAC OK00 (OPG4) OUTPUT PACK
- DAC OB00 (OPG5) OUTPUT OA
- DAC OT00 (OPG6) OUTPUT TRIADS
- DAC OM00 (OPG7) OUTPUT ITEM
- DAC OR00 (OPG8) OUTPUT REL
- DAC OA00 OUTPUT ABS
- DAC OS00 OUTPUT STRING
- DAC OW00 (OPG9) OUTPUT WORD
- DAC PU00 PICKUP
- DAC FS00 (OPG10) FLUSH
- DAC TRSE (OPG11) OUTPUT TRACE COUPLING
- DAC PRSP SET BUFFER TO SPACES
-*
-*..............MISC. GROUP
- DAC AD3 ADD TWO 3 WORD INTEGERS
- DAC IM00 MULTIPLY (A) BY (B)
- DAC STXA SET A INTO INDEX
- DAC STXI SET I INTO INDEX
- DAC NF00 SET FS INTO NAMF
- DAC BLNK SET AREA TO ZEROS
- DAC MOV3 MOVE 3 WORDS TO TEMP STORAGE
- DAC CIB COMPARE IBUF TO A CONSTANT
- DAC SAV SAVE INDEX IN PUSH-DOWN STACK
- DAC RST RESET INDEX FROM PUSH-DOWN STACK
- DAC PACK
- DAC ER00 ERROR OUTPUT
- DAC SRT SHIFT RIGHT 1 (TRIPLE PRES.)
- DAC SFT SHIFT LEFT 1 (TRIPLE PRES.)
- DAC LIST
-*
-*
-* ****************************
-* *CONSTANT AND VARIABLE POOL*
-* ****************************
-*
-XR EQU 0 INDEX REGISTER
-* THE FOLLOWING 62 VARIABLES ARE SET TO ZERO DURING
-* PROGRAM INITIALIZATION
-A EQU '40 ASSIGNMENT TABLE INDEX
-I EQU A+1 EXPRESSION TABLE INDEX
-C EQU A+2
-ASAV EQU A+3
-L EQU A+4
-MFL EQU A+5 MODE FLAG
-SFF EQU A+6 FUNCTION FLAG
-SBF EQU A+7 SUBFUNCTION FLAG
-SXF EQU A+8 POSSIBLE CPX FLAG
-SPF EQU A+9 PEC. FLAG
-TCF EQU A+10 TEMP STORE COUNT
-IFF EQU A+11
-ABAR EQU A+12 BASE OF ASSIGN TABLE
-XST EQU A+13 FIRST EXECUTABLE STMNT.
-CFL EQU A+14 MON FLAG
-D EQU A+15 DO INDEX
-RPL EQU A+16 RELATE PROGRAM LOCATION
-BDF EQU A+17 LOCK DATA FLAG
-SLST EQU A+18 SOURCE LIST
-OBLS EQU A+19 OUTPUT BINARY LIST
-BNOT EQU A+20 BINART OUTPUT FLAG
-TRF EQU A+21 TRACE FLAG (END TRACE STATEMENT NO.)
-TRFA EQU A+22 POINTER TO FIRST VAR, 0R ARRAY NAME IN
-* AN EXPRESSION (FOR USE BY TRACE).
-SOF EQU A+23 SUBSCRIPT CONSTANT FLAG (NON-ZERO IF SET)
-LIF EQU A+24 LOGICAL IF FLAG
-LSTN EQU A+25 LAST STATEMENT NO.
-LSTF EQU A+26 LAST STATEMENT FLAG
-LSTP EQU A+27 LAST STATEMENT STOP
-SDSW EQU A+28 STATEMENT I0 SWITCH
-*
-NAMF EQU '570 NAME FUNCTION
-ND EQU NAMF+1 NO OF DIMENSIONS
-NS EQU '572 NO OF SUBSCRIPTS
-NT EQU NS+1 NAME TAG
-NTF EQU NS+2 NAME TAG FLAG
-NTID EQU NS+3 NO. WORDS IN TID
-O1 EQU NS+4 OPERATOR 1
-O2 EQU NS+5 OPERATOR 2
-P EQU NS+6
-PCNT EQU NS+7
-OCNT EQU NS+8 OUTPUT COUNT
-S0 EQU NS+9
-S1 EQU NS+10 SUBSCRIPT NO.1
-S2 EQU NS+11 SUBSCRIPT NO.2
-S3 EQU NS+12 SUBSCRIPT NO.3
-TC EQU NS+13 TERMINAL CHAR
-TT EQU NS+14
-TYPE EQU NS+15
-X EQU NS+16 ARRAY INDICES
-X1 EQU NS+17
-X2 EQU NS+18
-X3 EQU NS+19
-X4 EQU NS+20
-NTA EQU NS+21 UNPACKED ASSIGNMENT ITEMS
-ATA EQU NS+22
-IMA EQU NS+23
-CLA EQU NS+24
-IUA EQU NS+25
-DTA EQU NS+26
-TTA EQU NS+27
-*..........ADJUST THIS ORG IF THE SIZE OF THE CONSTAST POOL IS MODIFIED
- ORG '630
-AF PZE 0 ADDRESS FIELD
-GF EQU AF
-AT PZE 0 ADDRESS TYPE
-CODE PZE 0 OUTPUT CODE
-D0 PZE 0 DIMENSIONS
-D1 PZE 0
-D2 PZE 0
-D3 PZE 0
-D4 PZE 0
-DF PZE 0 DATA FLAG
-NF PZE 0
-B PZE 0
-DFL PZE 0 DELIMITER FLAG
-E OCT 0 EQUIVALENCE INDEX
-EP PZE 0 E-PRIME
-E0 PZE 0 E-ZERO
-FTOP PZE 0 OUTPUT COMMAND
-GFA PZE 0
-ICSW PZE 1 INPUT CONTROL SWITCH
-IFLG PZE 0 I-FLAG
-IM PZE 0 ITEM MODE
-IOF PZE 0 I-0 FLAG
-IU PZE 0 ITEM USAGE
-KBAR PZE 0 TEM STORE
-KPRM PZE 0 TEM STORE
-EBAR OCT -1 E-BAR
-DO OCT 17 DO TABLE INDEX(FLOATS ABOVE ASSIGNMENT)
-CC PZE '111 CARD COLUMN COUNTER
-DCT PZE 0 DUMMY ARGUMENT COUNT
-F PZE 0 TRIAD TABLE INDEX
-CL PZE 0 ASSIGNMENT ITEMS UNPACKED
-DT PZE 0
-FLT1 PZE 0 FETCH LINK CL POINTER LOCATION
-LIBF PZE 0 SPECIAL LIBRARY FLAG (NON-ZERO IF SET)
-*..........CONSTANTS USED BY THE COMPILER
-K4 OCT 251 0)
-K5 OCT 254 0,
-K8 OCT 240 0-SPACE
-K9 OCT 257 0/
-K10 OCT 256 0.
-K12 OCT 255 0-
-K13 OCT 253 0+
-K15 OCT 244 0$
-K16X OCT 16
-K17 OCT 250 0(
-K18 OCT 275 0=
-K19 BCI 1,DO DO
-K34 OCT 324 0T
-K35 OCT 317 0O
-K40 BCI 1,WN
-K41 BCI 1,RN RN
-K42 BCI 1,CB
-K43 OCT 311 0I
-K44 OCT 321 0Q
-K45 EQU K34 0T
-K57 OCT 252 0*
-K60 OCT 260 00 (BCI ZERO)
-K61 OCT 271 09
-K68 EQU K19
-K101 OCT 1
-K102 OCT 2
-K103 OCT 3
-K104 OCT 4
-K105 OCT 5
-K106 OCT 6
-K107 OCT 7
-K109 DEC 16
-K100 OCT 377
-K111 OCT 37777
-K110 DEC -17
-K115 OCT 170777
-K116 OCT 177400
-K117 DEC -27
-K118 OCT 777
-K119 OCT 177000
-K120 DEC -15
-K122 OCT 040000
-K123 DEC -1
-K124 DEC 9
-K125 DEC 8
-K126 DEC 10
-K127 DEC 11
-K128 DEC 12
-K129 DEC 13
-K131 DEC -14
-K132 OCT 22
-K134 OCT 17
-K137 OCT 24002
-K138 OCT 25
-K139 OCT 24
-CRET OCT 215 0 C/R
-ZERO OCT 0
-HBIT OCT 140000 HIGH BITS FOR ALPHA DATA
-KAEQ BCI 1,EQ EQUIVALENCE ERROR MESSAGE ATTACHMENT
-MIN2 DEC -2 -2
-HC2 OCT 340
-K357 OCT 357
-*
-*
-DP EQU '15400 DUMMY START OF DATA POOL (ACTUALLY SET
-* BY THE FORTRAN IOS SUBROUTINE.)
-L0 EQU '113 DUMMY END OF DATA POOL (MINUS 3 WORDS)
-* THE FOLLOWING INSTRUCTIONS CAUSE THE LOADER
-* TO ASSIGN ALL REFERENCES TO THE DATA POOL IN WORDS
-* 100 TO 112 OF THE ZERO SECTOR, FORTRAN IOS WILL
-* CAUSE THESE CELLS TO BE SET TO THE ACTUAL DATA POOL
-* LOCATIONS WHICH WILL BE DETERMINED BY COMPUTER
-* CONFIGURATION.
- ORG '1000
- PZE DP-4,1 (100)
- PZE DP-3,1 (101) DATA POOL REFERENCES
- PZE DP-2,1 (102)
- PZE DP-1,1 (103)
- PZE DP,1 (104)
- PZE DP+1,1 (105)
- PZE DP+2,1 (106)
- PZE DP+3,1 (107)
- PZE DP+4,1 (108)
- PZE DP+9,1 (111)
- PZE DP+6,1 (112)
- PZE DP+7 (113) NO WDS IN DATA POOL SET BY IOS
-*
-*
- ORG 1
- JST ER00 THIS INSTRUCTION REACHED ONLY IF THE
- BCI 1,CG COMPILER JUMPED TO ZERO BY MISTAKE.
-*
-*
-*
-*
-* *******************
-* *START OF COMPILER*
-* *******************
-*
- ORG '1000
-*
-*
-*
-* - A0 COMP ENT EMPTY BUFFERS
- LRL 15
- STA LIBF SET SPECIAL LIBRARY FLAG
- LLL 15 (BIT 1 ON INHIBITS CERTAIN ERROR CHECKS)
-A0 CALL F4$INT INITIALIZE I/O DEVICES
- LDA K108
- STA CC CC = 73
- JST IC00 INPUT COLUMN
-A051 LDA A090
- STA XR
- LDA A092 LOC, OF INDEX PUSH-DOWN BUFFER
- STA SAV9 INITIALIZE PUSH-DOWN BUFR,
- CRA
- STA A+M,1 SET M VARIABLES TO ZERO
- STA NAMF+M,1
- IRS XR
- JMP *-3
- STA IFLG
- STA PKF
- JST FS00 INITIALIZE OUTPUT BUFFER
- CMA
- STA LSTF LSTF NOT EQ 0
- STA LSTP LSTP NOT EQ 0
- STA EBAR EBAR SET NEGATIVE
- LDA L0
- STA ICSW
- STA E0 INITIALIZE EQUIVALENCE TABLE
- STA L INITIALIZE TRIAD TABLE POINTER
- JST PRSP SET PRINT BUFFER TO SPACES
- LDA K134
- STA DO INITIALIZE DO TABLE POINTER
- SUB K138
- STA A091
- CRA
- STA ID
-A055 IRS ID ESTABLISH CONSTANTS
- JST AI00
- IRS A091
- JMP A055
- LDA K81
- STA ID
- STA ID+1
- STA ID+2
- CRA
- LRL 32 (B)=0 IM=NO USAGE
- LDA K101 (A)=1 IU=SUBR
- JST AA00 ASSIGN (SPECIAL)
- JST STXA SET POINTER A INTO INDEX AND (A)
- STA CFL CFL=A (LOCATION OF FIRST COMMON BLOCK)
- ADD K122 ='40000 (IU=SUBR)
- STA DP+1,1 GF(A)=A (IN CASE NO BLANK COMMON IS SPECIFI
- JMP C7 GO TO STMNT INPUT
-M EQU 30
-A090 DAC* -M,1
-A091 PZE 0
-A092 DAC SAVX START OF INDEX PUSH-DOWN BUFFER
-*
-*
-*
-* **************
-* *INPUT COLUMN*
-* **************
-*
-* INPUT NEXT CHARACTER
-* IGNORE BLANKS
-* CHECK FOR COMMENTS
-* IC02 SET AS FOLLOWS -
-* NORMAL - ICIP
-* INITIAL SCAN -ICSR
-IC00 DAC ** LINK STORE
- JST SAV SAVE INDEX
- LDA CC IF CC = 73, GO TO IC 10
- SUB K108
- SZE
- JMP IC19 ELSE, GO TO IC
-IC10 LDA ICSW IF ICSW. GO TO IC12
- SNZ
- JMP IC24 ELSE, GO TO IC24
-IC12 CALL F4$IN INPUT SYMBOLIC CARD IMAGE
- DAC CI
- LDA CI
- LGR 8 GO 70 IC 14
- CAS K16 =(C)
- JMP *+2
- JMP IC30 COMMENT CARD (IGNORE)
- SUB K15 =($)
- SNZ
- JMP IC18 CONTROL CARD (IGNORE COLUMN 6)
- LDA K357 IF CARD COL, SIX IS
- ANA CI+2 ZERO OR BLANK, GO TO IC18
- SUB K8
- SZE
- JMP IC26 ELSE, GO TO IC26
-IC18 STA CC CC = 0.
- LDA CI+2 CI(6) = SPECIAL
- ANA K116
- ADD HC2 ='340
- STA CI+2
- LDA CRET
- JMP IC20 TC = C.R.
-IC19 LDA CC TC = CI(CC)
- SUB K101
- LGR 1
- STA XR
- LDA CI,1
- SSC
- LGR 8
- ANA K100
-IC20 STA TC
- IRS CC CC = CC+1
-IC22 JST RST RESTORE INDEX
- JMP* IC00 RETURN
-IC24 LDA K9 TC = /, END OF LINE - STATEMENT SCAN
- STA TC
- JMP IC22 GO TO IC22
-IC26 JST LIST LIST, CONTINUATION CARD
- LDA K107 CC = 7. IGNORE STATEMENT NO.
- STA CC
- JMP IC19 G0 TO IC19
-IC30 JST LIST PRINT CARD IMAGE
- JMP IC12 READ IN NEW CARD
-K16 OCT 303 0C
-K108 DEC 73
-KASP BCI 1, (SP)(SP) MUST PRECEDE CARD IMAGE BUFFER
-CI BSS 40
- BCI 20,
-*
-*
-*
-* ****************
-* *UNINPUT COLUMN*
-* ****************
-* BACK UP ONE COLUMN
-*
-UC00 DAC **
- IMA CC CC= CC-1
- SUB K101 RETAIN (A)
- IMA CC
- JMP* UC00
-*
-*
-* *****************
-* *INPUT CHARACTER*
-* *****************
-* INPUT ONE CHARACTER FROM EITHER
-* 1, INPUT BUFFER (EBAR POSITIVE) OR
-* 2, EQUIVALENCE BUFFER (EBAR NEGATIVE)
-*
-CH00 DAC **
- LDA EBAR IF EBAR 7 0,
- SMI
- JMP CH10 G0 10 CH10
-CH03 JST IC00 INPUT COLUMN
- SUB K8 IF BLANK, REPEAT
- SNZ
- JMP CH03
- LDA TC ELSE,
-*
-CH04 CAS CH13 ='301
- NOP
- JMP CH06
- CAS K61 ='271
- JMP CH05
- NOP
- CAS K15 ='244
- JMP *+2
- JMP CH05-1
- CAS K60 ='260
- NOP
- CRA ALPHA NUMERIC CHARACTER
-CH05 STA DFL DELIMITER ENTRY
- LDA TC EXIT WITH TC IN A
- JMP* CH00
-CH06 CAS K63 ='332
- JMP CH05
- NOP
- JMP CH05-1
-CH08 STA DFL
- JMP* CH00
-CH10 LDA E IF E = EBAR
- CAS EBAR
- JMP *+2
- JMP CH12 GO TO CH12
- STA 0 SET E INTO INDEX
- LLL 16 SET (B) TO ZERO
- LDA DP,1 CURRENT CHARACTER WORD
- LLR 8
- STA DP,1 SAVE REMAINING CHARACTER IF ANY
- IAB
- STA TC TC=LEFTMOST CHARACTER
- SZE SKIP IF NEW CHARACTER WORD NEEDED
- JMP CH04
- LDA E E=E-1
- SUB K101 =1
- STA E
- JMP CH10 PICK UP NEXT CHARACTER WORD
-CH12 SSM MAKE E MINUS
- STA EBAR
- JMP C4 GO TO ASSIGN SPEC
-K63 OCT 332 0Z
-CH13 OCT 301
-*
-*
-* *************
-* *INPUT DIGIT*
-* *************
-* A IS ZERO IF NOT DIGIT
-*
-ID00 DAC ** INPUT DIGIT
- JST CH00 INPUT A CHAR
- CAS K61 ='271 (9)
- JMP* ID00 (A) = TC
- JMP ID10 ELSE, (A) = 0
- CAS K60 RETURN
- NOP
- JMP *+2
- JMP* ID00
-ID10 CRA
- JMP* ID00
-*
-*
-* **********************
-* *INPUT (A) CHARACTERS*
-* **********************
-* CHAR COUNT IN XR, TERMINATES WITH EITHER
-* 1, CHAR COUNT -1 = ZERO OR
-* 2, LAST CHAR IS A DELIMITER
-*
-IA00 DAC **
- TCA SET COUNTER
- STA IA99
- JST IA50 EXCHANGE IBUF AND ID
- CRA
- STA NTID NTID = 0
-IA10 JST CH00 INPUT A CHARACTER
- JST PACK
- LDA DFL IF DFL NOT ZERO,
- SZE CONTINUE
- JMP IA20 ELSE,
- IRS IA99 TEST COUNTER
- JMP IA10 MORE CHARACTERS TO INPUT
-IA20 JST IA50 EXCHANGE ID AND IBUF
- JMP* IA00 RETURN
-IA50 DAC ** EXCHANGE IBUF AND ID
- JST SAV SAVE INDEX
- LDA IA90
- STA XR
- LDA IBUF+3,1
- IMA ID+3,1
- STA IBUF+3,1
- IRS XR
- JMP *-4
- JST RST RESTORE INDEX
- LDA NTID
- JMP* IA50
-IA90 OCT -3
-IA99 PZE 0
-*
-*
-* *****************
-* *FINISH OPERATOR*
-* *****************
-* WRAP UP LOGICAL/RELATIONAL OPERATORS
-*
-FN00 DAC **
- LDA DFL IF DFL NOT . ,
- STA IBUF
- SUB K10
- SZE
- JMP FN05 GO TO FN05
- LDA K104
- JST IA00
-FN05 LDA K110 USE TABLE TO CONVERT
- STA XR OPERATOR
-FN10 LDA FN90+17,1
- CAS IBUF
- JMP *+2
- JMP FN20
- IRS XR
- JMP FN10
- LDA TC
- JMP* FN00
-FN20 LDA FN91+17,1 FOUND A LOGICAL OPERATOR
- STA TC SET INTO TC
- JMP* FN00
-FN90 OCT 253,255,252,257 +-*/
- BCI 9,NOANORLTLEEQGEGTNE
- OCT 275,254 =,
-FN91 OCT 1,2,3,4,5,6,7,10,11,12,13,14,15,16,17
-*
-*
-* ***********
-* *INPUT DNA*
-* ***********
-* BASIC INPUT ROUTINE, HANDLES FOLLOWING -
-* CONSTANT CONVERSION
-* MODE TYPING (CONSTANTS, IMPLIED/VARIABLES)
-* ALL OPERATORS (TERMINATE ITEM)
-*
-ID BSS 4
-TID EQU ID TEMP STORE FOR ID
-IBUF BSS 3 3-WORD BUF
-TIDN PZE 0
-K155 OCT 177727 -41
-K156 OCT 024000 1085
-K157 OCT 007777
-K158 OCT 074000
-F1 PZE 0 SIGN FLAG
-F2 PZE 0
-F3 PZE 0 INPUT EXPONENT
-F4 PZE 0 NO, FRAC. POSITIONS
-F5 PZE 0 TEMP DELIMITER STORE
-F6 PZE 0
-L4 PZE 0
-HOLF PZE 0 HOLLERITH FLAG
-DN00 DAC **
-DN01 CRA
- STA HOLF SET HOLF =0
- STA F4 F4 = 0
- STA IU
- STA NT IU=NT=NTID=0
- STA NTID
- JST BLNK CLEAR OUT TID = ID
- DAC TID
- JST BLNK
- DAC F1 F1,F2,F3 = 0
-DN06 CRA
- STA IM
- STA DNX2
-DN07 JST ID00 INPUT DIGIT
- SZE
- JMP DN14 (A) NON-ZERO, G0 T0 DN14
-DN10 LDA TID+2 CHECK FOR OVERFLOW AND ADJUST
- ANA K158 POSITION COUNT IF NECESSARY,
- SZE
- JMP SKIP
- ADD IM
- ARS 1
- ADD F4 F4 = F4+1 IF NO OVERFLOW
- STA F4 AND IM ALREADY SET TO REAL
- LDA K101
- STA NT NT=1
- ADD K101
- STA IU IU = VAR/COD
- JST SFT SHIFT ID LEFT
- DAC ID
- JST MOV3 MOVE TO TEMP STORE
- JST SFT
- DAC ID
- JST SFT
- DAC ID
- JST AD3 ID = 10*ID+TC
- JST BLNK
- DAC DNX1
- LDA TC
- SUB K60
- STA DNX1
- JST AD3
- JMP DN07
-SKIP LDA MIN2
- ADD IM
- ARS 1
- ADD F4
- STA F4
- JMP DN07
-DN14 LDA IM IM = REAL
- SUB K102
- SZE
- JMP DN50 NO, GO TO DN50
-DN16 LDA K10 YES,
-DN17 STA F5 F5 = '.'
- LDA DFL IF DFL =0, GO SO DN20 (5)
- SZE
- JMP DN90 ELSE GO TO DN90 (9)
-DN20 LDA TC IF TC = D, GO TO DN26
- SUB K11
- SNZ
- JMP DN26
- SUB K101 ELSE, IF TC = E, GO TO DN22
- SNZ
- JMP DN22 TERMINATOR = E
- JST UC00
- LDA K10 ='256 (,)
- STA DFL SET DELIMITER FLAG
- LDA K101 =1
- STA IM SET ITEM MODE TO INTEGER
- JMP DN67 FINISH OPERATOR AND EXIT
-*
-DN22 JST ID00 INPUT DIGIT
- SNZ IF (A) = 0, GO TO DN30
- JMP DN30
- LDA TC IF TC = -, GO TO DN28
- SUB K12
- SNZ
- JMP DN28
- ADD K102
- SNZ
- JMP DN29
- LDA F5
- STA DFL
- JST UC00 UN-INPUT COL
-DN24 JST FN00 FINISH OPERATOR
-DN25 LDA K101 IM = INT
- STA IM
- LDA ID+1 IF ID IS TOO BIG TO
- SZE BE AN INTEGER (>L2),
- JMP DN69 GO TO DN69 (20)
- LDA ID+2
- SZE
- JMP DN69
- JMP DN84 OTHERWISE, GO TO DN84(12)
-DN26 LDA K106 IM = DBL
- STA IM
- JMP DN22
-DN28 LDA K101 F2 = 1
- STA F2
-DN29 JST ID00 INPUT DIGIT
- SZE IF (A) = 0, GO TO DN30 (8.5)
- JMP DN69 ELSE, GO TO DN69 (20)
-DN30 LDA F3 F3 = 10 * F3
- ALS 3
- IMA F3 F3 = F3 +TC
- ALS 1
- ADD F3
- ADD TC INPUT DIGIT
- SUB K60
- STA F3 IF (A) = 0, GO TO DN30 (8.5)
- JST ID00 ELSE, GO TO DN90 (9)
- SZE
- JMP DN90
- JMP DN30
-DN50 LDA K102 IM=REA
- STA IM
- LDA TC IF TC = ., GO TO DN54
- SUB K10
- SNZ
- JMP DN54 ELSE,
- LDA NT
- SNZ IF NT = 0, GO TO DN72
- JMP DN72
- LDA TC IF TC = H, GO TO DN9H (22)
- SUB K14
- SNZ
- JMP DN9H
- LDA DFL IF DFL = 0,
- SZE GO TO DN16 (4.9)
- JMP DN25 ELSE, GO TO DN25
- JMP DN16
-DN54 JST ID00 INPUT DIGIT
- SNZ
- JMP DN10 IF (A) = 0, GO TO DN10 (3)
- LDA NT
- SNZ IF NT = 0, GO TO DN56
- JMP DN56
- LDA TC F5 = TC
- JMP DN16 GO TO DN16 (4)
-DN56 CRA
- STA TC TC = )
-DN58 JST UC00 UN-INPUT A COLUMN,
- LDA F1 IF F1 = 0, GO TO DN60
- SZE
- JMP DN63 ELSE, GO TO DN63 (15)
-DN60 LDA K106
- JST IA00 INPUT (6) CHARS
- JST CIB IF IBUF = TRUE.,
- DAC K1+3,1
- JMP DN64
- JST CIB IF IBUF = FALSE.,
- DAC K2+3,1 GO TO DN66 (16)
- JMP DN66
- JST CIB CHECK FOR .NOT. OPERATOR
- DAC KNOT+3,1 CHECK FOR .NOT. OPERATOR
- JMP DN9N OPERATOR IS .NOT.
-DN63 CRA IM = 0
- STA IM
- JMP DN67 GO TO DN67 (18)
-DN64 LDA K101
- STA TID
-DN66 LDA K101
- STA NT NAME TAG = 1 (CONSTANT)
- LDA K102 IU=VAR
- STA IU
- LDA K103
- STA IM IM = LOG
- JST CH00
-DN67 JST FN00 FINISH OPERATOR
-DN68 LDA F6 IF F6 = 0,
- SNZ GO TO DN70 (21)
- JMP DN70
-DN69 LDA K10
- STA TC TC = .
-DN70 CRA
- STA F6 F6 = SXF = 0
- STA SXF
- LDA IM (A) = IM
- JMP* DN00 RETURN
-DN72 LDA F1 IF F1 = 0, GO TO DN74
- SNZ
- JMP DN74
- LDA F1 ELSE, TC = F1
- STA TC
- JMP DN58 GO TO DN58 (14)
-DN74 LDA TC IF TC = -, GO TO DN82
- SUB K12
- SNZ
- JMP DN82
- ADD K102 CHECK FOR TC = +
- SNZ
- JMP DN82
- LDA DFL IF DFL = NON-ZERO
- SZE
- JMP DN63 GO TO DN63 (15)
- LDA TC
- CAS K43
- JMP *+3
- JMP DN78
- JMP DN80
- CAS K62
- JMP DN80
- NOP
-DN78 LDA K101 IM < INT
- STA IM
-DN80 LDA TC PACK TC TO ID
- JST PACK
- JST CH00 INPUT CHAR
- LDA DFL IF DFL IS NOT ZERO,
- SZE GO TO DN67 (18)
- JMP DN67
- LDA NTID IF NTID = 6, GO TO DN67
- SUB K106
- SZE
- JMP DN80
- JMP DN67
-DN82 JST FN00
- STA F1 F1 = CONVERTED TC
- JMP DN06 GO TO DN06 (2)
-DN84 LDA F1 IF F1 = -,
- SUB K102 GO TO DN85(13)
- SZE
- JMP DN85
- CRA
- SUB TID COMPLEMENT THREE WORDS AT TID
- SZE
- JMP DN8A
- SUB TID+1
- SZE
- JMP DN8B
- JMP DN8C
-DN8A STA TID
- LDA K123
- SUB TID+1
-DN8B STA TID+1
- LDA K123
-DN8C SUB TID+2
- STA TID+2
-DN85 LDA SXF IF SXF = 0, GO T0 DN67 (18)
- SNZ
- JMP DN67 ELSE,
- LDA IM IF IM NOT = REA,
- SUB K102
- SZE GO TO DN67 (18)
- JMP DN67
- LDA F6 ELSE,
- SNZ IF F6 = 0, GO TO DN87
- JMP DN87
- LDA K105
- STA IM IM = CPX
- LDA TID INTERCHANGE
- IMA TIDB 3 CELLS
- STA TID TID
- LDA TID+1 WITH
- IMA TIDB+1 3 CELLS
- STA TID+1 OF
- LDA TID+2 TIDB
- IMA TIDB+2
- STA TID+2
- JST IP00 )-INPUT OPERATOR
- JMP DN70 GO TO DN70 (21)
-DN87 LDA TC IF TC = ,
- SUB K5
- SZE
- JMP DN67 TID-BAR = TID
- LDA TID F6 = 1
- STA TIDB GO TO DN01 (1)
- LDA TID+1
- STA TIDB+1 ELSE, GO TO DN67 (18)
- LDA TID+2
- STA TIDB+2
- LDA K101
- STA F6
- JMP DN01
-DN90 LDA F2 IF F2= 0, GO TO DN9A (10)
- SNZ
- JMP DN9A
- LDA F3 F3 = - F3
- TCA
- STA F3
-DN9A LDA F3 F4 = F3 - F4
- SUB F4
- STA F4
- LDA K12 F2 = EXP, BIAS + MANTISSA
- STA F2
- LDA TID IF TID = 0,
- ADD TID+1
- ADD TID+2 GO TO DN85(13)
- SNZ
- JMP DN85
-DN9C LDA TID+2
- LGL 1 NORMALIZE ID
- SPL
- JMP DN9D ID IS NORMALIZED
- JST SFT
- DAC ID
-* F2 = F2 - = SHIFTS
- LDA F2
- SUB K101
- STA F2
- JMP DN9C CONTINUE NORMALIZE LOOP
-DN9D LDA F4
- CAS ZERO
- JMP DN9E
- JMP DN9G FINISHED E FACTOR LOOP
- IRS F4
- NOP F4 = F4 +1
- LDA K155 DIVIDE LOOP COUNTER
- STA TIDN
- JST SRT
- DAC TID
- JST SRT
- DAC TID
-DND1 JST SFT
- DAC TID
- LDA TID+2
- SUB K156 10 AT B=4
- SMI
- STA TID+2
- SMI
- IRS TID
- IRS TIDN
- JMP DND1 REDUCE DIVIDE COUNTER
- JST SFT
- DAC TID
- LDA TID+2
- ANA K157
- STA TID+2
- JMP DN9C
-DN9E SUB K101
- STA F4 F4 = F4-1
- LDA F2 F2 = F2+4
- ADD K104
- STA F2
- JST SRT
- DAC ID
- JST MOV3
- JST SRT ID = ID*10
- DAC ID
- JST SRT
- DAC ID
- JST AD3 ADD THREE WORD INTEGERS
- JMP DN9C
-* CONVERT THREE WORD INTEGER TO INTERNAL FORMAT
-DN9G LDA TID+2
- IAB
- LDA F2
- LRS 8
- SNZ
- JMP *+3
- JST ER00
- BCI 1,CE CONSTANT'S EXPONENT OVER 8 BITS (OVERFLOW)
- IAB
- IMA TID+2
- IAB
- LDA TID+1
- LGL 1
- LRR 8
- STA TID+1
- LRR 9
- LDA TID PACK UP TRIPLE PRECISION
- LGL 1
- LRR 7 REAL CONSTANT
- STA TID
- LDA F2
- LGR 8
- SZE
- JMP DN69 GO TO DN69 (20)
- JMP DN84 ELSE. GO TO DN84 (12)
-DN9H STA IM
- LDA SPF
- SUB K102
- SZE
- LDA K106
- SUB K124
- ADD TID
- SMI
- JMP DN70
- LDA TID
- STA HOLF HOLF=NO.OF HOLLERITH CHARS,
- STA F3
- TCA
- SNZ
- JMP DN9K FIELD WIDTH OF ZERO
- STA F2 F2= -1(1 CHAR) OR -2(2 CHAR)
- JST BLNK SET ID,ID+1(ID+2 TO ZERO
- DAC TID
-DN9J JST IC00 INPUT COLUMN (INCLUDING BLANKS)
- JST PACK PACK CHARACTERS 2 PER WORD
- IRS F2 REDUCE CHARACTER COUNT
- JMP DN9J INPUT AND PACK MORE CHARACTERS
- LDA F3 F3= 0 IF 2 CHAR. HAVE BEEN INPUT
- ANA K101
- SNZ
- JMP *+3
- LDA K8 ='240 (SP)
- JST PACK SHIFT A SPACE INTO THE LAST WORD
- IRS IM
-DN9M JST CH00 INPUT THE TERMINATING CHARACTER
- JMP DN67 FINISH OPERATOR AND EXIT
-DN9K JST ER00
- BCI 1,HF
-DN9N LDA K105 SET .NOT. OPERATOR (TC=5)
- STA TC SET .NOT. OPERATOR (TC=5)
- CRA
- STA IM IM=0 = UNDEFINED
- JMP DN68
-DNX1 BSS 3
-DNX2 DAC ** OVERFLOW FLAG
- JMP* *-1
-*
-*
-* ************
-* *INPUT ITEM*
-* ************
-* INPUTS AND ASSIGNS ITEM (IF ONE EXISTS)
-*
-II00 DAC **
- JST DN00 INPUT DNA
- SNZ IF (A) = 0
- JMP* II00 RETURN
- JST AS00 NO, ASSIGN ITEM
- LDA IM
- JMP* II00 RETURN (A) = IM
-*
-*
-* ***************
-* *INPUT OPERAND*
-* ***************
-* EXIT WITH ITEM MODE IN A (TC SET TO . IF NO
-* OPERAND)
-*
-OP00 DAC ** INPUT OPERAND
- JST II00 INPUT ITEM
- SZE IF IM = 0, SKIP
- JMP* OP00 ELSE (A) = IM, RETURN
- LDA K10 TC = .
- STA TC (A) = 0
- CRA
- JMP* OP00 RETURN
-*
-*
-* ************
-* *INPUT NAME*
-* ************
-* INPUT OPERAND AND ENSURE THAT IT IS A NAME
-*
-NA00 DAC ** INPUT NAME
- JST OP00 INPUT OPERAND
- LDA NT IF NT = 1,
- SNZ
- JMP NA10
- JST ER00
- PZE 9
-NA10 LDA IM (A) = IM
- JMP* NA00 RETURN
-*
-*
-* ***************
-* *INPUT INTEGER*
-* ***************
-* INPUT ITEM AND ENSURE THAT IT IS AN INTEGER CONSTANT
-* GREATER THAN ZERO
-*
-IG00 DAC ** INPUT INTEGER
- JST DN00 INPUT - DNA
- LDA F1
- SZE IF F1 = 0,
- JMP IG20 AND NT = 1,
- LDA NT AND IM = INT,
- SNZ AND TID L2**15,
- JMP IG20 GO TO IG10
- LDA IM LSE, GO TO IG20
- SUB K101
- SZE
- JMP IG20
- LDA TID+1
- SZE
- JMP IG20
- LDA TID+2
- SZE
- JMP IG20
-IG10 LDA TID
- JMP* IG00
-IG20 JST ER00 ERROR
- BCI 1,IN INTEGER REQUIRED
-*
-*
-* ***********************
-* *INPUT INTEGER VAR/CON*
-* ***********************
-*
-IV00 DAC **
- JST OP00 INPUT OPERAND
- JST IT00 INTER TEST
- JST TV00 TAG VARIABLE
- JMP* IV00 EXIT
-*
-*
-* ************************
-* *INPUT INTEGER VARIABLE*
-* ************************
-*
-IR00 DAC ** INPUT INT VAR
- JST IV00 INPUT INT VAR/CON
- JST NC00 NON-CONSTANT TEST
- JMP* IR00 RETURN
-*
-*
-* ************************
-* *INPUT STATEMENT NUMBER*
-* ************************
-* NUMBER IS FORMED AS SPECIAL NAME , NOT CONVERTED
-* TO NUMERIC
-*
-IS00 DAC **
-IS04 CRA
- STA NT
- STA IM
- STA IU IU = IM = IT = 0
- STA NTID PUT LEADING 'S' IN STATEMENT NO,
- LDA K79
- JST PACK
-IS10 JST ID00 INPUT DIGIT
- SZE
- JMP IS20 NOT A DIGIT GO TO IS20
- LDA NTID
- SUB K106
- SMI
- JMP IS22
- LDA TC
- JST PACK PACK TC TO ID - LEGAL ST, NO, CHAR
- LDA TID
- CAS K79X
- JMP IS10
- JMP IS04 IGNORE LEAD ZERO ON ST. NO,
- JMP IS10
-IS20 LDA NTID
- SUB K101
- SMI
- JMP IS25
-IS22 JST ER00
- BCI 1,ST ILLEGAL STATEMENT NUMBER FORMAT
-IS25 JST AS00 ASSIGN ITEM
- JST STXA
- LDA DP+1,1
- ANA K111
- STA DP+1,1 IU = 0
- LDA AF ADDRESS FIELD IS
- CAS XST LE XST - ALREADY ASSIGNED
- JMP* IS00
- JMP* IS00 OK - OTHERWISE
- LDA AT MUST HAVE STR-ABS OTHERWISE
- CAS K102
- JMP *+2
- JMP* IS00 !!!
- JST ER00
- BCI 1,RN REFERENCE TO A SPECIFICATION STMNT NUMBER
-K79 OCT 337
-K79X OCT 157660
-*
-SY00 DAC ** INPUT SYMBOL
- LDA K101
- STA NTF NTF NOT 0 - DON'T SET IU IN AS00
- JST NA00 INPUT NAME
- JMP* SY00 EXIT
-*
-* ************************
-* *EXAMINE NEXT CHARACTER*
-* ************************
-* CHECK NEXT CHAR FOR DIGIT (BACKUP ONE COL, THEN EXIT)
-*
-XN00 DAC **
- JST ID00 INPUT DIGIT
- JST UC00 UNINPUT COLUMM
- JMP* XN00
-K1 BCI 3,TRUE.
-K2 BCI 3,FALSE.
-K3 OCT 247
-KNOT BCI 3,NOT. CONSTANT FOR .NOT. TEST
-K11 OCT 304 0D
-K14 OCT 310 0H
-K62 OCT 316 0N
-K64 OCT 336 0)
-*
-*
-* ********************
-* *ALL CHARACTER TEST*
-* ********************
-*
-TS00 DAC ** TEST (A) AGAINST TC
- SUB TC
- SNZ
- JMP* TS00 RETURN
- JST ER00 TO ERROR TEST
- BCI 1,CH IMPROPER TERMINATING CHARACTER
-*
-*
-* *******************
-* *)- INPUT OPERATOR*
-* *******************
-*
-IP00 DAC **
- LDA K4 TEST - )
- JST TS00
- JST CH00 INPUT CHAR
- JST FN00 FINISH OPERATOR
- LDA B B = B-16
- SUB K109
- STA B
- CRA (A) = 0
- JMP* IP00 RETURN
-*
-*
-*
-* B1 COMMA OR C/R TST
-B1 LDA K134 IF TC = ','(CONVERTED TO 17)
- SUB TC
- SNZ
- JMP* A9T2 GO TO SIDSW
- JMP A1 ELSE, GO TO C/R TEST
-*
-*
-NR00 DAC ** NON-REL TEST
- LDA AT
- SUB K101 IF AT = 1 GO TO ERROR-
- SZE TEST
- JMP* NR00 RETURN
- JST ER00 ERROR TEST ROUTINE
- BCI 1,MS MULTIPLY DEFINED STATEMENT NUMBER
-*
-*
-* ***************
-* *NO USAGE TEST*
-* ***************
-*
-NU00 DAC ** N0 USAGE TEST
- LDA IU
- SNZ IF IU NOT = 0, TO ERROR
- JMP* NU00 RETURN
- JST ER00 ERROR TEST
- BCI 1,NU NAME ALREADY BEING USED
-*
-*
-* *******************
-* *NON-CONSTANT TEST*
-* *******************
-*
-NC00 DAC ** NON CONSTANT TEST
- LDA NT
- SNZ IF NT NOT = 0, TO ERROR TEST
- JMP* NC00 RETURN
- JST ER00 ERROR TEST
- BCI 1,NC CONSTANT MUST BE PRESENT
-*
-*
-* *********************
-* *NON SUBPROGRAM TEST*
-* *********************
-*
-NS00 DAC ** NON SUBPROGRAM TEST
- LDA IU
- SUB K101 IF IU = 1, GO TO-
- SZE ERROR TEST
- JMP* NS00 RETURN
- JST ER00 ERROR TEST
- BCI 1,NS SUBPROGRAM NAME NOT ALLOWED
-*
-*
-* **********
-* *ARR TEST*
-* **********
-*
-AT00 DAC ** ARRAY TEST
- LDA IU
- SUB K103 IF IU = 3, GO TO
- SNZ
- JMP* AT00 RETURN
- JST ER00 ERROR TEST
- BCI 1,AR ITEM NOT AN ARRAY NAME
-*
-*
-* **************
-* *INTEGER TEST*
-* **************
-*
-IT00 DAC ** INTEGER TEST
- LDA IM
- SUB K101 IF IM = 1, GO TO-
- SNZ ERROR ROUTINE, ELSE
- JMP* IT00 RETURN
- JST ER00 TO ERROR TEST
- BCI 1,IT ITEM NOT AN INTEGER
-*
-*
-TA00 DAC **
- LDA AT STRING-ABS TEST
- SUB K102
- SNZ
- JMP* TA00
- JST ER00
- BCI 1,NR ITEM NOT A RELATIVE VARIABLE
-*
-*
-*
-*
-*
-*
-*
-*
-AD3 DAC ** ADD TWO THREE WORD INTEGERS,
- LDA TID
- ADD DNX1
- CSA
- STA TID
- LDA TID+1
- ACA
- ADD DNX1+1
- CSA
- STA TID+1
- LDA TID+2
- ACA
- ADD DNX1+2
- STA TID+2
- JMP* AD3
-*
-*
-* ***********************
-* *ASSIGN INDEX REGISTER*
-* ***********************
-*
-STXA DAC **
- LDA A
- STA 0
- JMP* STXA
-STXI DAC **
- LDA I
- STA 0
- JMP* STXI
-K153 OCT 16
-IM00 DAC **
- STA T1IM MULTIPLY A BY B
- LDA K120 =-15
- STA T2IM
- CRA
- RCB C BIT = 0
-IM10 LRL 1 LOW BIT OF B INTO C
- SRC SKIP IF B = 0
- ADD T1IM
- IRS T2IM
- JMP IM10
- LLL 14
- JMP* IM00 RETURN, RESULT IN A
-T1IM PZE 0
-T2IM PZE 0
-*
-*
-NF00 DAC ** CONSTRUCT EXTERNAL NAME
- LDA K80 ENTRY FOR FORTRAN GENERATER
- STA NAMF
- LDA K81 SUBROUTINE CALLS,
- STA NAMF+2
- JMP* NF00
-K80 BCI 1,F$
-K81 BCI 1,
-KM92 DEC 1 001 = INT
- DEC 2 010 = REA
- DEC 1 011 = LOG
- DEC 0 - -
- DEC 4 101 = CPX
- DEC 3 110 = DSL
- OCT 3 111 = HOL
-*
-*
-BLNK DAC ** CLEAR A 3/36
- JST SAV AREA TO ZEROS
- LDA* BLNK
- STA XR
- CRA CLEAR 3 WORDS OF MEMORY
- STA 1,1 PARAMETER INPUT ADDRESS TO 0
- STA 2,1
- STA 0,1
- JST RST
- IRS BLNK
- JMP* BLNK EXIT
-*
-*
-MOV3 DAC ** MOVE 3-WORDS
- LDA TID TO TEMO STORE
- STA DNX1
- LDA TID+1
- STA DNX1+1
- LDA TID+2
- STA DNX1+2
- JMP* MOV3
-*
-*
-*
-*
-CIB DAC ** COMPARE IBUF TO A CONSTANT
- JST SAV SAVE INDEX
- LDA* CIB +DDR OF CON+3,0
- STA CIBZ
- CRA
- SUB K103 XR=-3
- STA XR
-CIBB LDA IBUF+3,1
- SUB* CIBZ
- SZE
- JMP CIBD
- IRS XR
- JMP CIBB
-CIBC IRS CIB
- JST RST RESTORE INDEX
- JMP* CIB
-CIBD IRS CIB
- JMP CIBC
-CIBZ DAC **
-*
-*
-*
-*
-SAV DAC ** SAVE INDEX REGISTER
- STA SAVY STACKED IN PUSH DOWN LIST
- LDA XR
- STA* SAV9
- IRS SAV9
- LDA SAVY
- JMP* SAV
-RST DAC ** RESTORE INDEX REGISTER
- STA SAVY
- LDA SAV9 UNSTACK PUSH DOWN LIST
- SUB K101
- STA SAV9
- LDA* SAV9
- STA XR
- LDA SAVY
- JMP* RST
-SAVY PZE 0
-SAV9 DAC SAVX IS INITIATED BY A092
-SAVX BSS 20
-*
-*
-PACK DAC ** PLACE CHARACTER IN A
- STA PAK7
- LDA NTID INTO ID - UPDATE 3 WORDS OF
-PAK1 SNZ
- JMP PAK4 ID
- LRL 1
- ADD PAK9
- STA PAK8
- LDA PAK7
- IAB
- SPL
- JMP PAK3
- LLL 24
- ADD K8
-PAK2 STA* PAK8
- IRS NTID
- JMP* PACK
-PAK3 LLL 8
- LDA* PAK8
- LGR 8
- LLL 8
- JMP PAK2
-PAK4 LDA PAK6
- STA TID
- STA TID+1
- STA TID+2
- STA TID+3
- LDA NTID
- JMP PAK1+2
-PAK6 BCI 1,
-PAK7 DAC **
-PAK8 DAC **
-PAK9 DAC TID
-*
-*
-* ***************
-* *ERROR ROUTINE*
-* ***************
-*
-ER00 DAC ** ERROR ROUTINE
- LDA SAV9
- STA SAVX
- LDA ER93 =-35
- STA 0 SET INDEX
- LDA ER91 (*)(*)
- STA PRI+35,1 SET ** INTO PRINT BUFFER
- IRS 0 SET COMPLETE PRINT BUFFER TO ********
- JMP *-2
- LDA CC
- ARS 1 CC = CC/2
- SUB K101 =1
- SPL
- CRA
- STA XR
- LDA EBAR (NEGATIVE IF NOT WITHIN AN EQUIVALENCE ST.)
- SPL SKIP IF PROCESSING AN EQUIVALENCE STATEMENT
- JMP *+3
- LDA KAEQ ='142721 (=(E)(Q) )
- STA PRI+1,1
- LDA* ER00
- STA PRI,1 SET ERROR TYPE LETTERS INTO THE BUFFER
- CALL F4$SYM PRINT THE BUFFER
- DAC PRI
- JST PRSP SET PRINT BUFFER TO SPACES
- LDA TC
-ER20 CAS CRET INPUT CHARACTERS UNTIL C/R
- JMP *+2
- JMP C7 GO TO STATEMENT INPUT
- JST CH00
- JMP ER20
-ER91 BCI 1,**
-ER93 OCT 177735 -35
-*
-*
-SRT DAC **
- JST SAV
- LDA* SRT SHIFT RIGHT ONE PLACE
- STA XR TRIPLE PRECISION
- LDA 0,1
- IAB
- LDA 1,1
- LRS 1
- LGL 1
- IAB
- STA 0,1
- LDA 2,1
- LRS 1
- STA 2,1
- IAB
- STA 1,1
- JST RST
- IRS SRT
- JMP* SRT
-*
-*
-SFT DAC ** TRIPLE PRECISION
- JST SAV SHIFT LEFT ONE PLACE
- LDA* SFT
- STA XR
- LDA 0,1
- IAB
- LDA 1,1
- LLS 1
- CSA
- STA 1,1
- IAB
- STA 0,1
- ACA
- LRS 1
- LDA 2,1
- LLS 1
- CSA
- STA 2,1
- JST RST
- IRS SFT
- JMP* SFT
-*
-LIST DAC **
- JST PRSP
- SR2
- JMP *+3
- CALL F4$SYM PRINT BLANK LINE
- DAC PRI
- CALL F4$SYM PRINT SOURCE INPUT LINE
- DAC CI
- JMP* LIST
-* *************
-* *ASSIGN ITEM*
-* *************
-* CHECKS ASSIGNMENT AREA OF DATA POOL (A0 TO ABAR)
-* FOR ITEM DEFINED BY ID, IM, IU, ETC.
-* IF FOUND, EXIT WITH POINTER AND
-* ASSIGNMENTS DATA SET, OTHERWISE
-* ASSIGN THE ITEM.
-*
-*
-*
-T0AS PZE 0
-AS00 DAC **
- CRA
- STA A A = A (0)
-AS04 JST STXA
- JST NXT GET NEXT ENTRY
- JMP AS30 AT END, GO TO AS30
- LDA NT
- SUB NTA NT = NT(A)
- SZE
- JMP AS04 NO, G0 TO AS04
- LDA TID
- SUB TIDA
- SZE
- JMP AS04 TID = TID(A)
- LDA TID+1
- SUB TIDA+1
- SZE
- JMP AS04 NO, GO TO AS04
- LDA TID+2
- SUB TIDA+2
- SZE
- JMP AS04
- LDA NT IF NT (A) .NE. 0,
- SNZ GO TO AS10
- JMP AS16 GO TO AS16 (4)
-AS10 LDA IM IF IM .NE. IM (A),
- SUB IMA GO TO AS04 (1)
- SZE
- JMP AS04
- LDA IU IF IU = 0,
- SNZ OR NOT EQUAL IU (A)
- JMP AS04 GO T0 AS04 (1)
- SUB IUA
- SZE
- JMP AS04 ELSE,
- LDA IM
- SUB K105 GO TO AS16 (4)
- SZE
- JMP AS16
- JST NXT ELSE, GET NEXT ENTRY
- JMP AS30
- LDA TIDA IF IU (A) = TIDB
- SUB TIDB GO TO AS16 (4)
- SZE ELSE, GO TO AS04 (1)
- JMP AS04
- LDA TIDA+1
- SUB TIDB+1
- SZE
- JMP AS04
- LDA TIDA+2
- SUB TIDB+2
- SZE
- JMP AS04
- LDA A
- SUB K105
- STA A
-AS16 LDA IUA IF IU (A) .NE. 0
- ADD NTF
- SZE
- JMP AS18 GO TO AS18 (5)
- LDA SPF IF SPF = 0, GO TO AS18 (5)
- SNZ
- JMP AS18
- LDA TC IF TC = (
- SUB K17
- SZE
- JMP AS19
- JST TG00 TAG SUBPROGRAM
-AS18 CRA SET NTF TO 0
- STA NTF SET NTF TO 0
- JST FA00 GO TO FETCH ASSIGNS
- JST STXA
- LDA IM
- JMP* AS00 RETURN
-AS19 JST TV00 TAG VARIABLE
- JMP AS18
-AS30 JST BUD BUILD ASSIGNMENT ENTRY
- LDA NT IF NT = 1
- SZE
- JMP AS32 OR IV = VAR,
- LDA IU
- SUB K102
- SZE
- JMP AS40 AMD
-AS32 LDA IM IF IM = CPX,
- SUB K105
- SZE
- JMP AS40
- STA IU MOVE 1ST PART OF
- LDA TIDB COMPLEX ENTRY TO
- STA TID TID AND BUILD
- LDA TIDB+1 ASSIGNMENT ENTRY
- STA TID+1
- LDA TIDB+2
- STA TID+2
- LDA A
- ADD K105
- STA A
- JST BUD
- LDA A
- SUB K105 RESTORE A
- STA A
-AS40 LDA ABAR
- SUB A TO = -(ABAR-A+5)
- ADD K105 GIVING NO. OF WORDS TO MOVE TABLES UP
- TCA
- STA T0AS
- TCA
- ADD DO CO=DO+TO
- STA DO
- LDA IFLG IF IFLG = 0, THERE IS NO EXPRESSION TABLE
- SNZ
- JMP AS60 GO TO AS60
- LDA I
- SUB T0AS
- STA I I = I - T0(T0 IS NEGATIVE)
- AOA
-AS41 CAS L CHECK AGAINST BOTTOM OF TRIAD TABLE
- NOP
- JMP AS50
- ADD '104 =DP,1
- STA AS91 AS91 = NEW TABLE TOP
- ADD T0AS
- STA AS92 AS92
- SUB T0AS COMPUTE SIZE OF FLOATING TABLES
- SUB '104 =DP,1
- SUB DO
- SNZ IF ZERO, ASSIGN TABLE ONLY,
- JMP AS16
- TCA
- STA T0AS
- CRA
- STA XR
-AS46 LDA* AS92 END-5
- STA* AS91 END (MOVE TABLES UP)
- LDA 0
- SUB K101 =1
- STA 0 REDUCE INDEX
- IRS T0AS = NO, OF WORDS TO MOVE
- JMP AS46
- JMP AS16
-AS50 JST ER00
- BCI 1,MO DATA POOL OVERFLOW
-AS60 LDA DO
- ADD D
- JMP AS41
-AS91 DAC 0
-AS92 DAC **
-*
-*
-*
-*
-* ****************
-* *TAG SUBPROGRAM*
-* ****************
-* TAG ITEM AS A SUBPROGRAM, CHECK TO SEE IF
-* NAME IS IN IMPLICIT MODE TABLE AND SET
-* MODE ACCORDINGLY
-*
-TG00 DAC **
- LDA IU
- SUB K101 IF IU = SUB
- SNZ
- JMP* TG00 RETURN, ELSE
- JST NU00 NO * USAGE TEST
- LDA TG22 =-21
- STA 0 SET INDEX
-TG04 LDA ID+1 CHARACTERS 3 AND 4
- CAS TGT2+21,1 IMPLICIT MODE SUBR. NAME TABLE
- JMP *+2
- JMP TG10
-TG06 IRS 0
- JMP TG04 NOT DONE WITH TABLE
-TG08 LDA K101 =1 (IU=SUBR.)
- STA IU
- JST STXA
- LDA DP+1,1 IU(A) = SUB
- LGL 1
- SSM
- LGR 1
- STA DP+1,1
- JMP* TG00 RETURN
-*
-TG10 LDA ID CHARACTERS 1 AND 2
- ANA K111 ='37777
- ADD HBIT ='140000
- SUB TGT1+21,1
- SZE
- JMP TG06 CONTINUE SEARCH
- LDA ID+2 CHARACTERS 5 AND 6
- SUB TGT3+21,1
- SZE
- JMP TG06 CONTINUE SEARCH
- LDA TGT1+21,1
- LGR 8
- ANA K107 =7 (=3 IF CPX, 4 IF DBL)
- ADD K102 =2 (=5 IF CPX, 6 IF DBL)
- JST DM00 DEFINE IM
- JMP TG08
-*
-TG22 OCT 177753 =-21
-*
-*...........IMPLICIT MODE SUBROUTINE NAME TABLE
-TGT1 BCI 6,DECEDLCLDLDS
- BCI 6,CSDCCCDSCSDA
- BCI 6,DADMDADMDMDS
- BCI 3,DBCMCO
-TGT2 BCI 6,XPXPOGOGOGIN
- BCI 6,INOSOSQRQRTA
- BCI 6,TAODBSAXINIG
- BCI 3,LEPLNJ
-TGT3 BCI 6, 10 /
- BCI 6, T T N /
- BCI 6,N2 1 1 N /
- BCI 3, X G /
-*
-*
-TIDA BSS 3
-TIDB BSS 3
-*
-* - TV00 TAG VARIABLE
-TV00 DAC **
- LDA IU IF IU = 'VAR',
- SUB K102
- SNZ
- JMP* TV00 RETURN
- JST NU00 ELSE, NO USAGE TEST
- JST STXA
- LDA DP+1,1
- ANA K111 IU (A) = 'VAR'
- SSM
- STA DP+1,1
- JMP* TV00 RETURN
-*
-*
-*
-*
-*
-* **************
-* *FETCH ASSIGN*
-* **************
-* SET ASSIGNMENT DATA FROM ASSIGN (EXCEPT ID)
-* EXPAND DIMENSION INFO IF ARRAY
-*
-FA00 DAC **
- JST STXA
- LDA DP,1
- LRL 15
- STA NT NT=NT(A)
- CRA
- LLL 3
- STA AT AT=AT(A)
- CRA
- LLL 3 IM = IM(A)
- STA IM
- STA 0
- LDA KM92-1,1
- STA D0 D0 = NUMBER OF WORDS
- ALS 2
- ADD D0
- STA X X = POINTER TO CONSTANT NUMBER OF WORDS
- JST STXA
- LDA DP+1,1
- LRL 14
- STA IU
- SUB K103 IF IU NOT 'ARR'
- SNZ
- JMP FA10
- CRA
- LLL 14 AF = GF(A)
- STA AF
- JMP* FA00
-FA10 LLL 14
- STA 0 INDEX = GF(A)
- LDA DP+4,1
- STA X1 POINTER OF DIMENSION 1
- LDA DP+3,1
- STA X2 POINTER OF DIMENSION 2
- LDA DP+2,1
- STA X3 POINTER OF DIMENSION 3
- LDA DP+1,1
- ANA K111 ='37777
- STA AF AF = GF(GF(A))
- LDA DP,1
- LGR 9
- ANA K107 =7
- STA ND NUMBER OF DIMENSIONS
- STA 0
- LDA K101 =1
- STA D2
- STA D3
- JMP* FA91-1,1
-FA22 LDA X3 FETCH 3RD DIMENSION SIZE
- STA XR
- JST FA40
- STA D3 STORE D3
-FA24 LDA X2
- STA XR
- JST FA40
- STA D2 D2 = 2ND DIMENSION SIZE
-FA26 LDA X1
- STA XR
- JST FA40
- STA D1 D1 = 1ST DIMENSION SIZE
- JST STXA EXIT WITH AF IN A
- LDA AF
- JMP* FA00
-FA40 DAC **
- LDA DP,1 IM OF SUBSCRIPT VALUE
- SSP
- LGR 12
- SUB K105 =5
- SZE SKIP IF DUMMY SUBSCRIPT
- LDA DP+4,1 FETCH VALUE OF SUBSCRIPT
- JMP* FA40
-FA91 DAC FA26
- DAC FA24
- DAC FA22
-*
-*
-* ************
-* *FETCH LINK*
-* ************
-* EXPAND LINK FIELD AND FETCH ASSIGNS FOR THE
-* LINKED ITEM
-*
-FL00 DAC **
- JST STXA
- LDA DP,1 A = 5 * CL(A)
- ANA K118
- STA FLT1
- ALS 2
- ADD FLT1 (FLT1 ALSO USED BY ASSIGN SPEC)
- STA A
- JST FA00 FETCH ASSIGN
- JST KT00 D0 = = WDS /ITEM
- LDA A
- SUB F (A) = A-F
- JMP* FL00 RETURN
-*
-*
-* *******************
-* *D0=WORDS FOR LINK*
-* *******************
-* D = ITEM MODE SIZE TIMES THE TOTAL SIZE IF
-* THE ITEM IS AN ARRAY
-*
-KT00 DAC **
- LDA IU IF IU NOT 'ARR'
- SUB K103
- SZE
- JMP* KT00 RETURN
- LDA D0
- IAB D0 = D0 * D1 * D2 * D3
- LDA D1
- JST IM00 MULTIPLY A BY B
- IAB
- LDA D2
- JST IM00 MULTIPLY A BY B
- IAB
- LDA D3
- JST IM00 MULTIPLY A BY B
- STA D0
- JMP* KT00 RETURN
-*
-*
-*
-* ***********
-* *DEFINE IM*
-* ***********
-* IM SUBA = IM (SET FROM A REG)
-*
-DM00 DAC **
- STA IM IM = (A)
- JST STXA ESTABLISH A
- LDA DP,1
- LRL 9
- LGR 3 IM(A) = IM
- LGL 3
- ADD IM
- LLL 9
- STA DP,1
- JMP* DM00
-*
-*
-* ***********
-* *DEFINE AF*
-* ***********
-* AF SUBA = AF (SET FROM A REG)
-*
-DA00 DAC **
- STA AF AF = (A)
- LRL 14
- JST STXA
-DA10 LDA DP+1,1 IF IU (A) NOT ARR
- LGR 14
- CAS K103 GF (A) : AF
- JMP *+2
- JMP DA20 ELSE, GF (GF (A)) = AF
- LLL 14
- STA DP+1,1
- JMP* DA00 RETURN
-DA20 LDA DP+1,1
- ANA K111
- STA GFA
- STA 0
- JMP DA10
-NXT DAC ** GET NEXT ENTRY
- LDA A FROM ASSIGNMENT
- ADD K105 =5
- STA A
- STA 0
- CAS ABAR
- JMP* NXT
- NOP
- IRS NXT
- LDA DP,1
- LRL 15
- STA NTA NT(A) = NT FROM (A)
- CRA
- LLL 3
- STA ATA AT(A) = AT FROM (A)
- CRA
- LLL 3
- STA IMA IM(A) = IM FROM (A)
- CRA
- LLL 9
- STA CLA CL(A) = CL FROM (A)
- LDA DP+1,1
- LRL 14
- STA IUA IU(A) = IU FROM (A)
- CRA
- LLL 14
- STA GFA GF(A) = GF FROM (A)
- LDA DP+2,1
- STA TIDA+2 TID(A) = TID FROM (A)
- LDA DP+3,1
- STA TIDA+1
- LDA DP+4,1
- STA TIDA
- LRL 15
- STA DTA DT(A) = DT FROM (A)
- CRA
- LLL 1
- STA TTA TT(A) = TT FROM (A)
- LDA NTA NT(A) = NT FROM (A)
- SZE
- JMP* NXT
- LDA DP+4,1
- SSM
- ALR 1
- SSM
- ARR 1
- STA TIDA
- JMP* NXT
-*
-*
-BUD DAC ** BUILD ASSIGNMENT
- JST STXA
- STA ABAR
- LDA TID TABLE ENTRY
- STA DP+4,1
- LDA TID+1
- STA DP+3,1
- LDA TID+2
- STA DP+2,1
- LDA IU
- STA IUA
- LGL 14
- STA DP+1,1
- LDA NT
- LGL 3
- ADD K102 AT = STR/+BS
- LGL 3
- ADD IM
- LRL 16
- STA CL
- LDA K102
- STA AT
- LDA A CL(A) = A/5
- SUB K105
- SPL
- JMP *+3
- IRS CL
- JMP *-4
- LLL 25
- ADD CL
- STA DP,1
- SPL
- JMP* BUD
- LDA DT
- LGL 1
- ADD TT
- LGL 14
- IMA DP+4,1
- ANA K111
- ADD DP+4,1
- STA DP+4,1
- JMP* BUD
-*
-*
-*
-*
-*
-* ************
-* *DEFINE AFT*
-* ************
-* AT SUBA = AT (FROM B REG), THEN DEFINE AF
-*
-AF00 DAC **
- IAB
- STA AF90
- JST STXA
- LDA AF90
- LGL 12
- IMA DP,1
- ANA AF91
- ADD DP,1
- STA DP,1 AT(A) = CONTENTS OF B INPUT
- IAB
- JST DA00 DEFINE AF
- JMP* AF00
-AF90 PZE 0
-AF91 OCT 107777
-*
-*
-* *****************
-* *DEFINE LOCATION*
-* *****************
-* SET AF = RPL, AT = REL
-LO00 DAC **
- LDA K101 REL
- IAB
- LDA RPL
- JST AF00 DEFINE AF
- JMP* LO00
-* *************************
-* *ASSIGN INTEGER CONSTANT*
-* *************************
-* IM (INTEGER), IU(VARIABLE) , ASSIGN SPECIAL
-AI00 DAC **
- CRA
- STA ID+1
- STA ID+2
- LDA K101 (B) = INT
- IAB
- LDA K102 (A) = VAR
- JST AA00 ASSIGN SPECIAL
- JMP* AI00 RETURN
-*
-*
-* ****************
-* *ASSIGN SPECIAL*
-* ****************
-* B REG TO IM, A REG TO IU, 1 TO NT (CONSTANT), THEN
-* ASSIGN ITEM
-AA00 DAC **
- STA IU IU = (A)
- IAB
- STA IM IM = (B)
- LDA K101
- STA NT NT = 1
- JST AS00 ASSIGN ITEM
- JMP* AA00 RETURN
-*
-*
-* **********
-* *JUMP *
-* *ILL TERM*
-* **********
-*
-* CLEAR LAST OP FLAG FOR NO PATH TESTING
-*
-B6 CRA
- STA LSTP LSTP = 0
-* SET ILLEGAL DO TERM FLAG
-C5 LDA K101
- STA LSTF LSTF =1
-A1 LDA CRET
- JST TS00 IF TC NOT C/R, ERROR
- JMP C6
-*
-*
-* **********
-* *CONTINUE*
-* **********
-* WRAPUP LOGICAL IF, CHECK TRACE STOP AND SEARCH
-* DO TABLE FOR DO TERMINATION
-C6 LDA LIF
- SZE IF LIF NON-ZERO,
- JMP C6H GO TO
-C6A LDA LSTN IF LSTN NON-ZERO,
- SZE GO TO
- JMP C6C
-C6B STA LSTF LSTF = 0
- JMP C7 GO TO STATEMENT INPUT
-C6C SUB TRF TRACE FLAG
- SNZ SMP IF NOT END OF TRACE ZONE
- STA TRF SET TRF TO ZERO (TURN FLAG OFF)
- LDA DO START OF DO TABLE
- ADD D
-C6D STA I I = DO + D
- JST STXI
- SUB DO
- SNZ
- JMP C6B GO TO C6B - FINISHED DO
- LDA DP-4,1
- SUB LSTN
- SZE
- JMP C6E
- LDA LSTF
- SZE
- JMP C6K
- JST DQ00 DO TERMINATION
- LDA D
- SUB K105
- STA D D = D-5
- LDA LSTF
-C6E STA LSTF
- LDA I
- SUB K105
- JMP C6D I = I-5 - CONTINUE DO LOOP
-C6H LDA IFF
- STA A
- SNZ
- JMP C6J
- LLL 16
- LDA OMI5 (A) = JMP INSTRUCTION
- JST OB00 OUTPUT OA
- CRA
- STA IFF IFF = 0
-C6J STA A A = U
- LDA LIF
- STA LSTP SET TO NON-ZERO TO PREVENT DATA ERROR MSG
- JST OS00 OUTPUT STRING - RPL
- JMP C6A
-*
-C6K JST ER00
- BCI 1,DT
-*
-* *****************
-* *STATEMENT INPUT*
-* *****************
-* SET UP PROCESSING OF NEXT SOURCE STATEMENT
-* PROCESS STATEMENT NUMBER IF PRESENT
-* WRAPUP ANY OUTSTANDING ARITHMETIC IF
-C7 CRA
- STA LSTN LSTN = 0
- STA IFLG IFLG = 0
- STA LIF LIF = 0
- LDA L0 L = L (0)
- STA L
- LDA CI CHECK CARD COLUMN 1
- LGR 8 FOR $ CHARACTER
- SUB K15 *($)
- SNZ
- JMP CCRD CONTROL CARD
- JST XN00 EXAMINE NEXT CHAR
- SZE
- JMP C71
- JST IS00 INPUT STATEMENT =
- LDA A
- STA LSTN LSTN = A
- STA LSTP
-C71 LDA IFF CHECK FOR IFF=0
- LDA IFF IF IFF = 0,
- SNZ
- JMP C7B GO TO C7B
- SUB LSTN IF = LSTN
- SZE
- JMP C7C
-C7A STA IFF IFF = 0
-C7B JST C7LT LINE TEST
- JMP C8
-C7C LDA IFF IFF = A
- STA A
- LRL 32
- LDA K201 (A) = JMP INSTRUCTION
- JST OB00 OUTPUT OA
- CRA
- JMP C7A GO TO C7A
-C7LT DAC ** LINE TEST
- LDA CI+2 CI = BLANK
- ANA K116 LIST LINE
- ADD K8 RETURN
- STA CI+2
- LDA TC
- SUB HC2 IF TC : SPECIAL
- SZE
- JMP C7LU
- JST LIST
- JMP* C7LT
-C7LU JST ER00 CONSTRUCTION ERROR
- BCI 1,SC STATEMENT NO. ON A CONTINUATION CARD
-*
-*
-*
-* ************************
-* *CONTROL CARD PROCESSOR*
-* ************************
-CCRD JST FS00 FLUSH BUFFER IF NECESSARY
- JST LIST LIST CARD
- LDA CI WORD CONTAINING COLUMN 1
- LGL 12
- SNZ
- LDA CCRK ='030000 (EOJ CODE = 3)
- LGR 6 TRUNCATE TO A DIGIT
- STA OCI
- LDA K106 =6
- STA OCNT SET BUFFER WORD COUNT TO 3
- JST FS00 FLUSH BUFFER
- LDA CI
- LGL 12 CHECK COLUMN 1 FOR CONTROL CODE 0
- SZE
- JMP ER20 SKIP TO NEXT CARD (NOT CONTROL CARD)
- CALL F4$END CLOSE-OUT I/0 DEVICES AND STOP
- JMP A0 RESTART NEW COMPILATION
-CCRK OCT 030000 EOJ CONTROL CODE
-*
-* ****************
-* *STATEMENT SCAN*
-* ****************
-* DETERMINE THE CLASS OF THE STATEMENT
-* IF AN = IS FOUND WITH A FOLLOWING ,
-* THE STATEMENT IS A DO
-* IF NO FOLLOWING COMMA, THE PAREN FLAG
-* IS TESTED, IF NO PARENS, THE STATEMENT
-* IS ARITHMETIC ASSIGNMENT
-* IF PARENS WERE DETECTED AND THE FIRST
-* NAME IS AN ARRAY, THE STATEMENT IS
-* ARITHMETIC ASSIGNMENT
-* OTHERWISE, IT IS A STATEMENT FUNCTION
-* IF NO = IS FOUND, THE STATEMENT IS
-* PROCESSED FURTHER IN STATEMENT ID
-C8T1 PZE 0
-C8 LDA CC SAVE CC
- STA C8X9
- LDA K101
- STA C8T1 T (1) = 1
- CRA
- STA ICSW ICSW = SIR
-C8A JST CH00 INPUT CHARACTER
-C8B LDA TC IF TC = )
- SUB K4
- SZE
- JMP C8C
- JST CH00 INPUT CHAR
-C8B2 LDA DFL IF DFL NOT ZERO
- SZE
- JMP C8B GO TO C8B
-C8B4 LDA C8X9 RESTORE CC
- STA CC
- LDA K101 IPL
- STA ICSW ICSW = IPL
- JMP A9 GO TO STATEMENT ID
-C8C LDA TC IF TC NOT (,
- SUB K17
- SZE
- JMP C8D GO TO C8D
- LDA C8T1 T1 = T1 - 1
- SUB K101
- STA C8T1
-C8C4 SZE IF T1 = 0
- JMP C8B4
- JST DN00 INPUT DNA
- JMP C8B2 GO TO C8B2
-C8D LDA TC IF TC = ,
- CAS K134 ='17 ('FINISHED' CODE FOR COMMA)
- JMP *+2
- JMP C8D2 TC = COMMA
- SUB K5
- SZE
- JMP C8E
-C8D2 LDA C8T1 GO TO C8C4,
- JMP C8C4
-C8E LDA TC ELSE, IF TC = '/'
- SUB K9
- SNZ
- JMP C8B4 GO TO C8B4
- LDA TC
- SUB K18 IF NOT = ,
- SZE
- JMP C8A GO TO C8A
- LDA K107 INPUT 7 CHARACTERS
- JST IA00
- LDA C8X9 RESTORE CC
- STA CC
- LDA K101 IPL
- STA ICSW ICSW = IPL
- LDA TC
- SUB K5 IF TC NOT,
- SZE
- JMP C8G GO TO C8G
- LDA K102 ELSE, INPUT 2 CHARS
- JST IA00
- LDA IBUF IF (A) = 'DO'
- SUB K19
- SNZ
- JMP *+3
- JST ER00
- BCI 1,CM COMMA OUTSIDE PARENTHESES, NOT IN DO STMNT,
- LDA K104
- JST NP00 FIRST NON-SPEC CHECK
- JMP C9 GO TO DO
-C8G LDA C8T1 1 IF NO ( TO LEFT OF EQUALS
- SZE
- JMP G2 ARITHMETIC ASSIGNMENT STATEMENT
- JST SY00 INPUT SYMBOL
- LDA C8X9
- STA CC RESTORE CC
- LDA IU IF IU = SUBR
- SUB K103
- SZE
- JMP G1 GO TO ARITH ST. FUNCT,
- JMP G2 OTHERWISE = ASSIGNMENT STATEMENT
-C8X9 PZE 0
-*
-*
-* **************************
-* *STATEMENT IDENTIFICATION*
-* **************************
-* READ FOUR CHARACTERS AND DETERMINE CORRECT ROUTINE
-* FOR PROCESSING, THEN CHECK SPELLING ON REST
-A9T1 PZE 0
-A9T2 PZE 0
-A9T3 PZE 0
-A9 LDA K104
- JST IA00 INPUT (4) CHARS
- LDA IBUF
- STA NAMF NAMF = IBUF
- LDA IBUF+1
- STA NAMF+1
- LDA A9Z9 INITIALIZE INDEX FOR LOOP
- STA XR THROUGH THE STATEMENT NAMES
-A9A LDA NAMF
- SUB A9X1+30,1
- SZE
- JMP A9F READ IN REST OF
- LDA NAMF+1 CHECK REST OF SPELLING FOR
- SUB A9X2+30,1
- SZE A MATCH ON 4 CHARACTERS
- JMP A9F NOT FOUND
- LDA A9X4+30,1
- ANA K133
- STA A9T1 T1 = NUMBER OF REMAINING CHARACTERS
- LDA A9X3+30,1 LEFT TO CHECK
- LRL 13
- IAB
- LGR 3
- STA A9T2 T2 = ADDRESS OF ROUTINE
- IAB
- JST NP00 FIRST NON-SPECIFIC. CHECK -(A) =
-A9B LDA A9T1 HIERARCHY CODE
- SZE
- JMP A9C MUST CHECK MORE CHARACTERS
- JMP* A9T2 FINISHED CHARACTER CHECK, EXIT TO
-* SPECIFIC ANALYZER.
-A9C SUB K106
- SPL
- JMP A9E
- STA A9T1
- LDA K106 REMAINING SPELLING 1S CHECKED.
-A9D STA A9T3
- JST IA00
- SUB A9T3
- SNZ
- JMP A9B
- JST ER00
- BCI 1,SP STATEMENT NAME MISSPELLED
-A9E ADD K106
- IMA A9T1
- CRA
- IMA A9T1
- JMP A9D
-A9F IRS XR LOOP CONTROL FOR STATEMENT NAMES.
- JMP A9A MORE NAMES - CONTINUE LOOP
- LDA TC
- SUB CRET
- SZE
- JMP A9G
- LDA LSTN TC = C/R
- SNZ
- JMP C7 AND LSTN = 0 - INPUT NEW STATEMENT
-A9G JST ER00
- BCI 1,ID UNRECOGNIZED STATEMENT
-A9X1 BCI 10,INREDOCOLOFUSUBLEXDI
- BCI 10,COEQGOCARECOFOIFWRRE
- BCI 7,BAENREENASSTPA
- BCI 2,DATR
- BCI 1,PR
-A9X2 BCI 10,TEALUBMPGINCBROCTEME
- BCI 10,MMUITOLLTUNTRM( ITAD
- BCI 3,CKDFWI
- OCT 142215 D, C/R
- BCI 3,SIOPUS
- BCI 2,TAAC
- BCI 1,IN
-A9X3 DAC A3
- DAC A4
- DAC A5
- DAC A6
- DAC A7
- DAC R1
- DAC R2
- DAC R3
- DAC B2
- DAC B3
- DAC B4
- DAC B5
- DAC* R7
- DAC* R8
- DAC* R9
- DAC* CONT
- DAC* V2
- DAC* V3
- DAC* V4
- DAC* V5
- DAC* V6
- DAC* V7
- DAC* V8
- DAC W5+'20000
- DAC* W3
- DAC* W7
- DAC* W8
- DAC W4,1
- DAC* TRAC+'20000,1 TRACE STATEMENT
- DAC* V10
-*
-* ******************************
-* *CONTINUE STATEMENT PROCESS0R*
-* ******************************
-CONT LDA LSTP ACCOUNTS FOR POSSIBLE PATH ERROR
- ADD LSTN ACCOUNTS FOR POSSIBLE PATH ERROR
- STA LSTP ACCOUNTS FOR POSSIBLE PATH ERROR
- JMP C6
-*
-*-------------THE FOLLOWING TABLE IS USED BY STATEMENT ID
-*-------------(RIGHT 6 BITS) AND OUTPUT ITEM,
-A9X4 OCT 000003 (00)
- OCT 030100 (01) + (A$--)
- OCT 032313 (02) - (S$--)
- OCT 031503 (03) * (M$--)
- OCT 030403 (04) / (D$--)
- OCT 000004 (05) .NOT.
- OCT 000006 (06) .AND.
- OCT 031405 (07) .OR. (L$-,
- OCT 000004 (10) .LT.
- OCT 000005 (11) .LE.
- OCT 000002 (12) .EQ.
- OCT 000007 (13) .GE.
- OCT 000000 (14) .GT.
- OCT 000000 (15) .NE.
- OCT 031003 (16) = (H$--)
- OCT 000005 (17) ,
- OCT 030503 (20) 'E' (E$--)
- OCT 031600 (21) 'C' NC$--)
- OCT 000001 (22) 'A'
- OCT 000000 (23)
- OCT 000005 (24) 'X'
- OCT 000003 (25) 'H'
- OCT 000002 (26) 'L'
- OCT 000000 (27) 'I'
- OCT 000002 (30) 'T'
- OCT 031400 (31) 'F' (L$--)
- OCT 000001 (32) 'Q'
- OCT 000000
- OCT 000001
- OCT 000001
-A9Z9 DAC* -30,1 NO. OF ITEMS IN STMNT NAME TABLE
-*
-*
-* **********************
-* *FIRST NON-SPEC CHECK*
-* **********************
-* AT FIRST SHIFT IN LEVEL FROM ZERO, WRAP-UP
-* SPECIFICATION STATEMENTS
-T0NP PZE 0
-NPT0 EQU T0NP
-T2NP PZE 0
-T1NP PZE 0
-NP00 DAC **
- STA NPT0 T0 = (A)
- LDA A
- STA T1NP T1 = A
- LDA NPT0
- CAS K107 =7
- JMP *+2
- JMP NP10 TRACE STMNT. (MAY OCCUR ANYWHERE)
- CAS SPF T0 , G.R. SPF, GO TO NP30
- JMP NP30 T0 = SPF, G0 TO NP25
- JMP NP25
- LDA TC IF TC = C/R
- SUB CRET GO TO NP10
- SNZ
- JMP NP10
- JST ER00 ELSE, ILLEGAL STATEMENT
- BCI 1,EX SPECIFICATION STATEMENT APPEARS AFTER
-*
-NP10 LDA LSTN SPECIFICATION STATEMENT CLEAN-UP
- STA A A = LSTN
- SNZ
- JMP NP16 IF ZERO, RETURN
- JST FA00 FETCH ASSIGNS
- LDA K103 STR-REL
- SUB AT
- SZE
- JMP NP20
- LDA AF
- JST OS00 OUTPUT STRING RPL
-NP15 JST LO00 DEFINE LOCATION
- LDA NAMF
- SUB A9X1+16
- SZE
- JST TRSE OUTPUT TRACE COUPLING
-NP16 LDA T1NP
- STA A
- JMP* NP00
-NP20 JST NR00 NON-REL TEST
- JMP NP15
-NP25 LDA LIF
- SZE
- JMP NP16
- LDA LSTP IF LSTP + LSTN =0
- ADD LSTN
- SZE
- JMP NP10
- IRS LSTP
- JST ER00 'NO PATH' ERROR
- BCI 1,PH NO PATH LEADING TO THE STATEMENT
-NP30 LDA SPF IF SPF 0 0
- SZE
- JMP NP37
-NP32 LDA TC
- STA T2NP T2 = TC
- LDA RPL
- STA XST XST = RPL
- LDA BDF BLOCK DATA SUBPROGRAM FLAG
- SZE SKIP IF NOT BLOCK DATA SUBPROGRAM
- JMP C2 GO TO RELATE COMMON
- STA A SET LISTING FOR OCTAL ADDR.
- LDA OMI5 JMP INSTRUCTION
- STA DF SET LISTING FOR SYMBOLIC INSTR.
- JST OA00 OUTPUT ABSOLUTE
- JMP C2 GO TO RELATE COMMON
-NP35 LDA T2NP
- STA TC
-NP37 LDA T0NP
- STA SPF SPF = T0
- SUB K104
- SZE
- JMP NP10
-NP40 STA A SET LISTING FOR OCTAL ADDR.
- LDA XST LOCATION OF INITIAL JUMP
- JST OS00 OUTPUT STRING
- LDA RPL
- STA XST XST = RPL
- JMP NP10 GO TO NP10
-*
-* *****************
-* *IF( PROCESSOR*
-* *****************
-* ARITHMETIC IF ($1 $2 $3)
-* IF $2 NOT = $3, JZE $2
-* IF $3 NOT = $1, JPL $3
-* (IF $1 NOT = NEXT ST NO., JMP $1) LATER
-* LOGICAL IF
-* OUTPUT JZE 77777 (FOR STRINGING AROUND
-* IMBEDDED STATEMENT)
-V3 JST II00 INPUT ITEM
- SNZ
- JMP V310 IM=0 (POSSI8LE UNARY + OR -)
- LDA DFL
- SZE
- JMP V310 FIRST ITEM IN EXPRESSION 0.K.
-V308 JST ER00 ERROR.....IF(SENSE SWITCH,.ETC).....
- BCI 1,IF ILLEGAL IF STATEMENT TYPE
-V310 CRA (A)=0
- JST EX00 EXPRESSION EVALUATOR
- LDA K4
- JST TS00 )-TEST
- CRA
- STA A SET A TO SPECIAL (IF) ENTRY IN DATA POOL
- STA 0
- LDA MFL SET MODE OF EXPRESSION INTO SPECIAL (IF)
- LGL 9
- STA DP,1
- JST TRSE OUTPUT TRACE COUPLING (IF NECESSARY)
- LDA MFL CHECK MODE FLAG FOR LOGICAL
- SUB K103
- SZE
- JMP V320 ARITHMETIC IF
- LDA LIF
- SZE
- JMP V308
- STA AF SET ADDR OF SNZ AND JMP INSTR TO 00000
- LDA OMJ2 =SNZ INSTR.
- JST OA00 OUTPUT ABSOLUTE
- LDA RPL SET LIF=CURRENT +DDR, (STRING BACK)
- STA LIF
- LDA OMI5 =JMP 0 INSTR.
- JST OA00 OUTPUT ABSOLUTE
- JST XN00 GO TO NEXT INPUT LINE
- JMP C8 GO TO STATEMENT SCAN
-*
-V320 SUB K102 CHECK FOR MODE = COMPLEX
- SNZ
- JMP V308 ERROR,...COMPLEX MODE EXPRESSION
- LDA V356 =-3
- STA I
-V324 JST IS00 INPUT STATEMENT NUMBER
- JST STXI SET INDEX TO I
- LDA A
- STA T1V3+3,1 SAVE BRANCH ADDRESSES
- IRS I I=I+1
- JMP V350 CHECK FOR TERMINAL COMMA
- LDA T3V3
- CAS T2V3 CHECK FOR ADDR-2 = ADDR-3
- JMP *+2
- JMP V330 ADDR-2 = ADDR-3
- CRA
- STA A
- LDA OMJ2 =SNZ INSTR.
- STA DF
- JST OA00 OUTPUT ABSOLUTE
- LDA T2V3
- JST V360 OUTPUT A JMP(ADDR-2) INSTR.
- LDA T3V3
-V330 CAS T1V3 CHECK FOR ADDR-3 = ADDR-2
- JMP *+2
- JMP V340 ADDR-3 = ADDR-1
- CRA
- STA A
- LDA OMJ3 =SMI INSTR.
- JST OA00 OUTPUT ABSOLUTE
- LDA T3V3
- JST V360 OUTPUT A JMP (ADDR-3) INSTR.
-V340 LDA T1V3
- STA IFF SET IFF ' ADDR-1
- JMP C5 GO TO ILL-TERM
-*
-V350 LDA K5
- JST TS00 COMMA TEST
- JMP V324 INPUT NEXT STATEMENT NO.
-*
-V356 OCT 177775 -3
-*
-*---------------SUBROUTINE TO OUTPUT A RELATIVE JMP
-V360 DAC **
- STA A SET ADDR. OF JUMP REF. TO A
- CRA
- IAB SET (B) = 0
- LDA OMI5 SET (A) = JMP INSTR.
- JST OB00 OUTPUT OA
- JMP* V360 EXIT
-*
-T1V3 *** ** ADDR-1
-T2V3 *** ** ADDR-2
-T3V3 *** ** ADDR-3
-*
-* *******
-* *GO TO*
-* *******
-* CHECK FOR NORMAL (R740), COMPUTED (R710) OR
-* ASSIGNED (R730). INPUT BRANCH LIST USED BY BOTH
-* R710 AND R730 FOR STATEMENT NO. LIST.
-*
-*
-R7 JST XN00 EXAMINE NEXT CHAR
- SZE
- JMP R78 GO TO TEST DFL
- JST IS00 INPUT STMNT =
- LDA A (GO TO 20)
- STA IFF IFF = A
- JMP C5 G0 TO ILLTERM
-R78 LDA DFL
- SZE
- JMP R7D
- JST IR00 GO TO I (10, 20, 30}
- LRL 32
- LDA K206 OUTPUT JMP* INSTRUCTION
- JST OB00 OUTPUT OA
- LDA K134
- JST TS00 , TEST
- JST IB00 INPUT BRANCH LIST
- JMP B6 GO TO JUMP
-R7D JST IB00 INPUT BRANCH LIST GO TO (10,11,12), I
- LDA K134
- JST TS00 , TEST
- JST IR00 INPUT INT VAR
- LRL 32
- LDA K200 OUTPUT LDA
- JST OB00 OUTPUT OA
- CRA
- STA A
- STA AF CAUSE OCTAL ADDRESS IN LISTING
- LDA K75
- JST OA00 OUTPUT ABS (STA 0) - INDEX LOAD
- LDA RPL
- STA AF CAUSE RPL T0 BE IN LISTING
- LDA K207
- JST OR00 OUTPUT RELATIVE (JMP RPL,1)
- LDA L0
-R7F SUB K101
- STA I I = L (0)
- JST STXI
- LDA DP,1
- STA A
- JST STXA
- SNZ
- JMP B6 FINISHED LOOPING ON LIST
- LLL 16
- LDA K201 OUTPUT JMP INSTRUCTIONS
- JST OB00 OUTPUT OA (JMP 0)
- LDA I
- JMP R7F
-* *******************
-* *INPUT BRANCH LIST*
-* *******************
-* INPUT STATEMENT NO. LISTS FOR GO TO PROCESSOR
-IB00 DAC **
- LDA L0
- SUB K101
- STA I I = L0-1
- JST CH00 INPUT CHAR
- LDA K17
- JST TS00 (- TEST
-IB10 JST IS00 INPUT STMNT =
- JST STXI
- LDA A
- STA DP,1 SET POINTER OF ST. N0. INTO TRIAD TABLE
-* AREA
- LDA I DP (J) = A
- SUB K101
- STA I I = I-1
- LDA TC IF TC = , GO TO IB10
- SUB K5
- SNZ
- JMP IB10 CONTINUE LOOP
- CRA
- STA DP-1,1 SET END FLAG INTO TABLE
- JST IP00 )- INPUT OPEN
- JMP* IB00 EXIT
-K75 STA 0
-*
-*
-* ********
-* *ASSIGN*
-* ********
-* CHECK TO SEE THAT 'TO' IS INCLUDED PROPERLY
-W3 JST IS00 INPUT STMNT =
- LDA A
- STA T1W3 SAVE A
- LDA TC
- SUB K34 CHECK FOR T0
- SZE
- JMP W305 CLEAR A FOR OUTPUT REL
- STA A CAUSE OCTAL ADDRESS IN LIST
- JST CH00 INPUT CHAR
- LDA TC
- SUB K35
- SNZ
- JMP *+3
-W305 JST ER00 ERROR
- BCI 1,TO GO TO IN ASSIGN STATEMENT
- LDA RPL
- ADD K102
- STA AF OUTPUT REL LDA *+2
- LDA K200 OUTPUT LDA *+2
- JST OR00 OUTPUT REL
- LDA RPL
- ADD K102
- STA AF OUTPUT REL JMP *+2
- LDA K201
- JST OR00 OUTPUT OA
- LRL 32
- LDA T1W3
- STA A RESTORE A
- CRA
- JST OB00 OUTPUT DAC ST. NO.
- JST IR00 INPUT INTEGER VARIABLE
- LRL 32
- LDA K202 OUTPUT STA INSTRUCTION
- JST OB00 OUTPUT OA
- JMP A1 GO TO C/R TEST
-T1W3 PZE ** TEMP STORE
-*
-*
-* ************************
-* *DO STATEMENT PROCESSOR*
-* ************************
-* STACK INFO IN DO TABLE. OUTPUT DO INITIAL
-* CODE
-C9T0 PZE **
-C9 JST IS00 INPUT STATEMENT =
- JST NR00 NON-REL TEST
- LDA A
- STA C9T0 T0 = A
- JST UC00 UNINPUT COLUMN
- JST IR00
- LDA C951
- JST TS00
- LDA C9T0 (A) = T0
- IAB
- JST DP00 DO INPUT
- JST DS00 DO INITIALIZE
- JMP C5 GO TO ILLTERM
-C951 OCT 16 =
-*
-*
-* **********
-* *END FILE*
-* **********
-* ***********
-* *BACKSPACE*
-* *REWIND *
-* ***********
-V6 LDA K71
-V6A STA NAMF+1
- JST NF00 SET UP NAMF
- JST OI00 OUTPUT I/0 LINK
- JMP A1 GO TO C/R TEST
-V7 LDA K72
- JMP V6A
-V8 LDA K73
- JMP V6A
-K71 BCI 1,FN FN
-K72 BCI 1,DN
-K73 BCI 1,BN BN
-*
-*
-* **************
-* *READ *
-* *WRITE *
-* *INPUT FORMAT*
-* **************
-* LIST ELEMENT DATA AND IMPLIED DO CONTROL
-* STACKED IN TRIAD TABLE. PROCESSED BY
-* OUTPUT TRIAD ROUTINE, SPECIAL OPERATORS
-* ARE -I = DO INITIALIZATION
-* T = DO TERMINATION
-* Q = I/0 ARG TRANSFER
-T0V5 PZE **
-V5 LDA K41 FSRN
- STA NAMF+1
- JST XN00 EXAM NEXT CHAR
- SZE
- JMP V5A GENERAL READ
- LDA V5K4
- JMP V10A CARD READ
-V4 LDA K40 NAWF = F$WN
- STA NAMF+1
-V5A JST NF00 SET UP REMAINING NAME
- LDA D
- STA V5T1
- JST CH00 INPUT CHARACTER
- LDA K17 ='250......(
- JST TS00 (-TEST
- JST OI00 OUTPUT I0 LINK
- LDA TC IF TC .NE. ,
- SUB K134 ='17 (,)
- SZE G0 10 V5J
- JMP V5J
- JST V5X INPUT FORMAT
-V5B JST IP00 ) - INPUT OPERATOR
- LDA TC
- SUB CRET TEST FOR TC=C/R
- SZE
- JMP V5C N0, G0 TO V5C
-V5B2 LDA K42 YES. NAMF = ND
- STA NAMF+1
- JST CN00 CALL NAME
- LDA V5T1
- STA D
- JMP A1 G0 TO C/R TEST
-V5C JST UC00
-V5C5 CRA
- STA IOF IOF = 0
-V5D JST II00 INPUT ITEM
- SZE
- JMP V5E IF (A) NOT 0, GO TO V5E
- LDA K17
- JST TS00 (-TEST
- CRA
- STA O2 O2 = 0
- LDA IOF
- STA O1 01 = IOF
- LDA V5K1 = '27
- STA P
- JST ET00
- LDA L
- STA IOF IOF = L
- JMP V5D GO TO V5D
-V5E JST NC00 NON-CONSTANT TEST
- LDA IU IF IU NOT ARR
- SUB K103
- SZE
- JMP V5H GO TO V5H
- LDA TC
- SUB K17 IF TC NOT -(,
- SZE
- JMP V5G GO TO V5G
- LDA D0
- STA T0V5 T5 = D0
- LDA K103
- TCA
- JST EX00 EXPRESSION
- LDA T0V5
- STA D0 D0 = T5
-V5E5 LDA A
- STA O2
- LDA D0 O2 = D0
- STA O1
- LDA V5K2 ='32
- STA P
- JST ET00 ENTER TRIAD
-V5E7 LDA TC IF TC = COMMA
- SUB K134 GO T0 V5D
- SNZ
- JMP V5D
- LDA IOF I = IOF
- STA I
- SZE IF NOT ZERO,
- JMP V5F GO TO V5F
- JST OT00 OUTPUT TRIADS
- JMP V5B2 GO TO V5B2
-V5F JST IP00 )-INPUT OPERATOR
- JST STXI
- LDA DP+1,1
- STA IOF IOF = O1 (I)
- JMP V5E7
-V5G JST KT00 K = = WDS/ITEM
- JMP V5E5 GO TO V5E5
-V5H JST TV00 TAG VARIABLE
- LDA TC
- SUB K16X ='16 (=)
- SZE GO TO V5E5
- JMP V5E5 ELSE,
- JST IT00 INTEGER TEST
- LDA IOF
- SNZ IF IOF = ZERO OR L
- JMP V5H7
- SUB L
- SZE
- JMP *+3 ERROR
-V5H7 JST ER00
- BCI 1,PR PARENTHESES MISSING IN DO STATEMENT
- JST DP00 DO INPUT
- LDA IOF
- STA I
- JST STXI
- LDA D
- STA DP,1 O2(IOF) = D
- STA O2 O2 = D
- LDA V5K3 ='30
- STA P
- JST ET00 ENTER TRIAD 'T'.
- JMP V5F
-V5J CRA
- STA A A = 0
- JST OA00 OUTPUT ABSOLUTE
- JMP V5B
-V5T1 PZE 0
-V5K1 OCT 27
-V5K2 OCT 32
-V5K3 OCT 30
-V5K4 BCI 1,R3
-V5K5 BCI 1,W4
-V5X DAC ** INPUT FORMAT
- JST XN00 EXAM NEXT CHARACTER
- SZE
- JMP V5X5 GO TO INPUT ARRAY NAME
- JST IS00 INPUT STMNT NO.
-V5X2 LRL 32 OUTPUT DAC A
- JST OB00 OUTPUT 0A
- JMP* V5X RETURN
-V5X5 JST NA00 INPUT NAME
- JST AT00 ARRAY TEST
- JMP V5X2
-* PRINT
-V10 LDA V5K5 PRINTER
-V10A STA NAMF+1
- JST NF00 SET UP REST 0F NAME
- JST CN00 CALL NAME
- JST V5X INPUT FORMAT
- LDA TC
- SUB K134
- SZE SKIP IF COMMA
- JMP V5B2
- LDA D
- STA V5T1
- JMP V5C5
-*
-*
-* **************************
-* *FORMAT *
-* *INPUT FORMAT STRING *
-* *INPUT NUMERIC FORMAT STR*
-* *NON ZERO TEST STRING *
-* **************************
-T0V2 PZE 0
-T2V2 PZE 0
-V2T0 EQU T0V2
-V2T2 EQU T2V2
-V2 LDA K17
- JST OK00 OUTPUT RACK
- CRA
- STA T0V2 TO = 0
- LDA LSTP IF LSTOP .NE. 0
- SZE
- JMP V2K GO TO V2K
-V2A JST SI00 INPUT FORMAT STRING
- SZE
- JMP V2B
-V2A1 LDA TC
- SUB K12 IF TC NOT MINUS
- SZE
- JMP V2F GO TO V2F
- JST IN00 INPUT NUMERIC FORMAT STRING
- CRA
- STA TID TID = 0
-V2B LDA TC IF TC .NE. P
- SUB K46
- SZE
- JMP V2H GO TO V2H
- JST SI00 INPUT FORMAT STRING
- SZE
- JST NZ00 IF (A) .NE. 0
-V2C LDA TC
- CAS K52 IF TC = D,E,F, OR G
- NOP
- JMP *+2
- JMP V2DA
- CAS K53
- JMP V2E5-2
- NOP
- JST IN00 INPUT NUMERIC FORMAT STRING
- JST NZ00 NON-ZERO STRING TEST
- LDA K10
- JST TS00 PERIOD TEST
-V2D JST IN00 INPUT NUMERIC FORMAT STRING
-V2DA LDA TC IF TC = )
- SUB K4
- SZE
- JMP V2E
- JST CH00
- JST OK00 INPUT CHAR AND OUTPUT PACK
- LDA T0V2 IF F4 + ( Z (
- SUB K101 GO TO V2E
- STA T0V2
- SPL
- JMP V2N ELSE,
- JMP V2DA
-* GO TO C/R TEST
-V2E LDA TC IF TC =,
- SUB K5
- SNZ
- JMP V2A GO TO V2A
- LDA K9
- JST TS00 / TEST
- JMP V2A
-V2E5 JST SI00 INPUT FORMAT STRING
- SZE IF (A) NOT 0,
- JMP V2B GO TO V2B
- LDA DFL IF DFL .NE. ZERO,
- SZE
- JMP V2DA GO TO V2DA
- JMP V2A1
-V2F LDA TC IF TC = H
- CAS K48
- JMP *+2
- JMP V2P GO TO V2P
-V2FB CAS K47
- JMP *+2
- JMP V2E5
- CAS K17 IF TC = (,
- JMP *+2
- JMP V2Q GO TO V2Q
- LDA TC IF TC .NE. A,I, OR L
- CAS K49 A
- JMP *+2
- JMP V2G
- CAS K50 I
- JMP *+2
- JMP V2G
- SUB K51 L
- SZE
- JMP V2C
-V2G JST IN00 INPUT NUMERIC FORMAT STRING
- JST NZ00 NON-ZERO STRING TEST
- JMP V2DA
-V2H JST NZ00 NON-ZERO STRING TEST
- LDA TC
- SUB K48
- SZE
- JMP V2F
-V2J JST HS00 TRANSMIT HOLLERITH STRING
- JMP V2E5 GO T0 V2E5
-V2K LDA LSTN IF LSTN = 0,
- SZE
- JMP *+3
- JST ER00 ERR0R, NO PATH
- BCI 1,NF NO REFERENCE T0 FORMAT STATEMENT
- LDA RPL LIF = RPL
- STA LIF
- CRA
- STA A
- STA AF
- AOA
- STA DF
- LDA K201 = JMP 0
- JST OA00 OUTPUT ABS
- JMP V2A GO T0 V2A
-*
-NZ00 DAC **
- LDA TID
- SZE
- JMP* NZ00
-NZ10 JST ER00
- BCI 1,NZ NON-ZERO STRING TEST FAILED
-IN00 DAC **
- JST SI00 (A) = 0 IS ERROR CONDITION
- SZE
- JMP* IN00
- JMP NZ10
-SI00 DAC **
- CRA
- STA TID ID = T2 = 0
-SI05 STA V2T2
- JST CH00 INPUT CHAR
- JST OK00 OUTPUT PACK
- LDA TC
- SUB K60 ASC-2 ZERO
- CAS K124
- JMP SI10
- NOP
- SPL
- JMP SI10
- STA TC
- LDA TID TID = 10*TID+TC
- ALS 3
- ADD TID
- ADD TID
- ADD TC
- STA TID
- LDA K101 T2 =1
- JMP SI05
-SI10 LDA V2T2 (A) = ERROR CONDITION OR NOT
- JMP* SI00
-V2M JST ER00
- BCI 1,FR FORMAT STATEMENT ERROR
-V2N EQU A1
-V2P LDA K101
- STA ID ID = 1
- JMP V2J GO T0 V2J
-V2Q LDA T0V2
- AOA
- STA T0V2
- SUB K103
- SZE
- JMP V2A
- JMP V2M
-K46 OCT 320 0P
-K47 OCT 330 0X
-K48 EQU K14 0H
-K49 OCT 301 0A
-K51 OCT 314 0L
-K52 EQU K11 0D
-K53 OCT 307 0G
-K50 EQU K43 0I
-*
-*
-* *******
-* *STOP *
-* *PAUSE*
-* *******
-* PAUSE AND STOP CENERATE CALLS TO F$HT
-T1W7 PZE 0
-T2W7 PZE 0
-W7 LDA K55
- STA T1W7
-W7A LDA K74
- STA NAMF+1 NAMF = F$HT
- JST NF00 SET-UP REMAINING CHAR 0F NAME
- JST XN00 EXAMINE NEXT CHAR
- LDA TC
- SUB CRET
- SNZ
- JMP W7C TC = C/R - NOTING FOLLOWING
- JST IV00 INPUT INTEGER/VARIA8LE
- LRL 32
- LDA K200 OUTPUT LDA
- JST OB00 OUTPUT OA
-W7C JST CN00 CALL NAME
- CRA
- STA DF DF = 0
- LDA T1W7
- STA ID
- JST AI00 ASSIGN INTEGER CONSTANT
- CRA OUTPUT DAC
- JST OB00 OUTPUT OA OF ST/PA OR HT
- LDA T1W7
- SUB K54
- SNZ
- JMP C5 PA-NOT THE CASE
- LDA RPL
- STA AF OUTPUT JMP *
- CRA
- STA A CAUSE LISTING TO HAVE OCTAL ADDRESS
- LDA K201
- JST OR00 OUTPUT RELATWE
- JMP B6
-W8 LDA K54
- JMP W7+1
-K74 BCI 1,HT HT
-K54 BCI 1,PA PA
-K55 BCI 1,ST ST
-*
-*
-* - R8 CALL
-* GENERATES CALL DIRECTLY OR USES EXPRESSION TO
-* ANALYZE AN ARGUMENT LIST.
-R8 JST SY00 INPUT SYMBOL
- LDA IU
- SUB K101 =1 (SUB)
- SZE SKIP IF IU=SUBR,
- JST TG00 TAG SUB PROCRAM
- LDA TC
- SUB K17 ='250 ( ( )
- SZE
- JMP *+3
-G2B LDA K101 SET A=1 BEFORE EXPRESSION
- JMP G2A
- CRA
- IAB (B)=0
- LDA OMI2 =JST INSTR,
- JST OB00 OUTPUT 0A
- JMP A1 CR TEST
-* **********************
-* *ASSIGNMENT STATEMENT*
-* **********************
-G2 LDA K104
- JST NP00 FIRST NON-SPEC CHECK
- JST II00 INPUT ITEM
- LDA K102 SET A = 2 BEFORE EXPRESSION
-G2A TCA
- JST EX00
- JMP A1
-*
-*
-* ********
-* *RETURN*
-* ********
-* OPTIMIZES EXIT CODING FOR FUNCTIONS TO MINIMIZE
-* FETCHES OF THE FUNCTION VALUE.
-R9 LDA SBF A = SBF,
- STA A IF ZERO, GO TO ERROR
- SZE
- JMP *+3
- JST ER00
- BCI 1,RT RETURN NOT ALLOWED IN MAIN PROGRAM
- LDA SFF ELSE, IF SFF = 0,
- SNZ
- JMP R9C GO TO R9C
- CAS K101 IF SFF = 1, GO TO R98
- JMP *+2
- JMP R9B
- STA AF OUTPUT REL JMP TO 1ST RETN
- LRL 32
- STA A SET A=0 TO OUTPUT OCTAL ADDR ON LISTING
- LDA K201
- JMP R9A
-R9B IAB
- LDA RPL SFF = RPL
- STA SFF
- LDA K56 0UTPUT ITEM (F,A)
- JST OM00
-R9C LRL 32
- STA A SET FOR OCTAL ADDHESS IW LISTING
- STA AF SET RELATIVE ADDRESS TO ZERO
- LDA K206 JUMP I, 0
-R9A JST OR00 OUTPUT REL
- JMP B6 EXIT
-K56 OCT 31 P CODE FOR 'F' (FETCH)
-*
-*
-* ********************
-* *STATEMENT FUNCTION*
-* ********************
-* OLD ASSIGN VALUES ARE SAVED IN SFTB AND ARE
-* RESTORED AT COMPLETION.
-G1T0 PZE 0
-G1T1 PZE 0
-G1 LDA K103 (A) = 3
- JST NP00 FIRST NON-SPEC CHECK
- JST SY00 INPUT SYMBOL
- JST LO00 DEFINE LOCATION
- LDA K103
- STA I
- JST GE00 GENERATE SUBPROGRAM ENTRANCE
- LDA I
- STA G1T1 T1 = I
- LDA K16X '=' TEST
- JST TS00
- JST II00 INPUT ITEM
- CRA
- JST EX00 EXPRESSION
- LDA G1T1
- STA I I = T1
- IRS TCF TCF = TCF+1
-G1A JST STXI
- LDA SFTB+2,1
- STA A
- LDA SFTB+0,1
- IAB
- JST STXA SET R TO A
- IAB
- STA DP,1
- JST STXI SET R TO I
- LDA SFTB+1,1
- IAB
- JST STXA SET R TO A
- IAB
- STA DP+1,1
- LDA I
- SUB K103 I = I-3 = 0
- STA I
- SUB K103
- SZE
- JMP G1A NO, GO TO G1A
- LDA T1NP
- STA A
- LLL 16
- LDA OMJ1
- JST OB00
- JST TG00 TAG SUBPROGRAM
- JMP A1 GO TO C/R TEST
-* - W5 END
-* ***************
-* *END PROC6SSOR*
-* ***************
-* FIRST CHECK SUBPROGRAMS FOR CORRECT USAGE, THEN
-* GENERATE MAP AND STRING BACK VARIABLES
-* AND CONSTANTS.
-T1W5 PZE
-W5 LDA BDF IF BLOCK DATA,
- SZE
- JMP W5K GO TO W5K
- LDA SBF IF SBF NOT ZERO
- STA A INDICATES SUBROUTINES
- SZE OR FUNCTION,
- JMP W5M GO TO W5M
-W5B CRA
- STA A A = J=0
- JMP W5H
-W5D JST FA00 FETCH ASSIGNS
- JST STXA
- LDA NT
- SZE IF NT=L (CONSTANT)
- JMP W5O GO TO W5O
- LDA IU
- SUB K101 IF IU=1
- SZE INDICATES VARIABLE,
- JMP W5T GO TO W5T
-W5F LDA RPL SAVE RPL
- STA T1W5 RPL=-AF (INHIBIT LISTING)
- LDA AF
- SSM
- STA RPL
- CRA
- JST OR00 OUTPUT REL
- LDA T1W5 RESTORE RPL
- STA RPL
-W5H LDA A A=A+5
- ADD K105
- STA A
- SUB ABAR IF A=ABAR, (DONE)
- SUB K105
- SZE
- JMP W5D ELSE, GO TO W5D
-W5J JST FS00 FLUSH BUFFER
- LDA SBF
- SZE
- LDA W5Z1
- ERA W5Z2
- STA OCI
- LDA SBF
- SZE
- LDA W5Z3
- STA OCI+1
- LDA K106
- STA OCNT
- JST FS00
- JMP A051 GO TO INITIALIZE
-W5K LDA RPL IF RPL NOT ZERO,
- SNZ
- JMP W5J
- JST ER00 ERROR-CODE GENERATED
- BCI 1,BD IN A BLOCK DATA SUBPROGRAM
-W5M JST FA00 FETCH ASSIGNS
- LDA SFF IF FUNCTION,
- SZE
- JMP W5N GO TO W5N
- JST NU00 NO USE TEST
- JST STXA
- LDA DP,1 IF NO ERROR,
- SSM NT(A)=1
- STA DP,1
- JMP W5B GO T0 W5B
-W5N LDA IU
- SUB K102 IU MUST BE VAR/CON,
- SNZ ELSE,
- JMP W5B
- JST ER00 ERROR-FUNCTION
- BCI 1,FD NAME NOT DEFINED BY AN ARITHM, STATEMENT
-W5O LDA IU IF IU=VAR/CON
- SUB K102
- SZE
- JMP W5H
- LDA AT AND AT = STR/REL
- SUB K103 A "STRING" REQ'D.
- SZE
- JMP W5H
-W5P LDA D0 IF D0 IS 4, THE
- SUB K104 CONSTANT IS COMPLEX,
- SZE OTHERWISE
- JMP W5Q GO TO W5Q
- LDA AF
- JST OS00 OUTPUT STRING
- JST STXA
- LDA DP+2,1 OUTPUT 4 WORDS
- JST W5X OF CONSTANT
- LDA DP+3,1
- JST W5X
- LDA NT
- SNZ
- JMP W5S
- LDA A INCREMENT A
- ADD K105
- STA A
- JST STXA
- JMP W5S
-W5Q LDA AF
- JST OS00 OUTPUT STRING
- JST STXA
- LDA D0 IF D0=1,
- SUB K101 INDICATES INTEGER,
- SNZ
- JMP W5R GO TO W5R
-W5S LDA DP+2,1 OUTPUT TWO WORDS
- JST W5X FLOATING POINT CONSTANT
- LDA DP+3,1
- JST W5X
- LDA D0 IF DOUBLE PRECISION,
- SUB K103
- SZE
- JMP W5H
-W5R LDA DP+4,1 OUTPUT THE 3RD WORD
- JST W5X
- JMP W5H GO TO W5H
-W5T LDA AT
- CAS K103
- JMP W5F STRONG VARIABLE (IU = NON 0)
- JMP W5T5
- CAS K102 TEST FOR STG ABS ADDRESS
- OCT 17400
- JMP *+2
- JMP W5F NO
- LDA DP+4,1 TEST FOR PREFIX G
- ANA *-4
- SUB *-5
- SZE
- JMP W5F STRONG VARIABLE (IU = NON 0)
-W5T5 LDA IU
- SZE
- JMP W5P
- JST ER00
- BCI 1,US
-W5X DAC **
- LRL 16
- STA DF
- IAB
- JST OA00 OUTPUT ABS
- JST STXA REST "A"
- JMP* W5X EXIT
-W5Z1 EQU K100 000377
-W5Z2 EQU K122 040000
-W5Z3 EQU K116 177400
-*
-*
-*
-*
-*
-* ************************
-* *INPUT CHAR/OUTPUT PACK*
-* ************************
-PO00 DAC **
- JST CH00 INPUT CHAR
- JST OK00 OUTPUT PACK
- JMP* PO00 RETURN
-* ************************
-* *TRANS HOLLERITH STRING*
-* ************************
-* FORM HOLLERITH STRING, CHARACTER COUNT IN ID 0N
-* ENTRY. C/R WILL ALSO TERMINATE STRING.
-HS00 DAC **
-HS10 JST IC00 INPUT 1 CHARACTER
- CAS CRET CHECK FOR CHAR = C/R
- JMP *+2
- JMP HS15 HOLLERITH STRING EXTENDS PAST END 0F CARD
- JST OK00 OUTPUT PACK THE CHARACTER
- LDA ID
- SUB K101 REDUCE CHARACTER COUNT BY 1
- STA ID
- SZE
- JMP HS10 INPUT MORE CHARACTERS
- JMP* HS00
-HS15 JST ER00
- BCI 1,HS HOLLERITH STRING EXTENDS OVER STATEMENT
-*
-*
-* **********
-* *DO INPUT*
-* **********
-* SET UP DO TABLE ENTRIES.
-DP00 DAC **
- LDA D D = D+5
- ADD K105 IFLG = NON-ZERO
- STA IFLG
- STA D
- ADD DO I = D0+D
- STA I
- JST STXI
- LDA A DP (1-4) = (B)
- STA DP-2,1 DP (1-2) = A
- IAB
- STA DP-4,1
- JST IV00 INPUT INT VAR/CON
- LDA K134 = ,
- JST TS00 COMMA TEST
- JST STXI
- LDA A
- STA DP,1 DP(I) = INITIAL VALUE POINTER
- JST IV00 INPUT INT VAR/CON
- JST STXI
- LDA A
- STA DP-1,1 DP (I-1) = A - FINAL VALUE POINTER
- LDA TC
- SUB K134 = ,
- SZE IF THIRD TERM
- JMP DP20
- JST IV00 READ AND ASSIGN,
-DP10 JST STXI
- LDA A
- STA DP-3,1 DP(I-3) = INCREMENT POINTER
- CRA
- STA IFLG CLEAR IFLAG
- JMP* DP00 EXIT
-DP20 LDA K101
- STA ID THIRD TERM = 1
- JST AI00 ASSIGN CONSTANT
- JMP DP10
-* ***************
-* *DO INITIALIZE*
-* ***************
-* GENERATE DO INITIALIZATION CODE.
-DS00 DAC **
- JST STXI ESTABLISH I
- LDA DP,1 A = DP (I)
- STA A
- LDA K200
- JST DS20 LOAD - LDA INITIAL VALUE
- LDA DP-2,1
- STA A A = DP (I-2)
- LDA RPL
- STA DP,1 SET RETURN ADDRESS INTO DP(I)
- LDA K202
- JST DS20 STORE - STA VARIABLE NAME
- JMP* DS00
-* OUTPUT OA SUBROUTINE
-DS20 DAC **
- IAB
- LLL 16 SET B = 0
- JST OB00 OUTPUT OA
- JST STXI RESTORE I
- JMP* DS20 RETURN
-*
-DS90 PZE 0
-*
-* ****************
-* *DO TERMINATION*
-* ****************
-* GENERATE DO TERMINATION CODE.
-DQ00 DAC **
- JST STXI
- LDA DP-2,1
- STA A
- LDA K200
- JST DS20 OUTPUT LDA VARIABLE NAME
- LDA DP-3,1
- STA A
- LDA K203
- JST DS20 OUTPUT ADD INCREMENT
- LDA DP-1,1
- STA A
- LDA OMK9
- JST DS20 OUTPUT CAS FINAL VALUE
- CRA
- STA A
- LDA RPL
- ADD K103
- STA AF
- LDA DP,1
- STA DS90
- LDA OMI5 JUMP *+3
- JST OR00 OUTPUT REL
- LDA DS90
- STA AF
- LDA OMI5 JMP RPL (SAVED) - POINTS TO 'STA' INST.
- JST OR00 OUTPUT REL
- LDA OMI5 OUTPUT JMP RPL (SAVED)
- JST OR00 OUTPUT REL
- JMP* DQ00
-* ************
-* *EXPRESSION*
-* ************
-* THE RESULTANT OUTPUT IS A BUILT UP AOIN
-* TABLE THAT IS FURTHER PROCESSED BY SCAN.
-T0EX PZE 0
-EXT0 EQU T0EX
-T1EX PZE 0
-T2EX PZE 0
-T3EX PZE 0
-T5EX PZE 0
-T6EX PZE 0
-EXT7 PZE 0
-T9EX PZE 0
-EX00 DAC **
- STA F F = (A)
- LDA A SAVE POINTER TO FIRST VARIABLE
- STA TRFA FOR LATER POSSIBLE TRACING
- LDA D I = D+D0+10
- ADD DO
- ADD K125 =8
- STA I
- JST EX99 DATA POOL CHECK
- JST STXI
- CRA
- STA EXT0 T0 = 0
- STA B B = 0
- STA EXT7 T7 = 0
- ADD EX92+12
- LGL 9 O(1-2) = '='
- STA DP-1,1 0 (I) = 0
- CMA
- STA IFLG IFLM NOT 0
- LDA L0
- STA DP-2,1 O(I-2) = L0
-EX10 JST STXI
- CRA
- STA T1EX T1 = 0
- STA DP,1 AOIN(I) = T(1) = 0
- STA DP+1,1
- LDA IM IF IM NOT ZERO,
- SZE
- JMP EX50 GO TO EX50
- LDA K106
- TCA
- STA 0
-* PERFORM TABLE SEARCH
-EX11 LDA TC GO TO ROUTINE ACCORDING
- SUB EX90+6,1 TO TC.
- SNZ IF NO MATCH, ERROR
- JMP EXI1
- IRS XR
- JMP EX11
- JST STXI
- LDA LIBF SPECIAL LIBRARY FLAG
- SZE
- JMP EX39
- JMP EX95 ERROR CONDITION
-EXI1 LDA EX91+6,1
- STA 0
- JMP 0,1 PROCESS LEADING OPERATOR
-* SPECIAL OPERATOR FLAG SET WHEN COMPILING THE FORTRAN
-* LIBRARY IN WHICH CASE THE OPERATIONS ( A= ) AND
-* ( =A ) ARE REQUIRED, THIS LOGIC WILL ALLOW THESE
-* TO BE PROCESSED WITHOUT GIVING AN ERROR MESSAGE IF THE
-* SPECIAL LIBRARY FLAG, (LIBF) IS SET TO NON-ZERO,
-*
-EX12 LDA B TC = (
- ADD K109 B = B+16
- STA B SXF = NON-ZERO
- STA SXF
-EX14 JST II00 INPUT ITEM
- JST STXI
- JMP EX10 GO TO EX10
-EX16 JST STXI TC = *
- LDA TC
- LGL 9 OI (I-2) = *, B+13
- ADD B
- ADD K129
- ERA DP-1,1
- SSP
- SNZ
- JMP *+3
- JST ER00 NO, CONSTR ERROR
- BCI 1,PW * NOT PRECEDED BY ANOTHER *
- LDA K109 (E = '20)
- LGL 9
- IMA DP-1,1
- ANA K118 ='777
- ADD K101
- ERA DP-1,1 CHAJNE * TO **
- STA DP-1,1
- JMP EX14 GO TO EX14
-EX18 LDA K102 =2
- STA TC SET TC TO -
- LDA K125 =8
- STA T1EX T1 = 8
- JST STXI
- LDA DP-1,1
- ANA K118
- SUB B 8 .GT. I (I-2) -B
- SUB T1EX
- SPL
- JMP *+3
-EX19 JST ER00 NO, ERROR
- BCI 1,NT LOGICAL .NOT. NOT A UNARY OPERATOR
-EX20 LDA T0EX YES
- SZE T (0) = 0
- JMP EX34
-EX22 LDA B YES,
- ADD F B + + (5) .GT. 0
- SPL NO, ERROR
- JMP EX96
-EX24 JST STXI
- LDA TC
- LGL 9
- ADD T1EX
- ADD B
- STA DP+1,1 OI(I) = TC , T1+B
- JST EX99 DATA POOL CHECK
- JMP EX14
-EX26 JST STXI
- LDA DP-1,1
- ANA K118 IF I (I-2) .LT. B
- CAS B
- JMP EX97 ERROR-----MULTIPLE + OR - SIGNS
- NOP
-EX30 LDA K131 SET INDEX TO
- STA 0 SEARCH OPERATOR TABLE FOR TRAILING
-EX31 LDA EX92+14,1 OPERATOR AFTER HAVING ENCOUNTERED AN
- SUB TC ITEM 0R A NEGATE,
- SZE
- JMP EX32
- LDA EX93+14,1
- STA *+3
- JST STXI
- JMP* *+1
- DAC **
-EX32 IRS XR CONTROL OPERATOR LOOP
- JMP EX31 CONTINUE
-EX34 LDA B IF B = 0
- SUB EXT7
- SZE
- JMP EX40 NO, GO TO EX40
- LDA T0EX IF T (0) = 0
- SZE
- JMP EX38 NO, GO TO EX38
-EX35 CRA
- STA IFLG IFLG = 0
- LDA F
- AOA
- SMI F . GE. -1
- JMP EX36 YES
- JMP* EX00 RETURN - NO
-EX36 JST CA00 SCAN
- JST OT00 OUTPUT TRIADS
- JMP* EX00 RETURN
-EX38 JST STXI
- LDA B
- SUB K109
- STA B
- LDA K103
- STA MFL
- LDA T0EX
- LGL 9 O (I) = T (0)
- ADD B I (I) = B+9
- ADD K124 I = I+2
- STA DP+1,1
- JST EX99 DATA POOL CHECK
- CRA
- STA T0EX T0 = 0
- STA EXT7 T7 = 0
-EX39 LDA L0
- STA A A = L0
- STA IM IM NOT EQ 0
- JMP EX10
-EX40 LDA TC TC 0 ,
- CAS K5 ='254 (,) IN BCD MODE
- JMP *+2
- JMP EX41
- SUB K134 =17
- SZE
- JMP EX44 NO, GO TO EX44
-EX41 LDA I
-EX42 SUB K102
- STA XR B VS. I (J)
- LDA DP+1,1
- ANA K118
- CAS B
- JMP *+3
- JMP EX24 EQUAL, GO TO EX24
- JMP* EX00 LESS, RETURN
- LDA XR GREATER, REPEAT LOOP
- JMP EX42
-EX44 JST IP00 ) - INPUT OPERATOR
- JMP EX30 GO TO EX30
-EX46 LDA* A
- STA T6EX IF O1(O1(A)) = L(0)
- LDA* T6EX
- CAS L0
- JMP *+2
- JMP EX34 GO TO EX34
- STA O2 O2 = L0
-EX48 JST ET00 ENTER TRIAD
- JMP EX34
-EX50 JST STXI
- LDA A A(I) = A
- STA DP,1
- LDA IU IU = SUB OR ARR
- SLN
- JMP EX30 NO, GO TO EX30
- LDA TC
- SUB K17 TC = (
- SZE
- JMP EX76 NO, GO TO EX76
- LDA B YES, B = B+16
- ADD K109
- STA B
- LDA IU IU = ARR
- SUB K103
- SZE
- JMP EX75 NO, GO TO EX75
- CRA
- STA DP,1 A(I) = 0
- STA X4 X4 = 0
- STA T3EX T3 = 0
- STA K T5 = A
- LDA D0
- STA T9EX T9 = D0
- LDA A
- STA T5EX T5 = A
- LDA AT
- SUB K105 AT = DUM
- SZE
- JMP EX74 NO, GO TO EX74
- CRA
- STA T2EX YES, T (0) = 0
- JST EX99 DATA POOL CHECK
- JST STXI
- LDA A
- STA DP,1 A(I) = A
- LDA K132 OI (I) = A, 11
- LGL 9
- ADD K124
- STA DP+1,1 I=9
-EX54 LDA D0 IF D0 = 1, GO TO EX56
- SUB K101
- SNZ
- JMP EX56
- JST EX99 DATA POOL CHECK
- JMP *+2
-EX55 IRS K K = K+1
- LDA K
- STA XR
- LDA X,1
- STA T6EX T6 = X (K)
- JST STXI
- LDA T6EX
- STA DP,1 O(I) = *
- LDA K103 I (I) = T3+13
- LGL 9 T3 = T3+16
- ADD T3EX A (A) = T6
- ADD K129 =13
- STA DP+1,1
- ANA K118
- ADD K103
- STA T3EX T3 = A(A)
-EX56 JST IV00 INPUT INTEGER VARIABLE
- JST EX99 DATA POOL CHECK
- JST STXI
- LDA A A(I) = A
- STA DP,1
- LDA NT
- SZE
- JMP EX68 CONSTANT ENCOUNTERED
- JST UC00 UNINPUT COLUMN
- JST DN00 INPUT DO NOT ASSIGN
- SNZ
- JMP EX57 IM = 0
- SUB K101
- SNZ
- JMP EX57 IM * INTEGEH
- JST ER00
- BCI 1,SU SUBSCRIPT INCREMENTER NOT A CONSTANT
-EX57 JST STXI
- LDA K101
- LGL 9
- ADD T3EX
- ADD K127
- STA DP+1,1 O(1) = +, I(I) = T3+11
- JST EX99 DATA POOL CHECK
-EX58 LDA T9EX
- STA D0 RESET D(0)
- LDA ID SUBSCRIPT SIZE
- SUB K101 ID = ID-1
- STA ID
- SNZ IF ZERO, GO TO EX60
- JMP EX60
- LDA K
- STA 0
- LDA D0,1 D(K) = 0
- SNZ
- JMP EX67 YES - (DUMMY DIMENSION)
- IAB
- LDA ID
- JST IM00
- ADD T2EX
- STA T2EX T2 = T2+ID*D(K)
-EX60 LDA T9EX
- STA D0 RESET D(0)
- LDA K
- STA 0
- LDA X+2,1 X(K+2) = 0
- SNZ
- JMP EX62 YES - FINISHED
- LDA K134 =17
- JST TS00 COMMA TEST
- LDA D0+1,1
- IAB
- LDA D0,1
- JST IM00
- STA D0+1,1 D(K+1) = D(K+1)*D(K)
- JMP EX55
-EX62 JST STXI
- LDA DP-1,1 DOES O(--2) = *
- SSP
- LGR 9
- CAS K103
- JMP *+2
- JMP EX66 YES.
- SNZ NO.
- JMP EX64 O(I-2) = 0 - YES
- CAS K132 DOES O(I-2) = A
- JMP EX63
- JMP *+2 YES
- JMP EX63
- LDA T2EX IS T2 = 0
- SNZ
- JMP EX65 YES (DUMMY ARRAY (1,1,1))
-EX63 LDA K101
- STA DP-1,1 01(I-2) = 1
- LDA T2EX A(I) = T2
- STA DP,1
- LDA K137 0='X' ('24), I=2
- STA DP+1,1
- CRA
- STA DP+3,1 O1(1+2) = 0
- LDA T5EX
- STA DP+2,1 A(I+2) = T5
- JST EX99 DATA POOL CHECK
- JST CA00 SCAN
- LDA O1
- STA A A = O1
- JST STXA
- LDA DP+2,1 S(A) = NON-ZERO
- SSM
- STA DP+2,1 S(A) = 1
- JMP EX44
-EX64 LDA L0
- STA DP,1 A(I) = L0
- JST EX99 DATA POOL CHECK
- JST STXI
- JMP EX63
-EX65 LDA I
- SUB K104
- STA I I = I-4
- LDA T5EX
- STA DP-4,1 A (I) = T5
- JMP EX44
-EX66 LDA I
- SUB K102
- STA I I = I-2
- JMP EX62 ASSIGN INT CONSTANT
-EX67 JST AI00
- JST STXI SET XR TO I
- LDA A
- STA DP,1 A(I) = A
- LDA K101
- LGL 9
- ADD T3EX
- ADD K127
- STA DP+1,1 OI(I) = +, T3+11
- JST EX99 DATA POOL CHECK
- JMP EX60
-EX68 LDA TC IS TC
- CAS K103 = *
- JMP *+2
- JMP *+2
- JMP EX58 NO
- LGL 9
- ADD T3EX
- ADD K129 =13
- STA DP+1,1 OI(I) = *, T3+13
- JST IR00 INPUT INTEGER VAR/CON
- JMP EX56+1
-EX69 CRA SET LISTING FOR OCTAL ADDR
- STA A
- LDA OMI5 JMP 0 INSTRUCTION
- STA DF SET LISTING FOR SYMBOLIC A INSTR,
- JST OA00 OUTPUT ABSOLUTE
- LDA RPL
- STA O2
- LDA K138
- STA P P = H
- JST ET00 ENTER TRIAD
- JST HS00 TRANSFER HOLLERITH STRING
- LDA CRET (A) = C/R
- JST OK00 OUTPUT PACK
- CRA
- STA 0 SET LISTING FOR OCTAL ADDR.
- STA A SET LISTING FOR OCTAL ADDR.
- LDA O2
- SUB K101
- JST OS00 OUTPUT STRING RPL-1
- JST CH00 INPUT CHARACTER
- JST FN00
- JST STXI RESET INDEX TO I
- LDA L
- STA DP,1 A(I) = L
- JMP EX76
-EX74 LDA AF
- STA T2EX T2 = AF
- JMP EX54 GO TO EX54
-EX75 LDA K134
- STA TC TC = ,
- JMP EX24 GO TO EX24
-EX76 LDA DP-1,1
- LGR 9
- ANA K133
- SUB K134
- SNZ
- JMP EX34 WITHIN AN ARGUMENT LIST
- JST ER00
- BCI 1,AG SUBROUTINE OR ARRAY NAME NOT IN ARG. LIST
-EX78 LDA K127
-EX79 STA T1EX T (1) = 11
- JMP EX22
-EX80 LDA K129 T (1) = 13
- JMP EX79
-EX81 LDA K106
- STA T1EX T (1) = 6
- JMP EX20
-EX82 LDA K104 T (1) = 4
- JMP EX81+1
-EX83 LDA T0EX T (0) =0
- SZE
- JMP EX84
- LDA TC YES,
- STA T0EX T (0) = TC
- LDA EX92+1
- STA TC TC = -
- LDA B
- ADD K109
- STA B
- STA EXT7
- LDA *+2
- JMP EX79
- DEC -5
-EX84 JST ER00 ERROR
- BCI 1,RL MORE THAN 1 RELATIONAL OPERATOR
-EX85 LDA F
- ADD K102 T (5) = T (5) +2 = B = 0
- STA F
- ADD B
- SNZ
- JMP EX24
- JST ER00 ERROR
- BCI 1,EQ MULTIPLE ='S, OR EXPRESSIUN TO LEFT OF =
-EX90 OCT 250 (
- OCT 3 *
- OCT 5 NOT
- OCT 1 +
- OCT 2 -
- OCT 310 H
-EX91 DAC EX12 (
- DAC EX16 *
- DAC EX18 NOT
- DAC EX26 +
- DAC EX26 -
- DAC EX69 H
-EX92 OCT 1 +
- OCT 2 -
- OCT 3 *
- OCT 4 /
- OCT 6 AND
- OCT 7 OR
- OCT 15 NE
- OCT 12 EQ
- OCT 14 GT
- OCT 10 LT
- OCT 13 GE
- OCT 11 LE
- OCT 16 =
- OCT 16 = (ERROR)
-EX93 DAC EX78 +
- DAC EX78
- DAC EX80 *
- DAC EX80 /
- DAC EX81 AND
- DAC EX82 OR
- DAC EX83 NE
- DAC EX83 EQ
- DAC EX83 GT
- DAC EX83 LT
- DAC EX83 GE
- DAC EX83 LE
- DAC EX85 =
- DAC EX34 NONE OF THESE
-EX95 JST ER00
- BCI 1,OP MURE THAN ONE OPERATOR IN A ROW
-EX96 JST ER00 ERROR
- BCI 1,PA OPERATOR MUST BE WITHIN PARENTHESES
-EX97 JST ER00 ERROR
- BCI 1,UO MULTIPLE + OR - SIGNS NOT AS UNARY OPS
-* BUMP THE I COUNT BY TWO AND CHECK FOR DATA OVERFLOW
-EX99 DAC **
- IRS I
- IRS I
- LDA I
- AOA
- CAS L
- NOP
- JMP AS50
- JMP* EX99
-K133 OCT 77
-K130 DEC -6
-K141 DEC 33
-K PZE 0
-KM8 DEC -8
-*
-*
-*
-*
-* ******************
-* *SCAN *
-* *TRIAD SEARCH *
-* *TEMP STORE CHECK*
-* ******************
-T0CA PZE 0
-T1CA PZE 0
-T2CA PZE 0
-T9CA PZE 0
-* THE AOIN TABLE IS PROCESSED FROM THE BOTTOM
-* UP AND ENTRIES ARE FORMED FOR INCLUSION
-* IN THE TRIAD TABLE, LEVELS ARE USED
-* TO CONTROL THE ORDER OF ENTRY INTO
-* THE TRIADS. SIGN CONTROL IS ALSO
-* ACCOMPLISHED IN THIS ROUTINE.
-CA00 DAC **
- LDA L0
- STA ACCP INDICATE EMPTY ACCUM
-CA04 JST STXI ESTABLISH I
- STA T1CA T1 = I
- LDA DP-1,1
- ANA K118 IF I (I-2) = 0,
-* OR .LT. I (I)
- STA T9CA
- LDA DP+1,1
- ANA K118
- CAS T9CA
- JMP CA08 GO TO CA08
- NOP
- LDA I
- SUB K102
- STA I I = I-2
- STA 0
-CA08 LDA DP+3,1
- ERA DP+1,1
- STA T0CA
- LDA DP+1,1
- ANA K118
- STA T2CA
- LDA DP+1,1
- SSP
- LGR 9 P = O (I)
- STA P
- CAS K102 IF P IS NOT * OR /, GO TO CCA10
- CAS K105
- JMP CA10
- JMP CA10
- JMP CA14 GO T0 CA14
-CA10 LDA T0CA
- SMI
- JMP CA13
- LDA KM8
- IMA XR
- IAB
- LDA P
- CAS CA90+8,1
- JMP *+2
- JMP *+4
- IRS XR
- JMP *-4
- JMP CA45
- LDA CA91+8,1
- STA P
- IAB
- STA XR
-CA13 LDA K130
- IMA XR
- IAB
- LDA P
- CAS CA90+8,1
- JMP *+2
- JMP CA50
- IRS XR
- JMP *-4
- IAB
- STA XR
- IAB
- LDA DP+1,1
- JMP *+2
-CA50 CRA
- STA T0CA
- IAB
- STA XR
-CA14 LDA DP,1
- STA O1 O1=A(I)
- LDA DP+2,1
- STA O2 O2 = A (I+2)
- LDA T2CA
- SNZ
- JMP CA37 IF ZER0, GO TO CA37
- LDA DP-1,1
- SSP
- LGR 9
- STA T1CA
- LDA DP-1,1
- ANA K118 IF T2 .GT. I (I-2)
- SUB T2CA
- SPL
- JMP CA18
- SZE
- JMP CA04
- LDA O2
- SUB ACCP
- SZE
- JMP CA04
- LDA P
- SUB K103
- SMI
- JMP CA39
- LDA T1CA
- SUB P
- SZE
- LDA K101 GO TO
- ADD K101 P = - OR +
- STA P
-CA18 LDA I
- STA 0 J=I
-CA20 LDA DP+2,1
- STA DP,1 AOIN(J) = AOIN(J+2)
- LDA DP+3,1
- STA DP+1,1
- SSP
- SNZ
- JMP CA22
- IRS XR J = J+2
- IRS XR
- JMP CA20
-CA22 JST STXI
- LDA DP+1,1
- SSP IF O (I) = ,
- LGR 9
- CAS P
- JMP CA24
- CAS K134
- JMP CA24
- JMP CA30 GO TO CA30
-CA24 JST ST00 TRIAD SEARCH
- LDA P
- CAS K132 IF P = +,*, AND, OR
- JMP CA28
- JMP CA37 GO TO CA37
- CAS K107
- JMP CA28 ELSE, GO TO CA26
- JMP CA37
- CAS K106
- JMP CA28
- JMP CA37
- CAS K103
- JMP CA28
- JMP CA37
- CAS K101
- JMP CA26
-*
-*
-*
- JMP CA37
-CA26 CAS K102
- JMP *+2 IF P = -
- JMP CA35 GO TO
-CA28 LDA O1
- JST TC00 TEMP STORE CHECK
-CA30 LDA O2
- JST TC00 TEMP STORE CHECK
-CA31 JST ET00 ENTER TRIAD
-CA32 JST STXI
- LDA O1
- STA DP,1
- LDA DP+1,1
- LRL 15
- LDA T0CA
- LGR 15
- LLL 15
- STA DP+1,1
- LDA T2CA IF T2 NOT ZERO,
- SZE
- JMP CA04 GO TU CA04
- JMP* CA00 ELSE, RETURN
-CA35 LDA T0CA
- ERA ='100000
- STA T0CA
-CA37 LDA O2
- IMA O1 O1 * = O2
- STA O2
- SNZ IF 02 = 0,
- JMP CA32 GO TO CA32
-*
-*
-*
- JST ST00 TRIAD SEARCH
- LDA T0CA
- SMI
- JMP CA28 GO TO CA28
- LDA P
- JMP CA26 ELSE, GO TO CA26
-CA39 SUB K128
- SNZ IF P = , OR
- JMP CA04
- LDA T1CA
- SUB K104
- SZE ELSE,
- JMP CA18 GO TO CA18
- JMP CA04
-CA45 LDA T1CA
- STA I I = T1
- STA T2CA
- CRA
- STA T0CA * * * * * * * * * * *
- STA O2 O2 = C = 0
- SUB K110 P = C
- STA P
- JMP CA24 GO TO CA24
-* IF THE CURRENT TRIAD (IN WORKING STORAGE) MATCHES
-* ANY TRIAD TABLE ENTRY, EXIT WITH THE
-* POINTER VALUE OF THE MATCHING ENTRY
-* (THIS ACCOMPLISHES ELIMINATION OF REDUNDANT
-* SUBEXPRESSION CALCULATIONS.
-ST00 DAC ** TRIAD SEARCH
- LDA F
- ADD K103
- SZE
- JMP ST10 GO TO ST10
-ST05 LDA P ELSE, IF P = X
- SUB K139
- SNZ
- JMP CA31 GO TO CA31
- LDA O1 ELSE, IF 01=ACCP
- SUB ACCP
- SNZ
- JMP CA30 GO TO CA30
- JMP* ST00 ELSE, RETURN
-ST10 LDA L0
- STA XR
-ST20 LDA XR
- SUB K103
- STA XR J = J-2
- SUB L IF J .LT. L
- SPL
- JMP ST05 GO TO ST05
- LDA O2
- SUB DP,1 IF O1/P/O2 .NE. O1/P/O2(J)
- SZE
- JMP ST20 GO TO ST20
- LDA DP+2,1
- SSP EXTRACT OFF STORE BIT
- SUB P
- SZE
- JMP ST20
- LDA O1
- SUB DP+1,1
- SZE
- JMP ST20 O1 = J
- LDA XR
- STA O1
- JST STXI ESTABLISH I
- JMP CA32 GO T0 CA32
-* IF J IS A REFERENCE TO A TRIAD , THE TEMP
-* STORE BIT 0F THE REFERENCED TRIAD IS SET.)
-TC00 DAC ** TEMP STORE CHECK
- STA XR
- LDA ABAR
- SUB XR
- SMI IS J .GR. ABAR
- JMP* TC00 NO.
- LDA DP+2,1 YES.
- SSM
- STA DP+2,1 S(J) = 1
- JMP* TC00
-CA90 OCT 1,2,11,10,13,14,12,15
-CA91 OCT 2,1,13,14,11,10,12,15
-*
-*
-* *************
-* *ENTER TRIAD*
-* *************
-* STORE CURRENT TRIAD INTO THE NEXT TRIAD ENTRY
-* LOCATION.
-ET00 DAC **
- JST SAV
- LDA L
- SUB K103 =3
- STA L L=L-3
- STA ACCP SET ACCUM PTR TO LAST TRIAD ENTRY
- STA 0 J=L
- LDA P
- STA DP+2,1 P(J) = P
- LDA O1
- STA DP+1,1 O1(J) = O1
- LDA O2
- STA DP,1 O2(J) = O2
- LDA 0
- STA O1 O1=J
- JST RST
- JMP* ET00
-ACCP DAC ** ACCUM POINTER
-*
-*
-SFTB BSS 36 SUBFUNCTION TABLE
-* **************************
-* *GENERATE SUBPRO ENTRANCE*
-* **************************
-* OUTPUT SUBPROGRAM ENTRANCE CODE , INCLUDING THE
-* CALL TO ARGUMENT ADDRESS TRANSFER.
-T0GE PZE 0
-GE00 DAC **
- CRA
- STA T0GE
- LDA K17 ( TEST
- JST TS00
-GE10 JST NA00 INPUT NAME
- LDA I IFF I=0,
- SNZ
- JMP GE20 GO TO GE20
- CAS K141
- NOP
- JMP GE30 MAKE ENTRY IN SFTB TABLE
- ADD K103
- STA I IF FULL, GO TO GE30
- JST STXA SET XR TO A
- LDA DP,1
- IAB
- JST STXI ESTABLISH I
- IAB
- STA SFTB,1
- JST STXA SET XR TO A
- LDA DP+1,1
- IAB
- JST STXI SET XR TO I
- IAB
- STA SFTB+1,1
- LDA A
- STA SFTB+2,1
- JST STXA SET XR TO A
- CRA
- STA DP+1,1 CLEAR OLD USACE
-GE20 LDA K105
- IAB
- LDA RPL
- ADD T0GE
- ADD K103 (B) = DUM
- JST AF00 DEFINE AFT (A=RPL+T0+3)
- IRS T0GE T0 = T0+1
- LDA K134
- SUB TC IF TC = ,
- SNZ
- JMP GE10 GO TO GE10
- JST IP00 INPUT OPERATOR
- CRA
- STA DF
- JST OA00 OUTPUT ABS (0)
- LDA T0GE
- STA ID ID = T0
- LDA K69
- STA NAMF+1 NAMF = AT
- JST NF00 FILL IN REMAINING NAME
- JST OL00 OUTPUT OBJECT LINK
- LDA T0GE
- TCA
- STA T0GE
- CRA
- JST OA00 OUTPUT NUMBER OF ARGS
- IRS T0GE OUTPUT SPACE FOR ARG. ADDR.
- JMP *-3
- JMP* GE00 RETURN
-GE30 JST ER00 CONSTR, ERROR
- BCI 1,AE
-K69 BCI 1,AT AT
-*
-* ****************
-* *EXCHANGE LINKS*
-* ****************
-* CL SUBA IS INTERCHANGED WITH CL SUBF
-EL00 DAC **
- JST STXA
- LDA DP,1
- STA EL90 CL (F) == CL (A)
- LDA F
- STA 0
- JST EL40
- JST STXA
- JST EL40
- JMP* EL00
-EL40 DAC **
- LDA DP,1
- IMA EL90
- ANA K118
- IMA DP,1
- ANA K119
- ADD DP,1
- STA DP,1
- JMP* EL40
-EL90 PZE 0
-*
-*
-* *****************
-* *NON COMMON TEST*
-* *****************
-NM00 DAC ** NON-COMMON TEST
- LDA AT
- SUB K104
- SZE
- JMP* NM00
- JST ER00
- BCI 1,CR ILLEGAL COMMON REFERENCE
-*
-*
-* **************************
-* *NON DUMMY OR SUBPRO TEST*
-* **************************
-ND00 DAC **
- LDA AT TEST
- SUB K105
- SZE
- JMP ND10
- JST ER00
- BCI 1,DA ILLEGAL USE OF A DUMMY ARGUMENT
- JMP* ND00
-ND10 JST NS00
- JMP* ND00
-*
-*
-* *****************
-* *INPUT SUBSCRIPT*
-* *****************
-SCT0 PZE 0
-SC00 DAC **
- STA SCT0 T0 = (A)
- CRA
- STA NS
- STA S2 NS = S2 = S3 = 0
- STA S3
- LDA K17 (-TEST
- JST TS00
-SC10 LDA EBAR
- SMI
- JMP SC15 EBAR .GR. 0
- JST XN00 EXAMINE NEXT CHAR,
- SZE
- JMP SC70 IF (A) NON ZERO,
-SC15 JST IG00 GO TO SC70
- LDA SCT0 INPUT INTEGER
- SZE
- SPL
- JMP SC60
- LDA ID
- SUB K101
- JMP SC30
-SC60 JST AS00 ASSIGN ITEM
-SC20 LDA A S (NS+1) = A
-SC30 IAB
- LDA SC90
- ADD NS
- STA SC91
- IAB S(NS + 1) = A
- STA* SC91
- LDA NS
- AOA
- STA NS NS = NS + 1
- SUB K103
- SZE
- JMP SC50 MORE SUBSCRIPTS PERMITTED
-SC40 JST IP00 )-INPUT OPERATOR
- JMP* SC00 RETURN
-SC50 LDA TC
- SUB K134
- SZE
- JMP SC40 TERMINATOR NOT A COMMA
- JMP SC10 G0 TO SC10
-SC70 JST IR00 INPUT INT VARIABLE
- LDA SCT0 CHECK FOR NON-DUMMY
- SNZ VARIABLE DIMENSIONS
- JMP SC20
- LDA AT
- SUB K105
- SNZ
- JMP SC20
- JST ER00
- BCI 1,VD ILLEGAL SYMBOLIC SUBSCRIPT
-SC90 DAC S1
-SC91 DAC **
-*
-*
-* ********************
-* *INPUT LIST ELEMENT*
-* ********************
-* IF THE ITEM IS AN ARRAY, PROCESS THE SUBSCRIPT
-IL00 DAC **
- JST NA00 INPUT NAME
- LDA AT
- SUB K105 NON-DUMMY TEST
- SZE
- JMP *+3
- JST ER00 USAGE ERROR
- BCI 1,DD DUMMY ITEM IN AN EQUIV, OR DATA LIST
- LDA IU IF IU NOT ARR,
- SUB K103
- SZE
- JMP IL30 GO TO IL30
- LDA K103
- JST SC00 INPUT SUBSCRIPTS
- JST FA00 FETCH ASSIGNS
- LDA ND IF ND = NS
- SUB NS
- SZE S1 = D* (S1 + D1* (S2+D2*S3)
- JMP IL10 ELSE, GO TO IL10
- LDA S3
- IAB
- LDA D2
- JST IM00
- ADD S2
- IAB
- LDA D1
- JST IM00
- ADD S1
- IAB
- LDA D0
- JST IM00
- STA S1
- JMP* IL00 RETURN
-IL10 LDA NS IF NS NOT 1
- SUB K101
- SZE
- JMP IL20 GO TO IL20
- LDA S1 ELSE, 20
- IAB S1 * D0*S1
- LDA D0
- JST IM00
-IL18 STA S1
- JMP* IL00 RETURN
-IL20 JST ER00
- BCI 1,ND WRONG NUMBER OF DIMENSIONS IN ARRAY ELEMENT
- JMP* IL00 RETURN
-IL30 JST TV00 TAG VARIABLE
- CRA S1 = 0
- JMP IL18 RETURN
-*
-*
-* ************
-* *FUNCTION *
-* *SUBROUTINE*
-* ************
-* IF LSTF IS ZERO, THE STATEMENT IS OUT OF ORDER
-* FUNCTIONS ARE CHECKED TO ENSURE ARGUMENTS
-R1 LDA K101
- STA SFF SFF = 1
-R2 LDA LSTF
- SZE IF LSTF = 0
- JMP R2A
- JST ER00 ILLEGAL STATEMENT
- BCI 1,FS NOT FIRST STATEMENT IN SUBPROGRAM
-R2A JST NA00 INPUT NAME
- LDA A
- STA SBF SBF = A
- CRA ADDR=0, S/C CODE =0
- JST ON00 OUTPUT NAME BLOCK TO THE LOADER
- LDA MFL
- SZE
- JST DM00 DEFINE IM
- LDA TC
- SUB CRET IF IC NOT C/R
- SZE
- JMP R2C GO TO
- LDA SFF IF SFF = 0
- SNZ
- JMP R2D GO TO R2D
- JST ER00 ERROR
- BCI 1,FA FUNCTION HAS NO ARGUMENTS
-R2C CRA
- STA I I = 0
- JST GE00 GENERATE SUBPROGRAM ENTRY
- JMP A1 GO TO C/R TEST
-R2D CRA
- JST OA00 OUTPUT ABS
- JMP C6 GO TO CONTINUE
-*
-*
-* ******************
-* *INTEGER *
-* *REAL *
-* *DOUBLE PRECISION*
-* *COMPLEX *
-* *LOGICAL *
-* ******************
-* THE MODE FLAG (MFL) IS SET TO THE APPROPRIATE
-* VALUE AND ANY ARRAY INFO IS PROCESSED
-A3 LDA K101 INTEGER
- JMP A7A TMFL = INT
-A4 LDA K102 REAL
- JMP A7A TMFL = REAL
-A5 LDA K106 DOUBLE PRECISION
- JMP A7A TMFL = DBL
-A6 LDA K105 COMPLEX
- JMP A7A TMFL = CPX
-A7 LDA K103 LOGICAL
-A7A STA MFL TMFL = LOG
- LDA LSTF IF LSTF = 0, GO TO A7B (2)
- SNZ
- JMP A7B ELSE,
- LDA CC SAVE CC
- STA A790
- CRA
- STA ICSW
- JST DN00 INPUT DNA
- LDA A790 RESTORE CC
- STA CC
- STA ICSW ICSW = IPL
- LDA DFL IF DFL NOT = 0, GO TO A7B
- SZE
- JMP A7B
- LDA TID IF ID = FUNCTI,
- SUB A7K GO TO A9
- SNZ SKIP IF NOT 'FUNCTION'
- JMP A9 FUNCTION PROCESSOR
-A7A5 JST ER00 CONSTRUCTION ERROR
- BCI 1,TF 'TYPE' NOT FOLLOWED BY 'FUNCTION' OR LIST
-A7K BCI 1,FU CONSTANT FOR 'FUNCTION' CHECK
-A7B JST NA00 INPUT NAME
- LDA MFL
- JST DM00 DEFINE IM
- JMP B7 GO TO INPUT DIMENSION
-A790 PZE 0
-*
-*
-* - B2 EXTERNAL
-* TAGS NAME AS SUBPROGRAM
-B2 JST NA00 EXTERNAL, INPUT NAME
- JST TG00 TAG SUBPROGRAM
- JMP B1 GO TO , OR C/R TEST
-*
-*
-* *****************
-* *DIMENSION *
-* *INPUT DIMENSION*
-* *****************
-* PROCESS ARRAYS, PUT DIMENSION INFO IN SPECIAL
-* ARRAY POINTER ITEM
-B3T0 PZE 0
-B3T1 PZE 0
-B3T2 PZE 0
-B3T3 PZE 0
-B3 JST NA00
-B3A LDA AT IF AT = DUM
- SUB K105 (A) = 0
- SZE ELSE (A) = .LT. 0
- SSM
-B3B STA B3T0 T0 = (A)
- LDA AF
- STA B3T3 T3 = AF
- LDA A
- STA B3T1 T1 = A
- LDA AT TEST FOR AT=DUMMY
- SUB K105 =5
- SZE SKIP NO-USAGE TEST IF DUMMY
- JST NU00 NO USAGE TEST
- JST STXA
- LDA DP+1,1 IU (A) = ARR
- LRL 14
- LDA K103
- LLL 14
- STA DP+1,1
- LDA B3T0 (A) = T0
- JST SC00 INPUT SUBSCRIPT
- LDA S1
- STA ID
- LDA S2 PLACE SUBSCRIPTS IN ID
- STA ID+1
- LDA S3
- STA ID+2
- LDA NS (A) = 0, B = NS
- LRL 16
- JST AA00 ASSIGN SPECIAL.
- JST STXA
- LDA DP+1,1
- LLR 2
- LDA B3T3
- LGL 2
- LRR 2
- STA DP+1,1 DEFINE GF T0 GF(A)
- LDA A
- STA B3T2 T2 = A
- LDA B3T1
- STA A A = T1
- JST STXA
- LDA DP+1,1
- LLR 2
- LDA B3T2
- LGL 2
- LRR 2
- STA DP+1,1 DEFINE GF TO GF(A)
-B3D LDA TC
- SUB K104 IF TC NOT SLASH
- SZE
- JMP B1 GO TO ,-C/R TEST
- LDA A9T2 IF SIDSW = COMMON-4
- SUB B4Z9
- SZE GO T0 B4 (COMMON-0)
- JMP B1 ELSE, GO TO ,-C/R TEST
- JMP B40
-B7 LDA TC IF TC = (
- SUB K17
- SZE
- JMP B3D
- JMP B3A
-*
-*
-* ********
-* *COMMON*
-* ********
-* INPUT BLOCK NAMES AND LINK THEM WITH THE
-* FOLLOWING VAR/ARRAY NAMES, BLOCK NAMES
-* ARE LINKED TOGETHER THROUGH THEIR GENERAL FIELDS
-B4 LDA K81
- STA ID
- STA ID+1
- STA ID+2
- LDA B4Z9 SET SWITCH IN INPUT DIMENSION
- STA A9T2
- JST CH00 INPUT CHAR
- SUB K9 IF NOT SLASH
- SZE GO TO
- JMP B4E
-B40 JST DN00 INPUT DNA
- LDA K104 SLASH TEST
- JST TS00
-B4B LRL 32
- LDA K101 (A) = SUB, (B) = 0
- JST AA00 ASSIGN SPECIAL
- LDA CFL
- SNZ
- LDA A
- STA CFL
- LDA A
- STA F
- JST FL00 FETCH LINK
- SZE
- JMP B4D
- LDA CFL
- STA 0
- LDA DP+1,1 GF(CFL)
- IMA A
- STA 0 INDEX = A
- IMA A
- STA DP+1,1 GF(A) = GF(CFL)
- LDA CFL
- STA 0 INDEX = CFL
- LDA A
- ADD K122 ='040000
- STA DP+1,1 GF(CFL) = A
-B4D JST NA00 INPUT NAME
- JST ND00 NON DUMMY/SUBPROG TEST
- JST NM00 NON-COMMON TEST
- JST EL00 EXCHANGE LINKS
- LDA DP,1
- ANA B4F ='107777
- ADD K122 AT(A) = COM (='040000)
- STA DP,1
- JMP B7
-B4E JST UC00 UNINPUT COLUMN
- JMP B4B
-B4Z9 DAC B4D GO TO INPUT DIMENSION
-B4F OCT 107777 EXTRACT MASK TO STRIP OFF AT FIELD
-*
-*
-* *************
-* *EQUIVALENCE*
-* *************
-* STORE EQUIV INFO IN THE DATA POOL FOR LATER
-* PROCESSING BY GROUP EQUIV (PART OF SPECS WRAPUP)
-B5 LDA E0 L = NEXT WORD IN EQUIVALENCE TABLE
- STA I I=L
- SUB K101 (=1)
- STA E0 L=L-1
- SUB ABAR
- SMI
- JMP *+3
- JST ER00 DATA POOL FULL
- BCI 1,MO MEMORY OVERFLOW
- JST STXI ESTABLISH I
- CRA
- STA DP,1 DP (I) = 0
-B5B JST CH00
- LDA DP,1 INPUT CHAR
- SZE
- JMP B5D
- LDA TC PUT IN FIRST CHARACTER
- LGL 8 PACK INTO DP (I)
-B5C STA DP,1
- LDA TC
- SUB CRET
- SNZ
- JMP C6 CHARACTER E C/R - EXIT
- LDA DP,1
- ANA K100
- SNZ
- JMP B5B WORD NOT FULL
- JMP B5 OBTAIN NEW WORD
-B5D LDA TC PUT IN SECOND CHARACTER
- ERA DP,1
- JMP B5C
-*
-*
-* *********************
-* *RELATE COMMON ITEMS*
-* *********************
-* ALL ITEMS LINKED TO A COMMON BLOCK ARE PROCESSED
-* AND THEIR INVERSE OFFSETS CALCULATED. THESE
-* WILL BE INVERTED LATER TO GIVE TRUE
-* POSITION IN THE BLOCK.
-C2T0 PZE 0
-C2 LDA CFL
- STA A A = F = CFL
-C2A CRA
- STA C2T0 T0 = 0
- LDA A
- STA F F = A
-C2B JST FL00 FETCH LINK
- SNZ
- JMP C2D
- LDA D0
- ADD C2T0 T0 = T0 + D0
- STA C2T0
- JST DA00 DEFINE ADDRESS FIELD
- JMP C2B
-C2D JST FL00 FETCH LINK
- SZE
- JMP C2F
- LDA AF
- STA A A = AF
- SUB CFL
- SZE
- JMP C2A AF = CFL. NO
- JMP C3 YES - GROUP EQUIVALENCE
-C2F LDA C2T0
- SUB AF (A) = T0 - AF
- JST DA00 DEFINE AF
- LDA IU
- SZE
- JMP C2D
- JST TV00 TAG VARIABLE
- JMP C2D
-*
-*
-* *******************
-* *GROUP EQUIVALENCE*
-* *******************
-* THE EQUIV GROUPS ARE PROCESSED NOW. ANY COMMON
-* USAGE IS CHECKED TO SEE THAT THE ORIGIN
-* IS NOT MOVED AND THAT ONLY ONE ITEM IS
-* COMMON.
-C3T0 PZE 0
-C3T1 PZE 0
-C3T2 PZE 0
-C3T3 PZE 0
-C3T4 PZE 0
-C3T5 PZE 0
-T0C3 EQU C3T0
-T1C3 EQU C3T1
-T2C3 EQU C3T2
-T3C3 EQU C3T3
-T4C3 EQU C3T4
-C3 LDA E0
- STA EBAR EBAR=E(0) = END OF EQUIVALENCE TABLE
- LDA L0
- STA E E=L(0) = START OF EUUIVALENCE TABLE
- LDA CRET
- STA TC
-C3B LDA E
- STA EP E-PRIME = E
- CRA
- STA F I = 0
- LDA K102 T4 = STR-ABS
- STA C3T4
- JST CH00 INPUT CHARACTER
- LDA K17
- JST TS00 (TEST
-C3D JST IL00 INPUT LIST ELEMENT
- JST SAF
- LDA S1
- SUB AF TL = S1-AF
- STA C3T1
- LDA A T2 = A
- STA C3T2
-C3F LDA F IF I=0, GO TO C3P
- SNZ
- JMP C3P
-C3G LDA F ELSE,
- SUB A
- SNZ IF A = I, GO TO C3N
- JMP C3N
-C3H LDA AT
- SUB K104 ELSE,
- SNZ IF AT = COM, GO TO C3O
- JMP C3O
-C3H2 LDA T1C3
- ADD AF
- STA T0C3 T(0) = AF +T (1)
- LDA T4C3
- SUB K104 IF T(4) = 0, GO T0 C3K
- SZE
- JMP C3K
- LDA T3C3
- SUB T0C3 ELSE,
- STA T0C3 T(0) = T(3)-T(0)
- SMI
- JMP C3K
- JST ER00 IF T(0)<0,
- BCI 1,IC
-C3K LDA C3T4 IMPOSSIBLE COMMON EQUIVALENCING
- IAB
- LDA T0C3 AT (A) = COM
- ALS 2
- LGR 2
- JST AF00
- JST FL00 DEFINE AF
- JST SAF FETCH LINK
- LDA A
- SUB C3T2
- SZE IF A .NE. T (2),
- JMP C3G GO TO C3G (5)
-*
- JST EL00 EXCHANGE CL(A) == CL(I)
-C3M LDA TC EXCHANGE LINKS (CL(A) WITH CL(F) )
- SUB K134 IF TC = ,
- SNZ
- JMP C3D ELSE,
- JST IP00 )-INPUT OPERATOR
- LDA TC
- SUB K134 IF TC = , OR C/R
- SNZ GO TO C3B (1)
- JMP C3B
- LDA TC
- SUB CRET
- SNZ
- JMP C3B ELSE,
- JST ER00
- BCI 1,EC EOUIVALENCE GROUP NOT FOLLOWED BY , OR CR
- JMP C3B
-C3N LDA T1C3 IF T1 = 0, GO TO C3M
- SNZ
- JMP C3M
-C3N5 JST ER00 ERROR IMPOSSIBLE GROUP
- BCI 1,IE IMPOSSIBLE EQUIVALENCE GROUPING
-C3O LDA S1
- ADD AF
- STA T3C3
- LDA K104 =4
- CAS T4C3
- JMP *+2
- JMP C3N5
- STA T4C3
- LDA F
- CAS A IF A = F, GO TO C3M (B)
- JMP *+2
- JMP C3M ELSE,
- STA A A = I
- IMA C3T2
- STA F
- CRA T1 = 0
- STA C3T1
- JST FA00 FETCH ASSIGNS
- JST SAF
- JMP C3H2 GO TO C3H2
-C3P LDA A
- STA F
- JMP C3H
-*
-*
-* ***********************
-* *ASSIGN SPECIFICATIONS*
-* ***********************
-* NON-COMMON NON-EQUIV ITEMS ARE PROCESSED AFTER
-* COMMON BLOCKS ARE OUTPUT (WITH SIZE).
-C4T0 PZE 0
-C4T1 PZE 0
-C4B STA A A = 0
-C4C LDA A
- ADD K105 I = A = A+5
- STA A
- STA F
- CAS ABAR
- JMP NP35 RETURN TO FIRST NON-SPEC CHECK (POINT 1)
- NOP
- JST FA00 ELSE, FETCH ASSIGN
- LDA AT
- SUB K102 IF AT = STR-ABS
- SZE IU=VAR, OR ARR, AND
- JMP C4C NT = 0
- LDA IU GO TO C4E
- SUB K102 ELSE, GO TO C4C
- SPL
- JMP C4C
- LDA NT
- SZE
- JMP C4C
-C4E CRA
- STA C4T0 T0 = 0. T1 =-MAX
- SUB K111
- STA C4T1
- JST KT00 SET D(0) = NO. OF WORDS PER ITEM
-C4F JST SAF
- CAS C4T0
- STA C4T0
- NOP
- LDA D0
- SUB AF (A) = D(0) - AF
- CAS C4T1
- STA C4T1
- NOP
- JST FL00 FETCH LINK ( (A)=A - F )
- SZE
- JMP C4F GO TO C4F
- LDA RPL
- ADD C4T0 RPL * RPL + T0 + TL
- STA C4T0
- ADD C4T1 TO = RPL-T1
- STA RPL
-C4I JST SAF
- LDA K101
- IAB (B) = REL
- LDA C4T0 (A) = TO-AF
- SUB AF
- JST AF00 DEFIME AFT
- JST FL00 FETCH LINK
- SZE IF (A) NOT ZERO,
- JMP C4I NOT END OF EQUIVALENCE GROUP
- JMP C4C CHECK NEXT ITEM IN ASSIGNMENI TABLE
-*
-C4L2 LDA FLT1 = LINK LOCATION TO COMMON BLOCK NAME
- STA C4T1
-C4L3 LDA A
- STA I SAVE A FOR LATER MODIFICATION
- JST FL00 FETCH LINK
- SNZ
- JMP C4M END OF COMMON GROUP
- JST STXI SET INDEX TO POINT TO CURRENT ITEM IN
-* COMMON GROUP.
- LDA DP,1 SET CL FIELD TO POINT AT COMMON BLOCK
-* NAME.
- ANA K119 ( = '177000)
- ADD C4T1 (= LINK LOCATION OF COMMON BLOCK NAME)
- STA DP,1
- JMP C4L3 PROCESS NEXT ITEM IN COMMON BLOCK
-*
-C4 LDA CFL LOC, OF FIRST (BLANK) COMMON BLOCK
- STA F
-C4L6 STA A
- CRA
- STA C4T0
-C4L JST FL00 FETCH LINK
- SNZ
- JMP C4L2 NO MORE ITEMS IN COMMON BLOCK
- LDA D0 ELSE, IF TO .LT. DO+AF,
- ADD AF
- CAS C4T0 T0 = D0 + AF
- STA C4T0
- NOP
- JMP C4L GO TO C4L
-C4M LDA AF
- STA F I=AF
- LDA C4T0 (A) = T0
- JST DA00 DEFINE AF
-*....OUTPUT COMMON BLOCK NAME AND SIZE TO LOADER
- LDA AF LENGTH OF COMMON BLOCK
- ANA K111 ='37777
- ADD K122 ='40000 (S/C CODE = 1)
- JST ON00 OUTPUT NAME BLOCK TO LOADER
- LDA F
- SUB CFL IF I = CFL
- SNZ
- JMP C4B
- LDA F
- JMP C4L6
-*
-SAF DAC **
- LDA AF
- LGL 2
- ARS 2
- STA AF
- JMP* SAF
-*
-* **************************
-* *DATA STATEMENT PROCESSOR*
-* **************************
-* PROCESS VARIABLE LIST .THEN OUTPUT LITERAL ITEMS
-* TO APPROPRIATE LOCATIONS. MODES MUST AGREE
-T0W4 PZE 0
-T1W4 PZE 0
-G PZE 0 LOWEST INDEX POINT IN LIST
-W4 LDA L0
- STA I I=END OF DATA POOL
-W4B JST IL00 INPUT LIST ELEMENT
- LDA AT D (0) = =WDS/ITEM
- SUB K102
- SNZ IF AT = 'STR-ABS'
- JMP W4T GO TO
- LDA I
- STA 0
- LDA S1 S1 * DEFLECTION IF AN ARRAY
- ADD AF
- STA DP,1 DP(E) = AF + S1
-W4C LDA A
- STA DP-1,1 DP (E-1) = A
- LDA I
- SUB K102
- STA I
- STA G
- LDA TC IF TC = ,
- SUB K134
- SNZ
- JMP W4B GO TO W4B
- LDA K104
- JST TS00 TEST FOR SLASH TERMINATOR
- LDA RPL
- STA T1W4
- LDA L0
- STA I I= END OF DATA POOL
-W4E CRA
- STA KPRM K' = KBAR = 0
- STA KBAR
-W4F JST DN00 INPUT, DNA
- LDA NT
- SZE IF NT = 0
- JMP W4G VARIABLE OR ARRAY
- LDA TC LAST CHARACTER
- CAS K17 ='250 ( =( )
- JMP *+2
- JMP *+3 START OF COMPLEX CONSTANT
- JST ER00 ERROR
- BCI 1,CN NON-CON DATA
- STA SXF SET SXF TO NON-ZERO
- JMP W4F FINISH INPUT OF COMPLEX CONSTANT
-W4G LDA KBAR MULTIPLY COUNT
- SZE
- JMP W4K GO TO W4K
- LDA TC IF TC NOT *
- SUB K103
- SZE
- JMP W4L
- LDA ID
- SUB K101
- STA KBAR KBAR = ID-1
- JST IT00 INTEGER TEST
- JMP W4F
-W4K LDA KPRM IF K NOT ZERO
- SZE
- JMP W4M GO TO W4M
-W4L LDA KBAR
- ALS 1 K ' = E-3* KBAR
- TCA
- ADD I
- STA KPRM
-W4M JST STXI SET INDEX = I
- LDA DP-1,1
- STA A A = DP (E-1)
- LDA IM
- STA T0W4 TO = IM
- JST FA00
- LDA BDF IF BDF NOT ZERO
- SZE
- JMP W4S GO TO W4S
- JST NM00 NON-COMMON TEST
-W4O JST STXI SET INDEX = I
- LDA DP,1
- STA RPL RPL = AF
- JST FS00 FLUSH
- CRA
- STA DF DF = 0
- LDA HOLF IS IT HOLLERITH DATA
- SZE NO
- JMP WHOW YES, GO TO OUTPUT IT
- LDA D0
- STA 0
- JMP *,1 SWITCH ON NUMBER OF WORDS TO OUTPUT
- JMP W405
- JMP W403
- JMP W404
- LDA TID+2
- JST OA00
- LDA TID+1
- JST OA00
- LDA TIDB+2
- JST OA00
- LDA TIDB+1
- JMP W406
-WHOW LDA D0 (A)=NO. OF WORDS PER ITEM
- ALS 1 (A)=NO. OF CHARS, PER ITEM
- STA NTID NTID=NO. OF CHARS. TO BE OUTPUT
- SUB HOLF
- SPL
- JMP WERR
- LDA ID FIRST WORD
- JST WSNG OUTPUT IT
- LDA ID+1 2ND WORD
- JST WSNG OUTPUT IT
- LDA ID+2 3RD WORD
- JST WSNG OUTPUT IT
- LDA ID+3 4TH WORD
- JST OA00 OUTPUT IT
- JMP W420 TO CHECK NEXT DATA
-*
-WSNG PZE 0
- JST OA00 OUTPUT (A)
- LDA NTID NO. OF CHARS, REMAINED TO BE OUTPUT
- SUB K102
- STA NTID NTID=NTID-2
- SNZ
- JMP W420 ALL FINISHED, CHECK NEXT ITEM
- JMP* WSNG SOME HOLLERITH CHARS, REMAINED
-W403 LDA TID+2 REAL OUTPUT
- JST OA00
- LDA TID+1
- JMP W406
-W404 LDA TID+2 DOUBLE PRECISION OUTPUT
- JST OA00
- LDA TID+1
- JST OA00
-W405 LDA TID INTEGER OUTPUT
-W406 JST OA00
- LDA T0W4
- ERA IM
- ANA K105
- SNZ
- JMP *+3
-* TO BE OUTPUT, RETURN
-WERR JST ER00
- BCI 1,DM DATA AND DATA NAME MODE DO NOT AGREE
-W420 LDA I
- SUB K102
- STA I I = I-2
- CAS KPRM
- NOP
- JMP W4M MORE TO DO
- SUB G TEST FOR COMPLETE
- SZE
- JMP W4P
- LDA K104
- JST TS00
- LDA T1W4
- STA RPL
- JST CH00 INPUT NEXT CHARACTER
- SUB K5 ='254 (,)
- SZE SKIP IF CHAR = COMMA
- JMP A1 CHECK FOR (CR)
- JMP W4 PROCESS NEXT DATA GROUP
-W4P LDA K134
- JST TS00
- JMP W4E
-W4S JST FS00 FLUSH BUFFER IF NECESSARY
- LDA AF POSITION WITHIN COMMON BLOCK
- LRL 14
- LDA K106 FORMAT BCD OUTPUT
- LGL 6
- LLL 6
- STA OCI
- IAB
- ANA K116
- STA OCI+1
- JST FL00 FETCH LINK
- LDA DP+4,1
- SSM
- ALR 1
- SSM
- ARR 1
- LRL 8
- ERA OCI+1
- STA OCI+1
- LDA DP+3,1
- IAB
- LDA DP+4,1
- LLL 8
- STA OCI+2
- LDA DP+2,1
- IAB
- LDA DP+3,1
- LLL 8
- STA OCI+3
- LDA DP+2,1
- LGL 2
- ADD K103
- LGL 6
- STA OCI+4
- LDA K128
- STA OCNT
- JST STXI I POINTS TO DATA TABLE
- LDA DP-1,1 SET A TO VARIABLE
- STA A
- JST FA00
- JMP W4O
-W4T LDA K101 =1 (=REL)
- IAB
- LDA RPL
- JST AF00 DEFINE AFT (AT=REL. AF=RPL)
- LDA I SET POINTER IN DATA POOL
- STA 0
- LDA RPL
- STA DP,1 DP(I) = RPL OF VARIABLE
- ADD D0
- STA RPL
- JMP W4C
-*
-*
-* *********************************
-* *BLOCK DATA SUBPROGRAM PROCESSOR*
-* *********************************
-* SET BLOCK DATA FLAG AND OUTPUT FORCE LOAD CODE
-R3 LDA LSTF =0 IF FIRST STATEMENT IN THE SUBPROGRAM
- SZE
- JMP *+3
- JST ER00 ERROR...NOT FIRST STATEMENT
- BCI 1,BL 'BLOCK DATA' NOT FIRST STATEMENT
- STA BDF SET BLOCK DATA FLAG ON (NON-ZERO)
- JST CH00 INPUT NEXT CHARACTER
- JMP A1 CHECK FOR (CR) AND EXIT
-*
-*
-*
-*
-*
-*
-*
-* ***************************
-* *TRACE STATEMENT PROCESSOR*
-* ***************************
-* SETS TRACE TAG ON VARIABLES OR SETS TRACE FLAG
-TRAC JST XN00 EXAMINE NEXT CHARACTER
- SZE SKIP IF CHAR, WAS A DIGIT
- JMP TRAD JUMP IF CHAR. WAS A LETTER
- JST IS00 INPUT STATEMENT NO.
- LDA A STATEMENT NO. POINTER
- STA TRF SET TRACE FLAG ON
- JMP A1 TEST FOR (CR) AND EXIT
-*
-TRAD JST NA00 INPUT NAME
- JST STXA SET INDEX TO NAME ENTRY
- LDA DP+4,1 TT(A) TRACE TAG
- CHS
- STA DP+4,1
- JMP B1 (,) OR (CR) TEST
-* (RETURN TO TRAC IF (,) )
-*
-*
-*
-* ********************
-* *OUTPUT OBJECT LINK*
-* ********************
-OL00 DAC **
- JST CN00 CALL NAME
- CRA
- STA DF DF = 0
- LDA ID (A) = IP
- JST OA00 OUTPUT +BS
-*
- JMP* OL00
-*
-* *****************
-* *OUTPUT I/O LINK*
-* *****************
-* GENERATE I/O DRIVER LINKAGE CODE. NAME OF
-* CALLED ROUTINE IS CHANGED IF UNIT DESIGNATOR
-* IS A CONSTANT.
-OI00 DAC **
- JST IV00 INPUT INT VAR/CON
- LDA NT
- SNZ IF NT = 0
- JMP OI20 GO TO 0I20
- LDA ID IF ID CR 9
- SUB K126 G0 TU OI20
- SMI
- JMP OI20
-* FORM F$RN OR F$WN
- LDA NAMF+1
- ANA K116
- ADD ID
- ADD K60 ='260 (SP)
- STA NAMF+1
-OI10 JST CN00 CALL NAME
- JMP* OI00 RETURN
-OI20 LRL 32
- LDA OMI7 OUTPUT OA
- JST OB00 (LOAD A (UNIT N0.))
- JMP OI10 FO TO OI10
-*
-*
-* ***********
-* *CALL NAME*
-* ***********
-* SET UP NAME AND GENERATE CODE FOR CALLING IT.
-CN00 DAC **
- JST FS00 FLUSH
- JST PRSP SET PRINT BUFFER TO SPACES
- LDA K147 SET UP OCI FOR CALL
- STA OCI
- LDA NAMF+1 OCI = NAMF
- STA PRI+9
- IAB ALSO TO PRINT BUFFER
- LDA NAMF
- STA PRI+8
- LRL 8
- STA OCI+1
- LLL 16
- STA OCI+2
- LDA NAMF+2
- STA PRI+10
- IAB
- LDA NAMF+1
- LLL 8
- STA OCI+3
- LLL 16
- STA OCI+4
- LDA K128 ='14
- STA OCNT OCNT = 6
- LDA CN90
- STA PRI+5
- LDA CN90+1
- STA PRI+6
- LDA RPL
- JST OR80
- DAC PRI
- SR2
- JMP *+3 INHIBIT SYMBOLIC OUTPUT
- CALL F4$SYM OUTPUT SYMBOLIC LINE,
- DAC PRI
- IRS RPL RPL = RPL + 1
- JST PRSP SET PRINT BUFFER TO SPACES
- JST FS00 FLUSH
- JMP* CN00 RETURN
-K147 OCT 55000
-CN90 BCI 2,CALL
-* *************
-* *OUTPUT PACK*
-* *************
-* OUTPUT THE PACK WORD WHEN IT IS FULL.
-PKF PZE 0 PACK FLAG
-T0OK PZE 0
-OK00 DAC **
- CAS CRET IF (A) = C/R
- JMP *+2
- JMP OK30 GO TO OK30
- IRS PKF PKF = PKF + 1
- JMP OK20 IF NON-ZERO, GO TO OK20
-OK10 ADD T0OK (A) = (A) + T0
- LRL 16
- STA DF
- IAB
- JST OA00 OUTPUT ABS
- JMP* OK00
-OK20 LGL 8
- STA T0OK
- LDA K123 PKF = - 1
- STA PKF
- JMP* OK00 RETURN
-OK30 LDA PKF IF PKF = 0
- SNZ
- JMP* OK00 RETURN
- LDA K8 ELSE (A) = SPACE,
- STA PKF
- JMP OK10 GO TO OK10
-*
-*
-* ***********
-* *OUTPUT OA*
-* ***********
-* GENERAL OUTPUT ROUTINE. MAKES CHECKS AGAINST
-* THE ASSIGNMENT TABLE ENTRY TO PROCESS DUMMY,
-* EXTERNAL, RELATIVE, ABSOLUTE OR STRING
-* REFERENCES PROPERLY.
-T1OB PZE 0
-OB00 DAC **
- STA FTOP FTOP = (A)
- IAB
- STA T1OB
- JST STXA ESTABLISH A
- SNZ IF A = 0
- JMP OB08 GO TO OB08
- JST FA00 FETCH ASSIGNS
- LDA SOF SPECIAL OUTPUT FLAT
- SZE
- JMP OB60 SUBSCRIPT CONSTANT DEFLECTION
- LDA AF
- STA T1OB T0 = AF
- LDA AT
- SUB K105 IF AT = 'DUM'
- SNZ
- JMP OB15 GO TO OB15
- LDA IU
- SUB K101 IF IU = 'SUB'
- SNZ
- JMP OB40 GO TO OB40
-OB06 LDA AT
- CAS K104 IF AT = 'COM'
- JMP *+2
- JMP OB20 GO TO OB20
- CAS K101
- JMP *+2 IF AT = 'REL'
- JMP OB10 GO TO OB10
- LDA K103
- IAB
- LDA RPL
- JST AF00 DEFINE AF AND AT
- LDA AT IF AT = 'STR-RE'
- SUB K103
- SNZ
- JMP OB10 GO TO OB10
- CRA
- STA AF AF = 0
-OB08 LDA K102
- STA DF SET FLAG TO OUTPUT SYMBOLIC
- LDA FTOP
- JST OA00 OUTPUT ABSOLUTE
- JMP* OB00 RETURN
-OB10 LDA T1OB
- STA AF
- LDA FTOP
- JST OR00 OUTPUT REL
- JMP* OB00 RETURN
-OB15 LDA FTOP
- CHS REVERSE INDIRECT BIT
- STA FTOP
- JMP OB10 GO TO OB10
-OB20 JST FS00 OUTPUT COMMON REOUEST
- LDA T1OB PACK ADDRESS INTO BLOCK
- LRL 14
- LDA FTOP
- LGR 10
- ADD K150
- LLL 6
- STA OCI
- LLL 8
- STA OCI+1
- JST SAV
- JST FL00
- LDA DP+2,1
- STA PRI+13 SET COMMON NAME INTO PRINT BUFFER
- LLR 8
- STA OCI+4
- LLL 8
- LDA DP+3,1
- STA PRI+12 SET COMMON NAME INTO PRINT BUFFER
- LLR 8
- STA OCI+3
- LLL 8
- LDA DP+4,1
- ANA K111 ='037777
- CAS *+1 LOOK FOR BLANK COMMON
- OCT 020240
- ERA K122
- ERA HBIT
- STA PRI+11 SET NAME INTO PRINT BUFFER
- LLR 8
- STA OCI+2
- LLL 8
- LDA OCI+1
- LLL 8
- STA OCI+1
- LDA K128 ='14
- STA OCNT
- JST RST
- LDA 0
- STA A RESTORE A TO POINT AT NAME
- LDA RPL SET RPL MINUS
- SSM TO DISABLE WORD OUTPUT
- STA RPL
- LDA FTOP OUTPUT WORD TO LIST
- JST OR00 SYMBOLIC COMMAND
- LDA RPL RESTORE AND
- SSP INCREMENT PROGRAM
- AOA COUNTER FOR COMMON
- STA RPL OUTPUT
- JST FS00 CLOSE OUT BLOCK
- JMP* OB00 EXIT
-OB30 LDA DP+4,1
- SSM
- ALR 1
- SSM
- ARR 1
- STA NAMF
- LDA DP+3,1
- STA NAMF+1
- LDA DP+2,1
- STA NAMF+2
- JST CN00
- JMP* OB00
-OB40 LDA AT
- SUB K102
- SNZ
- JMP OB30
- JMP OB06
-OB50 OCT 140000
-*
-OB60 CRA
- STA SOF RESET SPECIAL OUTPUT FLAG
- LDA AT ADDRESS TYPE
- CAS K105 TEST FOR DUMMY
- JMP OB06 PROCESS NORMALLY
- JMP OB61
- JMP OB06 PROCESS NORMALLY
-OB61 LDA T1OB
- STA FTOP
- CRA
- JMP OB08+1
-*
-K150 OCT 700
-*
-*
-* **************
-* OUTPUT TRIADS*
-* **************
-* PROCESSES THE TRIAD TABLE, HANDLES FETCH
-* GENERATION AND RELATIONAL OPERATOR CODE
-* GENERATION, DRIVES OUTPUT ITEM. ASSIGNS
-* AND OUTPUT TEMP STORES.
-T0OT PZE 0
-T2OT PZE 0
-T1OT PZE 0
-T3OT PZE 0 TEMP STORE FOR P
-OT00 DAC **
- JST SAV
- LDA L0
- STA I I = L0
- CRA
- STA T0OT T0 = 0
- STA IFLG
-OT06 STA T1OT T1 = I
-OT10 LDA I
- SUB K103 I = I-3
- STA I
- STA T2OT T2 = I
- SUB L
- SPL
- JMP OT60 IF FINISHED, GO TO OT60
- JST STXI
- LDA DP+2,1
- SSP CHECK P (I)
- CAS K139 X
- JMP *+2
- JMP OT10
- CAS K138 H
- JMP *+2
- JMP OT10
- CAS K142 I
- JMP *+2
- JMP OT50
- CAS K143 T
- JMP *+2
- JMP OT40
- CAS K151 Q
- JMP *+2
- JMP OT35
- STA T3OT SAVE P
- LDA DP+1,1
- STA A A = O1(I)
- CAS T1OT
- JMP *+2
- JMP OT30
- CAS L0
- JMP OT16
- JMP OT99 MAYBE SPECIAL LOAD FOR (A=) STATEMENT
- JMP OT16
-OT18 JST STXI
- LDA DP,1
- STA A A = O2 (I)
- LDA DP+2,1
- SSP
- JST OM00 OUTPUT ITEM(P(I),A = 02(I))
-OT22 JST STXI
- LDA DP+2,1
- SMI
- JMP OT28
- CRA ASSIGN TEMP STOR
- STA NT NT = 0
- LDA K102
- STA IU IU = VAR
- LDA T0OT
- LRL 6
- LDA TCF ID =
- LRL 3 TS-IM-TCF-T0
- LDA MFL
- STA IM
- LLL 9
- JST OR80
- DAC ID
- LDA K77
- STA ID
- IRS T0OT T0 = T0+1
- JST AS00 ASSIGN ITEM
- JST STXI
- LDA A
- STA DP,1 O2(I) = A
- LDA K153
- SSM SURPRESS TRACE OF TEMPORARY STORAGE
- JST OM00 OUTPUT ITEM (=,A)
-OT28 LDA I
- JMP OT06
-OT30 JST STXA
- LDA DP+2,1
- SSP IF P (A) = 0
- SZE
- JMP OT32
-OT16 LDA K152 GENERATE FETCH
- JST OM00 OUTPUT ITEM
-OT32 LDA T3OT CHECK FOR RELATIONALS
- SUB K125 ='10
- SPL
- JMP OT18 NOT LOGICAL OR6RATOR
- SUB K106 =6
- SMI
- JMP OT18 NOT A LOGICAL QPERATOR
- STA 0 SET INDEX = -1 TO -6
- LDA K103 =3 (LOG)
- STA MFL SET MODE TO LOGICAL
- CRA
- STA A SET FOR OCTAL ADDRESS
- JMP *+7,1 BRANCH TO OPERATOR PROCESSOR
- JMP OT3G .LT.
- JMP OT3E .LE.
- JMP OT3C .EQ.
- JMP OT3B .GE.
- JMP OT3A .GT.
- LDA OMJ4 .NE. =ALS 16
- JST OA00 OUTPUT ABSOLUTE
- LDA OMJ6 =ACA
- JMP OT3D
-OT3A LDA OMJ7 *TCA
- JMP OT3F
-OT3B LDA OMK1 =CMA
- JMP OT3F
-OT3C LDA OMJ4 = ALS 16
- JST OA00
- LDA OMK2 =SSC
- JST OA00 OUTPUT ABSOLUTE
- LDA OMK3 =AOA
-OT3D JST OA00 OUTPUT ABSOLUTE
- JMP OT22
-OT3E LDA OMJ2 =SNZ
- JST OA00 OUTPUT ABSOLUTE
- LDA OMK4 =SSM
-OT3F JST OA00 OUTPUT ABSOLUTE
-OT3G LDA OMJ5 =LGR 15
- JMP OT3D
-*
-OT35 LDA DP+1,1
- STA ID
- JST NF00
- LDA K78 NAMF = F $AR
- STA NAMF+1
- JST OL00 OUTPUT OBJECT LINK
- JMP OT18 GO TO OT18
-OT40 LDA DP,1
- ADD DO
- STA I I = 02 (I) + DO
- JST DQ00 DO TERMINATION
-OT45 LDA T2OT
- STA I I = T2
- JMP OT28
-OT50 LDA DP,1
- ADD DO I=O2(I)+DO
- STA I IF I = DO
- SUB DO
- SZE GO TO OT45
- JST DS00 DO INITIALIZE
- JMP OT45 GO TO OT45
-OT60 JST RST
- LDA L0 RESET TRIAD TABLE
- STA L
- JMP* OT00
-*
-OT99 LDA T3OT
- SUB K153 CODE FOR =
- SZE
- JMP OT16 NOT SPECIAL LOAD
- STA MFL SPECIAL LOAD, SET MFL=0
- JMP OT18 OUTPUT A STORE
-K77 BCI 1,T$ T$
-K78 BCI 1,AR AR
-K142 OCT 27
-K143 OCT 30
-K151 OCT 32
-K152 OCT 31
-* *************
-* *OUTPUT ITEM*
-* *************
-*
-* DRIVES BASIC OUTPUT ROUTINES. HANDLES SPECIAL
-* SUBSCRIPT PROCESSING, GENERATES NECESSARY
-* MODE CONVERSION CALLS AND HANDLES MODE
-* CHECKING. IN-LINE ARITHMETIC CODE IS
-* GENERATED WHERE POSSIBLE. OTHERWISE CALLS
-* TO ARITHMETIC ROUTINES ARE GENERATED.
-*
-T0OM PZE 0
-T1OM PZE 0
-T2OM PZE 0
-T8OM PZE 0
-T9OM PZE 0
-TXOM PZE 0
-*
-*-------------OUTPUT ITEM
-OM00 DAC ** RETURN ADDR
- STA T8OM
- SSP
- STA T0OM R(0)=(A)='P' CODE
- CAS K134
- JMP *+2
- JMP OMD1
- LDA TXOM
- CAS K101
- JMP OME1
- JMP OME5
-OM05 CRA
- STA T1OM T(1)=0
- STA T9OM T(9)=0
- LDA A
- STA T2OM T(2)=A
- SZE
- JMP OM07
- LDA MFL
- JMP OM13
-OM07 CAS L0
- JMP *+2
- JMP OML1
- CAS ABAR
- JMP OM76 A .LE. ABAR....WITHIN TRIAD TABLE
- JMP *+1
-OM10 JST STXA SET INDEX=A
- LDA DP,1
- ARS 9 SES IM=MODE OF ITEM
- ANA K107
-OM13 STA IM
-OM14 LDA MFL SET MFL,IM AS DIGITS INTO NAMF
- ALS 8
- ADD IM
- ERA OM90 ADD '0''0'
- STA NAMF+1
- LDA K130
- STA 0 INDEX=-6
- LDA T0OM
- CAS OM50+6,1 CHECK FOR SPECIAL OPERATOR
- JMP *+2 '1
- JMP* OM52+6,1 'P'='Q',',','0','A'F', OR 'E'
- IRS 0
- JMP *-4
- LDA MFL
- SNZ
- JMP OM62 SPECIAL LIBRARY FIX FOR ( A= )
- CAS IM CHECK FOR MODE MIXING
- JMP *+2
- JMP OMA1 ITEM MODE SAME AS CURRENT MODE
-OM20 LDA K103
- JST OM44 CHECK MODE FOR LOG
- LDA K102 =2 (MODE CODE FOR REAL)
- CAS MFL MODE OF EXPRESSION
- JMP *+2
- JMP OM26 IF MODE=REAL, ALLOW COMPLEX MODE MIXING
- CAS IM MODE OF ITEM
- JMP *+2
- JMP OM26 IF MODE=REAL, ALLOW COMPLEX MODE MIXING
- LDA K105
- JST OM44 TEST FOR MODE = COMPLEX
-OM26 LDA T0OM OPERATOR BEING PROCESSED
- CAS K153
- JMP *+2
- JMP OM36 T(0)='=' (ALLOW INTEGER MODE)
- LDA K101
- JST OM44 TEST FOR MODE=INTEGER
- LDA IM
- CAS MFL
- JMP OM38 CONVERT MODE OF ACCUMULATOR
- JMP *+1
-OM30 JST NF00 SET LBUF+2 TO SPACES
- LDA T0OM
- STA 0
- LDA A9X4,1 PICK-UP PRINT CODE FOR 'P' OPERATOR
- ARS 6
- ANA K100 ='377
- SNZ
- JMP OM46 MODE MIXING ERROR
- LGL 8
- ERA OM91 ADD '$'
- STA NAMF
- LDA K134
- STA T0OM T(0)=','
- JMP OM40
-*
-OM36 LDA K105
- JST OM44 CHECK FOR MODE=COMPLEX
-OM38 LDA IM
- STA MFL
- JST NF00 SET LBUF+2 TO SPACES
- LDA OM92 'C$'
- STA NAMF
-OM40 JST CN00 OUTPUT....CALL NAMF
- LDA MFL
- STA IM SET ITEM MODE TO CURRENT MODE
- LDA NAMF
- CAS OM96
- JMP OM14
- JMP* OM00
- JMP OM14 OUTPUT ARGUMENT ADDRESS
-*
-*-----SUBROUTINE TO CHECK FOR ILLEGAL IM OR MFL MODES,
-OM44 DAC ** RETURN ADDR,
- CAS IM CHECK FOR IM0(A)
- JMP *+2
- JMP OM46 ERROR
- CAS MFL CHECK FOR MFL=(A)
- JMP* OM44
- JMP OM46 ERROR
- JMP* OM44
-OM46 JST ER00 NON-RECOVERABLE ERROR......
- BCI 1,MM MODE MIXING ERROR
-*
-*------SPECIAL 'P' OPERATOR TABLE
-OM50 OCT 32 'Q'
- OCT 17 ','
- OCT 00 '0'
- OCT 22 'A'
- OCT 31 *F'
- OCT 20 'E'
-OM52 DAC OMB3 ('Q')
- DAC OMB3 (',')
- DAC OMB3 ('0')
- DAC OM56 ('A')
- DAC OM60 ('F')
- DAC OM70 ('E')
-*
-*
-OM56 LDA OMI1 SET T(1) = ADD*
- JMP OMB1
-*
-OM60 JST STXA SET INDEX = A
- LDA DP+1,1
- LGR 14 SET UV=IU(A)
- STA IU
- JST STXI SET INDEX=I
- LDA DP+2,1 P(I)
- ANA K133 ='77
- SNZ
- JMP OM64 (POSSIBLE DUMMY ARRAY FETCH)
-OM62 LDA IM
- STA MFL SET CURRENT MODE TO ITEM MODE
- LGL 8
- ADD IM
- ERA OM90
- STA NAMF+1
- LDA IU
- SUB K101 CHECK FOR IU=1 (SUBROUTINE)
- SZE
- JMP OMA1
- LDA OMI2 SET T(1) = JST
- JMP OM66
-OM64 LDA IU
- SUB K103 CHECK FOR IV=3 (ARRAY)
- SZE
- JMP OM62
- LDA K101 SET CURRENT MODE TO INTEGER
- STA MFL
- LDA OMI3 SET T(1) = LDA*
-OM66 STA T1OM
- JMP OMB3
-*
-OM70 LDA K101
- CAS IM CHECK ITEM MODE EQUALS INTEGER
- JMP *+2
- JMP OM74
- LDA K105 CHECK FOR MODE = COMPLEX
- JST OM44
- JMP OM20
-OM74 LDA K103 CHECK FOR MODE = LOGICAL
- JST OM44
- JMP OM30 OUTPUT SUBROUTINE CALL
-*
-OM76 JST STXA INDEX=A
- LDA DP,1 02(A)
- STA T2OM T(2)=02(A)
- LDA DP+2,1 P(A)
- ANA K133 ='77
- SNZ
- JMP OM84 P(A)='0' (SUBSCRIPTED VARIABLE)
- CAS K139
- JMP *+2
- JMP OM80 P(A) = 'X' (END OF ARRAY CALCULATION)
- CAS K138
- JMP *+2
- JMP OMHW
-OM78 LDA T2OM P(4)= 'H' (HOLLERITH DATA)
- STA A RESET A
- JMP OM10
-*
-OM80 JST STXI INDEX=I
- LDA T2OM
- STA DP+1,1 O1(I) = T(2)
- CRA
- STA T1OT SET T(1) OF OUTPUT TRIADS TO ZERO
- LDA A SAVE A
- STA T1OM
- CRA SET A=0 (NOT SYMBOLIC)
- STA A
- LDA RPL
- ADD K102 AF = RPL+ 2
- STA AF
- LDA OMI4 =ADD INSTRUCTION
- JST OR00 OUTPUT RELATIVE
- LDA RPL
- ADD K102 AF = RPL P+ 2
- STA AF
- LDA OMI5 = JMP INSTR,
- JST OR00 OUTPUT RELATIVE
- LDA T1OM
- STA A RESTORE A
- STA SOF SET SPECIAL OUTPUT FLAG TO NON-ZERO
- CRA = DAC INSTR.
- STA T1OM
- LDA K101
- STA AT
- JMP OM88
-OM84 LDA DP+1,1 O1(A)
- STA A A=O1(A)
- CAS L0
- JMP *+2
- JMP OM86 A=L(0)....CONSTANT SUBSCRIPT ONLY
- LDA OMI0 T(1) = INDIRECT BIT
- STA T1OM
- JMP OM10
-*
-OM86 LDA T2OM A=T(2)
- STA A
- STA 0
- STA SOF
- LDA DP,1 T(2) = 02(A)
- STA T2OM
-OM88 JST STXA INDEX=A
- LDA DP+1,1 O1(A)
- STA T9OM T(9)=O1(A)
- JMP OM78
-OMHW LDA T2OM
- STA AF
- CRA
- STA A
- JST OR00
- JMP* OM00
-*
-OM90 OCT 130260 '00'
-OM91 OCT 000244 ' $'
-OM92 OCT 141644 'C$'
-OM93 OCT 152322 'TR'
-OM94 OCT 000021 'C' CODE
-OM95 OCT 017777 (MASK)
-OM96 BCI 1,N$
-OM97 BCI 1,-1
-*
-OMA1 LDA IM CHECK FOR IM=LOGICAL
- CAS K103
- JMP *+2
- JMP OMC1 IM=LOGICAL
- CAS K101 CHECK FOR IM=INTEGER
- JMP *+2
- JMP OMA3 IM=INTEGER
- JMP OM30
-*
-OMA3 LDA T0OM CHECK FOR T,0) = '+'
- CAS K103 =3
- JMP *+2
- JMP OMA4 T(0)= '*'
- CAS OM94 T(0) = 'C
- JMP *+2
- JMP OMA6 OUTPUT 'TCA'
- CAS K101
- JMP OMA5
- LDA OMI4 =ADD INSTR.
- JMP OMB1
-OMA4 LDA T2OM VALUE OF A
- SUB K126 ='12 KNOWN LOCATION OF A FOR 2
- SZE SMP IF MULTIPLIER IS A CONSTANT OF 2
- JMP OM30 COUPLE TO THE MULTIPLY SUBROUTINE
- STA A SET A AND AF TO ZERO (FOR LISTING FLAGS)
- STA AF
- LDA *+3 ALS 1 INSTRUCTION
- JST OA00 OUTPUT ABSOLUTE
- JMP* OM00 EXIT UUTPUT ITEM
- ALS 1 (INSTRUCTION TO BE OUTPUT)
-OMA5 CAS K102 CHECK FOR T(0) = '-'
- JMP OMA7
- LDA OMI6 =SUB INSTR,
- JMP OMB1
-OMA6 CRA
- STA A CAUSE OCTAL ADDR LISTING
- STA AF
- LDA *+3 TCA
- JST OA00 OUTPUT ABSOLUTE
- JMP* OM00 EXIT
- TCA
-OMA7 CAS K153 CHECK FOR T(0) = '='
- JMP *+2
- JMP OMA9 OUTPUT A STA INSTR,
- SUB K152 CHECK FOR T(0) = 'F'
- SZE
- JMP OM30
-OMA8 LDA OMI7 =LDA INSTR,
- JMP OMB1
-OMA9 LDA OMI8 =STA INSTR,
-OMB1 ADD T1OM T(1) = T(1) + INSTR.
- STA T1OM
-OMB3 LDA T2OM SET A=T(2)
- STA A
- LDA T9OM OUTPUT INSTR. WITH T(1) AND T(9)
- IAB
- LDA T1OM
- JST OB00 OUTPUT OA
- LDA T8OM CHECK FOR T(8) = '='
- CAS K153 ='16
- JMP* OM00
- JMP *+2
- JMP* OM00 EXIT
- LDA TRFA POINTER TO FIRST VARIABLE OR ARRAY
- STA A PROCESSED IN EXPRESSION
- JST TRSE OUTPUT TRACE COUPLING IF REQUIRED
- JMP* OM00 EXIT OUTPUT ITEM
-*
-*
-OMC1 LDA T0OM
- CAS K152 CHECK FOR T(0) = 'F'
- JMP *+2
- JMP OMA8 OUTPUT A LDA INSTR.
- CAS K153 CHECK FOR T(0) = '='
- JMP *+2
- JMP OMA9 OUTPUT A STA INSTR,
- CAS OM94 CHECK FOR T(0) = 'C'
- JMP *+2
- JMP OM30 OUTPUT COMPLEMENT CODING
- CAS K106
- JMP *+2
- JMP OMC5 OUTPUT AN ANA INSTR.
- CAS K107
- JMP OM46 ERROR
- JMP OM30
- JMP OM46 ERR0R
-OMC5 LDA OMI9 =ANA INSTR.
- JMP OMB1
-OMD1 IRS TXOM T0 = T0+1
- JMP OM05
-OME1 CRA
- STA DF DF = 0
- JST OA00 OUTPUT ABSOLUTE
-OME5 CRA
- STA TXOM T0 = 0
- JMP OM05
-*
-TRSE DAC 0 SUBROUTINE TO OUTPUT TRACE COUPLING
- JST STXA SET INDEX = A
- SZE
- LDA DP+4,1 CHECK STATUS OF TRACE TAG
- SPL
- JMP TRS7
- SR4
- JMP TRS7
- LDA TRF CHECK STATUS OF TRACE FLAG
- SNZ
- JMP* TRSE
-TRS7 JST NF00 SET LBUF TO 'F$', LSUF+2 TO SPACES
- LDA OM93 ='TR'
- STA NAMF+1
- JST CN00 OUTPUT.....CALL NAMF
- JST STXA SET INDEX = A
- LDA DP+4,1
- ANA OM95
- STA T1OM
- LDA DP+3,1
- STA T8OM
- LDA DP+2,1
- STA T9OM
- CRA
- STA DF
- LDA DP,1 MERGE IM WITH ITEM NAME
- ARS 9
- LGL 13
- ERA T1OM
- JST OA00 OUTPUT ABSOLUTE (FIRST 2 CHAR.)
- LDA T8OM
- JST OA00 OUTPUT ABSOLUTE (NEXT 2 CHAR.)
- LDA T9OM
- JST OA00 OUTPUT ABSOLUTE (LAST 2 CHAR.)
- JMP* TRSE
-*
-*.................INSTRUCTION TABLE
-OMI0 OCT 100000 INDIRECT BIT
-OMI1 OCT 114000 ADD*
-OMI2 OCT 020000 JST
-OMI3 OCT 104000 LDA*
-OMI4 OCT 014000 ADD
-OMI5 OCT 002000 JMP
-OMI6 OCT 016000 SUB
-OMI7 OCT 004000 LDA
-OMI8 OCT 010000 STA
-OMI9 OCT 006000 ANA
-OMJ1 OCT 102000 JMP*
-OMJ2 OCT 101040 SNZ
-OMJ3 OCT 101400 SMI
-OMJ4 ALS 16
-OMJ5 OCT 040461 LGR 15
-OMJ6 OCT 141216 ACA
-OMJ7 OCT 140407 TCA
-OMK1 OCT 140401 CMA
-OMK2 OCT 101001 SSC
-OMK3 OCT 141206 AOA
-OMK4 OCT 140500 SSM
-OMK5 OCT 042000 JMP 0,1
-OMK6 OCT 000000 DAC **
- ALS 1 ALS1
- TCA TCA
-OMK7 OCT 176000 STG
-OMK9 CAS 0 CAS
- STA* 0
- SUB* 0
- DAC* **
- OCT 131001
- OCT 030000 SUBR
- CAS* 0
-OMK8 OCT 0 (///)
-OML1 LDA K101
- STA AT
- JMP OT10
-*
-* ************
-* *OUTPUT REL*
-* ************
-* ALSO DRIVES SYMBOLIC INSTRUCTION OUTPUT.
-OR00 DAC **
- STA FTOP
- LDA K102 DF = NON ZER0
- STA DF CODE = 2
-OR10 STA CODE
- LDA RPL LIST RPL
- SSP
- JST OR80
- DAC PRI
-OR12 LDA DF IF DF NOT ZERO
- SZE
- JMP OR20 GO TO OR20
- LDA OR18 ='147703
- STA PRI+5
- LDA OR19 SET 'OCT' INTO PRINT IMAGE
- STA PRI+6
- LDA FTOP
-OR13 JST OR80
- DAC PRI+8
-OR15 LDA RPL IF RPL PLUS
- SMI
- JST OW00 OUTPUT WORD
- SR2
- JMP *+3 SURPRESS SYMBOLIC OUTPUT
- CALL F4$SYM LIST LINE
- DAC PRI
- JST PRSP SET PRINT BUFFER TO SPACES
- JMP* OR00 RETURN
-OR18 OCT 147703 (0)(C)
-OR19 OCT 152240 (T)(SP)
-OR20 JST SAV
- LDA OR90 SEARCH OP-CODE LIST
- TCA
- STA XR PUT BCI IN PRINT IMAGE
- LDA FTOP
- SSP
- SZE
- JMP OR24
- LDA AT
- CAS K103
- SUB K106
- ADD K102
- CMA
- ANA K107
- STA CODE
-OR24 LDA FTOP
- CAS OR91+NINS,1
- JMP *+2
- JMP *+3
- IRS XR
- JMP *-4
- LDA OR92+NINS,1
- STA PRI+5
- LDA OR93+NINS,1
- STA PRI+6
- JST RST
- LDA A
- SZE
- JMP OR30
- LDA AF
- ANA K111 MASK OUT HIGH BITS OF ADDRESS
- JMP OR13
-OR30 JST STXA
- LDA DP,1
- SMI
- JMP OR40
- LDA K149
- STA PRI+8 SET =' INTO LISTING
- LDA DP,1 CHECK IM (A)
- LGL 4
- SPL SKIP IF NOT COMPLEX
- JMP *+4
- LGL 2
- SPL SKIP IF INTEGER OR LOGICAL
- JMP *+3
- LDA DP+2,1
- JMP *+2 LIST EXPONENT AND PART OF FRACTION
- LDA DP+4,1 LIST INTEGER VALUE
- JST OR80 CONVERT OCTAL
- DAC PRI+9
- JMP OR15
-OR40 LDA DP+4,1 CONVERT AND PACK INTO
- ALR 1
- SSM SYMBOLIC IMAGE
- ARR 1
- SSM
- STA PRI+8
- LDA DP+3,1
- STA PRI+9
- LDA DP+2,1
- STA PRI+10
- JMP OR15
-* ***********
-* *OUTPUT ABS*
-* ***********
-OA00 DAC **
- STA FTOP
- LDA OA00
- STA OR00
- CRA
- JMP OR10
-* *******************
-* *OUTPUT STRING-RPL*
-* *******************
-OS00 DAC 00
- STA AF
- LDA OMK7
- STA FTOP
- LDA OS00
- STA OR00 SET RETURN INTO OUTPUT REL
- LDA K104
- STA CODE
- STA STFL STRING FLAG = NON ZERO
- JST PRSP SET PRINT BUF. TO SPACES
- JMP OR20 JMP-OUTPUT REL FOR SYMBOLIC AND BINARY
-OR80 DAC **
- IAB
- LDA* OR80
- STA OR89
- CRA
- LRR 2
- IRS OR80
- JST OR85
- JST OR85
- JST OR85
- JMP* OR80
-OR85 DAC **
- ADD K140
- LLR 3
- LGL 5
- ADD K140
- LLL 3
- STA* OR89
- IRS OR89
- CRA
- JMP* OR85
-OR89 PZE 0
-OR90 DAC NINS
-K200 EQU OMI7
-K201 EQU OMI5
-K202 EQU OMI8
-K203 EQU OMI4
-K204 EQU OMI6
-K205 EQU OMJ3
-K206 EQU OMJ1
-K207 EQU OMK5
-OR91 EQU OMI1
-OR92 BCI 22,ADJSLDADJMSULDSTANJMSNSMLLLRACTCCMSSAOSSJMDA
- BCI 2,ALTC
- BCI 9,STCASTSUDAERSUCA//
-OR93 BCI 22,D*T A*D P B A A A P*Z I 1515A A A C A M PXC
- BCI 2,S1A
- BCI 9,G S A*B*C*R/BRS*/
-NINS EQU 32
-*
-PRSP DAC ** SUBR. T0 SET PRINT BUF. T0 SPACES
- LDA PRSK =-40
- STA 0
- LDA KASP (SP)(SP)
- STA PRI+40,1
- IRS 0
- JMP *-2
- JMP* PRSP EXIT
-PRSK OCT 177730 =-40
-*
-* *************************************
-* *OUTPUT SUBROUTINE/COMMON BLOCK NAME*
-* ************************************
-* OUTPUT AN EXTERNAL REFERENCE NAME.
-*
-ON00 DAC **
- STA ONT1 SAVE ADDRESS
- JST FS00 FLUSH BUFFER IF NECESSARY
- JST STXA SET INDEX=A
- LDA ONT1 SUBR. ENTRY ADDR.
- LRL 14
- STA ONT1 SAVE S/C BITS
- LDA ON02 ='600 (=BLOCK CODE NO.)
- LLL 6
- STA OCI FILL BUFFER
- LRL 8
- JST STXA SET INDEX=A
- LDA DP+4,1 FIHST 2 CHAR. 0F NAME
- ANA K111 ='037777
- CAS *+1
- OCT 020240
- ERA K122
- ERA HBIT ='140000
- LRR 8
- STA OCI+1 BUFFER
- LRL 8
- LDA DP+3,1 SECOND 2 CHAR. OF NAME
- LRR 8
- STA OCI+2 BUFFER
- LRL 8
- LDA DP+2,1 LAST 2 CHAR. OF NAME
- LRR 8
- STA OCI+3 BUFFER
- LLL 8
- LGL 2
- ADD ONT1 S/C BITS
- LGL 6
- STA OCI+4 BUFFER
- CRA SET SIZE = 0
- STA OCI+5 8UFFER
- LDA K128 ='14
- STA OCNT SET 8LOCK SIZE (DOUBLED)
- JST FS00 FLUSH BUFFER
- JMP* ON00 EXIT
-ON02 OCT 600 BLOCK CODE NUMBER (6)
-ONT1 OCT 0 TEMP STORE
-*
-K149 BCI 1,='
-K140 OCT 26
-*
-OW00 DAC **
- JST SAV
- LDA RPL
- SUB ORPL
- SPL
- TCA
- CAS K101
- JST FS00 FLUSH BUFFER IF DIFFERENCE IN RPL'S N0T 1
- NOP
- LDA OCNT
- ADD K103
- CAS K146
- NOP
- JST FS00 FLUSH BUFFER
- LDA OCNT
- ADD K103
- STA OCNT OCNT = OCNT+3
- SUB K103
- ARR 1 OCI (OUTPUT CARD IMAGE)
- STA XR
- SMI LEFT OR RIGHT POS,
- JMP OW20
- JST PU00
- LRL 8 IF BUFFER FULL
- IMA OCI,1
- ANA K116 CALL FLUSH (FS0O)
- ERA OCI,1
-OW10 STA OCI,1
- IAB
- STA OCI+1,1
- LDA PRI+16
- IAB
- LDA PRI+14 USE LOW BIT OF PRI+14 DATA
- LLL 9
- LGR 1 STRIP OFF HIGH BIT OF BLOCK CODE TYPE NO,
- LLL 3 SET DIGITS IN PRI+17, PRI+19
- JST OR80
- DAC PRI+16
- LDA PRI+14
- LRL 6
- LGL 1 SHIFT ADDR. TO RIGHT BY 1 BIT
- LLL 5
- JST OR80 SET DIGITS IN PRI+15, PRI+16
- DAC PRI+14
- LDA KASP (SP)(SP)
- SR1
- JMP OW14
- STA PRI+15 OVERWRITE BINARY DATA IN
- STA PRI+16 PRINT BUFFER WITH SPACES
- STA PRI+17 IF NO BINARY LISTING IS WANTED
- STA PRI+18
-OW14 STA PRI+14
- JST RST
- LDA RPL
- STA ORPL ORPL=RPL
- CRA
- IMA STFL INDICATE WORD WAS KEY TO LOADER
- SNZ THEN LEAVE RPL ALONE
- IRS RPL RPL = RPL+1
- JMP* OW00
-STFL PZE 0
-OW20 JST PU00
- JMP OW10
-ORPL PZE 0
-PU00 DAC **
- LDA CODE COMBINE CODES TO
- CAS K104 =4
- NOP
- JMP PU10
- SZE SKIP IF ABS
- JMP PU10 JUMP IF REL.
- LRL 8
- LDA FTOP
-PU08 LRL 4
- STA PRI+14 SAVE FOR LISTING
- IAB
- STA PRI+16
- LRR 12 RESTORE POSITION
- JMP* PU00
-PU10 LRL 4
- LDA AF
- LRL 4
- ERA FTOP
- JMP PU08
-PU20 LRL 4
- LDA AF
- ANA K111
- LRL 4
- IMA AF
- ANA K114
- ERA AF
- JMP PU08
-K114 OCT 14000
-K146 OCT 117
-*
-*
-* ******************
-* *FLUSH SUBROUTINE*
-* ******************
-FS00 DAC **
- LDA OCNT BUFFER OCCUPANCY SIZE
- JST SAV SAVE INDEX REGESTER
- SUB K104 CHECK FOR OCNT .GT. 4
- SPL
- JMP FS20 SKIP OUTPUT IF BUFFER IS EMPTY
- ADD K105 ADD 1/2 AT B14
- ARS 1 DIVIDE BY 2
- TCA
- STA OCNT OCNT = -WORDS/BUFFER
- SUB K101 =1
- STA PCNT BUFFER SIZE INCLUDING CHECKSUM
- LDA OCI FIRST WORD IN BUFFER
- LRL 12
- CAS K102 =2
- JMP *+2
- JMP FS30 BLOCK TYPE = 2 (RELOCATABLE CODE)
-* EVERY TIME A BLOCK OF OBJECT OUTPUT IS DUMPED, THE FIRST
-* 3 WORDS OF THE BLOCK IS INSERTED IN THE SYMBOLIC OUTPUT
-* ALONG WITH AN EOB OPERATOR CODE IF SENSE SWITCH 1 1S DOWN.
-* TO INHIBIT THIS LINE, REPLACE FROM FS10 TO AND INCLUDING
-* FS11 WITH (FS10 CRA ).
-FS10 SS1
- JMP FS11 N0 BINARY LISTING UNLESS SSW-1 IS DOWN
- CALL F4$SYM
- DAC PRI OUTPUT WHATEVER MIGHT BE IN SYMBOLIC BUF.
- LDA FS41 =(E)(O)
- STA PRI+5 ENTER 'EOB' INTO LISTING
- LDA FS41+1 =(B)(SP)
- STA PRI+6
- LDA OCI
- JST OR80 ENTER FIRST WORD FROM BUFFER INTO LISTING
- DAC PRI+8
- LDA OCI+1
- JST OR80 ENTER WORD 2 FROM BUFFER INTO LISTING
- DAC PRI+12
- LDA OCI+2
- JST OR80 ENTER WORD 3 FROM BUFFER INTO LISTING
- DAC PRI+16
- CALL F4$SYM OUTPUT SYMBOLIC BUFFER
- DAC PRI
- JST PRSP RESET SYMBOLIC BUFFER TO SPACES
-FS11 CRA
- STA 0 COMPUTE CHECKSUM
-FS12 ERA OCI,1 MERGE BUFFER WORD INTO CHECKSUM
- IRS 0 INCREMENT BUFFER POSITION
- IRS OCNT DECREMENT BUFFER SIZE
- JMP FS12
- STA OCI,1 SET CHECKSUM INTO BUFFER
- LDA PCNT = NO. OF WORDS IN BUFFER
- IMA 0
- ADD FS40 = OCI+1,1
- CALL F4$OUT PUNCH BUFFER
-FS20 LDA RPL SET UP BUFFER FOR NEXT OUTPUT
- LRL 8
- ADD K145 =#'2000 (BLOCK CODE 2)
- STA OCI
- IAB
- STA OCI+1 SET FIRST 2 WORDS OF BUFFER
- LDA K103 =O
- STA OCNT RESET BUFFER OCCUPANCY SIZE
- JST RST RESET INDEX REGISTER
- JMP* FS00 EXIT
-*
-FS30 LGL 6 MERGE BUFFER SIZE INTO BLOCK HEADER
- SUB OCNT BUFFER SIZE
- ADD K101 =1 (ACCOUNT FOR CHECKSUM)
- LLR 6
- LGR 6
- LLL 6 BRING IN UPPER HALF OF ADDRESSES
- STA OCI STORE INTO BUFFER
- JMP FS10 COMPUTE CHECKSUM
-*
-FS40 DAC OCI+1,1
-FS41 BCI 2,EOB 'EOB'
-K145 OCT 20000 BLOCK TYPE 2 CODE
-C499 OCT 060000
-*
-OCI BSS 40 40 WORD CARD IMAGE INPUT BUFFER
-PRI BSS 40 40 WORD PRINT BUFFER
- BCI 20,
- BSS 30 COMPILER PATCH AREA
-*
-* ***********************
-* *IOS (AND IOL) GO HERE*
-* ***********************
-*
- END A0
--- /dev/null
+* C210-001-6601 (FRTN) 3C NO.180463000 REV. D
+*
+*
+*
+* COMPUTER. DDP-116,516
+*
+*
+*
+*
+* PROGRAM CATEGORY- COMPILER
+*
+*
+*
+*
+* PROGRAM TITLE. FRTN
+* EXPANDED FORTRAN IV COMPILER
+* FOR DDP-116,516
+*
+*
+*
+*
+*
+*
+*
+* APPROVAL DATE
+*
+*
+* PROG--------------------- ------------
+*
+*
+* SUPR---------------------- ------------
+*
+*
+* QUAL---------------------- ------------
+*
+*
+* NO. OF PAGES ------------
+*
+* REVISIONS
+*
+* REV. D ECO 5249
+* REV. C ECO 3824 10-31-66
+* REV. B ECO 3476 09-19-66
+* REV. A 06-08-66
+*
+* AUTHOR
+*
+* HONEYWELL. INC. - COMPUTER CONTROL DIVISION
+*
+*
+* PURPOSE
+*
+* THIS PROGRAM IS DESIGNED TO COMPILE ASA STANDARD FORTRAN IV
+* PROGRAMS IN ONE PASS, GENERATING OPTIMUM OBJECT CODE FOR THE
+* DDP-116 OR DDP-516.
+*
+*
+* RESTRICTIONS
+*
+* MINIMUM 8K CORE STORAGE
+*
+*
+* STORAGE
+*
+* 6682 (DECIMAL)
+* 15034 (OCTAL)
+*
+*
+* USE
+*
+*
+* ********************************
+*
+* *FORTRAN-IV OPERATING PROCEDURE*
+* ********************************
+*
+* 1. LOAD THE COMPILER SYSTEM TAPE USING STANDARD 'LOAD-MODE'
+* (DDP-116), OR "PAL-MODE (DDP-516) LOADING PROCEDURES
+*
+* 2. SET THE (A) REGISTER FOR THE DESIRED INPUT/OUTPUT DEVICE
+* SELECTION AS DESCRIBED BELOW, SET (P) TO '1000, SET THE
+* SENSE SWITCHES AS DESCRIBED BELOW, AND PRESS START.
+*
+* 3. INPUT/OUTPUT DEVICE SELECTION (BITS SET IN (A) ON ENTRY).....
+* 1......IF SET, CERTAIN ERROR CHECKS ARE NOT MADE. THIS
+* OPTION IS USED WHEN COMPILING THOSE PARTS OF THE
+* LIBRARY WRITTEN IN FORTRAN LANGUAGE AND IT ALLOWS THE
+* LIBRARY TO TAKE ADVANTAGE OF THE COMPILER'S LOGIC TO
+* GENERATE SPECIAL CODING.
+*
+* 2-7....NOT ASSIGNED
+*
+* 8-10...INPUT DEVICE SELECTION
+* 1 = ASR-33/35 KEYBOARD (OR ITS PAPER TAPE READER)
+* 2 = NCR CARD READER
+* 3 = DIGITRONICS PAPER TAPE READER
+* 4 = MAGNETIC TAPE ( UNIT 1 )
+* 5-7 = (SPARES)
+*
+* 11-13..SYMBOLIC LISTING SELECTION
+* 0. SUPPRESS ALL SYMBOLIC LISTINGS
+* 1. ASR-33/35 TYPEWRITER
+* 2. LINE PRINTER
+* 3 = ( SPARE )
+* 4 = LISTING ON MAGNETIC TAPE UNIT 2
+* 5-7 = (SPARES)
+*
+* 14-16..BINARY OUTPUT SELECTION
+* 0. SUPPRESS BINARY OUTPUT.
+* 1. BRPE HIGH SPEED PAPER TAPE PUNCH
+* 2. ASR BINARY OUTPUT ASR/33
+* 3. ASR BINARY OUTPUT ASR/35
+* 4 = MAGNETIC TAPE OUTPUT
+* 5-7 (SPARES)
+*
+*
+* 4. SENSE SWITCH SETTINGS AND MEANINGS.......
+* 1......EXPAND THE SYMBOLIC LISTING TO INCLUDE
+* SIDE-BY-SIDE OCTAL INFORMATION.
+* 2......INHIBIT SYMBOLIC LISTING (AS LONG AS SSW-1 NOT SET).
+* 3......PAUSE BEFORE INPUT OF THE NEXT RECORD. DURING
+* THIS PAUSE, THE (A) REGISTER WILL DISPLAY THE CURRENT
+* STATUS OF THE I/O KEYBOARD, IT MAY BE
+* CHANGED AT THIS TIME IF DESIRED BEFORE RESETTING
+* SSW-3 AND PRESSING START TO CONTINUE.
+* 4......CAUSE TRACE COUPLING INFORMATION TO BE INCLUDED
+* IN THE OBJECT CODING BEING GENERATED REGARDLESS OF
+* ANY TRACE STATEMENTS WITHIN THE PROGRAM (OPERATOR
+* OVERRIDE).
+*
+* 5. WHEN BINARY TAPE IS BEING GENERATED, THE COMPILER
+* AUTOMATICALLY TURNS ON THE TAPE PUNCH AND PUNCHES OUT A
+* LENGTH OF LEADER. AFTER THE END-OF-JOB IS TYPED, A LENGTH OF
+* TRAILER IS PUNCHED BEFORE TURNING OFF THE PUNCH, AND THE LINE
+* PRINTER IS ADVANCED TO THE NEXT PAPER SEAM. PRESS 'START'
+* TO PROCESS THE NEXT PROGRAM (BATCH COMPILING).
+*
+* FOR ASR BINARY OUTPUT, NO LEADER OR TRAILER IS
+* PROVIDED, AND THE BINARY PUNCH IS LEFT ON THROUGHOUT
+* THE COMPILATION.
+*
+*
+* ERRORS
+*
+* THE ERROR MESSAGES OUTPUT BY THIS COMPILER ARE LISTED ON A
+* SEPERATE DOCUMENT FOR EASE OF DISTRIBUTION.
+* *************************
+* *DATA POOL ENTRY FORMATS*
+* *************************
+*
+* THE DATA POOL CONSISTS OF FOUR FORMS OF INFORMATION
+* 1. THE ASSIGNMENT TABLE CONSISTS OF 5 WORDS, STARTS
+* AT THE END OF THE COMPILER AND EXTENDS TOWARD THE
+* END OF MEMORY.
+*
+* TDCCCCCCCCCCCCCC....DP(A+4)
+* CCCCCCCCCCCCCCCC....DP(A+3)
+* CCCCCCCCCCCCCCCC....DP(A+2)
+* IIAAAAAAAAAAAAAA....DP(A+1)
+* NRRRMMMLLLLLLLLL....DP(A)
+*
+* T = TRACE TAG
+* D = DATA TAG
+* C = SIX 8-BIT CHAR. OR BINARY CONSTANT
+* I = ITEM USAGE (IU)
+* 0 = NO USAGE 2 = VAR/CONSTAN^
+* 1 = SUBPROGRAM 3 = ARRAY
+* A = ASSIGNMENT ADDRESS
+* N = NAME TAG (NT)
+* 0 = NAME 1 = CONSTANT
+* R = ADDRESS TYPE (AT)
+* 0 = ABSOLUTE 3 = STRING-REL
+* 1 = RELATIVE 4 = COMMON
+* 2 = STRING-ABS 5 = DUMMT
+* M = ITEM MODE (IM)
+* 1 = INTEGER 5 = COMPLEX
+* 2 = REAL 6 = DOUBLE
+* 3 = LOGICAL
+* 4=COM/EQU LINK
+* 2. THE DO TABLE 'FLOATS' ON TOP OF THE ASSIGNMENT
+* TABLE AND CONTAINS THE INFORMATION NEEDED TO CLOSE-OUT
+* A DO-LOOP, EACH ENTRY IS 5 WORDS.
+* 00IIIIIIIIIIIII
+* 00TTTITTTTTTTTT
+* 00XXXXXXXXXXXXX
+* 00UUUUUUUUUUUUUU
+* 00NNNNNNNNNNNNNN
+* I = INITIAL VALUE/OR RPL
+* T = TERMINAL VALUE
+* X = INDEX
+* U = INCREMENT
+* N = STATEMENT NUMBER
+*
+* 3. THE EXPRESSION TABLE (A0I TABLE) 'FLOATS' ON TOP
+* THE DO TABLE AND CONSISTS OF 2 WORD ENTRIES.
+*
+* NOOOOOOOOIIIIIII.....DP(I+1)
+* 00AAAAAAAAAAAAAAAA...DP(I)
+* N = NEGATION INDICATOR
+* O = OPERATOR
+* I = INDEX (OPERATOR LEVEL)
+* A = ASSIGNMENT TABLE REFERENCE
+* 4. THE TRIAD TABLE IS USED TO OPTIMIZE EXPRESSIONS AND
+* IS AT THE END OF MEMORY EXTENDING DOWN TOWARDS THE
+* COMPILER. EACH ENTRY IS THREE WORDS LONG.
+*
+* S000000000PPPPPP.....DP(L+2)
+* 0011111111111111.....DP(L+1)
+* 0022222222222222.....DP(L)
+* S = TEMP STORAGE INDICATOR
+* P = OPERATOR
+* 1 = FIRST OPERAND ADDRESS
+* 2 = SECOND OPERAND ADDRESS
+ ABS
+ ORG '100
+*
+* ************************************
+* * DIRECTORY OF FORTRAN IV COMPILER *
+* ************************************
+*
+*
+*
+*..............ENTRANCE GROUP
+ DAC A3 (ENG1) COMPILER ENTRANCE/INITIALIZE
+ DAC DP DATA POOL START
+*
+*..............INPUT GROUP
+ DAC IC00 (IPG1) INPUT COLUMN
+ DAC UC00 (IPG2) UNINPUT COLUMN
+ DAC CH00 (IPG3) INPUT CHARACTER
+ DAC ID00 (IPG4) INPUT DIGIT
+ DAC IA00 (IPG5) INPUT (A) CHARACTERS
+ DAC FN00 (IPG6) FINISH OPERATOR
+ DAC DN00 (IPG7) INPUT DNA
+ DAC II00 (IPG8) INPUT ITEM
+ DAC OP00 (IPG9) INPUT OPERAND
+ DAC NA00 (IPG10) INPUT NAME
+ DAC IG00 (IPG11) INPUT INTEGER
+ DAC IV00 (IPG12) INPUT INTEGER VARIABLE/CONSTANT
+ DAC IR00 (IPG13) INPUT INTEGER VARIABLE
+ DAC IS00 (IPG14) INPUT STATEMENT NUMBER
+ DAC XN00 (IPG15) EXAMINE NEXT CHARACTER
+ DAC SY00 INPUT STMBOL
+*
+*..............TEST GROUP
+ DAC TS00 (TSG1) ALL CHARACTER TEST (EXCEPT C/R)
+ DAC IP00 (TSG2) )-INPUT OPERATOR
+ DAC A1 (TSG3) C/R TEST
+ DAC B1 (TSG4) , OR C/R TEST
+ DAC NU00 (TSG5) NO USAGE TEST
+ DAC NC00 (TSG6) NON CONSTANT TEST
+ DAC NS00 (TSG7) NON SUBPROGRAM TEST
+ DAC AT00 (TSG8) ARRAY TEST
+ DAC IT00 (TSG9) INTEGER TEST
+ DAC NR00 (TSG10) NON REL TEST
+*
+*..............ASSIGNMENT GROUP
+ DAC AS00 (ASG1) ASSIGN ITEM
+ DAC TG00 (ASG2) TAG SUBPROGRAM
+ DAC TV00 (ASG3) TAG VARIABLE
+ DAC FA00 (ASG4) FETCH ASSIGN
+ DAC FL00 (ASG5) FETCH LINK
+ DAC KT00 (ASG6) D(0)= SIZE OF ARRAY DEFLECTION
+ DAC DM00 (ASG7) DEFINE IM
+ DAC DA00 (ASG8) DEFINE AF
+ DAC AF00 (ASG9) DEFINE AFT
+ DAC LO00 (ASG10) DEFINE LOCATION
+ DAC AI00 (ASG11) ASSIGN INTEGER CONSTANT
+ DAC AA00 (ASG12) ASSIGN SPECIAL
+ DAC NXT GET NEXT ENTRY FROM ASSGN TABLE
+ DAC BUD BUILD ASSIGNMENT TABLE ENTRT
+*
+*..............CONTROL GROUP
+ DAC B6 (CNG1) JUMP
+ DAC C5 ILL TERM
+ DAC C6 (CNG2) CONTINUE
+ DAC C7 (CNG3) STATEMENT INPUT
+ DAC C8 (CNG4) STATEMENT SCAN
+ DAC A9 (CNG5) STATEMENT IDENTIFICATION
+ DAC NP00 (CNG6) FIRST NON-SPEC CHECK
+*
+*..............SPECIFICATIONS GROUP
+ DAC EL00 (SPG1) EXCHANGE LINKS
+ DAC NM00 (SPG2) NON COMM0N TEST
+ DAC ND00 (SPG3) NON DUMMY OR SUBPROGRAM TEST
+ DAC SC00 (SPG4) INPUT SUBSCRIPT
+ DAC IL00 (SPG5) INPUT LIST ELEMENT
+ DAC R1 (SPG6) FUNCTION
+ DAC R2 SUBROUTINE
+ DAC A3 (SPG7) INTEGER
+ DAC A4 REAL
+ DAC A5 DOUBLE PRECISION
+ DAC A6 COMPLEX
+ DAC A7 LOGICAL
+ DAC B2 (SPG8) EXTERNAL
+ DAC B3 (SPG9) DIMENSION
+ DAC B7 INPUT DIMENSION
+ DAC B4 (SPG10) COMMON
+ DAC B5 (SPG11) EQUIVALENCE
+ DAC C2 (SPG12) RELATE COMMON ITEMS
+ DAC C3 (SPG13) GROUP EOUIVALENCE
+ DAC C4 (SPG14) ASSIGN SPECIFICATIONS
+ DAC W4 (SPG15) DATA
+ DAC R3 (SPG16) BLOCK DATA
+ DAC TRAC (SPG17) TRACE
+*
+*..............PROCESSOR GROUP
+ DAC V3 (PRG1) IF
+ DAC R7 (PRG2) GO TO
+ DAC IB00 INPUT BRANCH LIST
+ DAC W3 (PRG3) ASSIGN
+ DAC C9 (PRG5) DO
+ DAC V7 (PRG6) END FILE
+ DAC V6 BACKSPACE
+ DAC V8 REWIND
+ DAC V5 (PRG7) READ
+ DAC V4 WRITE
+ DAC V2 (PRG8) FORMAT
+ DAC SI00 INPUT FORMAT STRING
+ DAC IN00 INPUT NUMERIC FORMAT STRING
+ DAC NZ00 NON ZERO STRING TEST
+ DAC W8 (PRG9) PAUSE
+ DAC W7 STOP
+ DAC R8 (PRG10) CALL
+ DAC G2 ASSIGNMENT STATEMENT
+ DAC R9 (PRG11) RETURN
+ DAC G1 (PRG12) STATEMENT FUNCTION
+ DAC W5 (PRG13) END
+*
+*..............PROCESSOR SUBROUTINES GROUP
+ DAC PO00 (PSG1) INPUT CHAR AND OUTPUT PACK
+ DAC HS00 (PSG2) TRANSMIT HOLLERITH STRING
+ DAC DP00 (PSG3) DO INPUT
+ DAC DS00 (PSG4) DO INITIALIZE
+ DAC DQ00 (PSG5) DO TERMINATION
+ DAC EX00 (PSG6) EXPRESSION
+ DAC CA00 (PSG7) SCAN
+ DAC ST00 TRIAD SEARCH
+ DAC TC00 TEMP STORE CHECK
+ DAC ET00 (PSG8) ENTER TRIAD
+ DAC GE00 (PSG9) GENERATE SUBPROGRAM ENTRANCE
+*
+*..............OUTPUT GROUP
+ DAC OL00 (OPG1) OUTPUT OBJECT LINK
+ DAC OI00 (OPG2) OUTPUT I/O LINK
+ DAC CN00 (OPG3) CALL NAME
+ DAC OK00 (OPG4) OUTPUT PACK
+ DAC OB00 (OPG5) OUTPUT OA
+ DAC OT00 (OPG6) OUTPUT TRIADS
+ DAC OM00 (OPG7) OUTPUT ITEM
+ DAC OR00 (OPG8) OUTPUT REL
+ DAC OA00 OUTPUT ABS
+ DAC OS00 OUTPUT STRING
+ DAC OW00 (OPG9) OUTPUT WORD
+ DAC PU00 PICKUP
+ DAC FS00 (OPG10) FLUSH
+ DAC TRSE (OPG11) OUTPUT TRACE COUPLING
+ DAC PRSP SET BUFFER TO SPACES
+*
+*..............MISC. GROUP
+ DAC AD3 ADD TWO 3 WORD INTEGERS
+ DAC IM00 MULTIPLY (A) BY (B)
+ DAC STXA SET A INTO INDEX
+ DAC STXI SET I INTO INDEX
+ DAC NF00 SET FS INTO NAMF
+ DAC BLNK SET AREA TO ZEROS
+ DAC MOV3 MOVE 3 WORDS TO TEMP STORAGE
+ DAC CIB COMPARE IBUF TO A CONSTANT
+ DAC SAV SAVE INDEX IN PUSH-DOWN STACK
+ DAC RST RESET INDEX FROM PUSH-DOWN STACK
+ DAC PACK
+ DAC ER00 ERROR OUTPUT
+ DAC SRT SHIFT RIGHT 1 (TRIPLE PRES.)
+ DAC SFT SHIFT LEFT 1 (TRIPLE PRES.)
+ DAC LIST
+*
+*
+* ****************************
+* *CONSTANT AND VARIABLE POOL*
+* ****************************
+*
+XR EQU 0 INDEX REGISTER
+* THE FOLLOWING 62 VARIABLES ARE SET TO ZERO DURING
+* PROGRAM INITIALIZATION
+A EQU '40 ASSIGNMENT TABLE INDEX
+I EQU A+1 EXPRESSION TABLE INDEX
+C EQU A+2
+ASAV EQU A+3
+L EQU A+4
+MFL EQU A+5 MODE FLAG
+SFF EQU A+6 FUNCTION FLAG
+SBF EQU A+7 SUBFUNCTION FLAG
+SXF EQU A+8 POSSIBLE CPX FLAG
+SPF EQU A+9 PEC. FLAG
+TCF EQU A+10 TEMP STORE COUNT
+IFF EQU A+11
+ABAR EQU A+12 BASE OF ASSIGN TABLE
+XST EQU A+13 FIRST EXECUTABLE STMNT.
+CFL EQU A+14 MON FLAG
+D EQU A+15 DO INDEX
+RPL EQU A+16 RELATE PROGRAM LOCATION
+BDF EQU A+17 LOCK DATA FLAG
+SLST EQU A+18 SOURCE LIST
+OBLS EQU A+19 OUTPUT BINARY LIST
+BNOT EQU A+20 BINART OUTPUT FLAG
+TRF EQU A+21 TRACE FLAG (END TRACE STATEMENT NO.)
+TRFA EQU A+22 POINTER TO FIRST VAR, 0R ARRAY NAME IN
+* AN EXPRESSION (FOR USE BY TRACE).
+SOF EQU A+23 SUBSCRIPT CONSTANT FLAG (NON-ZERO IF SET)
+LIF EQU A+24 LOGICAL IF FLAG
+LSTN EQU A+25 LAST STATEMENT NO.
+LSTF EQU A+26 LAST STATEMENT FLAG
+LSTP EQU A+27 LAST STATEMENT STOP
+SDSW EQU A+28 STATEMENT I0 SWITCH
+*
+NAMF EQU '570 NAME FUNCTION
+ND EQU NAMF+1 NO OF DIMENSIONS
+NS EQU '572 NO OF SUBSCRIPTS
+NT EQU NS+1 NAME TAG
+NTF EQU NS+2 NAME TAG FLAG
+NTID EQU NS+3 NO. WORDS IN TID
+O1 EQU NS+4 OPERATOR 1
+O2 EQU NS+5 OPERATOR 2
+P EQU NS+6
+PCNT EQU NS+7
+OCNT EQU NS+8 OUTPUT COUNT
+S0 EQU NS+9
+S1 EQU NS+10 SUBSCRIPT NO.1
+S2 EQU NS+11 SUBSCRIPT NO.2
+S3 EQU NS+12 SUBSCRIPT NO.3
+TC EQU NS+13 TERMINAL CHAR
+TT EQU NS+14
+TYPE EQU NS+15
+X EQU NS+16 ARRAY INDICES
+X1 EQU NS+17
+X2 EQU NS+18
+X3 EQU NS+19
+X4 EQU NS+20
+NTA EQU NS+21 UNPACKED ASSIGNMENT ITEMS
+ATA EQU NS+22
+IMA EQU NS+23
+CLA EQU NS+24
+IUA EQU NS+25
+DTA EQU NS+26
+TTA EQU NS+27
+*..........ADJUST THIS ORG IF THE SIZE OF THE CONSTAST POOL IS MODIFIED
+ ORG '630
+AF PZE 0 ADDRESS FIELD
+GF EQU AF
+AT PZE 0 ADDRESS TYPE
+CODE PZE 0 OUTPUT CODE
+D0 PZE 0 DIMENSIONS
+D1 PZE 0
+D2 PZE 0
+D3 PZE 0
+D4 PZE 0
+DF PZE 0 DATA FLAG
+NF PZE 0
+B PZE 0
+DFL PZE 0 DELIMITER FLAG
+E OCT 0 EQUIVALENCE INDEX
+EP PZE 0 E-PRIME
+E0 PZE 0 E-ZERO
+FTOP PZE 0 OUTPUT COMMAND
+GFA PZE 0
+ICSW PZE 1 INPUT CONTROL SWITCH
+IFLG PZE 0 I-FLAG
+IM PZE 0 ITEM MODE
+IOF PZE 0 I-0 FLAG
+IU PZE 0 ITEM USAGE
+KBAR PZE 0 TEM STORE
+KPRM PZE 0 TEM STORE
+EBAR OCT -1 E-BAR
+DO OCT 17 DO TABLE INDEX(FLOATS ABOVE ASSIGNMENT)
+CC PZE '111 CARD COLUMN COUNTER
+DCT PZE 0 DUMMY ARGUMENT COUNT
+F PZE 0 TRIAD TABLE INDEX
+CL PZE 0 ASSIGNMENT ITEMS UNPACKED
+DT PZE 0
+FLT1 PZE 0 FETCH LINK CL POINTER LOCATION
+LIBF PZE 0 SPECIAL LIBRARY FLAG (NON-ZERO IF SET)
+*..........CONSTANTS USED BY THE COMPILER
+K4 OCT 251 0)
+K5 OCT 254 0,
+K8 OCT 240 0-SPACE
+K9 OCT 257 0/
+K10 OCT 256 0.
+K12 OCT 255 0-
+K13 OCT 253 0+
+K15 OCT 244 0$
+K16X OCT 16
+K17 OCT 250 0(
+K18 OCT 275 0=
+K19 BCI 1,DO DO
+K34 OCT 324 0T
+K35 OCT 317 0O
+K40 BCI 1,WN
+K41 BCI 1,RN RN
+K42 BCI 1,CB
+K43 OCT 311 0I
+K44 OCT 321 0Q
+K45 EQU K34 0T
+K57 OCT 252 0*
+K60 OCT 260 00 (BCI ZERO)
+K61 OCT 271 09
+K68 EQU K19
+K101 OCT 1
+K102 OCT 2
+K103 OCT 3
+K104 OCT 4
+K105 OCT 5
+K106 OCT 6
+K107 OCT 7
+K109 DEC 16
+K100 OCT 377
+K111 OCT 37777
+K110 DEC -17
+K115 OCT 170777
+K116 OCT 177400
+K117 DEC -27
+K118 OCT 777
+K119 OCT 177000
+K120 DEC -15
+K122 OCT 040000
+K123 DEC -1
+K124 DEC 9
+K125 DEC 8
+K126 DEC 10
+K127 DEC 11
+K128 DEC 12
+K129 DEC 13
+K131 DEC -14
+K132 OCT 22
+K134 OCT 17
+K137 OCT 24002
+K138 OCT 25
+K139 OCT 24
+CRET OCT 215 0 C/R
+ZERO OCT 0
+HBIT OCT 140000 HIGH BITS FOR ALPHA DATA
+KAEQ BCI 1,EQ EQUIVALENCE ERROR MESSAGE ATTACHMENT
+MIN2 DEC -2 -2
+HC2 OCT 340
+K357 OCT 357
+*
+*
+DP EQU '15400 DUMMY START OF DATA POOL (ACTUALLY SET
+* BY THE FORTRAN IOS SUBROUTINE.)
+L0 EQU '113 DUMMY END OF DATA POOL (MINUS 3 WORDS)
+* THE FOLLOWING INSTRUCTIONS CAUSE THE LOADER
+* TO ASSIGN ALL REFERENCES TO THE DATA POOL IN WORDS
+* 100 TO 112 OF THE ZERO SECTOR, FORTRAN IOS WILL
+* CAUSE THESE CELLS TO BE SET TO THE ACTUAL DATA POOL
+* LOCATIONS WHICH WILL BE DETERMINED BY COMPUTER
+* CONFIGURATION.
+ ORG '1000
+ PZE DP-4,1 (100)
+ PZE DP-3,1 (101) DATA POOL REFERENCES
+ PZE DP-2,1 (102)
+ PZE DP-1,1 (103)
+ PZE DP,1 (104)
+ PZE DP+1,1 (105)
+ PZE DP+2,1 (106)
+ PZE DP+3,1 (107)
+ PZE DP+4,1 (108)
+ PZE DP+9,1 (111)
+ PZE DP+6,1 (112)
+ PZE DP+7 (113) NO WDS IN DATA POOL SET BY IOS
+*
+*
+ ORG 1
+ JST ER00 THIS INSTRUCTION REACHED ONLY IF THE
+ BCI 1,CG COMPILER JUMPED TO ZERO BY MISTAKE.
+*
+*
+*
+*
+* *******************
+* *START OF COMPILER*
+* *******************
+*
+ ORG '1000
+*
+*
+*
+* - A0 COMP ENT EMPTY BUFFERS
+ LRL 15
+ STA LIBF SET SPECIAL LIBRARY FLAG
+ LLL 15 (BIT 1 ON INHIBITS CERTAIN ERROR CHECKS)
+A0 CALL F4$INT INITIALIZE I/O DEVICES
+ LDA K108
+ STA CC CC = 73
+ JST IC00 INPUT COLUMN
+A051 LDA A090
+ STA XR
+ LDA A092 LOC, OF INDEX PUSH-DOWN BUFFER
+ STA SAV9 INITIALIZE PUSH-DOWN BUFR,
+ CRA
+ STA A+M,1 SET M VARIABLES TO ZERO
+ STA NAMF+M,1
+ IRS XR
+ JMP *-3
+ STA IFLG
+ STA PKF
+ JST FS00 INITIALIZE OUTPUT BUFFER
+ CMA
+ STA LSTF LSTF NOT EQ 0
+ STA LSTP LSTP NOT EQ 0
+ STA EBAR EBAR SET NEGATIVE
+ LDA L0
+ STA ICSW
+ STA E0 INITIALIZE EQUIVALENCE TABLE
+ STA L INITIALIZE TRIAD TABLE POINTER
+ JST PRSP SET PRINT BUFFER TO SPACES
+ LDA K134
+ STA DO INITIALIZE DO TABLE POINTER
+ SUB K138
+ STA A091
+ CRA
+ STA ID
+A055 IRS ID ESTABLISH CONSTANTS
+ JST AI00
+ IRS A091
+ JMP A055
+ LDA K81
+ STA ID
+ STA ID+1
+ STA ID+2
+ CRA
+ LRL 32 (B)=0 IM=NO USAGE
+ LDA K101 (A)=1 IU=SUBR
+ JST AA00 ASSIGN (SPECIAL)
+ JST STXA SET POINTER A INTO INDEX AND (A)
+ STA CFL CFL=A (LOCATION OF FIRST COMMON BLOCK)
+ ADD K122 ='40000 (IU=SUBR)
+ STA DP+1,1 GF(A)=A (IN CASE NO BLANK COMMON IS SPECIFI
+ JMP C7 GO TO STMNT INPUT
+M EQU 30
+A090 DAC* -M,1
+A091 PZE 0
+A092 DAC SAVX START OF INDEX PUSH-DOWN BUFFER
+*
+*
+*
+* **************
+* *INPUT COLUMN*
+* **************
+*
+* INPUT NEXT CHARACTER
+* IGNORE BLANKS
+* CHECK FOR COMMENTS
+* IC02 SET AS FOLLOWS -
+* NORMAL - ICIP
+* INITIAL SCAN -ICSR
+IC00 DAC ** LINK STORE
+ JST SAV SAVE INDEX
+ LDA CC IF CC = 73, GO TO IC 10
+ SUB K108
+ SZE
+ JMP IC19 ELSE, GO TO IC
+IC10 LDA ICSW IF ICSW. GO TO IC12
+ SNZ
+ JMP IC24 ELSE, GO TO IC24
+IC12 CALL F4$IN INPUT SYMBOLIC CARD IMAGE
+ DAC CI
+ LDA CI
+ LGR 8 GO 70 IC 14
+ CAS K16 =(C)
+ JMP *+2
+ JMP IC30 COMMENT CARD (IGNORE)
+ SUB K15 =($)
+ SNZ
+ JMP IC18 CONTROL CARD (IGNORE COLUMN 6)
+ LDA K357 IF CARD COL, SIX IS
+ ANA CI+2 ZERO OR BLANK, GO TO IC18
+ SUB K8
+ SZE
+ JMP IC26 ELSE, GO TO IC26
+IC18 STA CC CC = 0.
+ LDA CI+2 CI(6) = SPECIAL
+ ANA K116
+ ADD HC2 ='340
+ STA CI+2
+ LDA CRET
+ JMP IC20 TC = C.R.
+IC19 LDA CC TC = CI(CC)
+ SUB K101
+ LGR 1
+ STA XR
+ LDA CI,1
+ SSC
+ LGR 8
+ ANA K100
+IC20 STA TC
+ IRS CC CC = CC+1
+IC22 JST RST RESTORE INDEX
+ JMP* IC00 RETURN
+IC24 LDA K9 TC = /, END OF LINE - STATEMENT SCAN
+ STA TC
+ JMP IC22 GO TO IC22
+IC26 JST LIST LIST, CONTINUATION CARD
+ LDA K107 CC = 7. IGNORE STATEMENT NO.
+ STA CC
+ JMP IC19 G0 TO IC19
+IC30 JST LIST PRINT CARD IMAGE
+ JMP IC12 READ IN NEW CARD
+K16 OCT 303 0C
+K108 DEC 73
+KASP BCI 1, (SP)(SP) MUST PRECEDE CARD IMAGE BUFFER
+CI BSS 40
+ BCI 20,
+*
+*
+*
+* ****************
+* *UNINPUT COLUMN*
+* ****************
+* BACK UP ONE COLUMN
+*
+UC00 DAC **
+ IMA CC CC= CC-1
+ SUB K101 RETAIN (A)
+ IMA CC
+ JMP* UC00
+*
+*
+* *****************
+* *INPUT CHARACTER*
+* *****************
+* INPUT ONE CHARACTER FROM EITHER
+* 1, INPUT BUFFER (EBAR POSITIVE) OR
+* 2, EQUIVALENCE BUFFER (EBAR NEGATIVE)
+*
+CH00 DAC **
+ LDA EBAR IF EBAR 7 0,
+ SMI
+ JMP CH10 G0 10 CH10
+CH03 JST IC00 INPUT COLUMN
+ SUB K8 IF BLANK, REPEAT
+ SNZ
+ JMP CH03
+ LDA TC ELSE,
+*
+CH04 CAS CH13 ='301
+ NOP
+ JMP CH06
+ CAS K61 ='271
+ JMP CH05
+ NOP
+ CAS K15 ='244
+ JMP *+2
+ JMP CH05-1
+ CAS K60 ='260
+ NOP
+ CRA ALPHA NUMERIC CHARACTER
+CH05 STA DFL DELIMITER ENTRY
+ LDA TC EXIT WITH TC IN A
+ JMP* CH00
+CH06 CAS K63 ='332
+ JMP CH05
+ NOP
+ JMP CH05-1
+CH08 STA DFL
+ JMP* CH00
+CH10 LDA E IF E = EBAR
+ CAS EBAR
+ JMP *+2
+ JMP CH12 GO TO CH12
+ STA 0 SET E INTO INDEX
+ LLL 16 SET (B) TO ZERO
+ LDA DP,1 CURRENT CHARACTER WORD
+ LLR 8
+ STA DP,1 SAVE REMAINING CHARACTER IF ANY
+ IAB
+ STA TC TC=LEFTMOST CHARACTER
+ SZE SKIP IF NEW CHARACTER WORD NEEDED
+ JMP CH04
+ LDA E E=E-1
+ SUB K101 =1
+ STA E
+ JMP CH10 PICK UP NEXT CHARACTER WORD
+CH12 SSM MAKE E MINUS
+ STA EBAR
+ JMP C4 GO TO ASSIGN SPEC
+K63 OCT 332 0Z
+CH13 OCT 301
+*
+*
+* *************
+* *INPUT DIGIT*
+* *************
+* A IS ZERO IF NOT DIGIT
+*
+ID00 DAC ** INPUT DIGIT
+ JST CH00 INPUT A CHAR
+ CAS K61 ='271 (9)
+ JMP* ID00 (A) = TC
+ JMP ID10 ELSE, (A) = 0
+ CAS K60 RETURN
+ NOP
+ JMP *+2
+ JMP* ID00
+ID10 CRA
+ JMP* ID00
+*
+*
+* **********************
+* *INPUT (A) CHARACTERS*
+* **********************
+* CHAR COUNT IN XR, TERMINATES WITH EITHER
+* 1, CHAR COUNT -1 = ZERO OR
+* 2, LAST CHAR IS A DELIMITER
+*
+IA00 DAC **
+ TCA SET COUNTER
+ STA IA99
+ JST IA50 EXCHANGE IBUF AND ID
+ CRA
+ STA NTID NTID = 0
+IA10 JST CH00 INPUT A CHARACTER
+ JST PACK
+ LDA DFL IF DFL NOT ZERO,
+ SZE CONTINUE
+ JMP IA20 ELSE,
+ IRS IA99 TEST COUNTER
+ JMP IA10 MORE CHARACTERS TO INPUT
+IA20 JST IA50 EXCHANGE ID AND IBUF
+ JMP* IA00 RETURN
+IA50 DAC ** EXCHANGE IBUF AND ID
+ JST SAV SAVE INDEX
+ LDA IA90
+ STA XR
+ LDA IBUF+3,1
+ IMA ID+3,1
+ STA IBUF+3,1
+ IRS XR
+ JMP *-4
+ JST RST RESTORE INDEX
+ LDA NTID
+ JMP* IA50
+IA90 OCT -3
+IA99 PZE 0
+*
+*
+* *****************
+* *FINISH OPERATOR*
+* *****************
+* WRAP UP LOGICAL/RELATIONAL OPERATORS
+*
+FN00 DAC **
+ LDA DFL IF DFL NOT . ,
+ STA IBUF
+ SUB K10
+ SZE
+ JMP FN05 GO TO FN05
+ LDA K104
+ JST IA00
+FN05 LDA K110 USE TABLE TO CONVERT
+ STA XR OPERATOR
+FN10 LDA FN90+17,1
+ CAS IBUF
+ JMP *+2
+ JMP FN20
+ IRS XR
+ JMP FN10
+ LDA TC
+ JMP* FN00
+FN20 LDA FN91+17,1 FOUND A LOGICAL OPERATOR
+ STA TC SET INTO TC
+ JMP* FN00
+FN90 OCT 253,255,252,257 +-*/
+ BCI 9,NOANORLTLEEQGEGTNE
+ OCT 275,254 =,
+FN91 OCT 1,2,3,4,5,6,7,10,11,12,13,14,15,16,17
+*
+*
+* ***********
+* *INPUT DNA*
+* ***********
+* BASIC INPUT ROUTINE, HANDLES FOLLOWING -
+* CONSTANT CONVERSION
+* MODE TYPING (CONSTANTS, IMPLIED/VARIABLES)
+* ALL OPERATORS (TERMINATE ITEM)
+*
+ID BSS 4
+TID EQU ID TEMP STORE FOR ID
+IBUF BSS 3 3-WORD BUF
+TIDN PZE 0
+K155 OCT 177727 -41
+K156 OCT 024000 1085
+K157 OCT 007777
+K158 OCT 074000
+F1 PZE 0 SIGN FLAG
+F2 PZE 0
+F3 PZE 0 INPUT EXPONENT
+F4 PZE 0 NO, FRAC. POSITIONS
+F5 PZE 0 TEMP DELIMITER STORE
+F6 PZE 0
+L4 PZE 0
+HOLF PZE 0 HOLLERITH FLAG
+DN00 DAC **
+DN01 CRA
+ STA HOLF SET HOLF =0
+ STA F4 F4 = 0
+ STA IU
+ STA NT IU=NT=NTID=0
+ STA NTID
+ JST BLNK CLEAR OUT TID = ID
+ DAC TID
+ JST BLNK
+ DAC F1 F1,F2,F3 = 0
+DN06 CRA
+ STA IM
+ STA DNX2
+DN07 JST ID00 INPUT DIGIT
+ SZE
+ JMP DN14 (A) NON-ZERO, G0 T0 DN14
+DN10 LDA TID+2 CHECK FOR OVERFLOW AND ADJUST
+ ANA K158 POSITION COUNT IF NECESSARY,
+ SZE
+ JMP SKIP
+ ADD IM
+ ARS 1
+ ADD F4 F4 = F4+1 IF NO OVERFLOW
+ STA F4 AND IM ALREADY SET TO REAL
+ LDA K101
+ STA NT NT=1
+ ADD K101
+ STA IU IU = VAR/COD
+ JST SFT SHIFT ID LEFT
+ DAC ID
+ JST MOV3 MOVE TO TEMP STORE
+ JST SFT
+ DAC ID
+ JST SFT
+ DAC ID
+ JST AD3 ID = 10*ID+TC
+ JST BLNK
+ DAC DNX1
+ LDA TC
+ SUB K60
+ STA DNX1
+ JST AD3
+ JMP DN07
+SKIP LDA MIN2
+ ADD IM
+ ARS 1
+ ADD F4
+ STA F4
+ JMP DN07
+DN14 LDA IM IM = REAL
+ SUB K102
+ SZE
+ JMP DN50 NO, GO TO DN50
+DN16 LDA K10 YES,
+DN17 STA F5 F5 = '.'
+ LDA DFL IF DFL =0, GO SO DN20 (5)
+ SZE
+ JMP DN90 ELSE GO TO DN90 (9)
+DN20 LDA TC IF TC = D, GO TO DN26
+ SUB K11
+ SNZ
+ JMP DN26
+ SUB K101 ELSE, IF TC = E, GO TO DN22
+ SNZ
+ JMP DN22 TERMINATOR = E
+ JST UC00
+ LDA K10 ='256 (,)
+ STA DFL SET DELIMITER FLAG
+ LDA K101 =1
+ STA IM SET ITEM MODE TO INTEGER
+ JMP DN67 FINISH OPERATOR AND EXIT
+*
+DN22 JST ID00 INPUT DIGIT
+ SNZ IF (A) = 0, GO TO DN30
+ JMP DN30
+ LDA TC IF TC = -, GO TO DN28
+ SUB K12
+ SNZ
+ JMP DN28
+ ADD K102
+ SNZ
+ JMP DN29
+ LDA F5
+ STA DFL
+ JST UC00 UN-INPUT COL
+DN24 JST FN00 FINISH OPERATOR
+DN25 LDA K101 IM = INT
+ STA IM
+ LDA ID+1 IF ID IS TOO BIG TO
+ SZE BE AN INTEGER (>L2),
+ JMP DN69 GO TO DN69 (20)
+ LDA ID+2
+ SZE
+ JMP DN69
+ JMP DN84 OTHERWISE, GO TO DN84(12)
+DN26 LDA K106 IM = DBL
+ STA IM
+ JMP DN22
+DN28 LDA K101 F2 = 1
+ STA F2
+DN29 JST ID00 INPUT DIGIT
+ SZE IF (A) = 0, GO TO DN30 (8.5)
+ JMP DN69 ELSE, GO TO DN69 (20)
+DN30 LDA F3 F3 = 10 * F3
+ ALS 3
+ IMA F3 F3 = F3 +TC
+ ALS 1
+ ADD F3
+ ADD TC INPUT DIGIT
+ SUB K60
+ STA F3 IF (A) = 0, GO TO DN30 (8.5)
+ JST ID00 ELSE, GO TO DN90 (9)
+ SZE
+ JMP DN90
+ JMP DN30
+DN50 LDA K102 IM=REA
+ STA IM
+ LDA TC IF TC = ., GO TO DN54
+ SUB K10
+ SNZ
+ JMP DN54 ELSE,
+ LDA NT
+ SNZ IF NT = 0, GO TO DN72
+ JMP DN72
+ LDA TC IF TC = H, GO TO DN9H (22)
+ SUB K14
+ SNZ
+ JMP DN9H
+ LDA DFL IF DFL = 0,
+ SZE GO TO DN16 (4.9)
+ JMP DN25 ELSE, GO TO DN25
+ JMP DN16
+DN54 JST ID00 INPUT DIGIT
+ SNZ
+ JMP DN10 IF (A) = 0, GO TO DN10 (3)
+ LDA NT
+ SNZ IF NT = 0, GO TO DN56
+ JMP DN56
+ LDA TC F5 = TC
+ JMP DN16 GO TO DN16 (4)
+DN56 CRA
+ STA TC TC = )
+DN58 JST UC00 UN-INPUT A COLUMN,
+ LDA F1 IF F1 = 0, GO TO DN60
+ SZE
+ JMP DN63 ELSE, GO TO DN63 (15)
+DN60 LDA K106
+ JST IA00 INPUT (6) CHARS
+ JST CIB IF IBUF = TRUE.,
+ DAC K1+3,1
+ JMP DN64
+ JST CIB IF IBUF = FALSE.,
+ DAC K2+3,1 GO TO DN66 (16)
+ JMP DN66
+ JST CIB CHECK FOR .NOT. OPERATOR
+ DAC KNOT+3,1 CHECK FOR .NOT. OPERATOR
+ JMP DN9N OPERATOR IS .NOT.
+DN63 CRA IM = 0
+ STA IM
+ JMP DN67 GO TO DN67 (18)
+DN64 LDA K101
+ STA TID
+DN66 LDA K101
+ STA NT NAME TAG = 1 (CONSTANT)
+ LDA K102 IU=VAR
+ STA IU
+ LDA K103
+ STA IM IM = LOG
+ JST CH00
+DN67 JST FN00 FINISH OPERATOR
+DN68 LDA F6 IF F6 = 0,
+ SNZ GO TO DN70 (21)
+ JMP DN70
+DN69 LDA K10
+ STA TC TC = .
+DN70 CRA
+ STA F6 F6 = SXF = 0
+ STA SXF
+ LDA IM (A) = IM
+ JMP* DN00 RETURN
+DN72 LDA F1 IF F1 = 0, GO TO DN74
+ SNZ
+ JMP DN74
+ LDA F1 ELSE, TC = F1
+ STA TC
+ JMP DN58 GO TO DN58 (14)
+DN74 LDA TC IF TC = -, GO TO DN82
+ SUB K12
+ SNZ
+ JMP DN82
+ ADD K102 CHECK FOR TC = +
+ SNZ
+ JMP DN82
+ LDA DFL IF DFL = NON-ZERO
+ SZE
+ JMP DN63 GO TO DN63 (15)
+ LDA TC
+ CAS K43
+ JMP *+3
+ JMP DN78
+ JMP DN80
+ CAS K62
+ JMP DN80
+ NOP
+DN78 LDA K101 IM < INT
+ STA IM
+DN80 LDA TC PACK TC TO ID
+ JST PACK
+ JST CH00 INPUT CHAR
+ LDA DFL IF DFL IS NOT ZERO,
+ SZE GO TO DN67 (18)
+ JMP DN67
+ LDA NTID IF NTID = 6, GO TO DN67
+ SUB K106
+ SZE
+ JMP DN80
+ JMP DN67
+DN82 JST FN00
+ STA F1 F1 = CONVERTED TC
+ JMP DN06 GO TO DN06 (2)
+DN84 LDA F1 IF F1 = -,
+ SUB K102 GO TO DN85(13)
+ SZE
+ JMP DN85
+ CRA
+ SUB TID COMPLEMENT THREE WORDS AT TID
+ SZE
+ JMP DN8A
+ SUB TID+1
+ SZE
+ JMP DN8B
+ JMP DN8C
+DN8A STA TID
+ LDA K123
+ SUB TID+1
+DN8B STA TID+1
+ LDA K123
+DN8C SUB TID+2
+ STA TID+2
+DN85 LDA SXF IF SXF = 0, GO T0 DN67 (18)
+ SNZ
+ JMP DN67 ELSE,
+ LDA IM IF IM NOT = REA,
+ SUB K102
+ SZE GO TO DN67 (18)
+ JMP DN67
+ LDA F6 ELSE,
+ SNZ IF F6 = 0, GO TO DN87
+ JMP DN87
+ LDA K105
+ STA IM IM = CPX
+ LDA TID INTERCHANGE
+ IMA TIDB 3 CELLS
+ STA TID TID
+ LDA TID+1 WITH
+ IMA TIDB+1 3 CELLS
+ STA TID+1 OF
+ LDA TID+2 TIDB
+ IMA TIDB+2
+ STA TID+2
+ JST IP00 )-INPUT OPERATOR
+ JMP DN70 GO TO DN70 (21)
+DN87 LDA TC IF TC = ,
+ SUB K5
+ SZE
+ JMP DN67 TID-BAR = TID
+ LDA TID F6 = 1
+ STA TIDB GO TO DN01 (1)
+ LDA TID+1
+ STA TIDB+1 ELSE, GO TO DN67 (18)
+ LDA TID+2
+ STA TIDB+2
+ LDA K101
+ STA F6
+ JMP DN01
+DN90 LDA F2 IF F2= 0, GO TO DN9A (10)
+ SNZ
+ JMP DN9A
+ LDA F3 F3 = - F3
+ TCA
+ STA F3
+DN9A LDA F3 F4 = F3 - F4
+ SUB F4
+ STA F4
+ LDA K12 F2 = EXP, BIAS + MANTISSA
+ STA F2
+ LDA TID IF TID = 0,
+ ADD TID+1
+ ADD TID+2 GO TO DN85(13)
+ SNZ
+ JMP DN85
+DN9C LDA TID+2
+ LGL 1 NORMALIZE ID
+ SPL
+ JMP DN9D ID IS NORMALIZED
+ JST SFT
+ DAC ID
+* F2 = F2 - = SHIFTS
+ LDA F2
+ SUB K101
+ STA F2
+ JMP DN9C CONTINUE NORMALIZE LOOP
+DN9D LDA F4
+ CAS ZERO
+ JMP DN9E
+ JMP DN9G FINISHED E FACTOR LOOP
+ IRS F4
+ NOP F4 = F4 +1
+ LDA K155 DIVIDE LOOP COUNTER
+ STA TIDN
+ JST SRT
+ DAC TID
+ JST SRT
+ DAC TID
+DND1 JST SFT
+ DAC TID
+ LDA TID+2
+ SUB K156 10 AT B=4
+ SMI
+ STA TID+2
+ SMI
+ IRS TID
+ IRS TIDN
+ JMP DND1 REDUCE DIVIDE COUNTER
+ JST SFT
+ DAC TID
+ LDA TID+2
+ ANA K157
+ STA TID+2
+ JMP DN9C
+DN9E SUB K101
+ STA F4 F4 = F4-1
+ LDA F2 F2 = F2+4
+ ADD K104
+ STA F2
+ JST SRT
+ DAC ID
+ JST MOV3
+ JST SRT ID = ID*10
+ DAC ID
+ JST SRT
+ DAC ID
+ JST AD3 ADD THREE WORD INTEGERS
+ JMP DN9C
+* CONVERT THREE WORD INTEGER TO INTERNAL FORMAT
+DN9G LDA TID+2
+ IAB
+ LDA F2
+ LRS 8
+ SNZ
+ JMP *+3
+ JST ER00
+ BCI 1,CE CONSTANT'S EXPONENT OVER 8 BITS (OVERFLOW)
+ IAB
+ IMA TID+2
+ IAB
+ LDA TID+1
+ LGL 1
+ LRR 8
+ STA TID+1
+ LRR 9
+ LDA TID PACK UP TRIPLE PRECISION
+ LGL 1
+ LRR 7 REAL CONSTANT
+ STA TID
+ LDA F2
+ LGR 8
+ SZE
+ JMP DN69 GO TO DN69 (20)
+ JMP DN84 ELSE. GO TO DN84 (12)
+DN9H STA IM
+ LDA SPF
+ SUB K102
+ SZE
+ LDA K106
+ SUB K124
+ ADD TID
+ SMI
+ JMP DN70
+ LDA TID
+ STA HOLF HOLF=NO.OF HOLLERITH CHARS,
+ STA F3
+ TCA
+ SNZ
+ JMP DN9K FIELD WIDTH OF ZERO
+ STA F2 F2= -1(1 CHAR) OR -2(2 CHAR)
+ JST BLNK SET ID,ID+1(ID+2 TO ZERO
+ DAC TID
+DN9J JST IC00 INPUT COLUMN (INCLUDING BLANKS)
+ JST PACK PACK CHARACTERS 2 PER WORD
+ IRS F2 REDUCE CHARACTER COUNT
+ JMP DN9J INPUT AND PACK MORE CHARACTERS
+ LDA F3 F3= 0 IF 2 CHAR. HAVE BEEN INPUT
+ ANA K101
+ SNZ
+ JMP *+3
+ LDA K8 ='240 (SP)
+ JST PACK SHIFT A SPACE INTO THE LAST WORD
+ IRS IM
+DN9M JST CH00 INPUT THE TERMINATING CHARACTER
+ JMP DN67 FINISH OPERATOR AND EXIT
+DN9K JST ER00
+ BCI 1,HF
+DN9N LDA K105 SET .NOT. OPERATOR (TC=5)
+ STA TC SET .NOT. OPERATOR (TC=5)
+ CRA
+ STA IM IM=0 = UNDEFINED
+ JMP DN68
+DNX1 BSS 3
+DNX2 DAC ** OVERFLOW FLAG
+ JMP* *-1
+*
+*
+* ************
+* *INPUT ITEM*
+* ************
+* INPUTS AND ASSIGNS ITEM (IF ONE EXISTS)
+*
+II00 DAC **
+ JST DN00 INPUT DNA
+ SNZ IF (A) = 0
+ JMP* II00 RETURN
+ JST AS00 NO, ASSIGN ITEM
+ LDA IM
+ JMP* II00 RETURN (A) = IM
+*
+*
+* ***************
+* *INPUT OPERAND*
+* ***************
+* EXIT WITH ITEM MODE IN A (TC SET TO . IF NO
+* OPERAND)
+*
+OP00 DAC ** INPUT OPERAND
+ JST II00 INPUT ITEM
+ SZE IF IM = 0, SKIP
+ JMP* OP00 ELSE (A) = IM, RETURN
+ LDA K10 TC = .
+ STA TC (A) = 0
+ CRA
+ JMP* OP00 RETURN
+*
+*
+* ************
+* *INPUT NAME*
+* ************
+* INPUT OPERAND AND ENSURE THAT IT IS A NAME
+*
+NA00 DAC ** INPUT NAME
+ JST OP00 INPUT OPERAND
+ LDA NT IF NT = 1,
+ SNZ
+ JMP NA10
+ JST ER00
+ PZE 9
+NA10 LDA IM (A) = IM
+ JMP* NA00 RETURN
+*
+*
+* ***************
+* *INPUT INTEGER*
+* ***************
+* INPUT ITEM AND ENSURE THAT IT IS AN INTEGER CONSTANT
+* GREATER THAN ZERO
+*
+IG00 DAC ** INPUT INTEGER
+ JST DN00 INPUT - DNA
+ LDA F1
+ SZE IF F1 = 0,
+ JMP IG20 AND NT = 1,
+ LDA NT AND IM = INT,
+ SNZ AND TID L2**15,
+ JMP IG20 GO TO IG10
+ LDA IM LSE, GO TO IG20
+ SUB K101
+ SZE
+ JMP IG20
+ LDA TID+1
+ SZE
+ JMP IG20
+ LDA TID+2
+ SZE
+ JMP IG20
+IG10 LDA TID
+ JMP* IG00
+IG20 JST ER00 ERROR
+ BCI 1,IN INTEGER REQUIRED
+*
+*
+* ***********************
+* *INPUT INTEGER VAR/CON*
+* ***********************
+*
+IV00 DAC **
+ JST OP00 INPUT OPERAND
+ JST IT00 INTER TEST
+ JST TV00 TAG VARIABLE
+ JMP* IV00 EXIT
+*
+*
+* ************************
+* *INPUT INTEGER VARIABLE*
+* ************************
+*
+IR00 DAC ** INPUT INT VAR
+ JST IV00 INPUT INT VAR/CON
+ JST NC00 NON-CONSTANT TEST
+ JMP* IR00 RETURN
+*
+*
+* ************************
+* *INPUT STATEMENT NUMBER*
+* ************************
+* NUMBER IS FORMED AS SPECIAL NAME , NOT CONVERTED
+* TO NUMERIC
+*
+IS00 DAC **
+IS04 CRA
+ STA NT
+ STA IM
+ STA IU IU = IM = IT = 0
+ STA NTID PUT LEADING 'S' IN STATEMENT NO,
+ LDA K79
+ JST PACK
+IS10 JST ID00 INPUT DIGIT
+ SZE
+ JMP IS20 NOT A DIGIT GO TO IS20
+ LDA NTID
+ SUB K106
+ SMI
+ JMP IS22
+ LDA TC
+ JST PACK PACK TC TO ID - LEGAL ST, NO, CHAR
+ LDA TID
+ CAS K79X
+ JMP IS10
+ JMP IS04 IGNORE LEAD ZERO ON ST. NO,
+ JMP IS10
+IS20 LDA NTID
+ SUB K101
+ SMI
+ JMP IS25
+IS22 JST ER00
+ BCI 1,ST ILLEGAL STATEMENT NUMBER FORMAT
+IS25 JST AS00 ASSIGN ITEM
+ JST STXA
+ LDA DP+1,1
+ ANA K111
+ STA DP+1,1 IU = 0
+ LDA AF ADDRESS FIELD IS
+ CAS XST LE XST - ALREADY ASSIGNED
+ JMP* IS00
+ JMP* IS00 OK - OTHERWISE
+ LDA AT MUST HAVE STR-ABS OTHERWISE
+ CAS K102
+ JMP *+2
+ JMP* IS00 !!!
+ JST ER00
+ BCI 1,RN REFERENCE TO A SPECIFICATION STMNT NUMBER
+K79 OCT 337
+K79X OCT 157660
+*
+SY00 DAC ** INPUT SYMBOL
+ LDA K101
+ STA NTF NTF NOT 0 - DON'T SET IU IN AS00
+ JST NA00 INPUT NAME
+ JMP* SY00 EXIT
+*
+* ************************
+* *EXAMINE NEXT CHARACTER*
+* ************************
+* CHECK NEXT CHAR FOR DIGIT (BACKUP ONE COL, THEN EXIT)
+*
+XN00 DAC **
+ JST ID00 INPUT DIGIT
+ JST UC00 UNINPUT COLUMM
+ JMP* XN00
+K1 BCI 3,TRUE.
+K2 BCI 3,FALSE.
+K3 OCT 247
+KNOT BCI 3,NOT. CONSTANT FOR .NOT. TEST
+K11 OCT 304 0D
+K14 OCT 310 0H
+K62 OCT 316 0N
+K64 OCT 336 0)
+*
+*
+* ********************
+* *ALL CHARACTER TEST*
+* ********************
+*
+TS00 DAC ** TEST (A) AGAINST TC
+ SUB TC
+ SNZ
+ JMP* TS00 RETURN
+ JST ER00 TO ERROR TEST
+ BCI 1,CH IMPROPER TERMINATING CHARACTER
+*
+*
+* *******************
+* *)- INPUT OPERATOR*
+* *******************
+*
+IP00 DAC **
+ LDA K4 TEST - )
+ JST TS00
+ JST CH00 INPUT CHAR
+ JST FN00 FINISH OPERATOR
+ LDA B B = B-16
+ SUB K109
+ STA B
+ CRA (A) = 0
+ JMP* IP00 RETURN
+*
+*
+*
+* B1 COMMA OR C/R TST
+B1 LDA K134 IF TC = ','(CONVERTED TO 17)
+ SUB TC
+ SNZ
+ JMP* A9T2 GO TO SIDSW
+ JMP A1 ELSE, GO TO C/R TEST
+*
+*
+NR00 DAC ** NON-REL TEST
+ LDA AT
+ SUB K101 IF AT = 1 GO TO ERROR-
+ SZE TEST
+ JMP* NR00 RETURN
+ JST ER00 ERROR TEST ROUTINE
+ BCI 1,MS MULTIPLY DEFINED STATEMENT NUMBER
+*
+*
+* ***************
+* *NO USAGE TEST*
+* ***************
+*
+NU00 DAC ** N0 USAGE TEST
+ LDA IU
+ SNZ IF IU NOT = 0, TO ERROR
+ JMP* NU00 RETURN
+ JST ER00 ERROR TEST
+ BCI 1,NU NAME ALREADY BEING USED
+*
+*
+* *******************
+* *NON-CONSTANT TEST*
+* *******************
+*
+NC00 DAC ** NON CONSTANT TEST
+ LDA NT
+ SNZ IF NT NOT = 0, TO ERROR TEST
+ JMP* NC00 RETURN
+ JST ER00 ERROR TEST
+ BCI 1,NC CONSTANT MUST BE PRESENT
+*
+*
+* *********************
+* *NON SUBPROGRAM TEST*
+* *********************
+*
+NS00 DAC ** NON SUBPROGRAM TEST
+ LDA IU
+ SUB K101 IF IU = 1, GO TO-
+ SZE ERROR TEST
+ JMP* NS00 RETURN
+ JST ER00 ERROR TEST
+ BCI 1,NS SUBPROGRAM NAME NOT ALLOWED
+*
+*
+* **********
+* *ARR TEST*
+* **********
+*
+AT00 DAC ** ARRAY TEST
+ LDA IU
+ SUB K103 IF IU = 3, GO TO
+ SNZ
+ JMP* AT00 RETURN
+ JST ER00 ERROR TEST
+ BCI 1,AR ITEM NOT AN ARRAY NAME
+*
+*
+* **************
+* *INTEGER TEST*
+* **************
+*
+IT00 DAC ** INTEGER TEST
+ LDA IM
+ SUB K101 IF IM = 1, GO TO-
+ SNZ ERROR ROUTINE, ELSE
+ JMP* IT00 RETURN
+ JST ER00 TO ERROR TEST
+ BCI 1,IT ITEM NOT AN INTEGER
+*
+*
+TA00 DAC **
+ LDA AT STRING-ABS TEST
+ SUB K102
+ SNZ
+ JMP* TA00
+ JST ER00
+ BCI 1,NR ITEM NOT A RELATIVE VARIABLE
+*
+*
+*
+*
+*
+*
+*
+*
+AD3 DAC ** ADD TWO THREE WORD INTEGERS,
+ LDA TID
+ ADD DNX1
+ CSA
+ STA TID
+ LDA TID+1
+ ACA
+ ADD DNX1+1
+ CSA
+ STA TID+1
+ LDA TID+2
+ ACA
+ ADD DNX1+2
+ STA TID+2
+ JMP* AD3
+*
+*
+* ***********************
+* *ASSIGN INDEX REGISTER*
+* ***********************
+*
+STXA DAC **
+ LDA A
+ STA 0
+ JMP* STXA
+STXI DAC **
+ LDA I
+ STA 0
+ JMP* STXI
+K153 OCT 16
+IM00 DAC **
+ STA T1IM MULTIPLY A BY B
+ LDA K120 =-15
+ STA T2IM
+ CRA
+ RCB C BIT = 0
+IM10 LRL 1 LOW BIT OF B INTO C
+ SRC SKIP IF B = 0
+ ADD T1IM
+ IRS T2IM
+ JMP IM10
+ LLL 14
+ JMP* IM00 RETURN, RESULT IN A
+T1IM PZE 0
+T2IM PZE 0
+*
+*
+NF00 DAC ** CONSTRUCT EXTERNAL NAME
+ LDA K80 ENTRY FOR FORTRAN GENERATER
+ STA NAMF
+ LDA K81 SUBROUTINE CALLS,
+ STA NAMF+2
+ JMP* NF00
+K80 BCI 1,F$
+K81 BCI 1,
+KM92 DEC 1 001 = INT
+ DEC 2 010 = REA
+ DEC 1 011 = LOG
+ DEC 0 - -
+ DEC 4 101 = CPX
+ DEC 3 110 = DSL
+ OCT 3 111 = HOL
+*
+*
+BLNK DAC ** CLEAR A 3/36
+ JST SAV AREA TO ZEROS
+ LDA* BLNK
+ STA XR
+ CRA CLEAR 3 WORDS OF MEMORY
+ STA 1,1 PARAMETER INPUT ADDRESS TO 0
+ STA 2,1
+ STA 0,1
+ JST RST
+ IRS BLNK
+ JMP* BLNK EXIT
+*
+*
+MOV3 DAC ** MOVE 3-WORDS
+ LDA TID TO TEMO STORE
+ STA DNX1
+ LDA TID+1
+ STA DNX1+1
+ LDA TID+2
+ STA DNX1+2
+ JMP* MOV3
+*
+*
+*
+*
+CIB DAC ** COMPARE IBUF TO A CONSTANT
+ JST SAV SAVE INDEX
+ LDA* CIB +DDR OF CON+3,0
+ STA CIBZ
+ CRA
+ SUB K103 XR=-3
+ STA XR
+CIBB LDA IBUF+3,1
+ SUB* CIBZ
+ SZE
+ JMP CIBD
+ IRS XR
+ JMP CIBB
+CIBC IRS CIB
+ JST RST RESTORE INDEX
+ JMP* CIB
+CIBD IRS CIB
+ JMP CIBC
+CIBZ DAC **
+*
+*
+*
+*
+SAV DAC ** SAVE INDEX REGISTER
+ STA SAVY STACKED IN PUSH DOWN LIST
+ LDA XR
+ STA* SAV9
+ IRS SAV9
+ LDA SAVY
+ JMP* SAV
+RST DAC ** RESTORE INDEX REGISTER
+ STA SAVY
+ LDA SAV9 UNSTACK PUSH DOWN LIST
+ SUB K101
+ STA SAV9
+ LDA* SAV9
+ STA XR
+ LDA SAVY
+ JMP* RST
+SAVY PZE 0
+SAV9 DAC SAVX IS INITIATED BY A092
+SAVX BSS 20
+*
+*
+PACK DAC ** PLACE CHARACTER IN A
+ STA PAK7
+ LDA NTID INTO ID - UPDATE 3 WORDS OF
+PAK1 SNZ
+ JMP PAK4 ID
+ LRL 1
+ ADD PAK9
+ STA PAK8
+ LDA PAK7
+ IAB
+ SPL
+ JMP PAK3
+ LLL 24
+ ADD K8
+PAK2 STA* PAK8
+ IRS NTID
+ JMP* PACK
+PAK3 LLL 8
+ LDA* PAK8
+ LGR 8
+ LLL 8
+ JMP PAK2
+PAK4 LDA PAK6
+ STA TID
+ STA TID+1
+ STA TID+2
+ STA TID+3
+ LDA NTID
+ JMP PAK1+2
+PAK6 BCI 1,
+PAK7 DAC **
+PAK8 DAC **
+PAK9 DAC TID
+*
+*
+* ***************
+* *ERROR ROUTINE*
+* ***************
+*
+ER00 DAC ** ERROR ROUTINE
+ LDA SAV9
+ STA SAVX
+ LDA ER93 =-35
+ STA 0 SET INDEX
+ LDA ER91 (*)(*)
+ STA PRI+35,1 SET ** INTO PRINT BUFFER
+ IRS 0 SET COMPLETE PRINT BUFFER TO ********
+ JMP *-2
+ LDA CC
+ ARS 1 CC = CC/2
+ SUB K101 =1
+ SPL
+ CRA
+ STA XR
+ LDA EBAR (NEGATIVE IF NOT WITHIN AN EQUIVALENCE ST.)
+ SPL SKIP IF PROCESSING AN EQUIVALENCE STATEMENT
+ JMP *+3
+ LDA KAEQ ='142721 (=(E)(Q) )
+ STA PRI+1,1
+ LDA* ER00
+ STA PRI,1 SET ERROR TYPE LETTERS INTO THE BUFFER
+ CALL F4$SYM PRINT THE BUFFER
+ DAC PRI
+ JST PRSP SET PRINT BUFFER TO SPACES
+ LDA TC
+ER20 CAS CRET INPUT CHARACTERS UNTIL C/R
+ JMP *+2
+ JMP C7 GO TO STATEMENT INPUT
+ JST CH00
+ JMP ER20
+ER91 BCI 1,**
+ER93 OCT 177735 -35
+*
+*
+SRT DAC **
+ JST SAV
+ LDA* SRT SHIFT RIGHT ONE PLACE
+ STA XR TRIPLE PRECISION
+ LDA 0,1
+ IAB
+ LDA 1,1
+ LRS 1
+ LGL 1
+ IAB
+ STA 0,1
+ LDA 2,1
+ LRS 1
+ STA 2,1
+ IAB
+ STA 1,1
+ JST RST
+ IRS SRT
+ JMP* SRT
+*
+*
+SFT DAC ** TRIPLE PRECISION
+ JST SAV SHIFT LEFT ONE PLACE
+ LDA* SFT
+ STA XR
+ LDA 0,1
+ IAB
+ LDA 1,1
+ LLS 1
+ CSA
+ STA 1,1
+ IAB
+ STA 0,1
+ ACA
+ LRS 1
+ LDA 2,1
+ LLS 1
+ CSA
+ STA 2,1
+ JST RST
+ IRS SFT
+ JMP* SFT
+*
+LIST DAC **
+ JST PRSP
+ SR2
+ JMP *+3
+ CALL F4$SYM PRINT BLANK LINE
+ DAC PRI
+ CALL F4$SYM PRINT SOURCE INPUT LINE
+ DAC CI
+ JMP* LIST
+* *************
+* *ASSIGN ITEM*
+* *************
+* CHECKS ASSIGNMENT AREA OF DATA POOL (A0 TO ABAR)
+* FOR ITEM DEFINED BY ID, IM, IU, ETC.
+* IF FOUND, EXIT WITH POINTER AND
+* ASSIGNMENTS DATA SET, OTHERWISE
+* ASSIGN THE ITEM.
+*
+*
+*
+T0AS PZE 0
+AS00 DAC **
+ CRA
+ STA A A = A (0)
+AS04 JST STXA
+ JST NXT GET NEXT ENTRY
+ JMP AS30 AT END, GO TO AS30
+ LDA NT
+ SUB NTA NT = NT(A)
+ SZE
+ JMP AS04 NO, G0 TO AS04
+ LDA TID
+ SUB TIDA
+ SZE
+ JMP AS04 TID = TID(A)
+ LDA TID+1
+ SUB TIDA+1
+ SZE
+ JMP AS04 NO, GO TO AS04
+ LDA TID+2
+ SUB TIDA+2
+ SZE
+ JMP AS04
+ LDA NT IF NT (A) .NE. 0,
+ SNZ GO TO AS10
+ JMP AS16 GO TO AS16 (4)
+AS10 LDA IM IF IM .NE. IM (A),
+ SUB IMA GO TO AS04 (1)
+ SZE
+ JMP AS04
+ LDA IU IF IU = 0,
+ SNZ OR NOT EQUAL IU (A)
+ JMP AS04 GO T0 AS04 (1)
+ SUB IUA
+ SZE
+ JMP AS04 ELSE,
+ LDA IM
+ SUB K105 GO TO AS16 (4)
+ SZE
+ JMP AS16
+ JST NXT ELSE, GET NEXT ENTRY
+ JMP AS30
+ LDA TIDA IF IU (A) = TIDB
+ SUB TIDB GO TO AS16 (4)
+ SZE ELSE, GO TO AS04 (1)
+ JMP AS04
+ LDA TIDA+1
+ SUB TIDB+1
+ SZE
+ JMP AS04
+ LDA TIDA+2
+ SUB TIDB+2
+ SZE
+ JMP AS04
+ LDA A
+ SUB K105
+ STA A
+AS16 LDA IUA IF IU (A) .NE. 0
+ ADD NTF
+ SZE
+ JMP AS18 GO TO AS18 (5)
+ LDA SPF IF SPF = 0, GO TO AS18 (5)
+ SNZ
+ JMP AS18
+ LDA TC IF TC = (
+ SUB K17
+ SZE
+ JMP AS19
+ JST TG00 TAG SUBPROGRAM
+AS18 CRA SET NTF TO 0
+ STA NTF SET NTF TO 0
+ JST FA00 GO TO FETCH ASSIGNS
+ JST STXA
+ LDA IM
+ JMP* AS00 RETURN
+AS19 JST TV00 TAG VARIABLE
+ JMP AS18
+AS30 JST BUD BUILD ASSIGNMENT ENTRY
+ LDA NT IF NT = 1
+ SZE
+ JMP AS32 OR IV = VAR,
+ LDA IU
+ SUB K102
+ SZE
+ JMP AS40 AMD
+AS32 LDA IM IF IM = CPX,
+ SUB K105
+ SZE
+ JMP AS40
+ STA IU MOVE 1ST PART OF
+ LDA TIDB COMPLEX ENTRY TO
+ STA TID TID AND BUILD
+ LDA TIDB+1 ASSIGNMENT ENTRY
+ STA TID+1
+ LDA TIDB+2
+ STA TID+2
+ LDA A
+ ADD K105
+ STA A
+ JST BUD
+ LDA A
+ SUB K105 RESTORE A
+ STA A
+AS40 LDA ABAR
+ SUB A TO = -(ABAR-A+5)
+ ADD K105 GIVING NO. OF WORDS TO MOVE TABLES UP
+ TCA
+ STA T0AS
+ TCA
+ ADD DO CO=DO+TO
+ STA DO
+ LDA IFLG IF IFLG = 0, THERE IS NO EXPRESSION TABLE
+ SNZ
+ JMP AS60 GO TO AS60
+ LDA I
+ SUB T0AS
+ STA I I = I - T0(T0 IS NEGATIVE)
+ AOA
+AS41 CAS L CHECK AGAINST BOTTOM OF TRIAD TABLE
+ NOP
+ JMP AS50
+ ADD '104 =DP,1
+ STA AS91 AS91 = NEW TABLE TOP
+ ADD T0AS
+ STA AS92 AS92
+ SUB T0AS COMPUTE SIZE OF FLOATING TABLES
+ SUB '104 =DP,1
+ SUB DO
+ SNZ IF ZERO, ASSIGN TABLE ONLY,
+ JMP AS16
+ TCA
+ STA T0AS
+ CRA
+ STA XR
+AS46 LDA* AS92 END-5
+ STA* AS91 END (MOVE TABLES UP)
+ LDA 0
+ SUB K101 =1
+ STA 0 REDUCE INDEX
+ IRS T0AS = NO, OF WORDS TO MOVE
+ JMP AS46
+ JMP AS16
+AS50 JST ER00
+ BCI 1,MO DATA POOL OVERFLOW
+AS60 LDA DO
+ ADD D
+ JMP AS41
+AS91 DAC 0
+AS92 DAC **
+*
+*
+*
+*
+* ****************
+* *TAG SUBPROGRAM*
+* ****************
+* TAG ITEM AS A SUBPROGRAM, CHECK TO SEE IF
+* NAME IS IN IMPLICIT MODE TABLE AND SET
+* MODE ACCORDINGLY
+*
+TG00 DAC **
+ LDA IU
+ SUB K101 IF IU = SUB
+ SNZ
+ JMP* TG00 RETURN, ELSE
+ JST NU00 NO * USAGE TEST
+ LDA TG22 =-21
+ STA 0 SET INDEX
+TG04 LDA ID+1 CHARACTERS 3 AND 4
+ CAS TGT2+21,1 IMPLICIT MODE SUBR. NAME TABLE
+ JMP *+2
+ JMP TG10
+TG06 IRS 0
+ JMP TG04 NOT DONE WITH TABLE
+TG08 LDA K101 =1 (IU=SUBR.)
+ STA IU
+ JST STXA
+ LDA DP+1,1 IU(A) = SUB
+ LGL 1
+ SSM
+ LGR 1
+ STA DP+1,1
+ JMP* TG00 RETURN
+*
+TG10 LDA ID CHARACTERS 1 AND 2
+ ANA K111 ='37777
+ ADD HBIT ='140000
+ SUB TGT1+21,1
+ SZE
+ JMP TG06 CONTINUE SEARCH
+ LDA ID+2 CHARACTERS 5 AND 6
+ SUB TGT3+21,1
+ SZE
+ JMP TG06 CONTINUE SEARCH
+ LDA TGT1+21,1
+ LGR 8
+ ANA K107 =7 (=3 IF CPX, 4 IF DBL)
+ ADD K102 =2 (=5 IF CPX, 6 IF DBL)
+ JST DM00 DEFINE IM
+ JMP TG08
+*
+TG22 OCT 177753 =-21
+*
+*...........IMPLICIT MODE SUBROUTINE NAME TABLE
+TGT1 BCI 6,DECEDLCLDLDS
+ BCI 6,CSDCCCDSCSDA
+ BCI 6,DADMDADMDMDS
+ BCI 3,DBCMCO
+TGT2 BCI 6,XPXPOGOGOGIN
+ BCI 6,INOSOSQRQRTA
+ BCI 6,TAODBSAXINIG
+ BCI 3,LEPLNJ
+TGT3 BCI 6, 10 /
+ BCI 6, T T N /
+ BCI 6,N2 1 1 N /
+ BCI 3, X G /
+*
+*
+TIDA BSS 3
+TIDB BSS 3
+*
+* - TV00 TAG VARIABLE
+TV00 DAC **
+ LDA IU IF IU = 'VAR',
+ SUB K102
+ SNZ
+ JMP* TV00 RETURN
+ JST NU00 ELSE, NO USAGE TEST
+ JST STXA
+ LDA DP+1,1
+ ANA K111 IU (A) = 'VAR'
+ SSM
+ STA DP+1,1
+ JMP* TV00 RETURN
+*
+*
+*
+*
+*
+* **************
+* *FETCH ASSIGN*
+* **************
+* SET ASSIGNMENT DATA FROM ASSIGN (EXCEPT ID)
+* EXPAND DIMENSION INFO IF ARRAY
+*
+FA00 DAC **
+ JST STXA
+ LDA DP,1
+ LRL 15
+ STA NT NT=NT(A)
+ CRA
+ LLL 3
+ STA AT AT=AT(A)
+ CRA
+ LLL 3 IM = IM(A)
+ STA IM
+ STA 0
+ LDA KM92-1,1
+ STA D0 D0 = NUMBER OF WORDS
+ ALS 2
+ ADD D0
+ STA X X = POINTER TO CONSTANT NUMBER OF WORDS
+ JST STXA
+ LDA DP+1,1
+ LRL 14
+ STA IU
+ SUB K103 IF IU NOT 'ARR'
+ SNZ
+ JMP FA10
+ CRA
+ LLL 14 AF = GF(A)
+ STA AF
+ JMP* FA00
+FA10 LLL 14
+ STA 0 INDEX = GF(A)
+ LDA DP+4,1
+ STA X1 POINTER OF DIMENSION 1
+ LDA DP+3,1
+ STA X2 POINTER OF DIMENSION 2
+ LDA DP+2,1
+ STA X3 POINTER OF DIMENSION 3
+ LDA DP+1,1
+ ANA K111 ='37777
+ STA AF AF = GF(GF(A))
+ LDA DP,1
+ LGR 9
+ ANA K107 =7
+ STA ND NUMBER OF DIMENSIONS
+ STA 0
+ LDA K101 =1
+ STA D2
+ STA D3
+ JMP* FA91-1,1
+FA22 LDA X3 FETCH 3RD DIMENSION SIZE
+ STA XR
+ JST FA40
+ STA D3 STORE D3
+FA24 LDA X2
+ STA XR
+ JST FA40
+ STA D2 D2 = 2ND DIMENSION SIZE
+FA26 LDA X1
+ STA XR
+ JST FA40
+ STA D1 D1 = 1ST DIMENSION SIZE
+ JST STXA EXIT WITH AF IN A
+ LDA AF
+ JMP* FA00
+FA40 DAC **
+ LDA DP,1 IM OF SUBSCRIPT VALUE
+ SSP
+ LGR 12
+ SUB K105 =5
+ SZE SKIP IF DUMMY SUBSCRIPT
+ LDA DP+4,1 FETCH VALUE OF SUBSCRIPT
+ JMP* FA40
+FA91 DAC FA26
+ DAC FA24
+ DAC FA22
+*
+*
+* ************
+* *FETCH LINK*
+* ************
+* EXPAND LINK FIELD AND FETCH ASSIGNS FOR THE
+* LINKED ITEM
+*
+FL00 DAC **
+ JST STXA
+ LDA DP,1 A = 5 * CL(A)
+ ANA K118
+ STA FLT1
+ ALS 2
+ ADD FLT1 (FLT1 ALSO USED BY ASSIGN SPEC)
+ STA A
+ JST FA00 FETCH ASSIGN
+ JST KT00 D0 = = WDS /ITEM
+ LDA A
+ SUB F (A) = A-F
+ JMP* FL00 RETURN
+*
+*
+* *******************
+* *D0=WORDS FOR LINK*
+* *******************
+* D = ITEM MODE SIZE TIMES THE TOTAL SIZE IF
+* THE ITEM IS AN ARRAY
+*
+KT00 DAC **
+ LDA IU IF IU NOT 'ARR'
+ SUB K103
+ SZE
+ JMP* KT00 RETURN
+ LDA D0
+ IAB D0 = D0 * D1 * D2 * D3
+ LDA D1
+ JST IM00 MULTIPLY A BY B
+ IAB
+ LDA D2
+ JST IM00 MULTIPLY A BY B
+ IAB
+ LDA D3
+ JST IM00 MULTIPLY A BY B
+ STA D0
+ JMP* KT00 RETURN
+*
+*
+*
+* ***********
+* *DEFINE IM*
+* ***********
+* IM SUBA = IM (SET FROM A REG)
+*
+DM00 DAC **
+ STA IM IM = (A)
+ JST STXA ESTABLISH A
+ LDA DP,1
+ LRL 9
+ LGR 3 IM(A) = IM
+ LGL 3
+ ADD IM
+ LLL 9
+ STA DP,1
+ JMP* DM00
+*
+*
+* ***********
+* *DEFINE AF*
+* ***********
+* AF SUBA = AF (SET FROM A REG)
+*
+DA00 DAC **
+ STA AF AF = (A)
+ LRL 14
+ JST STXA
+DA10 LDA DP+1,1 IF IU (A) NOT ARR
+ LGR 14
+ CAS K103 GF (A) : AF
+ JMP *+2
+ JMP DA20 ELSE, GF (GF (A)) = AF
+ LLL 14
+ STA DP+1,1
+ JMP* DA00 RETURN
+DA20 LDA DP+1,1
+ ANA K111
+ STA GFA
+ STA 0
+ JMP DA10
+NXT DAC ** GET NEXT ENTRY
+ LDA A FROM ASSIGNMENT
+ ADD K105 =5
+ STA A
+ STA 0
+ CAS ABAR
+ JMP* NXT
+ NOP
+ IRS NXT
+ LDA DP,1
+ LRL 15
+ STA NTA NT(A) = NT FROM (A)
+ CRA
+ LLL 3
+ STA ATA AT(A) = AT FROM (A)
+ CRA
+ LLL 3
+ STA IMA IM(A) = IM FROM (A)
+ CRA
+ LLL 9
+ STA CLA CL(A) = CL FROM (A)
+ LDA DP+1,1
+ LRL 14
+ STA IUA IU(A) = IU FROM (A)
+ CRA
+ LLL 14
+ STA GFA GF(A) = GF FROM (A)
+ LDA DP+2,1
+ STA TIDA+2 TID(A) = TID FROM (A)
+ LDA DP+3,1
+ STA TIDA+1
+ LDA DP+4,1
+ STA TIDA
+ LRL 15
+ STA DTA DT(A) = DT FROM (A)
+ CRA
+ LLL 1
+ STA TTA TT(A) = TT FROM (A)
+ LDA NTA NT(A) = NT FROM (A)
+ SZE
+ JMP* NXT
+ LDA DP+4,1
+ SSM
+ ALR 1
+ SSM
+ ARR 1
+ STA TIDA
+ JMP* NXT
+*
+*
+BUD DAC ** BUILD ASSIGNMENT
+ JST STXA
+ STA ABAR
+ LDA TID TABLE ENTRY
+ STA DP+4,1
+ LDA TID+1
+ STA DP+3,1
+ LDA TID+2
+ STA DP+2,1
+ LDA IU
+ STA IUA
+ LGL 14
+ STA DP+1,1
+ LDA NT
+ LGL 3
+ ADD K102 AT = STR/+BS
+ LGL 3
+ ADD IM
+ LRL 16
+ STA CL
+ LDA K102
+ STA AT
+ LDA A CL(A) = A/5
+ SUB K105
+ SPL
+ JMP *+3
+ IRS CL
+ JMP *-4
+ LLL 25
+ ADD CL
+ STA DP,1
+ SPL
+ JMP* BUD
+ LDA DT
+ LGL 1
+ ADD TT
+ LGL 14
+ IMA DP+4,1
+ ANA K111
+ ADD DP+4,1
+ STA DP+4,1
+ JMP* BUD
+*
+*
+*
+*
+*
+* ************
+* *DEFINE AFT*
+* ************
+* AT SUBA = AT (FROM B REG), THEN DEFINE AF
+*
+AF00 DAC **
+ IAB
+ STA AF90
+ JST STXA
+ LDA AF90
+ LGL 12
+ IMA DP,1
+ ANA AF91
+ ADD DP,1
+ STA DP,1 AT(A) = CONTENTS OF B INPUT
+ IAB
+ JST DA00 DEFINE AF
+ JMP* AF00
+AF90 PZE 0
+AF91 OCT 107777
+*
+*
+* *****************
+* *DEFINE LOCATION*
+* *****************
+* SET AF = RPL, AT = REL
+LO00 DAC **
+ LDA K101 REL
+ IAB
+ LDA RPL
+ JST AF00 DEFINE AF
+ JMP* LO00
+* *************************
+* *ASSIGN INTEGER CONSTANT*
+* *************************
+* IM (INTEGER), IU(VARIABLE) , ASSIGN SPECIAL
+AI00 DAC **
+ CRA
+ STA ID+1
+ STA ID+2
+ LDA K101 (B) = INT
+ IAB
+ LDA K102 (A) = VAR
+ JST AA00 ASSIGN SPECIAL
+ JMP* AI00 RETURN
+*
+*
+* ****************
+* *ASSIGN SPECIAL*
+* ****************
+* B REG TO IM, A REG TO IU, 1 TO NT (CONSTANT), THEN
+* ASSIGN ITEM
+AA00 DAC **
+ STA IU IU = (A)
+ IAB
+ STA IM IM = (B)
+ LDA K101
+ STA NT NT = 1
+ JST AS00 ASSIGN ITEM
+ JMP* AA00 RETURN
+*
+*
+* **********
+* *JUMP *
+* *ILL TERM*
+* **********
+*
+* CLEAR LAST OP FLAG FOR NO PATH TESTING
+*
+B6 CRA
+ STA LSTP LSTP = 0
+* SET ILLEGAL DO TERM FLAG
+C5 LDA K101
+ STA LSTF LSTF =1
+A1 LDA CRET
+ JST TS00 IF TC NOT C/R, ERROR
+ JMP C6
+*
+*
+* **********
+* *CONTINUE*
+* **********
+* WRAPUP LOGICAL IF, CHECK TRACE STOP AND SEARCH
+* DO TABLE FOR DO TERMINATION
+C6 LDA LIF
+ SZE IF LIF NON-ZERO,
+ JMP C6H GO TO
+C6A LDA LSTN IF LSTN NON-ZERO,
+ SZE GO TO
+ JMP C6C
+C6B STA LSTF LSTF = 0
+ JMP C7 GO TO STATEMENT INPUT
+C6C SUB TRF TRACE FLAG
+ SNZ SMP IF NOT END OF TRACE ZONE
+ STA TRF SET TRF TO ZERO (TURN FLAG OFF)
+ LDA DO START OF DO TABLE
+ ADD D
+C6D STA I I = DO + D
+ JST STXI
+ SUB DO
+ SNZ
+ JMP C6B GO TO C6B - FINISHED DO
+ LDA DP-4,1
+ SUB LSTN
+ SZE
+ JMP C6E
+ LDA LSTF
+ SZE
+ JMP C6K
+ JST DQ00 DO TERMINATION
+ LDA D
+ SUB K105
+ STA D D = D-5
+ LDA LSTF
+C6E STA LSTF
+ LDA I
+ SUB K105
+ JMP C6D I = I-5 - CONTINUE DO LOOP
+C6H LDA IFF
+ STA A
+ SNZ
+ JMP C6J
+ LLL 16
+ LDA OMI5 (A) = JMP INSTRUCTION
+ JST OB00 OUTPUT OA
+ CRA
+ STA IFF IFF = 0
+C6J STA A A = U
+ LDA LIF
+ STA LSTP SET TO NON-ZERO TO PREVENT DATA ERROR MSG
+ JST OS00 OUTPUT STRING - RPL
+ JMP C6A
+*
+C6K JST ER00
+ BCI 1,DT
+*
+* *****************
+* *STATEMENT INPUT*
+* *****************
+* SET UP PROCESSING OF NEXT SOURCE STATEMENT
+* PROCESS STATEMENT NUMBER IF PRESENT
+* WRAPUP ANY OUTSTANDING ARITHMETIC IF
+C7 CRA
+ STA LSTN LSTN = 0
+ STA IFLG IFLG = 0
+ STA LIF LIF = 0
+ LDA L0 L = L (0)
+ STA L
+ LDA CI CHECK CARD COLUMN 1
+ LGR 8 FOR $ CHARACTER
+ SUB K15 *($)
+ SNZ
+ JMP CCRD CONTROL CARD
+ JST XN00 EXAMINE NEXT CHAR
+ SZE
+ JMP C71
+ JST IS00 INPUT STATEMENT =
+ LDA A
+ STA LSTN LSTN = A
+ STA LSTP
+C71 LDA IFF CHECK FOR IFF=0
+ LDA IFF IF IFF = 0,
+ SNZ
+ JMP C7B GO TO C7B
+ SUB LSTN IF = LSTN
+ SZE
+ JMP C7C
+C7A STA IFF IFF = 0
+C7B JST C7LT LINE TEST
+ JMP C8
+C7C LDA IFF IFF = A
+ STA A
+ LRL 32
+ LDA K201 (A) = JMP INSTRUCTION
+ JST OB00 OUTPUT OA
+ CRA
+ JMP C7A GO TO C7A
+C7LT DAC ** LINE TEST
+ LDA CI+2 CI = BLANK
+ ANA K116 LIST LINE
+ ADD K8 RETURN
+ STA CI+2
+ LDA TC
+ SUB HC2 IF TC : SPECIAL
+ SZE
+ JMP C7LU
+ JST LIST
+ JMP* C7LT
+C7LU JST ER00 CONSTRUCTION ERROR
+ BCI 1,SC STATEMENT NO. ON A CONTINUATION CARD
+*
+*
+*
+* ************************
+* *CONTROL CARD PROCESSOR*
+* ************************
+CCRD JST FS00 FLUSH BUFFER IF NECESSARY
+ JST LIST LIST CARD
+ LDA CI WORD CONTAINING COLUMN 1
+ LGL 12
+ SNZ
+ LDA CCRK ='030000 (EOJ CODE = 3)
+ LGR 6 TRUNCATE TO A DIGIT
+ STA OCI
+ LDA K106 =6
+ STA OCNT SET BUFFER WORD COUNT TO 3
+ JST FS00 FLUSH BUFFER
+ LDA CI
+ LGL 12 CHECK COLUMN 1 FOR CONTROL CODE 0
+ SZE
+ JMP ER20 SKIP TO NEXT CARD (NOT CONTROL CARD)
+ CALL F4$END CLOSE-OUT I/0 DEVICES AND STOP
+ JMP A0 RESTART NEW COMPILATION
+CCRK OCT 030000 EOJ CONTROL CODE
+*
+* ****************
+* *STATEMENT SCAN*
+* ****************
+* DETERMINE THE CLASS OF THE STATEMENT
+* IF AN = IS FOUND WITH A FOLLOWING ,
+* THE STATEMENT IS A DO
+* IF NO FOLLOWING COMMA, THE PAREN FLAG
+* IS TESTED, IF NO PARENS, THE STATEMENT
+* IS ARITHMETIC ASSIGNMENT
+* IF PARENS WERE DETECTED AND THE FIRST
+* NAME IS AN ARRAY, THE STATEMENT IS
+* ARITHMETIC ASSIGNMENT
+* OTHERWISE, IT IS A STATEMENT FUNCTION
+* IF NO = IS FOUND, THE STATEMENT IS
+* PROCESSED FURTHER IN STATEMENT ID
+C8T1 PZE 0
+C8 LDA CC SAVE CC
+ STA C8X9
+ LDA K101
+ STA C8T1 T (1) = 1
+ CRA
+ STA ICSW ICSW = SIR
+C8A JST CH00 INPUT CHARACTER
+C8B LDA TC IF TC = )
+ SUB K4
+ SZE
+ JMP C8C
+ JST CH00 INPUT CHAR
+C8B2 LDA DFL IF DFL NOT ZERO
+ SZE
+ JMP C8B GO TO C8B
+C8B4 LDA C8X9 RESTORE CC
+ STA CC
+ LDA K101 IPL
+ STA ICSW ICSW = IPL
+ JMP A9 GO TO STATEMENT ID
+C8C LDA TC IF TC NOT (,
+ SUB K17
+ SZE
+ JMP C8D GO TO C8D
+ LDA C8T1 T1 = T1 - 1
+ SUB K101
+ STA C8T1
+C8C4 SZE IF T1 = 0
+ JMP C8B4
+ JST DN00 INPUT DNA
+ JMP C8B2 GO TO C8B2
+C8D LDA TC IF TC = ,
+ CAS K134 ='17 ('FINISHED' CODE FOR COMMA)
+ JMP *+2
+ JMP C8D2 TC = COMMA
+ SUB K5
+ SZE
+ JMP C8E
+C8D2 LDA C8T1 GO TO C8C4,
+ JMP C8C4
+C8E LDA TC ELSE, IF TC = '/'
+ SUB K9
+ SNZ
+ JMP C8B4 GO TO C8B4
+ LDA TC
+ SUB K18 IF NOT = ,
+ SZE
+ JMP C8A GO TO C8A
+ LDA K107 INPUT 7 CHARACTERS
+ JST IA00
+ LDA C8X9 RESTORE CC
+ STA CC
+ LDA K101 IPL
+ STA ICSW ICSW = IPL
+ LDA TC
+ SUB K5 IF TC NOT,
+ SZE
+ JMP C8G GO TO C8G
+ LDA K102 ELSE, INPUT 2 CHARS
+ JST IA00
+ LDA IBUF IF (A) = 'DO'
+ SUB K19
+ SNZ
+ JMP *+3
+ JST ER00
+ BCI 1,CM COMMA OUTSIDE PARENTHESES, NOT IN DO STMNT,
+ LDA K104
+ JST NP00 FIRST NON-SPEC CHECK
+ JMP C9 GO TO DO
+C8G LDA C8T1 1 IF NO ( TO LEFT OF EQUALS
+ SZE
+ JMP G2 ARITHMETIC ASSIGNMENT STATEMENT
+ JST SY00 INPUT SYMBOL
+ LDA C8X9
+ STA CC RESTORE CC
+ LDA IU IF IU = SUBR
+ SUB K103
+ SZE
+ JMP G1 GO TO ARITH ST. FUNCT,
+ JMP G2 OTHERWISE = ASSIGNMENT STATEMENT
+C8X9 PZE 0
+*
+*
+* **************************
+* *STATEMENT IDENTIFICATION*
+* **************************
+* READ FOUR CHARACTERS AND DETERMINE CORRECT ROUTINE
+* FOR PROCESSING, THEN CHECK SPELLING ON REST
+A9T1 PZE 0
+A9T2 PZE 0
+A9T3 PZE 0
+A9 LDA K104
+ JST IA00 INPUT (4) CHARS
+ LDA IBUF
+ STA NAMF NAMF = IBUF
+ LDA IBUF+1
+ STA NAMF+1
+ LDA A9Z9 INITIALIZE INDEX FOR LOOP
+ STA XR THROUGH THE STATEMENT NAMES
+A9A LDA NAMF
+ SUB A9X1+30,1
+ SZE
+ JMP A9F READ IN REST OF
+ LDA NAMF+1 CHECK REST OF SPELLING FOR
+ SUB A9X2+30,1
+ SZE A MATCH ON 4 CHARACTERS
+ JMP A9F NOT FOUND
+ LDA A9X4+30,1
+ ANA K133
+ STA A9T1 T1 = NUMBER OF REMAINING CHARACTERS
+ LDA A9X3+30,1 LEFT TO CHECK
+ LRL 13
+ IAB
+ LGR 3
+ STA A9T2 T2 = ADDRESS OF ROUTINE
+ IAB
+ JST NP00 FIRST NON-SPECIFIC. CHECK -(A) =
+A9B LDA A9T1 HIERARCHY CODE
+ SZE
+ JMP A9C MUST CHECK MORE CHARACTERS
+ JMP* A9T2 FINISHED CHARACTER CHECK, EXIT TO
+* SPECIFIC ANALYZER.
+A9C SUB K106
+ SPL
+ JMP A9E
+ STA A9T1
+ LDA K106 REMAINING SPELLING 1S CHECKED.
+A9D STA A9T3
+ JST IA00
+ SUB A9T3
+ SNZ
+ JMP A9B
+ JST ER00
+ BCI 1,SP STATEMENT NAME MISSPELLED
+A9E ADD K106
+ IMA A9T1
+ CRA
+ IMA A9T1
+ JMP A9D
+A9F IRS XR LOOP CONTROL FOR STATEMENT NAMES.
+ JMP A9A MORE NAMES - CONTINUE LOOP
+ LDA TC
+ SUB CRET
+ SZE
+ JMP A9G
+ LDA LSTN TC = C/R
+ SNZ
+ JMP C7 AND LSTN = 0 - INPUT NEW STATEMENT
+A9G JST ER00
+ BCI 1,ID UNRECOGNIZED STATEMENT
+A9X1 BCI 10,INREDOCOLOFUSUBLEXDI
+ BCI 10,COEQGOCARECOFOIFWRRE
+ BCI 7,BAENREENASSTPA
+ BCI 2,DATR
+ BCI 1,PR
+A9X2 BCI 10,TEALUBMPGINCBROCTEME
+ BCI 10,MMUITOLLTUNTRM( ITAD
+ BCI 3,CKDFWI
+ OCT 142215 D, C/R
+ BCI 3,SIOPUS
+ BCI 2,TAAC
+ BCI 1,IN
+A9X3 DAC A3
+ DAC A4
+ DAC A5
+ DAC A6
+ DAC A7
+ DAC R1
+ DAC R2
+ DAC R3
+ DAC B2
+ DAC B3
+ DAC B4
+ DAC B5
+ DAC* R7
+ DAC* R8
+ DAC* R9
+ DAC* CONT
+ DAC* V2
+ DAC* V3
+ DAC* V4
+ DAC* V5
+ DAC* V6
+ DAC* V7
+ DAC* V8
+ DAC W5+'20000
+ DAC* W3
+ DAC* W7
+ DAC* W8
+ DAC W4,1
+ DAC* TRAC+'20000,1 TRACE STATEMENT
+ DAC* V10
+*
+* ******************************
+* *CONTINUE STATEMENT PROCESS0R*
+* ******************************
+CONT LDA LSTP ACCOUNTS FOR POSSIBLE PATH ERROR
+ ADD LSTN ACCOUNTS FOR POSSIBLE PATH ERROR
+ STA LSTP ACCOUNTS FOR POSSIBLE PATH ERROR
+ JMP C6
+*
+*-------------THE FOLLOWING TABLE IS USED BY STATEMENT ID
+*-------------(RIGHT 6 BITS) AND OUTPUT ITEM,
+A9X4 OCT 000003 (00)
+ OCT 030100 (01) + (A$--)
+ OCT 032313 (02) - (S$--)
+ OCT 031503 (03) * (M$--)
+ OCT 030403 (04) / (D$--)
+ OCT 000004 (05) .NOT.
+ OCT 000006 (06) .AND.
+ OCT 031405 (07) .OR. (L$-,
+ OCT 000004 (10) .LT.
+ OCT 000005 (11) .LE.
+ OCT 000002 (12) .EQ.
+ OCT 000007 (13) .GE.
+ OCT 000000 (14) .GT.
+ OCT 000000 (15) .NE.
+ OCT 031003 (16) = (H$--)
+ OCT 000005 (17) ,
+ OCT 030503 (20) 'E' (E$--)
+ OCT 031600 (21) 'C' NC$--)
+ OCT 000001 (22) 'A'
+ OCT 000000 (23)
+ OCT 000005 (24) 'X'
+ OCT 000003 (25) 'H'
+ OCT 000002 (26) 'L'
+ OCT 000000 (27) 'I'
+ OCT 000002 (30) 'T'
+ OCT 031400 (31) 'F' (L$--)
+ OCT 000001 (32) 'Q'
+ OCT 000000
+ OCT 000001
+ OCT 000001
+A9Z9 DAC* -30,1 NO. OF ITEMS IN STMNT NAME TABLE
+*
+*
+* **********************
+* *FIRST NON-SPEC CHECK*
+* **********************
+* AT FIRST SHIFT IN LEVEL FROM ZERO, WRAP-UP
+* SPECIFICATION STATEMENTS
+T0NP PZE 0
+NPT0 EQU T0NP
+T2NP PZE 0
+T1NP PZE 0
+NP00 DAC **
+ STA NPT0 T0 = (A)
+ LDA A
+ STA T1NP T1 = A
+ LDA NPT0
+ CAS K107 =7
+ JMP *+2
+ JMP NP10 TRACE STMNT. (MAY OCCUR ANYWHERE)
+ CAS SPF T0 , G.R. SPF, GO TO NP30
+ JMP NP30 T0 = SPF, G0 TO NP25
+ JMP NP25
+ LDA TC IF TC = C/R
+ SUB CRET GO TO NP10
+ SNZ
+ JMP NP10
+ JST ER00 ELSE, ILLEGAL STATEMENT
+ BCI 1,EX SPECIFICATION STATEMENT APPEARS AFTER
+*
+NP10 LDA LSTN SPECIFICATION STATEMENT CLEAN-UP
+ STA A A = LSTN
+ SNZ
+ JMP NP16 IF ZERO, RETURN
+ JST FA00 FETCH ASSIGNS
+ LDA K103 STR-REL
+ SUB AT
+ SZE
+ JMP NP20
+ LDA AF
+ JST OS00 OUTPUT STRING RPL
+NP15 JST LO00 DEFINE LOCATION
+ LDA NAMF
+ SUB A9X1+16
+ SZE
+ JST TRSE OUTPUT TRACE COUPLING
+NP16 LDA T1NP
+ STA A
+ JMP* NP00
+NP20 JST NR00 NON-REL TEST
+ JMP NP15
+NP25 LDA LIF
+ SZE
+ JMP NP16
+ LDA LSTP IF LSTP + LSTN =0
+ ADD LSTN
+ SZE
+ JMP NP10
+ IRS LSTP
+ JST ER00 'NO PATH' ERROR
+ BCI 1,PH NO PATH LEADING TO THE STATEMENT
+NP30 LDA SPF IF SPF 0 0
+ SZE
+ JMP NP37
+NP32 LDA TC
+ STA T2NP T2 = TC
+ LDA RPL
+ STA XST XST = RPL
+ LDA BDF BLOCK DATA SUBPROGRAM FLAG
+ SZE SKIP IF NOT BLOCK DATA SUBPROGRAM
+ JMP C2 GO TO RELATE COMMON
+ STA A SET LISTING FOR OCTAL ADDR.
+ LDA OMI5 JMP INSTRUCTION
+ STA DF SET LISTING FOR SYMBOLIC INSTR.
+ JST OA00 OUTPUT ABSOLUTE
+ JMP C2 GO TO RELATE COMMON
+NP35 LDA T2NP
+ STA TC
+NP37 LDA T0NP
+ STA SPF SPF = T0
+ SUB K104
+ SZE
+ JMP NP10
+NP40 STA A SET LISTING FOR OCTAL ADDR.
+ LDA XST LOCATION OF INITIAL JUMP
+ JST OS00 OUTPUT STRING
+ LDA RPL
+ STA XST XST = RPL
+ JMP NP10 GO TO NP10
+*
+* *****************
+* *IF( PROCESSOR*
+* *****************
+* ARITHMETIC IF ($1 $2 $3)
+* IF $2 NOT = $3, JZE $2
+* IF $3 NOT = $1, JPL $3
+* (IF $1 NOT = NEXT ST NO., JMP $1) LATER
+* LOGICAL IF
+* OUTPUT JZE 77777 (FOR STRINGING AROUND
+* IMBEDDED STATEMENT)
+V3 JST II00 INPUT ITEM
+ SNZ
+ JMP V310 IM=0 (POSSI8LE UNARY + OR -)
+ LDA DFL
+ SZE
+ JMP V310 FIRST ITEM IN EXPRESSION 0.K.
+V308 JST ER00 ERROR.....IF(SENSE SWITCH,.ETC).....
+ BCI 1,IF ILLEGAL IF STATEMENT TYPE
+V310 CRA (A)=0
+ JST EX00 EXPRESSION EVALUATOR
+ LDA K4
+ JST TS00 )-TEST
+ CRA
+ STA A SET A TO SPECIAL (IF) ENTRY IN DATA POOL
+ STA 0
+ LDA MFL SET MODE OF EXPRESSION INTO SPECIAL (IF)
+ LGL 9
+ STA DP,1
+ JST TRSE OUTPUT TRACE COUPLING (IF NECESSARY)
+ LDA MFL CHECK MODE FLAG FOR LOGICAL
+ SUB K103
+ SZE
+ JMP V320 ARITHMETIC IF
+ LDA LIF
+ SZE
+ JMP V308
+ STA AF SET ADDR OF SNZ AND JMP INSTR TO 00000
+ LDA OMJ2 =SNZ INSTR.
+ JST OA00 OUTPUT ABSOLUTE
+ LDA RPL SET LIF=CURRENT +DDR, (STRING BACK)
+ STA LIF
+ LDA OMI5 =JMP 0 INSTR.
+ JST OA00 OUTPUT ABSOLUTE
+ JST XN00 GO TO NEXT INPUT LINE
+ JMP C8 GO TO STATEMENT SCAN
+*
+V320 SUB K102 CHECK FOR MODE = COMPLEX
+ SNZ
+ JMP V308 ERROR,...COMPLEX MODE EXPRESSION
+ LDA V356 =-3
+ STA I
+V324 JST IS00 INPUT STATEMENT NUMBER
+ JST STXI SET INDEX TO I
+ LDA A
+ STA T1V3+3,1 SAVE BRANCH ADDRESSES
+ IRS I I=I+1
+ JMP V350 CHECK FOR TERMINAL COMMA
+ LDA T3V3
+ CAS T2V3 CHECK FOR ADDR-2 = ADDR-3
+ JMP *+2
+ JMP V330 ADDR-2 = ADDR-3
+ CRA
+ STA A
+ LDA OMJ2 =SNZ INSTR.
+ STA DF
+ JST OA00 OUTPUT ABSOLUTE
+ LDA T2V3
+ JST V360 OUTPUT A JMP(ADDR-2) INSTR.
+ LDA T3V3
+V330 CAS T1V3 CHECK FOR ADDR-3 = ADDR-2
+ JMP *+2
+ JMP V340 ADDR-3 = ADDR-1
+ CRA
+ STA A
+ LDA OMJ3 =SMI INSTR.
+ JST OA00 OUTPUT ABSOLUTE
+ LDA T3V3
+ JST V360 OUTPUT A JMP (ADDR-3) INSTR.
+V340 LDA T1V3
+ STA IFF SET IFF ' ADDR-1
+ JMP C5 GO TO ILL-TERM
+*
+V350 LDA K5
+ JST TS00 COMMA TEST
+ JMP V324 INPUT NEXT STATEMENT NO.
+*
+V356 OCT 177775 -3
+*
+*---------------SUBROUTINE TO OUTPUT A RELATIVE JMP
+V360 DAC **
+ STA A SET ADDR. OF JUMP REF. TO A
+ CRA
+ IAB SET (B) = 0
+ LDA OMI5 SET (A) = JMP INSTR.
+ JST OB00 OUTPUT OA
+ JMP* V360 EXIT
+*
+T1V3 *** ** ADDR-1
+T2V3 *** ** ADDR-2
+T3V3 *** ** ADDR-3
+*
+* *******
+* *GO TO*
+* *******
+* CHECK FOR NORMAL (R740), COMPUTED (R710) OR
+* ASSIGNED (R730). INPUT BRANCH LIST USED BY BOTH
+* R710 AND R730 FOR STATEMENT NO. LIST.
+*
+*
+R7 JST XN00 EXAMINE NEXT CHAR
+ SZE
+ JMP R78 GO TO TEST DFL
+ JST IS00 INPUT STMNT =
+ LDA A (GO TO 20)
+ STA IFF IFF = A
+ JMP C5 G0 TO ILLTERM
+R78 LDA DFL
+ SZE
+ JMP R7D
+ JST IR00 GO TO I (10, 20, 30}
+ LRL 32
+ LDA K206 OUTPUT JMP* INSTRUCTION
+ JST OB00 OUTPUT OA
+ LDA K134
+ JST TS00 , TEST
+ JST IB00 INPUT BRANCH LIST
+ JMP B6 GO TO JUMP
+R7D JST IB00 INPUT BRANCH LIST GO TO (10,11,12), I
+ LDA K134
+ JST TS00 , TEST
+ JST IR00 INPUT INT VAR
+ LRL 32
+ LDA K200 OUTPUT LDA
+ JST OB00 OUTPUT OA
+ CRA
+ STA A
+ STA AF CAUSE OCTAL ADDRESS IN LISTING
+ LDA K75
+ JST OA00 OUTPUT ABS (STA 0) - INDEX LOAD
+ LDA RPL
+ STA AF CAUSE RPL T0 BE IN LISTING
+ LDA K207
+ JST OR00 OUTPUT RELATIVE (JMP RPL,1)
+ LDA L0
+R7F SUB K101
+ STA I I = L (0)
+ JST STXI
+ LDA DP,1
+ STA A
+ JST STXA
+ SNZ
+ JMP B6 FINISHED LOOPING ON LIST
+ LLL 16
+ LDA K201 OUTPUT JMP INSTRUCTIONS
+ JST OB00 OUTPUT OA (JMP 0)
+ LDA I
+ JMP R7F
+* *******************
+* *INPUT BRANCH LIST*
+* *******************
+* INPUT STATEMENT NO. LISTS FOR GO TO PROCESSOR
+IB00 DAC **
+ LDA L0
+ SUB K101
+ STA I I = L0-1
+ JST CH00 INPUT CHAR
+ LDA K17
+ JST TS00 (- TEST
+IB10 JST IS00 INPUT STMNT =
+ JST STXI
+ LDA A
+ STA DP,1 SET POINTER OF ST. N0. INTO TRIAD TABLE
+* AREA
+ LDA I DP (J) = A
+ SUB K101
+ STA I I = I-1
+ LDA TC IF TC = , GO TO IB10
+ SUB K5
+ SNZ
+ JMP IB10 CONTINUE LOOP
+ CRA
+ STA DP-1,1 SET END FLAG INTO TABLE
+ JST IP00 )- INPUT OPEN
+ JMP* IB00 EXIT
+K75 STA 0
+*
+*
+* ********
+* *ASSIGN*
+* ********
+* CHECK TO SEE THAT 'TO' IS INCLUDED PROPERLY
+W3 JST IS00 INPUT STMNT =
+ LDA A
+ STA T1W3 SAVE A
+ LDA TC
+ SUB K34 CHECK FOR T0
+ SZE
+ JMP W305 CLEAR A FOR OUTPUT REL
+ STA A CAUSE OCTAL ADDRESS IN LIST
+ JST CH00 INPUT CHAR
+ LDA TC
+ SUB K35
+ SNZ
+ JMP *+3
+W305 JST ER00 ERROR
+ BCI 1,TO GO TO IN ASSIGN STATEMENT
+ LDA RPL
+ ADD K102
+ STA AF OUTPUT REL LDA *+2
+ LDA K200 OUTPUT LDA *+2
+ JST OR00 OUTPUT REL
+ LDA RPL
+ ADD K102
+ STA AF OUTPUT REL JMP *+2
+ LDA K201
+ JST OR00 OUTPUT OA
+ LRL 32
+ LDA T1W3
+ STA A RESTORE A
+ CRA
+ JST OB00 OUTPUT DAC ST. NO.
+ JST IR00 INPUT INTEGER VARIABLE
+ LRL 32
+ LDA K202 OUTPUT STA INSTRUCTION
+ JST OB00 OUTPUT OA
+ JMP A1 GO TO C/R TEST
+T1W3 PZE ** TEMP STORE
+*
+*
+* ************************
+* *DO STATEMENT PROCESSOR*
+* ************************
+* STACK INFO IN DO TABLE. OUTPUT DO INITIAL
+* CODE
+C9T0 PZE **
+C9 JST IS00 INPUT STATEMENT =
+ JST NR00 NON-REL TEST
+ LDA A
+ STA C9T0 T0 = A
+ JST UC00 UNINPUT COLUMN
+ JST IR00
+ LDA C951
+ JST TS00
+ LDA C9T0 (A) = T0
+ IAB
+ JST DP00 DO INPUT
+ JST DS00 DO INITIALIZE
+ JMP C5 GO TO ILLTERM
+C951 OCT 16 =
+*
+*
+* **********
+* *END FILE*
+* **********
+* ***********
+* *BACKSPACE*
+* *REWIND *
+* ***********
+V6 LDA K71
+V6A STA NAMF+1
+ JST NF00 SET UP NAMF
+ JST OI00 OUTPUT I/0 LINK
+ JMP A1 GO TO C/R TEST
+V7 LDA K72
+ JMP V6A
+V8 LDA K73
+ JMP V6A
+K71 BCI 1,FN FN
+K72 BCI 1,DN
+K73 BCI 1,BN BN
+*
+*
+* **************
+* *READ *
+* *WRITE *
+* *INPUT FORMAT*
+* **************
+* LIST ELEMENT DATA AND IMPLIED DO CONTROL
+* STACKED IN TRIAD TABLE. PROCESSED BY
+* OUTPUT TRIAD ROUTINE, SPECIAL OPERATORS
+* ARE -I = DO INITIALIZATION
+* T = DO TERMINATION
+* Q = I/0 ARG TRANSFER
+T0V5 PZE **
+V5 LDA K41 FSRN
+ STA NAMF+1
+ JST XN00 EXAM NEXT CHAR
+ SZE
+ JMP V5A GENERAL READ
+ LDA V5K4
+ JMP V10A CARD READ
+V4 LDA K40 NAWF = F$WN
+ STA NAMF+1
+V5A JST NF00 SET UP REMAINING NAME
+ LDA D
+ STA V5T1
+ JST CH00 INPUT CHARACTER
+ LDA K17 ='250......(
+ JST TS00 (-TEST
+ JST OI00 OUTPUT I0 LINK
+ LDA TC IF TC .NE. ,
+ SUB K134 ='17 (,)
+ SZE G0 10 V5J
+ JMP V5J
+ JST V5X INPUT FORMAT
+V5B JST IP00 ) - INPUT OPERATOR
+ LDA TC
+ SUB CRET TEST FOR TC=C/R
+ SZE
+ JMP V5C N0, G0 TO V5C
+V5B2 LDA K42 YES. NAMF = ND
+ STA NAMF+1
+ JST CN00 CALL NAME
+ LDA V5T1
+ STA D
+ JMP A1 G0 TO C/R TEST
+V5C JST UC00
+V5C5 CRA
+ STA IOF IOF = 0
+V5D JST II00 INPUT ITEM
+ SZE
+ JMP V5E IF (A) NOT 0, GO TO V5E
+ LDA K17
+ JST TS00 (-TEST
+ CRA
+ STA O2 O2 = 0
+ LDA IOF
+ STA O1 01 = IOF
+ LDA V5K1 = '27
+ STA P
+ JST ET00
+ LDA L
+ STA IOF IOF = L
+ JMP V5D GO TO V5D
+V5E JST NC00 NON-CONSTANT TEST
+ LDA IU IF IU NOT ARR
+ SUB K103
+ SZE
+ JMP V5H GO TO V5H
+ LDA TC
+ SUB K17 IF TC NOT -(,
+ SZE
+ JMP V5G GO TO V5G
+ LDA D0
+ STA T0V5 T5 = D0
+ LDA K103
+ TCA
+ JST EX00 EXPRESSION
+ LDA T0V5
+ STA D0 D0 = T5
+V5E5 LDA A
+ STA O2
+ LDA D0 O2 = D0
+ STA O1
+ LDA V5K2 ='32
+ STA P
+ JST ET00 ENTER TRIAD
+V5E7 LDA TC IF TC = COMMA
+ SUB K134 GO T0 V5D
+ SNZ
+ JMP V5D
+ LDA IOF I = IOF
+ STA I
+ SZE IF NOT ZERO,
+ JMP V5F GO TO V5F
+ JST OT00 OUTPUT TRIADS
+ JMP V5B2 GO TO V5B2
+V5F JST IP00 )-INPUT OPERATOR
+ JST STXI
+ LDA DP+1,1
+ STA IOF IOF = O1 (I)
+ JMP V5E7
+V5G JST KT00 K = = WDS/ITEM
+ JMP V5E5 GO TO V5E5
+V5H JST TV00 TAG VARIABLE
+ LDA TC
+ SUB K16X ='16 (=)
+ SZE GO TO V5E5
+ JMP V5E5 ELSE,
+ JST IT00 INTEGER TEST
+ LDA IOF
+ SNZ IF IOF = ZERO OR L
+ JMP V5H7
+ SUB L
+ SZE
+ JMP *+3 ERROR
+V5H7 JST ER00
+ BCI 1,PR PARENTHESES MISSING IN DO STATEMENT
+ JST DP00 DO INPUT
+ LDA IOF
+ STA I
+ JST STXI
+ LDA D
+ STA DP,1 O2(IOF) = D
+ STA O2 O2 = D
+ LDA V5K3 ='30
+ STA P
+ JST ET00 ENTER TRIAD 'T'.
+ JMP V5F
+V5J CRA
+ STA A A = 0
+ JST OA00 OUTPUT ABSOLUTE
+ JMP V5B
+V5T1 PZE 0
+V5K1 OCT 27
+V5K2 OCT 32
+V5K3 OCT 30
+V5K4 BCI 1,R3
+V5K5 BCI 1,W4
+V5X DAC ** INPUT FORMAT
+ JST XN00 EXAM NEXT CHARACTER
+ SZE
+ JMP V5X5 GO TO INPUT ARRAY NAME
+ JST IS00 INPUT STMNT NO.
+V5X2 LRL 32 OUTPUT DAC A
+ JST OB00 OUTPUT 0A
+ JMP* V5X RETURN
+V5X5 JST NA00 INPUT NAME
+ JST AT00 ARRAY TEST
+ JMP V5X2
+* PRINT
+V10 LDA V5K5 PRINTER
+V10A STA NAMF+1
+ JST NF00 SET UP REST 0F NAME
+ JST CN00 CALL NAME
+ JST V5X INPUT FORMAT
+ LDA TC
+ SUB K134
+ SZE SKIP IF COMMA
+ JMP V5B2
+ LDA D
+ STA V5T1
+ JMP V5C5
+*
+*
+* **************************
+* *FORMAT *
+* *INPUT FORMAT STRING *
+* *INPUT NUMERIC FORMAT STR*
+* *NON ZERO TEST STRING *
+* **************************
+T0V2 PZE 0
+T2V2 PZE 0
+V2T0 EQU T0V2
+V2T2 EQU T2V2
+V2 LDA K17
+ JST OK00 OUTPUT RACK
+ CRA
+ STA T0V2 TO = 0
+ LDA LSTP IF LSTOP .NE. 0
+ SZE
+ JMP V2K GO TO V2K
+V2A JST SI00 INPUT FORMAT STRING
+ SZE
+ JMP V2B
+V2A1 LDA TC
+ SUB K12 IF TC NOT MINUS
+ SZE
+ JMP V2F GO TO V2F
+ JST IN00 INPUT NUMERIC FORMAT STRING
+ CRA
+ STA TID TID = 0
+V2B LDA TC IF TC .NE. P
+ SUB K46
+ SZE
+ JMP V2H GO TO V2H
+ JST SI00 INPUT FORMAT STRING
+ SZE
+ JST NZ00 IF (A) .NE. 0
+V2C LDA TC
+ CAS K52 IF TC = D,E,F, OR G
+ NOP
+ JMP *+2
+ JMP V2DA
+ CAS K53
+ JMP V2E5-2
+ NOP
+ JST IN00 INPUT NUMERIC FORMAT STRING
+ JST NZ00 NON-ZERO STRING TEST
+ LDA K10
+ JST TS00 PERIOD TEST
+V2D JST IN00 INPUT NUMERIC FORMAT STRING
+V2DA LDA TC IF TC = )
+ SUB K4
+ SZE
+ JMP V2E
+ JST CH00
+ JST OK00 INPUT CHAR AND OUTPUT PACK
+ LDA T0V2 IF F4 + ( Z (
+ SUB K101 GO TO V2E
+ STA T0V2
+ SPL
+ JMP V2N ELSE,
+ JMP V2DA
+* GO TO C/R TEST
+V2E LDA TC IF TC =,
+ SUB K5
+ SNZ
+ JMP V2A GO TO V2A
+ LDA K9
+ JST TS00 / TEST
+ JMP V2A
+V2E5 JST SI00 INPUT FORMAT STRING
+ SZE IF (A) NOT 0,
+ JMP V2B GO TO V2B
+ LDA DFL IF DFL .NE. ZERO,
+ SZE
+ JMP V2DA GO TO V2DA
+ JMP V2A1
+V2F LDA TC IF TC = H
+ CAS K48
+ JMP *+2
+ JMP V2P GO TO V2P
+V2FB CAS K47
+ JMP *+2
+ JMP V2E5
+ CAS K17 IF TC = (,
+ JMP *+2
+ JMP V2Q GO TO V2Q
+ LDA TC IF TC .NE. A,I, OR L
+ CAS K49 A
+ JMP *+2
+ JMP V2G
+ CAS K50 I
+ JMP *+2
+ JMP V2G
+ SUB K51 L
+ SZE
+ JMP V2C
+V2G JST IN00 INPUT NUMERIC FORMAT STRING
+ JST NZ00 NON-ZERO STRING TEST
+ JMP V2DA
+V2H JST NZ00 NON-ZERO STRING TEST
+ LDA TC
+ SUB K48
+ SZE
+ JMP V2F
+V2J JST HS00 TRANSMIT HOLLERITH STRING
+ JMP V2E5 GO T0 V2E5
+V2K LDA LSTN IF LSTN = 0,
+ SZE
+ JMP *+3
+ JST ER00 ERR0R, NO PATH
+ BCI 1,NF NO REFERENCE T0 FORMAT STATEMENT
+ LDA RPL LIF = RPL
+ STA LIF
+ CRA
+ STA A
+ STA AF
+ AOA
+ STA DF
+ LDA K201 = JMP 0
+ JST OA00 OUTPUT ABS
+ JMP V2A GO T0 V2A
+*
+NZ00 DAC **
+ LDA TID
+ SZE
+ JMP* NZ00
+NZ10 JST ER00
+ BCI 1,NZ NON-ZERO STRING TEST FAILED
+IN00 DAC **
+ JST SI00 (A) = 0 IS ERROR CONDITION
+ SZE
+ JMP* IN00
+ JMP NZ10
+SI00 DAC **
+ CRA
+ STA TID ID = T2 = 0
+SI05 STA V2T2
+ JST CH00 INPUT CHAR
+ JST OK00 OUTPUT PACK
+ LDA TC
+ SUB K60 ASC-2 ZERO
+ CAS K124
+ JMP SI10
+ NOP
+ SPL
+ JMP SI10
+ STA TC
+ LDA TID TID = 10*TID+TC
+ ALS 3
+ ADD TID
+ ADD TID
+ ADD TC
+ STA TID
+ LDA K101 T2 =1
+ JMP SI05
+SI10 LDA V2T2 (A) = ERROR CONDITION OR NOT
+ JMP* SI00
+V2M JST ER00
+ BCI 1,FR FORMAT STATEMENT ERROR
+V2N EQU A1
+V2P LDA K101
+ STA ID ID = 1
+ JMP V2J GO T0 V2J
+V2Q LDA T0V2
+ AOA
+ STA T0V2
+ SUB K103
+ SZE
+ JMP V2A
+ JMP V2M
+K46 OCT 320 0P
+K47 OCT 330 0X
+K48 EQU K14 0H
+K49 OCT 301 0A
+K51 OCT 314 0L
+K52 EQU K11 0D
+K53 OCT 307 0G
+K50 EQU K43 0I
+*
+*
+* *******
+* *STOP *
+* *PAUSE*
+* *******
+* PAUSE AND STOP CENERATE CALLS TO F$HT
+T1W7 PZE 0
+T2W7 PZE 0
+W7 LDA K55
+ STA T1W7
+W7A LDA K74
+ STA NAMF+1 NAMF = F$HT
+ JST NF00 SET-UP REMAINING CHAR 0F NAME
+ JST XN00 EXAMINE NEXT CHAR
+ LDA TC
+ SUB CRET
+ SNZ
+ JMP W7C TC = C/R - NOTING FOLLOWING
+ JST IV00 INPUT INTEGER/VARIA8LE
+ LRL 32
+ LDA K200 OUTPUT LDA
+ JST OB00 OUTPUT OA
+W7C JST CN00 CALL NAME
+ CRA
+ STA DF DF = 0
+ LDA T1W7
+ STA ID
+ JST AI00 ASSIGN INTEGER CONSTANT
+ CRA OUTPUT DAC
+ JST OB00 OUTPUT OA OF ST/PA OR HT
+ LDA T1W7
+ SUB K54
+ SNZ
+ JMP C5 PA-NOT THE CASE
+ LDA RPL
+ STA AF OUTPUT JMP *
+ CRA
+ STA A CAUSE LISTING TO HAVE OCTAL ADDRESS
+ LDA K201
+ JST OR00 OUTPUT RELATWE
+ JMP B6
+W8 LDA K54
+ JMP W7+1
+K74 BCI 1,HT HT
+K54 BCI 1,PA PA
+K55 BCI 1,ST ST
+*
+*
+* - R8 CALL
+* GENERATES CALL DIRECTLY OR USES EXPRESSION TO
+* ANALYZE AN ARGUMENT LIST.
+R8 JST SY00 INPUT SYMBOL
+ LDA IU
+ SUB K101 =1 (SUB)
+ SZE SKIP IF IU=SUBR,
+ JST TG00 TAG SUB PROCRAM
+ LDA TC
+ SUB K17 ='250 ( ( )
+ SZE
+ JMP *+3
+G2B LDA K101 SET A=1 BEFORE EXPRESSION
+ JMP G2A
+ CRA
+ IAB (B)=0
+ LDA OMI2 =JST INSTR,
+ JST OB00 OUTPUT 0A
+ JMP A1 CR TEST
+* **********************
+* *ASSIGNMENT STATEMENT*
+* **********************
+G2 LDA K104
+ JST NP00 FIRST NON-SPEC CHECK
+ JST II00 INPUT ITEM
+ LDA K102 SET A = 2 BEFORE EXPRESSION
+G2A TCA
+ JST EX00
+ JMP A1
+*
+*
+* ********
+* *RETURN*
+* ********
+* OPTIMIZES EXIT CODING FOR FUNCTIONS TO MINIMIZE
+* FETCHES OF THE FUNCTION VALUE.
+R9 LDA SBF A = SBF,
+ STA A IF ZERO, GO TO ERROR
+ SZE
+ JMP *+3
+ JST ER00
+ BCI 1,RT RETURN NOT ALLOWED IN MAIN PROGRAM
+ LDA SFF ELSE, IF SFF = 0,
+ SNZ
+ JMP R9C GO TO R9C
+ CAS K101 IF SFF = 1, GO TO R98
+ JMP *+2
+ JMP R9B
+ STA AF OUTPUT REL JMP TO 1ST RETN
+ LRL 32
+ STA A SET A=0 TO OUTPUT OCTAL ADDR ON LISTING
+ LDA K201
+ JMP R9A
+R9B IAB
+ LDA RPL SFF = RPL
+ STA SFF
+ LDA K56 0UTPUT ITEM (F,A)
+ JST OM00
+R9C LRL 32
+ STA A SET FOR OCTAL ADDHESS IW LISTING
+ STA AF SET RELATIVE ADDRESS TO ZERO
+ LDA K206 JUMP I, 0
+R9A JST OR00 OUTPUT REL
+ JMP B6 EXIT
+K56 OCT 31 P CODE FOR 'F' (FETCH)
+*
+*
+* ********************
+* *STATEMENT FUNCTION*
+* ********************
+* OLD ASSIGN VALUES ARE SAVED IN SFTB AND ARE
+* RESTORED AT COMPLETION.
+G1T0 PZE 0
+G1T1 PZE 0
+G1 LDA K103 (A) = 3
+ JST NP00 FIRST NON-SPEC CHECK
+ JST SY00 INPUT SYMBOL
+ JST LO00 DEFINE LOCATION
+ LDA K103
+ STA I
+ JST GE00 GENERATE SUBPROGRAM ENTRANCE
+ LDA I
+ STA G1T1 T1 = I
+ LDA K16X '=' TEST
+ JST TS00
+ JST II00 INPUT ITEM
+ CRA
+ JST EX00 EXPRESSION
+ LDA G1T1
+ STA I I = T1
+ IRS TCF TCF = TCF+1
+G1A JST STXI
+ LDA SFTB+2,1
+ STA A
+ LDA SFTB+0,1
+ IAB
+ JST STXA SET R TO A
+ IAB
+ STA DP,1
+ JST STXI SET R TO I
+ LDA SFTB+1,1
+ IAB
+ JST STXA SET R TO A
+ IAB
+ STA DP+1,1
+ LDA I
+ SUB K103 I = I-3 = 0
+ STA I
+ SUB K103
+ SZE
+ JMP G1A NO, GO TO G1A
+ LDA T1NP
+ STA A
+ LLL 16
+ LDA OMJ1
+ JST OB00
+ JST TG00 TAG SUBPROGRAM
+ JMP A1 GO TO C/R TEST
+* - W5 END
+* ***************
+* *END PROC6SSOR*
+* ***************
+* FIRST CHECK SUBPROGRAMS FOR CORRECT USAGE, THEN
+* GENERATE MAP AND STRING BACK VARIABLES
+* AND CONSTANTS.
+T1W5 PZE
+W5 LDA BDF IF BLOCK DATA,
+ SZE
+ JMP W5K GO TO W5K
+ LDA SBF IF SBF NOT ZERO
+ STA A INDICATES SUBROUTINES
+ SZE OR FUNCTION,
+ JMP W5M GO TO W5M
+W5B CRA
+ STA A A = J=0
+ JMP W5H
+W5D JST FA00 FETCH ASSIGNS
+ JST STXA
+ LDA NT
+ SZE IF NT=L (CONSTANT)
+ JMP W5O GO TO W5O
+ LDA IU
+ SUB K101 IF IU=1
+ SZE INDICATES VARIABLE,
+ JMP W5T GO TO W5T
+W5F LDA RPL SAVE RPL
+ STA T1W5 RPL=-AF (INHIBIT LISTING)
+ LDA AF
+ SSM
+ STA RPL
+ CRA
+ JST OR00 OUTPUT REL
+ LDA T1W5 RESTORE RPL
+ STA RPL
+W5H LDA A A=A+5
+ ADD K105
+ STA A
+ SUB ABAR IF A=ABAR, (DONE)
+ SUB K105
+ SZE
+ JMP W5D ELSE, GO TO W5D
+W5J JST FS00 FLUSH BUFFER
+ LDA SBF
+ SZE
+ LDA W5Z1
+ ERA W5Z2
+ STA OCI
+ LDA SBF
+ SZE
+ LDA W5Z3
+ STA OCI+1
+ LDA K106
+ STA OCNT
+ JST FS00
+ JMP A051 GO TO INITIALIZE
+W5K LDA RPL IF RPL NOT ZERO,
+ SNZ
+ JMP W5J
+ JST ER00 ERROR-CODE GENERATED
+ BCI 1,BD IN A BLOCK DATA SUBPROGRAM
+W5M JST FA00 FETCH ASSIGNS
+ LDA SFF IF FUNCTION,
+ SZE
+ JMP W5N GO TO W5N
+ JST NU00 NO USE TEST
+ JST STXA
+ LDA DP,1 IF NO ERROR,
+ SSM NT(A)=1
+ STA DP,1
+ JMP W5B GO T0 W5B
+W5N LDA IU
+ SUB K102 IU MUST BE VAR/CON,
+ SNZ ELSE,
+ JMP W5B
+ JST ER00 ERROR-FUNCTION
+ BCI 1,FD NAME NOT DEFINED BY AN ARITHM, STATEMENT
+W5O LDA IU IF IU=VAR/CON
+ SUB K102
+ SZE
+ JMP W5H
+ LDA AT AND AT = STR/REL
+ SUB K103 A "STRING" REQ'D.
+ SZE
+ JMP W5H
+W5P LDA D0 IF D0 IS 4, THE
+ SUB K104 CONSTANT IS COMPLEX,
+ SZE OTHERWISE
+ JMP W5Q GO TO W5Q
+ LDA AF
+ JST OS00 OUTPUT STRING
+ JST STXA
+ LDA DP+2,1 OUTPUT 4 WORDS
+ JST W5X OF CONSTANT
+ LDA DP+3,1
+ JST W5X
+ LDA NT
+ SNZ
+ JMP W5S
+ LDA A INCREMENT A
+ ADD K105
+ STA A
+ JST STXA
+ JMP W5S
+W5Q LDA AF
+ JST OS00 OUTPUT STRING
+ JST STXA
+ LDA D0 IF D0=1,
+ SUB K101 INDICATES INTEGER,
+ SNZ
+ JMP W5R GO TO W5R
+W5S LDA DP+2,1 OUTPUT TWO WORDS
+ JST W5X FLOATING POINT CONSTANT
+ LDA DP+3,1
+ JST W5X
+ LDA D0 IF DOUBLE PRECISION,
+ SUB K103
+ SZE
+ JMP W5H
+W5R LDA DP+4,1 OUTPUT THE 3RD WORD
+ JST W5X
+ JMP W5H GO TO W5H
+W5T LDA AT
+ CAS K103
+ JMP W5F STRONG VARIABLE (IU = NON 0)
+ JMP W5T5
+ CAS K102 TEST FOR STG ABS ADDRESS
+ OCT 17400
+ JMP *+2
+ JMP W5F NO
+ LDA DP+4,1 TEST FOR PREFIX G
+ ANA *-4
+ SUB *-5
+ SZE
+ JMP W5F STRONG VARIABLE (IU = NON 0)
+W5T5 LDA IU
+ SZE
+ JMP W5P
+ JST ER00
+ BCI 1,US
+W5X DAC **
+ LRL 16
+ STA DF
+ IAB
+ JST OA00 OUTPUT ABS
+ JST STXA REST "A"
+ JMP* W5X EXIT
+W5Z1 EQU K100 000377
+W5Z2 EQU K122 040000
+W5Z3 EQU K116 177400
+*
+*
+*
+*
+*
+* ************************
+* *INPUT CHAR/OUTPUT PACK*
+* ************************
+PO00 DAC **
+ JST CH00 INPUT CHAR
+ JST OK00 OUTPUT PACK
+ JMP* PO00 RETURN
+* ************************
+* *TRANS HOLLERITH STRING*
+* ************************
+* FORM HOLLERITH STRING, CHARACTER COUNT IN ID 0N
+* ENTRY. C/R WILL ALSO TERMINATE STRING.
+HS00 DAC **
+HS10 JST IC00 INPUT 1 CHARACTER
+ CAS CRET CHECK FOR CHAR = C/R
+ JMP *+2
+ JMP HS15 HOLLERITH STRING EXTENDS PAST END 0F CARD
+ JST OK00 OUTPUT PACK THE CHARACTER
+ LDA ID
+ SUB K101 REDUCE CHARACTER COUNT BY 1
+ STA ID
+ SZE
+ JMP HS10 INPUT MORE CHARACTERS
+ JMP* HS00
+HS15 JST ER00
+ BCI 1,HS HOLLERITH STRING EXTENDS OVER STATEMENT
+*
+*
+* **********
+* *DO INPUT*
+* **********
+* SET UP DO TABLE ENTRIES.
+DP00 DAC **
+ LDA D D = D+5
+ ADD K105 IFLG = NON-ZERO
+ STA IFLG
+ STA D
+ ADD DO I = D0+D
+ STA I
+ JST STXI
+ LDA A DP (1-4) = (B)
+ STA DP-2,1 DP (1-2) = A
+ IAB
+ STA DP-4,1
+ JST IV00 INPUT INT VAR/CON
+ LDA K134 = ,
+ JST TS00 COMMA TEST
+ JST STXI
+ LDA A
+ STA DP,1 DP(I) = INITIAL VALUE POINTER
+ JST IV00 INPUT INT VAR/CON
+ JST STXI
+ LDA A
+ STA DP-1,1 DP (I-1) = A - FINAL VALUE POINTER
+ LDA TC
+ SUB K134 = ,
+ SZE IF THIRD TERM
+ JMP DP20
+ JST IV00 READ AND ASSIGN,
+DP10 JST STXI
+ LDA A
+ STA DP-3,1 DP(I-3) = INCREMENT POINTER
+ CRA
+ STA IFLG CLEAR IFLAG
+ JMP* DP00 EXIT
+DP20 LDA K101
+ STA ID THIRD TERM = 1
+ JST AI00 ASSIGN CONSTANT
+ JMP DP10
+* ***************
+* *DO INITIALIZE*
+* ***************
+* GENERATE DO INITIALIZATION CODE.
+DS00 DAC **
+ JST STXI ESTABLISH I
+ LDA DP,1 A = DP (I)
+ STA A
+ LDA K200
+ JST DS20 LOAD - LDA INITIAL VALUE
+ LDA DP-2,1
+ STA A A = DP (I-2)
+ LDA RPL
+ STA DP,1 SET RETURN ADDRESS INTO DP(I)
+ LDA K202
+ JST DS20 STORE - STA VARIABLE NAME
+ JMP* DS00
+* OUTPUT OA SUBROUTINE
+DS20 DAC **
+ IAB
+ LLL 16 SET B = 0
+ JST OB00 OUTPUT OA
+ JST STXI RESTORE I
+ JMP* DS20 RETURN
+*
+DS90 PZE 0
+*
+* ****************
+* *DO TERMINATION*
+* ****************
+* GENERATE DO TERMINATION CODE.
+DQ00 DAC **
+ JST STXI
+ LDA DP-2,1
+ STA A
+ LDA K200
+ JST DS20 OUTPUT LDA VARIABLE NAME
+ LDA DP-3,1
+ STA A
+ LDA K203
+ JST DS20 OUTPUT ADD INCREMENT
+ LDA DP-1,1
+ STA A
+ LDA OMK9
+ JST DS20 OUTPUT CAS FINAL VALUE
+ CRA
+ STA A
+ LDA RPL
+ ADD K103
+ STA AF
+ LDA DP,1
+ STA DS90
+ LDA OMI5 JUMP *+3
+ JST OR00 OUTPUT REL
+ LDA DS90
+ STA AF
+ LDA OMI5 JMP RPL (SAVED) - POINTS TO 'STA' INST.
+ JST OR00 OUTPUT REL
+ LDA OMI5 OUTPUT JMP RPL (SAVED)
+ JST OR00 OUTPUT REL
+ JMP* DQ00
+* ************
+* *EXPRESSION*
+* ************
+* THE RESULTANT OUTPUT IS A BUILT UP AOIN
+* TABLE THAT IS FURTHER PROCESSED BY SCAN.
+T0EX PZE 0
+EXT0 EQU T0EX
+T1EX PZE 0
+T2EX PZE 0
+T3EX PZE 0
+T5EX PZE 0
+T6EX PZE 0
+EXT7 PZE 0
+T9EX PZE 0
+EX00 DAC **
+ STA F F = (A)
+ LDA A SAVE POINTER TO FIRST VARIABLE
+ STA TRFA FOR LATER POSSIBLE TRACING
+ LDA D I = D+D0+10
+ ADD DO
+ ADD K125 =8
+ STA I
+ JST EX99 DATA POOL CHECK
+ JST STXI
+ CRA
+ STA EXT0 T0 = 0
+ STA B B = 0
+ STA EXT7 T7 = 0
+ ADD EX92+12
+ LGL 9 O(1-2) = '='
+ STA DP-1,1 0 (I) = 0
+ CMA
+ STA IFLG IFLM NOT 0
+ LDA L0
+ STA DP-2,1 O(I-2) = L0
+EX10 JST STXI
+ CRA
+ STA T1EX T1 = 0
+ STA DP,1 AOIN(I) = T(1) = 0
+ STA DP+1,1
+ LDA IM IF IM NOT ZERO,
+ SZE
+ JMP EX50 GO TO EX50
+ LDA K106
+ TCA
+ STA 0
+* PERFORM TABLE SEARCH
+EX11 LDA TC GO TO ROUTINE ACCORDING
+ SUB EX90+6,1 TO TC.
+ SNZ IF NO MATCH, ERROR
+ JMP EXI1
+ IRS XR
+ JMP EX11
+ JST STXI
+ LDA LIBF SPECIAL LIBRARY FLAG
+ SZE
+ JMP EX39
+ JMP EX95 ERROR CONDITION
+EXI1 LDA EX91+6,1
+ STA 0
+ JMP 0,1 PROCESS LEADING OPERATOR
+* SPECIAL OPERATOR FLAG SET WHEN COMPILING THE FORTRAN
+* LIBRARY IN WHICH CASE THE OPERATIONS ( A= ) AND
+* ( =A ) ARE REQUIRED, THIS LOGIC WILL ALLOW THESE
+* TO BE PROCESSED WITHOUT GIVING AN ERROR MESSAGE IF THE
+* SPECIAL LIBRARY FLAG, (LIBF) IS SET TO NON-ZERO,
+*
+EX12 LDA B TC = (
+ ADD K109 B = B+16
+ STA B SXF = NON-ZERO
+ STA SXF
+EX14 JST II00 INPUT ITEM
+ JST STXI
+ JMP EX10 GO TO EX10
+EX16 JST STXI TC = *
+ LDA TC
+ LGL 9 OI (I-2) = *, B+13
+ ADD B
+ ADD K129
+ ERA DP-1,1
+ SSP
+ SNZ
+ JMP *+3
+ JST ER00 NO, CONSTR ERROR
+ BCI 1,PW * NOT PRECEDED BY ANOTHER *
+ LDA K109 (E = '20)
+ LGL 9
+ IMA DP-1,1
+ ANA K118 ='777
+ ADD K101
+ ERA DP-1,1 CHAJNE * TO **
+ STA DP-1,1
+ JMP EX14 GO TO EX14
+EX18 LDA K102 =2
+ STA TC SET TC TO -
+ LDA K125 =8
+ STA T1EX T1 = 8
+ JST STXI
+ LDA DP-1,1
+ ANA K118
+ SUB B 8 .GT. I (I-2) -B
+ SUB T1EX
+ SPL
+ JMP *+3
+EX19 JST ER00 NO, ERROR
+ BCI 1,NT LOGICAL .NOT. NOT A UNARY OPERATOR
+EX20 LDA T0EX YES
+ SZE T (0) = 0
+ JMP EX34
+EX22 LDA B YES,
+ ADD F B + + (5) .GT. 0
+ SPL NO, ERROR
+ JMP EX96
+EX24 JST STXI
+ LDA TC
+ LGL 9
+ ADD T1EX
+ ADD B
+ STA DP+1,1 OI(I) = TC , T1+B
+ JST EX99 DATA POOL CHECK
+ JMP EX14
+EX26 JST STXI
+ LDA DP-1,1
+ ANA K118 IF I (I-2) .LT. B
+ CAS B
+ JMP EX97 ERROR-----MULTIPLE + OR - SIGNS
+ NOP
+EX30 LDA K131 SET INDEX TO
+ STA 0 SEARCH OPERATOR TABLE FOR TRAILING
+EX31 LDA EX92+14,1 OPERATOR AFTER HAVING ENCOUNTERED AN
+ SUB TC ITEM 0R A NEGATE,
+ SZE
+ JMP EX32
+ LDA EX93+14,1
+ STA *+3
+ JST STXI
+ JMP* *+1
+ DAC **
+EX32 IRS XR CONTROL OPERATOR LOOP
+ JMP EX31 CONTINUE
+EX34 LDA B IF B = 0
+ SUB EXT7
+ SZE
+ JMP EX40 NO, GO TO EX40
+ LDA T0EX IF T (0) = 0
+ SZE
+ JMP EX38 NO, GO TO EX38
+EX35 CRA
+ STA IFLG IFLG = 0
+ LDA F
+ AOA
+ SMI F . GE. -1
+ JMP EX36 YES
+ JMP* EX00 RETURN - NO
+EX36 JST CA00 SCAN
+ JST OT00 OUTPUT TRIADS
+ JMP* EX00 RETURN
+EX38 JST STXI
+ LDA B
+ SUB K109
+ STA B
+ LDA K103
+ STA MFL
+ LDA T0EX
+ LGL 9 O (I) = T (0)
+ ADD B I (I) = B+9
+ ADD K124 I = I+2
+ STA DP+1,1
+ JST EX99 DATA POOL CHECK
+ CRA
+ STA T0EX T0 = 0
+ STA EXT7 T7 = 0
+EX39 LDA L0
+ STA A A = L0
+ STA IM IM NOT EQ 0
+ JMP EX10
+EX40 LDA TC TC 0 ,
+ CAS K5 ='254 (,) IN BCD MODE
+ JMP *+2
+ JMP EX41
+ SUB K134 =17
+ SZE
+ JMP EX44 NO, GO TO EX44
+EX41 LDA I
+EX42 SUB K102
+ STA XR B VS. I (J)
+ LDA DP+1,1
+ ANA K118
+ CAS B
+ JMP *+3
+ JMP EX24 EQUAL, GO TO EX24
+ JMP* EX00 LESS, RETURN
+ LDA XR GREATER, REPEAT LOOP
+ JMP EX42
+EX44 JST IP00 ) - INPUT OPERATOR
+ JMP EX30 GO TO EX30
+EX46 LDA* A
+ STA T6EX IF O1(O1(A)) = L(0)
+ LDA* T6EX
+ CAS L0
+ JMP *+2
+ JMP EX34 GO TO EX34
+ STA O2 O2 = L0
+EX48 JST ET00 ENTER TRIAD
+ JMP EX34
+EX50 JST STXI
+ LDA A A(I) = A
+ STA DP,1
+ LDA IU IU = SUB OR ARR
+ SLN
+ JMP EX30 NO, GO TO EX30
+ LDA TC
+ SUB K17 TC = (
+ SZE
+ JMP EX76 NO, GO TO EX76
+ LDA B YES, B = B+16
+ ADD K109
+ STA B
+ LDA IU IU = ARR
+ SUB K103
+ SZE
+ JMP EX75 NO, GO TO EX75
+ CRA
+ STA DP,1 A(I) = 0
+ STA X4 X4 = 0
+ STA T3EX T3 = 0
+ STA K T5 = A
+ LDA D0
+ STA T9EX T9 = D0
+ LDA A
+ STA T5EX T5 = A
+ LDA AT
+ SUB K105 AT = DUM
+ SZE
+ JMP EX74 NO, GO TO EX74
+ CRA
+ STA T2EX YES, T (0) = 0
+ JST EX99 DATA POOL CHECK
+ JST STXI
+ LDA A
+ STA DP,1 A(I) = A
+ LDA K132 OI (I) = A, 11
+ LGL 9
+ ADD K124
+ STA DP+1,1 I=9
+EX54 LDA D0 IF D0 = 1, GO TO EX56
+ SUB K101
+ SNZ
+ JMP EX56
+ JST EX99 DATA POOL CHECK
+ JMP *+2
+EX55 IRS K K = K+1
+ LDA K
+ STA XR
+ LDA X,1
+ STA T6EX T6 = X (K)
+ JST STXI
+ LDA T6EX
+ STA DP,1 O(I) = *
+ LDA K103 I (I) = T3+13
+ LGL 9 T3 = T3+16
+ ADD T3EX A (A) = T6
+ ADD K129 =13
+ STA DP+1,1
+ ANA K118
+ ADD K103
+ STA T3EX T3 = A(A)
+EX56 JST IV00 INPUT INTEGER VARIABLE
+ JST EX99 DATA POOL CHECK
+ JST STXI
+ LDA A A(I) = A
+ STA DP,1
+ LDA NT
+ SZE
+ JMP EX68 CONSTANT ENCOUNTERED
+ JST UC00 UNINPUT COLUMN
+ JST DN00 INPUT DO NOT ASSIGN
+ SNZ
+ JMP EX57 IM = 0
+ SUB K101
+ SNZ
+ JMP EX57 IM * INTEGEH
+ JST ER00
+ BCI 1,SU SUBSCRIPT INCREMENTER NOT A CONSTANT
+EX57 JST STXI
+ LDA K101
+ LGL 9
+ ADD T3EX
+ ADD K127
+ STA DP+1,1 O(1) = +, I(I) = T3+11
+ JST EX99 DATA POOL CHECK
+EX58 LDA T9EX
+ STA D0 RESET D(0)
+ LDA ID SUBSCRIPT SIZE
+ SUB K101 ID = ID-1
+ STA ID
+ SNZ IF ZERO, GO TO EX60
+ JMP EX60
+ LDA K
+ STA 0
+ LDA D0,1 D(K) = 0
+ SNZ
+ JMP EX67 YES - (DUMMY DIMENSION)
+ IAB
+ LDA ID
+ JST IM00
+ ADD T2EX
+ STA T2EX T2 = T2+ID*D(K)
+EX60 LDA T9EX
+ STA D0 RESET D(0)
+ LDA K
+ STA 0
+ LDA X+2,1 X(K+2) = 0
+ SNZ
+ JMP EX62 YES - FINISHED
+ LDA K134 =17
+ JST TS00 COMMA TEST
+ LDA D0+1,1
+ IAB
+ LDA D0,1
+ JST IM00
+ STA D0+1,1 D(K+1) = D(K+1)*D(K)
+ JMP EX55
+EX62 JST STXI
+ LDA DP-1,1 DOES O(--2) = *
+ SSP
+ LGR 9
+ CAS K103
+ JMP *+2
+ JMP EX66 YES.
+ SNZ NO.
+ JMP EX64 O(I-2) = 0 - YES
+ CAS K132 DOES O(I-2) = A
+ JMP EX63
+ JMP *+2 YES
+ JMP EX63
+ LDA T2EX IS T2 = 0
+ SNZ
+ JMP EX65 YES (DUMMY ARRAY (1,1,1))
+EX63 LDA K101
+ STA DP-1,1 01(I-2) = 1
+ LDA T2EX A(I) = T2
+ STA DP,1
+ LDA K137 0='X' ('24), I=2
+ STA DP+1,1
+ CRA
+ STA DP+3,1 O1(1+2) = 0
+ LDA T5EX
+ STA DP+2,1 A(I+2) = T5
+ JST EX99 DATA POOL CHECK
+ JST CA00 SCAN
+ LDA O1
+ STA A A = O1
+ JST STXA
+ LDA DP+2,1 S(A) = NON-ZERO
+ SSM
+ STA DP+2,1 S(A) = 1
+ JMP EX44
+EX64 LDA L0
+ STA DP,1 A(I) = L0
+ JST EX99 DATA POOL CHECK
+ JST STXI
+ JMP EX63
+EX65 LDA I
+ SUB K104
+ STA I I = I-4
+ LDA T5EX
+ STA DP-4,1 A (I) = T5
+ JMP EX44
+EX66 LDA I
+ SUB K102
+ STA I I = I-2
+ JMP EX62 ASSIGN INT CONSTANT
+EX67 JST AI00
+ JST STXI SET XR TO I
+ LDA A
+ STA DP,1 A(I) = A
+ LDA K101
+ LGL 9
+ ADD T3EX
+ ADD K127
+ STA DP+1,1 OI(I) = +, T3+11
+ JST EX99 DATA POOL CHECK
+ JMP EX60
+EX68 LDA TC IS TC
+ CAS K103 = *
+ JMP *+2
+ JMP *+2
+ JMP EX58 NO
+ LGL 9
+ ADD T3EX
+ ADD K129 =13
+ STA DP+1,1 OI(I) = *, T3+13
+ JST IR00 INPUT INTEGER VAR/CON
+ JMP EX56+1
+EX69 CRA SET LISTING FOR OCTAL ADDR
+ STA A
+ LDA OMI5 JMP 0 INSTRUCTION
+ STA DF SET LISTING FOR SYMBOLIC A INSTR,
+ JST OA00 OUTPUT ABSOLUTE
+ LDA RPL
+ STA O2
+ LDA K138
+ STA P P = H
+ JST ET00 ENTER TRIAD
+ JST HS00 TRANSFER HOLLERITH STRING
+ LDA CRET (A) = C/R
+ JST OK00 OUTPUT PACK
+ CRA
+ STA 0 SET LISTING FOR OCTAL ADDR.
+ STA A SET LISTING FOR OCTAL ADDR.
+ LDA O2
+ SUB K101
+ JST OS00 OUTPUT STRING RPL-1
+ JST CH00 INPUT CHARACTER
+ JST FN00
+ JST STXI RESET INDEX TO I
+ LDA L
+ STA DP,1 A(I) = L
+ JMP EX76
+EX74 LDA AF
+ STA T2EX T2 = AF
+ JMP EX54 GO TO EX54
+EX75 LDA K134
+ STA TC TC = ,
+ JMP EX24 GO TO EX24
+EX76 LDA DP-1,1
+ LGR 9
+ ANA K133
+ SUB K134
+ SNZ
+ JMP EX34 WITHIN AN ARGUMENT LIST
+ JST ER00
+ BCI 1,AG SUBROUTINE OR ARRAY NAME NOT IN ARG. LIST
+EX78 LDA K127
+EX79 STA T1EX T (1) = 11
+ JMP EX22
+EX80 LDA K129 T (1) = 13
+ JMP EX79
+EX81 LDA K106
+ STA T1EX T (1) = 6
+ JMP EX20
+EX82 LDA K104 T (1) = 4
+ JMP EX81+1
+EX83 LDA T0EX T (0) =0
+ SZE
+ JMP EX84
+ LDA TC YES,
+ STA T0EX T (0) = TC
+ LDA EX92+1
+ STA TC TC = -
+ LDA B
+ ADD K109
+ STA B
+ STA EXT7
+ LDA *+2
+ JMP EX79
+ DEC -5
+EX84 JST ER00 ERROR
+ BCI 1,RL MORE THAN 1 RELATIONAL OPERATOR
+EX85 LDA F
+ ADD K102 T (5) = T (5) +2 = B = 0
+ STA F
+ ADD B
+ SNZ
+ JMP EX24
+ JST ER00 ERROR
+ BCI 1,EQ MULTIPLE ='S, OR EXPRESSIUN TO LEFT OF =
+EX90 OCT 250 (
+ OCT 3 *
+ OCT 5 NOT
+ OCT 1 +
+ OCT 2 -
+ OCT 310 H
+EX91 DAC EX12 (
+ DAC EX16 *
+ DAC EX18 NOT
+ DAC EX26 +
+ DAC EX26 -
+ DAC EX69 H
+EX92 OCT 1 +
+ OCT 2 -
+ OCT 3 *
+ OCT 4 /
+ OCT 6 AND
+ OCT 7 OR
+ OCT 15 NE
+ OCT 12 EQ
+ OCT 14 GT
+ OCT 10 LT
+ OCT 13 GE
+ OCT 11 LE
+ OCT 16 =
+ OCT 16 = (ERROR)
+EX93 DAC EX78 +
+ DAC EX78
+ DAC EX80 *
+ DAC EX80 /
+ DAC EX81 AND
+ DAC EX82 OR
+ DAC EX83 NE
+ DAC EX83 EQ
+ DAC EX83 GT
+ DAC EX83 LT
+ DAC EX83 GE
+ DAC EX83 LE
+ DAC EX85 =
+ DAC EX34 NONE OF THESE
+EX95 JST ER00
+ BCI 1,OP MURE THAN ONE OPERATOR IN A ROW
+EX96 JST ER00 ERROR
+ BCI 1,PA OPERATOR MUST BE WITHIN PARENTHESES
+EX97 JST ER00 ERROR
+ BCI 1,UO MULTIPLE + OR - SIGNS NOT AS UNARY OPS
+* BUMP THE I COUNT BY TWO AND CHECK FOR DATA OVERFLOW
+EX99 DAC **
+ IRS I
+ IRS I
+ LDA I
+ AOA
+ CAS L
+ NOP
+ JMP AS50
+ JMP* EX99
+K133 OCT 77
+K130 DEC -6
+K141 DEC 33
+K PZE 0
+KM8 DEC -8
+*
+*
+*
+*
+* ******************
+* *SCAN *
+* *TRIAD SEARCH *
+* *TEMP STORE CHECK*
+* ******************
+T0CA PZE 0
+T1CA PZE 0
+T2CA PZE 0
+T9CA PZE 0
+* THE AOIN TABLE IS PROCESSED FROM THE BOTTOM
+* UP AND ENTRIES ARE FORMED FOR INCLUSION
+* IN THE TRIAD TABLE, LEVELS ARE USED
+* TO CONTROL THE ORDER OF ENTRY INTO
+* THE TRIADS. SIGN CONTROL IS ALSO
+* ACCOMPLISHED IN THIS ROUTINE.
+CA00 DAC **
+ LDA L0
+ STA ACCP INDICATE EMPTY ACCUM
+CA04 JST STXI ESTABLISH I
+ STA T1CA T1 = I
+ LDA DP-1,1
+ ANA K118 IF I (I-2) = 0,
+* OR .LT. I (I)
+ STA T9CA
+ LDA DP+1,1
+ ANA K118
+ CAS T9CA
+ JMP CA08 GO TO CA08
+ NOP
+ LDA I
+ SUB K102
+ STA I I = I-2
+ STA 0
+CA08 LDA DP+3,1
+ ERA DP+1,1
+ STA T0CA
+ LDA DP+1,1
+ ANA K118
+ STA T2CA
+ LDA DP+1,1
+ SSP
+ LGR 9 P = O (I)
+ STA P
+ CAS K102 IF P IS NOT * OR /, GO TO CCA10
+ CAS K105
+ JMP CA10
+ JMP CA10
+ JMP CA14 GO T0 CA14
+CA10 LDA T0CA
+ SMI
+ JMP CA13
+ LDA KM8
+ IMA XR
+ IAB
+ LDA P
+ CAS CA90+8,1
+ JMP *+2
+ JMP *+4
+ IRS XR
+ JMP *-4
+ JMP CA45
+ LDA CA91+8,1
+ STA P
+ IAB
+ STA XR
+CA13 LDA K130
+ IMA XR
+ IAB
+ LDA P
+ CAS CA90+8,1
+ JMP *+2
+ JMP CA50
+ IRS XR
+ JMP *-4
+ IAB
+ STA XR
+ IAB
+ LDA DP+1,1
+ JMP *+2
+CA50 CRA
+ STA T0CA
+ IAB
+ STA XR
+CA14 LDA DP,1
+ STA O1 O1=A(I)
+ LDA DP+2,1
+ STA O2 O2 = A (I+2)
+ LDA T2CA
+ SNZ
+ JMP CA37 IF ZER0, GO TO CA37
+ LDA DP-1,1
+ SSP
+ LGR 9
+ STA T1CA
+ LDA DP-1,1
+ ANA K118 IF T2 .GT. I (I-2)
+ SUB T2CA
+ SPL
+ JMP CA18
+ SZE
+ JMP CA04
+ LDA O2
+ SUB ACCP
+ SZE
+ JMP CA04
+ LDA P
+ SUB K103
+ SMI
+ JMP CA39
+ LDA T1CA
+ SUB P
+ SZE
+ LDA K101 GO TO
+ ADD K101 P = - OR +
+ STA P
+CA18 LDA I
+ STA 0 J=I
+CA20 LDA DP+2,1
+ STA DP,1 AOIN(J) = AOIN(J+2)
+ LDA DP+3,1
+ STA DP+1,1
+ SSP
+ SNZ
+ JMP CA22
+ IRS XR J = J+2
+ IRS XR
+ JMP CA20
+CA22 JST STXI
+ LDA DP+1,1
+ SSP IF O (I) = ,
+ LGR 9
+ CAS P
+ JMP CA24
+ CAS K134
+ JMP CA24
+ JMP CA30 GO TO CA30
+CA24 JST ST00 TRIAD SEARCH
+ LDA P
+ CAS K132 IF P = +,*, AND, OR
+ JMP CA28
+ JMP CA37 GO TO CA37
+ CAS K107
+ JMP CA28 ELSE, GO TO CA26
+ JMP CA37
+ CAS K106
+ JMP CA28
+ JMP CA37
+ CAS K103
+ JMP CA28
+ JMP CA37
+ CAS K101
+ JMP CA26
+*
+*
+*
+ JMP CA37
+CA26 CAS K102
+ JMP *+2 IF P = -
+ JMP CA35 GO TO
+CA28 LDA O1
+ JST TC00 TEMP STORE CHECK
+CA30 LDA O2
+ JST TC00 TEMP STORE CHECK
+CA31 JST ET00 ENTER TRIAD
+CA32 JST STXI
+ LDA O1
+ STA DP,1
+ LDA DP+1,1
+ LRL 15
+ LDA T0CA
+ LGR 15
+ LLL 15
+ STA DP+1,1
+ LDA T2CA IF T2 NOT ZERO,
+ SZE
+ JMP CA04 GO TU CA04
+ JMP* CA00 ELSE, RETURN
+CA35 LDA T0CA
+ ERA ='100000
+ STA T0CA
+CA37 LDA O2
+ IMA O1 O1 * = O2
+ STA O2
+ SNZ IF 02 = 0,
+ JMP CA32 GO TO CA32
+*
+*
+*
+ JST ST00 TRIAD SEARCH
+ LDA T0CA
+ SMI
+ JMP CA28 GO TO CA28
+ LDA P
+ JMP CA26 ELSE, GO TO CA26
+CA39 SUB K128
+ SNZ IF P = , OR
+ JMP CA04
+ LDA T1CA
+ SUB K104
+ SZE ELSE,
+ JMP CA18 GO TO CA18
+ JMP CA04
+CA45 LDA T1CA
+ STA I I = T1
+ STA T2CA
+ CRA
+ STA T0CA * * * * * * * * * * *
+ STA O2 O2 = C = 0
+ SUB K110 P = C
+ STA P
+ JMP CA24 GO TO CA24
+* IF THE CURRENT TRIAD (IN WORKING STORAGE) MATCHES
+* ANY TRIAD TABLE ENTRY, EXIT WITH THE
+* POINTER VALUE OF THE MATCHING ENTRY
+* (THIS ACCOMPLISHES ELIMINATION OF REDUNDANT
+* SUBEXPRESSION CALCULATIONS.
+ST00 DAC ** TRIAD SEARCH
+ LDA F
+ ADD K103
+ SZE
+ JMP ST10 GO TO ST10
+ST05 LDA P ELSE, IF P = X
+ SUB K139
+ SNZ
+ JMP CA31 GO TO CA31
+ LDA O1 ELSE, IF 01=ACCP
+ SUB ACCP
+ SNZ
+ JMP CA30 GO TO CA30
+ JMP* ST00 ELSE, RETURN
+ST10 LDA L0
+ STA XR
+ST20 LDA XR
+ SUB K103
+ STA XR J = J-2
+ SUB L IF J .LT. L
+ SPL
+ JMP ST05 GO TO ST05
+ LDA O2
+ SUB DP,1 IF O1/P/O2 .NE. O1/P/O2(J)
+ SZE
+ JMP ST20 GO TO ST20
+ LDA DP+2,1
+ SSP EXTRACT OFF STORE BIT
+ SUB P
+ SZE
+ JMP ST20
+ LDA O1
+ SUB DP+1,1
+ SZE
+ JMP ST20 O1 = J
+ LDA XR
+ STA O1
+ JST STXI ESTABLISH I
+ JMP CA32 GO T0 CA32
+* IF J IS A REFERENCE TO A TRIAD , THE TEMP
+* STORE BIT 0F THE REFERENCED TRIAD IS SET.)
+TC00 DAC ** TEMP STORE CHECK
+ STA XR
+ LDA ABAR
+ SUB XR
+ SMI IS J .GR. ABAR
+ JMP* TC00 NO.
+ LDA DP+2,1 YES.
+ SSM
+ STA DP+2,1 S(J) = 1
+ JMP* TC00
+CA90 OCT 1,2,11,10,13,14,12,15
+CA91 OCT 2,1,13,14,11,10,12,15
+*
+*
+* *************
+* *ENTER TRIAD*
+* *************
+* STORE CURRENT TRIAD INTO THE NEXT TRIAD ENTRY
+* LOCATION.
+ET00 DAC **
+ JST SAV
+ LDA L
+ SUB K103 =3
+ STA L L=L-3
+ STA ACCP SET ACCUM PTR TO LAST TRIAD ENTRY
+ STA 0 J=L
+ LDA P
+ STA DP+2,1 P(J) = P
+ LDA O1
+ STA DP+1,1 O1(J) = O1
+ LDA O2
+ STA DP,1 O2(J) = O2
+ LDA 0
+ STA O1 O1=J
+ JST RST
+ JMP* ET00
+ACCP DAC ** ACCUM POINTER
+*
+*
+SFTB BSS 36 SUBFUNCTION TABLE
+* **************************
+* *GENERATE SUBPRO ENTRANCE*
+* **************************
+* OUTPUT SUBPROGRAM ENTRANCE CODE , INCLUDING THE
+* CALL TO ARGUMENT ADDRESS TRANSFER.
+T0GE PZE 0
+GE00 DAC **
+ CRA
+ STA T0GE
+ LDA K17 ( TEST
+ JST TS00
+GE10 JST NA00 INPUT NAME
+ LDA I IFF I=0,
+ SNZ
+ JMP GE20 GO TO GE20
+ CAS K141
+ NOP
+ JMP GE30 MAKE ENTRY IN SFTB TABLE
+ ADD K103
+ STA I IF FULL, GO TO GE30
+ JST STXA SET XR TO A
+ LDA DP,1
+ IAB
+ JST STXI ESTABLISH I
+ IAB
+ STA SFTB,1
+ JST STXA SET XR TO A
+ LDA DP+1,1
+ IAB
+ JST STXI SET XR TO I
+ IAB
+ STA SFTB+1,1
+ LDA A
+ STA SFTB+2,1
+ JST STXA SET XR TO A
+ CRA
+ STA DP+1,1 CLEAR OLD USACE
+GE20 LDA K105
+ IAB
+ LDA RPL
+ ADD T0GE
+ ADD K103 (B) = DUM
+ JST AF00 DEFINE AFT (A=RPL+T0+3)
+ IRS T0GE T0 = T0+1
+ LDA K134
+ SUB TC IF TC = ,
+ SNZ
+ JMP GE10 GO TO GE10
+ JST IP00 INPUT OPERATOR
+ CRA
+ STA DF
+ JST OA00 OUTPUT ABS (0)
+ LDA T0GE
+ STA ID ID = T0
+ LDA K69
+ STA NAMF+1 NAMF = AT
+ JST NF00 FILL IN REMAINING NAME
+ JST OL00 OUTPUT OBJECT LINK
+ LDA T0GE
+ TCA
+ STA T0GE
+ CRA
+ JST OA00 OUTPUT NUMBER OF ARGS
+ IRS T0GE OUTPUT SPACE FOR ARG. ADDR.
+ JMP *-3
+ JMP* GE00 RETURN
+GE30 JST ER00 CONSTR, ERROR
+ BCI 1,AE
+K69 BCI 1,AT AT
+*
+* ****************
+* *EXCHANGE LINKS*
+* ****************
+* CL SUBA IS INTERCHANGED WITH CL SUBF
+EL00 DAC **
+ JST STXA
+ LDA DP,1
+ STA EL90 CL (F) == CL (A)
+ LDA F
+ STA 0
+ JST EL40
+ JST STXA
+ JST EL40
+ JMP* EL00
+EL40 DAC **
+ LDA DP,1
+ IMA EL90
+ ANA K118
+ IMA DP,1
+ ANA K119
+ ADD DP,1
+ STA DP,1
+ JMP* EL40
+EL90 PZE 0
+*
+*
+* *****************
+* *NON COMMON TEST*
+* *****************
+NM00 DAC ** NON-COMMON TEST
+ LDA AT
+ SUB K104
+ SZE
+ JMP* NM00
+ JST ER00
+ BCI 1,CR ILLEGAL COMMON REFERENCE
+*
+*
+* **************************
+* *NON DUMMY OR SUBPRO TEST*
+* **************************
+ND00 DAC **
+ LDA AT TEST
+ SUB K105
+ SZE
+ JMP ND10
+ JST ER00
+ BCI 1,DA ILLEGAL USE OF A DUMMY ARGUMENT
+ JMP* ND00
+ND10 JST NS00
+ JMP* ND00
+*
+*
+* *****************
+* *INPUT SUBSCRIPT*
+* *****************
+SCT0 PZE 0
+SC00 DAC **
+ STA SCT0 T0 = (A)
+ CRA
+ STA NS
+ STA S2 NS = S2 = S3 = 0
+ STA S3
+ LDA K17 (-TEST
+ JST TS00
+SC10 LDA EBAR
+ SMI
+ JMP SC15 EBAR .GR. 0
+ JST XN00 EXAMINE NEXT CHAR,
+ SZE
+ JMP SC70 IF (A) NON ZERO,
+SC15 JST IG00 GO TO SC70
+ LDA SCT0 INPUT INTEGER
+ SZE
+ SPL
+ JMP SC60
+ LDA ID
+ SUB K101
+ JMP SC30
+SC60 JST AS00 ASSIGN ITEM
+SC20 LDA A S (NS+1) = A
+SC30 IAB
+ LDA SC90
+ ADD NS
+ STA SC91
+ IAB S(NS + 1) = A
+ STA* SC91
+ LDA NS
+ AOA
+ STA NS NS = NS + 1
+ SUB K103
+ SZE
+ JMP SC50 MORE SUBSCRIPTS PERMITTED
+SC40 JST IP00 )-INPUT OPERATOR
+ JMP* SC00 RETURN
+SC50 LDA TC
+ SUB K134
+ SZE
+ JMP SC40 TERMINATOR NOT A COMMA
+ JMP SC10 G0 TO SC10
+SC70 JST IR00 INPUT INT VARIABLE
+ LDA SCT0 CHECK FOR NON-DUMMY
+ SNZ VARIABLE DIMENSIONS
+ JMP SC20
+ LDA AT
+ SUB K105
+ SNZ
+ JMP SC20
+ JST ER00
+ BCI 1,VD ILLEGAL SYMBOLIC SUBSCRIPT
+SC90 DAC S1
+SC91 DAC **
+*
+*
+* ********************
+* *INPUT LIST ELEMENT*
+* ********************
+* IF THE ITEM IS AN ARRAY, PROCESS THE SUBSCRIPT
+IL00 DAC **
+ JST NA00 INPUT NAME
+ LDA AT
+ SUB K105 NON-DUMMY TEST
+ SZE
+ JMP *+3
+ JST ER00 USAGE ERROR
+ BCI 1,DD DUMMY ITEM IN AN EQUIV, OR DATA LIST
+ LDA IU IF IU NOT ARR,
+ SUB K103
+ SZE
+ JMP IL30 GO TO IL30
+ LDA K103
+ JST SC00 INPUT SUBSCRIPTS
+ JST FA00 FETCH ASSIGNS
+ LDA ND IF ND = NS
+ SUB NS
+ SZE S1 = D* (S1 + D1* (S2+D2*S3)
+ JMP IL10 ELSE, GO TO IL10
+ LDA S3
+ IAB
+ LDA D2
+ JST IM00
+ ADD S2
+ IAB
+ LDA D1
+ JST IM00
+ ADD S1
+ IAB
+ LDA D0
+ JST IM00
+ STA S1
+ JMP* IL00 RETURN
+IL10 LDA NS IF NS NOT 1
+ SUB K101
+ SZE
+ JMP IL20 GO TO IL20
+ LDA S1 ELSE, 20
+ IAB S1 * D0*S1
+ LDA D0
+ JST IM00
+IL18 STA S1
+ JMP* IL00 RETURN
+IL20 JST ER00
+ BCI 1,ND WRONG NUMBER OF DIMENSIONS IN ARRAY ELEMENT
+ JMP* IL00 RETURN
+IL30 JST TV00 TAG VARIABLE
+ CRA S1 = 0
+ JMP IL18 RETURN
+*
+*
+* ************
+* *FUNCTION *
+* *SUBROUTINE*
+* ************
+* IF LSTF IS ZERO, THE STATEMENT IS OUT OF ORDER
+* FUNCTIONS ARE CHECKED TO ENSURE ARGUMENTS
+R1 LDA K101
+ STA SFF SFF = 1
+R2 LDA LSTF
+ SZE IF LSTF = 0
+ JMP R2A
+ JST ER00 ILLEGAL STATEMENT
+ BCI 1,FS NOT FIRST STATEMENT IN SUBPROGRAM
+R2A JST NA00 INPUT NAME
+ LDA A
+ STA SBF SBF = A
+ CRA ADDR=0, S/C CODE =0
+ JST ON00 OUTPUT NAME BLOCK TO THE LOADER
+ LDA MFL
+ SZE
+ JST DM00 DEFINE IM
+ LDA TC
+ SUB CRET IF IC NOT C/R
+ SZE
+ JMP R2C GO TO
+ LDA SFF IF SFF = 0
+ SNZ
+ JMP R2D GO TO R2D
+ JST ER00 ERROR
+ BCI 1,FA FUNCTION HAS NO ARGUMENTS
+R2C CRA
+ STA I I = 0
+ JST GE00 GENERATE SUBPROGRAM ENTRY
+ JMP A1 GO TO C/R TEST
+R2D CRA
+ JST OA00 OUTPUT ABS
+ JMP C6 GO TO CONTINUE
+*
+*
+* ******************
+* *INTEGER *
+* *REAL *
+* *DOUBLE PRECISION*
+* *COMPLEX *
+* *LOGICAL *
+* ******************
+* THE MODE FLAG (MFL) IS SET TO THE APPROPRIATE
+* VALUE AND ANY ARRAY INFO IS PROCESSED
+A3 LDA K101 INTEGER
+ JMP A7A TMFL = INT
+A4 LDA K102 REAL
+ JMP A7A TMFL = REAL
+A5 LDA K106 DOUBLE PRECISION
+ JMP A7A TMFL = DBL
+A6 LDA K105 COMPLEX
+ JMP A7A TMFL = CPX
+A7 LDA K103 LOGICAL
+A7A STA MFL TMFL = LOG
+ LDA LSTF IF LSTF = 0, GO TO A7B (2)
+ SNZ
+ JMP A7B ELSE,
+ LDA CC SAVE CC
+ STA A790
+ CRA
+ STA ICSW
+ JST DN00 INPUT DNA
+ LDA A790 RESTORE CC
+ STA CC
+ STA ICSW ICSW = IPL
+ LDA DFL IF DFL NOT = 0, GO TO A7B
+ SZE
+ JMP A7B
+ LDA TID IF ID = FUNCTI,
+ SUB A7K GO TO A9
+ SNZ SKIP IF NOT 'FUNCTION'
+ JMP A9 FUNCTION PROCESSOR
+A7A5 JST ER00 CONSTRUCTION ERROR
+ BCI 1,TF 'TYPE' NOT FOLLOWED BY 'FUNCTION' OR LIST
+A7K BCI 1,FU CONSTANT FOR 'FUNCTION' CHECK
+A7B JST NA00 INPUT NAME
+ LDA MFL
+ JST DM00 DEFINE IM
+ JMP B7 GO TO INPUT DIMENSION
+A790 PZE 0
+*
+*
+* - B2 EXTERNAL
+* TAGS NAME AS SUBPROGRAM
+B2 JST NA00 EXTERNAL, INPUT NAME
+ JST TG00 TAG SUBPROGRAM
+ JMP B1 GO TO , OR C/R TEST
+*
+*
+* *****************
+* *DIMENSION *
+* *INPUT DIMENSION*
+* *****************
+* PROCESS ARRAYS, PUT DIMENSION INFO IN SPECIAL
+* ARRAY POINTER ITEM
+B3T0 PZE 0
+B3T1 PZE 0
+B3T2 PZE 0
+B3T3 PZE 0
+B3 JST NA00
+B3A LDA AT IF AT = DUM
+ SUB K105 (A) = 0
+ SZE ELSE (A) = .LT. 0
+ SSM
+B3B STA B3T0 T0 = (A)
+ LDA AF
+ STA B3T3 T3 = AF
+ LDA A
+ STA B3T1 T1 = A
+ LDA AT TEST FOR AT=DUMMY
+ SUB K105 =5
+ SZE SKIP NO-USAGE TEST IF DUMMY
+ JST NU00 NO USAGE TEST
+ JST STXA
+ LDA DP+1,1 IU (A) = ARR
+ LRL 14
+ LDA K103
+ LLL 14
+ STA DP+1,1
+ LDA B3T0 (A) = T0
+ JST SC00 INPUT SUBSCRIPT
+ LDA S1
+ STA ID
+ LDA S2 PLACE SUBSCRIPTS IN ID
+ STA ID+1
+ LDA S3
+ STA ID+2
+ LDA NS (A) = 0, B = NS
+ LRL 16
+ JST AA00 ASSIGN SPECIAL.
+ JST STXA
+ LDA DP+1,1
+ LLR 2
+ LDA B3T3
+ LGL 2
+ LRR 2
+ STA DP+1,1 DEFINE GF T0 GF(A)
+ LDA A
+ STA B3T2 T2 = A
+ LDA B3T1
+ STA A A = T1
+ JST STXA
+ LDA DP+1,1
+ LLR 2
+ LDA B3T2
+ LGL 2
+ LRR 2
+ STA DP+1,1 DEFINE GF TO GF(A)
+B3D LDA TC
+ SUB K104 IF TC NOT SLASH
+ SZE
+ JMP B1 GO TO ,-C/R TEST
+ LDA A9T2 IF SIDSW = COMMON-4
+ SUB B4Z9
+ SZE GO T0 B4 (COMMON-0)
+ JMP B1 ELSE, GO TO ,-C/R TEST
+ JMP B40
+B7 LDA TC IF TC = (
+ SUB K17
+ SZE
+ JMP B3D
+ JMP B3A
+*
+*
+* ********
+* *COMMON*
+* ********
+* INPUT BLOCK NAMES AND LINK THEM WITH THE
+* FOLLOWING VAR/ARRAY NAMES, BLOCK NAMES
+* ARE LINKED TOGETHER THROUGH THEIR GENERAL FIELDS
+B4 LDA K81
+ STA ID
+ STA ID+1
+ STA ID+2
+ LDA B4Z9 SET SWITCH IN INPUT DIMENSION
+ STA A9T2
+ JST CH00 INPUT CHAR
+ SUB K9 IF NOT SLASH
+ SZE GO TO
+ JMP B4E
+B40 JST DN00 INPUT DNA
+ LDA K104 SLASH TEST
+ JST TS00
+B4B LRL 32
+ LDA K101 (A) = SUB, (B) = 0
+ JST AA00 ASSIGN SPECIAL
+ LDA CFL
+ SNZ
+ LDA A
+ STA CFL
+ LDA A
+ STA F
+ JST FL00 FETCH LINK
+ SZE
+ JMP B4D
+ LDA CFL
+ STA 0
+ LDA DP+1,1 GF(CFL)
+ IMA A
+ STA 0 INDEX = A
+ IMA A
+ STA DP+1,1 GF(A) = GF(CFL)
+ LDA CFL
+ STA 0 INDEX = CFL
+ LDA A
+ ADD K122 ='040000
+ STA DP+1,1 GF(CFL) = A
+B4D JST NA00 INPUT NAME
+ JST ND00 NON DUMMY/SUBPROG TEST
+ JST NM00 NON-COMMON TEST
+ JST EL00 EXCHANGE LINKS
+ LDA DP,1
+ ANA B4F ='107777
+ ADD K122 AT(A) = COM (='040000)
+ STA DP,1
+ JMP B7
+B4E JST UC00 UNINPUT COLUMN
+ JMP B4B
+B4Z9 DAC B4D GO TO INPUT DIMENSION
+B4F OCT 107777 EXTRACT MASK TO STRIP OFF AT FIELD
+*
+*
+* *************
+* *EQUIVALENCE*
+* *************
+* STORE EQUIV INFO IN THE DATA POOL FOR LATER
+* PROCESSING BY GROUP EQUIV (PART OF SPECS WRAPUP)
+B5 LDA E0 L = NEXT WORD IN EQUIVALENCE TABLE
+ STA I I=L
+ SUB K101 (=1)
+ STA E0 L=L-1
+ SUB ABAR
+ SMI
+ JMP *+3
+ JST ER00 DATA POOL FULL
+ BCI 1,MO MEMORY OVERFLOW
+ JST STXI ESTABLISH I
+ CRA
+ STA DP,1 DP (I) = 0
+B5B JST CH00
+ LDA DP,1 INPUT CHAR
+ SZE
+ JMP B5D
+ LDA TC PUT IN FIRST CHARACTER
+ LGL 8 PACK INTO DP (I)
+B5C STA DP,1
+ LDA TC
+ SUB CRET
+ SNZ
+ JMP C6 CHARACTER E C/R - EXIT
+ LDA DP,1
+ ANA K100
+ SNZ
+ JMP B5B WORD NOT FULL
+ JMP B5 OBTAIN NEW WORD
+B5D LDA TC PUT IN SECOND CHARACTER
+ ERA DP,1
+ JMP B5C
+*
+*
+* *********************
+* *RELATE COMMON ITEMS*
+* *********************
+* ALL ITEMS LINKED TO A COMMON BLOCK ARE PROCESSED
+* AND THEIR INVERSE OFFSETS CALCULATED. THESE
+* WILL BE INVERTED LATER TO GIVE TRUE
+* POSITION IN THE BLOCK.
+C2T0 PZE 0
+C2 LDA CFL
+ STA A A = F = CFL
+C2A CRA
+ STA C2T0 T0 = 0
+ LDA A
+ STA F F = A
+C2B JST FL00 FETCH LINK
+ SNZ
+ JMP C2D
+ LDA D0
+ ADD C2T0 T0 = T0 + D0
+ STA C2T0
+ JST DA00 DEFINE ADDRESS FIELD
+ JMP C2B
+C2D JST FL00 FETCH LINK
+ SZE
+ JMP C2F
+ LDA AF
+ STA A A = AF
+ SUB CFL
+ SZE
+ JMP C2A AF = CFL. NO
+ JMP C3 YES - GROUP EQUIVALENCE
+C2F LDA C2T0
+ SUB AF (A) = T0 - AF
+ JST DA00 DEFINE AF
+ LDA IU
+ SZE
+ JMP C2D
+ JST TV00 TAG VARIABLE
+ JMP C2D
+*
+*
+* *******************
+* *GROUP EQUIVALENCE*
+* *******************
+* THE EQUIV GROUPS ARE PROCESSED NOW. ANY COMMON
+* USAGE IS CHECKED TO SEE THAT THE ORIGIN
+* IS NOT MOVED AND THAT ONLY ONE ITEM IS
+* COMMON.
+C3T0 PZE 0
+C3T1 PZE 0
+C3T2 PZE 0
+C3T3 PZE 0
+C3T4 PZE 0
+C3T5 PZE 0
+T0C3 EQU C3T0
+T1C3 EQU C3T1
+T2C3 EQU C3T2
+T3C3 EQU C3T3
+T4C3 EQU C3T4
+C3 LDA E0
+ STA EBAR EBAR=E(0) = END OF EQUIVALENCE TABLE
+ LDA L0
+ STA E E=L(0) = START OF EUUIVALENCE TABLE
+ LDA CRET
+ STA TC
+C3B LDA E
+ STA EP E-PRIME = E
+ CRA
+ STA F I = 0
+ LDA K102 T4 = STR-ABS
+ STA C3T4
+ JST CH00 INPUT CHARACTER
+ LDA K17
+ JST TS00 (TEST
+C3D JST IL00 INPUT LIST ELEMENT
+ JST SAF
+ LDA S1
+ SUB AF TL = S1-AF
+ STA C3T1
+ LDA A T2 = A
+ STA C3T2
+C3F LDA F IF I=0, GO TO C3P
+ SNZ
+ JMP C3P
+C3G LDA F ELSE,
+ SUB A
+ SNZ IF A = I, GO TO C3N
+ JMP C3N
+C3H LDA AT
+ SUB K104 ELSE,
+ SNZ IF AT = COM, GO TO C3O
+ JMP C3O
+C3H2 LDA T1C3
+ ADD AF
+ STA T0C3 T(0) = AF +T (1)
+ LDA T4C3
+ SUB K104 IF T(4) = 0, GO T0 C3K
+ SZE
+ JMP C3K
+ LDA T3C3
+ SUB T0C3 ELSE,
+ STA T0C3 T(0) = T(3)-T(0)
+ SMI
+ JMP C3K
+ JST ER00 IF T(0)<0,
+ BCI 1,IC
+C3K LDA C3T4 IMPOSSIBLE COMMON EQUIVALENCING
+ IAB
+ LDA T0C3 AT (A) = COM
+ ALS 2
+ LGR 2
+ JST AF00
+ JST FL00 DEFINE AF
+ JST SAF FETCH LINK
+ LDA A
+ SUB C3T2
+ SZE IF A .NE. T (2),
+ JMP C3G GO TO C3G (5)
+*
+ JST EL00 EXCHANGE CL(A) == CL(I)
+C3M LDA TC EXCHANGE LINKS (CL(A) WITH CL(F) )
+ SUB K134 IF TC = ,
+ SNZ
+ JMP C3D ELSE,
+ JST IP00 )-INPUT OPERATOR
+ LDA TC
+ SUB K134 IF TC = , OR C/R
+ SNZ GO TO C3B (1)
+ JMP C3B
+ LDA TC
+ SUB CRET
+ SNZ
+ JMP C3B ELSE,
+ JST ER00
+ BCI 1,EC EOUIVALENCE GROUP NOT FOLLOWED BY , OR CR
+ JMP C3B
+C3N LDA T1C3 IF T1 = 0, GO TO C3M
+ SNZ
+ JMP C3M
+C3N5 JST ER00 ERROR IMPOSSIBLE GROUP
+ BCI 1,IE IMPOSSIBLE EQUIVALENCE GROUPING
+C3O LDA S1
+ ADD AF
+ STA T3C3
+ LDA K104 =4
+ CAS T4C3
+ JMP *+2
+ JMP C3N5
+ STA T4C3
+ LDA F
+ CAS A IF A = F, GO TO C3M (B)
+ JMP *+2
+ JMP C3M ELSE,
+ STA A A = I
+ IMA C3T2
+ STA F
+ CRA T1 = 0
+ STA C3T1
+ JST FA00 FETCH ASSIGNS
+ JST SAF
+ JMP C3H2 GO TO C3H2
+C3P LDA A
+ STA F
+ JMP C3H
+*
+*
+* ***********************
+* *ASSIGN SPECIFICATIONS*
+* ***********************
+* NON-COMMON NON-EQUIV ITEMS ARE PROCESSED AFTER
+* COMMON BLOCKS ARE OUTPUT (WITH SIZE).
+C4T0 PZE 0
+C4T1 PZE 0
+C4B STA A A = 0
+C4C LDA A
+ ADD K105 I = A = A+5
+ STA A
+ STA F
+ CAS ABAR
+ JMP NP35 RETURN TO FIRST NON-SPEC CHECK (POINT 1)
+ NOP
+ JST FA00 ELSE, FETCH ASSIGN
+ LDA AT
+ SUB K102 IF AT = STR-ABS
+ SZE IU=VAR, OR ARR, AND
+ JMP C4C NT = 0
+ LDA IU GO TO C4E
+ SUB K102 ELSE, GO TO C4C
+ SPL
+ JMP C4C
+ LDA NT
+ SZE
+ JMP C4C
+C4E CRA
+ STA C4T0 T0 = 0. T1 =-MAX
+ SUB K111
+ STA C4T1
+ JST KT00 SET D(0) = NO. OF WORDS PER ITEM
+C4F JST SAF
+ CAS C4T0
+ STA C4T0
+ NOP
+ LDA D0
+ SUB AF (A) = D(0) - AF
+ CAS C4T1
+ STA C4T1
+ NOP
+ JST FL00 FETCH LINK ( (A)=A - F )
+ SZE
+ JMP C4F GO TO C4F
+ LDA RPL
+ ADD C4T0 RPL * RPL + T0 + TL
+ STA C4T0
+ ADD C4T1 TO = RPL-T1
+ STA RPL
+C4I JST SAF
+ LDA K101
+ IAB (B) = REL
+ LDA C4T0 (A) = TO-AF
+ SUB AF
+ JST AF00 DEFIME AFT
+ JST FL00 FETCH LINK
+ SZE IF (A) NOT ZERO,
+ JMP C4I NOT END OF EQUIVALENCE GROUP
+ JMP C4C CHECK NEXT ITEM IN ASSIGNMENI TABLE
+*
+C4L2 LDA FLT1 = LINK LOCATION TO COMMON BLOCK NAME
+ STA C4T1
+C4L3 LDA A
+ STA I SAVE A FOR LATER MODIFICATION
+ JST FL00 FETCH LINK
+ SNZ
+ JMP C4M END OF COMMON GROUP
+ JST STXI SET INDEX TO POINT TO CURRENT ITEM IN
+* COMMON GROUP.
+ LDA DP,1 SET CL FIELD TO POINT AT COMMON BLOCK
+* NAME.
+ ANA K119 ( = '177000)
+ ADD C4T1 (= LINK LOCATION OF COMMON BLOCK NAME)
+ STA DP,1
+ JMP C4L3 PROCESS NEXT ITEM IN COMMON BLOCK
+*
+C4 LDA CFL LOC, OF FIRST (BLANK) COMMON BLOCK
+ STA F
+C4L6 STA A
+ CRA
+ STA C4T0
+C4L JST FL00 FETCH LINK
+ SNZ
+ JMP C4L2 NO MORE ITEMS IN COMMON BLOCK
+ LDA D0 ELSE, IF TO .LT. DO+AF,
+ ADD AF
+ CAS C4T0 T0 = D0 + AF
+ STA C4T0
+ NOP
+ JMP C4L GO TO C4L
+C4M LDA AF
+ STA F I=AF
+ LDA C4T0 (A) = T0
+ JST DA00 DEFINE AF
+*....OUTPUT COMMON BLOCK NAME AND SIZE TO LOADER
+ LDA AF LENGTH OF COMMON BLOCK
+ ANA K111 ='37777
+ ADD K122 ='40000 (S/C CODE = 1)
+ JST ON00 OUTPUT NAME BLOCK TO LOADER
+ LDA F
+ SUB CFL IF I = CFL
+ SNZ
+ JMP C4B
+ LDA F
+ JMP C4L6
+*
+SAF DAC **
+ LDA AF
+ LGL 2
+ ARS 2
+ STA AF
+ JMP* SAF
+*
+* **************************
+* *DATA STATEMENT PROCESSOR*
+* **************************
+* PROCESS VARIABLE LIST .THEN OUTPUT LITERAL ITEMS
+* TO APPROPRIATE LOCATIONS. MODES MUST AGREE
+T0W4 PZE 0
+T1W4 PZE 0
+G PZE 0 LOWEST INDEX POINT IN LIST
+W4 LDA L0
+ STA I I=END OF DATA POOL
+W4B JST IL00 INPUT LIST ELEMENT
+ LDA AT D (0) = =WDS/ITEM
+ SUB K102
+ SNZ IF AT = 'STR-ABS'
+ JMP W4T GO TO
+ LDA I
+ STA 0
+ LDA S1 S1 * DEFLECTION IF AN ARRAY
+ ADD AF
+ STA DP,1 DP(E) = AF + S1
+W4C LDA A
+ STA DP-1,1 DP (E-1) = A
+ LDA I
+ SUB K102
+ STA I
+ STA G
+ LDA TC IF TC = ,
+ SUB K134
+ SNZ
+ JMP W4B GO TO W4B
+ LDA K104
+ JST TS00 TEST FOR SLASH TERMINATOR
+ LDA RPL
+ STA T1W4
+ LDA L0
+ STA I I= END OF DATA POOL
+W4E CRA
+ STA KPRM K' = KBAR = 0
+ STA KBAR
+W4F JST DN00 INPUT, DNA
+ LDA NT
+ SZE IF NT = 0
+ JMP W4G VARIABLE OR ARRAY
+ LDA TC LAST CHARACTER
+ CAS K17 ='250 ( =( )
+ JMP *+2
+ JMP *+3 START OF COMPLEX CONSTANT
+ JST ER00 ERROR
+ BCI 1,CN NON-CON DATA
+ STA SXF SET SXF TO NON-ZERO
+ JMP W4F FINISH INPUT OF COMPLEX CONSTANT
+W4G LDA KBAR MULTIPLY COUNT
+ SZE
+ JMP W4K GO TO W4K
+ LDA TC IF TC NOT *
+ SUB K103
+ SZE
+ JMP W4L
+ LDA ID
+ SUB K101
+ STA KBAR KBAR = ID-1
+ JST IT00 INTEGER TEST
+ JMP W4F
+W4K LDA KPRM IF K NOT ZERO
+ SZE
+ JMP W4M GO TO W4M
+W4L LDA KBAR
+ ALS 1 K ' = E-3* KBAR
+ TCA
+ ADD I
+ STA KPRM
+W4M JST STXI SET INDEX = I
+ LDA DP-1,1
+ STA A A = DP (E-1)
+ LDA IM
+ STA T0W4 TO = IM
+ JST FA00
+ LDA BDF IF BDF NOT ZERO
+ SZE
+ JMP W4S GO TO W4S
+ JST NM00 NON-COMMON TEST
+W4O JST STXI SET INDEX = I
+ LDA DP,1
+ STA RPL RPL = AF
+ JST FS00 FLUSH
+ CRA
+ STA DF DF = 0
+ LDA HOLF IS IT HOLLERITH DATA
+ SZE NO
+ JMP WHOW YES, GO TO OUTPUT IT
+ LDA D0
+ STA 0
+ JMP *,1 SWITCH ON NUMBER OF WORDS TO OUTPUT
+ JMP W405
+ JMP W403
+ JMP W404
+ LDA TID+2
+ JST OA00
+ LDA TID+1
+ JST OA00
+ LDA TIDB+2
+ JST OA00
+ LDA TIDB+1
+ JMP W406
+WHOW LDA D0 (A)=NO. OF WORDS PER ITEM
+ ALS 1 (A)=NO. OF CHARS, PER ITEM
+ STA NTID NTID=NO. OF CHARS. TO BE OUTPUT
+ SUB HOLF
+ SPL
+ JMP WERR
+ LDA ID FIRST WORD
+ JST WSNG OUTPUT IT
+ LDA ID+1 2ND WORD
+ JST WSNG OUTPUT IT
+ LDA ID+2 3RD WORD
+ JST WSNG OUTPUT IT
+ LDA ID+3 4TH WORD
+ JST OA00 OUTPUT IT
+ JMP W420 TO CHECK NEXT DATA
+*
+WSNG PZE 0
+ JST OA00 OUTPUT (A)
+ LDA NTID NO. OF CHARS, REMAINED TO BE OUTPUT
+ SUB K102
+ STA NTID NTID=NTID-2
+ SNZ
+ JMP W420 ALL FINISHED, CHECK NEXT ITEM
+ JMP* WSNG SOME HOLLERITH CHARS, REMAINED
+W403 LDA TID+2 REAL OUTPUT
+ JST OA00
+ LDA TID+1
+ JMP W406
+W404 LDA TID+2 DOUBLE PRECISION OUTPUT
+ JST OA00
+ LDA TID+1
+ JST OA00
+W405 LDA TID INTEGER OUTPUT
+W406 JST OA00
+ LDA T0W4
+ ERA IM
+ ANA K105
+ SNZ
+ JMP *+3
+* TO BE OUTPUT, RETURN
+WERR JST ER00
+ BCI 1,DM DATA AND DATA NAME MODE DO NOT AGREE
+W420 LDA I
+ SUB K102
+ STA I I = I-2
+ CAS KPRM
+ NOP
+ JMP W4M MORE TO DO
+ SUB G TEST FOR COMPLETE
+ SZE
+ JMP W4P
+ LDA K104
+ JST TS00
+ LDA T1W4
+ STA RPL
+ JST CH00 INPUT NEXT CHARACTER
+ SUB K5 ='254 (,)
+ SZE SKIP IF CHAR = COMMA
+ JMP A1 CHECK FOR (CR)
+ JMP W4 PROCESS NEXT DATA GROUP
+W4P LDA K134
+ JST TS00
+ JMP W4E
+W4S JST FS00 FLUSH BUFFER IF NECESSARY
+ LDA AF POSITION WITHIN COMMON BLOCK
+ LRL 14
+ LDA K106 FORMAT BCD OUTPUT
+ LGL 6
+ LLL 6
+ STA OCI
+ IAB
+ ANA K116
+ STA OCI+1
+ JST FL00 FETCH LINK
+ LDA DP+4,1
+ SSM
+ ALR 1
+ SSM
+ ARR 1
+ LRL 8
+ ERA OCI+1
+ STA OCI+1
+ LDA DP+3,1
+ IAB
+ LDA DP+4,1
+ LLL 8
+ STA OCI+2
+ LDA DP+2,1
+ IAB
+ LDA DP+3,1
+ LLL 8
+ STA OCI+3
+ LDA DP+2,1
+ LGL 2
+ ADD K103
+ LGL 6
+ STA OCI+4
+ LDA K128
+ STA OCNT
+ JST STXI I POINTS TO DATA TABLE
+ LDA DP-1,1 SET A TO VARIABLE
+ STA A
+ JST FA00
+ JMP W4O
+W4T LDA K101 =1 (=REL)
+ IAB
+ LDA RPL
+ JST AF00 DEFINE AFT (AT=REL. AF=RPL)
+ LDA I SET POINTER IN DATA POOL
+ STA 0
+ LDA RPL
+ STA DP,1 DP(I) = RPL OF VARIABLE
+ ADD D0
+ STA RPL
+ JMP W4C
+*
+*
+* *********************************
+* *BLOCK DATA SUBPROGRAM PROCESSOR*
+* *********************************
+* SET BLOCK DATA FLAG AND OUTPUT FORCE LOAD CODE
+R3 LDA LSTF =0 IF FIRST STATEMENT IN THE SUBPROGRAM
+ SZE
+ JMP *+3
+ JST ER00 ERROR...NOT FIRST STATEMENT
+ BCI 1,BL 'BLOCK DATA' NOT FIRST STATEMENT
+ STA BDF SET BLOCK DATA FLAG ON (NON-ZERO)
+ JST CH00 INPUT NEXT CHARACTER
+ JMP A1 CHECK FOR (CR) AND EXIT
+*
+*
+*
+*
+*
+*
+*
+* ***************************
+* *TRACE STATEMENT PROCESSOR*
+* ***************************
+* SETS TRACE TAG ON VARIABLES OR SETS TRACE FLAG
+TRAC JST XN00 EXAMINE NEXT CHARACTER
+ SZE SKIP IF CHAR, WAS A DIGIT
+ JMP TRAD JUMP IF CHAR. WAS A LETTER
+ JST IS00 INPUT STATEMENT NO.
+ LDA A STATEMENT NO. POINTER
+ STA TRF SET TRACE FLAG ON
+ JMP A1 TEST FOR (CR) AND EXIT
+*
+TRAD JST NA00 INPUT NAME
+ JST STXA SET INDEX TO NAME ENTRY
+ LDA DP+4,1 TT(A) TRACE TAG
+ CHS
+ STA DP+4,1
+ JMP B1 (,) OR (CR) TEST
+* (RETURN TO TRAC IF (,) )
+*
+*
+*
+* ********************
+* *OUTPUT OBJECT LINK*
+* ********************
+OL00 DAC **
+ JST CN00 CALL NAME
+ CRA
+ STA DF DF = 0
+ LDA ID (A) = IP
+ JST OA00 OUTPUT +BS
+*
+ JMP* OL00
+*
+* *****************
+* *OUTPUT I/O LINK*
+* *****************
+* GENERATE I/O DRIVER LINKAGE CODE. NAME OF
+* CALLED ROUTINE IS CHANGED IF UNIT DESIGNATOR
+* IS A CONSTANT.
+OI00 DAC **
+ JST IV00 INPUT INT VAR/CON
+ LDA NT
+ SNZ IF NT = 0
+ JMP OI20 GO TO 0I20
+ LDA ID IF ID CR 9
+ SUB K126 G0 TU OI20
+ SMI
+ JMP OI20
+* FORM F$RN OR F$WN
+ LDA NAMF+1
+ ANA K116
+ ADD ID
+ ADD K60 ='260 (SP)
+ STA NAMF+1
+OI10 JST CN00 CALL NAME
+ JMP* OI00 RETURN
+OI20 LRL 32
+ LDA OMI7 OUTPUT OA
+ JST OB00 (LOAD A (UNIT N0.))
+ JMP OI10 FO TO OI10
+*
+*
+* ***********
+* *CALL NAME*
+* ***********
+* SET UP NAME AND GENERATE CODE FOR CALLING IT.
+CN00 DAC **
+ JST FS00 FLUSH
+ JST PRSP SET PRINT BUFFER TO SPACES
+ LDA K147 SET UP OCI FOR CALL
+ STA OCI
+ LDA NAMF+1 OCI = NAMF
+ STA PRI+9
+ IAB ALSO TO PRINT BUFFER
+ LDA NAMF
+ STA PRI+8
+ LRL 8
+ STA OCI+1
+ LLL 16
+ STA OCI+2
+ LDA NAMF+2
+ STA PRI+10
+ IAB
+ LDA NAMF+1
+ LLL 8
+ STA OCI+3
+ LLL 16
+ STA OCI+4
+ LDA K128 ='14
+ STA OCNT OCNT = 6
+ LDA CN90
+ STA PRI+5
+ LDA CN90+1
+ STA PRI+6
+ LDA RPL
+ JST OR80
+ DAC PRI
+ SR2
+ JMP *+3 INHIBIT SYMBOLIC OUTPUT
+ CALL F4$SYM OUTPUT SYMBOLIC LINE,
+ DAC PRI
+ IRS RPL RPL = RPL + 1
+ JST PRSP SET PRINT BUFFER TO SPACES
+ JST FS00 FLUSH
+ JMP* CN00 RETURN
+K147 OCT 55000
+CN90 BCI 2,CALL
+* *************
+* *OUTPUT PACK*
+* *************
+* OUTPUT THE PACK WORD WHEN IT IS FULL.
+PKF PZE 0 PACK FLAG
+T0OK PZE 0
+OK00 DAC **
+ CAS CRET IF (A) = C/R
+ JMP *+2
+ JMP OK30 GO TO OK30
+ IRS PKF PKF = PKF + 1
+ JMP OK20 IF NON-ZERO, GO TO OK20
+OK10 ADD T0OK (A) = (A) + T0
+ LRL 16
+ STA DF
+ IAB
+ JST OA00 OUTPUT ABS
+ JMP* OK00
+OK20 LGL 8
+ STA T0OK
+ LDA K123 PKF = - 1
+ STA PKF
+ JMP* OK00 RETURN
+OK30 LDA PKF IF PKF = 0
+ SNZ
+ JMP* OK00 RETURN
+ LDA K8 ELSE (A) = SPACE,
+ STA PKF
+ JMP OK10 GO TO OK10
+*
+*
+* ***********
+* *OUTPUT OA*
+* ***********
+* GENERAL OUTPUT ROUTINE. MAKES CHECKS AGAINST
+* THE ASSIGNMENT TABLE ENTRY TO PROCESS DUMMY,
+* EXTERNAL, RELATIVE, ABSOLUTE OR STRING
+* REFERENCES PROPERLY.
+T1OB PZE 0
+OB00 DAC **
+ STA FTOP FTOP = (A)
+ IAB
+ STA T1OB
+ JST STXA ESTABLISH A
+ SNZ IF A = 0
+ JMP OB08 GO TO OB08
+ JST FA00 FETCH ASSIGNS
+ LDA SOF SPECIAL OUTPUT FLAT
+ SZE
+ JMP OB60 SUBSCRIPT CONSTANT DEFLECTION
+ LDA AF
+ STA T1OB T0 = AF
+ LDA AT
+ SUB K105 IF AT = 'DUM'
+ SNZ
+ JMP OB15 GO TO OB15
+ LDA IU
+ SUB K101 IF IU = 'SUB'
+ SNZ
+ JMP OB40 GO TO OB40
+OB06 LDA AT
+ CAS K104 IF AT = 'COM'
+ JMP *+2
+ JMP OB20 GO TO OB20
+ CAS K101
+ JMP *+2 IF AT = 'REL'
+ JMP OB10 GO TO OB10
+ LDA K103
+ IAB
+ LDA RPL
+ JST AF00 DEFINE AF AND AT
+ LDA AT IF AT = 'STR-RE'
+ SUB K103
+ SNZ
+ JMP OB10 GO TO OB10
+ CRA
+ STA AF AF = 0
+OB08 LDA K102
+ STA DF SET FLAG TO OUTPUT SYMBOLIC
+ LDA FTOP
+ JST OA00 OUTPUT ABSOLUTE
+ JMP* OB00 RETURN
+OB10 LDA T1OB
+ STA AF
+ LDA FTOP
+ JST OR00 OUTPUT REL
+ JMP* OB00 RETURN
+OB15 LDA FTOP
+ CHS REVERSE INDIRECT BIT
+ STA FTOP
+ JMP OB10 GO TO OB10
+OB20 JST FS00 OUTPUT COMMON REOUEST
+ LDA T1OB PACK ADDRESS INTO BLOCK
+ LRL 14
+ LDA FTOP
+ LGR 10
+ ADD K150
+ LLL 6
+ STA OCI
+ LLL 8
+ STA OCI+1
+ JST SAV
+ JST FL00
+ LDA DP+2,1
+ STA PRI+13 SET COMMON NAME INTO PRINT BUFFER
+ LLR 8
+ STA OCI+4
+ LLL 8
+ LDA DP+3,1
+ STA PRI+12 SET COMMON NAME INTO PRINT BUFFER
+ LLR 8
+ STA OCI+3
+ LLL 8
+ LDA DP+4,1
+ ANA K111 ='037777
+ CAS *+1 LOOK FOR BLANK COMMON
+ OCT 020240
+ ERA K122
+ ERA HBIT
+ STA PRI+11 SET NAME INTO PRINT BUFFER
+ LLR 8
+ STA OCI+2
+ LLL 8
+ LDA OCI+1
+ LLL 8
+ STA OCI+1
+ LDA K128 ='14
+ STA OCNT
+ JST RST
+ LDA 0
+ STA A RESTORE A TO POINT AT NAME
+ LDA RPL SET RPL MINUS
+ SSM TO DISABLE WORD OUTPUT
+ STA RPL
+ LDA FTOP OUTPUT WORD TO LIST
+ JST OR00 SYMBOLIC COMMAND
+ LDA RPL RESTORE AND
+ SSP INCREMENT PROGRAM
+ AOA COUNTER FOR COMMON
+ STA RPL OUTPUT
+ JST FS00 CLOSE OUT BLOCK
+ JMP* OB00 EXIT
+OB30 LDA DP+4,1
+ SSM
+ ALR 1
+ SSM
+ ARR 1
+ STA NAMF
+ LDA DP+3,1
+ STA NAMF+1
+ LDA DP+2,1
+ STA NAMF+2
+ JST CN00
+ JMP* OB00
+OB40 LDA AT
+ SUB K102
+ SNZ
+ JMP OB30
+ JMP OB06
+OB50 OCT 140000
+*
+OB60 CRA
+ STA SOF RESET SPECIAL OUTPUT FLAG
+ LDA AT ADDRESS TYPE
+ CAS K105 TEST FOR DUMMY
+ JMP OB06 PROCESS NORMALLY
+ JMP OB61
+ JMP OB06 PROCESS NORMALLY
+OB61 LDA T1OB
+ STA FTOP
+ CRA
+ JMP OB08+1
+*
+K150 OCT 700
+*
+*
+* **************
+* OUTPUT TRIADS*
+* **************
+* PROCESSES THE TRIAD TABLE, HANDLES FETCH
+* GENERATION AND RELATIONAL OPERATOR CODE
+* GENERATION, DRIVES OUTPUT ITEM. ASSIGNS
+* AND OUTPUT TEMP STORES.
+T0OT PZE 0
+T2OT PZE 0
+T1OT PZE 0
+T3OT PZE 0 TEMP STORE FOR P
+OT00 DAC **
+ JST SAV
+ LDA L0
+ STA I I = L0
+ CRA
+ STA T0OT T0 = 0
+ STA IFLG
+OT06 STA T1OT T1 = I
+OT10 LDA I
+ SUB K103 I = I-3
+ STA I
+ STA T2OT T2 = I
+ SUB L
+ SPL
+ JMP OT60 IF FINISHED, GO TO OT60
+ JST STXI
+ LDA DP+2,1
+ SSP CHECK P (I)
+ CAS K139 X
+ JMP *+2
+ JMP OT10
+ CAS K138 H
+ JMP *+2
+ JMP OT10
+ CAS K142 I
+ JMP *+2
+ JMP OT50
+ CAS K143 T
+ JMP *+2
+ JMP OT40
+ CAS K151 Q
+ JMP *+2
+ JMP OT35
+ STA T3OT SAVE P
+ LDA DP+1,1
+ STA A A = O1(I)
+ CAS T1OT
+ JMP *+2
+ JMP OT30
+ CAS L0
+ JMP OT16
+ JMP OT99 MAYBE SPECIAL LOAD FOR (A=) STATEMENT
+ JMP OT16
+OT18 JST STXI
+ LDA DP,1
+ STA A A = O2 (I)
+ LDA DP+2,1
+ SSP
+ JST OM00 OUTPUT ITEM(P(I),A = 02(I))
+OT22 JST STXI
+ LDA DP+2,1
+ SMI
+ JMP OT28
+ CRA ASSIGN TEMP STOR
+ STA NT NT = 0
+ LDA K102
+ STA IU IU = VAR
+ LDA T0OT
+ LRL 6
+ LDA TCF ID =
+ LRL 3 TS-IM-TCF-T0
+ LDA MFL
+ STA IM
+ LLL 9
+ JST OR80
+ DAC ID
+ LDA K77
+ STA ID
+ IRS T0OT T0 = T0+1
+ JST AS00 ASSIGN ITEM
+ JST STXI
+ LDA A
+ STA DP,1 O2(I) = A
+ LDA K153
+ SSM SURPRESS TRACE OF TEMPORARY STORAGE
+ JST OM00 OUTPUT ITEM (=,A)
+OT28 LDA I
+ JMP OT06
+OT30 JST STXA
+ LDA DP+2,1
+ SSP IF P (A) = 0
+ SZE
+ JMP OT32
+OT16 LDA K152 GENERATE FETCH
+ JST OM00 OUTPUT ITEM
+OT32 LDA T3OT CHECK FOR RELATIONALS
+ SUB K125 ='10
+ SPL
+ JMP OT18 NOT LOGICAL OR6RATOR
+ SUB K106 =6
+ SMI
+ JMP OT18 NOT A LOGICAL QPERATOR
+ STA 0 SET INDEX = -1 TO -6
+ LDA K103 =3 (LOG)
+ STA MFL SET MODE TO LOGICAL
+ CRA
+ STA A SET FOR OCTAL ADDRESS
+ JMP *+7,1 BRANCH TO OPERATOR PROCESSOR
+ JMP OT3G .LT.
+ JMP OT3E .LE.
+ JMP OT3C .EQ.
+ JMP OT3B .GE.
+ JMP OT3A .GT.
+ LDA OMJ4 .NE. =ALS 16
+ JST OA00 OUTPUT ABSOLUTE
+ LDA OMJ6 =ACA
+ JMP OT3D
+OT3A LDA OMJ7 *TCA
+ JMP OT3F
+OT3B LDA OMK1 =CMA
+ JMP OT3F
+OT3C LDA OMJ4 = ALS 16
+ JST OA00
+ LDA OMK2 =SSC
+ JST OA00 OUTPUT ABSOLUTE
+ LDA OMK3 =AOA
+OT3D JST OA00 OUTPUT ABSOLUTE
+ JMP OT22
+OT3E LDA OMJ2 =SNZ
+ JST OA00 OUTPUT ABSOLUTE
+ LDA OMK4 =SSM
+OT3F JST OA00 OUTPUT ABSOLUTE
+OT3G LDA OMJ5 =LGR 15
+ JMP OT3D
+*
+OT35 LDA DP+1,1
+ STA ID
+ JST NF00
+ LDA K78 NAMF = F $AR
+ STA NAMF+1
+ JST OL00 OUTPUT OBJECT LINK
+ JMP OT18 GO TO OT18
+OT40 LDA DP,1
+ ADD DO
+ STA I I = 02 (I) + DO
+ JST DQ00 DO TERMINATION
+OT45 LDA T2OT
+ STA I I = T2
+ JMP OT28
+OT50 LDA DP,1
+ ADD DO I=O2(I)+DO
+ STA I IF I = DO
+ SUB DO
+ SZE GO TO OT45
+ JST DS00 DO INITIALIZE
+ JMP OT45 GO TO OT45
+OT60 JST RST
+ LDA L0 RESET TRIAD TABLE
+ STA L
+ JMP* OT00
+*
+OT99 LDA T3OT
+ SUB K153 CODE FOR =
+ SZE
+ JMP OT16 NOT SPECIAL LOAD
+ STA MFL SPECIAL LOAD, SET MFL=0
+ JMP OT18 OUTPUT A STORE
+K77 BCI 1,T$ T$
+K78 BCI 1,AR AR
+K142 OCT 27
+K143 OCT 30
+K151 OCT 32
+K152 OCT 31
+* *************
+* *OUTPUT ITEM*
+* *************
+*
+* DRIVES BASIC OUTPUT ROUTINES. HANDLES SPECIAL
+* SUBSCRIPT PROCESSING, GENERATES NECESSARY
+* MODE CONVERSION CALLS AND HANDLES MODE
+* CHECKING. IN-LINE ARITHMETIC CODE IS
+* GENERATED WHERE POSSIBLE. OTHERWISE CALLS
+* TO ARITHMETIC ROUTINES ARE GENERATED.
+*
+T0OM PZE 0
+T1OM PZE 0
+T2OM PZE 0
+T8OM PZE 0
+T9OM PZE 0
+TXOM PZE 0
+*
+*-------------OUTPUT ITEM
+OM00 DAC ** RETURN ADDR
+ STA T8OM
+ SSP
+ STA T0OM R(0)=(A)='P' CODE
+ CAS K134
+ JMP *+2
+ JMP OMD1
+ LDA TXOM
+ CAS K101
+ JMP OME1
+ JMP OME5
+OM05 CRA
+ STA T1OM T(1)=0
+ STA T9OM T(9)=0
+ LDA A
+ STA T2OM T(2)=A
+ SZE
+ JMP OM07
+ LDA MFL
+ JMP OM13
+OM07 CAS L0
+ JMP *+2
+ JMP OML1
+ CAS ABAR
+ JMP OM76 A .LE. ABAR....WITHIN TRIAD TABLE
+ JMP *+1
+OM10 JST STXA SET INDEX=A
+ LDA DP,1
+ ARS 9 SES IM=MODE OF ITEM
+ ANA K107
+OM13 STA IM
+OM14 LDA MFL SET MFL,IM AS DIGITS INTO NAMF
+ ALS 8
+ ADD IM
+ ERA OM90 ADD '0''0'
+ STA NAMF+1
+ LDA K130
+ STA 0 INDEX=-6
+ LDA T0OM
+ CAS OM50+6,1 CHECK FOR SPECIAL OPERATOR
+ JMP *+2 '1
+ JMP* OM52+6,1 'P'='Q',',','0','A'F', OR 'E'
+ IRS 0
+ JMP *-4
+ LDA MFL
+ SNZ
+ JMP OM62 SPECIAL LIBRARY FIX FOR ( A= )
+ CAS IM CHECK FOR MODE MIXING
+ JMP *+2
+ JMP OMA1 ITEM MODE SAME AS CURRENT MODE
+OM20 LDA K103
+ JST OM44 CHECK MODE FOR LOG
+ LDA K102 =2 (MODE CODE FOR REAL)
+ CAS MFL MODE OF EXPRESSION
+ JMP *+2
+ JMP OM26 IF MODE=REAL, ALLOW COMPLEX MODE MIXING
+ CAS IM MODE OF ITEM
+ JMP *+2
+ JMP OM26 IF MODE=REAL, ALLOW COMPLEX MODE MIXING
+ LDA K105
+ JST OM44 TEST FOR MODE = COMPLEX
+OM26 LDA T0OM OPERATOR BEING PROCESSED
+ CAS K153
+ JMP *+2
+ JMP OM36 T(0)='=' (ALLOW INTEGER MODE)
+ LDA K101
+ JST OM44 TEST FOR MODE=INTEGER
+ LDA IM
+ CAS MFL
+ JMP OM38 CONVERT MODE OF ACCUMULATOR
+ JMP *+1
+OM30 JST NF00 SET LBUF+2 TO SPACES
+ LDA T0OM
+ STA 0
+ LDA A9X4,1 PICK-UP PRINT CODE FOR 'P' OPERATOR
+ ARS 6
+ ANA K100 ='377
+ SNZ
+ JMP OM46 MODE MIXING ERROR
+ LGL 8
+ ERA OM91 ADD '$'
+ STA NAMF
+ LDA K134
+ STA T0OM T(0)=','
+ JMP OM40
+*
+OM36 LDA K105
+ JST OM44 CHECK FOR MODE=COMPLEX
+OM38 LDA IM
+ STA MFL
+ JST NF00 SET LBUF+2 TO SPACES
+ LDA OM92 'C$'
+ STA NAMF
+OM40 JST CN00 OUTPUT....CALL NAMF
+ LDA MFL
+ STA IM SET ITEM MODE TO CURRENT MODE
+ LDA NAMF
+ CAS OM96
+ JMP OM14
+ JMP* OM00
+ JMP OM14 OUTPUT ARGUMENT ADDRESS
+*
+*-----SUBROUTINE TO CHECK FOR ILLEGAL IM OR MFL MODES,
+OM44 DAC ** RETURN ADDR,
+ CAS IM CHECK FOR IM0(A)
+ JMP *+2
+ JMP OM46 ERROR
+ CAS MFL CHECK FOR MFL=(A)
+ JMP* OM44
+ JMP OM46 ERROR
+ JMP* OM44
+OM46 JST ER00 NON-RECOVERABLE ERROR......
+ BCI 1,MM MODE MIXING ERROR
+*
+*------SPECIAL 'P' OPERATOR TABLE
+OM50 OCT 32 'Q'
+ OCT 17 ','
+ OCT 00 '0'
+ OCT 22 'A'
+ OCT 31 *F'
+ OCT 20 'E'
+OM52 DAC OMB3 ('Q')
+ DAC OMB3 (',')
+ DAC OMB3 ('0')
+ DAC OM56 ('A')
+ DAC OM60 ('F')
+ DAC OM70 ('E')
+*
+*
+OM56 LDA OMI1 SET T(1) = ADD*
+ JMP OMB1
+*
+OM60 JST STXA SET INDEX = A
+ LDA DP+1,1
+ LGR 14 SET UV=IU(A)
+ STA IU
+ JST STXI SET INDEX=I
+ LDA DP+2,1 P(I)
+ ANA K133 ='77
+ SNZ
+ JMP OM64 (POSSIBLE DUMMY ARRAY FETCH)
+OM62 LDA IM
+ STA MFL SET CURRENT MODE TO ITEM MODE
+ LGL 8
+ ADD IM
+ ERA OM90
+ STA NAMF+1
+ LDA IU
+ SUB K101 CHECK FOR IU=1 (SUBROUTINE)
+ SZE
+ JMP OMA1
+ LDA OMI2 SET T(1) = JST
+ JMP OM66
+OM64 LDA IU
+ SUB K103 CHECK FOR IV=3 (ARRAY)
+ SZE
+ JMP OM62
+ LDA K101 SET CURRENT MODE TO INTEGER
+ STA MFL
+ LDA OMI3 SET T(1) = LDA*
+OM66 STA T1OM
+ JMP OMB3
+*
+OM70 LDA K101
+ CAS IM CHECK ITEM MODE EQUALS INTEGER
+ JMP *+2
+ JMP OM74
+ LDA K105 CHECK FOR MODE = COMPLEX
+ JST OM44
+ JMP OM20
+OM74 LDA K103 CHECK FOR MODE = LOGICAL
+ JST OM44
+ JMP OM30 OUTPUT SUBROUTINE CALL
+*
+OM76 JST STXA INDEX=A
+ LDA DP,1 02(A)
+ STA T2OM T(2)=02(A)
+ LDA DP+2,1 P(A)
+ ANA K133 ='77
+ SNZ
+ JMP OM84 P(A)='0' (SUBSCRIPTED VARIABLE)
+ CAS K139
+ JMP *+2
+ JMP OM80 P(A) = 'X' (END OF ARRAY CALCULATION)
+ CAS K138
+ JMP *+2
+ JMP OMHW
+OM78 LDA T2OM P(4)= 'H' (HOLLERITH DATA)
+ STA A RESET A
+ JMP OM10
+*
+OM80 JST STXI INDEX=I
+ LDA T2OM
+ STA DP+1,1 O1(I) = T(2)
+ CRA
+ STA T1OT SET T(1) OF OUTPUT TRIADS TO ZERO
+ LDA A SAVE A
+ STA T1OM
+ CRA SET A=0 (NOT SYMBOLIC)
+ STA A
+ LDA RPL
+ ADD K102 AF = RPL+ 2
+ STA AF
+ LDA OMI4 =ADD INSTRUCTION
+ JST OR00 OUTPUT RELATIVE
+ LDA RPL
+ ADD K102 AF = RPL P+ 2
+ STA AF
+ LDA OMI5 = JMP INSTR,
+ JST OR00 OUTPUT RELATIVE
+ LDA T1OM
+ STA A RESTORE A
+ STA SOF SET SPECIAL OUTPUT FLAG TO NON-ZERO
+ CRA = DAC INSTR.
+ STA T1OM
+ LDA K101
+ STA AT
+ JMP OM88
+OM84 LDA DP+1,1 O1(A)
+ STA A A=O1(A)
+ CAS L0
+ JMP *+2
+ JMP OM86 A=L(0)....CONSTANT SUBSCRIPT ONLY
+ LDA OMI0 T(1) = INDIRECT BIT
+ STA T1OM
+ JMP OM10
+*
+OM86 LDA T2OM A=T(2)
+ STA A
+ STA 0
+ STA SOF
+ LDA DP,1 T(2) = 02(A)
+ STA T2OM
+OM88 JST STXA INDEX=A
+ LDA DP+1,1 O1(A)
+ STA T9OM T(9)=O1(A)
+ JMP OM78
+OMHW LDA T2OM
+ STA AF
+ CRA
+ STA A
+ JST OR00
+ JMP* OM00
+*
+OM90 OCT 130260 '00'
+OM91 OCT 000244 ' $'
+OM92 OCT 141644 'C$'
+OM93 OCT 152322 'TR'
+OM94 OCT 000021 'C' CODE
+OM95 OCT 017777 (MASK)
+OM96 BCI 1,N$
+OM97 BCI 1,-1
+*
+OMA1 LDA IM CHECK FOR IM=LOGICAL
+ CAS K103
+ JMP *+2
+ JMP OMC1 IM=LOGICAL
+ CAS K101 CHECK FOR IM=INTEGER
+ JMP *+2
+ JMP OMA3 IM=INTEGER
+ JMP OM30
+*
+OMA3 LDA T0OM CHECK FOR T,0) = '+'
+ CAS K103 =3
+ JMP *+2
+ JMP OMA4 T(0)= '*'
+ CAS OM94 T(0) = 'C
+ JMP *+2
+ JMP OMA6 OUTPUT 'TCA'
+ CAS K101
+ JMP OMA5
+ LDA OMI4 =ADD INSTR.
+ JMP OMB1
+OMA4 LDA T2OM VALUE OF A
+ SUB K126 ='12 KNOWN LOCATION OF A FOR 2
+ SZE SMP IF MULTIPLIER IS A CONSTANT OF 2
+ JMP OM30 COUPLE TO THE MULTIPLY SUBROUTINE
+ STA A SET A AND AF TO ZERO (FOR LISTING FLAGS)
+ STA AF
+ LDA *+3 ALS 1 INSTRUCTION
+ JST OA00 OUTPUT ABSOLUTE
+ JMP* OM00 EXIT UUTPUT ITEM
+ ALS 1 (INSTRUCTION TO BE OUTPUT)
+OMA5 CAS K102 CHECK FOR T(0) = '-'
+ JMP OMA7
+ LDA OMI6 =SUB INSTR,
+ JMP OMB1
+OMA6 CRA
+ STA A CAUSE OCTAL ADDR LISTING
+ STA AF
+ LDA *+3 TCA
+ JST OA00 OUTPUT ABSOLUTE
+ JMP* OM00 EXIT
+ TCA
+OMA7 CAS K153 CHECK FOR T(0) = '='
+ JMP *+2
+ JMP OMA9 OUTPUT A STA INSTR,
+ SUB K152 CHECK FOR T(0) = 'F'
+ SZE
+ JMP OM30
+OMA8 LDA OMI7 =LDA INSTR,
+ JMP OMB1
+OMA9 LDA OMI8 =STA INSTR,
+OMB1 ADD T1OM T(1) = T(1) + INSTR.
+ STA T1OM
+OMB3 LDA T2OM SET A=T(2)
+ STA A
+ LDA T9OM OUTPUT INSTR. WITH T(1) AND T(9)
+ IAB
+ LDA T1OM
+ JST OB00 OUTPUT OA
+ LDA T8OM CHECK FOR T(8) = '='
+ CAS K153 ='16
+ JMP* OM00
+ JMP *+2
+ JMP* OM00 EXIT
+ LDA TRFA POINTER TO FIRST VARIABLE OR ARRAY
+ STA A PROCESSED IN EXPRESSION
+ JST TRSE OUTPUT TRACE COUPLING IF REQUIRED
+ JMP* OM00 EXIT OUTPUT ITEM
+*
+*
+OMC1 LDA T0OM
+ CAS K152 CHECK FOR T(0) = 'F'
+ JMP *+2
+ JMP OMA8 OUTPUT A LDA INSTR.
+ CAS K153 CHECK FOR T(0) = '='
+ JMP *+2
+ JMP OMA9 OUTPUT A STA INSTR,
+ CAS OM94 CHECK FOR T(0) = 'C'
+ JMP *+2
+ JMP OM30 OUTPUT COMPLEMENT CODING
+ CAS K106
+ JMP *+2
+ JMP OMC5 OUTPUT AN ANA INSTR.
+ CAS K107
+ JMP OM46 ERROR
+ JMP OM30
+ JMP OM46 ERR0R
+OMC5 LDA OMI9 =ANA INSTR.
+ JMP OMB1
+OMD1 IRS TXOM T0 = T0+1
+ JMP OM05
+OME1 CRA
+ STA DF DF = 0
+ JST OA00 OUTPUT ABSOLUTE
+OME5 CRA
+ STA TXOM T0 = 0
+ JMP OM05
+*
+TRSE DAC 0 SUBROUTINE TO OUTPUT TRACE COUPLING
+ JST STXA SET INDEX = A
+ SZE
+ LDA DP+4,1 CHECK STATUS OF TRACE TAG
+ SPL
+ JMP TRS7
+ SR4
+ JMP TRS7
+ LDA TRF CHECK STATUS OF TRACE FLAG
+ SNZ
+ JMP* TRSE
+TRS7 JST NF00 SET LBUF TO 'F$', LSUF+2 TO SPACES
+ LDA OM93 ='TR'
+ STA NAMF+1
+ JST CN00 OUTPUT.....CALL NAMF
+ JST STXA SET INDEX = A
+ LDA DP+4,1
+ ANA OM95
+ STA T1OM
+ LDA DP+3,1
+ STA T8OM
+ LDA DP+2,1
+ STA T9OM
+ CRA
+ STA DF
+ LDA DP,1 MERGE IM WITH ITEM NAME
+ ARS 9
+ LGL 13
+ ERA T1OM
+ JST OA00 OUTPUT ABSOLUTE (FIRST 2 CHAR.)
+ LDA T8OM
+ JST OA00 OUTPUT ABSOLUTE (NEXT 2 CHAR.)
+ LDA T9OM
+ JST OA00 OUTPUT ABSOLUTE (LAST 2 CHAR.)
+ JMP* TRSE
+*
+*.................INSTRUCTION TABLE
+OMI0 OCT 100000 INDIRECT BIT
+OMI1 OCT 114000 ADD*
+OMI2 OCT 020000 JST
+OMI3 OCT 104000 LDA*
+OMI4 OCT 014000 ADD
+OMI5 OCT 002000 JMP
+OMI6 OCT 016000 SUB
+OMI7 OCT 004000 LDA
+OMI8 OCT 010000 STA
+OMI9 OCT 006000 ANA
+OMJ1 OCT 102000 JMP*
+OMJ2 OCT 101040 SNZ
+OMJ3 OCT 101400 SMI
+OMJ4 ALS 16
+OMJ5 OCT 040461 LGR 15
+OMJ6 OCT 141216 ACA
+OMJ7 OCT 140407 TCA
+OMK1 OCT 140401 CMA
+OMK2 OCT 101001 SSC
+OMK3 OCT 141206 AOA
+OMK4 OCT 140500 SSM
+OMK5 OCT 042000 JMP 0,1
+OMK6 OCT 000000 DAC **
+ ALS 1 ALS1
+ TCA TCA
+OMK7 OCT 176000 STG
+OMK9 CAS 0 CAS
+ STA* 0
+ SUB* 0
+ DAC* **
+ OCT 131001
+ OCT 030000 SUBR
+ CAS* 0
+OMK8 OCT 0 (///)
+OML1 LDA K101
+ STA AT
+ JMP OT10
+*
+* ************
+* *OUTPUT REL*
+* ************
+* ALSO DRIVES SYMBOLIC INSTRUCTION OUTPUT.
+OR00 DAC **
+ STA FTOP
+ LDA K102 DF = NON ZER0
+ STA DF CODE = 2
+OR10 STA CODE
+ LDA RPL LIST RPL
+ SSP
+ JST OR80
+ DAC PRI
+OR12 LDA DF IF DF NOT ZERO
+ SZE
+ JMP OR20 GO TO OR20
+ LDA OR18 ='147703
+ STA PRI+5
+ LDA OR19 SET 'OCT' INTO PRINT IMAGE
+ STA PRI+6
+ LDA FTOP
+OR13 JST OR80
+ DAC PRI+8
+OR15 LDA RPL IF RPL PLUS
+ SMI
+ JST OW00 OUTPUT WORD
+ SR2
+ JMP *+3 SURPRESS SYMBOLIC OUTPUT
+ CALL F4$SYM LIST LINE
+ DAC PRI
+ JST PRSP SET PRINT BUFFER TO SPACES
+ JMP* OR00 RETURN
+OR18 OCT 147703 (0)(C)
+OR19 OCT 152240 (T)(SP)
+OR20 JST SAV
+ LDA OR90 SEARCH OP-CODE LIST
+ TCA
+ STA XR PUT BCI IN PRINT IMAGE
+ LDA FTOP
+ SSP
+ SZE
+ JMP OR24
+ LDA AT
+ CAS K103
+ SUB K106
+ ADD K102
+ CMA
+ ANA K107
+ STA CODE
+OR24 LDA FTOP
+ CAS OR91+NINS,1
+ JMP *+2
+ JMP *+3
+ IRS XR
+ JMP *-4
+ LDA OR92+NINS,1
+ STA PRI+5
+ LDA OR93+NINS,1
+ STA PRI+6
+ JST RST
+ LDA A
+ SZE
+ JMP OR30
+ LDA AF
+ ANA K111 MASK OUT HIGH BITS OF ADDRESS
+ JMP OR13
+OR30 JST STXA
+ LDA DP,1
+ SMI
+ JMP OR40
+ LDA K149
+ STA PRI+8 SET =' INTO LISTING
+ LDA DP,1 CHECK IM (A)
+ LGL 4
+ SPL SKIP IF NOT COMPLEX
+ JMP *+4
+ LGL 2
+ SPL SKIP IF INTEGER OR LOGICAL
+ JMP *+3
+ LDA DP+2,1
+ JMP *+2 LIST EXPONENT AND PART OF FRACTION
+ LDA DP+4,1 LIST INTEGER VALUE
+ JST OR80 CONVERT OCTAL
+ DAC PRI+9
+ JMP OR15
+OR40 LDA DP+4,1 CONVERT AND PACK INTO
+ ALR 1
+ SSM SYMBOLIC IMAGE
+ ARR 1
+ SSM
+ STA PRI+8
+ LDA DP+3,1
+ STA PRI+9
+ LDA DP+2,1
+ STA PRI+10
+ JMP OR15
+* ***********
+* *OUTPUT ABS*
+* ***********
+OA00 DAC **
+ STA FTOP
+ LDA OA00
+ STA OR00
+ CRA
+ JMP OR10
+* *******************
+* *OUTPUT STRING-RPL*
+* *******************
+OS00 DAC 00
+ STA AF
+ LDA OMK7
+ STA FTOP
+ LDA OS00
+ STA OR00 SET RETURN INTO OUTPUT REL
+ LDA K104
+ STA CODE
+ STA STFL STRING FLAG = NON ZERO
+ JST PRSP SET PRINT BUF. TO SPACES
+ JMP OR20 JMP-OUTPUT REL FOR SYMBOLIC AND BINARY
+OR80 DAC **
+ IAB
+ LDA* OR80
+ STA OR89
+ CRA
+ LRR 2
+ IRS OR80
+ JST OR85
+ JST OR85
+ JST OR85
+ JMP* OR80
+OR85 DAC **
+ ADD K140
+ LLR 3
+ LGL 5
+ ADD K140
+ LLL 3
+ STA* OR89
+ IRS OR89
+ CRA
+ JMP* OR85
+OR89 PZE 0
+OR90 DAC NINS
+K200 EQU OMI7
+K201 EQU OMI5
+K202 EQU OMI8
+K203 EQU OMI4
+K204 EQU OMI6
+K205 EQU OMJ3
+K206 EQU OMJ1
+K207 EQU OMK5
+OR91 EQU OMI1
+OR92 BCI 22,ADJSLDADJMSULDSTANJMSNSMLLLRACTCCMSSAOSSJMDA
+ BCI 2,ALTC
+ BCI 9,STCASTSUDAERSUCA//
+OR93 BCI 22,D*T A*D P B A A A P*Z I 1515A A A C A M PXC
+ BCI 2,S1A
+ BCI 9,G S A*B*C*R/BRS*/
+NINS EQU 32
+*
+PRSP DAC ** SUBR. T0 SET PRINT BUF. T0 SPACES
+ LDA PRSK =-40
+ STA 0
+ LDA KASP (SP)(SP)
+ STA PRI+40,1
+ IRS 0
+ JMP *-2
+ JMP* PRSP EXIT
+PRSK OCT 177730 =-40
+*
+* *************************************
+* *OUTPUT SUBROUTINE/COMMON BLOCK NAME*
+* ************************************
+* OUTPUT AN EXTERNAL REFERENCE NAME.
+*
+ON00 DAC **
+ STA ONT1 SAVE ADDRESS
+ JST FS00 FLUSH BUFFER IF NECESSARY
+ JST STXA SET INDEX=A
+ LDA ONT1 SUBR. ENTRY ADDR.
+ LRL 14
+ STA ONT1 SAVE S/C BITS
+ LDA ON02 ='600 (=BLOCK CODE NO.)
+ LLL 6
+ STA OCI FILL BUFFER
+ LRL 8
+ JST STXA SET INDEX=A
+ LDA DP+4,1 FIHST 2 CHAR. 0F NAME
+ ANA K111 ='037777
+ CAS *+1
+ OCT 020240
+ ERA K122
+ ERA HBIT ='140000
+ LRR 8
+ STA OCI+1 BUFFER
+ LRL 8
+ LDA DP+3,1 SECOND 2 CHAR. OF NAME
+ LRR 8
+ STA OCI+2 BUFFER
+ LRL 8
+ LDA DP+2,1 LAST 2 CHAR. OF NAME
+ LRR 8
+ STA OCI+3 BUFFER
+ LLL 8
+ LGL 2
+ ADD ONT1 S/C BITS
+ LGL 6
+ STA OCI+4 BUFFER
+ CRA SET SIZE = 0
+ STA OCI+5 8UFFER
+ LDA K128 ='14
+ STA OCNT SET 8LOCK SIZE (DOUBLED)
+ JST FS00 FLUSH BUFFER
+ JMP* ON00 EXIT
+ON02 OCT 600 BLOCK CODE NUMBER (6)
+ONT1 OCT 0 TEMP STORE
+*
+K149 BCI 1,='
+K140 OCT 26
+*
+OW00 DAC **
+ JST SAV
+ LDA RPL
+ SUB ORPL
+ SPL
+ TCA
+ CAS K101
+ JST FS00 FLUSH BUFFER IF DIFFERENCE IN RPL'S N0T 1
+ NOP
+ LDA OCNT
+ ADD K103
+ CAS K146
+ NOP
+ JST FS00 FLUSH BUFFER
+ LDA OCNT
+ ADD K103
+ STA OCNT OCNT = OCNT+3
+ SUB K103
+ ARR 1 OCI (OUTPUT CARD IMAGE)
+ STA XR
+ SMI LEFT OR RIGHT POS,
+ JMP OW20
+ JST PU00
+ LRL 8 IF BUFFER FULL
+ IMA OCI,1
+ ANA K116 CALL FLUSH (FS0O)
+ ERA OCI,1
+OW10 STA OCI,1
+ IAB
+ STA OCI+1,1
+ LDA PRI+16
+ IAB
+ LDA PRI+14 USE LOW BIT OF PRI+14 DATA
+ LLL 9
+ LGR 1 STRIP OFF HIGH BIT OF BLOCK CODE TYPE NO,
+ LLL 3 SET DIGITS IN PRI+17, PRI+19
+ JST OR80
+ DAC PRI+16
+ LDA PRI+14
+ LRL 6
+ LGL 1 SHIFT ADDR. TO RIGHT BY 1 BIT
+ LLL 5
+ JST OR80 SET DIGITS IN PRI+15, PRI+16
+ DAC PRI+14
+ LDA KASP (SP)(SP)
+ SR1
+ JMP OW14
+ STA PRI+15 OVERWRITE BINARY DATA IN
+ STA PRI+16 PRINT BUFFER WITH SPACES
+ STA PRI+17 IF NO BINARY LISTING IS WANTED
+ STA PRI+18
+OW14 STA PRI+14
+ JST RST
+ LDA RPL
+ STA ORPL ORPL=RPL
+ CRA
+ IMA STFL INDICATE WORD WAS KEY TO LOADER
+ SNZ THEN LEAVE RPL ALONE
+ IRS RPL RPL = RPL+1
+ JMP* OW00
+STFL PZE 0
+OW20 JST PU00
+ JMP OW10
+ORPL PZE 0
+PU00 DAC **
+ LDA CODE COMBINE CODES TO
+ CAS K104 =4
+ NOP
+ JMP PU10
+ SZE SKIP IF ABS
+ JMP PU10 JUMP IF REL.
+ LRL 8
+ LDA FTOP
+PU08 LRL 4
+ STA PRI+14 SAVE FOR LISTING
+ IAB
+ STA PRI+16
+ LRR 12 RESTORE POSITION
+ JMP* PU00
+PU10 LRL 4
+ LDA AF
+ LRL 4
+ ERA FTOP
+ JMP PU08
+PU20 LRL 4
+ LDA AF
+ ANA K111
+ LRL 4
+ IMA AF
+ ANA K114
+ ERA AF
+ JMP PU08
+K114 OCT 14000
+K146 OCT 117
+*
+*
+* ******************
+* *FLUSH SUBROUTINE*
+* ******************
+FS00 DAC **
+ LDA OCNT BUFFER OCCUPANCY SIZE
+ JST SAV SAVE INDEX REGESTER
+ SUB K104 CHECK FOR OCNT .GT. 4
+ SPL
+ JMP FS20 SKIP OUTPUT IF BUFFER IS EMPTY
+ ADD K105 ADD 1/2 AT B14
+ ARS 1 DIVIDE BY 2
+ TCA
+ STA OCNT OCNT = -WORDS/BUFFER
+ SUB K101 =1
+ STA PCNT BUFFER SIZE INCLUDING CHECKSUM
+ LDA OCI FIRST WORD IN BUFFER
+ LRL 12
+ CAS K102 =2
+ JMP *+2
+ JMP FS30 BLOCK TYPE = 2 (RELOCATABLE CODE)
+* EVERY TIME A BLOCK OF OBJECT OUTPUT IS DUMPED, THE FIRST
+* 3 WORDS OF THE BLOCK IS INSERTED IN THE SYMBOLIC OUTPUT
+* ALONG WITH AN EOB OPERATOR CODE IF SENSE SWITCH 1 1S DOWN.
+* TO INHIBIT THIS LINE, REPLACE FROM FS10 TO AND INCLUDING
+* FS11 WITH (FS10 CRA ).
+FS10 SS1
+ JMP FS11 N0 BINARY LISTING UNLESS SSW-1 IS DOWN
+ CALL F4$SYM
+ DAC PRI OUTPUT WHATEVER MIGHT BE IN SYMBOLIC BUF.
+ LDA FS41 =(E)(O)
+ STA PRI+5 ENTER 'EOB' INTO LISTING
+ LDA FS41+1 =(B)(SP)
+ STA PRI+6
+ LDA OCI
+ JST OR80 ENTER FIRST WORD FROM BUFFER INTO LISTING
+ DAC PRI+8
+ LDA OCI+1
+ JST OR80 ENTER WORD 2 FROM BUFFER INTO LISTING
+ DAC PRI+12
+ LDA OCI+2
+ JST OR80 ENTER WORD 3 FROM BUFFER INTO LISTING
+ DAC PRI+16
+ CALL F4$SYM OUTPUT SYMBOLIC BUFFER
+ DAC PRI
+ JST PRSP RESET SYMBOLIC BUFFER TO SPACES
+FS11 CRA
+ STA 0 COMPUTE CHECKSUM
+FS12 ERA OCI,1 MERGE BUFFER WORD INTO CHECKSUM
+ IRS 0 INCREMENT BUFFER POSITION
+ IRS OCNT DECREMENT BUFFER SIZE
+ JMP FS12
+ STA OCI,1 SET CHECKSUM INTO BUFFER
+ LDA PCNT = NO. OF WORDS IN BUFFER
+ IMA 0
+ ADD FS40 = OCI+1,1
+ CALL F4$OUT PUNCH BUFFER
+FS20 LDA RPL SET UP BUFFER FOR NEXT OUTPUT
+ LRL 8
+ ADD K145 =#'2000 (BLOCK CODE 2)
+ STA OCI
+ IAB
+ STA OCI+1 SET FIRST 2 WORDS OF BUFFER
+ LDA K103 =O
+ STA OCNT RESET BUFFER OCCUPANCY SIZE
+ JST RST RESET INDEX REGISTER
+ JMP* FS00 EXIT
+*
+FS30 LGL 6 MERGE BUFFER SIZE INTO BLOCK HEADER
+ SUB OCNT BUFFER SIZE
+ ADD K101 =1 (ACCOUNT FOR CHECKSUM)
+ LLR 6
+ LGR 6
+ LLL 6 BRING IN UPPER HALF OF ADDRESSES
+ STA OCI STORE INTO BUFFER
+ JMP FS10 COMPUTE CHECKSUM
+*
+FS40 DAC OCI+1,1
+FS41 BCI 2,EOB 'EOB'
+K145 OCT 20000 BLOCK TYPE 2 CODE
+C499 OCT 060000
+*
+OCI BSS 40 40 WORD CARD IMAGE INPUT BUFFER
+PRI BSS 40 40 WORD PRINT BUFFER
+ BCI 20,
+ BSS 30 COMPILER PATCH AREA
+*
+* ***********************
+* *IOS (AND IOL) GO HERE*
+* ***********************
+*
+ END A0