$DEBUG PAGELENGTH(55) /***********************/ /* */ /* E X $ F O R M A T */ /* */ /***********************/ M$EX$FORMAT: DO; $NOLIST $INCLUDE(COMMON.DCL) $INCLUDE(ISIS.DCL) $INCLUDE(:F1:ISISIO.DCL) $INCLUDE(STRING.DCL) $LIST GET$FNAME: PROCEDURE(NAME$P,TYPE,WILDCARD,NULLNAME,EXTPNT) EXTERNAL; DECLARE NAME$P ADDRESS, TYPE BYTE, WILDCARD BOOLEAN, NULLNAME BOOLEAN, EXTPNT BOOLEAN; END GET$FNAME; SWITCH: PROCEDURE(YESNO$P,MSG$P) EXTERNAL; DECLARE (YESNO$P,MSG$P) ADDRESS; END; DECLARE MSG$FILL$IN(1) BYTE EXTERNAL; DECLARE MSG$BEWARE(1) BYTE EXTERNAL; DECLARE ECOMP5 STRING EXTERNAL; DECLARE ECOMP8 STRING EXTERNAL; EX$FORMAT: PROCEDURE (COM$LINE$P,COM$TYPE$P) PUBLIC; DECLARE COM$LINE$P ADDRESS, COM$TYPE$P ADDRESS; DECLARE (COM$LINE BASED COM$LINE$P) STRING, (COM$TYPE BASED COM$TYPE$P) BYTE; DECLARE NAME STRUCTURE( ML ADDRESS, L ADDRESS, D(15) BYTE ); DECLARE SWITCHES(2) STRUCTURE( ML ADDRESS, L ADDRESS, D(3) BYTE ) DATA ( 2,2,' S',0, 2,2,' A',0 ); DECLARE YESNO STRUCTURE( L BYTE, D(2) BYTE ); DECLARE COMP1 STRUCTURE( ML ADDRESS, L ADDRESS, D(8) BYTE ) DATA (7,7,'FORMAT ',0); DECLARE CHAR BYTE, I BYTE; DECLARE MSG1(*) BYTE DATA( LF, '--- FORMAT A NEW DISK AND COPY FILES ---',CR,LF, LF, 'NEW DISK NAME',CR,LF, '..............',CR, 0); DECLARE MSG2(*) BYTE DATA( 'Copy system files',CR,LF, 'Copy all files',CR,LF, 0); DECLARE MSG3(*) BYTE DATA( CR,LF, LF, 'DRIVE NUMBER OF SOURCE SYSTEM DISK',CR,LF, '0 ( Type RETURN for default drive number )',CR, 0); YESNO.L=LENGTH(YESNO.D); YESNO.D(0)=1; YESNO.D(1)=0; CALL MSG$OUT(.MSG$FILL$IN); CALL MSG$OUT(.MSG1); COM$LINE.L=0; CALL APPEND$S(.COM$LINE,.COMP1); CALL GET$FNAME(.NAME,1,FALSE,FALSE,FALSE); CALL APPEND$S(.COM$LINE,.NAME); CALL MSG$OUT(.(CR,LF,LF,0)); CALL SWITCH(.YESNO,.MSG2); DO I=0 TO YESNO.L-1; IF YESNO.D(I)=1 THEN CALL APPEND$S(.COM$LINE,.SWITCHES(I)); END; CALL MSG$OUT(.MSG3); CHAR=CI; DO WHILE NOT(((CHAR>='0') AND (CHAR<='9')) OR (CHAR=CR)); CALL CO(BELL); CHAR=CI; END; IF CHAR<>CR THEN DO; CALL CO(CHAR); CALL APPEND$S(.COM$LINE,.ECOMP8); COM$LINE.D(COM$LINE.L)=CHAR; COM$LINE.L=COM$LINE.L+1; COM$LINE.D(COM$LINE.L)=0; END; CALL APPEND$S(.COM$LINE,.ECOMP5); CALL MSG$OUT(.MSG$BEWARE); IF UPPER(CI)<>'Y' THEN COM$TYPE=0; ELSE COM$TYPE=1; CALL MSG$OUT(.(CLR$SCRN,0)); END EX$FORMAT; END M$EX$FORMAT;