|
|
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: 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◀