Files
Digital-Research-Source-Code/CPM OPERATING SYSTEMS/CPM 86/CONCURRENT/CCPM-86 3.1 SOURCE/D5/DPBS.A86
Sepp J Morris 31738079c4 Upload
Digital Research
2020-11-06 18:50:37 +01:00

301 lines
7.6 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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