|
DataMuseum.dkPresents historical artifacts from the history of: RC4000/8000/9000 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about RC4000/8000/9000 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 21504 (0x5400) Types: TextFile Names: »algolredtxt«
└─⟦621cfb9a2⟧ Bits:30002817 RC8000 Dump tape fra HCØ. Detaljer om "HC8000" projekt. └─⟦0364f57e3⟧ └─⟦this⟧ »algolredtxt« └─⟦667bb35d6⟧ Bits:30007480 RC8000 Dump tape fra HCØ. └─⟦4334b4c0b⟧ └─⟦this⟧ »algolredtxt«
(algolred=slang fpnames list.no xref.no type.yes ) \f s. a40,b40,j40 ; w. k=h55 ; b0: 0,0 ; al w1 x1+2 ; rs. w1 b0. ; fp base+2 al. w3 b1. ; al w3 x3-14 ; al w0 0 ; jd 1<11+0 ; set interrupt jl. j31. ; b1: al w2 10 ; jl. w3 h26.-2 ; al w2 0 ; b2: rl. w0 x2+b1.-14; sn w2 10 ; ws. w0 b0. ; jl. w3 h32.-2 ; 1<23+32<12+8 ; al w2 x2+2 ; sh w2 12 ; jl. b2. ; al w2 10 ; jl. w3 h33.-2 ; dl. w1 b1.-12 ; dl. w3 b1.-8 ; jl. (b1.-4) ; b3: al w2 25 ; jl. w3 h34.-2 ; al. w1 h21. ; curr out zone descr al. w2 a8. ; jl. w3 h30. ; unstack output-zone rl. w3 a11. ; jl. w2 j33. ; test punch al. w0 a9. ; jl. w3 h31.-2 ; jl. w3 h30.-4 ; unstack in-zone b4: al w2 10 ; jl. w3 h34.-2 ; al w2 0 ; b5: jl. h7. ; a0: 0 ; indryk a1: 2 ; antal space pr. begin a2: 8 ; antal space under comment a3: 0 ; NL FF a4: 0 ; klasse a5: 0 ; sidste tegnnr. ved test label a6: -1 ; pointer i a10 (buffer) a8: 0,r.4 ; stack chain for stack curr. outputzone a9: <:<10>slut <0>:>; a11:0 ; adr of outputduc a12:0 ; adr of inputduc h. ; klasse tabel a15:0,0,0,0,0,0,0,0,0,0,1,0,1,0,0,0; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0; 2,2,2,2,2,2,2,2,2,2,0,0,0,0,0,0; 0,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6; 6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,6; 0,7,7,7,6,7,6,6,6,6,6,6,6,6,6,6; 6,6,6,6,6,6,6,6,6,6,6,6,6,6,0,0; w. \f ;; giveupaction for io ; reg call retur ; w0 answer addr ; w1 zone descr addr ; w2 share descr addr ; w3 status word b. g5,f5 w. am a11-a12 ; j30:rl. w2 a12. ; addr of duc ds. w1 g1. ; ds. w3 g3. ; al. w1 h21. ; curr out zone descr al. w2 a8. ; jl. w3 h30. ; unstack curr output jl. w3 h30.-4 ; unstck curr input dl. w2 g3. ; jl. h7. ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. a10: ; \f ;; parametercheck b. f10,g10 w. j31:bl w0 x2+10 ; se w0 6 ; if no source then jl. f0. ; goto f0 rs. w2 j31. ; al. w1 h21. ; curr. out zone descr addr al. w2 a8. ; stack chain addr jl. w3 h29. ; stack outputzone al w2 0 ; al. w3 j30.-2 ; ds w3 x1+h2+2 ; rl. w2 j31. ; al w2 x2+2 ; source name rs. w2 a11. ; jl. w3 h28.-2 ; connect zone se w0 0 ; if ok.no then jl. j32. ; goto j32 rl. w3 a11. ; jl. w2 j33. ; test punch rl. w2 j31. ; ba w2 x2+1 ; f0: ba w2 x2+1 ; next param bz w0 x2+1 ; se w0 10 ; if no object jl. f1. ; then goto f1 rs. w2 j31. ; jl. w3 h29.-4 ; stack curr in-zone al w2 0 ; al. w3 j30. ; ds w3 x1+h2+2 ; rl. w2 j31. ; al w2 x2+2 ; object name rs. w2 a12. ; jl. w3 h27.-2 ; connect inputzone se w0 0 ; if ok.no then jl. j32. ; goto j32 rl. w2 j31. ; ba w2 x2+1 ; next param f1: al w3 0 ; f2: bl w0 x2 ; sh w0 2 ; jl. j21. ; goto start bz w0 x2+1 ; sn w0 4 ; if integer then goto f3 jl. f3. ; al. w0 g0. ; al. w1 h21. ; al. w2 a8. ; jl. w3 h30. ; unstck outputzone jl. w3 h31.-2 ; bz w1 x2+1 ; al w0 x2+2 ; sn w1 10 ; if name param then jl. w3 h31.-2 ; write name jl. b4. ; else goto stop f3: rl w0 x2+2 ; param rs. w0 x3+a1. ; al w3 x3+2 ; ba w2 x2+1 ; sh w3 2 ; jl. f2. ; jl. j21. ; g0: <:<10>*** param to algolred <0>:>; e. \f ;; fejludskrift for connect zone b. f10,g12 w. g4: <: name format illegal<10><0>:>; g5: <: not allowed<10><0>:>; g6: <: convention error<10><0>:>; g7: <: not user, non exist<10><0>:>; g8: <: malfunctioning<10><0>:>; g9: <: no more resources in your process<10><0>:>; h. g10:0,0,g8-g9,g7-g9,g6-g9,g5-g9,g4-g9; w. j32:am (0) ; bl. w1 g10. ; text adresse al. w0 x1+g9. ; rs. w0 g0. ; al. w1 h21. ; al. w2 a8. ; jl. w3 h30. ; unstack outputzone rl. w2 j31. ; al w0 x2+2 ; jl. w3 h31.-2 ; udskriv entry name rl. w0 g0. ; jl. w3 h31. ; udskriv fejl jl. b4. ; goto slut g0: 0 ; e. \f ;; test punch ; reg call return ; w0 uaendret ; w1 - ; w2 returadr udef ; w3 entryadr - ; tester om outputduc. er puncher, idet der da laves ; 150 nulkarakterer b. g12,f5 w. j33:ds. w1 g1. ; ds. w3 g3. ; sn w3 0 ; jl. f3. ; al. w1 g4. ; jd 1<11+42 ; lookupentry se w0 0 ; if result<>0 then jl. f1. ; goto f1 (test note) f0: bz w2 x1+1 ; kind se w2 12 ; if kind<>12 then jl. f3. ; goto f3. al. w2 g9. ; al. w3 g10. ; first and last address ds. w3 g8. ; al w3 x1+2 ; al. w1 g5. ; jd 1<11+8 ; reserve punch jd 1<11+16 ; al. w1 g11. ; jd 1<11+18 ; rl. w2 g12. ; se w2 0 ; if g12<>0 then jd 1<11+10 ; release punch rs. w3 g12. ; else lad g12<>0 jl. f3. ; retur f1: c.h57 rl w3 x3 ; al. w1 h52.+2 ; first note f2: sn w3 (x1-2) ; if entry = note then goto jl. f0. ; goto f0 al w1 x1+22 ; sh. w1 h53. ; jl. f2. ; goto f2 z. f3: dl. w1 g1. ; jl. (g2.) ; g0: 0 g1: 0 g2: 0 g3: 0 g4: 0,r.10 ; g5: 5<12+2 ; g7: 0 ; g8: 0 ; g9: 0,r.50 ; g10: ; g11:0,r.8 ; g12:0 e. \f ;; læseprocedure ; reg call retur ; w0 klasse af sidst læste tegn ; w1 uændret ; w2 sidst læste tegns isoværdi ; w3 returadr udef b. f10,g10 w. j4: am 1 ; læs og skip space j3: am 4 ; læs og store space j2: am 2 ; læs 1 tegn j1: am 4 ; læs og store indtil klasse<2 j0: al w2 0 ; læs og store indtil klasse<6 ds. w1 g1. ; ds. w3 g3. ; f0: jl. w3 h25.-2 ; læs et tegn bz. w0 x2+a15. ; klasse rs. w0 a4. ; store klasse rl. w1 g2. ; sl w1 11 ; if spaceskip then jl. f2. ; goto f2 sn w1 6 ; if læs 1 karakter then jl. f3. ; goto f3 jl. w3 j10. ; else store det læste tegn am. (g2.) ; og hop til aktion (g2)= 0 , 4 eller 10 jl. f1. ; if læs indtil klasse<6 then f1: sh w0 5 ; if klasse<6 then jl. f3. ; goto f3 sh w0 1 ; else if stop ved kl>2 then jl. f3. ; goto f3 jl. f0. ; og læs næste f2: se w2 32 ; if tegn=space or sn w2 0 ; tegn=0 then jl. f0. ; læs næste f3: rl. w1 g1. ; else stop jl. (g3.) ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; procedure store tegn(tegn) ; reg call retur ; w0 uændret ; w1 udef ; w2 tegn uændret ; w3 returadr - ; ved hop til j9 gemmes tegnet i a10+0 ; ved hop til j10 gemmes tegnet i a10+(a6) b. g5,f5 w. j9: al w1 -1 ; rs. w1 a6. ; j10:rl. w1 a6. ; pointer i tegnbuffer al w1 x1+1 ; rs. w1 a6. ; tæl en frem hs. w2 x1+a10. ; store tegn jl x3 ; e. \f ;; procedure udskrivtegn(antal) ; reg call retur ; w0 antal tegn uændret ; w1 - ; w2 - ; w3 returadr. - ; udskriver det antal tegn, som w0 angiver, ; fra a10 og fremefter b. g5,f5 w. j11:ds. w1 g1. ; ds. w3 g3. ; al w0 0 ; f0: am (0) ; bz. w2 a10. ; næste tegn jl. w3 h26.-2 ; ba. w0 1 ; tæl sh. w0 (g0.) ; if w0<=antal then jl. f0. ; goto f0 rl. w1 g1. ; dl. w3 g3. ; jl x3 ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; udskriver 1 tegn og sætter a3 ; reg call retur ; w0 (1) udef ; w1 uændret ; w2 tegn - ; w3 returadr udef ; udskriver det tegn som står i w2 ; ydlig udføres ; ved hop til j12 sættes a3 til 1 ; ved hop til j13 sættes a3 også til 1 men da er ; w0 initialiseret i forvejen b. g5,f5 w. j12:al w0 1 ; a3:=1 j13:rs. w0 a3. ; a3:=1 j14:ds. w2 g2. ; kun udskrivning rs. w3 g3. ; jl. w3 h26.-2 ; udskriv tegnet dl. w2 g2. ; jl. (g3.) ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; space og new-line skrivning ; reg call retur ; w0 antal space uaendret ; w1 udef ; w2 uændret ; w3 returadr - ; ved hop til j16 udskrives space hvis a3=1 ; ved hop til j17 udskrives NL og space hvis a3=0, ellers ; kun space, ved retur er a3 altid 0 b. g5,f5 w. j15:rl. w0 a0. ; hoppes til j15 init w0 her j16:am 1 ; j17:al w1 0 ; ds. w1 g1. ; ds. w3 g3. ; rl. w2 a3. ; se w2 0 ; if -,nl then jl. f0. ; goto f0. se w1 0 ; if hop til j16 then jl. f1. ; hoppes ud al w2 10 ; else udskriv NL jl. w3 j14. ; f0: jl. w3 j18. ; og space al w3 0 ; rs. w3 a3. ; NL:=falsk f1: dl. w3 g3. ; rl. w0 g0. ; jl x3 ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; spaceudskrivning ; reg call retur ; w0 antal uaendret ; w1 - ; w2 - ; w3 returadr - ; udskriver antal space b. g5,f5 w. j18:ds. w1 g1. ; ds. w3 g3. ; f0: al w2 32 ; sh w0 0 ; if antal er udskrevet then jl. f1. ; goto f1 jl. w3 h26.-2 ; else udskriv 1 space bs. w0 1 ; w0:=w0-1 jl. f0. ; f1: dl. w1 g1. ; dl. w3 g3. ; jl x3 ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; compare ; reg call retur ; w0 ; w1 ; w2 ; w3 returadr returadr+ se kommentar ; sammenligner ordet i a10 or fremefter med hhv ; end else array begin comment ; er ordet i a10 lig med et af de nævnet hoppes hhv ; 2 4 6 8 10 byte over ved returhop b. f10 ,g15 ; h. g4: 101,110,100, 0, 0, 0, 0, 3; end g5: 101,108,115,101, 0, 0, 0, 4; else g6: 097,114,114, 97,121, 0, 0, 5; array g7: 098,101,103,105,110, 0, 0, 5; begin g8: 099,111,109,109,101,110,116, 7; comment w. j19:ds. w1 g1. ; ds. w3 g3. ; al. w1 a10. ; adr paa ord al. w2 g4. ; 1. ord f0: rl w0 x2 ; sn w0 (x1) ; if 2 1. tegn er ens then jl. f1. ; goto f1 al w2 x2+8 ; else sh. w2 g8. ; if flere then jl. f0. ; goto f0 jl. f3. ; else goto f3 f1: bz w3 x2+7 ; laengde se. w3 (a6.) ; if fundne ords laenge<>ordlaengde then jl. f3. ; goto f3 al w3 x3-1 ; f2: am x3 ; bz w0 x2 ; load tegn am x3 ; bs w0 x1 ; minus næste tegn i buffer se w0 0 ; if tegn er forskellige then jl. f3. ; goto f3. al w3 x3-1 ; sl w3 2 ; if flere tegn then jl. f2. ; al. w3 g4.-8 ; else beregn returadresse ws w3 4 ; ac w3 x3 ; ls w3 -2 ; nu er w3 2 4 6 8 10 for hhv am x3 ; end else array begin comment f3: al w3 0 ; wa. w3 g3. ; dl. w1 g1. ; rl. w2 g2. ; jl x3 ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; kopiering ; reg call retur ; w0 antal space uændret ; w1 udhopstegn uaendret ; w2 sidste tegn sidste tegn ; w3 returadr udef ; først undersøges om (w1)<>(w2), for er de ens hoppes ; retur, ellers udskrives tegnet i w2, og der læses og ; skrives, indtil tegnet i w1 mødes, dette sidste tegn ; udskrives ikke. Mødes der et NL sættes det antal space, ; som w0 angiver b. g5,f5 ; w. j20:ds. w1 g1. ; ds. w3 g3. ; rl. w0 a4. ; 1. tegns klasse hentes f0: sn. w2 (g1.) ; w2<> udhopstegn jl. f1. ; hvis ja - hop ud jl. w3 j14. ;udskriv tegnet jl. w3 j2. ; det næste tegn læses se w0 1 ; er tegnet NL eller FF uskrives ; det, og evt efterfølgende space ; skippes, ellers jl. f0. ; jl. w3 j13. ; rl. w0 g0. ; hent space og jl. w3 j18. ; sæt space jl. w3 j4. ; læs tegn sålænge de er space al w3 0 rs. w3 a3. jl. f0. ; f1: dl. w1 g1. ; rl. w3 g3. ; jl x3 ; g0: 0 ; g1: 0 ; g2: 0 ; g3: 0 ; e. \f ;; læs og vælg b. g10,f10 ; w. j21:jl. w3 j2. ; læs et tegn f1: sn w2 60 ; tegn forskellig fra < jl. j29. ; ellers hop til behandling af venstrehak sn w2 25 ; tegn <> EM jl. b3. ; ellers hop til EM udskrivning or slut sn w0 1 ; tegn <> NL jl. f3. ; ellers hop til behandling af NL sl w0 6 ; tegn <> bogstav jl. f4. ; ellers hop til behandling af bogstaver rl. w3 a3. ; a3 er 1 efter NL og ellers 0 se w3 0 ; jl. w3 j15. ; sæt space hvis a3=1 j22:jl. w3 j14. ; udskriv tegn i w2 jl. j21. ; f3: jl. w3 j12. ; udskriv 1 tegn og sæt a3=1 jl. w3 j4. ; skip space jl. f1. ; når der skippes space står der et tegn ; i w2 så læsningen ved f2 udelades f4: jl. w3 j9. ; se w0 7 ; if tegn<> a,b,c,e then jl. j27. ; goto j27 (test label og udskriv) jl. w3 j0. ; læs indtil kl<6 jl. w3 j19. ; compare jl. j27. ; ikke fundet jl. j25. ; end jl. j27. ; else jl. j26. ; array jl. j23. ; begin jl. j24. ; comment e. \f ;; begin b. g5,f5 ; w. j23:rl. w0 a0. ; hent space jl. w3 j17. ; udskriv NL og space al w0 4 ; jl. w3 j11. ; udskriv begin rl. w0 a0. ; wa. w0 a1. ; space:=space+indryk rs. w0 a0. ; al w2 10 ; jl. w3 j12. ; udskriv NL og sæt a3 til 1 jl. w3 j4. ; skip space se w0 1 ; w0 er 1 ved NL eller FF jl. j21.+2 ; er det ikke tilfældet bruges ; karakteren i w2 jl. j21. ; ellers skippes den (der læses oveni) ; behandling af begin slut e. \f ;; comment b. g5,f5 ; w. j24:rl. w0 a0. ; hent space jl. w3 j17. ; udskriv NL og space al w0 6 ; jl. w3 j11. ; udskriv comment bz. w2 a10.+7 ; hent det 1. tegn efter comment rl. w0 a0. ; wa. w0 a2. ; etekst+space til w0 al w1 59 ; semikolon jl. w3 j20. ; kopier jl. w3 j14. ; udskriv semikolon jl. j21. ; og behandling af comment er slut e. \f ;; end b. g10,f10 ; w. j25:rl. w0 a0. ; ws. w0 a1. ; space:=space-indryk sh w0 -1 ; if indryk var lig med 0 then jl. j27. ; goto j27 (der er ikke mødt et begin endnu) rs. w0 a0. ; jl. w3 j17. ; sæt space al w0 2 ; jl. w3 j11. ; udskriv end rl. w0 a0. ; space hentes og er sl w0 1 ; den <= 0 hoppes jl. f0. ; til slut al w1 25 ; bz. w2 a10.+3 ; jl. w3 j20. ; kopier indtil EM mødes jl. b3. ; og hop saa til slut f0: bz. w2 a10.+3 ; hent tegn efter end f1: rl. w0 a4. ; hent tegnklasse f2: sn w2 59 ; er tegnet ';' er der ingen ; kommentarer efter end jl. j22. ; og der hoppes ud sn w2 25 ; if tegn=25 then jl. b3. ; goto b3 (stop) sl w0 5 ; jl. f4. ; bogstav sn w0 1 ; jl. f3. ; NL eller FF jl. w3 j15. ; lav evt space jl. w3 j14. ; jl. w3 j2. ; læs 1 tegn jl. f2. ; f3: jl. w3 j13. ; sæt nl og skip space jl. w3 j4. ; jl. f2. ; f4: jl. w3 j9. ; store tegn i a10+0 jl. w3 j1. ; læs indtil kl<2 jl. w3 j19. ; sammenligning med hhv end else array ; begin comment jl. f6. ; ikke genkendt jl. j25. ; end jl. j28. ; else jl. f6. ; array jl. f6. ; begin f6: rl. w0 a6. ; comment bs. w0 1 ; jl. w3 j11. ; am. (a6.) ; bz. w2 a10. ; jl. f1. ; e. \f ;; array b. g5,f5 ; w. j26:jl. w3 j15. ; evt NL og spaceskrivning al w0 4 ; jl. w3 j11. ; udskriv array bz. w2 a10.+5 ; 1. tegn efter array rl. w0 a0. ; space al w1 59 ; udhopstegn jl. w3 j20. ; kopier jl. w3 j14. ; udskriv semikolon jl. j21. ; behandling af array slut e. \f ;; test label og udskriv b. f5,g5 ; w. j27:rl. w0 a4. ; sl w0 2 ; if tegnklassen>= 2 then jl. w3 j1. ; goto j1 (læs indtil kl<2) rl. w1 a6. ; lad a5 pege på 1. tegn med rs. w1 a5. ; klasse mindre end 2 se w2 32 ; if sidste tegn<>32 then jl. f0. ; hoppes følgende spacelæsning over jl. w3 j3. ; læs indtil tegn<>space f0: se w2 58 ; er det læste tegn <>58 (kolon) jl. j28. ; hoppes videre jl. w3 j3. ; ellers læs og store space sn w0 1 ; er det 1. tegn derefter et NL eller FF jl. f1. ; antages det foranstående, at være en label se w2 59 ; else if tegn=semikolon eller dets sl w0 6 ; tegnklasse er 6 eller 7 then jl. f1. ; goto f1 (labelbehandling) \f ;; udskrivning j28:jl. w3 j15. ; sæt evt space rl. w0 a6. ; det sidst læste tegn udskrives ikke bs. w0 1 ; da det kan være starten på begin end jl. w3 j11. ; osv, udskrivning rl. w3 a6. ; bz. w2 x3+a10. ; hent a(a6) til w2 rl. w0 a4. ; og dets tegnklasse til w0 jl. j21.+2 ; hop til behandling af et karakter \f ;; label f1: al w0 0 ; jl. w3 j17. ; skriv NL og sæt nul space al w1 58 ; rl. w2 a5. ; hs. w1 x2+a10. ; al w0 x2 ; jl. w3 j11. ; ved retur er w0 (a5)+1 rl. w2 a0. ; hent space, skal der sættes flere ws w2 0 ; space efter etiketten er w2 nu >0 sh w2 0 ; jl. f3. ; al w0 x2 ; og antallet flyttes til w0 jl. w3 j18. ; og de sættes f3: al w1 0 ; sæt NL rs. w1 a3. ; til falsk am. (a6.) ; a6 peger på det 1. bogstav efter bz. w2 a10. ; kolon, som hentes til w2 rl. w0 a4. ; tegnklasse jl. j21.+2 ; hop til behandling af en karakter e. \f ;; venstrehak b. g5,f5 ; w. j29:jl. w3 j15. ; hent space til w0 jl. w3 j14. ; venstrehak jl. w3 j2. ; hent et tegn se w2 58 ; er tegnet ikke et kolen jl. j22. ; hoppes til udskrivning af dette f0: al w1 58 ; rl. w0 a0. ; jl. w3 j20. ; jl. w3 j14. ; jl. w3 j2. ; der læses et tegn er det se w2 62 ;et højrehak et strengen slut jl. f0. ; ellers hoppes til videre læsning jl. j22. ; det sidst læste tegn udskrives e. e. e. \f ▶EOF◀