! 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