]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/fifoio.180
Merge tag 'fatfs-0.10b'
[z180-stamp.git] / z180 / fifoio.180
CommitLineData
a16ba2b0
L
1 page 255\r
2 .z80\r
3 \r
4 global f.init,f.in,f.out,f.i.st\r
5\r
6 extrn buf.init\r
7\r
8 include config.inc\r
9 include z180reg.inc\r
10\r
11\r
12;--------------------------------------------------------------\r
13\r
14 dseg\r
15 \r
16\r
17 mkbuf rx.buf,rx.buf_len\r
18 mkbuf tx.buf,tx.buf_len\r
19\r
20\r
21;--------------------------------------------------------------\r
22\r
23 cseg\r
24;\r
25; FIFO channels for communication with stm32\r
26;\r
27; Init Serial I/O for console input and output\r
28;\r
29 \r
30f.init:\r
31 ld ix,rx.buf\r
32 ld a,rx.buf.mask\r
33 call buf.init\r
34 ld ix,tx.buf\r
35 ld a,tx.buf.mask\r
36 jp buf.init\r
37\r
38\r
39f.i.st:\r
40 push ix\r
41 ld ix,rx.buf ;\r
42\r
43buf.empty:\r
44 ld a,(ix+o.in_idx) ;\r
45 sub (ix+o.out_idx) ;\r
46 pop ix\r
47 ret z\r
48 or 0ffh\r
49 ret\r
50 \r
51\r
52f.in:\r
53 push ix\r
54 ld ix,rx.buf ;\r
55\r
56buf.get:\r
57 ld a,(ix+o.out_idx) ;\r
58bg.wait:\r
59 cp (ix+o.in_idx) ;\r
60 jr z,bg.wait\r
61\r
62 push hl ;\r
63 push ix\r
64 pop hl\r
65 add a,l\r
66 ld l,a\r
67 jr nc,bg.nc\r
68 inc h\r
69bg.nc:\r
70 ld l,(hl)\r
71 \r
72 ld a,(ix+o.out_idx) ;\r
73 inc a\r
74 and (ix+o.mask)\r
75 ld (ix+o.out_idx),a\r
76 \r
77 ld a,l\r
78 pop hl\r
79 pop ix\r
80 ret\r
81\r
82\r
83f.o.st:\r
84 push ix\r
85 ld ix,tx.buf ;\r
86\r
87buf.full:\r
88 ld a,(ix+o.in_idx) ;\r
89 inc a\r
90 and (ix+o.mask)\r
91 sub (ix+o.out_idx) ;\r
92 pop ix\r
93 ret z\r
94 or 0ffh\r
95 ret\r
96\r
97\r
98f.out:\r
99 push ix\r
100 ld ix,tx.buf ;\r
101\r
102buf.put:\r
103 push hl ;\r
104 push bc\r
105 push ix\r
106 pop hl\r
107 ld c,(ix+o.in_idx) ;\r
108 ld b,0\r
109 add hl,bc\r
110 ld b,a\r
111\r
112 ld a,c ;\r
113 inc a\r
114 and (ix+o.mask)\r
115bp.wait:\r
116 cp (ix+o.out_idx) ;\r
117 jr z,bp.wait\r
118 ld (hl),b\r
119 ld (ix+o.in_idx),a\r
120 \r
121 ld a,b\r
122 pop bc\r
123 pop hl\r
124 pop ix\r
125 ret\r
126\r
127 end\r
128\r