@ -45,6 +45,7 @@
; - USE EOT=R TO END R/W AFTER ONE SECTOR INSTEAD
; OF USING PULSE TC
; 2020-01-05: V5.4 ADDED SUPPORT FOR DYNO FDC
; 2020-04-29: v5.5 ADDED SUPPORT FOR ETCHED PIXELS FDC
;
;_______________________________________________________________________________
;
@ -79,6 +80,7 @@ FDC_RCSMC .EQU 6
FDC_RCWDC .EQU 7
FDC_SMZ80 .EQU 8
FDC_DYNO .EQU 9
FDC_EPFDC .EQU 10
;
; FDC MODE
;
@ -213,7 +215,7 @@ INIT5:
XOR A
RET
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.4, 05-jAN -2020$"
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.5, 29-Apr -2020$"
STR_BANNER2 .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3" , "$"
STR_HBIOS .DB " [HBIOS]$"
STR_UBIOS .DB " [UBIOS]$"
@ -284,6 +286,7 @@ FDCTBL: ; LABEL CONFIG DATA
.DW STR_RCWDC , CFG_RCWDC
.DW STR_SMZ80 , CFG_SMZ80
.DW STR_DYNO , CFG_DYNO
.DW STR_EPFDC , CFG_EPFDC
FDCCNT .EQU ( $ - FDCTBL ) / 4 ; FD CONTROLLER COUNT
;
; FDC LABEL STRINGS
@ -298,6 +301,7 @@ STR_RCSMC .TEXT "RC-SMC$"
STR_RCWDC .TEXT "RC-WDC$"
STR_SMZ80 .TEXT "SMZ80$"
STR_DYNO .TEXT "DYNO$"
STR_EPFDC .TEXT "EPFDC$"
;
; FDC CONFIGURATION BLOCKS
;
@ -419,6 +423,17 @@ CFG_DYNO:
.DB 0FFH ; PSEUDO DMA DATA PORT
.DB _PCAT ; MODE=
;
CFG_EPFDC:
.DB 048H ; FDC MAIN STATUS REGISTER
.DB 049H ; FDC DATA PORT
.DB 0FFH ; DATA INPUT REGISTER
.DB 04AH ; DIGITAL OUTPUT REGISTER (LATCH)
.DB 04BH ; DCR
.DB 0FFH ; DACK
.DB 04CH ; TERMINAL COUNT (W/ DACK)
.DB 0FFH ; PSEUDO DMA DATA PORT
.DB _PCAT ; MODE=
;
FDCID .DB 0 ; FDC IDENTIFIER (0 INDEXED)
FDCBM .DB 0 ; FDC ID BITMAP
FDCLBL .DW 0 ; POINTER TO ACTIVE FDC LABEL STRING
@ -437,6 +452,7 @@ FSS_MENU:
.TEXT " (H) RC2014 WDC (SMB)\r\n"
.TEXT " (I) SmallZ80 Expansion\r\n"
.TEXT " (J) Dyno-Card FDC, D1030\r\n"
.TEXT " (K) RC2014 EPFDC\r\n"
.TEXT " (X) Exit\r\n"
.TEXT "=== OPTION ===> $\r\n"
;
@ -1517,6 +1533,7 @@ MD_MAP:
.DB % 00000001 ; RCWDC POLL
.DB % 00000001 ; SMZ80 POLL
.DB % 00000001 ; DYNO POLL
.DB % 00000001 ; EPFDC POLL
;
; MEDIA DESCRIPTION BLOCK
;
@ -1877,7 +1894,7 @@ FM_DRAW0B: ; ZETA, DIO3
LD A ,( FS T_DOR )
AND 00000010B
JR FM_DRAW1
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
LD A ,( FS T_DOR )
AND 11110000B
JR FM_DRAW1
@ -2030,7 +2047,7 @@ FM_MOTOR0B: ; ZETA, DIO3
LD A ,( FS T_DOR )
AND 00000010B
JR FM_MOTOR1
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
LD A ,( FS T_DOR )
AND 11110000B
JR FM_MOTOR1
@ -2769,7 +2786,7 @@ FC_INIT1: ; DIO
FC_INIT2: ; ZETA, DIO3
LD A ,( FCD_DORB )
JR FC_INIT5
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
LD A ,( FCD_DORC )
JR FC_INIT5
FC_INIT4: ; WDSMC
@ -2813,7 +2830,7 @@ FC_RESETFDC1: ; ZETA, DIO3, RCSMC
POP AF
OUT ( C ), A
JR FC_RESETFDC3
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
LD A , 0
OUT ( C ), A
LD A ,( FS T_DOR )
@ -2840,7 +2857,7 @@ FC_PULSETC:
;RES 0,A
;OUT (C),A
;JR FC_PULSETC2
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
;LD C,(IY+CFG_TC)
;IN A,(C)
;JR FC_PULSETC2
@ -2872,7 +2889,7 @@ FC_MOTORON2: ; ZETA, DIO3
LD HL , FS T_DOR ; POINT TO FDC_DOR
SET 1 ,( HL )
JR FC_MOTORON5
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD A ,( HL ) ; START WITH CURRENT DOR
AND 11111100B ; GET RID OF ANY ACTIVE DS BITS
@ -2936,7 +2953,7 @@ FC_MOTOROFF2: ; ZETA, DIO3
LD HL , FS T_DOR ; POINT TO FDC_DOR
RES 1 ,( HL )
JR FC_MOTOROFF5
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC
LD HL , FS T_DOR ; POINT TO FDC_DOR
LD A , DORC_INIT
LD ( HL ), A
@ -3806,7 +3823,7 @@ DORB_BR500 .EQU 10100000B ; 500KBPS
;
DORB_INIT .EQU DORB_BR250
;
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO ***
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO/EPFDC ***
;
DORC_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
;