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

⟦38e865bc8⟧ TextFile

    Length: 11520 (0x2d00)
    Types: TextFile
    Names: »label3tx    «

Derivation

└─⟦01e83a425⟧ Bits:30008166 Bånd med SW8010 og SW8500 source code
    └─⟦75ff9bef3⟧ 
        └─⟦this⟧ »label3tx    « 

TextFile


; fgs 1984.06.18                          label, page ...1...

b. g2                   ; block for insertproc

d.
p. <:fpnames:>          ; block for fpnames
l.




s. a5,b0,c27,d0,e12,f4
w.

k=h55

d0=56  ; buffer length for label

      al  w1  x3+2      ;   save prog name addr
      rs. w1  c6.       ;
      se  w3  x2        ;   if left hand side then
      jl.     e1.       ;   alarm(<:call:>);

      al  w3  x3+10     ;
      rs. w3  c7.       ;   save param pointer;

      al. w1  h19.      ;   w1:=addr(cur prog zone);
      jl. w3  h79.      ;   terminate zone;
      al. w3  c15.      ;   first shared(cur prog zone):=
      rs. w3  h80.+2    ;   addr of buffer start;
      al  w3  x3-1      ;   base buf(cur prog zone):=
      rs  w3  x1+h0     ;   first of buf-1;
      al  w3  x3+d0     ;   last buf(cur prog zone):=
      rs  w3  x1+h0+2   ;   base buf+label length;

      rl. w3  c7.       ;
      bl  w2  x3        ;   if endparam then
      sh  w2  3         ;   then alarm(<:param missing:>);
      jl.     e11.      ;
      bl  w2  x3+1      ;
      se  w2  10        ;   if integer then
      jl.     e3.       ;   alarm(<:param:>);
      dl  w1  x3+4      ;   
      al. w2  c20.      ;   index := first of modekind table -
      al  w2  x2-6      ;     6;
a1:   al  w2  x2+6      ; next index: 
      sn. w2  c15.      ;   index := index + 6;
      jl.     a4.       ;   if index < top modekind table then
      sn  w0 (x2  )     ;   begin
      se  w1 (x2+2)     ;     if param (1) = table (index) then
      jl.     a1.       ;     begin
      rl  w2  x2+4      ;       modekind := table (index);
      jl.     a5.       ;       goto found;
                        ;     end;
                        ;   end;
\f


; fgs 1984.06.18                            label, page ...2...
 
 
 
 
a4:   rl. w3  c7.       ; lookup modekind:
      al. w1  h54.      ;   w1:=lookup area;
      al  w3  x3+2      ;   w3:=name area;
      jd     1<11+42    ;   lookup(param1);
      se  w0  0         ;   if not found then
      jl.     e5.       ;   alarm(<:unknown:>);
      bz  w2  x1+1      ;
      se  w2  18        ;   if kind<>18 then
      jl.     e4.       ;   alarm(<:modekind:>);
      bl  w2  x1        ;
      sz  w2  1         ;   if mode odd then
      jl.     e4.       ;   alarm(<:modekind:>);
      rl  w2  x1        ;
a5:   rs. w2  c10.      ; found: move modekind to filedescr.

      rl. w3  c7.       ;
      al  w3  x3+10     ;   step param pointer;
      rs. w3  c7.       ;
      bl  w2  x3        ;
      sh  w2  3         ;   if endparam then
      jl.     e11.      ;   alarm(<:param missing:>);
      se  w2  4         ;   if point then
      jl.     e2.       ;   alarm(<:param:>);
      bl  w2  x3+1      ;
      se  w2  10        ;   if integer then
      jl.     e3.       ;   alarm(<:param:>);

      al. w1  h54.      ;   w1:=lookup area;
      al  w3  x3+2      ;   w3:=name addr.
      jd      1<11+42   ;   lookup(param2);
      se  w0  0         ;
      jl.     a0.       ;   if found then
      bz  w2  x1+1      ;   begin
      se  w2  18        ;     if kind<>18 then
      jl.     e4.       ;     alarm(<:modekind:>);
      bl  w2  x1        ;
      sz  w2  1         ;     if mode odd then
      jl.     e4.       ;     alarm(<:modekind:>);
      al  w3  x1+2      ;   end;
a0:   dl  w1  x3+2      ;
      ds. w1  c12.      ;   move tapename
      dl  w1  x3+6      ;   to filedescriptor;
      ds. w1  c14.      ;

      rl. w1  c11.      ;
      ls  w1  -8        ;
      ls  w1  8         ;
      se. w1  (c0.)     ;   if -,<:mt:> then
      jl.     e6.       ;   alarm(<:illegal tape:>);
      al  w0  0         ;
      rl. w1  c13.      ;
      ls  w1  8         ;
      ld  w1  8         ;   if too short or too long
      sn  w1  0         ;
      sn  w0  0         ;   then
      jl.     e6.       ;   alarm(<:illegal tape:>);
\f


; ta 1977.08.17                               label, page ...3...
 
 
 

      dl. w1  c12.      ;
      ld  w1  16        ;
      rl. w2  c13.      ;
      ls  w2  -8        ;
      wa  w1  4         ;
      ds. w1  c3.       ;   tapename:=mtname-<:mt:>
      sz. w2  (c8.)     ;   if 2 last not digits then
      jl.     e6.       ;   alarm(<:illegal tape:>);
      rl. w2  c12.      ;
      ls  w2  8         ;
      ls  w2  -8        ;
      sz. w2  (c8.)     ;   if 2 preceeding not digits then
      jl.     e6.       ;   alarm(<:illegal tape:>);

      rl. w3  c7.       ;
      al  w3  x3+10     ;
      rs. w3  c7.       ;   step param pointer
      bl  w2  x3        ;
      sh  w2  3         ;   if more parameters then
      jl.     a3.       ;   begin
      se  w2  4         ;   if point then
      jl.     e2.       ;   alarm(<:param:>);
      bl  w2  x3+1      ;
      se  w2  10        ;   if integer then
      jl.     e7.       ;   alarm(<:illegal access kind:>);
      rl  w0  x3+2      ;
      rs. w0  c4.       ;   save param3
      ls  w0  -16       ;
      sn  w0  112       ;   p
      jl.     a2.       ;
      sn  w0  114       ;   r
      jl.     a2.       ;
      se  w0  119       ;   w
      jl.     e7.       ;   if not p,w,r then 
                        ;   alarm(<:illegal access kind:>);
a2:   rl. w3  c7.       ;
      al  w3  x3+10     ;
      rs. w3  c7.       ;
      bl  w2  x3        ;   if endparam then
      sh  w2  3         ;   alarm(<:project number missing:>);
      jl.     e8.       ;
      se  w2  4         ;   if point then
      jl.     e2.       ;   alarm(<:param:>);
      bl  w2  x3+1      ;
      sn  w2  10        ;   if text then
      jl.     e9.       ;   alarm(<:illegal project number:>);
      rl  w2  x3+2      ;
      sl. w2  (c9.)     ;   if proj.number>999999 then
      jl.     e9.       ;   alarm(<:illegal proj.number:>);
      rs. w2  c5.       ;   save project number;
      bl  w2  x3+4      ;
      sl  w2  4         ;   if more parameters then
      jl.     e10.      ;   alarm(<:too many parameters:>);
\f


; fgs 1986.12.12                              label, page ...4...
 
 
 

a3:   al. w1  h19.      ;   cur prog zone
      al. w2  c10.      ;   addr filedescriptor
      jl. w3  h28.      ; <*setmode; setposition (z, 0, 0);*>   connect output;
      jl. w3  h28.          ;   connect again ; <*setmode; setposition (z, 0, 0);*>
      se  w0  0         ;   if not connected then
      jl.     e12.      ;   alarm(<:connect:>);
      rl  w3  x1+h0+2   ;
      rs. w3  h80.+4    ;   last shared;
      al. w0  c1.       ;
      jl. w3  h31.      ;   outtext(cur,<:VOL1:>);
      al. w0  c2.       ;
      jl. w3  h31.      ;   outtext(cur,tapename,access);
      al  w0  -26       ;
      al  w2  32        ;
      jl. w3  b0.       ;   outchar(sp,26);
      rl. w0  c5.       ;   outinteger(<dddddd>,projectnumber);
      jl. w3  h32.      ;
      48<12+6           ;
      al  w0  -37       ;   outchar(sp,37);
      al  w2  32        ;
      jl. w3  b0.       ;
      al  w0  -3        ;   outchar(94,4);
      al  w2  94        ;
      jl. w3  b0.       ;
      al  w2  94        ;
      jl. w3  h34.      ;   close up;
      jl. w3  h79.      ;   terminate zone
      al  w2  0         ;   ok
      jl.     h7.       ;   goto fp;


; procedure outchar(char,repeat);
b0:
b. j2
w.
      ds. w3  j2.       ;   save return
j0:   sn  w0  0         ;   if repeat=0 then
      jl.     (j2.)     ;   return;
      ba. w0  1         ;  repeat:=repeat+1
      rl. w2  j1.       ;   load char;
      jl. w3  h26.      ;   outchar
      jl.     j0.       ;
j1:   0                 ;   saved char;
j2:   0                 ;   saved return;
e.


e0:   <:<10>***:>       ;
e1:   jl. w1  f1.       , <:call<10><0>:>
e2:   jl. w1  f2.       , <: param<10>:>
e3:   jl. w1  f3.       , <: param<10>:>
e4:   jl. w1  f3.       , <: modekind error<10>:>
e5:   jl. w1  f3.       , <: unknown<10><0>:>
e6:   jl. w1  f3.       , <: illegal tapename<10><0>:>
e7:   jl. w1  f3.       , <: illegal access kind<10><0>:>
e8:   jl. w1  f1.       , <:project number missing<10><0>:>
e9:   jl. w1  f3.       , <: illegal project number<10><0>:>
e10:  jl. w1  f1.       , <:too many parameters<10><0>:>
e11:  jl. w1  f1.       , <:parameter missing<10><0>:>
e12:  jl. w1  f1.       , <:connect tape unsuccessful<10><0>:>
\f


; fgs 1984.06.18                             label, page ...5...
 
 
 
f0:
; procedure outalarmhead
b. j0
w.
      rs. w3  j0.       ;   save return
      al. w0  e0.       ;   
      jl. w3  h31.-2    ;   outtext(cur,<:***:>);
      rl. w0  c6.       ;   outtext(programname);
      jl. w3  h31.      ;
      al  w2  32        ;   outsp;
      jl. w3  h26.      ;
      jl.     (j0.)     ;   return
j0:   0                 ;   saved return
e.

f1:
b. j3
w.
      rs. w1  j2.       ;   save text addr
      jl. w3  f0.       ;   outalarmhead
      rl. w0  j2.       ;
      jl. w3  h31.      ;   outtext(alarm);
      jl.     f4.       ;   goto alarmexit;
f2:
      rs. w1  j2.       ;   save alarm text;
      jl. w3  f0.       ;   outalarmhead;
      rl. w2  c7.       ;   parampointer;
      al  w0  x2-8      ;
      jl. w3  h31.      ;   outtext(preceeding param);
      al  w2  46        ;
      jl. w3  h26.      ;   outpoint;
      jl.     j0.       ;
f3:
      rs. w1  j2.       ;   save alarm text
      jl. w3  f0.       ;   outalarmhead;

j0:   rl. w2  c7.       ;   parampointer;
      bz  w3  x2+1      ;
      se  w3  10        ;
      jl.     j1.       ;   if param=text then
      al  w0  x2+2      ;   outtext(param)
      jl. w3  h31.      ;   else
      jl.     j3.       ;
j1:   rl  w0  x2+2      ;   outinteger(param);
      jl. w3  h32.      ;
      1                 ;
j3:   rl. w0  j2.       ;
      jl. w3  h31.      ;   outtext(alarm);

f4:   al  w2  1         ;   not ok
      am      -1000     ;
      jl.     h7.+1000  ;
j2:   0                 ;
e.
\f


; fgs 1984.06.18                              label, page ...6...
 
 
 

c0:   <:mt:>            ;
c1:   <:VOL1:>          ;
c2:   0                 ;   tapename
c3:   0                 ;   tapename
c4:   32<16             ;   access
c5:   0                 ;   project number
c6:   0                 ;   program name addr
c7:   0                 ;   param pointer
c8:   64<8+64           ;   mask
c9:   1000000           ;   >projectnumber
                        ; filedescriptor
c10:  0                 ;   modekind
c11:  0                 ;   docname
c12:  0                 ;   -
c13:  0                 ;   -
c14:  0                 ;   -
      0,0,0,0,0         ;   tail

; mode kind table
c20: <:mto:>, 0, 1<23+  0<12+18; mt, low speed, high density, odd
     <:mte:>, 0, 1<23+  2<12+18;     low        high          even
     <:nrz:>, 0, 1<23+  4<12+18;     low        low           odd
     <:nrze:>  , 1<23+  6<12+18;     low        low           even
     <:mtlh:>  , 1<23+  0<12+18; mt, low speed, high density, odd
     <:mtll:>  , 1<23+  4<12+18;     low        low           odd
     <:mthh:>  , 1<23+128<12+18;     high       high          odd
     <:mthl:>  , 1<23+132<12+18;     high       low           odd

c15:                    ; buffer start;

e.                     ; end program segment

m. 1984.06.18 fp utility, sys3, label

g2=k-h55                ;   code length
g0:g1: (:g2+511:)>9     ;   segments
       0, r.4           ;   docname
       s2               ;   date
       0, 0             ;   file, block
       2<12+0           ;   contents, entry
       g2               ;   loadlength
d.
p.<:insertproc:>
e.
\f

▶EOF◀