DataMuseum.dk

Presents historical artifacts from the history of:

RC4000/8000/9000

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about RC4000/8000/9000

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦8e35a5c39⟧ TextFile

    Length: 31488 (0x7b00)
    Types: TextFile
    Names: »uti11«

Derivation

└─⟦00964e8f7⟧ Bits:30007478 RC8000 Dump tape fra HCØ.
    └─⟦b2ec5d50f⟧ 
        └─⟦f8e4b63af⟧ »trcfput« 
            └─⟦this⟧ 

TextFile



;rc 76.06.17             fp utility, job adm 3, page ...1...

;this text contains the parent message programs:
;
; account - replace - newjob - mount - opmess
; ring - suspend - release - 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 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, c11, 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


;rc 76.06.17             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

;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


;rc 17.05.72             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>:>

\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


;rc 19.02.73             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     (66)         ; test entry protected:
     dl  w1  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


;rc 30.03.73             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.5
 a8-a0, b8: 8<13+0<5+0, 0,r.7
 a9-a0, b9: 9<13+0<5+1, <:ring:>,0,r.5
a10-a0,b10:10<13+0<5+0, <:suspend:>,0,r.4
a11-a0,b11:11<13+0<5+0, <:release:>,0,r.4
a13-a0,b13:13<13+1<9+0, <:change:>,0,r.5
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

;rc 31.07.74             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-b11     ; entry change:
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.         ; 
     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


; rc 76.06.17                   fp utility, job adm 3, page ...14a...

; read command <prog><s or name> (<s> oldid or newid)

e27:
b. j4 w.
      rl. w2  c2.        ;
      rl  w0  x2+10      ;   if param=integer
      sn. w0  (c3.)      ;   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


;rc 31.07.74             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       ; 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 27.06.75 job adm 3
\f


 
d.
p.<:insertproc:>
l.
▶EOF◀