|
|
DataMuseum.dkPresents historical artifacts from the history of: RegneCentralen RC3600/RC7000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RegneCentralen RC3600/RC7000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 10752 (0x2a00)
Types: TextFile
Names: »LKACD«
└─⟦99bc78d90⟧ Bits:30001771 CALL-RUTINER under DP4-DOMAC
└─⟦this⟧ »/LKACD«
PRDE1 ; PROCESS HEAD
CDR11 ; ADDRESS OF CARDREAD REV 1.03
.TXT @CARDREAD@ ; NAME OF -------''-------
«ff»
; SUBRUTINETABEL
GME00 ; GMEM-ADRESSE
.TXT "GMEM<0><0><0><0>" ; NAVN
KSP00
.TXT "KODESPEC"
SME00
.TXT "SMEM<0><0><0><0>"
FIX00
.TXT "FIX<0><0><0><0><0>"
FLO00
.TXT "FLOAT<0><0><0>"
0
«ff»
GME00: 2
REAL
REAL+REFERENCE
LDA 2,+0,2 ; AC1=A-ADRESSE
EXECUTE
GSM00
RET1
LDA 1,+0,2 ; JA: AC1=INDHOLD AF ADRESSE
BCALL FLOAT ; AC1 -> KOMMATAL
LDA 2,U.STK,3
LDA @ 2,+1,2 ; AC2=B-ADRESSE
STA 2,GME01 ; GEM B-ADRESSE
LDA 2,CUR
A.PDOUBLE ; GEM ADRESSEINDHOLD(A) I B
1
GME01: 0
RET1 ; END GMEM
«ff»
GSM00: LDA 0,+0,2 ; HENT A
LDA 1,+1,2
BCALL FIX ; FIX A
ADCZR 2,2 ; AC2=1B0-1
MOV 0,0,SNR ; 0<=AC1<=1B0-1
SNG 1,2
JMP ERR90 ; NEJ: ERROR UDSKRIV MEDD.
MOV 1,2 ; AC1-->AC2
RET1 ; RETURN
ERR90: ERROR
90
ERR91: ERROR
91
KSP00: 0
READS 0
STA 0,KSP01
RET1
KSP01: 0
«ff»
SME00: 2 ; 2 VARIABLE
REAL ; A (=A-ADRESSE)
REAL ; B (=DATA)
LDA 0,KSP01 ; SE GME00
LDA 1,KSP02
SUB 1,0,SZR
JMP ERR90
LDA 2,+1,2 ; AC2(!)=B-ADRESSE
LDA 0,+0,2 ; HENT REAL(!) B
LDA 1,+1,2
BCALL FIX ; FIX B
MOV 0,0,SZR ; 0<=B<=65535 ?
JMP ERR91 ; NEJ ERROR-RETURN
STA 1,U.S00,3 ; GEM AC1(B) I U.S00.USER
LDA@ 2,U.STK,3
EXECUTE ; EXEC GSM00(A-ADRESSE)
GSM00
RET1
LDA 1,U.S00,3 ; AC1=F(UDA+U.S00)=B
STA 1,+0,2 ; AC1-->ADR.AC2
RET1 ; END STOREMEMORY
KSP02: 42798
«ff»
FIX00: 3
REAL+REFERENCE
REAL+REFERENCE
REAL+REFERENCE
SUBZL 0,0 ; AC0=1
LDA @ 1,+0,2 ; AC1=A-ADRESSE
LDA 2,CUR ; AC2=CUR
A.GDOUBLE ; HENT A
STA 0,U.S00,3 ; GEM ORD 1 AF A
SUBC 0,0 ; AC0=0
BCALL FLOAT ; FLOAT ORD2 AF A
LDA 2,CUR ; AC2=CUR
LDA 3,U.STK,3 ; AC3=F(F(USER)+U.STK)
LDA @ 3,+2,3 ; AC3=C-ADRESSE
STA 3,FIX01 ; GEM C-ADRESSE
A.PDOUBLE ; GEM FLOAT AF ORD2 AF A I B
1
FIX01: 0
LDA 1,U.S00,3 ; HENT ORD1 AF A
SUBC 0,0 ; AC0=0
BCALL FLOAT ; FLOAT ORD1 AF A
LDA 2,CUR ; AC2=CUR
LDA 3,U.STK,3
LDA @ 3,+1,3 ; AC3=B-ADRESSE
STA 3,FIX02 ; GEM B-ADRESSE
A.PDOUBLE ; GEM FLOAT AF ORD2 AF A I C
1
FIX02: 0
RET1 ; END FIX
«ff»
FLO00: 3
REAL
REAL
REAL+REFERENCE
LDA 2,+0,2 ; AC1=A-ADRESSE
EXECUTE ; EXEC FLO02
FLO02
RET0 ; HVIS ERROR
STA 1,U.S00,3 ; GEM DEL 1 AF C
LDA 2,U.STK,3
LDA 2,+1,2 ; AC1=B-ADRESSE
EXECUTE
FLO02
RET0
LDA 0,U.S00,3 ; HENT DEL 1 AF C
LDA 2,U.STK,3
LDA @ 2,+2,2 ; AC2=C-ADRESSE
STA 2,FLO01 ; GEM C-ADRESSE
LDA 2,CUR
A.PDOUBLE ; AC0,AC1-->C
1
FLO01: 0
RET1
FLO02: LDA 0,+0,2
LDA 1,+1,2 ; ** CB RET **
BCALL FIX ; LAV OM TIL HELTAL
MOV 0,0,SNR ; 0=<A/B=<32K ???
RET1 ; JA: RETURN
ERROR ; NEJ: RETURN MED ERROR 90
90.
«ff»
CDR11: 2 ; INCLUDE TWO PARAMETERS
REAL ; INFORMATOR
REAL+ARRAY ; DATA STORAGE
LDA 1,RSTAT ; LOAD RESERVATION STATUS
SZ 1,1 ; SKIP ON ROUTINE IDLE
JMP .-2 ; BY REPEATING
LDA 1,+5,2 ; LOAD MAX. NO OF ROWS
LO 0,0 ; 0=1
SEQ 0,1 ; SKIP IF NO OF ROWS=1
JMP ERR31
; JMP TO 'INDEKSFEJL'
LDA 1,DMADR ; LOAD ADDRESS OF CORE DUMP AREA
DOB 1,.CDR ; INSTRUCT CDR CONTROLLER
DOAS 0,.CDR ; READ A BINARY CARD
SKPBZ .CDR ; WAIT UNTIL BUSY=0
JMP .-1 ; REPEAT
DIBC 0,.CDR ; 0=LAST ADDRESS AND CLOSE DEVICE
STA 0,U.S05,3 ; STORE LAST CORE ADDRESS
SUB 1,0 ; NUMBER OF COLUMNS READ
LZ 1,1 ; 1=0
SNZ 0,0 ; SKIP IF NOT ZERO
JMP ERR10 ; IF ZERO JMP TO 'KORTLÆSNINGSFEJL'
LZ 0,0 ; 0=0
DOA 0,.CDR ; READ STATUS WORD
DIA 0,.CDR ; INPUT STATUS WORD
STA 0,ERRCODE ; SAVE ERROR CODE
SZ 0,0 ; SKIP IF 0=0
JMP ERR10 ; JUMP TO 'KORTLÆSNINGSFEJL'
;«ff»
; ***** READY FOR CONVERTING & TRANSFER ******
LDA 2,0,2 ; 2=ADDRESS OF REAL
LDA 0,0,2 ; 0= 1. WORD OF REAL
LDA 1,1,2 ; 1= 2. WORD OF REAL
BCALL FIX ; FIX REAL
SNZ 1,1 ; SKIP IF NOT ZERO
JMP ASCII ; JUMP TO ASCII CONVERSION
LO 0,0 ; 0=1
SNE 1,0 ; SKIP IF 0 NOT EQUAL TO 1
JMP NUMBER ; JUMP TO NUMBER CONVERSION
SNART: LDA 2,U.STK,3 ; LOAD STACKPOINTER
LDA 2,+1,2 ; LOAD ADDRESS OF FIRST VECTOR ELEMENT
LDA 2,+0,2 ; LOAD ARRAY ADDRESS
STA 2,APD03 ; STORE VECTOR ADDRESS IN APD03
LOOPE: LDA 0,DMADR ; LOAD CURRENT CORE ADDRESS
MOV 0,2
LDA 1,0,2 ; LOAD CONTENTS OF CORE ADDRESS
INC 0,0 ; INCREMENT ADDRESS BY ONE
STA 0,DMADR ; SAVE DMADR
LZ 0,0 ; 0=0
BCALL FLOAT ; CONVERT COLUMN DATA TO FLOATING POINT
LDA 2,CUR ; LOAD ZONE ADDRESS
A.PDOUBLE ; PUT CARD DATA INTO VECTOR ELEMENTS
1 ; SEGMENT NO. 1=DATA SEGMENT
APD03: 0 ; ADDRESS OF REAL(INDEX)
LDA 1,U.S05,3 ; LOAD LAST DUMP ADDRESS
LDA 0,DMADR ; LOAD CURRENT DATA LOCATION IN CORE
SNE 1,0 ; SKIP IF NOT EQUAL
JMP OUT00 ; EXIT FROM ROUTINE
LDA 2,APD03 ; LOAD VECTOR ELEMENT ADDRESS
INC 2,2 ; INCREMENT
INC 2,2 ; INCREMENT 2. TIME
STA 2,APD03 ; STORE VECTOR ELEMENT ADDRESS AGAIN
JMP LOOPE ; CONTINUE TO LOOPE
.EJEC
; **** FINISH CARDREAD PROGRAM ****
OUT00: LDA 1,DMOMR ; LOAD FIRST CORE ADDRESS
STA 1,DMADR ; RESTORE DMADR
LZ 1,1 ; 1=1
STA 1,RSTAT ; RESTORE RESERVATION STATUS
RET1 ; ORDINARY RETURN TO COMAL
;
; **«so»KORTLÆSNINGSFEJL
ERR10: STA 1,RSTAT ; RESTORE RESERVATION STATUS
ERROR
10 ; ERRORNOUS RETURN
;
; **«so»INDEKSFEJL
ERR31: STA 1,RSTAT ; RESTORE RESERVATION STATUS
ERROR
31 ; ERRORNOUS RETURN
;
; **L
; **«so»LABEL DECLARATION
;
RSTAT: 0 ; RESERVATION STATUS
ERRCO: 0 ; SAVED ERROR CODE FROM CDR CONTROLLER
«ff»
DMADR: DMADD ; ADDRESS OF CORE DUMP AREA
.CDR= 14 ; CARDREADER NUMBER
; ** AT THE MOMENT DUMMIES
«ff»
; NUMBER converting for CARDREAD call routine
; accu. use ____________________________________________
; ! ! ac0 ! ac1 ! ac2 ! ac3 !
; ____________________________________________
; ! at entry ! 1 ! 1 ! undef! user !
; ! runtime ! data ! mover!adr/12! count !
; ____________________________________________
;
NUMBER: LDA 2,DMADR ; fetch core dump address
NUMB0: LDA 3,USER ;--''-- USER
LDA 3,U.S05,3 ; load saved last address
SNE 3,2 ; skip DMADR-U.S05 not equal
JMP FINIS ; end number if equal
LDA 0,0,2 ; load specific data word
LO 1,1 ; 1=1 (could be replaced w/SUBZ)
MOV 1,3 ; 3 also =1
BZZ: SNE 0,1 ; skip on no equality
JMP ADJUST ; finis bzz if 0=1
MOVL 1,1 ; shift ac1 left
INC 3,3 ; increment counter register
LDA 2,88,0 ; 2=13
SEQ 2,3 ; if 2=3 continue bzz
JMP BZZ ; if 2 not equal to 3 continue bzz
ADJUST: LDA 2,DMADR ; load current address in core
LDA 0,86,0 ; LOAD PAGE ZERO CONSTANT 10
SUB 3,0 ; 10-data
STA 0,0,2 ; store counter register contents
INC 2,2 ; increment core address
STA 2,DMADR ; save core address
JMP NUMB0 ; continue number routine
FINIS: LDA 2,DMOMR ; load 1.address backup
STA 2,DMADR ; restore core dump area address
LDA 3,USER
JMP SNART ; end of number converting routine
;
; tal konvertering rutine
; indtastning afsluttet d.22.09.81 kl.14.42.00 ved
; «so»Torben Tambo
;
«ff»
ASCII: JMP SNART ; ASCII CONVERSION
DMOMR: DMADD ; ADDRESS OF CORE DUMP AREA AGAIN
DMADD: .BLK 41 ; CORE DUMP AREA
;
;
; 1. INDTASTNING AFSLUTTET DEN 14.09.81 KL. CA 14.30 VED Torben Tambo
;
.EJEC
PRDE2 ; END PROCESS DESCRIBTOR
«ff»
«ff»
«nul»