$DEBUG PAGELENGTH(55) /***********************/ /* */ /* E X $ F I X M A P */ /* */ /***********************/ M$EX$FIXMAP: DO; $NOLIST $INCLUDE(COMMON.DCL) $INCLUDE(ISIS.DCL) $INCLUDE(:F1:ISISIO.DCL) $INCLUDE(STRING.DCL) $LIST DECLARE MSG$FILL$IN(1) BYTE EXTERNAL; DECLARE MSG$CONVENTIONS(1) BYTE EXTERNAL; DECLARE ECOMP5 STRING EXTERNAL; EX$FIXMAP: 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 CHAR STRUCTURE( ML ADDRESS, L ADDRESS, D(2) BYTE ); DECLARE COMP1 STRUCTURE( ML ADDRESS, L ADDRESS, D(8) BYTE ) DATA (7,7,'FIXMAP ',0); DECLARE I BYTE; DECLARE MSG1(*) BYTE DATA( LF, ' --- MAP BAD SECTORS ON A HARD DISK ---',CR,LF, LF, ' DISK DRIVE NUMBER : ', 0); DECLARE MSG2(*) BYTE DATA( CLR$SCRN, LF, 'FIXMAP COMMANDS (SEE "ISIS-II USER''S GUIDE"):',CR,LF, LF, 0); DECLARE MSG3(*) BYTE DATA( LF, ' MARK disk address Change the known state of a sector', ' from good to bad.',CR,LF, ' FREE disk address Change the known state of a sector', ' from bad to good.',CR,LF, ' LIST [ filename ] List all known bad sectors.',CR,LF, ' COUNT List the number of known bad sectors.',CR,LF, ' QUIT Exit to ISIS-II without recording', ' changes.',CR,LF, ' EXIT Record changes and exit to ISIS-II',CR,LF, LF, 'where disk address is given as:',CR,LF, ' track sector [ T ]',CR,LF, ' track = 0-199 sector = 1-144 T = process 36 sectors at once',CR,LF, LF, LF, 0); CHAR.ML,CHAR.L=1; CHAR.D(1)=0; CALL MSG$OUT(.MSG1); COM$LINE.L=0; CALL APPEND$S(.COM$LINE,.COMP1); CHAR.D(0)=CI; DO WHILE ((CHAR.D(0)<'0') OR (CHAR.D(0)>'3')); CALL CO(BELL); CHAR.D(0)=CI; END; CALL CO(CHAR.D(0)); CALL APPEND$S(.COM$LINE,.CHAR); CALL APPEND$S(.COM$LINE,.ECOMP5); CALL MSG$OUT(.MSG2); CALL MSG$OUT(.MSG$CONVENTIONS); CALL MSG$OUT(.MSG3); COM$TYPE=1; END EX$FIXMAP; END M$EX$FIXMAP;