4 public mrx.fifo,mtx.fifo
6 public msginit,msgi.st,msg.in,msgo.st
17 ;--------------------------------------------------------------
21 mkbuf mtx.fifo_id, mtx.fifo, mtx.fifo_len
22 mkbuf mrx.fifo_id, mrx.fifo, mrx.fifo_len
24 ;--------------------------------------------------------------
34 ;TODO: value should be 0
53 ;--------------------------------------------------------------
67 ;--------------------------------------------------------------
99 ;--------------------------------------------------------------
115 ;--------------------------------------------------------------
151 ;--------------------------------------------------------------
184 ;----------------------------------------------------------------------
186 ; Put char in message buffer:
187 ; ix: buffer to put into
193 ld a,(ix+o.in_idx) ;19
202 and (ix+o.mask) ;19 =121
204 cp (ix+o.out_idx) ;19
206 ld (ix+o.in_idx),a ;19
213 ;--------------------------------------------------------------
216 ; Works only, if buffer size < (128 - 3)
217 ; --> mask must be 03fh or less
226 ld a,(ix+o.in_idx) ;14
244 ;--------------------------------------------------------------
257 ld a,low mtx.fifo ; 6
258 add a,(ix+o.in_idx) ;14
260 ld a,high mtx.fifo ; 6
264 ld a,(ix+o.in_idx) ;14
268 cp (ix+o.out_idx) ;14
272 ld (ix+o.in_idx),a ;15
273 jp pe,ms.ol ; 6/9 -- 126
281 ;--------------------------------------------------------------
298 ld c,(ix+o.in_idx) ;14
309 cp (ix+o.out_idx) ;14
315 ld (ix+o.in_idx),c ;15
316 djnz ms.ol ; 7/9 -- 130
327 ;--------------------------------------------------------------
341 db buf_end - $ - 1 ;output string length
342 db 0AEh ; message start token
343 db buf_end - $ - 1 ; message length
350 ;----------------------------------------------------------------------
352 ;----------------------------------------------------------------------
353 ; Send message MEMORY
355 ; hl: pointer to message (netto)