Sharp logo
MZ-700 / MZ-800 FD drives & control routines 
MFD700/800, SFD700/800, DFD700/800, MZ-1F02, MZ-1F19  
General


Up to 4 FD-drives can be connected to the MZ-700 / 800. QD and FD can be used both at a time. Sharp uses 5.25" disks but 3.5" disks ( "Baby" ) were used from other companies too ( e.g. K & P / Aachen / Germany; Kersten & Partner ).

If you want to use CP/M or you want to have random access then a floppy drive is a necessity. QD and tape do not support random access.

Each disk has a formatted capacity of 280 / 320 kb. The 4 drives support a max. capacity of 1,280 kb.

MFD 700 ( Mini Floppy Drive )
K & P ( Kersten & Partner / Aachen / Germany )

K&P MFD700
MFD 700

K&P MFD700
MFD 700
Technical data
Capacity 180 kb
Medium 3.5" disk SS / DD
Number of
tracks
40 tracks
Controller Internal for the first drive ( or later models? ).
External ( K&P FDC800 / SFD800 controller usable )
Connectors power AC 220 / 240V
cable to controller
Power supply inbuilt, input AC 220 / 240V, 50 / 60Hz
Dimensions width 123 x depth 235 x height 78 mm
( width 125 x depth 240 height 75 later models? )
Accessories

S-Disk-Basic ( uses 33 kb of RAM ), German Manual

SFD 700 ( Single Floppy Drive ) & DFD 700 ( Double Floppy Drive )
K & P ( Kersten & Partner / Aachen / Germany )
Price 1984 SFD 700: DM 1,560
Price 1984 DFD 700: DM 2,350

K&P SFD700
SFD 700

K&P SFD700
SFD 700
Inside the SFD 700
Inside the SFD 700 ( the controller is invisible;
it is mounted under the drive )

K&P DFD700
DFD 700
Technical data
Capacity 560 kb unformatted, 280kb formatted
( with CP/M 2.2 360kb )
Medium 5.25" disk DS / SD, 48tpi
Number of
tracks
80 tracks
Controller inbuilt, Bus Driver, Line Driver, resident IPL EPROM,
controls up to 4 drives
can also read MZ-80K / MZ-80A / MZ-80B programs
Connectors power AC 220 / 240V
ribbon cable to MZ-700 I/O bus
Power supply inbuilt, input AC 220 / 240V, 50 / 60Hz
output DC 5V, 1.5A
DC 12V, 1.5A
Dimensions SFD700: width 185 x depth 360 x height 87mm
Accessories

German Operating Manual
System Disk ( Disk-Basic requires 37 kb, FDCOPY, TRANS )
Connecting Cable
Controller ( if not already inbuilt )

MFD 800 ( Mini Floppy Drive )
K & P ( Kersten & Partner / Aachen / Germany )

K&P MFD800
MFD 800 ( Courtesy of Ulf Wagemann )
Technical data
Capacity 180 / 320 kb formatted ( 2 models were sold )
( capacity available if BASIC is used. Basic requires 12kb for the disk management )
1,280 kb if 4 drives are used ( new model )
Medium 3.5" disk DS / DD, soft-sectored
Number of
tracks and
sectors
40 tracks, 16 sectors / track
Controller external K&P FDC800 / SFD800
Power supply inbuilt
Accessories

Operating Manual
System Disk
( Disk-Basic, FDCOPY, TRANS )
Connecting Cable
Controller

SFD 800 ( Single Floppy Drive ) & DFD 800 ( Double Floppy Drive )
K & P ( Kersten & Partner / Aachen / Germany )
Price SFD 800: DM 798
Capacity 320 kb ( early models 280 kb only )
( if BASIC is used. Basic requires 12kb for the disk management )
1,280 kb if 4 drives are used
Medium 5.25" disk DS / DD
Number of
tracks and
sectors
40 tracks, 16 sectors / track
Controller external K&P FDC800 / SFD800. Second drive ( model SFD800 I ) having no controller was available.
Power supply inbuilt, 220V 50/60 Hz
Dimensions width 175 x depth 335 x height 75mm
Accessories

Operating Manual
System Disk
( S-Disk-Basic ( MZ-B-800; uses 44 kb of RAM ), FDCOPY, FILING-CMT )
Connecting Cable
Controller FDC800 ( MZ-800 I/O slot )



Sharp MZ-1F19 ( Single Floppy Drive ) & Sharp MZ-1F02 ( Double Floppy Drive )
Price MZ-1F19: DM 860

Sharp MZ-1F19
MZ-1F19

MZ-1F19: Rear view
MZ-1F19 rear view
MZ-1F19: Drive select jumper on the left housing site
MZ-1F19:
Drive select jumper on the left housing site
Inside the MZ-1F19
Inside the MZ-1F19

Technical data
Capacity 320 kb formatted
1,280 kb if 4 drives are used
Medium 5.25" disk DS / DD, soft-sectored
Number of
tracks and
sectors
40 tracks, 16 sectors / track
Controller external MZ-1E05
( MZ-700 requires 1U06 / 1U08... )
Power supply Local voltage, 50/60 Hz
Power consumption 20W
Operating temperature 10 - 35°C
Operating humidity 20 - 80% (without condensation)
External dimensions 118 (W) x 332 (D) x 189 (H) mm
Weight 5.1 kg
Accessories

Instruction Manual
Drive number seals
System Disk
( Disk-Basic, FDCOPY, TRANS )
Power cord, Earth wire



Changing the Default Step rate ( MZ-800 & MZ-2Z046 )


The step rate (stepping time) can be changed if using the Sharp Disk Basic MZ-2Z046:

POKE $37DF,0 ( = 30ms default )
POKE $37DF,1 ( = 20ms )
POKE $37DF,2 ( = 12ms )
POKE $37DF,3 ( = 6ms )

Disk Control Routines


The file formats supported are: OBJ, BTX, BSD, BRD, RB, and others.

A disk formatted by Sharp's FDCOPY has a capacity of 268 kb ( 2*35 tracks ). Formatting the disk with 2*40 tracks results into a capacity of 308 kb which can be further expanded in some cases. Using a drive which supports 80 tracks expands the capacity more than twice.

The routines of the monitor program support only the load of machine-code programs on master disks like a Basic-Interpreter. There are no routines to read the directory or save any data. Own written programs or other software products can support this.

The Bootstrap is performed by:

Power on and the following IPL-Routine ( INITRT at $E800 )
Using the command "F" of the Device-Selection-Routine ( DVSLRT at $E906 )
Using the command "F" of the Monitor-Get-Command-Routine ( MONGCR at $EA5E )

All routines branch to the Mini-Floppy-Disk-Main-Routine ( MFDMRT at $E44A ) which calls the following routines:

FDIOCHK at $E8D5 ( FD-I/O-Check )
MOTOFF at $E530 ( Motor off )
SQREAD at $E5A7 ( Sequential-Read )

SQREAD calls the following routines:

CONVRT at $E696 ( Sector to track & Sector convert )
PARAST at $E5FB ( Parameter setting )
DSKSDE at $E61B ( Disk-Side )
SEEK at $E528 ( Seek-Treatment )
TRSCST at $E62B ( Track & Sector setting )
FORINT at $E658 ( Force-Interrupt )
AJTRSC at $E63C ( Adjust Track $ Sector )

In addition are the following routines can be used:

EXCTFL at $ECFC ( Execution-File )
NOTMAS at $E4AE ( Not Master )
MKRDFD at $E4BA ( Make Ready FD )
LDGERR at $E4BF ( FD-Loading-Error )
RDYCHK at $E4DC ( Ready-Check )
MOTOON at $ E517 ( Motor on )
RECBRT at $E548 ( Recalibration )
COMOUT at $E555 ( Command-Out-Routine )
BSY&WT at $E568 ( Busy & Wait )
COOTWT at $E64E ( Command out & Wait )
STSCHK at $E661 ( Status-Check )
TMEDYL at $E6B3 ( Time-Delay )

The FD-drive is controlled by the following ports and registers:

$D8 Command-Register
$D8 State-Register
$D9 Track-Register
$DA Sector-Register
$DB Data-Register
$DC Motor-Register
$DD Side-Register
$DE Density-Register

Example

	001	;	   < MINI-FLOPPY CONTROL >
	002	;
	003	;CALL CONDITION
	004	;
	005	;CASE 0F SEQUENTIAL WRITE & READ
	006	;	 DRIVE N=IX+0 (0-3)
	007	;	 SECTOR ADR =IX+l,2 (0-0500H)
	008	;	 BYTE SIZE  =IX+3,4
	009	;	 RAM-ADRESS =IX+5,6
	010	;	 NEXT TRACK =IX+7
	011	;	 NEXT SECTOR =IX+8
	012	;	 FIRST TRACK =IX+9
	013	;	 FIRST SECTOR =IX+10
	014	;
	015	ORG	$B000
	016	;
	017	;ARRAY F0RMATTING
	018	LD	HL,$A000
	019	*FLOOOP1:
	020	LD	(HL)‚$FF
	021	LD	A,H
	022	CP	$AF
	023	INC	HL
	024	JR	NZ,*FLQOP1
	025	LD	A,L
	026	CP	$FF
	027	JR	NZ,*FLOOP1
	028	;
	029	;
	030	;WRITE-MAIN-ROUTINE
	031	;
	032	LD	IX,$CEE9
	033	LD	HL,$0030	;FIRST SECTOR
	034	LD	(IX+1),L
	035	LD	(IX+2),H
	036	LD	HL,$1000	;BYTE SIZE
	037	LD	(IX+3),L
	038	LD	(IX+4),H
	039	LD	HL,$A000	;RAM ADRESS
	040	LD	(IX+5),L
	041	LD	(IX+6),H
	042	;
	043	CALL	*WRITE		;SEQUENTIAL WRITE
	044	CALL	$E530		;MOTOR OFF
	045	JP	*SECOND		;SECOND FORMATTING
	046	;
	047	;
	048	;SEQUENTIAL WRITE
	049	*WRITE:
	050	CALL	$E696		;CONVERT SECTOR
	051	CALL	$E5FB		;PARAMETER SET
	052	*WTLOOP:		;TRACK-LOOP BEGIN
	053	CALL	$E61B		;DISK-SIDE
	054	CALL	$E528		:SEEK-TREATMENT
	055	JP	NZ,$E690	;ERJMP
	056	CALL	$E62B		;TRACK & SECTOR SET
	057	DI			;INTERRUPT LOCK
	058	LD	A,$B4		;WRITE-CODE
	059	CALL	$E64E		;COMMAND OUT &WAIT
	060	*WSLOOP:		;SECTOR-L00P BEGIN
	061	LD	B,$00		;BYTE COUNTER
	062	*WBLOOP:		;BYTE-L00P BEGIN
	063	IN	A,($D8)		;READ STATUS
	064	RRCA			;BIT 0=0=BUSY
	065	JR	C,*WABORT	;NOT BUSY
	066	RRCA			;BIT 1=0=INDEX-HOLE
	067	JR	C,*WBLOOP	;NOT INDEX-HOLE
	068	OUTI			;WRITE BYTE
	069	JR	NZ,*WBLOOP	;NEXT BYTE
	070	INC	(IX+8)
	071	LD	A,(IX+8)
	072	CP	$11		;16 SECTORS ???
	073	JR	Z,*WTEND	;TRACK READY
	074	DEC	D		;SECTOR=SECTOR-1
	075	JR	NZ,*WSLOOP	;NEXT SECTOR
	076	JR	*WSEND		;D=0 SECTOR END
	077	;
	078	*WTEND:			;TRACK-END
	079	DEC	D		;SECTOR=SECTOR-1
	080	*WSEND:			;SECTOR END
	081	CALL	$E658		;FORCE INTERRUPT
	082	*WARORT:		;
	083	IN	A,($D8)		;READ STATUS
	084	CPL
	085	LD	($CEFB),A 	;STATUS-FLAG
	086	AND	$FF
	087	JP	NZ,$E661	;STATUS CHECK (ERROR)
	088	CALL	$E63C		;ADJUST SECTOR &TRACK
	089	JP	Z,*WEND		;READY
	090	LD	A,(IX+7)
	091	JR	*WTLOOP		;NEXT TRACK
	092	*WEND:			;WRITE END
	093	LD	A,$80		;MOTOR OFF
	094	OUT	($DC),A		;MOTOR-REGISTER
	094	EI			;INTERRUPT UNLOCK
	095	RET
	097	;
	098	;
	099	*SEC0ND:
	100	;ARRAY FORMATTING
	101	LD HL,$A000
	102	*FL00P2:
	103	LD	(HL),$00
	104	LD	A,H
	105	CP	$AF
	106	INC	HL
	107	JR	NZ,*FL0OP2
	108	LD	A,L
	109	CP	$FF
	110	JR	NZ,*FLOOP2
	111	;
	112	:
	113	;READ-MAIN-ROUTINE
	114	;
	115	LD	IX,$CEE9
	116	LD	HL,$0030	;FIRST SECTOR
	117	LD	(IX+1),L
	118	LD	(IX+2),H
	119	LD	HL,$1000	;BYTE SIZE
	120	LD	(IX+3),L
	121	LD	(IX+4),H
	122	LD	HL,$A000	;RAM ADRESS
	123	LD	(IX+5),L
	124	LD	(IX+6),H
	125	;
	126	CALL	*READ		;SEQUENTIAL BEAD
	127	CALL	$E530		;MOTOR 0FF
	128	JP	$EASE		;M0NITOR-GET-COMMAND
	131	;SEQUENTIAL READ
	132	*READ:
	133	CALL $E696		;CONVERT SECTOR
	134	CALL $E5FB		;PARAMETER SET
	135	*RTLOOP:		;TRACK-L00P BEGIN
	137	CALL	$E61B		;DISK-SIDE
	138	CALL	$E528		;SEEK-TREATMENT
	139	JP	NZ,$E690	;ERJMP
	140	CALL	$E62B		;TRACK & SECTOR SET
	141	DI			;INTERRUPT LOCK
	142	LD	A,$94		;READ-CODE
	143	CALL	$E64E		;COMMAND OUT &WAIT
	144	*RSLOOP:		;SECTOR-LOOP BEGIN
	145	LD	B,$00		;BYTE C0UNTER
	146	*RBLOOP:		;BYTE-LOOP BEGIN
	147	IN	A,($D8)		;READ STATUS
	148	RRCA			;BIT 0=0=BUSY
	149	JR	C,*RABORT	;NOT BUSY
	150	RRCA			;BIT 1=0=INDEX-HOLE
	151	JR	C,*RBLOOP	;NOT INDEX-HOLE
	152	INI			;READ BYTE
	153	JR	NZ,*RBLOOP	;NEXT BYTE
	154	INC	(IX+8)
	155	LD	A,(IX+8)
	156	CP	$11		;16 SECTORS ???
	157	JR	Z,*RTEND	;TRACK READY
	158	DEC	D		;SECTOR=SECTOR-1
	159	JR	NZ,*RSLOOP	;NEXT SECTOR
	160	JR	*RSEND		;D=0 SECTOR END
	161	;
	162	*RTEND:			;TRACK END
	163	DEC	D		;SECTOR=SECTOR-1
	164	*RSEND:			;SECTOR END
	165	CALL	$E658		;FORCE INTERRUPT
	166	*RABORT:		;
	167	IN	A,($D8)		;READ STATUS
	168	CPL
	169	LD	($CEFB),A	;STATUS FLAG
	170	AND	$FF
	171	JP	NZ,$E661	;STATUS CHECK (ERROR)
	172	CALL	$E63C		;ADJUST SECTOR &TRACK
	173	JP	Z,*REND		;READY
	174	LD	A, (IX+7)
	175	JR	*RTLOOP		;NEXT TRACK
	176	*REND:			;READ END
	177	LD	A,$80		;MOTOR OFF
	178	OUT	($DC),A		;MOTOR-REGISTER
	179	EI			;INTERRUPT UNLOCK
	180	RET

Download this example ( 2kb ).


Go to the top of this page Home

last updated March 29, 2004
sharpmz@sharpmz.org

khmweb barrierefreies webdesign Berchtesgaden