home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD v1.2 / amidev_cd_12.iso / devcon / milan_1991 / devcon91.3 / debug / debugger / s / wack / exec.macros next >
Text File  |  1992-09-01  |  14KB  |  418 lines

  1. ;exec.macros V1.5
  2.  
  3. ;EXEC Execbase structure
  4. (macro ExecBase
  5.     (addsymbol EBase (@l (addsymbol SysBase 4)))
  6.     (addsymbol eb_LibNode EBase)
  7.     (addsymbol eb_SoftVer (+ eb_LibNode 22))
  8.     (addsymbol eb_LowMemChkSum (+ eb_SoftVer 2))
  9.     (addsymbol eb_ChkBase (+ eb_LowMemChkSum 2))
  10.     (addsymbol eb_ColdCapture (+ eb_ChkBase 4))
  11.     (addsymbol eb_CoolCapture (+ eb_ColdCapture 4))
  12.     (addsymbol eb_WarmCapture (+ eb_CoolCapture 4))
  13.     (addsymbol eb_SysStkUpper (+ eb_WarmCapture 4))
  14.     (addsymbol eb_SysStkLower (+ eb_SysStkUpper 4))
  15.     (addsymbol eb_MaxLocMem (+ eb_SysStkLower 4))
  16.     (addsymbol eb_DebugEntry (+ eb_MaxLocMem 4))
  17.     (addsymbol eb_DebugData (+ eb_DebugEntry 4))
  18.     (addsymbol eb_AlertData (+ eb_DebugData 4))
  19.     (addsymbol eb_MaxExtMem (+ eb_AlertData 4))
  20.     (addsymbol eb_ChkSum (+ eb_MaxExtMem 4))
  21.     (addsymbol eb_IntVects (+ eb_ChkSum 2))
  22.     (addsymbol eb_ThisTask (+ eb_IntVects c0))
  23.     (addsymbol eb_IdleCount (+ eb_ThisTask 4))
  24.     (addsymbol eb_DispCount (+ eb_IdleCount 4))
  25.     (addsymbol eb_Quantum (+ eb_DispCount 4))
  26.     (addsymbol eb_Elapsed (+ eb_Quantum 2))
  27.     (addsymbol eb_SysFlags (+ eb_Elapsed 2))
  28.     (addsymbol eb_IDNestCnt (+ eb_SysFlags 2))
  29.     (addsymbol eb_TDNestCnt (+ eb_IDNestCnt 1))
  30.     (addsymbol eb_AttnFlags (+ eb_TDNestCnt 1))
  31.     (addsymbol eb_AttnResched (+ eb_AttnFlags 2))
  32.     (addsymbol eb_ResModules (+ eb_AttnResched 2))
  33.     (addsymbol eb_TaskTrapCode (+ eb_ResModules 4))
  34.     (addsymbol eb_TaskExceptCode (+ eb_TaskTrapCode 4))
  35.     (addsymbol eb_TaskExitCode (+ eb_TaskExceptCode 4))
  36.     (addsymbol eb_TaskSigAlloc (+ eb_TaskExitCode 4))
  37.     (addsymbol eb_TaskTrapAlloc (+ eb_TaskSigAlloc 4))
  38.     (addsymbol eb_MemList (+ eb_TaskTrapAlloc 2))
  39.     (addsymbol eb_ResourceList (+ eb_MemList e))
  40.     (addsymbol eb_DeviceList (+ eb_ResourceList e))
  41.     (addsymbol eb_IntrList (+ eb_DeviceList e))
  42.     (addsymbol eb_LibList (+ eb_IntrList e))
  43.     (addsymbol eb_PortList (+ eb_LibList e))
  44.     (addsymbol eb_TaskReady (+ eb_PortList e))
  45.     (addsymbol eb_TaskWait (+ eb_TaskReady e))
  46.     (addsymbol eb_SoftInts (+ eb_TaskWait e))
  47.     (addsymbol eb_LastAlert (+ eb_SoftInts 50))
  48.     (addsymbol eb_VBlankFrequency (+ eb_LastAlert 4))
  49.     (addsymbol eb_PowerSupplyFrequency (+ eb_VBlankFrequency 1))
  50.     (addsymbol eb_SemaphoreList (+ eb_PowerSupplyFrequency 1))
  51.     (addsymbol eb_KickMemPtr (+ eb_SemaphoreList e))
  52.     (addsymbol eb_KickTagPtr (+ eb_KickMemPtr 4))
  53.     (addsymbol eb_KickCheckSum (+ eb_KickTagPtr 4))
  54.     (addsymbol eb_ExecBaseReserve (+ eb_KickCheckSum 4))
  55.     (addsymbol eb_ExecBaseNewReserve (+ eb_ExecBaseReserve 1))
  56. )
  57.  
  58. ;EXEC Library structure
  59. (macro Library
  60.     (if (!= (nargs) 0)
  61.     (addsymbol lib_Node (arg 1))
  62.     (addsymbol lib_Node (current)))
  63.     (addsymbol lib_Flags (+ lib_Node e))
  64.     (addsymbol lib_pad (+ lib_Flags 1))
  65.     (addsymbol lib_NegSize (+ lib_pad 1))
  66.     (addsymbol lib_PosSize (+ lib_NegSize 2))
  67.     (addsymbol lib_Version (+ lib_PosSize 2))
  68.     (addsymbol lib_Revision (+ lib_Version 2))
  69.     (addsymbol lib_IdString (+ lib_Revision 2))
  70.     (addsymbol lib_Sum (+ lib_IdString 4))
  71.     (addsymbol lib_OpenCnt (+ lib_Sum 4))
  72. )
  73.  
  74. ;EXEC List structure
  75. (macro List
  76.     (if (!= (nargs) 0)
  77.     (addsymbol lh_Head (arg 1))
  78.     (addsymbol lh_Head (current)))
  79.     (addsymbol lh_Tail (+ lh_Head 4))
  80.     (addsymbol lh_TailPred (+ lh_Tail 4))
  81.     (addsymbol lh_Type (+ lh_TailPred 4))
  82.     (addsymbol lh_pad (+ lh_Type 1))
  83. )
  84.  
  85. ;EXEC MemChunk structure
  86. (macro MemChunk
  87.     (if (!= (nargs) 0)
  88.     (addsymbol mc_Next (arg 1))
  89.     (addsymbol mc_Next (current)))
  90.     (addsymbol mc_Bytes (+ mc_Next 4))
  91. )
  92.  
  93. ;EXEC MemHeader structure
  94. (macro MemHeader
  95.     (if (!= (nargs) 0)
  96.     (addsymbol mh_Node (arg 1))
  97.     (addsymbol mh_Node (current)))
  98.     (addsymbol mh_Attributes (+ mh_Node e))
  99.     (addsymbol mh_First (+ mh_Attributes 2))
  100.     (addsymbol mh_Lower (+ mh_First 4))
  101.     (addsymbol mh_Upper (+ mh_Lower 4))
  102.     (addsymbol mh_Free (+ mh_Upper 4))
  103. )
  104.  
  105. ;EXEC Resident structure
  106. (macro Resident
  107.     (if (!= (nargs) 0)
  108.     (addsymbol rt_MatchWord (arg 1))
  109.     (addsymbol rt_MatchWord (current)))
  110.     (addsymbol rt_MatchTag (+ rt_MatchWord 2))
  111.     (addsymbol rt_EndSkip (+ rt_MatchTag 4))
  112.     (addsymbol rt_Flags (+ rt_EndSkip 4))
  113.     (addsymbol rt_Version (+ rt_Flags 1))
  114.     (addsymbol rt_Type (+ rt_Version 1))
  115.     (addsymbol rt_Pri (+ rt_Type 1))
  116.     (addsymbol rt_Name (+ rt_Pri 1))
  117.     (addsymbol rt_IdString (+ rt_Name 4))
  118.     (addsymbol rt_Init (+ rt_IdString 4))
  119. )
  120.  
  121. ;EXEC Task structure
  122. (macro Task
  123.     (if (!= (nargs) 0)
  124.     (addsymbol tc_Node (arg 1))
  125.     (addsymbol tc_Node (current)))
  126.     (addsymbol tc_Flags (+ tc_Node e))
  127.     (addsymbol tc_State (+ tc_Flags 1))
  128.     (addsymbol tc_IDNestCnt (+ tc_State 1))
  129.     (addsymbol tc_TDNestCnt (+ tc_IDNestCnt 1))
  130.     (addsymbol tc_SigAlloc (+ tc_TDNestCnt 1))
  131.     (addsymbol tc_SigWait (+ tc_SigAlloc 4))
  132.     (addsymbol tc_SigRecvd (+ tc_SigWait 4))
  133.     (addsymbol tc_SigExcept (+ tc_SigRecvd 4))
  134.     (addsymbol tc_TrapAlloc (+ tc_SigExcept 4))
  135.     (addsymbol tc_TrapAble (+ tc_TrapAlloc 2))
  136.     (addsymbol tc_ExceptData (+ tc_TrapAble 2))
  137.     (addsymbol tc_ExceptCode (+ tc_ExceptData 4))
  138.     (addsymbol tc_TrapData (+ tc_ExceptCode 4))
  139.     (addsymbol tc_TrapCode (+ tc_TrapData 4))
  140.     (addsymbol tc_SPReg (+ tc_TrapCode 4))
  141.     (addsymbol tc_SPLower (+ tc_SPReg 4))
  142.     (addsymbol tc_SPUpper (+ tc_SPLower 4))
  143.     (addsymbol tc_Switch (+ tc_SPUpper 4))
  144.     (addsymbol tc_Launch (+ tc_Switch 4))
  145.     (addsymbol tc_MemEntry (+ tc_Launch 4))
  146.     (addsymbol tc_UserData (+ tc_MemEntry e))
  147. )
  148.  
  149. ;DOS Process structure
  150. (macro Process
  151.     (if (!= (nargs) 0)
  152.     (addsymbol pr_Task (arg 1))
  153.     (addsymbol pr_Task (current)))
  154.     (addsymbol pr_MsgPort (+ pr_Task 5c))
  155.     (addsymbol pr_Pad (+ pr_MsgPort 22))
  156.     (addsymbol pr_SegList (+ pr_Pad 2))
  157.     (addsymbol pr_StackSize (+ pr_SegList 4))
  158.     (addsymbol pr_GlobVec (+ pr_StackSize 4))
  159.     (addsymbol pr_TaskNum (+ pr_GlobVec 4))
  160.     (addsymbol pr_StackBase (+ pr_TaskNum 4))
  161.     (addsymbol pr_Result2 (+ pr_StackBase 4))
  162.     (addsymbol pr_CurrentDir (+ pr_Result2 4))
  163.     (addsymbol pr_CIS (+ pr_CurrentDir 4))
  164.     (addsymbol pr_COS (+ pr_CIS 4))
  165.     (addsymbol pr_ConsoleTask (+ pr_COS 4))
  166.     (addsymbol pr_FileSystemTask (+ pr_ConsoleTask 4))
  167.     (addsymbol pr_CLI (+ pr_FileSystemTask 4))
  168.     (addsymbol pr_ReturnAddr (+ pr_CLI 4))
  169.     (addsymbol pr_PktWait (+ pr_ReturnAddr 4))
  170.     (addsymbol pr_WindowPtr (+ pr_PktWait 4))
  171. )
  172.  
  173. ;DOS CommandLineInterface structure
  174. (macro CommandLineInterface
  175.     (if (!= (nargs) 0)
  176.     (addsymbol cli_Result2 (arg 1))
  177.     (addsymbol cli_Result2 (current)))
  178.     (addsymbol cli_SetName (+ cli_Result2 4))
  179.     (addsymbol cli_CommandDir (+ cli_SetName 4))
  180.     (addsymbol cli_ReturnCode (+ cli_CommandDir 4))
  181.     (addsymbol cli_CommandName (+ cli_ReturnCode 4))
  182.     (addsymbol cli_FailLevel (+ cli_CommandName 4))
  183.     (addsymbol cli_Prompt (+ cli_FailLevel 4))
  184.     (addsymbol cli_StandardInput (+ cli_Prompt 4))
  185.     (addsymbol cli_CurrentInput (+ cli_StandardInput 4))
  186.     (addsymbol cli_CommandFile (+ cli_CurrentInput 4))
  187.     (addsymbol cli_Interactive (+ cli_CommandFile 4))
  188.     (addsymbol cli_Background (+ cli_Interactive 4))
  189.     (addsymbol cli_CurrentOutput (+ cli_Background 4))
  190.     (addsymbol cli_DefaultStack (+ cli_CurrentOutput 4))
  191.     (addsymbol cli_StandardOutput (+ cli_DefaultStack 4))
  192.     (addsymbol cli_Module (+ cli_StandardOutput 4))
  193. )
  194.  
  195. ;show some important ExecBase members
  196. (macro ebase
  197.     (ExecBase)
  198.     (print "ExecBase at %8lx, Version: %ld\n" EBase (@ eb_SoftVer))
  199.     (print "ColdCapture $%06lx  CoolCapture $%06lx  WarmCapture $%06lx\n"
  200.       (@l eb_ColdCapture) (@l eb_CoolCapture) (@l eb_WarmCapture))
  201.     (print "SysStkUpper $%06lx  SysStkLower $%06lx  MaxLocMem   $%06lx\n"
  202.       (@l eb_SysStkUpper) (@l eb_SysStkLower) (@l eb_MaxLocMem))
  203.     (print "DebugEntry  $%06lx  DebugData   $%06lx  AlertData   $%06lx\n"
  204.       (@l eb_DebugEntry) (@l eb_DebugData) (@l eb_AlertData))
  205.     (print "TrapCode    $%06lx  ExceptCode  $%06lx  ExitCode    $%06lx\n"
  206.       (@l eb_TaskTrapCode) (@l eb_TaskExceptCode) (@l eb_TaskExitCode))
  207.     (print "SigAlloc  $%08lx  TrapAlloc     $%04lx\n"
  208.       (@l eb_TaskSigAlloc) (@ eb_TaskTrapAlloc))
  209.     (print "ThisTask    $%06lx  SysFlags      $%04lx\n"
  210.       (@l eb_ThisTask) (@ eb_SysFlags))
  211.     (print "IdleCount  %8ld  DispCount  %8ld\n"
  212.       (@l eb_IdleCount) (@l eb_DispCount))
  213.     (print "Quantum       %5ld  Elapsed       %5ld\n"
  214.       (@ eb_Quantum) (@ eb_Elapsed))
  215.     (print "IDNestCnt      %4ld  TDNestCnt      %4ld\n"
  216.       (@b eb_IDNestCnt) (@b eb_TDNestCnt))
  217.     (print "AttnFlags     $%04lx\n" (@ eb_AttnFlags))
  218. )
  219.  
  220. ;show one of four lists
  221. (macro showlist
  222.     (ExecBase)
  223.     (select
  224.     (== (arg 1) 1) (List eb_DeviceList)
  225.     (== (arg 1) 2) (List eb_LibList)
  226.     (== (arg 1) 3) (List eb_ResourceList)
  227.     (== (arg 1) 4) (List (current)))
  228.     (print "Address NT  Pri Ver Rev Name\n")
  229.     (for (Node (@l lh_Head)) (!= (@l ln_Succ) 0) (Node (@l ln_Succ))
  230.     (
  231.     (Library ln_Succ)
  232.     (print "$%6lx %2lx " lib_Node (@b ln_Type))
  233.     (signb (@b ln_Pri))
  234.     (print " %3ld %3ld \"%s\"\n" (@ lib_Version) (@ lib_Revision)
  235.         (@l ln_Name))
  236.     ))
  237. )
  238.  
  239. ;show device list
  240. (macro devices
  241.     (showlist 1)
  242. )
  243.  
  244. ;show library list
  245. (macro libraries
  246.     (showlist 2)
  247. )
  248.  
  249. ;show resource list
  250. (macro resources
  251.     (showlist 3)
  252. )
  253.  
  254. ;show a list of nodes
  255. (macro nodes
  256.     (showlist 4)
  257. )
  258.  
  259. ;show memory allocation list
  260. (macro memory
  261.     (ExecBase)
  262.     (MemHeader (@l eb_MemList))
  263.     (forbid)
  264.     (print "$%lx attr:%lx lower:$%lx upper:$%lx first:$%lx free:$%ld.\n"
  265.       mh_Node (@ mh_Attributes) (@l mh_Lower) (@l mh_Upper) (@l mh_First)
  266.       (@l mh_Free))
  267.     (for (MemChunk (@l mh_First)) (!= mc_Next 0) (MemChunk (@l mc_Next))
  268.     (
  269.     (print "  %6lx  size:%6lx (%ld.)\n" mc_Next (@l mc_Bytes)
  270.       (@l mc_Bytes))
  271.     ))
  272.     (permit)
  273. )
  274.  
  275. ;show system modules
  276. (macro modules (local res)
  277.     (ExecBase)
  278.     (print "Address Pri Type Ver Name\n")
  279.     (= res (@l eb_ResModules))
  280.     (while(!= (@l res) 0)
  281.     (
  282.     (Resident (@l res))
  283.     (print "$%6lx " (@l res))
  284.     (signb (@b rt_Pri))
  285.     (print " %4ld %3ld %s" (@b rt_Type) (@b rt_Version) (@l rt_IdString))
  286.     (= res (+ res 4))
  287.     ))
  288. )
  289.  
  290. ;print task state
  291. (macro PrintTaskState (local state)
  292.     (= state (@b tc_State))
  293.     (if (or (< state 0) (> state 6)) (= state 0))
  294.     (select
  295.     (== state 0) (print "????")
  296.     (== state 1) (print " add")
  297.     (== state 2) (print " run")
  298.     (== state 3) (print "redy")
  299.     (== state 4) (print "wait")
  300.     (== state 5) (print "expt")
  301.     (== state 6) (print "remv")
  302.     )
  303. )
  304.  
  305. ;tasks subroutine: show task
  306. (macro ShowTaskHead
  307.     (Task ln_Succ)
  308.     (print "$%06lx %2ld " tc_Node (@b ln_Type))
  309.     (signb (@b ln_Pri))
  310.     (PrintTaskState)
  311.     (print " $%08lx $%06lx \"%s\"\n" (@l tc_SigWait) (@l tc_SPReg)
  312.       (@l ln_Name))
  313. )
  314.  
  315. ;show all tasks
  316. (macro tasks
  317.     (ExecBase)
  318.     (print "Address NT  Pri Stat   SigWait   SPReg Name\n")
  319.     (disable)
  320.     (Node (@l eb_ThisTask))
  321.     (ShowTaskHead)
  322.     (List eb_TaskReady)
  323.     (for (Node (@l lh_Head)) (!= (@l ln_Succ) 0) (Node (@l ln_Succ))
  324.     (ShowTaskHead)
  325.     )
  326.     (List eb_TaskWait)
  327.     (for (Node (@l lh_Head)) (!= (@l ln_Succ) 0) (Node (@l ln_Succ))
  328.     (ShowTaskHead)
  329.     )
  330.     (enable)
  331. )
  332.  
  333. ;format given address or current frame as a Task
  334. (macro showtask (local i cpu AFB_68020)
  335.     (if (!= (nargs) 0)
  336.     (Task (arg 1))
  337.     (Task (current)))
  338.     (ExecBase)
  339.     (= AFB_68020 1)
  340.     (Node tc_Node)
  341.     (print "'%s', in " (@l ln_Name))
  342.     (PrintTaskState)
  343.     (print " state (#%ld) at priority " (@b tc_State))
  344.     (signb (@b ln_Pri))
  345.     (print " \n")
  346.     (print "Type %ld  Flags %02lx  IDNestCnt %ld  TDNestCnt %ld\n"
  347.       (@b ln_Type) (@b tc_Flags) (@b tc_IDNestCnt) (@b tc_TDNestCnt))
  348.     (print "Signal:  Alloc %08lx  Wait  %08lx  Recvd %08lx  Except %08lx\n"
  349.       (@l tc_SigAlloc) (@l tc_SigWait) (@l tc_SigRecvd) (@l tc_SigExcept))
  350.     (print "Trap:    Data  %08lx  Code  %08lx  Alloc %04lx      Able   %04lx\n"
  351.       (@l tc_TrapData) (@l tc_TrapCode) (@ tc_TrapAlloc) (@ tc_TrapAble))
  352.     (print "Except:  Data  %08lx  Code  %08lx\n"
  353.       (@l tc_ExceptData) (@l tc_ExceptCode))
  354.     (print "Stack:   Reg   %08lx  Lower %08lx  Upper %08lx\n"
  355.       (@l tc_SPReg) (@l tc_SPLower) (@l tc_SPUpper))
  356.  
  357.     (if (and (@ eb_AttnFlags) AFB_68020) (= cpu 4) (= cpu 0))
  358.     (if (or (== (@b tc_State) 3) (== (@b tc_State) 4))
  359.     (
  360.     (print "CPURegs: PC    %08lx  SR    %04lx\n"
  361.         (@l (+ cpu (@l tc_SPReg))) (@ (+ (+ 4 cpu) (@l tc_SPReg))))
  362.     (print "D: ")
  363.     (for (= i 0) (< i 8) (= i (+ 1 i))
  364.         (print "%08lx " (@l (+ (+ (+ 6 cpu) (@l tc_SPReg)) (* i 4)))))
  365.     (print "\nA: ")
  366.     (for (= i 8) (< i f) (= i (+ 1 i))
  367.         (print "%08lx " (@l (+ (+ (+ 6 cpu) (@l tc_SPReg)) (* i 4)))))
  368.     ))
  369.     (print "\n")
  370. )
  371.  
  372. ;format given address or current frame as a Process
  373. (macro showprocess (local addr)
  374.     (if (!= (nargs) 0)
  375.     (= addr (arg 1))
  376.     (= addr (current)))
  377.     (showtask addr)
  378.     (Process addr)
  379.     (print "Process Dependent ------------------------------------------\n")
  380.     (print "SegList      $%08lx  StackSize    $%08lx  GlobVec      $%08lx\n"
  381.       (LTOB pr_SegList) (@l pr_StackSize) (@l pr_GlobVec))
  382.     (print "TaskNum       %8ld  StackBase    $%08lx  Result2       %8ld\n"
  383.       (@l pr_TaskNum) (LTOB pr_StackBase) (@l pr_Result2))
  384.     (print "CurrentDir   $%08lx  CIS          $%08lx  COS          $%08lx\n"
  385.       (LTOB pr_CurrentDir) (LTOB pr_CIS) (LTOB pr_COS))
  386.     (print "ConsoleTask  $%08lx  FileSysTask  $%08lx  CLI          $%08lx\n"
  387.       (@l pr_ConsoleTask) (@l pr_FileSystemTask) (LTOB pr_CLI))
  388.     (print "ReturnAddr   $%08lx  PktWait      $%08lx\n"
  389.       (@l pr_ReturnAddr) (@l pr_PktWait))
  390.  
  391.     (if (== 0 (@l pr_CLI))
  392.     (return 0))
  393.  
  394.     (print "\nCLI Dependent ----------------------------------------------\n")
  395.     (CommandLineInterface (LTOB pr_CLI))
  396.     (print "Command: ") (BSTR cli_CommandName)
  397.     (print ",  Directory: ") (BSTR cli_SetName)
  398.     (print "\n")
  399.     (print "Module (SegList)  $%08lx\n" (LTOB cli_Module))
  400.     (print "DefaultStack $%08lx  ReturnCode    %8ld\n"
  401.       (@l cli_DefaultStack) (@l cli_ReturnCode))
  402. )
  403.  
  404.  
  405.  
  406. ;key bindings
  407. (key '~0 libraries)
  408. (key '~1 modules)
  409. (key '~2 devices)
  410. (key '~3 resources)
  411. (key '~4 memory)
  412. (key '~5 tasks)
  413. (key '~6 showtask)
  414. (key '~7 showprocess)
  415. (key '~8 ebase)
  416. (key '~9 symbols)
  417.  
  418.