REM CHANGE TYPE SECTOR BYTES AS STRING * 512 END TYPE DIM RECORD AS SECTOR REM initialize RECORD.BYTES = STRING$(512," ") C$ = CHR$(32) L = 1 REM open files INPUT "input filename: ";F$ INPUT "output filename: ";O$ INPUT "log filename: ";G$ OPEN F$ FOR RANDOM AS #1 LEN = LEN(RECORD) OPEN O$ FOR RANDOM AS #2 LEN = LEN(RECORD) OPEN G$ FOR OUTPUT AS #3 INPUT "want to make changes (Y/N)";E$ E = 0 IF E$ = "Y" THEN E = 1 ELSEIF E$ = "y" THEN E = 1 END IF OPEN "echo." FOR OUTPUT AS #4 REM initialize sector counter: S = 0 DO WHILE NOT EOF(1) REM increment sector counter S = S + 1 REM read next sector GET #1, S, RECORD REM log this input byte IF L = 1 THEN P$ = MID$(RECORD.BYTES,1,1) P = ASC(P$) PRINT #3, "byte ";P$;" is ";P END IF REM look thru byte pairs FOR I = 2 TO 512 J = 514 - I K = J - 1 REM pull byte "J": M$ = MID$(RECORD.BYTES,J,1) REM REM pull byte "K": N$ = MID$(RECORD.BYTES,K,1) REM convert to numeric equivalents M = ASC(M$) N = ASC(N$) REM log this input byte IF L = 1 THEN P$ = MID$(RECORD.BYTES,I,1) P = ASC(P$) PRINT #3, "byte ";P$;" is ";P END IF IF E = 1 THEN IF J = 512 THEN IF M = 13 THEN IF N = 13 THEN MID$(RECORD.BYTES,K,1) = C$ ELSE MID$(RECORD.BYTES,J,1) = C$ END IF END IF ELSE IF M = 13 THEN IF N = 13 THEN MID$(RECORD.BYTES,K,1) = C$ END IF END IF END IF END IF NEXT I REM write this record: PUT #2, S, RECORD PRINT "wrote sector ";S PRINT #4, "wrote sector ";S REM get next record: LOOP CLOSE PRINT "number of sectors written: ";S PRINT "all done!" STOP END