home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
ENTERPRS
/
CPM
/
UTILS
/
S
/
ZEN2.LBR
/
Z217DEF.LIB
< prev
next >
Wrap
Text File
|
2000-06-30
|
7KB
|
242 lines
;** Z217 EQUATES
;
WINSPT EQU 18 ;# PHYSICAL SECTORS PER TRACK
WICSZ EQU 512 ;CELL SIZE USED
;* PORT ASSIGNMENTS
WIPBASE EQU 0AEH ;BASE PORT
WIPCMD EQU WIPBASE+0 ; COMMAND
WIPSTAT EQU WIPBASE+0 ; HARDWARE STATUS
WIPRES EQU WIPBASE+1 ; RESET
WIPINTA EQU WIPBASE+1 ; INTERRUPT ACKNOWLEDGE/HARDWARE STATUS
;* HARDWARE STATUS REGISTER
WISINT EQU 10000000B ;INTERRUPT PENDING
WISBUSY EQU 01000000B ;BUSY
WISBM EQU 00100000B ;BURST MODE
WISTMA EQU 00010000B ;TMA IN PROGRESS
WISERR EQU 00001000B ;ERROR
WISIERR EQU 00000100B ;IMMEDIATE MODE ERROR
WISPAUS EQU 00000010B ;PAUSED
WISDONE EQU 00000001B ;DONE
;* DIRECT MODE COMMANDS
WISETUP EQU 08H ;SETUP
WIEXEC EQU 10H ;EXECUTE
WIPAUS EQU 18H ;PAUSE
WICONT EQU 20H ;CONTINUE
;* CONTROL BLOCK COMMANDS
WIRECAL EQU 00H ;RECALIBRATE
WISTAT EQU 01H ;STATUS
WIWRL EQU 10H ;WRITE LOGICAL
WIRDL EQU 11H ;READ LOGICAL
WISEKL EQU 13H ;SEEK LOGICAL
WIFMTD EQU 20H ;FORMAT DRIVE
WIFMTT EQU 21H ;FORMAT TRACK
WISDP EQU 22H ;SET DRIVE PARAMETERS
WIWRA EQU 30H ;WRITE ABSOLUTE
WIRDA EQU 31H ;READ ABSOLUTE
WISEKA EQU 33H ;SEEK ABSOLUTE
;* FORMAT OF COMMANDS
; TYPE 0 & 1
ORG 0
WI01BLK RB 0
WI01OP RB 1 ;COMMAND OP CODE
WI01DHS RB 1 ;BIT 7-5 -- DRIVE SELECT
; 4-0 -- HIGH BYTE OF LOG SECTOR #
WI01D EQU 11100000B ; DRIVE SELECT MASK
WI01HS EQU 00011111B ; HIGH BYTE OF LOG SECTOR # MASK
WI01MS RB 1 ;MIDDLE BYTE OF LOGICAL SECTOR #
WI01LS RB 1 ;LOW BYTE OF LOGICAL SECTOR #
WI01SC RB 1 ;SECTOR COUNT
WI01HT RB 1 ;HIGH BYTE OF DATA TMA ADDRESS
WI01MT RB 1 ;MIDDLE BYTE OF DATA TMA ADDRESS
WI01LT RB 1 ;LOW BYTE OF DATA TMA ADDRESS
WI01HN RB 1 ;HIGH BYTE OF NEXT COMMAND ADDRESS
WI01MN RB 1 ;MIDDLE BYTE OF NEXT COMMAND ADDRESS
WI01LN RB 1 ;LOW BYTE OF NEXT COMMAND ADDRESS
WI01FLG RB 1 ;FLAGS
WI01EEC RB 1 ;ERROR CODE
WI01EDH RB 1 ;BIT 7-5 -- DRIVE SELECT
; 4-0 -- HIGHT BYTE OF LOG SECTOR #
WI01ED EQU 11100000B ; ERROR DRIVE SELECT MASK
WI01EHS EQU 00011111B ; ERROR HIGH BYTE OF LOG SECTOR # MASK
WI01EMS RB 1 ;ERROR MIDDLE BYTE OF LOGICAL SECTOR #
WI01ELS RB 1 ;ERROR LOW BYTE OF LOGICAL SECTOR #
IF ASM86
WI01BKL EQU OFFSET $ - OFFSET WI01BLK
ENDIF
IF NOT ASM86
WI01BKL EQU $-WI01BLK
ENDIF
IF WI01BKL NE 16
%: TYPE 0 & 1 COMMAND BLOCK IS WRONG LENGTH
ENDIF
; TYPE 2
ORG 0
WI2BLK RB 0
WI2OP RB 1 ;COMMAND OP CODE
WI2DH RB 1 ;BIT 7-5 -- DRIVE SELECT
; 2-0 -- (MAX) HEAD #
WI2D EQU 11100000B ; DRIVE SELECT MASK
WI2H EQU 00000111B ; HEAD # MASK
WI2HMC RB 1 ;HIGH BYTE OF MAX CYLINDER #
WI2LMC RB 1 ;LOW BYTE OF MAX CYLINDER #
WI2HRWC RB 1 ;HIGH BYTE OF RWC CYLINDER #
WI2LRWC RB 1 ;LOW BYTE OF RWC CYLINDER #
WI2HPC RB 1 ;HIGH BYTE OF PRE-COMP CYLINDER #
WI2LPC RB 1 ;LOW BYTE OF PRE-COMP CYLINDER #
WI2SR RB 1 ;STEP RATE (LSB = 20uS)
WI2ECC RB 1 ;ECC SPAN
WI2CSIF RB 1 ;BIT 6 -- CELL SIZE
; 4-0 -- INTERLEAVE FACTOR
WI2CS EQU 01000000B ; CELL SIZE MASK
WI2CS5 EQU 00000000B ; CELL SIZE = 512 BYTES/LOG SECTOR
WI2CS1K EQU 01000000B ; CELL SIZE = 1024 BYTES/LOG SECTOR
WI2IF EQU 00011111B ; INTERLEAVE FACTOR MASK
WI2FC RB 1 ;FILL CHARACTER
WI2EEC RB 1 ;ERROR CODE
WI2EHS RB 1 ;BIT 7-5 -- ERROR HEAD #
; 4-0 -- ERROR SECTOR #
WI2EH EQU 11100000B ; ERROR HEAD # MASK
WI2ES EQU 00011111B ; ERROR SECTOR # MASK
WI2EHC RB 1 ;ERROR HIGH BYTE OF CYLINDER #
WI2ELC RB 1 ;ERROR LOW BYTE OF CYLINDER #
IF ASM86
WI2BLKL EQU OFFSET $ - OFFSET WI2BLK
ENDIF
IF NOT ASM86
WI2BLKL EQU $-WI2BLK
ENDIF
IF WI2BLKL NE 16
%: TYPE 2 COMMAND BLOCK IS WRONG LENGTH
ENDIF
; TYPE 3
ORG 0
WI3BLK RB 0
WI3OP RB 1 ;COMMAND OP CODE
WI3DH RB 1 ;BIT 7-5 -- DRIVE SELECT
; 2-0 -- HEAD #
WI3D EQU 11100000B ; DRIVE SELECT MASK
WI3H EQU 00000111B ; HEAD # MASK
WI3HC RB 1 ;HIGH BYTE OF CYLINDER #
WI3LC RB 1 ;LOW BYTE OF CYLINDER #
WI3S RB 1 ;SECTOR #
WI3HT RB 1 ;HIGH BYTE OF DATA TMA ADDRESS
WI3MT RB 1 ;MIDDLE BYTE OF DATA TMA ADDRESS
WI3LT RB 1 ;LOW BYTE OF DATA TMA ADDRESS
WI3HN RB 1 ;HIGH BYTE OF NEXT COMMAND ADDRESS
WI3MN RB 1 ;MIDDLE BYTE OF NEXT COMMAND ADDRESS
WI3LN RB 1 ;LOW BYTE OF NEXT COMMAND ADDRESS
WI3FLG RB 1 ;FLAGS
WI3EEC RB 1 ;ERROR CODE
WI3EHS RB 1 ;BIT 7-5 -- ERROR HEAD #
; 4-0 -- ERROR SECTOR #
WI3EH EQU 11100000B ; ERROR HEAD # MASK
WI3ES EQU 00011111B ; ERROR SECTOR # MASK
WI3EHC RB 1 ;ERROR HIGH BYTE OF CYLINDER #
WI3ELC RB 1 ;ERROR LOW BYTE OF CYLINDER #
IF ASM86
WI3BLKL EQU OFFSET $ - OFFSET WI3BLK
ENDIF
IF NOT ASM86
WI3BLKL EQU $-WI3BLK
ENDIF
IF WI3BLKL NE 16
%: TYPE 3 COMMAND BLOCK IS WRONG LENGTH
ENDIF
; COMMAND BLOCK FLAG BYTE
WIFINTE EQU 10000000B ;INTERRUPTS ENABLED
WIFBM EQU 01000000B ;USE BURST MODE TMA
WIFIPCC EQU 00100000B ;IGNORE PAUSE AND CONTINUE COMMANDS
WIFIDR EQU 00000100B ;DISABLE RETRIES
WIFDECC EQU 00000010B ;DISABLE ECC
WIFCHN EQU 00000001B ;CHAIN NEXT COMMAND IMMEDIATELY
;* FORMAT OF STATUS RETURNED BY 01 COMMAND
ORG 0
WISBLK RB 0
WISFLG RB 1 ;FLAG BYTE
WISDR EQU 00000100B ; BIT 2 -- DRIVE READY
WISACC EQU 00000010B ; 1 -- ACCESSED
WISSC EQU 00000001B ; 0 -- SEEK COMPLETE
WISHMC RB 1 ;HIGH BYTE OF MAX CYLINDER #
WISLMC RB 1 ;LOW BYTE OF MAX CYLINDER #
WISHRWC RB 1 ;HIGH BYTE OF RWC CYLINDER #
WISLRWC RB 1 ;LOW BYTE OF RWC CYLINDER #
WISHPC RB 1 ;HIGH BYTE OF PRE-COMP CYLINDER #
WISLPC RB 1 ;LOW BYTE OF PRE-COMP CYLINDER #
WISHCC RB 1 ;HIGH BYTE OF CURRENT CYLINDER #
WISLCC RB 1 ;LOW BYTE OF CURRENT CYLINDER #
WISSR RB 1 ;STEP RATE (LSB = 20uS)
RB 1 ;RESERVED
WISIF RB 1 ;INTERLEAVE FACTOR
WISCS RB 1 ;CELL SIZE
WISCS5 EQU 1 ; = 512 BYTES/LOG SECTOR
WISCS1K EQU 2 ; = 1024 BYTES/LOG SECTOR
WISMH RB 1 ;MAX HEAD #
WISFC RB 1 ;FILL CHARACTER
RB 1 ;RESERVED
IF ASM86
WISBLKL EQU OFFSET $ - OFFSET WISBLK
ENDIF
IF NOT ASM86
WISBLKL EQU $-WISBLK
ENDIF
IF WISBLKL NE 16
%: STATUS BLOCK IS WRONG LENGTH
ENDIF
;* ERROR CODES
WIENE EQU 00H ;NO ERROR
WIEDNR EQU 01H ;DRIVE NOT READY
WIENSC EQU 02H ;NO SEEK COMPLETE
WIENT0 EQU 03H ;NO TRACK 0
WIENI EQU 04H ;NO INDEX
WIENDS EQU 05H ;NO DRIVE SELECT
WIEHNF EQU 10H ;HEADER ADDRESS MARK NOT FOUND
WIESEK EQU 11H ;SEEK ERROR (BAD CYLINDER # IN HEADER)
WIESNF EQU 12H ;SECTOR NOT FOUND
WIEECCH EQU 13H ;ECC ERROR IN HEADER
WIEDNF EQU 14H ;DATA ADDRESS MARK NOT FOUND
WIENECC EQU 15H ;NONCORRECTABLE ECC ERROR IN DATA FIELD
WIEECC EQU 16H ;CORRECTABLE ECC ERROR IN DATA FIELD
WIEWF EQU 17H ;WRITE FAULT
WIEIOP EQU 20H ;ILLEGAL OP CODE
WIEIDA EQU 21H ;ILLEGAL DISK ADDRESS
WIEFMTP EQU 22H ;FORMAT PROTECTED
WIEWRP EQU 23H ;WRITE PROTECTED
WIEMISC EQU 30H ;MISCELLANEOUS ERROR
WIEDIAG EQU 40H ;ERROR DURING DIAGNOSTIC
WIEPNA EQU 80H ;PARTION NOT ASSIGNED
WIESNWP EQU 81H ;SECTOR NOT WITHIN PARTITION
;* CP/M RELATED VALUES
WIRPS EQU WICSZ/128 ;CP/M RECORDS PER SECTOR
WIRPT EQU WIRPS*WINSPT ;CP/M RECORDS PER TRACK
WINST EQU 1 ;# OF SYSTEM TRACKS
WINSYS EQU WINST*WINSPT ;# SECTORS IN SYSTEM TRACK(S)
WIMIN EQU 1024/WICSZ*64+WINSYS ;MINIMUM # USEABLE SECTORS
WIMAX EQU 1024/WICSZ*8*1024+WINSYS ;MAX # USEABLE SECTORS