📄 t32.men
字号:
hllrec: checkbox "only HLL Lines"
(
if dialog.boolean(hllrec)
dialog.disable b.cb
else
dialog.enable b.cb
)
pos 1. 7.5 9.
defbutton "Ok"
(
dialog.execute apply
dialog.end
)
pos 25. 7.5 9.
button "Cancel" "dialog.end"
pos 13. 7.5 9.
apply: button "Apply"
(
local &addr &addrdecl &bpused &trigger &tdelay &breakarg &tracetrigger
local &VBus
on error jumpto
(
beep 5.
print "Input error, please check syntax"
enddo
)
&addrdecl=""
&VBus=""
if dialog.boolean(hllrec)
(
if dialog.boolean(b.cb)
dialog.set b.bb
)
&bpused="AlphaBreak"
if dialog.boolean(b.bb)
&bpused="BetaBreak"
if dialog.boolean(b.cb)
&bpused="CharlyBreak"
&addr=dialog.string(addr)
if "&addr"!=""
(
if dialog.boolean(hllp)
&addr="v.range(""&addr"")"
else if dialog.boolean(rangep)
&addr="y.range(""&addr"")"
&addrdecl="addr &bpused &addr"
if FIRE()&&CPU()=="M68372"
(
if P:FASBASE.ADDRESS()!=P:0x0ffffffff
(
if (P:FASBASE.ADDRESS()<=P:(&addr))&&(P:(&addr)<=(P:FASBASE.ADDRESS()+0x7fff))
&VBus="YES"
else if (P:(&addr)<P:FASBASE.ADDRESS())||(P:FASBASE.ADDRESS()+0x7fff)<P:(&addr)
&VBus="NO"
else ; not only VBUS or XBUS address area
(
beep 5.
print "address range error: address overlaps XBUS and VBUS : &addr"
enddo
)
)
)
)
if dialog.boolean(a.read)
(
if "&VBus"=="YES"
&trigger="&bpused&&VBUS&&VRead"
else if "&VBus"=="NO"
&trigger="&bpused&&XBUS&&Read"
else
&trigger="&bpused&&Read"
)
else if dialog.boolean(a.write)
(
if "&VBus"=="YES"
&trigger="&bpused&&VBUS&&VWrite"
else if "&VBus"=="NO"
&trigger="&bpused&&XBUS&&Write"
else
&trigger="&bpused&&Write"
)
else
(
if "&VBus"=="YES"
&trigger="&bpused&&VBUS"
else if "&VBus"=="NO"
&trigger="&bpused&&XBUS"
else
&trigger="&bpused"
)
if dialog.boolean(d.pre)
&tdelay="10."
else if dialog.boolean(d.center)
&tdelay=a.size()/2.
else
&tdelay=a.size()-30.
if FIRE()
(
if dialog.boolean(t.break)
&breakarg="BREAK.TRACE IF tdelay"
else
&breakarg="BREAK.PROGRAM IF tdelay"
)
else
(
if dialog.boolean(t.break)
&breakarg="BREAK IF tdelay"
else
&breakarg="TRIGGER.A IF tdelay"
)
&tracetrigger="TRUE"
if dialog.boolean(hllrec)
(
Break.Delete /Charly
Break.SetLine /Charly /NPreFetch
&tracetrigger="CharlyBreak"
)
Analyzer.ReProgram
(
&addrdecl
event tdelay &tdelay
start:
Sample.Enable
Mark.A IF &trigger
CONTinue IF &trigger
occured:
Sample.Enable
Count.Enable tdelay
&breakarg
)
print "Analyzer programmed."
)
)
dialog.set b.ab
dialog.set a.any
dialog.set d.center
dialog.set t.break
if a.config.hac()
(
; currently not supported from HAC
dialog.disable b.bb
dialog.disable b.cb
dialog.disable hllrec
)
)
; - - - - - - - - - - - - - - - - -
menuitem "Multiple trace after..."
(
dialog
(
header "Multiple trace after "
pos 0x1 0x1 30.
addr: defedit "" ""
pos 32. 1. 7.
button "Browse..."
(
local &wildcard
&wildcard=dialog.string(addr)
if "&wildcard"==""
&wildcard="*"
if !string.find("&wildcard","*?")
&wildcard="*&wildcard*"
symbol.browse &wildcard /c "dialog.set addr ""`*`""" /d
)
pos 0. 0. 40. 3.
box "Address / Expression"
pos 42. 0.5 8. 1.
hllp: checkbox "HLL"
(
if dialog.boolean(hllp)
dialog.disable rangep
else
dialog.enable rangep
)
rangep: checkbox "Range"
(
if dialog.boolean(rangep)
dialog.disable hllp
else
dialog.enable hllp
)
pos 1. 3.5 11. 1.
b.ab: choosebox "Alpha" ""
b.bb: choosebox "Beta" ""
b.cb: choosebox "Charly" ""
pos 13. 3.5 11. 1.
a.any: choosebox "Any" ""
a.read: choosebox "Read" ""
a.write: choosebox "Write" ""
pos 25. 3.5 11. 1.
text "Cycles to trace:"
delay: edit "10." ""
pos 25. 5.5 12. 1.
hllrec: checkbox "only HLL Lines"
(
if dialog.boolean(hllrec)
dialog.disable b.cb
else
dialog.enable b.cb
)
pos 1. 7.5 9.
defbutton "Ok"
(
dialog.execute apply
dialog.end
)
pos 25. 7.5 9.
button "Cancel" "dialog.end"
pos 13. 7.5 9.
apply: button "Apply"
(
local &addr &addrdecl &bpused &trigger &tdelay &tracetrigger
local &VBus
on error jumpto
(
beep 5.
print "Input error, please check syntax"
enddo
)
&addrdecl=""
&VBus=""
if dialog.boolean(hllrec)
(
if dialog.boolean(b.cb)
dialog.set b.bb
)
&bpused="AlphaBreak"
if dialog.boolean(b.bb)
&bpused="BetaBreak"
if dialog.boolean(b.cb)
&bpused="CharlyBreak"
&addr=dialog.string(addr)
if "&addr"!=""
(
if dialog.boolean(hllp)
&addr="v.range(""&addr"")"
else if dialog.boolean(rangep)
&addr="y.range(""&addr"")"
&addrdecl="addr &bpused &addr"
if FIRE()&&CPU()=="M68372"
(
if P:FASBASE.ADDRESS()!=P:0x0ffffffff
(
if (P:FASBASE.ADDRESS()<=P:(&addr))&&(P:(&addr)<=(P:FASBASE.ADDRESS()+0x7fff))
&VBus="YES"
else if (P:(&addr)<P:FASBASE.ADDRESS())||(P:FASBASE.ADDRESS()+0x7fff)<P:(&addr)
&VBus="NO"
else ; not only VBUS or XBUS address area
(
beep 5.
print "address range error: address overlaps XBUS and VBUS : &addr"
enddo
)
)
)
)
if dialog.boolean(a.read)
(
if "&VBus"=="YES"
&trigger="&bpused&&VBUS&&VRead"
else if "&VBus"=="NO"
&trigger="&bpused&&XBUS&&Read"
else
&trigger="&bpused&&Read"
)
else if dialog.boolean(a.write)
(
if "&VBus"=="YES"
&trigger="&bpused&&VBUS&&VWrite"
else if "&VBus"=="NO"
&trigger="&bpused&&XBUS&&Write"
else
&trigger="&bpused&&Write"
)
else
(
if "&VBus"=="YES"
&trigger="&bpused&&VBUS"
else if "&VBus"=="NO"
&trigger="&bpused&&XBUS"
else
&trigger="&bpused"
)
&tdelay=dialog.string(delay)
&tracetrigger="TRUE"
if dialog.boolean(hllrec)
(
Break.Delete /Charly
Break.SetLine /Charly /NPreFetch
&tracetrigger="CharlyBreak"
)
if !(a.config.hac())
(
Analyzer.ReProgram
(
&addrdecl
event delay &tdelay
start:
Sample.Enable if &trigger
Mark.A if &trigger
CONTinue if &trigger
occured:
Sample.Enable if &tracetrigger
Count.Enable delay if &tracetrigger
Count.Restart delay if delay
GOTO start if delay
)
)
if a.config.hac()
(
; this differentiation won't be necessary in the future anymore
Analyzer.ReProgram
(
&addrdecl
event delay &tdelay
start:
Sample.Enable if &trigger
Mark.A if &trigger
CONTinue if &trigger
occured:
Sample.Enable
Count.Enable delay
; currently not supported from HAC
; Count.Restart delay if delay
GOTO start if delay
)
)
print "Analyzer programmed."
; v end button OK
)
)
dialog.set b.ab
dialog.set a.any
if a.config.hac()
(
; v currently not supported from HAC
dialog.disable b.bb
dialog.disable b.cb
dialog.disable hllrec
)
; v end menuitem multiple trace after
)
menuitem "Trace on &Write..."
(
winpos ,,,,,, tracevar
sYmbol.b.v * /Click "gosub tracevar *"
stop
tracevar:
local &varname
entry &varname
if cpubondout()!=""&&fire()
(
Analyzer.ReProgram
(
addr AlphaBreak v.range(&varname) /write
Sample.Enable if AlphaBreak
)
)
else
(
Analyzer.ReProgram
(
addr AlphaBreak v.range(&varname)
Sample.Enable if AlphaBreak&&Write
)
)
print "Analyzer programmed to trace &varname ..."
wclear tracevar
enddo
)
menuitem "Trace on &Read..."
(
winpos ,,,,,, tracevar
sYmbol.b.v * /Click "gosub tracevar *"
stop
tracevar:
local &varname
entry &varname
if cpubondout()!=""&&fire()
(
Analyzer.ReProgram
(
addr AlphaBreak v.range(&varname) /Read
Sample.Enable if AlphaBreak
)
)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -