/*
* $VER: MakeSave.rexx 1.0 (30/7/97) Tak Tang
*
* DESCRIPTION : Create a "gloomgame" save file from the script
*
* USAGE : rx MakeSave.rexx
*/

OPTIONS RESULTS

IF 0=OPEN(SOURCE,"SCRIPT","READ") THEN
  DO
    SAY 'SORRY, CANT OPEN SCRIPT'
    EXIT
  END

IF 0=OPEN(DEST,"gloomgame","WRITE") THEN
  DO
    SAY 'SORRY, CANT OPEN SAVE FILE'
    EXIT
  END

OFFSET=0
SAVECOUNT=0

DO WHILE 0=EOF(SOURCE)
  DATA=READLN(SOURCE)
  IF UPPER(LEFT(DATA,5))="REST_" THEN
    DO
      SAVECOUNT = SAVECOUNT +1
      IF SAVECOUNT<9 THEN
        DO
          CALL WRITESAVE OFFSET+5
          SAY 'Save' SAVECOUNT ': "' || RIGHT(DATA,LENGTH(DATA)-5) || '"'
        END
      ELSE
        DO
          SAY 'Skip' SAVECOUNT ': "' || RIGHT(DATA,LENGTH(DATA)-5) || '"'
        END
    END
  OFFSET = OFFSET + 1 + LENGTH(DATA)
END

/* PAD OUT "GLOOMGAME" IF NECESSARY */
IF SAVECOUNT<8 THEN
  DO
    WRITECH(DEST,LEFT("gamegamegamegamegamegamegamegame",(8-SAVECOUNT)*4))
  END
ELSE IF SAVECOUNT >8 THEN
  DO
    SAY 'WARNING!  Script has more than 8 rests.  Extras have been skipped.'
  END

/* CLOSE FILE HANDLES */
CLOSE(SOURCE)
CLOSE(DEST)

EXIT

WRITESAVE:
PARSE ARG V
  S="game"
  DO I=4 TO 1 BY -1
    B=V // 256
    S=OVERLAY( D2C(B), S , I , 1)
    V=V%256
  END
  WRITECH(DEST,S)
RETURN

/* END OF FILE */

