home *** CD-ROM | disk | FTP | other *** search
/ io Programmo 23 / IOPROG_23.ISO / SOFT / ASM / GRDBDL17.ZIP / MTRAP.LST < prev    next >
Encoding:
File List  |  1998-08-31  |  30.9 KB  |  821 lines

  1. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 1
  2. mtrap.asm
  3.  
  4.  
  5.  
  6.       1                     ;
  7.       2                     ; GRDB
  8.       3                     ;
  9.       4                     ; Copyright(c)    LADsoft
  10.       5                     ;
  11.       6                     ; David Lindauer, gclind01@starbase.spd.louisville.edu
  12.       7                     ;
  13.       8                     ;
  14.       9                     ; mtrap.asm
  15.      10                     ;
  16.      11                     ; Function: handle the    all traps.  Int    3 and Int 1 are    debug traps and
  17.      12                     ; are handled specially
  18.      13                         ;MASM MODE
  19.      14        0000                 .model    small
  20.      15                         .386
  21.      16
  22.      17        0000                 .stack    1024
  23.      18
  24.      19                     include iversion.inc
  25. 1    20          =000E             verid = 14
  26.      21                     include  eprints.inc
  27. 1    22                     PRINT_MESSAGE     macro     string
  28. 1    23                         call     PrintFollowingMessage
  29. 1    24                         db     string,0
  30. 1    25                     endm
  31. 1    26
  32. 1    27                         EXTRN     printspace : PROC
  33. 1    28                         EXTRN     printdword:PROC
  34. 1    29                         EXTRN     printword:PROC
  35. 1    30                         EXTRN     printbyte:PROC
  36. 1    31                         EXTRN     scankey : PROC
  37. 1    32                         EXTRN     crlf :    PROC
  38. 1    33
  39. 1    34                         EXTRN     PureChar : PROC
  40. 1    35                         EXTRN     PutChar : PROC
  41. 1    36                         EXTRN     GetKey    : PROC
  42. 1    37                         EXTRN     PrintFollowingMessage : PROC
  43. 1    38                         EXTRN     olMessage : PROC
  44. 1    39                         EXTRN     dgroupMessage : PROC
  45. 1    40
  46.      41                     include  eregs.inc
  47. 1    42                         EXTRN     ReadReg : PROC
  48. 1    43                         EXTRN     DisplayRegisters : PROC
  49. 1    44                         EXTRN     ModifyRegisters : PROC
  50. 1    45
  51.      46                     include  einput.inc
  52. 1    47                         EXTRN     qerr :    PROC
  53. 1    48                         EXTRN     ReadNumber : PROC
  54. 1    49                         EXTRN     ReadAddress : PROC
  55. 1    50                         EXTRN     Inputhandler :    PROC
  56. 1    51                         EXTRN     WadeSpace : PROC
  57. 1    52                         EXTRN     GetInputLine :    PROC
  58. 1    53                         EXTRN     WadeSpaceOnly : PROC
  59. 1    54                         EXTRN     inputbuffer : byte
  60. 1    55                       EXTRN defDS : PROC
  61. 1    56                       EXTRN defCS : PROC
  62.      57                     include  ebreaks.inc
  63. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 2
  64. mtrap.asm
  65.  
  66.  
  67.  
  68. 1    58                         EXTRN    setbreak : PROC
  69. 1    59                         EXTRN     breaks    : PROC
  70. 1    60                         EXTRN    enableBreaks : PROC
  71. 1    61                         EXTRN     disableBreaks : PROC
  72. 1    62
  73.      63                     include  eenv.inc
  74. 1    64                         EXTRN     CopyEnv : PROC
  75. 1    65                         EXTRN     TgtPgmEnvSeg :    word
  76. 1    66                         EXTRN     TgtPgmEnvSpaceUsed: word
  77. 1    67                         EXTRN     TgtPgmNamePtr : word
  78. 1    68                         EXTRN     TgtPgmEnvLen :    word
  79. 1    69                         EXTRN     SetEnvName : PROC
  80. 1    70                         EXTRN     QualifyName : PROC
  81. 1    71
  82.      72                     include  eloader.inc
  83. 1    73                         EXTRN     MakeEmptyProg : PROC
  84. 1    74                         EXTRN     userbasepsp : word
  85. 1    75                         EXTRN     filelen : dword
  86. 1    76                         EXTRN     loadcommand : byte
  87. 1    77                         EXTRN     loadfile : byte
  88. 1    78                         EXTRN     exeflag : byte
  89. 1    79                         EXTRN     LoadProgram : proc
  90. 1    80                         EXTRN     ParseProgName : PROC
  91. 1    81                         EXTRN     ExeStats : PROC
  92. 1    82                         EXTRN     lastexe : byte
  93. 1    83                         EXTRN     lastip    : dword
  94. 1    84                         EXTRN     lastcs: word
  95. 1    85
  96.      86                     include  elogging.inc
  97. 1    87                         EXTRN     LogToFile : PROC
  98. 1    88                         EXTRN     CloseLogFile :    PROC
  99. 1    89                         EXTRN     LoggingStat : PROC
  100. 1    90
  101.      91                     include  edos.inc
  102. 1    92                         EXTRN     SetUserPSP :PROC
  103. 1    93                         EXTRN     SetDebugPSP : PROC
  104. 1    94                         EXTRN     userpsp : word
  105. 1    95                         EXTRN     int20handle : PROC
  106. 1    96                         EXTRN     int21handle : PROC
  107. 1    97                         EXTRN     UnLoadProgram : PROC
  108. 1    98                         EXTRN     KillFiles : PROC
  109. 1    99                         EXTRN     int1bh    : PROC
  110. 1   100                         EXTRN     CtrlBrkPressedInDOS : byte
  111.     101                     include  eMemory.inc
  112. 1   102                         EXTRN     ResizeMem : PROC
  113. 1   103                         EXTRN     ReleaseDebugMem : PROC
  114. 1   104                         EXTRN     ReleaseMemory : PROC
  115. 1   105                         EXTRN     tagarena : PROC
  116. 1   106
  117.     107                     include  eints.inc
  118. 1   108                         EXTRN     SetRMInts : PROC
  119. 1   109                         EXTRN     IntSnapShot : PROC
  120. 1   110                         EXTRN     UnLoadInts : PROC
  121. 1   111                         EXTRN     ReleaseRMInts : PROC
  122. 1   112                         EXTRN     SetVectAttrib : PROC
  123. 1   113                         EXTRN     intpage : word
  124. 1   114                         EXTRN     int21adr : dword
  125. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 3
  126. mtrap.asm
  127.  
  128.  
  129.  
  130. 1   115                         EXTRN     orgpic    : word
  131. 1   116                         EXTRN     int20adr : dword
  132. 1   117
  133.     118                     include  eexec.inc
  134. 1   119                         EXTRN     trap :    PROC
  135. 1   120                         EXTRN     go : PROC
  136. 1   121                         EXTRN     proceed : PROC
  137. 1   122                         EXTRN     callcheck : PROC
  138. 1   123                         EXTRN     cmpstring : PROC
  139. 1   124                         EXTRN     wadeprefix : PROC
  140. 1   125
  141.     126                     include eoptions.inc
  142. 1   127                         EXTRN     optdword : byte
  143. 1   128                         EXTRN     optdwordcommand : byte
  144. 1   129                         EXTRN     doopt : PROC
  145. 1   130                         EXTRN     optdiv0 : byte
  146. 1   131                         EXTRN     optpure : byte
  147. 1   132                       EXTRN optflat0 : byte
  148. 1   133                       EXTRN optsignedimm :    byte
  149. 1   134                         EXTRN     ReadOptions : PROC
  150. 1   135                         EXTRN     WriteOptions :    PROC
  151. 1   136                         EXTRN     opthist : byte
  152. 1   137                         EXTRN     Disassemble32Bit : byte
  153. 1   138                         EXTRN     winshellchk : PROC
  154. 1   139                       EXTRN optdosio : byte
  155.     140                     include eloader.inc
  156. 1   141                         EXTRN     MakeEmptyProg : PROC
  157. 1   142                         EXTRN     userbasepsp : word
  158. 1   143                         EXTRN     filelen : dword
  159. 1   144                         EXTRN     loadcommand : byte
  160. 1   145                         EXTRN     loadfile : byte
  161. 1   146                         EXTRN     exeflag : byte
  162. 1   147                         EXTRN     LoadProgram : proc
  163. 1   148                         EXTRN     ParseProgName : PROC
  164. 1   149                         EXTRN     ExeStats : PROC
  165. 1   150                         EXTRN     lastexe : byte
  166. 1   151                         EXTRN     lastip    : dword
  167. 1   152                         EXTRN     lastcs: word
  168. 1   153
  169.     154                     include ehistory.inc
  170. 1   155                         EXTRN     LoadHistory : PROC
  171. 1   156                         EXTRN     EnterHistory :    PROC
  172. 1   157                         EXTRN     CheckHistory:PROC
  173. 1   158                       EXTRN histoff : PROC
  174. 1   159                         EXTRN histon :    PROC
  175.     160                     include eswift.inc
  176. 1   161                         EXTRN     traceon : byte
  177. 1   162                         EXTRN     swiftrace : PROC
  178. 1   163                         EXTRN     untrace : proc
  179. 1   164
  180.     165                     include efp.inc
  181. 1   166                         EXTRN     fpcommand : PROC
  182. 1   167                         EXTRN     floatcheck : PROC
  183. 1   168
  184.     169                     include ehbreak.inc
  185. 1   170                         EXTRN     hdwebreakcommand : PROC
  186. 1   171                         EXTRN     hdwebreakenable : PROC
  187. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 4
  188. mtrap.asm
  189.  
  190.  
  191.  
  192. 1   172                         EXTRN     hdwebreakdisable : PROC
  193. 1   173                         EXTRN     hdwechk : PROC
  194. 1   174
  195.     175
  196.     176                         public     entry3,indos,entry1
  197.     177                         PUBLIC     RegdumpFLAGS,RegdumpEAX,RegdumpEBX,RegdumpECX,RegdumpEDX
  198.     178                         PUBLIC     RegdumpESI,RegdumpEDI,RegdumpEBP
  199.     179                         PUBLIC     RegdumpESP,RegdumpEIP
  200.     180                         PUBLIC     RegdumpCS,RegdumpES,RegdumpDS,RegdumpSS,RegdumpFS,RegdumpGS
  201.     181                         PUBLIC     TrapHandler, _exit, psp
  202. **Error** mtrap.asm(43)    Undefined symbol: TrapHandler
  203.     182                         PUBLIC     reentry, grdbname, veclist, entry1
  204.     183                         PUBLIC     stackseg,stackofs, dosver
  205.     184
  206.     185                         extrn checkcpu    : PROC,    FileLoadErr : PROC, trapcount :    dword
  207.     186                         extrn ReTrap :    PROC
  208.     187                         EXTRN     initflatreal:PROC, rundownflatreal : PROC
  209.     188                     ;
  210.     189                     ; CPU instruction trap    enable flag
  211.     190                     ;
  212.     191          =0100             TRAPFLAG = 100h
  213.     192
  214.     193        0000                 .data
  215.     194        0000  0000             stackofs     dw     0     ;to restore out stack in INT1
  216.     195        0002  0000             stackseg     dw     0
  217.     196                     ;
  218.     197                     ; Register image
  219.     198                     ;
  220.     199        0004  00             veclist db     00h
  221.     200        0005  006Ar                 dw     entry0
  222.     201        0007  01                 db     1
  223.     202        0008  0077r                 dw     entry1
  224.     203        000A  03                 db     3
  225.     204        000B  008Er                 dw     entry3
  226.     205        000D  1B                 db     1bh
  227.     206        000E  0000e                 dw     int1bh
  228.     207        0010  20                 db     20h
  229.     208        0011  0000e                 dw     int20handle
  230.     209        0013  21                 db     21h
  231.     210        0014  0000e                 dw     int21handle
  232.     211        0016  FF                 db     0ffh     ; trailer
  233.     212        0017  00000000         RegdumpFLAGS     dd     0
  234.     213        001B  00000000         RegdumpEAX     dd     0
  235.     214        001F  00000000         RegdumpEBX     dd     0
  236.     215        0023  00000000         RegdumpECX     dd     0
  237.     216        0027  00000000         RegdumpEDX     dd     0
  238.     217        002B  00000000         RegdumpESI     dd     0
  239.     218        002F  00000000         RegdumpEDI     dd     0
  240.     219        0033  00000000         RegdumpEBP     dd     0
  241.     220        0037  00000000         RegdumpESP     dd     0
  242.     221        003B  00000000         RegdumpEIP     dd     0
  243.     222        003F  0000             RegdumpCS     dw     0
  244.     223        0041  0000             RegdumpES     dw     0
  245.     224        0043  0000             RegdumpDS     dw     0
  246.     225        0045  0000             RegdumpSS     dw     0
  247.     226        0047  0000             RegdumpFS     dw     0
  248.     227        0049  0000             RegdumpGS     dw     0
  249. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 5
  250. mtrap.asm
  251.  
  252.  
  253.  
  254.     228                     ;
  255.     229        004B  0000             dosver     dw     0
  256.     230        004D  0000             haserr     dw     0     ; If there is an error# on stack
  257.     231        004F  0000             errnum     dw     0     ; The error#
  258.     232        0051  0000             trapnum dw     0     ; The trap#
  259.     233        0053  00000000         indos     dd     0     ; pointer to indos flag
  260.     234        0057  2A 2A    2A 2A 2A 2A 2A+     grdbname     db     '********',0
  261.     235          2A 00
  262.     236        0060  0000             psp     dw     0     ;debugger PSP
  263.     237        0062  00             neederr db     0     ;flag for file    load result from command line
  264.     238
  265.     239        0063  00006790         trappop dd     6790h     ;traps    that need to pop a value
  266.     240
  267.     241        0067                 .code
  268.     242        0000  47 52    44 42 20 72 65+     cpuerr     db     "GRDB requires    a 386 or better    processor",0
  269.     243          71 75    69 72 65 73 20+
  270.     244          61 20    33 38 36 20 6F+
  271.     245          72 20    62 65 74 74 65+
  272.     246          72 20    70 72 6F 63 65+
  273.     247          73 73    6F 72 00
  274.     248        0028  6E 6F    74 20 65 6E 6F+     memerr     db     "not enough memory/corrupt arena",0
  275.     249          75 67    68 20 6D 65 6D+
  276.     250          6F 72    79 2F 63 6F 72+
  277.     251          72 75    70 74 20 61 72+
  278.     252          65 6E    61 00
  279.     253        0048  47 52    44 42 20 72 65+     vererr     db     "GRDB requires    MSDOS 4.0 or better"
  280.     254          71 75    69 72 65 73 20+
  281.     255          4D 53    44 4F 53 20 34+
  282.     256          2E 30    20 6F 72 20 62+
  283.     257          65 74    74 65 72
  284.     258        0069  00             nomsg     db     0
  285.     259
  286.     260                     ;This macro generates a front end for the interrupt handlers installed    for
  287.     261                     ;int 0, 1 and 3.
  288.     262
  289.     263                     entry     macro     num
  290.     264                         local     est
  291.     265                     entry&num:
  292.     266                     if num    EQ 1
  293.     267                         call     hdwechk
  294.     268                         jc     est
  295.     269                         call     swiftrace
  296.     270                     endif
  297.     271                     if num    EQ 3
  298.     272                         call     swiftrace
  299.     273                     endif
  300.     274                     est:
  301.     275                         push     gs
  302.     276                         push     fs
  303.     277                         push     es
  304.     278                         push     ds
  305.     279                         pushad
  306.     280                         mov     al,num
  307.     281                         jmp     traphandler
  308.     282                     endm
  309.     283
  310.     284                         entry     0
  311. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 6
  312. mtrap.asm
  313.  
  314.  
  315.  
  316. 1   285        006A             entry0:
  317. 1   286        006A             ??0000:
  318. 1   287        006A  0F A8                 push     gs
  319. 1   288        006C  0F A0                 push     fs
  320. 1   289        006E  06                 push     es
  321. 1   290        006F  1E                 push     ds
  322. 1   291        0070  66| 60             pushad
  323. 1   292        0072  B0 00                 mov     al,0
  324. 1   293        0074  E9 009E             jmp     traphandler
  325.     294                         entry     1
  326. 1   295        0077             entry1:
  327. 1   296        0077  E8 0000e             call     hdwechk
  328. 1   297        007A  72 05    90 90             jc     ??0001
  329. 1   298        007E  E8 0000e             call     swiftrace
  330. 1   299        0081             ??0001:
  331. 1   300        0081  0F A8                 push     gs
  332. 1   301        0083  0F A0                 push     fs
  333. 1   302        0085  06                 push     es
  334. 1   303        0086  1E                 push     ds
  335. 1   304        0087  66| 60             pushad
  336. 1   305        0089  B0 01                 mov     al,1
  337. 1   306        008B  E9 0087             jmp     traphandler
  338.     307                         entry     3
  339. 1   308        008E             entry3:
  340. 1   309        008E  E8 0000e             call     swiftrace
  341. 1   310        0091             ??0002:
  342. 1   311        0091  0F A8                 push     gs
  343. 1   312        0093  0F A0                 push     fs
  344. 1   313        0095  06                 push     es
  345. 1   314        0096  1E                 push     ds
  346. 1   315        0097  66| 60             pushad
  347. 1   316        0099  B0 03                 mov     al,3
  348. 1   317        009B  EB 78    90             jmp     traphandler
  349.     318
  350.     319                     ;
  351.     320                     ; Save    an image of the    regs
  352.     321                     ; This    MUST BE    the first thing    the trap handler calls;    it assumes
  353.     322                     ; there is ONE    PUSH (return address) followed by the DS at the    time
  354.     323                     ; of interrupt    followed by the    interrupt data
  355.     324                     ;
  356.     325        009E             saveregs     PROC
  357.     326        009E  59                 pop     cx
  358.     327        009F  66| 8F 06 002Fr         pop     [RegdumpEDI]
  359.     328        00A4  66| 8F 06 002Br         pop     [RegdumpESI]
  360.     329        00A9  66| 8F 06 0033r         pop     [RegdumpEBP]
  361.     330        00AE  66| 58             pop     eax
  362.     331        00B0  66| 8F 06 001Fr         pop     [RegdumpEBX]
  363.     332        00B5  66| 8F 06 0027r         pop     [RegdumpEDX]
  364.     333        00BA  66| 8F 06 0023r         pop     [RegdumpECX]
  365.     334        00BF  66| 8F 06 001Br         pop     [RegdumpEAX]
  366.     335        00C4  8F 06    0043r             pop     [RegdumpDS]
  367.     336        00C8  8F 06    0041r             pop     [RegdumpES]
  368.     337        00CC  8F 06    0047r             pop     [RegdumpFS]
  369.     338        00D0  8F 06    0049r             pop     [RegdumpGS]
  370.     339        00D4  0F BA    26 004Dr 00         bt     [haserr],0     ; See if an error
  371.     340        00DA  73 05                 jnc     short noerr     ;
  372.     341        00DC  66| 58             pop     eax         ; Get the error #
  373. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 7
  374. mtrap.asm
  375.  
  376.  
  377.  
  378.     342        00DE  A3 004Fr             mov     [errnum],ax     ;
  379.     343        00E1             noerr:
  380.     344        00E1  8F 06    003Br             pop     word ptr [RegdumpEIP]
  381.     345        00E5  8F 06    003Fr             pop     [RegdumpCS]
  382.     346        00E9  8F 06    0017r             pop     word ptr [RegdumpFLAGS]
  383.     347        00ED  8C D0                 mov     ax,ss         ; Otherwise just save the current
  384.     348        00EF  A3 0045r             mov     [RegdumpSS],ax     ; stack pointer before    we started pushing
  385.     349        00F2  66| 89 26 0037r         mov     [RegdumpESP],esp     ;
  386.     350        00F7  FF E1                 jmp     cx
  387.     351        00F9             saveregs     ENDP
  388.     352                     ;
  389.     353                     ; Adjust EIP to the trap if it's not int 3
  390.     354                     ;
  391.     355        00F9             adjusteip     PROC
  392.     356        00F9  83 3E    0051r 03         cmp     [trapnum],3     ; See if int 3
  393.     357        00FE  75 14                 jnz     short noadj     ; No, get out
  394.     358        0100  66| 8B 1E 003Br         mov     ebx,[RegdumpEIP]     ;
  395.     359        0105  8E 26    003Fr             mov     fs,[RegdumpCS]     ;
  396.     360        0109  64: 80 7F FF CC         cmp     BYTE PTR fs:[bx-1],0cch ; See if is an    INT 3
  397.     361        010E  74 04                 jz     short nodecrement ; Get out if    so
  398.     362        0110  FF 0E    003Br             dec     word ptr [RegdumpEIP]         ; Else    point at trap
  399.     363        0114             nodecrement:
  400.     364        0114             noadj:
  401.     365        0114  C3                 ret
  402.     366        0115             adjusteip     ENDP
  403.     367                     ;
  404.     368                     ; Generic trap    handler, int 1/3
  405.     369                     ;
  406.     370        0115             traphandler     PROC
  407.     371        0115  FC                 cld
  408.     372        0116  FB                 sti
  409.     373        0117  8B 1E    0000             mov     bx,dgroup
  410. **Error** mtrap.asm(190) Undefined symbol: dgroup
  411.     374        011B  8E DB                 mov     ds,bx
  412.     375        011D  8E C3                 mov     es,bx
  413.     376        011F  C6 06    0000e 00         mov     [CtrlBrkPressedInDOS],0
  414.     377        0124  66| 0F B6 C0             movzx     eax,al
  415.     378        0128  A3 0051r             mov     [trapnum],ax
  416.     379        012B  66| 0F A3 06 0063r         bt     [trappop],eax
  417.     380        0131  73 06    90 90             jnc     noerr2
  418.     381        0135  FF 06    004Dr             inc     [haserr]     ; Set the error flag
  419.     382        0139             noerr2:
  420.     383        0139  BE 0004r             mov     si,offset veclist
  421.     384        013C  E8 0000e             call     ReleaseRMInts
  422.     385        013F  E8 FF5C             call     saveregs     ; Save    Regs
  423.     386        0142  66| 81 26 0017r     +         and     [RegdumpFLAGS],NOT TRAPFLAG ; reset trap flag in flags    image
  424.     387          FFFFFEFF
  425.     388        014B  8E 16    0002r             mov     ss,[stackseg]     ; load    our stack
  426.     389        014F  66| 0F B7 26 0000r         movzx     esp,[stackofs]     ; clear top of    ESP just in case...
  427.     390        0155  E8 0000e             call     disableBreaks     ; Disable breakpoints if not
  428.     391        0158  E8 FF9E             call     adjusteip     ; Adjust the EIP to point to the breakpoint
  429.     392        015B  E8 0000e             call     SetDebugPSP
  430.     393        015E  E8 0000e             call     crlf
  431.     394        0161  83 3E    0051r 03         cmp     [trapnum],3     ; No stats if it is int 3
  432.     395        0166  74 38                 jz     short reentry     ;
  433.     396        0168  83 3E    0051r 01         cmp     [trapnum],1     ; Or int 1
  434.     397        016D  74 31                 jz     short reentry     ;
  435. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 8
  436. mtrap.asm
  437.  
  438.  
  439.  
  440.     398                         PRINT_MESSAGE     <'Trap: '>
  441. 1   399        016F  E8 0000e             call     PrintFollowingMessage
  442. 1   400        0172  54 72    61 70 3A 20 00         db     'Trap:    ',0
  443.     401        0179  A1 0051r             mov     ax,[trapnum]     ; Say which one
  444.     402        017C  E8 0000e             call     printbyte     ;
  445.     403        017F  E8 0000e             call     crlf
  446.     404        0182  0F BA    36 004Dr 00         btr     [haserr],0     ; If has error
  447.     405        0188  73 16    90 90             jnc     reentry     ;
  448.     406                         PRINT_MESSAGE     <'Error: '>
  449. 1   407        018C  E8 0000e             call     PrintFollowingMessage
  450. 1   408        018F  45 72    72 6F 72 3A 20+         db     'Error: ',0
  451.     409          00
  452.     410        0197  A1 004Fr             mov     ax,[errnum]     ; Say which one
  453.     411        019A  E8 0000e             call     printword
  454.     412        019D  E8 0000e             call     crlf
  455.     413                     ; fall    through
  456.     414        01A0             traphandler ENDP
  457.     415        01A0             reentry PROC
  458.     416        01A0  E8 0000e             call     DisplayRegisters; Display registers
  459.     417        01A3  66| F7 06 0000e     +         test     [trapcount],-1     ; see if tracing more than 1
  460.     418          FFFFFFFF
  461.     419        01AC  74 0A    90 90             jz     noretrace
  462.     420        01B0  66| FF 0E 0000e         dec     [trapcount]     ; yes,    go do another trace
  463.     421        01B5  E9 0000e             jmp     ReTrap
  464.     422        01B8             noretrace:
  465.     423        01B8  E8 0000e             call     initflatreal     ; put us in flat real mode
  466.     424        01BB  F6 06    0062r FF         test     [neederr],-1     ; test    if an error (startup usually)
  467.     425        01C0  0F 84    0000             jz     InputHandler
  468. **Error** mtrap.asm(235) Undefined symbol: InputHandler
  469.     426        01C4  8A 26    0062r             mov     ah,[neederr]     ; yes,    kill it
  470.     427        01C8  C6 06    0062r 00         mov     [neederr],0
  471.     428        01CD  9E                 sahf
  472.     429        01CE  E8 0000e             call     FileLoadErr     ; display the error message
  473.     430        01D1  E9 0000             jmp     InputHandler     ; Go do input
  474. **Error** mtrap.asm(240) Undefined symbol: InputHandler
  475.     431
  476.     432        01D4             reentry ENDP
  477.     433                     ;
  478.     434                     ; Monitor init    routine, point all traps to point to the monitor handler
  479.     435                     ;
  480.     436
  481.     437        01D4             start:
  482.     438        01D4  8B 1E    0000             mov     bx,dgroup     ; setup
  483. **Error** mtrap.asm(248) Undefined symbol: dgroup
  484.     439        01D8  8E DB                 mov     ds,bx
  485.     440        01DA  8C 06    0060r             mov     [psp],es     ; our PSP
  486.     441        01DE  8E C3                 mov     es,bx         ;set ES to DX
  487.     442        01E0  8C D0                 mov     ax,ss         ; have    to adjust stack    to be DS-relative
  488.     443        01E2  2B C3                 sub     ax,bx         ; the disassembler requires it
  489.     444        01E4  C1 E0    04             shl     ax,4         ;to segment
  490.     445        01E7  03 C4                 add     ax,sp         ;add in the stack pointer
  491.     446        01E9  8E D3                 mov     ss,bx         ;set SS to DS
  492.     447        01EB  8B E0                 mov     sp,ax         ;and new stack    based on DS
  493.     448        01ED  8C 16    0002r             mov     [stackseg],ss
  494.     449        01F1  89 26    0000r             mov     [stackofs],sp
  495.     450                         PRINT_MESSAGE     <"GRDB    version    ",30h +VERID/10,'.',30h    + VERID    MOD 10,    " Copyright +
  496.     451                     (c) LADsoft",13,10,13,10>
  497. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 9
  498. mtrap.asm
  499.  
  500.  
  501.  
  502. 1   452        01F5  E8 0000e             call     PrintFollowingMessage
  503. 1   453        01F8  47 52    44 42 20 76 65+         db     "GRDB version ",30h +VERID/10,'.',30h + VERID MOD 10, " Copyright (c)        +
  504.     454          72 73    69 6F 6E 20 30+     LADsoft",13,10,13,10,0
  505.     455          2E 30    20 43 6F 70 79+
  506.     456          72 69    67 68 74 20 28+
  507.     457          63 29    20 4C 41 44 73+
  508.     458          6F 66    74 0D 0A 0D 0A+
  509.     459          00
  510. **Error** mtrap.asm(260) PRINT_MESSAGE(2) Undefined symbol: VERID
  511.     460        0223  B4 30                 mov     ah,30h                 ; dos version check
  512.     461        0225  CD 21                 int     21h
  513.     462        0227  3C 04                 cmp     al,4
  514.     463        0229  BA 0048r             mov     dx,offset cs:vererr
  515.     464        022C  0F 82    008C             jc     errx
  516.     465        0230  86 E0                 xchg     ah,al
  517.     466        0232  A3 004Br             mov     [dosver],ax
  518.     467        0235  06                 push     es                 ; get indos flag
  519.     468        0236  B4 34                 mov     ah,34h
  520.     469        0238  CD 21                 int     21h
  521.     470        023A  89 1E    0053r             mov     word ptr [indos],bx
  522.     471        023E  8C 06    0055r             mov     word ptr [indos+2],es
  523.     472        0242  07                 pop     es
  524.     473        0243  E8 0000e             call     checkcpu             ; validate CPU
  525.     474        0246  BA 0000r             mov     dx,offset cs:cpuerr
  526.     475        0249  72 71    90 90             jc     errx
  527.     476        024D  E8 0000e             call     ResizeMem             ; cut mem back
  528.     477        0250  BA 0028r             mov     dx,offset cs:memerr
  529.     478        0253  72 67    90 90             jc     errx
  530.     479        0257  E8 0000             call     IntSnapshot             ; grab    the ints so we can
  531. **Error** mtrap.asm(281) Undefined symbol: IntSnapshot
  532.     480                                             ; restoire context later
  533.     481        025A  BA 0028r             mov     dx,offset cs:memerr
  534.     482        025D  72 4F    90 90             jc     errx2
  535.     483        0261  BE 0057r             mov     si,offset grdbname     ; create data spaces for
  536.     484        0264  E8 0000e             call     MakeEmptyProg             ; empty prog
  537.     485        0267  BA 0028r             mov     dx,offset cs:memerr
  538.     486        026A  72 42    90 90             jc     errx2
  539.     487        026E  E8 0000e             call     ReadOptions             ; read    the options disk file
  540.     488        0271  E8 0000             call     FloatCheck             ; check for an    FP coprocessor
  541. **Error** mtrap.asm(290) Undefined symbol: FloatCheck
  542.     489
  543.     490        0274  1E                 push     ds                 ; parse command line params
  544.     491        0275  8E 1E    0060r             mov     ds,[psp]
  545.     492        0279  BE 0081             mov     si,81h
  546.     493        027C  E8 0000e             call     ParseProgName
  547.     494        027F  1F                 pop     ds
  548.     495        0280  F6 06    0000e FF         test     [loadfile],-1             ; load    program
  549.     496        0285  74 0C    90 90             jz     dohist
  550.     497        0289  2B C0                 sub     ax,ax
  551.     498        028B  E8 0000e             call     LoadProgram             ; load    the program
  552.     499        028E  9F                 lahf
  553.     500        028F  88 26    0062r             mov     [neederr],ah
  554.     501        0293             dohist:
  555.     502        0293  F6 06    0000e FF         test     [opthist],0ffh             ; init    history
  556.     503        0298  0F 84    FF04             jz     reentry
  557.     504        029C  E8 0000e             call     LoadHistory
  558.     505        029F  E9 FEFE             jmp     reentry             ; get us started
  559. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 10
  560. mtrap.asm
  561.  
  562.  
  563.  
  564.     506                     ;
  565.     507                     ; program exit
  566.     508                     ;
  567.     509        02A2             _exit:
  568.     510        02A2  E8 0000e             call     KillFiles             ; close files they opened
  569.     511        02A5  E8 0000e             call     CloseLogFile             ; close our log file
  570.     512        02A8  E8 0000e             call     rundownflatreal         ; no more flat    real mode
  571.     513        02AB  BA 0069r             mov     dx,offset cs:nomsg
  572.     514        02AE             errx2:
  573.     515        02AE  52                 push     dx
  574.     516        02AF  E8 0000e             call     UnLoadInts             ; unload int vects
  575.     517        02B2  E8 0000e             call     ReleaseMemory             ; release any memory tagged
  576.     518                                             ; to them
  577.     519        02B5  E8 0000e             call     ReleaseDebugMem         ; release any memory tagged
  578.     520                                             ; to us
  579.     521        02B8  E8 0000e             call     WriteOptions             ; write options file
  580.     522        02BB  5A                 pop     dx
  581.     523        02BC             errx:
  582.     524        02BC  8B DA                 mov     bx,dx
  583.     525        02BE  E8 0000e             call     olMessage             ; display whatever message
  584.     526        02C1  BB 0000             mov     bx,0                 ; close the input file
  585.     527        02C4  B4 3E                 mov     ah,3eh
  586.     528        02C6  CD 21                 int     21h
  587.     529        02C8  B8 4C00             mov     ax,4c00h
  588.     530        02CB  CD 21                 int     21h
  589.     531
  590.     532                         END     start
  591. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 11
  592. Symbol Table
  593.  
  594.  
  595.  
  596.  
  597. Symbol Name              Type     Value
  598.  
  599. ??0000                  Near16 _TEXT:006A
  600. ??0001                  Near16 _TEXT:0081
  601. ??0002                  Near16 _TEXT:0091
  602. ??date                  Text     "08-31-98"
  603. ??filename              Text     "mtrap      "
  604. ??time                  Text     "14:27:44"
  605. ??version              Number 0500
  606. @32Bit                  Text     0
  607. @CodeSize              Text     0
  608. @Cpu                  Text     0F0FH
  609. @DataSize              Text     0
  610. @FileName              Text     mtrap
  611. @Interface              Text     000h
  612. @Model                  Text     2
  613. @WordSize              Text     2
  614. @code                  Text     _TEXT
  615. @curseg                  Text     _TEXT
  616. @data                  Text     DGROUP
  617. @stack                  Text     DGROUP
  618. CheckHistory              Near16 ----:---- Extern
  619. CloseLogFile              Near16 ----:---- Extern
  620. CopyEnv                  Near16 ----:---- Extern
  621. CtrlBrkPressedInDOS          Byte     ----:---- Extern
  622. Disassemble32Bit          Byte     ----:---- Extern
  623. DisplayRegisters          Near16 ----:---- Extern
  624. EnterHistory              Near16 ----:---- Extern
  625. ExeStats              Near16 ----:---- Extern
  626. FileLoadErr              Near16 ----:---- Extern
  627. GetInputLine              Near16 ----:---- Extern
  628. GetKey                  Near16 ----:---- Extern
  629. Inputhandler              Near16 ----:---- Extern
  630. IntSnapShot              Near16 ----:---- Extern
  631. KillFiles              Near16 ----:---- Extern
  632. LoadHistory              Near16 ----:---- Extern
  633. LoadProgram              Near16 ----:---- Extern
  634. LogToFile              Near16 ----:---- Extern
  635. LoggingStat              Near16 ----:---- Extern
  636. MakeEmptyProg              Near16 ----:---- Extern
  637. ModifyRegisters              Near16 ----:---- Extern
  638. ParseProgName              Near16 ----:---- Extern
  639. PrintFollowingMessage          Near16 ----:---- Extern
  640. PureChar              Near16 ----:---- Extern
  641. PutChar                  Near16 ----:---- Extern
  642. QualifyName              Near16 ----:---- Extern
  643. ReTrap                  Near16 ----:---- Extern
  644. ReadAddress              Near16 ----:---- Extern
  645. ReadNumber              Near16 ----:---- Extern
  646. ReadOptions              Near16 ----:---- Extern
  647. ReadReg                  Near16 ----:---- Extern
  648. RegdumpCS              Word     DGROUP:003F
  649. RegdumpDS              Word     DGROUP:0043
  650. RegdumpEAX              Dword     DGROUP:001B
  651. RegdumpEBP              Dword     DGROUP:0033
  652. RegdumpEBX              Dword     DGROUP:001F
  653. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 12
  654. Symbol Table
  655.  
  656.  
  657.  
  658. RegdumpECX              Dword     DGROUP:0023
  659. RegdumpEDI              Dword     DGROUP:002F
  660. RegdumpEDX              Dword     DGROUP:0027
  661. RegdumpEIP              Dword     DGROUP:003B
  662. RegdumpES              Word     DGROUP:0041
  663. RegdumpESI              Dword     DGROUP:002B
  664. RegdumpESP              Dword     DGROUP:0037
  665. RegdumpFLAGS              Dword     DGROUP:0017
  666. RegdumpFS              Word     DGROUP:0047
  667. RegdumpGS              Word     DGROUP:0049
  668. RegdumpSS              Word     DGROUP:0045
  669. ReleaseDebugMem              Near16 ----:---- Extern
  670. ReleaseMemory              Near16 ----:---- Extern
  671. ReleaseRMInts              Near16 ----:---- Extern
  672. ResizeMem              Near16 ----:---- Extern
  673. SetDebugPSP              Near16 ----:---- Extern
  674. SetEnvName              Near16 ----:---- Extern
  675. SetRMInts              Near16 ----:---- Extern
  676. SetUserPSP              Near16 ----:---- Extern
  677. SetVectAttrib              Near16 ----:---- Extern
  678. TRAPFLAG              Number 0100
  679. TgtPgmEnvLen              Word     ----:---- Extern
  680. TgtPgmEnvSeg              Word     ----:---- Extern
  681. TgtPgmEnvSpaceUsed          Word     ----:---- Extern
  682. TgtPgmNamePtr              Word     ----:---- Extern
  683. UnLoadInts              Near16 ----:---- Extern
  684. UnLoadProgram              Near16 ----:---- Extern
  685. WadeSpace              Near16 ----:---- Extern
  686. WadeSpaceOnly              Near16 ----:---- Extern
  687. WriteOptions              Near16 ----:---- Extern
  688. _exit                  Near16 _TEXT:02A2
  689. adjusteip              Near16 _TEXT:00F9
  690. breaks                  Near16 ----:---- Extern
  691. callcheck              Near16 ----:---- Extern
  692. checkcpu              Near16 ----:---- Extern
  693. cmpstring              Near16 ----:---- Extern
  694. cpuerr                  Byte     _TEXT:0000
  695. crlf                  Near16 ----:---- Extern
  696. defCS                  Near16 ----:---- Extern
  697. defDS                  Near16 ----:---- Extern
  698. dgroupMessage              Near16 ----:---- Extern
  699. disableBreaks              Near16 ----:---- Extern
  700. dohist                  Near16 _TEXT:0293
  701. doopt                  Near16 ----:---- Extern
  702. dosver                  Word     DGROUP:004B
  703. enableBreaks              Near16 ----:---- Extern
  704. entry0                  Near16 _TEXT:006A
  705. entry1                  Near16 _TEXT:0077
  706. entry3                  Near16 _TEXT:008E
  707. errnum                  Word     DGROUP:004F
  708. errx                  Near16 _TEXT:02BC
  709. errx2                  Near16 _TEXT:02AE
  710. exeflag                  Byte     ----:---- Extern
  711. filelen                  Dword     ----:---- Extern
  712. floatcheck              Near16 ----:---- Extern
  713. fpcommand              Near16 ----:---- Extern
  714. go                  Near16 ----:---- Extern
  715. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 13
  716. Symbol Table
  717.  
  718.  
  719.  
  720. grdbname              Byte     DGROUP:0057
  721. haserr                  Word     DGROUP:004D
  722. hdwebreakcommand          Near16 ----:---- Extern
  723. hdwebreakdisable          Near16 ----:---- Extern
  724. hdwebreakenable              Near16 ----:---- Extern
  725. hdwechk                  Near16 ----:---- Extern
  726. histoff                  Near16 ----:---- Extern
  727. histon                  Near16 ----:---- Extern
  728. indos                  Dword     DGROUP:0053
  729. initflatreal              Near16 ----:---- Extern
  730. inputbuffer              Byte     ----:---- Extern
  731. int1bh                  Near16 ----:---- Extern
  732. int20adr              Dword     ----:---- Extern
  733. int20handle              Near16 ----:---- Extern
  734. int21adr              Dword     ----:---- Extern
  735. int21handle              Near16 ----:---- Extern
  736. intpage                  Word     ----:---- Extern
  737. lastcs                  Word     ----:---- Extern
  738. lastexe                  Byte     ----:---- Extern
  739. lastip                  Dword     ----:---- Extern
  740. loadcommand              Byte     ----:---- Extern
  741. loadfile              Byte     ----:---- Extern
  742. memerr                  Byte     _TEXT:0028
  743. neederr                  Byte     DGROUP:0062
  744. noadj                  Near16 _TEXT:0114
  745. nodecrement              Near16 _TEXT:0114
  746. noerr                  Near16 _TEXT:00E1
  747. noerr2                  Near16 _TEXT:0139
  748. nomsg                  Byte     _TEXT:0069
  749. noretrace              Near16 _TEXT:01B8
  750. olMessage              Near16 ----:---- Extern
  751. optdiv0                  Byte     ----:---- Extern
  752. optdosio              Byte     ----:---- Extern
  753. optdword              Byte     ----:---- Extern
  754. optdwordcommand              Byte     ----:---- Extern
  755. optflat0              Byte     ----:---- Extern
  756. opthist                  Byte     ----:---- Extern
  757. optpure                  Byte     ----:---- Extern
  758. optsignedimm              Byte     ----:---- Extern
  759. orgpic                  Word     ----:---- Extern
  760. printbyte              Near16 ----:---- Extern
  761. printdword              Near16 ----:---- Extern
  762. printspace              Near16 ----:---- Extern
  763. printword              Near16 ----:---- Extern
  764. proceed                  Near16 ----:---- Extern
  765. psp                  Word     DGROUP:0060
  766. qerr                  Near16 ----:---- Extern
  767. reentry                  Near16 _TEXT:01A0
  768. rundownflatreal              Near16 ----:---- Extern
  769. saveregs              Near16 _TEXT:009E
  770. scankey                  Near16 ----:---- Extern
  771. setbreak              Near16 ----:---- Extern
  772. stackofs              Word     DGROUP:0000
  773. stackseg              Word     DGROUP:0002
  774. start                  Near16 _TEXT:01D4
  775. swiftrace              Near16 ----:---- Extern
  776. tagarena              Near16 ----:---- Extern
  777. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 14
  778. Symbol Table
  779.  
  780.  
  781.  
  782. traceon                  Byte     ----:---- Extern
  783. trap                  Near16 ----:---- Extern
  784. trapcount              Dword     ----:---- Extern
  785. traphandler              Near16 _TEXT:0115
  786. trapnum                  Word     DGROUP:0051
  787. trappop                  Dword     DGROUP:0063
  788. untrace                  Near16 ----:---- Extern
  789. userbasepsp              Word     ----:---- Extern
  790. userpsp                  Word     ----:---- Extern
  791. veclist                  Byte     DGROUP:0004
  792. vererr                  Byte     _TEXT:0048
  793. verid                  Number 000E
  794. wadeprefix              Near16 ----:---- Extern
  795. winshellchk              Near16 ----:---- Extern
  796.  
  797. Macro Name
  798.  
  799. PRINT_MESSAGE
  800. entry
  801.  
  802. Groups & Segments          Bit Size Align  Combine Class
  803.  
  804. DGROUP                  Group
  805.   STACK                  16  0400 Para      Stack      STACK
  806.   _DATA                  16  0067 Word      Public  DATA
  807. _TEXT                  16  02CD Word      Public  CODE
  808. Turbo Assembler     Version 5.0        08-31-98 14:27:45        Page 15
  809. Error Summary
  810.  
  811.  
  812.  
  813. **Error** mtrap.asm(43)    Undefined symbol: TrapHandler
  814. **Error** mtrap.asm(190) Undefined symbol: dgroup
  815. **Error** mtrap.asm(235) Undefined symbol: InputHandler
  816. **Error** mtrap.asm(240) Undefined symbol: InputHandler
  817. **Error** mtrap.asm(248) Undefined symbol: dgroup
  818. **Error** mtrap.asm(260) PRINT_MESSAGE(2) Undefined symbol: VERID
  819. **Error** mtrap.asm(281) Undefined symbol: IntSnapshot
  820. **Error** mtrap.asm(290) Undefined symbol: FloatCheck
  821.