ack/mach/m68k2/libsys/head_em.s

85 lines
1.2 KiB
ArmAsm
Raw Normal View History

1984-12-14 15:41:14 +00:00
.define .lino,.filn
1992-06-30 16:04:38 +00:00
.define EXIT,BRK,WRITE
1984-12-14 15:41:14 +00:00
.define begtext,begdata,begbss
.define EARRAY,ERANGE,ESET,EIDIVZ,EHEAP,EILLINS,ECASE,EBADGTO
.define hol0,.reghp,.limhp,.trpim,.trppc
.sect .text
.sect .rom
.sect .data
.sect .bss
1984-12-14 15:41:14 +00:00
! EM runtime start-off for the Bleasdale 68000 system
1984-12-14 15:41:14 +00:00
LINO_AD = 0
FILN_AD = 4
EARRAY = 0
ERANGE = 1
ESET = 2
EIDIVZ = 6
EHEAP = 17
EILLINS = 18
ECASE = 20
EBADGTO = 27
.sect .text
1984-12-14 15:41:14 +00:00
begtext:
! Bleasdale puts the argument and environment vectors
! themselves on top of the stack, instead of POINTERS
! to these vectors. We get things right here.
move.l 4(sp),a0
clr.l -4(a0)
move.l sp,a0
sub.l #8,sp
move.l (a0),(sp)
add.l #4,a0
move.l a0,4(sp)
1:
tst.l (a0)+
bne 1b
move.l 4(sp),a1
cmp.l (a1),a0
blt 2f
sub.l #4,a0
2:
move.l a0,8(sp)
! Now the stack contains an argc (4 bytes), argv-pointer and
! envp pointer.
add.l #2,sp !convert argc from 4-byte to 2-byte
1991-03-06 14:26:16 +00:00
jsr __m_a_i_n
1984-12-14 15:41:14 +00:00
add #010,sp
EXIT:
1987-03-03 11:22:29 +00:00
move.w d0,-(sp)
1984-12-14 15:41:14 +00:00
jsr __exit
1992-06-30 16:04:38 +00:00
BRK:
jmp __brk
WRITE:
jmp __write
.sect .data
1984-12-14 15:41:14 +00:00
begdata:
hol0:
.lino:
.data2 0,0 ! lino
1984-12-14 15:41:14 +00:00
.filn:
.data4 0 ! filn
1984-12-14 15:41:14 +00:00
.reghp:
.data4 endbss
1984-12-14 15:41:14 +00:00
.limhp:
.data4 endbss
1984-12-14 15:41:14 +00:00
.trppc:
.data4 0
1984-12-14 15:41:14 +00:00
.trpim:
.data2 0
1984-12-14 15:41:14 +00:00
.sect .bss
begbss: !initialization is not needed because ALL entries are in zero space!