mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 14:11:48 -06:00
265 lines
9.4 KiB
Plaintext
265 lines
9.4 KiB
Plaintext
|
||
|
||
|
||
April 18, 1987
|
||
This is the READ-ME file from the Z80DIS.LBR package, version 2.2
|
||
------------------------------------------------------===========
|
||
|
||
|
||
|
||
|
||
A personal note from the programmer:
|
||
- -------- ---- ---- --- ----------
|
||
|
||
I wrote this disassembler because I could not find another
|
||
that would really open up a large foreign program for inspection.
|
||
RESOURCE and all of its spin-offs give you only a pin-hole look
|
||
at a program without indicating the important interactions with
|
||
other parts of the code. Without the interactions and a wider
|
||
view, figuring out the code purpose or data type of a code block
|
||
is very hard.
|
||
|
||
Z80DIS eliminates the narrow pin-hole view of a program
|
||
provided by an interactive display. Z80DIS provides fully
|
||
automated analysis of the code structure, well formatted output
|
||
in both assembler and printer formats, a complete cross-reference
|
||
coded by reference type, and commenting of DOS interactions.
|
||
Recent improvements in this latest version add further utility
|
||
and increase the ability to handle even larger code segments.
|
||
|
||
For those who prefer an interactive approach to disassembly,
|
||
I recommend the combination of Z80DIS with the interactive
|
||
disassembler DAZZLESTAR (DZ) by John Washington in England. Use
|
||
Z80DIS for the automated analysis of the underlying structure and
|
||
use DZ for the interactive refinement of the code. John has
|
||
provided a DZ command (namely KG) to read the break table
|
||
produced by Z80DIS.
|
||
|
||
As CP/M users are getting less and less support for problems
|
||
with existing 8080 or Z80 software products, maintenance of that
|
||
software has fallen to the CP/M users themselves. Z80DIS lets you
|
||
examine the software and repair the problem yourself. I hope that
|
||
you will find Z80DIS as useful as I have.
|
||
|
||
Kenneth Gielow
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
1
|
||
|
||
|
||
|
||
Z80DIS 2.2 04/18/87
|
||
|
||
|
||
Version 2.2 change note:
|
||
|
||
Version 2.0 added artificial intelligence to Z80DIS.
|
||
|
||
Version 2.1 corrected a small bug in the processing of INC,
|
||
DEC, and LD using index registers IX and IY and enhanced the
|
||
distinction between ASCII blank (20 hex) and the instruction
|
||
"JR NZ,xxxx" (also 20 hex).
|
||
|
||
Version 2.2 modifies the output format for M-80 assembler
|
||
compatibility. Increases the size of program that can be
|
||
disassembled by moving cross-reference tables to virtual
|
||
memory on disk. Fixed several minor bugs. Interprets CP/M
|
||
DOS calls and comments such calls by the function performed.
|
||
|
||
Caveat: If you are running a system with single sided disks, you
|
||
probably do not want to upgrade from version 2.1 to version
|
||
2.2 because of the increased off-loading of memory functions
|
||
onto disk files
|
||
|
||
Z80DIS is a disassembler for Z80 based CP/M systems. Z80DIS is
|
||
designed to generate Z80 mnemonics and prepare an assembly
|
||
language file with many special features for ease of
|
||
understanding the intent of the disassembled code. The source for
|
||
Z80DIS has grown to 8400 lines of pascal code.
|
||
|
||
With Z80DIS versions 2.0 and higher, you need know very little
|
||
about the format of the *.COM file to produce a nearly finished
|
||
source file in most cases. In addition a large number of
|
||
convenience features and defaults have been added that were not
|
||
present in version 1. The Z80DIS change history for version 2.x
|
||
follows at the end of this paper.
|
||
|
||
Both the Z80DIS program and the Z80DIS documentation are (C)
|
||
Copyright 1985, 1986 and 1987 by Kenneth Gielow; All Rights
|
||
Reserved. While I am freely distributing the binary code for non-
|
||
profit use, I am reserving the source code as a trade secret.
|
||
|
||
This program requires a Z80 based computer running CP/M version
|
||
2.2 or higher. The code was compiled for a 50K TPA; the top
|
||
address is C7FF. This slightly small size was done for
|
||
compatibility with CP/M 3.0 and ZCPR3.
|
||
|
||
The following files will be found on Z80DIS21.LBR for this
|
||
program distribution library package:
|
||
|
||
Z80DIS.COM - the disassembler program
|
||
Z80DIS.000 - overlay file for Z80DIS
|
||
Z80DIS.001 - overlay file for Z80DIS
|
||
Z80DIS.002 - overlay file for Z80DIS
|
||
|
||
ZDINSTAL.COM - a terminal command installation program
|
||
ZDINSTAL.MSG - contains text of ZDINSTAL messages
|
||
ZDINSTAL.DTA - contains terminal characteristics data
|
||
|
||
Z80DIS22.DQC - an installation manual. (Squeezed format)
|
||
|
||
|
||
|
||
2
|
||
|
||
|
||
|
||
Z80DIS 2.2 04/18/87
|
||
|
||
|
||
The three ZDINSTAL files are based on the TURBO Toolbox GINST
|
||
program and will tailor the display command sequences for your
|
||
terminal. The DOC file is the text of a short user manual which
|
||
explains use and installation of the program.
|
||
|
||
The interactive displays for parameter specification make the
|
||
program easy to use. All control parameters have defaults preset
|
||
to the most likely values.
|
||
|
||
FEATURES OF Z80DIS
|
||
------------------
|
||
|
||
The major feature of Z80DIS is an extensive analysis of the
|
||
memory usage by the program under investigation. This analysis
|
||
capability forms the basis for an automatic partitioning of the
|
||
code to generate the break table. This analysis also produces a
|
||
fully-annotated cross reference of all addresses.
|
||
|
||
A disassembler must know whether the bytes are instructions or
|
||
data in order to proceed. Z80DIS is the first disassembler to
|
||
produce its own break table for this purpose. Some previous
|
||
programs, such as RESOURCE, have included a search for ASCII text
|
||
regions, but have left the verification and interpretation up to
|
||
the user. Most other disassemblers are fooled by the trick of
|
||
adding nonsense bytes after jumps to cause the analysis to fall
|
||
out of synchronization with instruction code interpretation.
|
||
|
||
Z80DIS produces an output listing which itemizes all addresses
|
||
referenced by the code, distinguishes types of label references,
|
||
marks subroutines and jumps and produces an annotated cross-
|
||
reference. This listing shows the exact mode of usage for every
|
||
reference: Jump absolute, Jump relative, Call, Restart, Load 16-
|
||
bit, Store 16-bit, Immediate 16-bit, Load 8-bit, Store 8-bit. In
|
||
version 2.1, this listing also shows the break table region of
|
||
residency for each label so that you may inspect the list for
|
||
inconsistencies.
|
||
|
||
An address labeling convention assists in understanding the
|
||
assembly code generated. Each label generated on the assembly
|
||
listing indicates, by format, not only the generic type (Jump,
|
||
Call, Data, Other) of any references, but also the singularity of
|
||
the reference. For example, J$02E3 used at address 02E3 indicates
|
||
that only one reference was made to address 02E3 and that that
|
||
reference was a JUMP.
|
||
|
||
In addition to helping you by automatic analysis of memory use,
|
||
Z80DIS also assists you by styling the presentation of the disas-
|
||
sembled code. The disassembled code is output in two forms: Both
|
||
the usual *.MAC file and a printer formatted *.PRN file.
|
||
|
||
The *.PRN file is styled to look like the output of an assembler
|
||
with both the instructions and assembled bytes shown. The juxta-
|
||
position of the hexadecimal bytes and the assembly mnemonics
|
||
allows the user to recognize errors caused by an incorrectly
|
||
defined break table.
|
||
|
||
|
||
|
||
|
||
3
|
||
|
||
|
||
|
||
Z80DIS 2.2 04/18/87
|
||
|
||
|
||
DOCUMENTATION NOTICE
|
||
--------------------
|
||
|
||
The original, version 1, user manual ran forty-plus pages and
|
||
gave extensive examples and used disassembly of the public domain
|
||
program D.COM as an example.
|
||
|
||
The version 2 manual is now eighty eight pages of detailed, what-
|
||
if instructions and a dissertation on understanding and handling
|
||
large or complex code modules.
|
||
|
||
As the binary code for Z80DIS is now running 108K bytes and the
|
||
ascii text for the manual is over 200K bytes, there is no way
|
||
that I can get system operators to carry both. I feel that the
|
||
program is largely self explanatory so that you can get started
|
||
very well with only the minimal help of the included DOC file.
|
||
The short user manual included here deals only with installing
|
||
the Z80DIS program and doing a simple disassembly. For more
|
||
serious work you will want the full manual.
|
||
|
||
The longer manual expands on the discussion of the features and
|
||
explains the step-wise approach to dealing with much larger
|
||
source codes. The manual also deals with disassembling code which
|
||
relocates itself. Extensive examples are included. All error
|
||
messages and secondary options are discussed in detail.
|
||
|
||
The full Z80DIS USER MANUAL is available by mail. I am asking a
|
||
nominal charge of $20.00 which includes the printed and bound
|
||
manual, postage, handling, and an update notification service.
|
||
You are granted the right to make not-for-profit copies of the
|
||
manual. The program itself is not available by mail as I do not
|
||
have extensive, multi-format disk copy capability. The
|
||
notification service will consist of a letter to you anytime a
|
||
new version is released so that you may be on the lookout for it.
|
||
|
||
To order a copy of the Z80DIS USER MANUAL, send a request with
|
||
your name, address, and a check for $ 20.00 to --
|
||
|
||
Kenneth Gielow
|
||
79 Tulip Lane
|
||
Palo Alto, CA 94303
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
4
|
||
|
||
|
||
|
||
|