! Multi Zoom Master
General Information
Author: Carsten Strotmann \\
Language: TURBO-BASIC \\
Compiler/Interpreter: Turbo-Basic \\
Published: ABBUC Magazin \\
!! How to use
This is a program to edit Graphics 15 pictures (62 Sec) in pixel by pixel zoom mode. The Programm is in english, the Manual however is in german language. Write a mail to carsten@strotmann.de if you like to see an english translated version.
The MultiZoomMaster Sourcecode is Free Software under the GNU Public License
ATR-File with Turbo-Basic Source and compiled version is in the Attachments.
!! Source (Main Program)
{{{
1000 DIM SAVE$(7680),IN$(40),FN$(17)
1010 POKE 106,192
1020 OPEN #%1,4,%0,"D:MULTIZOO.BIN"
1030 BGET #%1,1024,65
1040 BGET #%1,1536,180
1050 CLOSE #%1
1060 OPEN #%1,4,%0,"D:MZM.PIC"
1070 BGET #1,ADR(SAVE$),7680
1080 CLOSE #%1
1090 POKE 106,PEEK(106)-16
1100 GRAPHICS %0
1110 PLT=PEEK(106)*256
1120 POKE PLT,%0
1130 MOVE PLT,PLT+%1,2047
1140 POKE 559,58
1150 POKE 54279,PEEK(106)
1160 POKE 53277,%2
1170 DPOKE 53256,771
1180 DPOKE 704,2056
1190 EXEC FULLPIC
1200 MOVE ADR(SAVE$),DPEEK(88),7680
1210 EXEC BALKEN
1220 EXEC TFOFF
1230 # PIC
1240 POKE 623,4
1250 POKE 53250,%0
1260 EXEC FARBEN
1270 EXEC FBALKEN
1280 EXEC BALKEN
1290 # HAUPT
1300 REPEAT
1310 TRAP 1220
1320 KEY=ASC(INKEY$)
1330 POKE 1472,%0
1340 ST=STICK(%0)
1350 IF KEY=68 THEN GO# LINE
1360 IF KEY=85 THEN EXEC UNDO
1370 IF KEY=70 THEN GO# FILL
1380 IF KEY=73 THEN GO# DIR
1390 IF KEY=67 THEN GO# CIRCLE
1400 IF KEY=69 THEN EXEC EXIT:GO# PIC
1410 IF KEY=76
1420 EXEC TFON
1430 INPUT " LOAD FILENAME :",IN$
1440 FN$(%1,%2)="D:"
1450 FN$(%3)=IN$
1460 CLOSE #%1
1470 OPEN #%1,4,%0,FN$
1480 EXEC TFOFF
1490 BGET #%1,DPEEK(88),7680
1500 CLOSE #%1
1510 MOVE DPEEK(88),ADR(SAVE$),7680
1520 ENDIF
1530 IF KEY=83
1540 EXEC TFON
1550 INPUT " SAVE FILENAME :",IN$
1560 FN$(%1,%2)="D:"
1570 FN$(%3)=IN$
1580 CLOSE #%1
1590 OPEN #%1,8,%0,FN$
1600 EXEC TFOFF
1610 BPUT #%1,DPEEK(88),7680
1620 CLOSE #%1
1630 ENDIF
1640 IF KEY>48 AND KEY<53
1650 WC=KEY-49
1660 EXEC FBALKEN
1670 ENDIF
1680 IF KEY=45 OR NOT ST&%1
1690 IF PY>%0
1700 EXEC PLCLR
1710 PY=PY-%1
1720 EXEC BALKEN
1730 ENDIF
1740 ENDIF
1750 IF KEY=61 OR NOT ST&%2
1760 IF PY<86
1770 EXEC PLCLR
1780 PY=PY+%1
1790 EXEC BALKEN
1800 ENDIF
1810 ENDIF
1820 IF KEY=43 OR NOT ST&4
1830 IF PX>%0
1840 PX=PX-%1
1850 EXEC BALKEN
1860 ENDIF
1870 ENDIF
1880 IF KEY=42 OR NOT ST&8
1890 IF PX<24
1900 PX=PX+%1
1910 EXEC BALKEN
1920 ENDIF
1930 ENDIF
1940 IF KEY=32
1950 IF PEEK(623)=4
1960 POKE 623,%1
1970 ELSE
1980 POKE 623,4
1990 ENDIF
2000 ENDIF
2010 UNTIL KEY=90 OR KEY=155 OR STRIG(%0)=%0
2020 EXEC MCLR
2030 MOVE DPEEK(88),ADR(SAVE$),7680
2040 CLS #6
2050 EXEC ZOOM
2060 EXEC FARBEN
2070 EXEC ZOOMLOAD
2080 REPEAT
2090 KEY=ASC(INKEY$)
2100 POKE 1472,%0
2110 ST=STICK(%0)
2120 IF KEY=28 AND PY>%0
2130 PY=PY-%1
2140 EXEC ZOOMLOAD
2150 ENDIF
2160 IF KEY=29 AND PY<85
2170 PY=PY+%1
2180 EXEC ZOOMLOAD
2190 ENDIF
2200 IF KEY=30 AND PX>%0
2210 PX=PX-%1
2220 EXEC ZOOMLOAD
2230 ENDIF
2240 IF KEY=31 AND PX<24
2250 PX=PX+%1
2260 EXEC ZOOMLOAD
2270 ENDIF
2280 IF KEY=45 OR NOT ST&%1
2290 IF CY>%0
2300 CY=CY-%1
2310 ENDIF
2320 ENDIF
2330 IF KEY=61 OR NOT ST&%2
2340 IF CY<20
2350 CY=CY+%1
2360 ENDIF
2370 ENDIF
2380 IF KEY=43 OR NOT ST&4
2390 IF CX>%0
2400 CX=CX-%1
2410 ENDIF
2420 ENDIF
2430 IF KEY=42 OR NOT ST&8
2440 IF CX<63
2450 CX=CX+%1
2460 ENDIF
2470 ENDIF
2480 IF CY/%2<>INT(CY/%2)
2490 RX=CX+80+8
2500 ELSE
2510 RX=CX+8
2520 ENDIF
2530 RY=INT(CY/%2)
2540 LOCATE RX,RY,RC
2550 COLOR RC+%1
2560 PLOT RX,RY
2570 PAUSE %1
2580 COLOR RC
2590 PLOT RX,RY
2600 IF KEY>48 AND KEY<53
2610 WC=KEY-49
2620 COLOR WC
2630 PLOT 4,32
2640 DRAWTO 35,32
2650 ENDIF
2660 IF KEY=32 OR KEY=155 OR STRIG(%0)=%0
2670 COLOR WC
2680 PLOT RX,RY
2690 SOUND %0,40,10,10
2700 PAUSE %1
2710 DSOUND
2720 PAUSE %1
2730 EXEC UPDATE
2740 ENDIF
2750 UNTIL KEY=80 OR KEY=27
2760 EXEC FULLPIC
2770 MOVE ADR(SAVE$),DPEEK(88),7680
2780 GO# PIC
2790 ------------------------------
2800 # LINE
2810 EXEC MCLR
2820 POKE 623,%1
2830 EXEC KREUZ
2840 COLOR WC
2850 PLOT KX,KY
2860 PAUSE 10
2870 EXEC KREUZ
2880 DRAWTO KX,KY
2890 PAUSE 30
2900 GO# LINE
2910 ------------------------------
2920 # FILL
2930 EXEC MCLR
2940 POKE 623,%1
2950 EXEC KREUZ
2960 COLOR WC
2970 PAINT KX,KY
2980 PAUSE 10
2990 GO# FILL
3000 ------------------------------
3010 # CIRCLE
3020 EXEC MCLR
3030 POKE 623,%1
3040 EXEC KREUZ
3050 PAUSE 20
3060 SX=KX
3070 SY=KY
3080 EXEC KREUZ
3090 XR=(ABS(SX-KX))
3100 YR=(ABS(SY-KY))
3110 COLOR WC
3120 CIRCLE SX,SY,XR,YR
3130 PAUSE 20
3140 GO# CIRCLE
3150 ------------------------------
3160 # DIR
3170 EXEC TFON
3180 CLOSE #%1
3190 OPEN #%1,6,%0,"D:*.PIC"
3200 TRAP 3300
3210 POKE 752,%1
3220 DO
3230 INPUT #%1,IN$
3240 ? " ";IN$
3250 GET KEY
3260 IF KEY=155 THEN EXIT
3270 CLS
3280 LOOP
3290 CLS
3300 ? " NO MORE FILES"
3310 GET KEY
3320 EXEC TFOFF
3330 GO# PIC
3340 ------------------------------
3350 PROC UNDO
3360 MOVE ADR(SAVE$),DPEEK(88),7680
3370 ENDPROC
3380 ------------------------------
3390 PROC FULLPIC
3400 GRAPHICS 31
3410 POKE 559,58
3420 DL=DPEEK(560)
3430 DPOKE 1621,DL+%3
3440 POKE DL,%1
3450 DPOKE DL+%1,1616
3460 ENDPROC
3470 ------------------------------
3480 PROC TFON
3490 POKE 703,4
3500 CLS
3510 DPOKE 1617,DPEEK(660)
3520 ENDPROC
3530 ------------------------------
3540 PROC TFOFF
3550 DPOKE 1617,1636
3560 ENDPROC
3570 ------------------------------
3580 PROC ZOOM
3590 DPOKE 560,1024
3600 DPOKE 1033,DPEEK(88)
3610 COLOR WC
3620 PLOT 4,32
3630 DRAWTO 35,32
3640 POKE 707,%0
3650 ENDPROC
3660 ------------------------------
3670 PROC PLCLR
3680 DPOKE PLT+1024+24+PY*%2,%0
3690 DPOKE PLT+1024+27+PY*%2+20,%0
3700 DPOKE PLT+1280+24+PY*%2,%0
3710 DPOKE PLT+1280+27+PY*%2+20,%0
3720 ENDPROC
3730 ------------------------------
3740 PROC MCLR
3750 POKE PLT+1024,%0
3760 MOVE PLT+1024,PLT+1025,512
3770 ENDPROC
3780 ------------------------------
3790 PROC BALKEN
3800 POKE 53248,48+PX*4
3810 POKE 53249,80+PX*4
3820 POKE PLT+1024+26+PY*%2,255
3830 POKE PLT+1280+26+PY*%2,255
3840 MOVE PLT+1024+26+PY*%2,PLT+1024+27+PY*%2,20
3850 MOVE PLT+1280+26+PY*%2,PLT+1280+27+PY*%2,20
3860 ENDPROC
3870 ------------------------------
3880 PROC ZOOMLOAD
3890 FOR U=%0 TO 20
3900 SM=DPEEK(88)
3910 AM=ADR(SAVE$)
3920 MOVE AM+PX+(PY*%2+U)*40,SM+%2+U*20,16
3930 MOVE AM+PX+(PY*%2+U)*40,SM+452+U*40,16
3940 NEXT U
3950 ENDPROC
3960 ------------------------------
3970 PROC FARBEN
3980 POKE 708,196
3990 POKE 709,53
4000 POKE 710,106
4010 ENDPROC
4020 ------------------------------
4030 PROC UPDATE
4040 SM=DPEEK(88)
4050 AM=ADR(SAVE$)
4060 MOVE SM+%2+CY*20,AM+PX+(PY*%2+CY)*40,16
4070 MOVE SM+%2+CY*20,SM+452+CY*40,16
4080 ENDPROC
4090 ------------------------------
4100 PROC KREUZ
4110 IN$=""
4120 REPEAT
4130 IF PEEK(732)=17
4140 POKE 732,%0
4150 GO# PIC
4160 ENDIF
4170 ST=STICK(%0)
4180 KEY=ASC(INKEY$)
4190 POKE 1472,%0
4200 IF NOT ST&%1 AND KY>%0 OR KEY=45 AND KY>%0 THEN KY=KY-%1
4210 IF NOT ST&%2 AND KY<191 OR KEY=61 AND KY<191 THEN KY=KY+%1
4220 IF NOT ST&4 AND KX>%0 OR KEY=43 AND KX>%0 THEN KX=KX-%1
4230 IF NOT ST&8 AND KX<159 OR KEY=42 AND KX<159 THEN KX=KX+%1
4240 POKE 53250,KX+46
4250 MOVE ADR(IN$),PLT+1536+23+KY,7
4260 POKE 706,PEEK(53770)
4270 UNTIL STRIG(%0)=%0 OR KEY=155
4280 ENDPROC
4290 ------------------------------
4300 PROC FBALKEN
4310 POKE PLT+1793+220,255
4320 POKE 53259,%0
4330 MOVE PLT+1793+220,PLT+1793+221,6
4340 POKE 53251,116
4350 POKE 707,PEEK(707+WC)
4360 IF WC=%0 THEN POKE 707,PEEK(712)
4370 ENDPROC
4380 ------------------------------
4390 PROC EXIT
4400 GRAPHICS %0
4410 POKE 53277,%0
4420 POKE 710,99
4430 POKE 709,14
4440 POKE 752,%1
4450 POSITION %0,%0:? " TPP'S MULTI ZOOM MASTER"
4460 POSITION %0,%1:? "---------------------------------"
4470 POSITION 5,5:? "Exit to"
4480 POSITION 10,10:? "Dos"
4490 POSITION 10,12:? "Basic"
4500 POSITION 10,14:? "Or Boot"
4510 GET KEY
4520 IF KEY=66 THEN GRAPHICS %0:NEW
4530 IF KEY=68 THEN DOS
4540 IF KEY=79 THEN X=USR(58487)
4550 ENDPROC
4560 ------------------------------
}}}