From d39f0201f4af1f26a29fd417cb97385a87ed35b5 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 17 Jun 2022 10:25:48 -0700 Subject: [PATCH 1/2] Bootable QP/M Disk - Put a preconfigured image of QP/M on the system tracks of the QP/M disk images. - Minor adjustment to dbgmon.asm for compatibility with UNA. --- Source/HBIOS/dbgmon.asm | 12 ++- Source/Images/Build.cmd | 6 +- Source/Images/Makefile | 3 +- Source/Images/d_qpm/ReadMe.txt | 185 ++++++++++++++++++++++++++++++++- Source/Images/d_qpm/u0/qpm.sys | Bin 0 -> 13312 bytes Source/ver.inc | 2 +- Source/ver.lib | 2 +- 7 files changed, 195 insertions(+), 15 deletions(-) create mode 100644 Source/Images/d_qpm/u0/qpm.sys diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index fde7110b..d8792bc3 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -132,10 +132,10 @@ SERIALCMDLOOP: JP Z,SETBNK ; SET BANK COMMAND CP 'U' ; IS IT A "U" (Y/N) JP Z,UNSETBNK ; UNSET (REVERT) BANK COMMAND -#ENDIF -#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) + #IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) CP '6' ; IS IT A "6" (Y/N) JP Z,MBC6502 ; TRANSFER TO MBC6502 COMMAND + #ENDIF #ENDIF CP 'X' ; IS IT A "X" (Y/N) JP Z,EXIT ; EXIT COMMAND @@ -807,7 +807,8 @@ HELP: ;_____________________________________________________________________________ ; ; -#IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) +#IF (BIOS == BIOS_WBW) + #IF ((PLATFORM = PLT_MBC) & ENA_MBC6502) MBC6502: CALL BYTEPARM ; GET BYTE VALUE (FILL VALUE) INTO A CPL ; UNIT 0 = FFH, 1 = FEH ETC @@ -821,6 +822,7 @@ MBC6502: OUT (MPCL_ROM),A ; SET ROM PAGE SELECTOR ; JP SERIALCMDLOOP ; AND BACK TO COMMAND LOOP + #ENDIF #ENDIF ; ;__ERR________________________________________________________________________ @@ -1266,8 +1268,10 @@ TXT_HELP .TEXT "\r\nMonitor Commands (all values in hex):" #IF (ENA_XM) .TEXT "\r\nT xxxx - X-modem transfer to memory location xxxx" #ENDIF -#IF ((PLATFORM == PLT_MBC) & ENA_MBC6502) +#IF (BIOS == BIOS_WBW) + #IF ((PLATFORM == PLT_MBC) & ENA_MBC6502) .TEXT "\r\n6 xx - Transfer control to MBC6502 unit xx" + #ENDIF #ENDIF .TEXT "\r\nX - Exit monitor" .TEXT "$" diff --git a/Source/Images/Build.cmd b/Source/Images/Build.cmd index ad224caa..98096baa 100644 --- a/Source/Images/Build.cmd +++ b/Source/Images/Build.cmd @@ -13,7 +13,7 @@ call BuildDisk.cmd nzcom fd wbw_fd144 ..\zsdos\zsys_wbw.sys || exit /b call BuildDisk.cmd cpm3 fd wbw_fd144 ..\cpm3\cpmldr.sys || exit /b call BuildDisk.cmd zpm3 fd wbw_fd144 ..\zpm3\zpmldr.sys || exit /b call BuildDisk.cmd ws4 fd wbw_fd144 || exit /b -call BuildDisk.cmd qpm fd wbw_fd144 ..\cpm22\cpm_wbw.sys || exit /b +call BuildDisk.cmd qpm fd wbw_fd144 d_qpm\u0\qpm.sys || exit /b echo. echo Building Hard Disk Images (512 directory entry format)... @@ -25,7 +25,7 @@ call BuildDisk.cmd cpm3 hd wbw_hd512 ..\cpm3\cpmldr.sys || exit /b call BuildDisk.cmd zpm3 hd wbw_hd512 ..\zpm3\zpmldr.sys || exit /b call BuildDisk.cmd ws4 hd wbw_hd512 || exit /b call BuildDisk.cmd dos65 hd wbw_hd512 ..\zsdos\zsys_wbw.sys || exit /b -call BuildDisk.cmd qpm hd wbw_hd512 ..\cpm22\cpm_wbw.sys || exit /b +call BuildDisk.cmd qpm hd wbw_hd512 d_qpm\u0\qpm.sys || exit /b if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd512 || exit /b @@ -42,7 +42,7 @@ call BuildDisk.cmd nzcom hd wbw_hd1024 ..\zsdos\zsys_wbw.sys || exit /b call BuildDisk.cmd cpm3 hd wbw_hd1024 ..\cpm3\cpmldr.sys || exit /b call BuildDisk.cmd zpm3 hd wbw_hd1024 ..\zpm3\zpmldr.sys || exit /b call BuildDisk.cmd ws4 hd wbw_hd1024 || exit /b -call BuildDisk.cmd qpm hd wbw_hd1024 ..\cpm22\cpm_wbw.sys || exit /b +call BuildDisk.cmd qpm hd wbw_hd1024 d_qpm\u0\qpm.sys || exit /b if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1024 || exit /b diff --git a/Source/Images/Makefile b/Source/Images/Makefile index db5b1a24..ea3973f0 100644 --- a/Source/Images/Makefile +++ b/Source/Images/Makefile @@ -70,7 +70,8 @@ blankhd1024: %.img: $(SYSTEMS) blank144 blankhd512 blankhd1024 Makefile @sys= ; \ case $@ in \ - (*cpm22* | *qpm*) sys=../CPM22/cpm_wbw.sys;; \ + (*cpm22*) sys=../CPM22/cpm_wbw.sys;; \ + (*qpm*) sys=d_qpm/u0/qpm.sys;; \ (*zsdos* | *nzcom* | *dos65*) sys=../ZSDOS/zsys_wbw.sys;; \ (*cpm3*) sys=../CPM3/cpmldr.sys;; \ (*zpm3*) sys=../ZPM3/zpmldr.sys;; \ diff --git a/Source/Images/d_qpm/ReadMe.txt b/Source/Images/d_qpm/ReadMe.txt index d169d50d..1c02665e 100644 --- a/Source/Images/d_qpm/ReadMe.txt +++ b/Source/Images/d_qpm/ReadMe.txt @@ -1,9 +1,21 @@ ===== QP/M Disk for RomWBW ===== This disk contains the distribution files for the QP/M Operating -System. The disk is initially set up to boot CP/M 2.2. You -must use the QINSTALL program to install QP/M on the boot -tracks and subsequently boot QP/M. +System. The disk is bootable with QP/M already installed on the +system tracks. The qpm.sys file and the QP/M image on the system +tracks was created using QINSTALL with default settings EXCEPT +for the two settings described under Notes (current drive/user +storage address and TIMDAT vector). + +QINSTALL can be run again as desired to further customize your +installation. However, note that QINSTALL does NOT remember prior +settings, so you must reapply all settings you made previously +especially the two setting changes described below. + +This disk includes the standard DRI CP/M 2.2 files in addition to the +QP/M files. QP/M generally assumes you already had DRI CP/M 2.2 +prior to adding QP/M features. Since QP/M does not replace all +features of CP/M 2.2, the CP/M 2.2 files are also included. == Notes == @@ -15,6 +27,169 @@ to something else. I have been using 0x000E without issue. RomWBW CBIOS has been modified to put the QP/M TIMDAT vector at 0x0010. The vector points into CBIOS where the actual TIMDAT routine is located. The TIMDAT routine reads the current date/time from HBIOS, changes the values from -BCD to binary, and rearranges some bytes for QP/M compatibilty. +BCD to binary, and rearranges some bytes for QP/M compatibilty. When +running QINSTALL, you should set the TIMDAT vector to 0x0010 to +enabled QP/M to use your RomWBW real time clock. + +By default, DEBUGZ utilizes the RST 38 restart vector for setting +code brakpoints. This conflicts the use of that vector for any +system that is using interrupt mode 1. DEBUGZ can be configured +(using DBGINST) to use a different vector. + +The QSTAMP program, which is used to initialize a disk for date/time +stamping, misbehavews when run on the (new) RomWBW 1024 directory +format disks. It creates an invalid directory entry for the +date/time stamp data file. This is definitely a QP/M issue. The +directory entry can be manually corrected. + +== ZSDOS 1.1 Files == + +The following files came from the official QP/M distribution. Actually, +they came from 3 Microcode Consulting files (qpm27.zip, debugz.zip, +and linkz.zip). The original distribution files can be found on the +Microcode Consulting website at https://www.microcodeconsulting.com/. +Documentation (pdf) files are incuded in these original distribution +.zip files. These documentation files have not been included in the +RomWBW distribution. Please retrieve them yourself from the website +if desired. + +D.COM - Directory lister +DBGINST.COM - Configures DEBUGZ debugger +DEBUGZ.COM - QP/M debugger +DEBUGZ.HLP - QP/M debugger help file +DHORIZ.COM - Version of directory lister for horizontal file sorting +HELLO.QPM - Text file with QP/M version information +LZ.COM - QP/M linker +QBACKUP.COM - Data backup application +QINSTALL.COM - QP/M installer / configurator +QPATCH.COM - Patches (customizes) a few QP/M applications +QPIP.COM - QP/M enhanced version of CP/M 2.2 PIP application +QPM.SYS - RomWBW configured QP/M system image (for use with SYSCOPY) +QPMCLK.MAC - Example of QP/M clock assembler routine +QPMCMDS.TXT - Brief summary of QP/M commands +QPMUTILS.TXT - Brief summary of QP/M utilities +QSTAMP.COM - Initializes disk for date/time stamping +QSTAMPV.COM - Initializes disk for date/time stamping (vertical sort) +QSTAMPX.COM - Initializes disk for date/time stamping (horizontal sort) +QSTAT.COM - QP/M enhanced version of CP/M 2.2 STAT application +QSUB.COM - QP/M batch file submission program +QSWEEP.COM - QP/M directory sweep utility +QTERM.DAT - Terminal control codes used by DEBUGZ +QTERMS.LIB - Library of available terminal definitions +SETQTERM.COM - Configures QTERM.DAT +TDCNFG.COM - Configures date/time directory display preferences + +== 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 producing Intel hex files +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 producing Intel hex files +RMAC.COM - DRI 8080 macro assembler producing relocatable object files +STAT.COM - DRI multi-purpose file/disk/device info & configuration tool +SUBMIT.COM - DRI batch file submission tool +XSUB.COM - DRI batch file enhancer resident system extension + +== 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 (list, copy, delete, format, 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 +ZMP.COM - ZModem communications program (requires dedicated comm port) +ZMP.DOC - Documentation for ZMP +ZMP.HLP - Help file for ZMP +ZMXFER.OVR - Overlay file for ZMP +ZMTERM.OVR - Overlay file for ZMP +ZMINIT.OVR - Overlay file for ZMP +ZMCONFIG.OVR - Overlay file for ZMP + +== General Purpose 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 Will Sowerbutts) +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/.LZH/.LHA 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 - Installation/configuration tool for ZDE +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 stamp support +ZXD.CFG - ZCNFG configuration file for ZXD + +== Testing Applications (User Area 2) == + +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) == + +User area 3 contains sample audio files that can be played using +the TUNE application. + +== CP/NET 1.2 (User Area 4) == + +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. + +N.B., at a minimum, some of the files in this user area must be copied +to user area 0 for CP/NET to work properly. ---WBW 5:29 PM 6/4/2022 +--WBW 4:41 PM 6/10/2022 diff --git a/Source/Images/d_qpm/u0/qpm.sys b/Source/Images/d_qpm/u0/qpm.sys new file mode 100644 index 0000000000000000000000000000000000000000..78ce325f2ca26ae93c0c78ee71751a4acdb986a1 GIT binary patch literal 13312 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 Date: Fri, 17 Jun 2022 11:13:11 -0700 Subject: [PATCH 2/2] Add Utilities to DOS65 Disk Image --- Source/Images/d_dos65/u0/hi.com | Bin 0 -> 4130 bytes Source/Images/d_dos65/u0/monitor.com | Bin 0 -> 4130 bytes Source/Images/d_dos65/u0/scream.com | Bin 0 -> 4130 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Source/Images/d_dos65/u0/hi.com create mode 100644 Source/Images/d_dos65/u0/monitor.com create mode 100644 Source/Images/d_dos65/u0/scream.com diff --git a/Source/Images/d_dos65/u0/hi.com b/Source/Images/d_dos65/u0/hi.com new file mode 100644 index 0000000000000000000000000000000000000000..0a5953af4bbac3a8e8b7db4d7b08e4397040d1be GIT binary patch literal 4130 zcmey&$RHrdP@t&5_;$nX|9lK*Ss75k+FWK$g_8^)zOUr!&0t3Gcu{yBD7;J*9u|H7 znNjQ*<&1{FXb6mkz-S1JhQMeDjE2By2#kinXb6mkz-S1JhQMeD3|I(!U;se|074Ee A#{d8T literal 0 HcmV?d00001 diff --git a/Source/Images/d_dos65/u0/monitor.com b/Source/Images/d_dos65/u0/monitor.com new file mode 100644 index 0000000000000000000000000000000000000000..450bd388df63931c36bde6e99cf2b25b781d0b5c GIT binary patch literal 4130 zcmeHJe@t7)9Y5RriVHpF3>o3q^J1)riGWm)boEoDWJXHS6j3RY z(3EXF%caR?`b%C_G~@9Q&s9<Zke93jooNc_Pu9A zpi}?bpPae-{=DzqeZQZ(M_h$;rRc}|vFb_a(X(Ror(CqHU49sN_Wp$UeZeHk!V&5B zf=&8H=*EW<61s-esLT~~%~>W^)j~%|cT%%5Ub$p$~#=J4mNuW)pOIfl>1AR*GLo9O`Q;!%W0648G04JFNTUGxa~H|&?i zzmBb{1S`HD^CRHzTjhdD3oegyS7OVo{70z`j=eq$ z2zOy^0TC7ddYKhbHV@}aOj4Le7M_tuR0Fu=+7j1a(=aNCkh<>D@QNVkP*y^`jf$AsT-T`a znTEbo--WPEsBL93;I#tm!T{z)sRS-hYZCjDLU?@f{&BJ&ZjP|7g= zC~3pVqzf0W2lBqskli!Ya-lt7%ySbcy_h$G=Sm zSBNU&1E&dhCE$3rk{7EjGmAl;%5y&KRYmwYySLCDdNF!H-oxbYx?&H`A4`XFC_I=F zlHsX?#|n3!Eon`w7^KnpPR?%4Mq=157XypiTq2#BtLsq=>_~-h z)J94ECt*04`emsag4vXpq#K@`)&#r~0S&#rHo*T9Nd+`6%W9iH*FI9J9?_{iWPOP| z38<9|zB>+(*#}R03{R&*CHTek3=~@kOQtEEdWClKrP~ldZoQndte0O0u1eHHjb@E* zCiv;w>G?0xcp^pquGFd=YV`uGm1GL-$KDiqfZs}y&phOxP_n{Lucm3$!29+R`CNuC zO^SR-hgs2ZuZsBLFfiXBGSMkgfj>)mwLX#~vN|nfAVQu3w?0!%GLfl0^*vsk%VqiOXT=D~d&=K40PNu1^Vy&z zF5r|`4I;t|8s@|}u1hOlA0xb>P|~_|uF=9rTfFMw0;Ys-S6eltpnaF=fVF{AkT>Y> zsEiJ<4dg0|N;C9*9i^b(py&2nmeBs6{T!j8p2@e|c44ZHsjD&64xz!?T2whvS@Xj; z_fAhuRMkwqSv8HA@*Bf*zh{H_(_@1Ms z;&6@s;kh$5{keBM18ii##jd=AJ}wv^{n#)vns{Kpv^Fz=f`P#3=;$TZb<2DU9Y7To zdi|wKp2*!Ly^Uo9kv{9m?*0L5ADWZd(>j2loE7~hvB_H2Rj5dN7h0<2aIo0XJAi-Cd)mPkDe7*=%N<-di*43H z>^R-iY3-wWjPa>1j60wY_F+5(z5f*SK7-@szD~CLOczt6-H#PdrxTAkF?M1)Z48=| zF=PY`CMRuRRS0Eir=In=eoRr1)hh%>{0i7!p;j_(h988@{urP|+A;i+;tRtz zGt5$~1}FGA=|G7RXiN!7L&F-*dg#u2g>^bN6*ROFHy$&YaZj(Kd!V-u6x;qw-4S*& Uu#H(h(@-BmMzJ(r7