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 ------------------------------