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

⟦209e76bbe⟧ TextFile

    Length: 8704 (0x2200)
    Types: TextFile
    Names: »P4AF5«

Derivation

└─⟦92491b7d7⟧ Bits:30001772 UDVIKLING AF CALLRUTINER ETC NR 2
    └─ ⟦this⟧ »/P4AF5« 
└─⟦cb4367ef8⟧ Bits:30001782 SG0002 Floppy
    └─ ⟦this⟧ »/P4AF5« 
└─⟦ee9e554ad⟧ Bits:30001809 SG0107 Floppy
    └─ ⟦this⟧ »/P4AF5« 

TextFile

; CALLRUTINE FINDTEGN PL. P-H. HANS RUNE SVEND MF.  
; 10.09.81 16.40.00 
; DER ER INDLAGT STANDARDRUTINER FRA CAASM, OG ALT DETTE TILHØRER
; ACSII-FILENS SIDE 1 --- SÅLEDES AT FINDTEGN & AFSLUTNING LIGGER PÅ SIDE 2
; IØVRIGT ER FILEN RETTET SØNDAG 17.9.81 AF PL
; EDV HAR JEG INDLAGT GET FRA MMTX4 MED RETTELSER (BEM MORTEN MARQUARD)
;
;
; 
PRDE1 
  
FINDT 
.TXT "FINDTEGN" 
 
GET00
.TXT "GET<0><0><0><0><0>"

; FLG SUBR. STAMMER FRA CAASM:11 SOM IGEN ER DEL AF CAA25 (IDAG-RUTINERNE)


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
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

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
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
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
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»
;	CALL"FINDTEGN",S$,TXT$,START,FUNDET 

FINDT:	 4 
	 STRING 
	 STRING 
	 REAL 
	 REAL+REFER 
		; PDTA		S$ PDA
		;		TXT$ PDA
		;		STARTINDEX PDA (REAL)
		;		FUNDETINDEX PDA (REAL+REFERENCE)
		; S$ PDA 	ADR I DATASEGM
		;		NO BYTES
		;		SEGM NO
		; TXT$ PDA	ADR I DATASEGM
		;		NO BYTES
		;		SEGM NO (=1)
		; START PDA	1.WORD IN FLOATING REPR
		; 		2.WORD
		; FUNDET PDA	ADR I DATASEGM

		; US00		INDEX
		; US01		S$(1) TEXT DER SKAL FINDES
		; US02		BYTEADR FOR TXT$(INDEX) I DATASEGMENTET

	 LDA 1,4,2	 ;HENT S$ WORD ADR. 
	 MOVL 1,1	 ;BYTE ADR. 
	 LDA 2,CUR 
	 LDA 0,80 
	 A.GBYTE 
	 STA 0,U.S01,3	 ;FØRSTE CHR. AF S$ 
	 LDA 2,U.STK,3
	LDA 0,+10,2	;HENT START INDEKS 
	 LDA 1,+11,2 
	 BCALL FIX 
	 MOV 0,0,SZR 
	 JMP ERUD1	 ;NEGATIV 
	 MOV 1,0 
	 STA 1,U.S00,3	 
	 LDA 2,U.STK,3 
	 LDA 1,+7,2 
	 MOVL 1,1	 ;TXT$ (1) BYTE ADR. 
	 ADD 0,1 	 ;TXT$(INDEKS) BYTE ADR. I AC1 
 
	; FLG RUTINE FORUDSÆTTER
	; AC0	AC1	AC2	AC3
	; ü	TXT$(I)	ü	USER
	;    	BY-ADR
LOP1:	 LDA 2,CUR 
	 LDA 0,U.S00,3	 ;INDEKS OVER LÆNGDE AF TXT$ 
	 SUB # 0,1,SNR 
	 JMP EJF	 ;STED IKKE FUNDET 
	 LDA 0,80 
	 A.GBYTE	 ;HENT BYTE TXT$(INDEKS) 
	 STA 1,U.S02,3	 ; GEM BYTE ADR 
	 LDA 1,U.S01,3	 ; HENT S$ 
	 SUB 0,1,SNR	 ;ENS? 
	 JMP DUMME 
	 ISZ U.S00,3	 ;FORØG INDEKS 
	 ISZ U.S02,3	 ;FORØG BYTE ADR. 
	LDA 1,U.S02,3	; PL TILFØJELSE SØNDAG 17.9.81
	 JMP LOP1 
  
ERUD1:	 ERROR	 ;INDEKSFEJL 
	 31 
	  
DUMME:	 	LDA 1,U.S00,3	 	 ;FUNDET 
	 SUB 0,0	; STED=INDEKS 
NNN:	  BCALL FLOAT 
	 LDA 3,U.STK,3 
	 LDA 3,+12,3 
	 STA 3,WADRS
	 LDA 2,CUR 
	 A.PDOUBLE 
	 1 
WADRS:	 0 
	 RET1 
 
 EJF:	; ADC 1,1 FJERNET PL SØNDAG
 	 ADC 0,0
	 ADC 1,1 	;IKKE FUNDET STED=-1 
	 JMP NNN 


; FØLGENDE ER HENTET FRA MMTX4:11 OG RETTET AF PL SØNDAG

 
	; Program head MM-110981 
	; Følgende call kan benyttes: 
	; CALL"GET",T$,A 
	; T$ = streng dimentioneret > A 
	; A = Antallet af tegn, der skal inputtes i T$. 

	; Ved call indeholder accumulatorerne følgende værdier 
	; AC0 = ? 
	; AC1 = ? 
	; AC2 = UDA+U.STK = PDTA 
	; AC3 = UDA 
	; 
	; Adresse              Lagerindhold 
	; =======              ============ 
	; USER (page 0)        UDA 
	; UDA+PIO              Adr. af prim. I/O zone 
	; UDA + U.S00          User dataarealler 
	; UDA + U.S20          - 
	; UDA + U.S21          Subrutine tabel  
	; UDA + U.STK	   PDTA 
	; PDTA             0   T$ PDA 
	;                  1   A PDA 
	; PDA T$           2   Adr. af 1. byte. 
	;                  3   Max ant. byte 
	;                  4   Current ant. byte 
	; PDA A            5   1. word 
	;                  6   2. word 
	0		;  
GET00: 2	; To variable 
	STRING+REFERENCE	; T$ 
	REAL		; og A 
	LDA 0,+5,2	; AC0 = 1. WORD AF A 
	LDA 1,+6,2	; AC1 = 2. WORD AF A 
	BCALL FIX	; Hental => Kommatal 
	MOV # 0,0,SZR 
	JMP ERR31	; Index fejl 
	STA 1,U.S01,3	; U.S01 = Antal chr, der skal inputtes. 
				; US00 = 
				; US01 = ANTAL CHR DER SKAL INDPUTTES
				; US02 = BYTEADR AF 1. BYTE I T$
				; US03 = MAX ANTAL CHR I T$ (T$ SKAL VED KALD VÆRE <>"" !
				;   REM PL SØNDAG - ER DET MENINGEN??????
	LDA 2,U.STK,3	; AC2=PDTA 
	LDA 1,+2,2	; AC1= WORDADR AF 1. BYTE I T$
	MOVL 1,1	; PL RETTELSE SØNDAG T$(INDEX) BYTEADR
		; OG HVEM ER DEN TÅBE DER HAR FJERNET ASS CODED SUBR MANUALEN
		; FRA NR 46, SÅ MAN KAN KONTROLLERE OM PDA W1 IKKE INDEH W-ADR !!!
	STA 1,U.S02,3	; U.S02 = Adr. af 1. byte	LDA 2,U.STK,3  
	LDA 1,+3,2	; AC1=Max ant. chr. 
	STA 1,U.S03	; U.S03=AC1 
	LDA 0,U.S01	; AC0=U.S01 
	SUBZL 0,1,SZC	; AC0 > AC1 ? 
	JMP ERR31	; JA => Index fejl. 
GET13:	LDA 2,CUR	; AC2=CUR 
	LDA 3,USER	; AC3=USER 
	LDA 0,PIO,3	; Adr. af primære I/O zone (term.). 
	F.ICHAR		; Hent en carakter 
	JMP ERRUD	; Hvis fejl. Skriv den ud. 
	LDA 0,44	; AC0=31 
	SUBZL 2,2	; AC2=1 
	SUB 2,0		; AC0=31 
;		FLG BET. RETTET PL SØND:SUB # 1,0,SNR	; CHR > 31 (>='space') 
	ADCZ # 1,0,SZC	; PL RETTELSE SØNDAG ILL TILFÆLDE 4 BIT, BETINGELSE SAND:
			;	C=0 AC1=0110 (HENTET BYTE FRA ICHAR) OG AC0=1100 (REPRÆSENTANT FOR 31 VED 8 BIT)

			;  AC1 COMPL   =1001
			;  AC0 EX      =1100 (AC0>=AC1)
			;  SUM         =0101 OG OVERFLOW=> C=1 OG DER SKIPPES IKKE
			;   DVS SKIP HVIS AC1<=AC0 DVS HVIS AC1<=31 (KORREKT?)
	JMP GET13	; Nej !! Går tilbage til 'GET13' 
	MOV 1,0		; AC0 = AC1 
	LDA 1,U.S02,3 
	LDA 2,CUR 
	A.PBYTE		; Put chr ud i T$. 
	1		; Hvordan ud!! 
	LDA 1,U.S02,3	; GEM AC1 i U.S02 
	INC 1,1		; AC1=AC1+1 
	STA 1,U.S02,3	; GEM AC1 UD I 'U.S02' 
	LDA 2,U.S01,3	; AC2=U.S01 
	SUB # 1,0,SNR	; Input færdigt!! 
	JMP GET13	; Nej 
	RET1		; Ja 
ERR31:	ERROR 
	31		; Indexfejl (returner til BASIC) !! 
ERRUD:	STA 2,+2,1 
	ERROR	 
	0		; Evt. BCALL IOERR 
			; RET0 


			; End of list:«so» MMTXT 
			; PL SAMLING OG RETTELSER SØNDAG 17.9.81
	PRDE2		; PROGRAM SLUT 
«ff»
«nul»