ack/mach/i80/libem/pro.s

59 lines
629 B
ArmAsm

.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
.define .proword, .probyte
.define .pro0, .pro2, .pro4
! BC is used as the frame pointer, but HL and DE can be corrupted.
.proword:
pop h
push b
mov e, m
inx h
mov d, m
inx h
jmp .pron
.probyte:
pop h
push b
mvi d, 0xff
mov e, m
inx h
jmp .pron
.pro4:
pop h
push b
lxi d, -4
jmp .pron
.pro2:
pop h
push b
lxi d, -2
jmp .pron
.pro0:
pop h
push b
lxi d, 0
! fall through
.pron:
shld .retadr
! Copy the current stack pointer to BC.
lxi h, 0
dad sp
mov b, h
mov c, l
! Calculate the new stack pointer.
dad d
sphl
lhld .retadr
pchl