|
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 - download
Length: 8192 (0x2000) Types: TextFile Names: »CAA47«
└─⟦6568bc82f⟧ Bits:30001815 SG0114 Floppy └─⟦this⟧
; PL 18.10.83 MODUL CAA46 / FJERNET 3 STORE RUTINER / ; IDAG-CALL-MODUL ; MED TORBEN TAMBO'S CARDREAD I AKTUEL VERSION *LIDT FARLIG* ; SIDSTE RETTELSE 1.10.81 KL 16 ; BUF ÆNDRET SÅ RESCH-KONTROL UDELADES (=> NO LOOP) ; CARDREAD INPUTZONE ØGET TIL 50 ISTF 41 (KORTMARK-FEJL-RISIKO PRDE1 ; PROCESS HEAD .RDXO 16 ;CDR11 ; ADDRESS OF CARDREAD REV 1.03 ;.TXT @CARDREAD@ ; NAME OF -------''------- FINDT .TXT "FINDTEGN" ; FRA CAA42, ALLE ØVR FRA CAACF PÅ DISKETTE ; MED FÆRDIGE CALL-RUTINER ; SUBRUTINETABEL BUF00 .TXT @BUF<0><0><0><0><0>@ GME00 ; GMEM-ADRESSE .TXT "GMEM<0><0><0><0>" ; NAVN ;FLM00 ;.TXT @FLYTMAT<0>@ ; ;FIN00 ;.TXT @FIND<0><0><0><0>@ ; 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 0 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 SUB 0,0 STA 0,RESCH ; INDFØJET 01.10.81 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» 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 ,SKP ; 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» 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» ; PHK & PL 10.10.83 FLG SIDE FRA CAA42, FOREG ER FRA CAACF ; TILFØJELSE AF FINDTEGN TIL CA23 - NY FIL CAA41 ; 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 ; 21.9.81 PL ADRESSERING AF DATA ER JUSTERET TIL ; KORREKT FACON DVS FX S$-ADR FINDES VED LDA @ 1,0,2 ; ISTF LDA 1,4,2 (SOM FORUDSÆTTER AT PDA FØLGER EXACT EFTER PDT) ; US00 INDEX ; US01 S$(1) TEXT DER SKAL FINDES ; US02 BYTEADR FOR TXT$(INDEX) I DATASEGMENTET LDA @ 1,0,2 ;HENT S$ WORD 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 2,2,2 LDA 0,+0,2 ;HENT START INDEKS LDA 1,+1,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,1,2 ; PL 23.9.81 ADD 0,1 ;TXT$(INDEKS) BYTE ADR. I AC1 ; PL 20.9.81 RETTELSER: STA 1,U.S02,3 ; US02=BYTEADR FOR TXT$(INDEX) I DATASEGM ; FLG RUTINE FORUDSÆTTER ; AC0 AC1 AC2 AC3 ; ü TXT$(I) PDTA USER ; BY-ADR LOP1: LDA 2,1,2 ; ER INDEX<=LEN(TXT$) ? ELLERS LDA 0,1,2 ; AC0 ØGES MED 1 21.9.81 -23.9 LDA 2,U.S00,3 ; EX: INC 0,0 ; C=0 AC2=0110 COMPL-> 1001 ADCZ # 2,0,SNC ; AC0=LEN(TXT$)+1 = 0111 => C=1 JMP EJF LDA 2,CUR ;FLYTTET AF PL ; PL RETT. SLUT LDA 0,80 A.GBYTE ;HENT BYTE TXT$(INDEKS) LDA 1,U.S01,3 ; HENT S$ ISZ U.S00,3 ; FORØG INDEX (! INDEN !! EVT UDGANG AF RUTINEN!) SUB 0,1,SNR ;ENS? JMP FUNDT ; !!!!!!!!!!!!!!!!!!!! H E R !!!!!!! ISZ U.S02,3 ;FORØG BYTE ADR. LDA 1,U.S02,3 ; PL TILFØJELSE SØNDAG 17.9.81 LDA 2,U.STK,3 ; PDTA I AC2 MANGLEDE / PL 23.9.81 JMP LOP1 ERUD1: ERROR ;INDEKSFEJL 31 FUNDT: LDA 1,U.S00,3 ;FUNDET SUB 0,0 ; STED=INDEKS NNN: BCALL FLOAT LDA 3,U.STK,3 LDA @ 3,3,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 -1 PRDE2 ; DENNE SIDE TILFØJET FRA CAA42 MENS FOREG. SIDER ER FRA CAACF ; PÅ DISKETTEN MED FÆRDIGE CALL-RUTINER ; ETABL PHK $ PL 10.10.83 KL 23 ETC .... «ff» «nul»