Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

View File

@@ -0,0 +1,301 @@
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