lar.s 455 B

12345678910111213141516171819202122232425262728
  1. .define lar
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. !R1 contains description address
  8. !R3 contains element number
  9. !base address is on stack
  10. lar:
  11. popl saveret, *RR14
  12. sub R3, 0(R1)
  13. ld R0, 4(R1) !nr of bytes per element
  14. mult RR2, R0
  15. add R3, *RR14
  16. add R3, R0
  17. sra R0 !nr of words per element
  18. jr EQ, 1f
  19. dec R3, $2
  20. lddr *RR14, *RR2, R0
  21. inc R15, $2
  22. jr 2f
  23. 1: ldb RL2, -1(R3)
  24. ldb RH2, $0
  25. ld *RR14, R2
  26. 2: ldl RR2, saveret
  27. jp *RR2