Browse Source

Cleanup

pull/109/head
Wayne Warthen 6 years ago
parent
commit
0f37e64f35
  1. BIN
      Doc/RomWBW Applications.pdf
  2. BIN
      Doc/RomWBW Architecture.pdf
  3. BIN
      Doc/RomWBW Getting Started.pdf
  4. 62
      ReadMe.md
  5. 61
      ReadMe.txt
  6. 80
      Source/CPM22/loader.asm
  7. 80
      Source/CPM3/loader.asm
  8. 56
      Source/Doc/GettingStarted.md
  9. 80
      Source/ZPM3/loader.asm
  10. 82
      Source/ZSDOS/loader.asm

BIN
Doc/RomWBW Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW Architecture.pdf

Binary file not shown.

BIN
Doc/RomWBW Getting Started.pdf

Binary file not shown.

62
ReadMe.md

@ -3,7 +3,7 @@
## Z80/Z180 System Software
Version 2.9.2 Prerelease
Monday 23 March 2020
Tuesday 24 March 2020
Wayne Warthen <wwarthen@gmail.com>
@ -704,6 +704,16 @@ usage (“CPM Manual.pdf”). If you are new to the CP/M world, I would
recommend using this CP/M variant to start with simply because it is the
most stable and you are less likely to encounter problems.
### Errata
- The original versions of DDT, DDTZ, and ZSID used the RST 38 vector
which conflicts with interrupt mode 1 use of this vector. The DDT,
DDTZ, and ZSID applications in RomWBW have been modified to use RTS
30 to avoid this issue.
- Z-System applications will not run under CP/M 2.2. For example, the
`LDDS` date stamper with not run.
## ZSDOS 1.1
ZSDOS is the most popular non-DRI CP/M “clone” which is generally
@ -718,6 +728,13 @@ Additionally, the official documentation for Z-System is included in the
RomWBW distribution Doc directory (“ZSDOS Manual.pdf” and “ZCPR
Manual.pdf”).
### Errata
- Although most CP/M 2.2 applications will run under Z-System, some
may not work as expected. The best example is PIP which is not aware
of the ZSDOS paths and will fail in some scenarios (use `COPY`
instead).
## NZCOM Automatic Z-System
NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM
@ -728,11 +745,17 @@ On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1. After you
configure NZCOM, you can add a `PROFILE.SUB` file to automatically
launch NZCOM at boot.
To use, NZCOM, you must run through a simple configuration process. This
is well documented in the NZCOM manual in the “NZCOM Users Manual.pdf”
file in the RomWBW Doc directory. Additionally, there are instructions
for automatically launching NZCOM when the disk is booted under the host
OS via an auto command submission process.
NZCOM is not pre-configured. You must run through a simple configuration
process before loading it. Run MKZCM to do this.
NZCOM has substantially more functionality than CP/M or basic Z-System.
It is important to read the the “NZCOM Users Manual.pdf” file in the
RomWBW Doc directory.
### Errata
- SuperZap (`ZAP.COM`) is not working under NZCOM.
- There is no `DIR` command, you must use `SDZ` instead.
## Digital Research CP/M 3
@ -744,7 +767,13 @@ support tools and help system.
Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on
the system tracks of the disk. You do not place CPM3.SYS on the system
tracks.
tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`.
### Errata
- CLRDIR is not working right under CP/M 3. It only partially clears
the disk sectors of the directory area. The extent of this issue has
not been evaluated, but it is not a RomWBW issue.
## Simeon Cran’s ZPM3
@ -754,12 +783,23 @@ ZCPR 3. Essentially, it has the features of and compatibility with both.
Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system
tracks of the disk.
### Errata
- CLRDIR is not working right under ZPM3. It only partially clears the
disk sectors of the directory area. The extent of this issue has not
been evaluated, but it is not a RomWBW issue.
- ZPMLDR is included with ZPM3, but it is not working correctly.
- The ZPM operatins system is contained in the file called CPM3.SYS
which is confusing, but it is the author’s intended way of using
ZPM3.
- SuperZap (`ZAP.COM`) is not working under ZPM3.
## FreeRTOS
Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW.
FreeRTOS is not provided in the RomWBW distribution. FreeRTOS is
available under the [MIT licence](https://www.freertos.org/a00114.html)
and further general information is available at
Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is not
provided in the RomWBW distribution. FreeRTOS is available under the
[MIT licence](https://www.freertos.org/a00114.html) and further general
information is available at
[FreeRTOS](https://www.freertos.org/RTOS.html).
You can also contact Phillip for detailed information on the Z180

61
ReadMe.txt

@ -3,7 +3,7 @@ RomWBW
Z80/Z180 System Software
Version 2.9.2 Prerelease
Monday 23 March 2020
Tuesday 24 March 2020
Wayne Warthen wwarthen@gmail.com
@ -735,6 +735,16 @@ usage (“CPM Manual.pdf”). If you are new to the CP/M world, I would
recommend using this CP/M variant to start with simply because it is the
most stable and you are less likely to encounter problems.
Errata
- The original versions of DDT, DDTZ, and ZSID used the RST 38 vector
which conflicts with interrupt mode 1 use of this vector. The DDT,
DDTZ, and ZSID applications in RomWBW have been modified to use RTS
30 to avoid this issue.
- Z-System applications will not run under CP/M 2.2. For example, the
LDDS date stamper with not run.
ZSDOS 1.1
ZSDOS is the most popular non-DRI CP/M “clone” which is generally
@ -747,6 +757,13 @@ Z-System Notes. Additionally, the official documentation for Z-System is
included in the RomWBW distribution Doc directory (“ZSDOS Manual.pdf”
and “ZCPR Manual.pdf”).
Errata
- Although most CP/M 2.2 applications will run under Z-System, some
may not work as expected. The best example is PIP which is not aware
of the ZSDOS paths and will fail in some scenarios (use COPY
instead).
NZCOM Automatic Z-System
NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM
@ -757,11 +774,17 @@ On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1. After you
configure NZCOM, you can add a PROFILE.SUB file to automatically launch
NZCOM at boot.
To use, NZCOM, you must run through a simple configuration process. This
is well documented in the NZCOM manual in the “NZCOM Users Manual.pdf”
file in the RomWBW Doc directory. Additionally, there are instructions
for automatically launching NZCOM when the disk is booted under the host
OS via an auto command submission process.
NZCOM is not pre-configured. You must run through a simple configuration
process before loading it. Run MKZCM to do this.
NZCOM has substantially more functionality than CP/M or basic Z-System.
It is important to read the the “NZCOM Users Manual.pdf” file in the
RomWBW Doc directory.
Errata
- SuperZap (ZAP.COM) is not working under NZCOM.
- There is no DIR command, you must use SDZ instead.
Digital Research CP/M 3
@ -773,7 +796,13 @@ support tools and help system.
Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS on
the system tracks of the disk. You do not place CPM3.SYS on the system
tracks.
tracks. CPMLDR.SYS chain loads CPM3.SYS.
Errata
- CLRDIR is not working right under CP/M 3. It only partially clears
the disk sectors of the directory area. The extent of this issue has
not been evaluated, but it is not a RomWBW issue.
Simeon Cran’s ZPM3
@ -783,12 +812,22 @@ ZCPR 3. Essentially, it has the features of and compatibility with both.
Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system
tracks of the disk.
Errata
- CLRDIR is not working right under ZPM3. It only partially clears the
disk sectors of the directory area. The extent of this issue has not
been evaluated, but it is not a RomWBW issue.
- ZPMLDR is included with ZPM3, but it is not working correctly.
- The ZPM operatins system is contained in the file called CPM3.SYS
which is confusing, but it is the author’s intended way of using
ZPM3.
- SuperZap (ZAP.COM) is not working under ZPM3.
FreeRTOS
Note that Phillip Stevens has also ported FreeRTOS to run under RomWBW.
FreeRTOS is not provided in the RomWBW distribution. FreeRTOS is
available under the MIT licence and further general information is
available at FreeRTOS.
Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is not
provided in the RomWBW distribution. FreeRTOS is available under the MIT
licence and further general information is available at FreeRTOS.
You can also contact Phillip for detailed information on the Z180
implementation of FreeRTOS for RomWBW.

80
Source/CPM22/loader.asm

@ -31,17 +31,16 @@ SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $FE00 ; ENDING ADDRESS OF SYSTEM IMAGE
;
BYT .EQU 1 ; used to describe METADATA_SIZE below
WRD .EQU 2
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE
;
SECTOR_SIZE .EQU 512
BLOCK_SIZE .EQU 128
PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS
METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below)
PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS
;
PARTTBL_LOC .EQU $1BE
PARTTBL_SIZ .EQU $40
BOOTSIG_LOC .EQU $1FE
META_SIZE .EQU 32 ; SEE BELOW
META_LOC .EQU (PREFIX_SIZE - META_SIZE)
;
PT_LOC .EQU $1BE
PT_SIZ .EQU $40
;
;-------------------------------------------------------------------------------
; SECTOR 1
@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE
;----------------------------------------------------------------------------
;
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING
; ADDRESS OF $8000.
; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER
; USES THE METADATA TO LOAD THE OS DIRECTLY.
;
.ORG $8000
JR BOOT
@ -145,10 +145,10 @@ HEXASCII:
; CONVERT LOW NIBBLE OF A TO ASCII HEX
;
HEXCONV:
AND 0FH ;LOW NIBBLE ONLY
ADD A,90H
AND $0F ;LOW NIBBLE ONLY
ADD A,$90
DAA
ADC A,40H
ADC A,$40
DAA
RET
;
@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0
STR_DONE .DB "\r\n",0
STR_ERR .DB " Read Error!",0
;
.ORG $ - $8000 ; RESTORE ORG
.FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE
.ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR 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 PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT
; SIGNATURE.
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;
BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 512,0 ; JUST FILL SECTOR WITH ZEROES
.FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES
;
;-------------------------------------------------------------------------------
; SECTOR 3
@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED
.FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED
;
; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY
; SOME HARDWARE BIOSES.
;
PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
;
; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES
;
PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM)
PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED)
PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED)
PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED)
PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED)
;
; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR
;
.FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H
.FILL (META_LOC - $),0
;
; SECOND CHUNK OF METADATA
; METADATA
;
PR_WP .DB 0 ; WRITE PROTECT BOOLEADN
PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; DEPRECATED
PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS)
PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN
PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; (2) DEPRECATED
PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS)
;
#IF (META_SIZE != ($ - META_LOC))
.ECHO "META_SIZE VALUE IS WRONG!!!\r\n"
!!!
#ENDIF
;
#IF ($ != PREFIX_SIZE)
.ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n"
!!!
#ENDIF
;
.END
.END

80
Source/CPM3/loader.asm

@ -31,17 +31,16 @@ SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE
;
BYT .EQU 1 ; used to describe METADATA_SIZE below
WRD .EQU 2
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE
;
SECTOR_SIZE .EQU 512
BLOCK_SIZE .EQU 128
PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS
METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below)
PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS
;
PARTTBL_LOC .EQU $1BE
PARTTBL_SIZ .EQU $40
BOOTSIG_LOC .EQU $1FE
META_SIZE .EQU 32 ; SEE BELOW
META_LOC .EQU (PREFIX_SIZE - META_SIZE)
;
PT_LOC .EQU $1BE
PT_SIZ .EQU $40
;
;-------------------------------------------------------------------------------
; SECTOR 1
@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE
;----------------------------------------------------------------------------
;
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING
; ADDRESS OF $8000.
; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER
; USES THE METADATA TO LOAD THE OS DIRECTLY.
;
.ORG $8000
JR BOOT
@ -145,10 +145,10 @@ HEXASCII:
; CONVERT LOW NIBBLE OF A TO ASCII HEX
;
HEXCONV:
AND 0FH ;LOW NIBBLE ONLY
ADD A,90H
AND $0F ;LOW NIBBLE ONLY
ADD A,$90
DAA
ADC A,40H
ADC A,$40
DAA
RET
;
@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0
STR_DONE .DB "\r\n",0
STR_ERR .DB " Read Error!",0
;
.ORG $ - $8000 ; RESTORE ORG
.FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE
.ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR 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 PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT
; SIGNATURE.
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;
BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 512,0 ; JUST FILL SECTOR WITH ZEROES
.FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES
;
;-------------------------------------------------------------------------------
; SECTOR 3
@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED
.FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED
;
; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY
; SOME HARDWARE BIOSES.
;
PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
;
; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES
;
PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM)
PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED)
PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED)
PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED)
PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED)
;
; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR
;
.FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H
.FILL (META_LOC - $),0
;
; SECOND CHUNK OF METADATA
; METADATA
;
PR_WP .DB 0 ; WRITE PROTECT BOOLEADN
PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; DEPRECATED
PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS)
PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN
PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; (2) DEPRECATED
PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS)
;
#IF (META_SIZE != ($ - META_LOC))
.ECHO "META_SIZE VALUE IS WRONG!!!\r\n"
!!!
#ENDIF
;
#IF ($ != PREFIX_SIZE)
.ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n"
!!!
#ENDIF
;
.END
.END

56
Source/Doc/GettingStarted.md

@ -753,6 +753,16 @@ are new to the CP/M world, I would recommend using this CP/M variant
to start with simply because it is the most stable and you are less
likely to encounter problems.
### Errata
- The original versions of DDT, DDTZ, and ZSID used the RST 38
vector which conflicts with interrupt mode 1 use of this vector.
The DDT, DDTZ, and ZSID applications in RomWBW have been modified
to use RTS 30 to avoid this issue.
- Z-System applications will not run under CP/M 2.2. For example,
the `LDDS` date stamper with not run.
## ZSDOS 1.1
ZSDOS is the most popular non-DRI CP/M "clone" which is generally
@ -767,6 +777,12 @@ Additionally, the official documentation for Z-System is included in
the RomWBW distribution Doc directory ("ZSDOS Manual.pdf" and "ZCPR
Manual.pdf").
### Errata
- Although most CP/M 2.2 applications will run under Z-System, some
may not work as expected. The best example is PIP which is not aware
of the ZSDOS paths and will fail in some scenarios (use `COPY` instead).
## NZCOM Automatic Z-System
NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM
@ -777,11 +793,17 @@ a host OS. On the RomWBW NZCOM disk images, the boot OS is ZSDOS 1.1.
After you configure NZCOM, you can add a `PROFILE.SUB` file to
automatically launch NZCOM at boot.
To use, NZCOM, you must run through a simple configuration process.
This is well documented in the NZCOM manual in the "NZCOM Users
Manual.pdf" file in the RomWBW Doc directory. Additionally, there are
instructions for automatically launching NZCOM when the disk is
booted under the host OS via an auto command submission process.
NZCOM is not pre-configured. You must run through a simple
configuration process before loading it. Run MKZCM to do this.
NZCOM has substantially more functionality than CP/M or basic
Z-System. It is important to read the the "NZCOM Users
Manual.pdf" file in the RomWBW Doc directory.
### Errata
- SuperZap (`ZAP.COM`) is not working under NZCOM.
- There is no `DIR` command, you must use `SDZ` instead.
## Digital Research CP/M 3
@ -793,7 +815,13 @@ support tools and help system.
Note that to make a CP/M 3 boot disk, you actually place CPMLDR.SYS
on the system tracks of the disk. You do not place CPM3.SYS on the
system tracks.
system tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`.
### Errata
- CLRDIR is not working right under CP/M 3. It only partially clears
the disk sectors of the directory area. The extent of this issue
has not been evaluated, but it is not a RomWBW issue.
## Simeon Cran's ZPM3
@ -804,11 +832,21 @@ both.
Like CP/M 3, to make ZPM3 boot disk, you put CPMLDR.SYS on the system
tracks of the disk.
### Errata
- CLRDIR is not working right under ZPM3. It only partially clears
the disk sectors of the directory area. The extent of this issue
has not been evaluated, but it is not a RomWBW issue.
- ZPMLDR is included with ZPM3, but it is not working correctly.
- The ZPM operatins system is contained in the file called CPM3.SYS
which is confusing, but it is the author's intended way of using ZPM3.
- SuperZap (`ZAP.COM`) is not working under ZPM3.
## FreeRTOS
Note that Phillip Stevens has also ported FreeRTOS to run under
RomWBW. FreeRTOS is not provided in the RomWBW distribution. FreeRTOS
is available under the
Phillip Stevens has ported FreeRTOS to run under RomWBW. FreeRTOS is
not provided in the RomWBW distribution. FreeRTOS is available under
the
[MIT licence](https://www.freertos.org/a00114.html) and further general
information is available at
[FreeRTOS](https://www.freertos.org/RTOS.html).

80
Source/ZPM3/loader.asm

@ -31,17 +31,16 @@ SYS_ENT .EQU $0100 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $0100 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $1480 ; ENDING ADDRESS OF SYSTEM IMAGE
;
BYT .EQU 1 ; used to describe METADATA_SIZE below
WRD .EQU 2
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE
;
SECTOR_SIZE .EQU 512
BLOCK_SIZE .EQU 128
PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS
METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below)
PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS
;
PARTTBL_LOC .EQU $1BE
PARTTBL_SIZ .EQU $40
BOOTSIG_LOC .EQU $1FE
META_SIZE .EQU 32 ; SEE BELOW
META_LOC .EQU (PREFIX_SIZE - META_SIZE)
;
PT_LOC .EQU $1BE
PT_SIZ .EQU $40
;
;-------------------------------------------------------------------------------
; SECTOR 1
@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE
;----------------------------------------------------------------------------
;
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING
; ADDRESS OF $8000.
; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER
; USES THE METADATA TO LOAD THE OS DIRECTLY.
;
.ORG $8000
JR BOOT
@ -145,10 +145,10 @@ HEXASCII:
; CONVERT LOW NIBBLE OF A TO ASCII HEX
;
HEXCONV:
AND 0FH ;LOW NIBBLE ONLY
ADD A,90H
AND $0F ;LOW NIBBLE ONLY
ADD A,$90
DAA
ADC A,40H
ADC A,$40
DAA
RET
;
@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0
STR_DONE .DB "\r\n",0
STR_ERR .DB " Read Error!",0
;
.ORG $ - $8000 ; RESTORE ORG
.FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE
.ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR 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 PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT
; SIGNATURE.
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;
BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 512,0 ; JUST FILL SECTOR WITH ZEROES
.FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES
;
;-------------------------------------------------------------------------------
; SECTOR 3
@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED
.FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED
;
; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY
; SOME HARDWARE BIOSES.
;
PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
;
; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES
;
PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM)
PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED)
PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED)
PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED)
PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED)
;
; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR
;
.FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H
.FILL (META_LOC - $),0
;
; SECOND CHUNK OF METADATA
; METADATA
;
PR_WP .DB 0 ; WRITE PROTECT BOOLEADN
PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; DEPRECATED
PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS)
PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN
PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; (2) DEPRECATED
PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS)
;
#IF (META_SIZE != ($ - META_LOC))
.ECHO "META_SIZE VALUE IS WRONG!!!\r\n"
!!!
#ENDIF
;
#IF ($ != PREFIX_SIZE)
.ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n"
!!!
#ENDIF
;
.END
.END

82
Source/ZSDOS/loader.asm

@ -1,5 +1,5 @@
;===============================================================================
; BL.ASM
; LOADER.ASM
;
; BOOTLOADER FOR ROMWBW DISK OPERATING SYSTEMS.
;
@ -31,17 +31,16 @@ SYS_ENT .EQU $E600 ; SYSTEM (OS) ENTRY POINT ADDRESS
SYS_LOC .EQU $D000 ; STARTING ADDRESS TO LOAD SYSTEM IMAGE
SYS_END .EQU $FE00 ; ENDING ADDRESS OF SYSTEM IMAGE
;
BYT .EQU 1 ; used to describe METADATA_SIZE below
WRD .EQU 2
SEC_SIZE .EQU 512 ; DISK SECTOR SIZE
BLK_SIZE .EQU 128 ; OS BLOCK/RECORD SIZE
;
SECTOR_SIZE .EQU 512
BLOCK_SIZE .EQU 128
PREFIX_SIZE .EQU (3 * SECTOR_SIZE) ; 3 SECTORS
METADATA_SIZE .EQU BYT+WRD+(4*BYT)+16+BYT+WRD+WRD+WRD+WRD ; (as defined below)
PREFIX_SIZE .EQU (SEC_SIZE * 3) ; 3 SECTORS
;
PARTTBL_LOC .EQU $1BE
PARTTBL_SIZ .EQU $40
BOOTSIG_LOC .EQU $1FE
META_SIZE .EQU 32 ; SEE BELOW
META_LOC .EQU (PREFIX_SIZE - META_SIZE)
;
PT_LOC .EQU $1BE
PT_SIZ .EQU $40
;
;-------------------------------------------------------------------------------
; SECTOR 1
@ -52,7 +51,8 @@ BOOTSIG_LOC .EQU $1FE
;----------------------------------------------------------------------------
;
; THE FOLLOWING BOOTSTRAP CODE IS BUILT TO ASSUME IT WILL BE EXECUTED AT A STARTING
; ADDRESS OF $8000.
; ADDRESS OF $8000. THIS CODE IS *ONLY* FOR UNA. THE ROMWBW ROM BOOTLOADER
; USES THE METADATA TO LOAD THE OS DIRECTLY.
;
.ORG $8000
JR BOOT
@ -145,10 +145,10 @@ HEXASCII:
; CONVERT LOW NIBBLE OF A TO ASCII HEX
;
HEXCONV:
AND 0FH ;LOW NIBBLE ONLY
ADD A,90H
AND $0F ;LOW NIBBLE ONLY
ADD A,$90
DAA
ADC A,40H
ADC A,$40
DAA
RET
;
@ -163,17 +163,17 @@ STR_LOAD .DB "\r\nLoading",0
STR_DONE .DB "\r\n",0
STR_ERR .DB " Read Error!",0
;
.ORG $ - $8000 ; RESTORE ORG
.FILL PARTTBL_LOC - $ ; FILL TO START OF PARTITION TABLE
.ORG $ - $8000 ; BACK TO ABSOLUTE ADDRESS
;
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
;
; RESERVE SPACE FOR 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 PARTTBL_SIZ,$00 ; PARTITION TABLE, FILL WITH ZEROES
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
;
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT
; SIGNATURE.
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
;
BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
@ -184,7 +184,7 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 512,0 ; JUST FILL SECTOR WITH ZEROES
.FILL SEC_SIZE,0 ; JUST FILL SECTOR WITH ZEROES
;
;-------------------------------------------------------------------------------
; SECTOR 3
@ -193,36 +193,34 @@ BOOTSIG .DB $55,$AA ; STANDARD BOOT SIGNATURE
;
;----------------------------------------------------------------------------
;
.FILL 128 * 3,0 ; FIRST 384 BYTES ARE NOT YET DEFINED
.FILL (BLK_SIZE * 3),0 ; FIRST 384 BYTES ARE NOT YET DEFINED
;
; THE FOLLOWING TWO BYTES ARE AN ADDITIONAL SIGNATURE THAT IS VERIFIED BY
; SOME HARDWARE BIOSES.
;
PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
;
; FIRST CHUNK OF METADATA IMMEDIATELY FOLLOWS THE SIGNATURE BYTES
;
PR_PLATFORM .DB 0 ; PLATFORM ID (SEE STD.ASM)
PR_DEVICE .DB 0 ; ? (PROBABLY UNUSED)
PR_FORMATTER .DB 0,0,0,0,0,0,0,0 ; ? (PROBABLY UNUSED)
PR_DRIVE .DB 0 ; ? (PROBABLY UNUSED)
PR_LOG_UNIT .DW 0 ; ? (PROBABLY UNUSED)
;
; FILLER TO PLACE SECOND CHUNK OF METADATA AT THE END OF THE SECTOR
;
.FILL ((PREFIX_SIZE - METADATA_SIZE) - $),00H
.FILL (META_LOC - $),0
;
; SECOND CHUNK OF METADATA
; METADATA
;
PR_WP .DB 0 ; WRITE PROTECT BOOLEADN
PR_UPDSEQ .DW 0 ; PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; DEPRECATED
PR_LDLOC .DW SYS_LOC ; ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; ADDRESS TO ENTER SYSTEM (OS)
PR_WP .DB 0 ; (1) WRITE PROTECT BOOLEAN
PR_UPDSEQ .DW 0 ; (2) PREFIX UPDATE SEQUENCE NUMBER (DEPRECATED?)
PR_VER .DB RMJ,RMN,RUP,RTP ; (4) OS BUILD VERSION
PR_LABEL .DB "Unlabeled Drive ","$" ; (17) DISK LABEL (EXACTLY 16 BYTES!!!)
.DW 0 ; (2) DEPRECATED
PR_LDLOC .DW SYS_LOC ; (2) ADDRESS TO START LOADING SYSTEM
PR_LDEND .DW SYS_END ; (2) ADDRESS TO STOP LOADING SYSTEM
PR_ENTRY .DW SYS_ENT ; (2) ADDRESS TO ENTER SYSTEM (OS)
;
#IF (META_SIZE != ($ - META_LOC))
.ECHO "META_SIZE VALUE IS WRONG!!!\r\n"
!!!
#ENDIF
;
#IF ($ != PREFIX_SIZE)
.ECHO "LOADER PREFIX IS WRONG SIZE!!!\r\n"
!!!
#ENDIF
;
.END
.END

Loading…
Cancel
Save