home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CP/M
/
CPM_CDROM.iso
/
kaypro
/
kay-disk.inf
< prev
next >
Wrap
Text File
|
1994-07-13
|
7KB
|
222 lines
This file was put together to help folks understand and use the Kaypro
floppy disk formats. John Shotsky. 2-20-88
There is no source code included for obvious reasons, however, with this
information, one could write programs that need to know this stuff.
;Disk Equates and Parameters
bitport equ 01CH ; bit port (m80 does not support extrn bytes)
drvmask equ 0FCH ; drive select mask
denmask equ 0DFH ; density bit mask
ddbit equ 00H ; double density bit
sdbit equ 20H ; single density bit
control equ 10H ; I/O port of disk controller
status equ control+0 ; status register
cmnd equ control+0 ; command register
track equ control+1 ; track register
sector equ control+2 ; sector register
data equ control+3 ; data register
ficmd equ 11010000B ; force interrupt (Abort current command)
rdcmd equ 10000000B ; read command
wrtcmd equ 10100000B ; write command
seekcmd equ 00010000B ; seek command
rstcmd equ 00000000B ; home (restore) command
adrcmd equ 11000000B ; read track address
rdmask equ 10011100B ; read status mask
wrtmask equ 11111100B ; write status mask
tries1 equ 4 ; re-home on bad sector # of tries+1
tries2 equ 15 ; re-read/write # of retries+1
retcod equ 0C9H ; return op code
nmivec equ 0066H ; non-maskable int vector (used in rd/wt loop)
; This section defines the disk parameters (dph's are images moved to RAM)
dph0: defw 0,0,0,0 ; dph for unit A:
defw dirbuf,dpbd ; directory buffer, Disk Parameter Block
defw csva, alva ; check sum pointer, allocation map pointer
defb ddbit ; density flag for this drive
defw 0,0,0,0 ; dph for unit B:
defw dirbuf,dpbd ; directory buffer, Disk Parameter Block
defw csvb, alvb ; check sum pointer, allocation map pointer
defb ddbit ; density flag for this drive
;dpbs: ;single sided single density
defw 18 ; (spt) sectors per track
defb 3 ; (bsh) block shift factor
defb 7 ; (blm) block mask
defb 0 ; (exm) extent mask
defw 82 ; (dsm) max logical block
defw 31 ; (drm) max directory
defb 80H ; (al0) directory allocation map
defb 00H ; (al1)
defw 8 ; (cks) size of directory check vector
defw 3 ; (off) reserved tracks
;dpbd: ; single sided double density
defw 40 ; (spt) sectors per track
defb 3 ; (bsh) block shift factor
defb 7 ; (blm) block mask
defb 0 ; (exm) extent mask
defw 194 ; (dsm) max logical block
defw 63 ; (drm) max directory
defb 0F0H ; (al0) directory allocation map & BIOS space
defb 00H ; (al1)
defw 16 ; (cks) size of directory check vector
defw 1 ; (off) reserved tracks
; sector interleave table
defb 1,6,11,16
defb 3,8,13,18
defb 5,10,15,2
defb 7,12,17,4
defb 9,14
enddph:
; Logical BIOS entry points
; Sector Deblocking Algorithms
blksiz equ 1024 ;CP/M allocation size
hstsiz equ 512 ;host disk sector size
hstspt equ 10 ;host disk sectors/trk
hstblk equ hstsiz/128 ;CP/M sects/host buff
cpmspt equ hstblk * hstspt ;CP/M sectors/track
secmsk equ hstblk-1 ;sector mask
secshf equ 2 ;log2(hstblk) sector mask
wrall equ 0 ;write to allocated
wrdir equ 1 ;write to directory
wrual equ 2 ;write to unallocated
=================================================================
This next set is from the Microcornucopia Rom source and provides
both the double sided and the quad density formats. [jbs]
; Disk Equates and Parameters
drvmask equ 11111100b ; drive select mask
denmask equ 11011111b ; density bit mask
ddbit equ 00000000b ; double density bit
sdbit equ 00100000b ; single density bit
sidmsk equ 11111011b ; side mask
sid0 equ 00000000b ; side 0
sid1 equ 00000100b ; side 1
control equ 16 ; I/O port of disk controller
status equ control+0 ; status register
cmnd equ control+0 ; command register
track equ control+1 ; track register
sector equ control+2 ; sector register
data equ control+3 ; data register
ficmd equ 11010000B ; force interrupt (Abort current command)
rdcmd equ 10001000B ; read command
wrtcmd equ 10101100B ; write command
seekcmd equ 00010000B ; seek command
rstcmd equ 00000000B ; home (restore) command
stpic equ 01001010b ; step in command
stpoc equ 01101010b ; step out command
adrcmd equ 11000100B ; read track address
rdmask equ 10011100B ; read status mask
wrtmask equ 11111100B ; write status mask
tries1 equ 4 ; re-home on bad sector # of tries+1
tries2 equ 15 ; re-read/write # of retries+1
ssmblk equ 194
dsmblk equ ssmblk*2
retcod equ 0C9H ; return op code
nmivec equ 0066H ; non-maskable interupt vector
; (used in rd/wt loop)
spdsafe equ 03h ; mask to steprate
; This section defines the disk parameters (dph's are images moved to RAM)
dph0: defw 0,0,0,0 ; dph for unit A:
defw dirbuf,dpbd ; directory buffer, Disk Parameter Block
defw csva, alva ; check sum pointer, allocation map pointer
defb ddbit ; density flag for this drive
defw 0,0,0,0 ; dph for unit B:
defw dirbuf,dpbd ; directory buffer, Disk Parameter Block
defw csvb, alvb ; check sum pointer, allocation map pointer
defb ddbit ; density flag for this drive
;dpbs: ;single sided single density-NOBODY uses this! [jbs]
defw 18 ; (spt) sectors per track
defb 3 ; (bsh) block shift factor
defb 7 ; (blm) block mask
defb 0 ; (exm) extent mask
defw 82 ; (dsm) max logical block
defw 31 ; (drm) max directory
defb 80H ; (al0) directory allocation map
defb 00H ; (al1)
defw 8 ; (cks) size of directory check vector
defw 3 ; (off) reserved tracks
ssdpbd: ; single sided double density -Original K-II [jbs]
defw 40 ; (spt) sectors per track
defb 3 ; (bsh) block shift factor
defb 7 ; (blm) block mask
defb 0 ; (exm) extent mask
defw 194 ; (dsm) max logical block
defw 63 ; (drm) max directory
defb 0F0H ; (al0) directory allocation map & BIOS space
defb 00H ; (al1)
defw 16 ; (cks) size of directory check vector
defw 1 ; (off) reserved tracks
; sector interleave table
stbl: defb 1,6,11,16
defb 3,8,13,18
defb 5,10,15,2
defb 7,12,17,4
defb 9,14
enddph:
dphx: defw 0,0,0,0 ; dph for c:
defw dirbuf,dpbd
defw csvc,alvc
defb ddbit
defw 0,0,0,0 ; dph for d:
defw dirbuf,dpbd
defw csvd,alvd
defb ddbit
xendx:
dsdpbd: ;double sided double density - Original K-IV [jbs]
defw 40 ; (spt) sectors per track
defb 4 ; (bsh) block shift factor
defb 15 ; (blm) block mask
defb 1 ; (exm) extent mask
defw 196 ; (dsm) max logical block
defw 63 ; (drm) max directory
defb 0C0H ; (al0) directory allocation map & BIOS space
defb 00H ; (al1)
defw 16 ; (cks) size of directory check vector
defw 1 ; (off) reserved tracks
dtrk: ; Double sided quad density - uC's K-VIII
defw 40
defb 05h
defb 1fh
defb 03h
defb 0C4h,0
defb 5fh,0
defb 80h,0
defb 18h,0
defb 2,0
; Logical BIOS entry points & Deblocking
; Logical BIOS entry points
; Sector Deblocking Algorithms
blksiz equ 1024 ;CP/M allocation size
hstsiz equ 512 ;host disk sector size
hstspt equ 10 ;host disk sectors/trk
hstblk equ hstsiz/128 ;CP/M sects/host buff
cpmspt equ hstblk * hstspt ;CP/M sectors/track
secmsk equ hstblk-1 ;sector mask
secshf equ 2 ;log2(hstblk) sector mask
wrall equ 0 ;write to allocated
wrdir equ 1 ;write to directory
wrual equ 2 ;write to unallocated
That's IT folks...!!!