|
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: 13312 (0x3400) Types: TextFile Names: »P4PÆ8«
└─⟦92491b7d7⟧ Bits:30001772 UDVIKLING AF CALLRUTINER ETC NR 2 └─⟦this⟧ »/P4PÆ8« └─⟦ee9e554ad⟧ Bits:30001809 SG0107 Floppy └─⟦this⟧ »/P4PÆ8«
0001 UCA01 DOMUS MACRO ASSEMBLER REV 02.00 01 ; CALLRUTINE FINDTEGN PL. P-H. HANS RUNE SVEND MF. 02 ; 10.09.81 16.40.00 03 ; DER ER INDLAGT STANDARDRUTINER FRA CAASM, OG ALT DETTE TILHØRER 04 ; ACSII-FILENS SIDE 1 --- SÅLEDES AT FINDTEGN & AFSLUTNING LIGGER PÅ SIDE 2 05 ; IØVRIGT ER FILEN RETTET SØNDAG 20.9.81 AF PL 06 ; ENDV. HAR JEG INDLAGT GET FRA MMTX4 MED RETTELSER (BEM MORTEN MARQUARD) 07 ; JUSTERET VIDERE SØNDAG (DET VAR JO D.20.9.81) KL 22 08 ; ENDV JUSTERET I FINDTEGN 21.9.81: SÅ DER IKKE 'SNYDES' MED AT HENTE PARAMETRE 09 ; 23.9.81 ÆNDRINGER I FINDTEGN: 3 FEJL RETTETLDA@1,1,2 ISTF 2,1,2 10 ; - INC0,0 ISTF2,2 11 ; SAMT TILFØJET LDA2,USTK,3 FØR JMPLOP1 * DERUDOVER SPM OM 2 STK MOVL 12 ; SOM BIBEHOLDES (KAN SÅ ÆNDRES TIL JMP1,1) 13 ; IØVRIGT ER GET KONSTATERET MISFORSTÅET IDET MAN JO SKAL HENTE DATA 14 ; -IKKE FRA PIO-ZONEN MEN FRA MULTIPLEXER-VIA BUFFERNE (SE TRYKT MANUAL) 0003 UCA01 !0005 UCA01 01 ; CALL"FINDTEGN",S$,TXT$,START,FUNDET 02 03 00247'000004 FINDT: 4 04 00250'000003 STRING 05 00251'000003 STRING 06 00252'000000 REAL 07 00253'100000 REAL+REFER 08 ; PDTA S$ PDA 09 ; TXT$ PDA 10 ; STARTINDEX PDA (REAL) 11 ; FUNDETINDEX PDA (REAL+REFERENCE) 12 ; S$ PDA ADR I DATASEGM 13 ; NO BYTES 14 ; SEGM NO 15 ; TXT$ PDA ADR I DATASEGM 16 ; NO BYTES 17 ; SEGM NO (=1) 18 ; START PDA 1.WORD IN FLOATING REPR 19 ; 2.WORD 20 ; FUNDET PDA ADR I DATASEGM 21 22 ; 21.9.81 PL ADRESSERING AF DATA ER JUSTERET TIL 23 ; KORREKT FACON DVS FX S$-ADR FINDES VED LDA @ 1,0,2 24 ; ISTF LDA 1,4,2 (SOM FORUDSÆTTER AT PDA FØLGER EXACT EFTER PDT) 25 26 27 ; US00 INDEX 28 ; US01 S$(1) TEXT DER SKAL FINDES 29 ; US02 BYTEADR FOR TXT$(INDEX) I DATASEGMENTET 30 31 00254'027000 LDA @ 1,0,2 ;HENT S$ WORD ADR. 32 00255'125100 MOVL 1,1 ;BYTE ADR. 33 00256'030040 LDA 2,CUR 34 00257'020120 LDA 0,80 35 00260'007100 A.GBYTE 36 00261'041471 STA 0,U.S01,3 ;FØRSTE CHR. AF S$ 37 00262'031467 LDA 2,U.STK,3 38 00263'031002 LDA 2,2,2 39 00264'021000 LDA 0,+0,2 ;HENT START INDEKS 40 00265'025001 LDA 1,+1,2 41 BCALL FIX 42 00266'035515 LDA 3 U.S21,3 43 00267'007400 JSR@ +0,3 44 00270'101004 MOV 0,0,SZR 45 00271'000431 JMP ERUD1 ;NEGATIV 46 00272'121000 MOV 1,0 47 00273'045470 STA 1,U.S00,3 48 00274'031467 LDA 2,U.STK,3 49 00275'027001 LDA @ 1,1,2 ; PL 23.9.81 50 00276'125100 MOVL 1,1 ;TXT$ (1) BYTE ADR. 51 00277'107000 ADD 0,1 ;TXT$(INDEKS) BYTE ADR. I AC1 52 ; PL 20.9.81 RETTELSER: 53 00300'045472 STA 1,U.S02,3 ; US02=BYTEADR FOR TXT$(INDEX) I DATASEGM 54 55 ; FLG RUTINE FORUDSÆTTER 56 ; AC0 AC1 AC2 AC3 57 ; ü TXT$(I) PDTA USER 58 ; BY-ADR 59 LOP1: 60 00301'031001 LDA 2,1,2 ; ER INDEX<=LEN(TXT$) ? ELLERS JMP EJF «ff» 0006 UCA01 01 00302'021001 LDA 0,1,2 ; AC0 ØGES MED 1 21.9.81 -23.9 02 00303'031470 LDA 2,U.S00,3 ; EX: 03 00304'101400 INC 0,0 ; C=0 AC2=0110 COMPL-> 1001 04 00305'142033 ADCZ # 2,0,SNC ; AC0=LEN(TXT$)+1 = 0111 => C=1 05 00306'000432 JMP EJF 06 00307'030040 LDA 2,CUR ;FLYTTET AF PL 07 ; PL RETT. SLUT 08 00310'020120 LDA 0,80 09 00311'007100 A.GBYTE ;HENT BYTE TXT$(INDEKS) 10 00312'025471 LDA 1,U.S01,3 ; HENT S$ 11 00313'106405 SUB 0,1,SNR ;ENS? 12 00314'000410 JMP FUNDT 13 00315'011470 ISZ U.S00,3 ;FORØG INDEKS 14 00316'011472 ISZ U.S02,3 ;FORØG BYTE ADR. 15 00317'025472 LDA 1,U.S02,3 ; PL TILFØJELSE SØNDAG 17.9.81 16 00320'031467 LDA 2,U.STK,3 ; PDTA I AC2 MANGLEDE / PL 23.9.81 17 00321'000760 JMP LOP1 18 19 00322'006244 ERUD1: ERROR ;INDEKSFEJL 20 00323'000037 31 21 22 00324'025470 FUNDT: LDA 1,U.S00,3 ;FUNDET 23 00325'102400 SUB 0,0 ; STED=INDEKS 24 NNN: BCALL FLOAT 25 00326'035515 LDA 3 U.S21,3 26 00327'007401 JSR@ +1,3 27 00330'035467 LDA 3,U.STK,3 28 00331'037403 LDA @ 3,3,3 29 00332'054404 STA 3,WADRS 30 00333'030040 LDA 2,CUR 31 00334'007106 A.PDOUBLE 32 00335'000001 1 33 00336'000000 WADRS: 0 34 00337'002242 RET1 35 36 EJF: ; ADC 1,1 FJERNET PL SØNDAG 37 00340'102000 ADC 0,0 38 00341'126000 ADC 1,1 ;IKKE FUNDET STED=-1 39 00342'000764 JMP NNN 40 41 «ff» !0007 UCA01 01 02 03 ; FØLGENDE ER HENTET FRA MMTX4:11 OG RETTET AF PL SØNDAG 04 ; VI HAR 23.9.81 FUNDET UD AF AT T$ IKKE SKAL HENTES I PIO-ZONEN 05 ; MEN VIA MULTIPLEXEREN VIA DATABUFFERE IHT 44-RT 1206 06 07 08 ; Program head MM-110981 09 ; Følgende call kan benyttes: 10 ; CALL"GET",T$,A 11 ; T$ = streng dimentioneret > A 12 ; A = Antallet af tegn, der skal inputtes i T$. 13 14 ; Ved call indeholder accumulatorerne følgende værdier 15 ; AC2 = UDA+U.STK = PDTA 16 ; AC3 = UDA 17 ; 18 ; Adresse Lagerindhold 19 ; ======= ============ 20 ; USER (page 0) UDA 21 ; UDA+PIO Adr. af prim. I/O zone 22 ; UDA + U.S00 User dataarealler 23 ; UDA + U.S20 - 24 ; UDA + U.S21 Subrutine tabel 25 ; UDA + U.STK PDTA 26 ; PDTA 0 T$ PDA 27 ; 1 A PDA 28 ; PDA T$ 2 Adr. af 1. byte. 29 ; 3 Max ant. byte 30 ; 4 Current ant. byte 31 ; PDA A 5 1. word 32 ; 6 2. word 33 00343'000000 0 ; 34 00344'000002 GET00: 2 ; To variable 35 00345'100003 STRING+REFERENCE ; T$ 36 00346'000000 REAL ; og A 37 00347'021005 LDA 0,+5,2 ; AC0 = 1. WORD AF A 38 00350'025006 LDA 1,+6,2 ; AC1 = 2. WORD AF A 39 BCALL FIX ; Hental => Kommatal 40 00351'035515 LDA 3 U.S21,3 41 00352'007400 JSR@ +0,3 42 00353'101014 MOV # 0,0,SZR 43 00354'000441 JMP ERR31 ; Index fejl 44 00355'045471 STA 1,U.S01,3 ; U.S01 = Antal chr, der skal inputtes. 45 46 ; US00 = 47 ; US01 = ANTAL CHR DER SKAL INDPUTTES 48 ; US02 = BYTEADR AF 1. BYTE I T$ 49 ; US03 = MAX ANTAL CHR I T$ (T$ SKAL VED KALD VÆRE <>"" ! 50 ; REM PL SØNDAG - ER DET MENINGEN?????? 51 52 00356'031467 LDA 2,U.STK,3 ; AC2=PDTA 53 00357'025002 LDA 1,+2,2 ; AC1= WORDADR AF 1. BYTE I T$ 54 00360'125100 MOVL 1,1 ; PL RETTELSE SØNDAG T$(INDEX) BYTEADR 55 ; OG HVEM ER DEN TÅBE DER HAR FJERNET ASS CODED SUBR MANUALEN 56 ; FRA NR 46, SÅ MAN KAN KONTROLLERE OM PDA W1 IKKE INDEH W-ADR !!! 57 00361'045472 STA 1,U.S02,3 ; U.S02 = Adr. af 1. byte LDA 2,U.STK,3 58 00362'025003 LDA 1,+3,2 ; AC1=Max ant. chr. 59 00363'044073 STA 1,U.S03 ; U.S03=AC1 60 00364'020071 LDA 0,U.S01 ; AC0=U.S01 «ff» 0008 UCA01 01 00365'106522 SUBZL 0,1,SZC ; AC0 > AC1 ? 02 00366'000427 JMP ERR31 ; JA => Index fejl. 03 00367'030040 GET13: LDA 2,CUR ; AC2=CUR 04 00370'034017 LDA 3,USER ; AC3=USER 05 00371'021442 LDA 0,PIO,3 ; Adr. af primære I/O zone (term.). 06 00372'007115 F.ICHAR ; Hent en carakter 07 00373'000424 JMP ERRUD ; Hvis fejl. Skriv den ud. 08 00374'020054 LDA 0,44 ; AC0=31 09 00375'152520 SUBZL 2,2 ; AC2=1 10 00376'142400 SUB 2,0 ; AC0=31 11 ; FLG BET. RETTET PL SØND:SUB # 1,0,SNR ; CHR > 31 (>='space') 12 00377'122032 ADCZ # 1,0,SZC ; PL RETTELSE SØNDAG ILL TILFÆLDE 4 BIT 13 ; C=0 AC1=0110 (HENTET BYTE FRA ICHAR) OG AC0=1100 14 ; AC1 COMPL =1001 15 ; AC0 EX =1100 (AC0>=AC1) 16 ; SUM =0101 OG OVERFLOW=> C=1 OG DER SKIPPES IKKE 17 ; DVS SKIP HVIS AC1<=AC0 DVS HVIS AC1<=31 (KORREKT?) 18 00400'000767 JMP GET13 ; Nej !! Går tilbage til 'GET13' 19 00401'121000 MOV 1,0 ; AC0 = AC1 20 00402'025472 LDA 1,U.S02,3 21 00403'030040 LDA 2,CUR 22 00404'007104 A.PBYTE ; Put chr ud i T$. 23 00405'000001 1 ; Hvordan ud!! 24 00406'025472 LDA 1,U.S02,3 ; GEM AC1 i U.S02 25 00407'125400 INC 1,1 ; AC1=AC1+1 26 00410'045472 STA 1,U.S02,3 ; GEM AC1 UD I 'U.S02' 27 00411'031471 LDA 2,U.S01,3 ; AC2=U.S01 28 00412'122415 SUB # 1,0,SNR ; Input færdigt!! 29 00413'000754 JMP GET13 ; Nej 30 00414'002242 RET1 ; Ja 31 00415'006244 ERR31: ERROR 32 00416'000037 31 ; Indexfejl (returner til BASIC) !! 33 00417'050402 ERRUD: STA 2,+2,1 34 00420'006244 ERROR 35 00421'000000 0 ; Evt. BCALL IOERR 36 37 38 PRDE2 ; PROGRAM SLUT 39 40 PP10: ; PROCESSDESCRIPTOR: 41 00422'000000 0 ; NEXT 42 00423'000000 0 ; PREV 43 00424'000000 0 ; CHAIN 44 00425'000025 PP15-PP10 ; SIZE 45 00426'052503 .TXT .UCALL. ; NAME 46 040514 47 046000 48 00431'000431' .+0 ; FIRST EVENT 49 00432'000431' .-1 ; LAST EVENT 50 00433'000000 0 ; BUFFE 51 00434'000000' PP00 ; PROGRAM 52 00435'000000 0 ; STATE 53 00436'000000 0 ; TIMER 54 00437'000001 1 ; PRIORITY 55 00440'000007' PP05 ; BREAK 56 00441'000422' PP10 ; AC0 57 00442'000000 0 ; AC1 58 00443'000422' PP10 ; AC2 59 00444'000000 0 ; AC3 60 00445'000016" PP05*2 ; PSW «ff» 0009 UCA01 01 00446'000000 0 ; SAVE 02 03 PP15: ; 04 .END PP10 0000 SOURCE LINES IN ERROR «ff» «nul»