From d445c4a015c9b6f84e1b48454aafce9696241386 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Thu, 4 May 2023 14:14:36 -0700 Subject: [PATCH] Disable LZSA Compression for Z280 - The LZSA2 decompressor code is failing mysteriously on Z280 CPUs. I have simply disabled it in the Z280 primary configuration file. --- Source/HBIOS/Config/RCZ280_zz80mb.asm | 2 +- Source/HBIOS/Config/RCZ280_zzrc.asm | 2 +- Source/HBIOS/ansi.asm | 1 - Source/HBIOS/cfg_rcz280.asm | 2 +- Source/HBIOS/kbd.asm | 43 ++++++++++++++++++++------- Source/HBIOS/unlzsa2s.asm | 1 + Source/HBIOS/vrc.asm | 2 +- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 9 files changed, 40 insertions(+), 17 deletions(-) diff --git a/Source/HBIOS/Config/RCZ280_zz80mb.asm b/Source/HBIOS/Config/RCZ280_zz80mb.asm index 69d8fc6b..88fbd454 100644 --- a/Source/HBIOS/Config/RCZ280_zz80mb.asm +++ b/Source/HBIOS/Config/RCZ280_zz80mb.asm @@ -55,7 +55,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) -VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD +VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC] diff --git a/Source/HBIOS/Config/RCZ280_zzrc.asm b/Source/HBIOS/Config/RCZ280_zzrc.asm index 71cd964f..96317f41 100644 --- a/Source/HBIOS/Config/RCZ280_zzrc.asm +++ b/Source/HBIOS/Config/RCZ280_zzrc.asm @@ -63,7 +63,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO] MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) -VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD +VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD ; AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC] diff --git a/Source/HBIOS/ansi.asm b/Source/HBIOS/ansi.asm index cc9c6a68..b0b93153 100644 --- a/Source/HBIOS/ansi.asm +++ b/Source/HBIOS/ansi.asm @@ -634,7 +634,6 @@ ANSI_BEL: ANSI_BS: LD A,(ANSI_COL) ; GET CURRENT COLUMN DEC A ; BACK IT UP BY ONE - ;RET C ; IF CARRY, MARGIN EXCEEDED, ABORT RET M ; IF CARRY, MARGIN EXCEEDED, ABORT LD (ANSI_COL),A ; SAVE NEW COLUMN JP ANSI_XY ; UDPATE CURSOR AND RETURN diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 2465c8ba..dc3f13e9 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -20,7 +20,7 @@ CPUFAM .EQU CPU_Z280 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD) -USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION +USELZSA2 .EQU FALSE ; ENABLE FONT COMPRESSION TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) ; BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE diff --git a/Source/HBIOS/kbd.asm b/Source/HBIOS/kbd.asm index b6954c3f..7c8b7fac 100644 --- a/Source/HBIOS/kbd.asm +++ b/Source/HBIOS/kbd.asm @@ -70,17 +70,33 @@ KBD_INIT: LD (KBD_REPEAT),A ; SAVE IT LD A,KBD_DEFSTATE ; GET DEFAULT STATE LD (KBD_STATE),A ; SAVE IT - +; + LD A,(IY+KBD_MODE) ; GET KBD MODE BYTE + CP KBDMODE_VRC ; VRC? + JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT +; LD A,$AA ; CONTROLLER SELF TEST CALL KBD_PUTCMD ; SEND IT CALL KBD_GETDATA ; CONTROLLER SHOULD RESPOND WITH $55 (ACK) - +; CP $55 ; IS IT THERE? JR Z,KBD_INIT1 ; IF SO, CONTINUE PRTS(" NOT PRESENT$") ; DIAGNOSE PROBLEM RET ; BAIL OUT - +; KBD_INIT1: + PRTS(" MODE=$") ; TAG + LD A,(IY+KBD_MODE) ; GET MODE VALUE + LD DE,KBD_STR_MODEPS2 + CP KBDMODE_PS2 + JR Z,KBD_INIT2 + LD DE,KBD_STR_MODEVRC + CP KBDMODE_VRC + JR Z,KBD_INIT2 + LD DE,KBD_STR_MODEUNK +KBD_INIT2: + CALL WRITESTR +; LD A,$60 ; SET COMMAND REGISTER CALL KBD_PUTCMD ; SEND IT ; LD A,$60 ; XLAT ENABLED, MOUSE DISABLED, NO INTS @@ -89,11 +105,6 @@ KBD_INIT1: CALL KBD_GETDATA ; GOBBLE UP $AA FROM POWER UP, AS NEEDED -; LD A,$AE ; COMMAND = ENABLE KEYBOARD -; CALL KBD_PUTCMD ; SEND IT -; LD A,$A7 ; COMMAND = DISABLE MOUSE -; CALL KBD_PUTCMD ; SEND IT - CALL KBD_RESET ; RESET THE KEYBOARD CALL KBD_SETLEDS ; UPDATE LEDS BASED ON CURRENT TOGGLE STATE BITS CALL KBD_SETRPT ; UPDATE REPEAT RATE BASED ON CURRENT SETTING @@ -178,7 +189,7 @@ KBD_PUTCMD: ; PUT A CMD BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT ; LD E,A ; SAVE INCOMING VALUE IN E - LD A,(KBD_MODE) ; GET MODE BYTE + LD A,(IY+KBD_MODE) ; GET MODE BYTE CP KBDMODE_VRC ; VGARC KEYBOARD? JR Z,KBD_PUTCMD2 ; BAIL OUT LD B,KBD_WAITTO ; SETUP TO LOOP @@ -208,7 +219,7 @@ KBD_PUTDATA: ; PUT A DATA BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT ; LD E,A ; SAVE INCOMING VALUE IN E - LD A,(KBD_MODE) ; GET MODE BYTE + LD A,(IY+KBD_MODE) ; GET MODE BYTE CP KBDMODE_VRC ; VGARC KEYBOARD? JR Z,KBD_PUTDATA2 ; BAIL OUT LD B,KBD_WAITTO ; SETUP TO LOOP @@ -690,11 +701,21 @@ KBD_DECNEW: ; START NEW KEYPRESS (CLEAR ALL STATUS BITS) LD (KBD_STATUS),A ; CLEAR STATUS JP KBD_DEC1 ; RESTART THE ENGINE ; +; DRIVER DATA +; +KBD_STR_MODEPS2 .TEXT "PS2$" +KBD_STR_MODEVRC .TEXT "VRC$" +KBD_STR_MODEUNK .TEXT "???$" +; +; +; #IF (KBDKBLOUT == KBD_US) +; ;__________________________________________________________________________________________________ ; ; MAPPING TABLES US/ENGLISH ;__________________________________________________________________________________________________ +; KBD_MAPSTD: ; SCANCODE IS INDEX INTO TABLE TO RESULTANT LOOKUP KEYCODE .DB $FF,$E8,$FF,$E4,$E2,$E0,$E1,$EB,$FF,$E9,$E7,$E5,$E3,$09,'`',$FF .DB $FF,$B4,$B0,$FF,$B2,'q','1',$FF,$FF,$FF,'z','s','a','w','2',$FF @@ -731,7 +752,9 @@ KBD_MAPNUMPAD: ; KEYCODE TRANSLATION FROM NUMPAD RANGE TO STD ASCII/KEYCODES .DB $F3,$F7,$F5,$F8,$FF,$F9,$F2,$F6,$F4,$F0,$F1,$2F,$2A,$2D,$2B,$0D .DB $31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$2E,$2F,$2A,$2D,$2B,$0D #ENDIF +; #IF (KBDKBLOUT == KBD_DE) +; ;__________________________________________________________________________________________________ ; ; MAPPING TABLES GERMAN diff --git a/Source/HBIOS/unlzsa2s.asm b/Source/HBIOS/unlzsa2s.asm index 26957db2..afcb988c 100644 --- a/Source/HBIOS/unlzsa2s.asm +++ b/Source/HBIOS/unlzsa2s.asm @@ -1,3 +1,4 @@ +; WARNING: This code does not seem to be working on Z280. WBW - 5/3/2023 ; ; Size-optimized LZSA2 decompressor by spke & uniabis (134 bytes) ; diff --git a/Source/HBIOS/vrc.asm b/Source/HBIOS/vrc.asm index f97068c6..a436a9b1 100644 --- a/Source/HBIOS/vrc.asm +++ b/Source/HBIOS/vrc.asm @@ -63,7 +63,7 @@ VRC_INIT1: CALL VRC_CRTINIT ; SETUP THE VGARC CHIP REGISTERS CALL VRC_LOADFONT ; LOAD FONT DATA FROM ROM TO VGARC STORAGE CALL VRC_VDARES ; RESET - ;CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER + CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER ; ADD OURSELVES TO VDA DISPATCH TABLE LD BC,VRC_FNTBL ; BC := FUNCTION TABLE ADDRESS diff --git a/Source/ver.inc b/Source/ver.inc index 99607274..4531ae07 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.9" +#DEFINE BIOSVER "3.3.0-dev.10" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 51ff8087..576e76d8 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.9" + db "3.3.0-dev.10" endm