Subttl CP/M+ Drive Data Structure Generator (28_Mar_84) ; ; Copyright 1984 ; Morrow Designs, Inc. ; San Leandro, Ca. ; Bill Smith, John Zalabak ; ; ; The following drive type codes are either defined or reserved: ;--------------------------------------------------------------- ; ; DSDD Floppy Disk 5.25 inch double sided double density 48 tpi drive ; DSQD " " 5.25 inch double sided double density 96 tip drive ; ; ST06 Winchester Seagate Model, ST506 (5 meg) ; SA11 " Shugart Associates, Model SA712 (11 meg) ; SQ06 " SyQuest Technology, Model 306 (6 meg) ; CM11 " Computer Memories Inc., Model 5412, (11 meg) ; CM16 " Computer Memories Inc., Model 5619, (16 meg) ; CM34 " Computer Memories Inc., Model 6640, (34 meg) ; ;---------------------------------------------------------------------- ; Define Macro (22_Mar_84) ;------------------------- ; 1) the define macro is called once for each drive. ; 2) each time it is called it generates 3 new macros which are unique ; for the logical drive, and contain the logical drive's name. ; 3) it generates macros which when used, create the MTAB, DPH, and ; DPB for the drive. ; 4) macros defined by DEFINE begin with the structure name MT, DPH, DPB, ; include the letter M, and end with the drive letter, as in DPBMA ; (the dpb for drive a). This macro will compile DPBxxxx where xxxx is ; the drive type (see below). These macros generate labels which are ; the same as the macro name without M (as in DPBA:). ; define macro dv,typ mt&m&dv macro ;Mtab Definition mt&dv: mt&typ endm dpbm&dv macro ;DPB Definition dpb&dv: dpb&typ endm dphm&dv macro ;DPH Definition dph&dv: dphgen dv endm xl&dv equ xl&typ ;Translate Table csv&dv equ csv&typ ;Checksum Vector endm page ;---------------------------------------------------------------------- ; Proto-Type DPH ;--------------- ; 1) prototype dph for all drives, do not change ; dphgen macro dv dw xl&dv ds 10,0 dw dpb&dv dw csv&dv dw -2,-2,-2,-2 db 0 endm ;---------------------------------------------------------------------- ; Table_Gen ;---------- ; table_gen macro typ drive aset 0 irpc dv,ABCDEFGHIJKLMNOP if drive lt drives drive aset drive+1 dw typ&dv else exitm endif endm endm ;---------------------------------------------------------------------- ; Struct_Gen ;----------- ; struct_gen macro typ drive aset 0 irpc dv,ABCDEFGHIJKLMNOP if drive lt drives drive aset drive+1 &typ&m&dv dv else exitm endif endm endm page ;====================================================================== ; DSDD - Floppy Disk (5.25" Double Sided - Double Density) ;========================================================= ; ; Translate Table and CheckSum Vector Definitions ;------------------------------------------------ ; xldsdd equ xlt1k ;Standard translate table csvdsdd equ -2 ;gencpm creates the checksum vector ; Mtab Definitions ;----------------- ; 1) media table for standard Morrow 5.25 inch double sided ; double density drives. ; 2) see file HD??DEF.MAC for full description of field assignments ; mtdsdä macro db 10000100b ;virtual drive, double sided, drive = 0 db 00100011b ;double density, 1024 bytes per sector db 00000000b ;reserved byte db 0 ;no park offset dw 40 ;40 cylinders db 6 /3 ;6 ms step rate db 15 /3 ;15 ms settling time db 6 /3 ;6 ms recal step rate db 0 /3 ;0 ms head load time db 500 /3 ;500 ms motor on time dw 23 ;starting track of write precomp. dw -1 ;starting track of write lo-current db 0 ;format type, odd track on alt. head endm ; Floppy Disk DPB ;---------------- ; 1) dpb for standard Morrow 5.25 inch 400k dsdd floppy ; dpbdsdd macro dw 40 ;SPT (records per track) db 4,0Fh ;BSH, BLM (2k blocks) db 1 ;EXM (2 logical extnts/physical extent) dw 195-1 ;DSM (195*2k drive capacity = 390k) dw 192-1 ;DRM (192 directory entries in: 3 Blks db 0E0h ;AL0 (2k blocks*3)/32bytes/entry ) db 000h ;AL1 dw (192/4)-1 ;CKS (Checked directory size) dw 2 ;OFF (2 system tracks) db 3,7 ;PSH, PHM (1k physical sectors) endm page ;====================================================================== ; SQ06 - Hard Disk SyQuest 306 (28_Mar_84) ;========================================= ; ; Translate Table and CheckSum Vector Definitions ;------------------------------------------------ ; xlsq06 equ 0 ;No Translate Table csvsq06 equ -2 ;Have System create the CheckSum Vector ; Mtab Definitions ;----------------- ; 1) media table (mtab) for a SyQuest 306 (5.25" 6 meg removable winchester) ; 2) see file HD??DEF.MAC for full description of field assignments ; mtsq06 macro db 00100110b ;Has_sector 0, 4 heads, drive = 2 db 01101111b ;ready_line,DD,bad_map,fast_seek,1k sectors db 00000000b ;reserved byte db 0 ;no park offset dw 306 ;306 cylinders db 0 /3 ;0 ms Step Rate (fast seek) db 3 /3 ;1 ms Settling Time db 3 /3 ;1 ms recal step rate db 0 /3 ;0 ms head load time db 0 /3 ;0 ms motor on time dw 128 ;starting track of write precomp dw 128 ;starting track of write lo-current db 0 ;format type, normal endm ; Hard Disk Mtab ;--------------- ; 1) dpb for 5.25 inch 6 meg removable media winchesters ; dpbsq06 macro dw 72 ;SPT (records per track) db 5,1Fh ;BSH, BLM (4k blocks) db 1 ;EXM (2 logical_ext/physical_ext) dw (((612-8)/4) * 9) - 1 ;DSM (1 less than total # of 4k blocks) dw 16*4*32-1 ;DRM 16 groups * 4k/group * 32 dirs/k db 0FFh ;AL0 (16 groups for directory (max)) db 0FFh ;Al1 dw 8000h ;CKS (drive is permanent) dw 8 ;OFF (8 tracks (2 cyl) 1_Sys, 7_BadMap db 3,7 ;PSH, PHM (1k physical sectors) endm page ;====================================================================== ; CM11 - Hard Disk CMI 5412 (28_Mar_84) ;====================================== ; ; Translate Table and CheckSum Vector Definitions ;------------------------------------------------ ; xlcm11 equ 0 ;No Translate Table csvcm11 equ 0 ;No CheckSum Vector ; Mtab Definitions ;----------------- ; 1) media table (mtab) for a CMI_5412 (5.25" 11 meg winchester) ; 2) see file HD??DEF.MAC for full description of field assignments ; mtcm11 macro db 00101110b ;Has_sector 0, 4 heads, drive = 2 db 01101111b ;ready_line,DD,bad_map,fast_seek,1k sectors db 00000000b ;reserved byte db 0 ;no park offset dw 306 ;306 cylinders db 0 /3 ;0 ms Step Rate (fast seek) db 3 /3 ;1 ms Settling Time db 3 /3 ;1 ms recal step rate db 0 /3 ;0 ms head load time db 0 /3 ;0 ms motor on time dw 128 ;starting track of write precomp dw 128 ;starting track of write lo-current db 0 ;format type, normal endm ; Hard Disk Mtab ;--------------- ; 1) dpb for 5.25 inch 11 meg winchesters ; dpbcm11 macro dw 72 ;SPT (records per track) db 5,1Fh ;BSH, BLM (4k blocks) db 1 ;EXM (2 logical_ext/physical_ext) dw (306-2)*36/4-1 ;DSM (306_cyl-2_res * 36sct/cyl /4sct/grp -1) dw 16*4*32-1 ;DRM 16 groups * 4k/group * 32 dirs/k db 0FFh ;AL0 (16 groups for directory (max)) db 0FFh ;Al1 dw 8000h ;CKS (drive is permanent) dw 8 ;OFF (8 tracks (2 cyl) 1_Sys, 7_BadMap db 3,7 ;PSH, PHM (1k physical sectors) endm page ;====================================================================== ; CM16 - Hard Disk CMI 5619 (22_Mar_84) ;====================================== ; ; Translate Table and CheckSum Vector Definitions ;------------------------------------------------ ; xlcm16 equ 0 ;No Translate Table csvcm16 equ 0 ;No CheckSum Vector ; Mtab Definitions ;----------------- ; 1) media table (mtab) for CMI_5619 (5.25" 16 meg winchester) ; 2) see file HD??DEF.MAC for full description of field assignments ; mtcm16 macro db 00110110b ;Has_Sector_0, 6 heads, drive = 2 db 01101111b ;ready line,DD,badMap,fast seek,1k sect db 00000000b ;reserved byte db 0 ;no park offset dw 306 ;306 cylinders db 0 /3 ;0 ms Settling Time (fast seek) db 3 /3 ;1 ms Step Rate (Fast Seek) db 3 /3 ;1 ms recal step rate db 0 /3 ;0 ms head load time db 0 /3 ;0 ms motor on time dw 128 ;starting track of write precomp dw 128 ;starting track of write lo-current db 0 ;format type, normal endm ; Hard Disk Mtab ;--------------- ; 1) dpb for standard Morrow 5.25 inch 16 meg winchesters ; 2) Note that the DSM figure is equal to: ( ( (Total Number of Tracks - ; Reserved Track) / Allocation Block size) * Physical Sectors/Track)-1 ; 3) Make sure that the total number of tracks is evenly divisable by 4! ; dpbcm16 macro dw 72 ;SPT (records per track) db 5,1Fh ;BSH, BLM (4k blocks) db 1 ;EXM (2 logical extents/physical extnt) dw (((1836-8)/4) * 9) - 1 ;DSM (1 less than total # of 4k blocks) dw 16*4*32-1 ;DRM (16_groups*4k/group*32dirs/k=2048) db 0FFh ;AL0 (reserve 16 groups for directory) db 0FFh ;AL1 dw 8000h ;CKS (drive is permanent) dw 8 ;OFF (8 tracks (2 cyl) 1_Sys, 7_BadMap db 3,7 ;PSH, PHM (1k physical sectors) endm page ;====================================================================== ; CM32 - Hard Disk CMI 6640 (28_Mar_84) ;====================================== ; ; Translate Table and CheckSum Vector Definitions ;------------------------------------------------ ; xlcm32 equ 0 ;No Translate Table csvcm32 equ 0 ;No CheckSum Vector ; Mtab Definitions ;----------------- ; 1) media table (mtab) for a CMI_6640 (5.25" 32 meg winchester) ; 2) see file HD??DEF.MAC for full description of field assignments ; mtcm32 macro db 00110110b ;Has_Sector_0, 6 heads, drive = 2 db 01101111b ;ready line,DD,BadMap,fast seek,1k sect db 00000000b ;reserved byte db 0 ;no park offset dw 640 ;640 cylinders db 0 ;0 ms Settling Time db 3 /3 ;1 ms Step Rate db 3 /3 ;1 ms recal step rate db 0 ;0 ms head load time db 0 ;0 ms motor on time dw 0FFFFh ;starting track of write precomp dw 0FFFFh ;starting track of write lo-current db 0 ;format type, normal endm ; Hard Disk Mtab ;--------------- ; 1) Note that the DSM figure is equal to: ( ( (Total Number of Tracks - ; Reserved Track) / Allocation Block size) * Physical Sectors/Track)-1 ; 2) Make sure that the total number of tracks is evenly divisable by 4! ; dpbcm32 macro dw 72 ;SPT (records per track) db 5,1Fh ;BSH, BLM (4k blocks) db 1 ;EXM (2 logical extents/physical extnt) dw (((3840-8)/4) * 9) - 1 ;DSM (1 less than total # of 4k blocks) dw 16*4*32-1 ;DRM (16_groups*4k/group*32dirs/k=2048) db 0FFh ;AL0 (reserve 16 groups for directory) db 0FFh ;AL1 dw 8000h ;CKS (drive is permanent) dw 8 ;OFF (8 tracks (2 cyl) 1_Sys, 7_BadMap db 3,7 ;PSH, PHM (1k physical sectors) endm page