Files
kenrector.sds-kit/symbol/section-2b.si
2021-02-15 21:10:40 -08:00

630 lines
16 KiB
Plaintext

* SYMBOL LOADER
*
AORG 04000
S9300 EQU 0
X0 EQU S9300
X2 EQU 2-S9300
CAB OPD 04500004
CBA OPD 04600010
CAX OPD 04600400
CXA OPD 04600200
CBX OPD 04600020
CNA OPD 04601000
SKE OPD 05000000
SKR OPD 06000000
MUL OPD 06400000
DIV OPD 06500000
ADM OPD 06300000
XMA OPD 06200000
SICT RES 1
BOCT RES 1
LOCT RES 1
ONEIO RES 1
ANYIO RES 1
SIC RES 1
PC DATA 0
PLC DATA 0
VCHR DATA '/'
DCHR DATA 057
M3 DATA 02000000-3
M6 DATA 00200000-6
LSICT DATA SICT
LLOCT DATA LOCT
CR DATA 052
CHR DATA 0
DEVICE DATA 'M','T','P','C','L'
FNCS DATA 'SI ','BO ','LO '
STRT BRTW
BRU STRT
RKB 0,1,1
RESET LDA Z CLEAR I/O INDICATORS
STA SICT
STA BOCT
STA LOCT
STA MLOC
LDA LSICT
STA PC INITIALIIZE POINTER
LDB P63
CIN WIM CHR
LDA CHR
SKM DCHR WAIT FOR DELTA
BRU CIN
NXTCHR WIM CHR
LDA CHR
SKM VCHR RESET UPONSLASH
BRU $+2
BRU RESET
SKM CR FINISH UPON CARRIAGE RETURN
BRU $+2
BRU LOADIO
ETR P63
ABC
LDA PC
SKG LLOCT
STB *PC
MIN PC
LDB P63
BRU NXTCHR GET NEXT CHARACTER
LOADIO DSC 0
LDB M1 COMPUTE MEMORY SIZE
LDA BIGADR 18K FOR 900 SERIES, 34K FOR 9300
M2K SUB B12 SUBTRACT
STA HIGH 2K
STA *HIGH
SKM *HIGH SKIP WHEN F1N1SHED
BRU M2K
BPT 1
BRU EITHER
* BPT 2 REMOVE ASTERISK FROM MAG TAPE LOAD
* BRU EITHER ROMOVE ASTERISK FOR MAG TAPE LOAD
BRU LIO3
EITHER LDA SETUP
BPT 2
* ADD P REMDVE ASTERISK FROM MAG TAPE LOAD
STA SETUP
LDX M4,X0
SETUP LDA CARDS+4,X2
STA READY+4,X2
BRX SETUP,X0
LDA *SETUP
STA BERROR
LIO3 SKR NEG
BRU LIO 910
LDX LENGTH,X0
LDA END920,X2
STA END920-D,X2
BRX $-2,X0
LDA NEWEND
SKR COMP93 TEST FOR 9300
LDA ORG93 YES. ORIGIN I/O AT 3164
STA BIAS NO. ORIGIN I/O AT 0233
STA NWBIAS
LIO BRM READ READ ONE RECORD (1ST EEXTRNAL DEFS)
LDA N1 RESET LOAD1NG INDICATORS
STA ONEIO
STA ANYIO
LDA LDW1 INITIALIZE POINTER
STA WD1
LDA CT
STA PC
LOOK LDX WD1,X0
LDA 0,X2 ACESS EXTERNAL DEF
LDB 1,X2
RSH 18
ETR P63 MOST SIGNIFICANT CHARACTER IN A
XAB 2ND,3RD CHARACTERS LEFT JUST, IN A
LDX M4,X0
STB CHR
LDB N1
BRX $+2,X0 EXHAUST CHECK AFTER 3 ATTEMPTS
BRU NEXTL
SKM FNCS+3,X2 CHECK FOR SI,BO OR LO.
BRU $-3 NO
LDA CHR YES
SKM SICT+3,X2 CHECK FOR COINCIDENCE OF 1ST CHAR
BRU NOLOAD NO
LDA Z YES
LDX WD1,X0 DEF HAS SERVED ITS PURPOSE
STA 0,X2 CLEAR
MIN ONEIO FLAG TO LOAD
LDA CHR
NOLOAD LDX M6,X0 DETERMINE WHETHER 1ST CHAR COINCIDES
BRX $+2,X0 WITH ANY LEGITIMATE 1ST CHAR
BRU NEXTL
SKM DEVICE+5,X2
BRU $-3
MIN ANYIO IF SO, MAKE INDICATOR POSITIVE
NEXTL LDA P3 ADYANCE POINTER TO NEXT EXTERNAL DEF
ADD WD1
STA WD1
LDA PC CHECK FOR END OF RECORD
SUB P3
STA PC
SKG Z
BRU $+2 YES
BRU LOOK NO, ACCESS NEXT DEF
SKN ANYIO IF ANYIO STILL NEG, RECORD NOT I/O
BRU $+3 STILL I/O
BRU FINIO
READIO BRM READ
SKN ONEIO DO NOT LOAD IF ONEIO STILL NEGATIVE
BRM LOAD
LDA CW CHECK FOR END RECORD
SKA P2B21
BRU LIO
BRU READIO NO
FINIO LDA SICT
SKM DEVICE+1 T
BRU $+2 CHECK FOR PAPER TAPE
BRU STEOM OR TYPEWR1TER INPUT
SKM DEVICE+2 P
BRU LAP+1
LDA RPT
BRU $+2
STEOM LDA RKB
STA *NWBIAS
MIN NWBIAS
LDA P2 DETERMINE CYCLE TIME OF MACHINE
RSH 64 FOR PAER TAPE READ DELAY
LDB SLOW
SKG Z
LDB FAST
STB *NWBIAS
BRU LAP+1
CARDS CRT 0,1
BRU READY
NOP
RCB 0,1,4
BRU P1
TRT 0,0
BRTW
BRU READY
RTB 0,0,4
* BRU RECOV REMOVE ASTERISK FOR MAG TAPE LOAD
P5 DATA 5
M4 DATA 00200000-4
LENGTH DATA 00200000-END920+POP920
NEG DATA -1
NEWEND HLT END920-D
NWBIAS HLT ENDPOP
COMP93 HLT S9300
RPT RPT 0,1,1
RKB RKB 0,1,1
FAST DATA 00140000
SLOW DATA 00170000
ORG93 HLT Z+1
BIGADR DATA 040000*/S9300+2047
B12 DATA 2048
AORG 1
BRU STRT
CW RES 1
DW1 RES 26
TMP1 RES 1
IWD RES 1
RCTR RES 1
CTR RES 1
WDCT RES 1
CT RES 1
LOC RES 1
MLOC RES 1
ALFA RES 1
BETA RES 1
CHAIN RES 1
WD1 RES 1
BIAS HLT ENDPOP
LAP BRM READ
BRM LOAD
BRU LAP
* READ ONE RECORD FROM PAPER TAPE AND VER1FY
*
READ HLT ENTRY
* LDX M10,X0 REMOYE ASTERISK FROM MAGT LOAD
* STX WD1,X0 REMOVE ASTERISK FROM MAGT LOAD
READY NOP
NOP
NOP
RPT 0,1,4
WIM CW READ RECORD CONTROL WORD
BRTW
BRU $+2
BRU BERROR
LDA CW
RSH 15
ETR P63
SUB P2
STA WDCT STORE WORD COUNT LESS 2
STA CT
LDA LDW1
STA WDAD
LDA CW
READ3 WIM *WDAD PEAD ONE WORD
EOR *WDAD ACCUMULATE CHECKSLM
SKR WDCT
MIN WDAD
SKN WDCT
BRU READ3
WIM TMP1 EXHAUST RECORD
BRTW
BRU $-2
BETW
BERROR BRU P1
STA TMP1
RSH 12
EOR TMP1
LDB O7777
SKM WDCT
BRU BERROR
BRR READ
*REINSTATE FOLLOWIN CODE FOR MAG TAPE LOAD
*RECV TRT 0,0
* BRTW
* BRU $-2
* SRB 0,0,4
* BRTW
* BRU $-1
* LDX WD1,X0
* BRX READ+1,X0
P1 HLT 1 *STOP* (delta)W BUFFER ERROR
BRU READ+1 REREAD
*M10 DATA 0020000-10 REMOVE ASTERISK FOR MAG TAPE
* PROCESS VERIFIED RECORDS
LOAD HLT ENTRY
LDA LDW1
STA WD1
LDA CW
SKA P2B21
BRU END
SKA P1B21
BRU EXT
LTO BRU DATA USED AS CONSTANT
END LDA CT
SKA N1 TRANSFER ADDRESS
BRU NOPS YES
LDA DW1 NO
SKA P1B15
ADD BIAS
ETR MADR
STA LOC MAX LOCATION+1, CURRENT PR0GRAM
STA BIAS
BRR LOAD
P63 DATA 077
P1B15 DATA 0100000
P2B18 DATA 02000000
P1B21 DATA 010000000
P2B21 DATA 020000000
N1 DATA 077777777
ADDR EQU 1*/(14+S9300)-1
HIGH RES 1 MUST BE AT ASME LOC(0154) AS FOR ASSM
MADR DATA ADDR
MRDA DATA -1--ADDR
TL DATA 00200000-3
Z DATA 0
B0 DATA 040000000
M1 DATA -1
M23 DATA -23
MMO OPD 06000000
POP910 RES 0
BRU CAB
BRU CBA
BRU CAX
BRU CXA
BRU CBX
BRU CNA
BRU SKE
BRU SKR
BRU MUL
BRU DIV
BRU ADM
BRU XMA
CAB STA T
BRU SKE1
CBA STB T
BRU CXA1
MUL LDB Z
BRM SIGN
ABC
MUL1 RCY 1
STA T+2
LCY 1
SKN T+2
BRU $+2
ADD T+1
RSH 1
ETR RSL4
BRX MUL1
SKN 5
BRU MUL2
BRM DPN
MUL2 LDX T
BRR 0
DIV BRM SIGN
SKG T+1
BRU $+2
BRR $,4
DIV2 LCY 1
SUB T+1
EOR B0
SKA B0
BRU DIV1
EOR B0
ADD T+1
DIV1 BRX DIV2
LCY 1
STB T+1
ETR RSL4
RSH 25
LDA T+1
SKN S
BRU MUL2
EOR M1
SUB M1
XAB
EOR M1
SUB M1
XAB
BRU MUL2
SIGN HLT 0
STA T+2
EOR *0
STA S
EOR T+2
SKN *0
BRU SIGN1
EOR M1
SUB M1
SIGN1 STA T+1
LDA T+2
SKN T+2
BRU SIGN2
BRM DPN
SIGN2 STX T
LDX M23
BRR SIGN
DPN HLT 0
XAB
EOR M1
SUB M1
STA T+3
STB T+4
ABC
LDA M1
SKA T+3
BRU DPN1
LDA Z
DPN1 SUB T+4
BRR DPN
CXA STX T
CXA1 LDA T
BRR 0
CAX STA 1
CAX1 LDX T
BRR 0
CBX STB 1
BRU CAX1
CNA EOR M1
SUB M1
BRR 0
XMA STA T+1
LDA *0
STA T
LDA T+1
XMA1 STA *0
LDA T
BRR 0
ADM STA T
ADD *0
BRU XMA1
SKE STB T
LDB M1
SKM *0
BRU $+2
MIN 0
SKE1 LDB T
BRR 0
SKR MMO *0
NOP
SKN *0
BRR 0
MIN 0
BRR 0
RSL4 DATA 037777777
S RES 1
T RES 5
ENDPOP RES 0
POP920 RES 0
D EQU POP920-POP910
BRU CAB920+D
BRU CBA920+D
BRU CAX920+D
BRU CXA920+D
BRU CBX920+D
BRU CNA920+D
BRU SKE920+D
BRU SKR920+D
BRU MUL920+D
BRU DIV920+D
BRU ADM920+D
BRU XMA920+D
CAB920 CAB
BRR 0
CBA920 CBA
BRR 0
CAX920 CAX
BRR 0
CXA920 CXA
BRR 0
CBX920 CBX
BRR 0
CNA920 CNA
BRR 0
SKE920 SKE *0
BRR 0
SKIP2 MIN 0
BRR 0
SKR920 SKR *0
BRR 0
BRU SKIP2-D
MUL920 MUL *0
BRR 0
DIV920 DIV *0
BRR 0
ADM920 ADM *0
BRR 0
XMA920 XMA *0
BRR 0
END920 RES 0
RORG 07567
RORG 07566
F FORM 3,6,15
TEXT 8,Z
F 4,0,Z
TO RES 0
* PROCESS DATA RECORD
DATA LDX CT,X0
CLR
LDA DW1
SKA P2B18
LDB DW1,X2
SKA P2B18
SKR CT SUBTRACT RELOCATION WORD
SKA P1B15
ADD BIAS
ETR MADR
STA LOC STORE MODIFIED LOAD ADDRESS
* PROCESS DATA WORDS
SKR CT (CT) = NO. DATA WDRDS - 1
LDA LDW2
STA IWD
*
LLDA LDA *IWD (A) = CURRENT DATA WORD
STB ALFA
SKN ALFA
BRU $+2
ADD BIAS
STA *LOC
MIN LOC INCREMENT LOAD ADDRESS
MIN IWD INCREMENT DATA WORD ADDRESS
SKR CT
LSH 1
SKN CT
BRU LLDA
*
LDA MLOC
SKG LOC
LDA LOC
STA MLOC STORE CURRENT MAXIMUM LOAD ADDRESS +1
BRR LOAD EXIT
*
* ROUTINES FOR PROCESSING EXTERNAL REFS AND DEFS
* (RECORD TYPE 1)
* MATCH1NG TABLE ENTRY WAA A DEF
SRCH2 LDA ALFA
SRCH3 BRX $+1,X0
BRX SRCH1,X0
NSRT LDA TL
SUB P3
STA TL
LDX TL,X0
ADD LTO
ETR MADR
SKG MLOC
P3 DATA 3
LDA ALFA
STA TO,X2
LDB BETA
STB TO+1,X2
LDA LOC
STA TO+2,X2
NEXT1 LDA P3
ADD WD1
STA WD1
LDA CT
SUB P3
STA CT REDUCE WORD COUNT
SKG Z SKIP IF AT LEAST 3 MORE MORD
BRR LOAD EXIT
*
* PROCESS NEXT ITEM, HEREAFTER CALLED 'C'
EXT LDX WD1,X0 (X0) = LOC, OF 1ST WORD OF LABEL
LDA 2,X2 (B) = CHAINWORD OR VALUE WORD
SKA P1B15
ADD BIAS
STA LOC
LDA 0,X2
SKA M1 TEST FOR SPECIAL I/O IDENTIFIER
BRU $+2 NO
BRU NEXT1 YES, IGNORE
LDB 1,X2 (AB) = 8 CHAR LABEL OF C
*
* PROCESS EXTERNAL DEF OR REF
LDX TL,X0 SEARCH SYMBOL TABLE
STA ALFA
STB BETA
LDB N1
SRCH1 SKM TO,X2
BRX SRCH3,X0 NO MATCH
LDA BETA TENTATIVE MATHC
SKM TO+1,X2
BRX SRCH2,X0
LDA LOC
SKN TO+2,X2
BRU $+2
BRU TXDR X IS A DEF
SKN LOC
BRU TXRR C IS A REF
LDB TO+2,X2
XAB
STB TO+2,X2
TXDR ETR MADR
TXRD1 STA CHAIN ADDR OF A REF
LDA *CHAIN
EOR TO+2,X2
ETR MRDA
EOR TO+2,X2
LDB *CHAIN
XAB
STB *CHAIN
SKA MADR
BRU TXDR
BRU NEXT1 EXIT 1
* X AND C ARE BOTH REFS
TXRR ETR MADR ADDRESS OF 1ST REF IN NEW CHAIN
TXRR1 STA CHAIN
LDA *CHAIN
ETR MADR
SKA MADR
BRU TXRR1
LDA LOC NEW 1ST LINK
LDB TO+2,X2
XAB
STB TO+2,X2
ETR MADR REMOVE REF FLAG FROM OLD 1ST LINK
ADD *CHAIN
STA *CHAIN
BRU NEXT1 EXIT 3
NOPS NOP
LDB NOPS
LDX TL,X0 BE TO I/O ROUTINES
EAX 2,X2
POINT SKN TO,X2
BRU $+3 REF
ADV BRX NOPS+3,X0 DEF
BRU CW+2 FINISHED. BRANCH TO START
LDA POINT
STA ALFA
STEP STA BETA NOP REF CHAIN
LDA *BETA
ETR MADR
STA ALFA
STB *BETA
LDA ALFA
SKA MADR CHECK FOR END OF CHAIN
BRU STEP NO
BRU ADV ES
O7777 DATA 07777
LDW1 HLT DW1
P2 DATA 2
WDAD HLT DW1
LDW2 HLT DW1+1
END STRT