103 lines
1.7 KiB
Plaintext
103 lines
1.7 KiB
Plaintext
|
#
|
||
|
#include "em_abs.h"
|
||
|
/*
|
||
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
||
|
*
|
||
|
* This product is part of the Amsterdam Compiler Kit.
|
||
|
*
|
||
|
* Permission to use, sell, duplicate or disclose this software must be
|
||
|
* obtained in writing. Requests for such permissions may be sent to
|
||
|
*
|
||
|
* Dr. Andrew S. Tanenbaum
|
||
|
* Wiskundig Seminarium
|
||
|
* Vrije Universiteit
|
||
|
* Postbox 7161
|
||
|
* 1007 MC Amsterdam
|
||
|
* The Netherlands
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
/* Author: E.G. Keizer */
|
||
|
|
||
|
mes 2,_EM_WSIZE,_EM_PSIZE
|
||
|
|
||
|
exa environ
|
||
|
exa _end
|
||
|
exa _penvp
|
||
|
_penvp
|
||
|
bss _EM_PSIZE,0,0
|
||
|
|
||
|
exp $m_a_i_n
|
||
|
pro $m_a_i_n,0
|
||
|
loc 1336 ; EIOVFL | EIUND | ECONV | EFOVFL | EFUNFL
|
||
|
sim ; ignored
|
||
|
lal _EM_WSIZE+_EM_PSIZE
|
||
|
loi _EM_PSIZE
|
||
|
lae _penvp
|
||
|
sti _EM_PSIZE
|
||
|
/* Now test if environ is our own environ, or some user defined environ.
|
||
|
* First test if environ < _end. This is done for separate I&D systems.
|
||
|
*/
|
||
|
lae environ
|
||
|
lae _end
|
||
|
cmp
|
||
|
zge *1
|
||
|
/* Now environ < end, which means that we can derefence it without trouble
|
||
|
* on separate I&D systems.
|
||
|
*/
|
||
|
lae environ
|
||
|
loi 2
|
||
|
loc 2
|
||
|
loc _EM_WSIZE
|
||
|
cii
|
||
|
loc 21331 /* == 0x5353 */
|
||
|
bne *1
|
||
|
/* environ contains the magic value. Assume it's our own environ */
|
||
|
lae _envp
|
||
|
loi _EM_PSIZE
|
||
|
lae environ
|
||
|
sti _EM_PSIZE
|
||
|
1
|
||
|
#if unix && ! (em22 || em24 || em44)
|
||
|
lpi $_ctch_
|
||
|
sig
|
||
|
asp _EM_PSIZE
|
||
|
#endif
|
||
|
lal _EM_WSIZE+_EM_PSIZE
|
||
|
loi _EM_PSIZE
|
||
|
lal _EM_WSIZE
|
||
|
loi _EM_PSIZE
|
||
|
lal 0
|
||
|
loi _EM_WSIZE
|
||
|
cal $main
|
||
|
asp _EM_WSIZE+_EM_PSIZE+_EM_PSIZE
|
||
|
lfr _EM_WSIZE
|
||
|
cal $exit
|
||
|
end
|
||
|
|
||
|
#if unix && ! (em22 || em24 || em44)
|
||
|
exp $_ctch_
|
||
|
pro $_ctch_,0
|
||
|
lol 0
|
||
|
loc EIDIVZ
|
||
|
beq *1
|
||
|
lol 0
|
||
|
loc EFDIVZ
|
||
|
beq *1
|
||
|
lol 0
|
||
|
trp
|
||
|
bra *3
|
||
|
1
|
||
|
loc 8
|
||
|
cal $_getpid
|
||
|
lfr _EM_WSIZE
|
||
|
cal $_kill
|
||
|
asp 2*_EM_WSIZE
|
||
|
3
|
||
|
lpi $_ctch_
|
||
|
sig
|
||
|
asp _EM_PSIZE
|
||
|
rtt
|
||
|
end 0
|
||
|
#endif
|