diff --git a/Doc/FDU.txt b/Doc/FDU.txt index 278d6686..88fd88a3 100644 --- a/Doc/FDU.txt +++ b/Doc/FDU.txt @@ -517,4 +517,7 @@ WW 4/29/2020: v5.5 - Added support for Etched Pixels FDC WW 12/12/2020: v5.6 - - Updated SmallZ80 support for new I/O map \ No newline at end of file + - Updated SmallZ80 support for new I/O map + +WW 3/24/2021: v5.7 + - Added support for a few single-sided formats \ No newline at end of file diff --git a/Source/Apps/FDU/FDU.asm b/Source/Apps/FDU/FDU.asm index 9b7a5620..6941c682 100644 --- a/Source/Apps/FDU/FDU.asm +++ b/Source/Apps/FDU/FDU.asm @@ -47,6 +47,7 @@ ; 2020-01-05: V5.4 ADDED SUPPORT FOR DYNO FDC ; 2020-04-29: v5.5 ADDED SUPPORT FOR ETCHED PIXELS FDC ; 2020-12-12: v5.6 UPDATED SMALLZ80 TO NEW I/O ADDRESSES +; 2021-03-24: v5.7 ADDED SOME SINGLE-SIDED FORMATS ; ;_______________________________________________________________________________ ; @@ -216,8 +217,8 @@ INIT5: XOR A RET -STR_BANNER .DB "Floppy Disk Utility (FDU) v5.6, 12-Dec-2020$" -STR_BANNER2 .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3","$" +STR_BANNER .DB "Floppy Disk Utility (FDU) v5.7, 24-Mar-2021$" +STR_BANNER2 .DB "Copyright (C) 2021, Wayne Warthen, GNU GPL v3","$" STR_HBIOS .DB " [HBIOS]$" STR_UBIOS .DB " [UBIOS]$" ; @@ -483,16 +484,16 @@ MM_INFO: .DW MM_DRAW ; STR_MAINMENU: .TEXT "=======================<< FDU MAIN MENU >>======================\r\n" -; .TEXT "(S)ETUP: UNIT=XX MEDIA=XXXXXX MODE=XXXXXXXXXX TRACE=XX\r\n" +; .TEXT "(S)ETUP: UNIT=XX MEDIA=XXXXXXXXXXXXX MODE=XXXXXXXXXX TRACE=XX\r\n" .TEXT "(S)ETUP: UNIT=" MV_UNIT .TEXT "XX" .TEXT " MEDIA=" -MV_MED .TEXT "XXXXXX" - .TEXT " MODE=" -MV_MODE .TEXT "XXXXXXXXXX" - .TEXT " TRACE=" -MV_TRC .TEXT "XX" - .TEXT "\r\n" +MV_MED .TEXT "XXXXXXXXXXXXX" + .TEXT " MODE=" +MV_MODE .TEXT "XXXXXXXXXX" + .TEXT " TRACE=" +MV_TRC .TEXT "XX" + .TEXT "\r\n" .TEXT "----------------------------------------------------------------\r\n" .TEXT "(R)EAD (W)RITE (F)ORMAT (V)ERIFY\r\n" .TEXT "(I)NIT BUFFER (D)UMP BUFFER FDC (C)MDS E(X)IT\r\n" @@ -1071,21 +1072,29 @@ MMOP_RANDOM1: ; GENERATE RANDOM TRACK JP P,MMOP_RANDOM1 LD (DCD_TRACK),A - ; GENERATE RANDOM HEAD +MMOP_RANDOM2: ; GENERATE RANDOM HEAD + ;OR A + ;CALL RNDBYTE + ;AND 01H ; JUST USE LOW ORDER BIT + ;LD (DCD_HEAD),A + LD A,(MDB_NUMHD) + LD C,A CALL RNDBYTE - AND 01H ; JUST USE LOW ORDER BIT + AND 01H ; USE 1 BIT FOR UP TO 2 HEADS + CP C + JP P,MMOP_RANDOM2 LD (DCD_HEAD),A -MMOP_RANDOM2: ; GENERATE RANDOM SECTOR +MMOP_RANDOM3: ; GENERATE RANDOM SECTOR LD A,(MDB_EOT) LD C,A INC C ; ONE MORE THEN MAX SECTOR CALL RNDBYTE AND 1FH ; USE 5 BITS FOR UP TO 32 SECTORS CP C ; MAX SECTOR NUM IS 9 + 1 = 0AH - JP P,MMOP_RANDOM2 + JP P,MMOP_RANDOM3 CP 00H ; SECTOR NUM STARTS AT 1, DON'T ALLOW ZERO - JP Z,MMOP_RANDOM2 + JP Z,MMOP_RANDOM3 LD (DCD_SECTOR),A CALL DIO_RUN @@ -1601,6 +1610,10 @@ MT_PC320 .EQU 2 MT_PC360 .EQU 3 MT_PC120 .EQU 4 MT_PC111 .EQU 5 +MT_PC160 .EQU 6 +MT_PC180 .EQU 7 +MT_PC320SS .EQU 8 +MT_PC360SS .EQU 9 ; MIT: ; MEDIA INDEX TABLE .DW MDB_PC720 @@ -1609,6 +1622,10 @@ MIT: ; MEDIA INDEX TABLE .DW MDB_PC360 .DW MDB_PC120 .DW MDB_PC111 + .DW MDB_PC160 + .DW MDB_PC180 + .DW MDB_PC320SS + .DW MDB_PC360SS MIT_ENTCNT .EQU (($ - MIT) / 2) ; ; Specify Command: @@ -1660,7 +1677,7 @@ FCB_PC720 .DB 009H ; SECTOR COUNT .IF (($ - MDB_PC720) != MDB_LEN) .ECHO "*** FCB SIZE ERROR!!! ***\n" .ENDIF -DTL_PC720 .TEXT "720KB $" +DTL_PC720 .TEXT "720KB DS/DD $" DTS_PC720 .TEXT "3.5\" 720KB - 9 SECTORS, 2 SIDES, 80 TRACKS, DOUBLE DENSITY$" ; MDB_PC144 .DW DTL_PC144 ; ADDRESS OF MEDIA LABEL @@ -1683,7 +1700,7 @@ FCB_PC144 .DB 012H ; SECTOR COUNT .IF (($ - MDB_PC144) != MDB_LEN) .ECHO "*** FCB SIZE ERROR!!! ***\n" .ENDIF -DTL_PC144 .TEXT "1.44MB$" +DTL_PC144 .TEXT "1.44MB DS/HD $" DTS_PC144 .TEXT "3.5\" 1.44MB - 18 SECTORS, 2 SIDES, 80 TRACKS, HIGH DENSITY$" ; MDB_PC320 .DW DTL_PC320 ; ADDRESS OF MEDIA LABEL @@ -1706,7 +1723,7 @@ FCB_PC320 .DB 008H ; SECTOR COUNT .IF (($ - MDB_PC320) != MDB_LEN) .ECHO "*** FCB SIZE ERROR!!! ***\n" .ENDIF -DTL_PC320 .TEXT "320KB $" +DTL_PC320 .TEXT "320KB DS/DD $" DTS_PC320 .TEXT "5.25\" 320KB - 8 SECTORS, 2 SIDES, 40 TRACKS, DOUBLE DENSITY$" ; MDB_PC360 .DW DTL_PC360 ; ADDRESS OF MEDIA LABEL @@ -1729,7 +1746,7 @@ FCB_PC360 .DB 009H ; SECTOR COUNT .IF (($ - MDB_PC360) != MDB_LEN) .ECHO "*** FCB SIZE ERROR!!! ***\n" .ENDIF -DTL_PC360 .TEXT "360KB $" +DTL_PC360 .TEXT "360KB DS/DD $" DTS_PC360 .TEXT "5.25\" 360KB - 9 SECTORS, 2 SIDES, 40 TRACKS, DOUBLE DENSITY$" ; MDB_PC120 .DW DTL_PC120 ; ADDRESS OF MEDIA LABEL @@ -1752,7 +1769,7 @@ FCB_PC120 .DB 00FH ; SECTOR COUNT .IF (($ - MDB_PC120) != MDB_LEN) .ECHO "*** FCB SIZE ERROR!!! ***\n" .ENDIF -DTL_PC120 .TEXT "1.2MB $" +DTL_PC120 .TEXT "1.2MB DS/HD $" DTS_PC120 .TEXT "5.25\" 1.2MB - 15 SECTORS, 2 SIDES, 80 TRACKS, HIGH DENSITY$" ; MDB_PC111 .DW DTL_PC111 ; ADDRESS OF MEDIA LABEL @@ -1775,9 +1792,101 @@ FCB_PC111 .DB 00FH ; SECTOR COUNT .IF (($ - MDB_PC111) != MDB_LEN) .ECHO "*** FCB SIZE ERROR!!! ***\n" .ENDIF -DTL_PC111 .TEXT "1.11MB$" +DTL_PC111 .TEXT "1.11MB DS/DD $" DTS_PC111 .TEXT "8\" 1.11MB - 15 SECTORS, 2 SIDES, 77 TRACKS, DOUBLE DENSITY$" ; +MDB_PC160 .DW DTL_PC160 ; ADDRESS OF MEDIA LABEL + .DW DTS_PC160 ; ADDRESS OF MEDIA DESCRIPTION + .DB 028H ; NUMBER OF CYLINDERS + .DB 001H ; NUMBER OF HEADS + .DB 008H ; NUMBER OF SECTORS + .DB 001H ; START OF TRACK (ID OF FIRST SECTOR, USUALLY 1) +FCB_PC160 .DB 008H ; SECTOR COUNT + .DW 200H ; SECTOR SIZE IN BYTES + .DB 02AH ; GAP LENGTH (R/W) + .DB 050H ; GAP LENGTH (FORMAT) + .DB (13 << 4) | 0 ; SRT = 6ms, HUT = 512ms + .DB 4 ; HLT = 16ms + .DB DORA_BR250 ; OPERATIONS REGISTER VALUE + .DB DORB_BR250 ; OPERATIONS REGISTER VALUE + .DB DORC_BR250 ; OPERATIONS REGISTER VALUE + .DB DORD_BR250 ; OPERATIONS REGISTER VALUE + .DB DCR_BR250 ; CONTROL REGISTER VALUE + .IF (($ - MDB_PC160) != MDB_LEN) + .ECHO "*** FCB SIZE ERROR!!! ***\n" + .ENDIF +DTL_PC160 .TEXT "160KB SS/DD $" +DTS_PC160 .TEXT "5.25\" 160KB - 8 SECTORS, 1 SIDE, 40 TRACKS, DOUBLE DENSITY$" +; +MDB_PC180 .DW DTL_PC180 ; ADDRESS OF MEDIA LABEL + .DW DTS_PC180 ; ADDRESS OF MEDIA DESCRIPTION + .DB 028H ; NUMBER OF CYLINDERS + .DB 001H ; NUMBER OF HEADS + .DB 009H ; NUMBER OF SECTORS + .DB 001H ; START OF TRACK (ID OF FIRST SECTOR, USUALLY 1) +FCB_PC180 .DB 009H ; SECTOR COUNT + .DW 200H ; SECTOR SIZE IN BYTES + .DB 02AH ; GAP LENGTH (R/W) + .DB 050H ; GAP LENGTH (FORMAT) + .DB (13 << 4) | 0 ; SRT = 6ms, HUT = 512ms + .DB 4 ; HLT = 16ms + .DB DORA_BR250 ; OPERATIONS REGISTER VALUE + .DB DORB_BR250 ; OPERATIONS REGISTER VALUE + .DB DORC_BR250 ; OPERATIONS REGISTER VALUE + .DB DORD_BR250 ; OPERATIONS REGISTER VALUE + .DB DCR_BR250 ; CONTROL REGISTER VALUE + .IF (($ - MDB_PC180) != MDB_LEN) + .ECHO "*** FCB SIZE ERROR!!! ***\n" + .ENDIF +DTL_PC180 .TEXT "180KB SS/DD $" +DTS_PC180 .TEXT "5.25\" 180KB - 9 SECTORS, 1 SIDE, 40 TRACKS, DOUBLE DENSITY$" +; +MDB_PC320SS .DW DTL_PC320SS ; ADDRESS OF MEDIA LABEL + .DW DTS_PC320SS ; ADDRESS OF MEDIA DESCRIPTION + .DB 050H ; NUMBER OF CYLINDERS + .DB 001H ; NUMBER OF HEADS + .DB 008H ; NUMBER OF SECTORS + .DB 001H ; START OF TRACK (ID OF FIRST SECTOR, USUALLY 1) +FCB_PC320SS .DB 008H ; SECTOR COUNT + .DW 200H ; SECTOR SIZE IN BYTES + .DB 02AH ; GAP LENGTH (R/W) + .DB 050H ; GAP LENGTH (FORMAT) + .DB (13 << 4) | 0 ; SRT = 6ms, HUT = 512ms + .DB 4 ; HLT = 16ms + .DB DORA_BR250 ; OPERATIONS REGISTER VALUE + .DB DORB_BR250 ; OPERATIONS REGISTER VALUE + .DB DORC_BR250 ; OPERATIONS REGISTER VALUE + .DB DORD_BR250 ; OPERATIONS REGISTER VALUE + .DB DCR_BR250 ; CONTROL REGISTER VALUE + .IF (($ - MDB_PC320SS) != MDB_LEN) + .ECHO "*** FCB SIZE ERROR!!! ***\n" + .ENDIF +DTL_PC320SS .TEXT "320KB SS/DD $" +DTS_PC320SS .TEXT "5.25\" 320KB - 8 SECTORS, 1 SIDE, 80 TRACKS, DOUBLE DENSITY$" +; +MDB_PC360SS .DW DTL_PC360SS ; ADDRESS OF MEDIA LABEL + .DW DTS_PC360SS ; ADDRESS OF MEDIA DESCRIPTION + .DB 050H ; NUMBER OF CYLINDERS + .DB 001H ; NUMBER OF HEADS + .DB 009H ; NUMBER OF SECTORS + .DB 001H ; START OF TRACK (ID OF FIRST SECTOR, USUALLY 1) +FCB_PC360SS .DB 009H ; SECTOR COUNT + .DW 200H ; SECTOR SIZE IN BYTES + .DB 02AH ; GAP LENGTH (R/W) + .DB 050H ; GAP LENGTH (FORMAT) + .DB (13 << 4) | 0 ; SRT = 6ms, HUT = 512ms + .DB 4 ; HLT = 16ms + .DB DORA_BR250 ; OPERATIONS REGISTER VALUE + .DB DORB_BR250 ; OPERATIONS REGISTER VALUE + .DB DORC_BR250 ; OPERATIONS REGISTER VALUE + .DB DORD_BR250 ; OPERATIONS REGISTER VALUE + .DB DCR_BR250 ; CONTROL REGISTER VALUE + .IF (($ - MDB_PC360SS) != MDB_LEN) + .ECHO "*** FCB SIZE ERROR!!! ***\n" + .ENDIF +DTL_PC360SS .TEXT "360KB SS/DD $" +DTS_PC360SS .TEXT "5.25\" 360KB - 9 SECTORS, 1 SIDE, 80 TRACKS, DOUBLE DENSITY$" +; ;=============================================================================== ; FLOPPY DISK CONTROL MENU (DIRECT MENU INTERFACE TO FDC & RELATED HARDWARE) ;=============================================================================== diff --git a/Source/Apps/FDU/FDU.txt b/Source/Apps/FDU/FDU.txt index 278d6686..88fd88a3 100644 --- a/Source/Apps/FDU/FDU.txt +++ b/Source/Apps/FDU/FDU.txt @@ -517,4 +517,7 @@ WW 4/29/2020: v5.5 - Added support for Etched Pixels FDC WW 12/12/2020: v5.6 - - Updated SmallZ80 support for new I/O map \ No newline at end of file + - Updated SmallZ80 support for new I/O map + +WW 3/24/2021: v5.7 + - Added support for a few single-sided formats \ No newline at end of file