DataMuseum.dk

Presents historical artifacts from the history of:

CP/M

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CP/M

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦1cf43ef48⟧ TextFile

    Length: 31616 (0x7b80)
    Types: TextFile
    Names: »WDRIVES.ASM«

Derivation

└─⟦67f37b9ce⟧ Bits:30003503 JET80/W20FT systemdisk
    └─ ⟦this⟧ »WDRIVES.ASM« 

TextFile

	Title	'Wdrives.Asm'
;------------------------------------------------------------;
;   Definition Module for the Floppies and Winchesters in    ;
;   the system.                                              ;
;							     ;
; Note: If You use Adaptec controller, You link ExtmemA.Rel  ;
;       and if Xebec, You link ExtmemX.Rel to BNKBIOS3.SPR   ;
;       This will done with the command:                     ;
;	SUBMIT GENWBIOS A      for Adaptec		     ;
;	SUBMIT GENWBIOS X      for Xebec		     ;
;------------------------------------------------------------;
; Latest update: 1985-11-15. PSW
; Biosrevision: F
;
; For the RMAC assembler.

;------------------------------------------------------------;
;        Answer in field #1 and/or in field #2 !!            ;
;------------------------------------------------------------;

True		Equ	-1
False		Equ	Not True

NetWork		Equ	False

;------------------------------------------------------------;
; Field #1  -- SuperJet.                                     ;
;                                                            ;
SuperJet	Equ	False		; False indicates You;
;					; must goto field #2.;
TwoWins		Equ	False		; False: 1 drive     ;
;					; True:  2 drives.   ;
; System configuration for SuperJet:                         ;
; A: Winchester 1st part appr. 28800 KBytes                  ;
; B: Winchester 2nd part appr. 29300 KBytes                  ;
; C: Floppy 5" 1200 KBytes.                                  ;
; D: Floppy 5"  800 KBytes                                   ;
; The tape streamer does not have a logical device address.  ;
; If 2 winchesters:                                          ;
; E: Winchester 1st part appr. 28800 KBytes                  ;
; F: Winchester 2nd part appr. 29300 KBytes                  ;
;------------------------------------------------------------;
	Page	66
	If	Not SuperJet
;------------------------------------------------------------;
; Field #2  -- Other configurations.                         ;
; Here You must answer 6 or 7 questions:                     ;
; 1: Do You want Verify after write on floppy ?              ;
;							     ;
Verify		Equ	True		; Verify after write.;
;							     ;
; 2: What kind of floppy system do You want ?  (Only 1 true) ;
;							     ;
M8		Equ	False		; 8" 1200 KBytes     ;
M5		Equ	True		; 5" 1200 KBytes     ;
Min96		Equ	False		; 5"  800 KBytes     ;
;                                                            ;
; 3: Do You have an external 8" floppy drive ?               ;
;    Not supported with M8.                                  ;
Jet8		Equ	False		; True means YES     ;
;							     ;
; 4: What kind of winchester controller ?		     ;
;							     ;
Adaptec		Equ	True		; False = Xebec	     ;
;							     ;
; 5: How many winchester drives ?  (One or two)              ;
;							     ;
TwoWins		Equ	False		; False = 1 drive    ;
;							     ;
; 6: What kind of winchester do You want ?  (Only 1 true)    ;
;					  Entries   BlockSize;
Ro204	Equ	False	; Rodime 204	  1024 		2K   ;
Ro204E	Equ	False	; Rodime 204 E    2048 		4K   ;
Ro352	Equ	False	; Rodime 352      512-1024 	2K   ;
XT1065	Equ	False	; Maxtor XT-1065  2048 		4K   ;
XT1085	Equ	False	; Maxtor XT-1085  2048 		4K   ;
CDC66	Equ	False	; CDC 9415-66     2048 		4K   ;
CDC86	Equ	False	; CDC 9415-86     2048 		4K   ;
Nec5126	Equ	True	; Nec 5126        1024 		2K   ;
;							     ;
; 7: If Rodime 352 You must answer how directory entries.    ;
;							     ;
E512		Equ	True		; False = 1024 ent.  ;
;							     ;
;------------------------------------------------------------;

;------------- No more questions below here -----------------;
	Endif
	Page
	If	SuperJet
Verify		Equ	True
M5		Equ	True
M8		Equ	False
Min96		Equ	False 
Ro204		Equ	False
Ro204E		Equ	False
Ro352		Equ	False	
XT1065		Equ	False	
XT1085		Equ	False	
CDC66		Equ	True	
CDC86		Equ	False	
Nec5126		Equ	False
Adaptec		Equ	True
E512		Equ	False
Jet8		Equ	False
	Endif
;----------------------------------------------------------------;
; The byte called 'ReStep' is interpreted as follows:		 ;
;								 ;
;	1xxxxxxx	; No retry				 ;
;	0xxxxxxx	; Retry 4 times				 ;
;	x1xxxxxx	; No retry a read of sector that contains;
;			; a data error before error correction.	 ;
;	x0xxxxxx	; Reread before error correction	 ;
;	xxx1xxxx	; Disk has servo information.		 ;
;	xxx0xxxx	; No servo information.			 ;
;	xxxx0000	; 3 msec step rate			 ;
;	xxxx0001	; reserved (for servo)			 ;
;	xxxx0010	;     -"-				 ;
;	xxxx0011	;     -"-				 ;
;	xxxx0100	; 200 usec buffered step		 ;
;	xxxx0101	;  70 usec buffered step		 ;
;	xxxx0110	;  30 usec buffered step		 ;
;	xxxx0111	;  15 usec buffered step		 ;
;----------------------------------------------------------------;
	If	Adaptec		; Adaptec:
	If	Ro204
ReStep	Equ	00000100b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	72		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	Ro204E
ReStep	Equ	00000100b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	72		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	Ro352
ReStep	Equ	00000100b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	36		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	XT1065
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	64		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	XT1085
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	72		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	CDC66
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	84		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	CDC86
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	84		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	Nec5126
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	36		; # of Kbytes to reduce from second winchester unit.
	Endif

	Else			; Xebec
	If	Ro204
ReStep	Equ	00000100b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	68		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	Ro204E
ReStep	Equ	00000100b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	68		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	Ro352
ReStep	Equ	00000100b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	34		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	XT1065
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	60		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	XT1085
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	68		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	CDC66
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	76		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	CDC86
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	76		; # of Kbytes to reduce from second winchester unit.
	Endif
	If	Nec5126
ReStep	Equ	00010111b	; RETRY & BUFF STEP OPTION.
Reduce	Equ	34		; # of Kbytes to reduce from second winchester unit.
	Endif
	Endif

Rate0		Equ	00000000b	; 3ms/6ms
Rate1		Equ	00000001b	; 6ms/12ms
Rate2		Equ	00000010b	; 10ms/20ms
Rate3		Equ	00000011b	; 15ms/30ms

DoublS		Equ	-1		; Double sided
SinglS		Equ	0		; Single sided

Unit0		Equ	00000000b	; Physical Unit select 0
Unit1		Equ	00000001b	; Physical Unit select 1
Unit2		Equ	00000010b	; Physical Unit select 2
Unit3		Equ	00000011b	; Physical Unit select 3

Inch5		Equ	00001000b	; 5"-Floppy
Inch8		Equ	11010100b	; 8"-Floppy

DoublD		Equ	00000000b	; Double density
SinglD		Equ	00100000b	; Single density

	If	Adaptec			; Common area
Comm		Equ	0B8h		; 64K - 2*9K = 46K = B800h
	Else
Comm		Equ	0BCh		; 64K - 2*8.5K = 47K = BC00h
	Endif
	If	Adaptec
Contr1	Equ	00000001B		; Controller unit 1
Contr2	Equ	00000010B		; Controller unit 2
Contr3	Equ	00000100B		; Controller unit 3

WUnit1	Equ	00000000B OR Contr1	; Winchester phys. unit 0 on Contr1
WUnit2	Equ	00100000B OR Contr1	; Winchester phys. unit 1 on Contr1
WUnit3	Equ	00000000B OR Contr2	; Winchester phys. unit 0 on Contr2
WUnit4	Equ	00100000B OR Contr2	; Winchester phys. unit 1 on Contr2
WUnit5	Equ	00000000B OR Contr3	; Winchester phys. unit 0 on Contr3
WUnit6	Equ	00100000B OR Contr3	; Winchester phys. unit 1 on Contr3
Leav	Equ	2			; Interleave factor
LSecPerTrk	Equ	72		; No of logical sectors/track
	Else
WUnit1	Equ	00000000B 		; Winchester phys. unit 0 on Contr1
WUnit2	Equ	00100000B 		; Winchester phys. unit 1 on Contr1
Leav	Equ	7			; Interleave factor
LSecPerTrk	Equ	68		; No of logical sectors/track
	Endif

	If	E512
Ent	Equ	512
AL1	Equ	0
	Else
Ent	Equ	1024
AL1	Equ	0FFh
	Endif

	If	M8
Sign	Equ	'8'
	Else
Sign	Equ	'5'
	Endif

	Extrn	FdRead, FdWrit, FdLgin, FdInit
	Extrn	WRead, WWrit, WInit, WInitd, WLgin
	Public	@DTbl, ?Titel, @Commo

	Cseg
@DTbl:
	If	NetWork
	Dw	WinA,WinB,FlA		; A:, B:, C:
	Else
	Dw	FlA,WinA,WinB		; This order must not be changed.
					; Check boot-routine in
					; BIOSKRNL.Z80
	Endif
	If	Min96
	Dw	0			; D: not installed
	Else
	Dw	FlD
	Endif
	If TwoWins
	Dw	WinE,WinF		; E:, F:
	Sign0	Equ	'2'
	Else
	Dw	0,0
	Sign0	Equ'1'
	Endif
	Dw	0,0			; G:, H: not installed
	If	Jet8
	Dw	FlI,FlJ			; I:, J:
	Else
	Dw	0,0
	Endif
	Dw	0,0			; K:, L: not installed▶8a◀	Dw	0,0,0,0			; M:, N:, O:, P: not installed

@Commo:	Db	Comm			;
	Page
	Dseg

; Define WINCHESTER LOGICAL UNIT A: (Winchester boot else B:)

	Dw	WWrit			;;
	Dw	WRead			;;
	Dw	WLgin			;;
	Dw	WInit			;;
	Db	WUnit1			;; Physical unit for controller▶8a◀	Db	0			;;
WINA:	Dw	0			;; No trans table
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	WIN0			;; Address to DPB
	Dw	0			;; Checksum None.
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh			;; DirBcb
	Dw	0FFFFh			;; DtaBcb Not used
	Dw	0FFFEh			;; Hash
	Db	0			;; Hash bank 

; Define WINCHESTER LOGICAL UNIT B: (Winchster boot else C:)

	Dw	WWrit			;;
	Dw	WRead			;;
	Dw	WLgin			;;
	Dw	WInitd			;;
	Db	WUnit1			;; Physical unit for controller
	Db	0			;;
WINB:	Dw	0			;; No trans table
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	WIN1			;; Address to DPB
	Dw	0			;; Checksum None.
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh			;; DirBcb
	Dw	0FFFFh			;; DtaBcb Not used
	Dw	0FFFEh			;; Hash
	Db	0			;; Hash bank 

	If	TwoWins

; Define WINCHESTER LOGICAL UNIT E:

	Dw	WWrit			;;
	Dw	WRead			;;
	Dw	WLgin			;;
	Dw	WInitd			;;
	Db	WUnit2			;; Physical unit for controller▶8a◀	Db	0			;;
WINE:	Dw	0			;; No trans table
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	WIN0			;; Address to DPB
	Dw	0			;; Checksum None.
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh			;; DirBcb
	Dw	0FFFFh			;; DtaBcb Not used
	Dw	0FFFEh			;; Hash
	Db	0			;; Hash bank 

; Define WINCHESTER LOGICAL UNIT F:

	Dw	WWrit			;;
	Dw	WRead			;;
	Dw	WLgin			;;
	Dw	WInitd			;;
	Db	WUnit2			;; Physical unit for controller
	Db	0			;;
WINF:	Dw	0			;; No trans table
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	WIN1			;; Address to DPB
	Dw	0			;; Checksum None.
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh			;; DirBcb
	Dw	0FFFFh			;; DtaBcb Not used
	Dw	0FFFEh			;; Hash
	Db	0			;; Hash bank 
	Endif

	If	M8 Or Jet8
; Define 8" 2x77x8x1024, 256 entries. Unit A: (Floppy boot else C:) / J:

	Dw	FdWrit			;;
	Dw	FdRead			;;
	Dw	FdLgin			;;
	Dw	FdInit			;;
	Db	Inch8+Unit0+DoublD	;; $FdXsl
	Db	0			;; 
	If	M8
FlA:	Dw	0			;; No trans table
	Else
FlJ:	Dw	0			;; No trans table
	Endif
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	F8D			;; Address to DPB
	Dw	0FFFEh			;; Checksum vector set by GENCPM
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh,0FFFFh		;; Let GENCPM setup
	Dw	0FFFEh			;; DirBcb, DtaBcb, Hash
	Db	0			;; Hash bank.

	Endif

	If	M5
; Define 5.25" 2x77x8x1024, 256 entries. Unit A: (Floppy boot else C:)

	Dw	FdWrit			;;
	Dw	FdRead			;;
	Dw	FdLgin			;;
	Dw	FdInit			;;
	Db	Inch5+Unit0+DoublD+11000000b	;; $FdXsl 2 MHz 8" Mode
	Db	0			;; 
FlA:	Dw	0			;; No trans table
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	F5Max			;; Address to DPB
	Dw	0FFFEh			;; Checksum vector set by GENCPM
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh,0FFFFh		;; Let GENCPM setup
	Dw	0FFFEh			;; DirBcb, DtaBcb, Hash
	Db	0			;; Hash bank.
	Endif

	If	Min96 Or SuperJet Or M5
; Define 5.25" 2x80x5x1024, 128 entries. Unit A: (Floppy boot else C:)
;					 Unit D: (SuperJet)
	Dw	FdWrit			;;
	Dw	FdRead			;;
	Dw	FdLgin			;;
	Dw	FdInit			;;
	Db	Inch5+Unit0+DoublD	;; $FdXsl
	Db	0			;; 
	If	Min96
FlA:	Dw	0			;; No trans table
	Else
FlD:	Dw	0
	Endif
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	F596D			;; Address to DPB
	Dw	0FFFEh			;; Checksum vector set by GENCPM
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh,0FFFFh		;; Let GENCPM setup
	Dw	0FFFEh			;; DirBcb, DtaBcb, Hash
	Db	0			;; Hash bank.
	Endif

	If	M8 Or Jet8

; Define 8" 1x77x26x128, 64 entries (IBM). Unit D:/ I:

	Dw	FdWrit			;;
	Dw	FdRead			;;
	Dw	FdLgin			;;
	Dw	FdInit			;;
	Db	Inch8+Unit0+SinglD	;;
	Db	0			;; 
	If	M8
FlD:	Dw	Trans			;; Trans table
	Else
FlI:	Dw	Trans			;; Trans table
	Endif
	Db	0,0,0,0,0,0,0,0,0	;;
	Db	0			;; Mediaflag
	Dw	F8S			;; Address to DPB
	Dw	0FFFEh			;; Checksum vector set by GENCPM
	Dw	0FFFEh			;; Alloc vector set by GENCPM
	Dw	0FFFEh,0FFFFh		;; Let GENCPM setup
	Dw	0FFFEh			;; DirBcb, DtaBcb, Hash
	Db	0			;; Hash bank.

	Cseg
Trans:	Db	1,7,13,19,25,5,11,17,23,3,9,15,21	;
	Db	2,8,14,20,26,6,12,18,24,4,10,16,22	;
	Endif

	Cseg

	If	M8 Or Jet8
; DPB for 8" 2x77x8x1024, 256 entries.

F8D:	Dw	64			; Number of logical sect/track
	Db	4,0Fh			; Blockshift and mask
	Db	0			; Extent mask
	Dw	607			; Max blocknumber
	Dw	256-1			; 256 Directory entries
	Db	0F0h,0			; Alloc vector to directory
	Dw	256/4			; Checksum size
	Dw	2			; Number of offset tracks
	Db	0			; Physical sector size
	Db	0			; Physical sector shift mask.

	Db	0			; Floppy
	Db	8			; No. of logical sectors/phys. sector.
	Db	22			; Read time out
	Db	19			; Write time out
	Db	-1			; Double sided
	Db	Verify			; Verify after write
	Db	Rate0			; Step rate
	Db	Inch8+DoublD		; Boot select
	Db	0,0,0,0,0,0		; Dummies

; DPB for 8" 1x77x26x128, 64 entries. (IBM)

F8S:	Dw	26			; No. of logical sectors/track.
	Db	3,7			; Blockshift and mask
	Db	0			; Extent mask
	Dw	242			; Max blocknumber
	Dw	64-1			; 64 Directory entries
	Db	0C0h,0			; Alloc vector to directory
	Dw	64/4			; Checksum size
	Dw	2			; Number of offset tracks
	Db	0			; Physical sector size
	Db	0			; Physical sector shift mask.

	Db	0			; Floppy
	Db	1			; No. of logical sectors/phys. sector.
	Db	22			; Read time out
	Db	19			; Write time out
	Db	0			; Single sided
	Db	Verify			; Verify after write
	Db	Rate0			; Step rate
	Db	Inch8+SinglD		; Boot select
	Db	0,0,0,0,0,0		; Dummies
	Endif

	If	M5
; DPB for 5.25" 2x77x8x1024, 256 entries.

F5Max:	Dw	64			; No. of logical sectors/track.
	Db	4,0Fh			; Blockshift and mask
	Db	0			; Extent mask
	Dw	607			; Max blocknumber
	Dw	256-1			; 256 Directory entries
	Db	0F0h,0			; Alloc vector to directory
	Dw	256/4			; Checksum size
	Dw	2			; Number of offset tracks
	Db	0			; Physical sector size
	Db	0			; Physical sector shift mask.

	Db	0			; Floppy
	Db	8			; No. of logical sectors/phys. sector.
	Db	22			; Read time out
	Db	19			; Write time out
	Db	-1			; Double sided
	Db	Verify			; Verify after write
	Db	Rate0			; Step rate
	Db	Inch5+DoublD+11000000b	; Boot select
	Db	0,0,0,0,0,0		; Dummies
	Endif

	If	Min96 Or SuperJet Or M5
; DPB for 5.25" 2x80x5x1024, 128 entries.

F596D:	Dw	40			; No. of logical sectors/track.
	Db	4,0Fh			; Blockshift and mask
	Db	0			; Extent mask
	Dw	394			; Max blocknumber
	Dw	128-1			; 128 Directory entries
	Db	0C0h,0			; Alloc vector to directory
	Dw	128/4			; Checksum size
	Dw	2			; Number of offset tracks
	Db	0			; Physical sector size
	Db	0			; Physical sector shift mask.

	Db	0			; Floppy
	Db	8			; No. of logical sectors/phys. sector.
	Db	22			; Read time out
	Db	19			; Write time out
	Db	-1			; Double sided
	Db	Verify			; Verify after write
	Db	Rate0			; Step rate
	Db	Inch5+DoublD		; Boot select
	Db	0,0,0,0,0,0		; Dummies
	Endif

	If	Ro204
; Winchester: Rodime 204

SIGN1	Equ	'2'
	If	Adaptec
SIGN2	Equ	'3'
	Else
Sign2	Equ	'2'
	Endif

WIN0:
	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	4,0FH		; BLOCK SHIfT AND MASK (size = 2K)▶8a◀	Db	0		; EXTENT MASK
	If	Adaptec
	Dw	5714		; MAX BLOCKNUMMER
	Else
	Dw	5396
	Endif
	Dw	1024-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-1		; No of cylinders Hbyte
	Db	255-65 		;      - " -      Lbyte
	Db	255-8		; No of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-132		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	4,0FH		; BLOCK SKIfT AND MASK (size = 2K)
	Db	0		; EXTENT MASK
	If	Adaptec
	Dw	5799-(Reduce/2)	; MAX BLOCKNUMBER
	Else
	Dw	5477-(Reduce/2)
	Endif
	Dw	1024-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1271		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-1		; No of cylinders Hbyte
	Db	255-65 		;       - " -     Lbyte
	Db	255-8		; No. of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-132		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC
	Endif


	If	Nec5126
; Winchester: Nec 5126

SIGN1	Equ	'2'
SIGN2	Equ	'0'

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	4,0FH		; BLOCK SHIfT AND MASK (size = 2K)▶8a◀	Db	0		; EXTENT MASK
	If	Adaptec
	Dw	4949		; MAX BLOCKNUMMER
	Else
	Dw	4675		;
	Endif
	Dw	1024-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-2		; No of cylinders Hbyte
	If	Adaptec
	Db	255-43		;      - " -      Lbyte
	Else	
	Db	255-76
	Endif
	Db	255-4		; No of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-0		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	4,0FH		; BLOCK SKIfT AND MASK (size = 2K)
	Db	0		; EXTENT MASK
	If	Adaptec
	Dw	5035-(Reduce/2)	; MAX BLOCKNUMBER
	Else
	Dw	5315-(Reduce/2)
	Endif
	Dw	1024-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1201		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-2		; No of cylinders Hbyte
	If	Adaptec
	Db	255-43 		;       - " -     Lbyte
	Else
	Db	255-76
	Endif	
	Db	255-4		; No. of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-0		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC
	Endif

	If	Ro204E
; Winchester: Rodime 204 E

SIGN1	Equ	'4'
	If	Adaptec
SIGN2	Equ	'6'
	Else
Sign2	Equ	'3'
	Endif

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	5,31		; BLOCK SHIfT AND MASK (size = 4K)▶8a◀	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	5624		; MAX BLOCKNUMMER
	Else
	Dw	5311
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-2		; No of cylinders Hbyte
	Db	255-128		;      - " -      Lbyte
	Db	255-8		; No of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-0		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	5,31		; BLOCK SKIfT AND MASK (size = 4K)
	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	5873-(Reduce/4)	; MAX BLOCKNUMBER
	Else
	Dw	5547-(Reduce/4)
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	2501		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-2		; No of cylinders Hbyte
	Db	255-128		;       - " -     Lbyte
	Db	255-8		; No. of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-0		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC

	Endif

	If	Ro352
; Winchester▶ba◀ Rodim▶e5◀ 352

SIGN1	Equ	'1'
	If	Adaptec
SIGN2	Equ	'1'
	Else
Sign2	Equ	'0'
	Endif

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	4,0FH		; BLOCK SHIfT AND MASK  (size = 2K)▶8a◀	Db	0		; EXTENT MASK
	If	Adaptec
	Dw	2699		; MAX BLOCKNUMMER
	Else
	Dw	2549
	Endif
	Dw	ENT-1		; DIR. ENTRIES
	Db	0FFH,AL1	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-1		; No of cylinders Hbyte
	Db	255-50 		;      - " -      Lbyte
	Db	255-4		; No of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-0		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	4,0FH		; BLOCK SKIfT AND MASK (size = 2K)
	Db	0		; EXTENT MASK
	If	Adaptec
	Dw	2784-(Reduce/2)	; MAX BLOCKNUMBER
	Else
	Dw	2629-(Reduce/2)
	Endif
	Dw	ENT-1		; DIR. ENTRIES
	Db	0FFH,AL1	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	601		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-1		; No of cylinders Hbyte
	Db	255-50 		;       - " -     Lbyte
	Db	255-4		; No. of heads.
	Db	255-0		; Red. write cyl Hbyte
	Db	255-0		;     -  "  -    Lbyte
	Db	255-0		; Write precomp. cyl Hbyte
	Db	255-0		;     -  "  -        Lbyte
	Db	255-11		; ECC
	Endif

	If	XT1065
; Winchester▶ba◀ Maxtor XT-1065

SIGN1	Equ	'5'
	If	Adaptec
SIGN2	Equ	'8'
	Else
Sign2	Equ	'5'
	Endif

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	5,31		; BLOCK SHIfT AND MASK (size = 4K)▶8a◀	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	7199		; MAX BLOCKNUMMER
	Else
	Dw	6799
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-3		; No of cylinders Hbyte
	Db	255-150		;      - " -      Lbyte
	Db	255-7		; No of heads.
	Db	255-3		; Red. write cyl Hbyte
	Db	255-152		;     -  "  -    Lbyte
	Db	255-3		; Write precomp. cyl Hbyte
	Db	255-152		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	5,31		; BLOCK SKIfT AND MASK (size = 4K)
	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	7239-(Reduce/4)	; MAX BLOCKNUMBER
	Else
	Dw	6837-(Reduce/4)
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	3201		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-3		; No of cylinders Hbyte
	Db	255-150		;       - " -     Lbyte
	Db	255-7		; No. of heads.
	Db	255-3		; Red. write cyl Hbyte
	Db	255-152		;     -  "  -    Lbyte
	Db	255-3		; Write precomp. cyl Hbyte
	Db	255-152		;     -  "  -        Lbyte
	Db	255-11		; ECC

	Endif

	If	XT1085
; Winchester▶ba◀ Maxtor XT-1085

	If	Adaptec
SIGN1	Equ	'7'
SIGN2	Equ	'3'
	Else
Sign1	Equ	'6'
Sign2	Equ	'9'
	Endif

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	5,31		; BLOCK SHIfT AND MASK (size = 4K)▶8a◀	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	8999		; MAX BLOCKNUMMER
	Else
	Dw	8499
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-4		; No of cylinders Hbyte
	Db	255-0		;      - " -      Lbyte
	Db	255-8		; No of heads.
	Db	255-4		; Red. write cyl Hbyte
	Db	255-2		;     -  "  -    Lbyte
	Db	255-4		; Write precomp. cyl Hbyte
	Db	255-2		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	5,31		; BLOCK SKIfT AND MASK (size = 4K)
	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	9410-(Reduce/4)	; MAX BLOCKNUMBER
	Else
	Dw	8887-(Reduce/4)
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	4001		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-4		; No of cylinders Hbyte
	Db	255-0		;       - " -     Lbyte
	Db	255-8		; No. of heads.
	Db	255-4		; Red. write cyl Hbyte
	Db	255-2		;     -  "  -    Lbyte
	Db	255-4		; Write precomp. cyl Hbyte
	Db	255-2		;     -  "  -        Lbyte
	Db	255-11		; ECC

	Endif

	If	CDC66
; Winchester▶ba◀ CDC 9415-66

SIGN1	Equ	'5'
	If	Adaptec
SIGN2	Equ	'8'
	Else
Sign2	Equ	'5'
	Endif

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	5,31		; BLOCK SHIfT AND MASK (size = 4K)▶8a◀	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	7199		; MAX BLOCKNUMMER
	Else
	Dw	6799
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-3		; No of cylinders Hbyte
	Db	255-157		;      - " -      Lbyte
	Db	255-7		; No of heads.
	Db	255-3		; Red. write cyl Hbyte
	Db	255-159		;     -  "  -    Lbyte
	Db	255-3		; Write precomp. cyl Hbyte    Obs
	Db	255-159		;     -  "  -        Lbyte    Obs
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	5,31		; BLOCK SKIfT AND MASK (size = 4K)
	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	7349-(Reduce/4)	; MAX BLOCKNUMBER
	Else
	Dw	6941-(Reduce/4)
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	3201		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-3		; No of cylinders Hbyte
	Db	255-157		;       - " -     Lbyte
	Db	255-7		; No. of heads.
	Db	255-3		; Red. write cyl Hbyte
	Db	255-157		;     -  "  -    Lbyte
	Db	255-3		; Write precomp. cyl Hbyte
	Db	255-157		;     -  "  -        Lbyte
	Db	255-11		; ECC
	Endif


	If	CDC86
; Winchester▶ba◀ CDC 9415-86

SIGN1	Equ	'7'
	If	Adaptec
SIGN2	Equ	'5'
	Else
Sign2	Equ	'1'
	Endif

WIN0:	Dw	LSecPerTrk	; No of logical sectors/track.
	Db	5,31		; BLOCK SHIfT AND MASK (size = 4K)▶8a◀	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	9224		; MAX BLOCKNUMMER
	Else
	Dw	8711
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	1		; OFFSET TRACKS
	Db	0		; Phys. sector size
	Db	0		; Phys. sector shift mask.

	Db	1		; Winchester 1st. part.
	Db	4		; No. of logical sector/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-3		; No of cylinders Hbyte
	Db	255-157		;      - " -      Lbyte
	Db	255-9		; No of heads.
	Db	255-3		; Red. write cyl Hbyte
	Db	255-159		;     -  "  -    Lbyte
	Db	255-3		; Write precomp. cyl Hbyte
	Db	255-159		;     -  "  -        Lbyte
	Db	255-11		; ECC

WIN1:	Dw	LSecPerTrk	; No. of logical sectors/track.
	Db	5,31		; BLOCK SKIfT AND MASK (size = 4K)
	Db	1		; EXTENT MASK
	If	Adaptec
	Dw	9482-(Reduce/4)	; MAX BLOCKNUMBER
	Else
	Dw	8955-(Reduce/4)
	Endif
	Dw	2048-1		; DIR. ENTRIES
	Db	0FFH,0FFH	; ALLOC VECTOR TO DIR
	Dw	8000H		; CHECKSUM SIZE (none)
	Dw	4101		; OFFSET TRACK 
	Db	0		; PHYS. SECTOR SIZE
	Db	0		; PHYS. SECTOR SHIfT MASK

	Db	2		; Winchester 2nd part.
	Db	4		; No of logical sectors/phys. sector
	Db	50		; Read time out
	Db	19		; Write time out
	Db	255-Leav	; Interleav (Inv)
	Db	255-ReStep	; Retry & Buff step option
	Db	255-3		; No of cylinders Hbyte
	Db	255-157		;       - " -     Lbyte
	Db	255-9		; No. of heads.
	Db	255-3		; Red. write cyl Hbyte
	Db	255-157		;     -  "  -    Lbyte
	Db	255-3		; Write precomp. cyl Hbyte
	Db	255-157		;     -  "  -        Lbyte
	Db	255-11		; ECC
	Endif

	Dseg
?Titel:	Db	'80. ',Sign,'"-floppy '
	If	M8
	Else
	If	M5
	Db	'1.2 MByte '
	Else
	Db	'800 KByte '
	Endif
	Endif
	Db	Sign0,'x',Sign1,Sign2,' MBytes winchester '
	If	Adaptec
	Db	'A'
	Else
	Db	'X'
	Endif
	Db	'.',13,10,0
	End
«eof»