1                                     dis88
2                                  Beta Release
3                                    87/09/01
4                                      ---
5                                 G. M. HARDING
6                                    POB 4142
7                           Santa Clara CA  95054-0142
8
9
10             "Dis88" is a symbolic disassembler for the Intel 8088 CPU,
11        designed to run under the PC/IX  operating  system on an IBM XT
12        or fully-compatible clone.  Its output is in the format of, and
13        is completely compatible with, the PC/IX assembler,  "as".  The
14        program is copyrighted by its author, but may be copied and re-
15        distributed freely provided that complete source code, with all
16        copyright notices, accompanies any distribution. This provision
17        also applies to any  modifications you may make.  You are urged
18        to comment such changes,  giving,  as a miminum,  your name and
19        complete address.
20
21             This release of the program is a beta release, which means
22        that it has been  extensively,  but not  exhaustively,  tested.
23        User comments, recommendations, and bug fixes are welcome.  The
24        principal features of the current release are:
25
26             (a)  The ability to  disassemble  any file in PC/IX object
27        format, making full use of symbol and relocation information if
28        it is present,  regardless of whether the file is executable or
29        linkable,  and regardless of whether it has continuous or split
30        I/D space;
31
32             (b)  Automatic generation of synthetic labels when no sym-
33        bol table is available; and
34
35             (c)  Optional  output of address and object-code  informa-
36        tion as assembler comment text.
37
38             Limitations of the current release are:
39
40             (a)  Numeric co-processor  (i.e., 8087)  mnemonics are not
41        supported.  Instructions  for the co-processor are disassembled
42        as CPU escape  sequences,  or as  interrupts,  depending on how
43        they were assembled in the first place. This limitation will be
44        addressed in a future release.
45
46             (b)  Symbolic  references  within the object  file's  data
47        segment are not supported. Thus, for example, if a data segment
48        location is initialized to point to a text segment address,  no
49        reference to a text segment symbol will be detected. This limi-
50        tation is likely to remain in future  releases,  because object
51        code does not, in most cases, contain sufficient information to
52        allow meaningful interpretation of pure data.  (Note,  however,
53        that  symbolic  references  to the data segment from within the
54        text segment are always supported.)
55
56             As a final caveat,  be aware that the PC/IX assembler does
57        not recognize the  "esc"  mnemonic,  even though it refers to a
58        completely  valid CPU operation  which is documented in all the
59        Intel literature. Thus, the corresponding opcodes (0xd8 through
60        0xdf) are disassembled as .byte directives. For reference, how-
61        ever,  the syntactically-correct "esc" instruction is output as
62        a comment.
63
64             To build the disassembler program, transfer all the source
65        files,  together with the Makefile,  to a suitable  (preferably
66        empty) PC/IX directory. Then, simply type "make".
67
68             To use dis88,  place it in a  directory  which  appears in
69        your $PATH list.  It may then be invoked by name from  whatever
70        directory you happen to be in.  As a minimum,  the program must
71        be invoked with one command-line argument:  the name of the ob-
72        ject file to be disassembled.  (Dis88 will complain if the file
73        specified is not an object file.)  Optionally,  you may specify
74        an output file; stdout is the default.  One command-line switch
75        is available:  "-o",  which makes the program display addresses
76        and object code along with its mnemonic disassembly.
77
78             The "-o" option is useful primarily for verifying the cor-
79        rectness of the program's output. In particular, it may be used
80        to check the accuracy of local  relative  jump  opcodes.  These
81        jumps often  target  local  labels,  which are lost at assembly
82        time;  thus,  the disassembly may contain cryptic  instructions
83        like "jnz .+39".  As a user convenience,  all relative jump and
84        call  opcodes are output with a comment  which  identifies  the
85        physical target address.
86
87             By convention, the release level of the program as a whole
88        is the SID of the file disrel.c, and this SID string appears in
89        each disassembly.  Release 2.1 of the program is the first beta
90        release to be distributed on Usenet.
91