home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ASDT.LZH / ASDT.INF (.txt) < prev    next >
OS/2 Help File  |  1990-11-20  |  93KB  |  4,131 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. ASDT - Application/System Debugging Tool ΓòÉΓòÉΓòÉ
  3.  
  4. Preface 
  5.  
  6. This manual describes the IBM Application/System Debug Tool, ASDT, which aids 
  7. software debugging under IBM Operating System/2. Using ASDT, you can: 
  8.  
  9.  o Debug OS/2 device drivers and applications that run in either the protected 
  10.    or real mode or both. 
  11.  o Gain control from OS/2 via Int 1, Int 3, NMI, or a hot key.  Additionally, 
  12.    gain control on certain error conditions (Int 0, Int 6, Int C, and Int D). 
  13.  o Step execution (single, multiple, or procedure). 
  14.  o Stop program execution at up to 162 specified points. 
  15.  o Display or alter processor registers. 
  16.  o Display or alter processor memory (ASCII or EBCDIC translation). 
  17.  o Display LDT, GDT, and IDT entries. 
  18.  o Assign register or variable contents to other registers or variables. 
  19.  o Search memory to find a character string in hex, ASCII, or EBCDIC. 
  20.  o Compare two areas of memory. 
  21.  o Copy one area of memory to another. 
  22.  o Fill an area of memory with a specific character. 
  23.  o Disassemble blocks of instructions (ASM86(*) or Intel (MASM) mnemonics). 
  24.  o Evaluate numeric expressions with scratch pad space for results. 
  25.  o Maintain a separate screen for your program. 
  26.  o Support APA modes for all adapters. 
  27.  o Read in a profile during initialization phase for later execution. 
  28.  o Print out the ASDT screen, formatted instructions, or formatted memory. 
  29.  o Terminate the current process and return to OS/2. 
  30.  o Invoke user-defined function routines. 
  31.  o Identify the invocation path of the current thread or of a thread associated 
  32.    with a specific breakpoint. 
  33.  o Halt and resume threads to view screen groups or to begin a new OS/2 
  34.    session. 
  35.  o Restore/take specific interrupts to/from OS/2 to support device drivers that 
  36.    have a need to control these interrupts. 
  37.  o Use multiple screens or a remote terminal to view both your application 
  38.    screen and the ASDT screen at the same time. 
  39.  o Use the 80386 hardware debug registers to trap instruction execution or 
  40.    specific memory reads or writes. 
  41.  
  42.  * - ASM86 is an IBM Internal cross assembler (not provided with this program). 
  43.  
  44.  ASDT uses a full screen format to display breakpoints, registers, memory, 
  45.  disassembled instructions, and other information. 
  46.  
  47.  System Requirements 
  48.  
  49.  ASDT runs on an IBM PC/AT or PS/2 under OS/2 1.1 and later and uses 
  50.  approximately 122KB of memory. 
  51.  
  52.  
  53. ΓòÉΓòÉΓòÉ 1.1. Getting Started ΓòÉΓòÉΓòÉ
  54.  
  55.  
  56. ΓòÉΓòÉΓòÉ 1.1.1. Introduction ΓòÉΓòÉΓòÉ
  57.  
  58. ASDT runs under IBM OS/2 as a device driver. It runs in both the protected 
  59. (virtual) mode and the DOS compatibility box (real) mode. This user's guide and 
  60. reference manual deals mostly with the protected-mode aspects of ASDT. However, 
  61. it points out some key areas of differences of ASDT operation in protected mode 
  62. versus real mode. Where the manual is not explicit about this, you should 
  63. assume similar actions for either mode. 
  64.  
  65. The device driver or application program that you wish to debug should contain 
  66. an Int 3 at a location where you want ASDT to gain control the first time. This 
  67. location is often the first instruction of your device driver or application 
  68. program. 
  69.  
  70. You can also make ASDT gain control through an NMI or a hot key. The ASDT hot 
  71. key is the PrtSc key (by default), which must be activated before ASDT will 
  72. recognize it as a request to obtain control. You can activate the hot key 
  73. either by using the SK command (see SK - Set Keyboard Hot Key) or by using the 
  74. /K option discussed below. 
  75.  
  76.  
  77. ΓòÉΓòÉΓòÉ 1.1.2. Installing ASDT ΓòÉΓòÉΓòÉ
  78.  
  79.   1. Use LoadRam2 (supplied on the diskette) to unpack the ASDT.RAM file (in 
  80.      the PROGRAMS directory of the diskette) into a directory specified by the 
  81.      PATH statement in your CONFIG.SYS. 
  82.  
  83.      For example, from the diskette drive prompt (eg. A:), type: 
  84.  
  85.           LOADRAM2 A:\PROGRAMS\ASDT.RAM C:\PSTOOLS /D
  86.  
  87.      This should unpack the following files into the PSTOOLS directory on your 
  88.      C drive (providing that this directory exists): 
  89.  
  90.           README   TXT   // General guidelines
  91.           ASDT     EXE   // the first of two EXE files for ASDT.
  92.           ASDT2    EXE   // the second of two EXE files for ASDT.
  93.           UX       DLL   // the DLL file for ASDT.
  94.           ASDT     INF   // Help file -- type 'VIEW ASDT'
  95.  
  96.      (For more information on LoadRam2 see the help provided with LoadRam2, or 
  97.      type "LoadRam2 ?" ). 
  98.  
  99.   2. Copy UX.DLL into a sub-directory which is in your LIBPATH statement in the 
  100.      CONFIG.SYS file. (e.g. C:\PSTOOLS\DLL). 
  101.  
  102.   3. Add the following commands to your CONFIG.SYS file: 
  103.  
  104.             DEVICE=[PATH] ASDT.EXE [profile] [options]
  105.             DEVICE=[PATH] ASDT2.EXE
  106.  
  107.             where:    profile    -  a file containing ASDT commands (file name
  108.                                     must be fully qualified)
  109.  
  110.                       options    -
  111.                       /K=nn      -  set nn as the hot key scan code (=nn is
  112.                                     optional, and ASDT defaults the hot key to be
  113.                                     the PrtSc key)
  114.                       /M         -  have ASDT use multiple screens
  115.                       /R=n       -  have ASDT use a remote terminal (using COMn)
  116.                       /U=nn      -  specify the user mask for ASDT (nn represents
  117.                                     the user mask)
  118.                       /W         -  have ASDT use window assumptions
  119.                       /n         -  (where n is one of 0, 1, 2, 3, 6, C, or D)
  120.                                     have ASDT not take over INT n
  121.  
  122.      This allows OS/2 to install ASDT as a device driver. After installation, 
  123.      ASDT can gain control on various interrupts or a hot key. 
  124.  
  125.  If you want to debug another device driver during its initialization phase, 
  126.  make sure ASDT is installed prior to that device driver in your CONFIG.SYS 
  127.  file. 
  128.  
  129.  You may specify an ASDT profile file name for ASDT to read in. Once ASDT is in 
  130.  control, you can execute your profile with the EP - Execute Profile command. 
  131.  
  132.  
  133. ΓòÉΓòÉΓòÉ 1.1.3. How to Begin Debugging with ASDT ΓòÉΓòÉΓòÉ
  134.  
  135. To begin debugging, you need to know how to do several key things. The 
  136. following list describes these debugging steps and assumes the default ASDT 
  137. function keys are set. 
  138.  
  139.  Debug Task          ASDT Command to Use 
  140.  
  141.  Start ASDT          To cause ASDT to take control from OS/2, run the program 
  142.                      you wish to debug making sure it contains an Int 3 
  143.                      instruction ('CC'x). 
  144.  
  145.                      Note:  ASDT can gain control through several interrupts. 
  146.                             However, an Int 3 instruction that has been 
  147.                             inserted into your program is the most common 
  148.                             interrupt taken. 
  149.  
  150.  Single Step         ST (key F8) 
  151.  
  152.                      Executes one instruction in your program. 
  153.  
  154.  Set Breakpoints     Sn 
  155.  
  156.                      Sets one of the breakpoints to an address in your program. 
  157.  
  158.                      Examples:  S1 = CS:IP+23 sets a breakpoint 23 bytes from 
  159.                      the instruction about to be executed. 
  160.  
  161.  Execute             EX (key F7) 
  162.  
  163.                      Executes your program until it terminates, until it 
  164.                      reaches a breakpoint, or until it reaches an ASDT-captured 
  165.                      interrupt. 
  166.  
  167.  Set Registers       Set any register by entering its name followed by an 
  168.                      expression containing its new value. 
  169.  
  170.                      Examples:  AX=BX+CX sets register AX. ES=DS sets register 
  171.                      ES. BP=SP+CX sets register BP. 
  172.  
  173.  Disassembly/Memory  L1-L9, M1-M6 
  174.  
  175.                      Creates a disassembly or memory window (whichever is the 
  176.                      primary window) on one of the window area lines. 
  177.  
  178.  Windowing           NW (key F4) 
  179.  
  180.                      Toggles among disassembly, memory, LDT/GDT, and IDT 
  181.                      windows. 
  182.  
  183.  Get Help            HP (key F1) 
  184.  
  185.                      Displays a single help screen listing ASDT commands. 
  186.  
  187.  Return to OS/2      TP (key F3) 
  188.  
  189.                      In protected mode, TP is valid only for processes that are 
  190.                      not running at level 0. For those processes that are 
  191.                      running at level 0, you need to execute (EX) to completion 
  192.                      to return to OS/2.  In the DOS compatibility box, you 
  193.                      should use the TP command only to terminate an application 
  194.                      (not a device driver, a resident interrupt handler, etc.). 
  195.  
  196.  See Entering ASDT Commands for a discussion of ASDT command line handling and 
  197.  Window Area for a discussion of ASDT window editing. 
  198.  
  199.  
  200. ΓòÉΓòÉΓòÉ 1.1.4. Function Keys ΓòÉΓòÉΓòÉ
  201.  
  202. ASDT sets function keys F1-F10 for you. You can change them to other valid ASDT 
  203. commands, and you can also set the shifted, controlled, and alternate function 
  204. keys. The default keys are: 
  205.  
  206.  F1    Help (HP) 
  207.  F2    Define Keys (DK) 
  208.  F3    Terminate Process (TP) 
  209.  F4    Next Window (NW) 
  210.  F5    Repeat Find (FX) 
  211.  F6    Application Screen (SC) 
  212.  F7    Execute User Program (EX) 
  213.  F8    Single Step User Program (ST) 
  214.  F9    Procedure Step User Program using S9 (S9=EX+IL;EX;S9) 
  215.  F10   Retrieve Command (RC) 
  216.  
  217.  
  218. ΓòÉΓòÉΓòÉ 1.2. Using the ASDT Display ΓòÉΓòÉΓòÉ
  219.  
  220. For the disassembly and memory windows, the ASDT display has the following 
  221. areas: 
  222.  
  223.  Line 1          ASDT's name, release, release date, primary window, current 
  224.                  character translation, and current screen. 
  225.  Lines 2-3       breakpoints and scratch pad variables. 
  226.  Line 4          general registers, flags, and top four words of stack. 
  227.  Line 5          specific registers and flags. 
  228.  Line 6          selector registers. 
  229.  Line 7          SP register, instruction pointer, code origin, and step count. 
  230.  Line 8          address about to be executed, location counter, next 
  231.                  instruction (disassembled), and operand address and contents. 
  232.  Line 9          command line. 
  233.  Line 10         messages and trace information. 
  234.  Lines 11-25     window area containing line numbers, new window indications, 
  235.                  and views of disassembly, memory, or table elements. 
  236.  
  237.  For the LDT/GDT and IDT windows, the following changes are made: 
  238.  
  239.  Line 1          GDT address, IDT address, LDT register, process id, thread id, 
  240.                  and task state register. 
  241.  Line 8          LDT/GDT or IDT indicator, address about to be executed, 
  242.                  location counter, next instruction (disassembled), and operand 
  243.                  address and contents. 
  244.  Lines 11-25     LDT/GDT or IDT window containing line numbers and LDT, GDT, or 
  245.                  IDT descriptor entries. 
  246.  
  247.  A disassembly line is divided into three editable sections:  the selector and 
  248.  offset parts of the address, the hexadecimal instruction, and the 
  249.  instruction's operand value. In addition, ASDT displays the instruction 
  250.  mnemonic and the operand address. 
  251.  
  252.  A memory line is divided into three editable sections:  the selector and 
  253.  offset parts of the address, the hexadecimal memory, and the equivalent 
  254.  ASCII/EBCDIC characters. 
  255.  
  256.  An LDT, GDT, or IDT line is divided into these sections:  an index into the 
  257.  descriptor table, the type of descriptor, and other information based on the 
  258.  type of descriptor. LDT, GDT, and IDT lines are not editable. 
  259.  
  260.  You can move the cursor anywhere on the command line and can move it off the 
  261.  command line to the disassembly or memory window area. You use the command 
  262.  line to enter ASDT commands and the window area to view or edit instructions, 
  263.  memory, and descriptors. The following sections discuss how to enter ASDT 
  264.  commands, how to move the cursor within the disassembly or memory window, and 
  265.  how to alter instructions or memory. 
  266.  
  267.  
  268. ΓòÉΓòÉΓòÉ 1.2.1. Memory Format ΓòÉΓòÉΓòÉ
  269.  
  270. On lines above the command line, ASDT displays memory in register format; i.e., 
  271. not byte-reversed. ASDT also uses this format for the operand values at the 
  272. right edge of disassembly lines below the command line. On memory lines below 
  273. the command line, memory is displayed in Intel byte-reversed format. 
  274.  
  275.  
  276. ΓòÉΓòÉΓòÉ 1.3. Entering ASDT Commands ΓòÉΓòÉΓòÉ
  277.  
  278.  
  279. ΓòÉΓòÉΓòÉ 1.3.1. Command Line Input ΓòÉΓòÉΓòÉ
  280.  
  281. You use the command line for entering all of the ASDT commands. When you press 
  282. the ENTER key, ASDT processes the command line. Command processing begins with 
  283. the first command on the command line and continues with the remaining 
  284. commands. You separate commands with semicolons. Command line processing also 
  285. stops when ASDT encounters an invalid command. 
  286.  
  287. When command line processing finishes, the cursor moves to the beginning of the 
  288. command line. The command line is cleared unless the first character of the 
  289. command line is a slash (/) or unless an error was encountered. The sole 
  290. function of the slash at the beginning of the command line is to preserve the 
  291. command line so you can see and use it again. 
  292.  
  293. You can place as many commands on the command line as will physically fit. You 
  294. can place one or more blanks before or after each command. There is no 
  295. restriction on the sequence or combinations of commands. 
  296.  
  297.  
  298. ΓòÉΓòÉΓòÉ 1.3.2. Profile Input ΓòÉΓòÉΓòÉ
  299.  
  300. An alternative to typing ASDT commands on the command line is reading them in 
  301. from a profile on disk. This profile, which you can create with any standard 
  302. editor, is read in at ASDT installation time. Its commands are executed with 
  303. the Execute Profile (EP) command (See EP - Execute Profile for more 
  304. information.) 
  305.  
  306. All commands in the profile must follow standard ASDT command rules; that is, 
  307. they are processed as if they had been entered on the command line. They must 
  308. fit on the command line, which is 76 characters long. A slash at the beginning 
  309. of a line in a file is ignored. 
  310.  
  311. The following discussion of command handling applies to the command line and to 
  312. profiles. 
  313.  
  314.  
  315. ΓòÉΓòÉΓòÉ 1.3.3. Command Parsing ΓòÉΓòÉΓòÉ
  316.  
  317. The command line format is as follows: 
  318.  
  319. [/] cmd = opnd [ ; cmd = opnd ; cmd = opnd ; . . . ] 
  320.  
  321. If the optional slash at the beginning is present, ASDT will not erase the 
  322. command line when it finishes processing the commands. If you wish to enter 
  323. more than one command on the command line at a time, separate the commands with 
  324. semicolons. 
  325.  
  326. Commands are always two characters in length. You can follow the last command 
  327. with a semicolon. This trailing semicolon does not affect command line 
  328. processing. However, it allows you to use the Tab key to position the cursor 
  329. after the last command if you wish to add another command. 
  330.  
  331. The blanks as well as the "=" sign between the "cmd" and the "opnd" are 
  332. optional. This condensed syntax is not elegant, but you can save unnecessary 
  333. keystrokes by using it: 
  334.  
  335. cmdopnd;cmdopnd;cmdopnd; . . . 
  336.  
  337.  
  338. ΓòÉΓòÉΓòÉ 1.3.4. Specifying Operands ΓòÉΓòÉΓòÉ
  339.  
  340. An operand begins with the first non-blank (other than =) following the command 
  341. and continues to a semicolon or continuous blank characters. If there are only 
  342. blanks following the command, the operand is null. 
  343.  
  344.  
  345. Expression Evaluation 
  346.  
  347. Most operands are expressions. An expression is one or more terms which are 
  348. added together. A term may be a decimal or hexadecimal number, one of the 
  349. processor registers, or one of the ASDT variables. 
  350.  
  351. The ASDT variables include the breakpoints (V1-V9 and S1-S9) displayed on the 
  352. ASDT screen, the memory address variables (L1-L9 and M1-M6) displayed on the 
  353. ASDT screen, and the other variables (M7-M9) that are not displayed. These 
  354. other variables can be used as scratch pad space for expression or address 
  355. calculations. (See "Valid Terms" below for a complete list of ASDT variables.) 
  356.  
  357. The "+" and "-" signs may precede terms. The optional "+" sign performs no 
  358. function but can improve operand readability. The "-" sign negates the term 
  359. before the addition is performed. You can precede a term with multiple signs, 
  360. and you can use blanks freely between terms and their signs. 
  361.  
  362. Terms which are processor registers or ASDT variables are always two characters 
  363. in length. Decimal and hexadecimal terms have variable length. A blank, sign, 
  364. special operator, or another term must follow a numeric term to delimit that 
  365. numeric term; there is no such requirement for register or variable terms. 
  366. Decimal terms are distinguished from hexadecimal terms by a trailing decimal 
  367. point. 
  368.  
  369. Indirect terms are distinguished from other terms by a trailing "%" character 
  370. and optional length. Indirect terms allow you to use the contents of a memory 
  371. location indirectly. When you specify an indirect address, ASDT uses the 
  372. location contents for the number of bytes you specify. 
  373.  
  374. All calculation results are displayed in hexadecimal format. Decimals, 
  375. hexadecimals, registers, and variables are all converted to hexadecimal format 
  376. for calculation. 
  377.  
  378.  
  379. Expression Examples 
  380.  
  381. The following examples portray several different ASDT commands with various 
  382. operand expressions and terms. 
  383.  
  384.       CO = CS:4E8                 assign CS and offset 4E8 to CO
  385.       V1 = 10. + 20. + 44.        decimal arithmetic
  386.       M7 = AX + 4A23 - 10.        combined arithmetic
  387.       S1 = CO:13                  set breakpoint at CO + 13
  388.       AX = ES:BX%4%2              set AX to contents of memory pointed to by a
  389.                                   4-byte pointer, which is pointed to by ES:BX
  390.  
  391.  
  392. Expression Syntax 
  393.  
  394. In the following equivalent examples, the ASDT variable V1, the negative value 
  395. of processor register BX, hexadecimal 4A, and the processor register AX are 
  396. added together with the result being placed into the AX processor register. 
  397.  
  398.       AX = V1 - BX + 4A + AX      optimum readability
  399.       AX=V1-BX+4A+AX              optional blanks removed
  400.       AX V1-BX 4A AX              optional "=" and "+" removed
  401.       AXV1-BX4A AX                fewest keystrokes
  402.  
  403.  
  404. Valid Terms 
  405.  
  406. The following list shows all of the valid processor register and ASDT variable 
  407. terms which you can use in an expression. Hexadecimal, decimal, and indirect 
  408. terms are also valid. 
  409.  
  410. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  411. Γöé  AH       CH       DI       FL       LD       TS     Γöé
  412. Γöé  AL       CL       DL       FX       M1-M9    V1-V9  Γöé
  413. Γöé  AX       CO       DS       GD       OP       XS     Γöé
  414. Γöé  BH       CS       DX       ID       SI              Γöé
  415. Γöé  BL       CT       EC       IL       SP              Γöé
  416. Γöé  BP       CX       ES       IP       SS              Γöé
  417. Γöé  BX       DH       EX       LC       S1-S9           Γöé
  418. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  419.  
  420. It is useful to remember that all registers and variables displayed on the 
  421. screen (except the binary flag bits) are valid terms for an expression. All 
  422. registers and variables displayed on the screen including the binary flag bits 
  423. are valid ASDT commands. 
  424.  
  425. Most commands are also the name of a variable (e.g., AX, DS, or L1). When one 
  426. of these commands is used, there is an assignment to the variable. For example, 
  427. the command AX=BX+123 assigns the value BX+123 to AX. It is important to 
  428. remember that AX is the command because in some cases the assignment causes 
  429. other results. For example, S1=DS:BX+123 causes ASDT to assign the value 
  430. DS:BX+123 to S1 and activates the breakpoint S1. 
  431.  
  432. Some ASDT variables are not commands. They are the EC, GD, ID, IL, and OP 
  433. variables. The EC variable is the error code that is returned by OS/2 when a 
  434. general protection fault occurs. ASDT initializes EC to 0, and EC changes value 
  435. with each Int D. The GD and ID variables allow you to use the base address of 
  436. the GDT and the IDT in physical address expressions. The IL variable holds the 
  437. current instruction's length in bytes while the OP variable has the address of 
  438. the byte/word referenced by the current instruction (if any). 
  439.  
  440.  
  441. Address Evaluation 
  442.  
  443. ASDT expects addresses to be in one of two forms: selector:offset or physical 
  444. address. If the address expression contains a colon (:), a selector register 
  445. (CS, DS, ES, SS, or XS), or an ASDT variable that is in selector:offset form, 
  446. then ASDT assumes the address is in selector:offset form. In this case, the 
  447. selector must reference a valid descriptor, and the offset must be within the 
  448. segment limit for that descriptor. Any other address is considered to be a 
  449. physical address, and ASDT treats it as a six-hexadecimal digit (higit) number. 
  450.  
  451. Note:  In real mode, the address evaluation expected is either a segment:offset 
  452.        or a physical address. In the case of segment:offset addresses, all 
  453.        segments are considered valid. The physical address range, however, is 
  454.        limited by the 1M line (5-higit number). 
  455.  
  456.  
  457. ΓòÉΓòÉΓòÉ 1.3.5. Moving on the Command Line ΓòÉΓòÉΓòÉ
  458.  
  459. ASDT recognizes the following function keys on the command line: 
  460.  
  461.  Enter           Moves the cursor to the beginning of the command line and 
  462.                  executes the commands on the command line. 
  463.  
  464.  Home            Moves the cursor to the beginning of the command line. 
  465.  
  466.  End             Moves the cursor to the end of text on the command line. 
  467.  
  468.  Up Arrow        Moves the cursor to the first line of the disassembly or 
  469.                  memory edit area (valid only in a disassembly or memory 
  470.                  window). 
  471.  
  472.  Down Arrow      Moves the cursor to the first line of the disassembly or 
  473.                  memory edit area (valid only in a disassembly or memory 
  474.                  window). 
  475.  
  476.  Left Arrow      Moves the cursor left one position unless the cursor is at the 
  477.                  beginning of the command line. 
  478.  
  479.  Right Arrow     Moves the cursor right one position unless the cursor is at 
  480.                  the end of the command line. 
  481.  
  482.  PgUp            Scrolls the window up the number of lines in the window (valid 
  483.                  only in an LDT/GDT or IDT window). 
  484.  
  485.  PgDn            Scrolls the window down the number of lines in the window 
  486.                  (valid only in an LDT/GDT or IDT window). 
  487.  
  488.  Ctrl-PgUp       Scrolls the window up one line (valid only in an LDT/GDT or 
  489.                  IDT window). 
  490.  
  491.  Ctrl-PgDn       Scrolls the window down one line (valid only in an LDT/GDT or 
  492.                  IDT window). 
  493.  
  494.  Tab             Moves the cursor to the next command on the command line and 
  495.                  wraps around from the last command to the first command. 
  496.  
  497.  Back Tab        Moves the cursor to the previous command on the command line 
  498.                  and wraps around from the first command to the last command. 
  499.  
  500.  Spacebar        Replaces the character at the cursor position with a blank and 
  501.                  moves the cursor right one position. 
  502.  
  503.  Backspace       Moves the cursor left one position, erases the character at 
  504.                  the new cursor position, and moves the remainder of the 
  505.                  command line left one position. 
  506.  
  507.  Insert          Changes the insert mode. A caret at the beginning of the 
  508.                  command line indicates that insert mode is active. 
  509.  
  510.  Del             Erases the character at the cursor and moves the remainder of 
  511.                  the command line left one position. 
  512.  
  513.  Shift           Shifts to upper case and reverses the effect of Caps Lock. 
  514.  
  515.  Caps Lock       Shifts to upper case for the alphabetic keys. 
  516.  
  517.  Ctrl-Home       (Clear) erases the entire command line and places the cursor 
  518.                  at the beginning of the command line. 
  519.  
  520.  Ctrl-End        (Clear End-of-Line) erases the command line beginning at the 
  521.                  cursor position continuing to the end of the command line. 
  522.  
  523.  PrtSc           Causes the ASDT screen to be printed. 
  524.  
  525.  ASDT recognizes the following function keys while the user program is 
  526.  executing: 
  527.  
  528.  PrtSc           As the default hot key, interrupts user program if the /K 
  529.                  option was specified or the SK command was issued prior to 
  530.                  executing the user program. 
  531.  
  532.                  Note:  ASDT assumes that you want to print your screen when 
  533.                         you depress the shift key at the same time that you 
  534.                         depress the PrtSc key.  On some hardware 
  535.                         configurations, you need to depress the shift key a 
  536.                         full second or two before depressing the PrtSc key to 
  537.                         have ASDT ignore the keystrokes and allow OS/2 to print 
  538.                         your screen.  This key will be replaced as the hot key 
  539.                         if the /K=nn option or SK=nn command is issued (nn will 
  540.                         act as the scancode of the hot key). 
  541.  
  542.  
  543. ΓòÉΓòÉΓòÉ 1.4. Window Area ΓòÉΓòÉΓòÉ
  544.  
  545. The window area occupies the bottom portion of the ASDT display. This area is 
  546. where you view disassembled instructions, memory, LDT/GDT descriptors, and IDT 
  547. descriptors. You can access the window area through window commands, individual 
  548. window line commands, and direct editing in the window itself. 
  549.  
  550. The window consists of fifteen lines. Each line has a line identifier that is 
  551. used to address the lines with commands. These identifiers are the ASDT 
  552. variables L1 through L9 and M1 through M6. Each window line displays its 
  553. identifier at the beginning of the line. You can address any window line in any 
  554. window with the L1-L9 and M1-M6 commands. 
  555.  
  556. There is always a primary window. The primary window is the type of line that 
  557. is displayed on line L1, the first line in the window display area of ASDT. 
  558. Initially, the primary window is disassembly. The primary window can be 
  559. disassembly, memory, LDT/GDT, or IDT. 
  560.  
  561. You can set up a secondary window for disassembly and memory windows. If the 
  562. primary window is disassembly, then the secondary window must be memory. If the 
  563. primary window is memory, then the secondary window must be disassembly. 
  564.  
  565. You can divide all primary windows into multiple window segments. Every primary 
  566. window line shows an asterisk near the front of the line when that line starts 
  567. a window segment. Multiple window segments allow you to view more than one 
  568. disassembly, memory, LDT/GDT, or IDT address at once. 
  569.  
  570. You can set up the window area in any of the following configurations: 
  571.  
  572.   Window Type     Contents               Segments     Browse      Edit
  573.  
  574.   Disassembly     15 disassembly lines     1-15        Yes         Yes
  575.   Memory          15 memory lines          1-15        Yes         Yes
  576.   Disasm/Memory   15 disasm/memory lines   1-14,1      Yes         Yes
  577.   Memory/Disasm   15 memory/disasm lines   1-14,1      Yes         Yes
  578.   LDT/GDT         15 LDT/GDT lines         1-15        Yes         No
  579.   IDT             15 IDT lines             1-15        Yes         No
  580.  
  581.  
  582. ΓòÉΓòÉΓòÉ 1.4.1. Window Contents ΓòÉΓòÉΓòÉ
  583.  
  584. The disassembly window area shows portions of memory as hexadecimal 
  585. instructions and disassembled mnemonics for those instructions. A disassembly 
  586. window consists of one to fifteen lines showing a contiguous block of 
  587. disassembled instructions. Each disassembly line shows an address (either 
  588. selector:offset or six-higit physical), the hexadecimal instruction, its ASM86 
  589. or Intel (MASM) mnemonic, an operand address and operand contents (byte or 
  590. word) if appropriate. 
  591.  
  592. Within a disassembly window you may alter and scroll through instructions. You 
  593. can switch the mnemonic format with the DA (Disassemble ASM86) and DM 
  594. (Disassemble MASM) commands. Also, if the disassembly line is in the range of 
  595. the code origin (CO), ASDT displays a "$" near the front of the line and 
  596. displays the disassembly line address as :offset, where the offset is from the 
  597. CO. This allows you to display a disassembly segment that matches your assembly 
  598. listing. 
  599.  
  600. The memory window area shows portions of memory. A memory window consists of 
  601. one to fifteen memory lines showing a contiguous block of memory. Each memory 
  602. line shows an address (either selector:offset or six-higit physical), sixteen 
  603. bytes (one paragraph) of memory in hexadecimal format, and the same sixteen 
  604. bytes in either ASCII or EBCDIC format. You can switch the format with the AS 
  605. (ASCII) and EB (EBCDIC) commands. Within a memory window you may alter and 
  606. scroll through memory. 
  607.  
  608. The LDT/GDT window area shows LDT and GDT descriptors. Each LDT/GDT line shows 
  609. the table index, the descriptor type, and other descriptor information based on 
  610. the descriptor type. Likewise, the IDT window area shows IDT descriptors. 
  611.  
  612. Within an LDT/GDT or IDT window, you may scroll through descriptor table 
  613. entries. These windows are browsing windows and do not allow you to edit the 
  614. descriptor table entries. 
  615.  
  616. Note:  The LDT/GDT and IDT windows are not available for display while ASDT is 
  617.        operating in real mode. 
  618.  
  619.  
  620. ΓòÉΓòÉΓòÉ 1.4.2. Moving Among Windows ΓòÉΓòÉΓòÉ
  621.  
  622. A set of ASDT commands is available to move among all of the ASDT windows. 
  623. Moving among the different windows changes the primary window. In a disassembly 
  624. or memory window, the primary window type is displayed near the top right 
  625. corner of the ASDT screen. In an LDT/GDT or IDT window, the primary window type 
  626. is on the left side, near the middle of the ASDT screen. 
  627.  
  628. Use the following commands to switch windows: MW (switch to memory), LW (switch 
  629. to LDT/GDT), VW (switch to IDT), and DW (switch to disassembly). To toggle 
  630. among the windows, use the NW (Next Window) command or press the F4 key. On 
  631. entry, the primary window is disassembly. 
  632.  
  633.  
  634. ΓòÉΓòÉΓòÉ 1.4.3. Moving in the Disassembly and Memory Windows ΓòÉΓòÉΓòÉ
  635.  
  636. The disassembly and memory windows are edit windows. ASDT recognizes commands 
  637. on the command line and the following function keys while editing these window 
  638. areas: 
  639.  
  640.  Enter             Moves the cursor to the beginning of the command line and 
  641.                    executes the commands on the command line. 
  642.  
  643.  Home              Moves the cursor to the beginning of the command line but 
  644.                    does not execute the commands on the command line. 
  645.  
  646.  Up Arrow          Moves the cursor up one line. When the cursor reaches the 
  647.                    top of the window, it wraps around to the bottom line. 
  648.  
  649.  Down Arrow        Moves the cursor down one line. When the cursor reaches the 
  650.                    bottom of the window, it wraps around to the top line. 
  651.  
  652.  Left Arrow        Moves the cursor left to the next position where ASDT 
  653.                    accepts keystrokes. When the cursor reaches the beginning of 
  654.                    a line, it wraps to the end of the previous line. 
  655.  
  656.  Right Arrow       Moves the cursor right to the next position where ASDT 
  657.                    accepts keystrokes. When the cursor reaches the end of a 
  658.                    line, it wraps to the beginning of the next line. 
  659.  
  660.  Ctrl-Left Arrow   Scrolls the window up one byte. 
  661.  
  662.  Ctrl-Right Arrow  Scrolls the window down one byte. 
  663.  
  664.  PgUp              Scrolls the window up the number of lines in the segment. 
  665.  
  666.  PgDn              Scrolls the window down the number of lines in the segment. 
  667.  
  668.  Ctrl-PgUp         Scrolls the window up one line. 
  669.  
  670.  Ctrl-PgDn         Scrolls the window down one line. 
  671.  
  672.  Tab               Moves the cursor right to the next column. The cursor wraps 
  673.                    as it does with the Right Arrow. 
  674.  
  675.  Back Tab          Moves the cursor left to the previous column. The cursor 
  676.                    wraps as it does with the Left Arrow. 
  677.  
  678.  Spacebar          Functions similarly to the Right Arrow except that the 
  679.                    Spacebar is a valid data key when entering character data. 
  680.  
  681.  Backspace         Functions similarly to the Left Arrow. 
  682.  
  683.  Del               Deletes the window in which the cursor is located and 
  684.                    combines it with the previous window. If only one window 
  685.                    exists, no action is taken. 
  686.  
  687.  Shift             Shifts to upper case and reverses the effect of Caps Lock. 
  688.  
  689.  Caps Lock         Shifts to upper case for the alphabetic keys. 
  690.  
  691.  Ctrl-Home         Moves the cursor to the beginning of the command line and 
  692.                    erases the entire command line. 
  693.  
  694.  PrtSc             Causes the ASDT screen to be printed. 
  695.  
  696.  The LDT/GDT and IDT windows are browse windows. ASDT recognizes commands on 
  697.  the command line and the command line function keys while browsing these 
  698.  window areas. See Moving on the Command Line for a list of these keys. 
  699.  
  700.  When the window area is being used by the Compare Memory (CM) function, 
  701.  different sets of function keys are available. See CM - Compare Memory for 
  702.  details. 
  703.  
  704.  
  705. ΓòÉΓòÉΓòÉ 1.4.4. Altering Disassembly and Memory ΓòÉΓòÉΓòÉ
  706.  
  707.  
  708. Creating Windows 
  709.  
  710. A new window is created by entering a new address for the desired line. This is 
  711. done by typing over the old address or by entering one of the L1-M6 commands on 
  712. the command line. ASDT defines that line as the first line of a disassembly or 
  713. memory window. ASDT displays an asterisk at the left of the address to indicate 
  714. that the line begins a new window. The end of any window is determined by the 
  715. first line of the following window. 
  716.  
  717. An "opposite mode" window segment is created by entering an MW or DW command on 
  718. the command line if you are in a disassembly or memory window mode. For 
  719. example, to create a memory window segment in the disassembly window at line 
  720. L8, enter MW L8 on the command line. To create a disassembly window segment in 
  721. the memory window at line M2, enter DW M2 on the command line. 
  722.  
  723.  
  724. Altering Data within a Window 
  725.  
  726. You can alter disassembled instructions with hexadecimal input. To do this, 
  727. move the cursor to the appropriate byte in the hex area and type over the data 
  728. that is displayed. Each keystroke results in a modification of the instruction; 
  729. that is, ASDT updates the instruction as each hexadecimal digit is entered. 
  730.  
  731. You can alter memory with hexadecimal or character input. To do this, move the 
  732. cursor to the appropriate byte in either the hex or the character area and type 
  733. over the data that is displayed. Each keystroke results in a modification of 
  734. memory; that is, one nibble is modified for each hexadecimal digit entered, and 
  735. one full byte is modified for each character entered in the character area. 
  736.  
  737. ASDT updates a window area line under any of the following conditions: 
  738.  
  739.  o The cursor is on the window line. 
  740.  
  741.  o The window containing the line is assigned an address. For example, if there 
  742.    is only one window, the command "L1=L1" will result in all lines being 
  743.    updated. 
  744.  
  745.  o Any command that results in user program execution: EX or ST. 
  746.  
  747.  To prevent unintentional data alteration, ASDT will not move the cursor from 
  748.  the address area to the hexadecimal area when a character key is pressed. Use 
  749.  one of the cursor keys or the space bar to move the cursor into the 
  750.  hexadecimal display area from the address area. 
  751.  
  752.  
  753.  Deleting a Window 
  754.  
  755.  Delete a disassembly or memory window and combine it with the previous window 
  756.  by pressing the Del key with the cursor anywhere in the window or by entering 
  757.  the appropriate L1-M6 command without a parameter. 
  758.  
  759.  When the primary window is disassembly, the DW command deletes the memory 
  760.  window segment if present. When the primary window is memory, the MW command 
  761.  deletes the disassembly window segment if present. 
  762.  
  763.  
  764. ΓòÉΓòÉΓòÉ 1.5. Setting Breakpoints ΓòÉΓòÉΓòÉ
  765.  
  766. ASDT provides permanent, complex, and procedure step breakpoints. On each of 
  767. the nine ASDT display screens, you can have up to eighteen permanent or complex 
  768. breakpoints or up to seventeen permanent or complex breakpoints and one 
  769. procedure step breakpoint. 
  770.  
  771.  
  772. ΓòÉΓòÉΓòÉ 1.5.1. Permanent Breakpoints ΓòÉΓòÉΓòÉ
  773.  
  774. The permanent breakpoints are divided into primary and secondary groups. The 
  775. primary group is named S1 through S9, and the secondary group is named V1 
  776. through V9. The difference between the S group and the V group is that the S 
  777. breakpoints default to an "on" or active condition when set, and the V 
  778. breakpoints default to an "off" or inactive condition when set. V breakpoints 
  779. must be specifically turned on to become active. 
  780.  
  781. The breakpoints are divided this way to give you visible breakpoints and 
  782. scratch pad space on each screen. Since nine active breakpoints are usually 
  783. enough for a given debug session, the nine inactive breakpoints serve as 
  784. scratch pad variables to hold intermediate calculations or base addresses. 
  785. Usually, you will use V1 through V9 as scratch pad variables and S1 through S9 
  786. as breakpoints. However, if you need more breakpoints on a screen, you can turn 
  787. any of the V variables on so that it becomes an active breakpoint. 
  788.  
  789.  
  790. ΓòÉΓòÉΓòÉ 1.5.2. Procedure Stepping ΓòÉΓòÉΓòÉ
  791.  
  792. ASDT provides a single temporary breakpoint which is used as a procedure step 
  793. or module step facility. This function is provided on a function key (F9) 
  794. because it consists of several ASDT commands. The procedure step is performed 
  795. by setting a breakpoint at the instruction following the current instruction, 
  796. executing, and then removing the breakpoint. 
  797.  
  798. You will use the procedure step most frequently for CALL, INT, and REP 
  799. instructions. If you are stepping through your program and you reach one of 
  800. these instructions, the procedure step command sequence "S9=EX+IL;EX;S9" will 
  801. execute the subroutine or block of code and stop at the instruction following 
  802. the CALL, INT, or REP instruction. This uses breakpoint S9 as a substitute for 
  803. an automatic module step function. This function is assigned to function key 
  804. F9. 
  805.  
  806. If you plan to use the built-in procedure step function, you should not set a 
  807. breakpoint in S9 since it will be replaced by the procedure step breakpoint. Of 
  808. course, you can set other breakpoints as procedure step breakpoints yourself by 
  809. issuing the appropriate commands. 
  810.  
  811.  
  812. ΓòÉΓòÉΓòÉ 1.5.3. Breakpoint Addresses ΓòÉΓòÉΓòÉ
  813.  
  814. ASDT supports two types of breakpoints. A breakpoint can be either a 6-higit 
  815. physical address or a selector:offset address. ASDT displays breakpoints in a 
  816. relative address format whenever possible. If the breakpoint address is not 
  817. more than 64KB greater than the active code origin (CO) address, ASDT displays 
  818. the breakpoint as an offset preceded by a "$." Otherwise, if the same condition 
  819. is true for CS, ASDT displays the breakpoint as an offset preceded by a "+." 
  820.  
  821. If ASDT can not display a selector:offset breakpoint address as an offset of 
  822. either the CO or the CS, then ASDT displays this breakpoint as an offset 
  823. preceded by a "*." All inactive selector:offset breakpoint addresses are 
  824. displayed as an offset preceded by a "?." Physical addresses that can not be 
  825. displayed as an offset of either the CO or the CS are shown in a 6-higit 
  826. format. Inactive physical address breakpoints are always displayed in the 
  827. 6-higit format. Null breakpoints are displayed as "......" 
  828.  
  829. Note:  When in real mode, you will set segment:offset breakpoints and physical 
  830.        address breakpoints. The physical address breakpoints will be limited to 
  831.        5 higits even though they will be displayed as 6 higits. 
  832.  
  833.  
  834. ΓòÉΓòÉΓòÉ 1.5.4. Complex Breakpoints ΓòÉΓòÉΓòÉ
  835.  
  836. You can change any active ASDT breakpoint to a complex breakpoint with the CB 
  837. command. Complex breakpoints have an optional condition and an optional count. 
  838. You will use complex breakpoints most often to stop when your program meets a 
  839. particular condition or when it executes the nth occurrence of a particular 
  840. instruction. Counts are also useful inside loops. 
  841.  
  842. You can have both complex breakpoints and regular breakpoints set at the same 
  843. time. For each complex breakpoint, ASDT takes the breakpoint only when its 
  844. condition and count satisfy the requirements. Otherwise, it returns control to 
  845. your program for further execution. 
  846.  
  847. To set a complex breakpoint, you must first have an active breakpoint. You 
  848. create an active breakpoint with the appropriate V1-V9 or S1-S9 command. Then 
  849. you use the CB command to add a condition and a count to the breakpoint to make 
  850. it complex. 
  851.  
  852. You can display the current condition, count, and occurrence count for a 
  853. complex breakpoint by issuing the CB command with the breakpoint name as an 
  854. operand; i.e., "CB S5." ASDT will display the breakpoint's condition and count 
  855. on the command line so you can change them and reenter them easily. It also 
  856. displays the occurrence count, or the number of times the complex breakpoint 
  857. has been hit, on the message line. 
  858.  
  859.  
  860. ΓòÉΓòÉΓòÉ 1.5.5. Multi-process, Multi-thread Breakpoints ΓòÉΓòÉΓòÉ
  861.  
  862. All breakpoints that are set are maintained across all processes and threads 
  863. that are running. You can deactivate a breakpoint that is set for one process 
  864. or thread while ASDT has control over some other process or thread. Similarly, 
  865. you can reactivate a breakpoint that belongs to another process or thread. 
  866.  
  867. See S1-S9 - Set Breakpoints S1-S9 and D1-D9 - Select Display for details on how 
  868. to deactivate and reactivate breakpoints. Pay particular attention to the 
  869. caveats given. 
  870.  
  871.  
  872. ΓòÉΓòÉΓòÉ 1.5.6. Sticky Breakpoints ΓòÉΓòÉΓòÉ
  873.  
  874. You can force ASDT to stop on every occurrence of a breakpoint by using the SB 
  875. command.  This sticky nature is usually reserved for physical address 
  876. breakpoints and GDT virtual address breakpoints. 
  877.  
  878. See the SB - Sticky Breakpoint command for more information. 
  879.  
  880.  
  881. ΓòÉΓòÉΓòÉ 1.6. 80386 Hardware Debug Registers ΓòÉΓòÉΓòÉ
  882.  
  883. In addition to the V1-S9 breakpoints, ASDT allows you to set the 80386 hardware 
  884. debug registers (assuming that you are running on an 80386).  The debug 
  885. registers support both instruction and data breakpoints and can pinpoint when a 
  886. data item (for example) is altered. 
  887.  
  888. See T0 - Suspend/Reactivate 80386 Hardware Debug Registers and T1-T4 - Set 
  889. 80386 Hardware Debug Registers for details on how to set/reset and arm/disarm 
  890. these 80386 debug registers. 
  891.  
  892.  
  893. ΓòÉΓòÉΓòÉ 1.7. Indirect Addressing ΓòÉΓòÉΓòÉ
  894.  
  895. In addition to numeric values and ASDT variables, you can use indirect 
  896. addressing to reference the contents of memory. This allows you to examine and 
  897. use memory contents without having to look at the memory locations directly 
  898. using the various ASDT windows. 
  899.  
  900.  
  901. ΓòÉΓòÉΓòÉ 1.7.1. How to Use Indirect Addresses ΓòÉΓòÉΓòÉ
  902.  
  903. ASDT distinguishes indirect addresses by a trailing "%" and an optional length. 
  904. The syntax for an indirect address is: 
  905.  
  906. target = expr %L
  907.  
  908. where:
  909.   target = the variable or register you wish to change,
  910.   expr   = an ASDT expression for an address,
  911.   %      = the trigger for an indirect address, and
  912.   L      = the number of bytes you want to reference.
  913.  
  914. Valid values for L are 1, 2, and 4. If you do not specify any value for L, then 
  915. L defaults to 1. If L is 4, ASDT treats the 4 bytes in memory as a 4-byte 
  916. (selector:offset) pointer. L must follow immediately after the "%." 
  917.  
  918.  
  919. ΓòÉΓòÉΓòÉ 1.7.2. Indirect Addressing Examples ΓòÉΓòÉΓòÉ
  920.  
  921. The following examples illustrate various ways you can use indirect addresses: 
  922.  
  923.  AX = DS:SI %2             uses (DS:SI) -> memory for 2 bytes. 
  924.  
  925.  AH = DS:SI %              uses (DS:SI) -> memory for 1 byte. 
  926.  
  927.  S1 = SS:BP%4              uses (SS:BP) -> memory for 4 bytes. 
  928.  
  929.  BL = DS:SI %4 %           uses (DS:SI) -> memory to get a selector:offset 
  930.                            pointer, which will in turn be used to access 1 byte 
  931.                            of memory. 
  932.  
  933.  
  934. ΓòÉΓòÉΓòÉ 1.8. Hints for Using ASDT ΓòÉΓòÉΓòÉ
  935.  
  936.  
  937. ΓòÉΓòÉΓòÉ 1.8.1. Profile Use ΓòÉΓòÉΓòÉ
  938.  
  939. ASDT will read a profile from disk if you specify the profile name in the 
  940. CONFIG.SYS file. The Execute Profile (EP) command is used to execute the 
  941. commands in the profile. 
  942.  
  943. You can put any valid ASDT command or string of commands into a profile. 
  944. Suggested commands include Define Key (DK) commands that define function keys 
  945. that don't have defaults, commands to set up the display and colors as you want 
  946. them, and common ASDT commands you use each time you debug a program. 
  947.  
  948.  
  949. ΓòÉΓòÉΓòÉ 1.8.2. Disassembly ΓòÉΓòÉΓòÉ
  950.  
  951. ASDT provides a single instruction disassembly function even when you don't 
  952. have a disassembly window shown. The disassembly of the next instruction to be 
  953. executed, identified by the "EX" display, is always shown. If you set the 
  954. primary window to disassembly, then disassembled instructions are shown 
  955. beginning at L1, and ASDT will track the next instruction to be executed and 
  956. will always display it at L1. 
  957.  
  958. You can indicate whether ASM86 or Intel mnemonics are to be used by using the 
  959. DA (Disassemble ASM86) or the DM (Disassemble MASM) command. If the instruction 
  960. has an operand which references memory, the operand address is calculated and 
  961. displayed as the OP variable. The non-displayed Instruction Length (IL) 
  962. variable contains the length of the current instruction in bytes. 
  963.  
  964. You can use the variables OP and IL as command operands. For example, use the 
  965. command L1=OP to display the contents of memory at the current instruction's 
  966. operand address. This is the same operand address shown at the right side of 
  967. the first instruction in the disassembly window. Use the IL variable when 
  968. procedure stepping, as in "S9=EX+IL;EX;S9," which sets a breakpoint at the 
  969. instruction following the one about to be executed. 
  970.  
  971. The disassembly function shows the instruction when a breakpoint is set. The 
  972. disassembly indicates that you have set the breakpoint at the proper place and 
  973. should help prevent inadvertent breakpoints in the middle of instructions. If a 
  974. breakpoint is placed in the middle of an instruction, the breakpoint will not 
  975. be hit during normal execution, and the instruction will probably be changed so 
  976. that it executes incorrectly. 
  977.  
  978.  
  979. ΓòÉΓòÉΓòÉ 1.8.3. Display Screens and Breakpoints ΓòÉΓòÉΓòÉ
  980.  
  981. A useful debugging technique is to use a different ASDT display (D1-D9) for 
  982. each program (process) or code segment (CSECT or thread) being debugged. You 
  983. can switch from screen to screen and can also save the contents of one screen 
  984. into another. On each screen, the CO, breakpoints, disassembly locations, and 
  985. memory locations are unique. The registers and flags are the same across 
  986. screens. 
  987.  
  988. When an EX or ST command is executed, and the processor is subsequently stopped 
  989. by a breakpoint, the ASDT display screen containing that breakpoint is 
  990. automatically displayed. If the processor is stopped by something other than a 
  991. breakpoint, the ASDT display that was active at the time of the EX or ST 
  992. remains active. 
  993.  
  994. Each of the nine displays has nine V breakpoints and nine S breakpoints 
  995. available, which provides a total of 162 possible breakpoints. The S 
  996. breakpoints are turned on when set, but the V breakpoints are not turned on 
  997. until set on with a command. This gives the V breakpoints visible scratch pad 
  998. function. 
  999.  
  1000.  
  1001. ΓòÉΓòÉΓòÉ 1.8.4. Viewing Other OS/2 Sessions ΓòÉΓòÉΓòÉ
  1002.  
  1003. Viewing other OS/2 sessions while under ASDT requires a few steps.  First, you 
  1004. need to issue the HT command.  After the current thread has been halted, you 
  1005. can then enter Alt-Esc keystrokes to locate a specific session (your host 370 
  1006. session included).  If you choose to switch to your host 370 session, you could 
  1007. view listings of the halted thread. The Ctrl-Esc sequence will enable you to 
  1008. begin another session at this point, too. 
  1009.  
  1010. Returning to ASDT requires a few steps as well. First, you need to enter 
  1011. Alt-Esc keystrokes to get back to the screen group that contains the halted 
  1012. thread.  Then you can depress the hot key (if it is enabled) to reenter ASDT. 
  1013. Finally, you should issue the RT command to allow the halted thread to resume. 
  1014.  
  1015. Note:  You should realize that when you halt a thread under ASDT, other threads 
  1016.        will still be running. If any of these threads cause an ASDT-trapped 
  1017.        event, ASDT will get control again. Additionally, the "complexion" of 
  1018.        your ASDT environment may have changed somewhat when you return to ASDT 
  1019.        since other processes are running. 
  1020.  
  1021.  
  1022. ΓòÉΓòÉΓòÉ 1.8.5. Multiple Screens ΓòÉΓòÉΓòÉ
  1023.  
  1024. ASDT can be moved to the secondary terminal (if you have two adapters attached) 
  1025. with the "CG MS" command. Your application will be displayed on one of your two 
  1026. terminals.  ASDT knows to display its screen on the opposite terminal when you 
  1027. issue the "CG MS" command. To tell ASDT to use multiple screens from its 
  1028. invocation, use the /M parameter. See CG - Configuration for more information 
  1029. about multiple screens. 
  1030.  
  1031. The "CG MS" command can be placed in a profile or can be assigned to a function 
  1032. key. 
  1033.  
  1034.  
  1035. ΓòÉΓòÉΓòÉ 1.8.6. Remote Terminal ΓòÉΓòÉΓòÉ
  1036.  
  1037. ASDT can be moved to a remote terminal (if you have one connected via a COMn 
  1038. port (n=1 or 2)) with the "CG RT n" command. Your application will be displayed 
  1039. on the host machine's terminal. ASDT knows to display its screen on the remote 
  1040. terminal when you issue the "CG RT n" command. To tell ASDT to use a remote 
  1041. terminal from its invocation, use the /R=n parameter. See CG - Configuration 
  1042. for more information about remote terminals. 
  1043.  
  1044. The "CG RT n" command can be placed in a profile or can be assigned to a 
  1045. function key. 
  1046.  
  1047.  
  1048. ΓòÉΓòÉΓòÉ 1.8.7. User-defined Functions ΓòÉΓòÉΓòÉ
  1049.  
  1050. ASDT will allow you up to nine user-defined functions that you can call from 
  1051. within ASDT. When ASDT gives control to a user-defined function, that routine 
  1052. is running as a level 3 application.  Hence, you can use these routines to call 
  1053. OS/2 I/O service routines that ASDT can not call from level 0.  A potential 
  1054. function for these routines is to perform some sort of statistical tracking for 
  1055. a particular session. 
  1056.  
  1057. All user-defined routines (U1-U9) must reside in the dynamic load library, 
  1058. UX.DLL. You can create your own UX.DLL or substitute members for the one that 
  1059. comes with ASDT. If you use the UX.DLL that comes with ASDT, then you can use 
  1060. the command "U2 SC" to have ASDT print its screen to the file ASDT.OUT. 
  1061.  
  1062. See U1-U9 - User-defined Functions for additional information concerning 
  1063. user-defined functions. 
  1064.  
  1065.  
  1066. ΓòÉΓòÉΓòÉ 1.9. ASDT Command Reference ΓòÉΓòÉΓòÉ
  1067.  
  1068. This section describes each of the available ASDT commands. Commands are listed 
  1069. alphabetically except for command groups, which are at the beginning of the 
  1070. list. These groups are the general register commands, the selector register 
  1071. commands, the specific register commands, the flag commands, and the vector 
  1072. commands. 
  1073.  
  1074. In many cases, a command description will apply to a set of commands. For 
  1075. example, the commands V1, V2, ..., V9 are described under the command format 
  1076. "V1-V9." 
  1077.  
  1078.  
  1079. ΓòÉΓòÉΓòÉ 1.9.1. AX BX CX DX AH AL BH BL CH CL DH DL - General Register ΓòÉΓòÉΓòÉ
  1080.  
  1081.  Purpose:    Alters the contents of the specified processor register. 
  1082.  
  1083.  Format:     reg [= expr] 
  1084.  
  1085.     reg     Any of AX, BX, CX, DX, AH, AL, BH, BL, CH, CL, DH, or DL. 
  1086.  
  1087.     expr    Any ASDT expression. 
  1088.  
  1089.  Examples:   AX = 13B 
  1090.  
  1091.              Places '013B'x into the AX register. 
  1092.  
  1093.              CX = V1 + BX - 2 
  1094.  
  1095.              Places the sum of the contents of variable V1, the BX register, 
  1096.              and -2 into the CX register. 
  1097.  
  1098.              DX = DS 
  1099.  
  1100.              Copies the contents of the DS register into the DX register. 
  1101.  
  1102.              CL = DH 
  1103.  
  1104.              Copies the contents of the DH register into the CL register. 
  1105.  
  1106.  Remarks:    You can alter the general registers (AX, BX, CX, and DX) in their 
  1107.              entirety or as 8-bit registers (AL, AH, BL, BH, CL, CH, DL, and 
  1108.              DH). 
  1109.  
  1110.              ASDT uses only the least significant 16 bits or 8 bits that result 
  1111.              from an expression evaluation to set the 16-bit or 8-bit register. 
  1112.              ASDT truncates any additional bits and displays a warning message. 
  1113.  
  1114.              A null operand sets the register to zero. 
  1115.  
  1116.  
  1117. ΓòÉΓòÉΓòÉ 1.9.2. CS DS SS ES - Selector Register ΓòÉΓòÉΓòÉ
  1118.  
  1119.  Purpose:    Alters the contents of the specified selector register. 
  1120.  
  1121.  Format:     reg [= expr] 
  1122.  
  1123.     reg     Any of CS, DS, SS, or ES. 
  1124.  
  1125.     expr    Any ASDT expression. 
  1126.  
  1127.  Examples:   CS = 1C42 
  1128.  
  1129.              Places the hexadecimal value '1C42' into the CS register. 
  1130.  
  1131.              ES = SS 
  1132.  
  1133.              Copies the contents of the SS register into the ES register. 
  1134.  
  1135.              DS = XS 
  1136.  
  1137.              Copies the contents of the XS selector register variable into the 
  1138.              DS register. 
  1139.  
  1140.  Remarks:    To save and restore selector register contents, use the XS 
  1141.              selector register variable. ASDT treats XS just like a real 
  1142.              selector register. 
  1143.  
  1144.              Updating the CS register also updates the EX and LC displays. 
  1145.  
  1146.              A null operand sets the selector register to zero. 
  1147.  
  1148.  
  1149. ΓòÉΓòÉΓòÉ 1.9.3. SI DI SP BP - Specific Register ΓòÉΓòÉΓòÉ
  1150.  
  1151.  Purpose:    Alters the contents of the specified processor register. 
  1152.  
  1153.  Format:     reg [= expr] 
  1154.  
  1155.     reg     Any of SI, DI, SP, or BP. 
  1156.  
  1157.     expr    Any ASDT expression. 
  1158.  
  1159.  Examples:   BP = 13B 
  1160.  
  1161.              Places '013B'x into the BP register. 
  1162.  
  1163.              SI = V1 + BX - 2 
  1164.  
  1165.              Places the sum of the contents of variable V1, the BX register, 
  1166.              and -2 into the SI register. 
  1167.  
  1168.  Remarks:    ASDT uses only the least significant 16 bits that result from an 
  1169.              expression evaluation to set the register. ASDT truncates any 
  1170.              additional bits and displays a warning message. 
  1171.  
  1172.              Updating the IP register also updates the EX and LC displays. 
  1173.  
  1174.              A null operand sets the register to zero. 
  1175.  
  1176.  
  1177. ΓòÉΓòÉΓòÉ 1.9.4. FL AF CF DF IF OF PF SF TF ZF - Flag Register ΓòÉΓòÉΓòÉ
  1178.  
  1179.  Purpose:    Alters the contents of the processor flag register. 
  1180.  
  1181.  Format:     flag [= expr] 
  1182.  
  1183.     flag    Any of FL, AF, CF, DF, IF, OF, PF, SF, TF, or ZF. 
  1184.  
  1185.     expr    Any ASDT expression. 
  1186.  
  1187.  Examples:   CF = 0 
  1188.  
  1189.              Sets the carry flag bit to '0'b. 
  1190.  
  1191.              FL = F246 
  1192.  
  1193.              Sets the flag register to 'F246'x. 
  1194.  
  1195.  Remarks:    The FL command is used to alter the contents of the entire flag 
  1196.              register. The command operand is evaluated, and the least 
  1197.              significant 16 bits of the evaluation are placed into the FL 
  1198.              register. ASDT truncates any additional bits and displays a 
  1199.              warning message. 
  1200.  
  1201.              A null operand sets the entire register to zero. 
  1202.  
  1203.              The remaining commands are used to alter individual bits within 
  1204.              the flag register. If the command operand is null or evaluates to 
  1205.              zero, ASDT sets the flag bit to zero; otherwise, it sets the flag 
  1206.              bit to one. 
  1207.  
  1208.  
  1209. ΓòÉΓòÉΓòÉ 1.9.5. AS - ASCII ΓòÉΓòÉΓòÉ
  1210.  
  1211.  Purpose:    Changes the current character translation to ASCII. 
  1212.  
  1213.  Format:     AS 
  1214.  
  1215.  Examples:   AS 
  1216.  
  1217.              All characters are displayed in ASCII format. 
  1218.  
  1219.  Remarks:    Changes the characters displayed in the right side of the memory 
  1220.              area and the interpretation of the Code Origin CSECT name. The 
  1221.              current character translation mode (ASCII or EBCDIC) is shown on 
  1222.              the top line near the right of the screen. 
  1223.  
  1224.              Initially, the screen is in ASCII format. Choices are ASCII and 
  1225.              EBCDIC (EB). 
  1226.  
  1227.  
  1228. ΓòÉΓòÉΓòÉ 1.9.6. CA - Color Attributes ΓòÉΓòÉΓòÉ
  1229.  
  1230.  Purpose:    Sets the specified color attribute to the given value. 
  1231.  
  1232.  Format:     CA [term] [value] 
  1233.  
  1234.     term    one of the following: 
  1235.  
  1236.        N       Normal attribute. 
  1237.  
  1238.        H       Highlight attribute. 
  1239.  
  1240.        R       Reverse attribute. 
  1241.  
  1242.     value   The hexadecimal color code. The range of the number is '00'x to 
  1243.             'FF'x where the first higit describes the background color and the 
  1244.             second higit describes the character color. 
  1245.  
  1246.  Examples:   CA N 07 
  1247.  
  1248.              ASDT sets the normal attribute to white on black. 
  1249.  
  1250.              CA H 4F 
  1251.  
  1252.              ASDT sets the highlight attribute to bright white on red. 
  1253.  
  1254.              CA R 71 
  1255.  
  1256.              ASDT sets the reverse attribute to blue on white. 
  1257.  
  1258.              CA 
  1259.  
  1260.              ASDT sets the normal, highlight, and reverse attributes to their 
  1261.              default values. 
  1262.  
  1263.  Remarks:    The CA command has no function when ASDT is on a monochrome 
  1264.              display. 
  1265.  
  1266.              Defaults:  normal screen text is defaulted to bright white on blue 
  1267.              (1F), highlighted text defaults to yellow on blue (1E), and 
  1268.              reverse video text is red on white (74). 
  1269.  
  1270.              The majority of the ASDT screen is in normal text. Highlighting is 
  1271.              used to signal items such as an active breakpoint or the code 
  1272.              origin name. Reverse video is used to signal events such as a 
  1273.              breakpoint encountered. 
  1274.  
  1275.              Make sure you do not set a character color equal to its background 
  1276.              color; parts of the screen will be impossible to read if this 
  1277.              occurs. If this happens for the normal attribute, the screen will 
  1278.              go blank, but ASDT will still be functioning. To read the screen 
  1279.              again, type CA and enter it even though you can't see it. This 
  1280.              resets ASDT's color attributes to their default values. 
  1281.  
  1282.              The following chart shows the available colors and their numbers: 
  1283.  
  1284.                           Number     Color           Number     Color
  1285.                           ------     -----           ------     -----
  1286.                              0       Black              8       Gray
  1287.                              1       Blue               9       Light Blue
  1288.                              2       Green              A       Light Green
  1289.                              3       Cyan               B       Light Cyan
  1290.                              4       Red                C       Light Red
  1291.                              5       Magenta            D       Light Magenta
  1292.                              6       Brown              E       Yellow
  1293.                              7       White              F       High intensity White
  1294.  
  1295.  
  1296. ΓòÉΓòÉΓòÉ 1.9.7. CB - Complex Breakpoint ΓòÉΓòÉΓòÉ
  1297.  
  1298.  Purpose:    Sets an active breakpoint as a complex breakpoint with optional 
  1299.              condition and count, displays the current condition and count, or 
  1300.              displays all complex breakpoints. 
  1301.  
  1302.  Format:     CB [ bkpt ] [ cond ] , [ count ] 
  1303.  
  1304.     bkpt    Any ASDT breakpoint (V1-V9 or S1-S9) that is active on the current 
  1305.             ASDT display screen. 
  1306.  
  1307.     cond    An expression for a condition to be satisfied before ASDT takes the 
  1308.             breakpoint. 
  1309.  
  1310.     count   Any expression for the number of times for ASDT to hit the 
  1311.             breakpoint before it takes the breakpoint. 
  1312.  
  1313.  Examples:   CB S1 AX = 3 , 10 
  1314.  
  1315.              Sets S1 as a complex breakpoint. The condition to be met is for AX 
  1316.              to equal three, and ASDT will take the breakpoint the sixteenth 
  1317.              time this occurs at the S1 breakpoint's address. 
  1318.  
  1319.              CB V3 ES:DI <> DS:SI 
  1320.  
  1321.              Sets V3 as a complex breakpoint. The condition to be met is for 
  1322.              the contents of ES:DI not to equal the contents of DS:SI. ASDT 
  1323.              will take the breakpoint the first time this occurs at the S1 
  1324.              breakpoint's address. 
  1325.  
  1326.              CB 
  1327.  
  1328.              Displays all eighteen breakpoints for the current ASDT display 
  1329.              screen and shows complex breakpoints with their conditions, 
  1330.              counts, and occurrence counts. 
  1331.  
  1332.              CB V8 
  1333.  
  1334.              Displays the condition and count fields for breakpoint V8 on the 
  1335.              command line so you can edit them and reenter them. Also displays 
  1336.              the current occurrence count for V8 on the message line. 
  1337.  
  1338.  Remarks:    You can create a complex breakpoint from any active breakpoint. 
  1339.              For introductory information about complex breakpoints, see 
  1340.              Setting Breakpoints. 
  1341.  
  1342.              You use the CB command to create a new complex breakpoint, modify 
  1343.              an existing complex breakpoint, return a complex breakpoint to a 
  1344.              simple breakpoint, and to display all of the complex breakpoints 
  1345.              for the active ASDT screen (D1-D9). 
  1346.  
  1347.              If you issue the CB command without any operands, ASDT replaces 
  1348.              the ASDT screen with a complex breakpoint window. This display 
  1349.              replaces the ASDT screen with complex breakpoint information. 
  1350.  
  1351.              The complex breakpoint window displays each possible complex 
  1352.              breakpoint (V1-V9 and S1-S9). For each active breakpoint that is 
  1353.              complex, the address, condition, count, and occurrence count are 
  1354.              all displayed. For each active simple breakpoint, the address is 
  1355.              displayed. 
  1356.  
  1357.              This screen is a "browse" window that does not allow you to edit 
  1358.              anything. Tapping any key restores the ASDT screen. 
  1359.  
  1360.  
  1361. ΓòÉΓòÉΓòÉ 1.9.8. CG - Configuration ΓòÉΓòÉΓòÉ
  1362.  
  1363.  Purpose:    Define the display configuration to use. 
  1364.  
  1365.  Format:     CG [= term] 
  1366.  
  1367.     term    one of the following: 
  1368.  
  1369.        null    reset to single screen. 
  1370.  
  1371.        MS      use multiple screens. 
  1372.  
  1373.        RT n    use COMn (n=1 or 2) to communicate with a remote terminal. 
  1374.  
  1375.  Examples:   CG MS 
  1376.  
  1377.              Changes ASDT to the color display if the monochrome display is the 
  1378.              primary display; changes ASDT to the monochrome display if the 
  1379.              color display is the primary display. 
  1380.  
  1381.              CG RT n 
  1382.  
  1383.              Has ASDT write its screen to a remote terminal using the COMn port 
  1384.              (n=1 or 2). 
  1385.  
  1386.              CG 
  1387.  
  1388.              Changes ASDT to the primary display. 
  1389.  
  1390.  Remarks:    The CG MS command switches between displays if you have more than 
  1391.              one monitor installed. Make sure you do not use this command if 
  1392.              you have only one display adapter. If this happens, ASDT will 
  1393.              issue an error message and will not use multiple screens. 
  1394.  
  1395.              The use of multiple screens can be set at ASDT installation time 
  1396.              with the /M option as well.  With this option, you will have ASDT 
  1397.              using the secondary display when it gains control. Issuing the CG 
  1398.              (null) command will always cause ASDT to share the primary display 
  1399.              with your application. 
  1400.  
  1401.              The CG RT n command switches ASDT to a remote terminal that you 
  1402.              have hooked up via the COMn port (n=1 or 2).  This serves a 
  1403.              similar function to that of CG MS.  However, CG MS can not be used 
  1404.              with a PS/2 as it does not support multiple adapters. 
  1405.  
  1406.              It is up to you to set the baud rate or any other communication 
  1407.              parameters as ASDT only writes to the COMn port.  It is useful to 
  1408.              place a command like MODE COM1:19200,E,7,1 in your STARTUP.CMD 
  1409.              even though you may change the mode under OS/2 at any time. 
  1410.  
  1411.              The use of a remote terminal can be set at ASDT installation time 
  1412.              with the /R=n option as well.  With this option, you will have 
  1413.              ASDT using the remote terminal when it gains control. Issuing the 
  1414.              CG (null) command will always cause ASDT to collapse back to the 
  1415.              display of your application. 
  1416.  
  1417.  
  1418. ΓòÉΓòÉΓòÉ 1.9.9. CM - Compare Memory ΓòÉΓòÉΓòÉ
  1419.  
  1420.  Purpose:    Compares two memory blocks and displays the differences between 
  1421.              them. 
  1422.  
  1423.  Format:     CM [addr1] , [addr2] , [length] 
  1424.  
  1425.     addr1   Any ASDT expression for the starting address of one memory block. 
  1426.  
  1427.     addr2   Any ASDT expression for the starting address of the other memory 
  1428.             block. 
  1429.  
  1430.     length  Any ASDT expression for the number of bytes to compare. 
  1431.  
  1432.  Examples:   CM SS:BP , SS:BP+100 , 100 
  1433.  
  1434.              Compares 256 bytes from the location specified by SS:BP with the 
  1435.              same number of bytes from the location specified by SS:BP+100. The 
  1436.              first 112 bytes of each area are shown on the screen, and 
  1437.              mismatches are highlighted in the first area. The function keys 
  1438.              described below are active. 
  1439.  
  1440.              CM 123456,236541,16. 
  1441.  
  1442.              Compares 16 bytes from physical location 123456 with the same 
  1443.              number of bytes from physical location 236541. The function keys 
  1444.              described below are active. 
  1445.  
  1446.  Remarks:    ASDT displays the two compared areas on the screen beginning at 
  1447.              addresses L1 and L8. Differences between the two areas are 
  1448.              highlighted in the first area. Seven lines of each memory area are 
  1449.              shown on the screen, and the number of mismatches on the screen 
  1450.              and in the entire area are shown on the message line. 
  1451.  
  1452.              You can scroll the window up and down in the compared areas. ASDT 
  1453.              recognizes the following function keys in Compare Memory mode: 
  1454.  
  1455.     Esc                 Returns to normal ASDT operation and restores the edit 
  1456.                         area of the screen. 
  1457.  
  1458.     Home                Scrolls the compare window up to the beginning of the 
  1459.                         compare field. 
  1460.  
  1461.     PgUp                Scrolls the compare window up one screen (seven lines). 
  1462.                         PgUp takes no action if the first byte of the compare 
  1463.                         field is displayed. 
  1464.  
  1465.     PgDn                Scrolls the compare window down one screen (seven 
  1466.                         lines). PgDn takes no action if the last byte of 
  1467.                         compared memory is displayed at the beginning of the 
  1468.                         display area. 
  1469.  
  1470.     Ctrl-Left Arrow     Scrolls the compare window up one byte. Ctrl-Left Arrow 
  1471.                         takes no action if the first byte of the compare field 
  1472.                         is displayed. 
  1473.  
  1474.     Ctrl-Right Arrow    Scrolls the compare window down one byte. Ctrl-Right 
  1475.                         Arrow takes no action if the last byte of compared 
  1476.                         memory is displayed at the beginning of the display 
  1477.                         area. 
  1478.  
  1479.  
  1480. ΓòÉΓòÉΓòÉ 1.9.10. CO - Code Origin ΓòÉΓòÉΓòÉ
  1481.  
  1482.  Purpose:    Tells ASDT your program's starting address so that ASDT can 
  1483.              compute and display a Location Counter which corresponds to your 
  1484.              assembly listing. 
  1485.  
  1486.  Format:     CO [= expr] 
  1487.  
  1488.     expr    Any ASDT expression. 
  1489.  
  1490.  Examples:   CO = CS:A426 
  1491.  
  1492.              indicates that your module begins at offset A426 from your 
  1493.              program's code segment. ASDT displays the CO as "+A426." 
  1494.  
  1495.              CO = CS:200 
  1496.  
  1497.              indicates that your module begins at offset 200 from your 
  1498.              program's code segment. ASDT displays the CO as "+0200." 
  1499.  
  1500.  Remarks:    The CO facility enables you to think in terms of your assembly 
  1501.              listing without having to do relocation arithmetic. 
  1502.  
  1503.              ASDT displays the Code Origin in a relative address format if 
  1504.              possible. Relative addresses are designated with a "+" for CS. 
  1505.  
  1506.              If the CO was set with a selector:offset expression and the CO 
  1507.              selector is the same as the CS selector, then the CO will be 
  1508.              displayed as an offset preceded by a "+." Otherwise, a CO that was 
  1509.              set with a selector:offset expression will be displayed in the 
  1510.              selector:offset format. If the CO was set with a physical address 
  1511.              expression and this physical address is less than 64K greater than 
  1512.              the CS base address, then the CO will be displayed as an offset 
  1513.              preceded by a "+." Otherwise, a CO that was set with a physical 
  1514.              address expression will be displayed in a 6-higit address format. 
  1515.              A null CO is displayed as "....:....." 
  1516.  
  1517.              See Setting Breakpoints for more information. 
  1518.  
  1519.              If the CSECT begins with a JUMP instruction around the name of the 
  1520.              CSECT as shown below, the name will be displayed following the CO 
  1521.              display. 
  1522.  
  1523.                             ASDTSMP CSECT
  1524.                                     J     LABEL1
  1525.                                     DC    AL1(8)
  1526.                                     DC    S'ASDTSMP '
  1527.                             LABEL1  DS    0C
  1528.                                     . . .
  1529.  
  1530.              A null operand sets the CO variable to null. 
  1531.  
  1532.              Whenever CO is set, ASDT looks to see if the memory location 
  1533.              specified contains a short jump instruction. If this instruction 
  1534.              is found, ASDT assumes that the CSECT name follows 3 bytes 
  1535.              further. ASDT will then display this CSECT name (up to 8 
  1536.              characters) in ASCII or EBCDIC depending on the current display 
  1537.              mode. 
  1538.  
  1539.  
  1540. ΓòÉΓòÉΓòÉ 1.9.11. CP - Copy Memory ΓòÉΓòÉΓòÉ
  1541.  
  1542.  Purpose:    Copies one memory block to another. 
  1543.  
  1544.  Format:     CP [addr1] , [addr2] , [length] 
  1545.  
  1546.     addr1   Any ASDT expression for the starting address of the source memory 
  1547.             block. 
  1548.  
  1549.     addr2   Any ASDT expression for the starting address of the target memory 
  1550.             block. 
  1551.  
  1552.     length  Any ASDT expression for the number of bytes to copy. 
  1553.  
  1554.  Examples:   CP DS:100 , DS:200 , 30. 
  1555.  
  1556.              Copies 30 bytes from the location specified by DS:100 to the 
  1557.              location specified by DS:200. 
  1558.  
  1559.              CP L1 , L1+1 , 100 
  1560.  
  1561.              Makes 256 copies of the character at the memory location addressed 
  1562.              by L1 filling the memory bytes which start at L1+1. This can be 
  1563.              used as a "fill memory" function. 
  1564.  
  1565.  Remarks:    The Copy Memory function allows the source block and target block 
  1566.              to overlap, so you could make changes that you don't expect if you 
  1567.              specify blocks that overlap. 
  1568.  
  1569.              An easy way to fill a block of memory with a specific character is 
  1570.              to set L1 to point to the first byte, change the first byte to the 
  1571.              character wanted, and then issue the command "CP L1,L1+1,length" 
  1572.              where you specify the number of copies wanted for the length 
  1573.              field. 
  1574.  
  1575.              You may wish to compare two memory blocks after one has been 
  1576.              copied to the other. (See CM - Compare Memory.) 
  1577.  
  1578.  
  1579. ΓòÉΓòÉΓòÉ 1.9.12. CT - Step Count ΓòÉΓòÉΓòÉ
  1580.  
  1581.  Purpose:    Sets the default step count (the number of user program 
  1582.              instructions to execute with the ST command). 
  1583.  
  1584.  Format:     CT [= expr] 
  1585.  
  1586.     expr    Any ASDT expression. 
  1587.  
  1588.  Examples:   CT 8 
  1589.  
  1590.              ASDT sets the step count to eight. 
  1591.  
  1592.              CT 
  1593.  
  1594.              ASDT sets the step count to one. 
  1595.  
  1596.  Remarks:    ASDT uses only the least significant 16 bits that result from an 
  1597.              expression evaluation to set the CT. ASDT truncates any additional 
  1598.              bits and displays a warning message. 
  1599.  
  1600.              When you enter the ST command without an operand, ASDT gets the 
  1601.              number of user program instructions to be executed from the CT 
  1602.              variable. 
  1603.  
  1604.              If the operand is omitted from the CT command, ASDT sets the step 
  1605.              count to one. 
  1606.  
  1607.  
  1608. ΓòÉΓòÉΓòÉ 1.9.13. DA - Disassemble ASM86 ΓòÉΓòÉΓòÉ
  1609.  
  1610.  Purpose:    Changes the current disassemble mode to IBM ASM86 format. (ASM86 
  1611.              is an IBM Internal cross assembler, not provided with this 
  1612.              program). 
  1613.  
  1614.  Format:     DA 
  1615.  
  1616.  Examples:   DA 
  1617.  
  1618.              Instructions will be disassembled using IBM ASM86 mnemonics. 
  1619.  
  1620.  Remarks:    Disassembles the instructions pointed to by CS:IP using IBM ASM86 
  1621.              mnemonics. 
  1622.  
  1623.              Initially, all disassembled instructions are shown in IBM ASM86 
  1624.              mnemonics. Choices are IBM ASM86 mnemonics (DA) or Intel (MASM) 
  1625.              mnemonics (DM). 
  1626.  
  1627.  
  1628. ΓòÉΓòÉΓòÉ 1.9.14. DK - Define Key ΓòÉΓòÉΓòÉ
  1629.  
  1630.  Purpose:    Sets up, changes, or removes a function key definition. 
  1631.  
  1632.  Format:     DK [key I/D [cmds]] 
  1633.  
  1634.     key     The key to be defined (F1, F2, ..., F10, S-F1, S-F2, ..., S-F10, 
  1635.             C-F1, C-F2, ..., C-F10, A-F1, A-F2, ..., A-F10). 
  1636.  
  1637.     I       Place the commands on the command line and execute them immediately 
  1638.             when the function key is pressed. 
  1639.  
  1640.     D       Place the commands on the command line when the function key is 
  1641.             pressed but do not execute them. 
  1642.  
  1643.     cmds    A string of valid ASDT commands entered as you would enter them on 
  1644.             the command line. This string may contain semicolons, and the first 
  1645.             command may begin with a slash. 
  1646.  
  1647.  Examples:   DK S-F9 I DM 
  1648.  
  1649.              ASDT sets the Shift-F9 (S-F9) key to the string "DM." Each time 
  1650.              the S-F9 key is pressed, ASDT shows disassembled instructions in 
  1651.              Intel (MASM) mnemonics. 
  1652.  
  1653.              DK A-F2 D DA 
  1654.  
  1655.              ASDT sets the Alt-F5 (A-F5) key to the string "DA." Each time the 
  1656.              A-F5 key is pressed, ASDT puts this string on the command line. 
  1657.  
  1658.              DK C-F1 
  1659.  
  1660.              ASDT removes any command definition for the Ctrl-F1 (C-F1) key. 
  1661.              You do not use the I/D keyword when removing a key definition. 
  1662.  
  1663.              DK 
  1664.  
  1665.              ASDT displays the current settings of all of the function keys. 
  1666.  
  1667.  Remarks:    ASDT supports the function keys F1 through F10, shifted function 
  1668.              keys S-F1 through S-F10, controlled function keys C-F1 through 
  1669.              C-F10, and alternate function keys A-F1 through A-F10. This 
  1670.              provides a total of 40 function keys. 
  1671.  
  1672.              ASDT provides default definitions for keys F1 through F10. You can 
  1673.              change these by redefining the key(s) you want to change. The 
  1674.              definitions are listed in Function Keys If you want to redefine 
  1675.              existing keys or define additional ones, you can include DK 
  1676.              commands in the profile you invoke when you start ASDT. 
  1677.  
  1678.              You must enter the I (immediate) or D (deferred) keyword when you 
  1679.              define a key. It is not required when you remove a key definition. 
  1680.  
  1681.              If you press a function key which has no definition, ASDT displays 
  1682.              a message and takes no other action. 
  1683.  
  1684.              ASDT maintains an 800-byte buffer for commands associated with 
  1685.              function keys. If you define many keys to be long commands, it is 
  1686.              possible to run out of room in the buffer. If this happens, ASDT 
  1687.              will display a message, and you will not be able to make any 
  1688.              additional key definitions in the current ASDT session. You can 
  1689.              still use keys that are already defined and can redefine existing 
  1690.              keys. 
  1691.  
  1692.  
  1693. ΓòÉΓòÉΓòÉ 1.9.15. DM - Disassemble MASM (Intel) ΓòÉΓòÉΓòÉ
  1694.  
  1695.  Purpose:    Changes the current disassemble mode to the Intel (MASM) format. 
  1696.  
  1697.  Format:     DM 
  1698.  
  1699.  Examples:   DM 
  1700.  
  1701.              Instructions will be disassembled using Intel (MASM) mnemonics. 
  1702.  
  1703.  Remarks:    Disassembles the instructions pointed to by CS:IP using Intel 
  1704.              (MASM) mnemonics. 
  1705.  
  1706.              Initially, all disassembled instructions are shown in ASM86 
  1707.              mnemonics. Choices are IBM ASM86 mnemonics (DA) or INTEL (MASM) 
  1708.              mnemonics (DM). 
  1709.  
  1710.  
  1711. ΓòÉΓòÉΓòÉ 1.9.16. DW - Disassembly Window ΓòÉΓòÉΓòÉ
  1712.  
  1713.  Purpose:    Switches to Disassembly Window mode. 
  1714.  
  1715.  Format:     DW [value] 
  1716.  
  1717.     value   The line number (L1-M6) at which to start the disassembly window. 
  1718.  
  1719.  Examples:   DW 
  1720.  
  1721.              ASDT switches the edit portion of the ASDT display to a 
  1722.              disassembly window and sets the primary window mode to 
  1723.              disassembly. If a secondary memory window is displayed, ASDT 
  1724.              removes it. 
  1725.  
  1726.              DW M1 
  1727.  
  1728.              ASDT switches lines M1 through M6 of the ASDT display to show 
  1729.              disassembled instructions. The primary window mode of ASDT is not 
  1730.              changed. 
  1731.  
  1732.  Remarks:    The disassembly window displays instructions in both hexadecimal 
  1733.              and disassembled format. If applicable, ASDT also displays the 
  1734.              operand of the instruction. 
  1735.  
  1736.              ASDT displays the primary window (disassembly or memory) in the 
  1737.              upper right portion of the ASDT screen. If the primary window is 
  1738.              disassembly, then L1 and the following disassembly lines track the 
  1739.              current CS:IP as your program runs. ASDT also tracks CS:IP for a 
  1740.              secondary disassembly window. Initially, the primary window is 
  1741.              disassembly. 
  1742.  
  1743.              See the MW - Memory Window command, which changes to a memory 
  1744.              window and the NW - Next Window command, which switches among all 
  1745.              of the ASDT windows. 
  1746.  
  1747.  
  1748. ΓòÉΓòÉΓòÉ 1.9.17. D1-D9 - Select Display ΓòÉΓòÉΓòÉ
  1749.  
  1750.  Purpose:    Selects or sets one of the nine ASDT display screens. 
  1751.  
  1752.  Format:     Dn [Ds or ON or OFF] 
  1753.  
  1754.     n       Any of 1-9. Indicates which screen is being selected (D1-D9). 
  1755.  
  1756.     s       Any of 1-9. Indicates which screen is being saved (D1-D9). 
  1757.  
  1758.     ON      Activates the breakpoints for Dn. 
  1759.  
  1760.     OFF     Suspends the breakpoints for Dn. 
  1761.  
  1762.  Examples:   D4 OFF 
  1763.  
  1764.              All the active breakpoints for screen D4 are suspended. 
  1765.  
  1766.              D5 
  1767.  
  1768.              Screen D5 is selected as the active ASDT screen. 
  1769.  
  1770.              D2 = D1 
  1771.  
  1772.              The contents of screen D1 are saved in screen D2. 
  1773.  
  1774.  Remarks:    These variables are common to all nine displays:  registers, 
  1775.              memory, M7-M9, and step count. 
  1776.  
  1777.              These variables are unique to each display:  V1-V9, S1-S9, L1-L9, 
  1778.              M1-M6, and CO. 
  1779.  
  1780.              After ASDT has finished executing a block of user instructions, it 
  1781.              will display the screen containing the active breakpoint that 
  1782.              terminated the execution. If more than one screen contains that 
  1783.              same active breakpoint, ASDT will display the lowest numbered 
  1784.              screen. 
  1785.  
  1786.              The breakpoints of a screen (e.g., Dy) do not have to be activated 
  1787.              when ASDT is displaying another screen (e.g., Dx) unless they had 
  1788.              been deactivated previously; that is, when you switch screens from 
  1789.              Dy to Dx, Dy's breakpoints remain active. 
  1790.  
  1791.              Note:  When you issue a Dn ON command, the breakpoints for the Dn 
  1792.                     screen are associated with the current process and thread 
  1793.                     ids. This was implemented in this manner so that you could 
  1794.                     reactivate breakpoints for an entire screen whose 
  1795.                     breakpoints had become deactivated due to a thread's or 
  1796.                     process's having terminated. This is different from the 
  1797.                     results that you would get if you issued Sn ON commands for 
  1798.                     the various deactivated breakpoints on the current screen. 
  1799.  
  1800.              See S1-S9 - Set Breakpoints S1-S9 to learn how reactivating 
  1801.              breakpoints with the Sn ON command differs from the Dn ON command. 
  1802.  
  1803.  Note:  You can not deactivate or reactivate a virtual real mode breakpoint 
  1804.         while in protected mode and vice versa. Additionally, you can not 
  1805.         deactivate or reactivate a physical address breakpoint that is above 
  1806.         the 1M line in real mode. 
  1807.  
  1808.  See Display Screens and Breakpoints for a discussion of how to use the nine 
  1809.  ASDT display screens to your advantage. 
  1810.  
  1811.  
  1812. ΓòÉΓòÉΓòÉ 1.9.18. EB - EBCDIC ΓòÉΓòÉΓòÉ
  1813.  
  1814.  Purpose:    Changes the current character translation to EBCDIC. 
  1815.  
  1816.  Format:     EB 
  1817.  
  1818.  Examples:   EB 
  1819.  
  1820.              All characters are displayed in EBCDIC format. 
  1821.  
  1822.  Remarks:    Changes the characters displayed in the right side of the memory 
  1823.              area and the interpretation of the Code Origin CSECT name that may 
  1824.              be displayed. The current character translation mode (ASCII or 
  1825.              EBCDIC) is shown on the top line near the right of the screen. 
  1826.  
  1827.              Initially, the screen is in ASCII format. Choices are ASCII (AS) 
  1828.              and EBCDIC. 
  1829.  
  1830.  
  1831. ΓòÉΓòÉΓòÉ 1.9.19. EP - Execute Profile ΓòÉΓòÉΓòÉ
  1832.  
  1833.  Purpose:    Executes a profile containing a series of ASDT commands. This 
  1834.              profile must have been read in by ASDT during the initialization 
  1835.              phase. 
  1836.  
  1837.  Format:     EP 
  1838.  
  1839.  Examples:   EP 
  1840.  
  1841.              Executes commands from ASDT's profile storage area. 
  1842.  
  1843.  Remarks:    ASDT does not support disk I/O after the OS/2 initialization 
  1844.              phase. Hence, you must have ASDT read your profile in during this 
  1845.              initialization phase. ASDT stores your profile in its internal 
  1846.              data area where your commands can be retrieved and executed with 
  1847.              the EP command. 
  1848.  
  1849.              To have ASDT read in your profile, you need to specify the fully 
  1850.              qualified profile name in your CONFIG.SYS file. You can specify 
  1851.              ASDT parameters along with a profile name. See Installing ASDT for 
  1852.              the syntax rules that allow you to specify a profile and ASDT 
  1853.              parameters. 
  1854.  
  1855.              ASDT limits a profile to 1600 bytes. This includes carriage 
  1856.              returns, line feeds, and end-of-file markers. ASDT does not 
  1857.              recognize tabs and can not process commands that are greater than 
  1858.              76 characters long (not including trailing blanks, carriage 
  1859.              return, and line feed). 
  1860.  
  1861.              Commands from a file are executed one at a time. If an invalid 
  1862.              command is encountered, the appropriate ASDT message is displayed, 
  1863.              and profile processing is aborted. 
  1864.  
  1865.              You can execute a profile that has been read in as often as you 
  1866.              like by reissuing the EP command. 
  1867.  
  1868.  
  1869. ΓòÉΓòÉΓòÉ 1.9.20. EX - Execute ΓòÉΓòÉΓòÉ
  1870.  
  1871.  Purpose:    Passes control of the processor to your program. 
  1872.  
  1873.  Format:     EX 
  1874.  
  1875.  Examples:   EX 
  1876.  
  1877.              Gives control to your program, which begins executing at the 
  1878.              current CS:IP. 
  1879.  
  1880.  Remarks:    Execution of your program begins at the point determined by the 
  1881.              sum of the CS and IP registers. ASDT restores your display screen 
  1882.              and sets active breakpoints in your program before execution 
  1883.              begins. 
  1884.  
  1885.              Control is retained by OS/2 until ASDT receives an interrupt. When 
  1886.              ASDT regains control, you are shown the reason in the form of a 
  1887.              message or breakpoint highlight. ASDT saves your display screen 
  1888.              and removes the breakpoints from your program. 
  1889.  
  1890.              The processor registers and memory display reflect the processor 
  1891.              status at the time of the interrupt. If any breakpoints were 
  1892.              overlayed by execution of your program, the breakpoint display is 
  1893.              blinked to indicate that that breakpoint was not active for a 
  1894.              portion of your program execution. 
  1895.  
  1896.              Note:  The first instruction of your program is single-stepped 
  1897.                     before the breakpoints are inserted. This permits execution 
  1898.                     to begin at the point of a breakpoint without stopping 
  1899.                     immediately. 
  1900.  
  1901.  ASDT sets function key F7 to the EX command on entry. 
  1902.  
  1903.  
  1904. ΓòÉΓòÉΓòÉ 1.9.21. F FA FC FE FX - Find, Find ASCII, Find CSECT, Find EBCDIC, Find Hex ΓòÉΓòÉΓòÉ
  1905.  
  1906.  Purpose:    Find character or hexadecimal strings in memory. 
  1907.  
  1908.  Format:     Ft [ string ] [ , s ] [ , hiaddr ] 
  1909.  
  1910.     t       Type of find (one of the following): 
  1911.  
  1912.        null    current mode (ASCII, CSECT, hex, or EBCDIC) 
  1913.  
  1914.        A       ASCII 
  1915.  
  1916.        C       CSECT 
  1917.  
  1918.        E       EBCDIC 
  1919.  
  1920.        X       Hex 
  1921.  
  1922.     string  The string to be found in memory. This string may be delimited by 
  1923.             quotes (" "). 
  1924.  
  1925.     s       Search technique (one of the following): 
  1926.  
  1927.        *       task search (LDT first then the GDT (only in protected mode)) 
  1928.  
  1929.        expr    any ASDT expression that determines a selector for the single 
  1930.                segment to search. If ", hiaddr" is specified, then this "s" 
  1931.                expression is interpreted as the lower bound physical address of 
  1932.                a system-wide search range. 
  1933.  
  1934.     hiaddr  any ASDT expression that is interpreted as the higher bound 
  1935.             physical address of a system-wide search range. 
  1936.  
  1937.  Examples:   /FX 123E4 
  1938.  
  1939.              Does a repeat find of the '0123E4'x search argument throughout the 
  1940.              task's immediate segment register areas. 
  1941.  
  1942.              /FA buffer; L1 = FX 
  1943.  
  1944.              Does a repeat (task) find of the ASCII-string (buffer) and 
  1945.              displays memory beginning at the location where the string was 
  1946.              found. 
  1947.  
  1948.              FE "Top of Data" , DS 
  1949.  
  1950.              Tries to find the EBCDIC-string (Top of Data) in memory beginning 
  1951.              at the start of the DS segment up to its segment limit. 
  1952.  
  1953.              FA " garbage dump ", * 
  1954.  
  1955.              Tries to find the ASCII-string ( garbage dump ) in memory using 
  1956.              the task search technique. 
  1957.  
  1958.              FC SINT3, CS 
  1959.  
  1960.              Tries to find the CSECT name (SINT3) in the current CS segment. 
  1961.  
  1962.              FC AINTHND, 000000,  400000 
  1963.  
  1964.              Tries to find the CSECT name (AINTHND) in the system-wide address 
  1965.              range starting at physical address 0 and ending at physical 
  1966.              address 4M. 
  1967.  
  1968.              FC - 
  1969.  
  1970.              Tries to find the closest (previous) CSECT address relative to the 
  1971.              current CS and IP address. 
  1972.  
  1973.  Remarks:    Task searching is employed for all finds until you specify some 
  1974.              selector or physical address expression after a comma. (Task 
  1975.              searching has no meaning in real mode.) The technique last used is 
  1976.              employed in any repeat find.  ASDT will interpret any expression 
  1977.              used in a system-wide search technique (", s, hiaddr") as a 
  1978.              physical address. 
  1979.  
  1980.              If the string is found, the FX variable contains the address of 
  1981.              the string. If the string is not found, the FX variable remains as 
  1982.              it was before the search request. 
  1983.  
  1984.              Since the second character of the F command is a blank, at least 
  1985.              one blank must always follow the F command. It will operate in the 
  1986.              current character translation mode (ASCII, CSECT, hex, or EBCDIC). 
  1987.  
  1988.              Character strings may not include semicolons. Commas are special 
  1989.              characters and denote that either a task search indicator ("*"), a 
  1990.              selector expression, or a system-wide address range follows. (Note 
  1991.              that a system-wide address will include two commas.) If you want a 
  1992.              comma to be part of your string, enclose the string in quotes. 
  1993.  
  1994.              For strings without delimiting quotes, leading blanks are always 
  1995.              ignored yet trailing blanks are ignored only if there is no 
  1996.              delimiting comma present.  Every blank or comma (within the 
  1997.              enclosing quotes) is considered part of the search string when the 
  1998.              quotes are used. 
  1999.  
  2000.              For the F, FA, FC, and FE commands, the string may include upper 
  2001.              or lower case characters, numbers, special characters, and blanks. 
  2002.              For the FX command, the string may contain any of the 16 
  2003.              hexadecimal digits. 
  2004.  
  2005.              If an odd number of hexadecimal digits are entered for the FX 
  2006.              command, the string is padded on the left with one hexadecimal 
  2007.              zero digit. 
  2008.  
  2009.              The length of a search string is limited by the command line 
  2010.              length. However, the verification message will only display the 
  2011.              first eight characters of the search string. 
  2012.  
  2013.              Searching starts at the beginning of the LDT's first valid data or 
  2014.              code descriptor selector (task search), at the beginning of the 
  2015.              most recently  specified selector (segment search), or at the 
  2016.              beginning of a physical address range (system-wide search) unless 
  2017.              a repeat find is done. For repeat find, the search begins where 
  2018.              the previous search terminated. Task searching continues on 
  2019.              through the GDT once the LDT has been exhausted. System-wide 
  2020.              searching is limited by the 1M line in real mode. 
  2021.  
  2022.              The FC command will have ASDT search only those descriptor 
  2023.              selectors that reference valid code segments (when system-wide 
  2024.              search is not being used). If the CSECT is found, ASDT will set 
  2025.              the CO - Code Origin variable if a jump ('EB'x) instruction is 
  2026.              discovered three bytes prior to the CSECT address. 
  2027.  
  2028.              FC - can be used to have ASDT search for a CSECT name previous to 
  2029.              the current CS:IP address.  Repeated use of this command will have 
  2030.              ASDT continue hunting for the next previous CSECT name within the 
  2031.              CS address space (wrapping at offset 0 and the CS limit). 
  2032.  
  2033.              If the search string is omitted, the previous string will be used. 
  2034.              The repeat find function may be performed by adding a slash to the 
  2035.              beginning of any of the find commands or by using the F5 key. 
  2036.  
  2037.              ASDT sets function key F5 to the FX command on entry. 
  2038.  
  2039.  
  2040. ΓòÉΓòÉΓòÉ 1.9.22. HP - Help ΓòÉΓòÉΓòÉ
  2041.  
  2042.  Purpose:    Display information about ASDT. 
  2043.  
  2044.  Format:     HP 
  2045.  
  2046.  Examples:   HP 
  2047.  
  2048.              Displays a screen containing all the ASDT commands in logical 
  2049.              groupings. 
  2050.  
  2051.  Remarks:    The help screen temporarily replaces the ASDT screen. Press any 
  2052.              key to return to the ASDT screen. 
  2053.  
  2054.              ASDT sets function key F1 to the HP command on entry. 
  2055.  
  2056.  
  2057. ΓòÉΓòÉΓòÉ 1.9.23. HT - Halt Thread ΓòÉΓòÉΓòÉ
  2058.  
  2059.  Purpose:    To suspend the current thread and exit ASDT to OS/2. 
  2060.  
  2061.  Format:     HT 
  2062.  
  2063.  Examples:   HT 
  2064.  
  2065.              Suspends the current thread and returns your session to OS/2. 
  2066.  
  2067.  Remarks:    HT should be used primarily to scan other screen groups.  The most 
  2068.              popular subset of this action is to view your host session.  By 
  2069.              entering the HT command (which has ASDT halt the current thread 
  2070.              and return to OS/2) and then entering a series of Alt-Esc 
  2071.              keystrokes or a Ctrl-Esc sequence, you can view listings of the 
  2072.              halted thread on your host session. To return to ASDT, you need to 
  2073.              enter a series of Alt-Esc keystrokes until you are back in the 
  2074.              same screen group where you had ASDT suspend the thread. Now you 
  2075.              can enter the hot key (if you have the hot key option enabled) to 
  2076.              give control back to ASDT.  Finally, you can enter the RT - Resume 
  2077.              Thread command which will allow your thread to be resumed. 
  2078.  
  2079.              You can halt up to ten threads if you want.  Halting threads as 
  2080.              they give control to ASDT allows you to see what impact the 
  2081.              remaining threads that are running have on the system. 
  2082.  
  2083.              You can not halt a thread at a breakpoint.  This is due to the 
  2084.              fact that ASDT inserts your breakpoints for you before it halts 
  2085.              the thread. 
  2086.  
  2087.              This command works for real mode as well except that you can only 
  2088.              halt one application at a time.  If you halt more than one real 
  2089.              mode application (before resuming), ASDT will lose track of all 
  2090.              but the latest real mode "thread." 
  2091.  
  2092.  
  2093. ΓòÉΓòÉΓòÉ 1.9.24. IB - Input Byte ΓòÉΓòÉΓòÉ
  2094.  
  2095.  Purpose:    Reads one byte from a designated port (into a register if 
  2096.              specified). 
  2097.  
  2098.  Format:     IB port [, reg] 
  2099.  
  2100.     port    The I/O port address from which the byte is to be read. 
  2101.  
  2102.     reg     The 8-bit register into which the byte is to be placed. 
  2103.  
  2104.  Examples:   IB 40 , AL 
  2105.  
  2106.              Reads one byte from I/O port '0040'x and places it in register AL. 
  2107.              The port and the value read are shown in a message. 
  2108.  
  2109.              IB 21 
  2110.  
  2111.              Reads one byte from I/O port '0021'x and displays the port and the 
  2112.              value read in a message. 
  2113.  
  2114.  Remarks:    To read a port but not place the value read into a register, you 
  2115.              can omit the register name and the message line will display the 
  2116.              value read. 
  2117.  
  2118.  
  2119. ΓòÉΓòÉΓòÉ 1.9.25. IP - Instruction Pointer ΓòÉΓòÉΓòÉ
  2120.  
  2121.  Purpose:    Alters the contents of the instruction pointer, updates the EX 
  2122.              variable, and updates the LC variable if appropriate. 
  2123.  
  2124.  Format:     IP [= expr] 
  2125.  
  2126.     expr    Any ASDT expression. 
  2127.  
  2128.  Examples:   IP = 13B 
  2129.  
  2130.              ASDT sets the variable IP to '013B'x. 
  2131.  
  2132.              If the Co variable has any value other than null, ASDT tries to 
  2133.              maintain the following relationship: 
  2134.  
  2135.              CO:LC = CS:IP 
  2136.  
  2137.              This lets you think in terms of your assembly listing offsets. 
  2138.  
  2139.  Remarks:    ASDT uses only the least significant 16 bits that result from an 
  2140.              expression evaluation to set the IP. ASDT truncates any additional 
  2141.              bits and displays a warning message. 
  2142.  
  2143.              Updating the IP register also updates the EX and LC displays. 
  2144.  
  2145.              A null operand sets the IP to zero. 
  2146.  
  2147.  
  2148. ΓòÉΓòÉΓòÉ 1.9.26. IW - Input Word ΓòÉΓòÉΓòÉ
  2149.  
  2150.  Purpose:    Reads one word from a designated port (into a register if 
  2151.              specified). 
  2152.  
  2153.  Format:     IW port [, reg] 
  2154.  
  2155.     port    The I/O port address from which the byte is to be read. 
  2156.  
  2157.     reg     The 16-bit register into which the byte is to be placed. 
  2158.  
  2159.  Examples:   IW 58 , DX 
  2160.  
  2161.              Reads one word from I/O port '0058'x and places it in register DX. 
  2162.              The port and the value read are shown in a message. 
  2163.  
  2164.              IW 31 
  2165.  
  2166.              Reads one word from I/O port '0031'x and displays the port and the 
  2167.              value read in a message. 
  2168.  
  2169.  Remarks:    To read a port but not place the value read into a register, you 
  2170.              can omit the register name and the message line will display the 
  2171.              value read. 
  2172.  
  2173.  
  2174. ΓòÉΓòÉΓòÉ 1.9.27. LC - Location Counter ΓòÉΓòÉΓòÉ
  2175.  
  2176.  Purpose:    Sets the pseudo-variable, Location Counter (LC), and updates 
  2177.              either the IP variable or the CO variable. 
  2178.  
  2179.  Format:     LC [= expr] 
  2180.  
  2181.     expr    Any ASDT expression. 
  2182.  
  2183.  Examples:   LC = 12D 
  2184.  
  2185.              ASDT sets the pseudo-variable LC to '012D'x. 
  2186.  
  2187.              If the CO variable is null, ASDT sets the CO variable according to 
  2188.              the formula 
  2189.  
  2190.              CO = CS:IP-LC 
  2191.  
  2192.              If CO is a physical address, then the CS base address is used. 
  2193.  
  2194.              This provides an alternate means for setting the CO. When CO is 
  2195.              null, the command LC=12D tells ASDT that the program counter 
  2196.              (CS:IP) corresponds to the assembly listing LC value of 012D. ASDT 
  2197.              computes the origin address and puts it into CO. 
  2198.  
  2199.              If the CO variable has any value other than null, ASDT tries to 
  2200.              maintain the following relationship: 
  2201.  
  2202.              CO:LC = CS:IP 
  2203.  
  2204.              If CO is a physical address, then the CS and CO base addresses are 
  2205.              used. 
  2206.  
  2207.              This lets you think in terms of your assembly listing offsets. 
  2208.  
  2209.  Remarks:    Normally, you use the Location Counter (LC) in conjunction with 
  2210.              the Code Origin (CO) command to display a program location counter 
  2211.              that corresponds with the offsets in your assembly listing. You 
  2212.              should be familiar with the CO command before using the LC 
  2213.              command. 
  2214.  
  2215.              ASDT uses only the least significant 16 bits that result from an 
  2216.              expression evaluation to set the LC. ASDT truncates any additional 
  2217.              bits and displays a warning message. 
  2218.  
  2219.              The LC command with a null operand sets both the CO and the LC to 
  2220.              null. 
  2221.  
  2222.  
  2223. ΓòÉΓòÉΓòÉ 1.9.28. LD - LDT Register ΓòÉΓòÉΓòÉ
  2224.  
  2225.  Purpose:    Alters the contents of the LDT register. 
  2226.  
  2227.  Format:     LD [= P expr] 
  2228.  
  2229.     P       Trigger to have ASDT interpret the expression as a physical 
  2230.             address. 
  2231.  
  2232.     expr    Any ASDT expression. 
  2233.  
  2234.  Examples:   LD = 38 
  2235.  
  2236.              ASDT sets the LDT register to '38'x. 
  2237.  
  2238.              LD P128E3A 
  2239.  
  2240.              ASDT associates the user's LDT base address with 128E3A. 
  2241.  
  2242.  Remarks:    The current LDTR is changed when you enter the LD command. When 
  2243.              you change the LDT register, the user program may not be able to 
  2244.              continue with the altered value. 
  2245.  
  2246.              ASDT uses only the least significant 16 bits that result from an 
  2247.              expression evaluation to set the LDT register. ASDT truncates any 
  2248.              additional bits and displays a warning message. 
  2249.  
  2250.              When a physical address is used (indicated by a leading P), ASDT 
  2251.              associates the user's LDT base address with the one provided. 
  2252.              ASDT ensures that the address you specify does indeed point to a 
  2253.              valid LDT.  You can not step, terminate, or execute when you have 
  2254.              changed the associated user's LDT base address in this manner. 
  2255.              The idea behind this form of the LD command is to allow you to 
  2256.              view another process's LDT entries. 
  2257.  
  2258.              The LD command with a null operand restores the user program's LDT 
  2259.              register and its base address to the incoming values. If you 
  2260.              attempt to set the LDT to an invalid value or have ASDT associate 
  2261.              the user's LDT with a physical address that does not reference an 
  2262.              LDT, ASDT will display a message and will not act upon your 
  2263.              request. 
  2264.  
  2265.              Note:  This command can not be used in real mode. 
  2266.  
  2267.  
  2268. ΓòÉΓòÉΓòÉ 1.9.29. LW - LDT/GDT Window ΓòÉΓòÉΓòÉ
  2269.  
  2270.  Purpose:    Switches to LDT/GDT Window Mode. 
  2271.  
  2272.  Format:     LW [ * ] 
  2273.  
  2274.  Examples:   LW 
  2275.  
  2276.              ASDT switches the edit portion of the ASDT display to an LDT/GDT 
  2277.              window and sets the primary window mode to LDT/GDT. 
  2278.  
  2279.              LW * 
  2280.  
  2281.              Has ASDT compress out all the invalid descriptors in its LDT/GDT 
  2282.              display. 
  2283.  
  2284.  Remarks:    The LDT/GDT window displays descriptor table entries in a decoded, 
  2285.              readable format. Each table entry line displays one descriptor 
  2286.              table entry. 
  2287.  
  2288.              For an LDT/GDT window, ASDT replaces the top line of the ASDT 
  2289.              display with the GDT address, the IDT address, the LDT register, 
  2290.              the process id, the thread id, and the task state register. It 
  2291.              displays the primary window on the left side of the middle of the 
  2292.              ASDT screen. 
  2293.  
  2294.              See the NW - Next Window command, which switches among all of the 
  2295.              ASDT windows. 
  2296.  
  2297.              Note:  This command can not be used in real mode. 
  2298.  
  2299.  
  2300. ΓòÉΓòÉΓòÉ 1.9.30. L1-L9 - Alter Window Area ΓòÉΓòÉΓòÉ
  2301.  
  2302.  Purpose:    Alter the disassembly and memory edit portion of the ASDT display 
  2303.              or the LDT/GDT or IDT portion of the ASDT display by changing the 
  2304.              address of a window display line. 
  2305.  
  2306.              Each disassembly/memory address variable is displayed either as a 
  2307.              selector:offset address or as a 6-higit physical address. Each 
  2308.              LDT/GDT or IDT address variable is displayed as a 4-higit index. 
  2309.  
  2310.  Format:     Ln [= expr] 
  2311.  
  2312.     n       The L variable to be manipulated. 
  2313.  
  2314.     expr    Any ASDT expression. 
  2315.  
  2316.  Examples:   L1 = 123456  (disassembly/memory windows) 
  2317.  
  2318.              Places the hexadecimal value 123456 into the L1 variable and 
  2319.              displays the contents of that physical address location. 
  2320.  
  2321.              L2 = SS:SP  (disassembly/memory windows) 
  2322.  
  2323.              Places the contents of registers SS and SP into the selector and 
  2324.              offset of variable L2 to display your current stack. 
  2325.  
  2326.              L8 = 002F  (LDT/GDT window) 
  2327.  
  2328.              Places the hexadecimal value 002F into the L8 variable and 
  2329.              displays the descriptor found as if 002F had been used as a 
  2330.              selector (in this case, the descriptor will be in the LDT). 
  2331.  
  2332.              L9 = 0003  (IDT window) 
  2333.  
  2334.              Places the hexadecimal value 0003 into the L9 variable and 
  2335.              displays the descriptor found at the fourth descriptor slot in the 
  2336.              IDT. 
  2337.  
  2338.  Remarks:    An L1-L9 command without a parameter causes the window that begins 
  2339.              with the specified line to be combined with the previous window. 
  2340.              If the specified line is not the beginning of a window, the 
  2341.              command merely causes the display to be updated. 
  2342.  
  2343.              When you have a secondary window set up, i.e., a memory window in 
  2344.              disassembly mode or a disassembly window in memory mode, you can 
  2345.              set any of the primary address variables and the first address 
  2346.              variable of the secondary window. You cannot set the other 
  2347.              secondary window address variables. (Secondary windows are valid 
  2348.              only for the disassembly and memory windows.) 
  2349.  
  2350.              Commands L1-L9 have the same function as typing over an address in 
  2351.              the window. (Typing over an address in a window is valid only in a 
  2352.              disassembly or memory window.) L1-L9's advantages include the use 
  2353.              of expressions and leaving the cursor on the command line. 
  2354.  
  2355.              When a window address variable is updated with one of these 
  2356.              commands, that variable defines the beginning of a window; the 
  2357.              remaining address variables in that window are also updated. 
  2358.  
  2359.              Scrolling and skipping functions may be performed for the 
  2360.              disassembly and memory windows with these commands in conjunction 
  2361.              with the "/" key and the ENTER key: 
  2362.  
  2363.              "/ L1 = L1 - 10" - does a vertical scroll (upward). 
  2364.  
  2365.              "/ L5 = L5 + 1" - does a horizontal scroll (right). 
  2366.  
  2367.              "/ L1 = L1 + 200" - does a downward skip through memory and can be 
  2368.              useful for locating a large text buffer in memory. 
  2369.  
  2370.              These commands may be used in conjunction with one of the FIND 
  2371.              commands to search memory for the occurrence of an item: 
  2372.  
  2373.              / FA string ; L1 = FX  (memory window) 
  2374.  
  2375.              The above sequence searches memory for an ASCII character string 
  2376.              and, upon finding the string, displays it. 
  2377.  
  2378.              Scrolling and skipping functions may be performed for the LDT/GDT 
  2379.              or IDT windows using the PgUp, PgDn, Ctrl-PgUp, and Ctrl-PgDn 
  2380.              keys. For example: 
  2381.  
  2382.              "PgUp" - does a vertical scroll of the L1 window (upward). 
  2383.  
  2384.              "Ctrl-PgDn" - does a scroll of one line of the L1 window 
  2385.              (downward). 
  2386.  
  2387.              Note:  Note that the PgUp, PgDn, Ctrl-PgUp, Ctrl-PgDn, Ctrl-Left 
  2388.                     Arrow, and Ctrl-Right Arrow keys provide scrolling in the 
  2389.                     disassembly and memory edit windows (not on the command 
  2390.                     line). 
  2391.  
  2392.  
  2393. ΓòÉΓòÉΓòÉ 1.9.31. MW - Memory Window ΓòÉΓòÉΓòÉ
  2394.  
  2395.  Purpose:    Switches to Memory Window mode. 
  2396.  
  2397.  Format:     MW [term] 
  2398.  
  2399.     term    The line number (L1-M6) at which to start the memory window. 
  2400.  
  2401.  Examples:   MW 
  2402.  
  2403.              ASDT switches the edit portion of the ASDT display to a memory 
  2404.              window and sets the primary window mode to memory. If a secondary 
  2405.              disassembly window is displayed, ASDT removes it. 
  2406.  
  2407.              MW L9 
  2408.  
  2409.              ASDT switches lines L9 through M6 of the ASDT display to show 
  2410.              memory. The primary window mode of ASDT is not changed. 
  2411.  
  2412.  Remarks:    The memory window displays memory in hexadecimal and either ASCII 
  2413.              or EBCDIC format. Each memory line displays one paragraph (sixteen 
  2414.              bytes) of memory. 
  2415.  
  2416.              ASDT displays the primary window (disassembly or memory) in the 
  2417.              upper right portion of the ASDT screen. If the primary window is 
  2418.              disassembly, then L1 and the following disassembly lines track the 
  2419.              current CS:IP as your program runs. ASDT also tracks CS:IP for a 
  2420.              secondary disassembly window. 
  2421.  
  2422.              See DW - Disassembly Window command, which changes to a 
  2423.              disassembly window and NW - Next Window command, which switches 
  2424.              among all of the ASDT windows. 
  2425.  
  2426.  
  2427. ΓòÉΓòÉΓòÉ 1.9.32. M1-M6 - Alter Window Area ΓòÉΓòÉΓòÉ
  2428.  
  2429.  Purpose:    Alter the disassembly and memory edit portion of the ASDT display 
  2430.              or the LDT/GDT or IDT portion of the ASDT display by changing the 
  2431.              address of a window display line. 
  2432.  
  2433.              Each disassembly/memory address variable is displayed either as a 
  2434.              selector:offset address or as a 6-higit physical address. Each 
  2435.              LDT/GDT or IDT address variable is displayed as a 4-higit index. 
  2436.  
  2437.  Format:     Mn [= expr] 
  2438.  
  2439.     n       The M variable to be manipulated. 
  2440.  
  2441.     expr    Any ASDT expression. 
  2442.  
  2443.  Examples:   M1 = A88762  (disassembly/memory windows) 
  2444.  
  2445.              Places the hexadecimal value A88762 into the M1 variable and 
  2446.              displays the contents of that physical address location. 
  2447.  
  2448.              M2 = CS:IP  (disassembly/memory windows) 
  2449.  
  2450.              Places the contents of registers CS and IP into the selector and 
  2451.              offset of variable M2 to display your current instruction. 
  2452.  
  2453.              M4 = 0020  (LDT/GDT window) 
  2454.  
  2455.              Places the hexadecimal value 0020 into the M4 variable and 
  2456.              displays the descriptor found as if 0020 had been used as a 
  2457.              selector (in this case, the descriptor will be in the GDT). 
  2458.  
  2459.              M6 = 0008  (IDT window) 
  2460.  
  2461.              Places the hexadecimal value 0008 into the M6 variable and 
  2462.              displays the descriptor found at the ninth descriptor slot in the 
  2463.              IDT. 
  2464.  
  2465.  Remarks:    An M1-M6 command without a parameter causes the window that begins 
  2466.              with the specified line to be combined with the previous window. 
  2467.              If the specified line is not the beginning of a window, the 
  2468.              command merely causes the display to be updated. 
  2469.  
  2470.              When you have a secondary window set up, i.e., a memory window in 
  2471.              disassembly mode or a disassembly window in memory mode, you can 
  2472.              set any of the primary address variables and the first address 
  2473.              variable of the secondary window. You cannot set the other 
  2474.              secondary window address variables. (Secondary windows are valid 
  2475.              only for the disassembly and memory windows.) 
  2476.  
  2477.              Commands M1-M6 have the same function as typing over an address in 
  2478.              the window. (Typing over an address in a window is valid only in a 
  2479.              disassembly or memory window.) M1-M6's advantages include the use 
  2480.              of expressions and leaving the cursor on the command line. 
  2481.  
  2482.              When a window address variable is updated with one of these 
  2483.              commands, that variable defines the beginning of a window; the 
  2484.              remaining address variables in that window are also updated. 
  2485.  
  2486.              Scrolling and skipping functions may be performed with these 
  2487.              commands in conjunction with the "/" key and the ENTER key: 
  2488.  
  2489.              "/ M1 = M1 - 10" - does a vertical scroll (upward). 
  2490.  
  2491.              "/ M5 = M5 + 1" - does a horizontal scroll (right). 
  2492.  
  2493.              "/ M1 = M1 + 200" - does a downward skip through memory and can be 
  2494.              useful for locating a large text buffer in memory. 
  2495.  
  2496.              These commands may be used in conjunction with one of the FIND 
  2497.              commands to search memory for the occurrence of an item: 
  2498.  
  2499.              / FA string ; M1 = FX  (memory window) 
  2500.  
  2501.              The above sequence searches memory for an ASCII character string 
  2502.              and, upon finding the string, displays it. 
  2503.  
  2504.              Scrolling and skipping functions may be performed for the LDT/GDT 
  2505.              or IDT window using the PgUp, PgDn, Ctrl-PgUp, and the Ctrl-PgDn 
  2506.              keys. For example: 
  2507.  
  2508.              "PgUp" - does a vertical scroll of the L1 window (upward). 
  2509.  
  2510.              "Ctrl-PgDn" - does a scroll of one line of the L1 window 
  2511.              (downward). 
  2512.  
  2513.              Note:  Note that the PgUp, PgDn, Ctrl-PgUp, Ctrl-PgDn, Ctrl-Left 
  2514.                     Arrow, and Ctrl-Right Arrow keys provide scrolling in the 
  2515.                     disassembly and memory edit windows (not on the command 
  2516.                     line). 
  2517.  
  2518.  
  2519. ΓòÉΓòÉΓòÉ 1.9.33. M7-M9 - Set Variables M7-M9 ΓòÉΓòÉΓòÉ
  2520.  
  2521.  Purpose:    Sets variables M7-M9. These variables provide scratch pad space. 
  2522.              Each variable consists of either 6 hexadecimal digits or a 
  2523.              selector:offset depending on whether the address is virtual or 
  2524.              physical. 
  2525.  
  2526.  Format:     Mn [= expr] 
  2527.  
  2528.     n       The M variable to be manipulated. 
  2529.  
  2530.     expr    Any ASDT expression. 
  2531.  
  2532.  Examples:   M7 = 33F9AB 
  2533.  
  2534.              Places the value '33F9AB'x into the M7 variable. 
  2535.  
  2536.              M8 = V1 : DI 
  2537.  
  2538.              Places the contents of variable V1 and register DI into the 
  2539.              selector and offset of variable M8. 
  2540.  
  2541.  Remarks:    Since these variables are not displayed, ASDT shows you a 
  2542.              confirmation message indicating the variable name and value each 
  2543.              time one of these variables is set. 
  2544.  
  2545.              M7 = 111111 + 222222 
  2546.  
  2547.              produces the confirmation message 
  2548.  
  2549.              M7 = 333333 
  2550.  
  2551.              In order to display the contents of one of these variables, you 
  2552.              can copy the contents into a V1-V9 variable (V5=M8), or you can 
  2553.              copy the variable into itself to produce a confirmation message 
  2554.              (M8=M8). 
  2555.  
  2556.              The selector and offset portions of the M7-M9 variables are kept 
  2557.              separately, so you can use these variables when you want to keep 
  2558.              both selector and offset parts of an address. 
  2559.  
  2560.              A variable command with a null operand sets the variable to null. 
  2561.  
  2562.  
  2563. ΓòÉΓòÉΓòÉ 1.9.34. NW - Next Window ΓòÉΓòÉΓòÉ
  2564.  
  2565.  Purpose:    Switches to the next ASDT window (memory, LDT/GDT, IDT, or 
  2566.              disassembly). 
  2567.  
  2568.  Format:     NW 
  2569.  
  2570.  Examples:   NW 
  2571.  
  2572.              Switches among the ASDT windows in the following order: 
  2573.  
  2574.     o Disassembly 
  2575.     o Memory 
  2576.     o LDT/GDT 
  2577.     o IDT 
  2578.  
  2579.  Remarks:    ASDT switches the edit portion of the ASDT display to the next 
  2580.              window in the sequence, and sets the primary window to the next 
  2581.              window. 
  2582.  
  2583.              The disassembly window displays instructions in both hexadecimal 
  2584.              and disassembled format. If applicable, ASDT also displays the 
  2585.              operand of the instruction. 
  2586.  
  2587.              The memory window displays memory in hexadecimal and either ASCII 
  2588.              or EBCDIC format. Each memory line displays one paragraph (sixteen 
  2589.              bytes) of memory. 
  2590.  
  2591.              The LDT/GDT and IDT windows display descriptor table entries in a 
  2592.              decoded, readable format. Each table entry line displays one 
  2593.              descriptor table entry. 
  2594.  
  2595.              Note:  ASDT will not enter the LDT/GDT or IDT window while you are 
  2596.                     in real mode. 
  2597.  
  2598.  For disassembly and memory windows, ASDT displays the primary window in the 
  2599.  upper right portion of the ASDT screen. For LDT/GDT and IDT windows, ASDT 
  2600.  replaces the top line of the ASDT display with the GDT address, the IDT 
  2601.  address, the LDT register, the process id, the thread id, and the task state 
  2602.  register. It displays the primary window on the left side of the middle of the 
  2603.  ASDT screen. 
  2604.  
  2605.  If the primary window is disassembly, then L1 and the following disassembly 
  2606.  lines track the current CS:IP as your program runs. ASDT also tracks CS:IP for 
  2607.  a secondary disassembly window. 
  2608.  
  2609.  Refer to MW - Memory Window, LW - LDT/GDT Window, VW - IDT Window, and DW - 
  2610.  Disassembly Window for more information. 
  2611.  
  2612.  ASDT sets function key F4 to the NW command on entry. 
  2613.  
  2614.  
  2615. ΓòÉΓòÉΓòÉ 1.9.35. OB - Output Byte ΓòÉΓòÉΓòÉ
  2616.  
  2617.  Purpose:    Writes one byte to a designated port. 
  2618.  
  2619.  Format:     OB port [, value] 
  2620.  
  2621.     port    The I/O port address to which the byte is to be written. 
  2622.  
  2623.     value   The register, expression, or ASDT variable to output to the port. 
  2624.  
  2625.  Examples:   OB 40 , DL 
  2626.  
  2627.              Writes the contents of the DL register to I/O port '0040'x. The 
  2628.              port and the value written are shown in a message. 
  2629.  
  2630.              OB 21 , BH + CH 
  2631.  
  2632.              Writes the sum of the contents of the BH and CH registers to I/O 
  2633.              port '0021'x. 
  2634.  
  2635.              OB 38 
  2636.  
  2637.              Writes '00'x to I/O port '0038'x. 
  2638.  
  2639.              OB AH , AL 
  2640.  
  2641.              Writes the contents of the AL register to the port specified by 
  2642.              the contents of the AH register. 
  2643.  
  2644.  Remarks:    ASDT writes a zero to the port if you omit the value. 
  2645.  
  2646.  
  2647. ΓòÉΓòÉΓòÉ 1.9.36. OW - Output Word ΓòÉΓòÉΓòÉ
  2648.  
  2649.  Purpose:    Writes one word to a designated port. 
  2650.  
  2651.  Format:     OW port [, value] 
  2652.  
  2653.     port    The I/O port address to which the word is to be written. 
  2654.  
  2655.     value   The register, expression, or ASDT variable to output to the port. 
  2656.  
  2657.  Examples:   OW 58 , AX 
  2658.  
  2659.              Writes the contents of the AX register to I/O port '0058'x. The 
  2660.              port and the value written are shown in a message. 
  2661.  
  2662.              OW 21 , BX + CX 
  2663.  
  2664.              Writes the sum of the contents of the BX and CX registers to I/O 
  2665.              port '0021'x. 
  2666.  
  2667.              OW 38 
  2668.  
  2669.              Writes '0000'x to I/O port '0038'x. 
  2670.  
  2671.              OW AX+BX , 10 
  2672.  
  2673.              Writes '10'x to the port specified by the sum of the contents of 
  2674.              the AX and BX registers. 
  2675.  
  2676.  Remarks:    ASDT writes a zero to the port if you omit the value. 
  2677.  
  2678.  
  2679. ΓòÉΓòÉΓòÉ 1.9.37. PD - Print Disassembly ΓòÉΓòÉΓòÉ
  2680.  
  2681.  Purpose:    Prints the current ASDT disassembly window at the LPT1 address. 
  2682.  
  2683.  Format:     PD [expr] 
  2684.  
  2685.     expr    Any ASDT expression to represent the number of bytes to be 
  2686.             disassembled and printed. 
  2687.  
  2688.  Examples:   PD 100 
  2689.  
  2690.              ASDT starts disassembling and printing from the disassembly window 
  2691.              L1 address for 256 bytes. 
  2692.  
  2693.  Remarks:    If expr is null, then ASDT will print from the disassembly L1 
  2694.              address to the end of the designated segment. 
  2695.  
  2696.              Note:  :LPT1 is assumed and if expr is null while the disassembly 
  2697.                     window L1 address is physical, ASDT will disassemble and 
  2698.                     print 64K bytes! 
  2699.  
  2700.  
  2701. ΓòÉΓòÉΓòÉ 1.9.38. PI - Program Identification ΓòÉΓòÉΓòÉ
  2702.  
  2703.  Purpose:    Identifies the current thread's invocation path. 
  2704.  
  2705.  Format:     PI [= Sn] 
  2706.  
  2707.     Sn      Any of the ASDT breakpoints, V1-V9 and S1-S9. 
  2708.  
  2709.  Examples:   PI 
  2710.  
  2711.              Prints the current thread's invocation path on the ASDT message 
  2712.              line. 
  2713.  
  2714.              PI S4 
  2715.  
  2716.              Prints the invocation path of the thread that is associated with 
  2717.              the S4 breakpoint on the ASDT message line. 
  2718.  
  2719.  Remarks:    PI is useful in determining what program caused ASDT to get 
  2720.              control. This is especially helpful on a general protection fault. 
  2721.  
  2722.              Note:  You can use this command in real mode, too. 
  2723.  
  2724.  
  2725. ΓòÉΓòÉΓòÉ 1.9.39. PM - Print Memory ΓòÉΓòÉΓòÉ
  2726.  
  2727.  Purpose:    Prints the current ASDT memory window at the LPT1 address. 
  2728.  
  2729.  Format:     PM [expr] 
  2730.  
  2731.     expr    Any ASDT expression to represent the number of bytes to be 
  2732.             formatted and printed. 
  2733.  
  2734.  Examples:   PM 200 
  2735.  
  2736.              ASDT starts formatting and printing from the memory window L1 
  2737.              address for 512 bytes. 
  2738.  
  2739.  Remarks:    If expr is null, then ASDT will print from the memory L1 address 
  2740.              to the end of the designated segment. 
  2741.  
  2742.              Note:  :LPT1 is assumed and if expr is null while the memory 
  2743.                     window L1 address is physical, ASDT will format and print 
  2744.                     64K bytes! 
  2745.  
  2746.  
  2747. ΓòÉΓòÉΓòÉ 1.9.40. PR - Print Screen ΓòÉΓòÉΓòÉ
  2748.  
  2749.  Purpose:    Prints the current ASDT screen. 
  2750.  
  2751.  Format:     PR 
  2752.  
  2753.  Examples:   PR 
  2754.  
  2755.              Prints the ASDT screen to the printer at the LPT1 address. 
  2756.  
  2757.  Remarks:    ASDT uses the LPT1 address for printing.  You can also type the 
  2758.              PrtSc key while ASDT is in control to obtain a printout of ASDT's 
  2759.              screen. 
  2760.  
  2761.  
  2762. ΓòÉΓòÉΓòÉ 1.9.41. RC - Retrieve Command ΓòÉΓòÉΓòÉ
  2763.  
  2764.  Purpose:    Re-displays the last command line that was executed. 
  2765.  
  2766.  Format:     RC 
  2767.  
  2768.  Examples:   RC 
  2769.  
  2770.              Re-displays the last command line that was entered and places the 
  2771.              cursor at the end of the command line. 
  2772.  
  2773.  Remarks:    ASDT saves the contents of up to ten command lines in a circular 
  2774.              queue. Repeated RC commands will re-display the last ten command 
  2775.              lines in reverse order. 
  2776.  
  2777.              Commands entered via function keys or from a profile are not 
  2778.              included in the saved command line queue. 
  2779.  
  2780.              ASDT sets function key F10 to the RC command on entry. 
  2781.  
  2782.  
  2783. ΓòÉΓòÉΓòÉ 1.9.42. RI - Restore Interrupt command ΓòÉΓòÉΓòÉ
  2784.  
  2785.  Purpose:    Restores an ASDT interrupt to OS/2. 
  2786.  
  2787.  Format:     RI = expr 
  2788.  
  2789.     expr    Any ASDT expression that indicates which interrupt you want ASDT to 
  2790.             restore to OS/2. 
  2791.  
  2792.  Examples:   RI 0 
  2793.  
  2794.              ASDT restores control of interrupt 0 to OS/2. 
  2795.  
  2796.              RI C 
  2797.  
  2798.              ASDT restores control of interrupt '0C'x to OS/2. 
  2799.  
  2800.  Remarks:    ASDT controls various interrupts to gain control when some action 
  2801.              that generates one of these interrupts occurs.  There are times 
  2802.              when your device driver needs to control one of these ASDT 
  2803.              interrupts.  By using the RI command, you can have ASDT relinquish 
  2804.              control of a specific interrupt. 
  2805.  
  2806.              You can tell ASDT not to take over a specific interrupt during its 
  2807.              installation by using the /n parameter (where n is one of 0, 1, 2, 
  2808.              3, 6, C, or D). 
  2809.  
  2810.              See TI - Take Interrupt Command for information on how to take an 
  2811.              ASDT interrupt away from OS/2 for ASDT's usage. 
  2812.  
  2813.  
  2814. ΓòÉΓòÉΓòÉ 1.9.43. RK - Reset Keyboard Hot Key ΓòÉΓòÉΓòÉ
  2815.  
  2816.  Purpose:    Resets ASDT's monitoring for a hot key. 
  2817.  
  2818.  Format:     RK 
  2819.  
  2820.  Examples:   RK 
  2821.  
  2822.              ASDT no longer monitors keystrokes when it is not in control. 
  2823.  
  2824.  Remarks:    Subsequent hot key keystrokes do not return processor control to 
  2825.              ASDT. 
  2826.  
  2827.              The use of the keyboard hot key can be set at ASDT installation 
  2828.              time with the /K option or at any other time with the SK command. 
  2829.              Setting this option causes ASDT to monitor all keystrokes when it 
  2830.              is not in control to see if you have requested the hot key 
  2831.              function. When your program is running and this option is set, a 
  2832.              hot key will return control to ASDT. 
  2833.  
  2834.              Resetting this option with the RK command removes ASDT keystroke 
  2835.              monitoring duties. 
  2836.  
  2837.  
  2838. ΓòÉΓòÉΓòÉ 1.9.44. RT - Resume Thread ΓòÉΓòÉΓòÉ
  2839.  
  2840.  Purpose:    Resumes threads that were halted by the HT command. 
  2841.  
  2842.  Format:     RT [= pid] 
  2843.  
  2844.     pid     The process id of a specific thread that you halted with the HT 
  2845.             command. 
  2846.  
  2847.  Examples:   RT 
  2848.  
  2849.              ASDT resumes in LIFO fashion any threads that were halted using 
  2850.              the HT command. 
  2851.  
  2852.              RT 000B 
  2853.  
  2854.              ASDT resumes the thread that was halted by using the HT command 
  2855.              and has a process id number of eleven. 
  2856.  
  2857.  Remarks:    The RT command allows a previously halted thread to resume its 
  2858.              processing. You can use the HT - Halt Thread and RT commands in 
  2859.              conjunction with other keystrokes to view your host listings. 
  2860.  
  2861.              If you intend to resume halted threads in some other manner than 
  2862.              the default LIFO fashion adopted by the RT command, then you need 
  2863.              to remember the process id that is associated with each thread 
  2864.              that you halt. ASDT displays a thread's process id at the top line 
  2865.              in either the LDT/GDT or IDT window. 
  2866.  
  2867.              See LW - LDT/GDT Window and VW - IDT Window for these windowing 
  2868.              commands. 
  2869.  
  2870.              Note:  This command works for real mode as well except that you 
  2871.                     can only halt one application at a time. Additionally, you 
  2872.                     will have no need of a process id as a parameter. 
  2873.  
  2874.  
  2875. ΓòÉΓòÉΓòÉ 1.9.45. SB - Sticky Breakpoint ΓòÉΓòÉΓòÉ
  2876.  
  2877.  Purpose:    To make a specific breakpoint or all breakpoints sticky. 
  2878.  
  2879.              Sticky is defined to mean that ASDT will stop on a given 
  2880.              breakpoint regardless of the current PID and TID. 
  2881.  
  2882.  Format:     SB [= ON or OFF or Sn ON or Sn OFF] 
  2883.  
  2884.     Sn      Any ASDT breakpoint (V1-S9). 
  2885.  
  2886.  Examples:   SB ON 
  2887.  
  2888.              Sets a global sticky flag, which tells ASDT to stop on every 'CC'x 
  2889.              (breakpoint interrupt) that is encountered. 
  2890.  
  2891.              SB OFF 
  2892.  
  2893.              Resets the global ASDT sticky flag so that a decision is made by 
  2894.              ASDT on whether to stop on the current breakpoint based on PID and 
  2895.              TID comparisons. 
  2896.  
  2897.              SB S3 ON 
  2898.  
  2899.              Makes S3 sticky without affecting the status of any other 
  2900.              breakpoint. 
  2901.  
  2902.              SB S3 OFF 
  2903.  
  2904.              Resets S3's sticky status to normal (unless SB ON has set the 
  2905.              global sticky flag). 
  2906.  
  2907.  Remarks:    Normally, ASDT expends a great deal of energy to determine whether 
  2908.              it should stop on a 'CC'x that has been encountered.  Depending on 
  2909.              the current PID and TID and the PID and TID that were in effect 
  2910.              when you set a breakpoint, ASDT tries to determine if it should 
  2911.              stop execution of your program or yield control back to OS/2. 
  2912.              However, if the global sticky flag is on or if an individual 
  2913.              breakpoint that is hit is sticky, then ASDT knows to take control 
  2914.              regardless of PID and TID information. 
  2915.  
  2916.              Note:  ASDT always considers physical address breakpoints, GDT 
  2917.                     virtual address breakpoints, and real mode breakpoints to 
  2918.                     be sticky. 
  2919.  
  2920.  
  2921. ΓòÉΓòÉΓòÉ 1.9.46. SC - Screen ΓòÉΓòÉΓòÉ
  2922.  
  2923.  Purpose:    Replaces the ASDT full screen display with the user program 
  2924.              display. 
  2925.  
  2926.  Format:     SC 
  2927.  
  2928.  Examples:   SC 
  2929.  
  2930.              Displays the user program's screen and waits for any key to be 
  2931.              pressed. 
  2932.  
  2933.  Remarks:    Since ASDT uses the display screen to communicate with you, it 
  2934.              saves your program's screen each time ASDT is entered and restores 
  2935.              that screen each time it returns control to your program. When 
  2936.              ASDT is active and you wish to view your screen instead of the 
  2937.              ASDT screen, enter the SC command. Tapping any key restores the 
  2938.              ASDT screen. 
  2939.  
  2940.              ASDT sets function key F6 to the SC command on entry. 
  2941.  
  2942.  
  2943. ΓòÉΓòÉΓòÉ 1.9.47. SK - Set Keyboard Hot Key ΓòÉΓòÉΓòÉ
  2944.  
  2945.  Purpose:    Sets hot key monitoring by ASDT. 
  2946.  
  2947.  Format:     SK [= nn] 
  2948.  
  2949.  Examples:   SK 
  2950.  
  2951.              ASDT monitors keystrokes when it is not in control to see if you 
  2952.              have typed the currently-defined hot key.  This defaults to the 
  2953.              PrtSc key. 
  2954.  
  2955.              SK 4A 
  2956.  
  2957.              Defines the hot key to scancode 4A, which is the keypad minus. 
  2958.  
  2959.  Remarks:    Subsequent hot key keystrokes return processor control to ASDT. 
  2960.  
  2961.              The use of the keyboard hot key can be set at ASDT installation 
  2962.              time with the /K option. Setting this option causes ASDT (when it 
  2963.              is not in control) to monitor keystrokes searching for a hot key. 
  2964.              When your program is running and this option is set, a hot key 
  2965.              will return control to ASDT. 
  2966.  
  2967.              Resetting this option with the RK command removes ASDT's 
  2968.              monitoring of keystrokes. 
  2969.  
  2970.  
  2971. ΓòÉΓòÉΓòÉ 1.9.48. SR - System Reset ΓòÉΓòÉΓòÉ
  2972.  
  2973.  Purpose:    Performs a system reset. 
  2974.  
  2975.  Format:     SR 
  2976.  
  2977.  Examples:   SR 
  2978.  
  2979.              Re-ipls the machine causing control to be given to the boot-strap 
  2980.              loader. 
  2981.  
  2982.  Remarks:    This command is useful if you want a fresh power-on of the system 
  2983.              without turning the power switch off and on. Memory is not 
  2984.              rechecked, and it is cleared. ASDT does not regain control with 
  2985.              this command. 
  2986.  
  2987.  
  2988. ΓòÉΓòÉΓòÉ 1.9.49. ST - Step ΓòÉΓòÉΓòÉ
  2989.  
  2990.  Purpose:    Executes a specified number of user program instructions. 
  2991.  
  2992.  Format:     ST [= expr] 
  2993.  
  2994.     expr    Any ASDT expression. 
  2995.  
  2996.  Examples:   ST 4 
  2997.  
  2998.              Four user program instructions are executed. 
  2999.  
  3000.  Remarks:    If the operand is null, the number of instructions executed 
  3001.              defaults to the value of the step count variable (CT). 
  3002.  
  3003.              Your display screen is restored, one user program instruction is 
  3004.              executed, the breakpoints are activated, and the remaining user 
  3005.              program instructions are executed. Program execution is terminated 
  3006.              by one of the interrupts ASDT handles, by a breakpoint, or by the 
  3007.              step count. The reason for termination is displayed with a message 
  3008.              or a breakpoint highlight. 
  3009.  
  3010.              Execution of your program always begins at the location pointed to 
  3011.              by CS:IP. 
  3012.  
  3013.              ASDT uses only the least significant 16 bits that result from an 
  3014.              expression evaluation to set the ST value. ASDT truncates any 
  3015.              additional bits and displays a warning message. 
  3016.  
  3017.              Be aware of interrupts that prevent processor control from passing 
  3018.              to ASDT. The timer, for example, would cause an interrupt between 
  3019.              each depression of the ENTER key. Since ASDT resets the IF flag 
  3020.              before executing each user program instruction, it is not always 
  3021.              aware of user program instructions which modify the IF flag. At 
  3022.              those times when ASDT does not keep the IF flag properly updated, 
  3023.              it is your responsibility to update the IF flag via the IF 
  3024.              command. 
  3025.  
  3026.              ASDT sets function key F8 to the ST command on entry. 
  3027.  
  3028.  
  3029. ΓòÉΓòÉΓòÉ 1.9.50. S1-S9 - Set Breakpoints S1-S9 ΓòÉΓòÉΓòÉ
  3030.  
  3031.  Purpose:    Sets the breakpoints that are displayed near the top of the ASDT 
  3032.              display screen. 
  3033.  
  3034.              Each breakpoint is either an absolute, 6-higit physical address, 
  3035.              or it is a selector:offset address. It is displayed as a 6-higit 
  3036.              address or as an offset from some selector or as "....." to 
  3037.              indicate that the breakpoint is null. 
  3038.  
  3039.  Format:     Sn [= expr or ON or OFF] 
  3040.  
  3041.     n       The S breakpoint to be manipulated. 
  3042.  
  3043.     expr    Any ASDT expression. 
  3044.  
  3045.     ON      Activates Sn as a breakpoint. 
  3046.  
  3047.     OFF     Suspends Sn as a breakpoint. 
  3048.  
  3049.  Examples:   S1 = 345C00 
  3050.  
  3051.              Sets the S1 breakpoint to address hex 345C00. If this address is 
  3052.              below or more than 64KB above the CS and the CO, the breakpoint is 
  3053.              displayed as "345C00." 
  3054.  
  3055.              S2 = CO + 4 
  3056.  
  3057.              Sets the S2 breakpoint to four bytes beyond the current code 
  3058.              origin address. The breakpoint is displayed as "$0004." 
  3059.  
  3060.              S5 = CS:CX 
  3061.  
  3062.              Sets the S5 breakpoint to the current code segment plus the 
  3063.              contents of the CX register. The breakpoint is displayed with a 
  3064.              leading "+." 
  3065.  
  3066.              S8 OFF 
  3067.  
  3068.              Deactivates the S8 breakpoint. 
  3069.  
  3070.  Remarks:    When a breakpoint is activated, the instruction at that address is 
  3071.              disassembled and displayed on the message line. 
  3072.  
  3073.              When any of the active breakpoints is encountered during the 
  3074.              execution of a user program, execution is stopped and control is 
  3075.              given to ASDT. In addition to the nine S1-S9 breakpoints, the nine 
  3076.              V1-V9 variables may be used for address stops to provide a maximum 
  3077.              of eighteen address stops per screen. Since there are nine ASDT 
  3078.              screens, a total of 162 address stops may be active at any given 
  3079.              time. 
  3080.  
  3081.              ASDT displays active breakpoints in a relative address format if 
  3082.              possible. A relative address is designated by a "$" for CO, a "+" 
  3083.              for CS, or a "*" for any other selector when the breakpoint is not 
  3084.              a 6-higit physical address. When a breakpoint is not active, ASDT 
  3085.              displays it as a 6-higit address if it is a physical address, 
  3086.              otherwise it is displayed as a 4-higit offset with a leading "?." 
  3087.              The following examples show how breakpoints are displayed under 
  3088.              the various conditions: 
  3089.  
  3090.                           Command       CO Setting  CS Base Address  CS Setting  Resulting Display
  3091.  
  3092.                           S1=CO+200      3D5900          200000         002F      S1:$0200
  3093.                           S5=CO-1A5      +5900           3D0000         001F      S5:+575B
  3094.                           S8=3D5900      null            3D0000         001F      S8:+5900
  3095.                           S2=2D0003      3D5900          100000         004F      S2:2D0003
  3096.                           S1=DS:4567     +5900           3D0000         001F      S1:*4567
  3097.                           S1=CO;S1 OFF   3D5900          200000         002F      S1:3D5900
  3098.                           S1=CO;S1 OFF   003F:0004       3D0000         001F      S1:?0004
  3099.  
  3100.              ASDT highlights active breakpoints on the ASDT display screen. 
  3101.              Once you deactivate a breakpoint with an OFF operand, it remains 
  3102.              deactivated until it is reactivated with an ON operand. 
  3103.  
  3104.              Note:  ASDT will not reactivate a breakpoint for a process or 
  3105.                     thread that has terminated. This is due to the fact that 
  3106.                     every breakpoint has a process id, a thread id, and an LDT 
  3107.                     associated with it when it is set. You may deactivate and 
  3108.                     reactivate the breakpoint while its associated information 
  3109.                     is still valid, but you can not reactivate it once its 
  3110.                     thread has been terminated. If you want to reactivate a 
  3111.                     screen's breakpoints and associate their addresses with the 
  3112.                     current process id, thread id, and LDT, then issue a Dn ON 
  3113.                     command 
  3114.  
  3115.  Note:  When in real mode, you will set segment:offset breakpoints and physical 
  3116.         address breakpoints.  The physical address breakpoints will be limited 
  3117.         to 5 higits even though they will be displayed as 6 higits. 
  3118.  
  3119.  You can not set, deactivate, or reactivate a virtual real mode breakpoint 
  3120.  while in protected mode and vice versa.  Additionally, you can not set, 
  3121.  deactivate, or reactivate a physical address breakpoint that is above the 1M 
  3122.  line in real mode. 
  3123.  
  3124.  A breakpoint command with a null operand sets the breakpoint to null. 
  3125.  
  3126.  A special  form of breakpoint, the procedure step, is used to run an entire 
  3127.  module or section of code that is invoked with a CALL, INT, or REP 
  3128.  instruction. ASDT provides a procedure step function, which uses S9 to set a 
  3129.  breakpoint at the instruction following the one about to be executed. If the 
  3130.  instruction about to be executed is a CALL, INT, or REP, the effect is for the 
  3131.  entire module to be executed. The command sequence is "S9 = EX+IL;EX;S9." 
  3132.  
  3133.  ASDT sets function key F9 to the procedure step command sequence on entry. 
  3134.  
  3135.  You can change active breakpoints into complex breakpoints with the CB - 
  3136.  Complex Breakpoint command. See also Setting Breakpoints. 
  3137.  
  3138.  
  3139. ΓòÉΓòÉΓòÉ 1.9.51. TI - Take Interrupt Command ΓòÉΓòÉΓòÉ
  3140.  
  3141.  Purpose:    Takes an ASDT interrupt from OS/2 for ASDT's usage. 
  3142.  
  3143.  Format:     TI = expr 
  3144.  
  3145.     expr    Any ASDT expression that indicates which interrupt you want ASDT to 
  3146.             take from OS/2. 
  3147.  
  3148.  Examples:   TI 2 
  3149.  
  3150.              ASDT takes control of interrupt 2 from OS/2. 
  3151.  
  3152.              TI D 
  3153.  
  3154.              ASDT takes control of interrupt '0D'x from OS/2. 
  3155.  
  3156.  Remarks:    ASDT controls various interrupts to gain control when some action 
  3157.              that generates one of these interrupts occurs. There are times 
  3158.              when your device driver needs to control one of these ASDT 
  3159.              interrupts. By using the RI - Restore Interrupt command, you can 
  3160.              have ASDT relinquish control of a specific interrupt. By using the 
  3161.              TI command, you can have ASDT regain control of the specific 
  3162.              interrupt. 
  3163.  
  3164.  
  3165. ΓòÉΓòÉΓòÉ 1.9.52. TP - Terminate Process ΓòÉΓòÉΓòÉ
  3166.  
  3167.  Purpose:    Terminates the current process that ASDT is monitoring. 
  3168.  
  3169.  Format:     TP 
  3170.  
  3171.  Examples:   TP 
  3172.  
  3173.              ASDT terminates the current process (program) and returns to OS/2. 
  3174.  
  3175.  Remarks:    TP allows you to end a process that ASDT has intercepted. This is 
  3176.              useful when a stack limit violation or a general protection fault 
  3177.              has caused ASDT to gain control. 
  3178.  
  3179.              ASDT can not terminate a process that is running at level 0. ASDT 
  3180.              will issue a warning message if you try to do this, and will not 
  3181.              attempt to terminate the process. Additionally, if you issue TP 
  3182.              for a device driver that ASDT is monitoring during the 
  3183.              initialization phase, the system will hang. 
  3184.  
  3185.              ASDT sets function key F3 to the TP command on entry. 
  3186.  
  3187.              Note:  In the DOS compatibility box, you should use the TP command 
  3188.                     only to terminate an application (not a device driver, a 
  3189.                     resident interrupt handler, etc.). 
  3190.  
  3191.  
  3192. ΓòÉΓòÉΓòÉ 1.9.53. TS - Task State Register ΓòÉΓòÉΓòÉ
  3193.  
  3194.  Purpose:    Alters the contents of the TSR. 
  3195.  
  3196.  Format:     TS [= expr] 
  3197.  
  3198.     expr    Any ASDT expression. 
  3199.  
  3200.  Examples:   TS = 2A 
  3201.  
  3202.              ASDT sets the task state register to '2A'x. 
  3203.  
  3204.  Remarks:    The current TSR (task state register) is changed when you enter 
  3205.              the TS command. When you change the TSR, your program may not be 
  3206.              able to continue with the altered value. 
  3207.  
  3208.              ASDT uses only the least significant 16 bits that result from an 
  3209.              expression evaluation to set the TSR. ASDT truncates any 
  3210.              additional bits and displays a warning message. 
  3211.  
  3212.              The TS command with a null operand restores your program's TSR to 
  3213.              its original value. If you attempt to set the TSR to an invalid 
  3214.              value, ASDT will display a message and will not set the register. 
  3215.  
  3216.              Note:  This command can not be used in real mode. 
  3217.  
  3218.  
  3219. ΓòÉΓòÉΓòÉ 1.9.54. T0 - Suspend/Reactivate 80386 Hardware Debug Registers ΓòÉΓòÉΓòÉ
  3220.  
  3221.  Purpose:    Suspends or reactivates the 80386 hardware debug registers 
  3222.              (DR0-DR3). 
  3223.  
  3224.  Format:     T0 [= ON or OFF] 
  3225.  
  3226.     ON      Reactivates all DRx that have settings. 
  3227.  
  3228.     OFF     Suspends all DRx that have settings. 
  3229.  
  3230.  Examples:   T0 OFF 
  3231.  
  3232.              Keeps DR0-DR3 disarmed upon exit from ASDT. 
  3233.  
  3234.              T0 ON 
  3235.  
  3236.              Reactivates all of DR0-DR3 that have settings. 
  3237.  
  3238.  Remarks:    If you reference the T1-T4 commands (see T1-T4 - Set 80386 
  3239.              Hardware Debug Registers) you will notice that ASDT will 
  3240.              deactivate your DR0-DR3 settings for various reasons that 
  3241.              generally deal with the fact that the PID under which you set 
  3242.              DR0-DR3 has been switched out or terminated.  T0 ON will 
  3243.              reactivate any suspended hardware debug register setting and will 
  3244.              associate the current PID (in protected mode) with it. 
  3245.  
  3246.              Note:  You can not reactivate a virtual real mode DRx breakpoint 
  3247.                     while in protected mode and vice versa.  Additionally, you 
  3248.                     can not reactivate a physical address breakpoint that is 
  3249.                     above the 1M line in real mode.  This also implies that 
  3250.                     certain DRx breakpoints will be "lost" if you enter ASDT in 
  3251.                     one mode after having set DRx breakpoints in the opposite 
  3252.                     mode.  These DRx breakpoints will be reestablished once you 
  3253.                     enter ASDT in the mode that they were first set. 
  3254.  
  3255.  
  3256. ΓòÉΓòÉΓòÉ 1.9.55. T1-T4 - Set 80386 Hardware Debug Registers ΓòÉΓòÉΓòÉ
  3257.  
  3258.  Purpose:    Sets the 80386 hardware debug registers (DR0-DR3). 
  3259.  
  3260.              Each DRx is set by using the Tn command where n is 1-4 and x=n-1. 
  3261.              ASDT uses the information specified with the T1-T4 commands to 
  3262.              load DR0-DR3 and DR7 upon return to OS/2. 
  3263.  
  3264.  Format:     Tn [= opnds or ON or OFF] 
  3265.  
  3266.     n       The DRx register to be set (x=n-1); e.g., the T4 command sets DR3. 
  3267.  
  3268.     null    ASDT retrieves information about DRx's current setting and places 
  3269.             this data on the command line for review or editing. 
  3270.  
  3271.     opnds   operands (addr,action,len,context,exact) that must appear in this 
  3272.             order. Only addr is required. 
  3273.  
  3274.        addr    Any ASDT expression that defines the address that you want DRx 
  3275.                to monitor. A virtual address will have ASDT calculate the 
  3276.                linear address whereas a physical address will be loaded into 
  3277.                DRx as is. 
  3278.  
  3279.        action  I (breaks on instruction execution only), W (breaks on data 
  3280.                writes only), or R (breaks on data reads or writes but not on 
  3281.                instruction fetches). The default action is W. 
  3282.  
  3283.        len     1, 2, or 4 to specify the length of the data item to be 
  3284.                monitored. The 80386 hardware requires that multiple-byte fields 
  3285.                be aligned on their proper boundaries. For the I action, ASDT 
  3286.                will force the length byte to 1. The default length is 1 byte. 
  3287.  
  3288.        context G (global level) or L (local level). The default context is 
  3289.                global. 
  3290.  
  3291.        exact   E (exact data breakpoint match) or ╨║ (for inexact data 
  3292.                breakpoint match). The 80386 processor slows the execution so 
  3293.                that data breakpoints are reported on the instruction that 
  3294.                causes them when the exact option is indicated. The default is 
  3295.                exact. 
  3296.  
  3297.     ON      Reactivates DRx. 
  3298.  
  3299.     OFF     Suspends DRx. 
  3300.  
  3301.  Examples:   T1 5F:0245,I 
  3302.  
  3303.              Sets DR0 to stop on instructions referenced at this location. 
  3304.  
  3305.              T2 123456,R,2,G,╨║ 
  3306.  
  3307.              Sets DR1 to stop on data reads/writes from/to this location 
  3308.              without the exact option. 
  3309.  
  3310.              T3 OFF 
  3311.  
  3312.              Deactivates DR2. 
  3313.  
  3314.              T1 
  3315.  
  3316.              Places the current settings associated with DR0 on the ASDT 
  3317.              command line for review or editing. 
  3318.  
  3319.  Remarks:    In general, ASDT is allowing you to set the 80386 hardware 
  3320.              registers as mentioned in the Intel 80386 Programmer's Reference. 
  3321.              You should apprise yourself with this reference guide before using 
  3322.              the T1-T4 commands. 
  3323.  
  3324.              The 80386 hardware automatically resets the local enable bits of 
  3325.              DR7 at every task switch to avoid unwanted breakpoint conditions 
  3326.              in the new task.  However, OS/2 does not implement hardware task 
  3327.              switching.  Hence, ASDT does the best it can to determine when a 
  3328.              hardware debug register is "truly" hit for your settings; i.e., if 
  3329.              you use local context, ASDT looks to see if the current PID (when 
  3330.              in protected mode) matches the one that was in effect when you set 
  3331.              DRx.  If the PIDs do not match, ASDT disables the local context 
  3332.              DRx, and returns control to OS/2. 
  3333.  
  3334.              Note:  Global context means that ASDT will not check DRx's PID. 
  3335.                     ASDT just assumes that you always want the trap. The same 
  3336.                     holds true  for all physical address DRx settings 
  3337.                     regardless of context.  Even so, ASDT will deactivate a DRx 
  3338.                     with a global context if it determines that the virtual 
  3339.                     address does not use the GDT and its PID has been killed. 
  3340.  
  3341.  Note:  You can not reactivate a virtual real mode DRx breakpoint while in 
  3342.         protected mode and vice versa.  Additionally, you can not reactivate a 
  3343.         physical address breakpoint that is above the 1M line in real mode. 
  3344.         This also implies that certain DRx breakpoints will be "lost" if you 
  3345.         enter ASDT in one mode after having set DRx breakpoints in the opposite 
  3346.         mode.  These DRx breakpoints will be reestablished once you enter ASDT 
  3347.         in the mode that they were first set. 
  3348.  
  3349.  See T0 - Suspend/Reactivate 80386 Hardware Debug Registers for a method that 
  3350.  allows you to suspend or reactivate all 4 DR0-DR3 registers at once. 
  3351.  
  3352.  
  3353. ΓòÉΓòÉΓòÉ 1.9.56. UM - User Mask ΓòÉΓòÉΓòÉ
  3354.  
  3355.  Purpose:    Displays and optionally sets the interrupt controller mask while 
  3356.              ASDT has processor control. 
  3357.  
  3358.  Format:     UM [= value] 
  3359.  
  3360.     value   The interrupt mask value (must evaluate to '00'x through 'FF'x). 
  3361.  
  3362.  Examples:   UM 
  3363.  
  3364.              Displays the current ASDT mask for the 8259 interrupt levels. 
  3365.  
  3366.              UM BC 
  3367.  
  3368.              Sets the user mask to 'BC'x, which allows only the keyboard and 
  3369.              diskette interrupts while ASDT has control (assuming that these 
  3370.              interrupts were not disabled by your program). 
  3371.  
  3372.  Remarks:    ASDT will not let you set a value which disables the keyboard. 
  3373.  
  3374.              When ASDT gets control, ASDT saves the current interrupt mask 
  3375.              register (I/O port '21'x). It then ORs the value you select with 
  3376.              the current mask. 
  3377.  
  3378.              Note:  This means you cannot enable interrupts in ASDT that were 
  3379.                     disabled in your program. 
  3380.  
  3381.  ASDT initializes the user mask to '00'x.  You can specify another initial 
  3382.  value for ASDT with the /U=nn parameter used by ASDT during installation (nn 
  3383.  represents the byte that you want to serve as the user mask). 
  3384.  
  3385.  The UM command allows you to specify which 8259 interrupt levels are to be 
  3386.  masked off while in ASDT. However, when ASDT returns control to your program 
  3387.  (via the EX, HT, ST, and TP commands), it restores the previously saved 
  3388.  interrupt mask register value. 
  3389.  
  3390.  Because of the complex nature of this command, only those familiar with 8259 
  3391.  interrupt levels and operation should use it. 
  3392.  
  3393.  
  3394. ΓòÉΓòÉΓòÉ 1.9.57. U1-U9 - User-defined Functions ΓòÉΓòÉΓòÉ
  3395.  
  3396.  Purpose:    Allows you to call some of your own routines while under ASDT. 
  3397.  
  3398.  Format:     Un [= expr] 
  3399.  
  3400.     n       1-9 to designate the member, U1-U9, of the dynamic load library, 
  3401.             UX.DLL, that you want to call. 
  3402.  
  3403.     expr    Any ASDT expression that evaluates to a 32-bit pointer that you 
  3404.             want to pass to your routine. 
  3405.  
  3406.  Examples:   U3 DS:23 
  3407.  
  3408.              Invokes U3, a member of the dynamic load library, UX.DLL, and 
  3409.              passes it the 32-bit pointer, DS:23. 
  3410.  
  3411.              U9 
  3412.  
  3413.              Invokes U9, a member of the dynamic load library, UX.DLL, without 
  3414.              passing it a parameter. 
  3415.  
  3416.  Remarks:    ASDT assumes that you have the dynamic load library, UX.DLL, 
  3417.              located in a library path that is searched by OS/2.  You can 
  3418.              define routines, U1-U9, for this DLL that can be called by ASDT 
  3419.              using the U1-U9 commands. 
  3420.  
  3421.              A 32-bit pointer is optionally passed as a parameter to your 
  3422.              routine. It is up to you to make sure that your routine allows or 
  3423.              does not allow for these two words on the stack. 
  3424.  
  3425.              ASDT gives control to your routine, which runs as a level 3 
  3426.              application extension to ASDT. ASDT puts in all of the breakpoints 
  3427.              that you have defined before control is given to your routine. 
  3428.              This needs to be done as the CPU is yielded when a level 3 
  3429.              application thread is running. 
  3430.  
  3431.              ASDT will "spin" on any breakpoint that is encountered while your 
  3432.              routine has control. Hence, ASDT will not be reentered while your 
  3433.              routine is running unless some error condition interrupt occurs. 
  3434.              If this happens, the results are unpredictable.  As a consequence 
  3435.              of this, you should not put any 'CC'x breakpoints in any of your 
  3436.              UX.DLL routines. 
  3437.  
  3438.              It is your responsibility to preserve the DS, SS, SP, and BP 
  3439.              registers for ASDT.  ASDT waits for your routine to return control 
  3440.              to it before it continues its processing. 
  3441.  
  3442.              If you use the UX.DLL provided with ASDT, you can issue the "U2 
  3443.              SC" command to have ASDT dump its screen contents to a file named 
  3444.              ASDT.OUT. The SC variable is a special parameter that is a level 3 
  3445.              selector:offset to the internal screen buffer of ASDT. It can be 
  3446.              used as a parameter to any of the user-defined functions. 
  3447.  
  3448.              Note:  This command can not be used in real mode. 
  3449.  
  3450.  
  3451. ΓòÉΓòÉΓòÉ 1.9.58. VW - IDT Window ΓòÉΓòÉΓòÉ
  3452.  
  3453.  Purpose:    Switches to IDT Window Mode. 
  3454.  
  3455.  Format:     VW 
  3456.  
  3457.  Examples:   VW 
  3458.  
  3459.              ASDT switches the edit portion of the ASDT display to an IDT 
  3460.              window and sets the primary window mode to IDT. 
  3461.  
  3462.  Remarks:    The IDT window displays descriptor table entries in a decoded, 
  3463.              readable format. Each table entry line displays one descriptor 
  3464.              table entry. 
  3465.  
  3466.              For an IDT window, ASDT replaces the top line of the ASDT display 
  3467.              with the GDT address, the IDT address, the LDT register, the 
  3468.              process id, the thread id, and the task state register. It 
  3469.              displays the primary window on the left side of the middle of the 
  3470.              ASDT screen. 
  3471.  
  3472.              Also see the NW - Next Window command which switches among all of 
  3473.              the ASDT windows. 
  3474.  
  3475.              Note:  This command can not be used in real mode. 
  3476.  
  3477.  
  3478. ΓòÉΓòÉΓòÉ 1.9.59. V1-V9 - Set Variables V1-V9 ΓòÉΓòÉΓòÉ
  3479.  
  3480.  Purpose:    Sets the variables that are displayed near the top of the ASDT 
  3481.              display screen. 
  3482.  
  3483.              These variables provide scratch pad space and additional 
  3484.              breakpoints. Each breakpoint is either an absolute, 6-higit 
  3485.              physical address, or it is a selector:offset address. It is 
  3486.              displayed as a 6-higit address or as an offset from some selector 
  3487.              or as "....." to indicate that the breakpoint is null. 
  3488.  
  3489.  Format:     Vn [= expr or ON or OFF] 
  3490.  
  3491.     n       The V breakpoint to be manipulated. 
  3492.  
  3493.     expr    Any ASDT expression. 
  3494.  
  3495.     ON      Activates Vn as a breakpoint. 
  3496.  
  3497.     OFF     Suspends Vn as a breakpoint. 
  3498.  
  3499.  Examples:   V1 = CS:IP + 2B8 
  3500.  
  3501.              Adds '2B8'x to the current program counter and places the result 
  3502.              in the V1 variable. 
  3503.  
  3504.              V2 = V1 + AX 
  3505.  
  3506.              Places the sum of the contents of variable V1 and the AX register 
  3507.              into the V2 variable. 
  3508.  
  3509.              V5 = CO:CX;V5 ON 
  3510.  
  3511.              Sets the V5 breakpoint to the current code origin plus the 
  3512.              contents of the CX register and activates the breakpoint. The 
  3513.              breakpoint is displayed with a leading "$." 
  3514.  
  3515.  Remarks:    At times, it may be useful to use one or more of the V1-V9 
  3516.              variables as address stops (breakpoints). ASDT displays active 
  3517.              breakpoints in a relative address format if possible. A relative 
  3518.              address is designated by a "$" for CO, a "+" for CS, or a "*" for 
  3519.              any other selector when the breakpoint is not a 6-higit physical 
  3520.              address. When a breakpoint is not active, ASDT displays it as a 
  3521.              6-higit address if it is a physical address, otherwise it is 
  3522.              displayed as a 4-higit offset with a leading "?." The default 
  3523.              state for the V breakpoints is inactive. 
  3524.  
  3525.              See Setting Breakpoints and S1-S9 - Set Breakpoints S1-S9 for more 
  3526.              information. 
  3527.  
  3528.              ASDT highlights active breakpoints on the ASDT screen. Once you 
  3529.              activate a variable with an ON operand, it remains activated until 
  3530.              it is deactivated either with an OFF operand or by being set to 
  3531.              null. 
  3532.  
  3533.              Note:  ASDT will not reactivate a breakpoint for a process or 
  3534.                     thread that has terminated. This is due to the fact that 
  3535.                     every breakpoint has a process id, a thread id, and an LDT 
  3536.                     associated with it when it is set. You may deactivate and 
  3537.                     reactivate the breakpoint while its associated information 
  3538.                     is still valid, but you can not reactivate it once its 
  3539.                     thread has been terminated. If you want to reactivate a 
  3540.                     screen's breakpoints and associate their addresses with the 
  3541.                     current process id, thread id, and LDT, then issue a Dn ON 
  3542.                     command. 
  3543.  
  3544.  Note:  When in real mode, you will set segment:offset breakpoints and physical 
  3545.         address breakpoints.  The physical address breakpoints will be limited 
  3546.         to 5 higits even though they will be displayed as 6 higits. 
  3547.  
  3548.  You can not set, deactivate, or reactivate a virtual real mode breakpoint 
  3549.  while in protected mode and vice versa. Additionally, you can not set, 
  3550.  deactivate, or reactivate a physical address breakpoint that is above the 1M 
  3551.  line in real mode. 
  3552.  
  3553.  A breakpoint command with a null operand sets the breakpoint to null. 
  3554.  
  3555.  You can change active breakpoints into complex breakpoints with the CB - 
  3556.  Complex Breakpoint command. 
  3557.  
  3558.  
  3559. ΓòÉΓòÉΓòÉ 1.9.60. WA - Window Assumption ΓòÉΓòÉΓòÉ
  3560.  
  3561.  Purpose:    Causes ASDT to make assumptions about the selector used for 
  3562.              setting the window, breakpoint, and CO variables during assignment 
  3563.              commands. 
  3564.  
  3565.  Format:     WA [ON or OFF] 
  3566.  
  3567.  Examples:   WA ON 
  3568.  
  3569.              Causes ASDT to use window assumptions. 
  3570.  
  3571.              WA OFF 
  3572.  
  3573.              Causes ASDT to stop using window assumptions. 
  3574.  
  3575.  Remarks:    Window assumptions affect assignments to the window, breakpoint, 
  3576.              and CO variables.  Some examples follow that assume that ASDT is 
  3577.              using window assumptions: 
  3578.  
  3579.                                 CO 35    -  CO gets CS:35
  3580.                                 S8 1234  -  S8 gets CO+1234 or CS:1234 depending on whether
  3581.                                             the code origin is set
  3582.                                 L1 IP    -  L1 gets CS:IP if CO is null
  3583.                                 L1 LC    -  L1 gets CO+LC if CO is set
  3584.  
  3585.              Note:  ASDT will use a physical address if you specify a source 
  3586.                     constant or variable that is greater than 'FFFF'x. If you 
  3587.                     specify a source constant or variable that consists of a 
  3588.                     selector and an offset, ASDT will use that selector and 
  3589.                     offset. 
  3590.  
  3591.  The /W option has ASDT use window assumptions, too. 
  3592.  
  3593.  
  3594. ΓòÉΓòÉΓòÉ 1.9.61. XS - Extra Selector Register ΓòÉΓòÉΓòÉ
  3595.  
  3596.  Purpose:    Alters the contents of the extra selector register variable. 
  3597.  
  3598.  Format:     XS [= expr] 
  3599.  
  3600.     expr    Any ASDT expression. 
  3601.  
  3602.  Examples:   XS = 1C42 
  3603.  
  3604.              Places the value '1C42'x into the XS variable. 
  3605.  
  3606.              XS = CS 
  3607.  
  3608.              Copies the contents of the CS register into the XS variable. 
  3609.  
  3610.  Remarks:    To save and restore selector register contents, use the XS segment 
  3611.              register variable. ASDT treats XS just like a real selector 
  3612.              register. 
  3613.  
  3614.              ASDT uses only the least significant 16 bits that result from an 
  3615.              expression evaluation to set the XS variable. ASDT truncates any 
  3616.              additional bits and displays a warning message. 
  3617.  
  3618.              A null operand sets the XS variable to zero. 
  3619.  
  3620.  
  3621. ΓòÉΓòÉΓòÉ 1.10. ASDT Messages ΓòÉΓòÉΓòÉ
  3622.  
  3623. This section describes all of the messages that may appear on the ASDT display 
  3624. screen message line. A message either indicates that an action was taken or 
  3625. describes an error that has occurred. 
  3626.  
  3627. If you have trouble understanding an error or what action to take in response 
  3628. to an error, refer to the appropriate command in ASDT Command Reference. 
  3629.  
  3630. Messages are listed by subject. 
  3631.  
  3632.  
  3633. ΓòÉΓòÉΓòÉ 1.10.1. General Messages ΓòÉΓòÉΓòÉ
  3634.  
  3635.  BREAKPOINT(S) DEACTIVATED ASDT deactivated at least one breakpoint.  This 
  3636.    usually happens due to the fact that some process or thread has terminated, 
  3637.    and ASDT can no longer track breakpoints with that process or thread. 
  3638.  
  3639.  BREAKPOINT CONFLICTS WITH MODE ASDT can not set, deactivate, or reactivate at 
  3640.    least one breakpoint because it was set in real mode and you are now in 
  3641.    protected mode or vice versa. 
  3642.  
  3643.  COMMAND "xx" NOT RECOGNIZED The command you issued was not a valid ASDT 
  3644.    command. 
  3645.  
  3646.  INVALID SELECTOR SPECIFIED The selector you have specified for some ASDT 
  3647.    command is invalid. 
  3648.  
  3649.  LDT BASE ADDRESS HAS CHANGED You tried to execute an ASDT command that 
  3650.    requires the LDT to be what it was upon entry. 
  3651.  
  3652.  CMD USED ONLY IN PROTECT MODE You tried to execute an ASDT command that is 
  3653.    valid only in the protected mode, and you are executing in real mode. 
  3654.  
  3655.  
  3656. ΓòÉΓòÉΓòÉ 1.10.2. Invocation Messages ΓòÉΓòÉΓòÉ
  3657.  
  3658.  COLOR DISPLAY NOT PRESENT You specified the /M option in your CONFIG.SYS file, 
  3659.    and ASDT does not detect the presence of a color display adapter. 
  3660.  
  3661.  DIVIDE-BY-ZERO INTERRUPT (0) ASDT gained control via a divide by zero 
  3662.    interrupt. This usually indicates an error in your program, but does not 
  3663.    necessarily indicate a division error. 
  3664.  
  3665.  ERROR READING PROFILE: xxxxxxx ASDT failed when it tried to read in a profile 
  3666.    due to some specification by you in the CONFIG.SYS file. 
  3667.  
  3668.  GENERAL PROTECTION FAULT xxxx ASDT gained control because an Int D occurred. 
  3669.    This indicates that there was a general protection fault. The error code is 
  3670.    shown and is retained in the ASDT variable, EC. 
  3671.  
  3672.  HOT KEY INTERRUPT ASDT gained control because you typed the currently defined 
  3673.    hot key. The hot key yields control to ASDT if you have issued an SK command 
  3674.    or if you invoked ASDT with the /K option. 
  3675.  
  3676.  MONOCHROME DISPLAY NOT PRESENT You specified the /M option in your CONFIG.SYS 
  3677.    file, and ASDT does not detect the presence of a monochrome display adapter. 
  3678.  
  3679.  NMI SWITCH INTERRUPT (2) ASDT gained control due to an Int 2 being issued. 
  3680.    This usually means that you hit the NMI switch. 
  3681.  
  3682.  PARAMETER UNRECOGNIZED: /x ASDT did not recognize an invocation parameter that 
  3683.    you specified in the CONFIG.SYS file. 
  3684.  
  3685.  SINGLE STEP TRAP INTERRUPT (1) ASDT gained control because the trap flag (TF) 
  3686.    was set while the processor was executing an instruction. You may clear this 
  3687.    flag with the TF command and continue if desired. 
  3688.  
  3689.  STACK LIMIT VIOLATION ASDT gained control because an Int C occurred.  This 
  3690.    indicates that the stack limit was violated. 
  3691.  
  3692.  386 DEBUG REGISTER TRAP (DRn) ASDT gained control because the 80386 hardware 
  3693.    debug register n signalled an event. 
  3694.  
  3695.  INVALID OPCODE INTERRUPT (6) ASDT gained control because an invalid opcode was 
  3696.    detected by the execution unit or the type of operand is invalid for the 
  3697.    given opcode. 
  3698.  
  3699.  
  3700. ΓòÉΓòÉΓòÉ 1.10.3. Expression Evaluation Messages ΓòÉΓòÉΓòÉ
  3701.  
  3702.  UNRECOGNIZED OPERAND:  xxxxxxxx A term in the command expression you entered 
  3703.    was not valid. 
  3704.  
  3705.  WARNING: OPERAND TRUNCATED This message warns you that the operand you 
  3706.    specified is too large to fit in the target register or variable. ASDT fits 
  3707.    as much as possible and truncates the rest. 
  3708.  
  3709.  
  3710. ΓòÉΓòÉΓòÉ 1.10.4. "CA" Command Messages ΓòÉΓòÉΓòÉ
  3711.  
  3712.  CONFLICTS WITH xxxxxxxxxx The color attribute you specified is the same as 
  3713.    another attribute (normal, highlight, or reverse). Each attribute must be 
  3714.    different. 
  3715.  
  3716.  
  3717. ΓòÉΓòÉΓòÉ 1.10.5. "CB" Command Messages ΓòÉΓòÉΓòÉ
  3718.  
  3719.  BREAKPOINT IS NOT ACTIVE You attempted to set a complex breakpoint when that 
  3720.    breakpoint was inactive. Activate or set the breakpoint address before 
  3721.    setting up the complex condition and count. 
  3722.  
  3723.  BREAKPOINT IS NOT COMPLEX You have requested to see the complex definition of 
  3724.    a particular breakpoint, but that breakpoint is not complex. 
  3725.  
  3726.  BREAKPOINT NOT RECOGNIZED The complex breakpoint you have attempted to set is 
  3727.    not a valid breakpoint. 
  3728.  
  3729.  COMPLEX BREAKPOINT DEACTIVATED A complex breakpoint's occurrence count has 
  3730.    matched the count, and ASDT has taken the breakpoint. ASDT deactivates the 
  3731.    breakpoint. 
  3732.  
  3733.  CONDITION MUST BE < 16 CHARS ASDT limits a complex condition field to 15 
  3734.    characters. 
  3735.  
  3736.  COUNT FIELD EXPRESSION INVALID You have specified an unrecognized ASDT 
  3737.    expression for the count field. 
  3738.  
  3739.  OCCURRENCE COUNT = xx ASDT displays the complex condition and count for the 
  3740.    breakpoint you requested. 
  3741.  
  3742.  SYNTAX: CB SX CONDITION,COUNT ASDT displays the syntax for the command. 
  3743.  
  3744.  VALID OPERATOR NOT FOUND ASDT expects one of the following logical operators 
  3745.    for a complex condition:  <, >, =, <=, >=, or <>. 
  3746.  
  3747.  1ST EXPRESSION IS INVALID You have requested an unrecognized ASDT expression 
  3748.    for the left half of the complex breakpoint condition. 
  3749.  
  3750.  2ND EXPRESSION IS INVALID You have requested an unrecognized ASDT expression 
  3751.    for the right half of the complex breakpoint condition. 
  3752.  
  3753.  
  3754. ΓòÉΓòÉΓòÉ 1.10.6. "CG" Command Messages ΓòÉΓòÉΓòÉ
  3755.  
  3756.  COLOR DISPLAY NOT PRESENT You specified the MS parameter for the CG command, 
  3757.    and ASDT does not detect the presence of a color display adapter. 
  3758.  
  3759.  MONOCHROME DISPLAY NOT PRESENT You specified the MS parameter for the CG 
  3760.    command, and ASDT does not detect the presence of a monochrome display 
  3761.    adapter. 
  3762.  
  3763.  USING MULTIPLE SCREENS ASDT is using the secondary display because the 
  3764.    multiple screen configuration has been selected. 
  3765.  
  3766.  USING REMOTE TERMINAL ASDT is using the remote terminal display because this 
  3767.    configuration has been selected. 
  3768.  
  3769.  USING SINGLE SCREEN ASDT is using the primary display because the multiple 
  3770.    screen or remote terminal configuration has been reset. 
  3771.  
  3772.  
  3773. ΓòÉΓòÉΓòÉ 1.10.7. "CM" Command Messages ΓòÉΓòÉΓòÉ
  3774.  
  3775.  INVALID ADDRESSING EXPRESSION One of the two memory addressing expressions is 
  3776.    not acceptable to ASDT. 
  3777.  
  3778.  LENGTH FIELD EVALUATES TO 0 You have specified an ASDT expression for the 
  3779.    length field that evaluates to 0. Hence, the command is not executed. 
  3780.  
  3781.  SEGMENT LIMIT WILL BE VIOLATED A segment limit violation will occur if ASDT 
  3782.    compares the two memory blocks for the length that you have specified. 
  3783.  
  3784.  SYNTAX: CM ADDR1,ADDR2,LENGTH ASDT displays the syntax for the command. 
  3785.  
  3786.  xxx OF xxxxx MISMATCHES ASDT is comparing the two memory blocks and is 
  3787.    displaying as much of the two blocks as possible. The number of mismatches 
  3788.    shown on the screen and the total number of mismatches are displayed. 
  3789.  
  3790.  
  3791. ΓòÉΓòÉΓòÉ 1.10.8. "CP" Command Messages ΓòÉΓòÉΓòÉ
  3792.  
  3793.  INVALID ADDRESSING EXPRESSION One of the two memory addressing expressions is 
  3794.    not acceptable to ASDT. 
  3795.  
  3796.  LENGTH FIELD EVALUATES TO 0 You have specified an ASDT expression for the 
  3797.    length field that evaluates to 0. Hence, the command is not executed. 
  3798.  
  3799.  SEGMENT LIMIT WILL BE VIOLATED A segment limit violation will occur if ASDT 
  3800.    copies the memory block to the indicated destination for the length that you 
  3801.    have specified. 
  3802.  
  3803.  SYNTAX: CP ADDR1,ADDR2,LENGTH ASDT displays the syntax for the command. 
  3804.  
  3805.  
  3806. ΓòÉΓòÉΓòÉ 1.10.9. "DK" Command Messages ΓòÉΓòÉΓòÉ
  3807.  
  3808.  FUNCTION KEY BUFFER IS FULL You have exceeded the amount of space ASDT has set 
  3809.    up for commands associated with function keys. The total amount of space for 
  3810.    function key commands is 800 bytes. 
  3811.  
  3812.  KEY IS NOT DEFINED You pressed a function key that has not been defined. No 
  3813.    action was taken by ASDT. 
  3814.  
  3815.  KEY "xxxxx" DEFINED The function key definition you specified was added to the 
  3816.    list of function keys. 
  3817.  
  3818.  KEY "xxxxx" DEFINITION REMOVED The function key definition you specified was 
  3819.    removed from the list of function keys. 
  3820.  
  3821.  
  3822. ΓòÉΓòÉΓòÉ 1.10.10. "DW," "MW," "LW," and "VW" Command Messages ΓòÉΓòÉΓòÉ
  3823.  
  3824.  INVALID DESCRIPTOR You tried to use L1-M6 as a source variable while you were 
  3825.    in an LDT/GDT or IDT window, and the descriptor that was referenced is not 
  3826.    valid. 
  3827.  
  3828.  OPERAND NOT ALLOWED ASDT does not allow an LDT/GDT or IDT secondary window. 
  3829.  
  3830.  
  3831. ΓòÉΓòÉΓòÉ 1.10.11. "EP" Command Messages ΓòÉΓòÉΓòÉ
  3832.  
  3833.  ASDT PROFILE WAS NOT READ IN No profile was read in during the initialization 
  3834.    phase.  Hence, the EP command can not be executed. 
  3835.  
  3836.  COMMAND TOO LONG - ABORTED A command in the specified profile is too long to 
  3837.    fit on ASDT's command line. 
  3838.  
  3839.  PROFILE NOT ENTIRELY READ IN ASDT has a limit on the total number of bytes it 
  3840.    will read in for a profile during the initialization phase. If your profile 
  3841.    contains more than 1600 bytes, it will be truncated. 
  3842.  
  3843.  
  3844. ΓòÉΓòÉΓòÉ 1.10.12. "EX" Command Messages ΓòÉΓòÉΓòÉ
  3845.  
  3846.  EX COMMAND ALLOWS NO OPERANDS You specified an operand with the EX command, 
  3847.    and ASDT will not allow operands to be used with the EX command. 
  3848.  
  3849.  
  3850. ΓòÉΓòÉΓòÉ 1.10.13. "F," "FA," "FC," "FE," and "FX" Command Messages ΓòÉΓòÉΓòÉ
  3851.  
  3852.  xxxxxxxx FOUND AT xxxxxxxx The search string you requested was found at the 
  3853.    memory location displayed at the right. 
  3854.  
  3855.  STRING xxxxxxxx NOT FOUND The search string you requested could not be found. 
  3856.  
  3857.  * OR SELECTOR EXPR REQUIRED You have a "," delimiter, which indicates the need 
  3858.    for either a following "*" (task search indicator) or ASDT selector 
  3859.    expression (for a single segment search). 
  3860.  
  3861.  
  3862. ΓòÉΓòÉΓòÉ 1.10.14. "HT" and "RT" Command Messages ΓòÉΓòÉΓòÉ
  3863.  
  3864.  ASDT CAN NOT RESUME THE THREAD ASDT can not resume a halted thread because 
  3865.    that thread has terminated. 
  3866.  
  3867.  HT COMMAND ALLOWS NO OPERANDS You specified an operand with the HT command, 
  3868.    and ASDT will not allow operands to be used with the HT command. 
  3869.  
  3870.  NO HALTING AT A BREAKPOINT ASDT will not allow you to halt a thread at a 
  3871.    breakpoint. This is due to the fact that ASDT inserts your breakpoints for 
  3872.    you before it halts the thread. 
  3873.  
  3874.  NO THREADS CURRENTLY HALTED ASDT can not resume any threads because none are 
  3875.    halted. 
  3876.  
  3877.  PID SPECIFIED IS NOT FROZEN ASDT can not resume a specific thread of the 
  3878.    process id (pid) that you specified because it did not halt a thread of that 
  3879.    particular pid. 
  3880.  
  3881.  TOO MANY THREADS HALTED ASDT currently allows only ten threads to be halted at 
  3882.    the same time. 
  3883.  
  3884.  PARAMETER ^USED IN REAL MODE The RT command does not need a parameter to 
  3885.    reflect the process id in real mode. 
  3886.  
  3887.  
  3888. ΓòÉΓòÉΓòÉ 1.10.15. "IB," "IW," "OB," and "OW" Command Messages ΓòÉΓòÉΓòÉ
  3889.  
  3890.  VALUE xxxx OUTPUT TO PORT xxxx This message lists the port to which you wrote 
  3891.    data and the value of that data. 
  3892.  
  3893.  VALUE xxxx READ FROM PORT xxxx This message listed the port from which you 
  3894.    read data and the value of that data. 
  3895.  
  3896.  
  3897. ΓòÉΓòÉΓòÉ 1.10.16. "LD" Command Messages ΓòÉΓòÉΓòÉ
  3898.  
  3899.  INVALID DESCRIPTOR You tried to use an index that referenced a descriptor that 
  3900.    is not a valid LDT descriptor. 
  3901.  
  3902.  INVALID LDT BASE ADDRESS You tried to alter the current LDT base address to a 
  3903.    physical address that is not the start of a valid LDT. 
  3904.  
  3905.  
  3906. ΓòÉΓòÉΓòÉ 1.10.17. "L1-M6" and "M7-M9" Command Messages ΓòÉΓòÉΓòÉ
  3907.  
  3908.  CAN'T SET "Lx" IN THIS WINDOW You have a split disassembly/memory window and 
  3909.    have tried to set a second window segment in the secondary window. ASDT 
  3910.    allows only one secondary window segment (e.g., one memory window in 
  3911.    disassembly mode). 
  3912.  
  3913.  Mx = xxxxxx ASDT has set the contents of the displayed variable as shown 
  3914.    (e.g., M7 = 999003, or Mx = 1234:99AF). 
  3915.  
  3916.  
  3917. ΓòÉΓòÉΓòÉ 1.10.18. "PD and PM" Command Messages ΓòÉΓòÉΓòÉ
  3918.  
  3919.  SEGMENT LIMIT WOULD OVERFLOW A segment limit violation would occur if ASDT 
  3920.    prints the disassembly or memory block for the length that you have 
  3921.    specified. 
  3922.  
  3923.  
  3924. ΓòÉΓòÉΓòÉ 1.10.19. "PI" Command Messages ΓòÉΓòÉΓòÉ
  3925.  
  3926.  ASDT CAN NOT LOCATE THE PATH ASDT can not find the current thread's invocation 
  3927.    path. This happens most often with device drivers during the initialization 
  3928.    phase. 
  3929.  
  3930.  BREAKPOINT IS NOT SET The breakpoint you have attempted to use as a parameter 
  3931.    to the PI command is valid, but it has no value associated with it. Hence, 
  3932.    it has no process or thread associated with it either. 
  3933.  
  3934.  BREAKPOINT NOT RECOGNIZED The breakpoint you have attempted to use as a 
  3935.    parameter to the PI command is not valid. 
  3936.  
  3937.  C:\TEST\BIN\TEST.EXE This is an example of a successful program identification 
  3938.    by ASDT. 
  3939.  
  3940.  
  3941. ΓòÉΓòÉΓòÉ 1.10.20. "PR" Command Messages ΓòÉΓòÉΓòÉ
  3942.  
  3943.  PRINT CANCELLED DUE TO ERROR ASDT detected a problem with the printer.  The 
  3944.    printing operation has been terminated. 
  3945.  
  3946.  
  3947. ΓòÉΓòÉΓòÉ 1.10.21. "RI" and "TI" Command Messages ΓòÉΓòÉΓòÉ
  3948.  
  3949.  ASDT DOESN'T OWN THE INTERRUPT ASDT is not the current owner of the interrupt 
  3950.    that you wish to restore to OS/2. 
  3951.  
  3952.  ASDT DOESN'T USE THE INTERRUPT The operand you specified does not indicate an 
  3953.    interrupt that ASDT uses. 
  3954.  
  3955.  ASDT ALREADY HAS THE INTERRUPT You are trying to take an interrupt for ASDT 
  3956.    that it already owns. 
  3957.  
  3958.  RI(TI) COMMAND REQUIRES AN OPERAND Both of these commands require a specified 
  3959.    interrupt as an operand. 
  3960.  
  3961.  INTERRUPT ^USED IN REAL MODE While in real mode, you tried to take or restore 
  3962.    an interrupt that ASDT does not use for real mode. 
  3963.  
  3964.  REAL INT TAKEN/IDT LEFT AS IS While in real mode, you tried to take an 
  3965.    interrupt that ASDT uses in both real mode and protected mode.  ASDT was 
  3966.    able to take the real-mode interrupt from the IVT, but it was not able to 
  3967.    take the protected-mode interrupt from the IDT. 
  3968.  
  3969.  REAL INT GIVEN/IDT LEFT AS IS While in real mode, you tried to restore an 
  3970.    interrupt that ASDT uses in both real mode and protected mode.  ASDT was 
  3971.    able to restore the real-mode interrupt to the IVT, but it was not able to 
  3972.    restore the protected-mode interrupt to the IDT. 
  3973.  
  3974.  
  3975. ΓòÉΓòÉΓòÉ 1.10.22. "RK" and "SK" Command Messages ΓòÉΓòÉΓòÉ
  3976.  
  3977.  HOT KEY HAS BEEN DISABLED ASDT will no longer monitor keystrokes for a hot 
  3978.    key. 
  3979.  
  3980.  HOT KEY DEFINED AS 'nn'X The hot key has been set as the scancode nn. 
  3981.  
  3982.  
  3983. ΓòÉΓòÉΓòÉ 1.10.23. "SB" Command Messages ΓòÉΓòÉΓòÉ
  3984.  
  3985.  BREAKPOINT IS NOT ACTIVE You attempted to set a breakpoint as sticky or as not 
  3986.    sticky and it is inactive. Activate or set the breakpoint address before 
  3987.    trying to change its sticky status. 
  3988.  
  3989.  BREAKPOINT NOT RECOGNIZED The breakpoint that you wish to make sticky is not a 
  3990.    valid breakpoint. 
  3991.  
  3992.  SB COMMAND REQUIRES AN OPERAND You have not specified an operand for the SB 
  3993.    command, and it requires one. 
  3994.  
  3995.  
  3996. ΓòÉΓòÉΓòÉ 1.10.24. "SC" Command Messages ΓòÉΓòÉΓòÉ
  3997.  
  3998.  TAP ANY KEY TO RETURN TO ASDT This message informs you that you are viewing 
  3999.    your program's display screen. Tapping any key will return to the ASDT 
  4000.    screen. 
  4001.  
  4002.  
  4003. ΓòÉΓòÉΓòÉ 1.10.25. "S1-S9" and "V1-V9" Command Messages ΓòÉΓòÉΓòÉ
  4004.  
  4005.  Sx: xxxxxxxxxxxx The indicated breakpoint has been activated. The string shown 
  4006.    is the disassembled instruction at the breakpoint. 
  4007.  
  4008.  Sx: INVALID AS A BREAKPOINT ASDT can not set the breakpoint at the address 
  4009.    that you have specified. Check to see that the address uses a valid selector 
  4010.    and that the offset falls within the selector's segment limit (assuming that 
  4011.    this is a virtual address). Additionally, check to see that you are not 
  4012.    trying to reactivate a breakpoint whose thread or process has terminated. 
  4013.  
  4014.  
  4015. ΓòÉΓòÉΓòÉ 1.10.26. "TP" Command Messages ΓòÉΓòÉΓòÉ
  4016.  
  4017.  ENVIRONMENT WILL NOT PERMIT TP ASDT can not terminate the process if it is 
  4018.    currently running at level 0. 
  4019.  
  4020.  
  4021. ΓòÉΓòÉΓòÉ 1.10.27. "T0-T4" Command Messages ΓòÉΓòÉΓòÉ
  4022.  
  4023.  ADDRESS NOT ALIGNED FOR LENGTH The T1-T4 command address that you have 
  4024.    specified does not match its corresponding field length.  Two-byte fields 
  4025.    must be aligned on word boundaries, and four-byte fields must be aligned on 
  4026.    doubleword boundaries. 
  4027.  
  4028.  HARDWARE REGISTER NOT ACTIVE You are attempting to use one of the T1-T4 (null) 
  4029.    commands for editing purposes, and Tn is not active. 
  4030.  
  4031.  INSUFFICIENT SPACE FOR Tn NULL You are attempting to use one of the T1-T4 
  4032.    (null) commands for editing purposes, and you have not left enough room on 
  4033.    the ASDT command line for Tn's parameter display. 
  4034.  
  4035.  T0 COMMAND REQUIRES AN OPERAND You are attempting to use the T0 command 
  4036.    without an operand.  It requires either ON or OFF. 
  4037.  
  4038.  80386 HARDWARE IS NOT PRESENT You are attempting to use one of the T0-T4 
  4039.    commands, and you are not running on a 386-based machine. 
  4040.  
  4041.  
  4042. ΓòÉΓòÉΓòÉ 1.10.28. "UM" Command Messages ΓòÉΓòÉΓòÉ
  4043.  
  4044.  INTERRUPT CONTROLLER MASK = xx ASDT has read the contents of the interrupt 
  4045.    controller mask register. 
  4046.  
  4047.  INVALID SETTING - KEYBD MASKED You attempted to set the interrupt mask to a 
  4048.    value which masks off the keyboard. ASDT does not allow this. 
  4049.  
  4050.  
  4051. ΓòÉΓòÉΓòÉ 1.10.29. "U1-U9" Command Messages ΓòÉΓòÉΓòÉ
  4052.  
  4053.  PROBLEMS WITH ACCESS OF UX.DLL Either ASDT could not load the dynamic link 
  4054.    library, UX.DLL, or it could not find the member that you specified. 
  4055.  
  4056.  
  4057. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4058.  
  4059. If you are not sure what directories are defined by your PATH statement, enter 
  4060. PATH on an OS/2 command line and they will be listed. 
  4061.  
  4062. If you would like to create a new directory for the program, ensure that you 
  4063. modify the PATH statement in CONFIG.SYS accordingly. 
  4064.  
  4065.  
  4066. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4067.  
  4068. If you are not sure what directories are defined by your LIBPATH statement, 
  4069. check your CONFIG.SYS file for the line beginning "LIBPATH=". The directories 
  4070. listed on this line are those that are checked by a running program when 
  4071. looking for a DLL. 
  4072.  
  4073. If you would like to create a new directory for the DLL, ensure that you modify 
  4074. the LIBPATH statement accordingly. 
  4075.  
  4076.  
  4077. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4078.  
  4079. ASM86 is an IBM Internal cross assembler (not provided with this program). 
  4080.  
  4081.  
  4082. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4083.  
  4084. /K causes ASDT to get control whenever you press the hot key. The hot key 
  4085. defaults to the PrtSc key. However, if you use the /K=nn form of this option, 
  4086. ASDT will define the nn scancode as the hot key. 
  4087.  
  4088. E.g., /K=4A will set the keypad minus as the hot key. Use the hot key to give 
  4089. control to ASDT from your application, the OS/2 PM shell, etc. 
  4090.  
  4091. See SK - Set Keyboard Hot Key for more information. 
  4092.  
  4093.  
  4094. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4095.  
  4096. /M causes ASDT to use two screens for debugging if you have more than one 
  4097. display adapter. 
  4098.  
  4099. See CG - Configuration for more information. 
  4100.  
  4101.  
  4102. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4103.  
  4104. /R=n causes ASDT to use a remote terminal for debugging if you have one hooked 
  4105. up via COMn (n=1 or 2). 
  4106.  
  4107. See CG - Configuration for more information. 
  4108.  
  4109.  
  4110. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4111.  
  4112. /U=nn changes the user mask default from '00'x to 'nn'x for the 8259 interrupt 
  4113. controller register. 
  4114.  
  4115. See UM - User Mask for more information. 
  4116.  
  4117.  
  4118. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4119.  
  4120. /W causes ASDT to make certain assumptions about offset assignments to specific 
  4121. ASDT variables. 
  4122.  
  4123. See WA - Window Assumption for more information. 
  4124.  
  4125.  
  4126. ΓòÉΓòÉΓòÉ <hidden>  ΓòÉΓòÉΓòÉ
  4127.  
  4128. /n causes ASDT not to take over a specific interrupt during its installation. 
  4129. This allows your device driver to control that interrupt. 
  4130.  
  4131. See RI - Restore Interrupt for more information.