89 lines
2.2 KiB
Plaintext
89 lines
2.2 KiB
Plaintext
|
#include "e.h"
|
||
|
exa _1PUTT ; 1st label in PUTT (run68d)
|
||
|
exp $PUT
|
||
|
exp $PRINT
|
||
|
exp $WRITE
|
||
|
exp $PUTT
|
||
|
exp $NXTBIT
|
||
|
exp $STANDOUT
|
||
|
|
||
|
ina jumpdesc
|
||
|
jumpdesc
|
||
|
con 0I SZADDR,0I SZADDR,0I SZADDR ; enough space for 3 pointers
|
||
|
|
||
|
pro $PUT,PUTTVARSPACE
|
||
|
mes 11
|
||
|
loc PUTSTAMP
|
||
|
stl -SZWORD ; set up frame stamp
|
||
|
lxa 0 ; load argument base
|
||
|
lol SZADDR+SZADDR ; load length of data lost, skip static link & space
|
||
|
loc SZADDR+SZADDR+SZWORD
|
||
|
adu SZWORD ; add on space for static link & file pointer & count
|
||
|
ads SZWORD ; add argument base and offset
|
||
|
loi SZADDR ; load file address, objectp
|
||
|
SFL SZADDR ; store in space, left for this reason
|
||
|
lor 1 ; fill in jump info with SP
|
||
|
SFE jumpdesc+SZADDR
|
||
|
lxl 0 ; and LB
|
||
|
SFE jumpdesc+SZADDR+SZADDR
|
||
|
LFE _1PUTT-ENTRYOFFSET ; and code entry point
|
||
|
SFE jumpdesc
|
||
|
gto jumpdesc ; jump to PUTT, in run68d
|
||
|
end PUTTVARSPACE
|
||
|
|
||
|
pro $PRINT,PUTTVARSPACE
|
||
|
mes 11
|
||
|
loc PUTSTAMP
|
||
|
stl -SZWORD ; set up frame stamp
|
||
|
LFE .HTOP-STOUTOFFSET; address of stout in global frame
|
||
|
SFL SZADDR ; store in first param after static link
|
||
|
lor 1 ; fill in jump info with SP
|
||
|
SFE jumpdesc+SZADDR
|
||
|
lxl 0 ; and LB
|
||
|
SFE jumpdesc+SZADDR+SZADDR
|
||
|
LFE _1PUTT-ENTRYOFFSET ; and code entry point
|
||
|
SFE jumpdesc
|
||
|
gto jumpdesc ; jump to PUTT, in run68d
|
||
|
end PUTTVARSPACE
|
||
|
|
||
|
pro $WRITE,PUTTVARSPACE
|
||
|
mes 11
|
||
|
loc PUTSTAMP
|
||
|
stl -SZWORD ; set up frame stamp
|
||
|
LFE .HTOP-STOUTOFFSET; address of stout in global frame
|
||
|
SFL SZADDR ; store in first param after static link
|
||
|
lor 1 ; fill in jump info with SP
|
||
|
SFE jumpdesc+SZADDR
|
||
|
lxl 0 ; and LB
|
||
|
SFE jumpdesc+SZADDR+SZADDR
|
||
|
LFE _1PUTT-ENTRYOFFSET ; and code entry point
|
||
|
SFE jumpdesc
|
||
|
gto jumpdesc ; jump to PUTT, in run68d
|
||
|
end PUTTVARSPACE
|
||
|
|
||
|
pro $NXTBIT,SZWORD ; FUNCTION(VAR N: INTEGER): INTEGER;
|
||
|
loc PASCALSTAMP
|
||
|
stl -SZWORD
|
||
|
LFL SZADDR ; address of N
|
||
|
loi SZWORD
|
||
|
dup SZWORD
|
||
|
loc 1
|
||
|
slu SZWORD ; shift left
|
||
|
LFL SZADDR
|
||
|
sti SZWORD ; replace shifted N
|
||
|
tlt ; test original N
|
||
|
ret SZWORD ; return old top bit of N
|
||
|
end SZWORD
|
||
|
|
||
|
pro $STANDOUT,SZWORD ; call to stoutch (run68d)
|
||
|
loc PASCALSTAMP
|
||
|
stl -SZWORD
|
||
|
LFL SZADDR+SZADDR ; param 1, pcov
|
||
|
LFL SZADDR ; param 2, lfn
|
||
|
LFL 0 ; static link
|
||
|
cal $STOUTCH
|
||
|
asp SZADDR+SZADDR+SZADDR
|
||
|
ret 0
|
||
|
end SZWORD
|
||
|
|