mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 01:14:21 +00:00
301 lines
7.6 KiB
Plaintext
301 lines
7.6 KiB
Plaintext
|
||
|
||
|
||
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
|
||
|
||
|