diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 3d866657..5d55b78c 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -4,6 +4,7 @@ Version 3.3 - A?C: Preliminary support for Z80-Retro - A?C: Support for SD PIO - A?C: Support for Z80-Retro SD interface +- WBW: Support per-drive floppy configuration Version 3.2.1 ------------- diff --git a/Source/HBIOS/cfg_dyno.asm b/Source/HBIOS/cfg_dyno.asm index cf94fe36..add2c405 100644 --- a/Source/HBIOS/cfg_dyno.asm +++ b/Source/HBIOS/cfg_dyno.asm @@ -185,9 +185,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_DYNO ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_master.asm b/Source/HBIOS/cfg_master.asm index d8224968..88c1cb8c 100644 --- a/Source/HBIOS/cfg_master.asm +++ b/Source/HBIOS/cfg_master.asm @@ -239,9 +239,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_NONE ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) diff --git a/Source/HBIOS/cfg_mbc.asm b/Source/HBIOS/cfg_mbc.asm index db530d15..f548495c 100644 --- a/Source/HBIOS/cfg_mbc.asm +++ b/Source/HBIOS/cfg_mbc.asm @@ -168,9 +168,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_MBC ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) diff --git a/Source/HBIOS/cfg_mk4.asm b/Source/HBIOS/cfg_mk4.asm index 205e343f..5ebf710b 100644 --- a/Source/HBIOS/cfg_mk4.asm +++ b/Source/HBIOS/cfg_mk4.asm @@ -178,9 +178,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_DIDE ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) diff --git a/Source/HBIOS/cfg_n8.asm b/Source/HBIOS/cfg_n8.asm index 4e459e7e..93cf1206 100644 --- a/Source/HBIOS/cfg_n8.asm +++ b/Source/HBIOS/cfg_n8.asm @@ -180,9 +180,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_N8 ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) diff --git a/Source/HBIOS/cfg_rcz180.asm b/Source/HBIOS/cfg_rcz180.asm index 54727dae..032bcd8a 100644 --- a/Source/HBIOS/cfg_rcz180.asm +++ b/Source/HBIOS/cfg_rcz180.asm @@ -185,9 +185,9 @@ 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_rcz280.asm b/Source/HBIOS/cfg_rcz280.asm index 1477325e..1726fc6f 100644 --- a/Source/HBIOS/cfg_rcz280.asm +++ b/Source/HBIOS/cfg_rcz280.asm @@ -195,9 +195,9 @@ 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_rcz80.asm b/Source/HBIOS/cfg_rcz80.asm index 18d9551b..2c937128 100644 --- a/Source/HBIOS/cfg_rcz80.asm +++ b/Source/HBIOS/cfg_rcz80.asm @@ -189,9 +189,9 @@ 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_rph.asm b/Source/HBIOS/cfg_rph.asm index 1fff2ed7..a6ddcc73 100644 --- a/Source/HBIOS/cfg_rph.asm +++ b/Source/HBIOS/cfg_rph.asm @@ -169,9 +169,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_N8 ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) diff --git a/Source/HBIOS/cfg_sbc.asm b/Source/HBIOS/cfg_sbc.asm index d6c2d4e3..00c6dff2 100644 --- a/Source/HBIOS/cfg_sbc.asm +++ b/Source/HBIOS/cfg_sbc.asm @@ -163,14 +163,13 @@ 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_DIO3 ; 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4) diff --git a/Source/HBIOS/cfg_scz180.asm b/Source/HBIOS/cfg_scz180.asm index 1c1c2dac..3af748d8 100644 --- a/Source/HBIOS/cfg_scz180.asm +++ b/Source/HBIOS/cfg_scz180.asm @@ -185,9 +185,9 @@ 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) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_z80retro.asm b/Source/HBIOS/cfg_z80retro.asm index 332a0f55..4a58c255 100644 --- a/Source/HBIOS/cfg_z80retro.asm +++ b/Source/HBIOS/cfg_z80retro.asm @@ -169,9 +169,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC] FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2) FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_zeta.asm b/Source/HBIOS/cfg_zeta.asm index 74576657..66099dc4 100644 --- a/Source/HBIOS/cfg_zeta.asm +++ b/Source/HBIOS/cfg_zeta.asm @@ -139,9 +139,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC] FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2) FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/cfg_zeta2.asm b/Source/HBIOS/cfg_zeta2.asm index 19193f83..90e104e1 100644 --- a/Source/HBIOS/cfg_zeta2.asm +++ b/Source/HBIOS/cfg_zeta2.asm @@ -150,9 +150,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC] FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2) FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL) -FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111] -FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111] 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 ; diff --git a/Source/HBIOS/fd.asm b/Source/HBIOS/fd.asm index 17de8693..2ffa4755 100644 --- a/Source/HBIOS/fd.asm +++ b/Source/HBIOS/fd.asm @@ -109,7 +109,7 @@ FRC_TOSEEKWT .EQU -15H ; EB ; FD DEVICE CONFIGURATION ; FD_DEVCNT .EQU FDCNT ; 2 DEVICES SUPPORTED -FD_CFGSIZ .EQU 8 ; SIZE OF CFG TBL ENTRIES +FD_CFGSIZ .EQU 9 ; SIZE OF CFG TBL ENTRIES ; ; PER DEVICE DATA OFFSETS ; ; OFFSET OF... @@ -121,25 +121,28 @@ FD_HST .EQU 4 ; HOSTS SEEK POSITION FD_HSTTRK .EQU FD_HST + 0 ; HOST TRACK (WORD) FD_HSTSEC .EQU FD_HST + 2 ; HOST SECTOR (BYTE) FD_HSTHD .EQU FD_HST + 3 ; HOST HEAD (BYTE) +FD_TYPE .EQU 8 ; FLOPPY DSIK TYPE (BYTE) ; FD_CFGTBL: ; DEVICE 0, PRIMARY MASTER .DB 0 ; DEVICE NUMBER .DB 0 ; DEVICE STATUS - .DB FDMEDIA ; MEDIA TYPE + .DB $FF ; CURRENT MEDIA TYPE (INIT TO NONE) .DB $FF ; CURRENT TRACK .DW 0 ; HOST TRACK .DB 0 ; HOST SECTOR .DB 0 ; HOST HEAD + .DB FD0TYPE ; DRIVE TYPE #IF (FD_DEVCNT >= 2) ; DEVICE 1, PRIMARY SLAVE .DB 1 ; DRIVER DEVICE NUMBER .DB 0 ; DEVICE STATUS - .DB FDMEDIA ; MEDIA TYPE + .DB $FF ; CURRENT MEDIA TYPE (INIT TO NONE) .DB $FF ; CURRENT TRACK .DW 0 ; HOST TRACK .DB 0 ; HOST SECTOR .DB 0 ; HOST HEAD + .DB FD1TYPE ; DRIVE TYPE #ENDIF ; #IF ($ - FD_CFGTBL) != (FD_DEVCNT * FD_CFGSIZ) @@ -199,6 +202,42 @@ FSST_ENTSIZ .EQU $ - FSST FSST_COUNT .EQU (($ - FSST) / FSST_ENTSIZ) ; # ENTRIES IN TABLE #ENDIF ; +; FDC DRIVE TYPE MEDIA OPTIONS +; +; THIS TABLE LISTS THE TYPES OF MEDIA THAT SHOULD BE ATTEMPTED +; FOR EACH POSSIBLE DRIVE TYPE. THE ENTRIES MATCH THE ORDER OF THE +; FDT_ VALUES DEFINED IN STD.ASM +; +FD_MEDIAMAP: + .DW FDMM_NONE ; NO DRIVE TYPE + .DW FDMM_3DD + .DW FDMM_3HD + .DW FDMM_5DD + .DW FDMM_5HD + .DW FDMM_8 +; +FDMM_NONE .DB $FF +FDMM_3DD .DB FDM720, $FF +FDMM_3HD .DB FDM144, FDM720, $FF +FDMM_5DD .DB FDM360, $FF +FDMM_5HD .DB FDM120, FDM360, $FF +FDMM_8 .DB FDM111, $FF +; +; FDC DRIVE TYPE ATTRIBUTES +; +; LOOKUP TABLE TO MAP THE DEVICE ATTRIBUTES BYTE RETURNED +; BY THE FD_DEVICE FUNCTION BASED ON THE DRIVE TYPE. +; THE ENTRIES MATCH THE ORDER OF THE +; FDT_ VALUES DEFINED IN STD.ASM +; +FD_DEVATTR: + .DB %11100000 ; DRIVE TYPE NONE + .DB %11010100 ; DRIVE TYPE 3.5 DD + .DB %11011000 ; DRIVE TYPE 3.5 HD + .DB %10110100 ; DRIVE TYPE 5.25 DD + .DB %10111000 ; DRIVE TYPE 5.25 HD + .DB %10010100 ; DRIVE TYPE 8 +; ; FDC COMMANDS ; CFD_READ .EQU 00000110B ; CMD,HDS/DS,C,H,R,N,EOT,GPL,DTL --> ST0,ST1,ST2,C,H,R,N @@ -498,21 +537,11 @@ FD_DEFMED: FD_DEVICE: LD D,DIODEV_FD ; D := DEVICE TYPE LD E,(IY+FD_DEV) ; E := PHYSICAL DEVICE NUMBER -#IF (FDMEDIA == FDM720) - LD C,%11010100 ; 3.5" DS/DD -#ENDIF -#IF (FDMEDIA == FDM144) - LD C,%11011000 ; 3.5" DS/HD -#ENDIF -#IF (FDMEDIA == FDM360) - LD C,%10110100 ; 5.25" DS/DD -#ENDIF -#IF (FDMEDIA == FDM120) - LD C,%10111000 ; 5.25" DS/HD -#ENDIF -#IF (FDMEDIA == FDM111) - LD C,%10010100 ; 8" DS/DD -#ENDIF + + LD A,(IY+FD_TYPE) ; DRIVE TYPE + LD HL,FD_DEVATTR ; DEVICE ATTR TABLE + CALL ADDHLA ; POINT TO ENTRY + LD C,(HL) ; GET IT LD H,FDMODE ; H := MODE LD L,FDC_MSR ; L := BASE I/O ADDRESS XOR A ; SIGNAL SUCCESS @@ -527,9 +556,7 @@ FD_MEDIA: #IF (FDMAUTO) ; SETUP TO READ TRK 0, HD 0, SEC 0 - ;LD A,C ; C STILL HAS REQUESTED DRIVE LD A,(IY+FD_DEV) ; GET DRIVE UNIT - ;AND 0FH LD (FCD_DS),A LD A,0 LD (FCD_C),A @@ -538,53 +565,77 @@ FD_MEDIA: LD (FCD_R),A LD A,DOP_READID LD (FCD_DOP),A +#ENDIF + + + LD A,(IY+FD_TYPE) ; GET DRIVE TYPE VALUE + ;CALL PRTHEXBYTE ; *DEBUG* + LD HL,FD_MEDIAMAP ; POINT TO MEDIA MAP TABLE + ADD A,A ; TABLE IS WORD SIZED + CALL ADDHLA ; LOOKUP ENTRY + LD A,(HL) ; DEREFERENCE + INC HL + LD H,(HL) + LD L,A -#IF (FDTRACE < 3) +#IF (FDMAUTO) + #IF (FDTRACE < 3) ; SUPPRESS TRACING FOR MEDIA TESTS LD A,0 LD (FCD_TRACE),A -#ENDIF - - LD B,5 + #ENDIF + LD B,5 ; 5 ATTEMPTS FD_MEDIARETRY: - ; TRY PRIMARY MEDIA CHOICE FIRST - LD A,FDMEDIA - CALL FD_TESTMEDIA - JR Z,FD_MEDIA3 ; IF SUCCESS, WE ARE DONE - - ; TRY ALTERNATE MEDIA CHOICE - LD A,FDMEDIAALT - CALL FD_TESTMEDIA - JR Z,FD_MEDIA3 ; IF SUCCESS, WE ARE DONE - - DJNZ FD_MEDIARETRY + PUSH HL ; SAVE MEDIA MAP PTR + CALL FD_MEDIALOOP ; TRY IT + POP HL ; RECOVER MEDIA MAP PTR + JR Z,FD_MEDIA3 ; CONTINUE ON SUCCESS + DJNZ FD_MEDIARETRY ; LOOP TILL DONE +FD_MEDIARETRY1: ; NO JOY, RETURN WITH E=0 (NO MEDIA) - ;LD HL,(FDDS_MEDIAADR) - ;LD (HL),0 ; SET TO NO MEDIA - LD (IY+FD_MEDTYP),0 ; SET DRIVE = NO MEDIA - LD E,0 + LD (IY+FD_MEDTYP),$FF ; SET MEDIA TYPE TO UNDEFINED + LD E,0 ; NO MEDIA FLAG LD A,ERR_NOMEDIA ; SIGNAL ERROR OR A ; SET FLAGS RET +FD_MEDIALOOP: + LD A,(HL) ; LOAD NEXT MEDIA TYPE TO TRY + CP $FF ; END OF MEDIA TYPES TO TRY? + JR Z,FD_MEDIALOOP1 ; NO MORE TO TRY, LOOP EXIT + CALL FD_TESTMEDIA ; TRY IT + RET Z ; RETURN ON SUCCESS + INC HL ; NEXT MEDIA TYPE TO TRY + JR FD_MEDIALOOP ; LOOP +FD_MEDIALOOP1: + OR $FF ; SIGNAL FAILURE + RET ; RETURN + FD_TESTMEDIA: - ;LD HL,(FDDS_MEDIAADR) - ;LD (HL),A + ;CALL PRTHEXBYTE ; *DEBUG* LD (IY+FD_MEDTYP),A + PUSH HL PUSH BC CALL FD_START POP BC + POP HL + ;CALL PRTHEXBYTE ; *DEBUG* RET FD_MEDIA3: -#IF (FDTRACE < 3) + #IF (FDTRACE < 3) ; RESTORE TRACING FOR MEDIA TESTS LD A,FDTRACE LD (FCD_TRACE),A -#ENDIF + #ENDIF +#ELSE + + LD A,(HL) + LD (IY+FD_MEDTYP),A + #ENDIF FD_MEDIA4: @@ -778,7 +829,7 @@ FD_DETECT1: ; FD_INITUNIT: LD (IY+FD_STAT),0 ; CLEAR STATUS - LD (IY+FD_MEDTYP),FDMEDIA ; SET DEFAULT MEDIA TYPE + LD (IY+FD_MEDTYP),$FF ; SET UNKNOWN MEDIA TYPE LD (IY+FD_CURTRK),$FE ; SPECIAL VALUE FOR CURTRK RET ; @@ -1285,7 +1336,8 @@ FC_SETUPIO: LD (DE),A INC DE - LD A,(FCD_EOT) + ;LD A,(FCD_EOT) + LD A,(FCD_R) ; READ ONLY ONE SECTOR LD (DE),A INC DE @@ -1397,15 +1449,17 @@ FC_RESETFDC: ; PULSE TERMCT TO TERMINATE ANY ACTIVE EXECUTION PHASE ; FC_PULSETC: -#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC)) - IN A,(FDC_TC) -#ELSE - LD A,(FST_DOR) - SET 0,A - OUT (FDC_DOR),A - RES 0,A - OUT (FDC_DOR),A -#ENDIF +; PULSING TC NO LONGER REQUIRED BECAUSE WE ONLY READ A SINGLE SECTOR +; +;#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC)) +; IN A,(FDC_TC) +;#ELSE +; LD A,(FST_DOR) +; SET 0,A +; OUT (FDC_DOR),A +; RES 0,A +; OUT (FDC_DOR),A +;#ENDIF RET ; ; SET FST_DOR FOR MOTOR CONTROL ON @@ -1694,7 +1748,7 @@ FXR_TO: ; TIMEOUT ; FXR_ABORT: ; EXECUTION ABORTED HB_EI ; INTERRUPTS OK AGAIN - JR FOP_RES ; GET RSEULTS, NO NEED TO PULSE TC + JR FOP_RES ; GET RESULTS, NO NEED TO PULSE TC ; FXR_END: ; EXECUTION COMPLETED NORMALLY CALL FC_PULSETC ; PULSE TC TO END EXECUTION @@ -1828,7 +1882,9 @@ FOP_EVALST1: LD C,FRC_ENDCYL BIT 7,A - JR NZ,FOP_SETFST + ; THI IS NORMAL BECAUSE WE NOW READ ONLY A SINGLE SECTOR + ;JR NZ,FOP_SETFST + JR NZ,FOP_EXIT LD C,FRC_DATAERR BIT 5,A diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index 9f2bfcd3..aa97107a 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -92,6 +92,15 @@ FDM360 .EQU 2 ; 5.25" FLOPPY, 360KB, 2 SIDES, 40 TRKS, 9 SECTORS FDM120 .EQU 3 ; 5.25" FLOPPY, 1.2MB, 2 SIDES, 80 TRKS, 15 SECTORS FDM111 .EQU 4 ; 8" FLOPPY, 1.11MB, 2 SIDES, 74 TRKS, 15 SECTORS ; +; FLOPPY DISK TYPE +; +FDT_NONE .EQU 0 ; NONE +FDT_3DD .EQU 1 ; 3.5" FLOPPY, DOUBLE DENSITY +FDT_3HD .EQU 2 ; 3.5" FLOPPY, HIGH DENSITY +FDT_5DD .EQU 3 ; 5.25" FLOPPY, DOUBLE DENSITY +FDT_5HD .EQU 4 ; 5.25" FLOPPY, HIGH DNSITY +FDT_8 .EQU 5 ; 8" FLOPPY, DOUBLE DENSITY +; ; ZILOG CTC MODE SELECTIONS ; CTCMODE_NONE .EQU 0 ; NO CTC diff --git a/Source/ver.inc b/Source/ver.inc index eee89c35..390fc590 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.3" +#DEFINE BIOSVER "3.3.0-dev.4" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 2b6fdf93..f5a6b1f8 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.3" + db "3.3.0-dev.4" endm