|
|
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: 16128 (0x3f00)
Types: TextFile
Names: »retfp4tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »retfp4tx «
mode list.yes
fp5tx=edit fp4tx
; rettelser til release 5.0
;
; block io, common bits : if less than wanted was input and kind = disk
; or less than wanted was output then add stopped
;
; block io : bit 1<23, intervention, special bit for character output
; simple check : bit 1<23, intervention, special action is as for
; paper low : parent message attend with wait bit
;
; simple check : parent message change ændres til attend
;
; init : efter connect (out, primout) og connect (in, primin) sættes
; name table address, så evt. area process ikke fjernes af
; fp end program igen
;
; commands : script indføres
;
; commands : ved 'em' på prim out tømmes curr out og der sendes finis til
; parenten, ved 'em' på stakket curr out afstakkes blot
;
; in fp load program any program with text contents is just connected as
; current input and fp jumps to command reading
;
; a new slang segment, finis, is brought in to send an MCL message before
; a finis parent message in case primary output process is a pseudo pro-
; cess and its main process has the name <:menu:>
;
; end program : device status card reject or disk error ændres til
; disk error or not connected
l./page ...1/, r/89.01.25/89.06.27/
l./m.file processor/, r/89.01.25/89.06.27/
l./m.fp text 1/, r/89.01.25/89.06.28/
l./s. k=h55, e48 ; command assembly/, l1, r/13, 14/13, 14, 15/
l3, r/15/16, 17/
l./end program and device status/, i/
; s. k=h55, e48 ; finis message to parent
; e. ; segment 18
;
/, l2, r/16, 17/19, 20/, p-3
l./permanent, page ...3b/, r/88.05.19/89.06.27/
l./h52:/, r/4/5/
l./page ...6/,
l./m.fp permanent/, r/89.01.25/89.06.28/
l./block io, page ...2/, r/89.01.25/89.03.20/
l./e23:/, l1, i/
e29: 1<8 ; stopped bit
/, p-1
l./block io, page ...3/, r/89.01.25/89.03.20/
l./am. (c22.)/, d./al w3 x3+1<8/, i/
sn w0 3 ; if less than wanted was input and
se w2 4 ; kind = disk
sn w0 5 ; or less than wanted was output then
lo. w3 e29. ; status := status or stopped bit;
/, p-4
l./block io, page ...4/, r/82.12.12/89.03.20/
l./e28:/, l-1, r/8.0/8.4/
l6, r#*#* /#, p1
l./page ...4/,
l./m.fp io system/, r/89.01.27/89.03.20/
l./resident, page ...1/, r/89.01.25/89.06.27/
l./h64:/, r/am 0/am -1/, r/hard error =/fp finis:/
l1, r/am 1/am 3/
l1, r/am 2/am 3/
l./h99=/, l./am 512/, r/512 /1024/
l1, r/1022/1534/
l./resident, page ...4/, r/89.01.26/89.06.29/
l./c44:/, l1, i/
c45: -1 ; script (initially : not in script)
/, p-1
l./h56=/, l./c. -g1/, r/-g1 /-g1-1/
l2, d, i/
w. c. g1-1 0, r.g1 z. ;
/, p-1
l./resident, page ...6/, r/82.12.09/89.06.27/
l./h64/, r/hard errors on devices/finis program/
l./resident, page ...7/, l./m.fp resident/, r/86.12.12/89.06.27/
l./simple check, page ...1/, r/88.04.24/89.03.20/
l./e17:/, l1, i#
e18: 1<23 + 1<18 ; test intervention and end doc
#, p-1
l./simple check, page ...2/, r/88.04.24/89.03.20/
l./so. w0 (e17.)/, d1, i/
sz. w0 (e17.) ; if not end doc then
jl. e9. ; begin <*not end doc and stopped*>
bz w0 x1+h1+1 ;
bz w3 x2+6 ;
sn w0 4 ; if kind = area and
se w3 3 ; operation = input then
jl. e23. ; goto return else
jl. e7. ; goto repeat the rest;
e9: ; end;
/, p-9
l./e19:/, l./rl. w0 c11./, d1, i/
rl w3 x2+2 ;
al w3 x3+1 ;
sh w3 (x2+22) ; if share.top transferred > share.first shared then
/, l1, p-4
l./page ...5/, r/88.04.24/89.03.20/
l./e25:/, l1, r/change/attend/
l./e5:/, l./so. w0 (e17.)/, d1, i/
sz. w0 (e18.) ; if intervention or end doc then
jl. e24. ; goto attend message else
jl. e27. ; goto test stop ;
/, l1, r/ al/e24: al/, r/ if end document then/ attend message:/, p-4
l./m.length error on fp segment 3/, r/ on fp segment 3/, simple check/
l./m.fp simple check/, r/88.05.04/89.03.20/
l./stack, page ...5/,
l./m.length error on fp segment 6/, r/ on fp segment 6/, stack/
l./unstack, page ...5/,
l./m.length error on fp segment 7/, r/ on fp segment 7/, unstack/
l./magtape check, page ...5/,
l./m.length error on fp segment 9/, r/ on fp segment 9/, magtape check/
l./init, page ...1/, r/88.05.04/89.06.28/
l./; segment 10/, r/segment 10/segment 11/
l./init, page ...3a/, r/86.12.12/89.06.23/, r/3a/4/
l1, l./init, page ...4/, r/88.05.02/89.06.23/, r/...4/...5/
l./jl. w3 h28.-2/, l3, i/
jl. w2 e20. ; send and wait sense (out);
/, p-1
l5, i/
jl. w2 e20. ; send and wait sense (in);
/, p-1
l./rs. w3 h9./, l1, i/
al w3 -1 ; set
rs. w3 c45. ; not in script;
/, p-2
l./; the following code is skipped/, i/
\f
; fgs 1989.06.23 file processor, init, page ...5...
/
l./e5:/, i/
\f
; fgs 1989.06.23 file processor, init, page ...6...
/
l./jl. w3 h14./, d./b13:/, i/
jl. h64. ; goto fp finis;
e20: ; send and wait sense (zone);
rs. w2 b14. ; save return;
al w3 x1+h1+2 ; w3 := zone.docname;
al. w1 b4. ; w1 := message area (sense);
jd 1<11+16 ; send message;
al. w1 h66. ; w1 := addr answer area block io;
jd 1<11+18 ; wait answer;
jl. (b14.) ; return;
\f
; fgs 1989.06.23 file processor, init, page ...7...
b0: 1<23 ;
b1: 0 ; file descriptor;
0 ;
b5: 0 ; first half of name;
0 ;
b6: 0 ; second half of name;
0, r.5 ; rest of tail;
b2: <:c:>,0,0,0 ;
b3: <:v:>,0,0,0 ;
b4: 0, r.4 ; zero used in set catbase and send and wait sense
b7: <:***fp reinitialized<10><0>:>
b8: 0 ; first (boolean)
b9: 8<13+0<5 ; parent message
<:***fp init troubles :>
b10: <: version<0>:> ;
b11: <: release<0>:> ;
b12:; <: started with <0>:>
b13: <:s:>, 0, r.3 ; name of ancestor <:s:>
b14: 0 ; saved return in send and wait sense
/, p1
l./m.length error on fp segment 11/, r/ on fp segment 11/, fp init/
l./m.fp init /, r/89.01.12/89.07.04/
l./commands, page ***01/, r/86.08.06/89.07.04/
l./b. a2/, r/a2/a9/, r/b0/b9/
l./a0:/, l./al. w3 a0./, d3, i/
se w2 25 ; if char = 'em' then
jl. a1. ; begin
rl. w1 h50. ;
se w1 0 ; if current input stack chain empty then
jl. a2. ; begin
jl. w3 h95.-2 ; close out text (curr out);
jl. h64. ; goto finis to parent;
a2: al w1 -1 ; end;
se. w1 (c45.) ; if not in script then
jl. a3. ;
al. w3 a0. ; goto unstack current input; return to rep;
jl. h30.-4 ;
a3: wa. w1 g19. ; bracket count :=
rs. w1 g19. ; bracket count - 1;
se w1 0 ; if bracket count <> 0 then
jl. f0. ; goto syntax error; <*where in will be unstacked*>
jl. w3 h30.-4 ; unstack current input;
rl. w3 g3. ; get char addr;
al w0 7 ; state := 7; <*cheat, w0 is not supposed to change*>
al w2 10 ; char := 'nl'; <*cheat again, char in buffer unch.*>
a1: ; end;
/, p1
l./commands, page ***06/, r/86.08.27/98.06.28/
l./b. a9/, r/a9, b2 /a99, b2/
l./commands, page ***07/, r/86.09.03/98.07.04/
l./jl. h14./, r/h14/h64/, l-1, r/finis/goto fp finis/, p1
l./i3:/, l2, i/
jl. w3 h39. ;
al w0 -1 ; if in script then
sn. w0 (c45.) ; begin
jl. i0. ; set not in script;
rs. w0 c45. ; warning.yes, ok.no ;
al w2 3 ; goto fp end program;
jl. h7. ; end else
; goto initiate command reading;
/, p-2
l./commands, page ***08/, r/86.08.08/98.07.04/
l./al w3 1/, d2, i/
al w3 1 ;
rs. w3 g14. ; state := 1;
sn. w0 (c45.) ; bracket count := if in script then 1
al w0 1 ; else 0;
ds. w0 g19. ; sign := 1;
/, p-5
l./rl. w2 h9./, l1, i/
al w0 0 ;
se. w0 (c45.) ; if in script then
jl. a11. ; begin
rl. w2 h8. ; cur command := fp.cur command;
a12: ea w2 x2+1 ; cur command := cur command + cur command.length;
zl w1 x2 ; sep := cur.command.sep;
sl w1 4 ; if sep > 'nl' then
jl. a12. ; goto rep;
al w2 x2+2 ; <*because commands are moved to x2-4*>
a11: ; end;
/, p1
l./dl. w1 i13.; move endlist/, d1, i/
dl. w1 i13. ;
al w3 0 ; if not in script then
se. w3 (c45.) ; move endlist;
ds w1 x2 ;
; end part of fp;
/, p1
l./page ***09/, r/86.08.11/89.07.04/
l./jl. h62./, l-1, i/
al w0 -1 ; set
rs. w0 c45. ; not in script;
/, p-2
l./commands, page ***11/, r/86.08.15/98.06.28/
l./f5:/, l./sh w1 -1/, d, i/
sh. w1 (c45.) ; if bracket count <= script then
/, p1
l./commands, page ***16/, r/88.04.24/98.06.28/
l./i10:/, i#
w.
b. g1 ; fill segment
g1 = (:h55+1536-k:)/2
c. -g1 m. length error fp commands
z.
; w. 0, r.g1
e.
#
l./m.fp comm. reading 88.04/, r/88.04.24/89.07.04/
l./load, page 1/, r/rc 12.07.79 /fgs 1989.06.28/
l3, r/512 /1024/
l./load, page 1a/, r/rc 12.07.79 /fgs 1989.06.28/, r/1a/...2.../
l./load, page 1b/, r/rc 12.07.79 /fgs 1989.06.28/, r/1b/...3.../
l./e2:/, d3, i/
e2: ; if contents = 0
sl w3 2 ; or contents = 1 then
jl. e18. ; begin
e17: al w0 x2+2 ; file name pointer := param pointer + 2;
jl. w3 h29.-4 ; stack current input;
rl w2 0 ;
jl. w3 h27.-2 ; connect curr input ( file name);
sn w0 0 ; if result <> 0 then
jl. e19. ; begin
jl. w3 h30.-4 ; unstack current input (cur chain);
jl. w3 e48. ; set name table addr in curr in;
jl. e44. ; goto connect trouble;
e19: jl. w3 e48. ; end;
rs. w0 c45. ; set name table addr in curr in;
rl. w3 h51. ; script := 0;
sz w3 1<0 ; if fp mode list.yes then
jl. w3 e26. ; list curr command;
jl. h61. ; goto commands;
e18: ; end else
se w3 2 ; if not (contents = 2
sn w3 8 ; or contents = 8) then
jl. e20. ;
jl. e47. ; goto call trouble;
e20: ;
/, p1
l./load, page 2/, r/rc 86.09.03 /fgs 1989.06.28/, r/page 2/page ...4.../
l./load, page 3/, r/88.07.21 /fgs 1989.06.28/, r/page 3/page ...5.../
l./load, page 3a/, r/rc 86.10.10 /fgs 1989.06.28/, r/3a/...6.../
l./e44:/, i/
;procedure set name table address in zone:
;w1 = zone w3 = link
b. a3 w.
a1: 0,r.10 ; message and answer
0 ; saved w2
a2: 0 ; link
0 ; saved w0
a3: 0 ; saved w1
e48: ds. w3 a2. ; save w2,w3;
bz w3 x1+h1+1 ; if kind <> bs
se w3 4 ; then
jl. (a2.) ; return;
ds. w1 a3. ;
al w3 x1+h1+2 ;
al. w1 a1. ; send message (sense area proc);
jd 1<11+16 ;
jd 1<11+18 ; wait answer;
dl. w1 a3. ; restore w0,w1;
dl. w3 a2. ; restore w2,w3;
jl x3 ; return;
e.
/, p1
l./e13=/, l./(:h55+512/, r#512-k:)/2 #1024-k:)/2#
l./m.length error on fp segment 13/, r/on fp segment 13/load/
l./m.fp program load 88.07.21/, r/88.07.21/89.06.28/
l./end program, page ...1/, i#
\f
; fgs 1989.06.27 file processor, finis, page 1
; the fp segment finis
s. k=h55, a20, e48, f7
w. ;
512
e0: jl. e1. ; entry:
a2: 0 ,0,0,0 ; zero name
a3: <:c:>,0,0,0 ;
a4: <:v:>,0,0,0 ;
a10: 128<12 + 0 ; MCL message:
0 ; localid
12<12 + 15 ; no of characters
0, r.5 ; text (1:5)
a11: <:menu<0>:> ;
a12:<: ok no<0>:>;
<: ok <0>:>;
<:warning, ok no<0>:>;
<:warning, ok <0>:>;
a13: 3 ; mask for extract 2
a14: 10 ; constant
\f
; fgs 1989.06.27 file processor, finis, page 2
e1: ; finis:
rl. w3 h51. ; text addr := addr ( case (warning.ok) of (
ls w3 -5 ;
la. w3 a13. ; <: ok no:>,
wm. w3 a14. ; <: ok :>,
al. w2 a12. ; <:warning, ok no:>,
wa w2 6 ; <:warning, ok :>) );
dl w0 x2+2 ; move
ds. w0 a10.+8 ; text
dl w0 x2+6 ; from
ds. w0 a10.+12 ; constant text area
rl w0 x2+8 ; to
rs. w0 a10.+14 ; message.text area;
\f
; fgs 1989.06.27 file processor, finis, page 3
am. (h16.) ; after param:
dl w1 +78 ;
al. w3 a2. ; w3 := addr name (zero);
jd 1<11+72 ; set catbase (std base);
rl. w3 h15. ;
al w3 x3+2 ;
jd 1<11+4 ; w0 := proc descr addr (prim out);
sn w0 0 ; if w0 <> 0 then
jl. e2. ; begin
rx w3 0 ; save w3; w3 := addr prim out proc;
rl w1 x3 ;
se w1 64 ; if prim out.kind <> 64 <*pseudo*> then
jl. e2. ; skip;
rl w2 x3+10 ;
rl w3 0 ; restore w3;
dl w1 x2+4 ;
sn. w0 (a11.) ; if prim out.parent.name <> <:menu:> then
se. w1 (a11.+2) ;
jl. e2. ; skip;
al. w1 a10. ;
jd 1<11+16 ; send message (prim out, message);
al. w1 h43. ;
jd 1<11+18 ; wait answer (answer area lowest level);
e2: ; end;
\f
; fgs 1989.06.27 file processor, finis, page 4
al w2 0 ; close up (cur out,null);
jl. w3 h95.-2 ;
al w0 0 ;
jl. w3 h79.-2 ; terminate zone (cur out,file mark);
al. w3 a3. ;
jd 1<11+48 ; remove c
al. w3 a4. ;
jd 1<11+48 ; remove v
jl. w3 h14. ; send finis message
jl. -2 ; if not removed then send it again;
b. g1 ; fill segment
g1 = (:h55+512-k:)/2
c. -g1 m. length error fp finis
z.
w. 0, r.g1
e.
e. ; end finis
m.fp finis 89.06.27
#
l./end program, page 3/, r/rc 86.09.01 /fgs 1989.06.27/
l./jl. w3 h14./, r/w3 h14/ h64/
l./end program, page ...8/, r/rc 86.08.28/ fgs 89.03.20/
l./e21:/, r/card rejected or disk error/disk error or not connected/
l./end program, page ...9/,
l./e41 =/, d1, i#
w.
b. g1 ; fill segment
g1 = (:h55+1024-k:)/2
c. -g1 m. length error fp end program
z.
w. 0, r.g1
e.
#
l./m.fp end program/, r/88.05.02/89.03.20/
l./insertproc page ...1/, r/86.12.12/89.06.27/
l./g0: 18/, r/18 / 21/
f
end
▶EOF◀