|
|
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: 41472 (0xa200)
Types: TextFile
Names: »do32tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »do32tx «
; do text 2 af 2
; procedure assign word(word,sorry);
; procedure assign variables(base);
; procedure assign array(base);
; call: exit:
; w0 destroyed
; w1 destroyed
; w2 base word
; w3 link destroyed;
b.j31 ; begin
w.d21: rl.w0 e25. ; assign word:
sn w0 8 ; if next delim=8 then
jl x3+0 ; goto sorry;
al.w2 e13. ; base:= addr(word);
al w3 x3+2 ; link:= link+2;
am -2 ; step:= -2
d22: am -2 ; assign variable: or 0
d23: al w0 2 ; assign array: or 2;
rs.w3 e31. ;
al w3 0 ; xy index:= 0;
ds.w0 e16. ;
se w0 2 ; operator:=
am 2 ; if step=2 then 34
al w3 34 ; else 36;
rs.w3 e12. ; old operator:= operator;
rs.w3 e18. ;
rl w1 x2+0 ; word:= word(base);
ds.w2 e14. ;
sn w0 -2 ; if step=-2 then
jl. j1. ; goto next;
j0: rl.w0 e25. ; test next delim:
se w0 8 ; if next delim<>8 then
jl. j31. ; goto exit;
j1: ; next:
jl.w3 d15. ; next param(
jl. a4. ; terminate,
jl. j2. ; integer,
jl. j23. ; name,
jl. j23. ; name,
; integer);
j2: ; integer:
; value:= param;
dl.w0 e13. ; operation:
j3: jl. x3+2 ; goto case operator of(
ac w2 x2+0 ; 0: increase,
jl. j5. ; 2: decrease,
ac w2 x2+0 ; 4: right shift,
jl. j6. ; 6: left shift,
jl. j7. ; 8: or,
jl. j8. ; 10: and,
jl. j10. ; 12: equal,
jl. j12. ; 14: not equal,
rx w0 4 ; 16: greater,
jl. j11. ; 18: less,
rx w0 4 ; 20: not greater,
jl. j9. ; 22: not less,
jl. j15. ; 24: multiply,
jl. j16. ; 26: divide,
jl. j17. ; 28: modulo,
jl. j18. ; 30: power,
jl. j4. ; 32: index value,
jl. j21. ; 34: save value,
jl. j20. ; 36: store word);
j4: rl.w0 e13. ; index value:
wa.w2 e17.
rl w2 x2+0 ; value:= word(value index+value);
rl.w3 e18. ; operator:= old operator;
jl. j3. ; goto operation;
; increase:
; value:= -value;
j5: ; decrease:
ws w0 4 ; word:= word-value;
jl. j22. ; goto save word;
; right shift:
; value:= -value;
j6: ; left shift:
ls w0 x2+0 ; word:= word shift value;
jl. j22. ; goto save word;
j7: ; or:
lo w0 4 ; word:= word or value;
jl. j22. ; goto save word;
j8: ; and:
la w0 4 ; word:= word and value;
jl. j22. ; goto save word;
; not greater:
; exchange(word,value);
j9: ; not less:
sl w0 x2+0 ; if word>=value then
al w0 x2+0 ; word:= value;
j10: ; equal:
se w0 x2+0 ; if word<>value then
jl. j14. ; goto set false;
jl. j13. ; goto set true;
; greater:
; exchange(word,value);
j11: ; less:
sl w0 x2+0 ; if word>=value then
al w0 x2+0 ; word:= value;
j12: ; not equal:
se w0 x2+0 ; if word<>value then
j13: ; set true:
am -1 ; word:= -1
; else
j14: ; set false:
al w0 0 ; word:= 0;
jl. j22. ; goto save word;
j15: ; multiply:
wm w0 4 ; word:= word*value;
jl. j22. ; goto save word;
j16: al w3 0 ; divide:
wd w0 4 ; word:= word/value;
jl. j22. ; goto save word;
j17: al w3 0 ; modulo:
wd w0 4 ; word:= word mod value;
al w0 x3+0 ; goto save word;
jl. j22.
j18: ; power:
sh w2 -1 ; if value<=-1 then
al w0 0 ; word:= 0;
sh w2 0 ; if value<=0 then
al w0 1 ; word:= 1;
rl w1 0 ; factor:= word;
j19: ; test more:
sh w2 1 ; if value<=1 then
jl. j22. ; goto save word;
wm w0 2 ; word:= word*factor;
al w2 x2-1 ; value:= value-1;
jl. j19. ; goto test more;
j20: dl.w1 e14. ; store word:
wa.w1 e15.
rs w0 x1+0 ; word(base+xy index):= word;
rl.w1 e15.
wa.w1 e16. ; index:= xy index+step;
sl.w1(e15.) ; if index>=xy index then
rs.w1 e15. ; xy index:= index;
j21: ; save value:
al w0 x2+0 ; word:= value;
j22: al w3 36 ; save word:
ds.w0 e13. ; operator:= 36;
jl. j0. ; goto test next delim;
j23: ; name:
jl.w3 d10. ; lookup word(index,
jl. j25. ; point wz,
jl. j26. ; point xy,
jl. j27. ; set operator,
jl. j24. ; special,
jl. j28. ; text);
j24: ; special:
am e10-e0 ; index:= index+buf addr-w0 addr;
j25: ; point wz:
rl.w2 x1+e0. ; value:= word(w0 addr+index);
jl. j2. ; goto operation;
j26: dl.w3 e14. ; point xy:
wa.w3 e15.
rs w2 x3+0 ; word(base+xy index):= word;
rl.w1 x1+e0.
rs.w1 e17. ; value index:= word(w0 addr+index);
al w1 32 ; index:= 32;
j27: ; set operator:
rx.w1 e12. ; old operator:= operator;
rs.w1 e18. ; operator:= index;
rl.w0 e12. ; if old operator=36
se w1 36 ; or operator=32
sn w0 32 ; and old operator<>32 then
sn w1 32 ; goto test next delim;
jl. a1. ; goto list;
jl. j0.
j28: rl.w0 e12. ; text:
sh w0 32 ; if operator<=32 then
jl. a1. ; goto list;
rl.w0 e16.
sn w0 2 ; if step=2 then
jl. j29. ; goto store name;
rl w2 x2+0 ; value:= word(param);
sn w0 0 ; if step=0 then
jl. j2. ; goto operation;
rl.w3 e31. ;
jl x3-2 ; goto sorry;
j29: dl.w1 e14. ; store name:
wa.w1 e15.
rl.w3 e12. ; if operator=36 then
se w3 36 ; begin
jl. j30. ; word(base+xy index):= word;
rs w0 x1+0 ; xy index:= xy index+2
am 2 ; end;
j30: al w3 8
wa.w3 e15.
rs.w3 e15. ; xy index:= xy index+8;
wa.w3 e14. ; addr:= xy index+base;
dl w1 x2+2
ds w1 x3-6 ; words(addr-8:addr-2):=
dl w1 x2+6 ; words(param:param+6);
ds w1 x3-2
al w1 34
rl w2 x3+0 ; operator:= 34;
ds.w2 e13. ; word:= word(addr);
jl. j0. ; goto test next delim;
j31: dl.w3 e14. ; exit:
wa.w3 e15.
rs w2 x3+0 ; word(base+xy index):= word;
jl. (e31.) ;
i.e. ; end;
w.a0: am -2000 ; start:
al.w3 h21.+2000 ;
rs.w3 g61. ;
am d15-d16 ; next param or
a1: jl.w3 d16. ; list: list and next param(
jl. a4. ; terminate,
jl. a7. ; array,
jl. a2. ; space name,
jl. a1. ; list,
jl. a1. ; list);
a2: ; space name:
jl.w3 d10. ; lookup word(index,
jl. a5. ; space wz,
jl. a6. ; space xy,
jl. a1. ; list,
jl. a1. ; list,
; action);
; action:
jl.w3 d13. ; lookup action(index,
jl. a1. ; list);
jl x1+2 ; goto index+2;
a5: al.w2 x1+e0. ; space wz:
jl.w3 d22. ; assign variable(w0 addr+index);
jl. a0. ; goto start;
a6: al w3 f1 ; space xy:
wm w3 2 ; addr:= index*x words
al.w2 x3+e4. ; +x0 addr;
sh w1 6 ; if index<=6 then
rs.w2 x1+e0. ; word(w0 addr+index):= addr;
sl w1 8 ; if index>=8 then
am -10 ; index:= index-10;
rl.w2 x1+e0. ; param:= word(w0 addr+index);
a7: ; array:
jl.w3 d23. ; assign array(param);
jl. a0. ; goto start;
a26: am c6-c7 ; niveau error: text:= <:niveau:>
a27: am c7-c8 ; no core error: or <:no core:>
a28: am c8-c9 ; core addr error: or <:core addr:>
a29: al.w2 c9. ; format error: or <:format:>;
am -2000
jl.w3 g40.+2000 ; error(text addr);
jl.w3 f11. ; outend(10);
am 2 ; ok bit:= 1;
; goto terminate;
a3: al w0 -1 ; after interrupt:
am g3-f10
rs.w0 f10. ; ok bit:= -1;
a4: rl.w0 e37. ; terminate:
am h10+h76-h55-200
rs.w0 h55.+200 ; restore(fp interrupt instruction);
am -2000 ;
al.w1 h19.+2000 ;
se.w1(g60.) ; if word(g60)<>h19 then
jl. 12 ; goto save variables;
al w2 25 ; w2:=<em>;
am -2000 ;
jl.w3 h34.+2000 ; close up `write` zone;
am -2000 ;
jl.w3 h79.+2000 ; terminate `write` zone;
jl.w3 d18. ; save variables;
am -2000 ;
jl. g26.+2000 ; end program(ok bit);
b.j0
w.a30: al w0 0 ; clear:
rl.w1 e9.
al.w3 a0.
j0: rs w0 x1+0 ; for i:= save addr step 2
al w1 x1+2 ; until cur com-2 do
sl.w1(e11.) ; word(i):= 0;
jl. d19. ; restore variables;
jl. j0. ; goto start;
i.e.
b.j22 ; list 2:
w.j0: al w0 -1 ; list:
rs.w0 e20. ; written:= -1;
al w0 0 ;
rx.w0 e27. ; if w or z<>0 then
se w0 0 ; outend(10);
jl.w3 f11. ; w or z:= 0;
jl. j1. ; goto list 1;
a31: am -2000
rl.w0 g60.+2000 ; write:
am -2000
rs.w0 g61.+2000 ;
al w0 -1 ;
rs.w0 e20. ; written:= -1;
al w0 0
rs.w0 e27. ; w or z:= 0;
rl.w0 e3.
rs.w0 e0.-2 ; w3 copy:= word(w3 addr);
rl.w0 e3.+10 ; z3 copy:= word(z3 addr);
rs.w0 e0.+8
am d15-d16 ; next param or
j1: jl.w3 d16. ; list 1: list and next param(
jl. a4. ; terminate,
jl. j2. ; space integer,
jl. j3. ; space name,
jl. j0. ; list,
jl. j0. ; list);
j2: ; space integer:
al.w0 c7.+2
rs.w0 e17. ; text addr:= addr(<:core:>);
am -2000 ;
rl.w1 g16.+2000 ; addr:= param;
jl. j7. ; goto set standard;
j3: ; space name:
jl.w3 d10. ; lookup word(index,
jl. j4. ; write wz,
jl. j5. ; write xy,
jl. j0. ; list,
jl. j6. ; write special,
; output);
; output:
jl.w3 d12. ; lookup output(index,
jl. j0. ; list);
jl x1+2 ; goto index+2;
j4: ; write wz:
al.w1 x1+e0. ; addr:= w0 addr+index;
al w0 -1
rs.w0 e27. ; w or z:= -1;
jl. j7. ; goto set standard;
j5: ; write xy:
am e0-e10 ; addr:= word(w0 addr+index);
; goto set standard;
j6: ; write special:
rl.w1 x1+e10. ; addr:= case index of(buf addr,
; cur com, fp base, h names);
j7: ; set standard:
al w2 x1+2 ; top:= addr+2;
al.w3 b55. ; index:= word format index;
j8: ; set false:
rs.w1 e12. ; write base:= addr;
rs.w1 e15. ; next addr:= write addr:= addr;
ds.w2 e14. ; write top:= top;
rs.w3 e22. ; format index:= index;
jl.w3 f11. ; outend(10);
rl.w0 e17.
jl.w3 f13. ; outtext(text addr);
rl.w0 e27. ; if w or z<>0 then
sn w0 0 ; begin
jl. j9. ; outtext(<: =:>);
al.w0 c3. ; written:= 0;
jl.w3 f13. ; goto next
jl. j10. ; end;
j9: jl.w3 f15. ; outchar(46);
rl.w0 e12.
jl.w2 f12. ; outinteger(<<d>,write base);
jl.w3 f11. ; outend(10);
j10: am 1 ; written:= 0;
; goto next;
j11: al w0 -1 ; set true:
rs.w0 e20. ; written:= -1;
j12: ; next:
jl.w3 d15. ; next param(
jl. j20. ; term,
jl. j18. ; space i,
jl. j19. ; space n,
jl. j14. ; format,
; bytes);
j13: rl.w3 e27. ; bytes:
se w3 0 ; if w or z<>0 then
jl. j0. ; goto list 2;
wa.w2 e13.
rl.w3 e13. ; write top:= write addr+param;
ds.w3 e15. ; next addr:= write addr;
jl.w3 d17. ; write item;
jl. j11. ; goto set true;
j14: ; format:
jl.w3 d11. ; lookup format(index,
jl. j15. ; variable);
rs.w1 e22. ; format index:= index;
sh.w1 d6. ; if index<=format index 63 then
jl. j12. ; goto next;
al w1 x1+2 ; index:= index+2;
rs.w1 e22. ; format index:= index;
bl w0 x1+0
wa.w0 e13. ; write addr:=write addr
rs.w0 e13. ; +byte(index);
rs.w0 e15. ; next addr:=write addr;
ba w0 x1+1 ; write top:= next addr
rs.w0 e14. ; +byte(index+1);
jl. j12. ; goto next;
j15: ; variable:
jl.w3 d10. ; lookup word(index,
jl. j16. ; wz value,
jl. j17. ; xy indexed,
jl. j0. ; list 2,
jl. j0. ; list 2,
jl. j0. ; list 2);
j16: ; wz value:
rl.w2 x1+e0. ; param:= word(w0 addr+index);
jl. j13. ; goto bytes;
j17: ; xy indexed:
rl.w1 x1+e0. ; write index:= word(w0 addr+index);
rs.w1 e28.
jl.w3 d15. ; next param(
jl. j21. ; list last,
jl. j21. ; list last,
jl. j21. ; list last,
jl. j0. ; list 2,
; index);
; index:
wa.w2 e28. ; param:= write index+param;
rl w2 x2+0 ; param:= word(param);
jl. j13. ; goto bytes;
j21: al w0 -10 ; list last:
wa.w0(e38.)
rs.w0(e38.) ; param addr:= param addr-10;
jl. j0. ; goto list 2;
j18: am j2-j3 ; space i: return:= space integer
j19: am j3-a4 ; space n: or space name
j20: am a4-a0 ; term: or terminate
i0: al.w3 a0. ; end: or start;
rx.w3 e20.
sn w3 0 ; if written=0 then
jl.w3 d17. ; write item;
al w2 0
rs.w2 e27. ; w or z:= 0;
am -2000 ;
rl.w1 g61.+2000 ; w1:=output zone;
rl. w3 e20. ; e3:=return;
se. w3 a0. ; if not end
jl x3 ; then goto return
am -2000 ; else
jl. h33.+2000; outend;
i1: am (116) ; bittable:
dl w2 -6 ; top:= top bittable;
rx w2 2 ; addr:= start bittable;
al.w3 b61. ; index:= binary format index;
jl. j8. ; goto set false;
i.e.
b.j1
w.a32: rl w3 x3+0 ; monitor procedure:
al w3 x3-1<11
hs.w3 j0. ; function:= word(link);
dl.w1 e1.
dl.w3 e3. ; restore(w0,w1,w2,w3);
j0=k+1
jd 1<11;+func; monitor call(function);
j1: ds.w1 e1.
ds.w3 e3. ; save(w0,w1,w2,w3);
jl. a0. ; goto start;
w.a33: wa w3 x3+0 ; fp procedure:
dl.w1 e1. ; addr:= link+word(link);
rl.w2 e2. ; restore(w0,w1,w2);
jl w3 x3+0 ; fp call(addr);
se w1 1
jl. j1. ; save(w0,w1,w2,w3);
jl. j1. ; goto start;
i.e.
w.a34: ; do:
jl.w3 d14. ; stack pointer;
jl. a0. ; goto start;
w.a35: ; if:
jl.w3 d21. ; assign word(word,
jl. a1. ; list);
dl.w1 f97. ;
sl w2 0 ; if word>=0 then
jl.w3 d20. ; skip block(<:if:>,<:fi:>);
jl. a0. ; goto start;
w.a36: ; while:
jl.w3 d21. ; assign word(word,
jl. a1. ; list);
sh w2 -1 ; if word<=-1 then
jl. a0. ; goto start;
dl.w1 f98. ;
jl.w3 d20. ; skip block(<:do:>,<:od:>);
a11: al w0 -2 ; unstack pointer:
wa.w0 e33. ; niveau:= repeat niveau-2;
sl w0 0 ; if niveau>=0 then
rs.w0 e33. ; repeat niveau:= niveau;
jl. a0. ; goto start;
w.a37: ; od:
am. (e33.) ; addr:= repeat(repeat niveau);
rl.w0 e19. ; set param addr:
a10: rs.w0(e38.) ; param addr:= addr;
jl. a0. ; goto start;
b.j7 ; wait:
w.a38: jl.w3 d15. ; next param(
jl. a4. ; terminate,
jl. j0. ; seconds,
jl. j3. ; process,
jl. a1. ; list,
jl. a1. ; list);
j0: ; seconds:
ls w2 6 ; slice:= param*64;
j1: sh w2 0 ; again:
jl. a0. ; if slice<=0 then
al w2 x2-1 ; goto start;
al w1 1952 ; slice:= slice-1;
j2: al w1 x1-1
sl w1 0 ; wait 15620 usecs;
jl. j2. ; goto again;
jl. j1.
j3: al w3 x2+0 ; process:
jd 1<11+8 ; reserve process(param,result);
sh w0 1 ; if result<=1 then
jl. j5. ; goto check result;
al.w1 j7. ;
jd 1<11+42 ; look up entry(param,result);
al w3 x1+2 ; param:= tail+2;
sn w0 0 ; if result=0 then
; again:
j4: jd 1<11+8 ; reserve process(param,result);
j5: ; check result:
sn w0 0 ; if result=0 then
jl. a0. ; goto start;
se w0 1 ; if result<>1 then
jl. a1. ; goto list;
rs.w3 e32.
al.w3 c14.
al.w1 j6.
jd 1<11+16 ; send message(<:clock:>,1,buf);
al w1 x1+4
jd 1<11+18 ; wait answer(buf);
rl.w3 e32.
jl. j4. ; goto again;
j6: 0,1
j7: 0,r.10
i.e.
w.a39: ; go:
jl.w3 d21. ; assign word(word,
jl. a1. ; list);
sl w2 f5 ; if word>=repeat niveaus then
jl. a1. ; goto list;
ls w2 1 ; word:= word shift 1;
rl.w0 x2+e26. ; addr:= procedure(word);
al.w3 a10. ; if addr<>0 then
se w0 0 ; begin
jl. d14. ; stack pointer;
; goto set param addr
rl.w0(e38.) ; end;
rs.w0 x2+e26. ; procedure(word):= param addr;
dl.w1 f99. ;
jl.w3 d20. ; skip block(<:go:>,<:og:>);
jl. a0. ; goto start;
w.a40: rl.w3 e33. ; og:
sh w3 0 ; if repeat niveau=<0 then
jl. a1. ; goto list;
rl.w0 x3+e19. ; param addr:=
rs.w0(e38.) ; repeat(repeat niveau);
jl. a11. ; goto unstack pointer;
b.j16 ; slang:
w.a41: jl.w3 d21. ; assign word(addr,
jl. a1. ; list);
al w2 x2-2 ;
rs.w2 e12. ; slang addr:= addr-2;
rl w0 x2+0 ; instruction:= word(slang addr);
al w1 -1 ; slang mode:= -1;
ds.w1 e14. ;
j0: am d15-d16 ; next: next param or
j15: jl.w3 d16. ; list: list and next param(
jl. j16. ; terminate,
jl. j13. ; space integer,
jl. j2. ; space name,
jl. j1. ; point name,
jl. j12. ; point integer);
j16: rl.w0 e13. ; output last
rs.w0 (e12.) ; instr;
jl. a4. ; goto terminate;
j1: ; point name:
jl.w3 d10. ; lookup word(index,
jl. j5. ; point wz,
jl. j7. ; point xy,
jl. j15. ; list,
jl. j15. ; list,
jl. j15. ; list);
j2: ; space name:
jl.w3 d10. ; lookup word(index,
jl. j6. ; space wz,
jl. j8. ; space xy,
am ; name,
am ; name,
; name);
; name:
al w1 0 ; op:= 0;
; next op:
j3: al w0 -1-255 ; mask:= -1-255;
la.w0 x1+c0. ; mod:= mask and op codes(op);
sn w0(x2+0) ; if mod=word(param) then
jl. j4. ; goto found;
al w1 x1+2 ; op:= op+2;
sh w1 64*2*2 ; if op<=64*2*2 then
jl. j3. ; goto next op;
dl w1 x2+2 ; not found:
sn.w0(f96.) ; if word(param)<><:end:>
se w1 0 ; or word(param+2)<>0 then
jl. j15. ; goto list;
rl.w0 e13. ;
rs.w0(e12.) ; word(slang addr):= instruction;
jl. a0. ; goto start;
j4: ; found:
sl w1 128 ; if second table then
al w1 x1-128 ; opcode:=opcode-128;
rs.w1 e14. ; slang mode:= op;
ls w1 17 ; word:= op shift 17;
dl.w3 e13. ; word(slang addr):=
rs w3 x2+0 ; instruction;
al w0 x2+2 ; slang addr:= slang addr+2;
ds.w1 e13. ; instruction:= word;
jl. j0. ; goto next;
j5: ; point wz:
al w1 x1+1 ; index:= index+1;
j6: ; space wz:
sl w1 8 ; if index>=8 then
jl. j11. ; goto delim z;
ls w1 3 ; mod:= index shift 3;
al w2 -1-56 ; mask:= -1-56;
jl. j9. ; goto set mod;
j7: ; point xy:
al w1 x1+1 ; index:= index+1;
j8: ; space xy:
sl w1 8 ; if index>=8 then
jl. j10. ; goto delim y;
sz w1 2.1 ; if index(23)=1 then
al w1 x1+7 ; index:= index+7;
ls w1 -1 ; mod:= index shift -1;
al w2 -1-7 ; mask:= -1-7;
j9: rl.w0 e14. ; set mod:
sz w0 1<7 ; if slang mode(16)=1 then
jl. j15. ; goto list;
bl.w3 e13. ;
la w3 4 ; instruction(0:11):=
wa w3 2 ; instruction(0:11) and mask
hs.w3 e13. ; or mod;
jl. j0. ; goto next;
j10: ; delim y:
am -10 ; index:= index-10;
j11: ; delim z:
rl.w2 x1+e0. ; param:= word(w0 addr+index);
sz w1 2.1 ; if index(23)=1 then
j12: ; point integer:
ac w2 x2+0 ; param:= -param;
j13: rl.w0 e14. ; space integer:
sz w0 1<7 ; if slang mode(16)=1 then
jl. j14. ; goto word;
ba.w2 e13.+1 ; instruction(12:23):=
hs.w2 e13.+1 ; instruction(12:23)+param;
jl. j0. ; goto next;
j14: sh w0 0 ; word:
jl. j15. ; if slang mode<=0 then
wa.w2 e13. ; goto list;
rs.w2 e13. ; instruction:= instruction+param;
jl. j0. ; goto next
i.e. ; end;
w.a42: ; jump:
jl.w3 d21. ; assign word(addr,
jl. a1. ; list);
dl.w1 e1. ;
rx.w2 e2. ; restore(w0,w1,w2);
jl.w3(e2.) ; jump link(addr);
ds.w1 e1. ; save(w0,w1,w2);
rs.w2 e2. ;
jl. a0. ; goto start;
; compound format table
w. b28.,b29.
b30.,b31.,b32.,b33.,b34.,b35.,b36.,b37.,b38.,b39.
b40.,b41.,b42.,b43.,b44.,b45.,b46.,b47.,b48.,b49.
b50.,b51.,b52.,b53.,b54.,b55.,b56.,b57.,b58.,b59.
b60.,b61.,b62.,b63.
d0:
; fpnames
c. g8<3 ; if system 3 then
h52=1<23
h53=1<23
z.
c.g8<2
h76=1<23
h95=1<23
h96=1<23
h97=1<23
h98=1<23
z.
w. h0, h1, h2, h3, h4, h5, h6, h7, h8, h9
h10,h11,h12,h13,h14,h15,h16,h17,h18,h19
h20,h21,h22,h23,h24,h25,h26,h27,h28,h29
h30,h31,h32,h33,h34,h35,h36,h37,h38,h39
h40,h41,h42,h43,h44,h45,h46,h47,h48,h49
h50,h51,h52,h53,h54,h55,h56,h57,h58,h59
h60,h61,h62,h63,h64,h65,h66,h67,h68,h69
h70,h71,h72,h73,h74,h75,h76,h77,h78,h79
h80,h81,h82,h83,h84,h85,h86,h87,h88,h89
h90,h91,h92,h93,h94,h95,h96,h97,h98,h99
; word table
w.d1: <:w0:>,<:w1:>,<:w2:>,<:w3:>
<:z0:>,<:z1:>,<:z2:>,<:z3:>
<:x0:>,<:x1:>,<:x2:>,<:x3:>
<:y0:>,<:y1:>,<:y2:>,<:y3:>
<:in:>,<:de:>,<:ri:>,<:le:>
<:or:>,<:an:>,<:eq:>,<:ne:>
<:gr:>,<:ls:>,<:ng:>,<:nl:>
<:mu:>,<:di:>,<:mo:>,<:po:>
<:ba:>,<:cc:>,<:fp:>,<:hn:>
d2: 0
f94=d1-1000
f95=f94+16
; format table
b.j73
w. j29.
j30. ,j33.,j34.,j35.,j36.,j37.,j38.,j39.
j54.,j55.,j56.,j57.,j58.,j59.
j60.,j61. ,j63.,j64.,j65.,j66.,j67.,j68.,j69.
j70.,j71. ,j73.
c.h57<3
j72.
z.
d3.
b28: -1
14<18+11<12+ 5<6+12
4<18
j29: <:binword:> , b29: -1
28<18+ 3<12
j30: <:words5:>,0 , b30: -1
31<18+ 3<12
b31: -1
14<18+20<12+12<6+ 4
b32: -1
14<18+21<12+12<6+ 4
j33: <:bytes10:> , b33: -1
32<18+ 3<12
j34: <:name:> , b34: -1
52<18+ 3<12
j35: <:procname:> , b35: -1
41<18+ 3<12
j36: <:procnames:>,0 , b36: -1
42<18+ 3<12
j37: <:code:> , b37: -1
40<18+ 3<12
j38: <:double:>,0 , b38: -1
43<18+ 3<12
j39: <:groups:>,0 , b39: -1
62<18+ 3<12
b40: -1
14<18+19<12+12<6+ 4
b41: -1
14<18+17<12+12<6+ 4
b42: -1
14<18+18<12+12<6+ 4
b43: -1
15<18+12<12+ 4<6
b44: -1
14<18+11<12+ 6<6+12
4<18
b45: -1
14<18+ 5<12+12<6+ 4
b46: -1
14<18+ 6<12+12<6+ 4
b47: -1
14<18+ 7<12+12<6+ 4
b48: -1
14<18+ 8<12+12<6+ 4
b49: -1
14<18+ 9<12+12<6+ 4
b50: -1
14<18+10<12+12<6+ 4
b51: -1
14<18+11<12+12<6+ 4
b52: -1
14<18+16<12+12<6+ 4
b53: -1
14<18+19<12+10<6+ 5
6<18+ 8<12+ 7<6+12
4<18
j54: <:empty:> , b54: -1
13<18+ 3<12
j55: <:word:> , b55: -1
45<18+ 3<12
j56: <:bytes:> , b56: -1
46<18+ 3<12
j57: <:text:> , b57: -1
47<18+ 3<12
j58: <:octets:>,0 , b58: -1
48<18+ 3<12
j59: <:sixtets:> , b59: -1
49<18+ 3<12
j60: <:octal:> , b60: -1
50<18+ 3<12
j61: <:binary:>,0 , b61: -1
51<18+ 3<12
b62: -1
14<18+ 5<12+ 6<6+ 8
9<18+10<12+12<6+ 4
j63: <:all:>,0 , b63: -1
53<18+ 3<12
d6:
j64: <:buffer:>,0 , -1 h.0,24
w. 45<18+45<12+41<6+41
62<18+62<12+62<6+62
62<18+62<12+62<6+62
2<18
c.h57<2
j65: <:area:> , -1 h.0,20
w. 45<18+52<12+46<6+42
42<18+45<12+45<6+ 2
j66: <:peripheral:> , -1 h.0,96
w. 45<18+52<12+49<6+42
42<18+45<12+45<6+45
39<18
j67: <:internal:> , -1 h.0,74
w. 45<18+52<12+44<6+51
45<18+45<12+45<6+45
45<18+45<12+46<6+44
51<18+44<12+51<6+45
62<18+62<12+62<6+62
45<18+45<12+41<6+45
43<18+43<12+43<6+45
45<18+51<12+51<6+ 2
z.
c.h57<3
j65: <:area:> , -1 h.-4,24
w. 45<18+45<12+45<6+52
41<18+42<12+42<6+45
45<18+52<12+ 2<6
j66: <:peripheral:> , -1 h.-4,100
w. 45<18+45<12+45<6+52
62<18+42<12+42<6+45
45<18+45<12+39<6
j67: <:internal:> , -1 h.-4,92
w. 45<18+45<12+45<6+52
44<18+51<12+45<6+45
45<18+45<12+45<6+45
46<18+44<12+45<6+44
51<18+45<12+62<6+62
62<18+62<12+45<6+45
41<18+45<12+43<6+43
43<18+45<12+45<6+45
45<18+45<12+45<6+45
56<18
z.
j68: <:tail:> , -1 h.0,20
w. 46<18+52<12+45<6+62
62<18+62<12+62<6+ 2
j69: <:zone:> , -1 h.-36,h5
w. 45<18+45<12+45<6+45
45<18+12<12+46<6+52
45<18+45<12+45<6+45
12<18+51<12+45<6+14
8<18+ 7<12+12<6+62
12<18+45<12+45<6+45
62<18+12<12+62<6+62
62<18+39<12
j70: <:share:> , -1 h.0,h6
w. 45<18+45<12+45<6+46
45<18+45<12+45<6+45
45<18+45<12+45<6+45
39<18
c.h57<2
j71: <:note:> , -1 h.0,22
w. 47<18+46<12+52<6+45
45<18+45<12+46<6+45
2<18
z.
c.h57<3
j71: <:entry:> , -1 h.0,36
w. 62<18+45<12+45<6+52
45<18+52<12+39<6
j72: <:chaintable:> , -1 h.-36,66
w. 45<18+62<12+45<6+45
52<18+45<12+52<6+45
45<18+46<12+46<6+46
33<18
z.
j73: <:answer:>, 0 , -1 h.0,10
w. 44<18+45<12+45<6+45
45<18+ 2<12
d3: -1
i.e.
; output table
b.j1
w. j0., j1.
d4.
f96:
j0: <:end:> ,0,-1, jl. i0.
j1: <:bittable:> ,-1, jl. i1.
d4: -1
i.e.
; action table
b.i14,j80
w. i0., i1., i2., i3., i4., i5., i6., i7., i8.
i10.,i11.,i12.,i13.,i14.
c.h57<3
j71.,j72.,j73.,j74.,j75.,j76.
z.
j0., j1., j2., j3., j4., j5., j6., j7., j8., j9.
j10.,j11.,j12.,j13.,j14.,j15.,j16.,j17.,j18.,j19.
j20.,j21.,j22.,j23.,j24.,j25.,j26.,j27.,j28.,j29.
j30.,j31.,j32.,j33.,j34.,j35.,j36.,j37.,j38.,j39.
j40.,j41.,j42.,j43.,j44.,j45.,j46.,j47.,j48.,j49.
j50.,j51.,j52.,j53.,j54.,j55.,j56.,j57.,j58.,j59.
j60.,j61.,j62.,j63.,j64.,j65.,j66.,j67.,j68.,j69.
j70.
i9.
d5.
d8: jl. a32.
d9: jl. a33.
i0: <:clear:> ,-1
jl. a30.
i1: <:write:> ,-1
jl. a31.
i2: <:monitor:> ,0,f0,<:procedure:>,0,f0-6,-1
rl w0 x2+0
rs.w0 4
jl.w3 a32.
0
i3: <:fp:> ,0,0,0,f0,<:procedure:>,0,f0-6,-1
rl.w0 8
wa w0 x2+0
rs.w0 4
jl.w3 d9.
-k
i4: <:do:> ,-1
jl. a34.
i5: <:if:> ,-1
jl. a35.
i6: <:while:> ,-1
jl. a36.
<:if:>,f97:
i7: <:fi:> ,-1
jl. a0.
<:do:>,f98:
i8: <:od:> ,-1
jl. a37.
i9: <:wait:> ,-1
jl. a38.
i10: <:exit:> ,-1
jl. a4.
i11: <:go:> ,-1
jl. a39.
<:go:>,f99:
i12: <:og:> ,-1
jl. a40.
i13: <:slang:> ,-1
jl. a41.
i14: <:jump:> ,-1
jl. a42.
j0: <:set:> ,0,0,0,f0,<:interrupt:>,0,-1,jl.w3 d8., 0
j1: <:process:> ,0,f0,<:description:>,-1,jl.w3 d8., 4
j2: <:initialize:> ,f0,<:process:> ,-1,jl.w3 d8., 6
j3: <:reserve:> ,0,f0,<:process:> ,-1,jl.w3 d8., 8
j4: <:release:> ,0,f0,<:process:> ,-1,jl.w3 d8.,10
j5: <:include:> ,0,f0,<:user:> ,-1,jl.w3 d8.,12
j6: <:exclude:> ,0,f0,<:user:> ,-1,jl.w3 d8.,14
j7: <:send:> ,0,0,f0,<:message:> ,-1,jl.w3 d8.,16
j8: <:wait:> ,0,0,f0,<:answer:> ,0,-1,jl.w3 d8.,18
j9: <:wait:> ,0,0,f0,<:message:> ,-1,jl.w3 d8.,20
j10: <:send:> ,0,0,f0,<:answer:> ,0,-1,jl.w3 d8.,22
j11: <:wait:> ,0,0,f0,<:event:> ,-1,jl.w3 d8.,24
j12: <:get:> ,0,0,0,f0,<:event:> ,-1,jl.w3 d8.,26
j13: <:get:> ,0,0,0,f0,<:clock:> ,-1,jl.w3 d8.,36
j14: <:set:> ,0,0,0,f0,<:clock:> ,-1,jl.w3 d8.,38
j15: <:create:> ,0,0,f0,<:entry:> ,-1,jl.w3 d8.,40
j16: <:look:> ,0,0,f0
<:up:> ,0,0,0,f0,<:entry:> ,-1,jl.w3 d8.,42
j17: <:change:> ,0,0,f0,<:entry:> ,-1,jl.w3 d8.,44
j18: <:rename:> ,0,0,f0,<:entry:> ,-1,jl.w3 d8.,46
j19: <:remove:> ,0,0,f0,<:entry:> ,-1,jl.w3 d8.,48
j20: <:permanent:>,0,f0,<:entry:> ,-1,jl.w3 d8.,50
j21: <:create:> ,0,0,f0
<:area:> ,0,0,f0,<:process:> ,-1,jl.w3 d8.,52
j22: <:create:> ,0,0,f0
<:peripheral:> ,f0,<:process:> ,-1,jl.w3 d8.,54
j23: <:create:> ,0,0,f0
<:internal:> ,0,f0,<:process:> ,-1,jl.w3 d8.,56
j24: <:start:> ,0,0,f0
<:internal:> ,0,f0,<:process:> ,-1,jl.w3 d8.,58
j25: <:stop:> ,0,0,f0
<:internal:> ,0,f0,<:process:> ,-1,jl.w3 d8.,60
j26: <:modify:> ,0,0,f0
<:internal:> ,0,f0,<:process:> ,-1,jl.w3 d8.,62
j27: <:remove:> ,0,0,f0,<:process:> ,-1,jl.w3 d8.,64
j28: <:generate:> ,0,f0,<:name:> ,-1,jl.w3 d8.,68
j65: <:copy:> ,-1,jl.w3 d8.,70
c.h57<2
j29: <:modify:> ,0,0,f0
<:backing:> ,0,f0,<:store:> ,-1,jl.w3 d8.,72
j30: <:select:> ,0,0,f0
<:backing:> ,0,f0,<:store:> ,-1,jl.w3 d8.,74
j66: <:select:> ,0,0,f0,<:mask:> ,-1,jl.w3 d8.,76
j67: <:test:> ,0,0,f0,<:log:> ,-1,jl.w3 d8.,78
j68: <:return:> ,0,0,f0,<:status:> ,0,-1,jl.w3 d8.,80
z.
c.h57<3
j29: <:set:> ,0,0,0,f0
<:catalog:> ,0,f0,<:base:> ,-1,jl.w3 d8.,72
j30: <:set:> ,0,0,0,f0
<:entry:> ,0,0,f0,<:base:> ,-1,jl.w3 d8.,74
j66: <:lookup:> ,0,0,f0,<:head:> ,0,0,f0
<:and:> ,0,0,0,f0,<:tail:> ,-1,jl.w3 d8.,76
j67: <:set:> ,0,0,0,f0,<:backing:> ,0,f0
<:storage:> ,0,f0,<:claims:> ,-1,jl.w3 d8.,78
j68: <:create:> ,0,0,f0
<:pseudo:> ,0,0,f0,<:process:> ,-1,jl.w3 d8.,80
j71: <:regret:> ,0,0,f0,<:message:> ,-1,jl.w3 d8.,82
j72: <:create:> ,0,0,f0
<:backing:> ,0,f0,<:storage:> ,-1,jl.w3 d8.,84
j73: <:insert:> ,0,0,f0,<:entry:> ,-1,jl.w3 d8.,86
j74: <:remove:> ,0,0,f0
<:backing:> ,0,f0,<:storage:> ,-1,jl.w3 d8.,88
j75: <:permanent:>,0,f0
<:entry:> ,0,0,f0,<:in:> ,0,0,0,f0
<:auxiliary:>,0,f0,<:catalog:> ,-1,jl.w3 d8.,90
j76: <:create:> ,0,0,f0,<:entry:> ,0,0,f0
<:lock:> ,0,0,f0,<:process:> ,-1,jl.w3 d8.,92
z.
j69: <:finis:> ,0,0,f0,<:message:> ,-1,jl.w3 d9.,h14.
j31: <:inblock:> ,0,f0,<:current:> ,-1,jl.w3 d9.,h22.-2
j32: <:inblock:> ,-1,jl.w3 d9.,h22.
j33: <:outblock:> ,0,f0,<:current:> ,-1,jl.w3 d9.,h23.-2
j34: <:outblock:> ,-1,jl.w3 d9.,h23.
j35: <:wait:> ,0,0,f0
<:ready:> ,0,0,f0,<:input:> ,-1,jl.w3 d9.,h24.-4
j36: <:wait:> ,0,0,f0
<:ready:> ,0,0,f0,<:output:> ,0,-1,jl.w3 d9.,h24.-2
j37: <:wait:> ,0,0,f0,<:ready:> ,-1,jl.w3 d9.,h24.
j38: <:inchar:> ,0,0,f0,<:current:> ,-1,jl.w3 d9.,h25.-2
j39: <:inchar:> ,0,-1,jl.w3 d9.,h25.
j40: <:outchar:> ,0,f0,<:current:> ,-1,jl.w3 d9.,h26.-2
j41: <:outchar:> ,-1,jl.w3 d9.,h26.
j42: <:connect:> ,0,f0
<:current:> ,0,f0,<:input:> ,-1,jl.w3 d9.,h27.-2
j43: <:connect:> ,0,f0,<:input:> ,-1,jl.w3 d9.,h27.
j44: <:connect:> ,0,f0
<:current:> ,0,f0,<:output:> ,0,-1,jl.w3 d9.,h28.-2
j45: <:connect:> ,0,f0,<:output:> ,0,-1,jl.w3 d9.,h28.
j46: <:stack:> ,0,0,f0,<:input:> ,-1,jl.w3 d9.,h29.-4
j47: <:stack:> ,0,0,f0,<:zone:> ,-1,jl.w3 d9.,h29.
j48: <:unstack:> ,0,f0,<:input:> ,-1,jl.w3 d9.,h30.-4
j49: <:unstack:> ,0,f0,<:zone:> ,-1,jl.w3 d9.,h30.
j50: <:outtext:> ,0,f0,<:current:> ,-1,jl.w3 d9.,h31.-2
j51: <:outtext:> ,-1,jl.w3 d9.,h31.
j52: <:outinteger:> ,f0,<:current:> ,-1,jl.w3 d9.,h32.-2
j53: <:outinteger:> ,-1,jl.w3 d9.,h32.
j54: <:outend:> ,0,0,f0,<:current:> ,-1,jl.w3 d9.,h33.-2
j55: <:outend:> ,0,-1,jl.w3 d9.,h33.
j56: <:closeup:> ,0,f0,<:current:> ,-1,jl.w3 d9.,h34.-2
j57: <:closeup:> ,-1,jl.w3 d9.,h34.
j58: <:parent:> ,0,0,f0,<:message:> ,-1,jl.w3 d9.,h35.
j59: <:wait:> ,0,0,f0
<:free:> ,0,0,f0,<:input:> ,-1,jl.w3 d9.,h48.-4
j60: <:wait:> ,0,0,f0
<:free:> ,0,0,f0,<:output:> ,0,-1,jl.w3 d9.,h48.-2
j61: <:wait:> ,0,0,f0,<:free:> ,-1,jl.w3 d9.,h48.
j70: <:break:> ,0,0,f0,<:message:> ,-1,jl.w3 d9.,h67.
j62: <:terminate:>,0,f0,<:input:> ,-1,jl.w3 d9.,h79.-4
j63: <:terminate:>,0,f0,<:output:> ,0,-1,jl.w3 d9.,h79.-2
j64: <:terminate:>,0,f0,<:zone:> ,-1,jl.w3 d9.,h79.
d5: -1
i.e.
; first free addr:
e8=h55+(:k-h55+511:)/512*512
i.e. ; end program block;
g0=k-h55 ; length:= load addr-first addr;
i.e. ; end program segment;
w.
i2=g70-h55
e.
g3=k-h55 ; length
g0:g1:(:g3+511:)>9 ; segm
0, r.4
s2 ; date
0, 0 ; file block
2<12+i2 ; contents, entry
g3 ;
m.rc do 1977.09.26
c.h57<3
d.
p.<:insertproc:>
z.
▶EOF◀