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

⟦bf4d5da2d⟧ TextFile

    Length: 10368 (0x2880)
    Types: TextFile
    Names: »WDRIVES.ASM«

Derivation

└─⟦7303e23ba⟧ Bits:30003507 JET80 System diskette
    └─ ⟦this⟧ »WDRIVES.ASM« 

TextFile

	TITLE 'WDRIVES.ASM  TABLES FOR DISKETTE AND WINCHESTER'
;**************************************************************
;*                                                            *
;*        MODULE FOR DEFINING THE FLOPPY- AND WINCHER-        *
;*        UNITS IN THE SYSTEM.                                *
;*                                                            *
;**************************************************************

; LATEST CHANGE: 1984-06-18.   PSW
; BIOSREVISION D.
; FOR THE RMAC ASSEMBLER

TRUE	EQU	0FFH
FALSE	EQU	0
	PAGE 	42
;******************************************************************
;            What kind of floppy do You want ?

VERIFY	EQU	TRUE		; Verify after write.

M8	EQU	FALSE		; A: 8" 2x77x8x1024, 256 ent. UNIT0
				; D: 8" 1x77x26x128,  64 ent. UNIT0
M5	EQU	FALSE		; A: 5" 2x77x8x1024, 256 ent. UNIT0
				; D: 8" 1x77x26x128,  64 ent. UNIT0
MIN96	EQU	TRUE		; A: 5" 2x80x5x1024, 128 ent. UNIT0
				; D: 8" 1x77x26x128,  64 ent. UNIT0
; MARK CORRECT FLOPPPY TYPE WITH TRUE. NOTE ONLY ONE TRUE.
;******************************************************************

;******************************************************************
;            What kind of winchester do You want ?

RO352	EQU	TRUE		; Rodime 352

;******************************************************************
; Consult the XEBEC-manual for the two following constants:

LEAV	EQU	7		; INTERLEAV FACTOR used at formatting.
RESTEP	EQU	00000100B	; RETRY & BUFF STEP OPTION.
;******************************************************************
; Diskdrive size and number of directory entries.

E512	EQU	TRUE		;  512 ENTRIES
E1024	EQU	FALSE		; 1024 ENTRIES
REDUCE	EQU	34		; # of kBytes to reduce from second
				; winchester unit.
;NOTE. The size of this reduce factor is depending on how many bad
;      tracks the formatter utility has found on the disk.
;      If the formatter tells You that it has reduced more kBytes
;      than this factor, You must change this factor immediatly
;      and generate a new operating system before copying any files
;      to the winchester.
;*****************************************************************
	PAGE
; CONSTANTS:
RATE0	EQU	00000000B	; Floppy step rate 3ms/6ms
RATE1	EQU	00000001B	; Floppy step rate 6ms/12ms
RATE2	EQU	00000010B	; Floppy step rate 10ms/20ms
RATE3	EQU	00000011B	; Floppy step rate 15ms/30ms

UNIT0	EQU	00000000B	; Floppy phys. unit 0
UNIT1	EQU	00000001B	; Floppy phys. unit 1
UNIT2	EQU	00000010B	; Floppy phys. unit 2
UNIT3	EQU	00000011B	; Floppy phys. unit 3
WUNIT0	EQU	00000000B	; Winchester phys. unit 0
WUNIT1	EQU	00100000B	; Winchester phys. unit 1

INCH5	EQU	00001000B	; 5"-FLOPPY
INCH8	EQU	11010100B	; 8"-FLOPPY

DOUBLD	EQU	00000000B	; DOUBLE DENSITY
SINGLD	EQU	00100000B	; SINGLE DENSITY

	IF	E512
ENT	EQU	512
AL1	EQU	0
	ELSE
ENT	EQU	1024
AL1	EQU	0FFH
	ENDIF
COMM	EQU	0BCH
	IF	M8
SIGN	EQU	'8'
	ELSE
SIGN	EQU	'5'
	ENDIF
	PAGE
	EXTRN	FDREAD,FDWRIT,FDLGIN,FDINIT
	EXTRN	WREAD,WWRIT,WINIT,WINITD,WLGIN
	PUBLIC	@DTBL,?TITEL
	PUBLIC	@COMMO
	CSEG
@DTBL:	DW	FLA,WINA,WINB,FLD	; This order must not be changed.
	DW	0,0,0,0			; Check boot-routine in
	DW	0,0,0,0			; BIOSKRNL.Z80▶8a◀	DW	0,0,0,0
@COMMO:	DB	COMM
	PAGE
	DSEG

; Define WINCHESTER UNIT 0.

	DW	WWRIT
	DW	WREAD
	DW	WLGIN
	DW	WINIT
	DB	WUNIT0		; PHYSICAL UNIT FOR XEBEC.▶8a◀	DB	0
WINA:	DW	0		; NO TRANS TABLE
	DB	0,0,0,0,0,0,0,0,0
	DB	0		; MEDIAFLAGG
	DW	WIN0		; ADDRESS TO DPB
	DW	0		; NO CHECKSUM VECTOR
	DW	0FFFEH		; ALLOC VECTOR GEN. BY GENCPM
	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
	DW	0FFFEH		; DIRBCB, DTABCB, HASH
	DB	0		; HASH BANK.


; Define WINCHESTER UNIT 1.

	DW	WWRIT
	DW	WREAD
	DW	WLGIN
	DW	WINITD
	DB	WUNIT0		; PHYSICAL UNIT FOR XEBEC.
	DB	0
WINB:	DW	0		; NO TRANS TABLE
	DB	0,0,0,0,0,0,0,0,0
	DB	0		; MEDIAFLAGG
	DW	WIN1		; ADDRESS TO DPB
	DW	0		; NO CHECKSUM VECTOR
	DW	0FFFEH		; ALLOC VECTOR GEN. BY GENCPM
	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
	DW	0FFFEH		; DIRBCB, DTABCB, HASH
	DB	0		; HASH BANK.

	IF	M8
; Define 8" 2x77x8x1024, 256 entries. UNIT A:

	DW	FDWRIT
	DW	FDREAD
	DW	FDLGIN
	DW	FDINIT
	DB	INCH8+UNIT0+DOUBLD
				; $FDXSL
	DB	0		; 
FLA:	DW	0		; NO TRANS TABLE
	DB	0,0,0,0,0,0,0,0,0
	DB	0		; MEDIAFLAGG
	DW	F8D		; ADDRESS TO DPB
	DW	0FFFEH		; CHECKSUM VECTOR GEN. BY GENCPM
	DW	0FFFEH		; ALLOC VECTOR GEN. BY GENCPM
	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
	DW	0FFFEH		; DIRBCB, DTABCB, HASH
	DB	0		; HASH BANK.
	ENDIF

	IF	M5
; Define 5.25" 2x77x8x1024, 256 entries. UNIT A:

	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		; MEDIAFLAGG
	DW	F5MAX		; ADDRESS TO DPB
	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
	DW	0FFFEH		; DIRBCB, DTABCB, HASH
	DB	0		; HASH BANK.
	ENDIF

	IF	MIN96
; Define 5.25" 2x80x5x1024, 128 entries. UNIT A:

	DW	FDWRIT
	DW	FDREAD
	DW	FDLGIN
	DW	FDINIT
	DB	INCH5+UNIT0+DOUBLD
				; $FDXSL
	DB	0		; 
FLA:	DW	0		; NO TRANS TABLE
	DB	0,0,0,0,0,0,0,0,0
	DB	0		; MEDIAFLAGG
	DW	F596D		; ADDRESS TO DPB
	DW	0FFFEH		; CHECKSUM VECTOR GEN BY GENCPM
	DW	0FFFEH		; ALLOC VECTOR GEN BY GENCPM
	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
	DW	0FFFEH		; DIRBCB, DTABCB, HASH
	DB	0		; HASH BANK.
	ENDIF

; Define 8" 1x77x26x128, 64 entries (IBM). UNIT D:

	DW	FDWRIT
	DW	FDREAD
	DW	FDLGIN
	DW	FDINIT
	DB	INCH8+UNIT0+SINGLD
				; $FDXSL
	DB	0		; 
FLD:	DW	TRANS		; TRANS TABLE
	DB	0,0,0,0,0,0,0,0,0
	DB	0		; MEDIAFLAGG
	DW	F8S		; ADDRESS TO DPB
	DW	0FFFEH		; CHECKSUM VECTOR GEN. BY GENCPM
	DW	0FFFEH		; ALLOC VECTOR GEN. BY GENCPM
	DW	0FFFEH,0FFFEH	; LET GENCPM CALC
	DW	0FFFEH		; DIRBCB, DTABCB, HASH
	DB	0		; HASH BANK.

	CSEG
; DPB for 8" 2x77x8x1024, 256 entries.

F8D:	DW	64		; Number of logical sect/track
	DB	4,0FH		; BLOCK SKIFT and MASK
	DB	0		; EXTENT MASK
	DW	607		; MAX BLOCKNUMBER
	DW	256-1		; 256 DIR. ENTRIES
	DB	0F0H,0		; ALLOC VECTOR TO DIR
	DW	256/4		; CHECKSUMMA SIZE
	DW	2		; NUMBER OF OFFSET TRACKS
	DB	0		; PHYS. SECTOR SIZE
	DB	0		; PHYS. SECTOR SHIFT-MASK

	DB	0		; Floppy
	DB	8		; No. of log.sec./phys. sec.
	DB	22		; Read time out
	DB	19		; Write time out
	DB	0FFH		; 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		; BLOCK SKIFT AND MASK
	DB	0		; EXTENT MASK
	DW	242		; MAX BLOCKNUMBER
	DW	64-1		; 64 DIR. ENTRIES
	DB	0C0H,0		; ALLOC VECTOR TO DIR
	DW	64/4		; CHECKSUM SIZE
	DW	2		; OFFSET TRACK
	DB	0		; PHYS.SECTOR SIZE
	DB	0		; PHYS. 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

; DPB for 5.25" 2x77x8x1024, 256 entries.

F5MAX:	DW	64		; No. of logical sectors/track.
	DB	4,0FH		; BLOCK SKIFT AND MASK
	DB	0		; EXTENT MASK
	DW	607		; MAX BLOCKNUMBER
	DW	256-1		; 256 DIR. ENTRIES
	DB	0F0H,0		; ALLOC VECTOR TO DIR
	DW	256/4		; CHECKSUM SIZE
	DW	2		; OFFSET TRACKS
	DB	0		; PHYS. SECTOR SIZE
	DB	0		; PHYS. 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	0FFH		; 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


; DPB for 5.25" 2x80x5x1024, 128 entries.

F596D:	DW	40		; No. of logical sectors/track.
	DB	4,0FH		; BLOCK SKIFT AND MASK
	DB	0		; EXTENT MASK
	DW	394		; MAX BLOCKNUMBER
	DW	128-1		; 128 DIR. ENTRIES
	DB	0C0H,0		; ALLOC VECTOR TO DIR
	DW	128/4		; CHECKSUM SIZE
	DW	2		; OFFSET TRACKS
	DB	0		; PHYS. SECTOR SIZE
	DB	0		; PHYS. 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	0FFH		; Double sided
	DB	VERIFY		; Verify after write
	DB	RATE0		; Step rate
	DB	INCH5+DOUBLD	; Boot select
	DB	0,0,0,0,0,0	; Dummies

; Winchester: Rodime 352
	IF	RO352

SIGN1	EQU	'1'
SIGN2	EQU	'0'

WIN0:	DW	68		; No of logical sectors/track.
	DB	4,0FH		; BLOCK SHIF AND MASK▶8a◀	DB	0		; EXTENT MASK
	DW	2578		; MAX BLOCKNUMMER
	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	68		; No. of logical sectors/track.
	DB	4,0FH		; BLOCK SKIFT AND MASK
	DB	0		; EXTENT MASK
	DW	2617-(REDUCE/2)	; MAX BLOCKNUMBER
	DW	ENT-1		; DIR. ENTRIES
	DB	0FFH,AL1	; ALLOC VECTOR TO DIR
	DW	8000H		; CHECKSUM SIZE (none)
	DW	608		; 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

?TITEL:	DB	'80. '
	DB	SIGN,'"-floppy '
	IF	M8
	ELSE
	IF	M5
	DB	'1,2 MByte '
	ELSE
	DB	'800 KByte '
	ENDIF
	ENDIF
	DB	SIGN1,SIGN2,' MBytes winchester.',13,10,0	

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

	END
«eof»