|
|
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: 31488 (0x7b00)
Types: TextFile
Names: »account3tx «, »opmess3tx «
└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
└─⟦75ff9bef3⟧
└─⟦this⟧ »account3tx «
└─⟦this⟧ »opmess3tx «
;fgs 1986.12.22 fp utility, job adm 3, page ...1...
;this text contains the parent message programs:
;
; account - replace - newjob - mount - opmess
; ring - suspend - release - enable - change - timer
; convert - mountspec - kit - corelock - coreopen
; bossjob opcomm
; the text is assmebled by the following call of the
; slang assmebler:
; (account=slang text
; account replace newjob mount opmess ring,
; suspend release enable change timer convert mountspec kit
; corelock coreopen bossjob opcomm)
; outer block containing fpnames:
b. g4,i30 w. ; block for insertproc
d.
p.<:fpnames:>
l.
s. a30, b30, c12, d27, e27, f22 w.
k=h55+10000
i0=k
f9 ; length of program
;each program is executed by means of an action table
;containing references to the following actions:
;
; 1: test call error (left side in call)
; 2: read command <prog><s><integer1><s><integer2>
; and put it into the message
; 3: read command <prog><s><name> and ...
; 4: read command <prog><s><name><s><integer> and ...
; 5: read command <prog><s><name>(<s><integer>) and ...
; 6: read command <prog><s><integer><s><name> and ...
; 7: read command and convert the parameters to text
; in the message.
; 8: terminate current output
; 9: send parent message and wait for the answer.
;10: return happy to fp
;11: read command <prog><s><integer> and ...
;12: check answer and make error text for account
;13: - - - - - - - - - - - - - - - - - newjob
;14: - - - - - - - - - - - - - - - - - change
;15: - - - - - - - - - - - - - - - - - convert
;16: output operators answer in opcomm
;17: check answer and make error text for replace
;18: send message to boss and wait for the answer
;19: search file descriptor in mount,mountspec,ring,release or suspend
;20: maybe change file descriptor in mount
;21: test name empty in mountspec, ring, release or suspend
;22: check answer and make error text for kit
\f
;fgs 1986.12.22 fp utility, job adm 3, page ...2...
;action tables:
h.
;account:
a4: d1, d23, d9,d12
;replace:
a5: d1, d27, d9,d17
;newjob:
a6: d1, d25, d9, d26, d13
;mount:
a7: d1, d3,d19, d9,d20,d10
;opmess:
a8: d1, d7, d9,d10
;ring:
a9: d1, d3,d19,d21, d9,d10
;suspend:
a10: d1, d3,d19,d21, d9,d10
;release:
a11: d1, d3,d19,d21, d9,d10
;enable
a12: d1, d3,d19,d21, d9,d10
;change:
a13: d1, d4, d9,d14
;timer:
a14: d1, d2, d9,d10
;convert:
a15: d1, d24, d9, d26, d15
;mountspec:
a16: d1, d6,d19,d21, d9,d10
;kit:
a17: d1, d6, d9,d22,d10
;corelock:
a18: d1,d11, d9,d10
;coreopen:
a19: d9,d10
;bossjob:
a29: d1,d25,d18, d26,d13
;opcomm:
a30: d1, d7, d9,d16,d10,0
w.
\f
;fgs 1985.03.13 fp utility, job adm 3, page 3
;working cells and common error texts:
c0: 0 ; address of message area
c1: 0 ; address of program name item
c2: 0 ; param pointer during command
; reading
c3: 4<12+4 ; sp int
c4: 4<12+10 ; sp text
c5: 6<12+10 ; = text
c6: 8<12+4 ; point int
c7: 8<12+10 ; point text
c8: <:***<0>:>
c9: <:<32>call<10><0>:>
c10: <:<32>parametererror<10><0>:>
c11: <:*operator answer: <0>:>
c12: 0 ; fp start
\f
;rc 24.04.72 fp utility, job adm 3, page 4
;test call error:
e1: rl. w3 (c1.) ;
se. w3 (c5.) ; if not left side in call
jl. e0. ; then goto next action;
al. w0 c8. ; outtext(curr out,
jl. w3 h31.-2+10000; <:***
am. (c1.) ; <program name>
al w0 +2 ;
jl. w3 h31.+10000 ;
al. w0 c9. ;
jl. w3 h31.+10000 ; call :>);
al w2 1 ;
jl. h7.+10000 ; goto fp end program (sorry);
;terminate current out:
e8: al. w1 h21.+10000 ; zone:=curr out;
bz w3 x1+h1+1 ; char :=
se w3 4 ; if kind = bs
sn w3 18 ; or kind = mt
am 25 ; then em
al w2 0 ; else null;
jl. w3 h34.+10000 ; close up(zone,char);
jl. w3 h79.+10000 ; terminate zone;
jl. e0. ; goto next action;
;send the message and wait for the answer:
e9: al. w3 h44.+10000 ;
rl. w1 c0. ;
jd 1<11+16 ; send message
al. w1 b0. ;
jd 1<11+18 ; wait answer;
jl. e0. ; goto next action;
;return happy to fp:
e10: al w2 0 ;
jl. h7.+10000 ;
\f
;rc 21.04.72 fp utility, job adm 3, page 5
;procedure next param:
;
;forwards the pointer c2 to the next item in the fp com-
;mand stack (if the current is not allready the last).
;if end list the return is to link+2 esle to link.
;
;w0 del,kind
;w1 unchanged
;w2 address of new item
;w3 link (unchanged)
b. j1 w.
f1: rl. w2 c2. ; step pointer;
ba w2 x2+1 ;
rl w0 x2 ; w0:=delim,kind;
sh. w0 (j1.) ; if end list
jl x3+2 ; then return to link+2;
rs. w2 c2. ; store pointer;
jl x3 ; return to link;
j1: 4<12-1
e.
;procedure output parameter list:
;
;outputs the parameter list (not including the program name)
;
;w0 undefined
;w1 ---
;w2 ---
;w3 link ---
b. j3 w.
j0: 0 ; link
f2: rs. w3 j0. ; start: save link;
rl. w2 c1. ;
j1: ba w2 x2+1 ; step to next item
bl w3 x2 ;
sh w3 3 ; if end list
jl. (j0.) ; then return;
al. w0 x3+j3. ; w0:=addr(delim text);
jl. w3 h31.-2+10000; outtext(delim)
bl w0 x2+1 ;
sn w0 10 ; if param=text
jl. j2. ; then goto write param;
rl w0 x2+2 ;
jl. w3 h32.-2+10000; outinteger(param);
0<23+0<12+1
jl. j1. ; goto next item;
j2: al w0 x2+2 ;
jl. w3 h31.-2+10000; outtext(param);
jl. j1. ; goto next item;
j3=k-4 ; delim table:
<: :>
<:=:>
<:.:>
e.
\f
;rc 30.03.73 fp utility, job adm 3, page 6
;parameter error in call:
f3: al. w0 c8. ; outtext(curr out
jl. w3 h31.-2+10000; <:***
am. (c1.) ;
al w0 +2 ; <program name>
jl. w3 h31.+10000 ;
jl. w3 f2. ; parameter list
al. w0 c10. ;
jl. w3 h31.-2+10000; parametererror:>);
al w2 3 ; goto fp end program
jl. h7.+10000 ; sorry;
;check result of wait answer
;
;is called with the result (status) in w2 and
;the start address of the error text table in w1
;w2=0 means ok
b. j10 w.
f6: sl w2 1 ; if result <= 0
sl w2 100 ; or result >= 100
jl. e10. ; then return happy to fp;
j1: rl w0 x1 ; next table entry:
sn w0 -1 ; if table end
jl. j3. ; then goto special text;
sn w0 x2 ; if result = table(pointer)
jl. j2. ; then goto write error text;
al w1 x1+4 ; step pointer;
jl. j1. ; goto next entry;
j4: 0 ; address of error text;
j2: am (x1+2) ; write text in table:
al. w0 f10. ;
j5: rs. w0 j4. ; save error text address;
al. w0 c8. ; outtext(curr out,
jl. w3 h31.-2+10000; <:***
am. (c1.) ;
al w0 +2 ; program name
jl. w3 h31.+10000 ;
jl. w3 f2. ; parameter list
rl. w0 j4. ;
jl. w3 h31.-2+10000; error text
al w2 3 ;
jl. h7.+10000 ; goto fp;
\f
;rc 17.05.72 fp utility, job adm 3, page 7
;check result wait answer continued:
j6: <:<32>re:>,<:sul:>,<:t<32><32>:>
j7: 0
j8:10
j3: al w1 0 ;
wd. w2 j8. ;
al w2 x2+48 ;
al w1 x1+48 ;
ls w2 8 ;
wa w2 2 ;
ls w2 8 ;
al w2 x2+10 ; w2:=iso(result nl)
rs. w2 j7. ;
al. w0 j6. ; addr:=addr(spec text);
jl. j5. ; goto write the text;
e.
;output answer from parent:
e16: al. w0 c11. ; outtext(<:*operator answer: :>);
jl. w3 h31.-2+10000;
al. w0 b0. ; outtext(<text in answer>);
jl. w3 h31.+10000 ;
rl. w0 f15. ; outinteger(<integer in answer>);
jl. w3 h32.+10000 ;
1<23+32<12+1 ;
al w2 10 ; outchar(<nl>);
jl. w3 h26.+10000 ;
jl. e0. ; goto next action;
\f
;rc 17.05.72 fp utility, job adm 3, page 7a
;procedure read and store name parameter.
;
;reads the next parameter from the fp command stack.
;if it is a name the name is moved to words 8 to 14
;in the message area. if it is not a name paramerror
;is entered.
;
; w3 is link - at return all registeres are un-
; defined
b. j1 w.
j0: 0 ; link
f4: rs. w3 j0. ; save link;
jl. w3 f1. ; next param;
se. w0 (c4.) ; if del,kind <> space name
jl. f3. ; or end list then error;
rl. w1 c0. ; move name
dl w0 x2+4 ; to message area;
ds w0 x1+10 ;
dl w0 x2+8 ;
ds w0 x1+14 ;
jl. (j0.) ; return;
;procedure read integer parameter:
;
;w0 undefined
;w1 message area start address
;w2 undefined
;w3 link integer
f5: rs. w3 j0. ; save link;
jl. w3 f1. ; next param;
se. w0 (c3.) ; if del,kind<>space,int
jl. f3. ; or end list
\f
;rc 31.07.74 fp utiloty, job adm 3, page 8
;read integer parameter continued
; then error;
rl. w1 c0.
rl w3 x2+2 ; set w1,w3;
jl. (j0.) ; return;
e.
;read command <prog><s>integer><s><integer>
e2: jl. w3 f5. ; read integer param;
rs w3 x1+12 ; store integer;
jl. w3 f5. ; read integer param;
rs w3 x1+14 ; store integer;
jl. w3 f1. ; next param;
jl. f3. ; not end list: error;
jl. e0. ; end list: next action;
;read command <prog><s><name>
e3: jl. w3 f4. ; read and store name;
jl. w3 f1. ; next param;
jl. f3. ; not end list: error;
jl. e0. ; end list: next action;
;read command <prog><s><name><s><integer>
e4: jl. w3 f4. ; read and store name;
jl. w3 f5. ; read integer;
rs w3 x1+6 ; store integer;
jl. w3 f1. ; next param;
jl. f3. ; not end list: error;
jl. e0. ; end list: next action;
;read command <prog><s><name>(<s><integer>)
b. j1 w.
e5: jl. w3 f4. ; read and store name;
jl. w3 f1. ; next param;
jl. j1. ; if end list then
jl. e0. ; then goto next action;
j1: se. w0 (c3.) ; maybe integer: if not integer
jl. f3. ; then error;
rl. w1 c0. ;
rl w3 x2+2 ; store integer;
rs w3 x1+6 ;
jl. w3 f1. ; next param
jl. f3. ; not end list: error;
jl. e0. ; end list: next action;
\f
; rc 31.07.74 fp utility, job adm 3, page 8a
; read command <prog><s><name>(<s><short name>)(<s><integer>)
e24: jl. w3 f4. ; read and store name;
jl. w3 f1. ; next param;
jl. j0. ; if end list then
jl. e0. ; goto next action;
j0: se. w0 (c4.) ; if name then
jl. j1. ; begin
rl w1 x2+6 ;
se w1 0 ; if not short text then
jl. f3. ; goto error;
dl w1 x2+4 ;
rl. w3 c0. ; take short text and
ds w1 x3+4 ; store it;
jl. w3 f1. ; if end list then
jl. j1. ; goto next action;
jl. e0. ; end;
; goto maybe integer;
e.
; read command <prog><s><name>(<s><short name>)
b. j0 w.
e25: jl. w3 f4. ; read and store name;
jl. w3 f1. ; next param;
jl. j0. ; if end list then
jl. e0. ; goto next action;
j0: se. w0 (c4.) ; if not name then
jl. f3. ; goto error;
rl w1 x2+6;
se w1 0 ; if not short name then
jl. f3. ; goto error
dl w1 x2+4 ;
rl. w3 c0. ; take name and
ds w1 x3+6 ; store it;
jl. w3 f1. ; if not end list
jl. f3. ; then goto error;
jl. e0. ; goto next action;
e.
;read command <prog><s><integer>
e11: jl. w3 f5. ; read integer;
rs w3 x1+12 ; store integer;
jl. w3 f1. ; next param;
jl. f3. ; not end list: error;
jl. e0. ; end list: goto next action;
\f
;rc 24.04.72 fp utility, job adm 3, page 9
;read command <prog><s><integer><s><name>
e6: jl. w3 f5. ; read integer param;
rs w3 x1+6 ; store integer;
jl. w3 f4. ; read and store name;
jl. w3 f1. ; next param;
jl. f3. ; not end list: error;
jl. e0. ; end list: nexy action;
;read any param list and move it to message area:
b. j20 w.
j13: 0 ; addr in buf
j14: 0 ; partial word
e7: al. w1 j2. ; initialize the procedure
rs. w1 j0. ; next char;
jl. w3 j12. ; next char (bypass first
sh w2 -1 ; space); if end list
jl. e0. ; then goto next action;
rl. w2 c0. ; w2:=buf addr;
j15: al w2 x2+2 ; next word:
am. (c0.) ; if all of buf used
sl w2 16 ; then
jl. e0. ; goto next action;
rs. w2 j13. ;
al w1 1 ; init partial word;
j16: rs. w1 j14. ; next character:
jl. w3 j12. ; next char;
rl. w1 j14. ; w0,w1:=partial word;
al w0 0 ;
sh w2 -1 ; if end text
jl. j17. ; then goto end text;
ld w1 8 ; partial word:=
lo w1 4 ; partial word shift 8
sn w0 0 ; add char; if word not
jl. j16. ; full then next char;
rl. w2 j13. ; store word;
rs w1 x2 ;
jl. j15. ; goto next word;
j17: ld w1 8 ; end text: left justify
sn w0 0 ; partial word;
jl. j17. ;
rs. w1 (j13.) ; store word
jl. e0. ; goto next action;
\f
;rc 24.04.72 fp utility, job adm 3, page 10
;procedure next character
;link w3 - at return char or -1 in w2
j0: 0 ; link,pointer
j1: 0,r.7 ; buffer
j2=k-1 ; end buffer
j12: rx. w3 j0. ; swop(pointer,link);
j19: sl. w3 j2. ; if pointer >= last
jl. j3. ; then goto next fp param;
al w3 x3+1 ; step pointer;
j7: bz w2 x3 ; w2:=char;
sh w2 0 ; if char=null
jl. j19. ; then skip char;
j8: rx. w3 j0. ; swop(link,pointer);
jl x3 ; return;
32 ; j8+4: space
61 ; j8+6: equality sign
46 ; j8+8: point
j3: jl. w3 f1. ; next fp param;
jl. j4. ; if end list then begin
al. w3 j2. ;
al w2 -1 ; char :=-1;
jl. j8. ; goto swop;
j4: bz w3 0 ; end;
rl. w3 x3+j8. ; buf(0:1):=
rs. w3 j1. ; (0,delim);
bz w3 1 ; w3:=kind(param);
ld w1 -100 ;
ds. w1 j1.+4 ; buf(2:13):=1;
ds. w1 j1.+8 ;
ds. w1 j1.+12 ;
se w3 10 ; if kind(param) <> name
jl. j18. ; then goto integer;
al. w1 j1.+2 ; name: w1:=pointer;
j5: al w2 x2+2 ; next word:
rl w0 x2 ; w0:=word;
j6: al w3 0 ; next char:
ld w0 8 ; w3:=char;
hs w3 x1 ; buf(pointer):=char;
al w1 x1+1 ; step in buf;
se w0 0 ; if more left
jl. j6. ; then goto next char;
am. (c2.) ; if name not exhausted
se w2 8 ; then
jl. j5. ; goto next word;
j9: al. w3 j1.+1 ; end param: set pointer;
jl. j7. ; goto get char;
j11: 10 ;
j18: al. w1 j1.+13 ; integer:
rl w3 x2+2 ; pointer:=last;
j10: al w2 0 ; divide:
wd. w3 j11. ;
al w2 x2+48 ;
hs w2 x1 ;
al w1 x1-1 ;
sn w3 0 ;
jl. j9. ;
jl. j10. ;
e.
\f
; rc 31.07.74 fp utility, job adm 3, page 10a
; read command account <integer><integer>(<integer>(<integer>))
b. j2 w.
e23: jl. w3 f5. ; read integer param
rs w3 x1+12 ; store integer
jl. w3 f5. ; read integer param
rs w3 x1+14 ; store integer
al w3 0 ;
rs w3 x1+8 ; empty param:=0
rs w3 x1+10 ;
jl. w3 f1. ; next param
jl. j1. ; if end list then
jl. e0. ; goto next action
j1: se. w0 (c3.) ; if not integer
jl. f3. ; then error;
rl. w1 c0. ;
rl w3 x2+2 ;
rs w3 x1+8 ; store integer
jl. w3 f1. ; next param
jl. j2. ; if end list then
jl. e0. ; goto next action
j2: se. w0 (c3.) ; if not integer
jl. f3. ; then error;
rl. w1 c0. ;
rl w3 x2+2 ;
rs w3 x1+10 ; store integer
jl. w3 f1. ; next param
jl. f3. ; if not end list then error
jl. e0. ; goto next action
e.
\f
;rc 31.07.74 fp utility, job adm 3, page 11
;error texts:
f10=k ; reference
;error texts for account:
b. j1 w.
j1: <: kind illegal<10><0>:>
f11: 1 , j1-f10
-1
e.
;error texts for newjob:
b. j41 w.
j1: <: job queue full<10><0>:>
j2: <: job file not permanent<10><0>:>
j3: <: job file unknown<10><0>:>
j5: <: job file unreadable<10><0>:>
j7: <: user index too large<10><0>:>
j8: <: illegal identification<10><0>:>
j9: <: user index conflict<10><0>:>
j11: <: job file too long<10><0>:>
j19: <: attention status at remote batch terminal<10><0>:>
j20: <: device unknown<10><0>:>
j21: <: device not printer<10><0>:>
j22: <: parent device disconnected<10><0>:>
j23: <: remote batch malfunction<10><0>:>
j32: <: temp claim exceeded<10><0>:>
j38: <: option unknown<10><0>:>
j39: <: param error at job<10><0>:>
j40: <: syntax error at job<10><0>:>
j41: <: line too long<10><0>:>
f12: 1, j1-f10
2, j2-f10
3, j3-f10
5, j5-f10
7, j7-f10
8, j8-f10
9, j9-f10
11, j11-f10
19, j19-f10
20, j20-f10
21, j21-f10
22, j22-f10
23, j23-f10
32, j32-f10
38, j38-f10
39, j39-f10
40, j40-f10
41, j41-f10
-1
e.
;error texts for kit:
b. j1 w.
j1: <: not available<10><0>:>
f22: 1, j1-f10
-1
e.
\f
;rc 27.06.75 fp utility, job adm 3, page 11a
;error texts for change:
b. j2 w.
j1: <: no cbuffers<10><0>:>
j2: <: job printer not allowed<10><0>:>
f13: 1, j1-f10
2, j2-f10
-1
e.
;error texts for convert:
b. j23 w.
j1: <: no cbuffers<10><0>:>
j2: <: file does not exist<10><0>:>
j3: <: file has login scope<10><0>:>
j4: <: no temp resources<10><0>:>
j5: <: file in use<10><0>:>
j6 : <: file is not area<10><0>:>
j7: <: file is no text file<10><0>:>
j19: <: attention status at remote batch terminal<10><0>:>
j20: <: device unknown<10><0>:>
j21: <: device not printer<10><0>:>
j22: <: parent device disconnected<10><0>:>
j23: <: remote batch malfunction<10><0>:>
f14: 1, j1-f10
2, j2-f10
3, j3-f10
4, j4-f10
5, j5-f10
6, j6 -f10
7, j7-f10
19, j19-f10
20, j20-f10
21, j21-f10
22, j22-f10
23, j23-f10
-1
e.
;error texts for replace:
b. j1 w.
j1: <: not allowed from online job<10><0>:>
f17: 1,j1-f10
-1
e.
; error text for mountspec, release, ring or suspend
b. j1 w.
j1: <: tape name missing<10><0>:>
f20: 1,j1-f10
-1
e.
\f
;rc 23.05.73 fp utility, job adm 3, page 12
;check answer in account, newjob, change, replace,
;convert and kit
e22: am f22-f17 ; check kit:
e17: am f17-f11 ; check replace:
e12: am f11-f12 ; check account:
e13: am f12-f13 ; check newjob:
e14: am f13-f14 ; check change:
e15: al. w1 f14. ; check convert: w1:=start table;
rl. w2 b0. ; w2:=status;
jl. f6. ; goto check result;
;send message to boss and wait for the answer:
b. j1 w.
e18: al. w3 j0. ; send message to boss;
rl. w1 c0. ;
jd 1<11+16 ;
al. w1 b0. ;
jd 1<11+18 ;
jl. e0. ; goto next action;
j0: <:boss:>,0,0,0
e.
\f
;fgs 1985.03.13 fp utility, job adm 3, page 13
;file descriptor in mount or mountspec
b. j11 w.
;search file descriptor in mount or mountspec
e19: am. (c0.) ; lookup entry(name);
al w3 8 ; w3:=addr(name);
al. w1 j1. ;
jd 1<11+76 ; lookup head and tail;
se w0 0 ; if not found
jl. e0. ; then goto next action;
rl. w2 j2. ; if mode.kind(entry)
so. w2 (j6.) ; not mag tape
jl. e0. ; then goto next action;
am. (c12.) ; test entry protected:
rl w1 h16 ; w1 := addr of own process;
dl w1 x1+74 ; get max base;
al w1 x1+1 ; if
sh. w0 (j7.) ; low.entry.base<low.max.base
sh. w1 (j8.) ; or upp.entry.base>upp.max.base
jl. e0. ; then goto next action;
al w2 1 ; modify parent message:
rs. w2 j5. ; entry used := true;
dl. w1 j3. ;
se w0 0 ; if doc.name.entry=0
jl. j10. ; then add wait bit
wa w2 x3-8 ; in message;
rs w2 x3-8 ;
j10: ds w1 x3+2 ; name in message :=
dl. w1 j4. ; name in entry;
ds w1 x3+6 ;
jl. e0. ; goto next action;
j6: 1<23+18 ; mag tape mode kind
j5: 0 ; boolean: entry used
j1: 0 ; entry:
j7: 0 ; entry base
j8: 0 ;
j11: 0,r.4 ; name
j2: 0 ; mode kind
j9: 0 ; document name:
j3: 0,0 ; first doubleword
j4: 0 ; second doubleword
0,r.5 ; rest of tail
;maybe change file descriptor in mount or mountspec
e20: am. (j5.) ; if entry not used
sn w1 x1 ; then
jl. e0. ; goto next action;
am. (j9.) ; if doc.name.entry <> null
se w1 x1 ; then goto next action;
jl. e0. ;
dl. w1 f18. ; move doc name:
ds. w1 j3. ; doc.name.entry:=answer(8:15);
dl. w1 f19. ;
ds. w1 j4. ;
al. w1 j2. ;
al. w3 j11. ; change entry;
jd 1<11+44 ;
jl. e0. ; goto next action;
e.
\f
; fgs 1986.12.22 fp utlity, job adm 3, page 13a
; test name empty in mountspec, ring, release or suspend:
e21: am. (c0.) ; get first word of name
rl w0 8 ; in message;
al. w1 f20. ;
al w2 1 ;
sn w0 0 ; if name = 0
jl. f6. ; then make error text
jl. e0. ; else goto next action;
;message areas etc. :
b0: 0,r.8 ;answer area
f15=b0+14,f18=b0+2,f19=b0+6
a0=k
a4-a0, b4: 4<13+3<5+0, <:account:>,0,r.4
a5-a0, b5: 5<13+0<5+1, <:finis:>,0,r.5
a6-a0, b6: 6<13+0<5+0, <:job:>,0,r.6
a7-a0, b7: 7<13+0<5+0, <:mount :>,0,r.4
a8-a0, b8: 8<13+0<5+0, 0,r.7
a9-a0, b9: 9<13+0<5+1, <:ring :>,0,r.4
a10-a0,b10:10<13+0<5+0, <:suspend :>,0,r.4
a11-a0,b11:11<13+0<5+0, <:release :>,0,r.4
a12-a0,b12: 9<13+0<5+1, <:enable :>,0,r.4
a13-a0,b13:13<13+1<9+0, <:change :>,0,r.4
a14-a0,b14:14<13+3<5+0, <:timer:>,0,r.5
a15-a0,b15:15<13+1<9+0, <:conv:>,0,r.6
a16-a0,b16:16<13+1<9+0, <:mount:>,0,r.5
a17-a0,b17:17<13+1<9+1, <:kit:>,0,r.6
a18-a0,b18:18<13+2<5+1, <:corelock:>,0,r.4
a19-a0,b19:19<13+0<5+0, <:coreopen:>,0,r.4
a29-a0,b29: 6<13+0<5+0, <:job:>,0,r.6
a30-a0,b30: 8<13+0<5+1, 0,r.7
\f
;fgs 1986.12.22 fp utility, job adm 3, page ...14...
;entries into programs:
b. j6 w.
i30: am b30-b29 ; entry opcomm:
i29: am b29-b19 ; entry bossjob:
i19: am b19-b18 ; entry coreopen:
i18: am b18-b17 ; entry corelock:
i17: am b17-b16 ; entry kit:
i16: am b16-b15 ; entry mountspec:
i15: am b15-b14 ; entry convert:
i14: am b14-b13 ; entry timer;
i13: am b13-b12 ; entry change:
i12: am b12-b11 ; entry enable:
i11: am b11-b10 ; entry release:
i10: am b10-b9 ; entry suspend:
i9: am b9-b8 ; entry ring:
i8: am b8-b7 ; entry opmess:
i7: am b7-b6 ; entry mount:
i6: am b6-b5 ; entry newjob:
i5: am b5-b4 ; entry replace:
i4: al. w2 b4. ; entry account:
ds. w3 c1. ; save mess addr,prog name;
rs. w3 c2. ;
rs. w1 c12. ; save fp start;
am (x2-2) ;
al. w3 a0. ; pointer:=addr(act table);
jl. j1. ; goto start actions;
e0: rl. w3 j2. ; next action:
al w3 x3+1 ; pointer:=pointer+1;
j1: rs. w3 j2. ; start actions: save pointer;
bl w3 x3 ;
jl. x3+e0. ; goto action(table(pointer));
j2: 0 ; pointer;
; test if result=19 and maybe wait and repeat
j3: 0 ; number of repetitions, initially 0;
j4: 0, 1 ; message to clock; wait one second;
j5: 0, r.8 ; answer area for clock answer
j6: <:clock:>, 0, r.3; name and n.t.a. of clock process;
e26: rl. w0 j3. ;
rl. w2 b0. ;
sh w0 2 ; if number of repetitions > 2
se w2 19 ; or result <> 19 then
jl. e0. ; goto next action;
al. w1 j4. ;
al. w3 j6. ; send message(
jd 1<11+16 ; <:clock:>, 1 second);
ba. w0 1 ; repetitions:=repetitions+1;
rs. w0 j3. ;
rl. w1 j2. ; command pointer:=command pointer-1;
al w1 x1-1 ;
rs. w1 j2. ;
al. w1 j5. ; answer area:= clock answer;
jd 1<11+18 ; wait answer(<:clock:>);
jl. e0. ; goto next action;
\f
; fgs 1986.12.22 fp utility, job adm 3, page ...14a...
; read command <prog><s or name> (<s> oldid or newid)
e27:
b. j4 w.
am -2000 ;
rl. w2 c2.+2000 ;
rl w0 x2+10 ; if param=integer
am -2000 ;
sn. w0 (c3.+2000) ; then
jl. j1. ; goto regret;
jl. w3 f4. ; read and store navn;
jl. w3 f1. ; next param;
jl. 4 ;
jl. e0. ; if endlist then nextaction;
bl w0 x2+1 ;
se w0 10 ; if not text then
jl. f3. ; alarm;
rl w0 x2+4 ;
se. w0 (j2.) ;
jl. f3. ;
rl w0 x2+2 ;
sn. w0 (j3.) ;
jl. j0. ; if param=oldid then goto not more;
se. w0 (j4.) ; if param<>newid
jl. f3. ; then alarm;
al w0 1 ; not more:
rs w0 x1+6 ; param:=1;
j0: jl. w3 f1. ; if more param
jl. f3. ; then alarm;
jl. e0. ; goto next action;
j1: jl. w3 f1. ; regret:
jl. 4 ;
jl. f3. ;
al w0 -1 ;
rs w0 x1+6 ; param:=-1;
al w0 0 ;
rs w0 x1+8 ; name:=0;
jl. w3 f1. ; if more param
jl. f3. ; then alarm;
jl. e0. ; goto next action;
j2: <:id:> ;
j3: <:old:> ;
j4: <:new:> ;
e.
d1= e1-e0, d2= e2-e0, d3= e3-e0, d4= e4-e0, d5= e5-e0
d6= e6-e0, d7= e7-e0, d8= e8-e0, d9= e9-e0,d10=e10-e0
d11=e11-e0,d12=e12-e0,d13=e13-e0,d14=e14-e0,d15=e15-e0
d16=e16-e0,d17=e17-e0,d18=e18-e0,d19=e19-e0,d20=e20-e0
d21=e21-e0,d22=e22-e0,d23=e23-e0,d24=e24-e0,d25=e25-e0
d26=e26-e0,d27=e27-e0
e.
\f
; fgs 1986.12.22 fp utility, job adm 3, page ...15...
;insert entries into the catalog:
0
g2=k-i0
f9=g2
e. ; end program block
g0: (:g2+511:)>9,0,r.4,s2 ,0,r.2 ; account
2<12+i4-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; replace
2<12+i5-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; newjob
2<12+i6-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; mount
2<12+i7-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; opmess
2<12+i8-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; ring
2<12+i9-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; suspend
2<12+i10-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; release
2<12+i11-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; enable
2<12+i12-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; change
2<12+i13-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; timer
2<12+i14-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; convert
2<12+i15-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; mountspec
2<12+i16-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; kit
2<12+i17-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; corelock
2<12+i18-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; coreopen
2<12+i19-i0,g2
1<23+4,0,r.4,s2 ,0,r.2 ; bossjob
2<12+i29-i0,g2
g1: 1<23+4,0,r.4,s2 ,0,r.2 ; opcomm
2<12+i30-i0,g2
m.rc fp utility 1986.12.22 job adm 3
\f
d.
p.<:insertproc:>
l.
▶EOF◀