From 43a835fddec739b4399cb4b0aad33236fee6ca1a Mon Sep 17 00:00:00 2001 From: "H.J.Berends" <112617808+b3rendsh@users.noreply.github.com> Date: Sat, 11 Oct 2025 12:00:56 +0200 Subject: [PATCH 1/2] Update loader for MSX --- Source/MSX/msx-ldr.asm | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Source/MSX/msx-ldr.asm b/Source/MSX/msx-ldr.asm index e2d04ec5..0e264310 100644 --- a/Source/MSX/msx-ldr.asm +++ b/Source/MSX/msx-ldr.asm @@ -10,9 +10,12 @@ ROMWBW_SEG .equ 4 ; RomWBW boot segment +RDSLT .equ $000c ; read value of address in other slot +CALSLT .equ $001c ; inter-slot call routine CHGCPU .equ $0180 ; changes CPU mode -P2_SEG .equ $f2c9 ; current segment page 2 (MSX-DOS 2) +P2_SEG .equ $f2c9 ; current segment page 2 (MSX-DOS 2) CSRSW .equ $fca9 ; cursor on/off flag +MNROM .equ $fcc1 ; main system rom slot H_TIMI .equ $fd9f ; timer interrupt hook (vdp vsync) ; ------------------------------------------------------------------------------ @@ -117,13 +120,18 @@ mtcount: call H_TIMI ; H.TIMI handler saves register AF dec a jr nz,mtcount - ; set CPU to Z80 mode - ld a,(CHGCPU) - cp $c3 - ld a,$80 ; set Z80 mode + switch Turbo LED indicator - call z,CHGCPU + ; set CPU to Z80 mode / turbo off + ld hl,CHGCPU + ld a,(MNROM) + call RDSLT ; routine to change CPU mode exists in BIOS? + cp $c3 ; z=yes + ld a,$80 ; Z80 mode + switch Turbo LED indicator + ld ix,CHGCPU ; change CPU routine + ld iy,(MNROM-1) ; in main rom + call z,CALSLT ; select RomWBW bootloader bank and start RomWBW + di ld a,ROMWBW_SEG out ($fc),a inc a From 2d77d4f03640dcc921dcbecdd7c39664b4df0642 Mon Sep 17 00:00:00 2001 From: "H.J.Berends" <112617808+b3rendsh@users.noreply.github.com> Date: Sat, 11 Oct 2025 13:21:16 +0200 Subject: [PATCH 2/2] Added IDE driver detect option --- Doc/ChangeLog.txt | 1 + Source/HBIOS/cfg_MASTER.asm | 1 + Source/HBIOS/cfg_MSX.asm | 1 + Source/HBIOS/ide.asm | 7 +++++++ 4 files changed, 10 insertions(+) diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 4317223b..ea905135 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -31,6 +31,7 @@ Version 3.6 - M?R: Update Timer app with "zero" option - HJB: Update PPIDE driver, add support for MSX BEER IDE interface - HJB: Added loader for MSX +- HJB: Added IDE driver master media detect option Version 3.5.1 ------------- diff --git a/Source/HBIOS/cfg_MASTER.asm b/Source/HBIOS/cfg_MASTER.asm index 6e987846..07f13fb6 100644 --- a/Source/HBIOS/cfg_MASTER.asm +++ b/Source/HBIOS/cfg_MASTER.asm @@ -338,6 +338,7 @@ RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) ; IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) +IDEDETECTMEDIA .EQU FALSE ; IDE: PROBE FOR MEDIA IN MASTER UNIT, IF NOT DETECTED THEN DON'T ENABLE DRIVER IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH IDE0MODE .EQU IDEMODE_NONE ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE] diff --git a/Source/HBIOS/cfg_MSX.asm b/Source/HBIOS/cfg_MSX.asm index 13e1f374..72c56afc 100644 --- a/Source/HBIOS/cfg_MSX.asm +++ b/Source/HBIOS/cfg_MSX.asm @@ -282,6 +282,7 @@ FD1TYPE .SET FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8] RFENABLE .SET FALSE ; RF: ENABLE RAM FLOPPY DRIVER ; IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) +IDEDETECTMEDIA .SET TRUE ; IDE: PROBE FOR MEDIA IN MASTER UNIT, IF NOT DETECTED THEN DON'T ENABLE DRIVER IDETRACE .SET 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) IDECNT .SET 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH IDE0MODE .SET IDEMODE_RC ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE] diff --git a/Source/HBIOS/ide.asm b/Source/HBIOS/ide.asm index 96d2626b..c365f8e1 100644 --- a/Source/HBIOS/ide.asm +++ b/Source/HBIOS/ide.asm @@ -610,8 +610,15 @@ IDE_DETECT: ;#IF (IDEMODE == IDEMODE_DIO) ;#ENDIF ; +#IF (IDEDETECTMEDIA) + ; PROBE FOR MEDIA IN MASTER UNIT, IF NOT DETECTED THEN DON'T ENABLE DRIVER + LD A,IDE_DRVMASTER + LD (IDE_DRVHD),A + JP IDE_PROBE +#ELSE XOR A ; SIGNAL SUCCESS RET ; AND RETURN +#ENDIF ; ;============================================================================= ; DRIVER FUNCTION TABLE