DataMuseum.dk

Presents historical artifacts from the history of:

RC3500

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

See our Wiki for more about RC3500

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download

⟦804f497c4⟧ TextFileVerbose

    Length: 9216 (0x2400)
    Types: TextFileVerbose
    Names: »epascallib«

Derivation

└─⟦2c55ea56f⟧ Bits:30001844 SW-save af projekt 1000, Alarm-system
    └─⟦6b41451d2⟧ 
        └─⟦this⟧ »epascallib« 

TextFileVerbose

ntpascallib = edit tpascallib

l./; segment 0-1/,
l./g0: ; start of buffer/,
d./g2:/, i/
g0:                    ; start of buffer
     jl.        g1.    ;   goto init;

; initcode for pascal-program:
; insert the programname 'pascrun' just before the old program name

b. a10, b10 w.

a0:                    ; start of initcode
     b10               ; size of initcode (number of words)

     rl  w0  x1+h51    ;   move fp-modebits to program stack
     rs. w0     b3.    ;

     la. w0     b0.    ;   remove fp-modebits: pause and list;
     rs  w0  x1+h51    ;

     al  w0  x2+b5     ;   current command := current command - simulated;
     rs  w0  x1+h8     ;

     rl. w0     b1.    ;   insert dummy 'end' in front;
a1:  rs  w0  x2+b5     ;
     rl  w0  x2        ;   move a possible lefthand side and
     al  w2  x2+2      ;     the delimiter preceding the program name;
     sh  w2  x3+2      ;
     jl.        a1.    ;

; now there is room for inserting a new program name etc.

     al. w3     b2.    ;   w3 := start of new program name etc.;
a5:  rl  w0  x3        ;
     rs  w0  x2+b5     ;   move new program name to fp-program stack;
     al  w2  x2+2      ;
     al  w3  x3+2      ;
     se. w3     b4.    ;
     jl.        a5.    ;

     al  w2     0      ;   w2 := normal return to fp;
     jl      x1+h7     ;   goto fp-end-program;

b0:  -1 - 1<3 - 1<0    ; mask out: pause + list from modebits

b1:  2<12 + 2          ; dummy 'end'-element;

b2:                    ; start of new program name etc:
     <:pascrun:>, 0    ;
     4<12 + 10         ;
     0                 ;
b3:  0-0-0             ; (old fp-mode bits)
     0                 ;
     0                 ;
     4<12 + 10         ;
b4:                    ; top of new program name etc:

b5 = b2 - b4 - 2       ; size of inserted elements (negative)


b10 = (:k - a0:) > 1   ; number of words in init-code

e.                     ;

{12{

g2:                    ; start of text-table:
/,


l./c6:/, d, i/
c6:<:giveup, blocklength = <0>:>
/,
l./c8:/, d,
l./c9:/, d,
l./c15:/, r/<0>/: <0>/,
l./c16:/, d,
l./c17:/, d,
l./c18:/, r/exist/exist: /,
l./c19:/, d, i/
c8:c9:c16:c17:c19: <: unused error code! ???<0>:>
/,



l./c24:/, r/<::>/<:illegal pointer value<0>:>/,



l./b. a20, b30,/, r/m50/m99/,


l./d44 = 16 ;/, l1, i/
d45 = 18 ; abs return address of last library call
d46 = 20 ; additional error inf
/,

l./b6:/, i/
  m66: h66+2           ; bytes transferred in fp-answer
  m68: h68             ; fp-stderror
/,

l./m0:/,
l./i1:/,
l./dl w2 x3-2041/, i/

     sl. w1    (b2.)   ;   if proc table entry >= first library entry then
     jl.        i3.    ;     goto after library call;
/,

l./ba. w0 1;/, i/
i2:                    ; next:
/,
l./jl. i1. ;/, l1, i/

i3:                    ; after library call:
     rl. w1     b3.    ;
     rl  w2  x1+d45    ;   w2 := rel return from last library call;
     rl  w1  x1+d43    ;   w1 := current pascal procedure;
     ws  w2  x1+p6     ;

     jl.        i2.    ;   goto next;
/,

l./g1: ; init:/,

l./a0:/,
l./jl. (m30.);/, l1, i/

     rl. w0     m68.   ;   primary output.error action := fp-stderror;
     rs  w0  x1+h2+2   ;
/,
l./bz w0 x1-2;/, d, i/

     rl  w0  x3+12     ;     w0 := break-cause;
     se  w0     0      ;     if cause <> instruction-error then
     jl.        a2.    ;       goto print error text;

     rl  w0  x1-2      ;     w0 := erroneous instruction;
     se  w0     0      ;     if all zero then
     jl.        a11.   ;       begin <* io-errors are trapped as such *>
     rl. w0    (m66.)  ;       value := bytes transferred in fp-answer;
     al  w1     6      ;       error number := io-error;
     jl.        a12.   ;       goto set value and error;
a11:                   ;       end;

/,
l./ls w0 -6/, r/-6 /-18/,

l./rs. w0 b25./, d,
l./rs w1 x2+d38/, i/

a12:                   ; set value and error:
     rs. w0     b25.   ;
/,

l./a2:/,
l./se w0 2 ; if error number = 2/, i/

     se  w0     15     ;   if file connect errors then
     sn  w0     18     ;
     jl.        a4.    ;     goto print file name;

     sn  w0     6      ;   if error number = io-error then
     al  w0     2      ;     error number := 2; <* force printing *>
/,

l./a3:/, i/
     jl.        a3.    ;   (skip print file name)

a4:                    ; print file name:
     rl  w1  x2+d46    ;   zone := additional error inf;
     rl  w1  x1+h0+6   ;   w1 := first share;
     al  w0  x1+14     ;   w0 := file name addr;
     jl. w3    (m31.)  ;   outtext (file name);
/,


l./a10:/,
l./al w2 1; else 1/, r/1/0/,  ; rettet 80.04.10: ok-bit vendte forkert
l./se w0 5 ; if not break then/, i/

     sn  w0     6      ;   if io-error then
     jl.        a13.   ;     goto stderror;
/,

l./jl x3+f9/, l1, i/

a13: rl. w3     b1.    ; stderror:
     dl  w1  x3+2      ;   restore (w0,w1,w2,w3) from regdump;
     dl  w3  x3+6      ;
     jl.       (m68.)  ;   goto fp-stderror;
/,


l./; segment 2/,
d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 1
/,
l./0,r.(:1026/, d,
l./; clock (real function)/,
l./; call:/,
  l1 , d, i/
;  w2 = proc table entry
;  w3 = return-2
;        +0: segm<12 + rel
/,
l./d6:/, d, i/

d6:                    ; clock:
     ds. w3     d0.    ;
     rl  w1     66     ;
/,
l./jl x3;/, d, i/
     jl.        d4.    ;   return;
/,




l./; segment 3/,
d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 2
/,
l./0,r.(:1538/, d,
l./d12: am 1 ; date/,
l./b4:/,
l./rl. w1 b3./, d,
l./b10:/,
l./jl x2 ;/, i/
     rl. w1     b3.     ;
/,



l./; segment 4/, d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 3
/,
l./0,r.(:/, d,
l./0,r.(:2562-k/, d,


l./; segment 5-6/,
d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 4
/,
l./; file initialization/,
l./a2:/,
l./rs w0 x1+h2+2/, r/:=0/:= pascal runtime system/,
i/
     rl. w3     b4.    ;
     rl  w0  x3+h20+h2+2;  (use same giveup action as in primary input);
/,
l./i2:;reset:/,
l./jd 1<11+42;/, l1, i/
     rl. w1     b1.    ;   w1 := zone;
/,
l./al w2 x3;/,
l./rl. w1 b1.;/, d,
l./c6:/, r/19/18/,
l./c1:/, d,
l./c2:/, r/1    /18-15/,
l./c3:/, d,
l./c4:/, d,
l./c5:/, r/w1/w0/,
l./al w0 -1/, d, i/
     rx  w1     0      ;   w0 := additional inf (= zone), w1 = errorcode
/,


l./; segment 7-8/,
d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 5
/,
l./0,r.(:/, d,
l./d13:/, r/17-13/7-13 /,r/17/ 7/,



l./; segment 9-10/,
d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 6
/,
l./0,r.(:/, d,
; ret i read(char): convert nl,ff to sp
l./i3:/,
l./se w2 10;/, l1, i/
     sn  w2     12     ;   if char = newline or char = formfeed then
     al  w2     32     ;     char := space;
/,

; btj 80.05.08: null/lf/del skal v{re blinde
l./f0: h./,
l1, r/10/16/, r/10,10 /16,10 /,
l./; 120-127/, r/10 /16 /,
l./c4:/,
l./; state action table/,
l./; 0 2 4 6/, r/14/14       16/,
  l1, r/em/em     blinds/,
l./r0=/, l1, r/ ;/, c0-f2,r0 ;/,
l2,          r/ ;/, c0-f2,r1 ;/,
l2,          r/ ;/, c0-f2,r2 ;/,
l2,          r/ ;/, c0-f2,r3 ;/,


; btj 791219: ff blev skipped
l./i2:/,
l./a3:/,
l./jl. i2. ; goto get next char;/, i/

     se  w2     12     ;   if last char = ff then goto return;
/,


; btj 80.05.08: null osv skal v{re blinde
l./r20=/, l-3, r/14/14         16/,
l1, r/em/em       blinds/,
l./r20=/,
  l1, r/;/, c0-f2,r20;/,
  l2, r/;/, c0-f2,r21;/,
  l2, r/;/, c0-f2,r22;/,
  l2, r/;/, c0-f2,r23;/,
  l2, r/;/, c0-f2,r24;/,
  l2, r/;/, c0-f2,r25;/,
  l2, r/;/, c0-f2,r26;/,








;; btj 791219: ff blev skipped
;l./i2:/,
;l./a3:/,
;l./jl. i2. ; goto get next char;/, i/
;
;     se  w2     12     ;   if last char = ff then goto return;
;/,




l./; segment 11/,
d, i/


{12{

0, r.(:(:k+511:)>9<9-k:)>1 + 1 ; fill to segment boundary
m. start of page 7
/,
l./0,r.(:/, d,
l./a12: al w1 22 ; try to read past eof/,
l./rl w0 x2+4/, r/rutime/runtime/,
l./; pack (limited to string/,
l./f2:/,
l./a4:/, l1, i/
; w0 contains: 0, 1 or 2 characters, rigthjustified
     sn  w0     1      ;   if partial word is empty (i.e. = flag) then
     jl.        f5.    ;     goto return;
/,
l./ld w0 8/, r/up/up with spaces/,
l1, i/
     al  w2     32     ;   w2 := space;
     lo  w0     4      ;
/,
l./ld w0 8/, l1, d1, i/
     lo  w0     4      ;
/,

l./0,r.(:6146-k/, d,
i/
0, r.(:(:k+511:)>9<9-k:)>1 + 1; fill to segment boundary
/,
f
«eof»