Browse Source

Merge pull request #207 from wwarthen/dev

Dev
pull/233/head
b1ackmai1er 5 years ago
committed by GitHub
parent
commit
44e666d053
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 5
      .gitignore
  2. 1
      Doc/ChangeLog.txt
  3. 765
      Doc/ZCPR-DJ.doc
  4. 8
      Readme.unix
  5. 21
      Source/Apps/Tune/tune.asm
  6. 4
      Source/HBIOS/Build.sh
  7. 2
      Source/HBIOS/Config/EZZ80_std.asm
  8. 88
      Source/HBIOS/Config/EZZ80_tz80.asm
  9. 2
      Source/HBIOS/Config/N8_std.asm
  10. 2
      Source/HBIOS/Config/RCZ180_ext.asm
  11. 2
      Source/HBIOS/Config/RCZ180_nat.asm
  12. 2
      Source/HBIOS/Config/RCZ80_std.asm
  13. 2
      Source/HBIOS/Config/RCZ80_zrc.asm
  14. 2
      Source/HBIOS/Config/SCZ180_126.asm
  15. 2
      Source/HBIOS/Config/SCZ180_130.asm
  16. 2
      Source/HBIOS/Config/SCZ180_131.asm
  17. 3
      Source/HBIOS/Config/SCZ180_140.asm
  18. 34
      Source/HBIOS/ay38910.asm
  19. 2
      Source/HBIOS/cfg_dyno.asm
  20. 2
      Source/HBIOS/cfg_ezz80.asm
  21. 2
      Source/HBIOS/cfg_master.asm
  22. 2
      Source/HBIOS/cfg_mbc.asm
  23. 2
      Source/HBIOS/cfg_mk4.asm
  24. 2
      Source/HBIOS/cfg_n8.asm
  25. 2
      Source/HBIOS/cfg_rcz180.asm
  26. 2
      Source/HBIOS/cfg_rcz280.asm
  27. 2
      Source/HBIOS/cfg_rcz80.asm
  28. 2
      Source/HBIOS/cfg_sbc.asm
  29. 2
      Source/HBIOS/cfg_scz180.asm
  30. 8
      Source/HBIOS/hbios.asm
  31. 1
      Source/HBIOS/std.asm
  32. 0
      Source/Images/Common/All/CLRDIR.COM
  33. BIN
      Source/Images/Common/All/COMPARE.COM
  34. 0
      Source/Images/Common/All/CRUNCH.COM
  35. BIN
      Source/Images/Common/All/CRUNCH28.CFG
  36. 0
      Source/Images/Common/All/DDTZ.COM
  37. 0
      Source/Images/Common/All/DDTZ.DOC
  38. 0
      Source/Images/Common/All/EX.COM
  39. 0
      Source/Images/Common/All/FDISK80.COM
  40. 0
      Source/Images/Common/All/FIND.COM
  41. 0
      Source/Images/Common/All/FLASH.COM
  42. 0
      Source/Images/Common/All/FLASH.DOC
  43. 0
      Source/Images/Common/All/MBASIC.COM
  44. 0
      Source/Images/Common/All/NULU.COM
  45. 0
      Source/Images/Common/All/PMARC.COM
  46. 0
      Source/Images/Common/All/PMEXT.COM
  47. 0
      Source/Images/Common/All/RMXSUB1.COM
  48. BIN
      Source/Images/Common/All/SUPERSUB.COM
  49. 141
      Source/Images/Common/All/SUPERSUB.DOC
  50. 0
      Source/Images/Common/All/TDLBASIC.COM
  51. 0
      Source/Images/Common/All/UNARC.COM
  52. 623
      Source/Images/Common/All/UNARC.DOC
  53. 0
      Source/Images/Common/All/UNCR.COM
  54. 0
      Source/Images/Common/All/UNZIP.COM
  55. 74
      Source/Images/Common/All/UNZIP.DOC
  56. 0
      Source/Images/Common/All/XSUB1.COM
  57. 0
      Source/Images/Common/All/ZAP.COM
  58. 0
      Source/Images/Common/All/ZDE.COM
  59. 0
      Source/Images/Common/All/ZDENST.COM
  60. 0
      Source/Images/Common/CPM22/KERCPM22.COM
  61. 0
      Source/Images/Common/CPM3/KERCPM3.COM
  62. BIN
      Source/Images/Common/DIRX.COM
  63. BIN
      Source/Images/Common/SUPERSUB.COM
  64. BIN
      Source/Images/Common/UNZIP.COM
  65. BIN
      Source/Images/Common/Z/u14/LBREXT36.CFG
  66. 0
      Source/Images/Common/Z/u14/ZXD.CFG
  67. 0
      Source/Images/Common/Z/u15/LBREXT.COM
  68. 0
      Source/Images/Common/Z/u15/ZXD.COM
  69. 0
      Source/Images/Common/Z3/u10/SCOPY.HLP
  70. 0
      Source/Images/Common/Z3/u10/SCOPY10F.HLP
  71. 0
      Source/Images/Common/Z3/u14/SCOPY10F.CFG
  72. 0
      Source/Images/Common/Z3/u15/SCOPY.COM
  73. 0
      Source/Images/Common/Z3/u15/TCAP.Z3T
  74. 0
      Source/Images/Common/Z3/u15/TCSELECT.COM
  75. 0
      Source/Images/Common/Z3/u15/TCVIEW.COM
  76. 0
      Source/Images/Common/Z3/u15/Z3LOC.COM
  77. 0
      Source/Images/Common/Z3/u15/Z3TCAP.LBR
  78. 13
      Source/Images/d_bp.txt
  79. 4
      Source/Images/d_cpm22.txt
  80. 4
      Source/Images/d_cpm3.txt
  81. 23
      Source/Images/d_nzcom.txt
  82. BIN
      Source/Images/d_nzcom/u0/CRUNCH.COM
  83. BIN
      Source/Images/d_nzcom/u0/UNCRUNCH.COM
  84. 37
      Source/Images/d_zpm3.txt
  85. BIN
      Source/Images/d_zpm3/u15/help.com
  86. 7
      Source/Images/d_zsdos.txt
  87. BIN
      Source/Images/d_zsdos/u0/BGPATCH.HEX
  88. BIN
      Source/Images/d_zsdos/u0/COPY.CFG
  89. BIN
      Source/Images/d_zsdos/u0/DATSWEEP.COM
  90. BIN
      Source/Images/d_zsdos/u0/DSCONFIG.COM
  91. 242
      Source/Images/d_zsdos/u0/ROMWBW.TXT
  92. BIN
      Source/Images/d_zsdos/u0/ZXD.COM
  93. BIN
      Source/RomDsk/ROM_512KB/COPY.CFG
  94. BIN
      Source/RomDsk/ROM_512KB/FA16.CFG
  95. BIN
      Source/RomDsk/ROM_512KB/FILEDATE.CFG
  96. BIN
      Source/RomDsk/ROM_512KB/INITDIR.CFG
  97. BIN
      Source/RomDsk/ROM_512KB/TD.CFG
  98. BIN
      Source/RomDsk/ROM_512KB/ZCNFG.COM
  99. BIN
      Source/RomDsk/ROM_512KB/ZCNFG24.CFG
  100. BIN
      Source/RomDsk/ROM_512KB/ZXD.CFG

5
.gitignore

@ -81,9 +81,8 @@ Tools/unix/zx/zx
!Source/BPBIOS/Z34RCP11/cledinst.com
!Source/BPBIOS/Z34RCP11/cledsave.com
!Source/Fonts
!Source/Images/**/*.[Cc][Oo][Mm]
!Source/Images/hdnew_prefix.bin
!Source/RomDsk/**/*.[Cc][Oo][Mm]
!Source/Images/**
!Source/RomDsk/**
!Source/UBIOS/FSFAT.BIN
!Source/UBIOS/UNA-BIOS.BIN
!Source/ZCCP/*.[Cc][Oo][Mm]

1
Doc/ChangeLog.txt

@ -50,6 +50,7 @@ Version 3.1.1
- WBW: Refactored make process
- WBW: Added ROM verification to boot process
- WBW: Added Z80 instruction test apps to user area 5 in CP/M & ZSDOS
- WBW: Add support for LINC sound card
Version 3.1
-----------

765
Doc/ZCPR-DJ.doc

@ -0,0 +1,765 @@
A Personal Note
===============
Somehow, I've managed to get by for the last 14 years using just ZCPR.
But like some of you, I have fiddled with the standard ZCPR and
modified it to suit my tastes. As I added new commands or enriched old
ones, I've always remained compatible with existing programs, all the
BDOS replacements, and, most important of all, stayed within the 800H
space allocation of the original Digital Research CCP. Here are the
fruits of my labors, I hope you enjoy this CCP replacement as much as I
do.
Don Kirkpatrick
17595 S.W. Pheasant Lane
Beaverton, Oregon 97006
<Donald.C.Kirkpatrick@tek.com>
Introduction
============
This console replacement is designed to run under CP/M 2.2 or any of
the 2.2 BDOS replacements. It requires a Z80 or better. If you are
running DRI's CCP or older versions of ZCPR1, this program is a
significant improvement. If you are running ZCPR3, CP/M 3.0, CP/M
Plus, or MP/M, this will probably be a disappointment.
If you are familiar with ZCPR3, you will recognize many of the
enhancements here: comments on a command line, search path for the .com
file, drive/user change with simple du:, CLEVEL3 command processing,
proper SUBMIT file facility, and so on. Nothing has been removed from
DRI's CCP, only new features added. AND IT ALL STILL FITS IN THE
ORIGINAL 800H, THE SAME SPACE AS THE DIGITAL RESEARCH FIVE COMMAND
CCP.
Many of the standard commands have been enhanced. For example, TYPE
and LIST now have options to turn on or off page breaks. Moreover, the
console check for abort has been improved.
Two commands have been added for use in submit files - SAK and BELL.
These commands allow you to pause or ring the bell during submit file
execution.
Before you install this version of ZCPR onto your boot disks, try it by
running it as a .com file. Just edit the few customizing options and
assemble the source. After you decide it really is better, load it
onto your boot track and make it your standard. Complete instructions
are located at the end of this document.
The complete built-in command list is:
DIR - directory command enhanced to list optionally all user areas
REN - standard rename command
USER- move to new user number area on same drive
SAVE- save specified number of TPA pages or records in a file
TYPE- display a file on the console with optional page break pauses
LIST- print command plus optional form feed insertion
PAGE- send form feed to list device
ERA - standard file erase command
ERAQ- file erase with confirmation query at each file
DFU - set default user number for .com search path
BELL- send a bell character to the console
SAK - pause until a key is struck on the console (Strike Any Key)
SCL - toggle multiple commands per line (Single Command on a Line)
GET - load a file into the TPA at any specified location
JUMP- process command tail and execute program at specified address
GO - process command tail and execute program loaded at 100H
PEEK- display hexadecimal byte string starting with specified address
POKE- load hexadecimal byte string starting with specified address
BOOT- execute BIOS cold boot routine
Filename Processing
===================
The standard ZCPR3 du: drive/user file specification has been
implemented. Any filename can be in the du:fn.ft form. For example:
A>era c4:junk*.*
erases files on the C drive, user area 4 without leaving drive A user
0. When a user number is found in a filename, that user number is
placed in S1 of the default FCB. Bit 7 of S1 is set to inform the
program using the FCB a user number was found.
The * in an ambiguous file name has been improved. Now a trailing *
causes the remainder of the ambiguous name to be filled with '?', not
just the fn field. For example:
A>era c4:junk*
is the same as the example above. Previously, junk* was defined as
'junk????. '. If you need the ft field blank, type 'junk*.'. The
question mark still works as a single character wild card.
Command Line Processing
=======================
The current user number is included as part of the command prompt for
all non-zero user numbers. The prompt is of the form du>, for example
A2> or B10>. If the SUPRES equate is true, the user number is
suppressed for user 0 only.
Multiple commands are typed on a single line separated by a command
separator character. Occasionally, you need to type the separator
character in a command tail. The SCL command toggles the multiple
command enable. The CMDCHR equate determines the command separator
character. A ';' has been chosen as the separator character in this
distribution version.
Comments are allowed on a command line. When the comment separator
character is encountered as the first character of a command, the
remainder of the line is ignored. The COMCHR equate determines the
comment separator character. A ';' has been chosen as the separator
character in this distribution version. Here is an example containing
comments and multiple commands on a single line:
A>get 100 junk;peek 100;;this is a comment.
A>;this is also a comment.
There exists a built-in search path for transient commands. First, the
current drive/user is searched. Next, the current drive/default user
is searched. Last, drive A/default user is searched. The DEFUSR
equate determines the default user number, currently set to user 0 in
this distribution version. The default user is temporarily changed
with the DFU command. If a drive is specified in the transient
command, the current and default user areas on the specified drive are
searched. If a user number is specified, that user area on the current
and default drive are searched. If both the drive and user number are
specified, no search is performed. The same drive/user area is never
searched twice.
Transient commands are always "called." If a program terminates via a
return rather than a warm boot, subsequent multiple commands on the
command line are executed. Any program exiting by a warm boot reloads
ZCPR and the subsequent commands lost.
A default command can be placed in the command buffer and control
passed to ZCPR for processing. The only thing required, besides
placing the command in the buffer and jumping to CPRLOC, is to
initialize the command character counter at the start of the buffer.
The procedure is compatible with the original DRI CCP default command
processing. If ZCPR is entered at CPRLOC+3 jump, default command
processing is suppressed. Either way, register C must contain a valid
drive/user, just like the original CCP.
Submit File Processing
======================
A basic design choice had to be made in the design of ZCPR concerning
the execution of submit files. The original CCP had a problem. It
ALWAYS looked for the $$$.SUB file on drive A and the submit program
would place it on the current default drive. When the you were logged
onto drive B and you issued a submit command, the $$$.SUB was placed on
drive B and not executed.
After much debate it was decided to have ZCPR perform the same type of
function as CCP (look for the $$$.SUB file on drive A), but the problem
with SUBMIT.COM still exists. Hence, RGF designed SuperSUB and RLC
took his SuperSUB and designed SUB from it; both programs are set up to
allow the selection at assembly time of creating the $$$.SUB on the
default drive or on drive A. If you don't have one of these newer
submit programs, a procedure for patching the standard SUBMIT.COM has
been included at the end.
The fixed drive choice permits a submit file to contain a series of
commands exactly as they would be entered from a CP/M console. This
permits things like:
A>dir
A>b:
B>dir
to be executed, even though the currently default drive is changed
during execution. If the $$$.SUB file were present on the default
drive, the above series of commands would not work. ZCPR would be
looking for $$$.SUB on the default drive, and switching default drives
without moving the $$$.SUB file would cause processing to abort. Note
that the same problem occurs if the user number of the $$$.SUB file is
not predefined. ZCPR assumes that the $$$.SUB file is located on user 0
of drive A.
The trick of using the $ flag returned by the BDOS disk reset is used
to speed the search for a $*.* file on drive A. This trick will not
work if the $$$.SUB file were located on another drive.
The '>' prompt character is replaced by a special character while a
submit file is in execution. The SPRMPT equate defines this special
character, currently set to '$' in this distribution version.
Command Syntax
==============
Multiple commands can be placed on one line. If the comment character
is encountered where a command should start, the rest of the line is
ignored. Any command can be renamed by editing the command table.
Command names can be up to eight characters long and are terminated by
bit 7 high. If there is a conflict between an internal ZCPR command
and a transient program of the same name, the internal command is
executed. Type the command with the du: included if the external
transient command is the one desired. Here is a complete alphabetized
list of all the resident commands with their syntax:
=============================================================================
Command: BELL
Function: To ring terminal bell.
Forms: BELL
Options: None.
Uses: This command is designed to be placed in a submit file to
ring the bell to indicate significant checkpoints.
=============================================================================
Command: BOOT
Function: To execute BIOS cold boot routine.
Forms: BOOT
Options: REBOOT equate controls the inclusion/exclusion of this command.
Uses: Reboots the system without pushing the reset button. The
cold boot entry point in the BIOS must be supported for this
command to work.
=============================================================================
Command: DFU
Function: To set the Default User Number for transient commands.
Forms: DFU <usrnum>
Options: DEFUSR equate defines the default user choice until this
command is entered.
NUMBASE equate defines the character that specifies a
hexadecimal number. The distribution version is set to 'H'.
Uses: The default user area is searched after a transient command
cannot be found in the current user area. If the transient
command still has not been found, the default user on the
default drive is searched last. The new default user number
is in decimal, but hexadecimal numbers are entered by
appending an 'H'. The next warm boot will restore the
original default user number.
=============================================================================
Command: DIR
Function: To display a directory listing of the files on a drive.
Forms: DIR <afn> Display the DIR files
DIR <afn> S Display the SYS files
DIR <afn> B Display both DIR and SYS files
DIR <afn> A Display both DIR and SYS files for all user areas
Options: TWOCOL equate controls the number of columns in the display.
Forty-column terminals are limited to two-column displays.
WIDE equate controls the spacing between the columns and
change the horizontal width of a directory display.
FENCE equate specifies the character separator between the
directory columns.
USRDLM equate specifies the character between the user number
and the filename.
USRFLG, SYSFLG, and SOFLG equates specify the command line
tail character that control the display of system and
non-system files.
Uses: Displays a directory listing of files in specific drive/user
area.
=============================================================================
Command: ERA
Function: To erase files.
Forms: ERA <afn>
Options: None.
Uses: Deletes files. Names of erased files are displayed.
=============================================================================
Command: ERAQ
Function: To erase files with individual query.
Forms: ERAQ <afn>
<afn>? y File erased
<afn>? <CR> File not erased
Options: None.
Uses: Deletes a subset of a set of ambiguously specified files.
Any answer other than 'Y' (either case) will cause the file
to be skipped and not erased.
=============================================================================
Command: GET
Function: To load the specified file from disk to the specified address.
Forms: GET <hexadr> <ufn>
Options: None.
Uses: Loads a file into the TPA for patching purposes. This command
searches for the specified file along the same search path as
the transient command loader.
=============================================================================
Command: GO
Function: To call the program in the TPA without loading from disk.
Forms: GO <command tail>
Options: None.
Uses: Most useful to rerun a program already loaded into the TPA.
Saves time and wear on disk drives. The command tail is
entered exactly as it would appear if GO were replaced by the
program name. Same as JUMP 100H, but more convenient,
especially when used with parameters for programs like STAT.
=============================================================================
Command: JUMP
Function: To call the program at a specified address.
Forms: JUMP <hexadr> <command tail>
Options: None.
Uses: Executes code not located at 100H. For example, JUMP 0
warm boots. The code must already reside at the specified
address.
=============================================================================
Command: LIST
Function: To print specified file on list device.
-
Forms: LIST <ufn> Print file
LIST <ufn> P Print file without default paging
Options: NLINEP equate determines the number of lines per page.
FFKILL equate controls the suppression of form feeds before
printable text.
PGDFLG equate determines the command line tail character that
toggles the default form feed insertion every NLINEP lines.
NOSTAT equate controls the use of the BIOS list status call.
Uses: Prints files with/without pagination on LST: device. A
listing is aborted by a console ^C. Any submit file in
process is terminated and control is returned gracefully to
the console prompt.
=============================================================================
Command: PAGE
Function: To eject a page on list device via a form feed.
Forms: PAGE
Options: NOSTAT equate controls the use of the BIOS list status call.
Uses: Sends a form feed to the LST: device. The page eject can
be aborted by a console ^C if the system hangs because the
printer is not ready. If aborted, any submit file in process
is terminated and control is returned gracefully to the
console prompt.
=============================================================================
Command: PEEK
Function: To display hex values beginning at a specified address.
Forms: PEEK <hexadr> [<hexcnt>]
Options: None.
Uses: Displays hexadecimal values anywhere in the entire address
space. The maximum value for <hexcnt> is 0FFH, but the
default <hexcnt> is 256.
=============================================================================
Command: POKE
Function: To poke a string of hex values into a set of consecutive
addresses.
Forms: POKE <hexadr> <hexval> [...<hexval>]
Options: None.
Uses: Modifies values anywhere in the entire address space. Each
<hexval> represents one byte and is separated from the next
by a space. The number of <hexval> are limited only by the
size of the command line buffer. The address is incremented
for each <hexval>. Excellent for hand patching code.
=============================================================================
Command: REN
Function: To change the name of an existing file.
Forms: REN <newufn>=<oldufn>
REN <newufn>=<oldufn> Existing <newufn>
Delete? y File deleted
Options: None.
Uses: Changes the names of files. Any du: on <oldufn> is ignored;
the optional du: is on <newufn>. If there already exists a
<newufn>, the console is queried for conformation. Any
response except 'Y' (either case) aborts the command, kills
any submit file in process, and returns gracefully to the
command prompt.
=============================================================================
Command: SAK
Function: To pause until a key is struck.
Forms: SAK
? <any key>
Options: None.
Uses: Pauses a submit file until a keystroke is entered. Any
character other than a ^C will resume execution. A ^C kills
the submit file, any commands remaining on the command the
line are ignored, and control returns gracefully to the
prompt.
=============================================================================
Command: SAVE
Function: To save the contents of TPA onto disk as a file.
Forms: SAVE <Number of Pages> <ufn>
SAVE <Number of Records> <ufn> R
Options: RECFLG equate determines the command tail character that
specifies records rather than pages.
NUMBASE equate defines the character that specifies a
hexadecimal number. The distribution version is set to 'H'.
Uses: Saves the TPA to a file. Records are 128 bytes long, pages
are 256 bytes long. Number of pages or records is in
decimal, but a hexadecimal number is entered by appending an
'H'. Saved area begins at 100H.
=============================================================================
Command: SCL
Function: To force ZCPR to parse only a single command per line.
Forms: SCL
Options: MULTPL equate determines the inclusion/exclusion of this
command and whether or not multiple commands are allowed.
CMDCHR equate determines the character separating multiple
commands.
Uses: Some transient commands require the command separator in the
command tail. This command turns off multiple command
parsing so the entire command tail is sent to the transient
program. Multiple command format is reset at the next warm
boot. SCL toggles.
=============================================================================
Command: TYPE
Function: To display specified file on console.
Forms: TYPE <ufn> Display file
TYPE <ufn> P Display file without default paging
Options: NLINES equate determines the number of lines per screen.
FFKILL equate controls the suppression of form feeds before
printable text.
PGDFLG equate determines the command line tail character that
toggles the default form feed insertion every NLINEP lines.
Uses: Displays files with/without pagination on CON: device. A
display is aborted by a console ^C. If aborted, any submit
file in process terminates and control returns gracefully to
the console prompt. When page breaks are enabled, any
console character except ^C will display the next page of
text.
=============================================================================
Command: USER
Function: To change current user number.
Forms: USER <usrnum>
Options: SUPRES equate controls the display of the user number in the
prompt when the user number is zero.
MAXUSR equate controls the maximum allowable user number.
NUMBASE equate defines the character that specifies a
hexadecimal number. The distribution version is set to 'H'.
Uses: This command changes the current user number. The new user
number is in decimal, but a hexadecimal number is entered by
appending an 'H'. This command has been retained for
compatibility purposes only. It is far easier to change
disk/user by typing du:.
=============================================================================
Error Messages
==============
If any error is encountered as a command line is being parsed, a
message will be printed and, for serious errors, the remainder of the
line is ignored. Below is a complete list of all ZCPR error messages.
Any error message encountered that is not on this list came from some
program other than ZCPR.
"?"
An error was detected in the command. The an item on the command
line was not what was expected. The command line is echoed up to
the position where the error was detected, as close as can be
determined, and the "?" printed. Any commands remaining on the
command the line are ignored and any $$$.SUB file erased.
"Full"
If ZCPR was attempting to load a transient program, one of two
things has gone wrong: either the program is so large that it won't
fit into the TPA or a read error was returned from the BDOS. If
ZCPR was attempting to save a file, the BDOS write call returned
failure. Either the disk or the directory is full. Any commands
remaining on the command line are ignored and any $$$.SUB file
erased.
"No File"
No file could be found matching the filename specified in the
command. This message is also be printed if the BDOS read command
returns failure. If ZCPR was looking for a transient command, any
commands remaining on the command line are ignored and any $$$.SUB
file erased.
"Name Error"
The specified filename has a user number larger than the allowable
maximum or an ambiguous filename was entered where only an
unambiguous filename is permitted. Any commands remaining on the
command line are ignored and any $$$.SUB file erased.
"Delete?"
Not really an error, but there already exists a file with the same
name as the requested new name in the REN command. Any response
except 'Y' (either case) aborts the command, any commands remaining
on the command line are ignored, and any $$$.SUB file erased.
"All?"
Not really an error, but a check to verify that all files on the
drive/user area are to be erased. Any response except 'Y' (either
case) aborts the command and any commands remaining on the command
line are ignored.
Installation Instructions
=========================
1) The first task is to determine the location of your BDOS because you
MUST set the P2DOS equate to this value. If you do not know the
location of your BDOS, use ZCPRDEMO to find it. If you do not
already have ZCPRDEMO.COM, assemble ZCPR with the TEST equate true
to make it. A bootstrap loader will be included and you can run the
.com file. This program assembles without errors using Microsoft's
M80/L80:
A>m80 =zcpr
A>l80 zcpr,zcprdemo/n/e
Other assemblers can be used, but ZCPR.MAC will probably require
editing to convert it to a form compatible. The major decision in
converting is to determine how the .PHASE pseudo is to be handled.
Probably the best solution to the .PHASE is to generate a .hex
file and load it with an offset using DDT/SID/ZSID. Consult the
"r" command in the DDT/SID/ZSID manaul.
Run ZCPRDEMO and peek at low memory:
A>zcprdemo
A<peek 0 10
0000 C3 03 F2 00 00 C3 06 E4 00 00 00 00 00 00 00 00
A<^C
Notice the prompt character has changed from a '>' to a '<'. This
tells you the special debug version of ZCPR is running. See the
debug section at the end for details. Address 0 contains a jump 3
beyond the start of the BIOS and address 5 contains a jump 6 beyond
the start of the BDOS.
Be careful if you attempt to execute a transient program from
ZCPRDEMO. Some transient programs, like NSWP, return rather than
warm boot when done. These programs don't know that ZCPRDEMO is at
address 8000H rather than just under the BDOS. If they overwrite
ZCPRDEMO, then the return is to random code. Of course, this is not
a problem when ZCPR is installed just under the BDOS.
2) You MUST edit the code to place your BDOS/P2DOS/Z80DOS/ZRDOS start
address in the P2DOS equate. Set COMLD true (and TEST false if you
set it true in step 1 above) and make ZCPR.COM. A bootstrap loader
will be included.
Assuming you successfully assemble it, just type "zcpr" to run it.
However, every time there is a warm boot, it will be replaced by
the boot track CCP. If you like what you see, place a copy on the
boot track to make it available all the time.
3) Reassemble, this time with COMLD false to make ZCPRNBLD.COM (ZCPR
No Boot LoaDer).
4) Run SYSGEN to load a copy of the boot track into memory.
B>; Sample terminal session for integrating ZCPR
B>sysgen
SYSGEN VER 2.2
SOURCE DRIVE NAME (OR RETURN TO SKIP)a
SOURCE ON A, THEN TYPE RETURN <cr>
FUNCTION COMPLETE
DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <cr>
5) Run SAVE to save a track image to a file (eg: SAVE 32 BOOTFILE).
The number on the save command depends on the size of your boot
track loader; it can be as small as 31 and as large as 44. If you
have extra disk space or are not sure, play it safe and use 44.
B>save 44 cpm56.com <-- We now have a SYSGEN image of CP/M
6) Find the location of the stock CCP by peeking at the boot file. It
is normally located at address 980H in the file. Using ZCPR:
B>zcpr <-- Reload zcpr.com version
B>get 100 cpm56.com
and search for the start of the console processor:
B>peek 980
0980 C3 xx xx C3 xx xx 7F 00 43 4F 50 59 52 49 47 48
0990 54 20 ...
If you don't find the start of the CCP at 980H, don't be
discouraged. It is there, but at a higher address. Keep looking.
7) When you find the location of the CCP, patch it with the new ZCPR
image.
B>get 980 zcprnbld.com
8) Place the new file onto the boot track of a test disk, not your
original, using SYSGEN, and try it out.
B>sysgen
SYSGEN VER 2.2
SOURCE DRIVE NAME (OR RETURN TO SKIP) <cr> <-- Use memory image
DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b <-- Load onto drive B
DESTINATION ON B, THEN TYPE RETURN <cr>
FUNCTION COMPLETE
DESTINATION DRIVE NAME (OR RETURN TO REBOOT) <cr>
You should now have a ZCPR system boot disk. Notice you did all
your work on drive B so you wouldn't destroy the original.
This may seem like a great number of steps, but each is only a single
CP/M command line, total time is only 5 minutes or so after you get
ZCPR to run as a .com file.
Debugging ZCPR
==============
Special provisions have been make to ease the debugging of ZCPR.
Setting the TEST equate true causes the assembler to build a version of
ZCPR that executes in the TPA. This allows the use of a debugger like
DDT, ZSID, or Z8E to load and monitor execution. To identify the debug
version, the prompt character is changed from '>' to '<' when it runs.
CPRLOC for the test version is 8000H. A bootstrap loader is included
at the beginning to move the image to this address. Do not try to set
a breakpoint until after the loader has moved ZCPR. The easiest way to
accomplish this is to single-step through the loader and then set your
breakpoints. Change the execution address to something lower if 8000H
does not leave enough space for the debugger.
A small amount of code is also added at the end of the debug version to
compute the BIOS list status and cold boot entry points at run time.
This permits the demo version to execute properly without setting the
BDOS location equate.
Patching SUBMIT.COM
===================
SUBMIT.COM is patched to run with ZCPR by the following procedure.
This is recommended if the user does not have one of the newer public
domain versions of submit. This patch simply makes SUBMIT.COM always
place the $$$.SUB file on drive A. Illustrative terminal session
follows:
A>get 100 submit.com;peek 5bb 2
05BB 00 24 <-- Patch is at 5BB Hex
A>poke 5bb 1 <-- Change 0 (default drive) to 1 (drive A)
A>peek 5b0 20 <-- Let's check just to make sure
05B0 00 00 00 00 00 00 30 30 31 20 24 01 24 24 24 20
05C0 20 20 20 20 53 55 42 00 00 00 1A 1A 1A 1A 1A 1A
A>save 5 newsubmt.com <-- Save new SUBMIT.COM file
Pretty simple, huh?
ny error message encountered that is not on this list came from some
prog

8
Readme.unix

@ -30,11 +30,13 @@ By default, this will generate all of the standard configurations of
RomWBW for all platforms. If you just want to build the ROM for a
specific platform and configuration you can use
make ROM_PLATFORM=<platform> ROM_CONFIG=<config>
make ROM_PLATFORM=<platform> ROM_CONFIG=<config> [ROMSIZE=<size>]
where <platform> is one of the supported platforms such as SBC, RCZ80,
etc. and <config> is a configuration of that platform. For example,
to build the "126" configuration of the "SCZ180" platform:
etc. and <config> is a configuration of that platform. A ROM size may
optionally be specified and must be one of 128, 256, 512, or 1024. It
defaults to 512. For example, to build the "126" configuration of
the "SCZ180" platform:
make ROM_PLATFORM=SCZ180 ROM_CONFIG=126

21
Source/Apps/Tune/tune.asm

@ -42,6 +42,7 @@
; 2020-04-25 [DEN] Added support to use HBIOS Sound driver
; 2020-05-02 [PMS] Add support for SBC-V2 slow-io hack
; 2020-09-03 [E?B] Add support for Ed Brindley YM/AY Sound Card v6
; 2021-08-13 [WBW] Add support for LiNC Z50 Sound Card
;_______________________________________________________________________________
;
; ToDo:
@ -569,6 +570,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
;
.DB $07, $D1, $D0, $D0, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $07, $33, $32, $32, $FF, $FF ; RCZ80 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $08, $68, $60, $68, $C0, $FF ; RCZ180 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
@ -578,6 +582,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
;
.DB $08, $61, $60, $60, $C0, $FF ; RCZ180 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $08, $33, $32, $32, $C0, $FF ; RCZ180 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $09, $D8, $D0, $D8, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
@ -587,6 +594,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
;
.DB $09, $D1, $D0, $D0, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $09, $33, $32, $32, $FF, $FF ; EZZ80 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $0A, $68, $60, $68, $C0, $FF ; SCZ180 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
@ -596,6 +606,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
;
.DB $0A, $61, $60, $60, $C0, $FF ; SCZ180 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $0A, $33, $32, $32, $C0, $FF ; SCZ180 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $0B, $D8, $D0, $D8, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
@ -605,6 +618,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
;
.DB $0B, $D1, $D0, $D0, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $0B, $33, $32, $32, $FF, $FF ; RCZ280 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $FF ; END OF TABLE MARKER
;
@ -633,8 +649,8 @@ TMP .DB 0 ; work around use of undocumented Z80
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
MSGBAN .DB "Tune Player for RomWBW v3.2, 03-Sep-2020",0
MSGUSE .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3",13,10
MSGBAN .DB "Tune Player for RomWBW v3.3, 14-Aug-2021",0
MSGUSE .DB "Copyright (C) 2021, Wayne Warthen, GNU GPL v3",13,10
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [--hbios] [+tn|-tn]",0
@ -656,6 +672,7 @@ HWSTR_N8 .DB "N8 Onboard Sound",0
HWSTR_RCEB .DB "RC2014 Sound Module (EB)",0
HWSTR_RCEB6 .DB "RC2014 Sound Module (EBv6)",0
HWSTR_RCMF .DB "RC2014 Sound Module (MF)",0
HWSTR_LINC .DB "Z50 LiNC Sound Module",0
MSGUNSUP .db "MYM files not supported yet!\r\n", 0

4
Source/HBIOS/Build.sh

@ -67,6 +67,10 @@ done
CONFIGFILE=Config/${ROM_PLATFORM}_${ROM_CONFIG}.asm
if [ -z "${ROMSIZE}" ] ; then
ROMSIZE="512"
fi
while [ ! '(' "${ROMSIZE}" = 1024 -o "${ROMSIZE}" = 512 -o "${ROMSIZE}" = 256 -o "${ROMSIZE}" = 128 ')' ] ; do
echo -n "Romsize :"
read ROMSIZE

2
Source/HBIOS/Config/EZZ80_std.asm

@ -36,5 +36,3 @@ FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)

88
Source/HBIOS/Config/EZZ80_tz80.asm

@ -1,45 +1,43 @@
;
;==================================================================================================
; EASY Z80 STANDARD CONFIGURATION
;==================================================================================================
;
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
; YOUR FILE IN THE BUILD PROCESS.
;
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
; SETTINGS.
;
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "TINYZ80"
;
#include "cfg_ezz80.asm"
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
CPUOSC .SET 16000000 ; CPU OSC FREQ IN MHZ
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
EIPCENABLE .SET TRUE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;
CTCBASE .SET $10 ; CTC BASE I/O ADDRESS
LEDENABLE .SET TRUE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .SET $6E ; STATUS LED PORT ADDRESS
SIO0BASE .SET $18 ; SIO 0: REGISTERS BASE ADR
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
;==================================================================================================
; EASY Z80 STANDARD CONFIGURATION
;==================================================================================================
;
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
; YOUR FILE IN THE BUILD PROCESS.
;
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
; SETTINGS.
;
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#DEFINE PLATFORM_NAME "TINYZ80"
;
#include "cfg_ezz80.asm"
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
CPUOSC .SET 16000000 ; CPU OSC FREQ IN MHZ
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
EIPCENABLE .SET TRUE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;
CTCBASE .SET $10 ; CTC BASE I/O ADDRESS
LEDENABLE .SET TRUE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .SET $6E ; STATUS LED PORT ADDRESS
SIO0BASE .SET $18 ; SIO 0: REGISTERS BASE ADR
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS

2
Source/HBIOS/Config/N8_std.asm

@ -32,4 +32,6 @@ Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
SDMODE .SET SDMODE_CSIO ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)

2
Source/HBIOS/Config/RCZ180_ext.asm

@ -43,6 +43,8 @@ SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;

2
Source/HBIOS/Config/RCZ180_nat.asm

@ -43,6 +43,8 @@ SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;

2
Source/HBIOS/Config/RCZ80_std.asm

@ -38,6 +38,8 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_RCV9958 ; TMS: DRIVER MODE: TMSMODE_[RC/RCV9958]
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;

2
Source/HBIOS/Config/RCZ80_zrc.asm

@ -39,6 +39,8 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;

2
Source/HBIOS/Config/SCZ180_126.asm

@ -45,6 +45,8 @@ SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;

2
Source/HBIOS/Config/SCZ180_130.asm

@ -52,6 +52,8 @@ SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
;

2
Source/HBIOS/Config/SCZ180_131.asm

@ -50,6 +50,8 @@ ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;

3
Source/HBIOS/Config/SCZ180_140.asm

@ -46,6 +46,9 @@ ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
;
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_LINC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
;

34
Source/HBIOS/ay38910.asm

@ -42,6 +42,12 @@ AY_RDAT .EQU $A1
AY_RIN .EQU $A2
#ENDIF
;
#IF (AYMODE == AYMODE_LINC)
AY_RSEL .EQU $33
AY_RDAT .EQU $32
AY_RIN .EQU $32
#ENDIF
;
;======================================================================
;
; REGISTERS
@ -100,7 +106,33 @@ AY_RATIO .EQU (AY_CLK * 100) / (16 >> AY_SCALE)
;
AY38910_INIT:
CALL NEWLINE ; ANNOUNCE
PRTS("AY: IO=0x$")
PRTS("AY:$")
;
#IF (AYMODE == AYMODE_SCG)
PRTS(" MODE=SCG$")
#ENDIF
;
#IF (AYMODE == AYMODE_N8)
PRTS(" MODE=N8$")
#ENDIF
;
#IF (AYMODE == AYMODE_RCZ80)
PRTS(" MODE=RCZ80$")
#ENDIF
;
#IF (AYMODE == AYMODE_RCZ180)
PRTS(" MODE=RCZ180$")
#ENDIF
;
#IF (AYMODE == AYMODE_MSX)
PRTS(" MODE=MSX$")
#ENDIF
;
#IF (AYMODE == AYMODE_LINC)
PRTS(" MODE=LINC$")
#ENDIF
;
PRTS(" IO=0x$")
LD A,AY_RSEL
CALL PRTHEXBYTE
;

2
Source/HBIOS/cfg_dyno.asm

@ -187,7 +187,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_ezz80.asm

@ -222,7 +222,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_master.asm

@ -294,7 +294,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_mbc.asm

@ -226,7 +226,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_mk4.asm

@ -227,7 +227,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_n8.asm

@ -225,7 +225,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_N8 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_rcz180.asm

@ -235,7 +235,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_rcz280.asm

@ -251,7 +251,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_rcz80.asm

@ -240,7 +240,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_sbc.asm

@ -226,7 +226,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

2
Source/HBIOS/cfg_scz180.asm

@ -230,7 +230,7 @@ SN7CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
;
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU CPUOSC / 4 ; DEFAULT TO CPUOSC / 4
AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

8
Source/HBIOS/hbios.asm

@ -2066,6 +2066,8 @@ HB_Z280BUS1:
CALL PRTHEXWORDHL
#ENDIF
;
#IFDEF ROMBOOT
;
; ROM CHECKSUM VERIFICATION
; EACH OF THE FIRST 4 ROM BANKS HAS A CHECKSUM INJECTED SUCH THAT
; A COMPUTED CHECKSUM ACROSS THE ENTIRE BANK SHOLD ALWAYS BE ZERO
@ -2076,7 +2078,7 @@ HB_ROMCK:
;
; COPY CHECKSUM ROUTINE TO UPPER RAM
LD HL,HB_CKBNK
LD DE,$8000
LD DE,$F000
LD BC,HB_CKBNKSIZ
LDIR
;
@ -2085,7 +2087,7 @@ HB_ROMCK:
LD C,0 ; STARTING AT BANK 0
HB_ROMCK1:
PUSH BC ; SAVE LOOP CONTROL
CALL $8000 ; TEST THE BANK
CALL $F000 ; TEST THE BANK
CALL PC_SPACE ; FORMATTING
CALL PRTHEXBYTE ; PRINT RESULT
POP BC ; RESTORE LOOP CONTROL
@ -2129,6 +2131,8 @@ HB_CKBNKSIZ .EQU $-HB_CKBNK ; SIZE OF ROUTINE
;
HB_ROMCKZ:
;
#ENDIF
;
; LOW BATTERY DIAGNOSTIC MESSAGE
;
#IF (BATCOND)

1
Source/HBIOS/std.asm

@ -208,6 +208,7 @@ AYMODE_SCG .EQU 2 ; SCG ECB BOARD
AYMODE_RCZ80 .EQU 3 ; RC2014 SOUND MODULE BY ED BRINDLEY ON Z80
AYMODE_RCZ180 .EQU 4 ; RC2014 SOUND MODULE BY ED BRINDLEY ON Z180
AYMODE_MSX .EQU 5 ; RC2014 SOUND MODULE REV6 BY ED BRINDLEY ON Z80/Z180 AT MSX PORTS
AYMODE_LINC .EQU 6 ; LINC Z50 AY SOUND CARD
;
; TMS VIDEO MODE SELECTIONS
;

0
Source/Images/Common/CLRDIR.COM → Source/Images/Common/All/CLRDIR.COM

BIN
Source/Images/Common/COMPARE.COM → Source/Images/Common/All/COMPARE.COM

Binary file not shown.

0
Source/Images/Common/CR.COM → Source/Images/Common/All/CRUNCH.COM

BIN
Source/Images/Common/All/CRUNCH28.CFG

Binary file not shown.

0
Source/Images/Common/DDTZ.COM → Source/Images/Common/All/DDTZ.COM

0
Source/Images/Common/DDTZ.DOC → Source/Images/Common/All/DDTZ.DOC

0
Source/Images/Common/EX.COM → Source/Images/Common/All/EX.COM

0
Source/Images/Common/FDISK80.COM → Source/Images/Common/All/FDISK80.COM

0
Source/Images/Common/FIND.COM → Source/Images/Common/All/FIND.COM

0
Source/Images/Common/FLASH.COM → Source/Images/Common/All/FLASH.COM

0
Doc/Contrib/Flash4.txt → Source/Images/Common/All/FLASH.DOC

0
Source/Images/Common/MBASIC.COM → Source/Images/Common/All/MBASIC.COM

0
Source/Images/Common/NULU.COM → Source/Images/Common/All/NULU.COM

0
Source/Images/Common/PMARC.COM → Source/Images/Common/All/PMARC.COM

0
Source/Images/Common/PMEXT.COM → Source/Images/Common/All/PMEXT.COM

0
Source/Images/Common/RMXSUB1.COM → Source/Images/Common/All/RMXSUB1.COM

BIN
Source/Images/Common/All/SUPERSUB.COM

Binary file not shown.

141
Source/Images/Common/All/SUPERSUB.DOC

@ -0,0 +1,141 @@
SUPERSUB DOCUMENTATION (revised 09/13/81)
----------------------
09/05/81
by Ron Fowler
Westland, Mich
SUPERSUB is intended as a replacement program for SUBMIT.COM provided
with CP/M by Digital Research Corporation. This document assumes you
are familiar with that utility and its use.
------------------
Version 1.1 update:
Control-character translation has been added. This facility works
similarly to CP/M's SUBMIT, where a desired control character is gen-
erated in the text file by preceeding the character with a circumflex
character. For example, control-V is generated from "^V". Thanks to
Keith Petersen for pointing out this omission.
A bug in line number reporting when errors are encountered has been
repaired. Line numbers reported should now correspond to the actual
line number in the file.
------------------
SUPERSUB provides the following new capabilities:
1) Null input lines are properly interpreted; they cause
the creation of a zero-length line in $$$.SUB.
2) SUBMIT jobs may be nested.
3) For small SUBMIT jobs, the command lines may be specified
on the SUPERSUB command line, seperated by semicolons.
4) An interactive mode allows command lines to be entered
directly into SUPERSUB without need of a text editor.
5) A built-in help function is provided.
6) The output drive and number of allowable parameters may
by specified at assembly time.
NESTING
-------
SUBMIT jobs may be nested under SUPERSUB. For example, suppose you
have a submit file to compile a program:
BASCOM =$1
L80 $1,$1/N/E
PIP B:=$1.COM
ERA $1.REL
ERA $1.COM
named COMPILE.SUB. You may then submit a job to compile several
programs using COMPILE.SUB. For example, you can create a file
called COMPALL.SUB consisting of:
SUPERSUB COMPILE MYPROG
SUPERSUB COMPILE RBBS.ASC
SUPERSUB COMPILE PRIMES.BAS.
This is especially useful when using INTERACTIVE or SUMMARY modes.
In combination with Ward Christensen's FMAP program (CPMUG), some
very powerful command structures may be built.
SUMMARY MODE
------------
Summary mode allows the entire SUBMIT job to be specified in the
CP/M command line. This mode is enabled by using the slash ("/")
character as the first character of the command line. The indiv-
idual submit lines must be seperated with a semicolon. For example,
A>SUPERSUB / CRCK *.* F;CRCK B:*.* F;COMPARE CRCKFILE.CRC B: ^
|
----> (this space is optional)
will create a file of CRC's of all files on A:, then create a similar
file on B:, then compare the two. (CRCK, by Keith Petersen, and
COMPARE, by Ward Christensen, are available from the CP/M Users Group).
INTERACTIVE MODE
----------------
You may enter the interactive entry mode by typing "SUPERSUB /<CR>"
(ie, "SUPERSUB /" with no arguments). Supersub will prompt for input
with an asterisk, and you may then enter SUBMIT lines from the keyboard.
You may enter more than one logical line on a physical line using
semicolon seperation. An empty line terminates the input. Example:
A>SUPERSUB /
*CRCK *.* F
*CRCK B:*.* F
*COMPARE CRCKFILE.CRC B:
* <empty line here>
A>CRCK *.* F <submit file begins execution>
has the same effect as the above SUMMARY mode example.
HELP FUNCTION
-------------
Typing SUPERSUB with no arguments will print the built-in help file.
NOTES
-----
1) Nested SUBMIT runs are only usable up to a maximum of 128 nested
commands at any one time. This is a limitation of the CP/M Console
Command Processor.
2) If you change the drive specification for the output file, you
may want to do the same thing with XSUB (Digital Research's function
nine extender). Within XSUB, find the submit File Control Block
(search for "$$$ SUB" within XSUB.COM) and change the first FCB
byte (ie, the byte before the first "$") to:
0 - use default drive
1 - use drive A:
2 - use drive B:
etc.
3) In SUMMARY and INTERACTIVE modes, passed parameters have no meaning.
When these modes are used, the parameter flag, "$", will be passed
through literally to the output file.
4) Zero-length output lines may be created in SUMMARY and INTERACTIVE
modes by using two consecutive semicolons. This is, in effect, a
blank logical line.
5) Interactive mode may be aborted by typing control-C as the first
character of a line. Also, all normal CP/M editing characters are
available.


0
Source/Images/Common/TDLBASIC.COM → Source/Images/Common/All/TDLBASIC.COM

0
Source/Images/Common/UNARC.COM → Source/Images/Common/All/UNARC.COM

623
Source/Images/Common/All/UNARC.DOC

@ -0,0 +1,623 @@
File: UNARC.DOC
Subject: User Documentation for UNARC Program
Version: 1.6
Date: March 27, 1987
------------------------------------------------------------------------------
UNARC
CP/M Archive File Extraction Utility
Copyright (C) 1986, 1987 by Robert A. Freed
All Rights Reserved
This file provides user-level documentation and operating instructions for
UNARC version 1.6, released March 27, 1987. Refer to the notice at the end of
this file regarding rights of use and distribution of this program.
The release message file, UNARC.MSG, provides a list of all additional files
distributed with the current UNARC release and describes the program changes
from the previous version 1.4 and 1.5 releases.
ABSTRACT
--------
UNARC is a utility program for CP/M systems which allows the listing, typeout,
printing, checking, and extraction of subfiles contained in "archive" library
(*.ARC or *.ARK) files. These are commonly used for compressed file storage
on remote access bulletin board systems. UNARC provides the CP/M user the
ability to process such files after downloading them via modem from these
remote systems.
REQUIREMENTS
------------
UNARC requires CP/M version 2 or higher. The program is offered in two
versions. The standard version, UNARC.COM, requires a Z80 processor (or
compatible equivalent, e.g. HD64180 or NSC800). An alternate version,
UNARCA.COM, is provided for systems with 8080 or 8085 processors (or 16-bit
systems using the NEC V20 for CP/M emulation). Identical capabilities are
provided by the two program versions.
NOTE
Although UNARCA.COM can execute on ANY system capable of
supporting CP/M, it is larger and significantly slower than
UNARC.COM and should be avoided by users of Z80-based systems.
UNARC is written in Z80 assembly language and requires only 5K bytes of disk
storage (6K for UNARCA). As distributed, the program requires at least 30K
bytes of available memory space (TPA) for full support of all archive file
formats (31K TPA size for UNARCA). (Smaller systems may be able to use some
of the program's capabilities.)
ABOUT ARC/ARK FILES
-------------------
The files which UNARC processes utilize a format that was introduced by the
ARC shareware utility program, which executes on 16-bit computers running the
MS-DOS (or PC-DOS) operating system. This format has achieved widespread
popularity since the ARC program first appeared in March 1985, and it has
become the de facto standard for file storage on remote access systems
catering to 16-bit computer users. More recently this file format has
achieved increased popularity on RCP/M (Remote CP/M) systems.
NOTE
Most RCP/M system operators have adopted the convention of naming
CP/M archive files with the filetype ARK. This differentiates
these from MS-DOS archive files, which use the filetype ARC. This
is a naming convention only: There is no difference in format,
and UNARC will accept files of either type interchangeably.
An archive is a group of files collected together into a single file in such a
way that the individual files may be recovered intact. In this respect,
archives are similar in function to libraries (*.LBR files), which have been
commonplace on CP/M systems since 1982, when the original LU library utility
program was introduced by Gary P. Novosielski. (However, the two file formats
are not compatible.)
The distinguishing characteristic of an ARC archive is that its component
files are automatically compressed when they are added to the archive, so that
the resulting file occupies a minimum amount of disk space. Of course, file
compression techniques have also been commonplace in the CP/M world since
1981, when the public domain SQ and USQ "squeeze and unsqueeze" programs were
introduced by Richard Greenlaw.
The SQ/USQ programs and their numerous popular descendants utilize a well-
known general-purpose form of data compression (Huffman coding). This
technique, which is also utilized in ARC files, performs well for many text
files but often produces poor compression of binary files (e.g. object program
.COM files). The ARC program also provides an advanced data compression
method, which it terms "crunching." This method (which is based on the
Lempel-Ziv-Welch or "LZW" algorithm) performs better than squeezing in most
cases, often achieving 50% or better compression of ASCII text files, 15-40%
compression of binary object files, and as much as 95% compression of bit-
mapped graphics image files.
Five different methods are actually employed for storing files in an archive.
The method chosen for a particular file is the one which results in the best
compression for that file:
(1) No compression ("unpacked"). The file is stored in its original form.
(2) Run-length encoding ("packed"). Repeated sequences of 3-255 identical
bytes are compressed into a three-byte sequence.
(3) Huffman coding ("squeezed"). Each 8-bit byte (after run-length encoding)
is encoded by a variable number of bits, with bit length (approximately)
inversely proportional to the frequency of occurence of the corresponding
byte.
(4) LZW compression ("crunched"). Variable-length strings of bytes (in
theory, up to nearly 4000 bytes in length) are represented by a single
(maximum) 12-bit code (after run-length encoding).
(5) LZW compression ("squashed"). This is a variation of crunching which
uses (maximum) 13-bit codes (and no run-length encoding).
Note that since one of the five methods involves no compression at all, the
resulting archive entry will never be larger than the original file.
NOTE
The most recent release of the MS-DOS ARC program (version 5.20)
has eliminated squeezing as a compression technique. However,
UNARC continues to process squeezed files for compatibility with
archives created by earlier versions of ARC and by other MS-DOS
archiving programs (notably PKARC).
The squashed compression method was recently introduced by the
MS-DOS programs PKARC and PKXARC. UNARC can process files which
use this method, although it is not universally accepted by other
MS-DOS archive extraction programs (including ARC).
During its lifetime, the ARC program has undergone numerous revisions which
have employed different variations on some of the above methods, particularly
LZW compression. In order to retain compatibility with archives created by
earlier program revisions, ARC stores a "version" indicator with each file in
an archive. Based on this indicator, the latest release of the ARC program
can always extract files created by older releases (although it will only use
the latest data compression versions when adding new files to an archive).
NOTE
The current release of UNARC supports archive file versions
generated by all releases of the following MS-DOS programs through
(at least) the indicated program versions:
ARC 5.20 (24 Oct 86), by System Enhancement Associates, Inc.
ARCA 1.22 (13 Sep 86), by Wayne Chin and Vernon Buerg
ARCH 5.38 (26 Jun 86), by Les Satenstein
PKARC 2.0 (15 Dec 86), by Phil Katz (PKWARE, Inc.)
(UNARC does not recognize, but is unaffected by, the non-standard
archive and file commenting feature of PKARC.)
Although the above discussion has emphasized the origin of archive files for
the MS-DOS operating system, their use has recently spread to many other
systems. Programs compatible with MS-DOS ARC have appeared for UNIX, Atari
68000, VAX/VMS, and TOPS-20 systems. A CP/M utility for building archive
files will also be available in the near future.
For additional information about archive files and the MS-DOS ARC utility,
refer to the documentation file, ARC.DOC, which is available from most remote
access systems which utilize archive files. For additional information about
the LZW algorithm (and data compression methods in general), refer to the
article "A Technique for High-Performance Data Compression", by Terry A.
Welch, in IEEE Computer magazine, Vol. 17, No. 6, June 1984.
USING UNARC
-----------
The UNARC program provides an on-line help message, which is generated by
running the program with an empty command line:
A>UNARC
UNARC 1.6 27 Mar 87
CP/M Archive File Extractor
Usage: UNARC [d:]arcfile[.typ] [d:][afn] [N|P|C]
Examples:
B>UNARC A:SAVE.ARK *.* ; List all files in CP/M archive SAVE on drive A
B>UNARC A:SAVE.ARC *.* ; List all files in MS-DOS archive SAVE on drive A
A>UNARC SAVE ; Same as either of above
A>UNARC SAVE *.* N ; Same as above (no screen pauses)
A>UNARC SAVE *.DOC ; List just .DOC files
A>UNARC SAVE READ.ME ; Typeout the file READ.ME
A>UNARC SAVE READ.ME N ; Typeout the file READ.ME (no screen pauses)
A>UNARC SAVE A: ; Extract all files to drive A
A>UNARC SAVE B:*.DOC ; Extract .DOC files to drive B
A>UNARC SAVE C:READ.ME ; Extract file READ.ME to drive C
A>UNARC SAVE PRN.DAT P ; Print the file PRN.DAT (no formatting)
A>UNARC SAVE *.* C ; Check validity of all files in archive
As shown by this help display, the UNARC utility provides the following
capabilities:
(1) Listing the directory of an archive
(2) Extracting component files from an archive
(3) Typing the contents of a component file at the console
(4) Printing a component file directly on the CP/M list device
(5) Checking the validity of an archive and its component files
The particular operation to be performed is determined by the form of the file
parameter(s) in the command line, as described separately in the sections
which follow. The following characteristics apply to all operations:
The first command line parameter must specify the name of an archive file. A
drive name and filetype are optional. The filetype, if omitted, defaults to
"ARK" or, if no such file exists, the alternate (MS-DOS) default "ARC" is
assumed.
The standard CP/M terminal control characters, CTRL-S (to suspend console
output) and CTRL-C (to abort the program), may be used at any time. CTRL-K
may also be used as an alternate for CTRL-C. Printer output to the CP/M list
device may be obtained by typing CTRL-P at CCP command level before executing
UNARC.
In addition, by default UNARC will pause after every 23 lines of console
output. At this time, the message "[more]" will appear at the bottom of the
console screen. The listing may be resumed by typing any key (other than
CTRL-S, CTRL-C, or CTRL-K, which will function as described above). If the
space bar is used, one more line of console output will be displayed (over-
writing the "[more]" message) and the program will again pause. If any other
key is typed (e.g. RETURN), another 23 lines of output will be allowed to
scroll onto the screen before the next pause. (LINE FEED may be used to
prevent overprinting of the "[more]" line, e.g. for hard-copy terminals.)
If continuous display is desired, this automatic pause feature may be disabled
by specifying "N" at the end of the command line. The "N" must be the last
command line character, and it must be preceded by a space. Also, there must
be two preceding file parameters on the command line. E.g., note the
difference between the following commands:
A>UNARC SAVE N ; Typeout the file N. in archive SAVE
A>UNARC SAVE *.* N ; List all files in archive SAVE with no pauses
The N option may not be used in conjunction with the P (Print) or C (Check)
options.
LISTING AN ARCHIVE DIRECTORY
----------------------------
By default, UNARC produces a detailed console listing of the component files
in an archive. (In fact, there is no way to suppress this listing; it is
generated during all UNARC operations.) If only the archive file name appears
on the command line, UNARC will generate a complete directory of all component
files in the specified archive file. Otherwise, the second command line
parameter may be used to select a particular file to be listed (or group of
files, if it contains the ambiguous file specification characters "*" or "?").
If no disk drive name is provided for the second parameter, and this parameter
specifies a group of files, the directory listing is the only output generated
by the program.
A sample directory listing is illustrated here:
A>UNARC CODES
Archive File = CODES.ARK
Name Length Disk Method Ver Stored Saved Date Time CRC
============ ======= ==== ======== === ======= ===== ========= ====== ====
ABLE .DOC 24320 24k Crunched 8 11777 52% 30 Apr 86 10:50a 42C0
BRAVO .COM 17152 17k Squeezed 4 14750 14% 2 May 86 4:11p 8CBD
CHARLIE .TXT 234 1k Packed 3 99 58% 2 May 86 4:11p 8927
==== ======= ==== ======= === ====
Total 3 41706 42k 26626 36% 58A4
This listing is equivalent to the "verbose" listing of the MS-DOS ARC program
(with the addition of the "Disk" and "Ver" fields, which are unique to UNARC).
The listing requires a 78-column terminal width; there is currently no "short"
listing format.
"Name" is the file name which will be generated if the file is extracted by
UNARC on a CP/M system. (This is not necessarily the same as the name
recorded in the archive file. Although CP/M and MS-DOS file naming
conventions are identical, two conversions are made to guarantee file name
validity under CP/M: Lower-case letters are converted to upper-case, and
non-printing characters are converted to dollar signs, "$".) Archive entries
are usually maintained (and hence listed) in alphabetic name order.
"Length" is the uncompressed file length, i.e. the number of bytes the file
will occupy if extracted to disk, exclusive of any additional length imposed
by the CP/M file system. Note that MS-DOS permits files of arbitrary lengths
(unlike CP/M which restricts all files to a multiple of 128 bytes).
"Disk" is the actual amount of disk space required to extract the file to a
CP/M disk, expressed as a multiple of 1K (1024) bytes. Note that this number
is dependent on the disk data allocation block size. (CP/M permits various
block sizes, ranging from 1K to 16K bytes. Typical sizes are 1K for single-
density floppy disks, 2K for double-density floppies, and 4K for hard disks,
although these values are quite system-dependent.) In the absence of an
explicit output drive name, UNARC uses the block size of the default
(currently "logged") disk drive (i.e. the drive which appears in the CCP
prompt).
"Method" is the compression method used, specified as "Unpacked", "Packed",
"Squeezed", "Crunched", "Squashed", or "Unknown!". If the method "Unknown!"
appears, it most likely indicates (if not a faulty archive file) a newer
release of the MS-DOS ARC program that supports a new compression method (or a
new variation of an existing method). In this case, a corresponding new
release of UNARC will be required to extract the file.
"Ver" further identifies the version of compression used. Currently, UNARC
supports versions 1-9: unpacked files can have versions 1 or 2; packed files,
version 3; squeezed files, version 4; crunched files, versions 5-8; and
squashed files, version 9. The highest version number associated with each
compression method is the one generated by the most recent release of the
MS-DOS ARC program.
"Stored" is the compressed file length, i.e. the number of bytes occupied by
the file in the archive. (This does not include the overhead associated with
the directory information itself, which adds an additional 29 bytes to the
size of each component file.)
"Saved" is the percentage of the original file length which was saved by
compression; i.e., higher values indicate better compression. (The MS-DOS ARC
documentation refers to this as the "stowage factor.") The value shown on the
totals line applies to the archive as a whole, not including the directory
overhead.
"Date" and "Time" refer to the last file modification, as of the time it was
added to the archive. (Date and time stamping is, of course, one of the nice
features of MS-DOS which is lacking in standard CP/M 2.2.)
"CRC" is an internal 16-bit cyclic redundancy check value which is computed
when a file is added to an archive (expressed in hexadecimal). As a test of
file validity, UNARC re-computes this value when it extracts a file (see
below). Note that this value is calculated by a different method than that
used by either of the two popular public domain programs, CRCK and CHEK. (It
is however quite valid as a reliable error-detection mechanism.) This value
is shown in the listing for completeness only. The value shown on the totals
line is the 16-bit sum of all displayed CRC values. This is useful as a
single "checksum" value for comparing entire archives. (Since the CRC values
are computed before compression takes place, the total should be the same for
all archives created from the same set of input files, independent of any
particular variations in file order or compression methods.)
The "Total" line is displayed only if multiple files appear in the listing,
and it includes a count of the number of files listed.
EXTRACTING FILES FROM AN ARCHIVE
--------------------------------
If the second command line parameter contains a disk drive name, UNARC will
extract the selected file(s) from the archive to CP/M file(s) on the indicated
disk drive. If only a drive name appears, all component files of the archive
will be extracted. The following illustrates a sample archive directory
listing as generated during a file extraction operation:
A>UNARC CODES B:
Archive File = CODES.ARK
Output Drive = B:
Name Length Disk Method Ver Stored Saved Date Time CRC
============ ======= ==== ======== === ======= ===== ========= ====== ====
ABLE .DOC 24320 24k Crunched 8 11777 52% 30 Apr 86 10:50a 42C0
Replace existing output file (y/n)? Y
BRAVO .COM 17152 18k Squeezed 4 14740 14% 2 May 86 4:11p 8CBD
Warning: Extracted file has incorrect CRC
Warning: Extracted file has incorrect length
Warning: Bad archive file header, bytes skipped = 10
CHARLIE .TXT 234 2k Packed 3 99 58% 2 May 86 4:11p 8927
==== ======= ==== ======= === ====
Total 3 41706 44k 26616 36% 58A4
The above listing also illustrates several warning messages which may occur
when extracting files from an archive.
The message "Replace existing output file (y/n)?" appears if a file of the
same name already exists on the output drive. The user must answer "Y" (or
"y") to allow the extraction to proceed (in which case, the existing file is
unceremoniously deleted). Any other response will cause UNARC to preserve the
existing file, bypass the extraction operation for the current file, and
(except for a CTRL-C response) skip to the next file to be extracted (if any).
The first two warning messages illustrated above are provided as a check on
the validity of the extracted file. These indicate that either the cyclic
redundancy check (CRC) value computed by UNARC, or the resulting extracted
file length, does not match the corresponding value recorded in the archive
when the original file was added to it. The final warning message occurs if
UNARC fails to detect the proper format for the start of a new subfile, but
can recover by skipping a certain number of bytes in the archive file. (If
the recovery attempt fails, UNARC aborts with the message "Invalid archive
file format.") The appearance of any of these messages most likely indicates
that the file data has been corrupted in some way (e.g. during modem
transmission from a remote system).
Note that if the original (i.e. MS-DOS) file length was not an exact multiple
of 128 bytes (as required by CP/M), UNARC will pad the final record of the
extracted file with hex "1A" (ASCII CTRL-Z) bytes. This provides the correct
end-of-file termination for text files, according to CP/M conventions.
Also, the disk space shown in the archive directory listing will be correct
for the specified disk drive. (In the above examples, drive A: has a 1K data
allocation block size while drive B: has a 2K block size, which accounts for
the differences in the two listings.) In order to determine the exact disk
space requirements in advance of a file extraction operation, the user may
first "log into" the desired output drive (i.e. select it as the default
drive), and run UNARC to obtain a directory listing only. (This is a
consideration only on systems with mixed disk drive types.)
A file extraction operation may be aborted at any time by entering CTRL-C from
the console. In this case, any partial output file will remain on disk and
should be deleted manually following the program abort. (Any existing file of
the same name will have already been deleted, however.)
TYPING OUT A FILE IN AN ARCHIVE
-------------------------------
A console typeout of the contents of a single component file in an archive may
be requested by specifying a non-ambiguous file name (and no disk drive name)
in the second command line parameter. For example:
A>UNARC CODES ABLE.DOC
Archive File = CODES.ARK
Name Length Disk Method Ver Stored Saved Date Time CRC
============ ======= ==== ======== === ======= ===== ========= ====== ====
ABLE .DOC 24320 24k Crunched 8 11777 52% 30 Apr 86 10:50a 42C0
-------------------------------------------------------------------------------
This is file ABLE.DOC, contained within the archive CODES.ARK. Typeout will
proceed until the end of this file or may be aborted by CTRL-C.....
The specified file is assumed to contain valid ASCII text data. In
particular, all bytes are masked to seven bits, and all ASCII control
characters are ignored except for HT (horizontal tab, which is expanded to
blanks with assumed tab stops at every eighth column), LF, VT or FF (line
feed, vertical tab or form feed, which generate a new typeout line), and SUB
(CTRL-Z, which by CP/M convention indicates end-of-file and terminates the
typeout). Note that BS (backspace) and CR (carriage return) are ignored, so
that text will not be obscured within files which utilize these for over-
printing (i.e. when directed to a printer).
The following filetypes, which are usually associated with binary (non-text)
data, are specifically excluded from typeout operations: COM, EXE, OBJ, OV?,
REL, ?RL, INT, SYS, BAD, LBR, ARC, ARK, ?Q?, and ?Z?. If one of these types
is specified, only the directory information for the requested file is listed.
Note that CRC and file length checking are not performed during a typeout
operation, as they are during extraction to a disk file.
PRINTING A FILE IN AN ARCHIVE
-----------------------------
A single component file in an archive may be output directly to the printer
(CP/M list device) by specifying a trailing "P" on the command line. The "P"
must be the last command line character, and it must be separated from the
second file parameter by a space. (The file parameter must specify a non-
ambiguous file name and no disk drive name.) For example:
A>UNARC CODES CHARLIE.TXT P
The specified file is assumed to contain data suitable for printer output and
is passed directly to the printer without alteration or additional formatting.
This operation is particularly well-suited for output of binary graphics
images on dot-matrix printers, since these can be extemely large but tend to
compress quite well (e.g. to less than 5% of their original size). Note that
the binary data filetypes which are excluded from typeout operations are also
excluded from printing operations. Printing may be paused or aborted by use
of the console CTRL-S and CTRL-C characters.
CHECKING FILES IN AN ARCHIVE
----------------------------
UNARC may be directed to extract one or more component files from an archive,
without actually storing these as disk files, by specifying a trailing "C" on
the command line. This operation performs file CRC and length checking, and
it is useful for verifying correct modem data transmission of an archive. The
"C" must be the last command line character, and it must be separated from the
second file parameter by a space. (The file parameter must not specify a disk
drive name, which indicates extraction to disk.) To check an entire archive,
specify "*.*" for the second file parameter, for example:
A>UNARC CODES *.* C
PROGRAM OPTIONS
---------------
UNARC provides several options which may be used to tailor the program for
specific non-universal requirements. Many of these are intended for RCP/M
(Remote CP/M) system operators, to allow generation of a secure version of
UNARC which can be used by remote callers for purposes of archive directory
listing and/or file typeout only (but not file extraction). Others are
provided for specialized non-standard CP/M systems and need not concern the
majority of users running CP/M 2.2, CP/M 3.0 (CP/M Plus), or ZCPR3/ZRDOS
systems. Additional options provide user preference features (such as the
number of screen lines between console output pauses, or the list of filetypes
excluded from typeout operations).
All of these options are described in UNARCOVL.ASM, an assembly language
source file that can be edited and assembled to generate a HEX-format overlay
for easy patching of the UNARC.COM or UNARCA.COM program files. Complete
details are provided for technically-oriented users in UNARCOVL.ASM. However,
the default options in the distributed program files are suitable for the
majority of users with standard CP/M operating systems.
PROGRAM DISTRIBUTION
--------------------
The UNARC program, its documentation, and all related files are distributed in
archive file format (of course!). The distribution file is named UNARCxx.ARK,
where "xx" is derived from the current version number (e.g. UNARC16.ARK for
version 1.6). (This does not include the program source code, which is
distributed separately.) This archive has the special characteristic that it
is "self-unpacking." I.e., a separate copy of the UNARC.COM program file is
NOT required to extract the component files from this archive.
The procedure for extracting the distribution files is quite simple: First,
copy or rename UNARCxx.ARK to a program file, UNARCxx.COM, on the current disk
drive. (Note that the filename, UNARCxx, must NOT be changed.) Then, run
this program with a single optional command line parameter specifying the disk
drive to which all distribution files will be extracted (defaults to current
drive).
For example, assuming UNARC16.ARK is on drive B: and the files are to be
extracted to drive C:, the following CP/M commands may be used:
A>B: ; Set current drive for UNARC16.ARK
B>REN UNARC16.COM=UNARC16.ARK ; Rename it to UNARC16.COM
B>UNARC16 C: ; Run it to extract all files to drive C:
Note that this self-unpacking capability is provided only by the distributed
archive file, and it will not work if that file is altered or reconstructed.
AUTHOR'S NOTE
-------------
I undertook writing the UNARC program to satisfy my curiosity about software
developments in the MS-DOS/PC-DOS world. At the time I began work on UNARC,
the MS-DOS ARC program had been in existence for over a year and had achieved
widespread popularity and acceptance in the 16-bit community. Unfortunately,
the lack of a compatible equivalent for CP/M systems rendered a large amount
of public domain software inaccessible to 8-bit users such as myself. (Note
that 16-bit software can indeed be of interest to users of 8-bit systems, e.g.
Pascal and C language programs.)
Also, an increasing number of RCP/M systems now cater to both 8-bit and 16-bit
users. Since the release of UNARC 1.0 (May 3, 1986), I have been encouraged
to see that the program has found a welcome home on many such systems.
Special thanks are due to Irv Hoff and Norman Beeler for providing archive
file support in the KMD20 and LUX52 series of programs, respectively. With
the increasing popularity of .ARC files on many different computer systems, I
believe that continued such support of this compression format is both
desirable and inevitable for CP/M systems. At the time of this writing I am
about to release NOAH, a companion program to UNARC which will allow CP/M
users to generate ARC-compatible files.
Bob Freed
March 27, 1987
NOTICE
The UNARC program and its associated documentation is the copy-
righted property of its author -- it is NOT in the public domain.
HOWEVER... Free use, distribution, and modification of these
files is permitted (and encouraged), subject to the following
conditions:
(1) Such use or distribution must be for non-profit purposes only.
(2) The author's copyright notice may not be altered or removed.
(3) Modifications to this program or its documentation files may
not be distributed without notification of and approval by
the author.
(4) The source program code may not be used, in whole or in part,
in any other publicly-distributed or derivative work without
similar notification and approval.
No fee is requested or expected for the use and distribution of
this program subject to the above conditions. The author reserves
the right to modify these conditions for any future revisions of
this program. Questions, comments, suggestions, commercial
inquiries, and bug reports or fixes are welcomed by the author:
Robert A. Freed
62 Miller Road
Newton Centre, MA 02159
Telephone (617) 332-3533
------------------------------------------------------------------------------


0
Source/Images/Common/UNCR.COM → Source/Images/Common/All/UNCR.COM

0
Source/Images/Common/UNZIPZ4.COM → Source/Images/Common/All/UNZIP.COM

74
Source/Images/Common/All/UNZIP.DOC

@ -0,0 +1,74 @@
UNZIPZ vers 0.3
Z-System UNZIPPER
UNZIZ can extract all files from any zip file created by PKZIP on MSDOS.
As such it should prove useful on CP/M systems for extracting CP/M relevant
files from zip archives found on BBSs or the Web since UNZIPZ preserves date
stamps on CP/M systems with Date Stamping.
To use UNZIPZ use the following Syntax:
UNZIP [dir:]ufn[.ZIP][dir:][afn ][/o]
On ZCPR3x systems {dir} can be either in named directory or DU (Drive
Letter followed by User number) form otherwise, the DU form must be used.
If {afn} is not given, *.* is assumed. If no option is specified, UNZIPZ
checks the CRCs of the files matching {dir:afn}. The only option is E which
causes the extraction of files matching {dir:afn} unless the file already
exists. In that case, the user is informed that it exists and the file is not
extracted. To extract such files, they must be erased and then extraction
reattempted.
For each file processed, the following information is displayed: Name,
Uncompressed Length, Stored Length, Compression Method, PKZIP Version,
File Date and Time, 32 bit CRC and Status. Status consists of CRC OK, CRC
ERR or EXISTS. Example ouput:
UNZIPZ Version 0.4-1 - SC
ZIP archive = H4:SOURCE.ZIP
Output Drive = H4:
Name Length Stored Method Ver File Date & Time CRC STATUS
============ ======= ======= ======== === ========= ===== ======== =======
UDATZI .Z80 3201 1320 Deflated 20 19 Oct 20 07:22 CC7E8454 CRC OK
UNZIP .Z80 18464 5419 Deflated 20 19 Oct 20 21:16 45E711B1 CRC OK
UNZIP12 .Z80 17649 5042 Deflated 20 08 Jun 20 07:46 4C05E1AB EXISTS
The current version is a significant revision of ver 0.2. Main improvement
is the addition of the undeflate algorithm (thanks Martin). In addition the
CRCs are only checked for extracted files which speeds things up
considerably. Speedups to the undeflate algorithm by Russell Marks have
also been incorporated. The ouput display has been improved substantialy
and is similar to UNARCZ10.
Version 0.2 Notes by Simon Cran.
The files in this archive are my Z-modified version of UNZIP 1.2. They
consist of three files in order to make sure that the unitialised data ends
up at the end of all files linked. Also, because the unitialised data file
(UDATZI.Z80) needed to share some equates with the main program, all
equates have been put in a separate .LIB file.
The original program is fast and dirty. This Z-modified version gets rid of
some of the dirty without sacrificing too much else. Note however, it is
only in embryonic stages... It has not developed to the point of UNARCZ10
for example.
That said though, it does work, and well enough to find a niche out there.
Its main advantage is speed when you wish to extract all the files in the
archive. You can now specify particular files to extract, but it isn't much
quicker in that mode, as it still decodes each file in the archive and checks
its CRC. That will change in a future version.
The display is now better, but it is very much in development mode! The
idea is to have it approximately mimic UNARCZ10. It kind of does that now,
but leaves out a lot of information... I'm working on it!
Source code is included, but without comments. If you'd like to know more,
contact me.
Simeon!
Z-Node 62
Perth
Western Australia.


0
Source/Images/Common/XSUB1.COM → Source/Images/Common/All/XSUB1.COM

0
Source/Images/Common/ZAP.COM → Source/Images/Common/All/ZAP.COM

0
Source/Images/Common/ZDE.COM → Source/Images/Common/All/ZDE.COM

0
Source/Images/Common/ZDENST.COM → Source/Images/Common/All/ZDENST.COM

0
Source/Images/supp/cpm22/KERCPM22.COM → Source/Images/Common/CPM22/KERCPM22.COM

0
Source/Images/supp/cpm3/KERCPM3.COM → Source/Images/Common/CPM3/KERCPM3.COM

BIN
Source/Images/Common/DIRX.COM

Binary file not shown.

BIN
Source/Images/Common/SUPERSUB.COM

Binary file not shown.

BIN
Source/Images/Common/UNZIP.COM

Binary file not shown.

BIN
Source/Images/Common/Z/u14/LBREXT36.CFG

Binary file not shown.

0
Source/Images/d_zsdos/u0/ZXD.CFG → Source/Images/Common/Z/u14/ZXD.CFG

0
Source/Images/Common/LBREXT.COM → Source/Images/Common/Z/u15/LBREXT.COM

0
Source/Images/d_zpm3/u15/zxd.com → Source/Images/Common/Z/u15/ZXD.COM

0
Source/Images/supp/z3/u10/SCOPY.HLP → Source/Images/Common/Z3/u10/SCOPY.HLP

0
Source/Images/supp/z3/u10/SCOPY10F.HLP → Source/Images/Common/Z3/u10/SCOPY10F.HLP

0
Source/Images/supp/z3/u14/SCOPY10F.CFG → Source/Images/Common/Z3/u14/SCOPY10F.CFG

0
Source/Images/supp/z3/u15/SCOPY.COM → Source/Images/Common/Z3/u15/SCOPY.COM

0
Source/Images/supp/z3/u15/TCAP.Z3T → Source/Images/Common/Z3/u15/TCAP.Z3T

0
Source/Images/supp/z3/u15/TCSELECT.COM → Source/Images/Common/Z3/u15/TCSELECT.COM

0
Source/Images/supp/z3/u15/TCVIEW.COM → Source/Images/Common/Z3/u15/TCVIEW.COM

0
Source/Images/supp/z3/u15/Z3LOC.COM → Source/Images/Common/Z3/u15/Z3LOC.COM

0
Source/Images/supp/z3/u15/Z3TCAP.LBR → Source/Images/Common/Z3/u15/Z3TCAP.LBR

13
Source/Images/d_bp.txt

@ -46,9 +46,12 @@ cpnet12/*.* 4:
#
# Add Common Applications
#
Common/*.* 15:
supp/cpm22/*.* 0:
supp/z3/u10/*.* 10:
supp/z3/u14/*.* 14:
supp/z3/u15/*.* 15:
Common/All/*.* 15:
Common/CPM22/*.* 0:
#Common/Z/u10/*.* 10:
Common/Z/u14/*.* 14:
Common/Z/u15/*.* 15:
Common/Z3/u10/*.* 10:
Common/Z3/u14/*.* 14:
Common/Z3/u15/*.* 15:

4
Source/Images/d_cpm22.txt

@ -40,5 +40,5 @@ cpnet12/*.* 4:
#
# Add Common Applications
#
Common/*.* 0:
supp/cpm22/*.* 0:
Common/All/*.* 0:
Common/CPM22/*.* 0:

4
Source/Images/d_cpm3.txt

@ -56,5 +56,5 @@ cpnet3/*.* 4:
#
# Add Common Applications
#
Common/*.* 0:
supp/cpm3/*.* 0:
Common/All/*.* 0:
Common/CPM3/*.* 0:

23
Source/Images/d_nzcom.txt

@ -24,11 +24,11 @@
../../Binary/Apps/ppidetst.com 2:
../../Binary/Apps/ramtest.com 2:
../../Binary/Apps/tstdskng.com 2:
#
# Add Tune sample files
#
../../Binary/Apps/Tunes/*.pt? 3:
../../Binary/Apps/Tunes/*.mym 3:
##
## Add Tune sample files
##
#../../Binary/Apps/Tunes/*.pt? 3:
#../../Binary/Apps/Tunes/*.mym 3:
##
## Add CPNET client files
##
@ -40,8 +40,11 @@
#
# Add Common Applications
#
Common/*.* 0:
supp/cpm22/*.* 0:
supp/z3/u10/*.* 0:
supp/z3/u14/*.* 0:
supp/z3/u15/*.* 0:
Common/All/*.* 0:
Common/CPM22/*.* 0:
#Common/Z/u10/*.* 0:
Common/Z/u14/*.* 0:
Common/Z/u15/*.* 0:
Common/Z3/u10/*.* 0:
Common/Z3/u14/*.* 0:
Common/Z3/u15/*.* 0:

BIN
Source/Images/d_nzcom/u0/CRUNCH.COM

Binary file not shown.

BIN
Source/Images/d_nzcom/u0/UNCRUNCH.COM

Binary file not shown.

37
Source/Images/d_zpm3.txt

@ -36,18 +36,18 @@
../../Binary/Apps/tune.com 15:
../../Binary/Apps/xm.com 15:
#
../../Binary/Apps/i2clcd.com 2:
../../Binary/Apps/i2cscan.com 2:
../../Binary/Apps/rtcds7.com 2:
../../Binary/Apps/rtchb.com 2:
../../Binary/Apps/ppidetst.com 2:
../../Binary/Apps/ramtest.com 2:
../../Binary/Apps/tstdskng.com 2:
#
# Add Tune sample files
#
../../Binary/Apps/Tunes/*.pt? 3:
../../Binary/Apps/Tunes/*.mym 3:
#../../Binary/Apps/i2clcd.com 2:
#../../Binary/Apps/i2cscan.com 2:
#../../Binary/Apps/rtcds7.com 2:
#../../Binary/Apps/rtchb.com 2:
#../../Binary/Apps/ppidetst.com 2:
#../../Binary/Apps/ramtest.com 2:
#../../Binary/Apps/tstdskng.com 2:
##
## Add Tune sample files
##
#../../Binary/Apps/Tunes/*.pt? 3:
#../../Binary/Apps/Tunes/*.mym 3:
##
## Add CPNET client files
##
@ -55,8 +55,11 @@
#
# Add Common Applications
#
Common/*.* 15:
supp/cpm3/*.* 0:
supp/z3/u10/*.* 10:
supp/z3/u14/*.* 14:
supp/z3/u15/*.* 15:
Common/All/*.* 15:
Common/CPM3/*.* 0:
#Common/Z/u10/*.* 10:
Common/Z/u14/*.* 14:
Common/Z/u15/*.* 15:
Common/Z3/u10/*.* 10:
Common/Z3/u14/*.* 14:
Common/Z3/u15/*.* 15:

BIN
Source/Images/d_zpm3/u15/help.com

Binary file not shown.

7
Source/Images/d_zsdos.txt

@ -52,5 +52,8 @@ cpnet12/*.* 4:
#
# Add Common Applications
#
Common/*.* 0:
supp/cpm22/*.* 0:
Common/All/*.* 0:
Common/CPM22/*.* 0:
#Common/Z/u10/*.* 0:
Common/Z/u14/*.* 0:
Common/Z/u15/*.* 0:

BIN
Source/Images/d_zsdos/u0/BGPATCH.HEX

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/COPY.CFG

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/DATSWEEP.COM

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/DSCONFIG.COM

Binary file not shown.

242
Source/Images/d_zsdos/u0/ROMWBW.TXT

@ -0,0 +1,242 @@
===== ZSDOS Disk for RomWBW =====
This disk is one of several ready-to-run disks provided with
RomWBW. It contains a customized version of ZSDOS 1.1 for RomWBW.
The disk is bootable as is (the operating system image is already
embedded in the system tracks) and can be launched from the RomWBW
Loader prompt.
The remainder of this document describes the contents and usage of
this disk. It is highly recommended that you review the "RomWBW
Getting Started.pdf" document found in the Doc directory of the
RomWBW Distribution.
ZSDOS is a replacement for the BDOS portion of the CP/M 2.2 operating
system. Since it does not include it's own command processor, the
the ZCPR 1 D&J Command Processor has been included.
The primary documentation for ZSDOS and ZCPR 1 are contained in the Doc
directory of the RomWBW distribution. The specific files are "ZSDOS
Manual.pdf", "ZCPR Manual.pdf", and "ZCPR-DJ.doc". This document is a
supplement to the primary documentation.
The starting point for the disk content was the final public release of
ZSDOS which is generally available on the Internet. Overall, the
following steps were performed:
1. System installation and integration with RomWBW.
2. Update files to newer versions, as available.
3. Configure applications for RomWBW (clock drivers, terminal emulation,
etc.)
4. Add selected CP/M 2 applications (listed below).
5. Add selected RomWBW supplemental applications (listed below).
6. Add some useful general purpose applications (listed below).
Note that ZSDOS can be built as either ZSDOS or ZDDOS. It is the same
source file, but an equate determines which variation you want to
build. Basically, ZSDOS has more features. ZDDOS has less features, but
includes the date stamping code built-in. The ZSDOS Manual provides
more information. I have chosen to use ZSDOS to pick up the maximum
number of features. Date stamping is still available, but must be
loaded as an RSX.
The source allows you to compile the OS code as either v1.1 or v1.2 via
an equate. Version 1.2 was never distributed and contains only a few
minor fixes. Unfortunately, the use of v1.2 would make it incompatible
with many support modules and overlays due to their reliance on
hard-coded address assumptions. This is probably why it was never
distributed. I encountered this myself with the date stamping code –-
it won't work with v1.2 because it does a version check. For now, I have
chosen to use v1.1 to maximize compatibility (seems to be what everyone
is doing). Ultimately, I may go back and try to rebuild everything in
the distribution to bring it all up to v1.2. That is for the future
though.
== Construction Notes ==
As I worked through the files in the distribution, it became clear that
there were problems with the distribution. For example, the .CFG files
for some apps (like FILEDATE.COM) are not acceptable to ZCNFG.
Additionally, the STAMPS.DAT file contains code that simply does not
work. In all of these cases, I found updated or fixed versions of the
files. However, the point is that I concluded I would need to go
through the distribution file-by-file and validate everything,
replacing anything that was not working as it should. See the notes below
for what I did.
The following list details the changes I made as I went along. In all
cases, my goal was to keep the result as close to the original
distribution as possible.
- CLOCKS.DAT has been updated to include the RomWBW clock driver,
WBWCLK. I have also added the SIMHCLOK clock driver.
- STAMPS.DAT has been replaced with an updated version. The update
was called STAMPS11.DAT and was found on the Walnut Creek CP/M CDROM.
The original version has a bug that causes RSX (resident system
extension) mode to fail to load properly.
- The original LDTIMD.COM and LDTIMP.COM have been replaced with
LDDS.COM (DateStamper) and LDP2D.COM (P2DOS) respectively. They are
equivalent but configured to use the RomWBW clock driver. They were
built exactly the same as the originals: Relative Clock driver w/ RSX
mode loading.
- A driver for NZT format time stamping has been added. It is called
LDNZT.COM.
- Updated FILEDATE.COM and FILEDATE.CFG from original v1.7 to v2.1.
The FILEDATE.CFG originally supplied was invalid.
- Updated FILEATTR to v1.6A. Original FILEATTR.CFG was invalid.
FILEATTR.CFG was replaced with FA16.CFG. Added associated files
FA16.DOC, FA16A.FOR, FA16CFG.TXT.
- Updated COPY.COM to v1.73. Also updated COPY.CFG to the one
distributed with COPY.COM v1.73. The original COPY.CFG was invalid
and appeared to be for a much older version of COPY.
- Configured DATSWEEP.COM and DSCONFIG to use ANSI Standard terminal
definition using SETTERM.
== Usage Notes ==
- All installation steps needed to run ZSDOS have already been
performed. It is not necessary to perform any of the steps in
the "Installing ZSDOS" section of the ZSDOS Manual unless you
want to modify the installation.
- ZSDOS has a concept of fast relog of drives. This means that after
a warm start, it avoids the overhead of relogging all the disk
drives. There are times when this causes issues. After using tools
like CLRDIR or MAP, you may need to run "RELOG" to get the drive
properly recognized by ZSDOS.
- ZSVSTAMP from the original distribution is included, but requires a
ZCPR 3.X command processor. The RomWBW ZSDOS disk image uses ZCPR 1.0
(intentionally, to reduce space usage) and ZSVSTAMP will just abort
in this case. It will work fine if you implement NZCOM. ZSVSTAMP is
included solely to facilitate usage if/when you install NZCOM.
- FILEDATE only works with DateStamper style date stamping. If you
run it on a drive that is not initialized for DateStamper, it will
complain "FILEDATE, !!!TIME&.DAT missing". This is normal and just
means that you have not initialized that drive for DateStamper (using
PUTDS).
- ZXD will handle either DateStamper or P2DOS type date stamping.
However, it MUST be configured appropriately. As distributed, it will
look for DateStamper date stamps. Use ZCNFG to reconfigure it for
P2DOS date stamps if that is what you are using.
- Many of the tools can be configured (using either ZCNFG or
DSCONFIG). The configuration process modifies the actual application
file itself. This will fail if you try to modify one that is on the
ROM disk because it will not be able to update the image.
- DATSWEEP can be configured using DSCONFIG. However, DSCONFIG itself
needs to be configured first for proper terminal emulation by using
SETTERM. So, run SETTERM on DSCONFIG before using DSCONFIG to
configure DATSWEEP!
- After using PUTDS to initialize a directory for ZDS date stamping,
I am finding that it is necessary to run RELOG before the stamping
routines will actually start working.
- Generic CP/M PIP and ZSDOS path searching do not mix well if you
use PIP to copy to or from a directory in the ZSDOS search path. Best
to use COPY from the ZSDOS distribution.
- PUTBG.COM and BGPATCH.HEX are included, but note that they are for
use with BackGrounder II software which is not included. Refer to
the ZSDOS Manual for information on implementing BackGrounder II if
desired.
== CP/M 2.2 Files ==
The following files have been included from CP/M 2.2. These files
provide various functionality that is not really available from the
ZSDOS applications themselves. For example, the CP/M 2.2 application
called STAT is useful for modifying the IOBYTE. Most of these
applications are documented in the "CPM Manual.pdf" document in the Doc
directory of the RomWBW distribution.
ASM.COM - DRI 8080 assembler
LIB.COM - DRI relocatable object file librarian
LINK.COM - DRI relocatable object file linker
LOAD.COM - DRI loader for Intel hex files
MAC.COM - DRI 8080 macro assembler
RMAC.COM - DRI 8080 macro assembler generating relocatable object files
STAT.COM - DRI multi-purpose file/disk/IO info & config tool
SUBMIT.COM - DRI batch file submission tool
XSUB.COM - DRI batch file extensions
== RomWBW Supplemental Applications ==
The following files provide specific functionality enabled by
RomWBW enhancements. These applications are documented in the
"RomWBW Applications.pdf" document in the Doc directory of the
RomWBW Distribution.
ASSIGN.COM - Assign,remove,swap drive letters of RomWBW disk slices
FAT.COM - MS-DOS FAT filesystem tool (format, copy, delete, etc.)
FDU.COM - Test floppy hardware and format floppy disks
FORMAT.COM - Placeholder application with formatting instructions
INTTEST.COM - Test RomWBW interrupt processing on your hardware
MODE.COM - Change serial line characteristics (baud rate, etc.)
RTC.COM - Test real time clock hardware on your system
SURVEY.COM - Display system resources summary
SYSCOPY.COM - Copy system tracks to disks (make bootable)
SYSGEN.COM - Copy system tracks to disks (DRI version)
TALK.COM - Route console I/O to & from specified serial port
TIMER.COM - Test and display system timer ticks
TUNE.COM - Play .PT2, .PT3, and .MYM audio files on supported hardware
XM.COM - XModem file transfer application
== General Purposes Applications ==
The following files are commonly used CP/M applications that
are generally useful in any CP/M-like system. In general, there is
no documentation for these applications included with the RomWBW
distribution. Some provide command line help themselves. Some
are fairly obvious.
CLRDIR.COM - Initializes the directory area of a disk
COMPARE.COM - Compare content of two files (binary)
CRUNCH.COM - Compress file(s) using Crunch algorithm
CRUNCH28.CFG - ZCNFG configuration file for CRUNCH & UNCR
DDTZ.COM - Z80 debug tool (modified to use RST 6)
DDTZ.DOC - Documentation for DDTZ
EX.COM - Batch file processor (alternative to DRI SUBMIT)
FDISK80.COM - Hard disk partitioning tool (from John Coffman)
FIND.COM - Search all drives for a file (from Jay Cotton)
FLASH.COM - Program FLASH chips in-situ (from Sergey Kiselev)
FLASH.DOC - Documentation for FLASH
MBASIC.COM - Microsoft BASIC language interpreter
NULU.COM - Library (.LBR) management tool
PMARC.COM - Create or add file(s) to .PMA archive
PMEXT.COM - Extract file(s) from .PMA archive
RMXSUB1.COM - Remove XSUB1 RSX from memory (from Lars Nelson)
SUPERSUB.COM - Enhanced replacement for DRI SUBMIT
SUPERSUB.DOC - Documentation for SUPERSUB
TDLBASIC.COM - TDL Zapple 12K BASIC language interpreter
UNARC.COM - Extract file(s) from .ARC or .ARK archive
UNARC.DOC - Documentation for UNARC
UNCR.COM - Decompress Crunched file(s)
UNZIP.COM - UNZIPZ extracts from all MS-DOS ZIP files (from Lars Nelson)
UNZIP.DOC - Documentation for UNZIPZ
XSUB1.COM - Replacement for DRI SUB (from Lars Nelson)
ZAP.COM - Interactive disk & file utility
ZDE.COM - Compact WordStar-like editor
ZDENST.COM - ZCNFG configuration tool for ZDE.COM
KERCPM22.COM - Kermit file transfer application
LBREXT.COM - Extract file from .LBR libraries
LBREXT36.CFG - ZCNFG configuration file for LBREXT
ZXD.COM - Enhanced directory lister w/ date/time stamping support
ZXD.CFG - ZCNFG configuration file for ZXD
== Testing Applications ==
User area 2 contains a variety of hardware testing applications.
These are generally user contributed and have no documentation.
Additionally, they are frequently not compatible with all RomWBW
hardware. They are included here as a convenience. If applicable,
your hardware documentation should refer to them and provide usage
instructions.
== Sample Tune Files ==
User area 3 contains sample audio files that can be played using
the TUNE application.
== CP/NET 1.2 ==
User area 4 contains a full implementation of the CP/NET 1.2
client provided by Doug Miller. Please read the README.TXT file
in this user area for more information.
-- WBW 6:56 PM 8/9/2021

BIN
Source/Images/d_zsdos/u0/ZXD.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/COPY.CFG

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/FA16.CFG

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/FILEDATE.CFG

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/INITDIR.CFG

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/TD.CFG

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/ZCNFG.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/ZCNFG24.CFG

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/ZXD.CFG

Binary file not shown.

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save