diff --git a/Source/Apps/sysgen.z80 b/Source/Apps/sysgen.z80 index 7e108117..ec2d62d1 100644 --- a/Source/Apps/sysgen.z80 +++ b/Source/Apps/sysgen.z80 @@ -22,7 +22,7 @@ DREADF EQU 20 ; DISK READ FUNCTION ; CR EQU 0DH ; CARRIAGE RETURN LF EQU 0AH ; LINE FEED -STKSIZE EQU 16 ; SIZE OF LOCAL STACK +STKSIZE EQU 32 ; SIZE OF LOCAL STACK ; WBOOT EQU 1 ; ADDRESS OF WARM BOOT (OTHER PATCH ENTRY ; diff --git a/Source/BPBIOS/diskdefs b/Source/BPBIOS/diskdefs index a16a4659..500fba11 100644 --- a/Source/BPBIOS/diskdefs +++ b/Source/BPBIOS/diskdefs @@ -311,6 +311,7 @@ diskdef wbw_rom1024 end # RomWBW 720K floppy media + diskdef wbw_fd720 seclen 512 tracks 160 @@ -323,6 +324,7 @@ diskdef wbw_fd720 end # RomWBW 1.44M floppy media + diskdef wbw_fd144 seclen 512 tracks 160 @@ -335,6 +337,7 @@ diskdef wbw_fd144 end # RomWBW 360K floppy media + diskdef wbw_fd360 seclen 512 tracks 80 @@ -347,6 +350,7 @@ diskdef wbw_fd360 end # RomWBW 1.20M floppy media + diskdef wbw_fd120 seclen 512 tracks 160 @@ -359,7 +363,8 @@ diskdef wbw_fd120 end # RomWBW 8320KB Hard Disk Slice (512 directory entry format) -# Legacy format, 512 dir entries, 16,630 sectors / slice +# Legacy format: 512 dir entries, 16,630 sectors / slice + diskdef wbw_hd512 seclen 512 tracks 1040 @@ -372,6 +377,9 @@ diskdef wbw_hd512 end # First 4 slices of wbw_hd512 +# Assumes first slice (slice 0) starts at sector 0 +# Offset of any slice (in tracks) = (1040 * ) + diskdef wbw_hd512_0 seclen 512 tracks 1040 @@ -380,45 +388,50 @@ diskdef wbw_hd512_0 maxdir 512 skew 0 boottrk 16 + offset 0T os 2.2 end diskdef wbw_hd512_1 seclen 512 - tracks 2080 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 1056 + boottrk 16 + offset 1040T os 2.2 end diskdef wbw_hd512_2 seclen 512 - tracks 3120 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 2096 + boottrk 16 + offset 2080T os 2.2 end diskdef wbw_hd512_3 seclen 512 - tracks 4160 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 3136 + boottrk 16 + offset 3120T os 2.2 end # RomWBW 8MB Hard Disk (1024 directory entry format) -# New format, 1024 dir entries, 16,384 sectors / slice +# New format: 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix + diskdef wbw_hd1024 seclen 512 tracks 1024 @@ -431,110 +444,124 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 1MB prefix (2048 sectors) +# Assumes standard 1MB prefix +# Offset of any slice (in tracks) = 128 + (1024 * ) + diskdef rc2014a seclen 512 tracks 512 @@ -542,155 +569,171 @@ diskdef rc2014a blocksize 4096 maxdir 512 boottrk 1 + offset 0T os 2.2 end diskdef rc2014b seclen 512 - tracks 1024 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 512 + boottrk 0 + offset 512T os 2.2 end diskdef rc2014c seclen 512 - tracks 1536 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1024 + boottrk 0 + offset 1024T os 2.2 end diskdef rc2014d seclen 512 - tracks 2048 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1536 + boottrk 0 + offset 1536T os 2.2 end diskdef rc2014e seclen 512 - tracks 2560 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2048 + boottrk 0 + offset 2048T os 2.2 end diskdef rc2014f seclen 512 - tracks 3072 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2560 + boottrk 0 + offset 2560T os 2.2 end diskdef rc2014g seclen 512 - tracks 3584 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3072 + boottrk 0 + offset 3072T os 2.2 end diskdef rc2014h seclen 512 - tracks 4096 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3584 + boottrk 0 + offset 3584T os 2.2 end diskdef rc2014i seclen 512 - tracks 4608 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4096 + boottrk 0 + offset 4096T os 2.2 end diskdef rc2014j seclen 512 - tracks 5120 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4608 + boottrk 0 + offset 4608T os 2.2 end diskdef rc2014k seclen 512 - tracks 5632 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5120 + boottrk 0 + offset 5120T os 2.2 end diskdef rc2014l seclen 512 - tracks 6144 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5632 + boottrk 0 + offset 5632T os 2.2 end diskdef rc2014m seclen 512 - tracks 6656 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6144 + boottrk 0 + offset 6144T os 2.2 end diskdef rc2014n seclen 512 - tracks 7168 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6656 + boottrk 0 + offset 6656T os 2.2 end diskdef rc2014o seclen 512 - tracks 7680 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7168 + boottrk 0 + offset 7168T os 2.2 end diskdef rc2014p seclen 512 - tracks 7808 + tracks 128 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7680 + boottrk 0 + offset 7680T os 2.2 end diff --git a/Source/Fonts/fonts.txt b/Source/Fonts/fonts.txt index 02d9349c..4075bd73 100644 --- a/Source/Fonts/fonts.txt +++ b/Source/Fonts/fonts.txt @@ -5,14 +5,23 @@ Font files for ROMWBW. 8x16: 8x16 cell, IBM MDA CGA: 8x16 cell, IBM CGA, normal (thick) CGA font, rows 8-15 are unused padding -There are three fonts associated with ROMWBW supported hardware - ECB-SCG, ECB-CVDU and the ECB-VGA3. - -Name Format Size Board & Display Mode ------------------------------------------------------------------------------------- -font8x8u.bin 8x8 2048 ECB-SCG, ECB-VGA3 (80x60), MBC-VDP -font8x11u.bin 8x11 2816 ECB-VGA3 (80x43) -font8x16u.bin 8x16 4096 ECB-CVDU (80x25), ECB-VGA3 (80x24, 80x25, 80x30), MBC-VDC -fontcgau.bin 8x16 4096 ECB-CVDU (80x25), MBC-VDC +There are multiple fonts associated with ROMWBW supported hardware: + + Board Driver Chip + -------- -------- -------- + ECB-SCG tms.asm 9918 + ECB-VDU vdu.asm 6545 + ECB-CVDU cvdu.asm 8563 + ECB-VGA3 vga.asm 6445 + MBC-VDC cvdu.asm 8568 + MBC-VDP tms.asm 9938/9958 + +Name Font Storage Size Board & Display Mode +-------------------------------------------------------------------------------------------- +font8x8u.bin 6x8 8x8 2048 ECB-SCG, ECB-VGA3 (80x60), MBC-VDP +font8x11u.bin 8x11 8x11 2816 ECB-VGA3 (80x43) +font8x16u.bin 8x14 8x16 4096 ECB-CVDU (80x25), ECB-VGA3 (80x24, 80x25, 80x30), MBC-VDC +fontcgau.bin 8x8 8x16 4096 ECB-CVDU (80x25), MBC-VDC Notes: diff --git a/Source/Images/Build.cmd b/Source/Images/Build.cmd index b9b264e3..ad224caa 100644 --- a/Source/Images/Build.cmd +++ b/Source/Images/Build.cmd @@ -13,6 +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 echo. echo Building Hard Disk Images (512 directory entry format)... @@ -24,6 +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 if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd512 || exit /b @@ -40,6 +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 if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1024 || exit /b diff --git a/Source/Images/SIMH/HDIR.COM b/Source/Images/Common/SIMH/HDIR.COM similarity index 100% rename from Source/Images/SIMH/HDIR.COM rename to Source/Images/Common/SIMH/HDIR.COM diff --git a/Source/Images/SIMH/R.COM b/Source/Images/Common/SIMH/R.COM similarity index 100% rename from Source/Images/SIMH/R.COM rename to Source/Images/Common/SIMH/R.COM diff --git a/Source/Images/SIMH/RSETSIMH.COM b/Source/Images/Common/SIMH/RSETSIMH.COM similarity index 100% rename from Source/Images/SIMH/RSETSIMH.COM rename to Source/Images/Common/SIMH/RSETSIMH.COM diff --git a/Source/Images/SIMH/TIMER.COM b/Source/Images/Common/SIMH/TIMER.COM similarity index 100% rename from Source/Images/SIMH/TIMER.COM rename to Source/Images/Common/SIMH/TIMER.COM diff --git a/Source/Images/SIMH/URL.COM b/Source/Images/Common/SIMH/URL.COM similarity index 100% rename from Source/Images/SIMH/URL.COM rename to Source/Images/Common/SIMH/URL.COM diff --git a/Source/Images/SIMH/W.COM b/Source/Images/Common/SIMH/W.COM similarity index 100% rename from Source/Images/SIMH/W.COM rename to Source/Images/Common/SIMH/W.COM diff --git a/Source/Images/Makefile b/Source/Images/Makefile index 4a6a5f50..db5b1a24 100644 --- a/Source/Images/Makefile +++ b/Source/Images/Makefile @@ -4,7 +4,7 @@ SYSTEMS = ../CPM22/cpm_wbw.sys ../ZSDOS/zsys_wbw.sys ../CPM3/cpmldr.sys ../ZPM3/zpmldr.sys FDIMGS = fd144_cpm22.img fd144_zsdos.img fd144_nzcom.img \ - fd144_cpm3.img fd144_zpm3.img fd144_ws4.img + fd144_cpm3.img fd144_zpm3.img fd144_ws4.img fd144_qpm.img HD512IMGS = hd512_cpm22.img hd512_zsdos.img hd512_nzcom.img \ hd512_cpm3.img hd512_zpm3.img hd512_ws4.img # HDIMGS += hd512_bp.img @@ -16,8 +16,8 @@ HD512PREFIX = HD1024PREFIX = hd1024_prefix.dat OBJECTS = $(FDIMGS) -OBJECTS += $(HD512IMGS) hd512_dos65.img hd512_combo.img $(HD512PREFIX) -OBJECTS += $(HD1024IMGS) hd1024_combo.img $(HD1024PREFIX) +OBJECTS += $(HD512IMGS) hd512_combo.img hd512_dos65.img hd512_qpm.img$(HD512PREFIX) +OBJECTS += $(HD1024IMGS) hd1024_combo.img hd1024_qpm.img $(HD1024PREFIX) OTHERS = blank144 blankhd512 blankhd1024 @@ -70,7 +70,7 @@ blankhd1024: %.img: $(SYSTEMS) blank144 blankhd512 blankhd1024 Makefile @sys= ; \ case $@ in \ - (*cpm22*) sys=../CPM22/cpm_wbw.sys;; \ + (*cpm22* | *qpm*) sys=../CPM22/cpm_wbw.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 new file mode 100644 index 00000000..d169d50d --- /dev/null +++ b/Source/Images/d_qpm/ReadMe.txt @@ -0,0 +1,20 @@ +===== 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. + +== Notes == + +By default, QP/M saves the current drive/user (2 byte value) at address 0x0008. +This is also the address of the Z80 RST 08 restart vector and conflicts with +RomWBW. When running QINSTALL, you must change the QP/M address for this value +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. + +--WBW 5:29 PM 6/4/2022 diff --git a/Source/Images/d_qpm/u0/d.com b/Source/Images/d_qpm/u0/d.com new file mode 100644 index 00000000..4ce4c987 Binary files /dev/null and b/Source/Images/d_qpm/u0/d.com differ diff --git a/Source/Images/d_qpm/u0/dbginst.com b/Source/Images/d_qpm/u0/dbginst.com new file mode 100644 index 00000000..b88c7c28 Binary files /dev/null and b/Source/Images/d_qpm/u0/dbginst.com differ diff --git a/Source/Images/d_qpm/u0/debugz.com b/Source/Images/d_qpm/u0/debugz.com new file mode 100644 index 00000000..09e36230 Binary files /dev/null and b/Source/Images/d_qpm/u0/debugz.com differ diff --git a/Source/Images/d_qpm/u0/debugz.hlp b/Source/Images/d_qpm/u0/debugz.hlp new file mode 100644 index 00000000..77715650 --- /dev/null +++ b/Source/Images/d_qpm/u0/debugz.hlp @@ -0,0 +1 @@ + Summary of Primary Commands A Assemble M Move memory C Call routine N Next addresses  D Display memory P Pass points  E Extended commands Q Query port  F Fill memory R Read file(s)  G Go S Set memory  H Hex arithmetic T Trace execution  I Input line U Untrace execution J Full-screen trace V Verify memory  K memory view blocK X eXamine registers L List code Y Search  Press SPACE bar for more general help, command letter for help on specific command, or ESCape key to exit help. Running DebugZDebugZ can be executed with or without command line parameters.All values in "[]" are optional, with an asterick "*" being theplace holder when only symbols are loaded (no program). DEBUGZ [program [symbol]] [=addr]"program" is an optional program file (usually filename.COM);"symbol" is an optional symbol file (usually filename.SYM)."addr" is an optional base address to load DebugZ. It must bepreceded by an equal sign ("="); default is to put DebugZ at thehighest location possible (just below DOS). Press SPACE bar for more general help, command letter for help on specific command, or ESCape key to return to main help menu. Summary of NumbersLiteral Numbers: Default are hexadecimal values; any numbers from 0-9 and letters A-F are accepted. (Ex: 0F0D 7A)Hexadecimal Numbers: Same as literal numbers; also, any number preceded by "\" and "H" ("\H") (Ex: \HE77)Decimal Numbers: Decimal numbers are preceded by either a "#" sign or "\" and "D" ("\D"); digits from 0-9 are accepted. (Ex: #9178 #31419 \D3712)Binary Numbers: Binary numbers are preceded by a "\" and "B" ("\B"); digits from 0-1 are accepted. (Ex: \B11100110) Press SPACE bar for more general help, command letter for help on specific command, or ESCape key to return to main help menu. Other ValuesCharacters: Any set of ASCII characters is accepted within paired quotes, either ' or " (must be matching pair). The rightmost char becomes the least significant; a one character string has a zero high-order byte. Case is not translated within quotes. (Ex: "cd" 'y' 'T"' "'7'")Stack values: Stack values are obtained with the dollar sign ("$") symbol. A sequence of n "$" obtains the n-th stacked value in the current program. (Ex: $ = top of stack $$$ = 3rd value on stack) Press SPACE bar for more general help, command letter for help on specific command, or ESCape key to return to main help menu. Symbol ReferencesA symbol is a sequence of ASCII characters ("sym") as read inby DebugZ. Symbols are located in a .SYM symbol file.Valid symbol references are: .sym 16-bit value of "sym" (Ex: .MYSYM) @sym 16-bit value POINTED TO by "sym" (Ex: @MYSYM) =sym 8-bit value POINTED TO by "sym" (Ex: =MYSYM) Press SPACE bar for more general help, command letter for help on specific command, or ESCape key to return to main help menu. ExpressionsAn expression is any collection of numbers, characters, valuesor symbol references separated by binary operators or the threeunary operators. Note that overflow is NOT detected.Examples: .MYSYM+#145*3 @(.MYSYM+14)/#71-^B0110 !+#4124Note that indirect references ("@" and "=") are valid using anyexpression in parenthesis. The last example surfaces a thirdreference, "!", which uses the result from the *last* expression.Also, a leading "+" is implicitly preceded by a "!". Press SPACE bar for more general help, command letter for help on specific command, or ESCape key to return to main help menu. OperatorsDebugZ supports a wide range of unary and binary operators.The list of operators by precedence order and name are:Group A: ~ (bitwise not) () (pair of parenthesis)Group B: @ (16-bit value) = (8-bit value)Group C: * (multiply) / (divide) % (modulo)Group D: + (addition) - (subtract)Group E: & (bit AND) | (bit OR) ^ (bit XOR)Group A and B are unary operators. "@" and "=" must befollowed by either a symbol name or expression inside parenthesis. Groups C, D and E are binary operators. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or AssembleAllows one to enter Z-80 assembly code; the assembly locationis shown on the left before each instruction. As Assemble at location "s" A Assemble starting at last assembly, listed, or traced address. (Ex: A100)Enter lines of code followed by RETURN. Entering a blankline or "." terminates assembly. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or CallCall the subroutine without altering the CPU state of theprogram under test. Cs Call subroutine at location "s". Cs,b Call subroutine at location "s" with register BC set to value "b". Cs,b,d Same as above, except also set register pair DE to value "d".(Ex: C.SUB1 CEA03,#500,\B1010111010001101) Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific co Display memory Db Display 12 lines starting at address "b". Db,e Display starting at "b", ending at "e". Pauses for for page breaks every 16 lines. D Display starting at address after last display. D,e Same, except ending at address "e". DWb Display words starting at address "b". DWb,e Display words starting at "b" and ending at "e". DW Display wors starting at address after last display. DW,e Same, except ending at address "e". -D... Disables pauses at end of each page (pagination)(Ex: D100,!+20 DW#4096) Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter fo Extended CommandsExtended commands direct the operation of DebugZ: ERINTEL Display (Intel) 8080 registers only ER8080 Display (Intel) 8080 registers only ERZ80 Display Z80 registers EPRE Pre-execution view of registers EPOST Post-execution view of registers ETRACE Trace all code (including DOS) -ETRACE Do not code that is < 0100H (no DOS trace) E Show current DebugZ status(NOTE: Only the first two characters of each E command is examined.) Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or Fill memoryFill memory with specific 8-bit data: Fb,e,d Fill memory from location "b" through location "e" with data "d".(Ex: F155,.FOO+#50,'x') Press command letter for help on specific command, or ESCape key to return to main help menu. Press comm GoGO executes a program with up to two breakpoints: G Execute from the current PC G,b Same as above with breakpoint at "b" G,b,c Same as above with additional breakpoint at "c" Ga Execute at address "a" Ga,b Same as above with breakpoint at "b" Ga,b,c Same as above with additional breakpoint at "c" -G... Disable the normal display of pass points G,$ Break at value on bottom of stack (return address)(Ex: G100 G.START,3417,.ERR -G.ENTER,.EXIT+20) Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on speci Hex ValuesThe Hex command allows arithmetic operations in differentbases as well as listing of the symbol table: Ha,b Displays sum (a+b) and difference (a-b) in hexadecimal Ha Displays result in up to four forms: hex #decimal 'char' .sym "char" is only displayed if it exists "sym" is the symbolic value, if any H Displays a list of all symbols; paginated -H Same, except no pauses at page break(NOTE: "a" and "b" are any complex expressions.) Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter Input LineInitializes default buffer at 0080H, default FCB at 005CH, anddefault secondary FCB at 006CH to the string entered: Istring(Ex: I FOO.COM FOO.SYM ITEST.COM I* TEST.SYM)The primary filename is used by Read as the program to debug;the secondary filename is used by Read as the symbol table. Press command letter for help on specific command, or ESCape key to return to main help menu. Press Full Screen TraceFull trace mode is a powerful method to step through a program.There are four parts to the screen: memory display (4 lines),register display (2 lines), instruction display (16 lines), andcommand line area (2 lines). The memory area may be empty if thememory block (K) is not enabled. Other symbols include: > Instruction at which registers are displayed. = Current program counter ?: Full screen command promptDebugZ retains up to 12 instructions of registers with a 4instruction look-ahead; the memory window is updated automatically. Press SPACE bar for more Full Screen Trace help, command letter for help on specific command, or ESCape key to return to main help menu. Full Screen Trace (cont.)Non-execution control commands include: < or , Move register pointer backwards > or . Move register pointer forwards = Set program counter K Set memory block view address (enable display) + Scroll memory view window forward by 32 bytes - Scroll memory view window backwards by 32 bytes H Expression evaluation (display at bottom) ? Help Q or X Quit full-screen trace mode (return to '#' prompt) Press SPACE bar for more Full Screen Trace help, command letter for help on specific command, or ESCape key to return to main help menu. Full Screen Trace (cont.)Program execution instructions are: space Execute one instruction; no trace of CALLs return Execute one instruction; follow CALLs 1 to 5 Execute at 1 to 5 instructions/second; no trace of CALLs; any key halts 6 to 0 Execute at 1 (6) to 5 (0) instructions/second; follow CALLs; any key halts Ga Continue execution until address "a"; no display of intermediate registers/instructions. Ga,b Same, with an additional breakpoint at "b". Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on spec Memory View BlocKSets initial bounds of memory block to view, if any, duringfull-screen trace (J) of a program. Ka Sets the memory block to view from address "a" for up to 64 locations. KWa Same, except view words rather than bytes. -K Disables memory block view.Only the starting address is entered. DebugZ will round tonearest 16-byte boundary and display 64 bytes of memory. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for List CodeList assembly code including labels and symbols: Lb List disassembled code starting at "b" for 12 lines. Lb,e List disassembled code starting at "b" and ending at "e"; pauses for page breaks. L List disassembled code starting after last disassembled or traced address. L,e Same, except ending at "e". -L... Same as above commands, except that pagination is disabled. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or ESCape key t Move MemoryMove block of memory to another location: Ms,e,d Move data from locations "s" through "e" to location "d" (through "d+e-s").A head-to-tail or tail-to-head move is performed as necessaryto avoid memory overlap collision. Note that the source memorylocations from "s" through "e" are not altered PROVIDED thedestination block does not overwrite the source block duringthe copy operation. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command Next AddressesDebugZ displays the memory usage when the command Nis entered. Address ranges utilized are displayed for: Prog Range occupied by program under test, if loaded Free Free memory range Symbols Symbol storage, if any DebugZ DebugZ debugger program Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or ESCape key to return t Pass PointsA "pass point" is a program address to monitor during execution.Each pass point has a counter with a value from 1 to 255indicating the number of times this address has been reached.When the counter reaches 1, it stays there; any counters with avalue of 1 are treated as "breakpoints". Program executionstops at any breakpoint. Up to 8 passpoints are allowed. Pp Enter passpoint address "p"; pass count defaults to 1. Pp,c Same, except sets pass count to "c". Press SPACE bar for more Pass Point help, or command letter for help on specific command, or ESCape key to return to main help menu. Pass Points (cont.)When hitting an active pass point during execution, the registersare displayed and the pass count, address, and symbol value (ifany) are shown: count PASS address .sym 8080 registers; instruction Z80 registers (if enabled)Display of pass points can be disabled during trace (T), untrace(U), and execution (G). Again, execution stops when the pass pointis or becomes a value of one. Press SPACE bar for more Pass Point help, or command letter for help on specific command, or ESCape key to return to main help menu. Pass Points (cont.)The current list of pass points can be displayed by entering: PA list of the pass points is given in the follwing form: pass-value pass-address (symbol location, if any)Pass points can be deleted by entering: -Pa where "a" is the pass address to remove -P which deletes ALL pass points Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific c Query PortThe Query command allows one to read and/or modify the value at agiven port. A full 16-bit port value is accepted and used forboth input and output. The format is: QIp Display the value input from port "p". QI Display the value input from port; the last port number "p" referenced is automatically used. QOp,v Output 8-bit value "v" to port "p". Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific com Read File(s)The Read command loads a file into memory for debugging and/orreads a symbol table into DebugZ. The files are specifiedusing the Input command. The format for the Read command is: R Read executable file (if specified by Input) into memory starting at 0100H. Read symbol file, if specified. Ra Same, except Read executable file into memory at location "a" PLUS 0100H. For example, "R200" reads the file in at location 0300H. The offset is ignored when reading the symbol file, if any. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or ESCape key to return to main hel Set MemorySet memory alters the memory contents. Commands are: Sa Substitute bytes starting from location "a". SWa Substitute words starting from location "a".In both cases, DebugZ prompts with the address and either 8-bitor 16-bit value at that location. One can either enter a new8-bit (16-bit) value, press RETURN on a blank line to skip to thenext location, or enter "." following by RETURN to quit.Set can also be used to assign ASCII strings by beginning the linewith double-quotes ("). DebugZ strips the leading quote beforesetting memory to the string. Press command letter for help on specific command, or ESCape key to return to main help menu. Trace ExecutionTrace execution starting from current PC for the specified numberof instructions. The flags and registers are displayed after eachinstruction. Subroutines (CALLs) are optionally traced. T Trace execution for one instruction including CALL statements. Tn Same, except trace for "n" instructions. TW Trace one instruction, do NOT trace CALLs. TWn Same, except trace for "n" instructions.Note that tracing to addresses < 0100H may be disabled if the-ETRACE command has been specified (or is the default). Press command letter for help on specific command, or ESCape key to return to main help menu. Untrace ExecutionTrace execution starting from current PC for the specified numberof instructions. The flags and registers are NOT displayedafter each instruction. Subroutines (CALLs) are optionally traced. U Trace execution for one instruction including CALL statements. Display Pass points. Un Same, but trace for "n" instructions. UW Trace one instruction, do NOT trace CALLs. UWn Same, but trace for "n" instructions. -U.. Same, except do NOT display pass points.Note that tracing to addresses < 0100H may be disabled if the-ETRACE command has been specified (or is the default). Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, Verify MemoryVerify (compare) block of memory at one location to another: Vs,e,d Verify data at locations "s" through "e" against location "d" (through "d+e-s"); paginates output. -Vs,e,d Same except no pagination.Any differences between the blocks are printed as: src-addr src-value dst-addr dst-value Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or eXamine Register ContentsThe eXamine command can list the contents of all registers (andthe current instruction) or alter any of them. Valid commands are: X Displays the current register contents, flags, and instruction. Xr Change register contents where "r" can be: "A", "B" for BC, "D" for DE, "H" for HL, "P" for PC, "S" for SP, "X" for IX, and "Y" for IY. Xr' Adding the "'" instructs DebugZ to alter the "backside" Z80 registers. Valid "r" include "A", "B", "D", and "H". Press SPACE bar for more help on eXamine Register Contents, command letter for help on specific command, or ESCape key to return to main help menu. eXamine Register Contents (cont.)Changing the register value involves entering the new 16-bitvalue (8-bit for A register). An empty line leaves the valueunaltered. Altering the flags is done by entering: Xf Change flags: (C)arry, (Z)ero, (M)inus, (E)ven parity, (S)ubtract, and BCD hal(F) carry. Xf' Same, except alter the "backside" Z80 flags.Entering a value of "1" sets the flag, "0" resets it.Note that although any register or flag can be changed, display of the "backside" Z80 registers may optionally be suppressed (E). Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or Search MemorySearch allows searching for any sequence of bytes or characters,including wild cards; up to 63-byte match strings may be searched. YBs,f Sets bound of search between address "s" and address "f", inclusive. Yq Search for sequence "q" starting from address "s". YWq Same, except search using 16-bit word values. Y Continue search for last sequence "q" starting from current address."q" is of the form: value1,value2,....,value-n where "value" is a byte, word, or string in quotes (""). Aquestion mark ("?") used anywhere is a wildcard that matches ANY byte. Press command letter for help on specific command, or ESCape key to return to main help menu. Press command letter for help on specific command, or \ No newline at end of file diff --git a/Source/Images/d_qpm/u0/dhoriz.com b/Source/Images/d_qpm/u0/dhoriz.com new file mode 100644 index 00000000..f97a499b Binary files /dev/null and b/Source/Images/d_qpm/u0/dhoriz.com differ diff --git a/Source/Images/d_qpm/u0/hello.qpm b/Source/Images/d_qpm/u0/hello.qpm new file mode 100644 index 00000000..30aba4e1 --- /dev/null +++ b/Source/Images/d_qpm/u0/hello.qpm @@ -0,0 +1,3 @@ + + G2Welcome to QP/M 2.71G0 + \ No newline at end of file diff --git a/Source/Images/d_qpm/u0/lz.com b/Source/Images/d_qpm/u0/lz.com new file mode 100644 index 00000000..9a6eef86 Binary files /dev/null and b/Source/Images/d_qpm/u0/lz.com differ diff --git a/Source/Images/d_qpm/u0/qbackup.com b/Source/Images/d_qpm/u0/qbackup.com new file mode 100644 index 00000000..5e5f218f Binary files /dev/null and b/Source/Images/d_qpm/u0/qbackup.com differ diff --git a/Source/Images/d_qpm/u0/qinstall.com b/Source/Images/d_qpm/u0/qinstall.com new file mode 100644 index 00000000..20fcaaf6 Binary files /dev/null and b/Source/Images/d_qpm/u0/qinstall.com differ diff --git a/Source/Images/d_qpm/u0/qpatch.com b/Source/Images/d_qpm/u0/qpatch.com new file mode 100644 index 00000000..ea57b743 Binary files /dev/null and b/Source/Images/d_qpm/u0/qpatch.com differ diff --git a/Source/Images/d_qpm/u0/qpip.com b/Source/Images/d_qpm/u0/qpip.com new file mode 100644 index 00000000..c926b8af Binary files /dev/null and b/Source/Images/d_qpm/u0/qpip.com differ diff --git a/Source/Images/d_qpm/u0/qpmclk.mac b/Source/Images/d_qpm/u0/qpmclk.mac new file mode 100644 index 00000000..39839836 --- /dev/null +++ b/Source/Images/d_qpm/u0/qpmclk.mac @@ -0,0 +1,107 @@ + .z80 +; +; Clock for supplementing normal MYZ80 bios +; +; +;========================================================================== +; +; +false equ 0 +true equ not false + +size equ 6275 ;size in 0.01 k (e.g. 60k = 6000, + ; 59.5k = 5950, 48.25k = 4825) + +ioval equ 80H ;IOBYTE value on cold boot (see documentation) +; +; Lower memory stuff +; +IOBYTE EQU 3 ;IOBYTE location +DSKUSR EQU 4 ;Disk/user location +ENTRY EQU 5 +WARMB EQU 0 +; +; QP/M locations +; +QPMBIOS EQU size/25*256 +QDOS EQU QPMBIOS-(0EA00H-0DC06H) +QCP EQU QDOS-806H +; +; MYZ80 API locations used +; +CONST EQU 0FFE1H ;Console status +CONIN EQU 0FFE2H ;Console input +CRTOUT EQU 0FFE3H ;Send char to console +LIST EQU 0FFE4H ;List character +PUNCH EQU 0FFE5H ;Punch character (auxout) +READER EQU 0FFE6H ;Reader character (auxin) +HOME EQU 0FFE7H ;Home disk +SELDSK EQU 0FFE8H ;Select disk in C-reg. +SETTRK EQU 0FFE9H ;Seek track in C-reg. +SETSEC EQU 0FFEAH ;Seek sector +SETDMA EQU 0FFEBH ;Set disk i/o address +READ EQU 0FFECH ;Read sector +WRITE EQU 0FFEDH ;Write sector +PRSTAT EQU 0FFEEH ;List status +SECTRAN EQU 0FFEFH ;Sector xlation +CONOUTS EQU 0FFF0H ;Console output status +XBIOS EQU 0FFFDH ;Extended MYZ80 functions +; +; High (MONITOR) area data locations +; +; Printer locations in high memory +; +HISTACK EQU 0FF14H ;temp +; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; + ASEG + ORG 100H + .phase 0fec0h +; +qpmclk:: + LD A,42 + LD HL,CLKBUF + PUSH HL + CALL XBIOS ; BCD hr/min/sec/century/yr/mon/day + ; convert from BCD to normal -- and fix things up + POP HL + LD B,7 + DEC HL +Q0: INC HL + XOR A + RRD ; rotate low nibble of A through nibbles of (HL) + LD D,A ; save low nibble + LD A,(HL) ; get high nibble + ADD A,A ; * 2 + LD C,A ; save + ADD A,A ; * 4 + ADD A,A ; * 8 + ADD A,C ; * 10 + ADD A,D ; + low digit + LD (HL),A ; set non-BCD version + DJNZ Q0 + ; now realign values from system call + LD C,A ; day + DEC HL + LD B,(HL) ; mon + DEC HL + LD E,(HL) ; yr + DEC HL + DEC HL ; skip century + PUSH BC + LD B,(HL) ; sec + DEC HL + LD C,(HL) ; min + DEC HL + LD D,(HL) ; hr + LD (CLKBUF+2),DE ; yrE/hrD + LD (CLKBUF+4),BC ; minC/secB + POP BC + LD (CLKBUF),BC ; dayC/monB + ; did the adjustments -- return ptr to day/mon/yr/hr/min/sec + ret +CLKBUF: DB 0,0,0,0,0,0,0 + .dephase + end + \ No newline at end of file diff --git a/Source/Images/d_qpm/u0/qpmcmds.txt b/Source/Images/d_qpm/u0/qpmcmds.txt new file mode 100644 index 00000000..f63d04f7 --- /dev/null +++ b/Source/Images/d_qpm/u0/qpmcmds.txt @@ -0,0 +1,22 @@ + + G2QPM CommandsG0 + G2============G0 +The QCP command processor has the following built-in commands; +afn=wildcard filename(s); ufn=filename; []=optional + +G2DFD [drive[:]]G0 - Sets the default drive (A: at startup) +G2DFLTG0 - Shows the default drive and user (@=disabled) +G2DFUG0 - Sets the default user (0 at startup) +G2DIR [afn]G0 - Simple directory listing (D.COM is recommended) +G2ERA afnG0 - Erase specified file(s) +G2GET addr ufnG0 - Load file at address +G2GO [params]G0 - Reruns the program in TPA (with params) +G2JUMP addr [params]G0 - Run the program at address (with params) +G2LIST ufnG0 - Print the specified file on the LST: device +G2REN ufnnew=ufnoldG0 - Rename ufnold to ufnnew +G2SAVE n ufnG0 - Save n pages from the TPA into file +G2TIMEG0 - Display the current date and time +G2TOFG0 - Sends top-of-form character to LST: device +G2TYPE ufn [option]G0 - Display file on console, with page pauses +G2USER [n]G0 - Set user # to n (0 if no value given) + \ No newline at end of file diff --git a/Source/Images/d_qpm/u0/qpmutils.txt b/Source/Images/d_qpm/u0/qpmutils.txt new file mode 100644 index 00000000..e5bf0b7b --- /dev/null +++ b/Source/Images/d_qpm/u0/qpmutils.txt @@ -0,0 +1,19 @@ + + G2QPM Utility ProgramsG0 + G2====================G0 +QP/M comes loaded with all utility programs for emulator use: +afn=wildcard filename(s); ufn=filename; []=optional + +G2D [afn] [options]G0 - Directory listing with numerous options +G2DHORIZ [afn] [...]G0 - Same with horizontal directory listing +G2QBACKUPG0 - Backup entire disk or selected files +G2QPATCHG0 - Modify settings of D.COM +G2QPIPG0 - Copy files, peripheral interchange, etc. +G2QSTAMP(V|X)G0 - Time/date stamp disk (QSTAMPV recommended) +G2QSTATG0 - Display/change file status +G2QSUBG0 - Powerful batch processing, nesting supported +G2QSWEEPG0 - Powerful interactive file manipulation +G2TDCNFGG0 - Configure real-time clock (NOT NEEDED) + +We recommend G2LinkZG0 and G2DebugZG0; get from G2http://www.microcodeconsulting.comG0. + \ No newline at end of file diff --git a/Source/Images/d_qpm/u0/qstamp.com b/Source/Images/d_qpm/u0/qstamp.com new file mode 100644 index 00000000..e1c00caf Binary files /dev/null and b/Source/Images/d_qpm/u0/qstamp.com differ diff --git a/Source/Images/d_qpm/u0/qstampv.com b/Source/Images/d_qpm/u0/qstampv.com new file mode 100644 index 00000000..3cb38e1d Binary files /dev/null and b/Source/Images/d_qpm/u0/qstampv.com differ diff --git a/Source/Images/d_qpm/u0/qstampx.com b/Source/Images/d_qpm/u0/qstampx.com new file mode 100644 index 00000000..6b79604e Binary files /dev/null and b/Source/Images/d_qpm/u0/qstampx.com differ diff --git a/Source/Images/d_qpm/u0/qstat.com b/Source/Images/d_qpm/u0/qstat.com new file mode 100644 index 00000000..957d860f Binary files /dev/null and b/Source/Images/d_qpm/u0/qstat.com differ diff --git a/Source/Images/d_qpm/u0/qsub.com b/Source/Images/d_qpm/u0/qsub.com new file mode 100644 index 00000000..a15de060 Binary files /dev/null and b/Source/Images/d_qpm/u0/qsub.com differ diff --git a/Source/Images/d_qpm/u0/qsweep.com b/Source/Images/d_qpm/u0/qsweep.com new file mode 100644 index 00000000..8fdd4c08 Binary files /dev/null and b/Source/Images/d_qpm/u0/qsweep.com differ diff --git a/Source/Images/d_qpm/u0/qterm.dat b/Source/Images/d_qpm/u0/qterm.dat new file mode 100644 index 00000000..446fbaa0 Binary files /dev/null and b/Source/Images/d_qpm/u0/qterm.dat differ diff --git a/Source/Images/d_qpm/u0/qterms.lib b/Source/Images/d_qpm/u0/qterms.lib new file mode 100644 index 00000000..d29019c7 Binary files /dev/null and b/Source/Images/d_qpm/u0/qterms.lib differ diff --git a/Source/Images/d_qpm/u0/setqterm.com b/Source/Images/d_qpm/u0/setqterm.com new file mode 100644 index 00000000..c49bdd71 Binary files /dev/null and b/Source/Images/d_qpm/u0/setqterm.com differ diff --git a/Source/Images/d_qpm/u0/tdcnfg.com b/Source/Images/d_qpm/u0/tdcnfg.com new file mode 100644 index 00000000..825c73bd Binary files /dev/null and b/Source/Images/d_qpm/u0/tdcnfg.com differ diff --git a/Source/Images/diskdefs b/Source/Images/diskdefs index a16a4659..500fba11 100644 --- a/Source/Images/diskdefs +++ b/Source/Images/diskdefs @@ -311,6 +311,7 @@ diskdef wbw_rom1024 end # RomWBW 720K floppy media + diskdef wbw_fd720 seclen 512 tracks 160 @@ -323,6 +324,7 @@ diskdef wbw_fd720 end # RomWBW 1.44M floppy media + diskdef wbw_fd144 seclen 512 tracks 160 @@ -335,6 +337,7 @@ diskdef wbw_fd144 end # RomWBW 360K floppy media + diskdef wbw_fd360 seclen 512 tracks 80 @@ -347,6 +350,7 @@ diskdef wbw_fd360 end # RomWBW 1.20M floppy media + diskdef wbw_fd120 seclen 512 tracks 160 @@ -359,7 +363,8 @@ diskdef wbw_fd120 end # RomWBW 8320KB Hard Disk Slice (512 directory entry format) -# Legacy format, 512 dir entries, 16,630 sectors / slice +# Legacy format: 512 dir entries, 16,630 sectors / slice + diskdef wbw_hd512 seclen 512 tracks 1040 @@ -372,6 +377,9 @@ diskdef wbw_hd512 end # First 4 slices of wbw_hd512 +# Assumes first slice (slice 0) starts at sector 0 +# Offset of any slice (in tracks) = (1040 * ) + diskdef wbw_hd512_0 seclen 512 tracks 1040 @@ -380,45 +388,50 @@ diskdef wbw_hd512_0 maxdir 512 skew 0 boottrk 16 + offset 0T os 2.2 end diskdef wbw_hd512_1 seclen 512 - tracks 2080 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 1056 + boottrk 16 + offset 1040T os 2.2 end diskdef wbw_hd512_2 seclen 512 - tracks 3120 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 2096 + boottrk 16 + offset 2080T os 2.2 end diskdef wbw_hd512_3 seclen 512 - tracks 4160 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 3136 + boottrk 16 + offset 3120T os 2.2 end # RomWBW 8MB Hard Disk (1024 directory entry format) -# New format, 1024 dir entries, 16,384 sectors / slice +# New format: 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix + diskdef wbw_hd1024 seclen 512 tracks 1024 @@ -431,110 +444,124 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 1MB prefix (2048 sectors) +# Assumes standard 1MB prefix +# Offset of any slice (in tracks) = 128 + (1024 * ) + diskdef rc2014a seclen 512 tracks 512 @@ -542,155 +569,171 @@ diskdef rc2014a blocksize 4096 maxdir 512 boottrk 1 + offset 0T os 2.2 end diskdef rc2014b seclen 512 - tracks 1024 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 512 + boottrk 0 + offset 512T os 2.2 end diskdef rc2014c seclen 512 - tracks 1536 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1024 + boottrk 0 + offset 1024T os 2.2 end diskdef rc2014d seclen 512 - tracks 2048 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1536 + boottrk 0 + offset 1536T os 2.2 end diskdef rc2014e seclen 512 - tracks 2560 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2048 + boottrk 0 + offset 2048T os 2.2 end diskdef rc2014f seclen 512 - tracks 3072 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2560 + boottrk 0 + offset 2560T os 2.2 end diskdef rc2014g seclen 512 - tracks 3584 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3072 + boottrk 0 + offset 3072T os 2.2 end diskdef rc2014h seclen 512 - tracks 4096 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3584 + boottrk 0 + offset 3584T os 2.2 end diskdef rc2014i seclen 512 - tracks 4608 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4096 + boottrk 0 + offset 4096T os 2.2 end diskdef rc2014j seclen 512 - tracks 5120 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4608 + boottrk 0 + offset 4608T os 2.2 end diskdef rc2014k seclen 512 - tracks 5632 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5120 + boottrk 0 + offset 5120T os 2.2 end diskdef rc2014l seclen 512 - tracks 6144 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5632 + boottrk 0 + offset 5632T os 2.2 end diskdef rc2014m seclen 512 - tracks 6656 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6144 + boottrk 0 + offset 6144T os 2.2 end diskdef rc2014n seclen 512 - tracks 7168 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6656 + boottrk 0 + offset 6656T os 2.2 end diskdef rc2014o seclen 512 - tracks 7680 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7168 + boottrk 0 + offset 7168T os 2.2 end diskdef rc2014p seclen 512 - tracks 7808 + tracks 128 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7680 + boottrk 0 + offset 7680T os 2.2 end diff --git a/Source/Images/fd_qpm.txt b/Source/Images/fd_qpm.txt new file mode 100644 index 00000000..0d66ff3a --- /dev/null +++ b/Source/Images/fd_qpm.txt @@ -0,0 +1,52 @@ +# +# Add the ReadMe document +# +d_qpm/ReadMe.txt 0: +# +# Include CP/M 2.2 files +# +d_cpm22/u0/*.* 0: +# +# Add RomWBW utilities +# +#../../Binary/Apps/*.com 0: +../../Binary/Apps/assign.com 0: +../../Binary/Apps/cpuspd.com 0: +../../Binary/Apps/fat.com 0: +../../Binary/Apps/fdu.com 0: +../../Binary/Apps/fdu.doc 0: +../../Binary/Apps/format.com 0: +../../Binary/Apps/mode.com 0: +../../Binary/Apps/rtc.com 0: +../../Binary/Apps/survey.com 0: +../../Binary/Apps/syscopy.com 0: +../../Binary/Apps/sysgen.com 0: +../../Binary/Apps/talk.com 0: +../../Binary/Apps/tbasic.com 0: +../../Binary/Apps/timer.com 0: +../../Binary/Apps/tune.com 0: +../../Binary/Apps/xm.com 0: +../../Binary/Apps/zmp.com 0: +../../Binary/Apps/zmp.hlp 0: +../../Binary/Apps/zmp.doc 0: +../../Binary/Apps/zmxfer.ovr 0: +../../Binary/Apps/zmterm.ovr 0: +../../Binary/Apps/zminit.ovr 0: +../../Binary/Apps/zmconfig.ovr 0: +../../Binary/Apps/zmd.com 0: +../../Binary/Apps/vgmplay.com 0: +# +# Add Tune sample files +# +../../Binary/Apps/Tunes/*.pt? 3: +../../Binary/Apps/Tunes/*.mym 3: +../../Binary/Apps/Tunes/*.vgm 3: +# +# Add OS image +# +../CPM22/cpm_wbw.sys 0:cpm.sys +# +# Add Common Applications +# +Common/All/*.* 0: +Common/CPM22/*.* 0: diff --git a/Source/Images/hd_bp.txt b/Source/Images/hd_bp.txt index 340f07d3..491c683f 100644 --- a/Source/Images/hd_bp.txt +++ b/Source/Images/hd_bp.txt @@ -59,3 +59,4 @@ Common/Z/u15/*.* 15: Common/Z3/u10/*.* 10: Common/Z3/u14/*.* 14: Common/Z3/u15/*.* 15: +Common/SIMH/*.* 13: diff --git a/Source/Images/hd_cpm22.txt b/Source/Images/hd_cpm22.txt index a57d2283..1643bff5 100644 --- a/Source/Images/hd_cpm22.txt +++ b/Source/Images/hd_cpm22.txt @@ -53,3 +53,4 @@ cpnet12/*.* 4: # Common/All/*.* 0: Common/CPM22/*.* 0: +Common/SIMH/*.* 13: diff --git a/Source/Images/hd_cpm3.txt b/Source/Images/hd_cpm3.txt index 2cc80492..366224f5 100644 --- a/Source/Images/hd_cpm3.txt +++ b/Source/Images/hd_cpm3.txt @@ -65,3 +65,4 @@ cpnet3/*.* 4: # Common/All/*.* 0: Common/CPM3/*.* 0: +Common/SIMH/*.* 13: diff --git a/Source/Images/hd_nzcom.txt b/Source/Images/hd_nzcom.txt index 95968469..04914198 100644 --- a/Source/Images/hd_nzcom.txt +++ b/Source/Images/hd_nzcom.txt @@ -76,7 +76,4 @@ Common/Z/u15/*.* 0: Common/Z3/u10/*.* 0: Common/Z3/u14/*.* 0: Common/Z3/u15/*.* 0: -# -# Temporary!!! -# -SIMH/*.* 15: +Common/SIMH/*.* 13: diff --git a/Source/Images/hd_qpm.txt b/Source/Images/hd_qpm.txt new file mode 100644 index 00000000..5b470527 --- /dev/null +++ b/Source/Images/hd_qpm.txt @@ -0,0 +1,60 @@ +# +# Add the ReadMe document +# +d_qpm/ReadMe.txt 0: +# +# Include CP/M 2.2 files +# +d_cpm22/u0/*.* 0: +# +# Add RomWBW utilities +# +#../../Binary/Apps/*.com 0: +../../Binary/Apps/assign.com 0: +../../Binary/Apps/cpuspd.com 0: +../../Binary/Apps/fat.com 0: +../../Binary/Apps/fdu.com 0: +../../Binary/Apps/fdu.doc 0: +../../Binary/Apps/format.com 0: +../../Binary/Apps/mode.com 0: +../../Binary/Apps/rtc.com 0: +../../Binary/Apps/survey.com 0: +../../Binary/Apps/syscopy.com 0: +../../Binary/Apps/sysgen.com 0: +../../Binary/Apps/talk.com 0: +../../Binary/Apps/tbasic.com 0: +../../Binary/Apps/timer.com 0: +../../Binary/Apps/tune.com 0: +../../Binary/Apps/xm.com 0: +../../Binary/Apps/zmp.com 0: +../../Binary/Apps/zmp.hlp 0: +../../Binary/Apps/zmp.doc 0: +../../Binary/Apps/zmxfer.ovr 0: +../../Binary/Apps/zmterm.ovr 0: +../../Binary/Apps/zminit.ovr 0: +../../Binary/Apps/zmconfig.ovr 0: +../../Binary/Apps/zmd.com 0: +../../Binary/Apps/vgmplay.com 0: +# +../../Binary/Apps/Test/*.com 2: +Test/*.* 2: +# +# Add Tune sample files +# +../../Binary/Apps/Tunes/*.pt? 3: +../../Binary/Apps/Tunes/*.mym 3: +../../Binary/Apps/Tunes/*.vgm 3: +# +# Add CPNET client files +# +cpnet12/*.* 4: +# +# Add OS image +# +../CPM22/cpm_wbw.sys 0:cpm.sys +# +# Add Common Applications +# +Common/All/*.* 0: +Common/CPM22/*.* 0: +Common/SIMH/*.* 13: diff --git a/Source/Images/hd_zpm3.txt b/Source/Images/hd_zpm3.txt index 55853d5b..9452391b 100644 --- a/Source/Images/hd_zpm3.txt +++ b/Source/Images/hd_zpm3.txt @@ -70,3 +70,4 @@ Common/Z/u15/*.* 15: Common/Z3/u10/*.* 10: Common/Z3/u14/*.* 14: Common/Z3/u15/*.* 15: +Common/SIMH/*.* 13: diff --git a/Source/Images/hd_zsdos.txt b/Source/Images/hd_zsdos.txt index e23d5c4a..9f6d0537 100644 --- a/Source/Images/hd_zsdos.txt +++ b/Source/Images/hd_zsdos.txt @@ -69,3 +69,4 @@ Common/CPM22/*.* 0: #Common/Z/u10/*.* 0: Common/Z/u14/*.* 0: Common/Z/u15/*.* 0: +Common/SIMH/*.* 13: diff --git a/Source/RomDsk/diskdefs b/Source/RomDsk/diskdefs index a16a4659..500fba11 100644 --- a/Source/RomDsk/diskdefs +++ b/Source/RomDsk/diskdefs @@ -311,6 +311,7 @@ diskdef wbw_rom1024 end # RomWBW 720K floppy media + diskdef wbw_fd720 seclen 512 tracks 160 @@ -323,6 +324,7 @@ diskdef wbw_fd720 end # RomWBW 1.44M floppy media + diskdef wbw_fd144 seclen 512 tracks 160 @@ -335,6 +337,7 @@ diskdef wbw_fd144 end # RomWBW 360K floppy media + diskdef wbw_fd360 seclen 512 tracks 80 @@ -347,6 +350,7 @@ diskdef wbw_fd360 end # RomWBW 1.20M floppy media + diskdef wbw_fd120 seclen 512 tracks 160 @@ -359,7 +363,8 @@ diskdef wbw_fd120 end # RomWBW 8320KB Hard Disk Slice (512 directory entry format) -# Legacy format, 512 dir entries, 16,630 sectors / slice +# Legacy format: 512 dir entries, 16,630 sectors / slice + diskdef wbw_hd512 seclen 512 tracks 1040 @@ -372,6 +377,9 @@ diskdef wbw_hd512 end # First 4 slices of wbw_hd512 +# Assumes first slice (slice 0) starts at sector 0 +# Offset of any slice (in tracks) = (1040 * ) + diskdef wbw_hd512_0 seclen 512 tracks 1040 @@ -380,45 +388,50 @@ diskdef wbw_hd512_0 maxdir 512 skew 0 boottrk 16 + offset 0T os 2.2 end diskdef wbw_hd512_1 seclen 512 - tracks 2080 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 1056 + boottrk 16 + offset 1040T os 2.2 end diskdef wbw_hd512_2 seclen 512 - tracks 3120 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 2096 + boottrk 16 + offset 2080T os 2.2 end diskdef wbw_hd512_3 seclen 512 - tracks 4160 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 3136 + boottrk 16 + offset 3120T os 2.2 end # RomWBW 8MB Hard Disk (1024 directory entry format) -# New format, 1024 dir entries, 16,384 sectors / slice +# New format: 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix + diskdef wbw_hd1024 seclen 512 tracks 1024 @@ -431,110 +444,124 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 1MB prefix (2048 sectors) +# Assumes standard 1MB prefix +# Offset of any slice (in tracks) = 128 + (1024 * ) + diskdef rc2014a seclen 512 tracks 512 @@ -542,155 +569,171 @@ diskdef rc2014a blocksize 4096 maxdir 512 boottrk 1 + offset 0T os 2.2 end diskdef rc2014b seclen 512 - tracks 1024 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 512 + boottrk 0 + offset 512T os 2.2 end diskdef rc2014c seclen 512 - tracks 1536 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1024 + boottrk 0 + offset 1024T os 2.2 end diskdef rc2014d seclen 512 - tracks 2048 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1536 + boottrk 0 + offset 1536T os 2.2 end diskdef rc2014e seclen 512 - tracks 2560 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2048 + boottrk 0 + offset 2048T os 2.2 end diskdef rc2014f seclen 512 - tracks 3072 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2560 + boottrk 0 + offset 2560T os 2.2 end diskdef rc2014g seclen 512 - tracks 3584 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3072 + boottrk 0 + offset 3072T os 2.2 end diskdef rc2014h seclen 512 - tracks 4096 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3584 + boottrk 0 + offset 3584T os 2.2 end diskdef rc2014i seclen 512 - tracks 4608 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4096 + boottrk 0 + offset 4096T os 2.2 end diskdef rc2014j seclen 512 - tracks 5120 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4608 + boottrk 0 + offset 4608T os 2.2 end diskdef rc2014k seclen 512 - tracks 5632 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5120 + boottrk 0 + offset 5120T os 2.2 end diskdef rc2014l seclen 512 - tracks 6144 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5632 + boottrk 0 + offset 5632T os 2.2 end diskdef rc2014m seclen 512 - tracks 6656 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6144 + boottrk 0 + offset 6144T os 2.2 end diskdef rc2014n seclen 512 - tracks 7168 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6656 + boottrk 0 + offset 6656T os 2.2 end diskdef rc2014o seclen 512 - tracks 7680 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7168 + boottrk 0 + offset 7168T os 2.2 end diskdef rc2014p seclen 512 - tracks 7808 + tracks 128 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7680 + boottrk 0 + offset 7680T os 2.2 end diff --git a/Tools/cpmtools/diskdefs b/Tools/cpmtools/diskdefs index a16a4659..500fba11 100644 --- a/Tools/cpmtools/diskdefs +++ b/Tools/cpmtools/diskdefs @@ -311,6 +311,7 @@ diskdef wbw_rom1024 end # RomWBW 720K floppy media + diskdef wbw_fd720 seclen 512 tracks 160 @@ -323,6 +324,7 @@ diskdef wbw_fd720 end # RomWBW 1.44M floppy media + diskdef wbw_fd144 seclen 512 tracks 160 @@ -335,6 +337,7 @@ diskdef wbw_fd144 end # RomWBW 360K floppy media + diskdef wbw_fd360 seclen 512 tracks 80 @@ -347,6 +350,7 @@ diskdef wbw_fd360 end # RomWBW 1.20M floppy media + diskdef wbw_fd120 seclen 512 tracks 160 @@ -359,7 +363,8 @@ diskdef wbw_fd120 end # RomWBW 8320KB Hard Disk Slice (512 directory entry format) -# Legacy format, 512 dir entries, 16,630 sectors / slice +# Legacy format: 512 dir entries, 16,630 sectors / slice + diskdef wbw_hd512 seclen 512 tracks 1040 @@ -372,6 +377,9 @@ diskdef wbw_hd512 end # First 4 slices of wbw_hd512 +# Assumes first slice (slice 0) starts at sector 0 +# Offset of any slice (in tracks) = (1040 * ) + diskdef wbw_hd512_0 seclen 512 tracks 1040 @@ -380,45 +388,50 @@ diskdef wbw_hd512_0 maxdir 512 skew 0 boottrk 16 + offset 0T os 2.2 end diskdef wbw_hd512_1 seclen 512 - tracks 2080 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 1056 + boottrk 16 + offset 1040T os 2.2 end diskdef wbw_hd512_2 seclen 512 - tracks 3120 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 2096 + boottrk 16 + offset 2080T os 2.2 end diskdef wbw_hd512_3 seclen 512 - tracks 4160 + tracks 1040 sectrk 16 blocksize 4096 maxdir 512 skew 0 - boottrk 3136 + boottrk 16 + offset 3120T os 2.2 end # RomWBW 8MB Hard Disk (1024 directory entry format) -# New format, 1024 dir entries, 16,384 sectors / slice +# New format: 1024 dir entries, 16,384 sectors / slice # Pure filesystem image, no MBR prefix + diskdef wbw_hd1024 seclen 512 tracks 1024 @@ -431,110 +444,124 @@ diskdef wbw_hd1024 end # First 4 slices of wbw_hd1024 -# Assumes 1MB prefix (2048 sectors) +# Assumes standard 1MB prefix +# Offset of any slice (in tracks) = 128 + (1024 * ) + diskdef rc2014a seclen 512 tracks 512 @@ -542,155 +569,171 @@ diskdef rc2014a blocksize 4096 maxdir 512 boottrk 1 + offset 0T os 2.2 end diskdef rc2014b seclen 512 - tracks 1024 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 512 + boottrk 0 + offset 512T os 2.2 end diskdef rc2014c seclen 512 - tracks 1536 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1024 + boottrk 0 + offset 1024T os 2.2 end diskdef rc2014d seclen 512 - tracks 2048 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 1536 + boottrk 0 + offset 1536T os 2.2 end diskdef rc2014e seclen 512 - tracks 2560 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2048 + boottrk 0 + offset 2048T os 2.2 end diskdef rc2014f seclen 512 - tracks 3072 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 2560 + boottrk 0 + offset 2560T os 2.2 end diskdef rc2014g seclen 512 - tracks 3584 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3072 + boottrk 0 + offset 3072T os 2.2 end diskdef rc2014h seclen 512 - tracks 4096 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 3584 + boottrk 0 + offset 3584T os 2.2 end diskdef rc2014i seclen 512 - tracks 4608 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4096 + boottrk 0 + offset 4096T os 2.2 end diskdef rc2014j seclen 512 - tracks 5120 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 4608 + boottrk 0 + offset 4608T os 2.2 end diskdef rc2014k seclen 512 - tracks 5632 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5120 + boottrk 0 + offset 5120T os 2.2 end diskdef rc2014l seclen 512 - tracks 6144 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 5632 + boottrk 0 + offset 5632T os 2.2 end diskdef rc2014m seclen 512 - tracks 6656 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6144 + boottrk 0 + offset 6144T os 2.2 end diskdef rc2014n seclen 512 - tracks 7168 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 6656 + boottrk 0 + offset 6656T os 2.2 end diskdef rc2014o seclen 512 - tracks 7680 + tracks 512 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7168 + boottrk 0 + offset 7168T os 2.2 end diskdef rc2014p seclen 512 - tracks 7808 + tracks 128 sectrk 32 blocksize 4096 maxdir 512 - boottrk 7680 + boottrk 0 + offset 7680T os 2.2 end diff --git a/Tools/simh/altairz80.exe b/Tools/simh/altairz80.exe index 5fbaaf41..5e34f627 100644 Binary files a/Tools/simh/altairz80.exe and b/Tools/simh/altairz80.exe differ