cii.s 422 B

1234567891011121314151617181920212223242526272829
  1. .define cii
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. cii:
  8. popl saveret, *RR14
  9. pop R2, *RR14
  10. pop R1, *RR14
  11. sub R2, R1 !expansion in bytes
  12. jr LE, 1f
  13. sra R2 !expansion in words > 0
  14. jr NC, 2f
  15. pop R1, *RR14 !expand 1 --> 2
  16. extsb R1
  17. push *RR14, R1
  18. test R2
  19. jr EQ, 4f
  20. 2: !expand >= 1 word
  21. ld R1, *RR14
  22. exts RR0
  23. 3: push *RR14, R0
  24. djnz R2, 3b
  25. jr 4f
  26. 1: sub R15, R2
  27. 4: pushl *RR14, saveret
  28. ret