100 ; PROG NAME IS 'FORMAT' 26 JUN 87
110 ;
120 HIMEM $040000:POKE $00D81E,HEX(00040000):DIM A$1,S$1,CAT%[2048]:CLS:DR 1
130 VTAB 5:PRINT " THIS UTILITY WILL CREATE EITHER A (BOOTABLE) SYSTEM DISK OR A DATA DISK."
140 PRINT:PRINT "                    !!!! CAUTION !!!!! "
150 PRINT " THIS UTILITY WILL ERASE ALL DATA ON THE DESTINATION DISK!"
160 VTAB 10:INPUT "DO YOU WANT A SYSTEM DISK (Y/N) ",S$
170 IF ASC(S$)>96 THEN S$=CHR$(ASC(S$)-32)
180 IF S$="Y" GOTO 190 ELSE IF S$="N" GOTO 230 ELSE GOTO 160
190 PRINT " PLACE A SYSTEM DISK IN DRIVE 1 AND PRESS RETURN WHEN READY.";:EDIT A$
200 CALL $00D80C:PEEKW $014008,FRSTSECT%
210 IF FRSTSECT%<>74 THEN PRINT "THIS DISK IS NOT A SYSTEM DISK.":GOTO 190
220 PRINT " READING SYSTEM TRACKS...":POKE $00D822,HEX(004A):CALL $00D7FC
230 INPUT "DRIVE # TO FORMAT (1 OR 2) ",DR%
240 IF DR%<>1 THEN IF DR%<>2 GOTO 230
250 DR DR%
260 INPUT "ENTER '1' FOR SINGLE '2' FOR DOUBLE SIDED FORMAT ",SIDES%
270 IF SIDES%<>1 THEN IF SIDES%<>2 GOTO 260
280 POKEW $00D81C,SIDES%:A$=""
290 PRINT " INSERT THE DESTINATION DISK AND PRESS RETURN WHEN READY...";:EDIT A$
300 PRINT " FORMATTING... THIS WILL TAKE ABOUT";SIDES%*32;"SECONDS.":CALL $00D7F8:; FORMAT THE DISK
310 POKE $014000,CAT%[]:; ZERO THE CATALOG
320 IF S$="Y" GOTO 370
330 IF SIDES%=1 THEN POKE $014000,HEX(01940009007E00000009)
340 IF SIDES%=2 THEN POKE $014000,HEX(03240009007E00000009)
350 CALL $00D808:; WRITE THE CATALOG
360 GOTO 410
370 IF SIDES%=1 THEN POKE $014000,HEX(0194004A007E0000004A):POKE $040025,HEX(01):POKE $0401FF,HEX(76)
380 IF SIDES%=2 THEN POKE $014000,HEX(0324004A007E0000004A):POKE $040025,HEX(02):POKE $0401FF,HEX(75)
390 PRINT " WRITING THE SYSTEM TRACKS...":CALL $00D800:; WRITE THE SYSTEM TRACKS
400 CALL $00D808:; WRITE THE CATALOG
410 VTAB 23:PRINT " FORMAT IS DONE."
420 DR 1:END
