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