1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; 8x8 font printing engine
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
7 $FORTH_CONST EMIT-8X8? 1
15 emit8_udg_addr defw #D000
16 $FORTH_CONST (UDG) emit8_udg_addr
26 emit8_do_scroll_subr equ emit6_do_scroll_subr
29 call #0DFE ;; CL-SC-ALL
30 ; set attribute for the lower part
31 ld hl,scrattr8x8(0,23)
32 ld de,scrattr8x8(1,23)
41 ;; expand to block char pattern
42 fword_xemit8_expand_a:
55 $FORTH_CODE_WORD XEMIT8
74 call emit6_do_scroll_subr
98 jr z,fword_xemit8_normal
103 jr c,fword_xemit8_block
110 ld de,(emit8_udg_addr)
113 jr fword_xemit8_dodraw
119 call fword_xemit8_expand_a
128 call fword_xemit8_expand_a
134 jr fword_xemit8_putattr
143 ; DE: screen$ address
154 jr nz,fword_xemit8_loop
155 fword_xemit8_putattr:
158 ; conver to attribute
169 $FORTH_END_CODE_WORD XEMIT8
171 $FORTH_CODE_WORD EMIT8
195 call emit6_do_scroll_subr
198 $FORTH_END_CODE_WORD EMIT8
206 $FORTH_END_CODE_WORD CR8
208 $FORTH_CODE_WORD SPACE8
214 $FORTH_END_CODE_WORD SPACE8
219 DUP 1- 0< 0BRANCH fword_spaces8_ok
225 (LOOP) fword_spaces8_loop
227 $FORTH_END_WORD SPACES8
232 dup 0 > 0BRANCH fword_type8_1
242 $FORTH_END_WORD TYPE8
247 dup 0 > 0BRANCH fword_xtype8_1
251 (LOOP) fword_xtype8_0
252 BRANCH fword_xtype8_2
257 $FORTH_END_WORD XTYPE8
267 $FORTH_END_CODE_WORD AT8
273 (KEY-SHOW-CURSOR) 0C!
275 SWAP (KEY-SHOW-CURSOR) C!
279 $FORTH_WORD (.8") ;;"
282 R> COUNT 2DUP TYPE8 + >R ;S
283 $FORTH_END_WORD (.8") ;;"
285 $FORTH_WORD .8" IMM ;;"
288 LIT 34 STATE @ 0BRANCH fword_qs8_0
295 $FORTH_END_WORD .8" ;;"
300 >R SWAP OVER DABS <# #S SIGN #> R> OVER - SPACES8 TYPE8 ;S
335 $FORTH_CONST EMIT-8X8? 0