DataMuseum.dk

Presents historical artifacts from the history of:

RegneCentralen RC3600/RC7000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RegneCentralen RC3600/RC7000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦c6b6fc18c⟧ TextFile

    Length: 12288 (0x3000)
    Types: TextFile
    Names: »CAA25«

Derivation

└─⟦99bc78d90⟧ Bits:30001771 CALL-RUTINER under DP4-DOMAC
    └─ ⟦this⟧ »/CAA25« 
└─⟦cb4367ef8⟧ Bits:30001782 SG0002 Floppy
    └─ ⟦this⟧ »/CAA25« 

TextFile

;CB RET  I BUF OG FIND  27.8.81  KL 13  *** FNAVN CAA25 ***
; CA24 (1 FEJL) /CA23 (2 FEJL) /CA22 (CA 12 FEJL+MAGL
;
; FIL CA22 SOM YDERL. ER RETTET TIL CA23 PÅEXPL2/$FD1:3
;OG DEREFTER KOPIERET TILBAGE TIL EXPL6/$FD0 > DOMAC
; DETTE ER EN PROGRAM SAMMENLÆGNING TIL BRUG VED I-DAG-SYSTEMET.
;; STUMPERNE ER HENTET FRA CA15 OG FLG. ER FØJET TIL :
; CB 2/8-80 KL 12'43:30
; PL 12 RETTELSER JFR CB + FIX OG FLOAT FRA CA15 PÅ DOMUS EXPL 2
; $FD1:3 + UDSMIDNINGER AF GENTAGELSER VEDR GMEM / SMEM
; RETTET PÅ BASIS AF CA21 PÅ EXPL2 $FD1:3  //PL 14.9.80 KL 24

PRDE1			; MACRO PROGRAMHOVED
«ff»
; <STN> CALL"BUF",<EXPR>,<EXPR>,<VAR>
; <STN> CALL"GMEM",<VAR>,<VAR>
; <STN> CALL"SMEM",<VAR>,<VAR>
; <STN> CALL"KODESPEC"
; <STN> CALL"FIND",<EXPR>,<MVAR>,<EXPR>,<VAR>
; <STN> CALL"FLYTMAT",<MVAR>,<EXPR>,<EXPR>,<EXPR>

; SUBRUTINETABEL

BUF00
.TXT "BUF<0><0><0><0><0>"

GME00				; GMEM-ADRESSE
.TXT "GMEM<0><0><0><0>"		; NAVN

FIN00				; FIND ADRESSE
.TXT "FIND<0><0><0><0>"		; NAVN

FLM00				; FLYTMAT ADREESE
.TXT "FLYTMAT<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»
BUF00:	3			; 3 VARIABLE
	REAL			; A
	REAL			; OG B
	REAL+REFERENCE		; OG C
	LDA	1,RESCH		; HENT RESERVATIONSSTATUS (RESCH)
	SUBZL	0,0		; AC0=1
	SUB#	1,0 ,SNR	; RESCH=AC0??
	JMP	.-3		; JA: PRØV IGEN
	STA	0,RESCH		; NEJ: SÆT RESCH=1
	LDA @   1,+2,2		; AC1=F(F(USER.U.STK)+1)=C-ADRESSE
	STA	1,BADRE		; GEM C-ADRESSE
	LDA	2,+1,2		; AC2=B-ADRESSE
	LDA	0,+0,2		; HENT B=VARBUFNR
	LDA	1,+1,2
	BCALL FIX
	SUBC	2,2		; AC2=0
	INCOL	2,2		; AC2=3
	MOV	0,0,SNR		; LIGGER 0<=VARBUFNR<=3 ?
	SNG	1,2
	JMP ERR90-2		; NEJ: RETURN MED ERROR 90  ** CB RET
	MOVZL	1,1		; AC1=1
	LDA	2,BUFAD		; AC2=BUFFERADRESSE
	ADD	2,1		; AC1=AC1+AC2
	STA	1,ADRES		; GEM ADRESSE(VARNR)
	SUBZL	0,0		; AC0=1
	LDA @	2,U.STK,3
	LDA	0,+0,2		; HENT A(1. ORD)
	LDA	2,CUR
	MOV	0,0,SZR		; A=0???
	JMP PART2		;
	LDA	3,ADRES		; HENT BUFADRESSE
	LDA	0,+0,3		; AC0=F(ADRES)
	LDA	1,+1,3		; AC1=F(ADRES+1)
	LDA	2,CUR
	A.PDOUBLE		;	AC'S-->B
	1			; 	SEGMENT NUMBER
BADRE:	0			;	B-ADRESSE
	JMP UD		;
PART2:	SUBZL	0,0
	LDA	1,BADRE		; NEJ:	HENT B-ADRESSE
	A.GDOUBLE		; 	HENT B-->;AC'S
	LDA	3,ADRES		; AC3=BUFADRESSE(VARNR)
	STA	0,+0,3		; AC'S-->BUF(VARNR)
	STA	1,+1,3
UD:	SUB	0,0		; AC0=0
	STA	0,RESCH		; RESCH=0
	RET1			; END BUF
				;
RESCH:	0			; RESERVERINGSSTATUS
BUFAD:	BUFTB
BUFTB:	.BLK 8			; VARBUF OMRÅDE
ADRES:	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
	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»
FIN00:	4			; 4 VARIABLE :
	REAL			; B = DET DER SØGES PLACERET
	REAL+ARRAY		; A = DET DER SØGES I
	REAL			; MAX(A) = MAX BRUGT I A
	REAL+REFERENCE		; INDEX = STED TIL RESULTAT
	LDA	0,+7,2		; DIM(A)-->US00
	STA	0,U.S00,3
	LDA @	1,+3,2		; FLYT INDEX OVER I FEN05 ** CB RET **
	STA	1,FIN05
	LDA	0,+9,2		; HENT MAX(A)
	LDA	1,+10,2	
	BCALL FIX		; FIX MAX(A)
	LDA	2,U.S00,3	; AC2=DIM(A)
	MOV	0,0,SNR		; ER MAX(A)>=0 OG
	SUBZ#	1,2,SNC		; ER MAX(A)<=DIM(A)
	JMP ER31		; NEJ - INDEXFEJL
	MOV	1,1,SNR		; ER MAX=0
	JMP FIN03		; JA - HOP (LAD INDEX=1)
	STA	1,U.S01,3	; US01=MAX(A)=MAX
	SUBZL	0,0
	STA	0,U.S00,3	; US00=MIN=1
	LDA	2,U.STK,3
	LDA@	1,+0,2		; FLYT B-ADRESSE OVER I NÆRVÆRENDE LAGER
	STA	1,BADR
	LDA	1,+6,2		; FLYT STARTADR PÅ MATRIX OVER I US12
	STA	1,U.S12,3
	JSR BEADR		; AC0 ER HER 1
	JSR TESTB		; ER B<A(1) ?
	JMP FIN04		; JA - HOP (LAD INDEX=1)
	LDA	0,U.S01,3	; NEJ - AC0=MAX
	JSR BEADR
	JSR TESTB		; ER B>=A(MAX)
	JMP .+2
	JMP FIN03		; JA - HOP (LAD INDEX=MAX+1)
FIN01:	LDA	0,U.S00,3	; AC0=MIN
	LDA	1,U.S01,3	; AC1=MAX
	ADDZR	1,0		; AC0=MIDT=(MIN+MAX) DIV 2
	JSR BEADR
	JSR TESTB		; B>=A(MIDT)
	JMP FIN02		; NEJ HOP
	INC	0,0		; AC0=MIDT+1
	JSR BEADR
	JSR TESTB		; B<A(MIDT+1)
	JMP FIN04		; JA - HOP SLUT (INDEX=MIDT+1)
	NEG	0,0		; AC0=AC0-1=MIDT
	COM	0,0
	STA	0,U.S00,3	; MIN=MIDT
	JMP FIN01		; FORFRA
FIN02:	STA	0,U.S01,3	; MAX=MIDT
	JMP FIN01		; FORFRA
«ff»
FIN03:	INC	0,0		; INDEX=INDEX+1
FIN04:	MOV	0,1		; AC0,AC1=0,INDEX IE FIXTAL INDEX
	SUB	0,0
	BCALL FLOAT		; AC0,AC1=FLOAT INDEX
	LDA	2,CUR
	A.PDOUBLE		; GEM INDEX
	1
FIN05:	0
	RET1			; SLUT

ER31:	ERROR
	31

BADR:	0

«ff»
				; DENNE RUTINE SAMMENLIGNER DET TAL (X) 
				; DER LIGGER PÅ ADRESSEN ANGIVET I AC1
				; MED B, DER ER ANGIVET VED BADR

TESTB:	LDA	2,USER
	STA	0,U.S11,2	; GEM AC0 VÆK
	STA	3,U.S10,2	; GEM RETADR I US10
	SUBZL	0,0		; AC0=1
	LDA	2,CUR
	A.GWORD
	LDA	2,BADR		; AC2=B'S ADRESSE
	ADCZ#	2,0,SNC	; (RETTET! /NU KUN CKECK PÅ 1.ORD)
	ISZ	U.S10,3		; HVIS X>B   RETURN TIL LINK+0
	LDA	0,U.S11,3	; HENT AC0 TILBAGE
	JMP @	U.S10,3		; RETURN
				;     ! CALL ! RET
				;-------------------
	JMP	+1,1		; AC0 !  ?   !  =
				; AC1 !ADR.X !  %
				; AC2 !  ?   !  %
	JMP	+1,1		; AC3 !  ?   ! UDA



				; DENNE RUTINE BEREGNER DEN EFFEKTIVE
				; ADR PÅ ET INDEX I EN MATRIX, HVIS 
				; FØRSTE ELEMENTS ADR ER ANGIVET VED 
				; US12.
				; BEREGNINGEN ER MED LOWBOUND=1

BEADR:	MOV	3,1		; AC1=AC3, AC0=INDEX VED START
	LDA	3,USER
	STA	1,U.S10,3	; GEM RET-ADR VÆK
	STA	2,U.S11,3	; GEM AC2
	LDA	2,U.S12,3	; AC2=ADR(MAT(1))
	NEG	0,1
	COMZL	1,1		; INDEX=(INDEX-1)*2
	ADD	2,1		; AC1=ADR(MAT(1))+INDEX
	LDA	2,U.S11,3	; HENT AC2 IGEN
	JMP @	U.S10,3		; RETURN
				;     ! CALL ! RET
				;-------------------
				; AC0 !INDEX !INDEX
				; AC1 !  ?   ! ADR
				; AC2 !  ?   !  =
				; AC3 !  ?   ! UDA


«ff»
FLM00:	4
	REAL+ARRAY		; A = DET DER SKAL FLYTTES I
	REAL			; INDEX = HVORFRA DER SKAL FLYTTES
	REAL			; ANTAL = HVORLANGT ..
	REAL			; MAX   = SIDSTE ELEMENT BRUGT I A
	LDA	0,+4,2
	STA	0,U.S12,3	; GEM ADR(A(1)) I US12
	LDA	0,+7,2
	LDA	1,+8,2		; HENT INDEX
	BCALL FIX		; FIX INDEX
	MOV	0,0,SNR		; ER 0<=INDEX<=32767 OG
	MOV	1,1,SNR		; ER INDEX<>0 ?
	JMP ER31		; NEJ
	STA	1,U.S01,3	; GEM INDEX I US01
	LDA	2,U.STK,3
	LDA	0,+11,2
	LDA	1,+12,2		; HENT MAX
	BCALL FIX		; FIX MAX
	LDA	2,U.STK,3
	LDA	2,+5,2		; HENT DIM(A)
	SUBZ#	1,2,SZC		; ER MAX<=DIM(A) OG
	MOV	0,0,SZR		; ER MAX>=0 ?
	JMP ER31		; NEJ
	LDA	0,U.S01,3	; AC0=INDEX
	STA	1,U.S02,3	; GEM MAX I US02
	INC	1,1		; AC1=MAX+1
	SUBZ	0,1,SNC		; AC1=MAX+1-INDEX, ER AC1>=0 ?
	JMP ER31		; NEJ
	MOV	1,1,SNR		; ER AC1=0 ?
	RET1			; JA SLUT
	STA	1,U.S00,3	; GEM ANT=MAX+1-INDEX I US00
	LDA	2,U.STK,3
	LDA	0,+9,2		; HENT ANTAL
	LDA	1,+10,2
	BCALL FIX		; FIX ANTAL
	MOVZL	0,0,SZC		; ER ANTAL POSITIV ?
	JMP FLM01		; NEJ
	LDA	2,U.STK,3
	LDA	2,+5,2		; AC2=DIM(A)
	LDA	0,U.S02,3	; AC0=MAX
	ADD	1,0		; AC0=ANTAL+MAX
	SUBZ	0,2,SNC		; AC2=DIM(A)-ANTAL-MAX ER AC2>=0 ?
	JMP ER31		; NEJ
	ADCZL	2,2		; AC2=-2
	STA	2,U.S03,3	; GEM -2 I US03
	MOVZL	1,1		; ANTAL=ANTAL*2
	STA	1,U.S07,3	; GEM ANTAL*2 I US07
	LDA	0,U.S02,3	; AC0=MAX
	JSR BEADR		; AC1=ADR(A(MAX))
	STA	1,U.S04,3	; GEM AC1 I US04
	JMP FLM03		; KLAR TIL LOOP
«ff»
FLM01:	LDA	0,U.S01,3	; HVIS ANTAL NEGATIV: AC0=MAX
	ADDZ	1,0,SZC		; ER ANTAL+MAX>=0 OG
	MOV	0,0,SNR		; ER ANTAL+MAX<>0 ?
	JMP ER31		; NEJ
	SUB	0,0
	INCZL	0,0		; AC0=2
	STA	0,U.S03,3	; GEM 2 I US03
	MOVZL	1,1		; AC1=ANTAL*-2
	STA	1,U.S07,3	; GEM ANTAL*-2 I US07
	LDA	0,U.S01,3	; AC0=INDEX
	JSR BEADR		; AC1=ADR(A(INDEX))
	STA	1,U.S04,3	; GEM AC1 I US04
	JMP FLM03		; KLAR TIL LOOP
FLM02:	LDA	0,U.S04,3	; US04=US04+US03 DVS ADRESSEN BLIVER
	LDA	1,U.S03,3	; JUSTERET PASSENDE +/-2 ALT EFTER OM 
	ADD	0,1		; LØKKEN KØRER FORLÆNS EL. BAGLÆNS
	STA	1,U.S04,3
FLM03:	LDA	2,CUR
	SUBZL	0,0
	A.GDOUBLE		; HENT A(ADR-US04)=X
	LDA	2,U.S04,3	; BEREGN DEPOSIT ADRESSE :
	LDA	3,U.S07,3	; LAD D.ADR=FLM04=US04+US07
	ADD	2,3
	STA	3,FLM04
	LDA	2,CUR
	A.PDOUBLE		; GEM X I A(ADR.US04+US07)
	1
FLM04:	0
	DSZ	U.S00,3		; TÆL LØKKETÆLLER(=ANT) EN NED.  ANT=0?
	JMP FLM02		; NEJ FLRTSÆT
	RET1			; JA SLUT

; HELE LOOPRUTINEN KAN SES SOM FLG:
; REPEAT
;   LET A(ADR.US04+US07)=A(ADR.US04)
;   LET US04=US04+US03 ; US00=US00-1
; UNTIL US00=0

«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»
; FILNAVN CA22 PÅ DOMUS EXPL6 $FD0
; MÅSKE FEJL: ERR90 ER DOBBELTDEF, SÅ FILEN SKAL RETTES FØR OVERS
; ERR90 SLETTET, FILEN HEDDER NU CA23
; OG LIGGER PÅ DOMUS EXPL 2 $FD1:3 SAMT HEREFTER PÅ EXPL6 $FD0
;
; FILPROD: CA21 RETTET FOR 12 EGL FEJL + NOGET PYNT
;        + CA15 FIX OG FLOAT (ERR90-PROBLEM)
;        NB BEGGE FILER FRA DOMUS EXPL2 I-DAGSYSTEM 14.9.80
;  LAVET AF PL EFTER CB-DIREKT 14.9.80 KL CA 25

; CB RET 27.8.81 KL 13.30
PRDE2

«ff»
«nul»