Browse Source

Miscellaneous

- Improve handling of RTC latch shadow
- Hardware auto-detect on DSKY and DSKYNG
- Regen documentation
patch
Wayne Warthen 4 years ago
parent
commit
4f941de39c
  1. BIN
      Doc/RomWBW Applications.pdf
  2. BIN
      Doc/RomWBW Architecture.pdf
  3. BIN
      Doc/RomWBW Disk Catalog.pdf
  4. BIN
      Doc/RomWBW Getting Started.pdf
  5. 25
      ReadMe.md
  6. 25
      ReadMe.txt
  7. 16
      Source/HBIOS/dma.asm
  8. 54
      Source/HBIOS/dsky.asm
  9. 87
      Source/HBIOS/dskyng.asm
  10. 2
      Source/HBIOS/dsrtc.asm
  11. 61
      Source/HBIOS/hbios.asm
  12. 1
      Source/HBIOS/hbios.inc
  13. 6
      Source/HBIOS/nascom.asm
  14. 15
      Source/HBIOS/romldr.asm
  15. 18
      Source/HBIOS/sd.asm
  16. 20
      Source/HBIOS/sn76489.asm
  17. 2
      Source/HBIOS/spk.asm
  18. 29
      Source/Images/d_zsdos/u0/ROMWBW.TXT
  19. 2
      Source/ver.inc
  20. 2
      Source/ver.lib

BIN
Doc/RomWBW Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW Architecture.pdf

Binary file not shown.

BIN
Doc/RomWBW Disk Catalog.pdf

Binary file not shown.

BIN
Doc/RomWBW Getting Started.pdf

Binary file not shown.

25
ReadMe.md

@ -3,7 +3,7 @@
## Z80/Z180 System Software
Version 3.1 Pre-release
Thursday 22 July 2021
Thursday 26 August 2021
Wayne Warthen <wwarthen@gmail.com>
@ -597,9 +597,9 @@ well as real spinning hard disks.
| fd\_cpm22.img | hd\_cpm22.img | DRI CP/M 2.2 boot disk |
| fd\_zsdos.img | hd\_zsdos.img | ZSDOS 1.1 boot disk |
| fd\_nzcom.img | hd\_nzcom.img | NZCOM boot disk |
| fd\_cpm3 | hd\_cpm3.img | DRI CP/M 3 boot disk |
| fd\_zpm3 | hd\_zpm3.img | ZPM3 boot disk |
| fd\_ws4 | hd\_ws4.img | WordStar v4 application disk |
| fd\_cpm3.img | hd\_cpm3.img | DRI CP/M 3 boot disk |
| fd\_zpm3.img | hd\_zpm3.img | ZPM3 boot disk |
| fd\_ws4.img | hd\_ws4.img | WordStar v4 application disk |
In addition to the disk images above, there is also a special hard disk
image called hd\_combo.img. This image contains all of the images above,
@ -1029,6 +1029,8 @@ through the normal startup process just like it was started from ROM.
However, your ROM has not been updated and the next time you boot your
system, it will revert to the system image contained in ROM.
# Upgrading via Flash Utility
If you do not have easy access to a ROM programmer, it is usually
possible to reprogram your system ROM using the FLASH utility from Will
Sowerbutts. This application, called FLASH.COM, can be found on the ROM
@ -1069,6 +1071,21 @@ To confirm your ROM chip has been successfully updated, restart your
system and boot an operating system from ROM. Do not boot from a disk
device yet. Review the boot messages to see if any issues have occurred.
# Upgrading via XModem Flash Updater
Similar to using the Flash utility, the system ROM can be updated or
upgraded through the ROM based updater utility. This works by by
reprogrammed the flash ROM as the file is being transfered.
This has the advantage that secondary storage is not required to hold
the new image.
From the Boot Loader menu select X (Xmodem Flash Updater) and then U
(Begin Update). Then initiate the Xmodem transfer of the .img or .upd
file.
# Post Update System Image and Application update process
Once you are satisfied that the ROM is working well, you will need to
update the system images and RomWBW custom applications on your disk
drives. The system images and custom applications are matched to the

25
ReadMe.txt

@ -3,7 +3,7 @@ RomWBW
Z80/Z180 System Software
Version 3.1 Pre-release
Thursday 22 July 2021
Thursday 26 August 2021
Wayne Warthen wwarthen@gmail.com
@ -629,9 +629,9 @@ well as real spinning hard disks.
fd_cpm22.img hd_cpm22.img DRI CP/M 2.2 boot disk
fd_zsdos.img hd_zsdos.img ZSDOS 1.1 boot disk
fd_nzcom.img hd_nzcom.img NZCOM boot disk
fd_cpm3 hd_cpm3.img DRI CP/M 3 boot disk
fd_zpm3 hd_zpm3.img ZPM3 boot disk
fd_ws4 hd_ws4.img WordStar v4 application disk
fd_cpm3.img hd_cpm3.img DRI CP/M 3 boot disk
fd_zpm3.img hd_zpm3.img ZPM3 boot disk
fd_ws4.img hd_ws4.img WordStar v4 application disk
In addition to the disk images above, there is also a special hard disk
image called hd_combo.img. This image contains all of the images above,
@ -1053,6 +1053,8 @@ through the normal startup process just like it was started from ROM.
However, your ROM has not been updated and the next time you boot your
system, it will revert to the system image contained in ROM.
Upgrading via Flash Utility
If you do not have easy access to a ROM programmer, it is usually
possible to reprogram your system ROM using the FLASH utility from Will
Sowerbutts. This application, called FLASH.COM, can be found on the ROM
@ -1093,6 +1095,21 @@ To confirm your ROM chip has been successfully updated, restart your
system and boot an operating system from ROM. Do not boot from a disk
device yet. Review the boot messages to see if any issues have occurred.
Upgrading via XModem Flash Updater
Similar to using the Flash utility, the system ROM can be updated or
upgraded through the ROM based updater utility. This works by by
reprogrammed the flash ROM as the file is being transfered.
This has the advantage that secondary storage is not required to hold
the new image.
From the Boot Loader menu select X (Xmodem Flash Updater) and then U
(Begin Update). Then initiate the Xmodem transfer of the .img or .upd
file.
Post Update System Image and Application update process
Once you are satisfied that the ROM is working well, you will need to
update the system images and RomWBW custom applications on your disk
drives. The system images and custom applications are matched to the

16
Source/HBIOS/dma.asm

@ -41,7 +41,7 @@ DMA_INIT:
xor a
out (DMABASE+1),a ; force ready off
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
;
@ -59,7 +59,7 @@ DMA_INIT:
;
DMA_EXIT:
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af
@ -151,7 +151,7 @@ DMALDIR:
ld b,DMACopy_Len ; dma command
ld c,DMABASE ; block
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
di
@ -165,7 +165,7 @@ DMALDIR:
sub %00011011
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af
@ -201,7 +201,7 @@ DMAOTIR:
ld b,DMAOut_Len ; dma command
ld c,DMABASE ; block
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
di
@ -215,7 +215,7 @@ DMAOTIR:
sub %00011011
;
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af
@ -256,7 +256,7 @@ DMAINIR:
ld b,DMAIn_Len ; dma command
ld c,DMABASE ; block
;
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
or %00001000 ; half
out (RTCIO),a ; clock
di
@ -270,7 +270,7 @@ DMAINIR:
sub %00011011
;
push af
ld a,(RTCVAL)
ld a,(HB_RTCVAL)
and %11110111 ; full
out (RTCIO),a ; clock
pop af

54
Source/HBIOS/dsky.asm

@ -37,11 +37,11 @@ PPIX .EQU DSKYPPIBASE + 3 ; PPI CONTROL PORT
; CONFIGURE PARALLEL PORT AND CLEAR KEYPAD BUFFER
;____________________________________________________________________________________________________
;
DSKY_INIT:
DSKY_PREINIT:
OR $FF ; SIGNAL TO WAIT FOR KEY RELEASE
LD (DSKY_KEYBUF),A ; SET IT
; PPI PORT B IS NORMALLY SET TO INPUT, BUT DURING HERE WE
;
; PPI PORT B IS NORMALLY SET TO INPUT, BUT HERE WE
; TEMPORARILY SET IT TO OUTPUT. WHILE IN OUTPUT MODE, WE
; WRITE A VALUE OF $FF WHICH WILL BE PERSISTED BY THE PPI
; CHIP BUS HOLD CIRCUIT IF THERE IS NO DSKY PRESENT. SO,
@ -53,22 +53,47 @@ DSKY_INIT:
OUT (PPIX),A
LD A,$FF ; SET PPIB=$FF, BUS HOLD
OUT (PPIB),A
;
LD A,$82 ; PA OUT, PB IN, PC OUT
OUT (PPIX),A
;
;IN A,(PPIB) ; *DEBUG*
;CALL PRTHEXBYTE ; *DEBUG*
;
IN A,(PPIB) ; READ PPIB
XOR $FF ; INVERT RESULT
LD (DSKY_PRESENT),A ; SAVE AS PRESENT FLAG
;
DSKY_RESET:
PUSH AF
;
LD A,$70 ; PPISD AND 7218 INACTIVE
OUT (PPIC),A
;
POP AF
RET
;
#IFNDEF ROMLDR
;
DSKY_INIT:
CALL NEWLINE ; FORMATTING
PRTS("DSKY:$") ; FORMATTING
;
PRTS(" IO=0x$") ; FORMATTING
LD A,DSKYPPIBASE ; GET BASE PORT
CALL PRTHEXBYTE ; PRINT BASE PORT
PRTS(" MODE=$") ; FORMATTING
PRTS("V1$") ; PRINT DSKY TYPE
;
LD A,(DSKY_PRESENT) ; PRESENT?
OR A ; SET FLAGS
RET NZ ; YES, ALL DONE
PRTS(" NOT PRESENT$") ; NOT PRESENT
;
RET
;
#ENDIF
;
#IFDEF DSKY_KBD
;
KY_0 .EQU $00
@ -102,6 +127,10 @@ KY_BO .EQU $17 ; BOOT
;____________________________________________________________________________________________________
;
DSKY_GETKEY:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT
;
CALL DSKY_STAT ; CHECK STATUS
JR Z,DSKY_GETKEY ; LOOP IF NOTHING READY
LD A,(DSKY_KEYBUF)
@ -114,6 +143,7 @@ DSKY_GETKEY1:
INC HL
INC C ; BUMP INDEX
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT
DSKY_GETKEY1A:
LD A,$FF ; NOT FOUND ERR, RETURN $FF
RET
DSKY_GETKEY2:
@ -129,6 +159,10 @@ DSKY_GETKEY2:
;____________________________________________________________________________________________________
;
DSKY_STAT:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
RET Z ; ABORT WITH A=0 IF NOT THERE
;
LD A,(DSKY_KEYBUF) ; GET CURRENT BUF VAL
CP $FF ; $FF MEANS WE ARE WAITING FOR PREV KEY TO BE RELEASED
JR Z,DSKY_STAT1 ; CHECK FOR PREV KEY RELEASE
@ -197,7 +231,7 @@ DSKY_SCAN1:
INC E ; BUMP COL ID
DJNZ DSKY_SCAN1 ; LOOP THROUGH ALL COLS
XOR A ; NOTHING FOUND, RETURN ZERO
JR DSKY_RESET ; RETURN VIA RESET
JP DSKY_RESET ; RETURN VIA RESET
DSKY_SCAN2:
RRC E ; MOVE COL ID
RRC E ; ... TO HIGH BITS 6 & 7
@ -344,6 +378,8 @@ DSKY_HEXMAP:
;
; SEG DISPLAY WORKING STORAGE
;
DSKY_PRESENT .DB 0
;
DSKY_BUF .FILL 8,0
DSKY_BUFLEN .EQU $ - DSKY_BUF
DSKY_HEXBUF .FILL 4,0

87
Source/HBIOS/dskyng.asm

@ -66,7 +66,7 @@ DSKY_CMD_FIFO: .EQU %01000000 ; READ FIFO
;
DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER
;
;__DSKY_INIT_________________________________________________________________________________________
;__DSKY_PREINIT______________________________________________________________________________________
;
; CONFIGURE PARALLEL PORT AND INITIALIZE 8279
;____________________________________________________________________________________________________
@ -74,9 +74,11 @@ DSKY_PRESCL: .EQU DSKYOSC/100000 ; PRESCALER
;
; HARDWARE RESET 8279 BY PULSING RESET LINE
;
DSKY_INIT:
;
; SETUP PPI
DSKY_PREINIT:
; CHECK FOR PPI
CALL DSKY_PPIDETECT ; TEST FOR PPI HARDWARE
RET NZ ; BAIL OUT IF NOT THERE
; SETUP PPI TO DEFAULT MODE
CALL DSKY_PPIRD
; INIT 8279 VALUES TO IDLE STATE
LD A,DSKY_PPI_IDLE
@ -86,7 +88,25 @@ DSKY_INIT:
OUT (PPIC),A
RES 7,A
OUT (PPIC),A
; DONE
; INITIALIZE 8279
CALL DSKY_REINIT
; NOW SEE IF A DSKYNG IS REALLY THERE...
LD A,$A5
LD (DSKY_BUF),A
LD HL,DSKY_BUF
LD C,0
LD B,1
CALL DSKY_PUTSTR
LD HL,DSKY_BUF
LD C,0
LD B,1
CALL DSKY_GETSTR
LD A,(DSKY_BUF)
CP $A5
RET NZ ; BAIL OUT IF MISCOMPARE
LD A,$FF
LD (DSKY_PRESENT),A
RET
;
DSKY_REINIT:
CALL DSKY_PPIIDLE
@ -116,6 +136,53 @@ DSKY_RESET1:
DSKY_RESET2:
RET
;
;__DSKY_INIT_________________________________________________________________________________________
;
; DISPLAY DSKY INFO
;____________________________________________________________________________________________________
;
#IFNDEF ROMLDR
;
DSKY_INIT:
CALL NEWLINE ; FORMATTING
PRTS("DSKY:$") ; FORMATTING
;
PRTS(" IO=0x$") ; FORMATTING
LD A,DSKYPPIBASE ; GET BASE PORT
CALL PRTHEXBYTE ; PRINT BASE PORT
PRTS(" MODE=$") ; FORMATTING
PRTS("NG$") ; PRINT DSKY TYPE
;
LD A,(DSKY_PRESENT) ; PRESENT?
OR A ; SET FLAGS
RET NZ ; YES, ALL DONE
PRTS(" NOT PRESENT$") ; NOT PRESENT
RET ; DONE
;
#ENDIF
;
;__DSKY_PPIDETECT____________________________________________________________________________________
;
; PROBE FOR PPI HARDWARE
;____________________________________________________________________________________________________
;
DSKY_PPIDETECT:
;
; TEST FOR PPI EXISTENCE
; WE SETUP THE PPI TO WRITE, THEN WRITE A VALUE OF ZERO
; TO PORT A (DATALO), THEN READ IT BACK. IF THE PPI IS THERE
; THEN THE BUS HOLD CIRCUITRY WILL READ BACK THE ZERO. SINCE
; WE ARE IN WRITE MODE, AN IDE CONTROLLER WILL NOT BE ABLE TO
; INTERFERE WITH THE VALUE BEING READ.
CALL DSKY_PPIWR
;
LD C,PPIA ; PPI PORT A
XOR A ; VALUE ZERO
OUT (C),A ; PUSH VALUE TO PORT
IN A,(C) ; GET PORT VALUE
OR A ; SET FLAGS
RET ; AND RETURN
;
#IFDEF DSKY_KBD
;
KY_0 .EQU $00
@ -153,6 +220,9 @@ KY_F1 .EQU $21 ; F1
;____________________________________________________________________________________________________
;
DSKY_STAT:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
RET Z ; ABORT WITH A=0 IF NOT THERE
CALL DSKY_ST
AND $0F ; ISOLATE THE CUR FIFO LEN
RET
@ -163,6 +233,9 @@ DSKY_STAT:
;____________________________________________________________________________________________________
;
DSKY_GETKEY:
LD A,(DSKY_PRESENT) ; DOES IT EXIST?
OR A ; SET FLAGS
JR Z,DSKY_GETKEY1A ; ABORT IF NOT PRESENT
CALL DSKY_STAT
JR Z,DSKY_GETKEY ; LOOP IF NOTHING THERE
LD A,DSKY_CMD_FIFO
@ -181,6 +254,7 @@ DSKY_GETKEY1:
INC C ; BUMP INDEX
DJNZ DSKY_GETKEY1 ; LOOP UNTIL EOT
POP AF ; FIX STACK
DSKY_GETKEY1A:
LD A,$FF ; NOT FOUND ERR, RETURN $FF
RET
DSKY_GETKEY2:
@ -483,7 +557,7 @@ DSKY_GETSTR1:
; .DB $00,$00,$00,$00,$00,$00,$00,$00
;
DSKY_PUTLED:
EX (SP),HL
EX (SP),HL
PUSH AF
PUSH BC
LD C,8
@ -690,6 +764,7 @@ DSKY_HEXMAP:
.DB $71 ; F
;
DSKY_PPIX_VAL: .DB 0
DSKY_PRESENT: .DB 0
;
; SEG DISPLAY WORKING STORAGE
;

2
Source/HBIOS/dsrtc.asm

@ -97,7 +97,7 @@ DSRTC_IDLE .EQU %00100000 ; QUIESCENT STATE
;
RTCDEF .SET RTCDEF | DSRTC_IDLE ; FOR HBIOS MAINLINE
;
#DEFINE DSRTC_OPRVAL RTCVAL
#DEFINE DSRTC_OPRVAL HB_RTCVAL
;
; VALUES FOR DIFFERENT BATTERY OR SUPERCAPACITOR CHARGE RATES
;

61
Source/HBIOS/hbios.asm

@ -105,10 +105,10 @@ MODCNT .SET MODCNT + 1
#ENDIF
#IF (LEDMODE == LEDMODE_RTC)
#DEFINE LED(N) PUSH AF
#DEFCONT \ LD A,(RTCVAL)
#DEFCONT \ LD A,(HB_RTCVAL)
#DEFCONT \ AND %11111100
#DEFCONT \ OR (N & %00000011)
#DEFCONT \ LD (RTCVAL),A
#DEFCONT \ LD (HB_RTCVAL),A
#DEFCONT \ OUT (LEDPORT),A
#DEFCONT \ POP AF
#ENDIF
@ -948,7 +948,8 @@ HBX_BUF_END .EQU $
.DW 0 ; HB_DSTADR: BNKCPY DESTINATION ADDRESS
.DB BID_USR ; HB_DSTBNK: BNKCPY DESTINATION BANK ID
.DW 0 ; HB_CPYLEN: BNKCPY LENGTH
.FILL 5,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE
.FILL 4,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE
.DB RTCDEF ; SHADOW VALUE FOR RTC LATCH PORT
.DB $FE ; HB_LOCK: HBIOS MUTEX LOCK
JP HBX_INVOKE ; HB_INVOKE: FIXED ADR ENTRY FOR HBX_INVOKE (ALT FOR RST 08)
JP HBX_BNKSEL ; HB_BNKSEL: FIXED ADR ENTRY FOR HBX_BNKSEL
@ -1080,7 +1081,7 @@ Z280_BOOTERR .TEXT "\r\n\r\n*** Application mode boot not supported under Z280 n
#ENDIF
#IF (LEDMODE == LEDMODE_RTC)
LD A,%00000001 ; LED 0
LD (RTCVAL),A ; SAVE TO SHADOW REGISTER
LD (HB_RTCVAL),A ; SAVE TO SHADOW REGISTER
#ENDIF
OUT (LEDPORT),A
#ENDIF
@ -1440,24 +1441,6 @@ SAVE_REC_M:
;
DIAG(%00001111)
;
#IF (DSKYENABLE)
CALL DSKY_INIT
LD HL,MSG_HBVER + 5
LD A,(DSKY_HEXMAP + RMJ)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RMN)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RUP)
LD (HL),A
LD HL,MSG_HBVER
CALL DSKY_SHOW
#ENDIF
;
#IF (WBWDEBUG == USEMIO) ; BUFFER OUTPUT UNTIL
CALL MIO_INIT ; WE GET TO BOOT MESSAGE
#ENDIF
@ -1793,6 +1776,24 @@ NOT_REC_M0:
#ENDIF
CALL CALLLIST ; PROCESS THE PRE-INIT CALL TABLE
;
#IF (DSKYENABLE)
;CALL DSKY_PREINIT
LD HL,MSG_HBVER + 5
LD A,(DSKY_HEXMAP + RMJ)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RMN)
OR $80
LD (HL),A
INC HL
LD A,(DSKY_HEXMAP + RUP)
LD (HL),A
LD HL,MSG_HBVER
CALL DSKY_SHOW
#ENDIF
;
#IF FALSE
;
; TEST DEBUG ***************************************************************************************
@ -2242,6 +2243,14 @@ HB_WDZ:
PRTX(STR_BANNER)
#ENDIF
;
; EXPERIMENTAL!!!
; ENGAGE TURBO...
;
; LD A,(HB_RTCVAL)
; SET 3,A
; OUT (RTCIO),A
; LD (HB_RTCVAL),A
;
INITSYS3:
CALL PRTSUM ; PRINT UNIT/DEVICE SUMMARY TABLE
;
@ -2350,6 +2359,9 @@ HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2)
;==================================================================================================
;
HB_PCINITTBL:
#IF (DSKYENABLE)
.DW DSKY_PREINIT
#ENDIF
#IF (ASCIENABLE)
.DW ASCI_PREINIT
#ENDIF
@ -2390,6 +2402,9 @@ HB_INITTBL:
#IF (CTCENABLE)
.DW CTC_INIT
#ENDIF
#IF (DSKYENABLE)
.DW DSKY_INIT
#ENDIF
#IF (AY38910ENABLE)
.DW AY38910_INIT ; AUDIBLE INDICATOR OF BOOT START
#ENDIF
@ -6116,7 +6131,7 @@ HB_SECS .FILL 4,0 ; 32 BIT SECONDS COUNTER
;
HB_CPUTYPE .DB 0 ; 0=Z80, 1=80180, 2=SL1960, 3=ASCI BRG
;
RTCVAL .DB RTCDEF ; SHADOW VALUE FOR RTC LATCH PORT
;RTCVAL .DB RTCDEF ; SHADOW VALUE FOR RTC LATCH PORT
IOPRVAL .DW 0 ; TEMP STORAGE FOR IOPR
;
HB_BATCOND .DB 0 ; BATTERY CONDITION (0=LOW, 1=OK)

1
Source/HBIOS/hbios.inc

@ -255,6 +255,7 @@ HB_SRCBNK .EQU HBX_XFCDAT + 4 ; BNKCPY: SOURCE BANK ID
HB_DSTADR .EQU HBX_XFCDAT + 5 ; BNKCPY: DESTINATION ADDRESS
HB_DSTBNK .EQU HBX_XFCDAT + 7 ; BNKCPY: SOURCE ADDRESS
HB_CPYLEN .EQU HBX_XFCDAT + 8 ; BNKCPY: COPY LENGTH
HB_RTCVAL .EQU HBX_XFCDAT + 14 ; RTC LATCH SHADOW VALUE
HB_LOCK .EQU HBX_XFCDAT + 15 ; INVOKE: HBIOS MUTEX LOCK
;
HBX_XFCFNS .EQU HBX_XFC + $10 ; JUMP TABLE PORTION OF HBIOS PROXY INTERFACE AREA

6
Source/HBIOS/nascom.asm

@ -4855,7 +4855,7 @@ MULDLP: DJNZ MULSKP ; DIVIDE BY 8
LD B,$00
LD IX,SPK_DLYADJ ; The base address of the timing loop.
ADD IX,BC ; Alter the length of the timing loop. Use an earlier starting point for each '1' lost by taking INT (L/4).
LD A,(RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
LD A,(HB_RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
;
; The HL register holds the 'length of the timing loop' with 16 T states being used for each '1' in the L register and 1024 T states for each '1' in the H register.
;
@ -4897,8 +4897,8 @@ BE_END: EI
POP BC ; RECALL SYNTAX POINTER
POP HL
RET
;
RTCVAL .DB 0
;;
;RTCVAL .DB 0
;
; SETUP THE ONE SECOND TONE DURATION TABLE BASED ON PROCESSOR SPEED AND TONE FREQUENCY
;

15
Source/HBIOS/romldr.asm

@ -32,6 +32,8 @@
; the desired executable image.
;
#INCLUDE "std.asm" ; standard RomWBW constants
#define ROMLDR
;
#ifndef BOOT_DEFAULT
#define BOOT_DEFAULT "H"
@ -206,6 +208,7 @@ prompt:
call clrbuf ; zero fill the cmd buffer
;
#if (DSKYENABLE)
call DSKY_PREINIT ; *** TEMPORARY ***
call DSKY_RESET ; clear DSKY
ld hl,msg_sel ; boot select msg
call DSKY_SHOW ; show on DSKY
@ -1105,10 +1108,11 @@ clrled:
out (LEDPORT),a ; clear led
#endif
#if (LEDMODE == LEDMODE_RTC)
; Only bits 0 and 1 of the RTC latch are for the LEDs. Here,
; we assume that it is OK to zero all bits of the RTC latch.
xor a ; turn off
out (LEDPORT),a ; clear led
; Bits 0 and 1 of the RTC latch are for the LEDs.
ld a,(HB_RTCVAL)
and ~%00000011
out (RTCIO),a ; clear led
ld (HB_RTCVAL),a
#endif
#endif
#endif
@ -1928,9 +1932,6 @@ str_err_api .db "Unexpected hardware BIOS API failure",0
; Includes
;=======================================================================
;
#define USEDELAY
; #include "util.asm"
;
#if (DSKYENABLE)
#define DSKY_KBD
#if (DSKYMODE == DSKYMODE_V1)

18
Source/HBIOS/sd.asm

@ -368,10 +368,10 @@ SD_INIT:
LD A,SD_OPRREG
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_N8)
@ -380,10 +380,10 @@ SD_INIT:
LD A,SD_OPRREG
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_CSIO)
@ -401,10 +401,10 @@ SD_INIT:
LD A,SD_TRDR
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_PPI)
@ -465,10 +465,10 @@ SD_INIT:
LD A,SD_TRDR
CALL PRTHEXBYTE
;
LD A,(RTCVAL) ; GET RTC PORT SHADOW VALUE
LD A,(HB_RTCVAL) ; GET RTC PORT SHADOW VALUE
AND ~SD_OPRMSK ; CLEAR OUR BITS
OR SD_OPRDEF ; SET OUR BIT DEFAULTS
LD (RTCVAL),A ; SAVE IT
LD (HB_RTCVAL),A ; SAVE IT
#ENDIF
;
#IF (SDMODE == SDMODE_MT)
@ -1677,7 +1677,7 @@ SD_SETUP:
#ENDIF
;
#IF ((SDMODE == SDMODE_JUHA) | (SDMODE == SDMODE_N8) | (SDMODE == SDMODE_CSIO) | (SDMODE == SDMODE_SC))
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
LD (SD_OPRVAL),A
OUT (SD_OPRREG),A
#ENDIF

20
Source/HBIOS/sn76489.asm

@ -15,10 +15,6 @@
SN76489_PORT_LEFT .EQU $FF ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT)
SN76489_PORT_RIGHT .EQU $FB ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT)
;SN76489_PORT_LEFT .EQU $FC ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT)
;SN76489_PORT_RIGHT .EQU $F8 ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT)
;;SN76489_PORT_LEFT .EQU $C7 ; PORTS FOR ACCESSING THE SN76489 CHIP (LEFT)
;;SN76489_PORT_RIGHT .EQU $C8 ; PORTS FOR ACCESSING THE SN76489 CHIP (RIGHT)
SN7_IDAT .EQU 0
SN7_TONECNT .EQU 3 ; COUNT NUMBER OF TONE CHANNELS
SN7_NOISECNT .EQU 1 ; COUNT NUMBER OF NOISE CHANNELS
@ -74,7 +70,7 @@ SN7_VOLUME_OFF:
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
#ENDIF
@ -96,7 +92,7 @@ SN7_VOLUME_OFF:
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@ -256,7 +252,7 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
#IFDEF SBCV2004
PUSH AF
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
@ -266,7 +262,7 @@ SN7_APPLY_VOL: ; APPLY VOLUME TO BOTH LEFT AND RIGHT CHANNELS
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@ -301,7 +297,7 @@ SN7_APPLY_PRD:
#IFDEF SBCV2004
PUSH AF
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
@ -311,7 +307,7 @@ SN7_APPLY_PRD:
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF
@ -338,7 +334,7 @@ SN7_APPLY_PRD:
#IFDEF SBCV2004
PUSH AF
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %00001000 ; SBC-V2-004+ CHANGE
OUT (RTCIO),A ; TO HALF CLOCK SPEED
POP AF
@ -348,7 +344,7 @@ SN7_APPLY_PRD:
OUT (SN76489_PORT_RIGHT), A
#IFDEF SBCV2004
LD A,(RTCVAL)
LD A,(HB_RTCVAL)
OR %11110111 ; SBC-V2-004+ CHANGE TO
OUT (RTCIO),A ; NORMAL CLOCK SPEED
#ENDIF

2
Source/HBIOS/spk.asm

@ -265,7 +265,7 @@ SP_BEEPER:
LD B,$00
LD IX,SPK_DLYADJ ; The base address of the timing loop.
ADD IX,BC ; Alter the length of the timing loop. Use an earlier starting point for each '1' lost by taking INT (L/4).
LD A,(RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
LD A,(HB_RTCVAL) ; Fetch the present border colour from BORDCR and move it to bits 2, 1 and 0 of the A register.
;
; The HL register holds the 'length of the timing loop' with 16 T states being used for each '1' in the L register and 1024 T states for each '1' in the H register.
;

29
Source/Images/d_zsdos/u0/ROMWBW.TXT

@ -13,7 +13,7 @@ RomWBW Distribution.
ZSDOS is a replacement for the BDOS portion of the CP/M 2.2 operating
system. Since it does not include it's own command processor, the
the ZCPR 1 D&J Command Processor has been included.
the ZCPR D&J Command Processor has been included.
The primary documentation for ZSDOS and ZCPR 1 are contained in the Doc
directory of the RomWBW distribution. The specific files are "ZSDOS
@ -135,12 +135,12 @@ distribution as possible.
use with BackGrounder II software which is not included. Refer to
the ZSDOS Manual for information on implementing BackGrounder II if
desired.
== ZSDOS 1.1 Files ==
The following files came from the official ZSDOS distribution. These
are generall documented in the "ZSDOS Manual.pdf" document in the Doc
are generally documented in the "ZSDOS Manual.pdf" document in the Doc
directory of the RomWBW distribution. Note that some of the files
included in the ZSDOS distribution are not listed below because they
have been superseded by more recent versions listed in other sections
@ -174,16 +174,23 @@ SETTERM.COM - Terminal configuration utility for DATSWEEP & DSCONFIG
SETUPZST.COM - Creates customized date/time stamping resident extensions
STAMPS.DAT - Library of available date/time stamping modules for SETUPZST
TD.CFG - ZCNFG configuration file for TD
TD.COM - Read and set system real-time clock
TD.COM - Read and set system real-time clock
TERMBASE.DAT - Library of terminals used by SETTERM
TESTCLOK.COM - Test a selected clock driver
ZCAL.COM - Display a small one-month calendar to the screen
ZCNFG.COM - Configuration tool for programs with .CFG files
ZCNFG24.CFG - ZCNFG configuration file for ZCNFG
ZMP.COM - ZModem communications program (requires dedicated comm port)
ZMP.DOC - Documentation for ZMP
ZMP.HLP - Help file for ZMP
ZMXFER.OVR - Overlay file for ZMP
ZMTERM.OVR - Overlay file for ZMP
ZMINIT.OVR - Overlay file for ZMP
ZMCONFIG.OVR - Overlay file for ZMP
ZPATH.COM - Set or display ZSDOS and ZCPR search paths
ZSCONFIG.COM - Dynamically sets many features of ZSDOS operating system
ZSCONFIG.COM - Dynamically configure features of ZSDOS operating system
ZSVSTAMP.COM - Preserves file date/time stamp across modifications
ZSVSTAMP.DOC - Document describes the use and operation of ZSMSTAMP
ZSVSTAMP.DOC - Document describes the use and operation of ZSVSTAMP
== CP/M 2.2 Files ==
@ -194,12 +201,12 @@ called STAT is useful for modifying the IOBYTE. Most of these
applications are documented in the "CPM Manual.pdf" document in the Doc
directory of the RomWBW distribution.
ASM.COM - DRI 8080 assembler
ASM.COM - DRI 8080 assembler producing Intel hex files
LIB.COM - DRI relocatable object file librarian
LINK.COM - DRI relocatable object file linker
LOAD.COM - DRI loader for Intel hex files
MAC.COM - DRI 8080 macro assembler
RMAC.COM - DRI 8080 macro assembler generating relocatable object files
MAC.COM - DRI 8080 macro assembler producing Intel hex files
RMAC.COM - DRI 8080 macro assembler producing relocatable object files
STAT.COM - DRI multi-purpose file/disk/device info & configuration tool
SUBMIT.COM - DRI batch file submission tool
XSUB.COM - DRI batch file enhancer resident system extension
@ -261,7 +268,7 @@ UNZIP.DOC - Documentation for UNZIPZ
XSUB1.COM - Replacement for DRI SUB (from Lars Nelson)
ZAP.COM - Interactive disk & file utility
ZDE.COM - Compact WordStar-like editor
ZDENST.COM - ZCNFG configuration tool for ZDE.COM
ZDENST.COM - Installation/configuration tool for ZDE
KERCPM22.COM - Kermit file transfer application
LBREXT.COM - Extract file from .LBR libraries
LBREXT36.CFG - ZCNFG configuration file for LBREXT

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1
#DEFINE RUP 1
#DEFINE RTP 03
#DEFINE BIOSVER "3.1.1-pre.108"
#DEFINE BIOSVER "3.1.1-pre.109"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1
rtp equ 0
biosver macro
db "3.1.1-pre.108"
db "3.1.1-pre.109"
endm

Loading…
Cancel
Save