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 ;-------------------------------------------------------------------------------
68 ; Determine current position
76 ld sp,028h ;rst instr needs a minimal stack
77 ld hl,0e9e1h ;opcpdes pop hl/jp (hl)
83 ld de,-(wearehere-ddtz_base)
89 ex de,hl ; de: reloc offset
99 ld hl,ddtz_end ;start of reloc bitmap
105 ld bc,0108h ;init bit counter b (c==reload val)
109 add hl,de ;--> ddtz_base
114 ld b,c ;reload bit counter
115 LD e,(HL) ;get next 8 relocation bits
136 ;-------------------------------------------------------------------------------
144 ld hl,(1) ;wboot addr
161 daa ; Z80: 099H, x180+: 0F9H
162 cp 99h ; Result on 180 type cpus is F9 here. Thanks Hitachi
172 ; .printx Error: Not yet implemented!
184 ld de,prog_size+bitmap_size-1
204 ;-------------------------------------------------------------------------------
209 const: jp 0 ; return console input status
210 conin: jp 0 ; return console input character
211 conout: jp 0 ; send console output character
221 ;-------------------------------------------------------------------------------
231 ; character input status
232 const: ; return a != 0 if character waiting
240 conin: ; return a = input char
248 conout: ; c = output char
255 ;-------------------------------------------------------------------------------
263 ld a,max_device ; use null device if a >= max$device
272 ;-------------------------------------------------------------------------------
286 ;-------------------------------------------------------------------------------
288 ; TC = (f PHI /(2*baudrate*Clock_mode)) - 2
290 ; TC = (f PHI / (32 * baudrate)) - 2
292 ; Init Serial I/O for console input and output (ASCI1)
308 ld a,M_RE + M_TE + M_MOD2 ;Rx/Tx enable
311 out0 (stat1),a ;Enable rx interrupts
317 db 1,stat0,0 ;Disable rx/tx interrupts
318 ;Enable baud rate generator
319 db 1,asext0,M_BRGMOD+M_DCD0DIS+M_CTS0DIS
320 db 2,astc0l,low 28, high 28
321 db 1,cntlb0,M_MPBT ;No MP Mode, X16
322 db 1,cntla0,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
326 db 1,stat1,0 ;Disable rx/tx ints, disable CTS1
327 db 1,asext1,M_BRGMOD ;Enable baud rate generator
328 db 2,astc1l,low 3, high 3
329 db 1,cntlb1,M_MPBT ;No MP Mode, X16
330 db 1,cntla1,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
333 ;-------------------------------------------------------------------------------
352 ;-------------------------------------------------------------------------------
396 ;-------------------------------------------------------------------------------
447 inc a ;ff..02 --> 00..03
461 and M_CSIO_TE+M_CSIO_RE
467 ;-------------------------------------------------------------------------------
470 ; dw ERROR ;cmd_@ ;examine/substitute the displacement register @
471 ; dw ERROR ;cmd_A ;Assemble
472 dw cmd_B ;Breakpoints display/set/clear
473 dw ERROR ;cmd_C ;trace over Calls
474 dw cmd_D ;Display memory in hex and ascii
475 dw cmd_E ;rElocate debugger
476 dw ERROR ;cmd_F ;specify Filename and command line
478 dw cmd_H ;compute Hex and other expressions
479 dw cmd_I ;Input a byte from port
482 dw cmd_L ;List disassembled code
483 dw cmd_M ;Move memory [and verify]
485 dw cmd_O ;Output a byte to port
487 dw cmd_Q ;Qery memory for byte string
488 dw cmd_R ;Read binary or hex file
489 dw cmd_S ;Substitute memory
492 dw cmd_V ;Verify (compare) two memory areas
493 dw ERROR ;cmd_W ;Write a file to disk
494 dw cmd_X ;eXamine [and substitute] registers
495 dw ERROR ;cmd_Y ;examine [and substitute] Y variables
496 dw cmd_Z ;Zap (fill) memory with a byte string
505 call bp_clr_temporary
535 ;-------------------------------------------------------------------------------
554 defb 03eh ;ld a,.. swallow push hl
687 ;-------------------------------------------------------------------------------
694 ;-------------------------------------------------------------------------------
713 ;-------------------------------------------------------------------------------
737 ;-------------------------------------------------------------------------------
749 jr z,inl_e ;Accept line
751 jr z,inl_e ;Accept line
758 call DELC ;Delete Char
763 call DELL ;Delete Line
773 ld a,'^' ;Controll characters
790 ;-------------------------------------------------------------------------------
803 ;-------------------------------------------------------------------------------
814 ;-------------------------------------------------------------------------------
830 ;-------------------------------------------------------------------------------
837 ld de,stack-(STACK_SIZE-28)
844 ;-------------------------------------------------------------------------------
861 ;-------------------------------------------------------------------------------
941 get_arg_range_target:
980 defb 0e6h ;and a,.. clear carry
992 defb 03eh ;ld a,.. swallow pop af
1034 jr z,error0 ;'S', but no expression following
1038 ;-------------------------------------------------------------------------------
1121 ; de: x (x shifted out, q shifted in)
1123 ; hl: r (initially 0)
1197 ;-------------------------------------------------------------------------------
1237 jr z,fact_factstring
1242 ;-------------------------------------------------------------------------------
1329 ;-------------------------------------------------------------------------------
1437 ;-------------------------------------------------------------------------------
1481 ld hl,t_flag_names+7
1576 ;-------------------------------------------------------------------------------
1578 ; relocate debugger to addr
1580 ; relocate just below addr
1582 ; Move debugger to given address and restart.
1583 ; New location must not overlap with current location.
1594 ld bc,prog_size+bitmap_size
1599 ld ix,cmde_clr-ddtz_base
1602 ld hl,ddtz_base ;hl = src
1607 call c,neg.hl ;abs(distance)
1619 ;-------------------------------------------------------------------------------
1620 ; > G [startaddr] [;breakp..]
1621 ; Go [to start] [with temporary breakpoints]
1625 ld (bp_p_cpu_flag),a
1640 ;-------------------------------------------------------------------------------
1646 ld (pbl_loop_adr),hl
1659 ld hl,(pbl_loop_adr)
1673 ;-------------------------------------------------------------------------------
1675 ; display all breakpoints
1676 ; > B breakp [breakp..]
1679 ; clear all breakpoints
1680 ; > BX breakp [breakp..]
1683 ; breakp can be any valid expression
1743 ;-------------------------------------------------------------------------------
1744 ; Add break points to list
1745 ; A = 1 Permanent (B command)
1746 ; A = 2 Temporary (G command)
1763 call bp_get_freeslot
1785 ;-------------------------------------------------------------------------------
1786 ; Breakpoint handling routine.
1820 call inchar ;Keyboard hit?
1828 call bp_clr_temporary
1841 ld (bp_p_cpu_flag),a
1898 call bp_get_freeslot
1937 ;-------------------------------------------------------------------------------
1942 ld a,(bp_p_cpu_flag)
1972 ;-------------------------------------------------------------------------------
1974 ; examine all Y variables
1976 ; examine (and substitute) an Y variable
1979 ;-------------------------------------------------------------------------------
1981 ; eXamine (display) all cpu registers and
1982 ; the instruction at the current program counter
1984 ; eXamine (and substitute) a register
2193 ;-------------------------------------------------------------------------------
2199 call get_lastarg_def
2233 ;-------------------------------------------------------------------------------
2235 ; examine (substitute) displacement register @
2239 ;-------------------------------------------------------------------------------
2241 ; Input a byte from port
2246 call get_lastarg_def
2258 ;-------------------------------------------------------------------------------
2260 ; Output a byte to a port
2271 call get_lastarg_def
2279 ;-------------------------------------------------------------------------------
2280 ; > V startaddr endaddr targetaddr
2281 ; Verify (compare) two memory areas
2284 call get_arg_range_target
2311 ;-------------------------------------------------------------------------------
2312 ; > M startaddr endaddr destaddr
2316 call get_arg_range_target
2331 ;-------------------------------------------------------------------------------
2333 ; display Highest load address of last filed loaded, Maximum "High"
2334 ; off all loaded files, and Top address of available memory
2336 ; evaluate expression and display result in hex, decimal and other formats
2356 ;-------------------------------------------------------------------------------
2357 ; > Q[J] startaddr endaddr bytes
2358 ; Query memory for a byte string [Justified]
2398 ;-------------------------------------------------------------------------------
2399 ; > Z startaddr endaddr bytes
2400 ; Zap (fill) memory with a byte string
2434 sub_0ef7h: ;from cmd_Q, cmd_Z
2435 db 0e6h ;and 037h (clear carry)
2436 sub_0ef8h: ;from cmd_S
2484 ;-------------------------------------------------------------------------------
2485 ; >>D [startaddr] [endaddr]
2486 ; Display memory in hex and ASCII
2554 ;-------------------------------------------------------------------------------
2556 ; specifiy filenames and command line
2560 ;-------------------------------------------------------------------------------
2561 ; > R [displacement]
2562 ; Read Intel Hex File from console [add displacement]
2566 call get_lastarg_def ;get offset from command line
2575 ld c,0 ;init checksum
2576 call i.gethexbyte ;record len
2578 call i.gethexbyte ;address high
2580 call i.gethexbyte ;address low
2582 call i.gethexbyte ;record type (ignored)
2584 and a ;record len == 0?
2595 djnz l16c6h ;repeat for record len
2596 call i.gethexbyte ;checksum
2599 jr nz,error2 ;exit if checksum error
2600 jr w_recstart ;next record
2638 ld de,TPA ;lowest allowed load address
2641 ld de,(BDOS+1) ;highest allowed load address
2656 ld (hl),a ;store byte
2659 ;-------------------------------------------------------------------------------
2678 ;-------------------------------------------------------------------------------
2679 ; > Wstartaddr endaddr
2680 ; Write a file to disk
2684 ;-------------------------------------------------------------------------------
2686 ; Assemble Zilog Z180 mnemonics
2690 ;-------------------------------------------------------------------------------
2691 ; >>L [startaddr] [endaddr]
2692 ; List disassembled code
2726 ;-------------------------------------------------------------------------------
2745 ;-------------------------------------------------------------------------------
2748 call disas_get_instrlen
2754 call pstr ;print mnemonic
2756 call pr_instr_args ;print arguments
2770 ld (isprefix_ixiy),a
2789 ld (isprefix_ixiy),a
2800 ;-------------------------------------------------------------------------------
2803 ld hl,b_1b54_start ;2 byte opcodes
2807 ld hl,b_1ab6_start ;1 byte opcodes (no parameters)
2811 ld hl,b_1ad1_start ;1 byte opcodes
2815 ld hl,b_1b9b_start ;3 byte opcodes
2820 ;-------------------------------------------------------------------------------
2833 ld hl,b_1bc9_start ;1 byte opcode, no arguments
2859 ;-------------------------------------------------------------------------------
2864 ld a,(isprefix_ixiy)
2875 ;-------------------------------------------------------------------------------
2903 ;-------------------------------------------------------------------------------
2904 ; DD/FD 3 byte (ix+d)/(iy+d)
2951 ;-------------------------------------------------------------------------------
2978 call lookup_branch_op
3004 lookup_branch_op ;TODO
3024 ;-------------------------------------------------------------------------------
3025 ; 1 byte opcodes (no parameters)
3026 ; Format: db opcode, t_MNEMONICS-index
3028 db 076h,i_HALT ;halt
3033 ; db 007h,i_RLCA ;rlca
3034 ; db 00fh,i_RRCA ;rrca
3035 ; db 017h,i_RLA ;rla
3036 ; db 01fh,i_RRA ;rra
3037 ; db 027h,i_DAA ;daa
3038 ; db 02fh,i_CPL ;cpl
3039 ; db 037h,i_SCF ;scf
3040 ; db 03fh,i_CCF ;ccf
3046 ; Format: db mask, match, t_MNEMONICS-index
3047 ; dw argument formating function
3049 db 0c0h,040h,i_LD ;ld r[y],r[z]
3052 db 0c0h,080h,i_ADD+080h ;add a,r[z]
3055 ; db 0f8h,080h,i_ADD ;add a,r[z]
3057 ; db 0f8h,088h,i_ADC ;adc a,r[z]
3059 ; db 0f8h,090h,i_SUB ;sub r[z]
3061 ; db 0f8h,098h,i_SBC ;sbc a,r[z]
3063 ; db 0f8h,0a0h,i_AND ;and r[z]
3065 ; db 0f8h,0a8h,i_XOR ;xor r[z]
3067 ; db 0f8h,0b0h,i_OR ;or r[z]
3069 ; db 0f8h,0b8h,i_CP ;cp r[z]
3072 db 0c7h,0c0h,i_RET ;ret cc
3074 db 0c7h,0c7h,i_RST ;rst
3076 db 0cfh,0c1h,i_POP ;pop rp2
3078 db 0cfh,0c5h,i_PUSH ;push rp2
3080 db 0ffh,0e3h,i_EX ;ex (sp),hl
3082 db 0ffh,0e9h,i_JP ;jp (hl)
3084 db 0ffh,0ebh,i_EX ;ex de,hl
3086 db 0ffh,0f9h,i_LD ;ld sp,hl
3088 db 0cfh,003h,i_INC ;inc rp
3090 db 0cfh,00bh,i_DEC ;dec rp
3092 db 0c7h,004h,i_INC ;inc r[y]
3094 db 0c7h,005h,i_DEC ;dec r[y]
3096 db 0ffh,008h,i_EX ;ex af,af'
3098 db 0cfh,009h,i_ADD ;add hl,rp
3100 db 0efh,002h,i_LD ;ld (rp),a ;rp=bc,de
3102 db 0efh,00ah,i_LD ;ld a,(rp) ;rp=bc,de
3105 db 0c7h,007h,i_RLCA+080h;rlca
3112 db 0c7h,006h,i_LD ;ld r[y],nn
3115 db 0c7h,0c6h,i_ADD+080h ;add a,r[z]
3118 ; db 0ffh,0c6h,i_ADD ;add a,nn
3120 ; db 0ffh,0ceh,i_ADC ;adc a,nn
3122 ; db 0ffh,0d6h,i_SUB ;sub nn
3124 ; db 0ffh,0deh,i_SBC ;sbc a,nn
3126 ; db 0ffh,0e6h,i_AND ;and nn
3128 ; db 0ffh,0eeh,i_XOR ;xor nn
3130 ; db 0ffh,0f6h,i_OR ;or nn
3132 ; db 0ffh,0feh,i_CP ;cp nn
3135 db 0ffh,010h,i_DJNZ ;djnz
3137 db 0ffh,018h,i_JR ;jr
3139 db 0e7h,020h,i_JR ;jr cc,
3141 db 0ffh,0d3h,i_OUT ;out (nn),a
3143 db 0ffh,0dbh,i_IN ;in a,(nn)
3149 db 0c7h,0c2h,i_JP ;jp cc,mn
3151 db 0c7h,0c4h,i_CALL ;call cc,mn
3153 db 0cfh,001h,i_LD ;ld ww,mn
3155 db 0ffh,0c3h,i_JP ;jp mn
3157 db 0ffh,0cdh,i_CALL ;call mn
3159 db 0ffh,022h,i_LD ;ld (mn),hl
3161 db 0ffh,02ah,i_LD ;ld hl,(mn)
3163 db 0ffh,032h,i_LD ;ld (mn),a
3165 db 0ffh,03ah,i_LD ;ld a,(mn)
3169 ; Prefix ED + 1 byte opcode, no arguments
3170 ; Format: opcode, t_MNEMONICS index
3173 db 045h,i_RETN ;retn
3174 db 04dh,i_RETI ;reti
3177 ; db 0a0h,i_LDI ;ldi
3178 ; db 0a1h,i_CPI ;cpi
3179 ; db 0a2h,i_INI ;ini
3180 ; db 0a3h,i_OUTI ;outi
3181 ; db 0a8h,i_LDD ;ldd
3182 ; db 0a9h,i_CPD ;cpd
3183 ; db 0aah,i_IND ;ind
3184 ; db 0abh,i_OUTD ;outd
3185 ; db 0b0h,i_LDIR ;ldir
3186 ; db 0b1h,i_CPIR ;cpir
3187 ; db 0b2h,i_INIR ;inir
3188 ; db 0b3h,i_OTIR ;otir
3189 ; db 0b8h,i_LDDR ;lddr
3190 ; db 0b9h,i_CPDR ;cpdr
3191 ; db 0bah,i_INDR ;indr
3192 ; db 0bbh,i_OTDR ;otdr
3193 db 08bh,i_OTDM ;otdm
3194 db 09bh,i_OTDMR ;otdmr
3195 db 083h,i_OTIM ;otim
3196 db 093h,i_OTIMR ;otimr
3203 db 0ffh,070h,i_IN ;in (c) ;
3205 db 0c7h,040h,i_IN ;in r,(c) ;r=b,c,d,e,h,l,a
3207 db 0ffh,071h,0ffh ;out (c),0 ;
3209 db 0c7h,041h,i_OUT ;out (c),r ;r=b,c,d,e,h,l,a
3211 db 0cfh,042h,i_SBC ;sbc hl,rp
3213 db 0cfh,04ah,i_ADC ;adc hl,rp
3215 db 0ffh,046h,i_IM ;im 0
3217 db 0ffh,056h,i_IM ;im 1
3219 db 0ffh,05eh,i_IM ;im 2
3221 db 0e7h,047h,i_LD ;ld i,a ... ld a,r
3223 db 0cfh,04ch,i_MLT ;mlt rr
3225 db 0c7h,004h,i_TST ;tst r
3230 db 0ffh,030h,i_IN0 ;in0 (m)
3232 db 0c7h,000h,i_IN0 ;in0 r,(m) ;r=b,c,d,e,h,l,a
3234 db 0ffh,031h,0ffh ;out0 (m),0
3236 db 0c7h,001h,i_OUT0 ;out0 (m),r ;r=b,c,d,e
3238 db 0ffh,064h,i_TST ;tst m
3240 db 0ffh,074h,i_TSTIO ;tstio m
3244 ; Prefix ED + 1 byte opcode + 2 byte address
3245 ; Format: db mask, match, t_MNEMONICS-index
3246 ; dw argument formating function
3248 db 0cfh,043h,i_LD ;ld (mn),ww ;ww=bc,de,hl,sp
3250 db 0cfh,04bh,i_LD ;ld ww,(mn) ;ww=bc,de,hl,sp
3256 db 0c0h,000h,i_RLC+080h ;rlc g
3259 ; db 0f8h,000h,i_RLC ;rlc g
3261 ; db 0f8h,008h,i_RRC ;rrc g
3263 ; db 0f8h,010h,i_RL ;rl g
3265 ; db 0f8h,018h,i_RR ;rr g
3267 ; db 0f8h,020h,i_SLA ;sla g
3269 ; db 0f8h,028h,i_SRA ;sra g
3271 ; db 0f8h,038h,i_SRL ;srl g
3273 db 0c0h,040h,i_BIT ;bit b,g
3275 db 0c0h,080h,i_RES ;res b,g
3277 db 0c0h,0c0h,i_SET ;set b,g
3281 ;-------------------------------------------------------------------------------
3282 ;-------------------------------------------------------------------------------
3290 ld a,(hl) ;get next token
3295 call outchar ;print as normal character
3313 ; http://www.z80.info/decoding.htm
3315 ; | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
3323 db fi_ry,',' ;ld r[y],r[z]
3327 ; db 'A,',fi_rz,0 ;op A,r[z]
3329 db fi_ccy,0 ;op cc[y]
3331 db fi_rst,0 ;rst y*8
3334 a_esphl equ $-t_argf
3335 db '(SP),',fi_hlixiy,0 ;ex (sp),hl
3337 db '(',fi_hlixiy,')',0 ;jp (hl)
3340 a_lsphl equ $-t_argf
3341 db 'SP,',fi_hlixiy,0 ;ld SP,HL
3343 db 'AF,AF''',0 ;ex af,af'
3345 db fi_hlixiy,',' ;add hl,rp
3349 db '(',fi_rp,'),A',0 ;ld (rp),a ;rp=bc,de
3351 db 'A,(',fi_rp,')',0 ;ld a,(rp) ;rp=bc,de
3355 db fi_ry,',',fi_n,0 ;ld r[y],n
3361 db fi_ccy2,',' ;jr cc,j ;cc = nz,z,nc,c
3365 db '(',fi_n,'),A',0 ;out (n),a
3367 db 'A,(',fi_n,')',0 ;in a,(n)
3371 db fi_ccy,',',fi_nn,0 ;op cc[y],nn
3373 db fi_rp,',' ;ld rp[p],nn
3377 db '(',fi_nn,'),',fi_hlixiy,0 ;ld (nn),hl
3379 db fi_hlixiy,',(',fi_nn,')',0 ;ld hl,(nn)
3381 db '(',fi_nn,'),A',0 ;ld (nn),a
3383 db 'A,(',fi_nn,')',0 ;ld a,(nn)
3385 ; Prefix ED + 1 byte opcode
3387 db fi_ry,',' ;in r[y],(c)
3391 db '(C),' ;out (c),r[y]
3393 db fi_ry,0 ;inc r[y]
3401 db fi_ir,0 ;ld a,i ... r,a
3403 ; Prefix ED + 2 byte (opcode + immediate)
3405 db fi_ry,',' ;in0 r[y],(n)
3407 db '(',fi_n,')',0 ;in0 (n)
3409 db '(',fi_n,'),',fi_ry,0 ;out0 (n),r[y]
3411 ; Prefix ED + 3 byte (opcode + address)
3413 db '(',fi_nn,'),',fi_rp,0 ;ld (nn),rp
3415 db fi_rp,',(',fi_nn,')',0 ;ld rp,(nn)
3417 ; Prefix CB + 1 byte opcode
3419 db fi_y,',' ;op y,r[z]
3421 db fi_rz_cb,0 ;op r[z]
3422 a_noarg equ $-t_argf
3426 ;-------------------------------------------------------------------------------
3431 fi_&x equ 80h+argpf_index
3433 argpf_index defl argpf_index+1
3454 ld a,(isprefix_ixiy)
3496 ld a,(isprefix_ixiy)
3525 ld a,(isprefix_ixiy)
3549 db 0ddh ;swallow t_arg_rp in ix
3560 ld a,(isprefix_ixiy)
3595 ;-------------------------------------------------------------------------------
3600 ;o_&x equ $-opc_tabstart
3602 opc_index defl opc_index+1
3606 ;opc_tabstart defl $
3669 ; Block instructions
3751 ;-------------------------------------------------------------------------------
3761 ld hl,l20edh ;set break after BDOS call
3764 call disas_get_instrlen
3773 call lookup_branch_op
3779 call c,bp_trace_enter
3784 ;-------------------------------------------------------------------------------
3787 db 0ffh,0ddh ;Prefix DD
3789 db 0ffh,0fdh ;Prefix FD
3791 db 0ffh,0edh ;Prefix ED
3794 db 0ffh,0cdh ;call mn
3806 db 0c7h,0c4h ;call cc,mn
3808 db 0f7h,010h ;djnz d; jr d
3810 db 0e7h,020h ;jr cc,d
3812 db 0c7h,0c2h ;jp cc,mn
3814 db 0c7h,0c0h ;ret cc
3818 ;-------------------------------------------------------------------------------
3819 ; call mn call cc,mn
3857 cp 0e9h ; jp (ix); jp (iy)
3891 ld hl,(reg_sp) ;break on return address
3915 ;-------------------------------------------------------------------------------
3917 ; >>C[N][J] W expression
3918 ; >>C[N][J] U expression
3919 ; trace over Calls [No list] [Jumps only] /.While./.Until.
3922 ;-------------------------------------------------------------------------------
3924 ; >>T[N][J] W expression
3925 ; >>T[N][J] U expression
3926 ; Trace [no List] [Jumps only] / .While. / .Until.
3930 ld hl,1 ;default: 1 step
3931 call get_lastarg_def
3932 ld (trace_cnt_or_ptr),hl
3934 ld (bp_p_cpu_flag),a
3939 call bp_clr_temporary
3940 ld hl,(trace_cnt_or_ptr)
3942 ld (trace_cnt_or_ptr),hl
3950 ld (bp_p_cpu_flag),a
3954 ;-------------------------------------------------------------------------------
3959 ;-------------------------------------------------------------------------------
3976 ;-------------------------------------------------------------------------------
4005 ;-------------------------------------------------------------------------------
4010 ;-------------------------------------------------------------------------------
4012 rept (STACK_SIZE+3)/4
4013 db 0deh,0adh,0beh,0efh
4044 ;-------------------------------------------------------------------------------
4046 ddtz_size equ $-ddtz_base
4047 prog_size equ $-start
4050 ;-------------------------------------------------------------------------------