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