diff --git a/Apps/Source/applvers.h b/Apps/Source/applvers.h index f798589b..e3d4fff2 100644 --- a/Apps/Source/applvers.h +++ b/Apps/Source/applvers.h @@ -1,14 +1,14 @@ /************************************/ -/* applvers.h dwg - 2.5.0.15 */ +/* applvers.h dwg - 2.5.2.18 */ /************************************/ #define A_RMJ 2 #define A_RMN 5 -#define A_RUP 1 -#define A_RTP 17 +#define A_RUP 2 +#define A_RTP 18 -#define A_MONTH 6 -#define A_DAY 25 +#define A_MONTH 9 +#define A_DAY 29 #define A_YEAR 2013 #define A_YR 13 diff --git a/Apps/Source/applvers.lib b/Apps/Source/applvers.lib index d614bcb1..93a7a34b 100644 --- a/Apps/Source/applvers.lib +++ b/Apps/Source/applvers.lib @@ -2,15 +2,15 @@ A$RMJ equ 2 A$RMN equ 5 -A$RUP equ 1 -A$RTP equ 17 +A$RUP equ 2 +A$RTP equ 18 -A$MONTH equ 6 -A$DAY equ 25 +A$MONTH equ 9 +A$DAY equ 29 A$YEAR equ 2013 date macro -dat db ' 6/25/2013$' +dat db ' 9/29/2013$' endm serial macro diff --git a/Apps/Source/cpmname.c b/Apps/Source/cpmname.c index d900b844..0e8c66c4 100644 --- a/Apps/Source/cpmname.c +++ b/Apps/Source/cpmname.c @@ -131,7 +131,7 @@ prtcfg1(pSysCfg) pCfg->conbaud); pager(); printf ("Default Video Display: %s, Default Emulation: %s", - VDAName[pCfg->defvda], EmuName[pCfg->defemu]); + VDAName[(pCfg->defvda) >> 4], EmuName[pCfg->defemu]); pager(); printf ("Current Terminal Type: %s", TermName[pCfg->termtype]); diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 06e82856..289e92e9 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -1,3 +1,11 @@ +Version 2.5.2 +------------- +- WBW: Added initial support for RAM Floppy + +Version 2.5.1 +------------- +- WBW: Fix PPIDE bug + Version 2.5 ----------- - WBW: Implemented CRT driver model (video and keyboard) diff --git a/Doc/RomWBW Architecture.pdf b/Doc/RomWBW Architecture.pdf index 0491a4ad..d49fe73e 100644 Binary files a/Doc/RomWBW Architecture.pdf and b/Doc/RomWBW Architecture.pdf differ diff --git a/Doc/Source/RomWBW Architecture.docx b/Doc/Source/RomWBW Architecture.docx index da14e051..a8c6a707 100644 Binary files a/Doc/Source/RomWBW Architecture.docx and b/Doc/Source/RomWBW Architecture.docx differ diff --git a/FixPowerShell.cmd b/FixPowerShell.cmd index 86301911..d0b07aea 100644 --- a/FixPowerShell.cmd +++ b/FixPowerShell.cmd @@ -7,7 +7,7 @@ echo which means that local scripts can be run without echo being signed. This is required to use the RomWBW echo build process. echo. -PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently (Get-ExecutionPolicy)" +PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently set to: `'(Get-ExecutionPolicy)`'" echo. echo In order to modify the ExecutionPolicy, this command echo file *MUST* be run with administrator privileges. @@ -24,6 +24,6 @@ echo Attempting to change Execution Policy... echo. PowerShell Set-ExecutionPolicy RemoteSigned echo. -PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now (Get-ExecutionPolicy)" +PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now set to: `'(Get-ExecutionPolicy)`'" echo. pause \ No newline at end of file diff --git a/ReadMe.txt b/ReadMe.txt index eb4b61dd..0b2e4428 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -8,8 +8,8 @@ Builders: Wayne Warthen (wwarthen@gmail.com) Douglas Goodall (douglas_goodall@mac.com) David Giles (vk5dg@internode.on.net) -Updated: 2013-06-23 -Version: 2.5 +Updated: 2013-09-28 +Version: 2.5.2 This is an adaptation of CP/M-80 2.2 and ZSDOS/ZCPR targeting ROMs for all N8VEM Z80 hardware variations diff --git a/RomDsk/cfg_n8vem_rf/1200.COM b/RomDsk/cfg_n8vem_rf/1200.COM new file mode 100644 index 00000000..d00960b0 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/1200.COM differ diff --git a/RomDsk/cfg_n8vem_rf/38400.COM b/RomDsk/cfg_n8vem_rf/38400.COM new file mode 100644 index 00000000..6d81bc17 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/38400.COM differ diff --git a/RomDsk/cfg_n8vem_rf/9600.COM b/RomDsk/cfg_n8vem_rf/9600.COM new file mode 100644 index 00000000..4727badf Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/9600.COM differ diff --git a/RomDsk/cfg_n8vem_rf/FLASHZ.COM b/RomDsk/cfg_n8vem_rf/FLASHZ.COM new file mode 100644 index 00000000..853ae7d9 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/FLASHZ.COM differ diff --git a/RomDsk/cfg_n8vem_rf/LDTIM.COM b/RomDsk/cfg_n8vem_rf/LDTIM.COM new file mode 100644 index 00000000..1b3e2d10 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/LDTIM.COM differ diff --git a/RomDsk/cfg_n8vem_rf/RTC.COM b/RomDsk/cfg_n8vem_rf/RTC.COM new file mode 100644 index 00000000..da0aebc1 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/RTC.COM differ diff --git a/RomDsk/cfg_n8vem_rf/T5.COM b/RomDsk/cfg_n8vem_rf/T5.COM new file mode 100644 index 00000000..ab55d759 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/T5.COM differ diff --git a/RomDsk/cfg_n8vem_rf/VT3.COM b/RomDsk/cfg_n8vem_rf/VT3.COM new file mode 100644 index 00000000..6290a6d3 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/VT3.COM differ diff --git a/RomDsk/cfg_n8vem_rf/XM.COM b/RomDsk/cfg_n8vem_rf/XM.COM new file mode 100644 index 00000000..abcc6828 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/XM.COM differ diff --git a/RomDsk/cfg_n8vem_rf/XM5.COM b/RomDsk/cfg_n8vem_rf/XM5.COM new file mode 100644 index 00000000..8ea2b661 Binary files /dev/null and b/RomDsk/cfg_n8vem_rf/XM5.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/1200.COM b/RomDsk/cfg_zeta_ppisd/1200.COM new file mode 100644 index 00000000..d00960b0 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/1200.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/38400.COM b/RomDsk/cfg_zeta_ppisd/38400.COM new file mode 100644 index 00000000..6d81bc17 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/38400.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/9600.COM b/RomDsk/cfg_zeta_ppisd/9600.COM new file mode 100644 index 00000000..4727badf Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/9600.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/FDTST.COM b/RomDsk/cfg_zeta_ppisd/FDTST.COM new file mode 100644 index 00000000..a693ded6 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/FDTST.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/FLASHZ.COM b/RomDsk/cfg_zeta_ppisd/FLASHZ.COM new file mode 100644 index 00000000..853ae7d9 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/FLASHZ.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/LDTIM.COM b/RomDsk/cfg_zeta_ppisd/LDTIM.COM new file mode 100644 index 00000000..1b3e2d10 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/LDTIM.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/RTC.COM b/RomDsk/cfg_zeta_ppisd/RTC.COM new file mode 100644 index 00000000..da0aebc1 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/RTC.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/SURVEY.COM b/RomDsk/cfg_zeta_ppisd/SURVEY.COM new file mode 100644 index 00000000..2b0bf4e4 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/SURVEY.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/XM.COM b/RomDsk/cfg_zeta_ppisd/XM.COM new file mode 100644 index 00000000..abcc6828 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/XM.COM differ diff --git a/RomDsk/cfg_zeta_ppisd/XM5.COM b/RomDsk/cfg_zeta_ppisd/XM5.COM new file mode 100644 index 00000000..8ea2b661 Binary files /dev/null and b/RomDsk/cfg_zeta_ppisd/XM5.COM differ diff --git a/RomList.txt b/RomList.txt index c1237500..fa45a4d2 100644 --- a/RomList.txt +++ b/RomList.txt @@ -108,6 +108,13 @@ DRI CP/M (BDOS & CCP) - Basic ROM/RAM disk (no floppy/IDE) - Drives A:=ROM, B:=RAM, C:=HDSK0-00, D:=HDSK0-01, E:=HDSK0-02, F:=HDSK0-03 + N8VEM_rf.rom for N8VEM Z80 SBC V1/2 + RAM Flopppy: + - 512KB ROM, 512KB RAM + - 38.4KB serial console baud rate + - Basic ROM/RAM disk (no floppy/IDE) + - RAM Floppy support + - Drives A:=ROM, B:=RAM, C:=RF0, D:=RF1 + N8VEM_vdu.rom for N8VEM Z80 SBC V1/V2: - 512KB ROM, 512KB RAM - 38.4KB serial console baud rate @@ -253,6 +260,13 @@ ZSYSTEM (ZSDOS & ZCPR) - Basic ROM/RAM disk (no floppy/IDE) - Drives A:=ROM, B:=RAM, C:=HDSK0-00, D:=HDSK0-01, E:=HDSK0-02, F:=HDSK0-03 + N8VEM_rf_z.rom for N8VEM Z80 SBC V1/2 + RAM Flopppy: + - 512KB ROM, 512KB RAM + - 38.4KB serial console baud rate + - Basic ROM/RAM disk (no floppy/IDE) + - RAM Floppy support + - Drives A:=ROM, B:=RAM, C:=RF0, D:=RF1 + ZETA_std_z.rom for Zeta Z80 SBC: - 512KB ROM, 512KB RAM - 38.4KB serial console baud rate diff --git a/Source/cbios.asm b/Source/cbios.asm index 55a1d7f5..238edc8d 100644 --- a/Source/cbios.asm +++ b/Source/cbios.asm @@ -46,7 +46,7 @@ WBOOTE JP WBOOT ; #1 - WARM START ; easily located by external programs. They transfger control to routines ; that are located somewhere within the main section of the CBIOS. ; - JP BNKSEL ; #17 - SEL. RAM BANK FOR LOW32K (obsolete, use HBIOS) + JP PANIC ; #17 - SEL. RAM BANK FOR LOW32K (deprecated, use HBIOS) JP GETDSK ; #18 - Get Disk Info (device/unit/lu) JP SETDSK ; #19 - Set Disk Into (device/unit/lu) JP GETINFO ; #20 - Get BIOS Info Base Ptr @@ -101,15 +101,13 @@ WBOOT: IM 1 ; LD SP,ISTACK ; STACK FOR INITIALIZATION -; - ; RELOAD COMMAND PROCESSOR FROM CACHE - LD A,1 ; SELECT RAM BANK 1 - CALL RAMPG ; DO IT - LD HL,0800H ; LOCATION IN RAM BANK 1 OF COMMAND PROCESSOR CACHE - LD DE,CPM_LOC ; LOCATION OF ACTIVE COMMAND PROCESSOR - LD BC,CCPSIZ ; SIZE OF COMMAND PROCESSOR - LDIR ; COPY - CALL RAMPGZ ; RESTORE RAM PAGE 0 +; + LD B,BF_SYSBNKCPY ; B = FUNCTION = BANK COPY + LD C,$81 ; C = BANK = RAM BANK 1 + LD HL,$0800 ; SOURCE = $800, CCP CACHE IN RAM BANK 1 + LD DE,CPM_LOC ; DESTINATION IS LOCATION OF ACTIVE CCP + LD IX,CCPSIZ ; SIZE OF CCP + RST 08 ; ; FALL THRU TO INVOKE CP/M ; @@ -378,12 +376,6 @@ READWRITE: JR BLKRW ; ;__________________________________________________________________________________________________ -BNKSEL: -; - LD A,C - JP RAMPG -; -;__________________________________________________________________________________________________ GETDSK: ; ; INPUT: C=DRIVE # (0=A, 1=B, ... P=16) @@ -1433,6 +1425,14 @@ SIZ_HDSK_DPH .EQU $ - ORG_HDSK_DPH .ECHO SIZ_HDSK_DPH .ECHO " bytes.\n" #ENDIF +#IF (RFENABLE) +ORG_RF_DPH .EQU $ + #INCLUDE "rf_dph.asm" +SIZ_RF_DPH .EQU $ - ORG_RF_DPH + .ECHO "RF DPH occupies " + .ECHO SIZ_RF_DPH + .ECHO " bytes.\n" +#ENDIF ; ; DISK PARAMETER BLOCKS ; @@ -1496,6 +1496,24 @@ DPB_RAM: .DW 0 ; OFF: RESERVED TRACKS = 0 TRK ;__________________________________________________________________________________________________ ; +; 4MB RAM FLOPPY DRIVE, 32 TRKS, 1024 SECS/TRK, 128 BYTES/SEC +; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 256 +; SEC/TRK ENGINEERED SO THAT AFTER DEBLOCKING, SECTOR NUMBER OCCUPIES 1 BYTE (0-255) +; + .DB (2048 / 128) ; RECORDS PER BLOCK (BLS / 128) +DPB_RF: + .DW 1024 ; SPT: SECTORS PER TRACK + .DB 4 ; BSH: BLOCK SHIFT FACTOR + .DB 15 ; BLM: BLOCK MASK + .DB 0 ; EXM: EXTENT MASK + .DW 2047 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = (4MB / 2K BLS) - 1 = 2047 + .DW 255 ; DRM: DIR ENTRIES - 1 = 256 - 1 = 255 + .DB 11110000B ; AL0: DIR BLK BIT MAP, FIRST BYTE + .DB 00000000B ; AL1: DIR BLK BIT MAP, SECOND BYTE + .DW 0 ; CKS: DIRECTORY CHECK VECTOR SIZE = 256 / 4 + .DW 0 ; OFF: RESERVED TRACKS = 0 TRK +;__________________________________________________________________________________________________ +; ; 8MB HARD DISK DRIVE, 65 TRKS, 1024 SECS/TRK, 128 BYTES/SEC ; BLOCKSIZE (BLS) = 4K, DIRECTORY ENTRIES = 128 ; SEC/TRK ENGINEERED SO THAT AFTER DEBLOCKING, SECTOR NUMBER OCCUPIES 1 BYTE (0-255) @@ -1632,6 +1650,7 @@ DPB_MAP: .DW DPB_FD360 ; MID_FD360 .DW DPB_FD120 ; MID_FD120 .DW DPB_FD111 ; MID_FD111 + .DW DPB_RF ; MID_RF ; DPB_CNT .EQU ($ - DPB_MAP) / 2 ; @@ -1707,6 +1726,10 @@ DPH_MAP: .DW HDSKDPH2 .DW HDSKDPH3 #ENDIF + #IF (DSKMAP == DM_RF) + .DW RFDPH0 + .DW RFDPH1 + #ENDIF #IF (DSKMAP != DM_ROM) .DW MDDPH0 #ENDIF @@ -1753,6 +1776,10 @@ DPH_MAP: .DW HDSKDPH2 .DW HDSKDPH3 #ENDIF + #IF ((DSKMAP != DM_RF) & RFENABLE) + .DW RFDPH0 + .DW RFDPH1 + #ENDIF #ENDIF ; CUSTOM_DPHMAP ; DPH_CNT .EQU ($ - DPH_MAP) / 2 @@ -1855,9 +1882,6 @@ INIT: ; SETUP A TEMP STACK IN UPPER 32K LD SP,ISTACK ; STACK FOR INITIALIZATION - ; ENSURE RAM PAGE ZERO ACTIVE - CALL RAMPGZ - ; THIS INIT CODE WILL BE OVERLAID, SO WE ARE GOING ; TO MODIFY THE BOOT ENTRY POINT TO CAUSE A PANIC ; TO EASILY IDENTIFY IF SOMETHING TRIES TO INVOKE @@ -1892,14 +1916,13 @@ INIT1: CALL WRITESTR CALL NEWLINE - ; SAVE COMMAND PROCESSOR TO CACHE IN RAM1 - LD A,1 - CALL RAMPG - LD HL,CPM_LOC ; LOCATION OF ACTIVE COMMAND PROCESSOR - LD DE,0800H ; LOCATION IN RAM 1 OF COMMAND PROCESSOR CACHE - LD BC,CCPSIZ ; SIZE OF COMMAND PROCESSOR - LDIR - CALL RAMPGZ + ; SAVE COMMAND PROCESSOR TO CACHE IN RAM BANK 1 + LD B,BF_SYSBNKCPY ; B = FUNCTION = BANK COPY + LD C,$81 ; C = BANK = RAM BANK 1 + LD HL,CPM_LOC ; SOURCE IS LOCATION OF ACTIVE CCP + LD DE,$0800 ; DESTINATION = $800, CCP CACHE IN RAM BANK 1 + LD IX,CCPSIZ ; SIZE OF CCP + RST 08 ; SYSTEM INITIALIZATION CALL BLKRES ; RESET DISK (DE)BLOCKING ALGORITHM diff --git a/Source/config_n8_2312.asm b/Source/config_n8_2312.asm index 849dfa72..4f18b292 100644 --- a/Source/config_n8_2312.asm +++ b/Source/config_n8_2312.asm @@ -83,6 +83,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8_2511.asm b/Source/config_n8_2511.asm index 827a06c3..6bab79d9 100644 --- a/Source/config_n8_2511.asm +++ b/Source/config_n8_2511.asm @@ -83,6 +83,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_ci.asm b/Source/config_n8vem_ci.asm index 22391906..49caabab 100644 --- a/Source/config_n8vem_ci.asm +++ b/Source/config_n8vem_ci.asm @@ -91,6 +91,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_cvdu.asm b/Source/config_n8vem_cvdu.asm index dd7f60ee..c90a95de 100644 --- a/Source/config_n8vem_cvdu.asm +++ b/Source/config_n8vem_cvdu.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU TRUE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_dide.asm b/Source/config_n8vem_dide.asm index 6b5d05f8..9b5bff9e 100644 --- a/Source/config_n8vem_dide.asm +++ b/Source/config_n8vem_dide.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_diskio.asm b/Source/config_n8vem_diskio.asm index cdc93133..624d98fd 100644 --- a/Source/config_n8vem_diskio.asm +++ b/Source/config_n8vem_diskio.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_diskio3+cvdu.asm b/Source/config_n8vem_diskio3+cvdu.asm index 1ad2f379..1e0c142e 100644 --- a/Source/config_n8vem_diskio3+cvdu.asm +++ b/Source/config_n8vem_diskio3+cvdu.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU TRUE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_diskio3.asm b/Source/config_n8vem_diskio3.asm index c79024f7..43c1a0d0 100644 --- a/Source/config_n8vem_diskio3.asm +++ b/Source/config_n8vem_diskio3.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_dsd.asm b/Source/config_n8vem_dsd.asm index 5c21991a..9f6501ae 100644 --- a/Source/config_n8vem_dsd.asm +++ b/Source/config_n8vem_dsd.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_mfp.asm b/Source/config_n8vem_mfp.asm index 7cae79b2..86c59498 100644 --- a/Source/config_n8vem_mfp.asm +++ b/Source/config_n8vem_mfp.asm @@ -91,6 +91,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_ppide.asm b/Source/config_n8vem_ppide.asm index 82afe632..3b9e453c 100644 --- a/Source/config_n8vem_ppide.asm +++ b/Source/config_n8vem_ppide.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_ppisd.asm b/Source/config_n8vem_ppisd.asm index d421c946..fe5e8d23 100644 --- a/Source/config_n8vem_ppisd.asm +++ b/Source/config_n8vem_ppisd.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_propio.asm b/Source/config_n8vem_propio.asm index 8af92c1d..c7735ed7 100644 --- a/Source/config_n8vem_propio.asm +++ b/Source/config_n8vem_propio.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_rf.asm b/Source/config_n8vem_rf.asm new file mode 100644 index 00000000..27fcbda8 --- /dev/null +++ b/Source/config_n8vem_rf.asm @@ -0,0 +1,103 @@ +; +;================================================================================================== +; ROMWBW 2.X CONFIGURATION FOR N8VEM SBC +;================================================================================================== +; +; BUILD CONFIGURATION OPTIONS +; +CPUFREQ .EQU 8 ; IN MHZ, USED TO COMPUTE DELAY FACTORS +; +BOOTCON .EQU CIODEV_UART ; CONSOLE DEVICE FOR BOOT MESSAGES (MUST BE PRIMARY SERIAL PORT FOR PLATFORM) +DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON +ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) +CONBAUD .EQU 38400 ; BAUDRATE FOR CONSOLE DURING HARDWARE INIT +DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) +DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) +TERMTYPE .EQU TERM_ANSI ; TERM_TTY=0, TERM_ANSI=1, TERM_WYSE=2 +; +RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! +CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA) +; +DSKMAP .EQU DM_RAM ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD, DM_HDSK +; +DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) +; +UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE) +UARTCNT .EQU 1 ; NUMBER OF UARTS +UART0IOB .EQU $68 ; UART0 IOBASE +UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) +; +ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT +ASCI0BAUD .EQU CONBAUD ; ASCI0 BAUDRATE (IMPLEMENTED BY Z180_CNTLB0) +ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) +; +VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT +CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT +UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +; +DEFIOBYTE .EQU $00 ; DEFAULT INITIAL VALUE FOR CP/M IOBYTE, $00=TTY, $01=CRT (MUST HAVE CRT HARDWARE) +ALTIOBYTE .EQU DEFIOBYTE ; ALT INITIAL VALUE (USED WHEN CONFIG JUMPER SHORTED) +WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM +DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS +; +MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) +; +FDENABLE .EQU FALSE ; TRUE FOR FLOPPY SUPPORT +FDMODE .EQU FDMODE_DIO ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3 +FDTRACE .EQU 1 ; 0=SILENT, 1=FATAL ERRORS, 2=ALL ERRORS, 3=EVERYTHING (ONLY RELEVANT IF FDENABLE = TRUE) +FDMEDIA .EQU FDM144 ; FDM720, FDM144, FDM360, FDM120 (ONLY RELEVANT IF FDENABLE = TRUE) +FDMEDIAALT .EQU FDM720 ; ALTERNATE MEDIA TO TRY, SAME CHOICES AS ABOVE (ONLY RELEVANT IF FDMAUTO = TRUE) +FDMAUTO .EQU TRUE ; SELECT BETWEEN MEDIA OPTS ABOVE AUTOMATICALLY +; +IDEENABLE .EQU FALSE ; TRUE FOR IDE SUPPORT +IDEMODE .EQU IDEMODE_DIO ; IDEMODE_DIO, IDEMODE_DIDE +IDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) +IDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!) +IDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +; +PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE) +PPIDEIOB .EQU $60 ; PPIDE IOBASE +PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE) +PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!) +PPIDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +PPIDESLOW .EQU FALSE ; ADD DELAYS TO HELP PROBLEMATIC HARDWARE (TRY THIS IF PPIDE IS UNRELIABLE) +; +SDENABLE .EQU FALSE ; TRUE FOR SD SUPPORT +SDMODE .EQU SDMODE_JUHA ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDMODE_DSD +SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) +SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER +; +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) +PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) +; +PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT +PPPSDENABLE .EQU TRUE ; TRUE FOR PARPORTPROP SD SUPPORT +PPPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPPENABLE = TRUE) +PPPSDCAPACITY .EQU 64 ; CAPACITY OF PPP SD DEVICE (IN MB) +PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) +; +HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT +HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) +HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +; +RFENABLE .EQU TRUE ; TRUE FOR RAM FLOPPY SUPPORT +; +PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD +PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) +KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 +KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE) +; +TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT +ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT +ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE) +; +BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) +BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE +BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT diff --git a/Source/config_n8vem_simh.asm b/Source/config_n8vem_simh.asm index adbe2de8..dfa1846c 100644 --- a/Source/config_n8vem_simh.asm +++ b/Source/config_n8vem_simh.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU TRUE ; TRUE FOR HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_std.asm b/Source/config_n8vem_std.asm index d5f77610..b81fdb9a 100644 --- a/Source/config_n8vem_std.asm +++ b/Source/config_n8vem_std.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_n8vem_vdu.asm b/Source/config_n8vem_vdu.asm index 87b11a81..a6787006 100644 --- a/Source/config_n8vem_vdu.asm +++ b/Source/config_n8vem_vdu.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU TRUE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_zeta_ppisd.asm b/Source/config_zeta_ppisd.asm new file mode 100644 index 00000000..22a778a3 --- /dev/null +++ b/Source/config_zeta_ppisd.asm @@ -0,0 +1,103 @@ +; +;================================================================================================== +; ROMWBW 2.X CONFIGURATION FOR ZETA W/ PPISD +;================================================================================================== +; +; BUILD CONFIGURATION OPTIONS +; +CPUFREQ .EQU 20 ; IN MHZ, USED TO COMPUTE DELAY FACTORS +; +BOOTCON .EQU CIODEV_UART ; CONSOLE DEVICE FOR BOOT MESSAGES (MUST BE PRIMARY SERIAL PORT FOR PLATFORM) +DEFCON .EQU CIODEV_UART ; DEFAULT CONSOLE DEVICE (LOADER AND MONITOR): CIODEV_UART, CIODEV_CRT, CIODEV_PRPCON, CIODEV_PPPCON +ALTCON .EQU DEFCON ; ALT CONSOLE DEVICE (USED WHEN CONFIG JUMPER SHORTED) +CONBAUD .EQU 38400 ; BAUDRATE FOR CONSOLE DURING HARDWARE INIT +DEFVDA .EQU VDADEV_NONE ; DEFAULT VDA DEVICE (VDADEV_NONE, VDADEV_VDU, VDADEV_CVDU, VDADEV_N8V, VDADEV_UPD7220) +DEFEMU .EQU EMUTYP_TTY ; DEFAULT VDA EMULATION (EMUTYP_TTY, EMUTYP_ANSI, ...) +TERMTYPE .EQU TERM_ANSI ; TERM_TTY=0, TERM_ANSI=1, TERM_WYSE=2 +; +RAMSIZE .EQU 512 ; SIZE OF RAM IN KB, MUST MATCH YOUR HARDWARE!!! +CLRRAMDISK .EQU CLR_AUTO ; CLR_ALWAYS, CLR_NEVER, CLR_AUTO (CLEAR IF INVALID DIR AREA) +; +DSKMAP .EQU DM_RAM ; DM_ROM, DM_RAM, DM_FD, DM_IDE, DM_PPIDE, DM_SD, DM_PRPSD, DM_PPPSD, DM_HDSK +; +DSKYENABLE .EQU FALSE ; TRUE FOR DSKY SUPPORT (DO NOT COMBINE WITH PPIDE) +; +UARTENABLE .EQU TRUE ; TRUE FOR UART SUPPORT (ALMOST ALWAYS WANT THIS TO BE TRUE) +UARTCNT .EQU 1 ; NUMBER OF UARTS +UART0IOB .EQU $68 ; UART0 IOBASE +UART0BAUD .EQU CONBAUD ; UART0 BAUDRATE +UART0FIFO .EQU TRUE ; UART0 TRUE ENABLES UART FIFO (16550 ASSUMED, N8VEM AND ZETA ONLY) +UART0AFC .EQU FALSE ; UART0 TRUE ENABLES AUTO FLOW CONTROL (YOUR TERMINAL/UART MUST SUPPORT RTS/CTS FLOW CONTROL!!!) +; +ASCIENABLE .EQU FALSE ; TRUE FOR Z180 ASCI SUPPORT +ASCI0BAUD .EQU CONBAUD ; ASCI0 BAUDRATE (IMPLEMENTED BY Z180_CNTLB0) +ASCI1BAUD .EQU CONBAUD ; ASCI1 BAUDRATE (IMPLEMENTED BY Z180_CNTLB1) +; +VDUENABLE .EQU FALSE ; TRUE FOR VDU BOARD SUPPORT +CVDUENABLE .EQU FALSE ; TRUE FOR CVDU BOARD SUPPORT +UPD7220ENABLE .EQU FALSE ; TRUE FOR uPD7220 BOARD SUPPORT +N8VENABLE .EQU FALSE ; TRUE FOR N8 (TMS9918) VIDEO/KBD SUPPORT +; +DEFIOBYTE .EQU $00 ; DEFAULT INITIAL VALUE FOR CP/M IOBYTE, $00=TTY, $01=CRT (MUST HAVE CRT HARDWARE) +ALTIOBYTE .EQU DEFIOBYTE ; ALT INITIAL VALUE (USED WHEN CONFIG JUMPER SHORTED) +WRTCACHE .EQU TRUE ; ENABLE WRITE CACHING IN CBIOS (DE)BLOCKING ALGORITHM +DSKTRACE .EQU FALSE ; ENABLE TRACING OF CBIOS DISK FUNCTION CALLS +; +MDENABLE .EQU TRUE ; TRUE FOR ROM/RAM DISK SUPPORT (ALMOST ALWAYS WANT THIS ENABLED) +; +FDENABLE .EQU TRUE ; TRUE FOR FLOPPY SUPPORT +FDMODE .EQU FDMODE_ZETA ; FDMODE_DIO, FDMODE_ZETA, FDMODE_DIDE, FDMODE_N8, FDMODE_DIO3 +FDTRACE .EQU 1 ; 0=SILENT, 1=FATAL ERRORS, 2=ALL ERRORS, 3=EVERYTHING (ONLY RELEVANT IF FDENABLE = TRUE) +FDMEDIA .EQU FDM144 ; FDM720, FDM144, FDM360, FDM120 (ONLY RELEVANT IF FDENABLE = TRUE) +FDMEDIAALT .EQU FDM720 ; ALTERNATE MEDIA TO TRY, SAME CHOICES AS ABOVE (ONLY RELEVANT IF FDMAUTO = TRUE) +FDMAUTO .EQU TRUE ; SELECT BETWEEN MEDIA OPTS ABOVE AUTOMATICALLY +; +IDEENABLE .EQU FALSE ; TRUE FOR IDE SUPPORT +IDEMODE .EQU IDEMODE_DIO ; IDEMODE_DIO, IDEMODE_DIDE +IDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) +IDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!) +IDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +; +PPIDEENABLE .EQU FALSE ; TRUE FOR PPIDE SUPPORT (DO NOT COMBINE WITH DSKYENABLE) +PPIDEIOB .EQU $60 ; PPIDE IOBASE +PPIDETRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPIDEENABLE = TRUE) +PPIDE8BIT .EQU FALSE ; USE IDE 8BIT TRANSFERS (PROBABLY ONLY WORKS FOR CF CARDS!) +PPIDECAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +PPIDESLOW .EQU FALSE ; ADD DELAYS TO HELP PROBLEMATIC HARDWARE (TRY THIS IF PPIDE IS UNRELIABLE) +; +SDENABLE .EQU TRUE ; TRUE FOR SD SUPPORT +SDMODE .EQU SDMODE_PPI ; SDMODE_JUHA, SDMODE_CSIO, SDMODE_UART, SDMODE_PPI, SDMODE_DSD +SDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) +SDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +SDCSIOFAST .EQU FALSE ; TABLE-DRIVEN BIT INVERTER +; +PRPENABLE .EQU FALSE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDENABLE .EQU TRUE ; TRUE FOR PROPIO SD SUPPORT (FOR N8VEM PROPIO ONLY!) +PRPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PRPSDENABLE = TRUE) +PRPSDCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +PRPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) +; +PPPENABLE .EQU FALSE ; TRUE FOR PARPORTPROP SUPPORT +PPPSDENABLE .EQU TRUE ; TRUE FOR PARPORTPROP SD SUPPORT +PPPSDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPPENABLE = TRUE) +PPPSDCAPACITY .EQU 64 ; CAPACITY OF PPP SD DEVICE (IN MB) +PPPCONENABLE .EQU TRUE ; TRUE FOR PROPIO CONSOLE SUPPORT (PS/2 KBD & VGA VIDEO) +; +HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT +HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) +HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) +; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; +PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD +PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) +KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 +KBDTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF KBDENABLE = TRUE) +; +TTYENABLE .EQU FALSE ; INCLUDE TTY EMULATION SUPPORT +ANSIENABLE .EQU FALSE ; INCLUDE ANSI EMULATION SUPPORT +ANSITRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF ANSIENABLE = TRUE) +; +BOOTTYPE .EQU BT_MENU ; BT_MENU (WAIT FOR KEYPRESS), BT_AUTO (BOOT_DEFAULT AFTER BOOT_TIMEOUT SECS) +BOOT_TIMEOUT .EQU 20 ; APPROX TIMEOUT IN SECONDS FOR AUTOBOOT, 0 FOR IMMEDIATE +BOOT_DEFAULT .EQU 'R' ; SELECTION TO INVOKE AT TIMEOUT diff --git a/Source/config_zeta_ppp.asm b/Source/config_zeta_ppp.asm index e40de8d4..5acc5069 100644 --- a/Source/config_zeta_ppp.asm +++ b/Source/config_zeta_ppp.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/config_zeta_std.asm b/Source/config_zeta_std.asm index 4c536896..a9dabcc6 100644 --- a/Source/config_zeta_std.asm +++ b/Source/config_zeta_std.asm @@ -87,6 +87,8 @@ HDSKENABLE .EQU FALSE ; TRUE FOR SIMH HDSK SUPPORT HDSKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF IDEENABLE = TRUE) HDSKCAPACITY .EQU 64 ; CAPACITY OF DEVICE (IN MB) ; +RFENABLE .EQU FALSE ; TRUE FOR RAM FLOPPY SUPPORT +; PPKENABLE .EQU FALSE ; TRUE FOR PARALLEL PORT KEYBOARD PPKTRACE .EQU 1 ; 0=SILENT, 1=ERRORS, 2=EVERYTHING (ONLY RELEVANT IF PPKENABLE = TRUE) KBDENABLE .EQU FALSE ; TRUE FOR PS/2 KEYBOARD ON I8242 diff --git a/Source/hbios.asm b/Source/hbios.asm index 210266f8..3d5061d9 100644 --- a/Source/hbios.asm +++ b/Source/hbios.asm @@ -149,6 +149,9 @@ HB_INITTBL: #IF (HDSKENABLE) .DW HDSK_INIT #ENDIF +#IF (RFENABLE) + .DW RF_INIT +#ENDIF #IF (PPKENABLE) .DW PPK_INIT #ENDIF @@ -326,6 +329,10 @@ DIO_DISPATCH1: #IF (HDSKENABLE) CP DIODEV_HDSK JP Z,HDSK_DISPATCH +#ENDIF +#IF (RFENABLE) + CP DIODEV_RF + JP Z,RF_DISPATCH #ENDIF CALL PANIC ; @@ -734,6 +741,15 @@ SIZ_HDSK .EQU $ - ORG_HDSK .ECHO " bytes.\n" #ENDIF +#IF (RFENABLE) +ORG_RF .EQU $ + #INCLUDE "rf.asm" +SIZ_RF .EQU $ - ORG_RF + .ECHO "RF occupies " + .ECHO SIZ_RF + .ECHO " bytes.\n" +#ENDIF + #IF (PPKENABLE) ORG_PPK .EQU $ #INCLUDE "ppk.asm" diff --git a/Source/loader.asm b/Source/loader.asm index ea9f6e0a..3b2a2131 100644 --- a/Source/loader.asm +++ b/Source/loader.asm @@ -524,7 +524,7 @@ dmloop: ld (BL_TMPDRV),a ; save it for printing if needed call CBIOS_GETDSK ; get drive into, c still has drive number or a ; set flags on result - jr nz,dmdone ; error, skip this drive + jp nz,dmdone ; error, skip this drive ld (BL_TMPLU),de ; save lu for later ld a,b ; device/unit into a for matching below @@ -570,6 +570,10 @@ dmloop: cp DIODEV_HDSK ; SIMH HDSK jr z,dmprt + ld de,str_devrf + cp DIODEV_RF ; RAM FLOPPY + jr z,dmprt + jr dmdone dmprt: @@ -770,6 +774,7 @@ str_devsd .DB "SD$" str_devprpsd .DB "PRPSD$" str_devpppsd .DB "PPPSD$" str_devhdsk .DB "HDSK$" +str_devrf .DB "RF$" #ENDIF ; ;================================================================================================== diff --git a/Source/rf.asm b/Source/rf.asm new file mode 100644 index 00000000..09a54ba8 --- /dev/null +++ b/Source/rf.asm @@ -0,0 +1,127 @@ +; +;================================================================================================== +; RAM FLOPPY DISK DRIVER +;================================================================================================== +; +; +; +RF_U0IO .EQU $A0 +RF_U1IO .EQU $A4 +; +; IO PORT OFFSETS +; +RF_DAT .EQU 0 +RF_AL .EQU 1 +RF_AH .EQU 2 +RF_ST .EQU 3 +; +; +; +RF_DISPATCH: + LD A,B ; GET REQUESTED FUNCTION + AND $0F + JR Z,RF_READ + DEC A + JR Z,RF_WRITE + DEC A + JR Z,RF_STATUS + DEC A + JR Z,RF_MEDIA + CALL PANIC +; +; RF_MEDIA +; +RF_MEDIA: + LD A,C ; DEVICE/UNIT IS IN C + AND $0F ; ISOLATE UNIT NUM + CP 2 ; CHECK FOR MAX UNIT EXCEEDED + CALL NC,PANIC ; PANIC IF TOO HIGH + LD A,MID_RF ; SET CORRECT MEDIA VALUE + RET +; +; +; +RF_INIT: + PRTS("RF: UNITS=2$") +; + XOR A ; INIT SUCCEEDED + RET ; RETURN +; +; +; +RF_STATUS: + XOR A ; STATUS ALWAYS OK + RET +; +; +; +RF_READ: + CALL RF_SETIO + CALL RF_SETADR + LD HL,(DIOBUF) + LD B,0 + LD A,(RF_IO) + OR RF_DAT + LD C,A + INIR + INIR + XOR A + RET +; +; +; +RF_WRITE: + CALL RF_SETIO + LD A,(RF_IO) + OR RF_ST + LD C,A + IN A,(C) + BIT 0,A ; CHECK WRITE PROTECT + LD A,1 ; PREPARE TO RETURN FALSE (ERROR) + RET NZ ; WRITE PROTECTED! + CALL RF_SETADR + LD HL,(DIOBUF) + LD B,0 + LD A,(RF_IO) + OR RF_DAT + LD C,A + OTIR + OTIR + XOR A + RET +; +; +; +RF_SETIO: + LD A,(HSTDSK) ; GET DEVICE/UNIT + AND $0F ; ISOLATE UNIT NUM + JR NZ,RF_SETIO1 + LD A,RF_U0IO + JR RF_SETIO3 +RF_SETIO1: + DEC A + JR NZ,RF_SETIO2 + LD A,RF_U1IO + JR RF_SETIO3 +RF_SETIO2: + CALL PANIC ; INVALID UNIT +RF_SETIO3: + LD (RF_IO),A + RET +; +; +; +RF_SETADR: + LD A,(RF_IO) + OR RF_AL + LD C,A + LD A,(HSTSEC) + OUT (C),A + LD A,(HSTTRK) + INC C + OUT (C),A + RET +; +; +; +RF_IO .DB 0 \ No newline at end of file diff --git a/Source/rf_dph.asm b/Source/rf_dph.asm new file mode 100644 index 00000000..290adae9 --- /dev/null +++ b/Source/rf_dph.asm @@ -0,0 +1,30 @@ +; +;================================================================================================== +; RF DISK DRIVER - DATA +;================================================================================================== +; +; RAM FLOPPY 00 +; + .DB DIODEV_RF + 0 +RFDPH0 .DW 0000,0000 + .DW 0000,0000 + .DW DIRBF,DPB_RF + .DW RFCSV0,RFALV0 +; +; RAM FLOPPY 01 +; + .DB DIODEV_RF + 1 +RFDPH1 .DW 0000,0000 + .DW 0000,0000 + .DW DIRBF,DPB_RF + .DW RFCSV1,RFALV1 +; +RFCKS .EQU 0 ; CKS: 0 FOR NON-REMOVABLE MEDIA +RFALS .EQU 256 ; ALS: BLKS / 8 = 2048 / 8 = 256 (ROUNDED UP) +; +; BUFFERS +; +RFCSV0: .FILL RFCKS ; NO DIRECTORY CHECKSUM, NON-REMOVABLE DRIVE +RFALV0: .FILL RFALS ; MAX OF 2048 DATA BLOCKS +RFCSV1: .FILL RFCKS ; NO DIRECTORY CHECKSUM, NON-REMOVABLE DRIVE +RFALV1: .FILL RFALS ; MAX OF 2048 DATA BLOCKS diff --git a/Source/std-n8vem.inc b/Source/std-n8vem.inc index 769b2aea..ea67c689 100644 --- a/Source/std-n8vem.inc +++ b/Source/std-n8vem.inc @@ -24,6 +24,7 @@ DIODEV_SD .EQU $50 DIODEV_PRPSD .EQU $60 DIODEV_PPPSD .EQU $70 DIODEV_HDSK .EQU $80 +DIODEV_RF .EQU $90 ; ; VDA DEVICES (VIDEO DISPLAY ADAPTER) ; diff --git a/Source/std.asm b/Source/std.asm index 16f2093f..7a7fa778 100644 --- a/Source/std.asm +++ b/Source/std.asm @@ -57,6 +57,7 @@ DM_SD .EQU 6 ; SD DRIVE PRIORITY DM_PRPSD .EQU 7 ; PROPIO SD DRIVE PRIORITY DM_PPPSD .EQU 8 ; PROPIO SD DRIVE PRIORITY DM_HDSK .EQU 9 ; SIMH HARD DISK DRIVE PRIORITY +DM_RF .EQU 10 ; RAM FLOPPY PRIORITY ; ; FLOPPY DISK MEDIA SELECTIONS (ID'S MUST BE INDEX OF ENTRY IN FCD_TBL) ; @@ -77,6 +78,7 @@ MID_FD144 .EQU 5 MID_FD360 .EQU 6 MID_FD120 .EQU 7 MID_FD111 .EQU 8 +MID_RF .EQU 9 ; ; FD MODE SELECTIONS ; diff --git a/Source/zcpr.asm b/Source/zcpr.asm index bf989674..c9cb74c1 100644 --- a/Source/zcpr.asm +++ b/Source/zcpr.asm @@ -727,8 +727,9 @@ PRINT: ; PRIN1: MOV A,M ;GET NEXT BYTE - ANI 7FH ;WW - CLEAR MSB - CALL CONOUT ;PRINT CHAR + ANI ~80H ;WW - CLEAR HIGH BIT +;WW CALL CONOUT ;PRINT CHAR + CNZ CONOUT ;WW - DON'T OUTPUT CHAR IF ZERO MOV A,M ;GET NEXT BYTE AGAIN FOR TEST INX H ;PT TO NEXT BYTE ORA A ;SET FLAGS