ack/lang/cem/libcc.ansi/head_ac.e
1990-09-27 16:52:07 +00:00

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 _penvp
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