(* 1---Module 06---1 *) PROCEDURE erasems_dos; VAR filename : str20; next, i, err : integer; stop : boolean; (* 2---------------2 *) PROCEDURE erasefiles; VAR i : integer; cl : integer; BEGIN (* erasefiles *) REPEAT writeln; FOR i := 1 TO namesize DO IF NOT (dos_fcb^.name[i] = ' ') THEN write(dos_fcb^.name[i]); write('.'); FOR i := 1 TO typesize DO write(dos_fcb^.extention[i]); cl := dos_fcb^.clusterno; IF (cl <= nclusters) THEN BEGIN next := cl; REPEAT cl := next; next := fatpointer(cl); setfatpointer(cl, 0); UNTIL ((next > nclusters) OR (next = 0)); END; dos_fcb^.name[1] := #$e5; writesector(dirsector, dirtrack, addr(dirbuffer), true); searchnext(filename, err); stop := break OR bioserror; UNTIL (err = eodirectory) OR stop; END; (* erasefiles *) (* 2---------------2 *) BEGIN (* erasems_dos *) identifyms_dos; IF (identity <> unidentified) THEN BEGIN clrscr; write('Erase MS-DOS files. MS-DOS directory:'); dirms_dos(true); writeln; write('File Name to Erase From MS-DOS: '); readln(filename); writeln; stop := false; IF filename = '' THEN write('Aborted, ') ELSE BEGIN searchfirst(filename, err); IF (err = $ff) THEN write('File Not Found, ') ELSE BEGIN write('Erasing -'); erasefiles; writeln; END; IF stop THEN write('Aborted, '); putfat; END; continue; END; END; (* erase_msdos *) (* 1---------------1 *) (********************) (* *) (* main program *) (* *) (********************) BEGIN (* transfer *) IF checkdriver THEN BEGIN clrscr; defaultdisk := bdos(25); REPEAT gotoxy(1, 5); write('Which Drive is the MS-DOS Disk in? '); read(kbd, selection); write(upcase(selection), ':'); ms_dos_drive := ord(upcase(selection)) - ord('A'); writeln; write('Which drive is the CP/M Disk in? '); read(kbd, cpm_drivech); cpm_drivech := upcase(cpm_drivech); write(cpm_drivech, ':'); cpm_drive := ord(upcase(cpm_drivech)) - ord('A'); biosselect(cpm_drive); UNTIL NOT bioserror; writeln; biosselect(defaultdisk); done := false; delay(1000); REPEAT selection := mainselection; clrscr; CASE selection OF '1': writems_dos; '2': readms_dos; '3': dirms_dos(false); '4': mapms_dos; '5': dircpm(true); '6': erasems_dos; '7': restorefat; '8': done := true; END; (* case *) UNTIL done; END; END. (* transfer *)