    1 CLS: 
      X = PEEK(16912): 
      X = X OR 64: 
      POKE 16912, X: 
      GOTO 73 
------------------------------------------------------------- 
    2 GOSUB 4: 
      IF   C = V0 
      THEN RETURN: .......................................... 
      ELSE P = INSTR (P, B$(BP), CHR$(V0)): 
           IF   P 
           THEN C = V0: 
                RETURN: ..................................... 
           ELSE P = V8: 
                GOTO 2 ...................................... 
------------------------------------------------------------- 
    3 GOSUB 4: 
      PC = C: 
      GOSUB 4: 
      A! = CVI(CHR$(PC) + CHR$(C)): 
      IF   A! < V0 
      THEN A! = 65536 + A!: 
           RETURN: .......................................... 
      ELSE RETURN  .......................................... 
------------------------------------------------------------- 
    4 P = P + V1: 
      IF   P < V9 
      THEN 5: ............................................... 
      ELSE P = V1: 
           IF   BP 
           THEN BP = V0: 
                GOSUB 6: 
           ELSE BP = V1 
    5 C = ASC(MID$(B$(BP), P)): 
      RETURN  
------------------------------------------------------------- 
    6 GET V1, RN: 
      RN = RN + V1: 
      RETURN  
------------------------------------------------------------- 
    7 X = LEN(LN$): 
      IF   X + VE < PW 
      THEN RETURN: .......................................... 
      ELSE IF   RIGHT$(LN$, V1) = SP$ 
           THEN 8: .......................................... 
           ELSE IF   X + V6 < PW 
                THEN RETURN  ................................ 
    8 GOSUB 26: 
      RETURN  
------------------------------------------------------------- 
    9 IF   PEEK(PK) = V2 
      THEN CLS: 
           PRINT @348, "ABORTED!": 
           QQ = V1: 
           CLOSE V1: 
           RETURN: .......................................... 
      ELSE GOSUB 3: 
           IF   A! = 0 
           THEN 10: ......................................... 
           ELSE GOSUB 3: 
                IF   A! < FL! 
                THEN PRINT A!: 
                     GOSUB 2: 
                     GOTO 9: ................................ 
                ELSE IF   A! > TL! 
                     THEN 10: ............................... 
                     ELSE GOSUB 11: 
                          GOSUB 26: 
                          GOTO 9 ............................ 
------------------------------------------------------------- 
   10 LN$ = STRING$(PW, 42): 
      FF = V0: 
      NF = V0: 
      C = V1: 
      GOSUB 26: 
      CLOSE V1: 
      X$ = "ALL DONE!": 
      GOSUB 72: 
      RETURN  
------------------------------------------------------------- 
   11 C = V0: 
      FF = V0: 
      NT = V0: 
      QF = V0: 
      VB = V0: 
      FX$ = "": 
      LN$ = RIGHT$("     " + STR$(A!), V5) + STRING$(NF 
      + V1, VS) 
   12 PC = C: 
      GOSUB 4: 
      IF   C = V0 
      THEN RETURN: .......................................... 
      ELSE IF   C = VO AND PC = VO OR C = 251 
           THEN 12: ......................................... 
           ELSE IF   C <> 149 
                THEN 14: .................................... 
                ELSE GOSUB 28: 
                     MID$(LN$, LEN(LN$) - V4, V4) =  
                     "ELSE": 
                     VB = 141: 
                     IF   FX$ = "ELSE" 
                     THEN LN$ = MID$(LN$, V5 + V1): 
                          FF = (FF - V5) * - (V5 <  
                          = FF) 
   13 FX$ = "ELSE": 
      GOTO 12 
------------------------------------------------------------- 
   14 IF   QF 
      THEN 16: .............................................. 
      ELSE IF   PC = VO AND VB <> V0 
           THEN GOSUB 26 
   15 IF   C > V7 
      THEN 20: .............................................. 
      ELSE IF   VB <> 136 
           THEN IF   C = VE OR C = VS 
                THEN 12 ..................................... 
------------------------------------------------------------- 
   16 IF   C > V7 
      THEN C = VP 
   17 IF   C = Q 
      THEN QF = NOT QF: 
      ELSE IF   C = VE 
           THEN GOSUB 26: 
                GOTO 12: .................................... 
           ELSE IF   C = 44 AND VB = 135 
                THEN NF = (NF - V5) * - (V5 <= NF): 
                     LN$ = LEFT$(LN$, V6) + MID$(LN$,  
                     7 + V5) 
   18 LN$ = LN$ + CHR$(C): 
      IF   QF <> - 1 AND C = 44 OR C = 59 
      THEN LN$ = LN$ + SP$ 
   19 GOSUB 7: 
      GOTO 12 
------------------------------------------------------------- 
   20 IF   C = 129 
      THEN NF = NF + V5: 
      ELSE IF   C = 135 AND FX$ = "" 
           THEN MID$(LN$, LEN(LN$) - V4, V4) = "NEXT": 
                NF = (NF - V5) * - (V5 <= NF): 
                VB = C: 
                GOTO 12: .................................... 
           ELSE IF   C = 143 
                THEN FF = FF + V5: 
                     NT = NT + V1: 
                     FX$ = "IF": 
                ELSE IF   C = 147 
                     THEN QF = - V2: 
                          IF   PC = VO 
                          THEN MID$(LN$, LEN(LN$),  
                               V1) = "'": 
                               GOTO 12 ...................... 
------------------------------------------------------------- 
   21 IF   C = 202 
      THEN GOSUB 26: 
           MID$(LN$, LEN(LN$) - V4, V4) = "THEN": 
           VB = 141: 
           GOTO 12: ......................................... 
      ELSE IF   RIGHT$(LN$, V1) <> SP$ AND PC <> 40 
           THEN LN$ = LN$ + SP$ 
   22 IF   C < 212 OR C > 214 
      THEN 23: .............................................. 
      ELSE X = ASC(RIGHT$(LN$, V2)): 
           IF   X > 59 AND X < 63 
           THEN LN$ = LEFT$(LN$, LEN(LN$) - V1) 
   23 LN$ = LN$ + RW$(C - V7): 
      IF   INSTR (" 130 131 188 192 196 198 ", STR$(C)) 
           OR C > 214 
      THEN 24: .............................................. 
      ELSE LN$ = LN$ + SP$ 
   24 GOSUB 7: 
      IF   C = 141 AND VB = 158 
      THEN VB = - V1: 
      ELSE VB = C 
   25 GOTO 12 
------------------------------------------------------------- 
   26 IF   VB <> 163 
      THEN 28: .............................................. 
      ELSE X = V1 
   27 X = INSTR (X + V2, LN$, "AS"): 
      IF   X 
      THEN LN$ = LEFT$(LN$, X - V1) + " AS " + MID$(LN$ 
           , X + V2): 
           GOTO 27 .......................................... 
   28 X$ = RIGHT$(LN$, V2): 
      IF   X$ <> "" 
      THEN IF   ASC(X$) = VS AND RIGHT$(X$, V1) = CO$ 
           THEN LN$ = LEFT$(LN$, LEN(LN$) - V2) + CO$ 
   29 PRINT LN$;: 
      IF   PF 
      THEN LPRINT LN$;  
   30 IF   DF 
      THEN PRINT #V2, LN$;  
   31 IF   INSTR (" 128 141 142 146 159 167 185 187  
           ", STR$(VB)) = V0 OR PC <> VO AND C <> V0 
      THEN 36: .............................................. 
      ELSE IF   FF + NF = V0 
           THEN 34: ......................................... 
           ELSE NT = NT + V1: 
                PRINT SP$; STRING$(PW - LEN(LN$) -  
                V1, VP);: 
                IF   PF 
                THEN LPRINT SP$; STRING$(PW - LEN(LN$) -  
                     V1, VP);  
   32 IF   DF 
      THEN PRINT #V2, SP$; STRING$(PW - LEN(LN$) -  
           V1, VP);  
   33 IF   C = V0 AND NT / V2 <> INT(NT / V2) 
      THEN 34: .............................................. 
      ELSE 36 ............................................... 
------------------------------------------------------------- 
   34 PRINT SP$: 
      PRINT STRING$(PW, VH);: 
      IF   PF 
      THEN LPRINT SP$: 
           LPRINT STRING$(PW, VH);  
   35 IF   DF 
      THEN PRINT #V2, SP$: 
           PRINT #V2, STRING$(PW, VH);  
   36 IF   PF 
      THEN LPRINT SP$: 
           IF   PEEK(PP) > 54 
           THEN LPRINT CHR$(12);: 
                IF   SF 
                THEN GOSUB 41: 
                     GOSUB 39: 
                ELSE GOSUB 39 
   37 IF   DF 
      THEN PRINT #V2, SP$ 
   38 PRINT SP$: 
      LN$ = STRING$(V6 + NF + FF, VS): 
      RETURN  
------------------------------------------------------------- 
   39 LPRINT Q$; PN$; Q$; STRING$(PW - 8 + (PN > 9) -  
      LEN(PN$), VS); "Page"; STR$(PN): 
      IF   HF 
      THEN LPRINT PH$ 
   40 LPRINT STRING$(PW, "="): 
      LPRINT SP$: 
      PN = PN + V1: 
      RETURN  
------------------------------------------------------------- 
   41 LINE INPUT " 
      Press <ENTER> When Printer is Ready:  "; X$: 
      PRINT: 
      RETURN  
------------------------------------------------------------- 
   42 BP = V0: 
      C = V0: 
      DF = V0: 
      FF = V0: 
      NF = V0: 
      NT = V0: 
      P = V0: 
      PC = V0: 
      PN = V1: 
      QF = V0: 
      RN = V1: 
      VB = V0: 
      FX$ = "": 
      LN$ = "": 
      POKE PP, V1: 
      POKE PP - V1, 67: 
      POKE PP + V2, 255: 
      GOSUB 47: 
      IF   QQ 
      THEN 46: .............................................. 
      ELSE X = INSTR (PN$, CO$): 
           IF   X 
           THEN PN$ = LEFT$(PN$, X - V1) 
   43 IF   PF 
      THEN GOSUB 41: 
           GOSUB 39 
   44 CLS: 
      PRINT , "LISTING "; Q$; PN$; Q$: 
      PRINT: 
      GOSUB 6: 
      GOSUB 4: 
      IF   C <> 255 
      THEN X$ = "NOT A COMPRESSED BASIC FILE!": 
           CLOSE: 
           GOSUB 72: 
           GOTO 42: ......................................... 
      ELSE GOSUB 9: 
           IF   PF 
           THEN LPRINT CHR$(12);  
   45 IF   DF 
      THEN PRINT #V2, STRING$(80, V0) 
   46 CLOSE: 
      IF   QQ 
      THEN PRINT @448, CHR$(31): 
           PRINT "Are You Sure You Want to End";: 
           GOSUB 62: 
           IF   X$ = "Y" 
           THEN CLS: 
                END: ........................................ 
           ELSE 42: ......................................... 
      ELSE 42 ............................................... 
------------------------------------------------------------- 
   47 CLS: 
      PRINT , "* LEVINSON'S PRETTY LISTER * 
      "; STRING$(63, 131); " 
      <R> Line Number Range          <D> Output to  
      Disk 
      <W> Special Page Width         <H> Special Page  
      Heading 
      <S> Stop After Each Page       <P> No Line Printe 
      r Output 
      "; STRING$(63, 131) 
   48 HF = V0: 
      PF = V1: 
      PW = 79: 
      QQ = V0: 
      SF = V0: 
      FL! = 0: 
      TL! = 65536: 
      OF$ = "": 
      OP$ = "": 
      PH$ = "": 
      PN$ = "": 
      PRINT @448, CHR$(31); "Enter the name of the  
      Basic File to be Listed 
       or Press <Q> Alone to Quit:  ";: 
      LINE INPUT X$: 
      IF   LEN(X$) = V0 
      THEN 48: .............................................. 
      ELSE GOSUB 64: 
           PN$ = X$: 
           IF   PN$ = "Q" 
           THEN QQ = V1: 
                RETURN  ..................................... 
   49 IF   LEFT$(PN$, V1) = "[" 
      THEN 67: .............................................. 
      ELSE ON ERROR GOTO 50: 
           CLOSE: 
           OPEN "I", V1, PN$: 
           CLOSE: 
           OPEN "R", V1, PN$: 
           ON ERROR GOTO 0: 
           FIELD V1, 128 AS B$(V0), 128 AS B$(V1): 
           GOTO 52 .......................................... 
------------------------------------------------------------- 
   50 GOSUB 71: 
      RESUME 51 
------------------------------------------------------------- 
   51 ON ERROR GOTO 0: 
      GOTO 48 
------------------------------------------------------------- 
   52 PRINT @448, CHR$(31); "Type in the Letters Corres 
      ponding to Any Options You Want, 
        then Press <ENTER>:  ";: 
      LINE INPUT X$: 
      IF   LEN(X$) = V0 
      THEN RETURN: .......................................... 
      ELSE GOSUB 64: 
           OP$ = X$: 
           IF   INSTR (OP$, "R") 
           THEN GOSUB 66: 
                INPUT "Starting Line"; FL!: 
                INPUT "  Ending Line"; TL! 
   53 IF   INSTR (OP$, "D") = V0 
      THEN 57: .............................................. 
      ELSE GOSUB 66: 
           LINE INPUT "Output Disk File Name: "; X$: 
           IF   LEN(X$) = V0 
           THEN 53: ......................................... 
           ELSE GOSUB 64: 
                OF$ = X$: 
                ON ERROR GOTO 54: 
                CLOSE V2: 
                OPEN "I", V2, OF$: 
                CLOSE V2: 
                ON ERROR GOTO 0: 
                PRINT " 
                File Exists!  Overwrite It";: 
                GOSUB 62: 
                IF   X$ = "Y" 
                THEN 56: .................................... 
                ELSE 53 ..................................... 
------------------------------------------------------------- 
   54 IF   ERR = 106 
      THEN CLOSE V2: 
      ELSE GOSUB 71: 
           OF$ = "" 
   55 RESUME 56 
------------------------------------------------------------- 
   56 ON ERROR GOTO 0: 
      IF   OF$ = "" 
      THEN 53: .............................................. 
      ELSE DF = V1: 
           OPEN "O", V2, OF$ 
   57 IF   INSTR (OP$, "W") 
      THEN GOSUB 66: 
           INPUT "Page Width"; PW: 
           IF   PW < VE 
           THEN PW = VE: 
           ELSE IF   PW > 79 
                THEN PW = 79 
   58 IF   INSTR (OP$, "P") 
      THEN PF = V0: 
           PW = 61: 
           GOTO 60 .......................................... 
   59 IF   INSTR (OP$, "H") 
      THEN GOSUB 66: 
           HF = V0: 
           PH$ = "": 
           PRINT , "Enter the Page Heading Below": 
           LINE INPUT PH$: 
           X = LEN(PH$): 
           IF   X > V0 
           THEN HF = V1: 
                IF   X > PW 
                THEN GOSUB 66: 
                     X$ = "Heading Longer than Width!": 
                      
                     GOSUB 72: 
                     GOTO 59 ................................ 
   60 IF   INSTR (OP$, "S") 
      THEN SF = V1 
   61 GOSUB 66: 
      PRINT , "Is Everything OK";: 
      GOSUB 62: 
      IF   X$ = "N" 
      THEN CLOSE: 
           GOTO 47: ......................................... 
      ELSE RETURN  .......................................... 
------------------------------------------------------------- 
   62 PRINT "? "; CHR$(14);  
   63 X$ = INKEY$: 
      IF   X$ = "" 
      THEN 63: .............................................. 
      ELSE GOSUB 64: 
           IF   X$ = "Y" OR X$ = "N" 
           THEN PRINT CHR$(15); X$: 
                RETURN: ..................................... 
           ELSE 63 .......................................... 
------------------------------------------------------------- 
   64 FOR  X = V1 TO LEN(X$): 
           A = ASC(MID$(X$, X, V1)): 
           IF   A > 96 AND A < 123 
           THEN A = A - VS: 
                MID$(X$, X, V1) = CHR$(A) 
   65 NEXT X: 
      RETURN  
------------------------------------------------------------- 
   66 PRINT @576, CHR$(31): 
      RETURN  
------------------------------------------------------------- 
   67 X$ = MID$(PN$, V2, V1): 
      IF   X$ < "0" OR X$ > "3" 
      THEN X$ = "0" 
   68 ON ERROR GOTO 69: 
      X$ = "DIR " + X$: 
      CMD X$: 
      GOSUB 71: 
      GOTO 70 
------------------------------------------------------------- 
   69 GOSUB 71: 
      RESUME 70 
------------------------------------------------------------- 
   70 ON ERROR GOTO 0: 
      GOTO 47 
------------------------------------------------------------- 
   71 IF   ERR = V0 
      THEN X$ = "": 
      ELSE IF   ERR = 106 
           THEN X$ = "FILE NOT FOUND!": 
           ELSE X$ = "ERROR #" + MID$(STR$(ERR / V2 +  
                V1), V2) + "!" 
   72 PRINT: 
      PRINT , X$: 
      PRINT: 
      PRINT ,: 
      LINE INPUT "Press <ENTER> to Continue:  "; X$: 
      RETURN  
------------------------------------------------------------- 
   73 CLEAR 15000: 
      DEFINT A - X: 
      DIM C, P, LN$, PC, VO, VE, V0, X, VB, V1, V7,  
      BP, V9, QF, PW, Q, X$, VS, SP$, PF, DF, A!, V2,  
      FX$, FF, NF, A, V6, NT, CO$, V5, V4, FL!, TL!,  
      PK, PN$, VP, OP$, RN, VH, PP, Q$, QQ, HF, SF,  
      OF$, V8, PN, PH$, B$(1), RW$(123): 
      PK = 14337: 
      PP = 16425: 
      Q = 34: 
      V0 = 0: 
      V1 = 1: 
      V2 = 2: 
      V4 = 4: 
      V5 = 5: 
      V6 = 6: 
      V7 = 127: 
      V8 = 128: 
      V9 = 129: 
      VE = 10: 
      VH = 45: 
      VO = 58: 
      VP = 46: 
      VS = 32: 
      CO$ = ":": 
      Q$ = CHR$(Q): 
      SP$ = " ": 
      RW$(1) = "END": 
      RW$(2) = "FOR ": 
      RW$(3) = "RESET": 
      RW$(4) = "SET": 
      RW$(5) = "CLS": 
      RW$(6) = "CMD": 
      RW$(7) = "RANDOM": 
      RW$(8) = "NEXT": 
      RW$(9) = "DATA": 
      RW$(10) = "INPUT": 
      RW$(11) = "DIM": 
      RW$(12) = "READ": 
      RW$(13) = "LET": 
      RW$(14) = "GOTO": 
      RW$(15) = "RUN": 
      RW$(16) = "IF  ": 
      RW$(17) = "RESTORE": 
      RW$(18) = "GOSUB": 
      RW$(19) = "RETURN": 
      RW$(20) = "REM": 
      RW$(21) = "STOP": 
      RW$(22) = "ELSE": 
      RW$(23) = "TRON": 
      RW$(24) = "TROFF": 
      RW$(25) = "DEFSTR": 
      RW$(26) = "DEFINT": 
      RW$(27) = "DEFSNG": 
      RW$(28) = "DEFDBL": 
      RW$(29) = "LINE": 
      RW$(30) = "EDIT": 
      RW$(31) = "ERROR": 
      RW$(32) = "RESUME": 
      RW$(33) = "OUT": 
      RW$(34) = "ON": 
      RW$(35) = "OPEN": 
      RW$(36) = "FIELD": 
      RW$(37) = "GET": 
      RW$(38) = "PUT": 
      RW$(39) = "CLOSE": 
      RW$(40) = "LOAD": 
      RW$(41) = "MERGE": 
      RW$(42) = "NAME": 
      RW$(43) = "KILL": 
      RW$(44) = "LSET": 
      RW$(45) = "RSET": 
      RW$(46) = "SAVE": 
      RW$(47) = "SYSTEM": 
      RW$(48) = "LPRINT": 
      RW$(49) = "DEF": 
      RW$(50) = "POKE": 
      RW$(51) = "PRINT": 
      RW$(52) = "CONT": 
      RW$(53) = "LIST": 
      RW$(54) = "LLIST": 
      RW$(55) = "DELETE": 
      RW$(56) = "AUTO": 
      RW$(57) = "CLEAR": 
      RW$(58) = "CLOAD": 
      RW$(59) = "CSAVE": 
      RW$(60) = "NEW": 
      RW$(61) = "TAB(": 
      RW$(62) = "TO": 
      RW$(63) = "FN": 
      RW$(64) = "USING": 
      RW$(65) = "VARPTR": 
      RW$(66) = "USR": 
      RW$(67) = "ERL": 
      RW$(68) = "ERR": 
      RW$(69) = "STRING$": 
      RW$(70) = "INSTR": 
      RW$(71) = "POINT": 
      RW$(72) = "TIME$": 
      RW$(73) = "MEM": 
      RW$(74) = "INKEY$": 
      RW$(75) = "THEN": 
      RW$(76) = "NOT": 
      RW$(77) = "STEP": 
      RW$(78) = "+": 
      RW$(79) = "-": 
      RW$(80) = "*": 
      RW$(81) = "/": 
      RW$(82) = "[": 
      RW$(83) = "AND": 
      RW$(84) = "OR": 
      RW$(85) = ">": 
      RW$(86) = "=": 
      RW$(87) = "<": 
      RW$(88) = "SGN": 
      RW$(89) = "INT": 
      RW$(90) = "ABS": 
      RW$(91) = "FRE": 
      RW$(92) = "INP": 
      RW$(93) = "POS": 
      RW$(94) = "SQR": 
      RW$(95) = "RND": 
      RW$(96) = "LOG": 
      RW$(97) = "EXP": 
      RW$(98) = "COS": 
      RW$(99) = "SIN": 
      RW$(100) = "TAN": 
      RW$(101) = "ATN": 
      RW$(102) = "PEEK": 
      RW$(103) = "CVI": 
      RW$(104) = "CVS": 
      RW$(105) = "CVD": 
      RW$(106) = "EOF": 
      RW$(107) = "LOC": 
      RW$(108) = "LOF": 
      RW$(109) = "MKI$": 
      RW$(110) = "MKS$": 
      RW$(111) = "MKD$": 
      RW$(112) = "CINT": 
      RW$(113) = "CSNG": 
      RW$(114) = "CDBL": 
      RW$(115) = "FIX": 
      RW$(116) = "LEN": 
      RW$(117) = "STR$": 
      RW$(118) = "VAL": 
      RW$(119) = "ASC": 
      RW$(120) = "CHR$": 
      RW$(121) = "LEFT$": 
      RW$(122) = "RIGHT$": 
      RW$(123) = "MID$": 
      GOTO 42 
------------------------------------------------------------- 
************************************************************* 
                                                                                
