diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index a576103b..1c37b778 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index 567ec86e..f06566e2 100644 Binary files a/Doc/RomWBW Architecture.pdf and b/Doc/RomWBW Architecture.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 1066b565..10ade027 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index e78e795b..2cc81562 100644 Binary files a/Doc/RomWBW Getting Started.pdf and b/Doc/RomWBW Getting Started.pdf differ diff --git a/ReadMe.md b/ReadMe.md index 13a209d8..ff7e65a7 100644 --- a/ReadMe.md +++ b/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 @@ -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 diff --git a/ReadMe.txt b/ReadMe.txt index 48a802d5..ce2d8fda 100644 --- a/ReadMe.txt +++ b/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 diff --git a/Source/HBIOS/dma.asm b/Source/HBIOS/dma.asm index 314a30b4..df255434 100644 --- a/Source/HBIOS/dma.asm +++ b/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 diff --git a/Source/HBIOS/dsky.asm b/Source/HBIOS/dsky.asm index fb7326d4..e0c640a1 100644 --- a/Source/HBIOS/dsky.asm +++ b/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 diff --git a/Source/HBIOS/dskyng.asm b/Source/HBIOS/dskyng.asm index 6ea0e9c4..103e4d2a 100644 --- a/Source/HBIOS/dskyng.asm +++ b/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 ; diff --git a/Source/HBIOS/dsrtc.asm b/Source/HBIOS/dsrtc.asm index b4eee956..89a42b19 100644 --- a/Source/HBIOS/dsrtc.asm +++ b/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 ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 7bf1bf3e..581c74bd 100644 --- a/Source/HBIOS/hbios.asm +++ b/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) diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 897cc8cc..b88012db 100644 --- a/Source/HBIOS/hbios.inc +++ b/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 diff --git a/Source/HBIOS/nascom.asm b/Source/HBIOS/nascom.asm index e9f6c1da..8b2839d1 100644 --- a/Source/HBIOS/nascom.asm +++ b/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 ; diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index f3c960cd..6208b89f 100644 --- a/Source/HBIOS/romldr.asm +++ b/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) diff --git a/Source/HBIOS/sd.asm b/Source/HBIOS/sd.asm index 47c8cc7f..1bd0f951 100644 --- a/Source/HBIOS/sd.asm +++ b/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 diff --git a/Source/HBIOS/sn76489.asm b/Source/HBIOS/sn76489.asm index 73038bd6..866b7c50 100644 --- a/Source/HBIOS/sn76489.asm +++ b/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 diff --git a/Source/HBIOS/spk.asm b/Source/HBIOS/spk.asm index 74df2143..2cee6a99 100644 --- a/Source/HBIOS/spk.asm +++ b/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. ; diff --git a/Source/Images/d_zsdos/u0/ROMWBW.TXT b/Source/Images/d_zsdos/u0/ROMWBW.TXT index d0c811f2..5f302561 100644 --- a/Source/Images/d_zsdos/u0/ROMWBW.TXT +++ b/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 diff --git a/Source/ver.inc b/Source/ver.inc index 784c9ee1..ea83f70c 100644 --- a/Source/ver.inc +++ b/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" diff --git a/Source/ver.lib b/Source/ver.lib index 4c3ab409..728461dc 100644 --- a/Source/ver.lib +++ b/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