|
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 - download
Length: 21683 (0x54b3) Description: Bits:30000869 GIER SIMULATOR GIERKBTXT Types: 8-hole paper tape, TextFileEvenParity
\f s. e50, b8, d50 w. k=h55 0 ;Radr. 0 ;celle 0adr. jl. w3 e48. ; jl. w3 e49. ; e0: ;LÆS KOMMANDO: b. a6 w. jl. w3 h22.-2 ; inblock; rl w3 x1+h3 ; if record base = last byte then sl w3 (x1+h3+2) ; jl. e0. ; goto LÆS KOMMANDO; al w2 -2 ; kommandotæl:= -2; a0: al w2 x2+2 ;om: kommandotæl:= kommandotæl + 2; rl. w0 x2+d30. ; w0:= word(d30 + kommandotæl); sn w0 -1 ; if w0 = -1 then jl. a5. ; goto fejl; se w0 (x3+1) ; if w0 <> word(record base + 1) then jl. a0. ; goto om; sl w2 d29 ; if kommandotæl >= d29 then jl. a1. ; goto fundet; rl. w0 x2+d31. ; w0:= word(d31 + kommandotæl); se w0 (x3+3) ; if w0 <> word(record base + 3) then jl. a0. ; goto om; a1: al w0 0 ;fundet: rs w0 x1+h2+4 ; tal:= partial word:= 0; rs. w2 b2. ; gem kommandotæl; sn w2 d29 ; if kommandotæl = d29 then jl. a3. ; goto læs tal; se w2 d25 ; if kommandotæl <> d25 then jl. a6. ; goto udfør; al w3 2 ; wa w3 x1+h3 ; record base:= record base + 2; rs w3 x1+h3 ; a3: jl. w3 h25. ;læs tal: sn w2 10 ; inchar; if char = NL then jl. a6. ; goto udfør; al w2 x2-48 ; char:= char - 48; sl w2 0 ; if char < 0 or sl w2 10 ; char >= 10 then jl. a4. ; goto fejltal; wm. w0 d34. ; tal:= tal * 10 + char; ba w0 5 ; jl. a3. ; goto læs tal; a4: am d37 ;fejltal: outtext(<:??? tal<10>:>); goto e0; a5: al. w0 d33. ;fejl: outtext(<:??? kommando<10>:>); goto e0; e17: jl. w3 h31.-2 ;SKRIV: e24: al w2 10 ;SKRIVVR: jl. w3 h33.-2 ; jl. e0. ; goto LÆS KOMMANDO; a6: rl. w2 b2. ;udfør:hent kommandotæl; ls w2 -1 ; kommandotæl:= kommandotæl / 2; bz. w3 x2+d32. ; w3:= byte(d32 + kommandotæl); jl. w3 x3-k ; goto w3; jl. e24. ; goto SKRIVVR; e. e1: ;SKRIV STATUS: b. a4 w. rl. w2 g0. ; rl w0 x2+g18 ; so w0 1 ; jl. a0. ; al. w0 d0. ; jl. w3 h31.-2 ; a0: bz w0 x2 ; so w0 1 ; jl. a1. ; al. w0 d1. ; jl. w3 h31.-2 ; a1: al w2 -1 ; a2: al w2 x2+1 ; sl w2 12 ; jl. a3. ; am. ( g0.) ; rl w0 g11 ; ls w0 x2-11 ; so w0 1 ; jl. a2. ; al w1 x2 ; ls w1 1 ; rl. w0 x1+d2. ; rs. w0 d3. ; al. w0 d3. ; jl. w3 h31.-2 ; jl. a2. ; a3: rl. w2 g0. ; rl w0 x2+g19 ; so w0 1 ; jl. a4. ; al. w0 d4. ; jl. w3 h31.-2 ; a4: jl. w3 e18. ; skriv fejltype; jl. e19. ; goto SKRIV REGISTERNAVN; e. e18: ;SKRIV FEJLTYPE: b. a3 w. rs. w3 b3. ; am. ( g0.) ; bz w2 g20 ; sn w2 0 ; jl. a3. ; so w2 1<3>g21 ; jl. a0. ; al. w0 d5. ; jl. w3 h31.-2 ; a0: so w2 1<3>g22 ; jl. a1. ; al. w0 d6. ; jl. w3 h31.-2 ; a1: so w2 1<3>g23 ; jl. a2. ; al. w0 d7. ; jl. w3 h31.-2 ; a2: so w2 1<3>g24 ; am d9 ; al. w0 d8. ; jl. w3 h31.-2 ; jl. ( b3.) ; hop retur; a3: al. w0 d10. ; jl. w3 h31.-2 ; jl. ( b3.) ; hop retur; e. e19: ;SKRIV REGISTERNAVN: b. a0 w. rl. w2 d12. ; sl w2 0 ; jl. a0. ; al. w0 x2+d13. ; jl. e17. ; goto SKRIV; a0: al. w0 d14. ; jl. w3 h31.-2 ; al w0 x2 ; jl. w3 h32. ; 1<23+32<12+2 ; jl. e24. ; goto SKRIVVR; e. e2: ;SKRIV REGISTER: b. a2 w. jl. w3 e20. ; find register; ds. w1 b1. ; gem arbejdsregistre; al w0 -1 ; bittæller:= -1; al w1 0 ; adressetæller:= 0; al w2 -1 ; positionstæller:= -1; a0: al w2 x2+1 ;rep: positionstæller:= positionstæller + 1; sl w2 10 ; if positionstæller <= 10 or sl w1 6 ; adressetæller >= 6 then jl. a1. ; goto videre; al w1 x1+2 ; adressetæller:= adressetæller + 2; jl. a0.-2 ; positionstæller:= -1; goto rep; a1: ;videre: ba. w0 1 ; bittæller:= bittæller + 1; sl. w0 ( b0.) ; if bittæller >= maxbits then jl. a2. ; goto ud; am. ( b1.) ; SB:= startadresse; rl w3 x1 ; w3:= word(adressetæller + startadresse); ls w3 x2-11 ; w3:= w3 shift (positionstæller - 11); ds. w2 b3. ; gem adressetæller og positionstæller; sz w3 1 ; charout(if bit23(w3) = 1 then am 3 ; 49 else al w2 46 ; 46); jl. w3 h26.-2 ; dl. w2 b3. ; hent adressetæller og positionstæller; jl. a0. ; goto rep; a2: al w2 32 ;ud: outchar(32); jl. w3 h26.-2 ; jl. e19. ; goto SKRIV REGISTERNAVN; e. e3: ;LÆS REGISTER: b. a10 w. jl. w3 e20. ; find register; ds. w1 b1. ; gem arbejdsregistre; sh w0 10 ; maske(1,2):= if maxbits > 10 then am 4 ; words(d27-2,d27) dl. w3 d27. ; else rs. w2 b2. ; words(d27+2,d27+4); sl w0 41 ; if maxbits > 40 then rl. w3 d28. ; maske(2):= word(d28); rs. w3 b3. ; al w2 0 ; al w3 0 ; ds. w3 b5. ; nulmaske:= 0; ds. w3 b7. ; enmaske:= 0; al w3 -1 ; bittæller:= -1; rs. w3 b8. ; gem bittæller; a0: jl. w3 h25.-2 ;rep: inchar; sn w2 0 ; if char = NUL then jl. a0. ; goto rep; sn w2 10 ; if char = NL then jl. a4. ; goto ud; rl. w3 b8. ; hent bittæller; se w2 8 ; if char = BS then jl. a2. ; begin bitt▶14◀æller:= bittæller - 1; al w3 x3-1 ; gem bittæller; goto rep jl. a0.-2 ; end; a2: al w3 x3+1 ; bittæller:= bittæller + 1; sh w3 0 ; if bittæller <= 0 then al w3 0 ; bittæller:= 0; sn w2 32 ; if char = SP then jl. a0.-2 ; begin gem bittæller; goto rep end; sl. w3 ( b0.) ; if bittæller >= maxbits then jl. a0.-2 ; begin gem bittæller; goto rep end; rs. w3 b8. ; gem bittæller; sl w3 10 ; if bittæller >= 10 then al w3 x3+2 ; position:= bittæller + 2; sl w3 22 ; if position >= 22 then al w3 x3+2 ; position:= position + 2; sl w3 34 ; if position >= 34 then al w3 x3+2 ; position:= position + 2; ac w3 x3 ; position:= -position; sn w2 46 ; if char = . then jl. a5. ; goto nul; sn w2 48 ; if char = 0 then jl. a6. ; goto nuller; sn w2 49 ; if char = 1 then jl. a7. ; goto en; sn w2 95 ; if char = _ then jl. a8. ; goto uændret; sn w2 109 ; if char = m then jl. a9. ; goto enere; am d22 ; outtext(<:??? Lovlige...:>); goto e0; a3: al. w0 d21. ;fejl: outtext(<:??? Registe...:>); goto e0; jl. e17. ; goto SKRIV; a4: rl. w3 b8. ;ud: hent bittæller; sl. w3 ( b0.) ; if bittæller <= maxbits then jl. a3. ; goto fejl; dl. w2 b5. ; la. w1 b2. ; nulsat:= nulsat and maske; la. w2 b3. ; ac w1 x1+1 ; nulsat:= -,(nulsat); ac w2 x2+1 ; ds. w2 b5. ; dl. w2 b7. ; la. w1 b2. ; ensat:= ensat and maske; la. w2 b3. ; ds. w2 b7. ; rl. w1 b1. ; w1:= registeradresse; hl w2 x1+1 ; w2h:= byte(w1+1); hl w3 x1+5 ; w3h:= byte(w1+5); hs w2 4 ; w2v:= w2h; hs w3 6 ; w3v:= w3h; hl w2 x1+3 ; w2h:= byte(w1+3); hl w3 x1+7 ; w3h:= byte(w1+7); lo. w2 b6. ; (w2,w3):= (w2,w3) or ensat; lo. w3 b7. ; la. w2 b4. ; (w2,w3):= (w2,w3) and nulsat; la. w3 b5. ; hs w2 x1+3 ; byte(w1+3):= w2h; hs w3 x1+7 ; byte(w1+7):= w3h; hl w2 4 ; w2h:= w2v; hl w3 6 ; w3h:= w3v; hs w2 x1+1 ; byte(w1+1):= w2h; hs w3 x1+5 ; byte(w1+3):= w3h; jl. w3 e18. ; skriv fejltype; jl. e24. ; goto SKRIVVR; a5: dl. w1 d23. ;nul: w0:= 1<23; w1:= 0; ld w1 x3 ; (w0,w1):= (w0,w1) shift position; al w2 0 ; zero:= true; al w3 4 ; jl. a10. ; goto regn; a6: dl. w1 d24. ;nuller: w0:= w1:= -1; ld w1 x3 ; (w0,w1):= (w0,w1) shift position; al w2 0 ; zero:= true; al w3 4 ; jl. a10. ; goto regn; a7: dl. w1 d23. ;en: w0:= 1<23; w1:= 0; ld w1 x3 ; (w0,w1):= (w0,w1) shift position; al w2 4 ; zero:= false; al w3 0 ; jl. a10. ; goto regn; a8: dl. w1 d23. ;uændret: w0:= 1<23; w1:= 0; ad w1 x3+1 ; (w0,w1):= (w0,w1) shifta (position+1); rx. w0 b4. ; nulsat:= nulsat and (w0,w1); rx. w1 b5. ; la. w0 b4. ; la. w1 b5. ; rx. w0 b4. ; rx. w1 b5. ; la. w0 b6. ; ensat:= ensat and (w0,w1); la. w1 b7. ; ds. w1 b7. ; jl. a0. ; goto rep; a9: dl. w1 d24. ;enere: w0:= w1:= -1; ld w1 x3 ; (w0,w1):= (w0,w1) shift position; al w2 4 ; zero:= false; al w3 0 ; a10: rx. w0 x2+b4. ;regn: if zero then rx. w1 x2+b5. ; nulsat:= nulsat or (w0,w1) lo. w0 x2+b4. ; else ensat:= ensat or (w0,w1); lo. w1 x2+b5. ; rx. w0 x2+b4. ; rx. w1 x2+b5. ; am ( 0) ; w0:= -,w0; ac w0 1 ; ac w1 x1+1 ; w1:= -,w1; la. w0 x3+b4. ; if zero then la. w1 x3+b5. ; ensat:= ensat and (w0,w1) ds. w1 x3+b5. ; else nulsat:= nulsat and (w0,w1); jl. a0. ; goto rep; e. e10: ;VÆLG REGISTER: b. a1 w. se w2 d26 ; jl. a0. ; la. w0 d35. ; rs. w0 d12. ; jl. a1. ; a0: al w2 x2+d40 ; ls w2 1 ; rs. w2 d12. ; a1: al. w3 d11. ; al. w1 d15. ; jd 1<11+44 ; se w0 0 ; jl -1 ; jl. e1. ; goto SKRIV STATUS; e. e14: ;HP-knap: b. a2 w. rl. w1 g0. ; bl w2 x1+g16+1 ; sl w2 0 ; jl. a0. ; al. w0 d41. ; jl. e17. ; goto SKRIV; a0: al w0 1<15>g25; lo w0 x1+g20+1 ; rs w0 x1+g20+1 ; e15: al w0 -1 ;START: e16: la. w0 d36. ;KØR TRINVIS: se w0 0 ; jl. a2. ; a1: jl. w3 e18. ; skriv fejltype; jl. e24. ; goto SKRIVVR; a2: lx. w0 d36. ; rl. w1 g0. ; bz w2 x1+g20 ; se w2 0 ; jl. a1. ; rl w2 x1+g20+1 ; sz w2 1<15>g25; ba. w0 -1 ; rs w0 x1+g20+1 ; jl. e1. ;NB! foreløbig ordre!!! e. e4: am -1 ;SÆT R00: e5: al w1 0 ;NULSTIL R00: hs. w1 ( g0.) ; jl. e1. ; goto SKRIV STATUS; e6: am 1 ;SÆT KA: e8: al w1 1 ;SÆT KB: rl. w2 g0. ; rl w0 x2+g11 ; lo w0 2 ; rs w0 x2+g11 ; jl. e1. ; goto SKRIV STATUS; e7: am -1 ;NULSTIL KA: e9: al w1 -2 ;NULSTIL KB: rl. w2 g0. ; rl w0 x2+g11 ; la w0 2 ; rs w0 x2+g11 ; jl. e1. ; goto SKRIV STATUS; e12: am -1 ;KANAL0 FRI: e11: al w0 1 ;KANALER FRIE: am. ( g0.) ; rs w0 g29 ; jl. w3 e18. ; skriv fejltype; jl. e24. ; goto SKRIVVR; e20: ;FIND REGISTER: b. a0 w. rl. w1 d12. ; sl w1 0 ; jl. a0. ; bz. w0 x1+d38. ; bl. w1 x1+d39. ; wa. w1 g0. ; jl x3 ; hop retur; a0: al w0 42 ; ls w1 3 ; wa. w1 g30. ; jl x3 ; hop retur; e. e21: al w0 -1 ;SÆT h: am. ( g0.) ; rs w0 g19 ; jl. e1. ; goto SKRIV STATUS; e22: am -1 ;SÆT O: e23: al w1 0 ;NULSTIL O: am. ( g0.) ; rs w1 g18 ; jl. e1. ; goto SKRIV STATUS; e13: rl. w1 g0. ;RESET: al w0 0 ; rs w0 x1+g19 ; rs w0 x1+g20 ; al w0 58<2 ; rs w0 x1+g15 ; al w0 -1>13 ; la w0 x1+g16 ; rs w0 x1+g16 ; al w0 g31 ; rs w0 x1+g29 ; jl. w3 e18. ; skriv fejltype; jl. e24. ; goto SKRIVVR; e49=e0 e48: al. w0 d49. ;PROGRAM START: rs. w0 g0. ; al. w0 d50. ; rs. w0 g30. ; al. w1 d15. ; al. w3 d11. ; jd 1<11+42 ; se w0 0 ; jl -2 ; jl. w3 e18. ; skriv fejltype; jl. e24. ; goto SKRIVVR; b0: 0 ; b1: 0 ; b2: 0 ; b3: 0 ; b4: 0 ; b5: 0 ; b6: 0 ; b7: 0 ; b8: 0 ; d0: <:O <0>:> ; d1: <:T <0>:> ; d2: <:OA :> ; <:OB :> ; <:TA :> ; <:TB :> ; <:PA :> ; <:PB :> ; <:QA :> ; <:QB :> ; <:RA :> ; <:RB :> ; <:KA :> ; <:KB :> ; d3: <: <0>:> ; d4: <:h <0>:> ; d5: <:L-<0>:> ; d6: <:S-<0>:> ; d7: <:TR-<0>:> ; d8: <:TO-:> ; d9=-d8. <:fejl <0>:> ; d10: <:klar <0>:> ; d11: <:giertromle<0>:> ; d15: 320 ; 0 ; 0 ; 0 ; 0 ; d12: 0 ; 0 ; 0 ; 0 ; 0 ; <:g<0><0>:> ; <:by<0>:> ; <:bs<0>:> ; <:bl<0>:> ; <:tk<0>:> ; <:ta<0>:> ; <:in<0>:> ; <:p<0><0>:> ; <:s2<0>:> ; <:r2<0>:> ; <:s1<0>:> ; <:r1<0>:> ; <:F<0><0>:> ; <:L<0><0>:> ; <:H<0><0>:> ; <:O<0><0>:> ; <:M<0><0>:> ; <:R<0><0>:> ; d13: ; d14: <:celle<0>:> ; d21: <:??? Registeret er ikke så langt.<0>:> d22=-d21. <:??? Lovlige tegn er <60>bs>!<60>sp>!1!.!_!m!0.<0>:> 1<23 ; d23: 0 ; -1 ; d24: -1 ; h. -4, -4 ; d27: -4, -4 ; -4, 0 ; 0 , 0 ; d28: -4, -1 ; w. d30: <:end:> ; d25=-d30. d26=d25>1 <:cel:> ; <:res:> ; <:sta:> ; <:fri:> ; <:fri:> ; <:ka1:> ; <:ka0:> ; <:kb1:> ; <:kb0:> ; <:fin:> ; d29=-d30. <:ud<32>:> ; <:g<10><0>:> ; <:by<10>:> ; <:bs<10>:> ; <:bl<10>:> ; <:tk<10>:> ; <:ta<10>:> ; <:in<10>:> ; <:p<10><0>:> ; <:s2<10>:> ; <:r2<10>:> ; <:s1<10>:> ; <:r1<10>:> ; <:F<10><0>:> ; <:L<10><0>:> ; <:H<10><0>:> ; <:O<10><0>:> ; <:M<10><0>:> ; <:R<10><0>:> ; <:T1<10>:> ; <:T0<10>:> ; <:t1<10>:> ; <:t0<10>:> ; <:O1<10>:> ; <:O0<10>:> ; <:o1<10>:> ; <:o0<10>:> ; <:h1<10>:> ; <:h<10><0>:> ; <:=<10><0>:> ; <::=<10>:> ; <:hp<10>:> ; <:<10><0><0>:> ; -1 ; d31: <:<10><0><0>:> ; <:le<32>:> ; <:et<10>:> ; <:rt<10>:> ; <:<10><0><0>:> ; <:0 <10>:> ; <:<10><0><0>:> ; <:<10><0><0>:> ; <:<10><0><0>:> ; <:<10><0><0>:> ; <:is<10>:> ; h. d32: h7 ,e10 ; (ENDPROGRAM, VÆLG REGISTER, e13,e15 ; RESET, START, e11,e12 ; KANALER FRIE, KANAL0 FRI, e6 ,e7 ; SÆT KA, NULSTIL KA, e8 ,e9 ; SÆT KB, NULSTIL KB, h14,e16 ; FINIS, KØR TRINVIS, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, e10,e10 ; VÆLG REGISTER, VÆLG REGISTER, d40=d32. e4 ,e5 ; SÆT R00, NULSTIL R00, e4 ,e5 ; SÆT R00, NULSTIL R00, e22,e23 ; SÆT O, NULSTIL O, e22,e23 ; SÆT O, NULSTIL O, e21,e21 ; SÆT h, SÆT h, e2 ,e3 ; SKRIV REGISTER, LÆS REGISTER, e1 4,e1 ; HP-knap, SKRIV STATUS); w. d33: <:??? kommando<0>:>; d37=-d33. <:??? tal<0>:> ; d34: 10 ; d35: 1023 ; d36: g27 ; h. 10, g17 ; 10, g16 ; 10, g15 ; 10, g14 ; 10, g13 ; 10, g12 ; 10, g11 ; 10, g10 ; 10, g9 ; 10, g8 ; 10, g7 ; 10, g6 ; 42, g5 ; 42, g4 ; 40, g3 ; 40, g2 ; 40, g1 ; 42, 0 ; d38: d39=d38+1 w. d41: <:!?! hp spærret<0>:> d49: k=k+100 d50: e. e. e. ▶EOF◀