[comp.binaries.apple2] virtual blu for ][ and ][+

nakada@husc7.HARVARD.EDU (Paul Nakada) (04/14/88)

Date:         WED, 16 Mar 1988 00:01:46 EST
Reply-To:     Apple II List <APPLE2-L@BROWNVM>
Sender:       Apple II List <APPLE2-L@BROWNVM>
Comments:     Resent-From: Christopher Chung <CHRIS@BROWNVM>
Comments:     Originally-From: Mark Kriegsman / MIT VAX Resource Center
              <MARK@ISIS.MIT.EDU>
From:         Christopher Chung <CHRIS@BROWNVM>
Subject:      A virtual BLU for ][ and ][ users.
     
     
Here are two program that allow the creation and
unpacking of Binary II files.  (aka .BNY files,
aka .BIN2 files, and anything that recommends
using BLU to unpack it.)
     
Many programs are posted in SQueezed format (aka
any filename ending in ".QQ")  There is a fine posting
on APPLE2-L that contains both SQ3 (the squeezer) and
USQ2 (the unsqueezer) already, and these two programs
are both ][ and ][+ easy-to-use.  (40 columns, no lower
case, no required use of 'Apple' keys, no required
use of arrow keys.)
     
If anyone wants, I can send THEM directly the SQ3 and USQ2
EXECables.
     
"The Apple II: they made it first -- we'll make it last."
     
_______________________________________________________________________________
                                                        /| /| /| |) |/
mark%isis@athena.mit.edu_______________________________/ |/ |/ |_| \|\_________
     
     
NEW
1REM  APPBIN.TO
10NORMAL:TEXT:NOTRACE:HOME
15D$=CHR$(4)
18CD=8192:REM  CODE START
20EC=CD+18:REM  ERROR CODE LOCATION
25PN=CD+19:REM  PATHNAME LOCATION
30DT=10752:REM  BLOCK BUFFER ADDRESS ($2A00)
32DIMF$(255):REM  FILENAMES
33FORI=CDTOCD+296:READX:POKEI,X:NEXT
35?"PRODOS TO APPBINARY FILE CONVERTER"
37?"(VERSION 1.00 --- NOVEMBER 10, 1986)"
40?"BY GARY B. LITTLE"
42?:?"THIS IS A PUBLIC DOMAIN PROGRAM.":?
45?"THIS PROGRAM CREATES AN APPBINARY"
46?"FILE FROM A GROUP OF PRODOS FILES."
50?:?"ENTER THE NAME OF THE DIRECTORY IN"
60?"WHICH THE PRODOS FILES ARE STORED"
70?"( E.G. /MYDISK/MYFILES/ ):":?
80INPUT"";PF$:IFPF$=""THENHOME:END
90ONERRGOTO110
100?D$;"PREFIX";PF$:POKE216,0:GOTO190
110?:?"THAT DIRECTORY DOES NOT EXIST."
120?"PRESS ANY KEY TO CONTINUE:";:GETA$:?A$:?:GOTO50
190HOME:?"ENTER THE NAMES OF THE PRODOS FILES"
192?"(PRESS [RETURN] WHEN DONE):"
195NF=1
200?:?"ENTER THE NAME OF PRODOS FILE #";NF;": ";
210INPUT"";F$(NF)
215IFLEN(F$(NF))>15THEN?"ERROR: ILLEGAL FILENAME.":GOTO200
220IFF$(NF)<>""THENNF=NF+1:GOTO200
230NF=NF-1:IFNF=0THENHOME:END
232?:?"ENTER A NAME FOR THE APPBINARY FILE: ";:INPUT"";AB$
234IFAB$=""THENHOME:END
236L=LEN(AB$):IFL>15THEN232
238ONERRGOTO242
240?D$;"CREATE";AB$;",TBIN":POKE216,0:GOTO245
242IFPEEK(222)=19THEN?D$;"DELETE";AB$:GOTO240
243GOTO600
245POKEPN,L:FORI=1TOL:POKEPN+I,ASC(MID$(AB$,I,1)):NEXT
250CALLCD+0:GOSUB5000:REM  OPEN APPBINARY FILE
260HOME
270FORJ=1TONF
280L=LEN(F$(J))
290POKEPN,L:FORI=1TOL:POKEPN+I,ASC(MID$(F$(J),I,1)):NEXT
300?"STORING... ";
310FORI=1TOL
320CH=ASC(MID$(F$(J),I,1)):IFCH<128THENCH=CH+128
330?CHR$(CH);:NEXT:?
340REM  CREATE THE HEADER
350CALLCD+3:GOSUB5000:REM  OPEN/FORM HEADER
360POKEDT+127,NF-J:REM  FILES TO FOLLOW
370REM  WRITE THE HEADER
380CALLCD+9:GOSUB5000
390EF=PEEK(DT+20)+256*PEEK(DT+21)+65536*PEEK(DT+22)
400IFEF=0THEN460
420CALLCD+6:REM  READ 128 BYTES
425IFPEEK(EC)=76THEN460:REM  BRANCH IF EOF
430GOSUB5000
440CALLCD+9:GOSUB5000:REM  WRITE 128 BYTES
450GOTO420
460CALLCD+15:GOSUB5000:REM  CLOSE PRODOS FILE
470NEXTJ
480CALLCD+12:REM  CLOSE APPBINARY FILE
500?:?"THE APPBINARY FILE, ";AB$;","
510?"HAS HOW BEEN CREATED.":END
600?:?"ERROR: CAN'T CREATE ";AB$
610?"APPLESOFT ERROR #";PEEK(222):END
5000EN=PEEK(EC):REM  GET ERROR CODE
5010IFEN=0THENRETURN
5015IFEN=70OREN=64THEN?:?"ERROR: FILE NOT FOUND":END
5020POP:?:?"ERROR: MLI CODE #";EN:END
6000DATA  76,84,32,76,100,32,76,203,32,76,223,32,76,233,32,76,239
6001DATA  32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6002DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6003DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6004DATA  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32
6005DATA  0,191,200,13,33,32,251,32,173,18,33,141,34,33,96,32,192
6006DATA  32,169,10,141,0,42,169,2,141,18,42,169,23,141,1,42,169
6007DATA  42,141,2,42,174,19,32,189,19,32,157,23,42,202,16,247,32
6008DATA  0,191,196,0,42,32,251,32,169,71,141,1,42,169,76,141,2
6009DATA  42,173,4,42,201,15,240,30,32,0,191,200,19,33,32,251,32
6010DATA  173,24,33,141,26,33,141,12,33,141,19,42,32,0,191,209,18
6011DATA  42,32,251,32,96,162,127,169,0,157,0,42,202,16,250,96,32
6012DATA  192,32,32,0,191,202,25,33,144,5,201,76,208,1,24,32,251
6013DATA  32,96,32,0,191,203,33,33,32,251,32,96,169,0,56,32,251
6014DATA  32,169,0,141,18,32,32,0,191,204,11,33,96,141,18,32,144
6015DATA  8,104,104,32,0,191,204,9,33,96,1,0,1,0,3,19,32
6016DATA  0,34,0,3,19,32,0,38,0,4,0,0,42,128,0,0,0
6017DATA  4,0,0,42,128,0,0,0
SAVE TO.BNY
     
     
NEW
1REM BINARY.DWN
10NORMAL:TEXT:NOTRACE:HOME
12IFPEEK(48896)=76THEN15
13?"THIS PROGRAM REQUIRES PRODOS.":END
15D$=CHR$(4)
18CD=8192:REM CODE START
20EC=CD+21:REM ERROR CODE LOCATION
25PN=CD+22:REM PATHNAME LOCATION
30DT=10752:REM BLOCK BUFFER ADDRESS ($2A00)
32LL=DT+20:REM EOF LOCATION
35?"BINARY II TO PRODOS FILE CONVERTER"
37?"(VERSION 1.20 --- NOVEMBER 19, 1986)"
40?"BY GARY B. LITTLE":?
45?"THIS PROGRAM EXTRACTS PRODOS FILES"
46?"FROM A FILE IN BINARY II FORM."
48?:?"THIS PROGRAM IS IN THE PUBLIC DOMAIN."
50?:?"ENTER THE NAME OF THE DIRECTORY IN"
60?"WHICH THE BINARY II FILE IS STORED"
70?"(E.G., /MYDISK/MYFILES/ ):":?
80INPUT"";PF$:IFPF$=""THENHOME:END
90ONERRGOTO5100
100?D$;"PREFIX";PF$:POKE216,0
150FORI=0TO297:READX:POKECD+I,X:NEXT
200?:?"ENTER THE NAME OF THE BINARY II FILE"
210?"YOU WANT TO CONVERT:";:INPUT"";F$
220IFF$=""THENHOME:END
230L=LEN(F$):IFL>15THEN5200
235POKEPN,L
240FORI=1TOL:POKEPN+I,ASC(MID$(F$,I,1)):NEXT
250HOME
300CALLCD+0:GOSUB5000:REM OPEN BINARY II FILE
305?"SCANNING THE BINARY II FILE:":?
310REM READ HEADER AND CHECK ID BYTES
320CALLCD+6:GOSUB5000:REM READ 128 BYTES
330I1=PEEK(DT+0):I2=PEEK(DT+1)
335I3=PEEK(DT+2):I4=PEEK(DT+18)
340IFI1<>10ORI2<>71ORI3<>76ORI4<>2THEN1000
345FT=PEEK(DT+4):REM FILE TYPE
347DF=PEEK(DT+125):REM DATA FLAGS
350REM CALCULATE NUMBER OF BLOCKS TO READ
360EF=PEEK(LL)+256*PEEK(LL+1)+65536*PEEK(LL+2)
370NB=INT(EF/128)+((EF-128*INT(EF/128))<>0)
380REM DISPLAY NAME OF FILE
383L=PEEK(DT+23):FORI=1TOL
384CH=PEEK(DT+23+I):IFCH<128THENCH=CH+128
385?CHR$(CH);:NEXT:HTAB17
386IFDF>127THENDF=DF-128:?"COMPRESSED  ";
387IFDF>63THENDF=DF-64:?"ENCRYPTED  ";
388IFDF=1THEN?"PACKED  ";
389?
390TF=PEEK(DT+127):REM NUMBER OF FILES TO FOLLOW
400CALLCD+3:GOSUB5000:REM OPEN PRODOS FILE
405IFNB=0ORFT=15THEN460
410FORI=1TONB
420CALLCD+6:GOSUB5000:REM READ 128 BYTES
430CALLCD+9:GOSUB5000:REM WRITE 128 BYTES
440NEXTI
450CALLCD+18:GOSUB5000:REM SET EXACT EOF
460CALLCD+15:GOSUB5000:REM CLOSE PRODOS FILE
470IFTF<>0THEN320
480CALLCD+12:REM CLOSE BINARY II FILE
500?:?"CONVERSION COMPLETED.":END
1000CALLCD+12:REM CLOSE BINARY II FILE
1010HOME:?"ERROR: ";F$;" IS NOT A BINARY II FILE":END
5000EN=PEEK(EC):REM GET ERROR CODE
5010IFEN=0THENRETURN
5020POP:?:?"ERROR: MLI CODE #";EN
5030IFEN=70THEN?"FILE NOT FOUND"
5040IFEN=71THEN?"DUPLICATE FILENAME"
5050END
5100HOME:?"ERROR: DIRECTORY NOT FOUND.":POKE216,0:END
5200HOME:?"ERROR: ILLEGAL FILE NAME.":POKE216,0:END
6000DATA 76,87,32,76,103,32,76,199,32,76,209,32,76,219,32,76,225
6001DATA 32,76,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0
6002DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6003DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6004DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
6005DATA 0,0,32,0,191,200,9,33,32,247,32,173,14,33,141,22,33
6006DATA 96,169,7,141,0,42,169,23,141,1,42,169,42,141,2,42,173
6007DATA 3,42,9,2,141,3,42,162,2,189,20,42,157,39,33,202,16
6008DATA 247,48,23,162,3,189,14,42,157,8,42,202,16,247,32,0,191
6009DATA 192,0,42,32,247,32,76,170,32,32,0,191,195,0,42,176,21
6010DATA 32,0,191,200,15,33,176,13,173,20,33,141,30,33,141,38,33
6011DATA 141,8,33,96,201,70,240,200,56,32,247,32,32,0,191,202,21
6012DATA 33,32,247,32,96,32,0,191,203,29,33,32,247,32,96,169,0
6013DATA 56,32,247,32,169,0,141,21,32,32,0,191,204,7,33,96,32
6014DATA 0,191,208,37,33,32,247,32,96,141,21,32,144,8,104,104,32
6015DATA 0,191,204,5,33,96,1,0,1,0,3,22,32,0,34,0,3
6016DATA 23,42,0,38,0,4,0,0,42,128,0,0,0,4,0,0,42
6017DATA 128,0,0,0,2,0,0,0,0
SAVE UNDO.BIN2
REM That's all.
 __
|     Paul Nakada  '89   #8-)  |                                          
      North House              | ihnp4!think\   nakada@husc4.HARVARD.EDU  
      Harvard College          |       seismo>!harvard!husc4!nakada.UUCP  
      Cambridge, MA  02138     |     rutgers/   nakada@husc4.BITNET       
      617/498-6263 || 7110     |                                         __|