mirror of
https://github.com/kenrector/sds-kit.git
synced 2026-01-26 03:51:28 +00:00
630 lines
16 KiB
Plaintext
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
|