mirror of https://github.com/wwarthen/RomWBW.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
209 lines
9.8 KiB
209 lines
9.8 KiB
|
|
ZDKCOM
|
|
|
|
Key File Compiler for ZDE
|
|
|
|
Version 1.3 01 Jun 90
|
|
|
|
ZDKCOM and its documentation are adapted with permission from
|
|
VDKCOM12.LBR, by Fred Haines, Glendale Littera RCPM/QBBS, 818
|
|
956-6164. VDKCOM version 1.2 is copyright 1988 by Fred Haines,
|
|
and is released by the author to the CP/M community for all
|
|
reasonable noncommercial purposes. For the Z80 source code to
|
|
ZDKCOM, see ZDKCOM13.LBR.
|
|
|
|
|
|
CONTENTS
|
|
|
|
1. How to Use ZDKCOM.
|
|
2. Programmer's Note.
|
|
|
|
|
|
1. How to Use ZDKCOM.
|
|
|
|
ZDKCOM compiles an ASCII text file into a *.ZDK file of key
|
|
macros which ZDENSTAL will install in ZDE. It alsos convert an
|
|
existing ZDK file into a text file with the extension ZDT. It
|
|
allows you to create, edit, and re-edit complicated key macros
|
|
with a full-featured word processor - ZDE itself - instead of the
|
|
backspace-only line editor in ZDENSTAL. The syntax is:
|
|
|
|
ZDKCOM <ufn>.ZDT
|
|
converts text file to ZDK overlay
|
|
|
|
ZDKCOM <ufn>.ZDK
|
|
converts overlay to ZDT text file
|
|
|
|
Use ZDE in NONDOCUMENT mode to type a file that looks like
|
|
what you see when you use the K option of ZDENSTAL, substituting
|
|
lower case "n" or "q" for the No Repeat and Quiet option
|
|
indicators <N> and <Q>:
|
|
|
|
qThis line would be for key 0 in Quiet mode.^M
|
|
nThis line would be for key 1 in No Repeat mode.^M
|
|
|
|
This line would be key 3, with key 2 unassigned.
|
|
n<This line would appear in angle brackets.>^M^M^M
|
|
The line above, key 4, prints with two blank lines following it.
|
|
q"This is in quotes, but no carriage return at the end."
|
|
"This line is ^P^BMacro Key 7^P^B with embedded boldface codes."^M
|
|
q^VThis line turns insert on before printing the line.^A^A^A^A_^F^D_^M
|
|
n <Key 9 not installed>^A^A^A^A
|
|
|
|
...and so on. Lines correspond to the number keys in 0 to 9
|
|
order, with blank lines for unassigned keys. Do NOT embed control
|
|
codes. Type everything in ASCII. For instance, to underline,
|
|
type out '^P^Swords underlined^P^S'. It's a good idea to make
|
|
hard carriage returns visible by toggling them on with the ^OD
|
|
command. ZDKCOM accepts trailing spaces as part of the macro,
|
|
even though you can't see them, so, if you don't want them, make
|
|
sure each line is terminated by a hard carriage return.
|
|
Individual key macro strings may not exceed 127 bytes in the
|
|
ZDK file, though they may in the ZDT text file, since ASCII
|
|
representations of single-byte control codes require two bytes,
|
|
and option flags and slashes don't contribute to the length of the
|
|
string.
|
|
The total of all strings may not exceed 498 output bytes.
|
|
This is two bytes less than allowed by ZDE and ZDENSTAL, but,
|
|
under the program's present logic, it would require an inordinate
|
|
amount of code to make those last two bytes available. If you
|
|
really need them, add them to the ZDK file with ZPATCH or any
|
|
other patcher, locate the last string-length byte, and add 2 (in
|
|
hex) to it.
|
|
For a quick demo, remove the leading spaces from the lines
|
|
below, mark them as a block, and write them out to <ufn>.ZDT. Run
|
|
ZDKCOM <ufn>.ZDT. Then load the resulting ZDK file into ZDE with
|
|
the command ZDENSTAL ZDE <ufn>.ZDK.
|
|
|
|
q^C^C^C^E^E^E^E^E^[^E
|
|
q^[b^[0^Qs^X^[=^M1^[= 1^S^V ^D^[!0^[1^Qb^B^Ku
|
|
^[=^M0^V^I^V^B^G^[![^[0^X
|
|
^[=^M0^T^B^N^[0^X
|
|
q^P^[^P^I^P^K^P^[9
|
|
q^V^KrA0:LH.FMT^M
|
|
q^G^G^G^G^X
|
|
q<not installed>^A^A^S
|
|
q<not installed>^A^A^S
|
|
q^KrHEADER^M
|
|
|
|
Key macro 0 measures off one full page if the top margin is 0 and
|
|
the page length is 58 lines. Adjust for different page lengths by
|
|
adding or subtracting ^E's. I use this macro to move from line 1
|
|
of a page to line 1 of the next page. I then use key macro 9 to
|
|
read in a page header from a separate file that contains nothing
|
|
but the properly spaced header text with a # in place of the page
|
|
number. I search for # with a ^Qf and replace it with the
|
|
appropriate page numbers.
|
|
This happens so quickly on a 9 mhz SB180 with hard disk that
|
|
it is virtually unnoticeable, but there is a faster way to do it.
|
|
Just make up a header at the top of the first page, or, if you
|
|
want to start page headers only on page two, at the foot of the
|
|
file, and mark it as a block. Use key macro 0 to move from the
|
|
top line of a page to the top line of the next, and copy the
|
|
header into place with the ^KC command. Don't forget to erase the
|
|
original of the header at the foot of the file when you get there.
|
|
Key macro 1 softens and reforms a paragraph by removing the
|
|
hard carriage returns from the ends of each line.
|
|
Key macro 2 changes a document in flush left block format
|
|
(like this one) to indented paragraph form, and key macro 3
|
|
changes it back again.
|
|
Key macro 4 embeds my DIABLO 1610-compatible printer's code
|
|
for setting a left margin in column 11 (^K=0Bh) in the document.
|
|
If I want another margin I add or subtract from 0Bh and overwrite
|
|
the ^K with the appropriate control character. You may well be
|
|
able to substitute your own printer's set left margin code for
|
|
this one.
|
|
Key macro 5 reads in a previously prepared letterhead stored
|
|
as LH.FMT on drive/user A0.
|
|
Key macro 6 removes four spaces or characters from the
|
|
beginning of each line, used to remove line numbers from the
|
|
beginnings of messages in modem capture files.
|
|
|
|
|
|
2. Programmer's Note.
|
|
|
|
A ZDK file is a data structure four records long. The first
|
|
two bytes are an ID number which ZDENSTAL checks to ensure that it
|
|
is working with the correct version. The current number, 0250h,
|
|
is valid for several recent versions of ZDE.
|
|
These two bytes are followed by up to ten strings, each
|
|
preceded by a string-length byte which ZDE uses to index the
|
|
string's location. Each string is limited by the size of a buffer
|
|
in ZDE to 127 bytes.
|
|
An empty string is indicated by a string-length byte of 00h.
|
|
After the last byte of the last string, the remainder of the 512
|
|
bytes are filled with 00h.
|
|
It is a peculiarity of ZDKCOM that it needs to write two null
|
|
bytes at the end of the file, which means that it will accept only
|
|
498 bytes for the total length of all strings (512, less two ID
|
|
bytes, less 10 string-length bytes, less these two more) rather
|
|
than the 500 that ZDE and ZDENSTAL allow.
|
|
When you look at the key macro buffer of ZDE using the K
|
|
option of ZDENSTAL, you see something that looks like this:
|
|
|
|
<0><Q>This line would be for key 0 in Quiet mode.^M
|
|
<1><N>This line would be for key 1 in No Repeat mode.^M
|
|
<2><>
|
|
<3>This line would be key 3, with key 2 unassigned.
|
|
<4><N><This line would appear in angle brackets.>^M^M^M
|
|
<5>The line above, key 4, prints with two blank lines following it.
|
|
<6><Q>"This is in quotes, but no carriage return at the end."
|
|
<7>"This line is ^P^BMacro Key 7^P^B with embedded boldface codes."^M
|
|
<8><>
|
|
<9><>
|
|
|
|
The numbers down the side and the option indicators <N>, <Q>, and
|
|
<> (no option) are supplied by ZDENSTAL. The ZDT text file
|
|
version of the same macro keys would omit the string numbers and
|
|
no option indicators, and convert the <N> and <Q> to simple lower
|
|
case 'n' and 'q'. If you need lower case 'n' or 'q' as the first
|
|
character of a key macro, just precede it with a slash, which will
|
|
be ignored.
|
|
ZDKCOM recognizes blank lines as unassigned keys. These
|
|
produce an "error" message when invoked by ZDE.
|
|
ZDE recognizes a No Repeat option if the the high bit is set
|
|
on the first byte of the macro string after the length byte, and a
|
|
Quiet option if the high bit is set on both of the first two bytes
|
|
of the string.
|
|
The translation procedure from text to overlay requires:
|
|
|
|
Enter two-byte ID string 02h 50h in output file.
|
|
|
|
Enter 00h to save a place for a string length byte.
|
|
|
|
Check for "n" or "q" as first three bytes of new string and add
|
|
80h to the next byte or next two bytes input as required.
|
|
|
|
Read in the rest of the string byte by byte and output each byte
|
|
to the output file. If "^" appears in the string, drop it and
|
|
subtract 40h from next byte to make it into a real control
|
|
character. If "/" appears, ignore it and print the next
|
|
character literally. "/^" prints "^" rather than turn the
|
|
character following the carat into a control code, and "//"
|
|
prints a single slash. A single input slash is ignored.
|
|
|
|
When the CRLF pair is encountered in the input text file,
|
|
convert it to a 00h place marker for the length of the next
|
|
string. Get the number of bytes output in the last string and
|
|
write it to the position of the string-length byte at the head
|
|
of the preceding string.
|
|
|
|
When the text file's ^Z EOF is encountered, fill the remainder
|
|
of the total 512 bytes with 00h and close the files.
|
|
|
|
When converting ZDK overlays to ZDT text files, the procedure is
|
|
more or less reversed. ZDKCOM converts the string length bytes to
|
|
CRLF pairs, the control code bytes to two-byte ASCII strings '^c',
|
|
and finishes off the file when all strings are accounted for by
|
|
inserting an EOF ^Z.
|
|
In addition, ZDKCOM has error checking for file opening and
|
|
closing and for individual and overall string length, and it
|
|
reports activity to keep the user from thinking the program has
|
|
hung, though the counters on the screen are otherwise meaningless.
|
|
The structure of the four-sector ZDK file in CP/M is so
|
|
similar to the eight-sector MS/DOS version that you can use
|
|
ZDKCOM, along with a patcher, to create a VDK file for
|
|
installation in VDE12, the MS/DOS version of ZDE. Make up the ZDT
|
|
file as you would for CP/M, then patch the second ID byte from 50h
|
|
to 60h and add four records of nulls.
|
|
|