50 lines
893 B
ArmAsm
50 lines
893 B
ArmAsm
.define hol0, argv, envp, begbss
|
|
.define .ignmask,.reghp,.trapproc,.fra
|
|
.define .retadr,.retadr1,.areg,.bcreg,.tmp1
|
|
.define block1, block2, block3
|
|
.define .stop
|
|
|
|
.base 0x1000
|
|
.text
|
|
lxi h,0x1000 ! stack will grow from 0x1000 downwards
|
|
sphl
|
|
lxi h,begbss ! clear bss
|
|
lxi d,endbss-begbss
|
|
mvi c,0
|
|
|
|
2: mov m,c
|
|
inx h
|
|
dcx d
|
|
mov a,e
|
|
ora d
|
|
jnz 2b
|
|
|
|
lxi h,envp ! call main
|
|
push h
|
|
lxi h,argv
|
|
push h
|
|
lxi h,0
|
|
push h
|
|
call _m_a_i_n
|
|
.stop: jmp 0xfb52
|
|
|
|
.bss
|
|
begbss:
|
|
.trapproc: .space 2
|
|
.ignmask: .space 2
|
|
.data
|
|
hol0: .space 8
|
|
.reghp: .word endbss
|
|
argv: .word 0
|
|
envp: .word 0
|
|
.retadr: .space 2 ! used to save return address
|
|
.retadr1: .space 2 ! reserve
|
|
.bcreg: .space 2 ! used to save localbase
|
|
.areg: .space 1
|
|
.tmp1: .space 2
|
|
.fra: .space 8 ! 8 bytes function return area
|
|
block1: .space 4 ! used by 32 bits divide and
|
|
block2: .space 4 ! multiply routines
|
|
block3: .space 4
|
|
|