! SEQRAN.BAS - Convert a Sequential Image file back to Random ! (Hash total remains the same) ! Originally appeared in AMUS.LOG Vol 8 No 10 (Oct'85) pp 41+ ! Modified by Brad Horine, 29-Jan-87 ! ! The hash totals will be the same ONLY if the .SEQ file was created ! using RANSEQ or a similar program. ! ! NOTE: This program also makes use of the XCALL routine CONT.SBR ! PROGRAM SEQRAN, 1.0(103) ! MAP1 REC01,F MAP1 RAND'SIZE,F MAP1 EXT$,S,3 MAP1 FOUND,F MAP1 RAND'NAME$,S,30 MAP1 SEQ'NAME$,S,30 MAP1 SEQ'SAVE$,S,30 MAP1 SEQ'DOT,F MAP1 SEQ'COLON,F MAP1 SEQ'BRACK,F MAP1 SEQ'DELIM,F MAP1 ERR'CODE,F MAP1 ERROR'MSG(2),S,40 ERROR'MSG(1) = "Sequential file not found" ERROR'MSG(2) = "File is not sequential" ! PRINT TAB(-1,0); "Sequential to Random File Conversion Utility" ! PRINT TAB(3,1); "Name of .SEQ image file: "; INPUT LINE SEQ'NAME$ ! ! Default to .SEQ if no extension given ! SEQ'DEFAULT: SEQ'SAVE$ = SEQ'NAME$ SEQ'COLON = INSTR(1, SEQ'NAME$, ":") SEQ'DOT = INSTR(1, SEQ'NAME$, ".") SEQ'BRACK = INSTR(1, SEQ'NAME$, "[") IF SEQ'DOT <> 0 THEN GOTO LOOKUP'FILE IF SEQ'BRACK = 0 THEN SEQ'NAME$ = SEQ'NAME$ + ".SEQ" & ELSE SEQ'NAME$ = SEQ'NAME$[1;SEQ'BRACK-1] + ".SEQ" & + SEQ'NAME$[SEQ'BRACK,LEN(SEQ'NAME$)] ! LOOKUP'FILE: LOOKUP SEQ'NAME$, FOUND IF FOUND = 0 THEN ERR'CODE = 1: GOTO ERROR'OUT IF FOUND < 0 THEN ERR'CODE = 2: GOTO ERROR'OUT RAND'SIZE = INT((FOUND * 510)/512) ! PRINT TAB(5,1); "Enter 3-letter EXTENSION of random file: "; INPUT LINE EXT$ ! ! Create a filnam.EXT in this PPN ! IF SEQ'COLON = 0 AND SEQ'DOT = 0 AND SEQ'BRACK = 0 & THEN RAND'NAME$ = SEQ'SAVE$ + "." + EXT$ : & GOTO MAKE'RANDOM IF SEQ'DOT > 0 AND SEQ'BRACK = 0 THEN SEQ'DELIM = SEQ'DOT IF SEQ'BRACK > 0 AND SEQ'DOT = 0 THEN SEQ'DELIM = SEQ'BRACK IF SEQ'BRACK > 0 AND SEQ'DOT > 0 THEN SEQ'DELIM = & SEQ'DOT MIN SEQ'BRACK RAND'NAME$ = SEQ'NAME$[(1 MAX SEQ'COLON),SEQ'DELIM-1] + EXT$ ! MAKE'RANDOM: ALLOCATE RAND'NAME$, RAND'SIZE ! PRINT TAB(7,1); "Performing conversion, please wait ... "; ! OPEN #1, RAND'NAME$, RANDOM, 512, REC01 OPEN #2, SEQ'NAME$, INPUT ! XCALL CONT ! PRINT TAB(9,1); "Conversion complete. Data is in "; RAND'NAME$ GOTO CLOSE'FILES ! ERROR'OUT: PRINT : PRINT CHR(7); "?"; ERROR'MSG(ERR'CODE) ! CLOSE'FILES: CLOSE #1: CLOSE #2 PRINT : END