⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 t32.men

📁 指令集模拟器
💻 MEN
📖 第 1 页 / 共 4 页
字号:
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 + -