home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / basic / baswiz18.zip / BW$BAS.ZIP / G2LODMAC.BAS < prev    next >
BASIC Source File  |  1992-08-29  |  2KB  |  74 lines

  1. '   +----------------------------------------------------------------------+
  2. '   |                                                                      |
  3. '   |        BASWIZ  Copyright (c) 1990-1992  Thomas G. Hanlin III         |
  4. '   |                                                                      |
  5. '   |                      The BASIC Wizard's Library                      |
  6. '   |                                                                      |
  7. '   +----------------------------------------------------------------------+
  8.  
  9.    DEFINT A-Z
  10.  
  11. SUB G2LoadMAC (File$, Array(), SRow)
  12.    EndRow = SRow + 199
  13.    IF SRow < 0 OR EndRow > 719 THEN
  14.       EXIT SUB
  15.    END IF
  16.    DIM SByte AS STRING * 1
  17.    FileNr = FREEFILE
  18.    Index = LBOUND(Array)
  19.    Array(Index) = 576
  20.    Array(Index + 1) = 200
  21.    Index = Index + 2
  22.    IF INSTR(File$, ".") THEN
  23.       MacFile$ = File$
  24.    ELSE
  25.       MacFile$ = File$ + ".MAC"
  26.    END IF
  27.    OPEN MacFile$ FOR BINARY ACCESS READ AS FileNr LEN = 1024
  28.    GET FileNr, 640, SByte   ' skip header info
  29.  
  30.    X = 0
  31.    Y = 0
  32.    ByteNr = 0
  33.    DO
  34.       GET FileNr, , SByte
  35.       RepCount = ASC(SByte)
  36.       IF RepCount < 128 THEN
  37.          RepCount = RepCount + 1
  38.          FOR Dupe = 1 TO RepCount
  39.             GET FileNr, , SByte
  40.             IF Y >= SRow THEN
  41.                IF ByteNr AND 1 THEN
  42.                   Tmp$ = CHR$(Array(Index + ByteNr \ 2)) + SByte
  43.                   Array(Index + ByteNr \ 2) = CVI(Tmp$)
  44.                ELSE
  45.                   Array(Index + ByteNr \ 2) = ASC(SByte)
  46.                END IF
  47.                ByteNr = ByteNr + 1
  48.             END IF
  49.             X = X + 1
  50.          NEXT
  51.       ELSE
  52.          RepCount = 257 - RepCount
  53.          GET FileNr, , SByte
  54.          FOR Dupe = 1 TO RepCount
  55.             IF Y >= SRow THEN
  56.                IF ByteNr AND 1 THEN
  57.                   Tmp$ = CHR$(Array(Index + ByteNr \ 2)) + SByte
  58.                   Array(Index + ByteNr \ 2) = CVI(Tmp$)
  59.                ELSE
  60.                   Array(Index + ByteNr \ 2) = ASC(SByte)
  61.                END IF
  62.                ByteNr = ByteNr + 1
  63.             END IF
  64.             X = X + 1
  65.          NEXT
  66.       END IF
  67.       IF X > 71 THEN
  68.          X = 0
  69.          Y = Y + 1
  70.       END IF
  71.    LOOP UNTIL Y > EndRow
  72.    CLOSE FileNr
  73. END SUB
  74.