ack/mach/xenix3/libsys/head_em.s
1988-07-13 16:55:48 +00:00

82 lines
1.1 KiB
ArmAsm

.sect .text; .sect .rom; .sect .data; .sect .bss
.define begtext,begdata,begbss,syscal
.define hol0,.reghp,.limhp,.trppc,.ignmask
.define ERANGE,ESET,EHEAP,ECASE,EILLINS,EIDIVZ,EODDZ
.extern _end
ERANGE = 1
ESET = 2
EIDIVZ = 6
EHEAP = 17
EILLINS = 18
EODDZ = 19
ECASE = 20
.sect .text
.data1 0353
.data1 0176 ! jmp to begtext in 2 bytes. Assembler generates 3
! bytes.
syscal: jmp 1f
grow: jmp 2f
jmp 2f
.data2 -277, -277, -277, -277, -277, -277
2:
mov ax,2088
1:
int 5
jmp 1f
.space 100
1:
ret
begtext:
mov bx,sp
mov cx,(bx)
add bx,2
mov ax,cx
inc ax
shl ax,1
add ax,bx
push ax
push bx
push cx
xor bp,bp
mov bx,_end
mov cx,9
add bx,1024
shr bx,cl
shl bx,cl
call grow
xor cx,cx
push cx
call _sbrk
mov (.limhp),ax
mov (.reghp),ax ! on Xenix, heap begins above stack!
pop ax
call _m_a_i_n
push ax
call __exit
.sect .data
begdata:
hol0:
.data2 0,0
.data2 0,0
argv:
.data2 3f
envp:
.data2 0
3:
.asciz "PROGRAM"
.reghp:
.data2 endbss
.limhp:
.data2 endbss
.ignmask:
.data2 0
.trppc:
.data2 0
.sect .bss
begbss: