ÿ{STARTUP program for spoolers etc}

%begin;         !startup program
   %recordformat parmfm(%shortinteger dsno, dact, ssno, sact, %c
                        %integer p1, p2, p3, p4, p5, p6)
   %shortinteger count, j
   %constinteger  SPOOL process id = 40 059 494
   %integer potter proc
   %routine create(%string(6) process, pass)
      %record(parmfm) p, q
      string(addr(p_sact)) = "SPL_".process.":";  svc(17, p)
      string(addr(q_sact)) = pass.":";  svc(17, q)
      p_dact = 31;  p_p3 = q_p2
      svc(20, p)
      %if p_p6 = 0 %start
         printstring("Process ".process." created")
         newline
      %finish
   %end
   %integerfn start(%string(27) proc)
      %record(parmfm) p
      string(addr(p_sact)) = proc
      svc(17, p)
      %if p_p2 <= 0 %start
         printstring("Illegal process name ")
         printstring(proc)
         newline
         %result = 0
      %finish
      p_p6 = 1<<31;            !privileged
      p_p5 = p_p4
      p_p4 = p_p3
      p_p3 = SPOOL process id
      svc(109, p)
      printstring(proc)
      %if p_p6 = 0 %start
         printstring(" started as process")
         write(p_p3, 1)
         newline
         %result = p_p3;         !process number
      %else
         printstring(" -- ")
         printstring(string(addr(p_p1)))
         newline
      %finish
      %result = 0
   %end
   %routine kick(%integer proc)
      %record(parmfm) p
      %return %if proc = 0
      p_dsno = proc!64;  p_dact = 1
      p_sact = 0
      svc(115, p)
   %end
   %routine wait(%integer time)
      %shortinteger h
      %while time > 0 %cycle
         time = time-1
         h = h+1 %until h = 0
      %repeat
   %end

   create("potter", "bits")
   potter proc = start("potter:potter.ABS")
   create("lp", "bits")
   create("pp", "bits")
   create("cr", "bits")
   create("accnt", "bits")
   create("bg".tostring(j), "batch") %for j = 'a', 1, 'i'

   kick(potter proc)
   wait(3)
   kick(start("lp:spoollp.ABS"))
   kick(start("pp:spoolpp.ABS"))
   kick(start("cr:spoolcr.ABS"))
   kick(sta rt("init:init.ABS"))
   kick(start("accnt:account.ABS"))
%endofprogram
