From 058a67dd40edeac40a15881418038b62f7ea7609 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Sun, 30 Jun 2024 19:32:17 -0700 Subject: [PATCH] Preliminary Support for S100 FPGA Z80 Platform - S100 FPGA Z80 Platform - Simple Serial Driver --- Doc/ChangeLog.txt | 2 + Doc/RomWBW Applications.pdf | Bin 248865 -> 248865 bytes Doc/RomWBW Disk Catalog.pdf | Bin 123903 -> 123903 bytes Doc/RomWBW Errata.pdf | Bin 28754 -> 28754 bytes Doc/RomWBW ROM Applications.pdf | Bin 156003 -> 156003 bytes Doc/RomWBW System Guide.pdf | Bin 578226 -> 578513 bytes Doc/RomWBW User Guide.pdf | Bin 801430 -> 805598 bytes Source/Build.cmd | 1 + Source/BuildFZ80.cmd | 4 + Source/Doc/SystemGuide.md | 15 +- Source/Doc/UserGuide.md | 28 +++ Source/FZ80/Bank Layout.txt | 18 ++ Source/FZ80/Build.cmd | 21 ++ Source/FZ80/Clean.cmd | 3 + Source/FZ80/FZ80 Disk Layout.txt | 19 ++ Source/FZ80/Makefile | 24 +++ Source/HBIOS/Build.cmd | 3 +- Source/HBIOS/Build.ps1 | 2 +- Source/HBIOS/Build.sh | 3 +- Source/HBIOS/Config/FZ80_std.asm | 27 +++ Source/HBIOS/cfg_duo.asm | 11 +- Source/HBIOS/cfg_dyno.asm | 11 +- Source/HBIOS/cfg_epitx.asm | 11 +- Source/HBIOS/cfg_fz80.asm | 347 +++++++++++++++++++++++++++++++ Source/HBIOS/cfg_heath.asm | 11 +- Source/HBIOS/cfg_master.asm | 11 +- Source/HBIOS/cfg_mbc.asm | 11 +- Source/HBIOS/cfg_mk4.asm | 11 +- Source/HBIOS/cfg_mon.asm | 11 +- Source/HBIOS/cfg_n8.asm | 11 +- Source/HBIOS/cfg_nabu.asm | 11 +- Source/HBIOS/cfg_rcz180.asm | 11 +- Source/HBIOS/cfg_rcz280.asm | 11 +- Source/HBIOS/cfg_rcz80.asm | 11 +- Source/HBIOS/cfg_rph.asm | 11 +- Source/HBIOS/cfg_s100.asm | 11 +- Source/HBIOS/cfg_sbc.asm | 11 +- Source/HBIOS/cfg_scz180.asm | 11 +- Source/HBIOS/cfg_una.asm | 2 +- Source/HBIOS/cfg_z80retro.asm | 11 +- Source/HBIOS/cfg_zeta.asm | 11 +- Source/HBIOS/cfg_zeta2.asm | 11 +- Source/HBIOS/hbios.asm | 33 ++- Source/HBIOS/hbios.inc | 2 + Source/HBIOS/scon.asm | 12 +- Source/HBIOS/sser.asm | 126 +++++++++++ Source/HBIOS/std.asm | 2 + Source/Makefile | 7 +- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 50 files changed, 882 insertions(+), 43 deletions(-) create mode 100644 Source/BuildFZ80.cmd create mode 100644 Source/FZ80/Bank Layout.txt create mode 100644 Source/FZ80/Build.cmd create mode 100644 Source/FZ80/Clean.cmd create mode 100644 Source/FZ80/FZ80 Disk Layout.txt create mode 100644 Source/FZ80/Makefile create mode 100644 Source/HBIOS/Config/FZ80_std.asm create mode 100644 Source/HBIOS/cfg_fz80.asm create mode 100644 Source/HBIOS/sser.asm diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 4afcc257..e139cdd5 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -19,6 +19,8 @@ Version 3.5 - W?S: Updated FLASH utility to v1.3.9 - WBW: Support RCBus PS/2 Keyboard (EP/Sally) - M?R: Update Timer app to display output in decimal +- WBW: Preliminary support for S100 FPGA Z80 platform +- WBW: Added simple serial (SSER) driver Version 3.4 ----------- diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index f6392b6b08f102d249a5dad6c06126a7dab00eed..7bc642f0ad0b619bee308d98991ac6ac43a0bcb5 100644 GIT binary patch delta 136 zcmZ2DgMZ-+{)QID7N#xCKPIqR8XB4yPX9ZBSq{S7t}u~#fmNc5tEIVtiGihwk&BU& zp{1*-i?NfVxuvC}rJ13DrJ<3Xf(>CMu?lu}T*W1cMI{wQscBqB#>N(AhFq$uuKsRZ E0ADa8*8l(j delta 136 zcmZ2DgMZ-+{)QID7N#xCKPIpmnphf}O#eH9Sq{S7t}u~#fmNcZiIIVYqq&ibnTw&5 zv$Lz4lcl4hv8$!Ifs31qg}I@ff(>CMu?lu}T*W1cMI{wQscBqB#>N(AhFq$uuKsRZ E0Ez=7l>h($ diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index 673cd83d5ef9c0af702f3c8fcbd68e3bce21fe04..290acc31b6b227a579441a02c1ffa049eb10e76e 100644 GIT binary patch delta 107 zcmex=oc;fC_J%EtOqWo dHZpZGFf=rGb8JcjE#8s&gQv delta 127 zcmccgfbr4;#tlr_tcE6*rk0c0v*jSH&05(fSQ1JcjE#8;{PFa diff --git a/Doc/RomWBW ROM Applications.pdf b/Doc/RomWBW ROM Applications.pdf index 72800f8051a0ae39fd44c4d5898194c006d072ad..9a983286175a41f66089e1d00a8e2b54d0aa99ae 100644 GIT binary patch delta 134 zcmaESi1YCw&W0AoEliUfSuG6>O%0|`cVv=-Ft_h=Wb%+tG;uRAb#-wxvotj|ax`^z zHZ^y1b}_LqH#D&@v2-zXvQw}jtRz;!&W@|NB(bQZq9`?u%h1H!($bPkRn^tsjSB$d Ck0S{H delta 134 zcmaESi1YCw&W0AoEliUfSq)7rO^l{bcVv=-Ft_h=Wb%+tG&DAGG%<8DF)%kUbaHic zHL-9tb2T${GBGr=urzZqw^OhotRz;!&W@|NB(bQZq9`?u%h1H!($bPkRn^tsjSB$D C`68_V diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index e01319ec62c24ea4020b9a3591b8a6bbb2b9e6fb..814067087cdeab2d830442a3bd978856c40dc005 100644 GIT binary patch delta 18399 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 PJ~*n7va+F-k4XDS-Bgk^@2@I`%(&nL{! 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 bgMvK*gSQ8IZxCmJQ82c+hKA)LEAjsW6hZ8J diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index 71c91d31ca4fdca4e49898b5b61360615a623306..5b0512b251eb548dbd9b7898f5b2a69345df7ce6 100644 GIT binary patch delta 124837 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�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 delta 120672 zcmZs?WmsI>vNjsr-Q7KCH|{RMT>=CR5+G=>&_GBCE)6s^?he7-BDibt5G=UE!tZ3Q zefD?G-uDmB+f_A2>1;;T9KDjvpK`(XMFSH73_EE>Ab}j1Ys9Vh5_F7JkJJ5xRmD~9 zqGBU}#C@J^6Wh9d(!xlT|1Gb1ed`$XIqwtYk;qDT_lhX`r1m$)`D#mVgAPUm%}0^s zDLT5rn}_qAHM~_jX~z(_W0utYy=<@WCNmqy0r3y~hD@n@ubZ`WUGR%iAqz2!O5&rr zF~KqEpc_aK|6D?Ypr2!<>DLz)6{?aDd>lGD7l9k!s?`di^}F2nAQwuAboFA^DBW<> zZvD1L1=S)WJB!d_&HQZfjEtGqji0C^9qP=j*ZIq?(xF`Mg#(ZGE4}VNY!_JHck~v$ ztJdLaogWCuIn=ak_v(1LH-+F$-Cz7c6K#Kw^^$(sI zw0+!#_$k+72+ha)jZpFa!R0D!cxQSqXDYecH%KXP7HrTZ_I;^jdTYiHky#4s_m8;F zf*EtV-5Xr!&AxN*@#ocWH5z-5;N26NT0|qt5M?~RkGt%yfd@)b}CZU^#Lnt z0PTd*-qA*DlxaPd(}k2%VSaW2{WU%GQH{dgZNOxPkJ4zYNC%S(3$Q(SwJO%j5lxz&-1o>+I(v)K6AjM3(oAZ)p(9 z@#5QMB;x1~*hxUr4Oy>!xAMOFX%ZGC5VhDd1Vy|PDyAtv`#50n7J6M-z#4n zeQ3jRy~=2zgD?1wF`|i_RyuxXS(u*TmWG(KJ$i>^)J7a0F^rf6n>aEeR$hD_ie=@f z<%#U<+iw09$a6VA$ltb*vr_9ySL_e1PT; z8@DNUWb`iX5=>GtSIer1Pcs$iE!2;`Fm4(tK9wt9-eq^I_REyE?VM}71eL6si4;;y z?th+Uh@Fe_y=>M@?{vy@=?YHd_dZ!YAM~^2g8ms#LBsd?m}^epLQ!+t?1l?T?LE3# z=3a#f$Q5)2EDC#WuD{PH%Wt86JGgAxlK7QJaJo?GJg^JiD5E#C0vq5(Ub^Q@^bNTX zc{XQZG!lf%SAEg3ydHJa8z?B1xw?nY5@hzcI7IBcT;Fil^>T9VN6V7j6w+J9k{@{e zk`KD0E_+K$#dYY@V=u%UV5hebM893}H*VoB5oo-UIi4!3<7kj`JNpC@50}lBX`F4H z)y=RvR{tG7V=+NX{XAQ9;@k4%U&UmOTa$a9nHHPpV^f<`*|eSa=f_6}3I^h>dmL19 znvnaQwQ#z=%dVKYtKv|p_D9IpBx zTg^JWDWi!&b?UER|5CvP(RYlc$L0YGe8j5*E8~+?j`tHs5Zq2xG}VyBs83jBZlTxa zOlnG^%sT|plXOhhm)n&+k<=Q9}Ytr!JFhtk&&ZXriS+0>AjQ zRiBU$DhFlWA`N^2_x?D=j6o#NK0@$0e}WkUDnkHgiVvFvV?a?&!<;4wJ}R+tJACvx zq2g6rj)vxN>ACy@2Y&T<~ zbB!p|D&!mz!%Vs}8p}-cCYdqPvk0xh%CBg^6SIN)g<$DlnE9%NHmy0BBLvM%j)`G@ zip7E)scZ$uTk0Ps;l#t@8LX(YS*PK%0DJJqHfL!?&AkWB*Gh>uT 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

dUiEJGzqI&KMeHvJV9G`JOEn5c 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 RK7I4Scfb4PU;g $@ diff --git a/Source/HBIOS/Build.cmd b/Source/HBIOS/Build.cmd index 76c4f829..f96c522a 100644 --- a/Source/HBIOS/Build.cmd +++ b/Source/HBIOS/Build.cmd @@ -242,7 +242,8 @@ call Build S100 std || exit /b call Build DUO std || exit /b call Build HEATH std || exit /b call Build EPITX std || exit /b -call Build NABU std || exit /b :: call Build MON std || exit /b +call Build NABU std || exit /b +call Build FZ80 std || exit /b goto :eof diff --git a/Source/HBIOS/Build.ps1 b/Source/HBIOS/Build.ps1 index ec8bf51d..f6aa0a4e 100644 --- a/Source/HBIOS/Build.ps1 +++ b/Source/HBIOS/Build.ps1 @@ -27,7 +27,7 @@ $ErrorAction = 'Stop' # UNA BIOS is simply imbedded, it is not built here. # -$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU" +$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80" $PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX" $PlatformListZ280 = "RCZ280" diff --git a/Source/HBIOS/Build.sh b/Source/HBIOS/Build.sh index 892640d0..36502acb 100755 --- a/Source/HBIOS/Build.sh +++ b/Source/HBIOS/Build.sh @@ -50,8 +50,9 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; bash Build.sh ROM_PLATFORM="HEATH"; ROM_CONFIG="std"; bash Build.sh ROM_PLATFORM="EPITX"; ROM_CONFIG="std"; bash Build.sh - ROM_PLATFORM="NABU"; ROM_CONFIG="std"; bash Build.sh # ROM_PLATFORM="MON"; ROM_CONFIG="std"; bash Build.sh + ROM_PLATFORM="NABU"; ROM_CONFIG="std"; bash Build.sh + ROM_PLATFORM="FZ80"; ROM_CONFIG="std"; bash Build.sh exit fi diff --git a/Source/HBIOS/Config/FZ80_std.asm b/Source/HBIOS/Config/FZ80_std.asm new file mode 100644 index 00000000..8ca0722e --- /dev/null +++ b/Source/HBIOS/Config/FZ80_std.asm @@ -0,0 +1,27 @@ +; +;================================================================================================== +; S100 FPGZ Z80 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_fz80.asm" diff --git a/Source/HBIOS/cfg_duo.asm b/Source/HBIOS/cfg_duo.asm index 4843f81b..6b99fc6b 100644 --- a/Source/HBIOS/cfg_duo.asm +++ b/Source/HBIOS/cfg_duo.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_DUO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_DUO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -124,6 +124,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index dd3f3c05..9199a435 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_epitx.asm b/Source/HBIOS/cfg_epitx.asm index 4002c7d1..4463d568 100644 --- a/Source/HBIOS/cfg_epitx.asm +++ b/Source/HBIOS/cfg_epitx.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_EPITX ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_EPITX ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -128,6 +128,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 2 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_fz80.asm b/Source/HBIOS/cfg_fz80.asm new file mode 100644 index 00000000..6ff802f1 --- /dev/null +++ b/Source/HBIOS/cfg_fz80.asm @@ -0,0 +1,347 @@ +; +;================================================================================================== +; ROMWBW 3.X CONFIGURATION DEFAULTS FOR S100 FPGA Z80 +;================================================================================================== +; +; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM +; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD +; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY +; UNDER THIS DIRECTORY. +; +; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS +; FOR THE PLATFORM. +; +#DEFINE PLATFORM_NAME "S100 FPGA Z80", " [", CONFIG, "]" +; +#INCLUDE "hbios.inc" +; +PLATFORM .EQU PLT_FZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] +CPUFAM .EQU CPU_Z80 ; 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 +TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ) +; +BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE +BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT +AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT +; +CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO +CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW +CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ +INTMODE .EQU 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280) +DEFSERCFG .EQU SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM) +; +RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) +ROMSIZE .EQU 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!) +APP_BNKS .EQU $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING) +MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON] +MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY) +MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY) +MPGSEL_2 .EQU $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY) +MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY) +MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY) +; +RTCIO .EQU $C0 ; RTC LATCH REGISTER ADR +; +KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT +KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS +; +CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT +CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT +CTCBASE .EQU $88 ; CTC BASE I/O ADDRESS +CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER +CTCMODE .EQU CTCMODE_TIM16 ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256] +CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256) +CTCPRECH .EQU 2 ; PRESCALE CHANNEL (0-3) +CTCTIMCH .EQU 3 ; TIMER CHANNEL (0-3) +CTCOSC .EQU CPUOSC ; CTC CLOCK FREQUENCY +; +PCFENABLE .EQU FALSE ; ENABLE PCF8584 I2C CONTROLLER +PCFBASE .EQU $F0 ; PCF8584 BASE I/O ADDRESS +; +EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION +; +SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES +SKZDIV .EQU DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K +; +WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ] +WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR +; +FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS +FPLED_IO .EQU $FF ; FP: PORT ADDRESS FOR FP LEDS +FPLED_INV .EQU FALSE ; FP: LED BITS ARE INVERTED +FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS +FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES +FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES +FPSW_INV .EQU FALSE ; FP: SWITCH BITS ARE INVERTED +; +DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING +; +LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED) +LEDMODE .EQU LEDMODE_STD ; LEDMODE_[STD|SC|RTC|NABU] +LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS +LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED +; +DSKYENABLE .EQU FALSE ; ENABLES DSKY FUNCTIONALITY +DSKYDSKACT .EQU TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY +ICMENABLE .EQU FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218) +ICMPPIBASE .EQU $60 ; BASE I/O ADDRESS OF ICM PPI +PKDENABLE .EQU FALSE ; ENABLES DSKY NG PKD DRIVER (8259) +PKDPPIBASE .EQU $60 ; BASE I/O ADDRESS OF PKD PPI +PKDOSC .EQU 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ) +H8PENABLE .EQU FALSE ; ENABLES HEATH H8 FRONT PANEL +; +BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE +SECCON .EQU $FF ; SECONDARY CONSOLE DEVICE +CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP +VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI] +VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD +ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] +PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE] +MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER) +MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE] +; +DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM) +DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC|K80W] +DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!) +; +DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM) +DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS +; +BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM) +BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS +; +INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM) +; +RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM) +; +HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT +SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) +; +DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) +DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] +; +SSERENABLE .EQU TRUE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $34 ; SSER: STATUS PORT +SSERDATA .EQU $35 ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU TRUE ; SSER: OUTPUT READY BIT INVERTED +; +DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) +DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) +DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP +DUART0ACFG .EQU DEFSERCFG ; DUART 0A: SERIAL LINE CONFIG +DUART0BCFG .EQU DEFSERCFG ; DUART 0B: SERIAL LINE CONFIG +DUART1BASE .EQU $40 ; DUART 1: BASE ADDRESS OF CHIP +DUART1ACFG .EQU DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG +DUART1BCFG .EQU DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG +; +UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) +UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ +UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3 +UARTCFG .EQU DEFSERCFG | SER_RTS ; UART: LINE CONFIG FOR UART PORTS +UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA/DUO/NABU ONBOARD UART +UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH) +UARTAUX .EQU FALSE ; UART: AUTO-DETECT AUX UART +UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART +UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART +UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART +UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART +UARTDUAL .EQU FALSE ; UART: AUTO-DETECT DUAL UART +; +ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM) +; +Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM) +; +ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) +ACIADEBUG .EQU FALSE ; ACIA: ENABLE DEBUG OUTPUT +ACIACNT .EQU 1 ; ACIA: NUMBER OF CHIPS TO DETECT (1-2) +ACIA0BASE .EQU $80 ; ACIA 0: REGISTERS BASE ADR +ACIA0CLK .EQU CPUOSC ; ACIA 0: OSC FREQ IN HZ +ACIA0DIV .EQU 1 ; ACIA 0: SERIAL CLOCK DIVIDER +ACIA0CFG .EQU DEFSERCFG ; ACIA 0: SERIAL LINE CONFIG (SEE STD.ASM) +ACIA1BASE .EQU $40 ; ACIA 1: REGISTERS BASE ADR +ACIA1CLK .EQU CPUOSC ; ACIA 1: OSC FREQ IN HZ +ACIA1DIV .EQU 1 ; ACIA 1: SERIAL CLOCK DIVIDER +ACIA1CFG .EQU DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM) +; +SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) +SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT +SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED) +SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP +SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R] +SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR +SIO0ACLK .EQU CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 +SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG +SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE +SIO0BCLK .EQU CPUOSC ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 +SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG +SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE +SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R] +SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR +SIO1ACLK .EQU CPUOSC ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 +SIO1ACFG .EQU DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG +SIO1ACTCC .EQU -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE +SIO1BCLK .EQU CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800 +SIO1BCFG .EQU DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG +SIO1BCTCC .EQU -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE +; +XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG +; +VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) +CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) +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_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO|DUO|NABU40|NABU80] +TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1) +VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) +VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM) +SCONENABLE .EQU TRUE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM) +EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM) +; +MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM) +MDROM .EQU FALSE ; MD: ENABLE ROM DISK +MDRAM .EQU TRUE ; MD: ENABLE RAM DISK +MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM +; +FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) +FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC] +FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2) +FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) +FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS +FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8] +FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8] +; +RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER +; +IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) +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_RC ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] +IDE0BASE .EQU $10 ; IDE 0: IO BASE ADDRESS +IDE0DATLO .EQU $00 ; IDE 0: DATA LO PORT FOR 16-BIT I/O +IDE0DATHI .EQU $00 ; IDE 0: DATA HI PORT FOR 16-BIT I/O +IDE0A8BIT .EQU TRUE ; IDE 0A (MASTER): 8 BIT XFER +IDE0B8BIT .EQU TRUE ; IDE 0B (MASTER): 8 BIT XFER +IDE1MODE .EQU IDEMODE_NONE ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] +IDE1BASE .EQU $00 ; IDE 1: IO BASE ADDRESS +IDE1DATLO .EQU $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O +IDE1DATHI .EQU $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O +IDE1A8BIT .EQU TRUE ; IDE 1A (MASTER): 8 BIT XFER +IDE1B8BIT .EQU TRUE ; IDE 1B (MASTER): 8 BIT XFER +IDE2MODE .EQU IDEMODE_NONE ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC] +IDE2BASE .EQU $00 ; IDE 2: IO BASE ADDRESS +IDE2DATLO .EQU $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O +IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O +IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER +IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER +; +PPIDEENABLE .EQU TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) +PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP +PPIDE0BASE .EQU $30 ; PPIDE 0: PPI REGISTERS BASE ADR +PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER +PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER +PPIDE1BASE .EQU $00 ; PPIDE 1: PPI REGISTERS BASE ADR +PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER +PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER +PPIDE2BASE .EQU $00 ; PPIDE 2: PPI REGISTERS BASE ADR +PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER +PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER +; +SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) +SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR] +SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE +SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY +SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE +SDMTSWAP .EQU FALSE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011 +; +CHENABLE .EQU FALSE ; CH: ENABLE CH375/376 USB SUPPORT +CHTRACE .EQU 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +CHUSBTRACE .EQU 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +CHSDTRACE .EQU 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +CHCNT .EQU 2 ; CH: NUMBER OF BOARDS TO DETECT (1-2) +CH0BASE .EQU $3E ; CH 0: BASE I/O ADDRESS +CH0USBENABLE .EQU TRUE ; CH 0: ENABLE USB DISK +CH0SDENABLE .EQU FALSE ; CH 0: ENABLE SD DISK +CH1BASE .EQU $3C ; CH 1: BASE I/O ADDRESS +CH1USBENABLE .EQU TRUE ; CH 1: ENABLE USB DISK +CH1SDENABLE .EQU FALSE ; CH 1: ENABLE SD DISK +; +PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM) +PRPSDENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER SD CARD SUPPORT +PRPSDTRACE .EQU 1 ; PRP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PRPCONENABLE .EQU TRUE ; PRP: ENABLE PROPIO DRIVER VIDEO/KBD SUPPORT +; +PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) +; +ESPENABLE .EQU FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM) +; +HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM) +; +PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM) +PIOCNT .EQU 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP +PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR +PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR +; +LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM) +LPTMODE .EQU LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014] +LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2) +LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +LPT0BASE .EQU $0C ; LPT 0: REGISTERS BASE ADR +LPT1BASE .EQU $00 ; LPT 1: REGISTERS BASE ADR +; +PPAENABLE .EQU FALSE ; PPA: ENABLE PPA DISK DRIVER (PPA.ASM) +PPACNT .EQU 1 ; PPA: NUMBER OF PPA DEVICES (1-2) +PPATRACE .EQU 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +PPAMODE .EQU PPAMODE_MG014 ; PPA: DRIVER MODE: PPAMODE_[NONE|SPP|MG014] +PPA0BASE .EQU LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA +PPA1BASE .EQU LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA +; +IMMENABLE .EQU FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM) +IMMCNT .EQU 1 ; IMM: NUMBER OF IMM DEVICES (1-2) +IMMTRACE .EQU 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +IMMMODE .EQU IMMMODE_MG014 ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014] +IMM0BASE .EQU LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM +IMM1BASE .EQU LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM +; +SYQENABLE .EQU FALSE ; SYQ: ENABLE IMM DISK DRIVER (SYQ.ASM) +SYQCNT .EQU 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2) +SYQTRACE .EQU 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL) +SYQMODE .EQU IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014] +SYQ0BASE .EQU LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ +SYQ1BASE .EQU LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ +; +PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD +PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) +PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP +; +UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM) +; +SN76489ENABLE .EQU FALSE ; SN: ENABLE SN76489 SOUND DRIVER +AUDIOTRACE .EQU FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER +SN7CLK .EQU 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD +SNMODE .EQU SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM] +; +AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER +AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD +AYMODE .EQU AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU] +; +SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM) +; +DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM) +DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS +DMAMODE .EQU DMAMODE_RC ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO) +; +YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER +VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC) diff --git a/Source/HBIOS/cfg_heath.asm b/Source/HBIOS/cfg_heath.asm index 41f6cb6a..368986ae 100644 --- a/Source/HBIOS/cfg_heath.asm +++ b/Source/HBIOS/cfg_heath.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_HEATH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_HEATH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index e10cda1d..2c660aef 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -12,7 +12,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -155,6 +155,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index bc37a51f..f8bbcebb 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -121,6 +121,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 691440e6..a71b9e2e 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_mon.asm b/Source/HBIOS/cfg_mon.asm index 00f7b408..8fd6616d 100644 --- a/Source/HBIOS/cfg_mon.asm +++ b/Source/HBIOS/cfg_mon.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_MON ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_MON ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -121,6 +121,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index d810827d..874b04d4 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -128,6 +128,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_nabu.asm b/Source/HBIOS/cfg_nabu.asm index 538bc8e1..6e53084d 100644 --- a/Source/HBIOS/cfg_nabu.asm +++ b/Source/HBIOS/cfg_nabu.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_NABU ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_NABU ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index d1f2da99..f7c8a09a 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -132,6 +132,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index f97f7033..fed30e1c 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] 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 @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 7224ff1d..d61cfb90 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index fbf1ebbf..997764b1 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_RPH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_RPH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU TRUE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_s100.asm b/Source/HBIOS/cfg_s100.asm index 70800cf8..699202bb 100644 --- a/Source/HBIOS/cfg_s100.asm +++ b/Source/HBIOS/cfg_s100.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_S100 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_S100 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index 76cd046b..d70be45f 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -121,6 +121,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 52849489..61279038 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -126,6 +126,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2) DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP diff --git a/Source/HBIOS/cfg_una.asm b/Source/HBIOS/cfg_una.asm index ca57b1f3..3b6e30f2 100644 --- a/Source/HBIOS/cfg_una.asm +++ b/Source/HBIOS/cfg_una.asm @@ -15,7 +15,7 @@ ; #INCLUDE "../UBIOS/ubios.inc" ; -;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA] ; diff --git a/Source/HBIOS/cfg_z80retro.asm b/Source/HBIOS/cfg_z80retro.asm index e95c80ae..560bea43 100644 --- a/Source/HBIOS/cfg_z80retro.asm +++ b/Source/HBIOS/cfg_z80retro.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_Z80RETRO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_Z80RETRO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -119,6 +119,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 0b3c409f..b713736b 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -108,6 +108,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 7e3c6f10..810a2927 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -15,7 +15,7 @@ ; #INCLUDE "hbios.inc" ; -PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|MON] +PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80] CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280] BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA] BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE @@ -119,6 +119,15 @@ SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM) DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM) DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF] ; +SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM) +SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG +SSERSTATUS .EQU $FF ; SSER: STATUS PORT +SSERDATA .EQU $FF ; SSER: DATA PORT +SSERIRDY .EQU %00000001 ; SSER: INPUT READY BIT MASK +SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED +SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK +SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED +; DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM) ; UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM) diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index 99920627..79d3fb42 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -615,11 +615,7 @@ HBX_ROM: BIT 7,A ; BIT 7 SET REQUESTS RAM PAGE JR Z,HBX_ROM ; NOT SET, SELECT ROM PAGE RES 7,A ; RAM PAGE REQUESTED: CLEAR ROM BIT - #IF (PLATFORM == PLT_DUO) - ADD A,64 ; ADD 64 x 32K - RAM STARTS FROM 2048K - #ELSE - ADD A,16 ; ADD 16 x 32K - RAM STARTS FROM 512K - #ENDIF + ADD A,ROMSIZE / 32 ; STARTING RAM BANK NUMBER OFFSET ; HBX_ROM: RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K @@ -1708,7 +1704,8 @@ ROMRESUME: #ELSE ; NORMAL ZETA 2 SYSTEM HAS FIXED 512K OF RAM. SETUP COMMON ; FOR TOP 32K OF THIS. - LD A,64 - 2 + ;LD A,64 - 2 + LD A,((ROMSIZE + RAMSIZE) / 16) - 2 #ENDIF ; OUT (MPGSEL_2),A ; PROG THIRD 16K MMU REGISTER @@ -1717,6 +1714,12 @@ ROMRESUME: ; ENABLE PAGING LD A,1 OUT (MPGENA),A ; ENABLE MMU NOW +; + #IF (PLATFORM == PLT_FZ80) + ; REMOVE FPGA ROM MONITOR FROM THE CPU ADDRESS SPACE + LD A,%00000010 + OUT ($07),A + #ENDIF #ENDIF ; ;-------------------------------------------------------------------------------------------------- @@ -3564,6 +3567,9 @@ HB_INITRLEN .EQU (($ - HB_INIT_REC) / 2) ; HB_PCINITTBL: ; +#IF (SSERENABLE) + .DW SSER_PREINIT +#ENDIF #IF (ASCIENABLE) .DW ASCI_PREINIT #ENDIF @@ -3642,6 +3648,9 @@ HB_INITTBL: #IF (SPKENABLE) .DW SP_INIT ; AUDIBLE INDICATOR OF BOOT START #ENDIF +#IF (SSERENABLE) + .DW SSER_INIT +#ENDIF #IF (ASCIENABLE) .DW ASCI_INIT #ENDIF @@ -7800,6 +7809,8 @@ PS_SDLPT .TEXT "LPT$" PS_SDESPCON .TEXT "ESPCON$" PS_SDESPSER .TEXT "ESPSER$" PS_SDSCON .TEXT "SCON$" +PS_SDEF .TEXT "EF$" +PS_SDSSER .TEXT "SSER$" ; ; CHARACTER SUB TYPE STRINGS ; @@ -7962,6 +7973,16 @@ SIZ_RP5RTC .EQU $ - ORG_RP5RTC MEMECHO SIZ_RP5RTC MEMECHO " bytes.\n" #ENDIF +; +#IF (SSERENABLE) +ORG_SSER .EQU $ + #INCLUDE "sser.asm" +SIZ_SSER .EQU $ - ORG_SSER + MEMECHO "SSER occupies " + MEMECHO SIZ_SSER + MEMECHO " bytes.\n" +#ENDIF +; #IF (ASCIENABLE) ORG_ASCI .EQU $ #INCLUDE "asci.asm" diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index ce3f1924..5cdf6fea 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -158,6 +158,7 @@ PLT_EPITX .EQU 19 ; Z180 MINI-ITX PLT_MON .EQU 20 ; MONSPUTER PLT_STDZ180 .EQU 21 ; GENESIS Z180 SYSTEM PLT_NABU .EQU 22 ; NABU PERSONAL COMPUTER +PLT_FZ80 .EQU 23 ; S100 FPGA Z80 ; ; HBIOS GLOBAL ERROR RETURN VALUES ; @@ -323,6 +324,7 @@ CIODEV_ESPCON .EQU $0C CIODEV_ESPSER .EQU $0D CIODEV_SCON .EQU $0E CIODEV_EF .EQU $0F +CIODEV_SSER .EQU $10 ; ; SUB TYPES OF CHAR DEVICES ; diff --git a/Source/HBIOS/scon.asm b/Source/HBIOS/scon.asm index 1d3b4a5d..6969686f 100644 --- a/Source/HBIOS/scon.asm +++ b/Source/HBIOS/scon.asm @@ -67,14 +67,16 @@ SCON_FNTBL: SCON_IN: CALL SCON_IST ; CHECK FOR CHAR PENDING JR Z,SCON_IN ; WAIT FOR IT IF NECESSARY - IN0 A,(SCON_DATA) ; READ THE CHAR FROM PROPIO + ;IN0 A,(SCON_DATA) ; READ THE CHAR FROM PROPIO + IN A,(SCON_DATA) ; READ THE CHAR FROM PROPIO LD E,A RET ; ; ; SCON_IST: - IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER + ;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER + IN A,(SCON_STATUS) ; READ LINE STATUS REGISTER AND SCON_KBDRDY ; ISOLATE KBDRDY JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING OR $FF ; SET A=$FF TO SIGNAL READY @@ -86,13 +88,15 @@ SCON_OUT: CALL SCON_OST ; CHECK FOR OUTPUT READY JR Z,SCON_OUT ; WAIT IF NECESSARY LD A,E ; RECOVER THE CHAR TO WRITE - OUT0 (SCON_DATA),A ; WRITE THE CHAR TO PROPIO + ;OUT0 (SCON_DATA),A ; WRITE THE CHAR TO PROPIO + OUT (SCON_DATA),A ; WRITE THE CHAR TO PROPIO RET ; ; ; SCON_OST: - IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER + ;IN0 A,(SCON_STATUS) ; READ LINE STATUS REGISTER + IN A,(SCON_STATUS) ; READ LINE STATUS REGISTER AND SCON_DSPRDY ; ISOLATE DSPRDY JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING OR $FF ; SET A=$FF TO SIGNAL READY diff --git a/Source/HBIOS/sser.asm b/Source/HBIOS/sser.asm new file mode 100644 index 00000000..de51f598 --- /dev/null +++ b/Source/HBIOS/sser.asm @@ -0,0 +1,126 @@ +; +;================================================================================================== +; SIMPLE SERIAL DRIVER +;================================================================================================== +; +; TODO: +; +;;;;SSER_IOBASE .EQU $34 +;;;;; +;;;;SSER_STATUS .EQU SSER_IOBASE +;;;;SSER_DATA .EQU SSER_IOBASE + 1 +;;;;; +;;;;SSER_IRDY .EQU %00000001 +;;;;SSER_IINV .EQU FALSE +;;;;SSER_ORDY .EQU %00000010 +;;;;SSER_OINV .EQU TRUE +; + DEVECHO "SSER: IO=" + DEVECHO SSERSTATUS + DEVECHO "\n" +; +; +; +SSER_PREINIT: +; +; ADD OURSELVES TO CIO DISPATCH TABLE +; + LD D,0 ; PHYSICAL UNIT IS ZERO + LD E,CIODEV_SSER ; DEVICE TYPE + LD BC,SSER_FNTBL ; BC := FUNCTION TABLE ADDRESS + CALL CIO_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED +; + XOR A + RET +; +; +; +SSER_INIT: + CALL NEWLINE + PRTS("SSER$") + PRTS(": IO=0x$") ; FORMATTING + LD A,SSERSTATUS + CALL PRTHEXBYTE +; + XOR A ; SIGNAL SUCCESS + RET +; +; DRIVER FUNCTION TABLE +; +SSER_FNTBL: + .DW SSER_IN + .DW SSER_OUT + .DW SSER_IST + .DW SSER_OST + .DW SSER_INITDEV + .DW SSER_QUERY + .DW SSER_DEVICE +#IF (($ - SSER_FNTBL) != (CIO_FNCNT * 2)) + .ECHO "*** INVALID SSER FUNCTION TABLE ***\n" +#ENDIF +; +; +; +SSER_IN: + CALL SSER_IST ; CHECK FOR CHAR PENDING + JR Z,SSER_IN ; WAIT FOR IT IF NECESSARY + IN A,(SSERDATA) ; READ THE CHAR + LD E,A + RET +; +; +; +SSER_IST: + IN A,(SSERSTATUS) ; READ LINE STATUS REGISTER +#IF (SSERIINV) + CPL +#ENDIF + AND SSERIRDY ; ISOLATE DATA READY + JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING + OR $FF ; SET A=$FF TO SIGNAL READY + RET ; RETURN +; +; +; +SSER_OUT: + CALL SSER_OST ; CHECK FOR OUTPUT READY + JR Z,SSER_OUT ; WAIT IF NECESSARY + LD A,E ; RECOVER THE CHAR TO WRITE + OUT (SSERDATA),A ; WRITE THE CHAR + RET +; +; +; +SSER_OST: + IN A,(SSERSTATUS) ; READ LINE STATUS REGISTER +#IF (SSEROINV) + CPL +#ENDIF + AND SSERORDY ; ISOLATE OUTPUT RDY + JP Z,CIO_IDLE ; RETURN VIA IDLE PROCESSING + OR $FF ; SET A=$FF TO SIGNAL READY + RET ; RETURN +; +; +; +SSER_INITDEV: + SYSCHKERR(ERR_NOTIMPL) + RET +; +; +; +SSER_QUERY: + LD DE,SSERCFG + XOR A + RET +; +; +; +SSER_DEVICE: + LD D,CIODEV_SSER ; D := DEVICE TYPE + LD E,0 ; E := DEVICE NUM, ALWAYS 0 + LD C,$00 ; C := DEVICE TYPE, 0x00 IS RS-232 + LD H,0 ; H := 0, DRIVER HAS NO MODES + LD L,SSERSTATUS ; L := BASE I/O ADDRESS + XOR A ; SIGNAL SUCCESS + RET diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 9a51e3a3..50b6ad0c 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -24,6 +24,8 @@ ; 20. MON Jacques Pelletier's Monsputer ; 21. STDZ180 Genesis Z180 System ; 22. NABU NABU w/ Les Bird's RomWBW Option Board +; 23. FZ80 S100 Computers FPGA Z80 +; ; ; INCLUDE BUILD VERSION ; diff --git a/Source/Makefile b/Source/Makefile index ea0bd77f..9b060384 100644 --- a/Source/Makefile +++ b/Source/Makefile @@ -2,12 +2,12 @@ # order is actually important, because of build dependencies # -.PHONY: doc prop shared bp images rom zrc z1rcc zzrcc zrc512 +.PHONY: doc prop shared bp images rom zrc z1rcc zzrcc zrc512 fz80 .ONESHELL: .SHELLFLAGS = -cex -all: prop shared bp images rom zrc z1rcc zzrcc zrc512 +all: prop shared bp images rom zrc z1rcc zzrcc zrc512 fz80 doc: $(MAKE) --directory Doc $(ACTION) @@ -54,6 +54,9 @@ zzrcc: zrc512: $(MAKE) --directory ZRC512 $(ACTION) +fz80: + $(MAKE) --directory FZ80 $(ACTION) + clean: ACTION=clean clean: all diff --git a/Source/ver.inc b/Source/ver.inc index aad10afa..0697f711 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 5 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.5.0-dev.48" +#DEFINE BIOSVER "3.5.0-dev.49" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 3d855c09..cad0ea50 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 5 rup equ 0 rtp equ 0 biosver macro - db "3.5.0-dev.48" + db "3.5.0-dev.49" endm