3001 3a68 0000 Q ... FORM12V.16
PN	FORMAT
;
;*****************************************
;
;FORMATIERUNGSPROGRAMM FUER Z 1013-CP/M     
; 
;FUER V1.15      ROM-VERSION
;
;SYSTEM WIRD NACH FORMAT AUF DISKETTE GE-
;               SCHRIEBEN
;
;*****************************************
;
CFDC:	EQU	7CH
DFDC:	EQU	7DH
TC:	EQU	78H
FMTAB:	EQU	300H
BDOS:	EQU	05
CCP:	EQU	0C800H
WBOTE:	EQU	0DE03H
CONIN:	EQU	0DE09H
SDISK:	EQU	0DE38H
SSEC:	EQU	0DE69H
STRCK:	EQU	0DE6EH
SDMA:	EQU	0DE73H
WFLOP:	EQU	0E0CDH
INIFD:	EQU	0E108H
RECAL:	EQU	0E11FH
SEEK:	EQU	0E159H
WCOM1:	EQU	0E1B5H
RRSLT:	EQU	0E1D8H
RESTR:	EQU	0E1F8H
INIT:	EQU	0E24CH
CTAB:	EQU	0E948H
RESLT:	EQU	0E951H
;
;*****************************************
;
;
	ORG	100H
;
;
;
FORM:	LD	DE,TEXT	;TEXTAUSGABE
	LD	C,9
	CALL	BDOS
	CALL	CONIN	;WARTEN AUF EINGABE
	CMP	'y'
	JPNZ	0	;ENDE FORMAT
   	CALL	RECAL	;KOPF AUF SPUR 0
	LD	C,0	;SPUR
FORMO:	LD	B,1	;SEKTOR
	LD	E,0	;KOPFAUSWAHL FUER
;			;BEIDSEITIGE LAUF-
;			;WERKE
	LD	A,C
	LD	(CTAB+2),A
	PUSH	BC
	CALL	SEEK	;SPUR EINSTELLEN
	POP	BC
	LD	HL,33FH ;FMTAB+0FFH
;			
;			;TABELLEN-ENDE
;
	LD	A,10H	;ANZAHL SEKTOREN
FORM2:	LD	M,1    ;SETZEN N
	DEC	HL
	LD	M,A   	;SET R
	DEC	HL
	LD	M,E   	;SET H
	DEC	HL
	LD	M,C   	;SET C
	DEC	HL
	DEC	A
	JRNZ	FORM2-#
	LD	M,0E5H   ;AUFZUSCHREIBEN-
;
;			;DES BYTE
;
	DEC	HL
	LD	M,53   	;GAP LUECKEN-
;
;			;LAENGE
;
	DEC	HL
	LD	M,10H   ;EOT (LETZTE SEK-
;
;			;TORNUMMER)
;
	DEC	HL
	LD	M,1   	;N, 1=256 BYTES/
;
;			;SEKTOR
;
	DEC	HL
	LD	M,0   
	DEC	HL
	PUSH	BC
	LD	B,6	;ANZAHL KOMMANDO-
;			;BYTES F. FDC
;
	LD	C,4DH	;KOMMANDO FORMAT
;			;A TRACK
;
	CALL	WCOM1
	CALL	F4	;AUSFUEHRUNG
	OUT	TC	;ENDE-IMPULS
	CALL	RRSLT
	POP	BC
	JPNZ	RESTR	;FEHLER
	INC	C
	LD	A,C
	CMP	40	;ALLE SPUREN ???
	JRNZ	FORMO-#
;
;*****************************************
;
;SYSTEM AUFSCHREIBEN
;
;*****************************************
;
	CALL	RECAL
	XOR	A
	LD	(3),A
	LD	(4),A
	LD	SP,80H
	CALL	INIFD
	LD	C,0	;LAUFWERK
	CALL	SDISK
	LD	B,2CH
	LD	C,0	
	CALL	STRCK
	LD	D,1
	LD	HL,CCP
LOAD1:	PUSH	BC
	PUSH	DE
	PUSH	HL
	LD	C,D
	CALL	SSEC
	POP	BC
	PUSH	BC
	CALL	SDMA
	CALL	WFLOP
	CMP	0
	CANZ	RESTR
	POP	HL
	LD	DE,128
	ADD	HL,DE
	POP	DE
	POP	BC
	DEC	B
	JPZ	FORM
	INC	D
	LD	A,D
	CMP	21H
	JRC	LOAD1-#
	LD	D,1
	INC	C
	PUSH	BC
	PUSH	DE
	PUSH	HL
	CALL	STRCK
	POP	HL
	POP	DE
	POP	BC
	JR	LOAD1-#
;
;****************************************
;
;
TEXT:	DB	0DH,0AH,0AH,0AH
	DB	'Formatieren und System auf'
	DB	0DH,0AH,'Diskette schreiben !'
	DB	0DH,0AH,0AH
	DB	'40 TRACKS,16 SECTORS,256 BYTES'
	DB	0DH,0AH,0AH
	DB	'Diskette ? (y) : ','$'
;
;*****************************************
;
F4:	LD	C,DFDC
	LD	B,40H   
FORM3:	IN	CFDC
	RLCA		;RQM-TEST
	JRNC	FORM3-#
	RLCA
	RLCA
	RNC		;FERTIG??
	OUTI
	JRNZ	FORM3-#
	RET
;
;
	END	;