You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

173 lines
5.9 KiB

;
;==================================================================================================
; FLOPPY DISK DRIVER - DATA
;==================================================================================================
;
#IF (FDMEDIA == FDM720)
#DEFINE FDDPB DPB_FD720 ; DPB_FD720 OR DPB_FD144
#DEFINE FDCKS CKS_FD720
#DEFINE FDALS ALS_FD720
#ENDIF
#IF (FDMEDIA == FDM144)
#DEFINE FDDPB DPB_FD144 ; DPB_FD720 OR DPB_FD144
#DEFINE FDCKS CKS_FD144
#DEFINE FDALS ALS_FD144
#ENDIF
#IF (FDMEDIA == FDM360)
#DEFINE FDDPB DPB_FD360 ; DPB_FD720 OR DPB_FD144
#DEFINE FDCKS CKS_FD360
#DEFINE FDALS ALS_FD360
#ENDIF
#IF (FDMEDIA == FDM120)
#DEFINE FDDPB DPB_FD120 ; DPB_FD720 OR DPB_FD144
#DEFINE FDCKS CKS_FD120
#DEFINE FDALS ALS_FD120
#ENDIF
#IF (FDMEDIA == FDM111)
#DEFINE FDDPB DPB_FD111 ; DPB_FD720 OR DPB_FD144
#DEFINE FDCKS CKS_FD111
#DEFINE FDALS ALS_FD111
#ENDIF
;
;
;
.DB DIODEV_FD + 0
FDDPH0: .DW 0000, 0000
.DW 0000, 0000
.DW DIRBF, FDDPB
.DW FDCSV0, FDALV0
.DB DIODEV_FD + 1
FDDPH1: .DW 0000, 0000
.DW 0000, 0000
.DW DIRBF, FDDPB
.DW FDCSV1, FDALV1
; .EXPORT FDDPH0, FDDPH1
;;
;; DISK PARAMETER BLOCKS USED FOR FLOPPY DRIVER
;;
;; IBM 720KB 3.5" FLOPPY DRIVE, 80 TRKS, 36 SECS/TRK, 512 BYTES/SEC
;; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 128
;;
;#IF ((FDMEDIA == FDM720) | (FDMEDIAALT == FDM720))
;DPB_FD720:
; .DW 36 ; SPT: SECTORS PER TRACK
; .DB 4 ; BSH: BLOCK SHIFT FACTOR
; .DB 15 ; BLM: BLOCK MASK
; .DB 0 ; EXM: EXTENT MASK
; .DW 350 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = ((720K - 18K OFF) / 2K BLS) - 1 = 350
; .DW 127 ; DRM: DIR ENTRIES - 1 = 128 - 1 = 127
; .DB 11000000B ; AL0: DIR BLK BIT MAP, FIRST BYTE
; .DB 00000000B ; AL1: DIR BLK BIT MAP, SECOND BYTE
; .DW 32 ; CKS: DIRECTORY CHECK VECTOR SIZE = 128 / 4
; .DW 4 ; OFF: RESERVED TRACKS = 4 TRKS * (512 B/SEC * 36 SEC/TRK) = 18K
;#ELSE
;DPB_FD720 .EQU 0
;#ENDIF
CKS_FD720 .EQU 32 ; CKS: DIR ENT / 4 = 128 / 4 = 32
ALS_FD720 .EQU 44 ; ALS: BLKS / 8 = 351 / 8 = 44 (ROUNDED UP)
; .EXPORT DPB_FD720
;#ENDIF
;;
;; IBM 1.44MB 3.5" FLOPPY DRIVE, 80 TRKS, 72 SECS/TRK, 512 BYTES/SEC
;; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 256
;;
;#IF ((FDMEDIA == FDM144) | (FDMEDIAALT == FDM144))
;DPB_FD144:
; .DW 72 ; SPT: SECTORS PER TRACK
; .DB 4 ; BSH: BLOCK SHIFT FACTOR
; .DB 15 ; BLM: BLOCK MASK
; .DB 0 ; EXM: EXTENT MASK
; .DW 710 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = ((1,440K - 18K OFF) / 2K BLS) - 1 = 710
; .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 64 ; CKS: DIRECTORY CHECK VECTOR SIZE = 256 / 4
; .DW 2 ; OFF: RESERVED TRACKS = 2 TRKS * (512 B/SEC * 72 SEC/TRK) = 18K
;#ELSE
;DPB_FD144 .EQU 0
;#ENDIF
CKS_FD144 .EQU 64 ; CKS: DIR ENT / 4 = 256 / 4 = 64
ALS_FD144 .EQU 89 ; ALS: BLKS / 8 = 711 / 8 = 89 (ROUNDED UP)
; .EXPORT DPB_FD144
;#ENDIF
;;
;; IBM 360KB 5.25" FLOPPY DRIVE, 40 TRKS, 9 SECS/TRK, 512 BYTES/SEC
;; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 128
;;
;#IF ((FDMEDIA == FDM360) | (FDMEDIAALT == FDM360))
;DPB_FD360:
; .DW 36 ; SPT: SECTORS PER TRACK
; .DB 4 ; BSH: BLOCK SHIFT FACTOR
; .DB 15 ; BLM: BLOCK MASK
; .DB 0 ; EXM: EXTENT MASK
; .DW 170 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = ((360K - 18K OFF) / 2K BLS) - 1 = 170
; .DW 127 ; DRM: DIR ENTRIES - 1 = 128 - 1 = 127
; .DB 11110000B ; AL0: DIR BLK BIT MAP, FIRST BYTE
; .DB 00000000B ; AL1: DIR BLK BIT MAP, SECOND BYTE
; .DW 32 ; CKS: DIRECTORY CHECK VECTOR SIZE = 128 / 4
; .DW 4 ; OFF: RESERVED TRACKS = 4 TRKS * (512 B/SEC * 36 SEC/TRK) = 18K
;#ELSE
;DPB_FD360 .EQU 0
;#ENDIF
CKS_FD360 .EQU 32 ; CKS: DIR ENT / 4 = 128 / 4 = 32
ALS_FD360 .EQU 89 ; ALS: BLKS / 8 = 171 / 8 = 22 (ROUNDED UP)
; .EXPORT DPB_FD360
;#ENDIF
;;
;; IBM 1.20MB 5.25" FLOPPY DRIVE, 80 TRKS, 60 SECS/TRK, 512 BYTES/SEC
;; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 256
;;
;#IF ((FDMEDIA == FDM120) | (FDMEDIAALT == FDM120))
;DPB_FD120:
; .DW 60 ; SPT: SECTORS PER TRACK
; .DB 4 ; BSH: BLOCK SHIFT FACTOR
; .DB 15 ; BLM: BLOCK MASK
; .DB 0 ; EXM: EXTENT MASK
; .DW 591 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = ((1,200K - 15K OFF) / 2K BLS) - 1 = 591
; .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 64 ; CKS: DIRECTORY CHECK VECTOR SIZE = 256 / 4
; .DW 2 ; OFF: RESERVED TRACKS = 2 TRKS * (512 B/SEC * 60 SEC/TRK) = 15K
;#ELSE
;DPB_FD120 .EQU 0
;#ENDIF
CKS_FD120 .EQU 64 ; CKS: DIR ENT / 4 = 256 / 4 = 64
ALS_FD120 .EQU 74 ; ALS: BLKS / 8 = 592 / 8 = 74 (ROUNDED UP)
; .EXPORT DPB_FD120
;#ENDIF
;;
;; IBM 1.11MB 8" FLOPPY DRIVE, 74 TRKS, 60 SECS/TRK, 512 BYTES/SEC
;; BLOCKSIZE (BLS) = 2K, DIRECTORY ENTRIES = 256
;;
;#IF ((FDMEDIA == FDM111) | (FDMEDIAALT == FDM111))
;DPB_FD111:
; .DW 60 ; SPT: SECTORS PER TRACK
; .DB 4 ; BSH: BLOCK SHIFT FACTOR
; .DB 15 ; BLM: BLOCK MASK
; .DB 0 ; EXM: EXTENT MASK
; .DW 546 ; DSM: TOTAL STORAGE IN BLOCKS - 1 BLK = ((1,110K - 15K OFF) / 2K BLS) - 1 = 546
; .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 64 ; CKS: DIRECTORY CHECK VECTOR SIZE = 256 / 4
; .DW 2 ; OFF: RESERVED TRACKS = 2 TRKS * (512 B/SEC * 60 SEC/TRK) = 15K
CKS_FD111 .EQU 64 ; CKS: DIR ENT / 4 = 256 / 4 = 64
ALS_FD111 .EQU 69 ; ALS: BLKS / 8 = 592 / 8 = 74 (ROUNDED UP)
; .EXPORT DPB_FD111
;#ENDIF
;
;
;
#IF (FDMAUTO)
; ASSUME WORST CASE SIZES
FDCSV0: .FILL CKS_FD144
FDALV0: .FILL ALS_FD144
FDCSV1: .FILL CKS_FD144
FDALV1: .FILL ALS_FD144
#ELSE
FDCSV0: .FILL FDCKS
FDALV0: .FILL FDALS
FDCSV1: .FILL FDCKS
FDALV1: .FILL FDALS
#ENDIF