home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / compsrcs / apple2 / 48 < prev    next >
Encoding:
Internet Message Format  |  1991-05-02  |  4.4 KB

  1. From: jac@yoko.rutgers.edu (Jonathan A. Chandross)
  2. Newsgroups: comp.sources.apple2
  3. Subject: v001SRC030:  AAF unpacker (upaaf) in Basic
  4. Message-ID: <May.1.17.29.43.1991.22943@yoko.rutgers.edu>
  5. Date: 1 May 91 21:29:44 GMT
  6. Approved: jac@paul.rutgers.edu
  7.  
  8.  
  9. Submitted-by: Andy Tefft (art100@psuvm.psu.edu)
  10. Posting-number: Volume 1, Source:30
  11. Archive-name: archive/upaaf.bas
  12. Architecture: ANY_2
  13. Version-number: 1.00
  14.  
  15. Unpacker for AAF archives written in Basic.
  16.  
  17. Enjoy.
  18.  
  19. ########################
  20.  
  21.  4  LOMEM: 16384
  22.  5 IN$ = "X": REM  must be first string assigned
  23.  10  TEXT : HOME
  24.  20  PRINT "AAF Unpacker, v1.0"
  25.  22  PRINT : PRINT "by Andy Tefft  (art100@psuvm.psu.edu)"
  26.  24  PRINT : PRINT "This program is freeware. Do what you"
  27.  25  PRINT "want with it, but don't blame me if you"
  28.  26  PRINT "break it."
  29.  28  PRINT : PRINT "Notes (list program for more):"
  30.  30  PRINT : PRINT "1) When asked for a pathname, use"
  31.  32  PRINT "   a full or partial pathname."
  32.  34  PRINT : PRINT "2) Type 'PR#3' before running to use"
  33.  36  PRINT "   80 columns."
  34.  38  PRINT : PRINT "3) Only minimal error checking is done."
  35.  40  PRINT : PRINT "4) Input and output volumes must both"
  36.  42  PRINT "be online."
  37.  44  PRINT : PRINT "Press a key to continue"
  38.  45  GET A$
  39.  50  REM  ARCHIVE FORMAT:
  40.  55  REM
  41.  60  REM  = filename : denotes output file name
  42.  70  REM  - line     : line of output file
  43.  80  REM  + anything : end of file ("anything" ignored")
  44.  85  REM
  45.  86  REM  all other lines echoed to screen
  46.  87  REM
  47.  90  REM  because of the difficulty of editing text files
  48.  91  REM  on the apple //, this program prompts for output
  49.  92  REM  file names, so you can change them if desired.
  50.  93  REM
  51.  94  REM  input anything routine is from an old dos 3.3
  52.  95  REM  public-domain disk
  53.  96  REM
  54.  120  FOR R = 768 TO 788: READ X: POKE R,X: NEXT : REM input-anything
  55.  130  DATA 162,0,32,117,253,160,2,138,145,105,200,169,0,145,105,200
  56.  135  DATA  169,2,145,105,96
  57.  140 D$ =  CHR$ (4)
  58.  145  DIM OU$(100)
  59.  150  PRINT D$"prefix": INPUT PR$
  60.  160  TEXT : HOME
  61.  165  PRINT "AAF Unpacker v1.0  Andy Tefft  11/21/90"
  62.  170  PRINT : PRINT "Prefix: "PR$
  63.  175  PRINT : PRINT "Enter archive pathname, ? for catalog,"
  64.  176  PRINT "/ to change prefix, return to exit."
  65.  180  POKE 34,7
  66.  190  PRINT
  67.  199  ONERR  GOTO 2000
  68.  200  INPUT ": ";C$
  69.  205  IF C$ = "" THEN  END
  70.  210  IF C$ <  > "/" THEN 300
  71.  220  PRINT : INPUT "New prefix:";P$
  72.  230  PRINT D$"Prefix"P$
  73.  240  GOTO 150
  74.  300  IF C$ <  > "?" THEN 400
  75.  310  PRINT D$"cat"
  76.  320  GOTO 190
  77.  400  PRINT : PRINT ">>> Opening "C$" for input."
  78.  405  POKE 34,4:II = 1
  79.  406  PRINT D$"verify"C$
  80.  407 II = 0
  81.  410  PRINT D$"open"C$
  82.  415 IL = 0
  83.  420  PRINT D$"read"C$
  84.  430  CALL 768:IN$ =  MID$ (IN$,1)
  85.  440  IF  LEFT$ (IN$,1) = "=" THEN 450
  86.  445  PRINT IN$: GOTO 430
  87.  450 OU$ =  MID$ (IN$,2)
  88.  455  PRINT ">>> ";
  89.  460  PRINT "Opening "OU$" for output."
  90.  465  PRINT D$: REM  stop taking input from file
  91.  470  PRINT "Press return to use this, enter a new"
  92.  472  PRINT "pathname for output, ? for catalog"
  93.  475  INPUT ": ";CC$
  94.  476  IF CC$ <  > "?" THEN 480
  95.  477  PRINT "Path to catalog, return for current dir"
  96.  478  INPUT P$: PRINT D$"CAT"P$: GOTO 460
  97.  480  IF CC$ <  > "" THEN OU$ = CC$
  98.  485 OO = 1
  99.  490  PRINT D$"open"OU$: PRINT D$"close"OU$: PRINT D$"delete"OU$
  100.  491 OO = 0
  101.  495  PRINT D$"read"C$
  102.  500 OL = 0
  103.  505 FI = 1: REM  means we've started a file
  104.  510  CALL 768:IN$ =  MID$ (IN$,1)
  105.  520  IF  LEFT$ (IN$,1) = "-" THEN 530
  106.  521  IF  LEFT$ (IN$,1) = "+" THEN 1000
  107.  525  PRINT IN$: GOTO 510
  108.  530 OL = OL + 1
  109.  535  VTAB  PEEK (37)
  110.  540 OU$(OL) =  MID$ (IN$,2)
  111.  550  IF OL < 100 GOTO 510
  112.  560  REM   write 100 lines of output file
  113.  570  PRINT D$"open"OU$
  114.  580  PRINT D$"append"OU$
  115.  590  PRINT D$"write"OU$
  116.  600  FOR R = 1 TO 100
  117.  610  PRINT OU$(R)
  118.  620  NEXT
  119.  630  PRINT D$"close"OU$
  120.  640  GOTO 495
  121.  1000  PRINT D$"open"OU$
  122.  1010  PRINT D$"append"OU$
  123.  1020  PRINT D$"write"OU$
  124.  1030  FOR R = 1 TO OL
  125.  1040  PRINT OU$(R): NEXT
  126.  1050  PRINT D$"close"OU$
  127.  1060  PRINT : PRINT ">>> Finished "OU$
  128.  1065 FI = 0
  129.  1070  GOTO 420
  130.  1999  END
  131.  2000 Y =  PEEK (222)
  132.  2001  PRINT
  133.  2005  IF Y = 6 THEN 2100
  134.  2010  IF Y = 5 THEN 2020
  135.  2015  PRINT "Error #"Y: PRINT D$"close": END
  136.  2020  PRINT D$"close": PRINT ">>> End of file encountered."
  137.  2030  IF FI = 1 THEN  PRINT ">>> "OU$" may be incomplete."
  138.  2040  IF FI = 1 THEN  PRINT "(no end of file marker found)"
  139.  2050  TEXT
  140.  2060  END
  141.  2100  IF OO = 1 THEN  PRINT "Volume/directory not found.": GOTO 455
  142.  2110  IF II = 1 THEN  PRINT "Input file not found.": GOTO 175
  143.