ack/plat/em/libsys/setsig.e
David Given 7eaa235fd1 Bodge the ancient em monitor library into building as a libsys for the em22
plat. It's completely untested, but it builds and makes e.out executables.
2018-06-13 21:44:25 +09:00

46 lines
763 B
Plaintext

#
mes 2,EM_WSIZE,EM_PSIZE
save
bss EM_PSIZE,0,0
trf
bss EM_PSIZE,0,0
exp $_setsig
pro $_setsig,0
lal 0
loi EM_PSIZE
lae trf
sti EM_PSIZE
inp $catchit
lpi $catchit ; trap to catchit
sig
lae save ; remember higher level trap
sti EM_PSIZE
ret 0
end
pro $catchit,0
lpi $catchit
sig
asp EM_PSIZE
lol 0 ; fetch trapno
lae trf
loi EM_PSIZE ; fetch procedure identifier
cai
lfr EM_WSIZE
zne *1
; trap not handled by trf function, trap through; trapno still on stack
lae save
loi EM_PSIZE
sig
asp EM_PSIZE
trp
lpi $catchit ; trap ignored, further traps to catchit
sig
asp EM_PSIZE
lae save ; remember higher level trap
sti EM_PSIZE
1
rtt
end