;MFORMAT	V4.1	(c)BD Copyright 1995
;ТАБЛИЦА MK-DOS

VERS=120004	BLK=120006	DIR=120014	FLOP=120126
INIDRV=120016	INOUT=120022	RDDIR=120024	DIRFIN=120026
DELETE=120036	SAVDIR=120042	TXT=120050	STROKA=120052
DECOUT=120060	TST=120062	TST2=120064	ERRO=120066
FRFIN2=120120	CREAT2=120122	EMT20=120044	SCREEN=120074
MAXTRK=400	TRK=402		BLOK=404	LD0=120134
SUBTEK=120010	SUBDIR=120013	LD1=120136	PALET=120127
FRFIN=120032	CREAT=120034	OLDR5=410	OLDR4=412
VINT=414
	CALL	EDRF
	MOV	@#122,R3
	BNE	1
	JMP	HELP
1:	MOV	@#124,R1
	ADD	R1,R3
	CLR	(PC)+
DEVICE:	HALT
	CLR	(PC)+
F:	HALT
	CLR	(PC)+
I:	HALT
	CLR	(PC)+
B:	HALT
	CLR	(PC)+
S:	HALT
	CLR	(PC)+
A:	HALT
	CLR	(PC)+
V:	HALT
	CLR	(PC)+
C:	HALT
	MOVB	(R1)+,R0
	CALL	@TST2
	CMPB	R0,#'A
	BLO	ERR2
	CMPB	R0,#'Z
	BHI	ERR2
	TST	VINT
	BNE	90
	CMPB	R0,#'D
	BHI	ERR2
90:	MOVB	R0,DEVICE
	CMP	R1,R3
	BHIS	ERR
	CMPB	(R1)+,#':
	BNE	ERR
0:	CMP	R1,R3
	BHIS	1
	MOVB	(R1)+,R0
	CALL	@TST2
	CMPB	R0,#40
	BLOS	0
	CMPB	R0,#'/
	BEQ	0
	CMPB	R0,#'\
	BEQ	0
	MOV	#TAB,R5
	MOV	#TABW,R4
3:	TSTB	@R5
	BEQ	ERR1
	CMPB	R0,(R5)+
	BNE	2
	INC	@(R4)+
	BR	0
2:	TST	(R4)+
	BR	3
1:	CLR	@#122
	TST	VINT
	BEQ	1DEV
	CMPB	DEVICE,#'B
	BLOS	1DEV
	CALL	INDR
	CMP	VINT,#177640
	BNE	0DEV
	MOV	#EDRF,R2
	MOV	#1,R1
	CLR	R0
	CALL	@#160004
	BCS	ERR2
	MOV	54(R3),SIZE
	BR	2DEV
0DEV:	MOV	#EDRF,R2
	CLR	R0
	CLR	R1
	CALL	@#160004
	BCS	ERR2
	MOV	R0,SIZE
	BR	2DEV
ERR:	BR	ERR8
1DEV:	MOV	#1600.,SIZE
	TSTB	FLOP
	BNE	2DEV
	MOV	#800.,SIZE

2DEV:	TST	F
	BEQ	01
	JMP	FDSK
01:	TST	I
	BEQ	02
	JMP	IDSK
02:	TST	B
	BEQ	03
	JMP	BDSK
03:	JMP	ERR3

TAB:.ASCIZ/FIBSAVC/	.EVEN
TABW:.WORD	F,I,B,S,A,V,C
ERR2:	JSR	R1,@TXT
.ASCIZ<12>"Mformat-?-Нет устройства"<7><7><12>
	.EVEN
	BR	0E
ERR1:	MOVB	R0,KEY
	JSR	R1,@TXT
.ASCIZ<12>"Mformat-?- /"	.EVEN
	JSR	R1,@TXT
KEY:.ASCIZ"J -Неправильный ключ"<7><7><7><12>
	.EVEN
	BR	0E
ERR8:	JSR	R1,@TXT
.ASCIZ<12>"Mformat-?-Неправильные параметры"<7><7><7><12>
	.EVEN
	BR	0E

ERR3:	JSR	R1,@TXT
.ASCIZ<12>"Mformat-?-Нет ключа операции"<7><7><12>
	.EVEN
0E:	JMP	EXIT

FDSK:	JSR	R1,@TXT
.ASCIZ/ /<237>/Форматирование/<237><12>
	.EVEN
	CMPB	DEVICE,#'B
	BLOS	1
	TST	VINT
	BEQ	1
	JSR	R1,@TXT
.ASCII<12>/Mformat-?-Винчестер я не форматирую.../
.BYTE	12,7,7,7,0	.EVEN
	JMP	EXIT
1:	MOV	#DRF,R1
	MOV	#126000,R3
	MOV	#ED-DRF,R2
	MOVB	(R1)+,(R3)+
	SOB	R2,.-2
	TST	S
	BEQ	2
	JSR	R1,@TXT
	.BYTE	12
.ASCIZ/Mformat-i-Подключен драйвер "быстрого" форматирования/
.EVEN
2:	MOVB	DEVICE,DV
	JSR	R1,@TXT
	.BYTE	12
.ASCII/╙╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣ё/<12>
.ASCII/╥    Вставь чистую дискету в дисковод /
DV:.ASCII/A:   ╥/<12>
.ASCII/╥     и нажми <ВВОД> для форматирования.   ╥/<12>
.ASCII/╥         <KT> - отказ от операции.        ╥/<12>
.ASCIZ/╕╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╣╧/<12><12>
	.EVEN
4:	CLR	@#104
	EMT	6
	CMPB	R0,#12
	BEQ	3
	CMPB	R0,#3
	BNE	4
BYE:	JSR	R1,@TXT
.ASCIZ<12>/Mformat-i-Ну что, испугался?!/<12>	.EVEN
	JMP	EXIT
3:	CALL	INDR
	CLR	32(R3)
	CALL	@#126000
	BCC	01
03:	INC	RW
	CALL	OUTERR
	BR	NEXT$
01:	CLR	R0
	MOV	#EDRF,R2
	MOV	#12000,R1
	CALL	@#160004
	BCC	02
	CLR	32(R3)
	CALL	@#126000
	BCS	03
	CLR	R0
	MOV	#EDRF,R2
	MOV	#12000,R1
	CLR	RW
	CALL	@#160004
	BCC	02
	CALL	OUTERR
	BCS	NEXT$

	JSR	R1,@TXT
.ASCIZ<12><12>/Mformat-i-Нулевая дорожка испорчена/	.EVEN

	BR	NEXT$
02:	MOV	#1,TRK
	MOV	#24,BLOK
	MOV	#12,R0
	EMT	16
0F:	CALL	INFO
	MOV	BLK,R3
	CLRB	32(R3)
	MOVB	TRK,33(R3)
	CLRB	@#52
	CALL	@#126000
	BCC	1F
	INC	RW
	CALL	OUTERR
	BR	NEXT$
1F:	INC	TRK
	ADD	#24,BLOK
	CMP	TRK,MAXTRK
	BLOS	0F
	INC	V
	CALL	VERIFY
	BCC	00$
	CMPB	@#52,#7
	BEQ	1
NEXT$:	JMP	NEXT
00$:	TST	R0
	BEQ	1
	JSR	R1,@TXT
.ASCII<12><12>/ /<237>/Исправление BAD-областей.../
.BYTE	237,12,12,0
.EVEN
	CLR	TRK
	CLR	BLOK
	MOV	#BUF,R5
0I:	TSTB	(R5)+
	BEQ	1I
	MOV	R5,-(SP)
	CALL	INFO
	MOV	BLK,R3
	MOVB	TRK,33(R3)
	CLR	@#52
	CALL	FORMAT
	BCC	2I
	INC	RW
	CALL	OUTERR
5I:	TST	(SP)+
	BR	NEXT$
2I:	MOV	BLOK,R0
	MOV	#EDRF,R2
	MOV	#12000,R1
	CALL	@#160004
	BCC	3I
	CLR	RW
	CALL	OUTERR
	BCS	5I
	BR	4I
3I:	JSR	R1,@TXT
.ASCIZ/ - Ok/<12>	.EVEN
	MOV	@SP,R5
	CLRB	-(R5)
4I:	MOV	(SP)+,R5
1I:	ADD	#24,BLOK
	INC	TRK
	CMP	TRK,MAXTRK
	BLO	0I
	JSR	R1,@TXT
.ASCIZ<12>/На диске осталось/	.EVEN
	CALL	OUTBAD
	JSR	R1,@TXT
.ASCIZ/ плохих блоков./		.EVEN
1:	INC	RW
	CALL	INI
	CALL	BOOT

NEXT:	CLR	@#177130
	JSR	R1,@TXT
.ASCIZ<12><12>" Еще диск (Д/Н)?"<7><7>	.EVEN
1:	CLR	@#104
	EMT	6
	CALL	@TST2
	CMPB	R0,#'D
	BEQ	0D
	CMPB	R0,#'N
	BNE	1
	RET
0D:	MOV	#14,R0
	EMT	16
	JMP	FDSK

BDSK:	CALL	INDR
	CALL	BOOT
	JMP	EXIT


BOOT:	TST	B
	BNE	1
	RET
1:	JSR	R1,@TXT
.ASCII<12>/ /<237>/Запись загрузчика/<237><12><12>
.ASCIZ/ Анализирую диск.../<12><12>	.EVEN
	MOV	DIR,R2
	MOV	#4300,R1
	CLR	R0
	MOV	BLK,R3
	MOVB	#10,15(R3)
	CALL	@#160004
	BCC	2
	CALL	OUTERR
	BR	0E
2:	MOV	DIR,R3
	CMP	402(R3),#51414
	BEQ	3
	JSR	R1,@TXT
.ASCIZ/ Диск не MKDOS!/<12>	.EVEN
0E:	TST	(SP)+
	JMP	EXIT
3:	MOV	#20+20,R1
	CALL	@FRFIN2
	BCS	4
	CMP	20(R3),#24
	BEQ	5
4:	JSR	R1,@TXT
.ASCIZ/ Диск не может быть системным!/<12>	.EVEN
	BR	0E
5:	MOV	DIR,R3
	MOV	30(R3),-(SP)
	MOV	32(R3),-(SP)
	MOV	#Z,R1
	MOV	#ZE-Z,R4
	MOV	R3,R2
	MOVB	(R1)+,(R3)+
	SOB	R4,.-2
	MOV	(SP)+,32(R2)
	MOV	(SP)+,30(R2)
	CALL	IN3
	BCS	0E
	JSR	R1,@TXT
.ASCIZ<12>/ Загрузчик записан.../<12><12>	.EVEN
	TST	C
	BNE	0COPY
1CO:	CLC
	RET
0COPY:	MOVB	DEVICE,R0
	SUB	#101,R0
	CMPB	R0,@#120130
	BEQ	1CO
	MOVB	R0,@#120012
	CLR	LD0
	CLRB	SUBTEK
	CLRB	SUBDIR
	MOV	#NAM1,R5
	MOV	#BUF,R4
	CALL	NAMMOV
	MOV	R1,R0
	MOV	#3,(R0)+
	MOV	#BUF,(R0)+
	CLR	(R0)+
	EMT	36
	TSTB	1(R1)
	BNE	1CO
	CLR	R0
	SOB	R0,.
	SOB	R0,.
	JSR	R1,@TXT
.BYTE	214,233,224,236,221,233,12
.ASCIZ/Копирование файлов.../	.EVEN
	MOV	#BUF,R5
	MOV	@#266,R4
	ADD	R5,R4
1$:	CMP	R5,R4
	BHIS	1WSE
	MOVB	(R5)+,R0
	BEQ	1WSE
	CMPB	R0,#40
	BLOS	1$
	DEC	R5
	CALL	NAMMOV
	BCS	0WSE
	MOV	#326+2,R0
	CMPB	@R0,#40
	BLOS	1$
	CMPB	@R0,#'/
	BEQ	0MKDIR
	CMPB	@R0,#'\
	BEQ	0MKDIR
	CMPB	@R0,#'
	BNE	1MK
0MKDIR:	MOV	R5,OLDR5
	MOV	R4,OLDR4
	MOVB	#',@R0
	CLR	4(R1)
	CLR	6(R1)
	MOV	#322,@#306
	MOV	BLK,R3
	MOVB	@#120012,34(R3)
	CLR	LD1
	CALL	@RDDIR
	BCS	11$
	CALL	@DIRFIN
	BCS	2MK
	MOVB	@R3,SUBDIR
	MOVB	@R3,SUBTEK
	BR	11$
2MK:	MOV	#1,R0
4MK:	MOV	DIR,R3
	MOV	30(R3),R2
	BEQ	3MK
	ADD	#450,R3
5MK:	ADD	#30,R3
	CMPB	#377,@R3
	BEQ	5MK
	CMPB	#177,2(R3)
	BNE	6MK
	CMPB	R0,@R3
	BNE	6MK
	INC	R0
	BR	4MK
6MK:	SOB	R2,5MK
3MK:	MOV	R0,-(SP)
	MOV	DIR,R3
	CALL	@FRFIN
	BCS	11$
	MOV	DIR,R4
	MOV	R3,-(SP)
	CALL	@CREAT
	MOV	(SP)+,R3
	MOV	(SP)+,R0
	MOVB	R0,@R3
	CLRB	1(R3)
	CLR	24(R3)
	MOVB	@R3,SUBTEK
	MOVB	@R3,SUBDIR
	CALL	@SAVDIR
11$:	MOV	OLDR5,R5
	MOV	OLDR4,R4
1$$:	BR	1$
1WSE:	BR	0WSE
1MK:	MOV	#13,@R1
	MOV	#BUF+7000,2(R1)
	EMT	36
	TSTB	1(R1)
	BNE	1$
	MOV	#212,@R1
	MOV	@#264,2(R1)
	MOV	@#266,4(R1)
	EMT	36
	TSTB	1(R1)
	BEQ	1$$
0WSE:	MOV	#40000,R1
	MOV	#20000,R2
	CLR	(R1)+
	SOB	R2,.-2
	JSR	R1,@TXT
.BYTE	214,233,224,236,221,233,12,12
.ASCIZ/ Копирование файлов завершено.../	.EVEN
	CLC
	RET


NAMMOV:	MOV	#326,R2
	MOV	#"@:,(R2)+
1:	CMP	R5,R4
	BHIS	1E
	MOVB	(R5)+,R0
	BEQ	0E
	CMPB	#12,R0
	BEQ	0E
	CMPB	R0,#11
	BEQ	0E
	MOVB	R0,(R2)+
	BR	1
0E:	CLRB	(R2)+
	CMP	R2,#346
	BLO	0E
	MOV	#320,R1
	TST	(PC)+
1E:	SEC
	RET
NAM1:.ASCIZ/SYSDSK.COM/	.EVEN


IDSK:	MOVB	DEVICE,DV1
	JSR	R1,@TXT
.ASCII<12>/ /<237>/Инициализация/<237><12><12>
.ASCII" Нажми <ВВОД>, если хочешь инициализировать"<12>
.ASCII" диск "
DV1:.ASCIZ/A:, <KT> - отказ./<12>	.EVEN
1:	CLR	@#104
	EMT	6
	CALL	@TST2
	CMPB	R0,#12
	BEQ	2
	CMPB	R0,#3
	BNE	1
	JMP	BYE
2:	CALL	INDR
	CALL	VERIFY
	BCC	3
4:	JMP	EXIT
3:	CALL	INI
	BCS	4
	CALL	BOOT
	BR	4

INI:	TST	A
	BNE	ANKA
	JSR	R1,@TXT
.ASCIZ<12><12>/ /<237>/Инициализация MKDOS/<237><12>
	.EVEN
	MOV	#320,R1
	MOV	R1,@#306
	CLR	(R1)+
	MOV	#1000,(R1)+
	MOV	#24000,(R1)+
	MOV	#"BA,(R1)+
	MOV	#"D ,(R1)+
	MOV	#"TR,(R1)+
	MOV	#"AC,(R1)+
	MOV	#"K ,(R1)+
	MOV	#"  ,(R1)+
	MOV	DIR,R2
	MOV	R2,R1
	MOV	#4000,R0
	CLR	(R1)+
	SOB	R0,.-2
	MOV	#24,R0
	MOV	R0,32(R2)
	MOV	#123456,400(R2)
	MOV	#51414,402(R2)
	MOV	SIZE,466(R2)
	MOV	R0,470(R2)
	MOV	R0,520(R2)
	MOV	#BUF+1,R5
0IN:	MOV	R5,-(SP)
	MOV	DIR,R3
	MOV	#24,R1
	CALL	@FRFIN2
	BCS	0WSE
	MOV	R3,-(SP)
	MOV	DIR,R4
	MOV	#24,R1
	CALL	@CREAT2
	MOV	(SP)+,R3
	MOV	(SP)+,R5
	TSTB	(R5)+
	BEQ	1IN
	MOV	#200,@R3
1IN:	BR	0IN	
0WSE:	TST	(SP)+
2IN:	MOV	DIR,R3
	MOV	30(R3),R2
	BEQ	IN3
	ADD	#450,R3
4IN:	ADD	#30,R3
	CMPB	#377,@R3
	BEQ	4IN
	CMPB	#200,@R3
	BEQ	5IN
	SEC
	CALL	@DELETE
	BR	2IN
5IN:	SOB	R2,4IN
IN3:	MOV	DIR,R2
	MOV	#-4300,R1
	BR	IN

ANKA:	JSR	R1,@TXT
.ASCIZ<12><12>/ /<237>/Инициализация ANDOS/<237><12>
	.EVEN
	MOV	#EDRF,R1
	MOV	R1,R0
	MOV	#6000,R2
0C:	CLR	(R0)+
	SOB	R2,0C
	MOV	#ANT0,R3
	MOV	#16,R2
1C:	MOV	(R3)+,(R1)+
	SOB	R2,1C
	MOV	#EDRF,R3
	ADD	#52,R3
	MOV	#12,R2
2C:	MOV	(R3)+,(R1)+
	SOB	R2,2C
	MOV	#EDRF,R1
	ADD	#1000,R1
	MOV	#177771,R0
	MOV	#377,R4
	MOV	R0,2000(R1)
	MOV	R0,(R1)+
	MOV	R4,2000(R1)
	MOV	R4,(R1)+
	MOV	#EDRF,R2
	MOV	(PC)+,R0
SIZE:	.WORD	1600.
	CMP	R0,#1600.
	BLOS	09
	MOV	#1600.,R0
	MOV	R0,SIZE
09:	MOVB	R0,23(R2)
	SWAB	R0
	MOVB	R0,24(R2)
	MOV	#-6000,R1
IN:	CLR	R0
	MOV	BLK,R3
	MOVB	#10,15(R3)
	CALL	@#160004
	BCS	1
	JSR	R1,@TXT
.ASCIZ<12>/Емкость диска -/	.EVEN
	MOV	SIZE,R0
	CALL	@DECOUT
	JSR	R1,@TXT
.ASCIZ/ блоков./<12>	.EVEN
	CLC
	RET
1:	CALL	OUTERR
	SEC
	RET

ANT0:	.WORD 753,20220,47101,47504,20123,40,2002,1,70002
	.WORD 40000,174406,2,12,2
ANT52:	.WORD 20000,20040,20040,20040,20040,20040,40506,30524
	.WORD 20062,20040


VERIFY:	CLR	RW
	MOV	#BUF,R1
	MOV	#174.,R0
	CLRB	(R1)+
	SOB	R0,.-2
	TST	V
	BNE	0EXT
	CLC
	RET
0EXT:	JSR	R1,@TXT
.ASCII<12><12>/ /<237>
.ASCIZ/Проверка диска/<237><12><12>
	.EVEN
	MOV	BLK,R3
	MOVB	#1,15(R3)
	CLR	TRK
	CLR	BLOK
0V:	CALL	INFO
	MOV	#EDRF,R2
	MOV	#12000,R1
	MOV	BLOK,R0
	CALL	@#160004
	BCC	1V
	CMPB	34(R3),#1
	BHI	2V
	MOV	#52,R5
	CMPB	@R5,#5
	BEQ	0R
	CMPB	@R5,#3
	BLO	0R
	CMPB	@R5,#11
	BLO	2V
0R:	BIS	#100,@R3
	CALL	POSI
	BIC	#100,@R3
	CALL	POSI
	MOV	#EDRF,R2
	MOV	#12000,R1
	MOV	BLOK,R0
	CALL	@#160004
	BCC	1V
2V:	CALL	OUTERR
	BCS	0E
	MOV	TRK,R0
	BNE	1E1
	JSR	R1,@TXT
.ASCIZ<12>/Mformat-i-Нулевая дорожка испорчена/<12>	.EVEN
	SEC
	RET
1E1:	ADD	#BUF,R0
	INCB	@R0
	BR	1V
0E:	RET
1V:	INC	TRK
	ADD	#24,BLOK
	CMP	BLOK,SIZE
	BLO	0V
	CALL	INFO
	JSR	R1,@TXT
.ASCIZ<12>/Плохих блоков -/	.EVEN
OUTBAD:	CLR	R0
	MOV	#BUF,R1
	MOV	#80.,R2
009:	TSTB	(R1)+
	BEQ	010
	ADD	#24,R0
010:	SOB	R2,009
	MOV	R0,-(SP)
	CALL	@DECOUT
	MOV	(SP)+,R0
	CLC
	RET
POSI:	MOV	#177130,R4
	MOV	#310,R0
	MOV	@R3,@R4
	SOB	R0,.
	BIS	#200,@R3
	MOV	@R3,@R4
	MOV	12(R3),R0
	SOB	R0,.
	BIC	#200,@R3
	RET

INDR:	CALL	@INIDRV
	MOVB	DEVICE,R0
	SUB	#101,R0
	MOVB	R0,34(R3)
	MOVB	#125,17(R3)
	MOVB	#1,15(R3)
	MOVB	#32.,14(R3)
	TSTB	FLOP
	BEQ	1
	MOVB	#66.,14(R3)
1:	CLRB	@#52
	RET

INFO:	EMT	26
	CLR	R1
	EMT	24
	JSR	R1,@TXT
.ASCIZ/ Дор.:/	.EVEN
	MOV	TRK,R0
	CALL	@DECOUT
	JSR	R1,@TXT
.ASCIZ/ Блок:/	.EVEN
	MOV	BLOK,R0
	CALL	@DECOUT
	JSR	R1,@TXT
.ASCIZ/ /	.EVEN
	RET

OUTERR:	MOV	R3,-(SP)
	MOV	#E1,TER
	TST	(PC)+
RW:	HALT
	BEQ	1
	MOV	#E1$,TER
1:	MOVB	@#52,R4
	BEQ	0E
	BIC	#177760,R4
	ASL	R4
	ADD	#TER-2,R4
	MOV	@R4,R4
	JSR	R1,@TXT
.ASCIZ/- /	.EVEN
	MOV	R4,R1
	CLR	R2
	CALL	@EMT20
	MOV	#12,R0
	EMT	16
	MOVB	@#52,R0
	CMPB	R0,#1
	BNE	01
	TST	RW
	BEQ	0E
	BR	1E
01:	CMPB	R0,#3
	BEQ	1E
	CMPB	R0,#6
	BEQ	1E
	CMPB	R0,#7
	BEQ	1E
0E:	TST	(PC)+
1E:	SEC
	MOV	(SP)+,R3
	RET


TER:	.WORD	E1,E2,E3,E4$,E5,E6,E7,E8,E9,E10,E11
E1:.ASCIZ/CRC в зоне данных/
E1$:.ASCIZ/диск защищен от записи/
E2:.ASCIZ/CRC в зоне заголовка/
E3:.ASCIZ/привод не найден или нет позиционирования в 0/
E4$:.ASCIZ/ошибка позиционирования/
E5:.ASCIZ/не найден сектор/
E6:.ASCIZ/нет диска или он не крутится/
E7:.ASCIZ/останов пользователя/
E8:.ASCIZ/не найден адресный маркер/
E9:.ASCIZ/не найден маркер данных/
E10:.ASCIZ/нестандартный диск/
E11:.ASCIZ/ошибка имени sAQPINA/		.EVEN


EXIT:	CLR	@#177130
	JSR	R1,@TXT
.ASCIZ<12>" Нажмите любую клавишу для выхода в ДОС."
	.EVEN
	CLR	@#122
	CLR	@#104
	EMT	6
	RET




HLT:	SUB	@PC,@SP
	RTI

DRF:	TST	@#S
	BNE	1
	JMP	FORMAT
1:	JMP	FORMA

VECT04:	TST	(R5)
	MOV	#7,R0
ERROR:	MOVB	R0,@#52
	MOVB	#1,56(R3)
	BR	40
ENDS:	CLRB	56(R3)
40:	MOV	46(R3),@#4
	MTPS	52(R3)
	CCC
	RORB	56(R3)
	MOV	50(R3),SP
	RTS	PC
CRC:	TSTB	(R4)
	BPL	CRC
	MOV	#17,R2
41:	BIT	#40000,(R4)
	BNE	42
	SOB	R2,41
42:	RTS	PC

PUSK:	MOV	#177130,R4
	MOV	R4,R5
	CMP	(R5)+,(R5)	;TST	(R5)+
	BICB	#4,16(R3)
	BIT	#20,(R3)
	BEQ	1
	BISB	#4,16(R3)
1:	BIS	#20,(R3)
	MOV	(R3),(R4)
	BIC	#57,(R3)
	TSTB	32(R3)
	BEQ	2
	BIS	#40,(R3)
2:	BICB	#177774,34(R3)
	MOVB	34(R3),R1
	MOV	PC,R0
	ADD	#56,R0
	ADD	R1,R0
	BISB	(R0),(R3)
	ADD	R3,R1
	ADD	#4,R1
	MOV	R1,2(R3)
	CALL	UKAZBI
	BITB	#4,16(R3)
	BNE	5
	CLR	R1
3:	SOB	R1,3
4:	SOB	R1,4
5:	MOV	(R3),(R4)
	MOV	10(R3),R1
6:	SOB	R1,6
	RTS	PC
TBL:	.BYTE	1,2,4,10
UKAZBI:	CLR	20(R3)
	BICB	#177774,34(R3)
	MOVB	34(R3),20(R3)
	ADD	R3,20(R3)
	ADD	#22,20(R3)
	RTS	PC
POZIT:	TSTB	33(R3)
	BEQ	GO00
	TSTB	@2(R3)
	BPL	1
	CALL	GO00
1:	CMPB	@2(R3),33(R3)
	BEQ	3
	BHI	2
	CALL	STEPCE
	BR	1
2:	CALL	STEPER
	BR	1
3:	MOV	#23420,R0
4:	SOB	R0,4
	RTS	PC
STEPCE:	INCB	@2(R3)
	BMI	5
	BIS	#100,(R3)
	BR	7
5:	MOV	#4,R0
	JMP	ERROR
STEPER:	DECB	@2(R3)
	BIT	#1,(R4)
	BEQ	6
	CLRB	@2(R3)
	RTS	PC
6:	BIC	#100,(R3)
7:	MOV	#310,R0
	MOV	(R3),(R4)
8:	SOB	R0,8
	BIS	#200,(R3)
	MOV	(R3),(R4)
	MOV	12(R3),R0
9:	SOB	R0,9
	BITB	#1,@20(R3)
	BEQ	11
	BITB	#100,16(R3)
	BNE	11
	MOV	(R3),(R4)
	MOV	12(R3),R0
10:	SOB	R0,10
11:	BIC	#200,(R3)
	RTS	PC

GO00:	MOVB	#200,@2(R3)
	BISB	#100,16(R3)
12:	CALL	STEPER
	BIT	#1,(R4)
	BNE	14
	TSTB	@2(R3)
	BNE	12
	MOV	#3,R0
	BICB	#100,16(R3)
	JMP	ERROR
14:	CLRB	@2(R3)
	BICB	#100,16(R3)
	RTS	PC

GOLOVA:	MOV	#47116,(R5)
	BR	2
1:	TSTB	(R4)
	BPL	1
	MOV	#47116,(R5)
2:	SOB	R0,1
	MOV	#6,R0
3:	TSTB	(R4)
	BPL	3
	MOV	#0,(R5)
	SOB	R0,3
	BIS	#1000,(R3)
4:	TSTB	(R4)
	BPL	4
	MOV	#120641,(R5)
	MOV	(R3),(R4)
	BIC	#1000,(R3)
5:	TSTB	(R4)
	BPL	5
	MOV	40(R3),(R5)
	RTS	PC
PREKOR:	BIC	#2000,(R3)
	CMPB	14(R3),@2(R3)
	BHI	1
	BIS	#2000,(R3)
1:	MOV	(R3),(R4)
	MOV	#310,R0
2:	SOB	R0,2
	RTS	PC
FORMAT:	CLRB	32(R3)
	CALL	@#160012
	BCS	1
	INCB	32(R3)
	CALL	@#160012
1:	RET

FORMA:	MOV	SP,50(R3)
	MFPS	52(R3)
	MOV	#4,R0
	MOV	(R0),46(R3)
	MOV	PC,@R0
	ADD	#VECT04-.,(R0)
	CLRB	32(R3)
	CALL	PUSK
	CALL	POZIT
	CALL	PREKOR
	BIT	#4,(R4)
	BEQ	2
	MOV	#1,R0
1:	JMP	ERROR
2:	MOV	#1750,R0
3:	TST	@R4
	BPL	5
	SOB	R0,3
E4:	TST	(R5)
	MOV	#6,R0
	JMP	ERROR

5:	MTPS	#340
	MOV	#1001,R2
	MOV	#10.,R1
	SWAB	32(R3)
	CALL	FT
	INCB	32(R3)
	BIS	#40,@R3
	MOV	@R3,@R4
	MOV	#1001,R2
	MOV	#10.,R1
	SWAB	32(R3)
	CALL	F8
	MTPS	52(R3)
	JMP	ENDS

FT:	CLR	R0
6:	TST	(R4)
	BMI	F8
	SOB	R0,6
	BR	E4
F8:8:	MOV	#20,R0
	MOV	#177241,40(R3)
10:	CALL	GOLOVA
11:	TSTB	(R4)
	BPL	11
	MOV	32(R3),(R5)
	MOV	(R3),(R4)
12:	TSTB	(R4)
	BPL	12
	MOV	R2,(R5)
	MOV	#13,R0
	MOV	#175641,40(R3)
14:	BIT	#40000,(R4)
	BEQ	14
	CALL	GOLOVA
	MOV	#377,R0
15:	TSTB	(R4)
	BPL	15
	MOV	#77776,(R5)
	MOV	(R3),(R4)
16:	TSTB	(R4)
	BPL	16
	MOV	#77776,(R5)
	SOB	R0,16
	INC	R2
	MOV	#30,R0
17:	MOV	#177241,40(R3)
18:	BIT	#40000,(R4)
	BEQ	18
	SOB	R1,10
19:	TSTB	(R4)
	BPL	19
	MOV	#47116,(R5)
	TST	(R4)
	BPL	19
20:	TSTB	(R4)
	BPL	20
	MOV	#47116,(R5)
	TST	@R5
	SWAB	32(R3)
	RET
ED:	HALT

Z:	NOP
	BR	A110
	.BLKB	104
A110:	TST	@#177132
	MOV	#1000,SP
	MOV	#44,R0
	MOV	#6400,R1
	MOV	#120000,R2
	MOV	PC,R4
	ADD	#HL-.,R4
	MOV	R4,@#4
	MOV	#40000,@#177662
	MOV	#16000,@#177716
	MOV	#24,R0
	MOV	#10000+6400,R1
	MOV	#100000,R2
HL:	CALL	@#160004
	BCC	0OK
	CMPB	@#52,#4
	BNE	A110
	CMPB	34(R3),#1
	BHI	A110
	MOV	#401,R0
	XOR	R0,22(R3)
	BR	A110
0OK:	MOVB	34(R3),R0
	MOVB	R0,@#120131
	MOVB	R0,@#120130
	MOVB	R0,@#120012
	MOV	@#120070,12(R3)
	MOV	@#120006,R1
	MOV	#33,R2
	MOV	(R3)+,(R1)+
	SOB	R2,.-2
	JMP	@#100000
ZE:
COLOR:	MOV	R0,-(SP)
	CMPB	R0,#40
	BLO	0E
	CMPB	R0,#237
	BEQ	0E
1:	MOV	@#160,-(SP)
	EMT	16
	MOV	(SP)+,R0
	MOV	R2,-(SP)
	MOV	R1,-(SP)
	MOV	#12,R2
12:	MOVB	@R0,R1
	ROLB	R1
	BISB	R1,@R0
	BICB	#125,@R0
	ADD	#100,R0
	BPL	11
	SUB	#40000,R0
11:	SOB	R2,12
	MOV	(SP)+,R1
	MOV	(SP)+,R2
	TST	(PC)+
0E:	EMT	16
	MOV	(SP)+,R0
	RET

BUF:.BLKB	174.
EDRF:	CMP	VERS,#100000+315.
	BEQ	2
	TST	(SP)+
	RET
2:	CMPB	#300,@#177717
	BEQ	3
	TSTB	PALET
	BEQ	3
	MOV	#COLOR,SCREEN
3:	MOV	@#60,@#274
	MOV	#80.,MAXTRK
	TSTB	FLOP
	BNE	1
	MOV	#40.,MAXTRK

1:	MOV	#VINT1,@#4
	MOV	#177640,R0
	TST	@R0
	BR	0VINT
VINT1:	CMP	(SP)+,(SP)+
	MOV	#VINT2,@#4
	MOV	#177740,R0
	TST	@R0
	BR	0VINT
VINT2:	CMP	(SP)+,(SP)+
	CLR	R0
0VINT:	MOV	R0,VINT
	MOV	#HLT,@#4

	JSR	R1,@TXT
.ASCII<232><233><224><236><221><233>
.ASCII/ /<237>"(C)BD Mformat v4.1"<237>
.BYTE	12,12,0		.EVEN
	RET

HELP:	JSR	R1,@TXT
.ASCII/   MFORMAT запускается из командной строки так:/<12><12>
.ASCII"     A:\>MFORMAT <DEV>:/<KEY1>/<KEY2>..."<12>
.ASCII"         где <DEV> - имя устройства (дисковода);"<12>
.ASCII"             /<KEY>  - ключи:"<12>
.ASCII"     /F - форматировать диск;"<12>
.ASCII"     /I - инициализировать диск;"<12>
.ASCII"     /B - записать загрузчик."<12>
.ASCII"          Кроме того:"<12>
.ASCII"     /S - подключить драйвер быстрого форматирования"<12>
.ASCII"                             (совместно с ключом /F);"<12>
.ASCII"     /V - делать проверку на BAD-блоки"<12>
.ASCII"              (совместно с ключом /I);"<12>
.ASCII"     /C - переписать с системного диска файлы перечис-"
.BYTE	12
.ASCII"          ленные в SYSDSK.COM (совместно с ключом /B);"<12>
.ASCII"     /A - инициализировать диск в формате ANDOS"<12>
.ASCII"               (совместно с ключами /F или /I);"<12><12>
.ASCIZ"                               (C) Д.Бутырский 1995 г."<12>
	.EVEN
	JMP	EXIT
.END
