mirror of https://github.com/wwarthen/RomWBW.git
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
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
|
|
|