$DEBUG PAGELENGTH(55) /*********************/ /* */ /* E X $ D C O P Y */ /* */ /*********************/ M$EX$DCOPY: DO; $NOLIST $INCLUDE(COMMON.DCL) $INCLUDE(ISIS.DCL) $INCLUDE(:F1:ISISIO.DCL) $INCLUDE(STRING.DCL) $LIST 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$DCOPY: 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(2) BYTE ) DATA ( 1,1,'I',0, 1,1,'V',0 ); DECLARE YESNO STRUCTURE( L BYTE, D(2) BYTE ); DECLARE COMP1 STRUCTURE( ML ADDRESS, L ADDRESS, D(7) BYTE ) DATA (6,6,'DCOPY ',0); DECLARE I BYTE; DECLARE MSG1(*) BYTE DATA( LF, '--- COPY A WHOLE FLOPPY DISK', ' ( in drive 0 ) TO ANOTHER ( in drive 1 ) ---',CR,LF, LF, LF, 0); DECLARE MSG2(*) BYTE DATA( 'Initialize output disk before copying',CR,LF, 'Verify output disk data after copying',CR,LF, 0); DECLARE MSG3(*) BYTE DATA( CLR$SCRN, 'After finished copying, type E and RETURN',CR,LF, LF, LF, 0); YESNO.L=LENGTH(YESNO.D); YESNO.D(0)=1; YESNO.D(1)=1; CALL MSG$OUT(.MSG1); COM$LINE.L=0; CALL APPEND$S(.COM$LINE,.COMP1); 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 APPEND$S(.COM$LINE,.ECOMP5); CALL MSG$OUT(.MSG$BEWARE); IF UPPER(CI)<>'Y' THEN DO; COM$TYPE=0; CALL MSG$OUT(.(CLR$SCRN,0)); END; ELSE DO; CALL MSG$OUT(.MSG3); COM$TYPE=1; END; END EX$DCOPY; END M$EX$DCOPY;