]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/msgbuf-s.180
Version 0.6.8.3
[z180-stamp.git] / z180 / msgbuf-s.180
CommitLineData
a16ba2b0
L
1 page 255\r
2 .z80\r
3 \r
4 global msg_fifo\r
5 global msginit\r
6 global msg.out,msg.sout,msg.co\r
7 \r
8 extrn buf.init\r
9\r
10 include config.inc\r
11 include z180reg.inc\r
12\r
13;--------------------------------------------------------------\r
14\r
15 dseg\r
16\r
17 mkbuf msg_fifo, 0\r
18\r
19\r
20;--------------------------------------------------------------\r
21\r
22 cseg\r
23\r
24;\r
25; Init buffer\r
26;\r
27 \r
28msginit:\r
29 ld ix,msg_fifo\r
30 ld a,msg_fb_len-1\r
31 jp buf.init\r
32\r
33\r
34;--------------------------------------------------------------\r
35\r
36msg.sts:\r
37 push ix\r
38 ld ix,msg_fifo ;\r
39\r
40 ld a,(ix+o.in_idx) ;\r
41 inc a\r
42 and (ix+o.mask)\r
43 sub (ix+o.out_idx) ;\r
44 pop ix\r
45 ret z\r
46 or 0ffh\r
47 ret\r
48\r
49;--------------------------------------------------------------\r
50\r
51msg.out:\r
52 push ix\r
53 ld ix,msg_fifo ;\r
54\r
55 push bc\r
56 ld b,a ;save char\r
57 ld a,(ix+o.in_idx) ;\r
58 inc a\r
59 and (ix+o.mask)\r
60bp.wait:\r
61 cp (ix+o.out_idx) ;\r
62 jr z,bp.wait\r
63 ld c,a\r
64 ld a,b\r
65 out (PMSG),a\r
66 ld (ix+o.in_idx),c\r
67 \r
68 pop bc\r
69 pop ix\r
70 ret\r
71\r
72;--------------------------------------------------------------\r
73;\r
74; (hl): data\r
75 \r
76msg.sout:\r
77 push ix\r
78 ld ix,msg_fifo ;\r
79 push bc\r
80\r
81 ld b,(hl) ;count\r
82 inc hl\r
83obs_1:\r
84 ld a,(ix+o.out_idx) ;\r
85 sub (ix+o.in_idx) ;\r
86 dec a\r
87 and (ix+o.mask)\r
88 cp b\r
89 jr c,obs_1\r
90\r
91 ld c,(hl) ;port address\r
92 inc hl\r
93 ld a,b\r
94 otir\r
95 add (ix+o.in_idx)\r
96 and (ix+o.mask)\r
97 ld (ix+o.in_idx),a\r
98 pop bc\r
99 pop ix\r
100 ret\r
101\r
102;----------------------------------------------------------------------\r
103\r
104msg.co:\r
105 push af\r
106 push hl\r
107 ld (buf_char),a\r
108 ld hl,buf\r
109 call msg.sout\r
110 pop hl\r
111 pop af\r
112 ret\r
113 \r
114 \r
115buf:\r
116 db buf_end - $ - 2 ;output string length\r
117 db PMSG ;output port\r
3531528e 118 db 0AEh ; message start token\r
a16ba2b0
L
119 db buf_end - $ - 1 ; message length\r
120 db 1 ; command\r
121 db 1 ; subcommand\r
122buf_char:\r
123 db 0 ; pay load\r
124buf_end:\r
125\r
126;----------------------------------------------------------------------\r
127\r
128 end\r
129\r