Browse Source

Merge pull request #110 from wwarthen/master

Sync
pull/112/head
Wayne Warthen 6 years ago
committed by GitHub
parent
commit
565400eec5
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 9
      Doc/ChangeLog.txt
  2. BIN
      Doc/Contrib/SC126_How-To_No_1_Serial_Comms_Using_Minicom_v.1.1.pdf
  3. BIN
      Doc/Contrib/SC126_How-To_No_2_Preparing_an_SD_Card_for_Use_with_SC126_v1.5.3.pdf
  4. BIN
      Doc/Contrib/SC126_How-To_No_3_Updating_RomWBW_Using_a_Hybrid_SD_Card_v1.1.pdf
  5. BIN
      Doc/RomWBW Applications.pdf
  6. BIN
      Doc/RomWBW Architecture.pdf
  7. BIN
      Doc/RomWBW Getting Started.pdf
  8. 16
      ReadMe.md
  9. 14
      ReadMe.txt
  10. 7
      Source/Apps/Tune/Tune.asm
  11. 11
      Source/Apps/XM/xmdm125.asm
  12. 14
      Source/Apps/XM/xmhb.180
  13. 2
      Source/CPM22/loader.asm
  14. 8
      Source/CPM3/biosldr.z80
  15. 10
      Source/CPM3/boot.z80
  16. 2
      Source/CPM3/loader.asm
  17. 2
      Source/Doc/Common.inc
  18. 12
      Source/Doc/GettingStarted.md
  19. 4
      Source/HBIOS/Config/N8_std.asm
  20. 4
      Source/HBIOS/cfg_n8.asm
  21. 12
      Source/HBIOS/dsrtc.asm
  22. 68
      Source/HBIOS/tms.asm
  23. BIN
      Source/Images/Common/CLRDIR.COM
  24. BIN
      Source/Images/Common/ZDE.COM
  25. BIN
      Source/Images/d_bp/u0/LDDS.COM
  26. BIN
      Source/Images/d_bp/u0/LDNZT.COM
  27. BIN
      Source/Images/d_bp/u0/LDP2D.COM
  28. BIN
      Source/Images/d_bp/u0/SUBMIT.COM
  29. 28
      Source/Images/d_cpm3/u0/ROMWBW.TXT
  30. 46
      Source/Images/d_zpm3/u0/ROMWBW.TXT
  31. BIN
      Source/Images/d_zsdos/u0/CLOCKS.DAT
  32. BIN
      Source/Images/d_zsdos/u0/LDDS.COM
  33. BIN
      Source/Images/d_zsdos/u0/LDNZT.COM
  34. BIN
      Source/Images/d_zsdos/u0/LDP2D.COM
  35. BIN
      Source/RomDsk/ROM_1024KB/CLOCKS.DAT
  36. BIN
      Source/RomDsk/ROM_1024KB/CLRDIR.COM
  37. BIN
      Source/RomDsk/ROM_1024KB/LDDS.COM
  38. BIN
      Source/RomDsk/ROM_1024KB/LDNZT.COM
  39. BIN
      Source/RomDsk/ROM_1024KB/LDP2D.COM
  40. BIN
      Source/RomDsk/ROM_1024KB/ZDE.COM
  41. BIN
      Source/RomDsk/ROM_512KB/CLRDIR.COM
  42. BIN
      Source/RomDsk/ROM_512KB/LDDS.COM
  43. BIN
      Source/RomDsk/ROM_512KB/LDP2D.COM
  44. BIN
      Source/RomDsk/ROM_512KB/ZDE.COM
  45. 2
      Source/ZPM3/loader.asm
  46. 2
      Source/ZSDOS/Clock/Build.cmd
  47. BIN
      Source/ZSDOS/Clock/CLOCKS.DAT
  48. BIN
      Source/ZSDOS/Clock/LDDS.COM
  49. BIN
      Source/ZSDOS/Clock/LDNZT.COM
  50. BIN
      Source/ZSDOS/Clock/LDP2D.COM
  51. 24
      Source/ZSDOS/Clock/ReadMe.txt
  52. 2
      Source/ZSDOS/Clock/preclock.lib
  53. 20
      Source/ZSDOS/Clock/wbwclk.z80
  54. 2
      Source/ZSDOS/loader.asm
  55. 4
      Source/ver.inc
  56. 4
      Source/ver.lib

9
Doc/ChangeLog.txt

@ -1,3 +1,12 @@
Version 3.0.1
-------------
- WBW: Increase XModem timeout waiting for host to start sending
- WBW: Update TMS driver to dynamically increase Z180 I/O W/S inside driver
- MJS: Update CLRDIR for CP/M 3 compatibility
- WBW: Corrected cursor on/off esc sequence in pre-configured ZDE
- WBW: Fix automatic CRT console switching under CP/M 3 and ZPM3
- WBW: DSRTC driver now correctly returns an error if there is no RTC present
Version 3.0.0
-------------
- WBW: v2.9.2 -> 3.0 version upgrade due to scope of changes

BIN
Doc/Contrib/SC126_How-To_No_1_Serial_Comms_Using_Minicom.pdf → Doc/Contrib/SC126_How-To_No_1_Serial_Comms_Using_Minicom_v.1.1.pdf

Binary file not shown.

BIN
Doc/Contrib/SC126_How-To_No_2_Preparing_an_SD_Card_for_Use_with_SC126_v1.5.2.pdf → Doc/Contrib/SC126_How-To_No_2_Preparing_an_SD_Card_for_Use_with_SC126_v1.5.3.pdf

Binary file not shown.

BIN
Doc/Contrib/SC126_How-To_No_3_Updating_RomWBW_Using_a_Hybrid_SD_Card_v1.1.pdf

Binary file not shown.

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.

16
ReadMe.md

@ -2,8 +2,8 @@
## Z80/Z180 System Software
Version 3.0
Friday 27 March 2020
Version 3.0.1
Monday 30 March 2020
Wayne Warthen <wwarthen@gmail.com>
@ -771,12 +771,7 @@ tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`.
### Notes
- `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. To use CLRDIR, you
can temporarily boot back into Z-System.
- The `DATE` command cannot yet be used to set the RTC. The RTC is
- The `DATE` command cannot yet be used to **set** the RTC. The RTC is
used to read the current date/time for file stamping, etc. You can
use the `RTC` app to set the RTC clock.
@ -790,11 +785,6 @@ tracks of the disk.
### Notes
- `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. To use CLRDIR, you
can temporarily boot back into Z-System.
- `ZPMLDR` is included with ZPM3, but it is not working correctly.
- The ZPM operating system is contained in the file called CPM3.SYS

14
ReadMe.txt

@ -2,8 +2,8 @@ RomWBW
Z80/Z180 System Software
Version 3.0
Friday 27 March 2020
Version 3.0.1
Monday 30 March 2020
Wayne Warthen wwarthen@gmail.com
@ -800,11 +800,6 @@ tracks. CPMLDR.SYS chain loads CPM3.SYS.
Notes
- 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. To use CLRDIR, you
can temporarily boot back into Z-System.
- The DATE command cannot yet be used to set the RTC. The RTC is used
to read the current date/time for file stamping, etc. You can use
the RTC app to set the RTC clock.
@ -819,11 +814,6 @@ tracks of the disk.
Notes
- 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. To use CLRDIR, you can
temporarily boot back into Z-System.
- ZPMLDR is included with ZPM3, but it is not working correctly.
- The ZPM operating system is contained in the file called CPM3.SYS

7
Source/Apps/Tune/Tune.asm

@ -38,6 +38,7 @@
; 2018-01-28 [WBW] Added support for MYM sound files
; 2019-11-21 [WBW] Added table-driven configuration
; 2020-02-11 [WBW] Made hardware config & detection more flexible
; 2020-03-29 [WBW] Fix error in Z180 I/O W/S bracketing
;_______________________________________________________________________________
;
; ToDo:
@ -124,8 +125,10 @@ PROBE:
LD C,A ; ... to C
IN A,(C) ; Read back value in register 2
CP $AA ; Value as written?
JR Z,MAT ; Hardware matched!
PUSH AF ; Save AF
CALL NORMIO ; Back to normal I/O speeds
POP AF ; Recover AF
JR Z,MAT ; Hardware matched!
JR CFGSEL ; And keep trying
;
MAT:
@ -766,7 +769,7 @@ FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM)
TMP .DB 0 ; work around use of undocumented Z80
;
MSGBAN .DB "Tune Player for RomWBW v2.4, 23-Mar-2020",0
MSGBAN .DB "Tune Player for RomWBW v2.5, 29-Mar-2020",0
MSGUSE .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3",13,10
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10

11
Source/Apps/XM/xmdm125.asm

@ -2213,6 +2213,14 @@ ILLDU: CALL ERXIT
;
RCVRECD:XRA A ; Initialize error count to zero
STA ERRCT
;
;WBW BEGIN: Be more patient waiting for host to start sending file
LDA FRSTIM ; WBW: Get first time flag
ORA A ; WBW: Set CPU flags
JNZ RCVRPT ; WBW: If not first time, bypass
MVI A,-10 ; WBW: Else increase error limit
STA ERRCT ; WBW: Save error new limit
;WBW END
;
RCVRPT: IF CONFUN ; Check for function key?
CALL FUNCHK ; Yeah, why not?
@ -2224,7 +2232,8 @@ RCVRPT: IF CONFUN ; Check for function key?
JNZ RCVSABT ; If so, bail out now...
ENDIF
;
MVI B,10-1 ; 10-second timeout
;MVI B,10-1 ; 10-second timeout
MVI B,5-1 ; WBW: 5-second timeout
CALL RECV ; Get any character received
JC RCVSTOT ; Timeout
;

14
Source/Apps/XM/xmhb.180

@ -243,7 +243,7 @@ EXTRA3:
;
BIOID DB 0 ; BIOS ID, 1=HBIOS, 2=UBIOS
CPUSPD DB 10 ; CPU speed in MHz
RCVSCL DW 2800 ; RECV loop timeout scalar
RCVSCL DW 6600 ; RECV loop timeout scalar
;
RBC DB "RBC, 28-Aug-2019$"
;
@ -302,6 +302,9 @@ U_JPTBL:
; UART initialization
;
U_INIT:
LD HL,13000 ; Receive loop timeout scalar
LD (RCVSCL),HL ; ... for UART RCVRDY timing
;
LD HL,U_JPTBL
LD DE,U_LBL
JP MINIT_RET
@ -429,6 +432,9 @@ A_JPTBL:
; ASCI initialization
;
A_INIT:
LD HL,7500 ; Receive loop timeout scalar
LD (RCVSCL),HL ; ... for ASCI RCVRDY timing
;
; Test for location of Z180 internal registers
; and use appropriate I/O address.
LD B,0 ; set MSB for 16 bit I/O
@ -601,6 +607,9 @@ S_JPTBL:
; SIO initialization
;
S_INIT:
LD HL,12000 ; Receive loop timeout scalar
LD (RCVSCL),HL ; ... for UART RCVRDY timing
;
; Suppress interrupts
LD A,01H ; WR1
OUT (S_CTLP),A ; Select WR1
@ -841,6 +850,9 @@ UF_JPTBL:
; USB-FIFO initialization
;
UF_INIT:
LD HL,12000 ; Receive loop timeout scalar
LD (RCVSCL),HL ; ... for UART RCVRDY timing
;
LD HL,UF_JPTBL
LD DE,UF_LBL
JP MINIT_RET

2
Source/CPM22/loader.asm

@ -207,7 +207,7 @@ PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
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!!!)
PR_LABEL .DB "Unlabeled$$$$$$$","$" ; (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

8
Source/CPM3/biosldr.z80

@ -162,12 +162,12 @@ const:
ld a,82H
halt
conin:
ld bc,0000H ; unit 0, func 0 = CIN
ld bc,0080H ; unit 80h (console), func 0 = CIN
call 0FFF0H
conout:
ld e,c ; output character in E
ld bc,0100H ; unit 0, func 1 = COUT
ld bc,0180H ; unit 80h (console), func 1 = COUT
;rst 08 ; do it
call 0FFF0H
ret ; return
@ -310,7 +310,7 @@ xmove:
cin:
; input character from console via hbios
ld c,0D0H ; console unit to c
ld c,080H ; console unit to c
ld b,00H ; hbios func: input char
call 0FFF0H ; hbios reads character
ld a,e ; move character to a for return
@ -319,7 +319,7 @@ cin:
cout:
; output character to console via hbios
ld e,a ; output char to e
ld c,0D0H ; console unit to c
ld c,080H ; console unit to c
ld b,01H ; hbios func: output char
call 0FFF0H ; hbios outputs character
ret

10
Source/CPM3/boot.z80

@ -13,6 +13,7 @@
extrn @dtbl,@ctbl
extrn @date,@hour,@min,@sec
extrn @srch1
extrn @hbbio
extrn addhla, bcd2bin, bin2bcd
extrn cout, phex8, phex16, crlf, crlf2
@ -73,7 +74,8 @@ init$2:
cinit:
; Setup CON: I/O vector based on HBIOS console device
ld b,0FAh ; HBIOS Peek Function
ld d,0 ; Bank 0 has HCB
ld a,(@hbbio) ; HBIOS bank id
ld d,a ; ... goes in D
ld hl,112h ; Offset 112h is current console device
rst 08 ; Call HBIOS, value in E
push de ; save console unit value
@ -94,16 +96,19 @@ cinit$1:
rst 08 ; do it, count in E
ld a,e ; device count to accum
pop de ; recover console unit num to E
push af ; save device count
cp 2 ; check for 2+ char devices
jr c,cinit$3 ; if not, skip aux assignment
ld a,e ; console unit num to A
or a ; check for zero
ld hl,4000h ; assume aux on second char device
jr nz,cinit$2 ; if console on unit 0, assumption good
jr z,cinit$2 ; if console on unit 0, assumption good
ld hl,8000h ; otherwise, aux goes to first char device
cinit$2:
ld (@aivec),hl ; assign to aux input
ld (@aovec),hl ; assign to aux output
cinit$3:
pop af ; recover device count
; Truncate char table based on actual num of char devices
rlca ; A still has char device count
rlca ; * 8 for ctbl entry size
@ -490,6 +495,7 @@ time$get:
ld b,020h ; HBIOS func: get time
ld hl,tim$buf ; time buffer
rst 08 ; do it
ret nz ; bail out on error
; convert yymmss in time buffer -> cpm3 epoch date offset
call date2cpm ; time buf (yr, mon, day) -> SCB (@date)

2
Source/CPM3/loader.asm

@ -207,7 +207,7 @@ PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
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!!!)
PR_LABEL .DB "Unlabeled$$$$$$$","$" ; (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

2
Source/Doc/Common.inc

@ -1,4 +1,4 @@
!def(ver)(3.0)
!def(ver)(3.0.1)
!def(date)(!mdate)
!def(product)(RomWBW)
!def(author)(Wayne Warthen)

12
Source/Doc/GettingStarted.md

@ -819,12 +819,7 @@ system tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`.
### Notes
- `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. To use CLRDIR,
you can temporarily boot back into Z-System.
- The `DATE` command cannot yet be used to set the RTC. The RTC is
- The `DATE` command cannot yet be used to **set** the RTC. The RTC is
used to read the current date/time for file stamping, etc. You can
use the `RTC` app to set the RTC clock.
@ -839,11 +834,6 @@ tracks of the disk.
### Notes
- `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. To use CLRDIR,
you can temporarily boot back into Z-System.
- `ZPMLDR` is included with ZPM3, but it is not working correctly.
- The ZPM operating system is contained in the file called CPM3.SYS

4
Source/HBIOS/Config/N8_std.asm

@ -25,8 +25,8 @@
#include "cfg_n8.asm"
;
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .SET 1 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 3 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;

4
Source/HBIOS/cfg_n8.asm

@ -34,8 +34,8 @@ RAMBIAS .EQU 0 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
;
Z180_BASE .EQU $40 ; Z180: I/O BASE ADDRESS FOR INTERNAL REGISTERS
Z180_CLKDIV .EQU 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .EQU 1 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .EQU 3 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
Z180_MEMWAIT .EQU 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .EQU 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
N8_PPI0 .EQU $80 ; N8: FIRST PARALLEL PORT REGISTERS BASE ADR
N8_PPI1 .EQU $84 ; N8: SECOND PARALLEL PORT REGISTERS BASE ADR

12
Source/HBIOS/dsrtc.asm

@ -236,6 +236,9 @@ DSRTC_SETBLK:
; 24 HOUR TIME FORMAT IS ASSUMED
;
DSRTC_GETTIM:
LD A,(DSRTC_STAT) ; GET DEVICE STATUS
OR A ; SET FLAGS
RET NZ ; BAIL OUT ON ERROR
;
PUSH HL ; SAVE ADR OF OUTPUT BUF
;
@ -272,6 +275,9 @@ DSRTC_GETTIM:
; 24 HOUR TIME FORMAT IS ASSUMED
;
DSRTC_SETTIM:
LD A,(DSRTC_STAT) ; GET DEVICE STATUS
OR A ; SET FLAGS
RET NZ ; BAIL OUT ON ERROR
;
; COPY INCOMING TIME DATA TO OUR TIME BUFFER
LD A,(HB_INVBNK) ; COPY FROM CURRENT USER BANK
@ -303,6 +309,9 @@ DSRTC_SETTIM:
; E: VALUE (OUTPUT)
;
DSRTC_GETBYT:
LD A,(DSRTC_STAT) ; GET DEVICE STATUS
OR A ; SET FLAGS
RET NZ ; BAIL OUT ON ERROR
LD A,C ; INDEX
SLA A ; SHIFT TO INDEX BITS
ADD A,$C1 ; CMD OFFSET
@ -316,6 +325,9 @@ DSRTC_GETBYT:
; E: VALUE
;
DSRTC_SETBYT:
LD A,(DSRTC_STAT) ; GET DEVICE STATUS
OR A ; SET FLAGS
RET NZ ; BAIL OUT ON ERROR
LD A,C ; INDEX
SLA A ; SHIFT TO INDEX BITS
ADD A,$C0 ; CMD OFFSET

68
Source/HBIOS/tms.asm

@ -51,11 +51,11 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
; IF YOU SEE SCREEN CORRUPTION, ADJUST THIS!!!
;
#IF (TMSMODE == TMSMODE_N8)
; BELOW WAS TUNED FOR N8 AT 18MHZ WITH 3 IO WAIT STATES
#DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP \ NOP \ NOP
; BELOW WAS TUNED FOR N8 AT 18MHZ
#DEFINE TMS_IODELAY EX (SP),HL \ EX (SP),HL ; 38 W/S
#ELSE
; BELOW WAS TUNED FOR SBC AT 8MHZ
#DEFINE TMS_IODELAY NOP \ NOP
#DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S
#ENDIF
;
;======================================================================
@ -63,6 +63,10 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
;======================================================================
;
TMS_INIT:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
;
#IF (TMSMODE == TMSMODE_SCG)
LD A,$FF
OUT (TMS_ACR),A ; INIT AUX CONTROL REG
@ -85,7 +89,7 @@ TMS_INIT:
TMS_INIT1:
CALL TMS_CRTINIT ; SETUP THE TMS CHIP REGISTERS
CALL TMS_LOADFONT ; LOAD FONT DATA FROM ROM TO TMS STRORAGE
CALL TMS_VDARES
CALL TMS_VDARES1
#IF (TMSMODE == TMSMODE_N8)
CALL PPK_INIT ; INITIALIZE KEYBOARD DRIVER
#ENDIF
@ -150,6 +154,10 @@ TMS_VDAQRY:
RET
TMS_VDARES:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
TMS_VDARES1: ; ENTRY POINT TO AVOID TMS_Z180IO RECURSION
LD DE,0 ; ROW = 0, COL = 0
CALL TMS_XY ; SEND CURSOR TO TOP LEFT
LD A,' ' ; BLANK THE SCREEN
@ -175,6 +183,9 @@ TMS_VDASCS:
CALL PANIC ; NOT IMPLEMENTED (YET)
TMS_VDASCP:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
CALL TMS_CLRCUR
CALL TMS_XY ; SET CURSOR POSITION
CALL TMS_SETCUR
@ -190,6 +201,9 @@ TMS_VDASCO:
RET
TMS_VDAWRC:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
CALL TMS_CLRCUR ; CURSOR OFF
LD A,E ; CHARACTER TO WRITE GOES IN A
CALL TMS_PUTCHAR ; PUT IT ON THE SCREEN
@ -198,6 +212,9 @@ TMS_VDAWRC:
RET
TMS_VDAFIL:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
CALL TMS_CLRCUR
LD A,E ; FILL CHARACTER GOES IN A
EX DE,HL ; FILL LENGTH GOES IN DE
@ -207,6 +224,9 @@ TMS_VDAFIL:
RET
TMS_VDACPY:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
CALL TMS_CLRCUR
; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS TMS_POS
; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT
@ -220,6 +240,9 @@ TMS_VDACPY:
RET
TMS_VDASCR:
#IF (CPUFAM == CPU_Z180)
CALL TMS_Z180IO
#ENDIF
CALL TMS_CLRCUR
TMS_VDASCR0:
LD A,E ; LOAD E INTO A
@ -689,6 +712,39 @@ TMS_BLKCPY3:
;
RET
;
;----------------------------------------------------------------------
; Z180 LOW SPEED I/O CODE BRACKETING
;----------------------------------------------------------------------
;
#IF (CPUFAM == CPU_Z180)
;
TMS_Z180IO:
; HOOK CALLERS RETURN TO RESTORE DCNTL
EX (SP),HL ; SAVE HL & HL := RET ADR
LD (TMS_Z180IOR),HL ; SET RET ADR
LD HL,TMS_Z180IOX ; HL := SPECIAL RETURN ADR
EX (SP),HL ; RESTORE HL, INS NEW RET ADR
; SET Z180 MAX I/O WAIT STATES
PUSH AF ; SAVE AF
IN0 A,(Z180_DCNTL) ; GET CURRENT Z180 DCNTL
LD (TMS_DCNTL),A ; SAVE IT
OR %00110000 ; NEW DCNTL VALUE (MAX I/O W/S)
OUT0 (Z180_DCNTL),A ; IMPLEMENT IT
POP AF ; RESTORE AF
; BACK TO CALLER
TMS_Z180IOR .EQU $+1
JP $0000 ; BACK TO CALLER
;
TMS_Z180IOX:
; RESTORE ORIGINAL DCNTL
PUSH AF ; SAVE AF
LD A,(TMS_DCNTL) ; ORIG DCNTL
OUT0 (Z180_DCNTL),A ; IMPLEMENT IT
POP AF ; RESTORE AF
RET ; DONE
;
#ENDIF
;
;==================================================================================================
; TMS DRIVER - DATA
;==================================================================================================
@ -751,6 +807,10 @@ TMS_INIT9918:
;
TMS_INIT9918LEN .EQU $ - TMS_INIT9918
;
#IF (CPUFAM == CPU_Z180)
TMS_DCNTL .DB $00 ; SAVE Z180 DCNTL AS NEEDED
#ENDIF
;
;==================================================================================================
; TMS DRIVER - INSTANCE DATA
;==================================================================================================

BIN
Source/Images/Common/CLRDIR.COM

Binary file not shown.

BIN
Source/Images/Common/ZDE.COM

Binary file not shown.

BIN
Source/Images/d_bp/u0/LDDS.COM

Binary file not shown.

BIN
Source/Images/d_bp/u0/LDNZT.COM

Binary file not shown.

BIN
Source/Images/d_bp/u0/LDP2D.COM

Binary file not shown.

BIN
Source/Images/d_bp/u0/SUBMIT.COM

Binary file not shown.

28
Source/Images/d_cpm3/u0/ROMWBW.TXT

@ -1,23 +1,21 @@
This is a generic CP/M 3 adaptation for RomWBW.
To start CP/M 3, first boot into CP/M 2.2 or ZSystem. Then
switch to the drive that contains the CP/M 3 hard disk image
and run CPMLDR. You will be prompted for the disk unit
of the CP/M 3 image.
There are two ways to launch CP/M 3. First, you can run the command
CPMLDR from a CP/M 2.2 or Z-System command line. Alternatively, you
boot directly into CP/M 3 by choosing the CP/M 3 disk from the RomWBW
loader prompt. The CP/M 3 disk must be bootable in this case.
With the following exceptions, the files in this directory
came from the CP/M 3 binary distribution on "The Unofficial
CP/M Web site" at http://www.cpm.z80.de/binary.html.
With the following exceptions, the files in this directory came from
the CP/M 3 binary distribution on "The Unofficial CP/M Web site" at
http://www.cpm.z80.de/binary.html.
As documented in the "README.1ST" file, the included
files have been patched with all applicable DRI patches
per CPM3FIX.PAT.
As documented in the "README.1ST" file, the included files have been
patched with all applicable DRI patches per CPM3FIX.PAT.
In addition, the following have been added:
- INITDIR.COM was not included. The copy included is the
original DRI distribution, with both patches installed.
- INITDIR.COM was not included. The copy included is the original
DRI distribution, with both patches installed.
- ZSID.COM is the original DRI ZSID distribution, but
patched to use RST 6 instead of RST 7 to avoid conflicting
with mode 1 interrupts.
- ZSID.COM is the original DRI ZSID distribution, but patched to use
RST 6 instead of RST 7 to avoid conflicting with mode 1 interrupts.

46
Source/Images/d_zpm3/u0/ROMWBW.TXT

@ -1,32 +1,28 @@
This is a generic ZPM3 adaptation for RomWBW.
To start ZPM3, first boot into CP/M 2.2 or ZSystem. Then
switch to the drive that contains the ZPM3 hard disk image
and run CPMLDR. You will be prompted for the disk unit
of the ZPM3 image.
There are two ways to launch ZPM3. First, you can run the command
CPMLDR from a CP/M 2.2 or Z-System command line. Alternatively, you
boot directly into ZPM3 by choosing the ZPM3 disk from the RomWBW
loader prompt. The ZPM3 disk must be bootable in this case.
You may notice that there is a ZPMLDR application on the
hard disk image. This application is equivalent to CPMLDR,
but it has some issues with the number of drives that
RomWBW supports. So, as indicated above, use CPMLDR to
launch ZPM3.
You may notice that there is a ZPMLDR application on the hard disk
image. This application is equivalent to CPMLDR, but it has some
issues with the number of drives that RomWBW supports. So, as
indicated above, use CPMLDR to launch ZPM3.
I have not found a way to make ZPM3 start up with any drive
other than A: as the system drive. So, during the load
process, the boot drive and drive A: are "swapped" so that
the boot drive is always drive A:. Use the ASSIGN
command after starting ZPM3 to see how the drives get
mapped.
I have not found a way to make ZPM3 start up with any drive other
than A: as the system drive. So, during the load process, the boot
drive and drive A: are "swapped" so that the boot drive is always
drive A:. Use the ASSIGN command after starting ZPM3 to see how the
drives get mapped.
Per ZPM3 standard, files are distributed across different
user areas depending on their usage. Normal applications
are in user 15. Help files in user 10. Configuration
files in user 14.
Per ZPM3 standard, files are distributed across different user areas
depending on their usage. Normal applications are in user 15. Help
files in user 10. Configuration files in user 14.
In addition to the applications provided in the ZPM3
distributio, the normal CP/M 3 files are included in user
area 15. A few typical ZCPR utility programs are also included
in user area 15:
In addition to the applications provided in the ZPM3 distributio, the
normal CP/M 3 files are included in user area 15. A few typical ZCPR
utility programs are also included in user area 15:
- ALIAS
- ARUNZ
@ -47,5 +43,5 @@ in user area 15:
It is a bit confusing, but the ZPM3 system file is called CPM3.SYS.
This is the ZPM3 default configuration and I guess it is done this
way to maximize compatibility with CP/M 3. You will notice that
the startup banner will indicate ZPM3.
way to maximize compatibility with CP/M 3. You will notice that the
startup banner will indicate ZPM3.

BIN
Source/Images/d_zsdos/u0/CLOCKS.DAT

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/LDDS.COM

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/LDNZT.COM

Binary file not shown.

BIN
Source/Images/d_zsdos/u0/LDP2D.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_1024KB/CLOCKS.DAT

Binary file not shown.

BIN
Source/RomDsk/ROM_1024KB/CLRDIR.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_1024KB/LDDS.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_1024KB/LDNZT.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_1024KB/LDP2D.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_1024KB/ZDE.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/CLRDIR.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/LDDS.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/LDP2D.COM

Binary file not shown.

BIN
Source/RomDsk/ROM_512KB/ZDE.COM

Binary file not shown.

2
Source/ZPM3/loader.asm

@ -207,7 +207,7 @@ PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
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!!!)
PR_LABEL .DB "Unlabeled$$$$$$$","$" ; (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

2
Source/ZSDOS/Clock/Build.cmd

@ -11,4 +11,4 @@ set ZXBINDIR=%TOOLS%/cpm/bin/
set ZXLIBDIR=%TOOLS%/cpm/lib/
set ZXINCDIR=%TOOLS%/cpm/include/
zx ZMAC -HBCLK -/P
zx ZMAC -WBWCLK -/P

BIN
Source/ZSDOS/Clock/CLOCKS.DAT

Binary file not shown.

BIN
Source/ZSDOS/Clock/LDDS.COM

Binary file not shown.

BIN
Source/ZSDOS/Clock/LDNZT.COM

Binary file not shown.

BIN
Source/ZSDOS/Clock/LDP2D.COM

Binary file not shown.

24
Source/ZSDOS/Clock/ReadMe.txt

@ -1,9 +1,23 @@
This directory contains the source and assembled versions of the ZSystem Clock Drivers for N8VEM HBIOS.
This directory contains the source and assembled versions of the
ZSystem Clock Drivers for RomWBW HBIOS.
The hbclk.z80 source file can be compiled using Build.cmd which will produce a relocatable binary (hbclk.rel).
The wbwclk.z80 source file can be compiled using Build.cmd which will
produce a relocatable binary (hbclk.rel).
The relocatable binary should be added/updated in the stamps.dat libary. The stamps.dat file is just a standard LU type library and is easily updated using NULU. The members are the relocatable binaries, but with the .REL extension removed.
The relocatable binary should be added/updated in the STAMPS.DAT
library. The STAMPS.DAT file is just a standard LU type library and
is easily updated using NULU. The members are the relocatable
binaries, but with the .REL extension removed.
SETUPZST is used to create runnable executable (.COM) files. An executable has been created for DateStamper (LDDS.COM) and P2DOS (LDP2D.COM). The executables are all configured for operation as an RSX (resident system extension).
SETUPZST is used to create runnable executable (.COM) files. An
executable has been created for DateStamper (LDDS.COM), P2DOS
(LDP2D.COM), and NZTime (LDNZT.COM) . The executables are all
configured for operation as an RSX (resident system extension).
The STAMPS.DAT file here is a version that I cobbled together. Using the STAMPS.DAT file included in the ZSDOS distribution results in a load file that does not work. It claims to load, but is not present. I found a "fixed" version of STAMPS.DAT on the Walnut Creek CD-ROM which works, but was missing the NZ and NZP2 stamp variants. So, I added those variants to the working version of STAMPS.DAT which is included here.
The STAMPS.DAT file here is a version that I cobbled together. Using
the STAMPS.DAT file included in the ZSDOS distribution results in a
load file that does not work. It claims to load, but is not
present. I found a "fixed" version of STAMPS.DAT on the Walnut Creek
CD-ROM which works, but was missing the NZ and NZP2 stamp variants.
So, I added those variants to the working version of STAMPS.DAT which
is included here.

2
Source/ZSDOS/Clock/preclock.lib

@ -10,6 +10,8 @@ TSTRD: JR TSTRD0 ; Jump around address store
TSTRD0: LD (CKCLK+1),DE ; Patch GETTIM address in
CALL CKCLK ; Get time to start with
DEC A ; WBW: 1 -> 0
JR NZ,BAD ; WBW: NO GOOD
LD A,(HL) ; Get seconds
CP 60H ; Check for valid digit
JR NC,BAD ; >= 60h

20
Source/ZSDOS/Clock/hbclk.z80 → Source/ZSDOS/Clock/wbwclk.z80

@ -1,15 +1,15 @@
TITLE "N8VEM HBIOS Clock Interface"
TITLE "ROMWBW HBIOS Clock Interface"
SUBTTL "Description of Clock Module"
;===================================================================
; HBCLK.Z80
; HBIOS Clock driver for N8VEM Z80 Series Computer
; WBWCLK.Z80
; HBIOS Clock driver for RomWBW System Software
; Wayne Warthen
; Version: 18 Apr 2014
; Version: 31 Mar 2020
;===================================================================
VERS EQU 10
VERS EQU 11
.Z80
NAME HBIOS
NAME WBWCLK
MACLIB CLOCK.LIB
@ -17,10 +17,10 @@ VERS EQU 10
DESCST: DEFW 0 ; Pointer to static year value if required
CLKNAM: DEFB 'N8VEM HBIOS Clock ' ; Exactly 24 chars in name
CLKNAM: DEFB 'RomWBW HBIOS Clock ' ; Exactly 24 chars in name
DEFB VERS/10+'0','.',VERS MOD 10 +'0',0
DESCR: DEFB 'N8VEM Z80 Series HBIOS Clock',0
DESCR: DEFB 'RomWBW Series HBIOS Clock',0
IF [$-DESCST] > 256
OVER2
@ -55,9 +55,9 @@ GETTIM: PUSH HL ; Save final buffer pointer
LD HL,TIMBUF ; Point to temp buf for HBIOS read
LD B,20H ; HBIOS Read Clock function = $20
RST 08 ; Call HBIOS to get time
JR NZ,ERRRET ; Error return
LD HL,TIMBUF ; Source is start of temp buf
POP DE ; Destination is buffer provided originally
JR NZ,ERRRET ; Error return
LD BC,5 ; Copy just the first 5 bytes
LDIR ; Do it
LD A,(DE) ; Save the original seconds value
@ -80,7 +80,7 @@ WRCLK: LD DE,TIMBUF ; Copy to temp buf
LD A,1 ; Signal success
RET ; Done
;
ERRRET: XOR A ; Error
ERRRET: OR 0FFH ; Error
RET ; Done
;
TIMBUF DEFS 6 ; Temp date/time buffer

2
Source/ZSDOS/loader.asm

@ -207,7 +207,7 @@ PR_SIG .DB $5A,$A5 ; SIGNATURE GOES HERE
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!!!)
PR_LABEL .DB "Unlabeled$$$$$$$","$" ; (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

4
Source/ver.inc

@ -1,5 +1,5 @@
#DEFINE RMJ 3
#DEFINE RMN 0
#DEFINE RUP 0
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.0"
#DEFINE BIOSVER "3.0.1"

4
Source/ver.lib

@ -1,7 +1,7 @@
rmj equ 3
rmn equ 0
rup equ 0
rup equ 1
rtp equ 0
biosver macro
db "3.0"
db "3.0.1"
endm

Loading…
Cancel
Save