Browse Source

eZ80: hbios i/o operations updated for FPLED_IO and ram bank initialisation

pull/424/head
Dean Netherton 2 years ago
parent
commit
a92aebddd7
  1. 1
      Source/HBIOS/cfg_rcez80.asm
  2. 55
      Source/HBIOS/hbios.asm
  3. 1
      Source/HBIOS/std.asm

1
Source/HBIOS/cfg_rcez80.asm

@ -17,6 +17,7 @@
; ;
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|RCEZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|RCEZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON]
CPUFAM .EQU CPU_EZ80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80] CPUFAM .EQU CPU_EZ80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
EZ80IOBASE .EQU $FF ; EZ80 I/O BASE ADDRESS FOR EXTERNAL IO
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD) HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)

55
Source/HBIOS/hbios.asm

@ -1397,7 +1397,12 @@ BOOTWAIT:
; ;
;LD A,(RTCDEFVAL) ; GET DEFAULT VALUE ;LD A,(RTCDEFVAL) ; GET DEFAULT VALUE
LD A,RTCDEF ; DEFAULT VALUE LD A,RTCDEF ; DEFAULT VALUE
#IF (CPUFAM == CPU_EZ80)
LD BC,EZ80IOBASE << 8 + RTCIO
OUT (C),A ; BC IS THE APPLIED IO ADDRESS
#ELSE
OUT (RTCIO),A ; SET IT OUT (RTCIO),A ; SET IT
#ENDIF
; ;
#IF (PLATFORM == PLT_N8) #IF (PLATFORM == PLT_N8)
LD A,N8_DEFACR ; ENSURE N8 ACR LD A,N8_DEFACR ; ENSURE N8 ACR
@ -1421,9 +1426,16 @@ BOOTWAIT:
LD A,DIAG_01 LD A,DIAG_01
#ENDIF #ENDIF
; ;
#IF (CPUFAM == CPU_EZ80)
LD BC,EZ80IOBASE << 8 + FPLED_IO
OUT (C),A ; BC IS THE APPLIED IO ADDRESS
#ELSE
OUT (FPLED_IO),A OUT (FPLED_IO),A
#ENDIF #ENDIF
#ENDIF
; ;
#IF (LEDENABLE) #IF (LEDENABLE)
#IF ((LEDMODE == LEDMODE_STD) | (LEDMODE == LEDMODE_SC)) #IF ((LEDMODE == LEDMODE_STD) | (LEDMODE == LEDMODE_SC))
XOR A ; LED IS INVERTED, TURN IT ON XOR A ; LED IS INVERTED, TURN IT ON
@ -1688,28 +1700,49 @@ ROMRESUME:
; ;
#IF (MEMMGR == MM_Z2) #IF (MEMMGR == MM_Z2)
; ;
#IFDEF ROMBOOT
#IF (CPUFAM == CPU_EZ80)
XOR A
LD BC,EZ80IOBASE << 8 + MPGSEL_0
OUT (C),A ; BC IS THE APPLIED IO ADDRESS
INC A
INC BC ; BC = MPGSEL_1
OUT (C),A ; OUT (MPGSEL_1), $01
LD A,64 - 2
INC BC ; BC = MPGSEL_2
OUT (C),A ; PROG THIRD 16K MMU REGISTER
INC A
INC BC ; BC = MPGSEL_3
OUT (C),A ; PROG FOURTH 16K MMU REGISTER
; ENABLE PAGING
LD A,1
INC BC ; BC = MPGENA
OUT (C),A ; ENABLE MMU NOW
#ELSE
#IFDEF ROMBOOT
; IF THIS IS A ROM BOOT, SETUP THE FIRST 2 16K MMU REGISTERS ; IF THIS IS A ROM BOOT, SETUP THE FIRST 2 16K MMU REGISTERS
; TO MAP THE LOWEST 32K OF PHYSICAL ROM TO THE LOW 32K OF ; TO MAP THE LOWEST 32K OF PHYSICAL ROM TO THE LOW 32K OF
; CPU ADDRESS SPACE (BANKING AREA). THE FIRST 16K MAPPING IS ; CPU ADDRESS SPACE (BANKING AREA). THE FIRST 16K MAPPING IS
; REDUNDANT BECAUSE WE ARE ALREADY RUNNING IN THIS AREA. THE ; REDUNDANT BECAUSE WE ARE ALREADY RUNNING IN THIS AREA. THE
; MAPPING OF THE SECOND 16K IS CRITICAL BECAUSE ALL ZETA 2 ; MAPPING OF THE SECOND 16K IS CRITICAL BECAUSE ALL ZETA 2
; MMU REGISTERS WILL BE 0 AT RESET! ; MMU REGISTERS WILL BE 0 AT RESET!
XOR A XOR A
OUT (MPGSEL_0),A ; PROG FIRST 16K MMU REGISTER OUT (MPGSEL_0),A ; PROG FIRST 16K MMU REGISTER
INC A INC A
OUT (MPGSEL_1),A ; PROG SECOND 16K MMU REGISTER OUT (MPGSEL_1),A ; PROG SECOND 16K MMU REGISTER
#ENDIF
;
#IF (PLATFORM == PLT_DUO)
#ENDIF
;
#IF (PLATFORM == PLT_DUO)
; DUO HAS VARIABLE RAM SIZE. RAM ALWAYS STARTS AT 2048K. ; DUO HAS VARIABLE RAM SIZE. RAM ALWAYS STARTS AT 2048K.
; SETUP COMMON RAM FOR HIGHEST 32K OF RAM BASED ON TOTAL RAM. ; SETUP COMMON RAM FOR HIGHEST 32K OF RAM BASED ON TOTAL RAM.
LD A,128 + (RAMSIZE / 16) - 2 LD A,128 + (RAMSIZE / 16) - 2
#ELSE
#ELSE
; NORMAL ZETA 2 SYSTEM HAS FIXED 512K OF RAM. SETUP COMMON ; NORMAL ZETA 2 SYSTEM HAS FIXED 512K OF RAM. SETUP COMMON
; FOR TOP 32K OF THIS. ; FOR TOP 32K OF THIS.
LD A,64 - 2 LD A,64 - 2
#ENDIF
#ENDIF
; ;
OUT (MPGSEL_2),A ; PROG THIRD 16K MMU REGISTER OUT (MPGSEL_2),A ; PROG THIRD 16K MMU REGISTER
INC A INC A
@ -1717,7 +1750,9 @@ ROMRESUME:
; ENABLE PAGING ; ENABLE PAGING
LD A,1 LD A,1
OUT (MPGENA),A ; ENABLE MMU NOW OUT (MPGENA),A ; ENABLE MMU NOW
#ENDIF
#ENDIF #ENDIF
; ;
;-------------------------------------------------------------------------------------------------- ;--------------------------------------------------------------------------------------------------
; PROXY INSTALLATION ; PROXY INSTALLATION
@ -7117,7 +7152,15 @@ FP_SETLEDS:
#IF (FPLED_INV) #IF (FPLED_INV)
XOR $FF ; INVERT BITS IF NEEDED XOR $FF ; INVERT BITS IF NEEDED
#ENDIF #ENDIF
#IF (CPUFAM == CPU_EZ80)
PUSH BC
LD BC,EZ80IOBASE << 8 + FPLED_IO
OUT (C),A ; BC IS THE APPLIED IO ADDRESS
POP BC
#ELSE
OUT (FPLED_IO),A ; WRITE OUT (FPLED_IO),A ; WRITE
#ENDIF
FP_SETLEDS1: FP_SETLEDS1:
POP HL ; RESTORE HL POP HL ; RESTORE HL
RET ; DONE RET ; DONE

1
Source/HBIOS/std.asm

@ -63,6 +63,7 @@ CPU_NONE .EQU 0 ; NO CPU TYPE DEFINED
CPU_Z80 .EQU 1 ; Z80 FAMILY CPU_Z80 .EQU 1 ; Z80 FAMILY
CPU_Z180 .EQU 2 ; Z180 FAMILY CPU_Z180 .EQU 2 ; Z180 FAMILY
CPU_Z280 .EQU 3 ; Z280 FAMILY CPU_Z280 .EQU 3 ; Z280 FAMILY
CPU_EZ80 .EQU 4 ; eZ280 FAMILY
; ;
; BIOS MODE ; BIOS MODE
; ;

Loading…
Cancel
Save