set2.s 469 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. .define .set2
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! Create 16 bits set with one bit on
  8. ! Expects in de-reg: bit number
  9. ! Yields in de-reg: resulting set
  10. .set2: mov a,d !trap if bit number >= 16
  11. ora a
  12. cnz eset
  13. mov a,e
  14. cpi 16
  15. cnc eset
  16. pop h
  17. shld .retadr
  18. mov a,e
  19. ani 7
  20. mov d,a
  21. mvi a,1
  22. 1: dcr d
  23. jm 2f
  24. rlc
  25. jmp 1b
  26. 2: mov d,a
  27. mov a,e
  28. ani 8
  29. jnz 3f ! jump if bit 3 is set
  30. mov e,d
  31. mvi d,0
  32. jmp 4f
  33. 3: mvi e,0
  34. 4: lhld .retadr
  35. pchl