Browse Source

First Round of Clean-up for Stable Release

- Restructured documentation and started updates (much more to go)
- Added test app to test HBIOS banking API.
pull/331/head
Wayne Warthen 3 years ago
parent
commit
4f48e48a99
  1. 4
      Binary/ReadMe.txt
  2. BIN
      Doc/RomWBW Applications.pdf
  3. BIN
      Doc/RomWBW Disk Catalog.pdf
  4. BIN
      Doc/RomWBW Errata.pdf
  5. BIN
      Doc/RomWBW Getting Started.pdf
  6. BIN
      Doc/RomWBW ROM Applications.pdf
  7. BIN
      Doc/RomWBW System Guide.pdf
  8. BIN
      Doc/RomWBW User Guide.pdf
  9. 1360
      ReadMe.md
  10. 1415
      ReadMe.txt
  11. 1
      Source/Apps/Test/Build.cmd
  12. 1
      Source/Apps/Test/Clean.cmd
  13. 2
      Source/Apps/Test/Makefile
  14. 11
      Source/Apps/Test/banktest/Build.cmd
  15. 6
      Source/Apps/Test/banktest/Clean.cmd
  16. 7
      Source/Apps/Test/banktest/Makefile
  17. 564
      Source/Apps/Test/banktest/banktest.asm
  18. 12
      Source/BPBIOS/diskdefs
  19. 53
      Source/CPM22/loader.asm
  20. 53
      Source/CPM3/loader.asm
  21. 22
      Source/Doc/Build.cmd
  22. 1
      Source/Doc/Common.h
  23. 18
      Source/Doc/Errata.md
  24. 13
      Source/Doc/Makefile
  25. 204
      Source/Doc/ReadMe.md
  26. 2
      Source/Doc/SystemGuide.md
  27. 1187
      Source/Doc/UserGuide.md
  28. 20
      Source/Images/Build.cmd
  29. 4
      Source/Images/BuildDisk.ps1
  30. 36
      Source/Images/Makefile
  31. 198
      Source/Images/ReadMe.txt
  32. 12
      Source/Images/diskdefs
  33. BIN
      Source/Images/hd1k_prefix.dat
  34. 12
      Source/RomDsk/diskdefs
  35. 53
      Source/ZPM3/loader.asm
  36. 8
      Source/ZRC/Build.cmd
  37. 24
      Source/ZRC/Makefile
  38. 53
      Source/ZSDOS/loader.asm
  39. 6
      Source/ZZR/Build.cmd
  40. 16
      Source/ZZR/Makefile
  41. 4
      Source/pSys/Build.cmd
  42. 4
      Source/pSys/Makefile
  43. 53
      Source/pSys/loader.asm
  44. 12
      Tools/cpmtools/diskdefs
  45. 2
      Tools/simh/Sim.cfg

4
Binary/ReadMe.txt

@ -96,14 +96,14 @@ RawWriteWin (as long as you have access to a floppy drive on your
Windows computer). The resulting floppy disks will be usable on any
RomWBW-based system with floppy drive(s).
Likewise, the hd512_*.img and hd1024_*.img files are hard disk images.
Likewise, the hd512_*.img and hd1k_*.img files are hard disk images.
Each file is intended to be copied to the start of any type of hard
disk media (typically a CF Card or SD Card). The resulting media will
be usable on any RomWBW-based system that accepts the corresponding
media type.
NOTE: The hd512_*.img files are equivalent to the hd_*.img
files in previous distributions. The hd1024_*.img files
files in previous distributions. The hd1k_*.img files
contained a revised file system format that increases the
maximum number of CP/M directory entries from 512 to 1024.
Refer to the ReadMe.txt in the Source/Images directory

BIN
Doc/RomWBW Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW Disk Catalog.pdf

Binary file not shown.

BIN
Doc/RomWBW Errata.pdf

Binary file not shown.

BIN
Doc/RomWBW Getting Started.pdf

Binary file not shown.

BIN
Doc/ROM Applications.pdf → Doc/RomWBW ROM Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW Architecture.pdf → Doc/RomWBW System Guide.pdf

Binary file not shown.

BIN
Doc/RomWBW User Guide.pdf

Binary file not shown.

1360
ReadMe.md

File diff suppressed because it is too large

1415
ReadMe.txt

File diff suppressed because it is too large

1
Source/Apps/Test/Build.cmd

@ -22,6 +22,7 @@ pushd kbdtest && call Build || exit /b & popd
pushd ps2info && call Build || exit /b & popd
pushd 2piotst && call Build || exit /b & popd
pushd piomon && call Build || exit /b & popd
pushd banktest && call Build || exit /b & popd
goto :eof

1
Source/Apps/Test/Clean.cmd

@ -19,3 +19,4 @@ pushd kbdtest && call Clean || exit /b 1 & popd
pushd ps2info && call Clean || exit /b 1 & popd
pushd 2piotst && call Clean || exit /b 1 & popd
pushd piomon && call Clean || exit /b 1 & popd
pushd banktest && call Clean || exit /b 1 & popd

2
Source/Apps/Test/Makefile

@ -1,5 +1,5 @@
OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest
DEST = ../../../Binary/Apps/Test
TOOLS =../../../Tools

11
Source/Apps/Test/banktest/Build.cmd

@ -0,0 +1,11 @@
@echo off
setlocal
set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t80 -g3 -fFF banktest.asm banktest.com banktest.lst || exit /b
copy /Y banktest.com ..\..\..\..\Binary\Apps\Test\ || exit /b

6
Source/Apps/Test/banktest/Clean.cmd

@ -0,0 +1,6 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.bin del *.bin

7
Source/Apps/Test/banktest/Makefile

@ -0,0 +1,7 @@
OBJECTS = banktest.com
DEST = ../../../../Binary/Apps/Test
TOOLS =../../../../Tools
USETASM=1
include $(TOOLS)/Makefile.inc

564
Source/Apps/Test/banktest/banktest.asm

@ -0,0 +1,564 @@
;===============================================================================
; BANKTEST - Test RomWBW bank management API
;
;===============================================================================
;
; Author: Wayne Warthen (wwarthen@gmail.com)
;_______________________________________________________________________________
;
; Usage:
; BANKTEST
;
; Operation:
; Steps through a series of banking API tests
;_______________________________________________________________________________
;
; Change Log:
; 2023-01-22 [WBW] Initial release
;_______________________________________________________________________________
;
; ToDo:
;_______________________________________________________________________________
;
;===============================================================================
; Definitions
;===============================================================================
;
runloc .equ $C000 ; Running location (upper memory required)
stksiz .equ $40 ; Working stack size
;
rmj .equ 3 ; intended HBIOS version - major
rmn .equ 1 ; intended HBIOS version - minor
;
restart .equ $0000 ; CP/M restart vector
;
#include "../../../HBIOS/hbios.inc"
;
;===============================================================================
; Code Section
;===============================================================================
;
.org $100
;
; relocate worker code to upper memory
ld hl,begin ; start of working code image
ld de,runloc ; running location
ld bc,size ; size of working code image
ldir ; copy to upper RAM
jp runloc ; and go
;
; Start of working code
;
begin .equ $ ; image loaded here
;
.org runloc ; now generate running location adresses
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
; process
call process ; do main processing
jr nz,exit ; abort on error
;
exit: ; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
;jp restart ; return to CP/M via restart
ret ; return to CP/M w/o restart
;
; Initialization
;
init:
call crlf2 ; formatting
ld de,msgban ; point to version message part 1
call prtstr ; print it
;
call idbio ; identify active BIOS
cp 1 ; check for HBIOS
jp nz,errbio ; handle BIOS error
;
ld a,rmj << 4 | rmn ; expected HBIOS ver
cp d ; compare with result above
jp nz,errbio ; handle BIOS error
;
initx
; initialization complete
xor a ; signal success
ret ; return
;
; Process
;
process:
;
; Start by testing a bank switch and dumping some memory
; from the new bank.
;
di
;
; Get and display current RAM bank
ld b,BF_SYSGETBNK ; HBIOS GetBank function
rst 08 ; do it via RST vector, C=bank id
ld a,c ; put bank id in A
push af ; save bank id returned
call crlf2
ld de,msgcur ; load message
call prtstr ; print it
pop af ; restore bank id
call prthex ; print the bank id
;
; Switch to first RAM bank
ld b,BF_SYSSETBNK ; HBIOS SetBank function
ld c,$80 ; first RAM bank
rst 08 ; do it via RST vector
ld a,c ; original bank id to accum
ld (orgbnk),a ; save it
;
; NOTE: Once the page zero of the default bank is swapped out, we
; cannot use RST 08 for HBIOS function calls because the vector is
; no longer in context. Instead, we rely on the alternate call
; address entry point.
;
; Do an HBIOS function call while bank switched
call crlf2
ld de,msg80 ; message to print
call prtstr ; do it
;
; Dump chunk of memory from bank
call crlf
ld de,0 ; from 0x0000
call dump_buffer
;
; Switch back to original bank
ld b,BF_SYSSETBNK ; HBIOS SetBank function
ld a,(orgbnk) ; get original bank back
ld c,a ; to C for function call
call HB_INVOKE ; do it via call
;
ei
;
; Now poke a small procedure into an alternate bank and do an
; inter-bank call to execute it.
;
; Copy test procedure to a foreign bank
ld b,BF_SYSSETCPY ; HBIOS SysSetCopy function
ld a,(orgbnk) ; our current bank is source
ld e,a ; put in D
ld d,xproc_bnk ; target bank is 0x80
ld hl,xproc_len ; length to copy
rst 08 ; do it
;
ld b,BF_SYSBNKCPY ; HBIOS SysBnkCopy function
ld de,xproc_loc ; destination address
ld hl,xproc ; source address
rst 08 ; do it
;
; Do an inter-bank call to the test procedure
di ; interrupts off
ld a,xproc_bnk ; target bank
ld ix,xproc_loc ; target address
call HB_BNKCALL ; do it and pray
ei ; interrupts back on
;
call crlf2
ld de,msgdone ; message to print
call prtstr ; do it
;
ret ; all done
;
; Test procedure to be copied into an alternate bank. Code should
; be entirely relocatable.
;
xproc_bnk .equ $80 ; alternate bank for test proc
xproc_loc .equ $1000 ; run location for test proc
;
xproc:
call crlf2
ld de,msgxcal
call prtstr
ret
;
xproc_end .equ $
xproc_len .equ xproc_end - xproc
;
; Identify active BIOS. RomWBW HBIOS=1, UNA UBIOS=2, else 0
;
idbio:
;
; Check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,idbio1 ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,idbio1 ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,idbio1 ; if not, not UNA, check others
;
ld bc,$04FA ; UNA: get BIOS date and version
rst 08 ; DE := ver, HL := date
;
ld a,2 ; UNA BIOS id = 2
ret ; and done
;
idbio1:
; Check for RomWBW (HBIOS)
ld hl,(HB_IDENT) ; HL := HBIOS ident location
ld a,'W' ; First byte of ident
cp (hl) ; Compare
jr nz,idbio2 ; Not HBIOS
inc hl ; Next byte of ident
ld a,~'W' ; Second byte of ident
cp (hl) ; Compare
jr nz,idbio2 ; Not HBIOS
;
ld b,BF_SYSVER ; HBIOS: VER function
ld c,0 ; required reserved value
rst 08 ; DE := version, L := platform id
;
ld a,1 ; HBIOS BIOS id = 1
ret ; and done
;
idbio2:
; No idea what this is
xor a ; Setup return value of 0
ret ; and done
;
; Print character in A without destroying any registers
;
prtchr:
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld b,BF_CIOOUT ; HBIOS function to output a character
ld c,CIO_CONSOLE ; write to current console unit
call HB_INVOKE ; invoke HBIOS via call
pop hl ; restore registers
pop de
pop bc
ret
;
prtdot:
;
; shortcut to print a dot preserving all regs
push af ; save af
ld a,'.' ; load dot char
call prtchr ; print it
pop af ; restore af
ret ; done
;
prtspace:
;
; shortcut to print a space preserving all regs
push af ; save af
ld a,' ' ; load dot char
call prtchr ; print it
pop af ; restore af
ret ; done
;
prtcr:
;
; shortcut to print a dot preserving all regs
push af ; save af
ld a,13 ; load CR value
call prtchr ; print it
pop af ; restore af
ret ; done
;
; Print a zero terminated string at (DE) without destroying any registers
;
prtstr:
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
ret
;
; Print a block of memory nicely formatted
; de=buffer address
;
dump_buffer:
call crlf
push de
pop hl
inc d
inc d
db_blkrd:
push bc
push hl
pop bc
call prthexword ; print start location
pop bc
call prtspace ;
ld c,16 ; set for 16 locs
push hl ; save starting hl
db_nxtone:
ld a,(hl) ; get byte
call prthex ; print it
call prtspace ;
db_updh:
inc hl ; point next
dec c ; dec. loc count
jr nz,db_nxtone ; if line not done
; now print 'decoded' data to right of dump
db_pcrlf:
call prtspace ; space it
ld c,16 ; set for 16 chars
pop hl ; get back start
db_pcrlf0:
ld a,(hl) ; get byte
and 060h ; see if a 'dot'
ld a,(hl) ; o.k. to get
jr nz,db_pdot ;
db_dot:
ld a,2eh ; load a dot
db_pdot:
call prtchr ; print it
inc hl ;
ld a,d ;
cp h ;
jr nz,db_updh1 ;
ld a,e ;
cp l ;
jp z,db_end ;
db_updh1:
; if block not dumped, do next character or line
dec c ; dec. char count
jr nz,db_pcrlf0 ; do next
db_contd:
call crlf ;
jp db_blkrd ;
db_end:
ret
;
; Print the value in A in hex without destroying any registers
;
prthex:
push af ; save AF
push de ; save DE
call hexascii ; convert value in A to hex chars in DE
ld a,d ; get the high order hex char
call prtchr ; print it
ld a,e ; get the low order hex char
call prtchr ; print it
pop de ; restore DE
pop af ; restore AF
ret ; done
;
; print the hex word value in bc
;
prthexword:
push af
ld a,b
call prthex
ld a,c
call prthex
pop af
ret
;
; print the hex dword value in de:hl
;
prthex32:
push bc
push de
pop bc
call prthexword
push hl
pop bc
call prthexword
pop bc
ret
;
; Convert binary value in A to ascii hex characters in DE
;
hexascii:
ld d,a ; save A in D
call hexconv ; convert low nibble of A to hex
ld e,a ; save it in E
ld a,d ; get original value back
rlca ; rotate high order nibble to low bits
rlca
rlca
rlca
call hexconv ; convert nibble
ld d,a ; save it in D
ret ; done
;
; Convert low nibble of A to ascii hex
;
hexconv:
and $0F ; low nibble only
add a,$90
daa
adc a,$40
daa
ret
;
; Print value of A or HL in decimal with leading zero suppression
; Use prtdecb for A or prtdecw for HL
;
prtdecb:
push hl
ld h,0
ld l,a
call prtdecw ; print it
pop hl
ret
;
prtdecw:
push af
push bc
push de
push hl
call prtdec0
pop hl
pop de
pop bc
pop af
ret
;
prtdec0:
ld e,'0'
ld bc,-10000
call prtdec1
ld bc,-1000
call prtdec1
ld bc,-100
call prtdec1
ld c,-10
call prtdec1
ld e,0
ld c,-1
prtdec1:
ld a,'0' - 1
prtdec2:
inc a
add hl,bc
jr c,prtdec2
sbc hl,bc
cp e
ret z
ld e,0
call prtchr
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Get the next non-blank character from (HL).
;
nonblank:
ld a,(hl) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc hl ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
ucase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
; Add the value in A to HL (HL := HL + A)
;
addhl:
add a,l ; A := A + L
ld l,a ; Put result back in L
ret nc ; if no carry, we are done
inc h ; if carry, increment H
ret ; and return
;
; Jump indirect to address in HL
;
jphl:
jp (hl)
;
; Errors
;
erruse: ; command usage error (syntax)
ld de,msguse
jr err
;
errprm: ; command parameter error (syntax)
ld de,msgprm
jr err
;
errbio: ; invalid BIOS or version
ld de,msgbio
jr err
;
err: ; print error string and return error signal
call crlf2 ; print newline
;
err1: ; without the leading crlf
call prtstr ; print error string
;
err2: ; without the string
; call crlf ; print newline
or $FF ; signal error
ret ; done
;
;===============================================================================
; Storage Section
;===============================================================================
;
orgbnk .db 0 ; original bank id at startup
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
; Messages
;
msgban .db "BANKTEST v1.0, 22-Jan-2023",13,10
.db "Copyright (C) 2023, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: BANKTEST",13,10
msgprm .db "Parameter error (BANKTEST /? for usage)",0
msgbio .db "Incompatible BIOS or version, "
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
msgcur .db "Initial Bank ID = 0x",0
msg80 .db "Hello from bank 0x80!",0
msgxcal .db "Inter-bank procedure call test...",0
msgdone .db "End of bank test",0
;
;
;
size .equ $ - runloc
;
.end

12
Source/BPBIOS/diskdefs

@ -432,7 +432,7 @@ end
# New format: 1024 dir entries, 16,384 sectors / slice
# Pure filesystem image, no MBR prefix
diskdef wbw_hd1024
diskdef wbw_hd1k
seclen 512
tracks 1024
sectrk 16
@ -443,11 +443,11 @@ diskdef wbw_hd1024
os 2.2
end
# First 4 slices of wbw_hd1024
# First 4 slices of wbw_hd1k
# Assumes standard 1MB prefix
# Offset of any slice (in tracks) = 128 + (1024 * <slice_num)
diskdef wbw_hd1024_0
diskdef wbw_hd1k_0
seclen 512
tracks 1024
sectrk 16
@ -459,7 +459,7 @@ diskdef wbw_hd1024_0
os 2.2
end
diskdef wbw_hd1024_1
diskdef wbw_hd1k_1
seclen 512
tracks 1024
sectrk 16
@ -471,7 +471,7 @@ diskdef wbw_hd1024_1
os 2.2
end
diskdef wbw_hd1024_2
diskdef wbw_hd1k_2
seclen 512
tracks 1024
sectrk 16
@ -483,7 +483,7 @@ diskdef wbw_hd1024_2
os 2.2
end
diskdef wbw_hd1024_3
diskdef wbw_hd1k_3
seclen 512
tracks 1024
sectrk 16

53
Source/CPM22/loader.asm

@ -167,11 +167,56 @@ STR_ERR .DB " Read Error!",0
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
;
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
;
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
; IRRELEVANT.
;
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
; CCCCCCCC:CCSSSSSS
; 76543210:98543210
;
PART0:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART1:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
.DB 6 ; PART TYPE ID
.DB 15 ; CHS LAST ADDRESS (HEAD)
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
.DW $4000,$0010 ; LBA FIRST (DWORD)
.DW $0000,$000C ; LBA COUNT (DWORD)
PART2:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART3:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;

53
Source/CPM3/loader.asm

@ -171,11 +171,56 @@ STR_ERR .DB " Read Error!",0
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
;
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
;
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
; IRRELEVANT.
;
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
; CCCCCCCC:CCSSSSSS
; 76543210:98543210
;
PART0:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART1:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
.DB 6 ; PART TYPE ID
.DB 15 ; CHS LAST ADDRESS (HEAD)
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
.DW $4000,$0010 ; LBA FIRST (DWORD)
.DW $0000,$000C ; LBA COUNT (DWORD)
PART2:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART3:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;

22
Source/Doc/Build.cmd

@ -11,22 +11,22 @@ set PATH=%TOOLS%\m4;%TOOLS%\gpp;%PATH%
if not "%1"=="" (call :GenDoc %1 & goto :eof)
call :GenDoc GettingStarted
:: call :GenDoc UserGuide
call :GenDoc ReadMe
call :GenDoc UserGuide
call :GenDoc SystemGuide
call :GenDoc Applications
:: call :GenDoc Errata
:: call :GenDoc ZSystem
call :GenDoc Architecture
call :GenDoc Catalog
call :GenDoc ROM_Applications
call :GenDoc Catalog
call :GenDoc Errata
if exist GettingStarted.pdf copy GettingStarted.pdf "..\..\Doc\RomWBW Getting Started.pdf" || exit /b
if exist GettingStarted.gfm copy GettingStarted.gfm ..\..\ReadMe.md || exit /b
if exist GettingStarted.txt copy GettingStarted.txt ..\..\ReadMe.txt || exit /b
if exist ReadMe.gfm copy Readme.gfm ..\..\ReadMe.md || exit /b
if exist ReadMe.txt copy ReadMe.txt ..\..\ReadMe.txt || exit /b
if exist UserGuide.pdf copy UserGuide.pdf "..\..\Doc\RomWBW User Guide.pdf" || exit /b
if exist SystemGuide.pdf copy SystemGuide.pdf "..\..\Doc\RomWBW System Guide.pdf" || exit /b
if exist Applications.pdf copy Applications.pdf "..\..\Doc\RomWBW Applications.pdf" || exit /b
if exist Architecture.pdf copy Architecture.pdf "..\..\Doc\RomWBW Architecture.pdf" || exit /b
if exist ROM_Applications.pdf copy ROM_Applications.pdf "..\..\Doc\RomWBW ROM Applications.pdf" || exit /b
if exist Catalog.pdf copy Catalog.pdf "..\..\Doc\RomWBW Disk Catalog.pdf" || exit /b
if exist ROM_Applications.pdf copy ROM_Applications.pdf "..\..\Doc\ROM Applications.pdf" || exit /b
if exist Errata.pdf copy Errata.pdf "..\..\Doc\RomWBW Errata.pdf" || exit /b
echo.
goto :eof

1
Source/Doc/Common.h

@ -1,5 +1,6 @@
$define{doc_ver}{3.1 Pre-release}$
$define{doc_product}{RomWBW}$
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$
$ifndef{doc_author}$ $define{doc_author}{Wayne Warthen}$ $endif$
$define{doc_date}{$date{%d %b %Y}$}$

18
Source/Doc/Errata.md

@ -0,0 +1,18 @@
$define{doc_title}{Errata}$
$include{"Common.h"}$
# Errata
The following errata apply to $doc_product$ $doc_ver$:
* The use of high density floppy disks requires a CPU speed of 8 MHz or greater.
* The PropIO support is based on RomWBW specific firmware. Be sure to
program/update your PropIO firmware with the corresponding firmware
image provided in the Binary directory of the RomWBW distribution.
* Reading bytes from the video memory of the VDU board (not Color VDU)
appears to be problematic. This is only an issue when the driver needs
to scroll a portion of the screen which is done by applications such as
WordStar or ZDE. You are likely to see screen corruption in this case.
software/firmwareos/romwbw/errata.

13
Source/Doc/Makefile

@ -3,7 +3,7 @@
# and available on commandline for this build to work!!!
# Typically "sudo apt install pandoc, texlive-latex-extra, gpp"
#
OBJECTS = GettingStarted.pdf GettingStarted.gfm GettingStarted.txt Applications.pdf Architecture.pdf Catalog.pdf ROM_Applications.pdf
OBJECTS = ReadMe.gfm Readme.txt UserGuide.pdf SystemGuide.pdf Applications.pdf ROM_Applications.pdf Catalog.pdf Errata.pdf
# DEST = ../../Doc
TOOLS = ../../Tools
OTHERS = *.tmp
@ -31,10 +31,11 @@ all :: deploy
pandoc $< -f markdown -t plain -s -o $@ --default-image-extension=pdf
deploy :
cp GettingStarted.pdf "../../Doc/RomWBW Getting Started.pdf"
cp GettingStarted.gfm "../../ReadMe.md"
cp GettingStarted.txt "../../ReadMe.txt"
cp ReadMe.gfm "../../ReadMe.md"
cp ReadMe.txt "../../ReadMe.txt"
cp UserGuide.pdf "../../Doc/RomWBW User Guide.pdf"
cp SystemGuide.pdf "../../Doc/RomWBW System Guide.pdf"
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
cp Architecture.pdf "../../Doc/RomWBW Architecture.pdf"
cp ROM_Applications.pdf "../../Doc/RomWBW ROM Applications.pdf"
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
cp ROM_Applications.pdf "../../Doc/ROM Applications.pdf"
cp Erratapdf "../../Doc/RomWBW Errata.pdf"

204
Source/Doc/ReadMe.md

@ -0,0 +1,204 @@
$define{doc_title}{ReadMe}$
$include{"Common.h"}$
$define{doc_user}{[RomWBW User Guide]($doc_root$/RomWBW User Guide.pdf)}$
$define{doc_sys}{[RomWBW System Guide]($doc_root$/RomWBW System Guide.pdf)}$
$define{doc_apps}{[RomWBW Applications]($doc_root$/RomWBW Applications.pdf)}$
$define{doc_romapps}{[RomWBW ROM Applications]($doc_root$/RomWBW ROM Applications.pdf)}$
$define{doc_catalog}{[RomWBW Disk Catalog]($doc_root$/RomWBW Disk Catalog.pdf)}$
$define{doc_errata}{[RomWBW Errata]($doc_root$/RomWBW Errata.pdf)}$
# Overview
RomWBW provides a complete software system for a wide variety of
hobbyist Z80/Z180/Z280 CPU-based systems produced by these developer
communities:
* [RetroBrew Computers](https://www.retrobrewcomputers.org)
* [RC2014](https://rc2014.co.uk)
* [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
General features include:
* Banked memory services for several banking designs
* Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
* Serial drivers including UART (16550-like), ASCI, ACIA, SIO
* Video drivers including TMS9918, SY6545, MOS8563, HD6445
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces
* Real time clock drivers including DS1302, BQ4845
* Multiple OS support including CP/M 2.2, ZSDOS, CP/M 3, ZPM3, QPM, & p-System
* Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
* System Monitor
* Operating Systems (CP/M 2.2, ZSDOS)
* ROM BASIC (Nascom BASIC and Tasty BASIC)
* ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass media devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains
a complete CP/M filesystem and can be mapped independently to any
drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most
users. However, it is also very easy to modify and build custom ROM
images that fully tailor the firmware to your specific preferences.
All tools required to build custom ROM firmware under Windows are
included -- no need to install assemblers, etc. The firmware can also
be built using Linux or MacOS after confirming a few standard tools
have been installed.
Multiple disk images are provided in the distribution. Most disk
images contain a complete, bootable, ready-to-run implementation of a
specific operating system. A "combo" disk image contains multiple
slices, each with a full operating system implementation. If you use
this disk image, you can easily pick whichever operating system you
want to boot without changing media.
By design, RomWBW isolates all of the hardware specific fucntions in
the ROM chip itself. The ROM provides a hardware abstraction layer
such that all of the operating systems and applications on a disk
will run on any RomWBW-based system. To put it simply, you can take
a disk (or CF/SD Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may coreside on the same disk media as RomWBW slices
or on stand-alone media. This makes exchanging files with modern OSes
such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the "Assets" drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
# Installation & Operation
In general, installation of RomWBW on your platform is very simple. You
just need to program your ROM with the correct ROM image from the RomWBW
distribution. Subsequently, you can write disk images on your disk
drives (IDE disk, CF Card, SD Card, etc.) which then provides even more
functionality.
Complete instructions for installation and operation of RomWBW are
found in the $doc_user$.
## Documentation
This document is part of a set of documentation for $doc_product$ that
also includes:
* $doc_user$
* $doc_sys$
* $doc_apps$
* $doc_romapps$
* $doc_errata$
# Acknowledgments
While I have heavily modified much of the code, I want to acknowledge
that much of the work is derived from the work of others in the
RetroBrew Computers Community including Andrew Lynch, Dan Werner, Max
Scane, David Giles, John Coffman, and probably many others I am not
clearly aware of (let me know if I omitted someone!).
I especially want to credit Douglas Goodall for contributing code,
time, testing, and advice. He created an entire suite of application
programs to enhance the use of RomWBW. However, he is looking for
someone to continue the maintenance of these applications and they
have become unusable due to changes within RomWBW. As of RomWBW 2.6,
these applications are no longer provided.
* David Giles contributed support for the CSIO support in the SD Card
driver.
* Ed Brindley contributed some of the code that supports the RC2014
platform.
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
* Phillip Stevens contributed support for FreeRTOS.
* Curt Mayer contributed the original Linux / MacOS build process.
* UNA BIOS and FDISK80 are the products of John Coffman.
* FLASH4 is a product of Will Sowerbutts.
* CLRDIR is a product of Max Scane.
* Tasty Basic is a product of Dimitri Theulings.
* Dean Netherton contributed the sound driver interface and
the SN76489 sound driver.
* The RomWBW Disk Catalog document was produced by Mykl Orders.
Contributions of all kinds to RomWBW are very welcome.
# Licensing
RomWBW is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
RomWBW is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with RomWBW. If not, see <https://www.gnu.org/licenses/>.
Portions of RomWBW were created by, contributed by, or derived from
the work of others. It is believed that these works are being used
in accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of it's intended
licensing, please notify:
> Wayne Warthen
> wwarthen@gmail.com
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as
a cohesive system. Each program may have it's own licensing which
may be different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is
composed of multiple components with different licenses. It is
believed that in all such cases the licenses are compatible with
GPL version 3.
RomWBW encourages code contributions from others. Contributors
may assert their own copyright in their contributions by
annotating the contributed source code appropriately. Contributors
are further encouraged to submit their contributions via the RomWBW
source code control system to ensure their contributions are clearly
documented.
All contributions to RomWBW are subject to this license.
# Getting Assistance
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
* [RetroBrew Computers Forum](https://www.retrobrewcomputers.org/forum/)
* [RC2014 Google Group](https://groups.google.com/forum/#!forum/rc2014-z80)
* [retro-comp Google Group](https://groups.google.com/forum/#!forum/retro-comp)
Submission of issues and bugs are welcome at the
[RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW).
Also feel free to email $doc_author$ at [$doc_authmail$](mailto:$doc_authmail$).

2
Source/Doc/Architecture.md → Source/Doc/SystemGuide.md

@ -1,4 +1,4 @@
$define{doc_title}{Architecture}$
$define{doc_title}{System Guide}$
$include{"Common.h"}$
Overview

1187
Source/Doc/GettingStarted.md → Source/Doc/UserGuide.md

File diff suppressed because it is too large

20
Source/Images/Build.cmd

@ -36,18 +36,18 @@ copy /b ..\..\Binary\hd512_cpm22.img + ..\..\Binary\hd512_zsdos.img + ..\..\Bina
echo.
echo Building Hard Disk Images (1024 directory entry format)...
echo.
call BuildDisk.cmd cpm22 hd wbw_hd1024 ..\cpm22\cpm_wbw.sys || exit /b
call BuildDisk.cmd zsdos hd wbw_hd1024 ..\zsdos\zsys_wbw.sys || exit /b
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 d_qpm\u0\qpm.sys || exit /b
call BuildDisk.cmd cpm22 hd wbw_hd1k ..\cpm22\cpm_wbw.sys || exit /b
call BuildDisk.cmd zsdos hd wbw_hd1k ..\zsdos\zsys_wbw.sys || exit /b
call BuildDisk.cmd nzcom hd wbw_hd1k ..\zsdos\zsys_wbw.sys || exit /b
call BuildDisk.cmd cpm3 hd wbw_hd1k ..\cpm3\cpmldr.sys || exit /b
call BuildDisk.cmd zpm3 hd wbw_hd1k ..\zpm3\zpmldr.sys || exit /b
call BuildDisk.cmd ws4 hd wbw_hd1k || exit /b
call BuildDisk.cmd qpm hd wbw_hd1k d_qpm\u0\qpm.sys || exit /b
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1024 || exit /b
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1k || exit /b
copy hd1024_prefix.dat ..\..\Binary\ || exit /b
copy hd1k_prefix.dat ..\..\Binary\ || exit /b
echo.
echo Building Combo Disk (1024 directory entry format) Image...
copy /b hd1024_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_combo.img || exit /b
copy /b hd1k_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_combo.img || exit /b

4
Source/Images/BuildDisk.ps1

@ -38,11 +38,11 @@ switch ($Format)
$Size = 8MB + 128KB
}
"wbw_hd1024"
"wbw_hd1k"
{
# 1024 Directory Entry Hard Disk Format
$Desc = "Hard Disk (1024 directory entry format)"
$ImgFile = "hd1024_${Disk}.img"
$ImgFile = "hd1k_${Disk}.img"
$MediaID = 10
$Size = 8MB
}

36
Source/Images/Makefile

@ -8,20 +8,20 @@ FDIMGS = fd144_cpm22.img fd144_zsdos.img fd144_nzcom.img \
HD512IMGS = hd512_cpm22.img hd512_zsdos.img hd512_nzcom.img \
hd512_cpm3.img hd512_zpm3.img hd512_ws4.img
# HDIMGS += hd512_bp.img
HD1024IMGS = hd1024_cpm22.img hd1024_zsdos.img hd1024_nzcom.img \
hd1024_cpm3.img hd1024_zpm3.img hd1024_ws4.img
# HD1024IMGS += hd1024_bp.img
HD1KIMGS = hd1k_cpm22.img hd1k_zsdos.img hd1k_nzcom.img \
hd1k_cpm3.img hd1k_zpm3.img hd1k_ws4.img
# HD1KIMGS += hd1k_bp.img
HD512PREFIX =
HD1024PREFIX = hd1024_prefix.dat
HD1KPREFIX = hd1k_prefix.dat
OBJECTS = $(FDIMGS)
OBJECTS += $(HD512IMGS) hd512_combo.img hd512_dos65.img hd512_qpm.img$(HD512PREFIX)
OBJECTS += $(HD1024IMGS) hd1024_combo.img hd1024_qpm.img $(HD1024PREFIX)
OBJECTS += $(HD1KIMGS) hd1k_combo.img hd1k_qpm.img $(HD1KPREFIX)
OTHERS = blank144 blankhd512 blankhd1024
OTHERS = blank144 blankhd512 blankhd1k
NODELETE = $(HD512PREFIX) $(HD1024PREFIX)
NODELETE = $(HD512PREFIX) $(HD1KPREFIX)
DEST=../../Binary
@ -35,7 +35,7 @@ DIFFPATH = $(DIFFTO)/Binary
hd512_combo.img: $(HD512PREFIX) $(HD512IMGS)
cat $^ > $@
hd1024_combo.img: $(HD1024PREFIX) $(HD1024IMGS)
hd1k_combo.img: $(HD1KPREFIX) $(HD1KIMGS)
cat $^ > $@
#
@ -55,19 +55,19 @@ blank144:
@hexdump $@
HD512SIZE := 8320
HD1024SIZE := 8192
HD1KSIZE := 8192
blankhd512:
@echo Making Blank HD512 of size $(HD512SIZE)k
@LC_ALL=en_US.US-ASCII tr '\000' '\345' </dev/zero | dd of=$@ bs=1024 count=$(HD512SIZE)
@hexdump $@
blankhd1024:
@echo Making Blank HD1024 of size $(HD1024SIZE)k
@LC_ALL=en_US.US-ASCII tr '\000' '\345' </dev/zero | dd of=$@ bs=1024 count=$(HD1024SIZE)
blankhd1k:
@echo Making Blank HD1K of size $(HD1KSIZE)k
@LC_ALL=en_US.US-ASCII tr '\000' '\345' </dev/zero | dd of=$@ bs=1024 count=$(HD1KSIZE)
@hexdump $@
%.img: $(SYSTEMS) blank144 blankhd512 blankhd1024 Makefile
%.img: $(SYSTEMS) blank144 blankhd512 blankhd1k Makefile
@sys= ; \
case $@ in \
(*cpm22*) sys=../CPM22/cpm_wbw.sys;; \
@ -82,8 +82,8 @@ blankhd1024:
if echo $@ | grep -q ^hd512_ ; then \
fmt=wbw_hd512 ; dtype=hd ; type=hd512_ ; proto=blankhd512 ; \
fi ; \
if echo $@ | grep -q ^hd1024_ ; then \
fmt=wbw_hd1024 ; dtype=hd ; type=hd1024_ ; proto=blankhd1024 ; \
if echo $@ | grep -q ^hd1k_ ; then \
fmt=wbw_hd1k ; dtype=hd ; type=hd1k_ ; proto=blankhd1k ; \
fi ; \
d=$$(echo $(basename $@) | sed s/$$type//) ; \
echo Generating $@ ; \
@ -122,7 +122,7 @@ clean::
@rm -f *.ls
imgdiff:
@for i in $(FDIMGS) $(HD512IMGS) $(HD1024IMGS) ; do \
@for i in $(FDIMGS) $(HD512IMGS) $(HD1KIMGS) ; do \
echo $$i ; \
if echo $$i | grep -q ^fd144_ ; then \
fmt=wbw_fd144 ; \
@ -130,8 +130,8 @@ imgdiff:
if echo $$i | grep -q ^hd512_ ; then \
fmt=wbw_hd512 ; \
fi ; \
if echo $$i | grep -q ^hd1024_ ; then \
fmt=wbw_hd1024 ; \
if echo $$i | grep -q ^hd1k_ ; then \
fmt=wbw_hd1k ; \
fi ; \
$(BINDIR)/cpmls -i -f $$fmt $$i > $$i.ls ; \
$(BINDIR)/cpmls -i -f $$fmt $(DIFFPATH)/$$i > $$i.diff.ls ; \

198
Source/Images/ReadMe.txt

@ -75,8 +75,8 @@ a disk using your Windows/Linux/Mac computer and will then be usable
in your RomWBW computer. On Windows, you can use Win32DiskImager to
do this (see Tools\Win32DiskImager). On Linux/Mac, you can usee dd.
WARNING: The hd1024 disk images must be prefixed by the
hd1024_prefix.dat file before being written to your target media.
WARNING: The hd1k disk images must be prefixed by the
hd1k_prefix.dat file before being written to your target media.
See the Hard Disk Formats section below for more information.
Building the Images
@ -107,7 +107,7 @@ where:
<format> specifies the disk format which must be one of:
- "fd144": 1.44M floppy disk
- "hd512": hard disk with 512 directory entries
- "hd1024": hard disk with 1024 directory entries
- "hd1k": hard disk with 1024 directory entries
<system> optionally specifies a boot system image to place in the
system tracks of the disk (e.g., "..\cpm22\cpm_wbw.sys"
@ -121,7 +121,7 @@ CP/M 2.2 system image in the boot system tracks.
After completion of the script, the resultant image files are placed
in the Binary directory with names such as fd144_xxx.img, hd512_xxx.img,
and hd1024_xxx.img.
and hd1k_xxx.img.
Sample output from running Build.cmd is provided at the end of
this file.
@ -165,8 +165,8 @@ Hard Disk Formats
RomWBW supports two hard disk formats: the original format used by
RomWBW with 512 directory entries per slice and a new format with
1024 directory entries per slice. These formats are referred to as
hd512 and hd1024 respectively. You will note that filenames start
with either hd512_ or hd1024_ to indicate the hard disk format.
hd512 and hd1k respectively. You will note that filenames start
with either hd512_ or hd1k_ to indicate the hard disk format.
WARNING: You **can not** mix the two hard disk formats on one hard
disk device. You can use different formats on different hard disk
@ -183,30 +183,30 @@ all slices and will assume the slices are located in the defined
partition. You cannot mix the hard disk formats on a single disk
device.
WARNNG: The hd1024_xxx.img files **must** be prefixed by a partition
table before being written to your disk media. The hd1024_prefix.dat
file is provided for this. The hd1024_prefix.dat defines the required
partition table. Any number of hd1024 slice images can be
WARNNG: The hd1k_xxx.img files **must** be prefixed by a partition
table before being written to your disk media. The hd1k_prefix.dat
file is provided for this. The hd1k_prefix.dat defines the required
partition table. Any number of hd1k slice images can be
concatenated after the prefix. For example, to make the
hd1024_cpm22.img file ready to write to your media, you would need to
hd1k_cpm22.img file ready to write to your media, you would need to
do something like this:
| C:\RomWBW\Binary>copy /b hd1024_prefix.dat + hd1024_cpm22.img hd_cpm22.img
| C:\RomWBW\Binary>copy /b hd1k_prefix.dat + hd1k_cpm22.img hd_cpm22.img
and then use the resulting hd_cpm22.img to write to the target media.
For example, if you wanted to create a 2 slice disk image using the
hd1024 entry format that has ZSDOS in the first slice and Wordstar in
hd1k entry format that has ZSDOS in the first slice and Wordstar in
the second slice, you could use the following command from a Windows
command prompt:
| C:\RomWBW\Binary>copy /b hd1024_prefix.dat + hd1024_zsdos.img + hd1024_ws4.img hd_multi.img
| C:\RomWBW\Binary>copy /b hd1k_prefix.dat + hd1k_zsdos.img + hd1k_ws4.img hd_multi.img
Since the hd512 format does not utilize a partition, you do not
prefix the hd512_xxx.img files with anything. They are ready to write
to your media as is.
In general, the hd1024 format is considered the better format to use.
In general, the hd1k format is considered the better format to use.
It provides double the directory space and places all slices inside
of a hard disk partition that DOS/Windows should respect as "used"
space.
@ -219,7 +219,7 @@ in this directory. The resultant images are placed in the Binary
directory and are ready to copy to your media.
Additionally, a "combo" disk image is created in both the hd512 and
hd1024 formats that contains a multi-slice image that is handy to
hd1k formats that contains a multi-slice image that is handy to
use for initial testing. The combo disk image contains the following
slices:
@ -233,8 +233,8 @@ slices:
A description of the specific image files is found in the file
called DiskList.txt in the Binary directory of the distribution.
NOTE: The hd1024_combo.img file is already prefixed with
hd1024_prefix.dat, so you do not need to add the prefix file. It is
NOTE: The hd1k_combo.img file is already prefixed with
hd1k_prefix.dat, so you do not need to add the prefix file. It is
ready to write to your media.
Sample Run
@ -422,93 +422,93 @@ C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images>Build.cmd
| Building Hard Disk Images (1024 directory entry format)...
|
| Generating cpm22 Hard Disk (1024 directory entry format)...
| cpmcp -f wbw_hd1024 hd1024_cpm22.img d_cpm22/u0/*.* 0:
| cpmcp -f wbw_hd1024 hd1024_cpm22.img d_cpm22/u1/*.* 1:
| cpmcp -f wbw_hd1024 hd1024_cpm22.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1024 hd1024_cpm22.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1024 hd1024_cpm22.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1024 hd1024_cpm22.img ../CPM22/cpm_wbw.sys 0:cpm.sys
| cpmcp -f wbw_hd1024 hd1024_cpm22.img Common/*.* 0:
| Moving image hd1024_cpm22.img into output directory...
| cpmcp -f wbw_hd1k hd1k_cpm22.img d_cpm22/u0/*.* 0:
| cpmcp -f wbw_hd1k hd1k_cpm22.img d_cpm22/u1/*.* 1:
| cpmcp -f wbw_hd1k hd1k_cpm22.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1k hd1k_cpm22.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1k hd1k_cpm22.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1k hd1k_cpm22.img ../CPM22/cpm_wbw.sys 0:cpm.sys
| cpmcp -f wbw_hd1k hd1k_cpm22.img Common/*.* 0:
| Moving image hd1k_cpm22.img into output directory...
| Generating zsdos Hard Disk (1024 directory entry format)...
| cpmcp -f wbw_hd1024 hd1024_zsdos.img d_zsdos/u0/*.* 0:
| cpmcp -f wbw_hd1024 hd1024_zsdos.img d_zsdos/u1/*.* 1:
| cpmcp -f wbw_hd1024 hd1024_zsdos.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1024 hd1024_zsdos.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1024 hd1024_zsdos.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1024 hd1024_zsdos.img ../ZSDOS/zsys_wbw.sys 0:zsys.sys
| cpmcp -f wbw_hd1024 hd1024_zsdos.img Common/*.* 0:
| Moving image hd1024_zsdos.img into output directory...
| cpmcp -f wbw_hd1k hd1k_zsdos.img d_zsdos/u0/*.* 0:
| cpmcp -f wbw_hd1k hd1k_zsdos.img d_zsdos/u1/*.* 1:
| cpmcp -f wbw_hd1k hd1k_zsdos.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1k hd1k_zsdos.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1k hd1k_zsdos.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1k hd1k_zsdos.img ../ZSDOS/zsys_wbw.sys 0:zsys.sys
| cpmcp -f wbw_hd1k hd1k_zsdos.img Common/*.* 0:
| Moving image hd1k_zsdos.img into output directory...
| Generating nzcom Hard Disk (1024 directory entry format)...
| cpmcp -f wbw_hd1024 hd1024_nzcom.img d_nzcom/u0/*.* 0:
| cpmcp -f wbw_hd1024 hd1024_nzcom.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1024 hd1024_nzcom.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1024 hd1024_nzcom.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1024 hd1024_nzcom.img ../CPM22/cpm_wbw.sys 0:cpm.sys
| cpmcp -f wbw_hd1024 hd1024_nzcom.img ../ZSDOS/zsys_wbw.sys 0:zsys.sys
| cpmcp -f wbw_hd1024 hd1024_nzcom.img Common/*.* 0:
| Moving image hd1024_nzcom.img into output directory...
| cpmcp -f wbw_hd1k hd1k_nzcom.img d_nzcom/u0/*.* 0:
| cpmcp -f wbw_hd1k hd1k_nzcom.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1k hd1k_nzcom.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1k hd1k_nzcom.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1k hd1k_nzcom.img ../CPM22/cpm_wbw.sys 0:cpm.sys
| cpmcp -f wbw_hd1k hd1k_nzcom.img ../ZSDOS/zsys_wbw.sys 0:zsys.sys
| cpmcp -f wbw_hd1k hd1k_nzcom.img Common/*.* 0:
| Moving image hd1k_nzcom.img into output directory...
| Generating cpm3 Hard Disk (1024 directory entry format)...
| cpmcp -f wbw_hd1024 hd1024_cpm3.img d_cpm3/u0/*.* 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/cpmldr.com 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/cpmldr.sys 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/ccp.com 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/gencpm.com 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/genres.dat 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/genbnk.dat 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/bios3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/bnkbios3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/bdos3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/bnkbdos3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/resbdos3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/cpm3res.sys 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/cpm3bnk.sys 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/gencpm.dat 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/cpm3.sys 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/readme.1st 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../CPM3/cpm3fix.pat 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1024 hd1024_cpm3.img Common/*.* 0:
| Moving image hd1024_cpm3.img into output directory...
| cpmcp -f wbw_hd1k hd1k_cpm3.img d_cpm3/u0/*.* 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/cpmldr.com 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/cpmldr.sys 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/ccp.com 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/gencpm.com 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/genres.dat 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/genbnk.dat 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/bios3.spr 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/bnkbios3.spr 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/bdos3.spr 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/bnkbdos3.spr 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/resbdos3.spr 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/cpm3res.sys 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/cpm3bnk.sys 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/gencpm.dat 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/cpm3.sys 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/readme.1st 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../CPM3/cpm3fix.pat 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../../Binary/Apps/*.com 0:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1k hd1k_cpm3.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1k hd1k_cpm3.img Common/*.* 0:
| Moving image hd1k_cpm3.img into output directory...
| Generating zpm3 Hard Disk (1024 directory entry format)...
| cpmcp -f wbw_hd1024 hd1024_zpm3.img d_zpm3/u0/*.* 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img d_zpm3/u10/*.* 10:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img d_zpm3/u14/*.* 14:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img d_zpm3/u15/*.* 15:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/zpmldr.com 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/zpmldr.sys 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../CPM3/cpmldr.com 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../CPM3/cpmldr.sys 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/autotog.com 15:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/clrhist.com 15:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/setz3.com 15:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/cpm3.sys 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/zccp.com 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/zinstal.zpm 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/startzpm.com 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/makedos.com 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/gencpm.dat 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/bnkbios3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/bnkbdos3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../ZPM3/resbdos3.spr 0:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../../Binary/Apps/*.com 15:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1024 hd1024_zpm3.img Common/*.* 15:
| Moving image hd1024_zpm3.img into output directory...
| cpmcp -f wbw_hd1k hd1k_zpm3.img d_zpm3/u0/*.* 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img d_zpm3/u10/*.* 10:
| cpmcp -f wbw_hd1k hd1k_zpm3.img d_zpm3/u14/*.* 14:
| cpmcp -f wbw_hd1k hd1k_zpm3.img d_zpm3/u15/*.* 15:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/zpmldr.com 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/zpmldr.sys 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../CPM3/cpmldr.com 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../CPM3/cpmldr.sys 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/autotog.com 15:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/clrhist.com 15:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/setz3.com 15:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/cpm3.sys 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/zccp.com 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/zinstal.zpm 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/startzpm.com 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/makedos.com 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/gencpm.dat 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/bnkbios3.spr 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/bnkbdos3.spr 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../ZPM3/resbdos3.spr 0:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../../Binary/Apps/*.com 15:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../../Binary/Apps/Tunes/*.pt? 3:
| cpmcp -f wbw_hd1k hd1k_zpm3.img ../../Binary/Apps/Tunes/*.mym 3:
| cpmcp -f wbw_hd1k hd1k_zpm3.img Common/*.* 15:
| Moving image hd1k_zpm3.img into output directory...
| Generating ws4 Hard Disk (1024 directory entry format)...
| cpmcp -f wbw_hd1024 hd1024_ws4.img d_ws4/u0/*.* 0:
| Moving image hd1024_ws4.img into output directory...
| cpmcp -f wbw_hd1k hd1k_ws4.img d_ws4/u0/*.* 0:
| Moving image hd1k_ws4.img into output directory...
| 1 file(s) copied.
|
| Building Combo Disk (1024 directory entry format) Image...
| hd1024_prefix.dat
| ..\..\Binary\hd1024_cpm22.img
| ..\..\Binary\hd1024_zsdos.img
| ..\..\Binary\hd1024_nzcom.img
| ..\..\Binary\hd1024_cpm3.img
| ..\..\Binary\hd1024_zpm3.img
| ..\..\Binary\hd1024_ws4.img
| hd1k_prefix.dat
| ..\..\Binary\hd1k_cpm22.img
| ..\..\Binary\hd1k_zsdos.img
| ..\..\Binary\hd1k_nzcom.img
| ..\..\Binary\hd1k_cpm3.img
| ..\..\Binary\hd1k_zpm3.img
| ..\..\Binary\hd1k_ws4.img
| 1 file(s) copied.

12
Source/Images/diskdefs

@ -432,7 +432,7 @@ end
# New format: 1024 dir entries, 16,384 sectors / slice
# Pure filesystem image, no MBR prefix
diskdef wbw_hd1024
diskdef wbw_hd1k
seclen 512
tracks 1024
sectrk 16
@ -443,11 +443,11 @@ diskdef wbw_hd1024
os 2.2
end
# First 4 slices of wbw_hd1024
# First 4 slices of wbw_hd1k
# Assumes standard 1MB prefix
# Offset of any slice (in tracks) = 128 + (1024 * <slice_num)
diskdef wbw_hd1024_0
diskdef wbw_hd1k_0
seclen 512
tracks 1024
sectrk 16
@ -459,7 +459,7 @@ diskdef wbw_hd1024_0
os 2.2
end
diskdef wbw_hd1024_1
diskdef wbw_hd1k_1
seclen 512
tracks 1024
sectrk 16
@ -471,7 +471,7 @@ diskdef wbw_hd1024_1
os 2.2
end
diskdef wbw_hd1024_2
diskdef wbw_hd1k_2
seclen 512
tracks 1024
sectrk 16
@ -483,7 +483,7 @@ diskdef wbw_hd1024_2
os 2.2
end
diskdef wbw_hd1024_3
diskdef wbw_hd1k_3
seclen 512
tracks 1024
sectrk 16

BIN
Source/Images/hd1024_prefix.dat → Source/Images/hd1k_prefix.dat

Binary file not shown.

12
Source/RomDsk/diskdefs

@ -432,7 +432,7 @@ end
# New format: 1024 dir entries, 16,384 sectors / slice
# Pure filesystem image, no MBR prefix
diskdef wbw_hd1024
diskdef wbw_hd1k
seclen 512
tracks 1024
sectrk 16
@ -443,11 +443,11 @@ diskdef wbw_hd1024
os 2.2
end
# First 4 slices of wbw_hd1024
# First 4 slices of wbw_hd1k
# Assumes standard 1MB prefix
# Offset of any slice (in tracks) = 128 + (1024 * <slice_num)
diskdef wbw_hd1024_0
diskdef wbw_hd1k_0
seclen 512
tracks 1024
sectrk 16
@ -459,7 +459,7 @@ diskdef wbw_hd1024_0
os 2.2
end
diskdef wbw_hd1024_1
diskdef wbw_hd1k_1
seclen 512
tracks 1024
sectrk 16
@ -471,7 +471,7 @@ diskdef wbw_hd1024_1
os 2.2
end
diskdef wbw_hd1024_2
diskdef wbw_hd1k_2
seclen 512
tracks 1024
sectrk 16
@ -483,7 +483,7 @@ diskdef wbw_hd1024_2
os 2.2
end
diskdef wbw_hd1024_3
diskdef wbw_hd1k_3
seclen 512
tracks 1024
sectrk 16

53
Source/ZPM3/loader.asm

@ -171,11 +171,56 @@ STR_ERR .DB " Read Error!",0
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
;
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
;
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
; IRRELEVANT.
;
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
; CCCCCCCC:CCSSSSSS
; 76543210:98543210
;
PART0:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART1:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
.DB 6 ; PART TYPE ID
.DB 15 ; CHS LAST ADDRESS (HEAD)
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
.DW $4000,$0010 ; LBA FIRST (DWORD)
.DW $0000,$000C ; LBA COUNT (DWORD)
PART2:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART3:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;

8
Source/ZRC/Build.cmd

@ -18,9 +18,9 @@ srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ80_zrc.rom -binary -offset 0x24000 -o temp.dat -binary
move temp.dat ..\..\Binary\hd1024_zrc_prefix.dat
move temp.dat ..\..\Binary\hd1k_zrc_prefix.dat
copy /b ..\..\Binary\hd1024_zrc_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_zrc_combo.img || exit /b
copy /b ..\..\Binary\hd1k_zrc_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_zrc_combo.img || exit /b
goto :eof
@ -31,8 +31,8 @@ srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ80_zrc_ram.rom -binary -offset 0x24000 -o temp.dat -binary
move temp.dat ..\..\Binary\hd1024_zrc_ram_prefix.dat
move temp.dat ..\..\Binary\hd1k_zrc_ram_prefix.dat
copy /b ..\..\Binary\hd1024_zrc_ram_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_zrc_ram_combo.img || exit /b
copy /b ..\..\Binary\hd1k_zrc_ram_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_zrc_ram_combo.img || exit /b
goto :eof

24
Source/ZRC/Makefile

@ -1,20 +1,20 @@
HD1024ZRCPREFIX = hd1024_zrc_prefix.dat
HD1024ZRCCOMBOIMG = hd1024_zrc_combo.img
HD1024ZRCRAMPREFIX = hd1024_zrc_ram_prefix.dat
HD1024ZRCRAMCOMBOIMG = hd1024_zrc_ram_combo.img
HD1KZRCPREFIX = hd1k_zrc_prefix.dat
HD1KZRCCOMBOIMG = hd1k_zrc_combo.img
HD1KZRCRAMPREFIX = hd1k_zrc_ram_prefix.dat
HD1KZRCRAMCOMBOIMG = hd1k_zrc_ram_combo.img
ZRCROM = ../../Binary/RCZ80_zrc.rom
ZRCRAMROM = ../../Binary/RCZ80_zrc_ram.rom
HD1024IMGS = ../../Binary/hd1024_cpm22.img ../../Binary/hd1024_zsdos.img ../../Binary/hd1024_nzcom.img \
../../Binary/hd1024_cpm3.img ../../Binary/hd1024_zpm3.img ../../Binary/hd1024_ws4.img
HD1KIMGS = ../../Binary/hd1k_cpm22.img ../../Binary/hd1k_zsdos.img ../../Binary/hd1k_nzcom.img \
../../Binary/hd1k_cpm3.img ../../Binary/hd1k_zpm3.img ../../Binary/hd1k_ws4.img
OBJECTS :=
ifneq ($(wildcard $(ZRCROM)),)
OBJECTS += $(HD1024ZRCPREFIX) $(HD1024ZRCCOMBOIMG)
OBJECTS += $(HD1KZRCPREFIX) $(HD1KZRCCOMBOIMG)
endif
ifneq ($(wildcard $(ZRCRAMROM)),)
OBJECTS += $(HD1024ZRCRAMPREFIX) $(HD1024ZRCRAMCOMBOIMG)
OBJECTS += $(HD1KZRCRAMPREFIX) $(HD1KZRCRAMCOMBOIMG)
endif
DEST=../../Binary
@ -25,7 +25,7 @@ include $(TOOLS)/Makefile.inc
DIFFPATH = $(DIFFTO)/Binary
$(HD1024ZRCPREFIX):
$(HD1KZRCPREFIX):
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
@ -33,7 +33,7 @@ $(HD1024ZRCPREFIX):
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZRCROM) -binary -offset 0x24000 -o temp.dat -binary
mv temp.dat $@
$(HD1024ZRCRAMPREFIX):
$(HD1KZRCRAMPREFIX):
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x0 0x100 zrc_cfldr.bin -binary -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x100 0x200 zrc_ptbl.bin -binary -offset 0x100 -o temp.dat -binary
@ -41,8 +41,8 @@ $(HD1024ZRCRAMPREFIX):
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZRCRAMROM) -binary -offset 0x24000 -o temp.dat -binary
mv temp.dat $@
$(HD1024ZRCCOMBOIMG): $(HD1024ZRCPREFIX) $(HD1024IMGS)
$(HD1KZRCCOMBOIMG): $(HD1KZRCPREFIX) $(HD1KIMGS)
cat $^ > $@
$(HD1024ZRCRAMCOMBOIMG): $(HD1024ZRCRAMPREFIX) $(HD1024IMGS)
$(HD1KZRCRAMCOMBOIMG): $(HD1KZRCRAMPREFIX) $(HD1KIMGS)
cat $^ > $@

53
Source/ZSDOS/loader.asm

@ -167,11 +167,56 @@ STR_ERR .DB " Read Error!",0
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
;
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
;
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
; IRRELEVANT.
;
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
; CCCCCCCC:CCSSSSSS
; 76543210:98543210
;
PART0:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART1:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
.DB 6 ; PART TYPE ID
.DB 15 ; CHS LAST ADDRESS (HEAD)
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
.DW $4000,$0010 ; LBA FIRST (DWORD)
.DW $0000,$000C ; LBA COUNT (DWORD)
PART2:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART3:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;

6
Source/ZZR/Build.cmd

@ -29,11 +29,11 @@ rem ..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.rom -Binary -Ex
rem ..\..\Tools\srecord\srec_cat.exe ..\..\Binary\RCZ280_nat_zzr.hex -Intel -Output ..\..\Binary\RCZ280_nat_zzr_ldr.rom -Binary || exit /b
rem copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr_ldr.rom + zzr_fill_3.bin ..\..\Binary\hd1024_zzr_prefix.dat || exit /b
rem copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr_ldr.rom + zzr_fill_3.bin ..\..\Binary\hd1k_zzr_prefix.dat || exit /b
copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr.rom + zzr_fill_3.bin ..\..\Binary\hd1024_zzr_prefix.dat || exit /b
copy /b zzr_cfldr.bin + zzr_ptbl.bin + zzr_fill_1.bin + zzr_mon.bin + zzr_fill_2.bin + ..\..\Binary\RCZ280_nat_zzr.rom + zzr_fill_3.bin ..\..\Binary\hd1k_zzr_prefix.dat || exit /b
copy /b ..\..\Binary\hd1024_zzr_prefix.dat + ..\..\Binary\hd1024_cpm22.img + ..\..\Binary\hd1024_zsdos.img + ..\..\Binary\hd1024_nzcom.img + ..\..\Binary\hd1024_cpm3.img + ..\..\Binary\hd1024_zpm3.img + ..\..\Binary\hd1024_ws4.img ..\..\Binary\hd1024_zzr_combo.img || exit /b
copy /b ..\..\Binary\hd1k_zzr_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_zzr_combo.img || exit /b
goto :eof

16
Source/ZZR/Makefile

@ -1,15 +1,15 @@
HD1024ZZRPREFIX = hd1024_zzr_prefix.dat
HD1024ZZZROMBOIMG = hd1024_zzr_combo.img
HD1KZZRPREFIX = hd1k_zzr_prefix.dat
HD1KZZZROMBOIMG = hd1k_zzr_combo.img
ZZRROM = ../../Binary/RCZ280_nat_zzr.rom
ZZRROMHEX = RCZ280_nat_zzr.hex
HD1024IMGS = ../../Binary/hd1024_cpm22.img ../../Binary/hd1024_zsdos.img ../../Binary/hd1024_nzcom.img \
../../Binary/hd1024_cpm3.img ../../Binary/hd1024_zpm3.img ../../Binary/hd1024_ws4.img
HD1KIMGS = ../../Binary/hd1k_cpm22.img ../../Binary/hd1k_zsdos.img ../../Binary/hd1k_nzcom.img \
../../Binary/hd1k_cpm3.img ../../Binary/hd1k_zpm3.img ../../Binary/hd1k_ws4.img
ZZRROMSIZE = 262144
OBJECTS :=
ifneq ($(wildcard $(ZZRROM)),)
OBJECTS += $(ZZRROMHEX) $(HD1024ZZRPREFIX) $(HD1024ZZZROMBOIMG)
OBJECTS += $(ZZRROMHEX) $(HD1KZZRPREFIX) $(HD1KZZZROMBOIMG)
endif
DEST=../../Binary
@ -23,11 +23,11 @@ DIFFPATH = $(DIFFTO)/Binary
zzrromchk:
[ `wc -c $(ZZRROM) | awk '{print $$1}'` = $(ZZRROMSIZE) ]
$(HD1024ZZRPREFIX): zzrromchk
$(HD1KZZRPREFIX): zzrromchk
cat zzr_cfldr.bin zzr_ptbl.bin zzr_fill_1.bin zzr_mon.bin zzr_fill_2.bin $(ZZRROM) zzr_fill_3.bin >$@
$(HD1024ZZZROMBOIMG): zzrromchk $(HD1024ZZRPREFIX) $(HD1024IMGS)
cat $(HD1024ZZRPREFIX) $(HD1024IMGS) > $@
$(HD1KZZZROMBOIMG): zzrromchk $(HD1KZZRPREFIX) $(HD1KIMGS)
cat $(HD1KZZRPREFIX) $(HD1KIMGS) > $@
$(ZZRROMHEX): zzrromchk $(ZZRROM)
srec_cat $(ZZRROM) -Binary -Output $(ZZRROMHEX) -Intel -CRLF

4
Source/pSys/Build.cmd

@ -40,7 +40,7 @@ if errorlevel 1 goto :eof
echo.
echo Creating p-System BIOS Tester boot image
echo.
copy /b ..\Images\hd1024_prefix.dat + testldr.bin + bios.bin + biostest.dat + testfill.bin psystest.img || exit /b
copy /b ..\Images\hd1k_prefix.dat + testldr.bin + bios.bin + biostest.dat + testfill.bin psystest.img || exit /b
echo.
echo Generating p-System Boot Track...
@ -50,6 +50,6 @@ copy /b loader.bin + bios.bin + boot.dat + fill.bin trk0.bin || exit /b
echo.
echo Generating p-System Disk Image...
echo.
copy /b ..\Images\hd1024_prefix.dat + trk0.bin + psys.vol + trk0.bin + blank.vol psys.img || exit /b
copy /b ..\Images\hd1k_prefix.dat + trk0.bin + psys.vol + trk0.bin + blank.vol psys.img || exit /b
copy psys.img ..\..\Binary || exit /b

4
Source/pSys/Makefile

@ -8,7 +8,7 @@ include $(TOOLS)/Makefile.inc
trk0.bin: loader.bin bios.bin boot.dat fill.bin
cat $+ >$@
psys.img: ../Images/hd1024_prefix.dat trk0.bin psys.vol trk0.bin blank.vol
psys.img: ../Images/hd1k_prefix.dat trk0.bin psys.vol trk0.bin blank.vol
cat $+ >$@
testldr.bin: loader.asm
@ -18,5 +18,5 @@ testfill.bin: fill.asm
$(TASM) -dTESTBIOS $< $@ testfill.lst
psystest.img: ../Images/hd1024_prefix.dat testldr.bin bios.bin biostest.dat testfill.bin
psystest.img: ../Images/hd1k_prefix.dat testldr.bin bios.bin biostest.dat testfill.bin
cat $+ >$@

53
Source/pSys/loader.asm

@ -56,11 +56,56 @@ PT_SIZ .EQU $40
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
;
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
;
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
; IRRELEVANT.
;
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
; CCCCCCCC:CCSSSSSS
; 76543210:98543210
;
PART0:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART1:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
.DB 6 ; PART TYPE ID
.DB 15 ; CHS LAST ADDRESS (HEAD)
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
.DW $4000,$0010 ; LBA FIRST (DWORD)
.DW $0000,$000C ; LBA COUNT (DWORD)
PART2:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
PART3:
.DB 0 ; ACTIVE IF $80
.DB 0 ; CHS START ADDRESS (HEAD)
.DW 0 ; CHS START ADDRESS (CYL/SEC)
.DB 0 ; PART TYPE ID
.DB 0 ; CHS LAST ADDRESS (HEAD)
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
.DW 0,0 ; LBA FIRST (DWORD)
.DW 0,0 ; LBA COUNT (DWORD)
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;

12
Tools/cpmtools/diskdefs

@ -432,7 +432,7 @@ end
# New format: 1024 dir entries, 16,384 sectors / slice
# Pure filesystem image, no MBR prefix
diskdef wbw_hd1024
diskdef wbw_hd1k
seclen 512
tracks 1024
sectrk 16
@ -443,11 +443,11 @@ diskdef wbw_hd1024
os 2.2
end
# First 4 slices of wbw_hd1024
# First 4 slices of wbw_hd1k
# Assumes standard 1MB prefix
# Offset of any slice (in tracks) = 128 + (1024 * <slice_num)
diskdef wbw_hd1024_0
diskdef wbw_hd1k_0
seclen 512
tracks 1024
sectrk 16
@ -459,7 +459,7 @@ diskdef wbw_hd1024_0
os 2.2
end
diskdef wbw_hd1024_1
diskdef wbw_hd1k_1
seclen 512
tracks 1024
sectrk 16
@ -471,7 +471,7 @@ diskdef wbw_hd1024_1
os 2.2
end
diskdef wbw_hd1024_2
diskdef wbw_hd1k_2
seclen 512
tracks 1024
sectrk 16
@ -483,7 +483,7 @@ diskdef wbw_hd1024_2
os 2.2
end
diskdef wbw_hd1024_3
diskdef wbw_hd1k_3
seclen 512
tracks 1024
sectrk 16

2
Tools/simh/Sim.cfg

@ -25,7 +25,7 @@ attach n8vem0 %1
;set hdsk debug=read;write;verbose
attach hdsk0 ..\..\Binary\hd512_combo.img
;attach hdsk0 ..\..\Binary\psys.img
attach hdsk1 ..\..\Binary\hd1024_combo.img
attach hdsk1 ..\..\Binary\hd1k_combo.img
set hdsk0 format=HDSK
set hdsk1 format=HDSK
set hdsk0 geom=T:8192/N:256/S:512

Loading…
Cancel
Save