mirror of https://github.com/wwarthen/RomWBW.git
10 changed files with 163 additions and 270 deletions
@ -1,173 +0,0 @@ |
|||||
; |
|
||||
;================================================================================================== |
|
||||
; 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 |
|
||||
@ -0,0 +1,72 @@ |
|||||
|
; |
||||
|
;================================================================================================== |
||||
|
; 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 |
||||
|
; |
||||
|
CKS_FD720 .EQU 32 ; CKS: DIR ENT / 4 = 128 / 4 = 32 |
||||
|
ALS_FD720 .EQU 44 ; ALS: BLKS / 8 = 351 / 8 = 44 (ROUNDED UP) |
||||
|
; |
||||
|
CKS_FD144 .EQU 64 ; CKS: DIR ENT / 4 = 256 / 4 = 64 |
||||
|
ALS_FD144 .EQU 89 ; ALS: BLKS / 8 = 711 / 8 = 89 (ROUNDED UP) |
||||
|
; |
||||
|
CKS_FD360 .EQU 32 ; CKS: DIR ENT / 4 = 128 / 4 = 32 |
||||
|
ALS_FD360 .EQU 89 ; ALS: BLKS / 8 = 171 / 8 = 22 (ROUNDED UP) |
||||
|
; |
||||
|
CKS_FD120 .EQU 64 ; CKS: DIR ENT / 4 = 256 / 4 = 64 |
||||
|
ALS_FD120 .EQU 74 ; ALS: BLKS / 8 = 592 / 8 = 74 (ROUNDED UP) |
||||
|
; |
||||
|
CKS_FD111 .EQU 64 ; CKS: DIR ENT / 4 = 256 / 4 = 64 |
||||
|
ALS_FD111 .EQU 69 ; ALS: BLKS / 8 = 592 / 8 = 74 (ROUNDED UP) |
||||
|
; |
||||
|
#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 |
||||
Loading…
Reference in new issue