diff --git a/Source/HBIOS/Config/MBC_ddw.asm b/Source/HBIOS/Config/MBC_ddw.asm new file mode 100644 index 00000000..b4bd0006 --- /dev/null +++ b/Source/HBIOS/Config/MBC_ddw.asm @@ -0,0 +1,59 @@ +; +;================================================================================================== +; MBC CONFIGURATION +;================================================================================================== +; +; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE +; CFG_.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS +; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE +; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS. +; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE _XXX.ASM AND SPECIFY +; YOUR FILE IN THE BUILD PROCESS. +; +; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM. +; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO +; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON +; SETTINGS. +; +; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE, +; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING +; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS! +; +; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO +; DIRECTORIES ABOVE THIS ONE). +; +#DEFINE PLATFORM_NAME "Multi Board Computer" +#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON OR AUTO BOOT +; +#include "cfg_mbc.asm" +; +CPUOSC .EQU 4000000 ; CPU OSC FREQ IN MHZ +; +BATCOND .SET FALSE +; +PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) +; +DSKYENABLE .SET TRUE ; ENABLES DSKY +DSKYMODE .SET DSKYMODE_NG ; DSKY VERTSION: DSKYMODE_[V1|NG] +DSKYOSC .SET 1000000 +; +FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) + +;DIAGLVL .EQU DL_VERBOSE + +DMAENABLE .EQU TRUE ; DMA: ENABLE DMA DRIVER (DMA.ASM) +DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS +DMAMODE .EQU DMAMODE_MBC ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC) + +CVDUMODE .EQU CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] +CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] + +INTMODE .SET 2 +CTCENABLE .SET TRUE ; ENABLE ZILOG CTC SUPPORT + +AY38910ENABLE .EQU TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU CPUOSC / 2 ; DEFAULT TO CPUOSC / 4 +AYMODE .EQU AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC] + +TMSENABLE .EQU TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) +TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|MBC|N8|RC|RCV9958|RCKBD] \ No newline at end of file diff --git a/Source/HBIOS/Config/RPH_ddw.asm b/Source/HBIOS/Config/RPH_ddw.asm new file mode 100644 index 00000000..a5823b2a --- /dev/null +++ b/Source/HBIOS/Config/RPH_ddw.asm @@ -0,0 +1,39 @@ +; +;================================================================================================== +; RPH STANDARD CONFIGURATION +;================================================================================================== +; +; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE +; CFG_.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS +; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE +; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS. +; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE _XXX.ASM AND SPECIFY +; YOUR FILE IN THE BUILD PROCESS. +; +; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM. +; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO +; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON +; SETTINGS. +; +; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE, +; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING +; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS! +; +; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO +; DIRECTORIES ABOVE THIS ONE). +; +#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON OR AUTO BOOT +; +#include "cfg_rph.asm" +; +CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ +; +INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) +; +Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2 +Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3) +Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3) +; +CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP +; +PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) diff --git a/Source/HBIOS/Config/RPH_std.asm b/Source/HBIOS/Config/RPH_std.asm index 8a3d4b22..ce191500 100644 --- a/Source/HBIOS/Config/RPH_std.asm +++ b/Source/HBIOS/Config/RPH_std.asm @@ -38,4 +38,4 @@ RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) ; CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP ; -PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) +PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index 30065fe2..5685e193 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -143,7 +143,7 @@ CVDUMODE .EQU CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC] CVDUMON .EQU CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA] GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM) TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM) -TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|RC|RCV9958|RCKBD] +TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|RC|RCV9958|RCKBD] TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43] diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 5dac28cc..e32a6fac 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -199,7 +199,7 @@ AYMODE_LINC .EQU 6 ; LINC Z50 AY SOUND CARD AYMODE_MBC .EQU 7 ; MBC SOUND BOARD ; ; SN SOUND CHIP MODE SELECTIONS -; +; SNMODE_NONE .EQU 0 SNMODE_RCZ80 .EQU 1 ; RC2014 SOUND MODULE SNMODE_VGM .EQU 2 ; VGM ECB BOARD @@ -212,6 +212,7 @@ TMSMODE_N8 .EQU 2 ; N8 BUILT-IN VIDEO TMSMODE_RC .EQU 3 ; RC2014 TMS9918 VIDEO BOARD TMSMODE_RCV9958 .EQU 4 ; RC2014 V9958 VIDEO BOARD TMSMODE_RCKBD .EQU 5 ; RC2014 TMS9918 + PS2 KEYBOARD +TMSMODE_MBC .EQU 6 ; MBC V9938/58 VIDEO BOARD ; ; CVDU VIDEO MODE SELECTIONS ; @@ -567,22 +568,22 @@ BID_ROMDN .SET $FF ; ROM DRIVE DISABLED .ECHO "BID_BIOS: " \ .ECHO BID_BIOS \ .ECHO "\n" .ECHO "BID_USR: " \ .ECHO BID_USR \ .ECHO "\n" .ECHO "BID_COM: " \ .ECHO BID_COM \ .ECHO "\n" - + .ECHO "BID_BOOT: " \ .ECHO BID_BOOT \ .ECHO "\n" .ECHO "BID_IMG0: " \ .ECHO BID_IMG0 \ .ECHO "\n" .ECHO "BID_IMG1: " \ .ECHO BID_IMG1 \ .ECHO "\n" .ECHO "BID_IMG2: " \ .ECHO BID_IMG2 \ .ECHO "\n" - + .ECHO "BID_ROMD0: " \ .ECHO BID_ROMD0 \ .ECHO "\n" .ECHO "BID_ROMDN: " \ .ECHO BID_ROMDN \ .ECHO "\n" .ECHO "BID_RAMD0: " \ .ECHO BID_RAMD0 \ .ECHO "\n" .ECHO "BID_RAMDN: " \ .ECHO BID_RAMDN \ .ECHO "\n" - + .ECHO "BID_ROM0: " \ .ECHO BID_ROM0 \ .ECHO "\n" .ECHO "BID_ROMN: " \ .ECHO BID_ROMN \ .ECHO "\n" .ECHO "BID_RAM0: " \ .ECHO BID_RAM0 \ .ECHO "\n" .ECHO "BID_RAMN: " \ .ECHO BID_RAMN \ .ECHO "\n" -#ENDIF +#ENDIF ; ; MEMORY LAYOUT ; @@ -720,7 +721,7 @@ INT_CTC0D .EQU 15 ; ZILOG CTC 0, CHANNEL D ;INT_PIO0B .EQU 10 ; ZILOG PIO 0, CHANNEL B ;INT_PIO1A .EQU 11 ; ZILOG PIO 1, CHANNEL A ;INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B - + #ELSE INT_CTC0A .EQU 0 ; ZILOG CTC 0, CHANNEL A diff --git a/Source/HBIOS/tms.asm b/Source/HBIOS/tms.asm index 2a585634..d1978a41 100644 --- a/Source/HBIOS/tms.asm +++ b/Source/HBIOS/tms.asm @@ -63,9 +63,22 @@ TMS_PPIX .EQU 0 ; PPI CONTROL PORT #ENDIF ; +#IF (TMSMODE == TMSMODE_MBC) + +TMS_DATREG .EQU $98 ; READ/WRITE DATA +TMS_CMDREG .EQU $99 ; READ STATUS / WRITE REG SEL +TMS_ACR .EQU $9C ; AUX CONTROL REGISTER +TMS_PPIA .EQU 0 ; PPI PORT A +TMS_PPIB .EQU 0 ; PPI PORT B +TMS_PPIC .EQU 0 ; PPI PORT C +TMS_PPIX .EQU 0 ; PPI CONTROL PORT +TMS_KBDDATA .EQU $E2 ; KBD CTLR DATA PORT +TMS_KBDST .EQU $E3 ; KBD CTLR STATUS/CMD PORT +#ENDIF + TMS_ROWS .EQU 24 -#IF (TMSMODE == TMSMODE_RCV9958) +#IF ((TMSMODE == TMSMODE_RCV9958) | (TMSMODE == TMSMODE_MBC)) TMS_FNTVADDR .EQU $1000 ; VRAM ADDRESS OF FONT DATA TMS_COLS .EQU 80 #ELSE @@ -86,7 +99,7 @@ TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER #DEFINE TMS_IODELAY EX (SP),HL \ EX (SP),HL ; 38 W/S #ELSE ; BELOW WAS TUNED FOR SBC AT 8MHZ -#IF (TMSMODE == TMSMODE_RCV9958) +#IF ((TMSMODE == TMSMODE_RCV9958) | (TMSMODE == TMSMODE_MBC)) #DEFINE TMS_IODELAY NOP \ NOP \ NOP \ NOP \ NOP \ NOP \ NOP ; V9958 NEEDS AT WORST CASE, APPROX 4us (28T) DELAY BETWEEN I/O (WHEN IN TEXT MODE) #ELSE #DEFINE TMS_IODELAY NOP \ NOP ; 8 W/S @@ -110,18 +123,28 @@ TMS_INIT: CALL TMS_Z180IO #ENDIF ; -#IF (TMSMODE == TMSMODE_SCG) +#IF ((TMSMODE == TMSMODE_SCG) | (TMSMODE == TMSMODE_MBC)) LD A,$FF OUT (TMS_ACR),A ; INIT AUX CONTROL REG #ENDIF -; - LD IY,TMS_IDAT ; POINTER TO INSTANCE DATA ; CALL NEWLINE ; FORMATTING PRTS("TMS: MODE=$") + +#IF ((TMSMODE == TMSMODE_MBC)) + LD A,$FE + OUT (TMS_ACR),A ; INIT AUX CONTROL REG +#ENDIF + + + LD IY,TMS_IDAT ; POINTER TO INSTANCE DATA +; #IF (TMSMODE == TMSMODE_SCG) PRTS("SCG$") #ENDIF +#IF (TMSMODE == TMSMODE_MBC) + PRTS("MBC$") +#ENDIF #IF (TMSMODE == TMSMODE_N8) PRTS("N8$") #ENDIF @@ -153,7 +176,7 @@ TMS_INIT1: #IF (TMSMODE == TMSMODE_N8) CALL PPK_INIT ; INITIALIZE PPI KEYBOARD DRIVER #ENDIF -#IF (TMSMODE == TMSMODE_RCKBD) +#IF ((TMSMODE == TMSMODE_RCKBD) | (TMSMODE == TMSMODE_MBC)) CALL KBD_INIT ; INITIALIZE 8242 KEYBOARD DRIVER #ENDIF #IF MKYENABLE @@ -208,7 +231,7 @@ TMS_FNTBL: .DW PPK_FLUSH .DW PPK_READ #ELSE - #IF (TMSMODE == TMSMODE_RCKBD) + #IF ((TMSMODE == TMSMODE_RCKBD) | (TMSMODE == TMSMODE_MBC)) .DW KBD_STAT .DW KBD_FLUSH .DW KBD_READ @@ -217,7 +240,7 @@ TMS_FNTBL: .DW MKY_STAT .DW MKY_FLUSH .DW MKY_READ - + #ELSE .DW TMS_STAT .DW TMS_FLUSH @@ -412,7 +435,7 @@ TMS_SET: ;---------------------------------------------------------------------- ; TMS_WR: -#IF (TMSMODE == TMSMODE_RCV9958) +#IF ((TMSMODE == TMSMODE_RCV9958) | (TMSMODE == TMSMODE_MBC)) ; CLEAR R#14 FOR V9958 XOR A OUT (TMS_CMDREG), A @@ -903,7 +926,7 @@ TMS_IDAT: .DB TMS_PPIC ; PPI PORT C .DB TMS_PPIX ; PPI CONTROL PORT #ENDIF -#IF (TMSMODE == TMSMODE_RCKBD) +#IF ((TMSMODE == TMSMODE_RCKBD) | (TMSMODE == TMSMODE_MBC)) .DB TMS_KBDST ; 8242 CMD/STATUS PORT .DB TMS_KBDDATA ; 8242 DATA PORT #ENDIF @@ -954,7 +977,7 @@ TMS_PORTS: ; 5S Fifth sprite (not displayed) detected. Value in FS* is valid. ; INT Set at each screen update, used for interrupts. ; -#IF (TMSMODE == TMSMODE_RCV9958) +#IF ((TMSMODE == TMSMODE_RCV9958) | (TMSMODE == TMSMODE_MBC)) TMS_INITVDU: .DB $04 ; REG 0 - NO EXTERNAL VID, SET M4 = 1 TMS_INITVDU_REG_1: