From 8b9be05beac091a9402fd32a2f00ba07d9786bf6 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 14 Aug 2021 13:08:59 -0700 Subject: [PATCH 1/3] Continuing Disk Image Cleanup - Reorganized most of the "common" files into special directories. - Fixed bug affecting application boot related to ROM checksum test. - Added support for LiNC sound card at default port address. --- Doc/ChangeLog.txt | 1 + Doc/ZCPR-DJ.doc | 765 ++++++++++++++++++ Readme.unix | 8 +- Source/Apps/Tune/tune.asm | 21 +- Source/HBIOS/Build.sh | 4 + Source/HBIOS/Config/EZZ80_std.asm | 2 - Source/HBIOS/Config/EZZ80_tz80.asm | 88 +- Source/HBIOS/Config/N8_std.asm | 2 + Source/HBIOS/Config/RCZ180_ext.asm | 2 + Source/HBIOS/Config/RCZ180_nat.asm | 2 + Source/HBIOS/Config/RCZ80_std.asm | 2 + Source/HBIOS/Config/RCZ80_zrc.asm | 2 + Source/HBIOS/Config/SCZ180_126.asm | 2 + Source/HBIOS/Config/SCZ180_130.asm | 2 + Source/HBIOS/Config/SCZ180_131.asm | 2 + Source/HBIOS/Config/SCZ180_140.asm | 3 + Source/HBIOS/ay38910.asm | 34 +- Source/HBIOS/cfg_dyno.asm | 2 +- Source/HBIOS/cfg_ezz80.asm | 2 +- Source/HBIOS/cfg_master.asm | 2 +- Source/HBIOS/cfg_mbc.asm | 2 +- Source/HBIOS/cfg_mk4.asm | 2 +- Source/HBIOS/cfg_n8.asm | 2 +- Source/HBIOS/cfg_rcz180.asm | 2 +- Source/HBIOS/cfg_rcz280.asm | 2 +- Source/HBIOS/cfg_rcz80.asm | 2 +- Source/HBIOS/cfg_sbc.asm | 2 +- Source/HBIOS/cfg_scz180.asm | 2 +- Source/HBIOS/hbios.asm | 6 +- Source/HBIOS/std.asm | 1 + Source/Images/Common/{ => All}/CLRDIR.COM | Bin Source/Images/Common/{ => All}/COMPARE.COM | Bin 2560 -> 2560 bytes .../Images/Common/{CR.COM => All/CRUNCH.COM} | Bin Source/Images/Common/All/CRUNCH28.CFG | Bin 0 -> 5248 bytes Source/Images/Common/{ => All}/DDTZ.COM | Bin Source/Images/Common/{ => All}/DDTZ.DOC | 0 Source/Images/Common/{ => All}/EX.COM | Bin Source/Images/Common/{ => All}/FDISK80.COM | Bin Source/Images/Common/{ => All}/FIND.COM | Bin Source/Images/Common/{ => All}/FLASH.COM | Bin .../Images/Common/All/FLASH.DOC | 0 Source/Images/Common/{ => All}/MBASIC.COM | Bin Source/Images/Common/{ => All}/NULU.COM | Bin Source/Images/Common/{ => All}/PMARC.COM | Bin Source/Images/Common/{ => All}/PMEXT.COM | Bin Source/Images/Common/{ => All}/RMXSUB1.COM | Bin Source/Images/Common/All/SUPERSUB.COM | Bin 0 -> 2176 bytes Source/Images/Common/All/SUPERSUB.DOC | 141 ++++ Source/Images/Common/{ => All}/TDLBASIC.COM | Bin Source/Images/Common/{ => All}/UNARC.COM | Bin Source/Images/Common/All/UNARC.DOC | 623 ++++++++++++++ Source/Images/Common/{ => All}/UNCR.COM | Bin .../Common/{UNZIPZ4.COM => All/UNZIP.COM} | Bin Source/Images/Common/All/UNZIP.DOC | 74 ++ Source/Images/Common/{ => All}/XSUB1.COM | Bin Source/Images/Common/{ => All}/ZAP.COM | Bin Source/Images/Common/{ => All}/ZDE.COM | Bin Source/Images/Common/{ => All}/ZDENST.COM | Bin .../{supp/cpm22 => Common/CPM22}/KERCPM22.COM | Bin .../{supp/cpm3 => Common/CPM3}/KERCPM3.COM | Bin Source/Images/Common/DIRX.COM | Bin 3072 -> 0 bytes Source/Images/Common/SUPERSUB.COM | Bin 2176 -> 0 bytes Source/Images/Common/UNZIP.COM | Bin 3328 -> 0 bytes Source/Images/Common/Z/u14/LBREXT36.CFG | Bin 0 -> 1280 bytes .../{d_zsdos/u0 => Common/Z/u14}/ZXD.CFG | Bin Source/Images/Common/{ => Z/u15}/LBREXT.COM | Bin .../u15/zxd.com => Common/Z/u15/ZXD.COM} | Bin .../{supp/z3 => Common/Z3}/u10/SCOPY.HLP | 0 .../{supp/z3 => Common/Z3}/u10/SCOPY10F.HLP | 0 .../{supp/z3 => Common/Z3}/u14/SCOPY10F.CFG | Bin .../{supp/z3 => Common/Z3}/u15/SCOPY.COM | Bin .../{supp/z3 => Common/Z3}/u15/TCAP.Z3T | Bin .../{supp/z3 => Common/Z3}/u15/TCSELECT.COM | Bin .../{supp/z3 => Common/Z3}/u15/TCVIEW.COM | Bin .../{supp/z3 => Common/Z3}/u15/Z3LOC.COM | Bin .../{supp/z3 => Common/Z3}/u15/Z3TCAP.LBR | Bin Source/Images/d_bp.txt | 13 +- Source/Images/d_cpm22.txt | 4 +- Source/Images/d_cpm3.txt | 4 +- Source/Images/d_nzcom.txt | 23 +- Source/Images/d_nzcom/u0/CRUNCH.COM | Bin 5632 -> 0 bytes Source/Images/d_nzcom/u0/UNCRUNCH.COM | Bin 8064 -> 0 bytes Source/Images/d_zpm3.txt | 37 +- Source/Images/d_zpm3/u15/help.com | Bin 6960 -> 7157 bytes Source/Images/d_zsdos.txt | 7 +- Source/Images/d_zsdos/u0/COPY.CFG | Bin 3456 -> 3456 bytes Source/Images/d_zsdos/u0/DATSWEEP.COM | Bin 34816 -> 34816 bytes Source/Images/d_zsdos/u0/DSCONFIG.COM | Bin 16384 -> 16384 bytes Source/Images/d_zsdos/u0/ROMWBW.TXT | 242 ++++++ Source/Images/d_zsdos/u0/ZXD.COM | Bin 6784 -> 0 bytes Source/RomDsk/ROM_512KB/COPY.CFG | Bin 3456 -> 0 bytes Source/RomDsk/ROM_512KB/FA16.CFG | Bin 3072 -> 0 bytes Source/RomDsk/ROM_512KB/FILEDATE.CFG | Bin 4992 -> 0 bytes Source/RomDsk/ROM_512KB/INITDIR.CFG | Bin 384 -> 0 bytes Source/RomDsk/ROM_512KB/TD.CFG | Bin 384 -> 0 bytes Source/RomDsk/ROM_512KB/ZCNFG.COM | Bin 8064 -> 0 bytes Source/RomDsk/ROM_512KB/ZCNFG24.CFG | Bin 4608 -> 0 bytes Source/RomDsk/ROM_512KB/ZXD.CFG | Bin 2048 -> 0 bytes Source/ver.inc | 2 +- Source/ver.lib | 2 +- 100 files changed, 2037 insertions(+), 106 deletions(-) create mode 100644 Doc/ZCPR-DJ.doc rename Source/Images/Common/{ => All}/CLRDIR.COM (100%) rename Source/Images/Common/{ => All}/COMPARE.COM (69%) rename Source/Images/Common/{CR.COM => All/CRUNCH.COM} (100%) create mode 100644 Source/Images/Common/All/CRUNCH28.CFG rename Source/Images/Common/{ => All}/DDTZ.COM (100%) rename Source/Images/Common/{ => All}/DDTZ.DOC (100%) rename Source/Images/Common/{ => All}/EX.COM (100%) rename Source/Images/Common/{ => All}/FDISK80.COM (100%) rename Source/Images/Common/{ => All}/FIND.COM (100%) rename Source/Images/Common/{ => All}/FLASH.COM (100%) rename Doc/Contrib/Flash4.txt => Source/Images/Common/All/FLASH.DOC (100%) rename Source/Images/Common/{ => All}/MBASIC.COM (100%) rename Source/Images/Common/{ => All}/NULU.COM (100%) rename Source/Images/Common/{ => All}/PMARC.COM (100%) rename Source/Images/Common/{ => All}/PMEXT.COM (100%) rename Source/Images/Common/{ => All}/RMXSUB1.COM (100%) create mode 100644 Source/Images/Common/All/SUPERSUB.COM create mode 100644 Source/Images/Common/All/SUPERSUB.DOC rename Source/Images/Common/{ => All}/TDLBASIC.COM (100%) rename Source/Images/Common/{ => All}/UNARC.COM (100%) create mode 100644 Source/Images/Common/All/UNARC.DOC rename Source/Images/Common/{ => All}/UNCR.COM (100%) rename Source/Images/Common/{UNZIPZ4.COM => All/UNZIP.COM} (100%) create mode 100644 Source/Images/Common/All/UNZIP.DOC rename Source/Images/Common/{ => All}/XSUB1.COM (100%) rename Source/Images/Common/{ => All}/ZAP.COM (100%) rename Source/Images/Common/{ => All}/ZDE.COM (100%) rename Source/Images/Common/{ => All}/ZDENST.COM (100%) rename Source/Images/{supp/cpm22 => Common/CPM22}/KERCPM22.COM (100%) rename Source/Images/{supp/cpm3 => Common/CPM3}/KERCPM3.COM (100%) delete mode 100644 Source/Images/Common/DIRX.COM delete mode 100644 Source/Images/Common/SUPERSUB.COM delete mode 100644 Source/Images/Common/UNZIP.COM create mode 100644 Source/Images/Common/Z/u14/LBREXT36.CFG rename Source/Images/{d_zsdos/u0 => Common/Z/u14}/ZXD.CFG (100%) rename Source/Images/Common/{ => Z/u15}/LBREXT.COM (100%) rename Source/Images/{d_zpm3/u15/zxd.com => Common/Z/u15/ZXD.COM} (100%) rename Source/Images/{supp/z3 => Common/Z3}/u10/SCOPY.HLP (100%) rename Source/Images/{supp/z3 => Common/Z3}/u10/SCOPY10F.HLP (100%) rename Source/Images/{supp/z3 => Common/Z3}/u14/SCOPY10F.CFG (100%) rename Source/Images/{supp/z3 => Common/Z3}/u15/SCOPY.COM (100%) rename Source/Images/{supp/z3 => Common/Z3}/u15/TCAP.Z3T (100%) rename Source/Images/{supp/z3 => Common/Z3}/u15/TCSELECT.COM (100%) rename Source/Images/{supp/z3 => Common/Z3}/u15/TCVIEW.COM (100%) rename Source/Images/{supp/z3 => Common/Z3}/u15/Z3LOC.COM (100%) rename Source/Images/{supp/z3 => Common/Z3}/u15/Z3TCAP.LBR (100%) delete mode 100644 Source/Images/d_nzcom/u0/CRUNCH.COM delete mode 100644 Source/Images/d_nzcom/u0/UNCRUNCH.COM create mode 100644 Source/Images/d_zsdos/u0/ROMWBW.TXT delete mode 100644 Source/Images/d_zsdos/u0/ZXD.COM delete mode 100644 Source/RomDsk/ROM_512KB/COPY.CFG delete mode 100644 Source/RomDsk/ROM_512KB/FA16.CFG delete mode 100644 Source/RomDsk/ROM_512KB/FILEDATE.CFG delete mode 100644 Source/RomDsk/ROM_512KB/INITDIR.CFG delete mode 100644 Source/RomDsk/ROM_512KB/TD.CFG delete mode 100644 Source/RomDsk/ROM_512KB/ZCNFG.COM delete mode 100644 Source/RomDsk/ROM_512KB/ZCNFG24.CFG delete mode 100644 Source/RomDsk/ROM_512KB/ZXD.CFG diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 0acd8b0e..8cfb3af6 100644 --- a/Doc/ChangeLog.txt +++ b/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 ----------- diff --git a/Doc/ZCPR-DJ.doc b/Doc/ZCPR-DJ.doc new file mode 100644 index 00000000..decc5830 --- /dev/null +++ b/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 + + + +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 + +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 Display the DIR files + DIR S Display the SYS files + DIR B Display both DIR and SYS files + DIR 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 + +Options: None. + +Uses: Deletes files. Names of erased files are displayed. + +============================================================================= + +Command: ERAQ + +Function: To erase files with individual query. + +Forms: ERAQ + ? y File erased + ? 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 + +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 + +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 + +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 Print file + LIST 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 [] + +Options: None. + +Uses: Displays hexadecimal values anywhere in the entire address + space. The maximum value for is 0FFH, but the + default is 256. + +============================================================================= + +Command: POKE + +Function: To poke a string of hex values into a set of consecutive + addresses. + +Forms: POKE [...] + +Options: None. + +Uses: Modifies values anywhere in the entire address space. Each + represents one byte and is separated from the next + by a space. The number of are limited only by the + size of the command line buffer. The address is incremented + for each . Excellent for hand patching code. + +============================================================================= + +Command: REN + +Function: To change the name of an existing file. + +Forms: REN = + REN = Existing + Delete? y File deleted + +Options: None. + +Uses: Changes the names of files. Any du: on is ignored; + the optional du: is on . If there already exists a + , 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 + ? + +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 + SAVE 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 Display file + TYPE 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 + +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' 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 + FUNCTION COMPLETE + DESTINATION DRIVE NAME (OR RETURN TO REBOOT) + + +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) <-- Use memory image + DESTINATION DRIVE NAME (OR RETURN TO REBOOT)b <-- Load onto drive B + DESTINATION ON B, THEN TYPE RETURN + FUNCTION COMPLETE + DESTINATION DRIVE NAME (OR RETURN TO REBOOT) + + 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 \ No newline at end of file diff --git a/Readme.unix b/Readme.unix index 321b2e8d..62d6aca2 100644 --- a/Readme.unix +++ b/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= ROM_CONFIG= + make ROM_PLATFORM= ROM_CONFIG= [ROMSIZE=] where is one of the supported platforms such as SBC, RCZ80, -etc. and is a configuration of that platform. For example, -to build the "126" configuration of the "SCZ180" platform: +etc. and 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 diff --git a/Source/Apps/Tune/tune.asm b/Source/Apps/Tune/tune.asm index 9934fe7e..a34ea2e1 100644 --- a/Source/Apps/Tune/tune.asm +++ b/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 .[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 diff --git a/Source/HBIOS/Build.sh b/Source/HBIOS/Build.sh index 3ced548c..cc4d5304 100755 --- a/Source/HBIOS/Build.sh +++ b/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 diff --git a/Source/HBIOS/Config/EZZ80_std.asm b/Source/HBIOS/Config/EZZ80_std.asm index b144bed2..bb7afeda 100644 --- a/Source/HBIOS/Config/EZZ80_std.asm +++ b/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) diff --git a/Source/HBIOS/Config/EZZ80_tz80.asm b/Source/HBIOS/Config/EZZ80_tz80.asm index 3d45393c..0b66ee09 100644 --- a/Source/HBIOS/Config/EZZ80_tz80.asm +++ b/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_.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 _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_.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 _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 diff --git a/Source/HBIOS/Config/N8_std.asm b/Source/HBIOS/Config/N8_std.asm index 25637a4e..919167ea 100644 --- a/Source/HBIOS/Config/N8_std.asm +++ b/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) diff --git a/Source/HBIOS/Config/RCZ180_ext.asm b/Source/HBIOS/Config/RCZ180_ext.asm index cf4af5c2..1fbdbba2 100644 --- a/Source/HBIOS/Config/RCZ180_ext.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/RCZ180_nat.asm b/Source/HBIOS/Config/RCZ180_nat.asm index d900f25b..eb367405 100644 --- a/Source/HBIOS/Config/RCZ180_nat.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/RCZ80_std.asm b/Source/HBIOS/Config/RCZ80_std.asm index 669bdd3e..bca27ade 100644 --- a/Source/HBIOS/Config/RCZ80_std.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/RCZ80_zrc.asm b/Source/HBIOS/Config/RCZ80_zrc.asm index 90b27aa2..e03cebba 100644 --- a/Source/HBIOS/Config/RCZ80_zrc.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/SCZ180_126.asm b/Source/HBIOS/Config/SCZ180_126.asm index 5d49834f..5ed97080 100644 --- a/Source/HBIOS/Config/SCZ180_126.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/SCZ180_130.asm b/Source/HBIOS/Config/SCZ180_130.asm index ec324c62..dc33498f 100644 --- a/Source/HBIOS/Config/SCZ180_130.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/SCZ180_131.asm b/Source/HBIOS/Config/SCZ180_131.asm index 77aa8baa..1a107976 100644 --- a/Source/HBIOS/Config/SCZ180_131.asm +++ b/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] ; diff --git a/Source/HBIOS/Config/SCZ180_140.asm b/Source/HBIOS/Config/SCZ180_140.asm index 27e38cf7..7f50ded9 100644 --- a/Source/HBIOS/Config/SCZ180_140.asm +++ b/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] ; diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index 0eac02b2..596dc46c 100644 --- a/Source/HBIOS/ay38910.asm +++ b/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 ; diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index d848cf7b..76854aa0 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_ezz80.asm b/Source/HBIOS/cfg_ezz80.asm index 96d55c21..d5c05616 100644 --- a/Source/HBIOS/cfg_ezz80.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index 18497330..9aa9f50d 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index d74e37d7..c5d10367 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index c36bfd21..2561adfb 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 032f7ccc..596e65a1 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 5c2ce5b3..8ba39dbb 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 77d054fb..0f212d6b 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 7374f0c8..0498e4f2 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 3f0ab5c0..5e21ac26 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/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) ; diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 50ce8893..72c20acc 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/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) ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 007d1196..8ec7b166 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -2076,7 +2076,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 +2085,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 +2129,8 @@ HB_CKBNKSIZ .EQU $-HB_CKBNK ; SIZE OF ROUTINE ; HB_ROMCKZ: ; +#ENDIF +; ; LOW BATTERY DIAGNOSTIC MESSAGE ; #IF (BATCOND) diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 21f66057..5c2ab4f7 100644 --- a/Source/HBIOS/std.asm +++ b/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 ; diff --git a/Source/Images/Common/CLRDIR.COM b/Source/Images/Common/All/CLRDIR.COM similarity index 100% rename from Source/Images/Common/CLRDIR.COM rename to Source/Images/Common/All/CLRDIR.COM diff --git a/Source/Images/Common/COMPARE.COM b/Source/Images/Common/All/COMPARE.COM similarity index 69% rename from Source/Images/Common/COMPARE.COM rename to Source/Images/Common/All/COMPARE.COM index 29fa41e620a8411a9327359272f7a2b403aefa7b..24f46e33b8b9d4de030d199b03491ffae1d7ae1e 100644 GIT binary patch delta 386 zcmZn=X%LxU&Zs}pB3+$>?3Lr9nzJ?_>PJ%*4Pjc?)YBqyA)Twg*5` dhW#9ne9f*>PtZQvDi{F!6_CMXKF&{!3IOBS6cqpf delta 171 zcmZn=X%LxU&ZsicB3+&L8OM<(!OCX_8xH?qI6I9ONb#IC;y=5d_wa9?vxfX<8Mqk) z_zq7zc2S*==WGY#;bV*-EezPSFi0~9oHg9MkMRpL6Q|MSEv#*fOD0>hJpht2?B{^w uYjzdhj8ujEf|AVqyu=&@u(;TgU~^Xk170o_KL!OTaEc6>%*gqlQ2_umRzHCN diff --git a/Source/Images/Common/CR.COM b/Source/Images/Common/All/CRUNCH.COM similarity index 100% rename from Source/Images/Common/CR.COM rename to Source/Images/Common/All/CRUNCH.COM diff --git a/Source/Images/Common/All/CRUNCH28.CFG b/Source/Images/Common/All/CRUNCH28.CFG new file mode 100644 index 0000000000000000000000000000000000000000..f81c7acf29f6dcd81731648f9790d5999c35fe6c GIT binary patch literal 5248 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 GM(`IR-p?=q literal 0 HcmV?d00001 diff --git a/Source/Images/Common/All/SUPERSUB.DOC b/Source/Images/Common/All/SUPERSUB.DOC new file mode 100644 index 00000000..7f554bb3 --- /dev/null +++ b/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 /" +(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: +* +A>CRCK *.* F + +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. + \ No newline at end of file diff --git a/Source/Images/Common/TDLBASIC.COM b/Source/Images/Common/All/TDLBASIC.COM similarity index 100% rename from Source/Images/Common/TDLBASIC.COM rename to Source/Images/Common/All/TDLBASIC.COM diff --git a/Source/Images/Common/UNARC.COM b/Source/Images/Common/All/UNARC.COM similarity index 100% rename from Source/Images/Common/UNARC.COM rename to Source/Images/Common/All/UNARC.COM diff --git a/Source/Images/Common/All/UNARC.DOC b/Source/Images/Common/All/UNARC.DOC new file mode 100644 index 00000000..6c1263e7 --- /dev/null +++ b/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 + +------------------------------------------------------------------------------ + \ No newline at end of file diff --git a/Source/Images/Common/UNCR.COM b/Source/Images/Common/All/UNCR.COM similarity index 100% rename from Source/Images/Common/UNCR.COM rename to Source/Images/Common/All/UNCR.COM diff --git a/Source/Images/Common/UNZIPZ4.COM b/Source/Images/Common/All/UNZIP.COM similarity index 100% rename from Source/Images/Common/UNZIPZ4.COM rename to Source/Images/Common/All/UNZIP.COM diff --git a/Source/Images/Common/All/UNZIP.DOC b/Source/Images/Common/All/UNZIP.DOC new file mode 100644 index 00000000..734d8dab --- /dev/null +++ b/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. + \ No newline at end of file diff --git a/Source/Images/Common/XSUB1.COM b/Source/Images/Common/All/XSUB1.COM similarity index 100% rename from Source/Images/Common/XSUB1.COM rename to Source/Images/Common/All/XSUB1.COM diff --git a/Source/Images/Common/ZAP.COM b/Source/Images/Common/All/ZAP.COM similarity index 100% rename from Source/Images/Common/ZAP.COM rename to Source/Images/Common/All/ZAP.COM diff --git a/Source/Images/Common/ZDE.COM b/Source/Images/Common/All/ZDE.COM similarity index 100% rename from Source/Images/Common/ZDE.COM rename to Source/Images/Common/All/ZDE.COM diff --git a/Source/Images/Common/ZDENST.COM b/Source/Images/Common/All/ZDENST.COM similarity index 100% rename from Source/Images/Common/ZDENST.COM rename to Source/Images/Common/All/ZDENST.COM diff --git a/Source/Images/supp/cpm22/KERCPM22.COM b/Source/Images/Common/CPM22/KERCPM22.COM similarity index 100% rename from Source/Images/supp/cpm22/KERCPM22.COM rename to Source/Images/Common/CPM22/KERCPM22.COM diff --git a/Source/Images/supp/cpm3/KERCPM3.COM b/Source/Images/Common/CPM3/KERCPM3.COM similarity index 100% rename from Source/Images/supp/cpm3/KERCPM3.COM rename to Source/Images/Common/CPM3/KERCPM3.COM diff --git a/Source/Images/Common/DIRX.COM b/Source/Images/Common/DIRX.COM deleted file mode 100644 index 413bceca00ddbf1470c0ccc51a6dc12939020b1b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmdT`YitzP6~1@J`>97-19!?JLlfJ_8h&R6cBtUe|?>&Pyc7bqH6ft($(Ej(I0(CO}4lHr1wBqPp3-aYVs-mP9;-q-D-PV zZ(Dm;>Htyqb@g?$r;>dK)Q+B1Usp%J+Sap=EB=VPR{J{kw{`WX$sU!g2ha%lj=l`E z3Ha3ACb*voF%m8U*O0HI*Z5*o!}VG@!+h@L0=FZ8LM1PJ#OJ;jbXSOM8GP#eR8ify z>?no!RwTaEHbGxye`Rmw)3hGKb>Oa)r+R&?9voH&j=7u6e#?5vM}gc9cN4msxZ7oI zH>pvzMyMg$W_*Q#n47@`c`6{V&9I8lZXzD3YJk}%tQ$VF5voLLBGqc8Ju2i;Tdemz zD(F!=tQn6Ac+_LozdTCf)MWFWxieLbfU!2%BR(@oBbj1B^V1D>L@)zLML6}aLj@YH z;Q3#fq-QjVUW{a#1X@kqS~)yN6zZBX{Q;*OH{~;Tky(;%6YyKRcO_92l=5O#DMq$7(f{*;wgPJE?3V=YM@7x56@W_Nm5>KSDdYybxB!h(EU)-HBY7+ph%hq?#Gh;AjIah^}L~Hs#b#&-bIu! z4_gdoG0e`TFBRZ-MtFfgcb-kIB07U3v)S~k1Z~1emQ*Th$6Q0pU1rW~ME`;-GH@mH@p8a!8b5FF%p;$#`yBAlw9Wt2evv_}SL^ zM4OE*tOaszoisaVZR30c{n!ZW@~kG%6JYNN(53~gQd1_-+IoQa+;|bsQGm%}co`d>q`%pBrZTwSe6dKwVt{M|%T(W;R6Bu( zRZPOq&8e;+JAsp!8JR;Ikh@OpXbbcB84G(%AoqA>g}jkng)8 z?^-Ap*%0m>KV3!KD^gCcfd8ap#P#7d^5YPzz}BKnpm-cq;MUpULz2(LNuU)FKIsj_ zXCXK4p$AXwlB__>7qIn5Awnswf#K5@rK*-BGhf-`p4&9buX|5{R)ggziN2M{)&w_pq z*u$WYV$tEz{MGke(Hw*cPDMOPD^@az|D{>It7rV^~_PCcJ& z#l)Ah7D{IZI;EL`Us^ zJ1yV&_Py%Ezqj6&zhAcTBcHIsdQU#&+@?~|Z=&~KoBD@5X!xxedE9yDzdZSWs$VT6 L0k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 diff --git a/Source/Images/Common/UNZIP.COM b/Source/Images/Common/UNZIP.COM deleted file mode 100644 index afde72047347290bcc1fcee1b9977a3c2572b545..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3328 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 diff --git a/Source/Images/Common/Z/u14/LBREXT36.CFG b/Source/Images/Common/Z/u14/LBREXT36.CFG new file mode 100644 index 0000000000000000000000000000000000000000..0f6c430da9b36e14891d1a93564074612a64b9ed GIT binary patch literal 1280 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 ZeAQ9A);jB}rCO(@&71$Ouk`=Z_}?IFC4~S0 diff --git a/Source/Images/d_zpm3.txt b/Source/Images/d_zpm3.txt index b8ee128c..12b8d5d2 100644 --- a/Source/Images/d_zpm3.txt +++ b/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: diff --git a/Source/Images/d_zpm3/u15/help.com b/Source/Images/d_zpm3/u15/help.com index 378cf03b4d292325aeae2aa7358d9e034e128979..3a4d439412a27a62189fbef2d588cd0a12f3b870 100644 GIT binary patch literal 7157 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 V`yBziWxn!<|EIQ&& q6~d4Xg3#PBaVG<5Cqo7XX=ejzXCQqQD&7O3C!4bhZuaKbY7PKpsS?ou diff --git a/Source/Images/d_zsdos/u0/ROMWBW.TXT b/Source/Images/d_zsdos/u0/ROMWBW.TXT new file mode 100644 index 00000000..a8151798 --- /dev/null +++ b/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 \ No newline at end of file diff --git a/Source/Images/d_zsdos/u0/ZXD.COM b/Source/Images/d_zsdos/u0/ZXD.COM deleted file mode 100644 index 203956730a6fffb8be2150871fdaef4266b1f96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6784 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 diff --git a/Source/RomDsk/ROM_512KB/COPY.CFG b/Source/RomDsk/ROM_512KB/COPY.CFG deleted file mode 100644 index 3d5310acb996594e037f794e5af30d815268f1c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3456 zcmbtW+iu%N5FOU3pa?MvG(gjPr+!IPC{CQ~Yi&yojK)?WB`#7RC|2YuT9{h0Bo&8! z?+5fh(r@TvKO+J9BR#WAU8p2z-7-MDq;_s+&YaypH-b(4`zyE-=*C8{5&U}Lx8RRU zms-0``kaCX?>%kwn)E3JzhHIPq$?Esj@40R{bV@M#1Hcr;S0AzM$X$t6`Hq zrl7>?q)8u9@Di(TlfHzP3r`!5oAeb0ukdaEJz}B<7l`%(+M?zMST$QW8}tp)Ypiz~ zbeHJz`$V@I^exc=R<|4U9Z`wZod%r{y~OHngA~y#tnM`^Ci<{JbiYAoL_MrFTdj*f zEgs(QfB%H{6FWA~W|=BXVtE*5T3g=X#jefP#oadVX5qv<*Su#6u_&@6=48x69qX`Q zWg~n|OZE>;dTs8#FnOVEsQHo33)y{OV$BHB#k;XS;L_x<&4)Hm#h+}^qPjqI+CGU<4ow<<4K3m_pc!$a3 zHb2f$xgIN^P=mE=G60!mC69ERoOvslFz>bh!Qfa;^&$$hGunTLQ3g)jKn~f8fivj> zvxyE*87<_lD)g{W(-iyM-@LY6UcgLw{yjr))fjqHx>`Z($g{ov)FYy(oi?xUS$luO z=jjHtEM(P(qHDiO%ksH<-hP5NV z*jkVj#iYnn##OP^XB>&1im+!o)v7AN<&t2Iop@Kki3s9Zrc^-RT}_gJE7U2aG|S}_ zt?2(Ut6DxIul*7aA_zT3+t<8xxCCShCj=lweFD2+sB8fYYu-?TD72u++_zOjbKqS} zI2UCSrPWrAVjVej{MTIE*F1%Q3Ev{$I?D=-h}fg&4#eG~UWfY+yS+h&f#q@Uhu(k< zI5bJlQ2knOjg3qQb#%3P-#`}BRnHt%<|XG2YT@Z-YtZ*cD*zvwsfkr4ZnxZVyT#Yk zD0!~i9R}A~rD?nzk_4?((RDX5ZdRPr>hxOeUo}VulyaL#+E1IqSW;STpo+z7SwqRU z8(2TW=B?u`PEvQf01lv)L)qmQp>*j20^vr0|3_~}+a+3^j;o1EF8hQ1t6-L=N1n_w z^jT;tzkxo&d_QX-N+?GXKCICrlq*m+Wu0Yc*%&vVN?lxBIbz+jBsi#MlNt)r;rXQb z@nTGxXZ!ppu0gceT^-P9p&KrbeUS)JQ9=eu@NPsDBY)D@97S{Y!ZO4JHND)dG|APm zr^3@&>IPNXGFKzPY3V~I$R^noa#H$)ris72;TK@zZa>IQh&aD@fQaI7%iC?$aB<`9 z`XRz2L={+opM;eZA|AQC-dU5qT0oU%HUc8uKF*Lw&IL#lg({2kul-c~*OO&M_YXvp zC8vC@q`+T$dfKEwqkJN4Dj8cKpN9%kV53?QU{$Vvo@rYMl*(2vJSSx~WFDs&R#-xN zimdE#?(fq8r{>DerX!#yw8lnRaSp{ox_K(PCaOIL)O&_5E#209c?YsvO-H!+Co@b> m#xoQ?e|7WX_~8brOc6&z_AssW5=SL6!D(QU2#lcr_xuh16pqgT diff --git a/Source/RomDsk/ROM_512KB/FA16.CFG b/Source/RomDsk/ROM_512KB/FA16.CFG deleted file mode 100644 index b7974d36f9365eafc8c00f30228a4a87dade2d77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3072 zcmcgu%Wfk@6s>lQI%&y*4Gaq&7qiJop3Gz>AApriq>*M4#|esuUB|9=muOct-PQ5< zJNN-Ug&kWyfi*t?=T?)*kMQu82->x^9baMfAS)w!NPm$Kq2F|Ir$>2eJ4}#GmX9 z+GnwNBI56GI*G;SA}(>djl~xt{spIDEWQ-+?>Jq@;wur0_MqL5#n&Q!fm0_rI5>z1 z&-t6TulqMQLpn7&Q`4qOtungh3=R$l=~U7&nT%dO?Ia1`y27=~Qo>HsPmPkcSR93? zH5!dz1)~v++}(OyNvX*+wrs33TN@2w)Gy}gqNX}GbE;(B6t-rowb3<<&SaM28w$<} zr6pShBhCwt_)j&x+^UIzKrYr+>aIauAzrGYDC`NnB1AI<^x11`V0 zE7W+$ogMaPu)i>L#+W_|vcvv_^Er8J>QdTae+&EDT*`t5m9cVcH?Qun=gtgeI-yHl zEH-U9zz%zE()FUYa`w=8w|yV>{c4=6`+u$1cUQcZwE#roBk`AbD^uL-*U#SIGdwp< zrI9J0{V~fxhUl_nCeu}mo;{;C8QEOY52u5nXDv}yq*GGhp0vI77|c~sQ0iGZ3B0qW zlQ^o=%uM7F!Wf#RKL-B051sd=eF}Wx#j2UCdnE5M0P`GgRim}i(@xUpiLB^!@cdnm z!{ajY7;g?B8K1p1L|qi$Mbz6I{J6(OpLKyg%1I~5WhH5xYPyqT&2(DG3C)$wT}op! zo27a}JTuh2>IT0@fOQGb$N|*%VQ>?f!(CI$4RJskB}>89IMdyNLdoz42N$O6?=OMC zHB@DlZcI}X-!=s@nKFdv290x51DB;2j>~0qlC3&iA#k)=$!JvxnCCSH3BomF6WV9N z3kJw!87Upw?mDMVG=> zF!JPs#e)_vd(0_&^n2{PlLR58xb16r%OC{ToP*P3!niF=Q_;Pe zNW+MhMY;%Bq37Q-?K_DZ!dFMHT#mV#g21lur9Zd}@OrPAshEACx#rHMAoGN>%FMtN z`FdA+e-I52%R*Rn*%?iplABDcW06b8f%ky*ZK8$vc zg4TGFrDa(ekcb!9Hr};lodO&zIp=UCKcus=kmz_2(N!X>gibgg5E_PInXUz=*GU3q zOn~mgW!q(0h3>d{?S=)x8hXPzyo%_=4wjxqbt%UxQ%o&4Nb9)10gm&}F9s`oov3b3 zF;A!NB!}}{jdPltrU1KwmU5oKvFjP8&PhLttJFP!dy4d~l^#RIouq@G8jEMyOz+dm zq5!2<6|gRGD>f;#!JQuAhZXOPpe*Rp6#Vzp)A-G$bPe6(!DS9Oz>w!dI7woku-Iri z3K{S)4_0Z;(X{LVPFg%`cPr2dm44h-gs@jLld2{RF4F{e+&HTdHDy%USveDKp gCUuhKR!O(S8mrZT&3mi6@zbEYgG!u|_}`zu0V!{R{{R30 diff --git a/Source/RomDsk/ROM_512KB/FILEDATE.CFG b/Source/RomDsk/ROM_512KB/FILEDATE.CFG deleted file mode 100644 index da1ca45f455b67185207ace83819fe8c110c2f2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4992 zcmcIo-EQ015hi0@q{bTPP0{Vo#XvWkv=%MNmhE`gS6Tft}W&F-C-#nR=np?)74D;6~Kb2Zfjo%yQKcC!|oTtVg4D;W(JAZ2Y(J;T- zx-GqWYJ6>&)|OYgC>ckFIoz6++NSZXVg9mZ7_Uv^*f9TvyB|#Bg<*bOGK`LCoEWBy zyPa+N#C6{8I4!&HP%{cg{{1ZWQa=iJw)H97qH{k`ltgh#&#F~AB`=tcy*riq125R6 z`Wcp@U`T01p_*f%g$3O40@j}sozUC2TH2XKEicv5_7WASK}sWE;q-$Uiw+hT_mZR!1O@LhSiSqYzGUNB{0c@ zOT1?(uVC==-Acd68*9n#1mbJpytPm#aV0ht>h6u!7>Q4|XHHDlMNUj7H zj{cBGVYzLywtTg4v|~|!T|>TU^WW^~wsGsYMz=@u;d{fV7{5iS7{*I{{)3EvIOR9z zJ6)(?ieqoaob6#meu(%7ffNJz2{M|q(Tf+m61Y(m1ks$K9;%Ty3sQRT1vA8Hg6z3d zhzY<7@0HX=>iGfS%Qb(KP&DNtOGuE;a&C#PpP;sM#Akj=i)a=@UZ~ViADG5!q+%7q zAPXjQiK2$d?Ope&chztAx>TWV6i;A3%+1wG4JYKMNuG9Vr5wQS1@r*=+$FY-3qRp+ zI3dU%iTCA7nYgn4ia)t0NJ?b&&?0Jz=hz6?M4mvy89edcWmJ+2lp@dw;^aj%SMOE4 zyJlEs!rVuGia10kh=6U(Ku@D2@$Z8BVA5DF_7@VXqZ3QjXd__DSea~j#_L>=PoLL)CTLLEj3Tn2n zAs=oENs6>AP(|d}Urx)Fjr^2HHZx0NDS&0d1TlvzTSbLn6#ZBXMJt9vgVN*V)R#*?duJ7(Lx>e#nrcRJ+u z?aM27bJ(&@mq^ppZb`FAXg>C#s-U&#KSHEE@?2r;o~3ok%tWQgX`S0*g1f=vP0oruM6=*=acbc}BXz);!E6XjdS1uQeIvS3C3X+j%LAn26X=yR=Oo~ggN+v z&4!$3GxP)tYFM|T2vSj-h|*;Sqb-_Lp|2QHcqwdDJSeWnqxEy^~9sSr->iV6540B;rZ6FTP*QM=ekGD3;Wt`_N7rQ zQ$d(lR4wNznf8OiWDE)h*NZm`MT?xjVD9$zy&|E~l21x9kH^gPTd0?y881rsX2 zQxq+{z_iS5-lGJsbm#;*PfX)zI2(ZexB>*(!d(C1Se~2!SDtMi@t#$E{CgHIduMn!T0-%2-)<=`GkEXck-ctCiQYKvwpx#=f@h zgFQqCxpl4fb+ukQ%*7p5F1=U|*R2{Kt{qlfHO*G`8!YalJq2<6&Qm+ct*gFR9zM4A zk6~r4x?Fi-H4fKTj;uxlE6@q+_~wJ_p!$wU7FQ$dGPpgezr#SFkPCQC|NmeA1ts5Q AU;qFB diff --git a/Source/RomDsk/ROM_512KB/INITDIR.CFG b/Source/RomDsk/ROM_512KB/INITDIR.CFG deleted file mode 100644 index 96baa98657a97513b17249dd40b51c8a43ffbf81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 384 zcmZvXu};G<5Qc5B5KCT>*!~HTB`*OCSyDo}FdBLoONs5;PEntMnP=j)u!GW}>YZhs z?tK6M`S*&KyycSra4!05cEh;k-&_h&RTa>7?e?*K!Gp6OM$bVd<7^rBHHO*yKr!Mu zxXGu8I}AysIbzCPr77aRpADrNr^u_9juh9^#j+iy1sZ;#gtEI*>YygXb6nFGuWX)3hm0<9QcI~FC9Y5hejg)$iRV-uP*pg4 z@}1v(@9ROPvzEF1mQvB9SPA(oKV_~|mSteogqPqu*PkX6UGR%TWwQPiXYXG@ZXO47 z2AODQIFIdV3Zpe11yQAS)ig`ZZE*L7*DxJTM4|PDXmd#lE~^g~!4GG=U!nH{zl;ez zb?`cFhCvK{&qfR|L$s4;2JCJ8u$DJ$FJ#X5h&(R=roUWUXdXlKgoahZ`1ThylD$~D L>X@*~mH10PTKHJ_ diff --git a/Source/RomDsk/ROM_512KB/ZCNFG.COM b/Source/RomDsk/ROM_512KB/ZCNFG.COM deleted file mode 100644 index ae423dc59d53e7def68c3b0c74ea91027ec46b18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8064 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 diff --git a/Source/RomDsk/ROM_512KB/ZCNFG24.CFG b/Source/RomDsk/ROM_512KB/ZCNFG24.CFG deleted file mode 100644 index 1bfe49bfa7213e2c60ceddfbcee0cfc53b214406..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4608 zcmbVP+in}l5gkeavKZ`qz#>3UNgiSWv>aIuVEDzL$)Q&OO)BKjfn*qqCfOuAo(p$+ zMiM_F-<6l$f7(;kJ=9Qk@({|fAWm0x)u~gbYW{QD;h%XY>fE3HK1@2nAA-|gJ3%n% z1b+-pqmv-G{Vw=((D`uk>9lte{19~hjqgUk3;q;zemSwH{Z8t|ntPdTN-QQHK&$ZgfT0Ww9w$MgzT8bz0HT zq`KPgH2vg$PUyTp`EY#kgzYDHx=huc)-d?5*7OtG58of#-?IJfWjy{!s;-LXCbyMJ zQ(6}#-S)4im(<+O_B5W*v3-y2dugT1TvfRI#av9=5!uEA?BBh9Vn1U0Ws%zgp^r?i zE$wtkvt_Au-nyH8!2ac{b#1=;3l30KqTnTr_*?x1W9lDK29k3KDZ8|5T#Z5icq2FG>C`2`6!{` z)hMRq<~p7+5fWUo^2L_gNwxJurE_b53Ds7wXt75nm`Z8mkOD%?YbXPiWf9bbuSP_=3xrdx?lj>Wj>?kZ1HGK|!w!y2C6`EK2mq&W zMV2vMDM&!J1`C#Y1v((RN0_<p~^*N43A$r1fL~ouo7+pip4%SijZs>T z)L2>-04WO1+Ck?S*^~s&!2;L553rkY#9Mreut8UEbQ}dcLy>Y&Z-sktvOop6r4hEG z{`HFw-aQ;%RU8A~k!#clkU}k-zbMoXdRYstYPj+$a{1zw4+NEW=t&$$NLXQbYQE@n zk3&%i_?$Offi6&B^`hQv;FJ&1U^XCJJQyUXx>;_4iUidbvhyf>6NONz-YAKu<6aUI zI{evSdi61WF`vcLGcN2Llo5msQyTGEoocXMM}d6X zdj78tR@?wl$hDF-U@bFi1G}aXf%P{!5W%#<sBDLchMs5- zQq&d##L#jvWv`KPe-nnb;q#-97#@9d^heu}=@9xzPotxQ(qM2f<f%*%3IFbUxfI*3+(H*m77G}?Zrgm*=(UIoRv5I(Y=X%?x*Eqb zx{jwb>rdlYHoms{azj_(W=eT2)k7EYyt8hSV2jF3j;Ejl1Z3Zq1a#hEsNboy2HQpR zK(|th+N=mnepKJeU;~0`3c+RO@$I*lQ5ffUrYxk?poC*NxC4P=`SFo~V;IM3qltSF z3`9M)I^B_#)r>m{0}L}FWj!3Clq;QKXQ}*7v8&4+Cb8|3MB8Y4hNhPBq6n#)tj?kk zAY8nZ3o`Y`IHU0P=yu za@9TH2V~QGfQ|2MjxC#*r3eLvR* z>7s{Vd*#OY4h_m1wJc4IOp9I$+=nQ6pJ5%sq5>Foi5_^ADtIgnDg>n#KVB~qWYk2L z@fLx|(*mLaj7|P@fbb1lUdmjn%NePzQ`#P4mJR2r?#Z-m6vI9IG`O0+`8*tdIv*yV zi9R8(;rO%v>lwh-&|u<2JQx`Gm*5Ykea!-M2J%R7?hy~dMu8v4nkkWwEEceCaBE7! zOIv{)nTBhHMHKr7);m9XcuBGvORcn$o7#*Xduu#d&y4;-9yGv|m?JXCiq0Hxt2k+oMUsf7UHV7~$+t~d7knl}dllWEkkTJg~@b`Xw zcdv~iSq&jjSzqTzz*^Y}WMl47nGA?-f%l5GPcCs&A*b8Ehrg-{zvm$sP|GFHEdgjC zvuz>lVVmuGX0#emXxbtQeDTuJT04=3zgf1CM+{7bWpT|l1{EK1H+V5m^_^n*#p}8I F{04;9o2LK( diff --git a/Source/RomDsk/ROM_512KB/ZXD.CFG b/Source/RomDsk/ROM_512KB/ZXD.CFG deleted file mode 100644 index f202ae59b38e1ea77539036d73b8592d005e0c3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2048 zcmb7F&2A$_5bm*)Fdj5lSXh2axolQs6A6h6C!CBeuM|5LGr>5w&bY^JrQL0&+Z!1P ziQB%xa!2CEnOE2+;2n4XByNbR9>-2tf_BD|$20xaSM_y$)qdR!=<`Dm2VcJPZgdf{ z_gJvo_^sIs+50T`q7m+NL-vRTqH(#ChU^0tylVWqGYHv-EO_1cduJ4~$1M1(G2G2U z_7Mx7G=JVrLiRBWM$JEW+l+m}e*7iq?w!!DuYM1H+8c-LQx?2z{;?NFQLELu{5FA8 zqYF7*mfT6B;e0_i>zCV4;jOP2=}v0mFKXg@HSyhAcodM<4H(o4XthQ)@mWoLQWHO} zg^$n`>`Yn*g;c_V)WDU33oA9_-WHU$hzsT~&UHBgNM^ENPI zG^K;96?9QJWUGY$Hxn8Le7-5K5_1pemp#yj+zO#P^R-lb=|bcdZls&R;2aX}aBnx) z8aR5M_0~&6R4{s;bf8dty1}hCeE$?1;lyMgIBMQM{ID*a0;;G9GsYZS(ZXOPuNyBd}U!lF1?5M0=8d_PUl|d zYzT!Z;f*sKSF@SeD77 Date: Sat, 14 Aug 2021 13:22:10 -0700 Subject: [PATCH 2/3] Update hbios.asm - Fix typo --- Source/HBIOS/hbios.asm | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 8ec7b166..c1580ac9 100644 --- a/Source/HBIOS/hbios.asm +++ b/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 From 0ef66945267b6f31aa9bcdbada961cee3422337d Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sat, 14 Aug 2021 14:20:08 -0700 Subject: [PATCH 3/3] Fix .gitignore I really hate .gitignore --- .gitignore | 5 ++--- Source/Images/d_zsdos/u0/BGPATCH.HEX | Bin 0 -> 768 bytes 2 files changed, 2 insertions(+), 3 deletions(-) create mode 100644 Source/Images/d_zsdos/u0/BGPATCH.HEX diff --git a/.gitignore b/.gitignore index f17a0be4..32ac5ae3 100644 --- a/.gitignore +++ b/.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] diff --git a/Source/Images/d_zsdos/u0/BGPATCH.HEX b/Source/Images/d_zsdos/u0/BGPATCH.HEX new file mode 100644 index 0000000000000000000000000000000000000000..2966accc4569c025e4d5407bdf5416bed1ae515e GIT binary patch literal 768 zcmaiyOK!v<5Ja;c$rs2eistL=_}>3Wsm3tLjH0+DFAR@%^~1;G%fLVe;Ip^Rx#6wA z2WzBTgI{IRalw}GU1hUir*MFc1yWmyka^U=BBIvT5>nl;-<`Rg6Jl-B;P-)vHq%$< zK)8FPz0DaI-Sznn4rNO;yK~ge3=jf0v|dJ=E0BD377&h=NfT;55hW1dcZ9t|1FQp1 zEZ7j1laB(08VP7pu6rFGF)xH1l1_>f9BkXD>Qt>OY>-K&h?j zG0%BGwV40=TNU0 aMl-*A)}$lC>A327s$0f*;COs~+|)ON-;ntL literal 0 HcmV?d00001