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
88 ld sp,028h-2 ;rst instr needs a minimal stack
89 pop bc ;save 026h,027h
90 pop de ;save 028h,029h
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]
1679 ;-------------------------------------------------------------------------------
1685 ld (pbl_loop_adr),hl
1698 ld hl,(pbl_loop_adr)
1712 ;-------------------------------------------------------------------------------
1714 ; display all breakpoints
1715 ; > B breakp [breakp..]
1718 ; clear all breakpoints
1719 ; > BX breakp [breakp..]
1722 ; breakp can be any valid expression
1782 ;-------------------------------------------------------------------------------
1783 ; Add break points to list
1784 ; A = 1 Permanent (B command)
1785 ; A = 2 Temporary (G command)
1802 call bp_get_freeslot
1824 ;-------------------------------------------------------------------------------
1825 ; Breakpoint handling routine.
1859 call inchar ;Keyboard hit?
1867 call bp_clr_temporary
1921 and 003h ;User bp (temporary or permanent)?
1922 jr z,bp_tst_e ;No, check next
1926 call cp_hl_de ;Current PC is on a User bp
1931 inc a ;Not on a user bp
1932 ret ;Return not zero
1935 call bp_get_freeslot
1973 ;-------------------------------------------------------------------------------
2005 ;-------------------------------------------------------------------------------
2007 ; examine all Y variables
2009 ; examine (and substitute) an Y variable
2012 ;-------------------------------------------------------------------------------
2014 ; eXamine (display) all cpu registers and
2015 ; the instruction at the current program counter
2017 ; eXamine (and substitute) a register
2226 ;-------------------------------------------------------------------------------
2232 call get_lastarg_def
2266 ;-------------------------------------------------------------------------------
2268 ; examine (substitute) displacement register @
2272 ;-------------------------------------------------------------------------------
2274 ; Input a byte from port
2279 call get_lastarg_def
2291 ;-------------------------------------------------------------------------------
2293 ; Output a byte to a port
2304 call get_lastarg_def
2312 ;-------------------------------------------------------------------------------
2313 ; > V startaddr endaddr targetaddr
2314 ; Verify (compare) two memory areas
2317 call get_arg_range_target
2344 ;-------------------------------------------------------------------------------
2345 ; > M startaddr endaddr destaddr
2349 call get_arg_range_target
2364 ;-------------------------------------------------------------------------------
2366 ; display Highest load address of last filed loaded, Maximum "High"
2367 ; off all loaded files, and Top address of available memory
2369 ; evaluate expression and display result in hex, decimal and other formats
2389 ;-------------------------------------------------------------------------------
2390 ; > Q[J] startaddr endaddr bytes
2391 ; Query memory for a byte string [Justified]
2431 ;-------------------------------------------------------------------------------
2432 ; > Z startaddr endaddr bytes
2433 ; Zap (fill) memory with a byte string
2467 sub_0ef7h: ;from cmd_Q, cmd_Z
2468 db 0e6h ;and 037h (clear carry)
2469 sub_0ef8h: ;from cmd_S
2517 ;-------------------------------------------------------------------------------
2518 ; >>D [startaddr] [endaddr]
2519 ; Display memory in hex and ASCII
2587 ;-------------------------------------------------------------------------------
2589 ; specifiy filenames and command line
2593 ;-------------------------------------------------------------------------------
2594 ; > R [displacement]
2595 ; Read Intel Hex File from console [add displacement]
2599 call get_lastarg_def ;get offset from command line
2608 ld c,0 ;init checksum
2609 call i.gethexbyte ;record len
2611 call i.gethexbyte ;address high
2613 call i.gethexbyte ;address low
2615 call i.gethexbyte ;record type (ignored)
2617 and a ;record len == 0?
2628 djnz l16c6h ;repeat for record len
2629 call i.gethexbyte ;checksum
2632 jr nz,error2 ;exit if checksum error
2633 jr w_recstart ;next record
2671 ld de,ddtz_base ;don't load over ddtz
2691 ld (hl),a ;store byte
2694 ;-------------------------------------------------------------------------------
2713 ;-------------------------------------------------------------------------------
2714 ; > Wstartaddr endaddr
2715 ; Write a file to disk
2719 ;-------------------------------------------------------------------------------
2721 ; Assemble Zilog Z180 mnemonics
2725 ;-------------------------------------------------------------------------------
2726 ; >>L [startaddr] [endaddr]
2727 ; List disassembled code
2761 ;-------------------------------------------------------------------------------
2780 ;-------------------------------------------------------------------------------
2783 call disas_get_instrlen
2789 call pstr ;print mnemonic
2791 call pr_instr_args ;print arguments
2803 ;-------------------------------------------------------------------------------
2807 ld (isprefix_ixiy),a
2826 ld (isprefix_ixiy),a
2837 ;-------------------------------------------------------------------------------
2840 ld hl,b_1b54_start ;2 byte opcodes
2844 ld hl,b_1ab6_start ;1 byte opcodes (no parameters)
2848 ld hl,b_1ad1_start ;1 byte opcodes
2852 ld hl,b_1b9b_start ;3 byte opcodes
2857 ;-------------------------------------------------------------------------------
2870 ld hl,b_1bc9_start ;1 byte opcode, no arguments
2896 ;-------------------------------------------------------------------------------
2901 ld a,(isprefix_ixiy)
2912 ;-------------------------------------------------------------------------------
2940 ;-------------------------------------------------------------------------------
2941 ; DD/FD 3 byte (ix+d)/(iy+d)
2988 ;-------------------------------------------------------------------------------
3015 call lookup_branch_op
3041 ;-------------------------------------------------------------------------------
3042 ; 1 byte opcodes (no parameters)
3043 ; Format: db opcode, t_MNEMONICS-index
3045 db 076h,i_HALT ;halt
3050 ; db 007h,i_RLCA ;rlca
3051 ; db 00fh,i_RRCA ;rrca
3052 ; db 017h,i_RLA ;rla
3053 ; db 01fh,i_RRA ;rra
3054 ; db 027h,i_DAA ;daa
3055 ; db 02fh,i_CPL ;cpl
3056 ; db 037h,i_SCF ;scf
3057 ; db 03fh,i_CCF ;ccf
3063 ; Format: db mask, match, t_MNEMONICS-index
3064 ; dw argument formating function
3066 db 0c0h,040h,i_LD ;ld r[y],r[z]
3069 db 0c0h,080h,i_ADD+080h ;add a,r[z]
3072 ; db 0f8h,080h,i_ADD ;add a,r[z]
3074 ; db 0f8h,088h,i_ADC ;adc a,r[z]
3076 ; db 0f8h,090h,i_SUB ;sub r[z]
3078 ; db 0f8h,098h,i_SBC ;sbc a,r[z]
3080 ; db 0f8h,0a0h,i_AND ;and r[z]
3082 ; db 0f8h,0a8h,i_XOR ;xor r[z]
3084 ; db 0f8h,0b0h,i_OR ;or r[z]
3086 ; db 0f8h,0b8h,i_CP ;cp r[z]
3089 db 0c7h,0c0h,i_RET ;ret cc
3091 db 0c7h,0c7h,i_RST ;rst
3093 db 0cfh,0c1h,i_POP ;pop rp2
3095 db 0cfh,0c5h,i_PUSH ;push rp2
3097 db 0ffh,0e3h,i_EX ;ex (sp),hl
3099 db 0ffh,0e9h,i_JP ;jp (hl)
3101 db 0ffh,0ebh,i_EX ;ex de,hl
3103 db 0ffh,0f9h,i_LD ;ld sp,hl
3105 db 0cfh,003h,i_INC ;inc rp
3107 db 0cfh,00bh,i_DEC ;dec rp
3109 db 0c7h,004h,i_INC ;inc r[y]
3111 db 0c7h,005h,i_DEC ;dec r[y]
3113 db 0ffh,008h,i_EX ;ex af,af'
3115 db 0cfh,009h,i_ADD ;add hl,rp
3117 db 0efh,002h,i_LD ;ld (rp),a ;rp=bc,de
3119 db 0efh,00ah,i_LD ;ld a,(rp) ;rp=bc,de
3122 db 0c7h,007h,i_RLCA+080h;rlca
3129 db 0c7h,006h,i_LD ;ld r[y],nn
3132 db 0c7h,0c6h,i_ADD+080h ;add a,r[z]
3135 ; db 0ffh,0c6h,i_ADD ;add a,nn
3137 ; db 0ffh,0ceh,i_ADC ;adc a,nn
3139 ; db 0ffh,0d6h,i_SUB ;sub nn
3141 ; db 0ffh,0deh,i_SBC ;sbc a,nn
3143 ; db 0ffh,0e6h,i_AND ;and nn
3145 ; db 0ffh,0eeh,i_XOR ;xor nn
3147 ; db 0ffh,0f6h,i_OR ;or nn
3149 ; db 0ffh,0feh,i_CP ;cp nn
3152 db 0ffh,010h,i_DJNZ ;djnz
3154 db 0ffh,018h,i_JR ;jr
3156 db 0e7h,020h,i_JR ;jr cc,
3158 db 0ffh,0d3h,i_OUT ;out (nn),a
3160 db 0ffh,0dbh,i_IN ;in a,(nn)
3166 db 0c7h,0c2h,i_JP ;jp cc,mn
3168 db 0c7h,0c4h,i_CALL ;call cc,mn
3170 db 0cfh,001h,i_LD ;ld ww,mn
3172 db 0ffh,0c3h,i_JP ;jp mn
3174 db 0ffh,0cdh,i_CALL ;call mn
3176 db 0ffh,022h,i_LD ;ld (mn),hl
3178 db 0ffh,02ah,i_LD ;ld hl,(mn)
3180 db 0ffh,032h,i_LD ;ld (mn),a
3182 db 0ffh,03ah,i_LD ;ld a,(mn)
3186 ; Prefix ED + 1 byte opcode, no arguments
3187 ; Format: opcode, t_MNEMONICS index
3190 db 045h,i_RETN ;retn
3191 db 04dh,i_RETI ;reti
3194 ; db 0a0h,i_LDI ;ldi
3195 ; db 0a1h,i_CPI ;cpi
3196 ; db 0a2h,i_INI ;ini
3197 ; db 0a3h,i_OUTI ;outi
3198 ; db 0a8h,i_LDD ;ldd
3199 ; db 0a9h,i_CPD ;cpd
3200 ; db 0aah,i_IND ;ind
3201 ; db 0abh,i_OUTD ;outd
3202 ; db 0b0h,i_LDIR ;ldir
3203 ; db 0b1h,i_CPIR ;cpir
3204 ; db 0b2h,i_INIR ;inir
3205 ; db 0b3h,i_OTIR ;otir
3206 ; db 0b8h,i_LDDR ;lddr
3207 ; db 0b9h,i_CPDR ;cpdr
3208 ; db 0bah,i_INDR ;indr
3209 ; db 0bbh,i_OTDR ;otdr
3210 db 08bh,i_OTDM ;otdm
3211 db 09bh,i_OTDMR ;otdmr
3212 db 083h,i_OTIM ;otim
3213 db 093h,i_OTIMR ;otimr
3220 db 0ffh,070h,i_IN ;in (c) ;
3222 db 0c7h,040h,i_IN ;in r,(c) ;r=b,c,d,e,h,l,a
3224 db 0ffh,071h,0ffh ;out (c),0 ;
3226 db 0c7h,041h,i_OUT ;out (c),r ;r=b,c,d,e,h,l,a
3228 db 0cfh,042h,i_SBC ;sbc hl,rp
3230 db 0cfh,04ah,i_ADC ;adc hl,rp
3232 db 0ffh,046h,i_IM ;im 0
3234 db 0ffh,056h,i_IM ;im 1
3236 db 0ffh,05eh,i_IM ;im 2
3238 db 0e7h,047h,i_LD ;ld i,a ... ld a,r
3240 db 0cfh,04ch,i_MLT ;mlt rr
3242 db 0c7h,004h,i_TST ;tst r
3247 db 0ffh,030h,i_IN0 ;in0 (m)
3249 db 0c7h,000h,i_IN0 ;in0 r,(m) ;r=b,c,d,e,h,l,a
3251 db 0ffh,031h,0ffh ;out0 (m),0
3253 db 0c7h,001h,i_OUT0 ;out0 (m),r ;r=b,c,d,e
3255 db 0ffh,064h,i_TST ;tst m
3257 db 0ffh,074h,i_TSTIO ;tstio m
3261 ; Prefix ED + 1 byte opcode + 2 byte address
3262 ; Format: db mask, match, t_MNEMONICS-index
3263 ; dw argument formating function
3265 db 0cfh,043h,i_LD ;ld (mn),ww ;ww=bc,de,hl,sp
3267 db 0cfh,04bh,i_LD ;ld ww,(mn) ;ww=bc,de,hl,sp
3273 db 0c0h,000h,i_RLC+080h ;rlc g
3276 ; db 0f8h,000h,i_RLC ;rlc g
3278 ; db 0f8h,008h,i_RRC ;rrc g
3280 ; db 0f8h,010h,i_RL ;rl g
3282 ; db 0f8h,018h,i_RR ;rr g
3284 ; db 0f8h,020h,i_SLA ;sla g
3286 ; db 0f8h,028h,i_SRA ;sra g
3288 ; db 0f8h,038h,i_SRL ;srl g
3290 db 0c0h,040h,i_BIT ;bit b,g
3292 db 0c0h,080h,i_RES ;res b,g
3294 db 0c0h,0c0h,i_SET ;set b,g
3298 ;-------------------------------------------------------------------------------
3299 ;-------------------------------------------------------------------------------
3307 ld a,(hl) ;get next token
3312 call outchar ;print as normal character
3330 ; http://www.z80.info/decoding.htm
3332 ; | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
3340 db fi_ry,',' ;ld r[y],r[z]
3344 ; db 'A,',fi_rz,0 ;op A,r[z]
3346 db fi_ccy,0 ;op cc[y]
3348 db fi_rst,0 ;rst y*8
3351 a_esphl equ $-t_argf
3352 db '(SP),',fi_hlixiy,0 ;ex (sp),hl
3354 db '(',fi_hlixiy,')',0 ;jp (hl)
3357 a_lsphl equ $-t_argf
3358 db 'SP,',fi_hlixiy,0 ;ld SP,HL
3360 db 'AF,AF''',0 ;ex af,af'
3362 db fi_hlixiy,',' ;add hl,rp
3366 db '(',fi_rp,'),A',0 ;ld (rp),a ;rp=bc,de
3368 db 'A,(',fi_rp,')',0 ;ld a,(rp) ;rp=bc,de
3372 db fi_ry,',',fi_n,0 ;ld r[y],n
3378 db fi_ccy2,',' ;jr cc,j ;cc = nz,z,nc,c
3382 db '(',fi_n,'),A',0 ;out (n),a
3384 db 'A,(',fi_n,')',0 ;in a,(n)
3388 db fi_ccy,',',fi_nn,0 ;op cc[y],nn
3390 db fi_rp,',' ;ld rp[p],nn
3394 db '(',fi_nn,'),',fi_hlixiy,0 ;ld (nn),hl
3396 db fi_hlixiy,',(',fi_nn,')',0 ;ld hl,(nn)
3398 db '(',fi_nn,'),A',0 ;ld (nn),a
3400 db 'A,(',fi_nn,')',0 ;ld a,(nn)
3402 ; Prefix ED + 1 byte opcode
3404 db fi_ry,',' ;in r[y],(c)
3408 db '(C),' ;out (c),r[y]
3410 db fi_ry,0 ;inc r[y]
3418 db fi_ir,0 ;ld a,i ... r,a
3420 ; Prefix ED + 2 byte (opcode + immediate)
3422 db fi_ry,',' ;in0 r[y],(n)
3424 db '(',fi_n,')',0 ;in0 (n)
3426 db '(',fi_n,'),',fi_ry,0 ;out0 (n),r[y]
3428 ; Prefix ED + 3 byte (opcode + address)
3430 db '(',fi_nn,'),',fi_rp,0 ;ld (nn),rp
3432 db fi_rp,',(',fi_nn,')',0 ;ld rp,(nn)
3434 ; Prefix CB + 1 byte opcode
3436 db fi_y,',' ;op y,r[z]
3438 db fi_rz_cb,0 ;op r[z]
3439 a_noarg equ $-t_argf
3443 ;-------------------------------------------------------------------------------
3448 fi_&x equ 80h+argpf_index
3450 argpf_index defl argpf_index+1
3471 ld a,(isprefix_ixiy)
3513 ld a,(isprefix_ixiy)
3542 ld a,(isprefix_ixiy)
3566 db 0ddh ;swallow t_arg_rp in ix
3577 ld a,(isprefix_ixiy)
3612 ;-------------------------------------------------------------------------------
3617 ;o_&x equ $-opc_tabstart
3619 opc_index defl opc_index+1
3623 ;opc_tabstart defl $
3686 ; Block instructions
3767 ;-------------------------------------------------------------------------------
3781 jr nz,lookup_branch_op
3785 ;-------------------------------------------------------------------------------
3795 ld hl,l20edh ;set break after BDOS call
3798 call disas_get_instrlen
3807 call lookup_branch_op
3813 call c,bp_trace_enter
3818 ;-------------------------------------------------------------------------------
3821 db 0ffh,0ddh ;Prefix DD
3823 db 0ffh,0fdh ;Prefix FD
3825 db 0ffh,0edh ;Prefix ED
3828 db 0ffh,0cdh ;call mn
3840 db 0c7h,0c4h ;call cc,mn
3842 db 0f7h,010h ;djnz d; jr d
3844 db 0e7h,020h ;jr cc,d
3846 db 0c7h,0c2h ;jp cc,mn
3848 db 0c7h,0c0h ;ret cc
3852 ;-------------------------------------------------------------------------------
3853 ; call mn call cc,mn
3892 cp 0e9h ; jp (ix); jp (iy)
3929 ld hl,(reg_sp) ;break on return address
3952 ;-------------------------------------------------------------------------------
3954 ; >>C[N][J] W expression
3955 ; >>C[N][J] U expression
3956 ; trace over Calls [No list] [Jumps only] /.While./.Until.
3959 ;-------------------------------------------------------------------------------
3961 ; >>T[N][J] W expression
3962 ; >>T[N][J] U expression
3963 ; Trace [no List] [Jumps only] / .While. / .Until.
3967 ld hl,1 ;default: 1 step
3968 call get_lastarg_def
3969 ld (trace_cnt_or_ptr),hl
3974 call bp_clr_temporary
3975 ld hl,(trace_cnt_or_ptr)
3977 ld (trace_cnt_or_ptr),hl
3988 ;-------------------------------------------------------------------------------
3993 ;-------------------------------------------------------------------------------
4006 ;-------------------------------------------------------------------------------
4038 ;-------------------------------------------------------------------------------
4043 ;-------------------------------------------------------------------------------
4045 rept (STACK_SIZE+3)/4
4046 db 0deh,0adh,0beh,0efh
4077 ;-------------------------------------------------------------------------------
4079 ddtz_size equ $-ddtz_base
4080 prog_size equ $-start
4083 ;-------------------------------------------------------------------------------