title 'Compupro CCP/M DPHs & DPBs' ;**************************************** ; * ; DISK PARAMTER HEADERS & BLOCKS * ; Last changed: 2/6/84 * ; * ;**************************************** include dpbs.equ dseg public dph1,dpe5,dph2,dph3,dph4,dph5 public xlts, xltd1, xltd2, xltd3 public current_reskew public re_skew_26_3, re_skew_26_2, re_skew_15_2, re_skew_8_2 public dpbs1, dpbs2, dpbd1, dpbd2, dpbd3, dpbd4, dpbd5, dpbd6 public dpbpc1 ;== floppy disk 0 dph1 dw xltd3, 0000h ; translate table dw 0000h, 0000h ; scratch area dw dpbpc1 ; disk paramater table dw 0ffffh, 0ffffh ; check, alloc vectors dw 0ffffh ; dir buf control block dw 0ffffh ; data buff cntrl block dw 0ffffh ; hash table segment ;== floppy disk 1 dph2 dw xltd3, 0000h ; translate table dw 0000h, 0000h ; scratch area dw dpbpc1 ; disk paramater table dw offset dph1_csv ; check sum vector dw 0ffffh ; alloc vectors dw 0ffffh ; dir buf control block dw 0ffffh ; data buff cntrl block dw 0ffffh ; hash table segment ; hard disk outter edge dph3 dw 0000h, 0000h ; translate table dw 0000h, 0000h ; scratch area dw dpbh1 ; disk paramater table dw 0ffffh ; check sum vector dw 0ffffh ; alloc vectors dw 0ffffh ; dir buf control block dw 0ffffh ; data buff cntrl block dw 0ffffh ; hash table segment ; hard disk middle dph4 dw 0000h, 0000h ; translate table dw 0000h, 0000h ; scratch area dw dpbh2 ; disk paramater table dw 0ffffh ; check sum vector dw 0ffffh ; alloc vectors dw 0ffffh ; dir buf control block dw 0ffffh ; data buff cntrl block dw 0ffffh ; hash table segment ; hard disk near spindle dph5 dw 0000h, 0000h ; translate table dw 0000h, 0000h ; scratch area dw dpbh3 ; disk paramater table dw 0ffffh ; check sum vector dw 0ffffh ; alloc vectors dw 0ffffh ; dir buf control block dw 0ffffh ; data buff cntrl block dw 0ffffh ; hash table segment ; mdisk dpe5 dw xlt5,0000h ;Translate Table dw 0000h,0000h ;Scratch Area dw dpb5 ;Dsk Parm Block dw offset dph2_csv ; check sum vector dw 0ffffh ; Alloc Vectors dw 0ffffh ;Dir Buff Cntrl Blk dw 0 ;Data Buff Cntrl Blk dw 0 ;Hash Table Segment dph1_csv rb 256 / 4 + 1 ; ( drm/4 ) + 2 dph2_csv rb 256 / 4 + 1 ; ( drm/4 ) + 2 eject ; THESE ARE THE SKEW TABLES ; sector translation tables (for floppy disks) xlts DB 0,6,12,18,24,4,10,16,22,2,8,14,20 ; physical skew = 6 DB 1,7,13,19,25,5,11,17,23,3,9,15,21 ; 26 sectors/track ; 128 byte sectors xltd1 db 0,9,18,1,10,19,2,11,20,3,12,21 ; physical skew = 9 db 4,13,22,5,14,23,6,15,24,7,16,25 ; 26 sectors/track db 8,17 ; 256 byte sectors xltd2 db 0,4,8,12,1,5,9,13 ; physical skew = 4 db 2,6,10,14,3,7,11 ; 15 sectors/track ; 512 byte sectors xltd3 DB 0,3,6,1,4,7,2,5 ; physical skew = 3 ; 8 sectors per track ; 1024 byte sectors ; THESE ARE THE RE-SKEW TABLES current_reskew dw 0 re_skew_26_3 db 0,3,6,9,12,15,18,21,24,1,4,7,10 db 13,16,19,22,25,2,5,8,11,14,17,20,23 re_skew_26_2 db 0,2,4,6,8,10,12,14,16,18,20,22,24 db 1,3,5,7,9,11,13,15,17,19,21,23,25 re_skew_15_2 db 0,2,4,6,8,10,12,14 db 1,3,5,7,9,11,13 re_skew_8_2 db 0,2,4,6 db 1,3,5,7 eject ; disk type definition blocks for each particular mode. dpbpc1: ; 8" single sided and density for PC_MODE DW 0ffffH ; EXTFLAG DW 2 ; NFATS DW 6 ; NFATRECS DW 495 ; NCLSTRS DW 128*4 ; CLSIZE DW 1 ; FATADD DW 26 ; SPT DB 0 ; BSH DB 0 ; BLM DB 0 ; EXM DW 1221 ; DSM --- will be 495 at run time DW 255 ; DRM --- will be 67 at run time DB 0 ; AL0 DB 0 ; AL1 DW 8040H ; CKS --- will be 801a at run time DW 0 ; OFF DB 0 ; PSH DB 0 ; PHM dpbs1: ;single density, single sided. DW 26 ;sectors per track DB 3,7,0 ;block size=1k, exm=0 DW s1dsm-1,64-1 ;dsm,drm DB 11000000b,00000000b ;2 blocks for directory DW 8010H ;64/4 cks DW 2 ;offset by 2 tracks db 0 ; physical sector shift db 0 ; physical sector mask dpbs2: ;single density, double sided. DW 26 ;sectors per track DB 4,15,1 ;block size=2k, exm=1 DW s2dsm-1,128-1 ;dsm, drm DB 11000000b,00000000b ;2 blocks for directory DW 8020H ;128/4 cks DW 2*2 ;offset by 4 tracks db 0 ; physical sector shift db 0 ; physical sector mask dpbd1: ;double density, single sided. (256 byte sectors) DW 26 ;physical sectors per track DB 4,15,0 ;block size = 2k, exm=0 (should be 1) DW d1dsm-1,128-1 ;dsm, drm DB 11000000b,00000000b ;2 blocks for directory DW 8020H ;128/4 cks DW 2 ;offset 2 tracks db 1 ; physical sector shift db 1 ; physical sector mask dpbd2: ;double density, double sided. (256 byte sectors) DW 26 ; physical sectors per track DB 4,15,0 ;2k block size, exm=0 DW d2dsm-1,256-1 ;dsm, drm DB 11110000b,00000000b ;4 directory blocks DW 8040H ;256/4 cks DW 2*2 ;offset 4 tracks db 1 ; physical sector shift db 1 ; physical sector mask dpbd3: ;double density, single sided. (512 byte sectors) DW 15 ;physical sectors per track DB 4,15,0 ;2k block size, exm=0 DW d3dsm-1,128-1 ;dsm, drm DB 11000000b,00000000b ;2 directory blocks DW 8020H ;128/4 cks DW 2 ;offset 2 tracks db 2 ; physical sector shift db 3 ; physical sector mask dpbd4: ;double density, double sided. (512-byte sectors) DW 15 ;physical sectors per track DB 4,15,0 ;2k block size, exm=0 DW d4dsm-1,256-1 ;dsm, drm DB 11110000b,00000000b ;4 directory blocks DW 8040 ;256/4 cks DW 2*2 ;offset 4 tracks db 2 ; physical sector shift db 3 ; physical sector mask dpbd5: ;double density, single sided. (1024-byte sectors) DW 8 ;physical sectors per track DB 4,15,0 ;2k block size, exm=0 DW d5dsm-1,128-1 ;dsm, drm DB 11000000b,00000000b ;2 directory blocks DW 8020H ;128/4 cks, semi-permanent DW 2 ;offset 2 tracks db 3 ; physical sector shift db 7 ; physical sector mask dpbd6: ;double density, double sided. (1024-byte sectors) DW 8 ;physical sectors per track DB 4,15,0 ;2k block size, exm=0 DW d6dsm-1,256-1 ;dsm, drm DB 11110000b,00000000b ;4 directory blocks DW 8040H ; 256/4 cks, semi-permanent DW 2*2 ;offset 4 tracks db 3 ; physical sector shift db 7 ; physical sector mask dpbh1: ; hard disk near outtter edge DW 11 ;physical sectors per track DB 5,31,1 ; 4k block size, exm=1 DW 7FDh,3FFH ;dsm, drm DB 0ffh,0ffh ; 16 directory blocks DW 8000h ; 0 cks, semi-permanent DW 8 ;offset 8 tracks db 3 ; physical sector shift db 7 ; physical sector mask dpbh2: ; hard disk near middle DW 11 ;physical sectors per track DB 5,31,1 ; 4k block size, exm=1 DW 7FDh,3FFH ;dsm, drm DB 0ffh,0ffh ; 16 directory blocks DW 8000h ; 0 cks, semi-permanent DW 2F0h ;offset 2F0h tracks db 3 ; physical sector shift db 7 ; physical sector mask dpbh3: ; hard disk near spindle DW 11 ;physical sectors per track DB 5,31,1 ; 4k block size, exm=1 DW 4E5h,3FFH ;dsm, drm DB 0ffh,0ffh ; 16 directory blocks DW 8000h ; 0 cks, semi-permanent DW 5D8h ;offset 5D8h tracks db 3 ; physical sector shift db 7 ; physical sector mask ; DISKDEF 5,0,7,,1024,127,32,0,0 ; ; 1016: 128 Byte Record Capacity ; 127: Kilobyte Drive Capacity ; 32: 32 Byte Directory Entries ; 0: Checked Directory Entries ; 128: Records / Extent ; 8: Records / Block ; 8: Sectors / Track ; 0: Reserved Tracks ; dpb5 equ offset $ ;Disk Parameter Block dw 8 ;Sectors Per Track db 3 ;Block Shift db 7 ;Block Mask db 0 ;Extnt Mask dw 126 ;Disk Size - 1 dw 31 ;Directory Max db 128 ;Alloc0 db 0 ;Alloc1 dw 0 ;Check Size dw 0 ;Offset db 0 ;Phys Sec Shift db 0 ;Phys Sec Mask xlt5 equ 0 ;No Translate Table end