home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
BEEHIVE
/
ZCAT
/
Z80DIS21.LBR
/
Z80DIS21.DZC
/
Z80DIS21.DOC
Wrap
Text File
|
2000-06-30
|
41KB
|
1,255 lines
Z80DIS SHORT USER MANUAL
A new Z80 disassembler
by KENNETH GIELOW
11 JANUARY 86
- PART 1 -
INTRODUCTORY REMARKS
--------------------
Z80DIS is an entirely new disassembler for Z80 based CP/M sys-
tems. Z80DIS is written in TURBO PASCAL. Z80DIS generates Z80
mnemonics and prepares an assembly language file with many
special features for ease of understanding the intent of the
code.
The program and documentation are (C) Copyright 1986, by Kenneth
Gielow, Palo Alto, CA. All Rights Reserved. At this time, I
do not intend any release of the 5000-plus lines of source code
for the disassembler, which will be controlled as a Trade Secret.
This short user manual is written in 4 parts:
PART 1: These introductory remarks
PART 2: Features of Z80DIS
PART 3: How to use the program
APPENDIX A: Adaptation to your terminal
APPENDIX B: Z80DIS revision history
This program may be used freely for non-commercial purposes. A
license is extended to users to copy and exchange the program and
documentation with the sole restrictions that authorship notices
are not to be removed or circumvented and that such distribution
must be non-commercial in nature (this is not to imply that
charges for such things as diskettes and modest copying and
mailing fees are of themselves commercial in nature.) All other
rights are reserved to the author, Kenneth Gielow.
The following files will be found on this program distribution
library package:
Z80DIS.COM - the disassembler main program
Z80DIS.000 - overlay file for Z80DIS
Z80DIS.001 - overlay file for Z80DIS
ZDINSTAL.COM - the installation program
ZDINSTAL.MSG - contains text of ZDINSTAL messages
ZDINSTAL.DTA - contains terminal characteristics data
Z80DIS20.DOC - short user manual in ready to print format.
For a better manual see DOCUMENTATION NOTICE
(below.)
- page 1 -
Z80DIS - a Z80 native code disassembler for CP/M - 11 JAN 86
The Z80DIS binary is in three files (see PART 3 for use.) The
ZDINSTAL files will tailor the interactive displays to your
terminal (see APPENDIX A.) The DOC file is the text for this
short form of the user manual ( SEE DOCUMENTATION NOTICE .)
The distributed version is compiled for a standard somewhat small
CP/M system for maximum compatibility with the larger CP/M 3.0
and for users of the ZCPR3 extensions to CP/M. TPA memory size
has been set for 50K; the top address is C7FF hex. A Z80 based
CP/M system is required. Also needed is a printer with 80 columns
minimum. The program is configurable for terminal differences but
most displays are formatted to look best on a screen with at
least 80 columns and 24 lines.
-0-
- DOCUMENTATION NOTICE -
--------------------
The original, verison 1, user manual gave extensive examples and
used disassembly of the public domain program D.COM as an exam-
ple. Unfortunately, with the additions to document the newer
features and give additional suggestions for use, that user
manual and program together have both gotten so large that most
system operators would not carry the complete library.
Something had to give. I feel that the program is largely self
explanatory so that you can get started very well with a shor-
tened manual. This abbreviated manual is included here. The short
user manual deals mainly with installing the Z80DIS program and
doing a simple disassembly. This short manual is all that a
casual user would probably need.
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 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
- page 2 -
Z80DIS - Part 2: Features of Z80DIS - 11 JAN 86
- PART 2 -
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 reference by the
code under analysis.
A break table tells a disassembler how to interpret the
binary bytes that it is examining. 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.
Some previous programs, such as RESOURCE, have included a search
for ASCII text regions, but have left the verification and inter-
pretation 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 gives you the option of calling on the
built in expert system to evaluate all of the interactions of the
code to correctly separate the instructions from the data.
To get an automatic break table, you enter '*' when the
program asks for break table inputs. This triggers an analysis of
the structure and relationships of the input code to extract the
start address of each region. You are given the opportunity to
edit and/or save the resulting break table before continuing with
the disassembly. Regions of instructions, bytes, words, ASCII
data, and un-set buffers are all identified for you.
Z80DIS also gives you an address listing which itemizes all
addresses referenced by the code, distinguishes types of label
references, marks subroutines and jumps and produces an fully
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.
The address of each reference is given. The type of each
reference is shown by a one or two letter code:
J = Jump Jr = Jump relative
C = Call Cr = Call by Restart
Lw = Load word Lb = Load byte
Sw = Store word Sb = Store byte
Iw = Immediate word
Z80DIS uses an address labeling convention which assists in
understanding the assembly code generated. Each label generated
on the assembly listing indicates, by format, both the generic
type of any references and the singularity of the reference:
- page 3 -
Z80DIS - Part 2: Features of Z80DIS - 11 JAN 86
Where a CP/M address can be assumed, then that name is used:
0005h=>BDOS, 005Ch=>FCB1, 006Dh=>FCB2, 0080h=>DBUF, etc.
Otherwise, the label takes the form L.hhhh and consists of three
parts:
The first character is usually a "J", "C", "D", "I" or "X".
J = JUMP (JP, JR references only)
C = CALL (CALL, RST, JP, JR only)
D = DATA (8- or 16-bit Load, Store or Immediate only)
I = Immediate 16-bit only
X = any other combination (a suspicious mixture)
. = the address is not referenced, but is included
because it is the beginning of a data or
instruction code segment.
The second character indicates the singularity of the label.
. = multiple references
# = singular reference
The third through sixth characters are the hex address.
For example, J#02E3 would be used at address 02E3 if one
reference was made to that address and 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
disassembled code. The disassembled code is output in two forms:
Both the usual *.MAC file and a, printer formatted, *.PRN file.
The *.PRN file is a major aid to understanding the intent of
the code. The file looks like the output of an assembler with
both the instructions and assembled bytes shown. The juxtaposi-
tion of the hexadecimal bytes and the assembly mnemonics allows
the user to recognize errors caused by an incorrectly defined
break table.
Separation comment lines are used to assist in visualizing
the flow of the program. A blank comment line is inserted after
every CALL or CONDITIONAL JUMP. A bar-of-dashes comment line is
inserted after every UNCONDITIONAL JUMP. All CALL instructions
are indented one space to highlight them.
All subroutines are marked with a header comment which
separates them from the other code and allows you to annotate the
purpose of the subroutine. All immediate 8-bit data is shown in
both hex and decimal or ASCII.
Version 2.1 allows you the option of suppressing either the
*.MAC file or the *.PRN file. This allows conserving disk space
needed for the assembly language output file while you are analy-
zing the code via the list file. You may now direct the list file
directly to your LST device to save further disk space.
- page 4 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
- PART 3 -
INSTRUCTIONS FOR EXECUTION
--------------------------
Z80DIS is a batch program with user interactive set-up of the
control parameters. You start Z80DIS by typing "Z80DIS" with no
parameters. The program will prompt you for inputs. In most
cases, default entries are shown in DIM intensity already occu-
pying the data field. If you type only the RETURN key, the de-
fault will be used.
Z80DIS.COM may be on the drive of your choice and executed via a
drive prefix (e.i. B:Z80DIS), the overlay files, Z80DIS.000 and
Z80DIS.001, must be on your logged drive, drive A, or drive B.
There are four phases of execution. The first two are user inter-
active: Basic parameter set-up and definition of the break table.
The second two are automatic: Disassembly pass 1 and disassembly
pass 2. These will be dealt with in parts 3.1 through 3.4 which
follow.
-0-
PART 3.1 -- BASIC PARAMETER DEFINITION: After a brief sign-on
message, you will be asked to supply the following
information:
=================================================================
INPUT file name: ______________
OUTPUT file name: ______________
LISTING file name: ______________
Descriptive TITLE: __________________________________________
file LOAD address: ____ HEX
disassembly START address: ____ HEX
disassembly STOP address: ____ HEX
Do you wish to run a FULL output (as opposed to XREF only)? _
On which disk do you wish the scratch file to reside? (A-G) _
Do You wish to process all Z80 codes (as opposed 8080 subset)?
Are all inputs OK so far? _
=================================================================
Each question is presented one-at-a-time from the top. The para-
graphs below discuss the purpose, defaults, editing capability
and error checking for each answer.
- page 5 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
-----------------------------------
INPUT file name: ______________
Z80DIS wants the name of the file you wish to disassemble.
This file must be in the absolute binary format common to CP/M
".COM" files. The file need not be a .COM file and need not load
into memory at address 0100 hex. Z80DIS will ask for the load
address at a later step.
-----------------------------------
OUTPUT file name: ______________
Z80DIS wants the name of the file to be used for the disas-
sembled output.
The program provides a default file name which is NONE:.
this file name will suppress production of this file. To write a
file you must supply a name.
-----------------------------------
LISTING file name: ______________
Z80DIS wants the name of the file to be used for the listing
of the cross-reference and the disassembly. A standard CP/M file
name is expected. To suppress list output you may enter NONE:. To
direct the listing to your printer you may enter LST:.
-----------------------------------
Descriptive TITLE: __________________________________________
You may enter a free-form, 42-character title to be included
as identification on your listings and output code. Some form of
date, time, cracking attempt number are useful.
-----------------------------------
file LOAD address: ____ HEX
Z80DIS wants the hex memory address at which the first word
of the file resides when loaded and ready to run. This is usually
0100 hex for normal .COM files. If you enter only <CR>, you will
get the 0100 default.
-----------------------------------
disassembly START address: ____ HEX
Z80DIS wants the hex memory address at which to start the
disassembly. This is usually the same as the LOAD address. If you
enter only <CR>, you will get the value you entered as LOAD
address as default. The START address must be at or higher than
the LOAD address.
NOTICE: for the break table '*', automatic assignment, option to
function correctly, the START and STOP addresses must
correspond to entire program file. Use the defaults.
-----------------------------------
- page 6 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
disassembly STOP address: ____ HEX
Z80DIS wants the hex memory address at which to stop the
disassembly. If you enter only <CR>, you will get a value accor-
ding to the file length on the disk.
-----------------------------------
Do you wish to run FULL output (as opposed to XREF only)? (Y/N) _
If you answer Y, you will get a full disassembly including
both the cross-reference part and the instruction code part. If
you answer N, you will only get a cross-reference.
The "N" answer processes faster and is a good place to start
to get a feel for the memory layout.
-----------------------------------
On which disk do you wish the scratch file to reside? (A-G) _
This allows you to place the Z80DIS scratch file(s) on a
specific drive. If you answer <CR>, then the logged drive is
used.
-----------------------------------
Do you wish to process all Z80 codes
(as opposed 8080 subset only) ? (Y/N) _
Many of the public domain, and other, programs which run
under CP/M are written in pure 8080 code without the Z80 exten-
sions to the instruction set. Such programs should be disassem-
bled with a "N" answer to this question. The NO answer will still
generate Z80 mnemonics, but will mark as invalid all instruction
bytes corresponding to the unexpected Z80 extensions to the 8080
code set.
You should use the "Y" answer only if you know that the
program will run only on a Z80 based CP/M system.
-----------------------------------
Are all inputs OK so far? (Y/N) _
This question gives you a chance to re-examine your answers
to the other questions before continuing. If you answer "N", the
program will return to the INPUT file question. If you answer
"Y", you will continue on to setting up your break table.
-----------------------------------------------------------------
That completes the set-up phase of the disassembly process. The
next step is to define the type of disassembly to be used for
each part of the program memory.
-0-
- page 7 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
PART 3.2 -- DEFINITION OF THE BREAK TABLE: After you have
answered YES to the "Inputs OK" question, Your terminal
will now display the following:
=================================================================
>>> Z80DIS version 2.1
You may now enter CONTROL BREAK addresses to define the type of
disassembly for each part of the code; each control break de-
fines the first address of a part which ends at the beginning
of the next part-1 byte.
TO SEE DETAILS OF YOUR COMMAND CHOICES, type H
?: _
=================================================================
A break table tells a disassembler how to interpret the binary
bytes that it is examining. A disassembler must know whether the
bytes are instructions or data in order to proceed.
A "break" is defined to be an address in the memory where you
wish to either force a break, or you wish to change from one type
of disassembly to another. The break table is defined to be a
list of the break addresses for a given binary file. The break
table may be written to a break file.
If this is your first attempt to disassemble a new program and
you have no idea where anything is stored, use the new "*" option
by entering "*". The "*" command will generate the break table
for you. After the automatic assignment returns, you will be
shown the break table. Enter "FS" to store the break table or "Q"
to quit the break definition process and start disassembly.
Z80DIS can operate in six byte interpretation modes which are
defined by typing on of the six mode identifiers:
I = Instructions
A = ASCII text using DEFM with quoted strings
B = Byte storage using DEFB with hex byte values
W = Word storage using DEFW with hex word values
T = Table of addresses using DEFW with address labels
S = Space using DEFS and the length
Each break address defines the start of that mode. The mode
remains in effect until one byte before the next break address or
the end of the program memory.
- page 8 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
In addition to the six break setting commands, there are eight
other commands that may be entered:
* = Request for automatic assignment of breaks by Z80DIS
artificial intelligence heuristics.
C = Clear all of break table
FL = Load (append) a break file to the break table
FS = Store break table as a break file
L = List break table for review
H = Display Help for break table editing commands
K = Kill existing break at an address
P = Print break table on "LST:" CP/M device
Q = Quit break entry process (start the disassembly)
-0-
THE COMMANDS
------------
Commands may be given in any order with the exception of "Q"
which terminates command entry. Each command is presented below.
-----------------------------------
*
Initiates automatic assignment of break points within the
program code. Z80DIS is the first disassembler to produce its own
break table. Most other disassemblers are fooled by such anti-
disassembly tricks as adding nonsense bytes after jumps to cause
the analysis to fall out of synchronization with instruction code
interpretation. Z80DIS gives you the new option of triggering an
analysis of the structure and relationships of the input code to
extract the start address of each region.
Regions of instructions, bytes, words, ASCII data, and un-set
buffers are all identified for you.
-----------------------------------
C
Clears entire break table to empty. An empty break table
defines the entire code segment to be instructions. As this is a
fairly drastic thing to do, you will be asked to confirm.
-----------------------------------
FS
Store break table as a break file. Z80DIS will ask for a
file name.
-----------------------------------
FL
Load break table from a break file. Z80DIS will ask for a
file name.
-----------------------------------
- page 9 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
L
List the break table to your console display device as
follows:
Typ 0000-0000 Typ 0000-0000 Typ 0000-0000 Typ 0000-0000 ....
Typ 0000-0000 Typ 0000-0000 Typ 0000-0000 Typ 0000-0000 ....
-----------------------------------
H
Request display of short crib notes on break table commands.
The following screen of information is displayed:
|================================================================
|
| command long name break code meaning
|---------/------------/------------/----------------------------
| C Clear - clear all of break table
| FL File Load - Load (append) file to table
| FS File Store - Store table as file
| L List - List break table for review
| H Help - Re-list these instructions
| K Kill - Kill break at address
| P Print - Print break table on LST:
| Q Quit - Quit break entry process
|
|
| * AUTO ASSIGN - Automatic assignment
|
| I Instructions Ins set Instruction break
| A ASCII Asc set ASCII break
| B Bytes Byt set Byte break
| W Words Wrd set Word break
| T Table of addr Adt set address Table break
| S Space Spc set Space break
|
|================================================================
-----------------------------------
K
Remove a break point from the table. Z80DIS will complete
the command and position the cursor for entry of an address.
-----------------------------------
P
Print the break table to your CP/M LST: device in same
manner as L command above. Output is always immediate to LST:
regardless of any file assignments you made in part 3.1.
-----------------------------------
Q
Quit break table processing and proceed with disassembly. If
you have not saved your definitions onto a file for future use
since your last change to the table, Z80DIS will remind you.
-----------------------------------
- page 10 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
I
A
B
W
T
S
These six commands set break table addresses to define
transition points in the disassembly mode. The program will
complete the command line and position the cursor for entry of a
Hexadecimal number:
I at .... hex
You enter the address followed by <CR>. Any number that you enter
will be right justified in the four digits when you push <CR>. If
you enter a break at the same address as an existing break
address, the former definition is overwritten without comment.
This disassembler can operate in six modes:
I = Instructions
(Either Z80 full set or 8080 sub-set)
A = ASCII text using DEFM with quoted strings
(an ASCII region is output as strings of characters)
B = Byte storage using DEFB with hex byte values
(blocks of single bytes interpreted as numbers)
W = Word storage using DEFW with hex word values
(blocks of double byte words interpreted as numbers)
T = Table of addresses using DEFW with address labels
(blocks of byte pairs interpreted as addresses)
S = Space using DEFS and the length
(blocks of empty space of uninterpreted content)
-----------------------------------
_ ( any other command not listed above )
If you can't think of any commands, enter anything. The
program will respond with a short crib note giving you acceptable
command characters.
-----------------------------------
-0-
PART 3.3 -- EXECUTION PASS ONE: Upon entry of the Quit break
table command, the actual disassembly will begin.
During this pass the code is cracked according to the
break table, the cross reference list structure is
linked into the PASCAL heap space in upper memory, the
cracked code is copied with context information onto a
scratch file called Z80DIS.$$$. During pass one, your
console screen will display the following:
During processing of pass 1 or pass 2, Z80DIS will display a line
like the following:
- page 11 -
Z80DIS - Part 3: INSTRUCTIONS FOR EXECUTION - 11 JAN 86
working at 05F0 Asc
The "working at" line is animated and will show the current
address and disassembly mode. In the illustrated case the program
has just finished processing the file D.COM and the last break
type was ASCII.
During any execution phase, you may type ^C to abort that phase.
If you abort during pass one, the program will treat that as a
premature end of file and go on to process what it has through
pass two.
-0-
PART 3.4 -- EXECUTION PASS TWO: During this pass all user output
files and listings are produced and the scratch file is
erased.
The display will take you step by step through pass two and show
you what the program is doing at each step.
Informative messages about file and memory space will let you see
just how close to your memory and disk capacity the program is
running.
When the program is complete, Z80DIS will ring your terminal bell
twice and terminate.
- page 12 -
Z80DIS - Appendix A: ADAPTATION TO YOUR TERMINAL - 11 JAN 86
- APPENDIX A -
ADAPTATION OF Z80DIS TO YOUR TERMINAL
-------------------------------------
CP/M is a generic operating system, but most of the terminals
used with CP/M have features not anticipated by CP/M. These
features include CURSOR ADDRESSing and BRIGHT/DIM display of
characters. This program utilizes such features to improve the
operator interaction. As the program itself is written in TURBO
PASCAL, the TURBO installation support feature has been used to
make this adaptation easy. Therefore, before you use this prog-
ram, it must be installed to your particular terminal.
The following files are part of this program installation package
and must be present during terminal installation (the three
ZDINSTAL.* files may then be deleted after installation if no
other terminals are to be supported)..
Z80DIS.COM - the program you will be installing
Z80DIS.000 - overlay file for Z80DIS
Z80DIS.001 - overlay file for Z80DIS
ZDINSTAL.COM - the installation program
ZDINSTAL.MSG - contains text of ZDINSTAL messages
ZDINSTAL.DTA - contains terminal characteristics data
- THE INSTALLATION PROCEDURE -
--------------------------
Start the installation by typing ZDINSTAL at your terminal.
Select Screen installation from the main menu.
A numbered menu listing a number of popular terminals will ap-
pear, inviting you to choose one by entering its number.
If your terminal is mentioned, just enter the corresponding num-
ber, and the installation is complete. Before installation is
actually performed, you are asked the question..
Do you want to modify the definition before installation? _
This allows you to modify one or more of the values being
installed as described in the following. If you do not want to
modify the terminal definition, just type N, and the installation
will complete by asking you the operating frequency of your CPU
to establish parameters for timing loops.
If your terminal is NOT on the menu, however, you must define the
required values yourself. The values can most probably be found
in the manual supplied with your terminal.
Enter the number corresponding to None of the above and answer
the questions one by one as they appear on the screen.
In the following, each command you may install is described in
detail. Your terminal may not support all the commands that can
be installed. If so, just pass the command not needed by typing
page A-1
Z80DIS - Appendix A: ADAPTATION TO YOUR TERMINAL - 11 JAN 86
RETURN in response to the prompt. If Delete-line, Insert-line, or
Erase-to-end-of-line is not installed, these functions will be
emulated in software, slowing screen performance somewhat.
Commands codes may be entered either simply by pressing the
appropriate keys or by entering the decimal or hexadecimal ASCII
value of the command. If a command requires the two characters
'ESCAPE' and '=', you may...
either press first the escape key, then the =. The entry will
be echoed with appropriate labels, i.e. <ESC> =.
or Enter the decimal or hexadecimal values separated by
spaces. Hexadecimal values must be preceded by a
dollar-sign. Enter e.g. 27 61 or $1B 61 or $1B $3D
which are all equivalent.
The two methods cannot be mixed, i.e. once you have entered a
non-numeric character, the rest of that command must be defined
in that mode, and vise versa.
A hyphen entered as the very first character is used to delete a
command, and echoes the text Nothing.
-----------------------------------
Terminal type: ______________________
Enter the name of the terminal you are about to install.
When you complete ZDINSTAL, the values will be stored, and the
terminal name will appear on the initial list of terminals. If
you later need to re-install Z80DIS to this terminal, you can do
that by choosing it from the list.
-----------------------------------
Send an initialization string to the terminal? _
If you want to initialize your terminal when Z80DIS starts
(e.g. to down load commands to programmable function keys), you
answer Y for yes to this question. If not, just hit RETURN.
If you answer Y, you may choose between entering the command
directly or defining a file name containing the command string.
The latter is a good idea if the initialization string is long,
as e.g. a string to program a number of function keys would be.
-----------------------------------
Send a reset string to the terminal? _
Here, you may define a string to be sent to the terminal
when Z80DIS terminates. The description of the initialization
command above applies here.
-----------------------------------
page A-2
Z80DIS - Appendix A: ADAPTATION TO YOUR TERMINAL - 11 JAN 86
CURSOR LEAD-IN command: _
Cursor Lead-in is a special sequence of characters which
tells your terminal that the following characters are an address
on the screen on which the cursor should be placed.
When you define this command, you are asked the following
supplementary questions..
-----------------------------------
CURSOR POSITIONING COMMAND to send between line and column: _
Some terminals need a command between the two numbers defi-
ning the row and column cursor address.
-----------------------------------
CURSOR POSITIONING COMMAND to send after line and column: _
Some terminals need a command after the two numbers defining
the row and column cursor address.
-----------------------------------
Column first? _
Most terminals require the address on the format: first ROW,
then COLUMN. If this is the case on your terminal, answer N. If
your terminal wants COLUMN first, then ROW, then answer Y.
-----------------------------------
OFFSET to add to LINE _
Enter the number to add to the LINE (ROW) address.
-----------------------------------
OFFSET to add to COLUMN _
Enter the number to add to the COLUMN address.
-----------------------------------
Binary address? _
Most terminals need the cursor address sent on binary form.
If that is true for your terminal, enter Y. If your terminal
expects the cursor address as ASCII digits, enter N. If so, you
are asked the supplementary question..
-----------------------------------
2 or 3 ASCII digits? _
Enter the number of digits in the cursor address for your
terminal.
-----------------------------------
page A-3
Z80DIS - Appendix A: ADAPTATION TO YOUR TERMINAL - 11 JAN 86
CLEAR SCREEN command: _
Enter the command that will clear the entire contents of
your screen, both foreground and background, if applicable.
-----------------------------------
Does CLEAR SCREEN also HOME cursor? _
This is normally the case; if it is not so on your terminal,
enter N, and define the cursor HOME command.
-----------------------------------
DELETE LINE command: _
Enter the command that deletes the entire line at the cursor
position.
-----------------------------------
INSERT LINE command: _
Enter the command that inserts a line at the cursor posi-
tion.
-----------------------------------
ERASE TO END OF LINE command: _
Enter the command that erases the line at the cursor posi-
tion from the cursor position through the right end of the line.
-----------------------------------
START OF 'LOW VIDEO' command: _
If your terminal supports different video intensities, then
define the command that initiates the DIM video here. If this
command is defined, the following question is asked . . .
-----------------------------------
START OF 'NORMAL VIDEO' command: _
Define the command that sets the screen to show characters
in 'normal' video.
-----------------------------------
Number of rows (lines) on your screen: _
Enter the number of horizontal lines on your screen.
-----------------------------------
Number of columns on your screen: _
Enter the number of column positions on your screen.
-----------------------------------
page A-4
Z80DIS - Appendix A: ADAPTATION TO YOUR TERMINAL - 11 JAN 86
Delay after CURSOR ADDRESS (0-255 ms): _
Delay after CLEAR, DELETE, and INSERT (0-255 ms): _
Delay after ERASE TO END OF LINE and HIGHLIGHT On/Off (0-255 ms):
Enter the delay in milliseconds required after the functions
specified. RETURN means 0 (no delay).
-----------------------------------
Is this definition correct? _
If you have made any errors in the definitions, enter N. You
will then return to the terminal selection menu. The installation
data you have just entered will be included in the installation
data file and appear on the terminal selection menu, but instal-
lation will not be performed.
When you enter Y in response to this question, you are
asked..
-----------------------------------
Operating frequency of your microprocessor in MHz (for delays): _
As the delays specified earlier are depending on the
operating frequency of your CPU, you must define this value. If
your processor operates at a fractional speed (i.e. 2.5 MHz),
enter the next larger integer value (3 MHz for this example.)
-----------------------------------
-0-
The installation is finished, installation data is written to
Z80DIS, and you return to the outer menu. New installation data
is also saved in the installation data file and the new terminal
will appear on the terminal selection list when you run ZDINSTAL
in the future.
page A-5
Z80DIS - Appendix B: Z80DIS REVISION HISTORY - 11 JAN 86
- APPENDIX B -
Z80DIS REVISION HISTORY
-----------------------
-----------------------------------------------------------------
Version 1.5 Released: July 30, 1985
First version released for public use.
-----------------------------------------------------------------
Version 1.6 Released: September 12, 1985
A bug fix and some enhancements.
1) Backwards referencing relative jumps have been fixed.
They had been working originally, but a bug had slipped in
when making other changes. Forward references were OK
before.
2) The assembly output file now uses a capital H suffix on
hex. I like the small h better as it shows better next to
numbers, but some assemblers can not handle lower case.
3) The program no longer skips a line after "RST 38H".
Normally all calls are followed by a skip to set them off,
but RST 38H corresponds to FFh which often fills unused
space and generates too many useless line of code.
4) The .PRN file now ends with a form-feed. This prevents
leaving your printer in mid page.
-----------------------------------------------------------------
Version 2.1 Released: January 11, 1986
This is a major re-organization of Z80DIS: Adds a built-in
expert system for assignment of break table addresses;
Enhances and improves many options and defaults.
1) When the program asks for break table inputs, you may now
enter '*' which will trigger a detailed analysis of the
structure and relationships of the input code to extract the
start address of each region. You are given the opportunity
to edit and/or save the resulting break table before
continuing with the disassembly. Regions of instructions,
bytes, words, ASCII data, and un-set buffers are all
identified for you.
2) The COM file and overlay files for Z80DIS no longer need
to be on your default disk drive. The program will search
the connected drive, the A drive, and the B drive in that
order. The program does assume, however, that both overlay
files are on the same drive.
page B-1
Z80DIS - Appendix B: Z80DIS REVISION HISTORY - 11 JAN 86
3) The cross-reference listing now shows the break table
region of residency for each label so that you may inspect
the list for inconsistencies.
4) Overflow of memory or disk space during pass 1 will now
terminate the pass and process what has been collected
so far through pass 2. The previous version just aborted.
5) You may now disassemble direct to your printer by
specifying LST: as the list file name.
6) You may now suppress either the assembly language output
file or the list output file ( but not both ) by specifying
the file name NONE:. The default for the assembly output
(*.MAC file) is NO assembly output file (NONE:).
7) The default name for the break table save file is now the
same as that of your input file. Previously the default was
always SAVE.BRK.
8) Many internal enhancements to make the program run
faster.
=================================================================
You may leave your comments, messages, usage notes or bug reports
for 'Kenneth Gielow' on one of the following RCP/M boards:
FOG # 5, Palo Alto (415) 424-1482
POTPOURRI RCP/M (408) 378-7474 (requires registration)
=================================================================
_________________________________________________________________
CP/M is a registered trademark of Digital Research Inc.,
TURBO PASCAL is a trademark of Borland International,
Z-80 is a trademark of Zilog Corp.
page B-2