#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