Pristine Ack-5.5
[Ack-5.5.git] / mach / z80 / libmon / char.nas.s
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
36 KBD     = 0x69
37  get character from keyboard
38 getchar:
39         call    KBD
40         jr      nc,getchar
41         cp      0x1F
42         jr      z,CR
43         cp      0x1D
44         jr      z,BS
45         ret
46 CR:     ld      a,0xA
47         ret
48 BS:     ld      a,0x8
49         ret