diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index bc0a0084..33f03d82 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -17,6 +17,7 @@ Version 3.5 - M?P: Reorganization of Doc directory introducing subfolders - WBW: Upgraded BBCBASIC to v5.00 - W?S: Updated FLASH utility to v1.3.9 +- WBW: Support RCBus PS/2 Keyboard (EP/Sally) Version 3.4 ----------- diff --git a/Doc/Contrib/AY-3-8910 Registers.xlsx b/Doc/Contrib/AY-3-8910 Registers.xlsx new file mode 100644 index 00000000..6fdc0b5e Binary files /dev/null and b/Doc/Contrib/AY-3-8910 Registers.xlsx differ diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 5a314bdc..b25e9dae 100644 Binary files a/Doc/RomWBW Applications.pdf and b/Doc/RomWBW Applications.pdf differ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 9a3dd69b..decdd570 100644 Binary files a/Doc/RomWBW Disk Catalog.pdf and b/Doc/RomWBW Disk Catalog.pdf differ diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index f0d71fd3..6f2ca51f 100644 Binary files a/Doc/RomWBW Errata.pdf and b/Doc/RomWBW Errata.pdf differ diff --git a/Doc/RomWBW ROM Applications.pdf b/Doc/RomWBW ROM Applications.pdf index 94e8b6fe..e331c33e 100644 Binary files a/Doc/RomWBW ROM Applications.pdf and b/Doc/RomWBW ROM Applications.pdf differ diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 7ca987cd..be18328f 100644 Binary files a/Doc/RomWBW System Guide.pdf and b/Doc/RomWBW System Guide.pdf differ diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index 3f5224c5..0aa6ea10 100644 Binary files a/Doc/RomWBW User Guide.pdf and b/Doc/RomWBW User Guide.pdf differ diff --git a/ReadMe.md b/ReadMe.md index 7595af2c..927ed892 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.5 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -17 May 2024 +04 Jun 2024 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index b784b4c0..27b1dab2 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -17 May 2024 +04 Jun 2024 diff --git a/Source/Apps/Test/ps2info/ps2info.asm b/Source/Apps/Test/ps2info/ps2info.asm index 2acbf282..22a6ea7d 100644 --- a/Source/Apps/Test/ps2info/ps2info.asm +++ b/Source/Apps/Test/ps2info/ps2info.asm @@ -11,6 +11,7 @@ ; WBW 2022-04-01: Add menu for test functions ; WBW 2022-04-02: Fix prtchr register saving/recovery ; WBW 2023-10-19: Add support for Duodyne +; WBW 2024-06-10: Add support for RC2014 ; ;======================================================================= ; @@ -25,6 +26,10 @@ iodat_rph .equ $8C ; PS/2 controller data port address ; Duodyne: iocmd_duo .equ $4D ; PS/2 controller command port address iodat_duo .equ $4C ; PS/2 controller data port address +; RC2014 (EP/Sally) +iocmd_rc .equ $64 ; PS/2 controller command port address +iodat_rc .equ $60 ; PS/2 controller data port address + ; cpumhz .equ 8 ; for time delay calculations (not critical) ; @@ -87,6 +92,8 @@ setup1: jr z,setup_rph cp '3' ; Duodyne jr z,setup_duo + cp '4' ; RC2014 EP/Sally + jr z,setup_rc cp 'X' jr z,exit jr setup @@ -115,6 +122,14 @@ setup_duo: ld de,str_duo jr setup2 ; +setup_rc: + ld a,iocmd_rc + ld (iocmd),a + ld a,iodat_rc + ld (iodat),a + ld de,str_rc + jr setup2 +; setup2: call prtstr call crlf2 @@ -1437,16 +1452,18 @@ delay1: ; Constants ;======================================================================= ; -str_banner .db "PS/2 Keyboard/Mouse Information v0.8, 6-Nov-2023",0 +str_banner .db "PS/2 Keyboard/Mouse Information v0.9, 10-Jun-2024",0 str_hwmenu .db "PS/2 Controller Port Options:\r\n\r\n" .db " 1 - Nhyodyne\r\n" .db " 2 - Rhyophyre\r\n" .db " 3 - Duodyne\r\n" + .db " 4 - RC2014\r\n" .db " X - Exit Application\r\n" .db "\r\nSelection? ",0 str_mbc .db "Nhyodyne",0 str_rph .db "Rhyophyre",0 str_duo .db "Duodyne",0 +str_rc .db "RC2014 (Saly)",0 str_menu .db "PS/2 Testing Options:\r\n\r\n" .db " C - Test PS/2 Controller\r\n" .db " K - Test PS/2 Keyboard\r\n" diff --git a/Source/HBIOS/ay38910.asm b/Source/HBIOS/ay38910.asm index c0aeebeb..ecd23da2 100644 --- a/Source/HBIOS/ay38910.asm +++ b/Source/HBIOS/ay38910.asm @@ -19,6 +19,15 @@ ; UNUSED BITS CAN BE READ BACK AND WRITTEN ON YM. ; VOLTAGE LEVEL OUTPUT ON A AY-3-8910 IS LOW AND AROUND 2V ON YM2149. ; +; THERE ARE TWO VARIANTS OF AY-3-8910 SOUND CARDS THAT HAVE BEEN +; PRODUCED FOR THE RCBUS. THE ONE PRODUCED BY ED BRINDLEY (EB) USES +; THE SAME PORT FOR REGISTER SELECT (RSEL) AND REGISTER IN (RIN). +; THE ONE PRODUCED BY MARTEN FELDTMANN (MF) USES THE PORT FOLLOWING +; REGISTER SELECT (RSEL) FOR THE REGISTER IN (RIN) PORT. THE FOLLOWING +; EQUATE MUST BE SET CORRECTLY FOR THE HARDWARE BEING USED. THIS +; HAS NOT BEEN MOVED TO A CONFIG VARIABLE BECAUSE THE MF MODULE IS +; RARELY ENCOUNTERED IN THE WILD. +; AY_RCSND .EQU 0 ; 0 = EB MODULE, 1=MF MODULE ; DEVECHO "AY38910: MODE=" diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index 5888f4a1..d129c678 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -894,11 +894,11 @@ FD_DETECT: IN A,(FDC_MSR) ; ... AND REREAD THE STATUS ;CALL PC_SPACE ; *DEBUG* ;CALL PRTHEXBYTE ; *DEBUG* - +; FD_DETECT1: CP $80 ; WE EXPECT $80 - RET Z ; IF SO, ALL DONE - + JR Z,FD_DETECT2 ; IF SO, CONTINUE CHECKING +; ; WE HAVE SEEN AN FDC THAT NEEDS A SECOND READ TO GET ; DESIRED VALUE, SO TRY ONE MORE TIME CALL DLY32 ; WAIT A BIT @@ -906,7 +906,19 @@ FD_DETECT1: ;CALL PC_SPACE ; *DEBUG* ;CALL PRTHEXBYTE ; *DEBUG* CP $80 ; CHECK FOR CORRECT VALUE - RET ; RETURN WITH ZF ACCORDING TO RESULT + RET NZ ; RETURN IF FAILED WITH ZF RESET +; +FD_DETECT2: + ; AS A FINAL TEST, WE REREAD THE MSR USING A DIFFERENT + ; OPCODE. THIS SHOULD ELIMINATE ANY FALSE POSITIVES FROM + ; A FLOATING BUS. + CALL DLY32 ; WAIT A BIT + LD C,FDC_MSR ; POINT TO MSR PORT + IN A,(C) ; READ USING (C) FORM OF INPUT + ;CALL PC_SPACE ; *DEBUG* + ;CALL PRTHEXBYTE ; *DEBUG* + CP $80 ; CHECK FOR CORRECT VALUE + RET ; RETURN WITH ZF SET CORRECTLY ; ; UNIT INITIALIZATION ; diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 0c20695f..e6745893 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -2415,8 +2415,8 @@ ra_ent .equ 12 ; ; Note: The loadable ROM images are placed in ROM banks BID_IMG0 and ; BID_IMG1. However, RomWBW supports a mechanism to load a complete -; new system dynamically as a runnable application (see appboot and -; imgboot in hbios.asm). In this case, the contents of BID_IMG0 will +; new system dynamically as a runnable application (see appboot +; in hbios.asm). In this case, the contents of BID_IMG0 will ; be pre-loaded into the currently executing ram bank thereby allowing ; those images to be dynamically loaded as well. To support this ; concept, a pseudo-bank called bid_cur is used to specify the images @@ -2436,14 +2436,13 @@ ra_entsiz .equ $ - ra_tbl ra_ent(str_smon, 'S', $FF, bid_cur , $8000, $8000, $0001, s100mon) #endif #endif -ra_ent(str_zsys, 'Z', KY_FW, BID_IMG0, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) ra_ent(str_cpm22, 'C', KY_BK, BID_IMG0, CPM_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) +ra_ent(str_zsys, 'Z', KY_FW, BID_IMG0, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) #if (BIOS == BIOS_WBW) -ra_ent(str_fth, 'F', KY_EX, BID_IMG1, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC) ra_ent(str_bas, 'B', KY_DE, BID_IMG1, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC) ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC) +ra_ent(str_fth, 'F', KY_EX, BID_IMG1, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC) ra_ent(str_play, 'P', $FF, BID_IMG1, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC) -ra_ent(str_egg, 'E'+$80, $FF, BID_IMG1, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC) ra_ent(str_net, 'N', $FF, BID_IMG1, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC) ra_ent(str_upd, 'X', $FF, BID_IMG1, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC) ra_ent(str_user, 'U', $FF, BID_IMG1, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC) @@ -2451,6 +2450,7 @@ ra_ent(str_user, 'U', $FF, BID_IMG1, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LO #if (DSKYENABLE) ra_ent(str_dsky, 'Y'+$80, KY_GO, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY) #endif +ra_ent(str_egg, 'E'+$80, $FF, BID_IMG1, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC) .dw 0 ; table terminator ; ra_tbl_app: diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index e8fbbf40..f408f896 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -66,8 +66,8 @@ TMS_CMDREG .EQU $BF ; READ STATUS / WRITE REG SEL #IF (TMSMODE == TMSMODE_MSXKBD) TMS_DATREG .EQU $98 ; READ/WRITE DATA TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL -TMS_KBDDATA .EQU $E0 ; KBD CTLR DATA PORT -TMS_KBDST .EQU $E1 ; KBD CTLR STATUS/CMD PORT +TMS_KBDDATA .EQU $60 ; KBD CTLR DATA PORT +TMS_KBDST .EQU $64 ; KBD CTLR STATUS/CMD PORT DEVECHO "MSXKBD" #ENDIF ; diff --git a/Source/HBIOS/usrrom.asm b/Source/HBIOS/usrrom.asm index 67f24c7b..146d4937 100644 --- a/Source/HBIOS/usrrom.asm +++ b/Source/HBIOS/usrrom.asm @@ -21,6 +21,13 @@ ; HBIOS WARM RESET FUNCTION AS DEMONSTRATED BELOW. ; - THE APPLICATION MAY MAKE HBIOS FUNCTION CALLS WITHOUT RESTRICTION, ; BUT CANNOT USE ANY OS (CP/M) FUNCTIONS BECAUSE NO OS IS LOADED. +; - THE APPLICATION MAY NOT CHANGE THE INTERRUPT MODE (WHICH IS DEFINED +; IN THE ROM CONFIGURATION). THE SYSTEM'S INTERRUPT +; MODE CAN BE QUERIED BY AN HBIOS API CALL IF DESIRED. +; - THE APPLICATION MAY TEMPORARILY DISABLE INTERRUPTS BY BRACKETING +; SECTIONS OF CODE WITH DI/EI AS NEEDED. IF INTERRUPTS ARE +; TEMPORARILY DISABLED, THEY SHOULD NOT SHOULD NOT +; BE LEFT DISABLED ACROSS HBIOS API CALLS. ; ; INCLUDE STD.ASM WHICH DEFINES SOME KEY EQUATES USED BELOW. MOST ; IMPORTANT ARE USR_LOC, USR_SIZ, AND USR_END. IT ALSO DEFINES EQUATES @@ -33,8 +40,8 @@ CR .EQU 0DH LF .EQU 0AH ; -ROWS .EQU 008H ; NUMBER OF PIXEL ROWS PER CHARACTER -COLS .EQU 008H ; NUMBER OF PIXEL COLUMNS PER CHARACTER +ROWS .EQU 8 ; NUMBER OF PIXEL ROWS PER CHARACTER +COLS .EQU 8 ; NUMBER OF PIXEL COLUMNS PER CHARACTER ; ; APPLICATION WILL WILL BE LOADED AT USR_LOC. THEREFORE, THE CODE ; MUST "ORG" AT THIS ADDRESS. TO CHANGE THE LOAD LOCATION OF THIS @@ -145,10 +152,10 @@ CIN: PUSH BC ; DATA SECTION ; BANNER: - .DB 006H; THE NUMBER OF CHARACTERS IN THE BANNER + .DB 6 ; THE NUMBER OF CHARACTERS IN THE BANNER ; #IF FALSE - ; UPPER CASE LOGO + ; UPPER CASE LOGO ("ROMWBW") .DB %01111100, %00011100, %01000001, %01000001, %01111100, %01000001 .DB %01000010, %00100010, %01100011, %01000001, %01000010, %01000001 .DB %01000001, %01000001, %01010101, %01000001, %01000001, %01000001 @@ -160,7 +167,7 @@ BANNER: #ENDIF ; #IF TRUE - ; UPPER AND LOWER CASE LOGO + ; UPPER AND LOWER CASE LOGO ("RomWBW") .DB %00000000, %00000000, %00000000, %00000000, %00000000, %00000000 .DB %01111000, %00000000, %00000000, %01000100, %01111000, %01000100 .DB %01000100, %00000000, %00000000, %01000100, %01000100, %01000100 diff --git a/Source/ver.inc b/Source/ver.inc index 81923253..9a3e8415 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.45" +#DEFINE BIOSVER "3.5.0-dev.47" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index bcc13c07..7348e693 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.45" + db "3.5.0-dev.47" endm