more code
[bz80asm.git] / output.zas
blob8e10b847f768a26fd51562b7fc46136c837983c4
1 WIDTH: defb  30  ;PRINT WIDTH
4 ; A: code
5 ; should preserve registers (except A and F)
6 OSWRCH:
7   rst   #10
8   ret
10 ;OUT - SEND CHARACTER OR KEYWORD
11 ;   Inputs: A = character (>=10, <128)
12 ;           A = Token (<10, >=128)
13 ;  Destroys: A,F
15 EMIT:
16   cp    10
17   ret   z
18   push  af
19   call  OSWRCH
20   pop   af
21   cp    13
22   ld    a,0
23   jr    z,.cr
24   ld    a,(COUNT)
25   inc   a
26 .cr:
27   ld    (COUNT),a
28   ret
30 CRLF:
31   ld    a,13
32   call  EMIT
33   ret
36 ; A: position to move to
37 ; if current output is further than that, go to the new line
38 ; should preserve registers (except A and F)
39 TABIT:
40   ld      hl,COUNT
41   cp      (hl)
42   ret     z
43   push    af
44   call    c,CRLF
45   pop     af
46   sub     (hl)
47 FILL:
48   or      a
49   ret     z
50   push    bc
51   ld      b,a
52 FILL1:
53   ld      a,' '
54   call    EMIT
55   djnz    FILL1
56   pop     bc
57   xor     a
58   ret