1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- .define .aar2
- .sect .text
- .sect .rom
- .sect .data
- .sect .bss
- .sect .text
- ! Load address of array element, decriptor contains 2-bytes integers
- ! Expects on stack: pointer to array descriptor
- ! index
- ! base address
- ! Yields on stack: address of array element
- .aar2:
- pop h
- shld .retadr1
- mov h,b
- mov l,c
- shld .bcreg
- pop h ! hl = pointer to descriptor
- pop d ! de = index
- mov a,e ! bc = index - lower bound
- sub m
- inx h
- mov c,a
- mov a,d
- sbb m
- inx h
- mov b,a
- push b ! first operand to multiply
- inx h
- inx h
- mov c,m ! bc = size
- inx h
- mov b,m
- push b ! second operand to multiply
- call .mli2 ! de = size * (index - lower bound)
- pop h ! hl = base address
- dad d ! hl = address of array[index]
- push h
- lhld .bcreg
- mov b,h
- mov c,l
- lhld .retadr1
- pchl
|