NEW 1 REM APPBIN.TO 10 NORMAL : TEXT : NOTRACE : HOME 15 D$ = CHR$ (4) 18 CD = 8192: REM CODE START 20 EC = CD + 18: REM ERROR CODE LOCATION 25 PN = CD + 19: REM PATHNAME LOCATION 30 DT = 10752: REM BLOCK BUFFER ADDRESS ($2A00) 32 DIM F$(255): REM FILENAMES 33 FOR I = CD TO CD + 296: READ X: POKE I,X: NEXT 35 PRINT "PRODOS TO APPBINARY FILE CONVERTER" 37 PRINT "(VERSION 1.00 --- NOVEMBER 10, 1986)" 40 PRINT "BY GARY B. LITTLE" 42 PRINT : PRINT "THIS IS A PUBLIC DOMAIN PROGRAM.": PRINT 45 PRINT "THIS PROGRAM CREATES AN APPBINARY" 46 PRINT "FILE FROM A GROUP OF PRODOS FILES." 50 PRINT : PRINT "ENTER THE NAME OF THE DIRECTORY IN" 60 PRINT "WHICH THE PRODOS FILES ARE STORED" 70 PRINT "( E.G. /MYDISK/MYFILES/ ):": PRINT 80 INPUT "";PF$: IF PF$ = "" THEN HOME : END 90 ONERR GOTO 110 100 PRINT D$;"PREFIX";PF$: POKE 216,0: GOTO 190 110 PRINT : PRINT "THAT DIRECTORY DOES NOT EXIST." 120 PRINT "PRESS ANY KEY TO CONTINUE:";: GET A$: PRINT A$: PRINT : GOTO 50 190 HOME : PRINT "ENTER THE NAMES OF THE PRODOS FILES" 192 PRINT "(PRESS [RETURN] WHEN DONE):" 195 NF = 1 200 PRINT : PRINT "ENTER THE NAME OF PRODOS FILE #";NF;": "; 210 INPUT "";F$(NF) 215 IF LEN (F$(NF)) > 15 THEN PRINT "ERROR: ILLEGAL FILENAME.": GOTO 200 220 IF F$(NF) < > "" THEN NF = NF + 1: GOTO 200 230 NF = NF - 1: IF NF = 0 THEN HOME : END 232 PRINT : PRINT "ENTER A NAME FOR THE APPBINARY FILE: ";: INPUT "";AB$ 234 IF AB$ = "" THEN HOME : END 236 L = LEN (AB$): IF L > 15 THEN 232 238 ONERR GOTO 242 240 PRINT D$;"CREATE";AB$;",TBIN": POKE 216,0: GOTO 245 242 IF PEEK (222) = 19 THEN PRINT D$;"DELETE";AB$: GOTO 240 243 GOTO 600 245 POKE PN,L: FOR I = 1 TO L: POKE PN + I, ASC ( MID$ (AB$,I,1)): NEXT 250 CALL CD + 0: GOSUB 5000: REM OPEN APPBINARY FILE 260 HOME 270 FOR J = 1 TO NF 280 L = LEN (F$(J)) 290 POKE PN,L: FOR I = 1 TO L: POKE PN + I, ASC ( MID$ (F$(J),I,1)): NEXT 300 PRINT "STORING... "; 310 FOR I = 1 TO L 320 CH = ASC ( MID$ (F$(J),I,1)): IF CH < 128 THEN CH = CH + 128 330 PRINT CHR$ (CH);: NEXT : PRINT 340 REM CREATE THE HEADER 350 CALL CD + 3: GOSUB 5000: REM OPEN/FORM HEADER 360 POKE DT + 127,NF - J: REM FILES TO FOLLOW 370 REM WRITE THE HEADER 380 CALL CD + 9: GOSUB 5000 390 EF = PEEK (DT + 20) + 256 * PEEK (DT + 21) + 65536 * PEEK (DT + 22) 400 IF EF = 0 THEN 460 420 CALL CD + 6: REM READ 128 BYTES 425 IF PEEK (EC) = 76 THEN 460: REM BRANCH IF EOF 430 GOSUB 5000 440 CALL CD + 9: GOSUB 5000: REM WRITE 128 BYTES 450 GOTO 420 460 CALL CD + 15: GOSUB 5000: REM CLOSE PRODOS FILE 470 NEXT J 480 CALL CD + 12: REM CLOSE APPBINARY FILE 500 PRINT : PRINT "THE APPBINARY FILE, ";AB$;"," 510 PRINT "HAS HOW BEEN CREATED.": END 600 PRINT : PRINT "ERROR: CAN'T CREATE ";AB$ 610 PRINT "APPLESOFT ERROR #"; PEEK (222): END 5000 EN = PEEK (EC): REM GET ERROR CODE 5010 IF EN = 0 THEN RETURN 5015 IF EN = 70 OR EN = 64 THEN PRINT : PRINT "ERROR: FILE NOT FOUND": END 5020 POP : PRINT : PRINT "ERROR: MLI CODE #";EN: END 6000 DATA 76,84,32,76,100,32,76,203,32,76,223,32,76,233,32,76,239 6001 DATA 32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6002 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6003 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6004 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32 6005 DATA 0,191,200,13,33,32,251,32,173,18,33,141,34,33,96,32,192 6006 DATA 32,169,10,141,0,42,169,2,141,18,42,169,23,141,1,42,169 6007 DATA 42,141,2,42,174,19,32,189,19,32,157,23,42,202,16,247,32 6008 DATA 0,191,196,0,42,32,251,32,169,71,141,1,42,169,76,141,2 6009 DATA 42,173,4,42,201,15,240,30,32,0,191,200,19,33,32,251,32 6010 DATA 173,24,33,141,26,33,141,12,33,141,19,42,32,0,191,209,18 6011 DATA 42,32,251,32,96,162,127,169,0,157,0,42,202,16,250,96,32 6012 DATA 192,32,32,0,191,202,25,33,144,5,201,76,208,1,24,32,251 6013 DATA 32,96,32,0,191,203,33,33,32,251,32,96,169,0,56,32,251 6014 DATA 32,169,0,141,18,32,32,0,191,204,11,33,96,141,18,32,144 6015 DATA 8,104,104,32,0,191,204,9,33,96,1,0,1,0,3,19,32 6016 DATA 0,34,0,3,19,32,0,38,0,4,0,0,42,128,0,0,0 6017 DATA 4,0,0,42,128,0,0,0 SAVE APPBIN.TO NEW 1 REM APPBIN.FRM 10 NORMAL : TEXT : NOTRACE : HOME 15 D$ = CHR$ (4) 18 CD = 8192: REM CODE START 20 EC = CD + 21: REM ERROR CODE LOCATION 25 PN = CD + 22: REM PATHNAME LOCATION 30 DT = 10752: REM BLOCK BUFFER ADDRESS ($2A00) 32 LL = DT + 20: REM EOF LOCATION 35 PRINT "APPBINARY TO PRODOS FILE CONVERTER" 37 PRINT "(VERSION 1.10 --- NOVEMBER 10, 1986)" 40 PRINT "BY GARY B. LITTLE": PRINT 45 PRINT "THIS PROGRAM EXTRACTS PRODOS FILES" 46 PRINT "FROM A FILE IN APPBINARY FORM." 48 PRINT : PRINT "THIS PROGRAM IS IN THE PUBLIC DOMAIN." 50 PRINT : PRINT "ENTER THE NAME OF THE DIRECTORY IN" 60 PRINT "WHICH THE APPBINARY FILE IS STORED" 70 PRINT "(E.G., /MYDISK/MYFILES/ ):": PRINT 80 INPUT "";PF$: IF PF$ = "" THEN HOME : END 90 ONERR GOTO 5100 100 PRINT D$;"PREFIX";PF$: POKE 216,0 150 FOR I = 0 TO 297: READ X: POKE CD + I,X: NEXT 200 PRINT : PRINT "ENTER THE NAME OF THE APPBINARY FILE" 210 PRINT "YOU WANT TO CONVERT:";: INPUT "";F$ 220 IF F$ = "" THEN HOME : END 230 L = LEN (F$): IF L > 15 THEN 5200 235 POKE PN,L 240 FOR I = 1 TO L: POKE PN + I, ASC ( MID$ (F$,I,1)): NEXT 250 HOME 300 CALL CD + 0: GOSUB 5000: REM OPEN APPBINARY FILE 305 PRINT "SCANNING THE APPBINARY FILE:": PRINT 310 REM READ HEADER AND CHECK ID BYTES 320 CALL CD + 6: GOSUB 5000: REM READ 128 BYTES 330 I1 = PEEK (DT + 0):I2 = PEEK (DT + 1) 335 I3 = PEEK (DT + 2):I4 = PEEK (DT + 18) 340 IF I1 < > 10 OR I2 < > 71 OR I3 < > 76 OR I4 < > 2 THEN 1000 345 IF PEEK (DT + 126) < > 0 THEN 1000: REM NOT PRODOS 350 REM CALCULATE NUMBER OF BLOCKS TO READ 360 EF = PEEK (LL) + 256 * PEEK (LL + 1) + 65536 * PEEK (LL + 2) 370 NB = INT (EF / 128) + ((EF - 128 * INT (EF / 128)) < > 0) 380 REM DISPLAY NAME OF FILE 382 PRINT "CREATING... "; 384 L = PEEK (DT + 23): FOR I = 1 TO L 386 CH = PEEK (DT + 23 + I): IF CH < 128 THEN CH = CH + 128 388 PRINT CHR$ (CH);: NEXT : PRINT 390 TF = PEEK (DT + 127): REM NUMBER OF FILES TO FOLLOW 400 CALL CD + 3: GOSUB 5000: REM OPEN PRODOS FILE 405 IF NB = 0 THEN 460 410 FOR I = 1 TO NB 420 CALL CD + 6: GOSUB 5000: REM READ 128 BYTES 430 CALL CD + 9: GOSUB 5000: REM WRITE 128 BYTES 440 NEXT I 450 CALL CD + 18: GOSUB 5000: REM SET EXACT EOF 460 CALL CD + 15: GOSUB 5000: REM CLOSE PRODOS FILE 470 IF TF < > 0 THEN 320 480 CALL CD + 12: REM CLOSE APPBINARY FILE 500 PRINT : PRINT "CONVERSION COMPLETED.": END 1000 CALL CD + 12: REM CLOSE APPBINARY FILE 1010 HOME : PRINT "ERROR: ";F$;" IS NOT AN APPBINARY FILE": END 5000 EN = PEEK (EC): REM GET ERROR CODE 5010 IF EN = 0 THEN RETURN 5020 POP : PRINT : PRINT "ERROR: MLI CODE #";EN 5030 IF EN = 70 THEN PRINT "FILE NOT FOUND" 5040 IF EN = 71 THEN PRINT "DUPLICATE FILENAME" 5050 END 5100 HOME : PRINT "ERROR: DIRECTORY NOT FOUND.": POKE 216,0: END 5200 HOME : PRINT "ERROR: ILLEGAL FILE NAME.": POKE 216,0: END 6000 DATA 76,87,32,76,103,32,76,199,32,76,209,32,76,219,32,76,225 6001 DATA 32,76,237,32,0,0,0,0,0,0,0,0,0,0,0,0,0 6002 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6003 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6004 DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 6005 DATA 0,0,32,0,191,200,9,33,32,247,32,173,14,33,141,22,33 6006 DATA 96,169,7,141,0,42,169,23,141,1,42,169,42,141,2,42,173 6007 DATA 3,42,9,2,141,3,42,162,2,189,20,42,157,39,33,202,16 6008 DATA 247,48,23,162,3,189,14,42,157,8,42,202,16,247,32,0,191 6009 DATA 192,0,42,32,247,32,76,170,32,32,0,191,195,0,42,176,21 6010 DATA 32,0,191,200,15,33,176,13,173,20,33,141,30,33,141,38,33 6011 DATA 141,8,33,96,201,70,240,200,56,32,247,32,32,0,191,202,21 6012 DATA 33,32,247,32,96,32,0,191,203,29,33,32,247,32,96,169,0 6013 DATA 56,32,247,32,169,0,141,21,32,32,0,191,204,7,33,96,32 6014 DATA 0,191,208,37,33,32,247,32,96,141,21,32,144,8,104,104,32 6015 DATA 0,191,204,5,33,96,1,0,1,0,3,22,32,0,34,0,3 6016 DATA 23,42,0,38,0,4,0,0,42,128,0,0,0,4,0,0,42 6017 DATA 128,0,0,0,2,0,0,0,0 SAVE APPBIN.FRM