char.nas.s 646 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. .define putchar,getchar
  2. .sect .text
  3. .sect .rom
  4. .sect .data
  5. .sect .bss
  6. .sect .text
  7. ! output routine in monitor for the nascom
  8. CRT = 0x013B
  9. ! output a charcter
  10. ! entry: ascii character in a
  11. .sect .text
  12. putchar:
  13. push hl
  14. push bc
  15. ld hl,tab
  16. ld b,5
  17. 1: cp (hl)
  18. jr z,fetch
  19. inc hl
  20. inc hl
  21. djnz 1b
  22. 2: call CRT
  23. pop bc
  24. pop hl
  25. ret
  26. fetch: inc hl
  27. ld a,(hl)
  28. jr 2b
  29. ! conversion table for nascom characters
  30. tab: .data1 0x0D,0x00
  31. .data1 0x1B,0x1E
  32. .data1 0x08,0x1D
  33. .data1 0x0A,0x1F
  34. .data1 0x7F,0x00
  35. KBD = 0x69
  36. get character from keyboard
  37. getchar:
  38. call KBD
  39. jr nc,getchar
  40. cp 0x1F
  41. jr z,CR
  42. cp 0x1D
  43. jr z,BS
  44. ret
  45. CR: ld a,0xA
  46. ret
  47. BS: ld a,0x8
  48. ret