11 $printf "label manager size: %d", csizeend-csizestart
16 $printf "ouput system size: %d", csizeend-csizestart
19 ;include "output_driver_std.zas"
20 include "output_driver_4x8.zas"
22 $printf "printing driver size: %d", csizeend-csizestart
24 ; so they won't clutter symbol table
37 ld (BZ80ASM.EXPR_ERROR_CB),hl
39 ld hl,expr_error_jrfar_cb
40 ld (BZ80ASM.ASM_JR_TOO_FAR_CB),hl
42 ld hl,LABMAN_FIND_LABEL
43 ld (BZ80ASM.GETLABEL_CB),hl
56 ; print line to assemble
75 push ix ; save code destination
76 push iy ; we'll need it for listing
81 ; DE is code length here
82 pop bc ; text starting position
83 pop hl ; code starting position
86 ; check for line terminator
87 ; actually, anything except ':' is line terminator here
88 ; 0 terminates the whole buffer
104 ; check for buffer termination again
112 call LABMAN_ADVANCE_PASS
114 jr c,asm_another_pass
121 ld (DISZ80.EMIT_CB),hl
127 ; HL: address to disasm
147 msg_disasm: defm 13,13,"--------",13,"DISASSEMBLY",13,"--------",13+#80
151 call LABMAN_DEFINE_LABEL
152 jr c,bad_label_name_error
154 ; if terminator, don't try to assemble more
160 jr list_and_error_no_label_check
163 bad_label_name_error:
164 ld a,BZ80ASM.EXPR_ERR_INVALID_LABEL_NAME
165 jp BZ80ASM.PARSE_EXPR_ERROR_A
169 ld a,(BZ80ASM.ASM_BAD_B)
173 list_and_error_no_label_check:
177 pop hl ; current position in text buffer
178 pop de ; initial position
183 ; de: print from here
218 errline: defx "---------"
222 defm "or c:inc a ; comment",13
225 defm "label cp 69",13
226 defm "call 0BEEFh",13
229 defm "djnz label3",13
233 defm "ld e,427%10",13
234 defm "ld bc,2+3*5",13
235 defm "ld bc,0+(2+3)*5",13
236 defm "ld bc,[2+3]*5",13
237 defm "ld bc,(2+3)*5",13
238 defm "label3 ld hl,16384",13
239 defm "ld hl,#4001",13
240 defm "ld a,(ix-2)",13
242 defm "ld de,$1234",13
243 defm "ld bc,0x5b02",13
244 defm "ld a,0b1001",13
246 defm "ld ix,-1234",13
247 defm "ld iy,-0x602a",13
251 defm "defb 7&$c,1|2,1|(3^1),1<<15",13
253 defm "defm '012','34'",13
259 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
262 ;; extracted from assembler code, because we don't need it there
265 ;; IY: current position in text buffer
266 ;; IX: current position in code buffer
267 ;; BC: starting position in text buffer
268 ;; HL: starting position in code buffer
274 ;COUNT: defb 0 ;PRINT POSITION
278 ret z ; no code -- nothing to do
285 ; calculate original PC
297 ; print code bytes (if there are any)
302 ; do not print code if more than 4 bytes (long strings and dbs)
305 ; do not print code if more than 4 bytes (long strings and dbs)
335 ; print source line, from BC to IY (exclusive)
336 ; calculate string length
362 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
364 ;; print byte in hex with the trailing space
372 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
394 LABMAN_FIRST_LABEL: defw $+2