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

⟦855ffb00c⟧ TextFile

    Length: 16128 (0x3f00)
    Types: TextFile
    Names: »bossold«, »tbossold«

Derivation

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

TextFile


; rc 18.5.72                    bossold, ...1...
;
;
; versionid:  79 02 21, 13
; usage:
;
; preparing system generation:
;     bossold=set mto <tape name> 0  1
;     i bossold
; after this, the following operations may be carried out.
;
; correcting the system or changing the options:
;     load correction tapes
;
; generating the binary version (corutine files):
;     i bossbin
; if boss is started up now, the new text files are cancelled
; as they are temporary. however, the new corutine files are kept.
;
; correcting a single corutine file:
;     load correction tape
;     i <name of text file corrected>
;
; generating an updated text tape:
;     bossnew=set mto <new tape name> 0  1
;     i bossupdate
;
; generating a primitive user catalog and accountjob:
;     i taccount
;
; generating the program for updating the user catalog:
;     i tcatupdate
; 
; generating the program for printing of the testoutput
;     i testout
;
\f

                                                       
; rc 1.5.72                    bossold, ...2...

o qq1

; generate bossbin and bossupdate
bossbin=edit
i/
head 1
i central
i tterm1
i tterm2
i tjobstart
i tjob
i tmount
i tread
i tprinter
i tprocs
i tbanker
i tcatupdate
i testout
head 1
end
/,f
\f


; rc 75.06.24                 bossold, ...3...

bossupdate=edit
i/
head 1
lookup bossnew
if ok.no
(message bossnew not set
end)
lookup bossold options jobdescr central tterm1 tterm2 tjobstart,
       tjob tmount tread tprinter tprocs tbanker taccount tcatupdate,
       tuserout testout textxref tsaveconv tgetconv tusercat
head 1
bossnew=move message.yes,
    bossold options jobdescr central tterm1 tterm2,
    tjobstart tjob tmount tread tprinter tprocs tbanker,
    taccount tcatupdate tuserout testout,
    textxref tsaveconv tgetconv tusercat
if ok.no
end
head 1
tt=set 250 
f=entry bossnew bossnew bossnew bossnew
(repeat 21
tt=move message.yes f
if ok.no
finis
nextfile f)
clear temp tt
/,f
\f


; rc 76 09 22                    bossold ...3a...

;generate bosstrans
bosstrans=edit
i/
head 1
i central
i tterm1
i tterm2
i tjobstart
i tjob
i tmount
i tread
i tprinter
i tprocs
i tbanker
head 1
end
/,f
\f


                                          
; rc 1.5.72                    bossold, ...4...

; generate bossload

bossload=edit
i /

o qq1
lookup bossold
if ok.no
(o c
message  bossold not set
end)

slang qq
if ok.no
(o c
message  bossfiles not loaded
end)

lookup f
if ok.yes
(scope temp f
clear temp f)
lookup bossnew
if ok.no
bossnew=set 200 disc
lookup bossnew
if ok.no
(o c
message too few ressources on disc
end)
bossnew=changeentry 0 bossnew
if ok.no
(o c
message bossnew not drum or disc
end)
f=entry bossold bossold bossold bossold
scope temp bossold
clear temp bossold
bossold=entry bossnew bossnew
bossold=move message.yes f
nextfile f
clear temp options
options=entry bossnew bossnew
options=move message.yes f
scope user options
nextfile f
clear temp jobdescr
jobdescr=entry bossnew bossnew
jobdescr=move message.yes f
scope user bossold jobdescr
nextfile f
clear temp central tterm1 tterm2 tjobstart tjob tmount,
           tread tprinter tprocs tbanker taccount,
           tcatupdate tuserout testout textxref tsaveconv tgetconv tusercat
central=entry bossnew bossnew
central=move message.yes f
nextfile f
tterm1=entry bossnew bossnew
tterm1=move message.yes f
nextfile f
tterm2=entry bossnew bossnew
tterm2=move message.yes f
nextfile f
tjobstart=entry bossnew bossnew
tjobstart=move message.yes f
nextfile f
tjob=entry bossnew bossnew
tjob=move message.yes f
nextfile f
tmount=entry bossnew bossnew
tmount=move message.yes f
nextfile f
tread=entry bossnew bossnew
tread=move message.yes f
nextfile f
tprinter=entry bossnew bossnew
tprinter=move message.yes f
\f


; rc 75.06.24                       bossold, ...5...

nextfile f
tprocs=entry bossnew bossnew
tprocs=move message.yes f
nextfile f
tbanker=entry bossnew bossnew
tbanker=move message.yes f
nextfile f
taccount=entry bossnew bossnew
taccount=move message.yes f
nextfile f
tcatupdate=entry bossnew bossnew
tcatupdate=move message.yes f
nextfile f
tuserout=entry bossnew bossnew
tuserout=move message.yes f
nextfile f
testout=entry bossnew bossnew
testout=move message.yes f
nextfile f
textxref=entry bossnew bossnew
textxref=move message.yes f
nextfile f
tsaveconv=entry bossnew bossnew
tsaveconv=move message.yes f
nextfile f
tgetconv=entry bossnew bossnew
tgetconv=move message.yes f
nextfile f
tusercat=entry bossnew bossnew
tusercat=move message.yes f
scope user central tterm1 tterm2 tjobstart tjob tmount tread,
        tprinter tprocs tbanker taccount tcatupdate tuserout testout,
         textxref tsaveconv tgetconv tusercat
o c
end
)

/,f

\f



; rc  bossold  ...5a...

bosscompfd=edit
i$
o qq
ccs=set 10 1
ccs=slang


; rc 76.07.01 textcompr
b.
d.
p.<:fpnames:>
l.
;this program compresses a slang text i.e. removes all
;blind characters (spaces and non-graphics) except in text
;strings and messages. all vt and ff is converted to nl.

;input is copied directly, until b. or s. is found
;in the beginning of a line.

; call: result=textcompr infile

s. j5, i5, g5, f5, e5, d5, c10, b5, a10
w.
k=h55
    0
b2:  0                 ;
     ds. w3     b2.    ; entry: save fpparam
     sn  w3  x2        ;   if no left side then
     jl.     a1.       ;   alarm(call)
     al. w1     h19.   ; connect output:
     jl. w3     h79.   ;   (leftside is connected to
     al. w3     b1.    ;    current program zone)
     rs. w3     h80.+2
     al  w3  x3-1
     rs  w3  x1+h0
     al  w3  x3+512
     rs  w3  x1+h0+2
     al  w2  x2+2
     al  w0  1<1+1
     jl. w3     h28.
     se  w0     0
     jl.         a2.
     rl. w3     b2.    ;
     bl  w1  x3+10
     sh  w1     3
     jl.        a3.     ;   if no param then alarm
     bl  w1  x3+11     ;   
     se  w1     10     ;   if param<>text
     jl.        a3.    ;   then alarm(param)
     jl. w3  h29.-4     ; stack cur in
     rl. w3  b2.        ;
     al  w2  x3+12     ;   connect input
     jl. w3  h27.-2    ;
     se  w0  0
     jl.     a2.
     al  w0     0      ; find a nice b. or s. :
     jl.        a5.    ;
a4:  al. w1     h19.   ; new:
     jl. w3     h26.   ;   outchar(char);
a5:  jl. w3     h25.-2 ;   inchar(char);
     sn  w2     25     ;   if char=25
     jl.        a9.    ;   then goto em;
     bl. w3  x2+g0.    ;   class:=table(char);
     sn  w3     c10    ;   if class=blind  (c10=c1 in table)
     jl.        a4.    ;   then goto new;
     se  w3     c4     ;   if class=newline then
     jl.        a6.    ;   begin
     al  w0     0      ;     state:=empty line;
     al  w2     10     ;     char:=10;
     jl.        a4.    ;     goto new;
a6:  sn  w0     2      ;   end;
     jl.        a4.    ;   if state=copy linerest then goto new;
     se  w0     0      ;   if state=empty line then
     jl.        a8.    ;   begin check normal character:
     se  w2     83     ;     if char<>big s
     sn  w2     115    ;     and char<>small s
     jl.        a7.    ;
     se  w2     66     ;     and char<>big b
     sn  w2     98     ;     and char<>small b then
     jl.        a7.    ;     begin
     al  w0     2      ;       state:=copy linerest; goto new;
     jl.        a4.    ;     end else
a7:  al  w0     1      ;     begin state:=point expected; goto new;
     jl.        a4.    ;   end end else   point is expected:
a8:  al  w0     2      ;   if char<>point then
     se  w2     46     ;   begin state:=copy linerest; goto new; end
     jl.        a4.    ;   else
                       ; compression may start:
                       ;
c0:  rs. w2     f3.    ; outnext:
      al. w1     h19.
     jl. w3     h26.   ;   outchar(char);
c1:  jl. w3     h25.-2  ; next: inchar(char)
d0:  bl. w3  x2+g0.    ; take action: action:= table(char);
     al  w0     1      ;
j0:  jl.     x3        ;   goto action;
d1:  al  w0     1      ; normal1:
c2=k-j0
     sn. w0    (f0.)   ; normal:
     jl.        c1.    ;   goto if comment then next else outnext;
     jl.        c0.    ;
c3=k-j0
     se. w0    (f1.)   ; space:
     sn. w0    (f2.)   ;   goto if string or message
     jl.        c0.    ;   then outnext else next;
     jl.        c1.    ;
c4=k-j0
     al  w2     10     ; nl: vt: ff:
     al  w0     0      ;   char:= nl;
     se. w0    (f2.)   ;   if message then message:= false else
     rs. w0     f2.    ;
     se. w0    (f0.)   ;   if comment then comment:= false;
     rs. w0     f0.    ;
     al  w3     10     ;
     sn. w0    (f1.)   ;   if string or
     se. w3    (f3.)   ;   char<>10 then
     jl.        c0.    ;   goto outnext else
     jl.        c1.    ;   goto next;
c5=k-j0
a9:  jl. w3     h30.-4 ; em: unstack curr in;
     al. w1     h19.   ;
     rl  w0  x1+h3     ;
     ws  w0  x1+h0     ;
     hs. w0     c10.   ;   recbase-basebuf
     jl. w3     h95.   ;   close(output zone);
     jl. w3     h79.   ;
     al  w2  x1
     al  w3  x1+h1+2
     al. w1  h54.       ;   lookup area
     jd      1<11+42    ;   lookup entry
     rl  w3  x2+h1+16   ;   tail(0):=segm.count
     rs  w3  x1         ;
     al  w3  x3-1     ;   (segm-1)
     ls  w3     9     ;   *512
c10=k+1
     al  w3  x3+80     ;   +(recbase-basebuf
     al  w3  x3+2     ;   +2)
     rs  w3  x1+18    ;   => loadlength
     dl  w0     110   ;
     ld  w0     5     ;
     rs  w3  x1+10    ;   shortclock
     al  w3  x2+h1+2  ;   restore w3
     bz  w2  x2+h1+1  ;   output kind
     sn  w2  4          ;   if kind=bs then
     jd       1<11+44   ;   changeentry
     al  w2     0      ;   ok:=true;
     jl.        h7.    ;   goto fp end program;
c6=k-j0
     sn. w0    (f0.)   ; semicolon:
     jl.        c1.    ;   if comment then goto next;
     se. w0    (f1.)   ;  
     sn. w0    (f2.)   ;   if string or message
     jl.        c0.    ;   then goto outnext;
     rs. w0     f0.    ;   comment:= true;
     jl.        c1.    ;   goto next;
\f

                                                        
; rc 21.05.74                                 page 2

c7=k-j0
     am         1      ; m: m: mess:= true; goto inn;
c8=k-j0
     al  w3     0      ; less than: mess:= false;
     hs. w3     b0.    ;   inn:
     sn. w0    (f0.)   ;   if comment then goto next;
     jl.        c1.    ;
     se. w0    (f1.)   ;
     sn. w0    (f2.)   ;   if string or message then goto outnext;
     jl.        c0.    ;
      al. w1     h19.
     jl. w3     h26.   ;   outchar(char);
     jl. w3     h25.-2 ;   inchar(char);
b0=k+1;mess, true=1,false=0
     se  w3  x3        ;   if mess then goto message;
     jl.        a0.    ;
     se  w2     58     ;   if char<>colon then goto take action;
     jl.        d0.    ;
     rs. w0     f1.    ;   string:= true;
     jl.        c0.    ;   goto outnext;
a0:  se  w2     46     ; message:
     jl.        d0.    ;   if char<>point then goto take action;
     rl. w3     f3.    ;   
     sh  w3     63     ;   if oldchar<>letter then
     rs. w0     f2.    ;   message:= true;
     jl.        c0.    ;   goto outnext;
c9=k-j0
     al  w0     0      ; colon:
     sn. w0    (f1.)   ;
     jl.        d1.    ;  if not string then goto normal1;
      al. w1     h19.
     jl. w3     h26.   ;   outchar(char);
     jl. w3     h25.-2 ;   inchar(char);
     se  w2     62     ;   if char<>greater than then
     jl.        d0.    ;   then goto take action;
     rs. w0     f1.    ;   string:= false;
     jl.        c0.    ;   goto outnext;
e1:  <:***textcompr call<10><0>:>
e2:  <:***textcompr connect error<10><0>:>
e3:  <:***textcompr param<10><0>:>
a1:  am  e1-e2
a2:  am  e2-e3
a3:  al. w0  e3.
     jl. w3  h31.-2
     al  w2  1
     jl.     h7.
;booleans, true=1, false=0
f0:  0 ; comment
f1:  0 ; string
f2:  0 ; message
f3:  0 ; oldchar
h.
c0=c0-j0, c1=c1-j0, c10=c1
g0:
;0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
c1,c1,c1,c1,c1,c1,c1,c1,c1,c1,c4,c4,c4,c1,c1,c1; 0-15
c1,c1,c1,c1,c1,c1,c1,c1,c1,c5,c1,c1,c1,c1,c1,c1;16-31
c3,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2;32-47
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c9,c6,c8,c2,c2,c2;48-63
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c7,c2,c2;64-79
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2;80-95
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c7,c2,c2;96-111
c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c2,c1;112-127
w.
b1: 0, r.256  ; buffer for program zone
e.
e.
e. ; end of slangcompr


if ok.no
(o c
message trouble textcomp program
end)

o c
message start textcomp

tt=set 50 1
tt=ccs central
if ok.no
(message trouble compress central
end)
rename tt.central
if ok.no
(message trouble rename central
end)
tt=set 50 1
tt=ccs tterm1
if ok.no
(message trouble compress tterm1
end)
rename tt.tterm1
if ok.no
(message trouble rename tterm1
end)
tt=set 50 1
tt=ccs tterm2
if ok.no
(message trouble compress tterm2
end)
rename tt.tterm2
if ok.no
(message trouble rename tterm2
end)
tt=set 50 1
tt=ccs tjobstart
if ok.no
(message trouble compress tjobstart
end)
rename tt.tjobstart
if ok.no
(message trouble rename tjobstart
end)
tt=set 50 1
tt=ccs tjob
if ok.no
(message trouble compress tjob
end)
rename tt.tjob
if ok.no
(message trouble rename tjob
end)
tt=set 50 1
tt=ccs tmount
if ok.no
(message trouble compress tmount
end)
rename tt.tmount
if ok.no
(message trouble rename tmount
end)
tt=set 50 1
tt=ccs tread
if ok.no
(message trouble compress tread
end)
rename tt.tread
if ok.no
(message trouble rename tread
end)
tt=set 50 1
tt=ccs tprinter
if ok.no
(message trouble compress tprinter
end)
rename tt.tprinter
if ok.no
(message trouble rename tprinter
end)
tt=set 50 1
tt=ccs tprocs
if ok.no
(message trouble compress tprocs
end)
rename tt.tprocs
if ok.no
(message trouble rename tprocs
end)
tt=set 50 1
tt=ccs tbanker
if ok.no
(message trouble compress tbanker
end)
rename tt.tbanker
if ok.no
(message trouble rename tbanker
end)

message end textcomp

fdsave coboss.1 newkit.main newscope.temp ,
bossold options jobdescr ,
central tterm1 tterm2 tjobstart tjob tmount tread tprinter tprocs tbanker

fdsave alboss.1 newkit.main newscope.temp ,
taccount tcatupdate tuserout testout textxref tsaveconv tgetconv tusercat

$,f


; check bossold description

qq=edit
i/
b. a10 w.
a0:  0
a1:  0, r.10     ; tail
a2:  <:bossold:>,0;
a3:  rs. w3  a0. ; save slang return
     al. w1  a1. ;
     al. w3  a2. ;
     jd  1<11+42 ; lookup bossold
     bz. w1  a1.+1;
     al  w2  0
     sl. w2 (a1.); if modekind > 0 
     se  w1  18  ; or not magtape then
     al  w2  1   ; not ok else
     al  w0  0   ; ok;
     jl.    (a0.); slang return

     jl.     a3.
j. e.
/,f
slang qq
if ok.no
(o c
message file descriptors left unchanged
end)
o c
\f

                                 
; rc 19.5.72                    bossold, ...6...

; generate text file descriptors
f=entry bossold bossold bossold bossold
nextfile f f f; skip options and jobdescr
central=entry f f f f
nextfile f
tterm1=entry f f f f
nextfile f
tterm2=entry f f f f
nextfile f
tjobstart=entry f f f f
nextfile f
tjob=entry f f f f
nextfile f
tmount=entry f f f f
nextfile f
tread=entry f f f f
nextfile f
tprinter=entry f f f f
nextfile f
tprocs=entry f f f f
nextfile f
tbanker=entry f f f f
nextfile f
taccount=entry f f f f
nextfile f
tcatupdate=entry f f f f
nextfile f
tuserout=entry f f f f
nextfile f
testout=entry f f f f
nextfile f
textxref=entry f f f f
nextfile f
tsaveconv=entry f f f f
nextfile f
tgetconv=entry f f f f
nextfile f
tusercat = entry f f f f

; generate options and jobdescr
(end
f=entry bossold bossold bossold bossold
nextfile f
options = set 40 disc
options=move f
nextfile f
jobdescr = set 40 disc
jobdescr=move f
)
\f

▶EOF◀