ack/mach/z80/libem/aar.s
1987-02-02 13:30:20 +00:00

41 lines
754 B
ArmAsm

.define .aar
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text
! use .mli2
! 2-byte descriptor elements
! any size array elements
! no range checking
! parameters:
! stack: pointer to descriptor
! index
! base address of array
! stack: result (out)
! uses .mli2 routine
! side-effect: size of array elements in bc
.aar:
pop hl ! return address
pop ix ! pointer to descr.
ex (sp),hl ! save ret. addr.
! hl := index
ld c,(ix+0) ! bc := lower bound
ld b,(ix+1)
xor a
sbc hl,bc ! hl := index-lwb
ld c,(ix+4) ! bc := size
ld b,(ix+5)
ex de,hl ! de := index-lwb
call .mli2 ! hl := bc*de =
! size*(index-lwb)
pop ix ! return address
pop de ! base
add hl,de ! addr. of element
push hl
jp (ix) ! return