|
|
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: 5632 (0x1600)
Types: TextFile
Names: »LKANN«
└─⟦99bc78d90⟧ Bits:30001771 CALL-RUTINER under DP4-DOMAC
└─⟦this⟧ »/LKANN«
PRDE1
; «so»Callrutine modul indtastet 26.10.81.
; PRIMTAL er anden version den første anvendte IDIV med ringe held
; DENNE PRIMTAL ANVENDER FORSØGSMÆSSIGT MONITORENS DIVIDE RUTINE
; NAMECONV ER EN LOOKUP UTILITY PROCEDURE DER KALDES MED
; STN CALL NAMECONV ,A,B,C$
; BIT0 TIL BIT31 I A OG BIT0 TIL BIT7 I B OMSÆTTES TIL ET NAVN I C$
; GMEM,SMEM OG KODESPEC INDSÆTTES EFTER DENNE BLOK !!!HUSK PRDE2!!!
; DIVIDE ER ET DIVISIONS FORSØG
; MULTIPLY ET ET MULTIPLIKATIONS FORSØG
; DIVIMULT ER EN SELVPROGRAMMERENDE KOMBINATION
;
NMCON
.TXT @NAMECONV@
PRM00
.TXT @PRIMTAL@
SME00
.TXT @SMEM<0><0><0><0>@
GME00
.TXT @GMEM<0><0><0><0>@
KSP00
.TXT @KODESPEC@
DIVI0
.TXT @DIVIDE<0><0>@
MULT0
.TXT @MULTIPLY@
DIMU0
.TXT @DIVIMULT@
0
PRM00: 1
REAL
LDA 0,1,2
LDA 1,2,2
BCALL FIX
MOV # 0,0,SNR
MOVR # 1,1,SNC
JMP ERR16
STA 1,SAVE0
LO 1,1
LOOPP: INC 1,1
LDA 0,SAVE0
SNE 0,1
RET1
DIVIDE
SNZ 3,3
JMP LOOPP
ERR16: ERROR
16
SAVE0: 0
; «so»Udvidet fix call rutine
NMCON: 3
REAL
REAL
STRING+REFERANDUM
LDA 1,82,0 ; 5
LDA 0,8,2
SNL 0,1
JMP E31 ; 'INDEKSFEJL'
LDA 1,7,2
STA 1,BYTE1
LDA 1,9,2
STA 1,CONTS ; actual number of bytes
LDA 1,0,2
MOVZL 1,1
STA 1,BYTE0
LOO00: GETBYTE
SNZ 0,0 ; null-byte ?
RET1
LDA 1,BYTE1
A.PBYTE
1
LDA 1,CONTS
LO 0,0
A.GWORD
LDA 0,82,0 ; endnu et femtal
SNE 0,1 ; home sweet home
RET1
INC 0,0
A.PWORD
1
ISZ BYTE0
ISZ BYTE1
LDA 0,82,0
JMP LOO00
E31: ERROR
31
BYTE0: 0
BYTE1: 0
CONTS: 0
; U.STK : +0 REAL ADR.
; +1 REAL ADR.
; +2 STRING DESCR. ADR.
; +3 1.WORD all bits used
; +4 2.WORD all bits used
; +5 1.WORD 8 bits used
; +6 2.WORD no bits used
; +7 address of 1.byte
; +8 max. dim. of string
; +9 actual no. of bytes
; Utility procedurer : FLAPD float and put double
; ----------------------------------------------------
; ! AC0 ! AC1 ! AC2 ! AC3 !
; ----------------------------------------------------
; ! 1.word ! 2.word ! word addr ! irrel !
; ----------------------------------------------------
;
FLAPD: STA 2,APD00
LDA 3,USER
BCALL FLOAT
LDA 2,CUR
A.PDOUBLE
1
APD00: 0
RET1
;
; Utility procedurer : GDFIX get double and fix
; ----------------------------------------------------
; ! AC0 ! AC1 ! AC2 ! AC3 !
; ----------------------------------------------------
; ! 1.word ! 2.word ! undefined ! USER !
; ----------------------------------------------------
; og dette gælder naturligvis ved return
;
GDFIX: LDA 2,CUR
LO 0,0
A.PDOUBLE
BCALL FIX
RET1
;
; Ved entry AC1=1.word adresse
;
; UANVENDELIGT FOR TIDEN
DIVI0: 0
RET1
MULT0: 0
RET1
DIMU0: 0
RET1
«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
SUB 0,0
STA 0,RESCH
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»
PRDE2
; EDITERET SAMMEN DEN 26.10.81 VED TORBEN TAMBO
«ff»
«nul»