;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ .Title 'MDST24.Z80 / XL-M180 Floppy Drive Spec Tables / 27jan88' .Sbttl '(C) Copyright 1988 By W. Brimhall / Znode 52 (602)996-8739' ;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ;Revisions: ;27jan88 - Revised for ZAS 3.0 and renamed to MDST24.Z80. ;30jul87 - Re-defined type code bit 4 to specify hi-dens 96tpi formats, ; placed all 96tpi dst's in same table. Corrected tracks entry ; on ICM5HD dst and renamed to MDST24. ;25apr87 - Added DST table for 5.25" high density drives & renamed ; to MDST23. (Must use MFD23 or later floppy driver). ;09apr87 - Added ICM82 8" DSDD 512 sector with one reserved track and ; renamed to MDST22. ;20Jan87 - Placed dsttbl at start of this module and renamed to MDST21. ;27nov86 - Added access mode, base sector number & head id bytes to each ; DST for support of several additional formats. Combined with ; ZDST8F and Added Kpro4, Kpro96 and Ampro DST's. Made cylinder/ ; track entries 1 based for Turbodos. Renamed to MDST20.MAC for use ; with MFD20.MAC floppy driver in both Turbodos and Zsystem. ;01Sep86 - Made BLKS 1 based to match the Tdos DST standard. (Also had ; to modify ZDM2.MAC.) Renamed to ZD5F2. ;12Jul86 - Added comments to kpro2 dst. ;06Jul86 - Released as ZDST5F. name MDST24 ; Module id ;DST size codes (2^n*128): s128 equ 0 ;128 s256 equ 1 ;256 s512 equ 2 ;512 s1024 equ 3 ;1024 s2048 equ 4 ;2048 s4096 equ 5 ;4096 ;These bits in the DST TYPE CODE byte are set true to ;specify the following parameters: tsd equ 1 shl 2 ; 1= Two-sided mfm equ 1 shl 3 ; 1= mfm hd equ 1 shl 4 ; l= Hi density tpi96 equ 1 shl 5 ; 1= 96tpi (not used) ibm equ 1 shl 7 ; 1= IBM pc 9 sector (not used) ;This bit in the block size byte is set true to ;specify the following parameter: fixed equ 1 shl 7 ; fixed media bit (block size) ;These mode bytes specify how data is accessed on the diskette: s0mod equ 0 ;side0 mode= use side 0 only s1mod equ 1 ;side1 mode= use side 1 only cylmod equ 2 ;cylinder mode= second half of sectors are on side1 trkmod equ 3 ;track mode= odd tracks are on side1 ;The following DST value definitions differ depending on wheter the ;format is accessed in cylinder or track mode. ; ; CYLMOD: ; Dst+7= 1 based Sectors per cylinder (both sides of the disk) ; Dst+9= 1 based Cylinders (tracks on 1 side of disk) ; ; TRKMOD: ; Dst+7= 1 based Sectors per track (one side of the disk) ; Dst+9= 1 based Tracks (tracks on both sides of disk) ; Dst+9 is the only value that is 0 based, all others are 1 based. ;The head id byte specifies the value that was written to the head ;field in the sector id header when the diskette was formatted. ;All DST entries are 1 based except for the sector translation ;tables which must use 0 based values. ;-------------------- ; DST pointer table. ;-------------------- ;The DSKAST table defines the physical disk assignments for the system. A ;floppy drive must have an entry in the table before it can be accessed. ;Each entry has a channel byte. For a floppy drive the high nibble defines ;the DST table (0-7) and the low nibble defines the Unit number (0-3). ;When a disk is logged in, the system compares the ID info read off the disk ;to the Type code, base sector numbers and head id bytes in each DST within ;the table assigned to the drive. The first DST that matches is then selected. ;Only uniquely detectable formats can be placed into the same DST table. DSTs ;that only differ by number of cylinders or number of reserved tracks must ;be placed into a seperate DST table. These formats must then be accessed as ;a different physical drive. The low nibble of the channel byte will select ;the same unit number, but the high nibble will select a different DST table. ;The enty point for each DST table must be placed in the following pointer ;table. The high nibble of the Floppy channel byte uses these pointers to ;select which DST table (0-7) to use. (Drives with the same physical ;parameters can share the same DST table.) dsttbl:: dw dstbla ; Dst 0= 5.25" 48 tpi dw dstblb ; Dst 1= 5.25" 96 tpi dw dstblc ; Dst 2= 8" dw 0,0,0,0,0 ; Dst 3 thru 7 undefined ;------------------------------------------ dstbla:: ;DST table for 5.25" 48tpi floppy ;------------------------------------------ ; + + + + kpro2 + + + + ;Kaypro 2, 512 byte sector, SS, DD, 48tpi type defl mfm or s512 kpro2:: dw kpro4 ; Pointer to next DST in table db s1024 ; Media type / block size code dw 195 ; Number of blocks (1 based) db 2 ; Number of directory blocks db s512 ; Phy sector size code dw 10 ; Phy sectors per cylinder dw 40 ; Cylinders dw 1 ; Reserved tracks dw 0 ; Translation table address db type ; Disk type code db 1bh ; Gap length db s0mod ; access side0 only db 0,0 ; side0 base sector & head id ; + + + + kpro4 + + + + ;Kaypro 4, 512 byte sector, DS, DD, 48tpi type defl mfm or tsd or s512 kpro4:: dw td482 ; Pointer to next DST in table db s2048 ; Media type / block size code dw 197 ; Number of blocks (1 based) db 2 ; Number of directory blocks db s512 ; Phy sector size code dw 10 ; Phy sectors per track dw 80 ; Tracks dw 1 ; Reserved tracks dw 0 ; Translation table address db type ; Disk type code db 1bh ; Gap length db trkmod ; odd tracks on side1 db 0,0 ; side0 base sector & head id db 10,0 ; side1 base sector & head id ; + + + + td482 + + + + ;Turbodos, 1024 byte sector, DS, DD, 48tpi type defl mfm or tsd or s1024 td482:: dw td481 ; Disk spec table link pointer db s2048 ; Media / block size code dw 200 ; Number of blocks (1 based) db 2 ; Number of directory blocks db s1024 ; Physical sector size code dw 10 ; Physical sectors per cylinder dw 40 ; Cylinders dw 0 ; Number of reserved cylinders dw 0 ; Translation table address db type ; Disk type code db 35h ; Gap length db cylmod ; 2nd half of sectors on side1 db 1,0 ; side0 base sector & head id db 1,1 ; side1 base sector & head id ; + + + + td481 + + + + ;Turbodos, 1024 byte sector, SS, DD, 48tpi type defl mfm or s1024 td481:: dw amp48 ; Disk spec table link pointer db s1024 ; Media type / Block size code dw 200 ; Number of blocks (1 based) db 2 ; Number of directory blocks db s1024 ; Physical sector size code dw 5 ; Physical sectors per cylinder dw 40 ; Cylinders dw 0 ; Reserved cylinders dw 0 ; Translation table address db type ; Disk type code db 35h ; Gap length db s0mod ; access side0 only db 1,0 ; side0 base sector & head id ; + + + + amp48 + + + + ;Ampro (MicroMint SB180), 512 byte sector, DS, DD, 48tpi type defl mfm or tsd or s512 amp48:: dw 0 ; Disk spec table link pointer db s2048 ; Media type / Block size code dw 195 ; Number of blocks (1 based) db 2 ; Number of directory blocks db s512 ; Physical sector size code dw 10 ; Physical sectors per track dw 80 ; Tracks dw 2 ; Reserved tracks dw 0 ; Translation table address db type ; Disk type code db 1bh ; Gap length db trkmod ; odd tracks on side1 db 17,0 ; side0 base sector & head id db 17,1 ; side1 base sector & head id ;------------------------------------------ dstblb:: ;DST table for 5.25" 96tpi floppy ;------------------------------------------ ; + + + + td962 + + + + ;Turbodos, 1024 byte sector, DS, DD, 96tpi type defl mfm or tsd or s1024 td962:: dw td961 ; Link pointer to next dst db s2048 ; Media type / block size code dw 400 ; Number of blocks (1 based) db 4 ; Number of directory blocks db s1024 ; Physical sector size code dw 10 ; Physical sectors per cylinder dw 80 ; Cylinders dw 0 ; Reserved cylinders dw 0 ; Xlate table ptr db type ; Disk type code db 35h ; Gap db cylmod ; 2nd half of sectors on side1 db 1,0 ; side0 base sector & head id db 1,1 ; side1 base sector & head id ; + + + + td961 + + + + ;Turbodos, 1024 byte sector, SS, DD, 96tpi type defl mfm or s1024 td961:: dw amp96 ; Link pointer to next dst db s2048 ; Media type / blk size code dw 200 ; Number of blocks (1 based) db 2 ; Number of directory blocks db s1024 ; Phy sect size code dw 5 ; Phy sectors per cylinder dw 80 ; Cylinders dw 0 ; Reserved cylinders dw 0 ; Xlate table ptr db type ; Disk type code db 35h ; Gap db s0mod ; access side0 only db 1,0 ; side0 base sector & head id ; + + + + amp96 + + + + ;Ampro (Micromint SB180), 1024 byte sector, SS, DD, 96tpi type defl mfm or tsd or s1024 amp96:: dw kp96 ; Link pointer to next dst db s2048 ; Media type / block size code dw 395 ; Number of blocks (1 based) db 4 ; Number of directory blocks db s1024 ; Physical sector size code dw 5 ; Physical sectors per track dw 160 ; Tracks dw 2 ; Reserved tracks dw 0 ; Xlate table ptr db type ; Disk type code db 35h ; Gap db trkmod ; odd tracks on side1 db 17,0 ; side0 base sector & head id db 17,1 ; side1 base sector & head id ; + + + + kpro96 + + + + ;Kaypro, 512 byte sector, DS, DD, 96tpi type defl mfm or tsd or s512 kp96:: dw td5hd ; Pointer to next DST in table db s4096 ; Media type / block size code dw 197 ; Number of blocks (1 based) db 1 ; Number of directory blocks db s512 ; Phy sector size code dw 10 ; Phy sectors per track dw 160 ; Tracks dw 2 ; Reserved tracks dw 0 ; Translation table address db type ; Disk type code db 1bh ; Gap length db trkmod ; odd tracks on side1 db 0,0 ; side0 base sector & head id db 20,0 ; side1 base sector & head id ; + + + + td5hd + + + + ;Turbodos high density two sided format with no reserved tracks, ;1024 byte sector, double-density. (1.28meg) ;(This is identical to the TDOS82 format below except ;it has 3 more cylinders.) type defl hd or mfm or tsd or s1024 td5hd:: dw icm5hd ; Disk spec table link pointer db s2048 ; Media type / Block size code dw 640 ; Total blocks (1 based) db 4 ; Number of directory blocks db s1024 ; Physical sector size code dw 16 ; Physical sectors per cylinder dw 80 ; Cylinders dw 0 ; Reserved cylinders dw 0 ; Translation table address db type ; Disk type code db 35h ; Gap length db cylmod ; cylinder access mode db 1,0 ; side0 base sector & head id db 1,1 ; side1 base sector & head id ; + + + + icm5hd + + + + ;Intercontiential Micro Systems high density 2 sided format, ;1 reserved track, 512 byte sector, double-density. ;(This identical to the ICM82 8" format below.) type defl hd or mfm or tsd or s512 icm5hd:: dw 0 ; Disk spec table link pointer db s4096 ; Media type / Block size dw 308 ; Total blocks (1 based) db 2 ; Number of directory blocks db s512 ; Physical sector size (2^n*128) dw 16 ; Physical sectors per track dw 160 ; Physical tracks per disk dw 2 ; Reserved tracks dw 0 ; Translation table address db type ; Disk type code db 1bh ; Gap length db trkmod ; Odd tracks on side 1 db 1,0 ; Side0 base sector & head id db 1,1 ; Side1 base sector & head id ;------------------------------------------ dstblc:: ;table entry point for 8" floppys ;------------------------------------------ ; + + + + tdos82 + + + + ;Turbodos two sided format with no reserved tracks, ;1024 byte sector, double-density. (1.232meg) type defl mfm or tsd or s1024 tdos82::dw tdos81 ; Disk spec table link pointer db s2048 ; Media type / Block size code dw 616 ; Total blocks (1 based) db 4 ; Number of directory blocks db s1024 ; Physical sector size code dw 16 ; Physical sectors per cylinder dw 77 ; Cylinders dw 0 ; Reserved cylinders dw 0 ; Translation table address db type ; Disk type code db 35h ; Gap length db cylmod ; cylinder access mode db 1,0 ; side0 base sector & head id db 1,1 ; side1 base sector & head id ; + + + + tdos81 + + + + ;Turbodos one sided format with no reserved tracks, ;1024 byte sector, double-density. type defl mfm or s1024 tdos81::dw icm82 ; Disk spec table link pointer db s2048 ; Media type / Block size code dw 308 ; Total blocks (1 based) db 3 ; Number of directory blocks db s1024 ; Physical sector size code dw 8 ; Physical sectors per cylinder dw 77 ; Cylinders dw 0 ; Reserved cylinders dw 0 ; Translation table address db type ; Disk type code db 35h ; Gap length db s0mod ; Use side0 only db 1,0 ; side0 base sector & head id ; + + + + icm82 + + + + ;Intercontiential Micro Systems 2 sided format, ;1 reserved track, 512 byte sector, double-density. type defl mfm or tsd or s512 icm82:: dw ibm81 ; Disk spec table link pointer db s4096 ; Media type / Block size dw 308 ; Total blocks (1 based) db 2 ; Number of directory blocks db s512 ; Physical sector size (2^n*128) dw 16 ; Physical sectors per track dw 154 ; Physical tracks per disk dw 2 ; Reserved tracks dw 0 ; Translation table address db type ; Disk type code db 1bh ; Gap length db trkmod ; Odd tracks on side 1 db 1,0 ; Side0 base sector & head id db 1,1 ; Side1 base sector & head id ; + + + + ibm81 + + + + ;IBM Industry standard single-sided, single-density, ;128 byte sector, 2 reserved tracks. type defl s128 ibm81:: dw 0 ; Disk spec table link pointer db s1024 ; Media type / Block size code dw 243 ; Total blocks (1 based) db 2 ; Number of directory blocks db s128 ; Physical sector size code dw 26 ; Physical sectors per cylinder dw 77 ; Cylinders dw 2 ; Reserved cylinders dw ibmxlt ; Translation table address db type ; Disk type code db 7 ; Gap length db s0mod ; use side0 only db 1,0 ; side0 base sector & head id ; single-density/single-sided sector translation table ; (Base sector is added to each value so they must be 0 based) ibmxlt: db 0,6,12,18,24,4,10,16,22 db 2,8,14,20,1,7,13,19,25 db 5,11,17,23,3,9,15,21 end