@ -48,7 +48,8 @@
; 2020-04-29: v5.5 ADDED SUPPORT FOR ETCHED PIXELS FDC
; 2020-04-29: v5.5 ADDED SUPPORT FOR ETCHED PIXELS FDC
; 2020-12-12: v5.6 UPDATED SMALLZ80 TO NEW I/O ADDRESSES
; 2020-12-12: v5.6 UPDATED SMALLZ80 TO NEW I/O ADDRESSES
; 2021-03-24: v5.7 ADDED SOME SINGLE-SIDED FORMATS
; 2021-03-24: v5.7 ADDED SOME SINGLE-SIDED FORMATS
; 2021-07-26: v5.8 ADDED SUPPORT MBC FDC
; 2021-07-26: v5.8 ADDED SUPPORT FOR NHYODYNE (MBC) FDC
; 2023-12-10: v5.9 ADDED SUPPORT FOR DUODYNE (DUO) FDC
;
;
;_______________________________________________________________________________
;_______________________________________________________________________________
;
;
@ -85,6 +86,7 @@ FDC_SMZ80 .EQU 8
FDC_DYNO .EQU 9
FDC_DYNO .EQU 9
FDC_EPFDC .EQU 10
FDC_EPFDC .EQU 10
FDC_MBC .EQU 11
FDC_MBC .EQU 11
FDC_DUO .EQU 12
;
;
; FDC MODE
; FDC MODE
;
;
@ -219,8 +221,8 @@ INIT5:
XOR A
XOR A
RET
RET
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.8, 26-Jul-2021 $"
STR_BANNER2 .DB "Copyright (C) 2021 , Wayne Warthen, GNU GPL v3" , "$"
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.9, 10-Dec-2023 $"
STR_BANNER2 .DB "Copyright (C) 2023 , Wayne Warthen, GNU GPL v3" , "$"
STR_HBIOS .DB " [HBIOS]$"
STR_HBIOS .DB " [HBIOS]$"
STR_UBIOS .DB " [UBIOS]$"
STR_UBIOS .DB " [UBIOS]$"
;
;
@ -292,6 +294,7 @@ FDCTBL: ; LABEL CONFIG DATA
.DW STR_DYNO , CFG_DYNO
.DW STR_DYNO , CFG_DYNO
.DW STR_EPFDC , CFG_EPFDC
.DW STR_EPFDC , CFG_EPFDC
.DW STR_MBC , CFG_MBC
.DW STR_MBC , CFG_MBC
.DW STR_DUO , CFG_DUO
FDCCNT .EQU ( $ - FDCTBL ) / 4 ; FD CONTROLLER COUNT
FDCCNT .EQU ( $ - FDCTBL ) / 4 ; FD CONTROLLER COUNT
;
;
; FDC LABEL STRINGS
; FDC LABEL STRINGS
@ -307,7 +310,8 @@ STR_RCWDC .TEXT "RC-WDC$"
STR_SMZ80 .TEXT "SMZ80$"
STR_SMZ80 .TEXT "SMZ80$"
STR_DYNO .TEXT "DYNO$"
STR_DYNO .TEXT "DYNO$"
STR_EPFDC .TEXT "EPFDC$"
STR_EPFDC .TEXT "EPFDC$"
STR_MBC .TEXT "MBC$"
STR_MBC .TEXT "NHYODYNE$"
STR_DUO .TEXT "DUODYNE$"
;
;
; FDC CONFIGURATION BLOCKS
; FDC CONFIGURATION BLOCKS
;
;
@ -448,7 +452,18 @@ CFG_MBC:
.DB 035H ; CONFIGURATION CONTROL REGISTER
.DB 035H ; CONFIGURATION CONTROL REGISTER
.DB 036H ; DACK (WHEN READ)
.DB 036H ; DACK (WHEN READ)
.DB 037H ; TERMINAL COUNT (W/ DACK)
.DB 037H ; TERMINAL COUNT (W/ DACK)
.DB 0FFH ; NOT USED BY ZETA SBC V2
.DB 0FFH ; NOT USED
.DB _PCAT ; MODE=
;
CFG_DUO:
.DB 080H ; FDC MAIN STATUS REGISTER
.DB 081H ; FDC DATA PORT
.DB 0FFH ; DATA INPUT REGISTER
.DB 086H ; DIGITAL OUTPUT REGISTER (WHEN WRITTEN)
.DB 085H ; CONFIGURATION CONTROL REGISTER
.DB 086H ; DACK (WHEN READ)
.DB 087H ; TERMINAL COUNT (W/ DACK)
.DB 0FFH ; NOT USED
.DB _PCAT ; MODE=
.DB _PCAT ; MODE=
;
;
FDCID .DB 0 ; FDC IDENTIFIER (0 INDEXED)
FDCID .DB 0 ; FDC IDENTIFIER (0 INDEXED)
@ -470,7 +485,8 @@ FSS_MENU:
.TEXT " (I) SmallZ80 Expansion\r\n"
.TEXT " (I) SmallZ80 Expansion\r\n"
.TEXT " (J) Dyno-Card FDC, D1030\r\n"
.TEXT " (J) Dyno-Card FDC, D1030\r\n"
.TEXT " (K) RCBus EPFDC\r\n"
.TEXT " (K) RCBus EPFDC\r\n"
.TEXT " (L) Multi-Board Computer FDC\r\n"
.TEXT " (L) Nhyodyne FDC\r\n"
.TEXT " (M) Duodyne FDC\r\n"
.TEXT " (X) Exit\r\n"
.TEXT " (X) Exit\r\n"
.TEXT "=== OPTION ===> $\r\n"
.TEXT "=== OPTION ===> $\r\n"
;
;
@ -1561,6 +1577,7 @@ MD_MAP:
.DB % 00000001 ; DYNO POLL
.DB % 00000001 ; DYNO POLL
.DB % 00000001 ; EPFDC POLL
.DB % 00000001 ; EPFDC POLL
.DB % 00000001 ; MBC POLL
.DB % 00000001 ; MBC POLL
.DB % 00000001 ; DUO POLL
;
;
; MEDIA DESCRIPTION BLOCK
; MEDIA DESCRIPTION BLOCK
;
;
@ -2021,7 +2038,7 @@ FM_DRAW0B: ; ZETA, DIO3
LD A ,( FS T_DOR )
LD A ,( FS T_DOR )
AND 00000010B
AND 00000010B
JR FM_DRAW1
JR FM_DRAW1
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A ,( FS T_DOR )
LD A ,( FS T_DOR )
AND 11110000B
AND 11110000B
JR FM_DRAW1
JR FM_DRAW1
@ -2174,7 +2191,7 @@ FM_MOTOR0B: ; ZETA, DIO3
LD A ,( FS T_DOR )
LD A ,( FS T_DOR )
AND 00000010B
AND 00000010B
JR FM_MOTOR1
JR FM_MOTOR1
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A ,( FS T_DOR )
LD A ,( FS T_DOR )
AND 11110000B
AND 11110000B
JR FM_MOTOR1
JR FM_MOTOR1
@ -2913,7 +2930,7 @@ FC_INIT1: ; DIO
FC_INIT2: ; ZETA, DIO3
FC_INIT2: ; ZETA, DIO3
LD A ,( FCD_DORB )
LD A ,( FCD_DORB )
JR FC_INIT5
JR FC_INIT5
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A ,( FCD_DORC )
LD A ,( FCD_DORC )
JR FC_INIT5
JR FC_INIT5
FC_INIT4: ; WDSMC
FC_INIT4: ; WDSMC
@ -2957,7 +2974,7 @@ FC_RESETFDC1: ; ZETA, DIO3, RCSMC
POP AF
POP AF
OUT ( C ), A
OUT ( C ), A
JR FC_RESETFDC3
JR FC_RESETFDC3
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A , 0
LD A , 0
OUT ( C ), A
OUT ( C ), A
LD A ,( FS T_DOR )
LD A ,( FS T_DOR )
@ -2984,7 +3001,7 @@ FC_PULSETC:
;RES 0,A
;RES 0,A
;OUT (C),A
;OUT (C),A
;JR FC_PULSETC2
;JR FC_PULSETC2
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
;LD C,(IY+CFG_TC)
;LD C,(IY+CFG_TC)
;IN A,(C)
;IN A,(C)
;JR FC_PULSETC2
;JR FC_PULSETC2
@ -3016,7 +3033,7 @@ FC_MOTORON2: ; ZETA, DIO3
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD HL , FS T_DOR ; POINT TO FDC_DOR
SET 1 ,( HL )
SET 1 ,( HL )
JR FC_MOTORON5
JR FC_MOTORON5
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD A ,( HL ) ; START WITH CURRENT DOR
LD A ,( HL ) ; START WITH CURRENT DOR
AND 11111100B ; GET RID OF ANY ACTIVE DS BITS
AND 11111100B ; GET RID OF ANY ACTIVE DS BITS
@ -3080,7 +3097,7 @@ FC_MOTOROFF2: ; ZETA, DIO3
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD HL , FS T_DOR ; POINT TO FDC_DOR
RES 1 ,( HL )
RES 1 ,( HL )
JR FC_MOTOROFF5
JR FC_MOTOROFF5
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD A , DORC_INIT
LD A , DORC_INIT
LD ( HL ), A
LD ( HL ), A
@ -3950,7 +3967,7 @@ DORB_BR500 .EQU 10100000B ; 500KBPS
;
;
DORB_INIT .EQU DORB_BR250
DORB_INIT .EQU DORB_BR250
;
;
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO/EPFDC/MBC ***
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO/EPFDC/MBC/DUO ***
;
;
DORC_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
DORC_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
;
;