5 REM ******************************* 6 REM * 7 REM * INITIALIZE STUFF 8 REM * 9 REM ******************************* 10 POKE56,56:CLR:REM LOWER BASIC 20 DV=PEEK(186):IFDV<8THENDV=8:REM CHECK FOR DEVICE # 30 POKE53281,0:POKE53280,0:PRINT"[147]THE COMPRESSOR":AD=36864:MO=36608:CO=49152 40 REM AD=ADDRESS OF TOOLBOX,MO=ROUTINE TO MOVE COLOR MEMORY OF KOALA PIC 50 REM CO=ROUTINE THAT COMPRESSES PIC 59 REM ****LOAD ML ROUTINES**** 60 SYS57812"TOOLBOX 9000",DV,0:POKE780,0:POKE781,0:POKE782,144:SYS65493 61 SYSAD+30,"COMP FONT",DV,56*256:POKE53272,31 62 SYSAD+30,"DIR 4000",DV,4*4096 70 SYSAD+30,"SHP COMPRESSOR",DV,CO 81 REM ******************************* 82 REM * 83 REM * GET CHOICE FROM MAIN MENU 84 REM * 85 REM ******************************* 90 IFJJ=0THENGOSUB440:REM PRINT MAIN MENU 100 SYSAD+21,160:SYS AD+48,8,11,31,3,3+128,129,0:ONF%GOSUB110,640,310:GOTO100 101 REM ****************************** 102 REM * 103 REM * COMPRESS PIC 104 REM * 105 REM ****************************** 110 SYSAD+15,7,24,9,20,255,11 115 SYS AD,"$:*=P",DV,53248,8,8,10,13,1:REM CHOOSE PIC FROM DIRECTORY 120 IFF$=""THENRETURN:REM STOP PRESSED, THEN RETURN TO MAIN MENU 130 IFLEFT$(F$,2)="DD"ORLEFT$(F$,4)="RPH."THENTY=0:SYS AD+30,F$,DV,23552:GOTO150 135 IFRIGHT$(F$,4)="MPIC"THENTY=2:SYS AD+30,F$,DV,24576:GOTO150:REM ADV. OCP 136 IFRIGHT$(F$,3)="PIC"THENTY=1:SYS AD+30,F$,DV,24576:GOTO150:REM OCP ART STDIO 137 IFLEFT$(F$,3)="PI."THENTY=4:SYS AD+30,F$,DV,24576:GOTO150 138 IFLEFT$(F$,2)="P-"THENTY=5:SYS AD+30,F$,DV,24576:GOTO150 140 TY=3:SYSAD+30,F$,DV,24576:REM KOALA 150 SYS AD+72,3,27,4,6:REM SHADOW WINDOW 160 SYS AD+15,4,28,3,5,160,7:REM OPEN WINDOW 170 SYS AD+24,5,4,"[158]SAVE FILE? [146] " 180 SYS AD+24,16,4,"" 190 SYS AD+66,5,5,12:REM GET SAVE FILENAME 200 IFW$=""THENRETURN:REM NO FILE? RETURN TO MAIN MENU 210 S$=W$+".SHP,P,W":REM ADD .SHP EXTENSION TO FILENAME 211 SYS AD+72,9,18,3,6 212 SYS AD+15,10,19,2,5,160,3 213 SYS AD+24,11,3,"OPTIMIZE" 214 SYS AD+24,11,4," NORMAL " 215 SYS AD+48,3,11,18,2,3,7,0 216 OP=0 217 IFF%=1THENOP=1 220 A5=PEEK(53265):POKE53265,A5OR32:REM BITMAP MODE 230 A0=PEEK(53270):IFTY>1THENPOKE53270,A0OR16:REM MULTI-COLOR MODE 240 A2=PEEK(53272):POKE53272,120:REM COLOR(SCREEN) MEMORY 250 A6=PEEK(56576):POKE56576,(A6AND252)OR2:REM BITMAP LOCATION 260 IFTY=0THEN270 261 ON TY GOSUB 292,295,297,299,301 270 CLOSE15:OPEN 15,DV,15:OPEN 2,DV,2,S$:INPUT#15,E,E$,T,S:IFE<>0THEN370 280 REM *****OPEN SAVE FILE, STORE COMPRESSED PIC WITH SYS CO***** 290 SYS CO,OP:INPUT#15,E,E$,T,S:IFE<>0THEN370 291 CLOSE2:GOSUB410:RETURN:REM CLOSE FILE, RETURN TO MAIN MENU 292 SYS AD+60,32576,33576,23552:RETURN 295 SYS AD+60,32576,33576,23552:SYS AD+60,33592,34592,55296 296 POKE53281,PEEK(33577):RETURN 297 SYS AD+60,32576,33576,23552:SYS AD+60,33576,34576,55296 298 POKE53281,PEEK(34576):RETURN 299 SYS AD+60,32768,33768,23552:SYS AD+60,33792,34792,55296 300 POKE53281,PEEK(32640):RETURN 301 SYS AD+60,32768,33768,23552:SYS AD+60,33792,34792,55296 302 POKE53281,PEEK(34815):RETURN 305 REM ***************************** 306 REM * 307 REM * RETURN TO LOADSTAR 308 REM * 309 REM ***************************** 310 POKE56,40960/256:CLR:REM RESET BASIC POINTER 320 A$="HELLO CONNECT":FORI=8TO9:CLOSE2:OPEN2,I,2:CLOSE2:IFSTTHEN340 330 CLOSE15:OPEN15,I,15,"R0:"+A$+"="+A$:INPUT#15,ER:CLOSE15:IFER=63THEN350 340 NEXT:PRINT"[147]":POKE186,8:END 350 POKE646,PEEK(53281):PRINT"[147]LOAD"CHR$(34)A$CHR$(34)","I 360 PRINT"RUN":POKE631,13:POKE632,13:POKE198,2:END 361 REM ****************************** 362 REM * 363 REM * PRINT DISK ERROR, RETURN TO 364 REM * MAIN MENU 365 REM * 366 REM ****************************** 370 CLOSE2:GOSUB410:PRINTE;E$;T;S:PRINT"PRESS A KEY TO CONTINUE" 380 CLOSE15:REM ERROR 390 POKE198,0:WAIT198,1:GETA$:PRINT"[147]":GOTO90 400 REM ***************************** 401 REM * 402 REM * RESTORE TEXT SCREEN 403 REM * 404 REM ***************************** 410 POKE53265,A5:POKE53270,A0:POKE53272,A2:POKE56576,A6 420 POKE53281,0:POKE53280,0:PRINT"[147]":RETURN 430 REM ***************************** 431 REM * 432 REM * PRINT MAIN MENU 433 REM * 434 REM ***************************** 440 PRINT"[147]":SYSAD+15,0,39,0,0,100,1:SYSAD+15,0,39,1,1,160,7 442 SYSAD+15,0,39,2,2,99,5:PRINT"[158]";:SYSAD+27,1,"[211] [212] [193] [210] [195] [207][160][205] [208] [210][160][197][160][211] [211][160][207] [210]" 450 SYS AD+15,2,37,5,19,128,15:SYSAD+15,2,37,4,4,93,7:SYSAD+15,2,37,20,20,94,7 452 SYSAD+15,1,1,5,19,91,7:SYSAD+15,38,38,5,19,92,7 454 PRINT"[146][158]";:SYSAD+24,1,4,"[176]":SYSAD+24,38,4,"[174]":SYSAD+24,1,20,"[173]" 456 SYSAD+24,38,20,"[189]" 460 SYS AD+15,9,31,7,13,255,11 470 SYSAD+15,10,32,6,12,160,5:SYS AD+15,11,31,7,11,160,3 480 SYSAD+24,12,8,"[159][195]OMPRESS [208]IC" 490 SYS AD+24,12,9,"[211]END [196]ISK [195]OMMANDS" 500 SYS AD+24,12,10,"[210]ETURN [212]O [204][207][193][196][211][212][193][210]" 505 REM *******SHP COMPRESSOR****** 510 PRINTCHR$(159):SYSAD+24,0,10,"" 610 SYS AD+27,23,"[195][210][211][210]/[210][197][212][213][210][206] [212]O [211]ELECT" 620 JJ=1:SYSAD+18,160:RETURN 630 REM ****************************** 631 REM * 632 REM * DOS COMMANDS 633 REM * 634 REM ****************************** 640 GOSUB2000:SYSAD+21,160 650 SYS AD+15,4,24,9,15,255,11 660 SYS AD+15,5,25,8,14,160,7:SYSAD+15,6,24,9,13,160,5:PRINT""; 680 SYS AD+24,7,9,"[211]CRATCH [198]ILE" 690 SYS AD+24,7,10,"[210]ENAME [198]ILE" 700 SYS AD+24,7,11,"[201]NITIALIZE [196]RIVE" 710 SYS AD+24,7,12,"[214]IEW [196]IRECTORY" 720 SYS AD+24,7,13,"[205]AIN [205]ENU" 730 SYS AD+48,9,6,24,5,5,1,0 740 ONF%GOSUB760,1060,1030,990:RETURN 750 REM ****SCRATCH FILE**** 760 SYSAD+72,3,24,14,19 770 SYS AD+15,4,25,13,18,160,4 780 PRINTCHR$(156);CHR$(18); 790 SYS AD+24,8,14,"PUT DISK WITH" 800 SYS AD+24,5,15,"FILE TO BE SCRATCHED" 810 SYS AD+24,10,16,"INTO DRIVE" 820 SYS AD+24,8,17,"(PRESS RETURN)" 830 GETA$:IFA$<>CHR$(13)THEN830 840 SYS AD+72,19,35,4,17 850 SYS AD,"$:*",DV,53248,20,3,10,5,1 860 IFF$=""THENRETURN 870 SYS AD+72,10,27,5,10 880 SYS AD+15,11,28,4,9,160,3 890 L=INT((18-LEN(F$))/2) 900 SYS AD+24,L+11,5,F$ 910 PRINTCHR$(158) 920 SYS AD+24,13,7," SCRATCH " 930 SYS AD+24,13,8,"DON'T SCRATCH" 940 SYS AD+48,7,13,25,2,7,1,0 950 IFF%=2THENRETURN 960 SYS AD+42,"S:"+F$,DV 970 RETURN 980 REM ******DIRECTORY****** 990 SYS AD+72,5,22,5,18 1000 PRINT"[147][159]":POKE186,DV:POKEE53272,23:SYS4*4096:PRINT:PRINT"[208]RESS [210][197][212][213][210][206]" 1010 WAIT197,1:POKE198,0:POKE53272,31:RETURN 1020 REM ******INITIALIZE DISK****** 1030 SYS AD+42,"I0:",DV 1040 RETURN 1050 REM ******RENAME FILE****** 1060 SYS AD+15,19,38,8,23,255,11 1070 SYS AD+24,20,7,"[159] " 1080 SYS AD+24,20,8,"[159] FILE TO RENAME? " 1090 SYS AD,"$:*",DV,53248,20,9,10,3,1 1100 IFF$=""THENRETURN 1110 SYS AD+72,3,31,5,7 1120 SYS AD+15,4,32,4,6,160,12 1130 SYS AD+24,5,5,"[152]RENAME TO? [129] " 1140 SYS AD+24,16,5,"" 1150 SYS AD+66,5,3,16 1155 IFW$=""THENRETURN 1160 SYS AD+42,"R:"+W$+"="+F$,DV 1170 RETURN 2000 SYSAD+15,30,35,4,14,255,11:SYSAD+15,31,36,3,13,160,13:PRINT"[153]"; 2010 FORI=0TO8:SYSAD+24,32,4+I,STR$(8+I):NEXT 2015 POKE781,23:SYS59903:POKE199,0:SYSAD+27,23,"[208]LEASE [211]ELECT [196]ESIRED [196]RIVE" 2020 SYSAD+48,4,32,35,9,13,1,0:DV=F%+7:CLOSE2:OPEN2,DV,2:CLOSE2 2030 IFSTTHEN2020 2040 SYSAD+21,160:RETURN 10000 CLOSE15:OPEN15,8,15,"S:COMPRESSOR":SAVE"COMPRESSOR",8:INPUT#15,A,A$ 10010 PRINT:PRINTA$:CLOSE15:END