RLE - Run Length Compression Decompiler Test.

This test was run using version 0.1.5 on 8/19/97.

Original De-Compiled
  1 * RUN LENGTH ENCODE
  2 * C) 1997 RENEJM ENTERPRISES, INC.
  3 * ALL RIGHTS RESERVED
  4 *
  5 EQUATE REPEATCHAR TO '~'
  6 *
  7 PRINT 'FILE ':
  8 INPUT FILE
  9 PRINT 'ID ':
 10 INPUT ID
 11 PRINT 'NEW ID ':
 12 INPUT NID
 13 IF NID = '' THEN
 14    PRINT 'REPLACE (Y OR RETURN) ':
 15    INPUT ANS
 16    IF ANS NE 'Y' THEN STOP
 17    NID = ID
 18 END
 19 *
 20 OPEN FILE TO F.FILE ELSE STOP
 21 READ ITEM FROM F.FILE,ID ELSE STOP
 22 *
 23 NITEM = ''
 24 LITEM = LEN(ITEM)
 25 *
 26 TITEM = 1
 27 CH = ITEM[TITEM,1]
 28 STACKCHAR = CH
 29 STACKCOUNT = 1
 30 FOR TITEM = 2 TO LITEM
 31     CH = ITEM[TITEM,1]
 32     BEGIN CASE
 33           CASE STACKCHAR = REPEATCHAR
 34                GOSUB 1000
 35                STACKCHAR = CH
 36                STACKCOUNT = 1
 37           CASE CH = STACKCHAR
 38                IF STACKCOUNT > 90 THEN
 39                   GOSUB 1000
 40                   STACKCHAR = CH
 41                   STACKCOUNT = 1
 42                END ELSE
 43                   STACKCOUNT = 
  + STACKCOUNT + 1
 44                END
 45           CASE 1
 46                GOSUB 1000
 47                STACKCHAR = CH
 48                STACKCOUNT = 1
 49     END CASE
 50 NEXT TITEM
 51 GOSUB 1000
 52 *
 53 PRINT LEN(ITEM):' -> ':LEN(NITEM)
 54 PRINT ID:'->':NID
 55 WRITE NITEM ON F.FILE,NID
 56 STOP
 57 *
 58 1000 ****
 59 IF STACKCOUNT LE 3 THEN
 60    IF STACKCHAR = REPEATCHAR THEN
 61        NITEM = NITEM:REPEATCHAR:REPEATCHA
  + R:CHAR(32)
 62    END ELSE
 63        NITEM = NITEM : STR(STACKCHAR,STAC
  + KCOUNT)
 64    END
 65 END ELSE
 66    NITEM = NITEM : REPEATCHAR : 
  + STACKCHAR : CHAR(31+STACKCOUNT)
 67 END
 68 RETURN
  1 *
  2 *
  3 *
  4 *
  5 *
  6 PRINT 'FILE ':
  7 INPUT FILE
  8 PRINT 'ID ':
  9 INPUT ID
 10 PRINT 'NEW ID ':
 11 INPUT NID
 12 IF NID EQ '' THEN
 13    PRINT 'REPLACE (Y OR RETURN) ':
 14    INPUT ANS
 15    IF NOT(ANS EQ 'Y') THEN
 16       STOP
 17    END
 18    NID = ID
 19 END
 20 *
 21 OPEN '',FILE TO F.FILE ELSE
 22      STOP
 23 END
 24 READ ITEM FROM F.FILE,ID ELSE
 25      STOP
 26 END
 27 *
 28 NITEM = ''
 29 LITEM = LEN(ITEM)
 30 *
 31 TITEM = 1
 32 CH = ITEM[TITEM,1]
 33 STACKCHAR = CH
 34 STACKCOUNT = 1
 35 FOR TITEM = 2 TO LITEM
 36     CH = ITEM[TITEM,1]
 37 *
 38     BEGIN CASE
 39           CASE STACKCHAR EQ '~'
 40                GOSUB 200
 41                STACKCHAR = CH
 42                STACKCOUNT = 1
 43           CASE CH EQ STACKCHAR
 44                IF NOT(STACKCOUNT LE 90) 
  + THEN
 45                   GOSUB 200
 46                   STACKCHAR = CH
 47                   STACKCOUNT = 1
 48                END ELSE
 49                   STACKCOUNT = 
  + STACKCOUNT + 1
 50                END
 51           CASE 1
 52                GOSUB 200
 53                STACKCHAR = CH
 54                STACKCOUNT = 1
 55     END CASE
 56 NEXT TITEM
 57 GOSUB 200
 58 *
 59 PRINT LEN(ITEM) : ' -> ' : LEN(NITEM)
 60 PRINT ID : '->' : NID
 61 WRITE NITEM ON F.FILE,NID
 62 STOP
 63 *
 64 200 *
 65 IF STACKCOUNT LE 3 THEN
 66    IF STACKCHAR EQ '~' THEN
 67       NITEM = NITEM : '~' : '~' : ' '
 68    END ELSE
 69       NITEM = NITEM : STR(STACKCHAR,STACK
  + COUNT)
 70    END
 71 END ELSE
 72    NITEM = NITEM : '~' : STACKCHAR : 
  + CHAR(31 + STACKCOUNT)
 73 END
 74 RETURN
 75 *
 76 STOP
 77 END

Back

INFO

Home


jim@renejm.com
(C) 1998 RENEJM Enterprises, Inc. All Rights Reserved.