1 ; Disassembled ddtz.com, version "DDT/Z [8101]"
2 ; with modified relocater.
5 ; - Assemble to a .REL file with M80 or a compatible assembler.
6 ; - Use Digital Research Link-80 to generate a .PRL file (op switch).
7 ; - Cut the .PRL header (first 256 byte) end rename the result to DDTZ.COM.
12 ; Some greneral definitions
26 ; ddtz specific definitions
28 STACK_SIZE equ 80 ;ddtz internal stack
29 CONBUF_SIZE equ 80 ;Size of console input buffer
30 BP_CNT equ 12 ;Number of breakpoints
31 BP_SIZE equ 4 ;Size of a breakpoint record
33 bitmap_size equ (prog_size+7)/8
35 ;-------------------------------------------------------------------------------
43 rst 30h ;rst used by ddtz
44 di_or_ei: ;ints enabled/disabled while ddtz is running
48 ;-------------------------------------------------------------------------------
57 ;-------------------------------------------------------------------------------
63 ld b,8 ;reload bit counter
64 ld e,(hl) ;get next 8 relocation bits
71 ;-------------------------------------------------------------------------------
82 ; Determine current position
90 ld sp,028h ;rst instr needs a minimal stack
91 ld hl,0e9e1h ;opcpdes pop hl/jp (hl)
97 ld de,-(wearehere-ddtz_base)
100 ld de,ddtz_base ; de:
103 ex de,hl ; de: reloc offset
113 ld hl,ddtz_end ;start of reloc bitmap
118 ld b,1 ;init bit counter b
122 add hl,de ;--> ddtz_base
170 ;-------------------------------------------------------------------------------
178 ld hl,(1) ;wboot addr
195 daa ; Z80: 099H, x180+: 0F9H
196 cp 99h ; Result on 180 type cpus is F9 here. Thanks Hitachi
206 ; .printx Error: Not yet implemented!
238 ;-------------------------------------------------------------------------------
243 const: jp 0 ; return console input status
244 conin: jp 0 ; return console input character
245 conout: jp 0 ; send console output character
255 ;-------------------------------------------------------------------------------
265 ; character input status
266 const: ; return a != 0 if character waiting
274 conin: ; return a = input char
282 conout: ; c = output char
289 ;-------------------------------------------------------------------------------
297 ld a,max_device ; use null device if a >= max$device
306 ;-------------------------------------------------------------------------------
320 ;-------------------------------------------------------------------------------
322 ; TC = (f PHI /(2*baudrate*Clock_mode)) - 2
324 ; TC = (f PHI / (32 * baudrate)) - 2
326 ; Init Serial I/O for console input and output (ASCI1)
342 ld a,M_RE + M_TE + M_MOD2 ;Rx/Tx enable
345 out0 (stat1),a ;Enable rx interrupts
351 db 1,stat0,0 ;Disable rx/tx interrupts
352 ;Enable baud rate generator
353 db 1,asext0,M_BRGMOD+M_DCD0DIS+M_CTS0DIS
354 db 2,astc0l,low 28, high 28
355 db 1,cntlb0,M_MPBT ;No MP Mode, X16
356 db 1,cntla0,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
360 db 1,stat1,0 ;Disable rx/tx ints, disable CTS1
361 db 1,asext1,M_BRGMOD ;Enable baud rate generator
362 db 2,astc1l,low 3, high 3
363 db 1,cntlb1,M_MPBT ;No MP Mode, X16
364 db 1,cntla1,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
367 ;-------------------------------------------------------------------------------
386 ;-------------------------------------------------------------------------------
430 ;-------------------------------------------------------------------------------
481 inc a ;ff..02 --> 00..03
495 and M_CSIO_TE+M_CSIO_RE
501 ;-------------------------------------------------------------------------------
504 ; dw ERROR ;cmd_@ ;examine/substitute the displacement register @
505 ; dw ERROR ;cmd_A ;Assemble
506 dw cmd_B ;Breakpoints display/set/clear
507 dw ERROR ;cmd_C ;trace over Calls
508 dw cmd_D ;Display memory in hex and ascii
509 dw cmd_E ;rElocate debugger
510 dw ERROR ;cmd_F ;specify Filename and command line
512 dw cmd_H ;compute Hex and other expressions
513 dw cmd_I ;Input a byte from port
516 dw cmd_L ;List disassembled code
517 dw cmd_M ;Move memory [and verify]
519 dw cmd_O ;Output a byte to port
521 dw cmd_Q ;Qery memory for byte string
522 dw cmd_R ;Read binary or hex file
523 dw cmd_S ;Substitute memory
526 dw cmd_V ;Verify (compare) two memory areas
527 dw ERROR ;cmd_W ;Write a file to disk
528 dw cmd_X ;eXamine [and substitute] registers
529 dw ERROR ;cmd_Y ;examine [and substitute] Y variables
530 dw cmd_Z ;Zap (fill) memory with a byte string
539 call bp_clr_temporary
569 ;-------------------------------------------------------------------------------
588 defb 03eh ;ld a,.. swallow push hl
721 ;-------------------------------------------------------------------------------
728 ;-------------------------------------------------------------------------------
747 ;-------------------------------------------------------------------------------
771 ;-------------------------------------------------------------------------------
783 jr z,inl_e ;Accept line
785 jr z,inl_e ;Accept line
792 call DELC ;Delete Char
797 call DELL ;Delete Line
807 ld a,'^' ;Controll characters
824 ;-------------------------------------------------------------------------------
837 ;-------------------------------------------------------------------------------
848 ;-------------------------------------------------------------------------------
864 ;-------------------------------------------------------------------------------
871 ld de,stack-(STACK_SIZE-28)
878 ;-------------------------------------------------------------------------------
895 ;-------------------------------------------------------------------------------
975 get_arg_range_target:
1014 defb 0e6h ;and a,.. clear carry
1026 defb 03eh ;ld a,.. swallow pop af
1068 jr z,error0 ;'S', but no expression following
1072 ;-------------------------------------------------------------------------------
1155 ; de: x (x shifted out, q shifted in)
1157 ; hl: r (initially 0)
1231 ;-------------------------------------------------------------------------------
1271 jr z,fact_factstring
1276 ;-------------------------------------------------------------------------------
1363 ;-------------------------------------------------------------------------------
1471 ;-------------------------------------------------------------------------------
1515 ld hl,t_flag_names+7
1610 ;-------------------------------------------------------------------------------
1612 ; relocate debugger to addr
1614 ; relocate just below addr
1616 ; Move debugger to given address and restart.
1617 ; New location must not overlap with current location.
1640 ld ix,cmde_clr-ddtz_base
1643 ld hl,ddtz_base ;hl = src
1648 call c,neg.hl ;abs(distance)
1660 ;-------------------------------------------------------------------------------
1661 ; > G [startaddr] [;breakp..]
1662 ; Go [to start] [with temporary breakpoints]
1666 ld (bp_p_cpu_flag),a
1681 ;-------------------------------------------------------------------------------
1687 ld (pbl_loop_adr),hl
1700 ld hl,(pbl_loop_adr)
1714 ;-------------------------------------------------------------------------------
1716 ; display all breakpoints
1717 ; > B breakp [breakp..]
1720 ; clear all breakpoints
1721 ; > BX breakp [breakp..]
1724 ; breakp can be any valid expression
1784 ;-------------------------------------------------------------------------------
1785 ; Add break points to list
1786 ; A = 1 Permanent (B command)
1787 ; A = 2 Temporary (G command)
1804 call bp_get_freeslot
1826 ;-------------------------------------------------------------------------------
1827 ; Breakpoint handling routine.
1861 call inchar ;Keyboard hit?
1869 call bp_clr_temporary
1882 ld (bp_p_cpu_flag),a
1939 call bp_get_freeslot
1978 ;-------------------------------------------------------------------------------
1983 ld a,(bp_p_cpu_flag)
2013 ;-------------------------------------------------------------------------------
2015 ; examine all Y variables
2017 ; examine (and substitute) an Y variable
2020 ;-------------------------------------------------------------------------------
2022 ; eXamine (display) all cpu registers and
2023 ; the instruction at the current program counter
2025 ; eXamine (and substitute) a register
2234 ;-------------------------------------------------------------------------------
2240 call get_lastarg_def
2274 ;-------------------------------------------------------------------------------
2276 ; examine (substitute) displacement register @
2280 ;-------------------------------------------------------------------------------
2282 ; Input a byte from port
2287 call get_lastarg_def
2299 ;-------------------------------------------------------------------------------
2301 ; Output a byte to a port
2312 call get_lastarg_def
2320 ;-------------------------------------------------------------------------------
2321 ; > V startaddr endaddr targetaddr
2322 ; Verify (compare) two memory areas
2325 call get_arg_range_target
2352 ;-------------------------------------------------------------------------------
2353 ; > M startaddr endaddr destaddr
2357 call get_arg_range_target
2372 ;-------------------------------------------------------------------------------
2374 ; display Highest load address of last filed loaded, Maximum "High"
2375 ; off all loaded files, and Top address of available memory
2377 ; evaluate expression and display result in hex, decimal and other formats
2397 ;-------------------------------------------------------------------------------
2398 ; > Q[J] startaddr endaddr bytes
2399 ; Query memory for a byte string [Justified]
2439 ;-------------------------------------------------------------------------------
2440 ; > Z startaddr endaddr bytes
2441 ; Zap (fill) memory with a byte string
2475 sub_0ef7h: ;from cmd_Q, cmd_Z
2476 db 0e6h ;and 037h (clear carry)
2477 sub_0ef8h: ;from cmd_S
2525 ;-------------------------------------------------------------------------------
2526 ; >>D [startaddr] [endaddr]
2527 ; Display memory in hex and ASCII
2595 ;-------------------------------------------------------------------------------
2597 ; specifiy filenames and command line
2601 ;-------------------------------------------------------------------------------
2602 ; > R [displacement]
2603 ; Read Intel Hex File from console [add displacement]
2607 call get_lastarg_def ;get offset from command line
2616 ld c,0 ;init checksum
2617 call i.gethexbyte ;record len
2619 call i.gethexbyte ;address high
2621 call i.gethexbyte ;address low
2623 call i.gethexbyte ;record type (ignored)
2625 and a ;record len == 0?
2636 djnz l16c6h ;repeat for record len
2637 call i.gethexbyte ;checksum
2640 jr nz,error2 ;exit if checksum error
2641 jr w_recstart ;next record
2679 ld de,ddtz_base ;don't load over ddtz
2699 ld (hl),a ;store byte
2702 ;-------------------------------------------------------------------------------
2721 ;-------------------------------------------------------------------------------
2722 ; > Wstartaddr endaddr
2723 ; Write a file to disk
2727 ;-------------------------------------------------------------------------------
2729 ; Assemble Zilog Z180 mnemonics
2733 ;-------------------------------------------------------------------------------
2734 ; >>L [startaddr] [endaddr]
2735 ; List disassembled code
2769 ;-------------------------------------------------------------------------------
2788 ;-------------------------------------------------------------------------------
2791 call disas_get_instrlen
2797 call pstr ;print mnemonic
2799 call pr_instr_args ;print arguments
2813 ld (isprefix_ixiy),a
2832 ld (isprefix_ixiy),a
2843 ;-------------------------------------------------------------------------------
2846 ld hl,b_1b54_start ;2 byte opcodes
2850 ld hl,b_1ab6_start ;1 byte opcodes (no parameters)
2854 ld hl,b_1ad1_start ;1 byte opcodes
2858 ld hl,b_1b9b_start ;3 byte opcodes
2863 ;-------------------------------------------------------------------------------
2876 ld hl,b_1bc9_start ;1 byte opcode, no arguments
2902 ;-------------------------------------------------------------------------------
2907 ld a,(isprefix_ixiy)
2918 ;-------------------------------------------------------------------------------
2946 ;-------------------------------------------------------------------------------
2947 ; DD/FD 3 byte (ix+d)/(iy+d)
2994 ;-------------------------------------------------------------------------------
3021 call lookup_branch_op
3047 lookup_branch_op ;TODO
3067 ;-------------------------------------------------------------------------------
3068 ; 1 byte opcodes (no parameters)
3069 ; Format: db opcode, t_MNEMONICS-index
3071 db 076h,i_HALT ;halt
3076 ; db 007h,i_RLCA ;rlca
3077 ; db 00fh,i_RRCA ;rrca
3078 ; db 017h,i_RLA ;rla
3079 ; db 01fh,i_RRA ;rra
3080 ; db 027h,i_DAA ;daa
3081 ; db 02fh,i_CPL ;cpl
3082 ; db 037h,i_SCF ;scf
3083 ; db 03fh,i_CCF ;ccf
3089 ; Format: db mask, match, t_MNEMONICS-index
3090 ; dw argument formating function
3092 db 0c0h,040h,i_LD ;ld r[y],r[z]
3095 db 0c0h,080h,i_ADD+080h ;add a,r[z]
3098 ; db 0f8h,080h,i_ADD ;add a,r[z]
3100 ; db 0f8h,088h,i_ADC ;adc a,r[z]
3102 ; db 0f8h,090h,i_SUB ;sub r[z]
3104 ; db 0f8h,098h,i_SBC ;sbc a,r[z]
3106 ; db 0f8h,0a0h,i_AND ;and r[z]
3108 ; db 0f8h,0a8h,i_XOR ;xor r[z]
3110 ; db 0f8h,0b0h,i_OR ;or r[z]
3112 ; db 0f8h,0b8h,i_CP ;cp r[z]
3115 db 0c7h,0c0h,i_RET ;ret cc
3117 db 0c7h,0c7h,i_RST ;rst
3119 db 0cfh,0c1h,i_POP ;pop rp2
3121 db 0cfh,0c5h,i_PUSH ;push rp2
3123 db 0ffh,0e3h,i_EX ;ex (sp),hl
3125 db 0ffh,0e9h,i_JP ;jp (hl)
3127 db 0ffh,0ebh,i_EX ;ex de,hl
3129 db 0ffh,0f9h,i_LD ;ld sp,hl
3131 db 0cfh,003h,i_INC ;inc rp
3133 db 0cfh,00bh,i_DEC ;dec rp
3135 db 0c7h,004h,i_INC ;inc r[y]
3137 db 0c7h,005h,i_DEC ;dec r[y]
3139 db 0ffh,008h,i_EX ;ex af,af'
3141 db 0cfh,009h,i_ADD ;add hl,rp
3143 db 0efh,002h,i_LD ;ld (rp),a ;rp=bc,de
3145 db 0efh,00ah,i_LD ;ld a,(rp) ;rp=bc,de
3148 db 0c7h,007h,i_RLCA+080h;rlca
3155 db 0c7h,006h,i_LD ;ld r[y],nn
3158 db 0c7h,0c6h,i_ADD+080h ;add a,r[z]
3161 ; db 0ffh,0c6h,i_ADD ;add a,nn
3163 ; db 0ffh,0ceh,i_ADC ;adc a,nn
3165 ; db 0ffh,0d6h,i_SUB ;sub nn
3167 ; db 0ffh,0deh,i_SBC ;sbc a,nn
3169 ; db 0ffh,0e6h,i_AND ;and nn
3171 ; db 0ffh,0eeh,i_XOR ;xor nn
3173 ; db 0ffh,0f6h,i_OR ;or nn
3175 ; db 0ffh,0feh,i_CP ;cp nn
3178 db 0ffh,010h,i_DJNZ ;djnz
3180 db 0ffh,018h,i_JR ;jr
3182 db 0e7h,020h,i_JR ;jr cc,
3184 db 0ffh,0d3h,i_OUT ;out (nn),a
3186 db 0ffh,0dbh,i_IN ;in a,(nn)
3192 db 0c7h,0c2h,i_JP ;jp cc,mn
3194 db 0c7h,0c4h,i_CALL ;call cc,mn
3196 db 0cfh,001h,i_LD ;ld ww,mn
3198 db 0ffh,0c3h,i_JP ;jp mn
3200 db 0ffh,0cdh,i_CALL ;call mn
3202 db 0ffh,022h,i_LD ;ld (mn),hl
3204 db 0ffh,02ah,i_LD ;ld hl,(mn)
3206 db 0ffh,032h,i_LD ;ld (mn),a
3208 db 0ffh,03ah,i_LD ;ld a,(mn)
3212 ; Prefix ED + 1 byte opcode, no arguments
3213 ; Format: opcode, t_MNEMONICS index
3216 db 045h,i_RETN ;retn
3217 db 04dh,i_RETI ;reti
3220 ; db 0a0h,i_LDI ;ldi
3221 ; db 0a1h,i_CPI ;cpi
3222 ; db 0a2h,i_INI ;ini
3223 ; db 0a3h,i_OUTI ;outi
3224 ; db 0a8h,i_LDD ;ldd
3225 ; db 0a9h,i_CPD ;cpd
3226 ; db 0aah,i_IND ;ind
3227 ; db 0abh,i_OUTD ;outd
3228 ; db 0b0h,i_LDIR ;ldir
3229 ; db 0b1h,i_CPIR ;cpir
3230 ; db 0b2h,i_INIR ;inir
3231 ; db 0b3h,i_OTIR ;otir
3232 ; db 0b8h,i_LDDR ;lddr
3233 ; db 0b9h,i_CPDR ;cpdr
3234 ; db 0bah,i_INDR ;indr
3235 ; db 0bbh,i_OTDR ;otdr
3236 db 08bh,i_OTDM ;otdm
3237 db 09bh,i_OTDMR ;otdmr
3238 db 083h,i_OTIM ;otim
3239 db 093h,i_OTIMR ;otimr
3246 db 0ffh,070h,i_IN ;in (c) ;
3248 db 0c7h,040h,i_IN ;in r,(c) ;r=b,c,d,e,h,l,a
3250 db 0ffh,071h,0ffh ;out (c),0 ;
3252 db 0c7h,041h,i_OUT ;out (c),r ;r=b,c,d,e,h,l,a
3254 db 0cfh,042h,i_SBC ;sbc hl,rp
3256 db 0cfh,04ah,i_ADC ;adc hl,rp
3258 db 0ffh,046h,i_IM ;im 0
3260 db 0ffh,056h,i_IM ;im 1
3262 db 0ffh,05eh,i_IM ;im 2
3264 db 0e7h,047h,i_LD ;ld i,a ... ld a,r
3266 db 0cfh,04ch,i_MLT ;mlt rr
3268 db 0c7h,004h,i_TST ;tst r
3273 db 0ffh,030h,i_IN0 ;in0 (m)
3275 db 0c7h,000h,i_IN0 ;in0 r,(m) ;r=b,c,d,e,h,l,a
3277 db 0ffh,031h,0ffh ;out0 (m),0
3279 db 0c7h,001h,i_OUT0 ;out0 (m),r ;r=b,c,d,e
3281 db 0ffh,064h,i_TST ;tst m
3283 db 0ffh,074h,i_TSTIO ;tstio m
3287 ; Prefix ED + 1 byte opcode + 2 byte address
3288 ; Format: db mask, match, t_MNEMONICS-index
3289 ; dw argument formating function
3291 db 0cfh,043h,i_LD ;ld (mn),ww ;ww=bc,de,hl,sp
3293 db 0cfh,04bh,i_LD ;ld ww,(mn) ;ww=bc,de,hl,sp
3299 db 0c0h,000h,i_RLC+080h ;rlc g
3302 ; db 0f8h,000h,i_RLC ;rlc g
3304 ; db 0f8h,008h,i_RRC ;rrc g
3306 ; db 0f8h,010h,i_RL ;rl g
3308 ; db 0f8h,018h,i_RR ;rr g
3310 ; db 0f8h,020h,i_SLA ;sla g
3312 ; db 0f8h,028h,i_SRA ;sra g
3314 ; db 0f8h,038h,i_SRL ;srl g
3316 db 0c0h,040h,i_BIT ;bit b,g
3318 db 0c0h,080h,i_RES ;res b,g
3320 db 0c0h,0c0h,i_SET ;set b,g
3324 ;-------------------------------------------------------------------------------
3325 ;-------------------------------------------------------------------------------
3333 ld a,(hl) ;get next token
3338 call outchar ;print as normal character
3356 ; http://www.z80.info/decoding.htm
3358 ; | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
3366 db fi_ry,',' ;ld r[y],r[z]
3370 ; db 'A,',fi_rz,0 ;op A,r[z]
3372 db fi_ccy,0 ;op cc[y]
3374 db fi_rst,0 ;rst y*8
3377 a_esphl equ $-t_argf
3378 db '(SP),',fi_hlixiy,0 ;ex (sp),hl
3380 db '(',fi_hlixiy,')',0 ;jp (hl)
3383 a_lsphl equ $-t_argf
3384 db 'SP,',fi_hlixiy,0 ;ld SP,HL
3386 db 'AF,AF''',0 ;ex af,af'
3388 db fi_hlixiy,',' ;add hl,rp
3392 db '(',fi_rp,'),A',0 ;ld (rp),a ;rp=bc,de
3394 db 'A,(',fi_rp,')',0 ;ld a,(rp) ;rp=bc,de
3398 db fi_ry,',',fi_n,0 ;ld r[y],n
3404 db fi_ccy2,',' ;jr cc,j ;cc = nz,z,nc,c
3408 db '(',fi_n,'),A',0 ;out (n),a
3410 db 'A,(',fi_n,')',0 ;in a,(n)
3414 db fi_ccy,',',fi_nn,0 ;op cc[y],nn
3416 db fi_rp,',' ;ld rp[p],nn
3420 db '(',fi_nn,'),',fi_hlixiy,0 ;ld (nn),hl
3422 db fi_hlixiy,',(',fi_nn,')',0 ;ld hl,(nn)
3424 db '(',fi_nn,'),A',0 ;ld (nn),a
3426 db 'A,(',fi_nn,')',0 ;ld a,(nn)
3428 ; Prefix ED + 1 byte opcode
3430 db fi_ry,',' ;in r[y],(c)
3434 db '(C),' ;out (c),r[y]
3436 db fi_ry,0 ;inc r[y]
3444 db fi_ir,0 ;ld a,i ... r,a
3446 ; Prefix ED + 2 byte (opcode + immediate)
3448 db fi_ry,',' ;in0 r[y],(n)
3450 db '(',fi_n,')',0 ;in0 (n)
3452 db '(',fi_n,'),',fi_ry,0 ;out0 (n),r[y]
3454 ; Prefix ED + 3 byte (opcode + address)
3456 db '(',fi_nn,'),',fi_rp,0 ;ld (nn),rp
3458 db fi_rp,',(',fi_nn,')',0 ;ld rp,(nn)
3460 ; Prefix CB + 1 byte opcode
3462 db fi_y,',' ;op y,r[z]
3464 db fi_rz_cb,0 ;op r[z]
3465 a_noarg equ $-t_argf
3469 ;-------------------------------------------------------------------------------
3474 fi_&x equ 80h+argpf_index
3476 argpf_index defl argpf_index+1
3497 ld a,(isprefix_ixiy)
3539 ld a,(isprefix_ixiy)
3568 ld a,(isprefix_ixiy)
3592 db 0ddh ;swallow t_arg_rp in ix
3603 ld a,(isprefix_ixiy)
3638 ;-------------------------------------------------------------------------------
3643 ;o_&x equ $-opc_tabstart
3645 opc_index defl opc_index+1
3649 ;opc_tabstart defl $
3712 ; Block instructions
3794 ;-------------------------------------------------------------------------------
3804 ld hl,l20edh ;set break after BDOS call
3807 call disas_get_instrlen
3816 call lookup_branch_op
3822 call c,bp_trace_enter
3827 ;-------------------------------------------------------------------------------
3830 db 0ffh,0ddh ;Prefix DD
3832 db 0ffh,0fdh ;Prefix FD
3834 db 0ffh,0edh ;Prefix ED
3837 db 0ffh,0cdh ;call mn
3849 db 0c7h,0c4h ;call cc,mn
3851 db 0f7h,010h ;djnz d; jr d
3853 db 0e7h,020h ;jr cc,d
3855 db 0c7h,0c2h ;jp cc,mn
3857 db 0c7h,0c0h ;ret cc
3861 ;-------------------------------------------------------------------------------
3862 ; call mn call cc,mn
3900 cp 0e9h ; jp (ix); jp (iy)
3934 ld hl,(reg_sp) ;break on return address
3958 ;-------------------------------------------------------------------------------
3960 ; >>C[N][J] W expression
3961 ; >>C[N][J] U expression
3962 ; trace over Calls [No list] [Jumps only] /.While./.Until.
3965 ;-------------------------------------------------------------------------------
3967 ; >>T[N][J] W expression
3968 ; >>T[N][J] U expression
3969 ; Trace [no List] [Jumps only] / .While. / .Until.
3973 ld hl,1 ;default: 1 step
3974 call get_lastarg_def
3975 ld (trace_cnt_or_ptr),hl
3977 ld (bp_p_cpu_flag),a
3982 call bp_clr_temporary
3983 ld hl,(trace_cnt_or_ptr)
3985 ld (trace_cnt_or_ptr),hl
3993 ld (bp_p_cpu_flag),a
3997 ;-------------------------------------------------------------------------------
4002 ;-------------------------------------------------------------------------------
4019 ;-------------------------------------------------------------------------------
4051 ;-------------------------------------------------------------------------------
4056 ;-------------------------------------------------------------------------------
4058 rept (STACK_SIZE+3)/4
4059 db 0deh,0adh,0beh,0efh
4090 ;-------------------------------------------------------------------------------
4092 ddtz_size equ $-ddtz_base
4093 prog_size equ $-start
4096 ;-------------------------------------------------------------------------------