Home » Archimedes archive » Archimedes World » AW-1992-05.adf » May92 » !AWMay92/Goodies/SFXMDemo/!SFXM/!RunImage
!AWMay92/Goodies/SFXMDemo/!SFXM/!RunImage
This website contains an archive of files for the Acorn Electron, BBC Micro, Acorn Archimedes, Commodore 16 and Commodore 64 computers, which Dominic Ford has rescued from his private collection of floppy disks and cassettes.
Some of these files were originally commercial releases in the 1980s and 1990s, but they are now widely available online. I assume that copyright over them is no longer being asserted. If you own the copyright and would like files to be removed, please contact me.
Tape/disk: | Home » Archimedes archive » Archimedes World » AW-1992-05.adf » May92 |
Filename: | !AWMay92/Goodies/SFXMDemo/!SFXM/!RunImage |
Read OK: | ✔ |
File size: | 11954 bytes |
Load address: | 0000 |
Exec address: | 0000 |
Duplicates
There is 1 duplicate copy of this file in the archive:
- Archimedes archive » Archimedes World » AW-1992-05.adf » May92 » !AWMay92/Goodies/SFXMDemo/!SFXM/!RunImage
- Archimedes archive » Micro User » MU 1992-04.adf » SFX » !SFXM/!RunImage
File contents
10REM >adfs::SFXM.$.!SFXM.!RunImage 20REM >Written by G. Vermeulen 30ON ERROR PROCIntError:GOTO 60 40insttime%=TIME 50PROCInit 60REPEAT 70 SYS"Wimp_Poll",nopoll%,pollb% TO reason%,polledb% 80 nopoll%=0 90 CASE reason% OF 100 WHEN 0:PROCNull_Reason 110 WHEN 1:PROCRedraw_Window 120 WHEN 2:PROCOpen_Window 130 WHEN 3:PROCClose_Window 140 WHEN 6:PROCMouse_Click:nopoll%=1<<6 150 WHEN 7:PROCUser_Drag_Box 160 WHEN 8:PROCKey_Pressed 170 WHEN 9:PROCMenu_Select 180 WHEN 17,18,19:PROCUser_Message 190 ENDCASE 200UNTIL FALSE 210END 220 230DEFPROCIntError 240LOCAL ERROR 250ON ERROR LOCAL GOTO 17360 260A%=FNinterr(REPORT$+" at line "+STR$ERL+". Continue program?") 270IF A%=2 THEN PROCQuit 280ENDPROC 290 300DEFPROCNull_Reason 310IF ((dfunc%>=0)AND(dfunc%<=9))OR((dfunc%>=13)AND(dfunc%<=18)) THEN PROCDragObject 320IF dfunc%=12 THEN PROCDragLine 330IF drag% THEN PROCDragMoveObjs 340IF (instopen%<>0) AND (TIME-insttime%>300) THEN PROCCheckInst 350ENDPROC 360 370DEFPROCDragObject 380SYS"Wimp_GetPointerInfo",,temp2% 390IF (temp2%!12=wworkh%)AND(temp2%!16>=-1) THEN 400 temp%!0=wworkh% 410 SYS"Wimp_GetWindowState",,temp% 420 newdx%=temp2%!0+temp%!20-temp%!4 430 newdy%=temp2%!4+temp%!24-temp%!16 440 newdx%=(newdx%DIV96)*96 450 newdy%=(newdy%DIV56)*56-56 460 IF (olddx%<>newdx%)OR(olddy%<>newdy%) THEN 470 PROCRemDf(olddx%,olddy%) 480 PROCPlotDf(newdx%,newdy%) 490 olddx%=newdx%:olddy%=newdy% 500 ENDIF 510ENDIF 520ENDPROC 530 540DEFPROCDragLine 550SYS"Wimp_GetPointerInfo",,temp2% 560IF (temp2%!12=wworkh%)AND(temp2%!16>=-1)AND(startlx%<>-1) THEN 570 temp%!0=wworkh% 580 SYS"Wimp_GetWindowState",,temp% 590 newlx%=temp2%!0+temp%!20-temp%!4 600 newly%=temp2%!4+temp%!24-temp%!16 610 IF (oldlx%<>newlx%)OR(oldly%<>newly%) THEN 620 PROCPlotLn(oldlx%,oldly%) 630 PROCPlotLn(newlx%,newly%) 640 oldlx%=newlx%:oldly%=newly% 650 ENDIF 660ENDIF 670ENDPROC 680 690DEFPROCDragMoveObjs 700SYS"Wimp_GetPointerInfo",,temp2% 710IF (temp2%!8)AND4 THEN 720 temp%!0=wworkh% 730 SYS"Wimp_GetWindowState",,temp% 740 newlx%=temp2%!0+temp%!20-temp%!4 750 newly%=temp2%!4+temp%!24-temp%!16 760 newlx%=(newlx%DIV96)*96+48 770 newly%=(newly%DIV56)*56-32 780 IF (oldlx%<>newlx%)OR(oldly%<>newly%) THEN 790 PROCPlotLn(oldlx%,oldly%) 800 PROCPlotLn(newlx%,newly%) 810 oldlx%=newlx%:oldly%=newly% 820 ENDIF 830ELSE 840 IF (startlx%<>-1)AND(oldlx%<>-1) THEN 850 PROCPlotLn(oldlx%,oldly%) 860 PROCMoveIcns(oldlx%-startlx%,oldly%-startly%) 870 ENDIF 880 drag%=0 890 startlx%=-1:startly%=-1 900 newlx%=-1:newly%=-1 910 oldlx%=-1:oldly%=-1 920ENDIF 930ENDPROC 940 950DEFPROCRemAllDrag 960IF olddx%<>-1 THEN 970 PROCRemDf(olddx%,olddy%) 980ENDIF 990IF startlx%<>-1 THEN 1000 PROCPlotLn(oldlx%,oldly%) 1010ENDIF 1020newdx%=-1:newdy%=-1 1030olddx%=-1:olddy%=-1 1040oldlx%=-1:oldly%=-1 1050newlx%=-1:newly%=-1 1060startlx%=-1:startly%=-1 1070startic%=-1 1080starti%=-1 1090endi%=-1 1100drag%=0 1110ENDPROC 1120 1130DEFPROCCheckInst 1140temp%!0=winsth% 1150SYS"Wimp_CloseWindow",,temp% 1160instopen%=0 1170ENDPROC 1180 1190DEFPROCMoveIcns(dx%,dy%) 1200temp2%!0=wworkh% 1210FORT%=0TOmaxicons%-1 1220 IF (iconinfo%!(T%*32)<>-1)AND(iconinfo%!(T%*32+28))AND16 THEN 1230 PROCModTitle(0) 1240 temp2%!4=T% 1250 SYS"Wimp_DeleteIcon",,temp2% 1260 temp2%!4=iconinfo%!(T%*32+4)+dx% 1270 temp2%!8=iconinfo%!(T%*32+8)+dy% 1280 temp2%!12=temp2%!4+92 1290 temp2%!16=temp2%!8+52 1300 temp2%!20=%00001000000000001010000000011010 1310 CASE iconinfo%!(T%*32) OF 1320 WHEN 0:i$="vco" 1330 WHEN 1:i$="noise" 1340 WHEN 2:i$="eg" 1350 WHEN 5:i$="const" 1360 WHEN 3:i$="filtlo" 1370 WHEN 4:i$="filthi" 1380 WHEN 6:i$="mult" 1390 WHEN 7:i$="multc" 1400 WHEN 8:i$="add" 1410 WHEN 13:i$="sub" 1420 WHEN 14:i$="pulse" 1430 WHEN 15:i$="delay" 1440 WHEN 9:i$="output" 1450 WHEN 16:i$="input" 1460 WHEN 17:i$="samhold" 1470 WHEN 18:i$="nldist" 1480 ENDCASE 1490 $(temp2%+24)=i$ 1500 SYS"Wimp_CreateIcon",,temp2%TOih% 1510 iconinfo%!(T%*32+4)+=dx% 1520 iconinfo%!(T%*32+8)+=dy% 1530 iconinfo%!(T%*32+28)=(iconinfo%!(T%*32+28))AND&ffffffef 1540 IF ih%<>T% THEN 1550 iconinfo%!(ih%*32+0)=iconinfo%!(T%*32+0) 1560 iconinfo%!(ih%*32+4)=iconinfo%!(T%*32+4) 1570 iconinfo%!(ih%*32+8)=iconinfo%!(T%*32+8) 1580 iconinfo%!(ih%*32+12)=iconinfo%!(T%*32+12) 1590 iconinfo%!(ih%*32+16)=iconinfo%!(T%*32+16) 1600 iconinfo%!(ih%*32+20)=iconinfo%!(T%*32+20) 1610 iconinfo%!(ih%*32+24)=iconinfo%!(T%*32+24) 1620 iconinfo%!(ih%*32+28)=iconinfo%!(T%*32+28) 1630 iconinfo%!(T%*32+0)=-1 1640 iconinfo%!(T%*32+4)=-1 1650 iconinfo%!(T%*32+8)=-1 1660 iconinfo%!(T%*32+12)=-1 1670 iconinfo%!(T%*32+16)=-1 1680 iconinfo%!(T%*32+20)=-1 1690 iconinfo%!(T%*32+24)=-1 1700 iconinfo%!(T%*32+28)=-1 1710 FORS%=0TOmaxicons%-1 1720 IF iconinfo%!(S%*32)<>-1 THEN 1730 IF iconinfo%!(S%*32+16)=T% THEN iconinfo%!(S%*32+16)=ih% 1740 IF iconinfo%!(S%*32+20)=T% THEN iconinfo%!(S%*32+20)=ih% 1750 ENDIF 1760 NEXTS% 1770 ENDIF 1780 ENDIF 1790NEXTT% 1800SYS"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 1810ENDPROC 1820 1830DEFPROCPlotDf(x%,y%) 1840IF x%<>-1 THEN 1850 temp%!0=wworkh% 1860 SYS"Wimp_GetWindowState",,temp% 1870 sx%=temp%!4+x%-temp%!20 1880 sy%=temp%!16+y%-temp%!24 1890 temp2%!0=wworkh% 1900 temp2%!4=x% 1910 temp2%!8=y% 1920 temp2%!12=x%+96 1930 temp2%!16=y%+56 1940 SYS"Wimp_ReadPixTrans",&100,1,"vco",,,,scalef%,pixtrans% 1950 SYS"Wimp_UpdateWindow",,temp2%TOmore% 1960 WHILE more% 1970 SYS"Wimp_SpriteOp",&34,,df$,sx%,sy%,8,scalef%,pixtrans% 1980 SYS"Wimp_GetRectangle",,temp2%TOmore% 1990 ENDWHILE 2000ENDIF 2010ENDPROC 2020 2030DEFPROCRemDf(x%,y%) 2040IF x%<>-1 THEN 2050 SYS"Wimp_ForceRedraw",wworkh%,x%,y%,x%+96,y%+56 2060ENDIF 2070ENDPROC 2080 2090DEFPROCPlotLn(x%,y%) 2100IF (x%<>-1)AND(startlx%<>-1) THEN 2110 temp2%!0=wworkh% 2120 SYS"Wimp_GetWindowState",,temp2% 2130 ssx%=temp2%!4+startlx%-temp2%!20 2140 ssy%=temp2%!16+startly%-temp2%!24 2150 sex%=temp2%!4+x%-temp2%!20 2160 sey%=temp2%!16+y%-temp2%!24 2170 wsx%=startlx% 2180 wsy%=startly% 2190 wex%=x% 2200 wey%=y% 2210 IF wsx%>wex% THEN SWAP wsx%,wex% 2220 IF wsy%>wey% THEN SWAP wsy%,wey% 2230 temp2%!0=wworkh% 2240 temp2%!4=wsx%-4 2250 temp2%!8=wsy%-4 2260 temp2%!12=wex%+4 2270 temp2%!16=wey%+4 2280 SYS"Wimp_UpdateWindow",,temp2%TOmore% 2290 WHILE more% 2300 GCOL3,15 2310 LINE ssx%,ssy%,sex%,sey% 2320 SYS"Wimp_GetRectangle",,temp2%TOmore% 2330 ENDWHILE 2340ENDIF 2350ENDPROC 2360 2370DEFPROCRedraw_Window 2380SYS"Wimp_RedrawWindow",,polledb%TOmore% 2390CASE polledb%!0 OF 2400 WHEN wworkh%:PROCRedrawWork 2410 WHEN wvcoh%:PROCRedrawVCO 2420 WHEN wegh%:PROCRedrawEG 2430 WHEN wnldisth%:PROCRedrawNLD 2440 OTHERWISE:PROCJustRedraw 2450ENDCASE 2460ENDPROC 2470 2480DEFPROCRedrawWork 2490SYS"Wimp_ReadPixTrans",&100,1,"vco",,,,scalef%,pixtrans% 2500ox%=newdx%+polledb%!4-polledb%!20 2510oy%=newdy%+polledb%!16-polledb%!24 2520ssx%=startlx%+polledb%!4-polledb%!20 2530ssy%=startly%+polledb%!16-polledb%!24 2540sex%=newlx%+polledb%!4-polledb%!20 2550sey%=newly%+polledb%!16-polledb%!24 2560WHILE more% 2570 PROCRedrawLines(polledb%!4-58,polledb%!8-28,polledb%!12+58,polledb%!16+28) 2580 2590 IF newdx%<>-1 THEN SYS"Wimp_SpriteOp",&34,,df$,ox%,oy%,8,scalef%,pixtrans% 2600 IF (startlx%<>-1) AND (newlx%<>-1) THEN GCOL3,15:LINE ssx%,ssy%,sex%,sey% 2610 SYS"Wimp_GetRectangle",,polledb%TOmore% 2620ENDWHILE 2630ENDPROC 2640 2650DEFPROCRedrawVCO 2660A%=polledb%!4 2670B%=polledb%!8 2680C%=vcoptr% 2690WHILE more% 2700 SYS"Wimp_SetColour",3 2710 LINE A%+166,B%+132,A%+166+512,B%+132 2720 SYS"Wimp_SetColour",1 2730 LINE A%+166,B%+132+32,A%+166+512,B%+132+32 2740 LINE A%+166,B%+132+64,A%+166+512,B%+132+64 2750 LINE A%+166,B%+132+96,A%+166+512,B%+132+96 2760 LINE A%+166,B%+132-32,A%+166+512,B%+132-32 2770 LINE A%+166,B%+132-64,A%+166+512,B%+132-64 2780 LINE A%+166,B%+132-96,A%+166+512,B%+132-96 2790 SYS"Wimp_SetColour",7 2800 CALLredrawvco 2810 SYS"Wimp_GetRectangle",,polledb%TOmore% 2820ENDWHILE 2830ENDPROC 2840 2850DEFPROCRedrawNLD 2860A%=polledb%!4 2870B%=polledb%!8 2880C%=nldistptr% 2890WHILE more% 2900 SYS"Wimp_SetColour",1 2910 LINE A%,B%+64,A%+512,B%+64 2920 LINE A%,B%+128,A%+512,B%+128 2930 LINE A%,B%+192,A%+512,B%+192 2940 LINE A%,B%+320,A%+512,B%+320 2950 LINE A%,B%+384,A%+512,B%+384 2960 LINE A%,B%+448,A%+512,B%+448 2970 LINE A%+64,B%,A%+64,B%+512 2980 LINE A%+128,B%,A%+128,B%+512 2990 LINE A%+192,B%,A%+192,B%+512 3000 LINE A%+320,B%,A%+320,B%+512 3010 LINE A%+384,B%,A%+384,B%+512 3020 LINE A%+448,B%,A%+448,B%+512 3030 SYS"Wimp_SetColour",3 3040 LINE A%,B%+256,A%+512,B%+256 3050 LINE A%+256,B%,A%+256,B%+512 3060 SYS"Wimp_SetColour",7 3070 CALLredrawnld 3080 SYS"Wimp_GetRectangle",,polledb%TOmore% 3090ENDWHILE 3100ENDPROC 3110 3120DEFPROCVCOClick 3130CASE polledb%!16 OF 3140 WHEN 0:PROCVCOsin(vcoptr%+4) 3150 WHEN 1:PROCVCOtri(vcoptr%+4) 3160 WHEN 2:PROCVCOramp(vcoptr%+4) 3170 WHEN 3:PROCVCOsqr(vcoptr%+4) 3180 WHEN 4:PROCVCOconst(vcoptr%+4) 3190 WHEN 5:PROCVCOshftlft(vcoptr%+4) 3200 WHEN 6:PROCVCOshftrght(vcoptr%+4) 3210 WHEN 7:PROCVCOmuldiv2(vcoptr%+4) 3220 WHEN 8:PROCVCOrot90(vcoptr%+4) 3230 WHEN 9:PROCVCOrand(vcoptr%+4) 3240 WHEN 10:PROCVCOpaint(vcoptr%+4) 3250ENDCASE 3260IF (polledb%!16<>10)AND(polledb%!16<>-1) THEN:SYS"Wimp_ForceRedraw",wvcoh%,166,-260,678,-4 3270ENDPROC 3280 3290DEFPROCVCOsin(a%) 3300FORT%=0TO255 3310 ?(a%+T%)=127*SIN(2*PI*T%/256) 3320NEXTT% 3330PROCModTitle(0) 3340ENDPROC 3350DEFPROCVCOtri(a%) 3360FORT%=0TO127 3370 ?(a%+T%)=127-ABS(-127+2*T%) 3380 ?(a%+255-T%)=-?(a%+T%) 3390NEXTT% 3400PROCModTitle(0) 3410ENDPROC 3420DEFPROCVCOramp(a%) 3430MOUSE A%,B%,C% 3440FORT%=0TO255 3450 IF C%AND4 THEN ?(a%+T%)=-128+T% 3460 IF C%AND1 THEN ?(a%+T%)=127-T% 3470NEXTT% 3480PROCModTitle(0) 3490ENDPROC 3500DEFPROCVCOsqr(a%) 3510FORT%=0TO255 3520 ?(a%+T%)=127+254*(T%>127) 3530NEXTT% 3540PROCModTitle(0) 3550ENDPROC 3560DEFPROCVCOconst(a%) 3570MOUSE A%,B%,C% 3580IF C%AND4 THEN l%=127 3590IF C%AND2 THEN l%=0 3600IF C%AND1 THEN l%=128 3610FORT%=0TO255 3620 ?(a%+T%)=l% 3630NEXTT% 3640PROCModTitle(0) 3650ENDPROC 3660DEFPROCVCOshftlft(a%) 3670FORT%=0TO127 3680 ?(a%+T%)=?(a%+T%*2) 3690NEXTT% 3700FORT%=0TO127 3710 ?(a%+T%+128)=?(a%+T%) 3720NEXTT% 3730PROCModTitle(0) 3740ENDPROC 3750DEFPROCVCOshftrght(a%) 3760FORT%=255TO0STEP-1 3770 ?(a%+T%)=?(a%+(T%>>1)) 3780NEXTT% 3790PROCModTitle(0) 3800ENDPROC 3810DEFPROCVCOmuldiv2(a%) 3820MOUSE A%,B%,C% 3830FORT%=0TO255 3840 l%=(((?(a%+T%))<<24)>>24) 3850 IF C%AND4 THEN l%=l%*2 3860 IF C%AND1 THEN l%=l%DIV2 3870 IF l%>127 THEN l%=127 3880 IF l%<-127 THEN l%=-127 3890 ?(a%+T%)=l% 3900NEXTT% 3910PROCModTitle(0) 3920ENDPROC 3930DEFPROCVCOrot90(a%) 3940MOUSE A%,B%,C% 3950FORT%=0TO255 3960 l%=T% 3970 IF C%AND4 THEN l%=(T%+64)AND255 3980 IF C%AND1 THEN l%=(T%-64)AND255 3990 temp%?T%=?(a%+l%) 4000NEXTT% 4010FORT%=0TO255 4020 ?(a%+T%)=temp%?T% 4030NEXTT% 4040PROCModTitle(0) 4050ENDPROC 4060DEFPROCVCOrand(a%) 4070FORT%=0TO255 4080 ?(a%+T%)=RND(255)-128 4090NEXTT% 4100PROCModTitle(0) 4110ENDPROC 4120DEFPROCVCOpaint(a%) 4130SYS"OS_Byte",202,0,255TO,sh% 4140IF (sh%AND8)=0 THEN 4150MOUSE A%,B%,C% 4160IF C%=0 THEN vcolastx%=-1 4170IF (C%AND4)OR((C%AND1)AND(vcolastx%=-1)) THEN 4180 temp%!0=wvcoh% 4190 SYS"Wimp_GetWindowState",,temp% 4200 x%=polledb%!0-temp%!4+temp%!20 4210 y%=polledb%!4-temp%!16+temp%!24 4220 IF (x%>=166)AND(x%<=676)AND(y%<=-8)AND(y%>=-260) THEN 4230 PROCModTitle(0) 4240 a%?((x%-166)/2)=(134+y%) 4250 vcolastx%=(x%-166)/2 4260 vcolasty%=134+y% 4270 SYS"Wimp_ForceRedraw",wvcoh%,x%,-260,x%+2,-4 4280 ENDIF 4290ENDIF 4300IF (C%AND1)AND(vcolastx%<>-1) THEN 4310 temp%!0=wvcoh% 4320 SYS"Wimp_GetWindowState",,temp% 4330 x%=polledb%!0-temp%!4+temp%!20 4340 y%=polledb%!4-temp%!16+temp%!24 4350 IF (x%>=166)AND(x%<=676)AND(y%<=-8)AND(y%>=-260) THEN 4360 PROCModTitle(0) 4370 sx=vcolastx% 4380 sy=vcolasty% 4390 ex=(x%-166)DIV2 4400 ey=134+y% 4410 IF ABS(sx-ex)<1 THEN 4420 a%?((x%-166)/2)=(134+y%) 4430 ELSE 4440 y=sy 4450 dx=SGN(ex-sx) 4460 dy=(ey-sy)/ABS(ex-sx) 4470 FOR x=sx TO ex STEP dx 4480 a%?x=y 4490 y+=dy 4500 NEXTx 4510 ENDIF 4520 vcolastx%=(x%-166)/2 4530 vcolasty%=134+y% 4540 IF sx>ex THEN SWAP sx,ex 4550 IF sy>ey THEN SWAP sy,ey 4560 SYS"Wimp_ForceRedraw",wvcoh%,sx*2+166,-260,ex*2+168,-4 4570 ENDIF 4580ENDIF 4590ENDIF 4600ENDPROC 4610 4620DEFPROCEGClick 4630SYS"OS_Byte",202,0,255TO,sh% 4640IF (sh%AND8)=0 THEN 4650a%=egptr%+8 4660MOUSE A%,B%,C% 4670IF C%=0 THEN eglastx%=-1 4680IF (C%AND4)OR((C%AND1)AND(eglastx%=-1)) THEN 4690 temp%!0=wegh% 4700 SYS"Wimp_GetWindowState",,temp% 4710 x%=polledb%!0-temp%!4+temp%!20 4720 y%=polledb%!4-temp%!16+temp%!24 4730 IF (x%>=0)AND(x%<=1022)AND(y%<=-4)AND(y%>=-256) THEN 4740 PROCModTitle(0) 4750 a%?(x%/2)=256+y% 4760 eglastx%=x%/2 4770 eglasty%=256+y% 4780 SYS"Wimp_ForceRedraw",wegh%,x%,-256,x%+2,0 4790 ENDIF 4800ENDIF 4810IF (C%AND1)AND(eglastx%<>-1) THEN 4820 temp%!0=wegh% 4830 SYS"Wimp_GetWindowState",,temp% 4840 x%=polledb%!0-temp%!4+temp%!20 4850 y%=polledb%!4-temp%!16+temp%!24 4860 IF (x%>=0)AND(x%<=1022)AND(y%<=-4)AND(y%>=-256) THEN 4870 PROCModTitle(0) 4880 sx=eglastx% 4890 sy=eglasty% 4900 ex=x%DIV2 4910 ey=256+y% 4920 IF ABS(sx-ex)<1 THEN 4930 a%?(x%/2)=256+y% 4940 ELSE 4950 y=sy 4960 dx=SGN(ex-sx) 4970 dy=(ey-sy)/ABS(ex-sx) 4980 FOR x=sx TO ex STEP dx 4990 a%?x=y 5000 y+=dy 5010 NEXTx 5020 ENDIF 5030 eglastx%=x%/2 5040 eglasty%=256+y% 5050 IF sx>ex THEN SWAP sx,ex 5060 IF sy>ey THEN SWAP sy,ey 5070 SYS"Wimp_ForceRedraw",wegh%,sx*2,-256,ex*2+2,0 5080 ENDIF 5090ENDIF 5100ENDIF 5110ENDPROC 5120 5130DEFPROCRedrawEG 5140A%=polledb%!4 5150B%=polledb%!8 5160C%=egptr% 5170WHILE more% 5180 SYS"Wimp_SetColour",1 5190 LINE A%+2,B%+32,A%+1024,B%+32 5200 LINE A%+2,B%+64,A%+1024,B%+64 5210 LINE A%+2,B%+96,A%+1024,B%+96 5220 LINE A%+2,B%+128,A%+1024,B%+128 5230 LINE A%+2,B%+160,A%+1024,B%+160 5240 LINE A%+2,B%+192,A%+1024,B%+192 5250 LINE A%+2,B%+224,A%+1024,B%+224 5260 SYS"Wimp_SetColour",7 5270 CALLredraweg 5280 SYS"Wimp_GetRectangle",,polledb%TOmore% 5290ENDWHILE 5300ENDPROC 5310 5320DEFPROCJustRedraw 5330WHILE more% 5340 SYS"Wimp_GetRectangle",,polledb%TOmore% 5350ENDWHILE 5360ENDPROC 5370 5380DEFPROCOpen_Window 5390IF polledb%!0=wworkh% AND tools% THEN PROCOpen_Work:ENDPROC 5400IF polledb%!0=wtools% THEN polledb%!0=wworkh%:SYS"Wimp_GetWindowState",,polledb%:PROCOpen_Work:ENDPROC 5410SYS"Wimp_OpenWindow",,polledb% 5420ENDPROC 5430 5440DEFPROCOpen_Work 5450 temp2%!0=wworkh% 5460 SYS"Wimp_GetWindowState",,temp2% 5470 temp%!0=wtoolsh% 5480 SYS"Wimp_GetWindowState",,temp% 5490 temp%!4=polledb%!4-114 5500 temp%!16=polledb%!16 5510 temp%!12=polledb%!4-4 5520 IF polledb%!16-polledb%!8>620 THEN temp%!8=temp%!16-620 ELSE temp%!8=temp%!16-(polledb%!16-polledb%!8) 5530 IF temp%!4<0 THEN temp%!12=temp%!12-temp%!4:temp%!4=0 5540 A%=polledb%!4<oldworkx% 5550 A%=A% OR ((polledb%!4-temp%!4)<114) 5560 A%=A% AND (((temp2%!32)AND(1<<19))=0) 5570 A%=A% OR (((temp2%!32)AND(1<<18))<>0) 5580 IF A% THEN 5590 temp%!28=polledb%!28 5600 SYS"Wimp_OpenWindow",,temp% 5610 polledb%!28=wtoolsh% 5620 SYS"Wimp_OpenWindow",,polledb% 5630 ELSE 5640 temp%!28=polledb%!28 5650 polledb%!28=wtoolsh% 5660 SYS"Wimp_OpenWindow",,polledb% 5670 SYS"Wimp_GetWindowState",,polledb% 5680 temp%!4=polledb%!4-114 5690 temp%!16=polledb%!16 5700 temp%!12=polledb%!4-4 5710 IF polledb%!16-polledb%!8>620 THEN temp%!8=temp%!16-620 ELSE temp%!8=temp%!16-(polledb%!16-polledb%!8) 5720 IF temp%!4<0 THEN temp%!12=temp%!12-temp%!4:temp%!4=0 5730 SYS"Wimp_OpenWindow",,temp% 5740 polledb%!28=wtoolsh% 5750 SYS"Wimp_OpenWindow",,polledb% 5760 ENDIF 5770 oldworkx%=polledb%!4 5780ENDPROC 5790 5800DEFPROCClose_Window 5810SYS"Wimp_CloseWindow",,polledb% 5820IF polledb%!0=wworkh% THEN 5830 polledb%!0=wtoolsh% 5840 SYS"Wimp_CloseWindow",,polledb% 5850ENDIF 5860ENDPROC 5870 5880DEFPROCMouse_Click 5890CASE polledb%!12 OF 5900 WHEN wworkh%:PROCWorkClick 5910 WHEN wtoolsh%:PROCToolsClick 5920 WHEN wconstanth%:PROCConstClick 5930 WHEN wmultch%:PROCMultCClick 5940 WHEN wvcoh%:PROCVCOClick 5950 WHEN wegh%:PROCEGClick 5960 WHEN wnldisth%:PROCNLDistClick 5970 WHEN wstatsh%:PROCStatsClick 5980 WHEN winputh%:PROCInputClick 5990 WHEN -2:PROCIconBClick 6000ENDCASE 6010ENDPROC 6020 6030DEFPROCToolsClick 6040IF polledb%!8<16 THEN 6050 CASE polledb%!16 OF 6060 WHEN 0:PROCPopPlaceM 6070 WHEN 1:lastmenu%=workmenu%:polledb%!0=2:polledb%!4=-1:PROCMenu_Select2 6080 WHEN 2:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=-1:PROCMenu_Select2 6090 WHEN 3:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=3:polledb%!8=-1:PROCMenu_Select2 6100 WHEN 4:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=4:polledb%!8=-1:PROCMenu_Select2 6110 WHEN 5:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=0:polledb%!8=-1:PROCMenu_Select2 6120 WHEN 6:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=1:polledb%!8=-1:PROCMenu_Select2 6130 WHEN 7:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=2:polledb%!8=-1:PROCMenu_Select2 6140 WHEN 8:lastmenu%=workmenu%:polledb%!0=3:polledb%!4=-1:PROCMenu_Select2 6150 ENDCASE 6160ENDIF 6170ENDPROC 6180 6190DEFPROCPopPlaceM 6200lastmx%=polledb%!0-64:lastmy%=polledb%!4+12:lastmenu%=addmenu%:SYS"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% 6210ENDPROC 6220 6230DEFPROCNLDistClick 6240SYS"OS_Byte",202,0,255TO,sh% 6250IF (sh%AND8)=0 THEN 6260a%=nldistptr% 6270MOUSE A%,B%,C% 6280IF C%=0 THEN nldistlastx%=-1 6290IF (C%AND4)OR((C%AND1)AND(nldistlastx%=-1)) THEN 6300 temp%!0=wnldisth% 6310 SYS"Wimp_GetWindowState",,temp% 6320 x%=polledb%!0-temp%!4+temp%!20 6330 y%=polledb%!4-temp%!16+temp%!24 6340 IF (x%>=0)AND(x%<=510)AND(y%<=-2)AND(y%>=-512) THEN 6350 PROCModTitle(0) 6360 a%?(x%/2)=256+y%/2 6370 nldistlastx%=x%/2 6380 nldistlasty%=256+y%/2 6390 SYS"Wimp_ForceRedraw",wnldisth%,x%,-512,x%+2,0 6400 ENDIF 6410ENDIF 6420IF (C%AND1)AND(nldistlastx%<>-1) THEN 6430 temp%!0=wnldisth% 6440 SYS"Wimp_GetWindowState",,temp% 6450 x%=polledb%!0-temp%!4+temp%!20 6460 y%=polledb%!4-temp%!16+temp%!24 6470 IF (x%>=0)AND(x%<=510)AND(y%<=-2)AND(y%>=-512) THEN 6480 PROCModTitle(0) 6490 sx=nldistlastx% 6500 sy=nldistlasty% 6510 ex=x%DIV2 6520 ey=256+y%/2 6530 IF ABS(sx-ex)<1 THEN 6540 a%?(x%/2)=256+y%/2 6550 ELSE 6560 y=sy 6570 dx=SGN(ex-sx) 6580 dy=(ey-sy)/ABS(ex-sx) 6590 FOR x=sx TO ex STEP dx 6600 a%?x=y 6610 y+=dy 6620 NEXTx 6630 ENDIF 6640 nldistlastx%=x%/2 6650 nldistlasty%=256+y%/2 6660 IF sx>ex THEN SWAP sx,ex 6670 IF sy>ey THEN SWAP sy,ey 6680 SYS"Wimp_ForceRedraw",wnldisth%,sx*2,-512,ex*2+2,0 6690 ENDIF 6700ENDIF 6710ENDIF 6720ENDPROC 6730 6740DEFPROCStatsClick 6750IF polledb%!8<8 THEN 6760 IF polledb%!16=4 THEN samtype%=0:PROCSendSFXED(&9abc0) 6770 IF polledb%!16=5 THEN samtype%=1:PROCSendSFXED(&9abc1) 6780 IF polledb%!16=6 THEN samtype%=2:PROCSendSFXED(&9abc2) 6790ENDIF 6800ENDPROC 6810 6820DEFPROCSendSFXED(M%) 6830H%=FNGetSFXEDH 6840IF H%=0 THEN 6850 PROCReportErr("SFXED not present.") 6860ELSE 6870 temp%!0=256 6880 temp%!4=0 6890 temp%!8=0 6900 temp%!12=0 6910 temp%!16=M% 6920 SYS"Wimp_SendMessage",17,temp%,H% 6930ENDIF 6940ENDPROC 6950 6960DEFPROCMBString(s%) 6970WHILE ?s%>31 s%+=1:ENDWHILE 6980?s%=13 6990ENDPROC 7000 7010DEFPROCDataSave 7020IF messbk%!4<>taskh% THEN 7030 filetoload2$=FNStrip($(messbk%+44)) 7040 messbk%!0=256 7050 $(messbk%+44)="<Wimp$Scrap>"+CHR$(0) 7060 messbk%!12=messbk%!8 7070 messbk%!16=2 7080 messbk%!36=-1 7090 SYS"Wimp_SendMessage",17,messbk%,messbk%!4 7100ENDIF 7110ENDPROC 7120 7130DEFPROCSaveAck 7140IF savetype%<>-1 THEN 7150 CASE savetype% OF 7160 WHEN 0:temp%!0=wsaveasshh% 7170 ENDCASE 7180 temp%!4=1 7190 SYS"Wimp_GetIconState",,temp% 7200 PROCMBString(polledb%+44) 7210 $(!(temp%+28))=$(polledb%+44) 7220 f$=$(polledb%+44) 7230 CASE savetype% OF 7240 WHEN 0:PROCSaveSh(f$) 7250 ENDCASE 7260 IF f%<>0 THEN CLOSE#f% 7270 savetype%=-1 7280 messbk%!12=messbk%!8 7290 messbk%!16=3 7300 SYS"Wimp_SendMessage",17,messbk%,messbk%!4 7310ENDIF 7320ENDPROC 7330 7340DEFPROCDataLoad 7350CASE polledb%!20 OF 7360 WHEN wworkh%,-2:PROCLoadSheet 7370 WHEN winputh%:PROCLoadInput 7380ENDCASE 7390ENDPROC 7400 7410DEFPROCDataOpen 7420IF polledb%!40=&78a THEN 7430 PROCLoadSheet 7440 messbk%!0=256 7450 messbk%!12=messbk%!8 7460 SYS"Wimp_SendMessage",17,messbk%,messbk%!4 7470ENDIF 7480ENDPROC 7490 7500DEFPROCLoadInput 7510LOCAL ERROR 7520ON ERROR LOCAL PROCReportErr(REPORT$):ENDPROC 7530PROCModTitle(0) 7540PROCMBString(polledb%+44) 7550$(inpptr%)=$(polledb%+44) 7560temp%!0=winputh% 7570temp%!4=1 7580SYS"Wimp_GetIconState",,temp% 7590$(temp%!28)=$(polledb%+44) 7600f%=OPENIN($(polledb%+44)) 7610inpptr%!268=EXT#f% 7620CLOSE#f% 7630temp%!4=8 7640SYS"Wimp_GetIconState",,temp% 7650@%=&90a 7660$(temp%!28)=STR$(inpptr%!268) 7670@%=&01020a00 7680SYS"Wimp_ForceRedraw",winputh%,0,-4000,4000,0 7690ENDPROC 7700 7710DEFPROCLoadSheet 7720LOCAL ERROR 7730ON ERROR LOCAL PROCReportErr(REPORT$):ENDPROC 7740IF polledb%!40<>&78a THEN 7750 PROCReportErr("Not a sheet.") 7760ELSE 7770 PROCMBString(polledb%+44) 7780 filetoload$=$(polledb%+44) 7790 IF sheetsaved%=-1 THEN 7800 PROCLoadSh(filetoload$) 7810 ELSE 7820 A%=FNConfirm("Sheet has been modified. Are you sure you want to load another sheet?") 7830 IF A%=1 THEN PROCLoadSh(filetoload$) 7840 ENDIF 7850ENDIF 7860ENDPROC 7870 7880DEFPROCLoadSh(f$) 7890 PROCRemAllDrag 7900 PROCClear 7910 fi$=FNStrip(f$) 7920 sheetname$=fi$ 7930 f%=OPENIN(f$) 7940 SYS"OS_GBPB",4,f%,temp%,4 7950 IF temp%!0=&4d584653 THEN 7960 SYS"OS_GBPB",4,f%,temp%,20 7970 temp2%!0=wstatsh% 7980 temp2%!4=8 7990 SYS"Wimp_GetIconState",,temp2% 8000 $(temp2%!28)=$temp% 8010 SYS"OS_GBPB",4,f%,temp%,4 8020 ENDIF 8030 IF temp%!0>99999 THEN temp%!0=99999 8040 temp2%!0=wstatsh% 8050 temp2%!4=3 8060 SYS"Wimp_GetIconState",,temp2% 8070 $(temp2%!28)=STR$(temp%!0) 8080 SYS"OS_GBPB",4,f%,temp%,4 8090 i%=temp%!0 8100 WHILE i%<>-1 8110 SYS"OS_GBPB",4,f%,temp2%,32 8120 SYS"OS_GBPB",4,f%,temp%,4 8130 l%=FNAlloc(temp%!0) 8140 temp2%!12=l% 8150 temp2%!28=(temp2%!28)AND&f 8160 SYS"OS_GBPB",4,f%,l%,temp%!0 8170 temp%!0=wworkh% 8180 temp%!4=temp2%!4 8190 temp%!8=temp2%!8 8200 temp%!12=temp2%!4+92 8210 temp%!16=temp2%!8+52 8220 temp%!20=%00001000000000001010000000011010 8230 CASE temp2%!0 OF 8240 WHEN 0:i$="vco" 8250 WHEN 1:i$="noise" 8260 WHEN 2:i$="eg" 8270 WHEN 3:i$="filtlo" 8280 WHEN 4:i$="filthi" 8290 WHEN 5:i$="const" 8300 WHEN 6:i$="mult" 8310 WHEN 7:i$="multc" 8320 WHEN 8:i$="add" 8330 WHEN 13:i$="sub" 8340 WHEN 14:i$="pulse" 8350 WHEN 15:i$="delay" 8360 WHEN 9:i$="output" 8370 WHEN 16:i$="input" 8380 WHEN 17:i$="samhold" 8390 WHEN 18:i$="nldist" 8400 ENDCASE 8410 $(temp%+24)=i$ 8420 SYS"Wimp_CreateIcon",,temp%TOih% 8430 litrans%(i%)=ih% 8440 FORT%=0TO28STEP4 8450 iconinfo%!(ih%*32+T%)=temp2%!T% 8460 NEXTT% 8470 SYS"OS_GBPB",4,f%,temp%,4 8480 i%=temp%!0 8490 ENDWHILE 8500 FORT%=0TOmaxicons%-1 8510 IF iconinfo%!(T%*32)<>-1 THEN 8520 IF iconinfo%!(T%*32+16)<>-1 THEN iconinfo%!(T%*32+16)=litrans%(iconinfo%!(T%*32+16)) 8530 IF iconinfo%!(T%*32+20)<>-1 THEN iconinfo%!(T%*32+20)=litrans%(iconinfo%!(T%*32+20)) 8540 ENDIF 8550 NEXTT% 8560 CLOSE#f% 8570 IF filetoload$="<Wimp$Scrap>" THEN 8580 OSCLI("Delete "+filetoload$) 8590 f$=filetoload2$ 8600 ENDIF 8610 $(wwork%!72)=f$ 8620 sheetsaved%=-1 8630 temp%!0=wworkh% 8640 temp%!0=wsaveasshh% 8650 temp%!4=1 8660 SYS"Wimp_GetIconState",,temp% 8670 $(temp%!28)=f$ 8680 PROCOpenWork 8690 SYS"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 8700 SYS"Wimp_ForceRedraw",wstatsh%,0,-4000,4000,0 8710ENDPROC 8720 8730DEFFNStrip(fs$) 8740LOCAL f%,a% 8750f%=1 8760a%=1 8770WHILE MID$(fs$,f%)<>"" 8780 IF MID$(fs$,f%,1)="." OR MID$(fs$,f%,1)=":" THEN a%=f%+1 8790 f%+=1 8800ENDWHILE 8810=MID$(fs$,a%) 8820 8830DEFPROCInst 8840n$="" 8850f%=OPENIN("<SFXM$Dir>.iddata") 8860a%=BGET#f% 8870n$=n$+CHR$(a%) 8880a%=BGET#f% 8890n$=n$+CHR$(a%) 8900a%=BGET#f% 8910n$=n$+CHR$(a%) 8920a%=BGET#f% 8930n$=n$+CHR$(a%) 8940IF n$<>"SFXM" THEN CLOSE#f%:PROCReportErr("Please install SFXM first!"):PROCQuit 8950usname$="" 8960idnum$="" 8970check%=0 8980REPEAT 8990 a%=BGET#f% 9000 IF a%<>0 THEN usname$=usname$+CHR$(a% EOR &aa) 9010 check%=check% EOR a% 9020UNTIL a%=0 9030REPEAT 9040 a%=BGET#f% 9050 IF a%<>0 THEN idnum$=idnum$+CHR$(a% EOR &aa) 9060 check%=check% EOR a% 9070UNTIL a%=0 9080a%=BGET#f% 9090CLOSE#f% 9100IF a%<>check% THEN PROCQuit 9110temp%!0=winsth% 9120temp%!4=9 9130SYS"Wimp_GetIconState",,temp% 9140$(temp%!28)=usname$ 9150temp%!0=winsth% 9160temp%!4=13 9170SYS"Wimp_GetIconState",,temp% 9180$(temp%!28)=idnum$ 9190temp%!0=winsth% 9200SYS"Wimp_GetWindowState",,temp% 9210temp%!28=-1 9220SYS"Wimp_OpenWindow",,temp% 9230insttime%=TIME 9240instopen%=-1 9250ENDPROC 9260 9270DEFPROCConstClick 9280PROCModTitle(0) 9290IF polledb%!16=2 THEN 9300 temp%!0=wconstanth% 9310 temp%!4=0 9320 SYS"Wimp_GetIconState",,temp% 9330 v=VAL($(temp%!28)) 9340 IF ABS(v)>32767 THEN 9350 PROCReportErr("Only numbers between -32767 and 32767 allowed.") 9360 ELSE 9370 !constptr%=&10000*v 9380 SYS"Wimp_CloseWindow",,temp% 9390 constptr%=0 9400 ENDIF 9410ENDIF 9420ENDPROC 9430 9440DEFPROCInputClick 9450PROCModTitle(0) 9460inptype%=inpptr%!256 9470IF polledb%!16=6 THEN 9480 temp%!0=winputh% 9490 SYS"Wimp_CloseWindow",,temp% 9500ENDIF 9510IF polledb%!16=3 THEN inptype%=(inptype%AND&fffffffc)+0 9520IF polledb%!16=4 THEN inptype%=(inptype%AND&fffffffc)+1 9530IF polledb%!16=5 THEN inptype%=(inptype%AND&fffffffc)+2 9540IF polledb%!16=11 THEN inptype%=(inptype%AND&fffffffb)+4 9550IF polledb%!16=12 THEN inptype%=(inptype%AND&fffffffb) 9560inpptr%!256=inptype% 9570ENDPROC 9580 9590DEFPROCMultCClick 9600PROCModTitle(0) 9610IF polledb%!16=2 THEN 9620 temp%!0=wmultch% 9630 temp%!4=0 9640 SYS"Wimp_GetIconState",,temp% 9650 v=VAL($(temp%!28)) 9660 IF ABS(v)>32767 THEN 9670 PROCReportErr("Only numbers between -32767 and 32767 allowed.") 9680 ELSE 9690 !mconstptr%=&10000*v 9700 SYS"Wimp_CloseWindow",,temp% 9710 mconstptr%=0 9720 ENDIF 9730ENDIF 9740IF (polledb%!16>=3)AND(polledb%!16<=13) THEN 9750 SYS"Wimp_SetCaretPosition",-1,-1 9760 temp%!0=wmultch% 9770 temp%!4=0 9780 SYS"Wimp_GetIconState",,temp% 9790 $(temp%!28)=LEFT$(STR$(2^(((polledb%!16)-2)/12)),11) 9800 SYS"Wimp_ForceRedraw",wmultch%,0,-108,390,0 9810ENDIF 9820ENDPROC 9830 9840DEFPROCWorkClick 9850CASE polledb%!8 OF 9860 WHEN 2:lastmx%=polledb%!0-64:lastmy%=polledb%!4+12:lastmenu%=workmenu%:SYS"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% 9870 WHEN 4*256:PROCClickWork 9880 WHEN 1*256:PROCAdjCWork 9890 WHEN 4*16:PROCDragWork 9900 WHEN 4:PROCDoubleWork 9910 WHEN 1:PROCAdjCWork 9920ENDCASE 9930ENDPROC 9940 9950DEFPROCClickWork 9960CASE dfunc% OF 9970 WHEN 0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18:PROCCreateObj(dfunc%,polledb%!0,polledb%!4) 9980 WHEN 10:PROCSelIcn2 9990 WHEN 12:PROCConnect 10000ENDCASE 10010ENDPROC 10020 10030DEFPROCAdjToolsC 10040CASE olddfunc% OF 10050 WHEN 0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18:PROCIconColor(0,0) 10060 WHEN 10:PROCIconColor(2,0) 10070 WHEN 12:PROCIconColor(1,0) 10080ENDCASE 10090CASE dfunc% OF 10100 WHEN 0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18:PROCIconColor(0,9) 10110 WHEN 10:PROCIconColor(2,9) 10120 WHEN 12:PROCIconColor(1,9) 10130ENDCASE 10140olddfunc%=dfunc% 10150ENDPROC 10160 10170DEFPROCIconColor(I%,C%) 10180C%=C%AND15 10190temp%!0=wtoolsh% 10200temp%!4=I% 10210temp%!8=C%<<28 10220temp%!12=15<<28 10230SYS"Wimp_SetIconState",,temp% 10240ENDPROC 10250 10260DEFPROCSelIcn 10270IF polledb%!16<>-1 THEN 10280 PROCSwapIconS(polledb%!16) 10290ELSE 10300 PROCClearSel 10310ENDIF 10320ENDPROC 10330 10340DEFPROCSelIcn2 10350IF polledb%!16<>-1 THEN PROCSwapIconS(polledb%!16) 10360ENDPROC 10370 10380DEFPROCDragWork 10390IF dfunc%=10 THEN 10400 drag%=-1 10410 temp%!0=wworkh% 10420 SYS"Wimp_GetWindowState",,temp% 10430 startlx%=polledb%!0+temp%!20-temp%!4 10440 startly%=polledb%!4+temp%!24-temp%!16 10450 startlx%=(startlx%DIV96)*96+48 10460 startly%=(startly%DIV56)*56-32 10470 newlx%=-1:newly%=-1 10480 oldlx%=-1:oldly%=-1 10490ENDIF 10500ENDPROC 10510 10520DEFPROCDoubleWork 10530CASE dfunc% OF 10540 WHEN 10:PROCSelIcn 10550 WHEN 12:PROCConnect 10560ENDCASE 10570ENDPROC 10580 10590DEFPROCAdjCWork 10600CASE dfunc% OF 10610 WHEN 10:PROCSetParam 10620 WHEN 12:PROCSwapLin 10630ENDCASE 10640ENDPROC 10650 10660DEFPROCSetParam 10670CASE iconinfo%!((polledb%!16)*32) OF 10680 WHEN 0:PROCSetVCOParam 10690 WHEN 2:PROCSetEGParam 10700 WHEN 5:PROCSetConstParam 10710 WHEN 7:PROCSetMultCParam 10720 WHEN 16:PROCSetInputParam 10730 WHEN 18:PROCSetNLDistParam 10740ENDCASE 10750ENDPROC 10760 10770DEFPROCSetNLDistParam 10780temp%!0=wnldisth% 10790SYS"Wimp_GetWindowState",,temp% 10800temp%!4=polledb%!0-256 10810temp%!8=polledb%!4-256 10820temp%!12=temp%!4+512 10830temp%!16=temp%!8+512 10840temp%!28=-1 10850IF (temp%!32)AND(1<<16) THEN SYS"Wimp_CloseWindow",,temp% 10860SYS"Wimp_OpenWindow",,temp% 10870nldistptr%=iconinfo%!((polledb%!16)*32+12) 10880nldistlastx%=-1 10890nldistlasty%=-1 10900REPEAT:MOUSE A%,B%,C%:UNTIL C%=0 10910ENDPROC 10920 10930DEFPROCSetInputParam 10940temp%!0=winputh% 10950temp%!4=1 10960SYS"Wimp_GetIconState",,temp% 10970inpptr%=iconinfo%!((polledb%!16)*32+12) 10980$(temp%!28)=$(inpptr%) 10990inptype%=inpptr%!256 11000temp%!4=8 11010SYS"Wimp_GetIconState",,temp% 11020@%=&90a 11030$(temp%!28)=STR$(inpptr%!268) 11040@%=&01020a00 11050temp%!12=1<<21 11060temp%!4=3 11070IF (inptype%AND3)=0 THEN temp%!8=1<<21 ELSE temp%!8=0 11080SYS"Wimp_SetIconState",,temp% 11090temp%!4=4 11100IF (inptype%AND3)=1 THEN temp%!8=1<<21 ELSE temp%!8=0 11110SYS"Wimp_SetIconState",,temp% 11120temp%!4=5 11130IF (inptype%AND3)=2 THEN temp%!8=1<<21 ELSE temp%!8=0 11140SYS"Wimp_SetIconState",,temp% 11150temp%!4=11 11160IF (inptype%AND4) THEN temp%!8=1<<21 ELSE temp%!8=0 11170SYS"Wimp_SetIconState",,temp% 11180temp%!4=12 11190IF (inptype%AND4) THEN temp%!8=0 ELSE temp%!8=1<<21 11200SYS"Wimp_SetIconState",,temp% 11210SYS"Wimp_GetWindowState",,temp% 11220temp%!4=polledb%!0-210 11230temp%!8=polledb%!4-100 11240temp%!12=temp%!4+430 11250temp%!16=temp%!8+212 11260temp%!28=-1 11270IF (temp%!32)AND(1<<16) THEN SYS"Wimp_CloseWindow",,temp% 11280SYS"Wimp_OpenWindow",,temp% 11290REPEAT:MOUSE A%,B%,C%:UNTIL C%=0 11300ENDPROC 11310 11320DEFPROCSetVCOParam 11330temp%!0=wvcoh% 11340SYS"Wimp_GetWindowState",,temp% 11350temp%!4=polledb%!0-342 11360temp%!8=polledb%!4-132 11370temp%!12=temp%!4+684 11380temp%!16=temp%!8+264 11390temp%!28=-1 11400IF (temp%!32)AND(1<<16) THEN SYS"Wimp_CloseWindow",,temp% 11410SYS"Wimp_OpenWindow",,temp% 11420vcoptr%=iconinfo%!((polledb%!16)*32+12) 11430vcolastx%=-1 11440vcolasty%=-1 11450REPEAT:MOUSE A%,B%,C%:UNTIL C%=0 11460ENDPROC 11470 11480DEFPROCSetEGParam 11490temp%!0=wegh% 11500SYS"Wimp_GetWindowState",,temp% 11510temp%!4=polledb%!0-512 11520temp%!8=polledb%!4-128 11530temp%!12=temp%!4+1024 11540temp%!16=temp%!8+256 11550temp%!28=-1 11560IF (temp%!32)AND(1<<16) THEN SYS"Wimp_CloseWindow",,temp% 11570SYS"Wimp_OpenWindow",,temp% 11580egptr%=iconinfo%!((polledb%!16)*32+12) 11590REPEAT:MOUSE A%,B%,C%:UNTIL C%=0 11600ENDPROC 11610 11620DEFPROCSetConstParam 11630temp%!0=wconstanth% 11640temp%!4=0 11650SYS"Wimp_GetIconState",,temp% 11660constptr%=iconinfo%!((polledb%!16)*32+12) 11670$(temp%!28)=LEFT$(STR$((!constptr%)/&10000),11) 11680SYS"Wimp_GetWindowState",,temp% 11690temp%!4=polledb%!0-180 11700temp%!8=polledb%!4-28 11710temp%!12=temp%!4+360 11720temp%!16=temp%!8+56 11730temp%!28=-1 11740IF (temp%!32)AND(1<<16) THEN SYS"Wimp_CloseWindow",,temp% 11750SYS"Wimp_OpenWindow",,temp% 11760ENDPROC 11770 11780DEFPROCSetMultCParam 11790temp%!0=wmultch% 11800temp%!4=0 11810SYS"Wimp_GetIconState",,temp% 11820mconstptr%=iconinfo%!((polledb%!16)*32+12) 11830$(temp%!28)=LEFT$(STR$((!mconstptr%)/&10000),11) 11840SYS"Wimp_GetWindowState",,temp% 11850temp%!4=polledb%!0-145 11860temp%!8=polledb%!4-54 11870temp%!12=temp%!4+390 11880temp%!16=temp%!8+108 11890temp%!28=-1 11900IF (temp%!32)AND(1<<16) THEN SYS"Wimp_CloseWindow",,temp% 11910SYS"Wimp_OpenWindow",,temp% 11920ENDPROC 11930 11940DEFPROCSwapLin 11950PROCModTitle(0) 11960IF (polledb%!16<>-1) THEN 11970 temp%!0=wworkh% 11980 SYS"Wimp_GetWindowState",,temp% 11990 slx%=polledb%!0-temp%!4+temp%!20 12000 sly%=polledb%!4-temp%!16+temp%!24 12010 sic%=polledb%!16 12020 x%=slx%-iconinfo%!(sic%*32+4)-58 12030 y%=sly%-iconinfo%!(sic%*32+8)-28 12040 si%=FNGetIO(x%,y%,sic%) 12050 IF (si%<>2) THEN 12060 eic%=iconinfo%!(sic%*32+si%*4+16) 12070 elx%=iconinfo%!(eic%*32+4) 12080 ely%=iconinfo%!(eic%*32+8) 12090 ls%=iconinfo%!(sic%*32+28) 12100 IF si%=0 THEN ls%=(ls%AND&fffffffc)OR((ls%+1)AND3) ELSE ls%=(ls%AND&fffffff3)OR((ls%+4)AND&c) 12110 iconinfo%!(sic%*32+28)=ls% 12120 IF slx%>elx% THEN SWAP slx%,elx% 12130 IF sly%>ely% THEN SWAP sly%,ely% 12140 SYS"Wimp_ForceRedraw",wworkh%,slx%-98,sly%-58,elx%+98,ely%+58 12150 ENDIF 12160ENDIF 12170ENDPROC 12180 12190DEFPROCConnect 12200PROCModTitle(0) 12210IF polledb%!16=-1 THEN 12220 VDU7 12230ELSE 12240 temp%!0=wworkh% 12250 SYS"Wimp_GetWindowState",,temp% 12260 IF startlx%=-1 THEN 12270 startlx%=polledb%!0-temp%!4+temp%!20 12280 startly%=polledb%!4-temp%!16+temp%!24 12290 startic%=polledb%!16 12300 x%=startlx%-iconinfo%!(startic%*32+4)-58 12310 y%=startly%-iconinfo%!(startic%*32+8)-28 12320 starti%=FNGetIO(x%,y%,startic%) 12330 ELSE 12340 endlx%=polledb%!0-temp%!4+temp%!20 12350 endly%=polledb%!4-temp%!16+temp%!24 12360 endic%=polledb%!16 12370 x%=endlx%-iconinfo%!(endic%*32+4)-58 12380 y%=endly%-iconinfo%!(endic%*32+8)-28 12390 endi%=FNGetIO(x%,y%,endic%) 12400 IF (starti%=endi%)OR((starti%EORendi%)=1) THEN 12410 VDU7 12420 ELSE 12430 IF endi%=2 THEN 12440 IF iconinfo%!(startic%*32+16+starti%*4)<>-1 THEN PROCReportErr("Input already connected.") ELSE iconinfo%!(startic%*32+16+starti%*4)=endic% 12450 ELSE 12460 IF iconinfo%!(endic%*32+16+endi%*4)<>-1 THEN PROCReportErr("Input already connected.") ELSE iconinfo%!(endic%*32+16+endi%*4)=startic% 12470 ENDIF 12480 IF startlx%>endlx% THEN SWAP startlx%,endlx% 12490 IF startly%>endly% THEN SWAP startly%,endly% 12500 SYS"Wimp_ForceRedraw",wworkh%,startlx%-98,startly%-58,endlx%+98,endly%+58 12510 PROCRemAllDrag 12520 ENDIF 12530 ENDIF 12540ENDIF 12550ENDPROC 12560 12570DEFFNGetIO(x%,y%,i%) 12580IF x%>0 THEN 12590 io%=2 12600ELSE 12610 IF y%>0 THEN io%=0 ELSE io%=1 12620ENDIF 12630CASE iconinfo%!(i%*32) OF 12640 WHEN 1:IF io%=1 THEN io%=0 12650 WHEN 2:io%=2 12660 WHEN 5:io%=2 12670 WHEN 7:IF io%=1 THEN io%=0 12680 WHEN 9:io%=0 12690 WHEN 16:io%=2 12700 WHEN 18:IF io%=1 THEN io%=0 12710ENDCASE 12720=io% 12730 12740DEFPROCCreateObj(obj%,xc%,yc%) 12750PROCRemAllDrag 12760PROCModTitle(0) 12770temp%!0=wworkh% 12780SYS"Wimp_GetWindowState",,temp% 12790x%=xc%-(temp%!4)+(temp%!20) 12800y%=yc%-(temp%!16)+(temp%!24) 12810x%=(x%DIV96)*96 12820y%=((y%DIV56)-1)*56 12830temp%!0=wworkh% 12840temp%!4=x% 12850temp%!8=y% 12860temp%!12=x%+92 12870temp%!16=y%+52 12880temp%!20=%00001000000000001010000000011010 12890$(temp%+24)=df$ 12900SYS"Wimp_CreateIcon",,temp%TOih% 12910IF ih%>=maxicons% THEN 12920 temp%!0=wworkh% 12930 temp%!4=ih% 12940 SYS"Wimp_DeleteIcon",,temp% 12950 PROCReportErr("Too many objects.") 12960ELSE 12970 CASE obj% OF 12980 WHEN 0:l%=FNAlloc(260):IF l%<>-1 THEN PROCVCOsin(l%+4) 12990 WHEN 1:l%=-1 13000 WHEN 2:l%=FNAlloc(520):IF l%<>-1 THEN FORT%=l%+8TOl%+516STEP4:!T%=-1:NEXTT% 13010 WHEN 3:l%=-1 13020 WHEN 4:l%=-1 13030 WHEN 5:l%=FNAlloc(4):IF l%<>-1 THEN !l%=&10000 13040 WHEN 6:l%=FNAlloc(4) 13050 WHEN 7:l%=FNAlloc(4):IF l%<>-1 THEN !l%=&10000 13060 WHEN 8:l%=FNAlloc(4) 13070 WHEN 9:l%=FNAlloc(4) 13080 WHEN 13:l%=-1 13090 WHEN 14:l%=FNAlloc(4) 13100 WHEN 15:l%=-1 13110 WHEN 16:l%=-1 13120 WHEN 17:l%=-1 13130 WHEN 18:l%=-1 13140 ENDCASE 13150 IF l%=-1 THEN 13160 temp%!0=wworkh% 13170 temp%!4=ih% 13180 SYS"Wimp_DeleteIcon",,temp% 13190 PROCReportErr("No room for object.") 13200 ELSE 13210 iconinfo%!(ih%*32+0)=obj% 13220 iconinfo%!(ih%*32+4)=x% 13230 iconinfo%!(ih%*32+8)=y% 13240 iconinfo%!(ih%*32+12)=l% 13250 iconinfo%!(ih%*32+16)=-1 13260 iconinfo%!(ih%*32+20)=-1 13270 iconinfo%!(ih%*32+24)=-1 13280 iconinfo%!(ih%*32+28)=15 13290 ENDIF 13300ENDIF 13310SYS"Wimp_ForceRedraw",wworkh%,x%,y%,x%+46*2,y%+13*4 13320ENDPROC 13330 13340DEFPROCIconBClick 13350CASE polledb%!8 OF 13360 WHEN 1,4:PROCOpenWork 13370 WHEN 2:lastmx%=polledb%!0-64:lastmy%=96+176:lastmenu%=iconmenu%:SYS"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% 13380ENDCASE 13390ENDPROC 13400 13410DEFPROCOpenWork 13420polledb%!0=wworkh% 13430SYS"Wimp_GetWindowState",,polledb% 13440polledb%!28=-1 13450oldworkx%=polledb%!4 13460PROCOpen_Window 13470temp%!0=wstatsh% 13480SYS"Wimp_GetWindowState",,temp% 13490temp%!28=-1 13500SYS"Wimp_OpenWindow",,temp% 13510ENDPROC 13520 13530DEFPROCUser_Drag_Box 13540PROCDragSaved 13550ENDPROC 13560 13570DEFPROCKey_Pressed 13580IF polledb%!24=&1cc THEN 13590 SYS"Wimp_ProcessKey",&1cc 13600ELSE 13610 CASE polledb%!0 OF 13620 WHEN wconstanth%:PROCKeyConst 13630 WHEN winputh%:PROCKeyInput 13640 WHEN wmultch%:PROCKeyMultC 13650 WHEN wstatsh%:IF((polledb%!4=3)OR(polledb%!4=8))AND(polledb%!24=13) THEN SYS"Wimp_SetCaretPosition",-1,-1 13660 ENDCASE 13670ENDIF 13680ENDPROC 13690 13700DEFPROCKeyInput 13710PROCModTitle(0) 13720IF (polledb%!4=1)AND(polledb%!24=13) THEN 13730 temp%!0=winputh% 13740 temp%!4=1 13750 SYS"Wimp_GetIconState",,temp% 13760 $(inpptr%)=$(temp%!28) 13770 inpptr%!256=inptype% 13780 SYS"Wimp_CloseWindow",,temp% 13790ENDIF 13800ENDPROC 13810 13820DEFPROCKeyConst 13830PROCModTitle(0) 13840IF (polledb%!4=0)AND(polledb%!24=13) THEN 13850 temp%!0=wconstanth% 13860 temp%!4=0 13870 SYS"Wimp_GetIconState",,temp% 13880 v=VAL($(temp%!28)) 13890 IF ABS(v)>32767 THEN 13900 PROCReportErr("Only numbers between -32767 and 32767 allowed.") 13910 ELSE 13920 !constptr%=&10000*v 13930 SYS"Wimp_CloseWindow",,temp% 13940 constptr%=0 13950 ENDIF 13960ENDIF 13970ENDPROC 13980 13990DEFPROCKeyMultC 14000PROCModTitle(0) 14010IF (polledb%!4=0)AND(polledb%!24=13) THEN 14020 temp%!0=wmultch% 14030 temp%!4=0 14040 SYS"Wimp_GetIconState",,temp% 14050 v=VAL($(temp%!28)) 14060 IF ABS(v)>32767 THEN 14070 PROCReportErr("Only numbers between -32767 and 32767 allowed.") 14080 ELSE 14090 !mconstptr%=&10000*v 14100 SYS"Wimp_CloseWindow",,temp% 14110 mconstptr%=0 14120 ENDIF 14130ENDIF 14140ENDPROC 14150 14160DEFPROCMenu_Select 14170SYS"Wimp_GetPointerInfo",,temp% 14180oldbut%=temp%!8 14190PROCMenu_Select2 14200IF (oldbut%AND1) THEN SYS"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% 14210ENDPROC 14220 14230DEFPROCMenu_Select2 14240CASE lastmenu% OF 14250 WHEN iconmenu%:PROCMSelIcon 14260 WHEN workmenu%:PROCMSelWork 14270 WHEN addmenu%:polledb%!4=polledb%!0:polledb%!8=-1:polledb%!0=0:PROCMSelWork 14280ENDCASE 14290ENDPROC 14300 14310DEFPROCMSelIcon 14320IF polledb%!0=2 THEN PROCClear2 14330IF polledb%!0=3 THEN PROCCloseDown 14340ENDPROC 14350 14360DEFPROCMSelWork 14370CASE polledb%!0 OF 14380 WHEN 0:PROCMenuAdd 14390 WHEN 1:PROCMenuSel 14400 WHEN 2:workmenu%!(28+24*1+0)=0:workmenu%!(28+24*2+0)=1:PROCMenuConnect 14410 WHEN 3:PROCMenuCalc 14420 WHEN 4:PROCSwapTools 14430ENDCASE 14440PROCAdjToolsC 14450ENDPROC 14460 14470DEFPROCSwapTools 14480tools%=NOT tools% 14490IF tools%=0 THEN 14500 temp%!0=wtoolsh% 14510 SYS"Wimp_CloseWindow",,temp% 14520 workmenu%!(28+24*4+0)=128 14530ELSE 14540 polledb%!0=wworkh% 14550 SYS"Wimp_GetWindowState",,polledb% 14560 oldworkx%=polledb%!4 14570 PROCOpen_Window 14580 workmenu%!(28+24*4+0)=128+1 14590ENDIF 14600ENDPROC 14610 14620DEFPROCMenuAdd 14630CASE polledb%!4 OF 14640 WHEN 0:dfunc%=0:df$="vco" 14650 WHEN 1:dfunc%=1:df$="noise" 14660 WHEN 2:dfunc%=2:df$="eg" 14670 WHEN 3:dfunc%=5:df$="const" 14680 WHEN 4:dfunc%=3:df$="filtlo" 14690 WHEN 5:dfunc%=4:df$="filthi" 14700 WHEN 6:dfunc%=6:df$="mult" 14710 WHEN 7:dfunc%=7:df$="multc" 14720 WHEN 8:dfunc%=8:df$="add" 14730 WHEN 9:dfunc%=13:df$="sub" 14740 WHEN 10:dfunc%=17:df$="samhold" 14750 WHEN 11:dfunc%=18:df$="nldist" 14760 WHEN 12:dfunc%=14:df$="pulse" 14770 WHEN 13:dfunc%=15:df$="delay" 14780 WHEN 14:dfunc%=9:df$="output" 14790 WHEN 15:dfunc%=16:df$="input" 14800ENDCASE 14810IF polledb%!4<>-1 THEN workmenu%!(28+24*1+0)=0:workmenu%!(28+24*2+0)=0 14820PROCRemAllDrag 14830ENDPROC 14840 14850DEFPROCMenuSel 14860CASE polledb%!4 OF 14870 WHEN -1:dfunc%=10:workmenu%!(28+24*1+0)=1:workmenu%!(28+24*2+0)=0 14880 WHEN 0:PROCAllSel 14890 WHEN 1:PROCClearSel 14900 WHEN 2:PROCSwapSel 14910 WHEN 3:PROCDeleteObjs 14920 WHEN 4:PROCDeleteInpt 14930ENDCASE 14940PROCRemAllDrag 14950ENDPROC 14960 14970DEFPROCSwapSel 14980FORT%=0TOmaxicons%-1 14990 IFiconinfo%!(T%*32)<>-1 THEN PROCSwapIconS(T%) 15000NEXTT% 15010ENDPROC 15020 15030DEFPROCClearSel 15040FORT%=0TOmaxicons%-1 15050 IFiconinfo%!(T%*32)<>-1 THEN PROCSetIconS(T%,0) 15060NEXTT% 15070ENDPROC 15080 15090DEFPROCAllSel 15100FORT%=0TOmaxicons%-1 15110 IFiconinfo%!(T%*32)<>-1 THEN PROCSetIconS(T%,1) 15120NEXTT% 15130ENDPROC 15140 15150DEFPROCDeleteObjs 15160FORT%=0TOmaxicons%-1 15170 IF(iconinfo%!(T%*32)<>-1)AND(iconinfo%!(T%*32+28))AND(1<<4) THEN 15180 IF iconinfo%!(T%*32+12)=constptr% THEN temp%!0=wconstanth%:SYS"Wimp_CloseWindow",,temp%:constptr%=0 15190 IF iconinfo%!(T%*32+12)=mconstptr% THEN temp%!0=wmultch%:SYS"Wimp_CloseWindow",,temp%:mconstptr%=0 15200 IF iconinfo%!(T%*32+12)=vcoptr% THEN temp%!0=wvcoh%:SYS"Wimp_CloseWindow",,temp%:vcoptr%=0 15210 IF iconinfo%!(T%*32+12)=egptr% THEN temp%!0=wegh%:SYS"Wimp_CloseWindow",,temp%:egptr%=0 15220 IF iconinfo%!(T%*32+12)=inpptr% THEN temp%!0=winputh%:SYS"Wimp_CloseWindow",,temp%:inpptr%=0 15230 IF iconinfo%!(T%*32+12)=nldistptr% THEN temp%!0=wnldisth%:SYS"Wimp_CloseWindow",,temp%:nldistptr%=0 15240 temp%!0=wworkh% 15250 temp%!4=T% 15260 SYS"Wimp_DeleteIcon",,temp% 15270 PROCFree(iconinfo%!(T%*32+12)) 15280 iconinfo%!(T%*32+0)=-1 15290 iconinfo%!(T%*32+4)=-1 15300 iconinfo%!(T%*32+8)=-1 15310 iconinfo%!(T%*32+12)=-1 15320 iconinfo%!(T%*32+16)=-1 15330 iconinfo%!(T%*32+20)=-1 15340 iconinfo%!(T%*32+24)=-1 15350 iconinfo%!(T%*32+28)=-1 15360 FORS%=0TOmaxicons%-1 15370 IF iconinfo%!(S%*32)<>-1 THEN 15380 IF iconinfo%!(S%*32+16)=T% THEN iconinfo%!(S%*32+16)=-1 15390 IF iconinfo%!(S%*32+20)=T% THEN iconinfo%!(S%*32+20)=-1 15400 ENDIF 15410 NEXTS% 15420 ENDIF 15430NEXTT% 15440SYS"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 15450ENDPROC 15460 15470DEFPROCDeleteInpt 15480FORT%=0TOmaxicons%-1 15490 IF(iconinfo%!(T%*32)<>-1)AND(iconinfo%!(T%*32+28))AND(1<<4) THEN iconinfo%!(T%*32+16)=-1:iconinfo%!(T%*32+20)=-1:iconinfo%!(T%*32+28)=31 15500NEXTT% 15510SYS"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 15520ENDPROC 15530 15540DEFPROCSetIconS(i%,s%) 15550temp%!0=wworkh% 15560temp%!4=i% 15570temp%!8=s%<<21 15580temp%!12=1<<21 15590SYS"Wimp_SetIconState",,temp% 15600iconinfo%!(i%*32+28)=((iconinfo%!(i%*32+28))AND&ffffffef)OR(s%<<4) 15610ENDPROC 15620 15630DEFPROCSwapIconS(i%) 15640temp%!0=wworkh% 15650temp%!4=i% 15660temp%!8=1<<21 15670temp%!12=0 15680SYS"Wimp_SetIconState",,temp% 15690iconinfo%!(i%*32+28)=(iconinfo%!(i%*32+28))EOR(1<<4) 15700ENDPROC 15710 15720DEFPROCMenuConnect 15730PROCRemAllDrag 15740dfunc%=12 15750ENDPROC 15760 15770DEFPROCMenuCalc 15780PROCSendSFXED(&9abc3) 15790ENDPROC 15800 15810DEFPROCStartReceived 15820temp%!0=wstatsh% 15830temp%!4=3 15840SYS"Wimp_GetIconState",,temp% 15850samlen%=VAL($(temp%!28)) 15860IF samlen%<=0 THEN samlen%=1 15870IF samlen%>polledb%!24 THEN 15880 PROCReportErr("No room.") 15890ELSE 15900 startsam%=polledb%!20 15910 PROCMenuCalc2 15920ENDIF 15930ENDPROC 15940 15950DEFPROCMenuCalc2 15960io%=-1 15970FORT%=0TOmaxicons%-1 15980 IF iconinfo%!(T%*32)=9 THEN 15990 IF io%=-1 THEN io%=T% ELSE io%=-2 16000 ENDIF 16010NEXTT% 16020CASE io% OF 16030 WHEN -1:PROCReportErr("No output!") 16040 WHEN -2:PROCReportErr("More than one output!") 16050 OTHERWISE:PROCCalcOK(io%) 16060ENDCASE 16070ENDPROC 16080 16090DEFPROCCalcOK(i%) 16100temp%!0=wstatsh% 16110temp%!4=3 16120SYS"Wimp_GetIconState",,temp% 16130samlen%=VAL($(temp%!28)) 16140IF samlen%<=0 THEN samlen%=1 16150IF startsam%<>-1 THEN 16160 e%=0:T%=0 16170 WHILE (T%<maxicons%)AND(e%=0) 16180 CASE iconinfo%!(T%*32) OF 16190 WHEN 0:PROCInitVCO(iconinfo%!(T%*32+12)) 16200 WHEN 2:PROCInitEG(iconinfo%!(T%*32+12),samlen%) 16210 WHEN 3:PROCInitFilt(iconinfo%!(T%*32+12)) 16220 WHEN 4:PROCInitFilt(iconinfo%!(T%*32+12)) 16230 WHEN 14:PROCInitPulse(iconinfo%!(T%*32+12)) 16240 WHEN 15:PROCInitDelay(iconinfo%!(T%*32+12)) 16250 WHEN 16:e%=FNInitInput(iconinfo%!(T%*32+12)) 16260 WHEN 17:PROCInitSamHold(iconinfo%!(T%*32+12)) 16270 ENDCASE 16280 T%+=1 16290 ENDWHILE 16300 IF e%<>0 THEN 16310 PROCReportErr("Can't claim input memory") 16320 PROCCloseInput 16330 SYS"Hourglass_Off" 16340 ELSE 16350 SYS"Hourglass_On" 16360 !samtyp=samtype% 16370 A%=iconinfo%!(i%*32+16) 16380 B%=iconinfo% 16390 C%=startsam% 16400 D%=samlen% 16410 CALLcalcall 16420 SYS"Hourglass_Off" 16430 PROCCloseInput 16440 temp%!20=samlen% 16450 temp%!24=samtype% 16460 $(temp%+28)=sheetname$ 16470 PROCSendSFXED(&9abc4) 16480 startsam%=-1 16490 ENDIF 16500ENDIF 16510ENDPROC 16520 16530DEFPROCInitVCO(l%) 16540!l%=0 16550ENDPROC 16560 16570DEFPROCInitEG(l%,k%) 16580l%!0=0 16590l%!4=(65536*512)/samlen% 16600ENDPROC 16610 16620DEFPROCInitFilt(l%) 16630!l%=0 16640ENDPROC 16650 16660DEFPROCInitDelay(l%) 16670FORJ%=0TO252STEP4:l%!J%=0:NEXTJ% 16680ENDPROC 16690 16700DEFPROCInitPulse(l%) 16710!l%=0 16720ENDPROC 16730 16740DEFPROCInitSamHold(l%) 16750!l%=0 16760ENDPROC 16770 16780DEFFNInitInput(l%) 16790LOCAL ERROR 16800ON ERROR LOCAL PROCReportErr(REPORT$):il%=1:GOTO 16890 16810IF $l%="" THEN 16820 PROCReportErr("Warning: no input name given.") 16830 il%=1 16840ELSE 16850 f%=OPENIN($l%) 16860 IF f%=0 THEN il%=1:PROCReportErr("Warning: can't load input.") ELSE il%=EXT#f%:CLOSE#f% 16870ENDIF 16880IF il%<=0 THEN il%=1 16890SYS"XOS_Module",6,,,(il%+3)AND&fffffffc TO ,,s%;v% 16900IF v%AND1 THEN 16910 l%!272=-1 16920 error%=-1 16930ELSE 16940 l%!260=(&1000*il%)/samlen% 16950 l%!264=0 16960 l%!268=il% 16970 l%!272=s% 16980 l%!276=0 16990 IF il%>1 THEN OSCLI("LOAD "+$l%+" "+STR$~s%) 17000 error%=0 17010ENDIF 17020=error% 17030 17040DEFPROCCloseInput 17050FORT%=0TOmaxicons% 17060 IF iconinfo%!(T%*32)=16 THEN 17070 f%=iconinfo%!(T%*32+12) 17080 IF f%!272<>-1 THEN SYS"XOS_Module",7,,f%!272:f%!272=-1 17090 ENDIF 17100NEXTT% 17110ENDPROC 17120 17130DEFPROCUser_Message 17140FORT%=0TO255STEP4:messbk%!T%=polledb%!T%:NEXTT% 17150m%=polledb%!16 17160CASE m% OF 17170 WHEN 0:PROCQuit 17180 WHEN 1:PROCDataSave 17190 WHEN 2:PROCSaveAck 17200 WHEN 3:PROCDataLoad 17210 WHEN 5:PROCDataOpen 17220 WHEN &9abc5:PROCStartReceived 17230ENDCASE 17240ENDPROC 17250 17260DEFPROCCloseDown 17270IF sheetsaved%=-1 THEN 17280 PROCQuit 17290ELSE 17300 A%=FNConfirm("Sheet has been modified. Are you sure you want to quit?") 17310 IF A%=1 THEN PROCQuit 17320ENDIF 17330ENDPROC 17340 17350DEFPROCQuit 17360SYS"XOS_SetVarVal","SFXM_TaskHandle","",-1,0,0 17370SYS"Hourglass_Smash" 17380SYS"Wimp_BaseOfSprites"TO,S% 17390SYS"XOS_SpriteOp",25+256,S%,"vco":SYS"XOS_SpriteOp",25+256,S%,"eg" 17400SYS"XOS_SpriteOp",25+256,S%,"noise":SYS"XOS_SpriteOp",25+256,S%,"filtlo" 17410SYS"XOS_SpriteOp",25+256,S%,"filthi":SYS"XOS_SpriteOp",25+256,S%,"const" 17420SYS"XOS_SpriteOp",25+256,S%,"add":SYS"XOS_SpriteOp",25+256,S%,"mult" 17430SYS"XOS_SpriteOp",25+256,S%,"output":SYS"XOS_SpriteOp",25+256,S%,"sub" 17440SYS"XOS_SpriteOp",25+256,S%,"delay":SYS"XOS_SpriteOp",25+256,S%,"nldist" 17450SYS"XOS_SpriteOp",25+256,S%,"input":SYS"XOS_SpriteOp",25+256,S%,"multc" 17460SYS"XOS_SpriteOp",25+256,S%,"pulse":SYS"XOS_SpriteOp",25+256,S%,"samhold" 17470SYS"XOS_SpriteOp",25+256,S%,"place":SYS"XOS_SpriteOp",25+256,S%,"conn" 17480SYS"XOS_SpriteOp",25+256,S%,"sel":SYS"XOS_SpriteOp",25+256,S%,"selall" 17490SYS"XOS_SpriteOp",25+256,S%,"selclr":SYS"XOS_SpriteOp",25+256,S%,"selswap" 17500SYS"XOS_SpriteOp",25+256,S%,"del":SYS"XOS_SpriteOp",25+256,S%,"deli" 17510SYS"XOS_SpriteOp",25+256,S%,"calc" 17520SYS"Wimp_CloseDown",taskh%,&4b534154 17530SYS"OS_Exit" 17540ENDPROC 17550 17560DEFFNGetSFXEDH 17570SYS"XOS_ReadVarVal","SFXED_TaskHandle",temp2%,16,0,0TO,,A% 17580temp2%?A%=13 17590IF A%=0 THEN =0 ELSE =EVAL("&"+$temp2%) 17600 17610DEFPROCInit 17620SYS "OS_GetEnv" TO EnvStr$ 17630I%=1:S%=0 17640REPEAT 17650 IF MID$(EnvStr$,I%,1)=" " THEN S%+=1 17660 I%+=1 17670UNTIL (S%=3)OR(MID$(EnvStr$,I%,1)="") 17680lf$=MID$(EnvStr$,I%) 17690@%=&01020a00 17700maxicons%=100 17710DIM temp% 1000 17720DIM temp2% 1000 17730DIM messbk% 512 17740SYS"Wimp_Initialise",200,&4b534154,"SFXM"TOversion%,taskh% 17750IF version%<200 THEN SYS"Wimp_CloseDown",taskh%,&4b534154:SYS"OS_Exit" 17760SYS"XOS_ReadVarVal","SFXM_TaskHandle",temp2%,16,0,0TO,,A% 17770IF A%<>0 THEN 17780 PROCReportErr("SFXM already running.") 17790 SYS"Wimp_CloseDown",taskh%,&4b534154 17800 SYS"OS_Exit" 17810ENDIF 17820SYS"Hourglass_On" 17830SYS"XOS_SetVarVal","SFXM_TaskHandle",STR$~taskh%,8,0,0 17840SYS"Wimp_SpriteOp",11,,"<SFXM$Dir>.Sprites" 17850H%=FNGetSFXEDH 17860IF H%=0 THEN OSCLI("*WimpTask Run <SFXED$Dir>.^.!SFXED") 17870SYS"Wimp_OpenTemplate",,"<SFXM$Dir>.Templates" 17880DIM pixtrans% 16 17890DIM scalef% 16 17900DIM weg% 1000 17910DIM wvco% 1000 17920DIM wnldist% 1000 17930DIM wabout% 1000 17940DIM wsaveassh% 1000 17950DIM wconstant% 1000 17960DIM wwork% 1000 17970DIM wtools% 2000 17980DIM wstats% 1000 17990DIM wmultc% 1000 18000DIM winput% 1000 18010DIM winst% 1000 18020DIM icbuf% 4000 18030icbufn%=icbuf% 18040DIM tname% 16 18050PROCLoadTemp(weg%,"eg") 18060PROCLoadTemp(wvco%,"vco") 18070PROCLoadTemp(wnldist%,"nldist") 18080PROCLoadTemp(wabout%,"about") 18090PROCLoadTemp(wsaveassh%,"saveassh") 18100PROCLoadTemp(wconstant%,"constant") 18110PROCLoadTemp(wwork%,"work") 18120PROCLoadTemp(wtools%,"tools") 18130PROCLoadTemp(wstats%,"stats") 18140PROCLoadTemp(wmultc%,"multc") 18150PROCLoadTemp(winput%,"input") 18160PROCLoadTemp(winst%,"inst") 18170SYS"Wimp_CloseTemplate" 18180SYS"Wimp_CreateWindow",,weg%TOwegh% 18190SYS"Wimp_CreateWindow",,wvco%TOwvcoh% 18200SYS"Wimp_CreateWindow",,wnldist%TOwnldisth% 18210SYS"Wimp_CreateWindow",,wabout%TOwabouth% 18220SYS"Wimp_CreateWindow",,wsaveassh%TOwsaveasshh% 18230SYS"Wimp_CreateWindow",,wconstant%TOwconstanth% 18240SYS"Wimp_CreateWindow",,wwork%TOwworkh% 18250SYS"Wimp_CreateWindow",,wtools%TOwtoolsh% 18260SYS"Wimp_CreateWindow",,wstats%TOwstatsh% 18270SYS"Wimp_CreateWindow",,wmultc%TOwmultch% 18280SYS"Wimp_CreateWindow",,winput%TOwinputh% 18290SYS"Wimp_CreateWindow",,winst%TOwinsth% 18300PROCMenus 18310DIM bicon% 32 18320bicon%!0=-1 18330bicon%!4=0 18340bicon%!8=0 18350bicon%!12=68 18360bicon%!16=68 18370bicon%!20=%0011000000011010 18380$(bicon%+24)="!sfxm" 18390SYS"Wimp_CreateIcon",,bicon%TObiconh% 18400DIM iconinfo% maxicons%*32 18410FORT%=0TOmaxicons%*32-4:iconinfo%!T%=-1:NEXTT% 18420olddfunc%=10:dfunc%=10:df$="vco" 18430olddx%=-1:olddy%=-1:newdx%=-1:newdy%=-1 18440oldlx%=-1:oldly%=-1:newlx%=-1:newly%=-1 18450startlx%=-1:startly%=0:startic%=-1 18460starti%=-1:endi%=-1 18470drag%=0 18480dragx%=-1 18490dragy%=-1 18500constptr%=0 18510mconstptr%=0 18520vcoptr%=0 18530egptr%=0 18540nldistptr%=0 18550nldistlastx%=-1 18560nldistlasty%=-1 18570vcolastx%=-1 18580vcolasty%=-1 18590samptrl%=-1 18600samptrr%=-1 18610startsam%=-1 18620samlen%=-1 18630zoomfr=1 18640okt%=1 18650savetype%=-1 18660inpptr%=0 18670nopoll%=0 18680sheetsaved%=-1 18690filetoload$="":filetoload2$="" 18700sheetname$="<Untitled>" 18710oldworkx%=-1 18720tools%=-1 18730PROCAdjToolsC 18740DIM dragb% 56 18750DIM litrans%(maxicons%) 18760samtype%=0 18770PROCAssem 18780DIM freepool% maxicons%*540 18790A%=freepool% 18800B%=maxicons%*540 18810CALL initmem 18820DIM linlog% 8192 18830*VOLUME 127 18840SYS"Sound_Configure",0,0,0,0,0TO,,,T% 18850FORS%=0TO8188STEP4:linlog%!S%=!((T%!8)+S%):NEXTS% 18860!linlog=linlog% 18870DIM lintable% 1024 18880!lintab=lintable% 18890FORT%=0TO127 18900 lintable%!(T%*8)=INT(0.5+267.33*2^(T%/16)) 18910 lintable%!(T%*8+4)=-lintable%!(T%*8) 18920NEXTT% 18930DIM pollb% 256 18940polledb%=pollb% 18950IF lf$<>"" THEN 18960 $(polledb%+44)=lf$ 18970 polledb%!40=&78a 18980 PROCLoadSheet 18990ENDIF 19000PROCInst 19010SYS"Hourglass_Off" 19020ENDPROC 19030 19040DEFPROCModTitle(ss%) 19050LOCAL ti$ 19060IF ss%=sheetsaved% THEN ENDPROC 19070ti$=$(wwork%!72) 19080IF INSTR(ti$," ")<>0 THEN ti$=LEFT$(ti$,INSTR(ti$," ")-1) 19090IF ss%=0 THEN ti$=ti$+" *" 19100$(wwork%!72)=ti$ 19110temp%!0=wworkh% 19120SYS"Wimp_GetWindowOutline",,temp% 19130SYS"Wimp_ForceRedraw",-1,temp%!4,temp%!16-40,temp%!12,temp%!16 19140sheetsaved%=ss% 19150ENDPROC 19160 19170DEFPROCClear2 19180IF sheetsaved%=-1 THEN 19190 PROCClear 19200ELSE 19210 A%=FNConfirm("Sheet has been modified. Are you sure you want to do this?") 19220 IF A%=1 THEN PROCClear 19230ENDIF 19240ENDPROC 19250 19260DEFPROCClear 19270temp2%!0=wconstanth% 19280SYS"Wimp_CloseWindow",,temp2% 19290temp2%!0=wmultch% 19300SYS"Wimp_CloseWindow",,temp2% 19310temp2%!0=wvcoh% 19320SYS"Wimp_CloseWindow",,temp2% 19330temp2%!0=wegh% 19340SYS"Wimp_CloseWindow",,temp2% 19350temp2%!0=winputh% 19360SYS"Wimp_CloseWindow",,temp2% 19370temp2%!0=wnldisth% 19380SYS"Wimp_CloseWindow",,temp2% 19390temp2%!0=wstatsh% 19400temp2%!4=8 19410SYS"Wimp_GetIconState",,temp2% 19420$(!(temp2%+28))="" 19430SYS"Wimp_ForceRedraw",wstatsh%,0,-4000,4000,0 19440SYS"Wimp_SetCaretPosition",-1,-1 19450temp2%!0=wworkh% 19460FORT%=0TOmaxicons%-1 19470 IF iconinfo%!(T%*32)<>-1 THEN temp2%!4=T%:SYS"Wimp_DeleteIcon",,temp2% 19480NEXTT% 19490constptr%=0 19500mconstptr%=0 19510vcoptr%=0 19520egptr%=0 19530vcolastx%=-1 19540vcolasty%=-1 19550FORT%=0TOmaxicons%*32-4STEP4:iconinfo%!T%=-1:NEXTT% 19560A%=freepool% 19570B%=maxicons%*540 19580CALL initmem 19590$(wwork%!72)="<Untitled>" 19600sheetname$="<Untitled>" 19610temp%!0=wworkh% 19620SYS"Wimp_GetWindowOutline",,temp% 19630SYS"Wimp_ForceRedraw",-1,temp%!4,temp%!16-44,temp%!12,temp%!16 19640SYS"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 19650sheetsaved%=-1 19660ENDPROC 19670 19680DEFPROCLoadTemp(RETURN start%,name$) 19690$tname%=name$ 19700SYS"Wimp_LoadTemplate",,start%,icbufn%,icbuf%+4000,-1,tname%,0TO,start%,icbufn%,,,,next% 19710IF next%=0 THEN SYS"Wimp_CloseTemplate":ERROR 0,"Template "+name$+" not found" 19720ENDPROC 19730 19740DEFPROCReportErr(a$) 19750temp2%!0=0 19760$(temp2%+4)=a$ 19770SYS"Wimp_ReportError",temp2%,1,"SFXM" 19780ENDPROC 19790 19800DEFFNConfirm(a$) 19810temp2%!0=0 19820$(temp2%+4)=a$ 19830SYS"Wimp_ReportError",temp2%,%10011,"Confirm"TO,A% 19840=A% 19850 19860DEFFNinterr(a$) 19870temp2%!0=0 19880$(temp2%+4)=a$ 19890SYS"Wimp_ReportError",temp2%,%10011,"SFXM Internal Error."TO,A% 19900=A% 19910 19920REM titlestring, width in chars. 19930DEFFNMenuHead(t$,w%) 19940LOCAL a% 19950a%=Menus%+MenuPtr% 19960$a%=t$ 19970a%?12=7 19980a%?13=2 19990a%?14=7 20000a%?15=0 20010a%!16=w%*16 20020a%!20=44 20030a%!24=0 20040MenuPtr%+=28 20050=a% 20060 20070REM itemtext, flags, indirected, val. string, max. length 20080DEFPROCAddItem(i$,f%,i%,v$,ml%) 20090LOCAL a% 20100a%=Menus%+MenuPtr% 20110IF (LEN(i$)>11)AND(i%=0) THEN i%=-1:ml%=LEN(i$)+1 20120a%!0=f%AND255 20130a%!4=-1 20140IF f%AND256 THEN a%!8=%00000111010000011001000000010001 ELSE a%!8=%00000111000000011001000000010001 20150IF i% THEN 20160 a%!8+=256 20170 $(MenuData%+MenuDataPtr%)=i$ 20180 a%!12=MenuData%+MenuDataPtr% 20190 MenuDataPtr%+=LEN(i$)+1 20200 $(MenuData%+MenuDataPtr%)=v$ 20210 a%!16=MenuData%+MenuDataPtr% 20220 MenuDataPtr%+=LEN(v$)+1 20230 a%!20=ml% 20240ELSE 20250 $(a%+12)=i$ 20260ENDIF 20270MenuPtr%+=24 20280ENDPROC 20290 20300REM menu, item, submenupointer 20310DEFPROCAddSubMenu(m%,i%,p%) 20320m%!(28+24*i%+4)=p% 20330ENDPROC 20340 20350DEFPROCMenus 20360DIM MenuData% 2000 20370DIM Menus% 2000 20380MenuDataPtr%=0 20390MenuPtr%=0 20400iconmenu%=FNMenuHead("SFXM",8) 20410PROCAddItem("Info",0,0,"",0) 20420PROCAddItem("Save",256,0,"",0) 20430PROCAddItem("Restart",0,0,"",0) 20440PROCAddItem("Quit",128,0,"",0) 20450PROCAddSubMenu(iconmenu%,0,wabouth%) 20460PROCAddSubMenu(iconmenu%,1,wsaveasshh%) 20470 20480workmenu%=FNMenuHead("SFXM",11) 20490PROCAddItem("Place",0,0,"",0) 20500PROCAddItem("Select",0,0,"",0) 20510PROCAddItem("Connection",0,0,"",0) 20520PROCAddItem("Calculate",0,0,"",0) 20530PROCAddItem("Show Tools",129,0,"",0) 20540addmenu%=FNMenuHead("Place",20) 20550PROCAddItem("Oscillator",0,0,"",0) 20560PROCAddItem("Noise Generator",256,0,"",0) 20570PROCAddItem("Envelope Generator",0,0,"",0) 20580PROCAddItem("Constant Generator",0,0,"",0) 20590PROCAddItem("Low Pass Filter",256,0,"",0) 20600PROCAddItem("High Pass Filter",256,0,"",0) 20610PROCAddItem("Multiplier",0,0,"",0) 20620PROCAddItem("Constant Multiplier",0,0,"",0) 20630PROCAddItem("Adder",0,0,"",0) 20640PROCAddItem("Subtractor",256,0,"",0) 20650PROCAddItem("Sample & Hold",256,0,"",0) 20660PROCAddItem("General Function",256,0,"",0) 20670PROCAddItem("Pulse Generator",0,0,"",0) 20680PROCAddItem("Delay Line",256,0,"",0) 20690PROCAddItem("Output",0,0,"",0) 20700PROCAddItem("Input",256+128,0,"",0) 20710selmenu%=FNMenuHead("Select",15) 20720PROCAddItem("All",0,0,"",0) 20730PROCAddItem("Clear",0,0,"",0) 20740PROCAddItem("Swap",0,0,"",0) 20750PROCAddItem("Delete Objects",0,0,"",0) 20760PROCAddItem("Delete Inputs",128,0,"",0) 20770PROCAddSubMenu(workmenu%,0,addmenu%) 20780PROCAddSubMenu(workmenu%,1,selmenu%) 20790ENDPROC 20800 20810DEFPROCRedrawLines(x1%,y1%,x2%,y2%) 20820temp2%!0=wworkh% 20830SYS"Wimp_GetWindowState",,temp2% 20840SYS"Wimp_SetColour",7 20850A%=temp2%!4-temp2%!20 20860B%=temp2%!16-temp2%!24 20870C%=x1% 20880D%=y1% 20890E%=x2% 20900F%=y2% 20910G%=iconinfo% 20920CALLredrln 20930ENDPROC 20940 20950DEFFNAlloc(size%) 20960A%=size% 20970=USR(allocmem) 20980 20990DEFPROCFree(loc%) 21000A%=loc% 21010CALLfreemem 21020ENDPROC 21030 21040DEFPROCAssem 21050DIM code% 3000 21060FOR pass%=0TO2STEP2 21070P%=code% 21080[ opt pass% 21090 21100.redrln stmfd r13!,{r0-r12,r14} 21110 mov r7,#0 21120.chkicn add r8,r6,r7,lsl #5 21130 ldr r9,[r8,#0] 21140 cmn r9,#1 21150 beq nxticn 21160 cmpne r9,#2 21170 cmpne r9,#5 21180 beq nxticn 21190 ldr r9,[r8,#16] 21200 cmn r9,#1 21210 beq noinp1 21220 ldr r9,[r8,#28] 21230 and r9,r9,#3 21240 str r9,lintyp 21250 ldr r9,[r8] 21260 cmp r9,#0 21270 cmpne r9,#3 21280 cmpne r9,#4 21290 cmpne r9,#6 21300 cmpne r9,#8 21310 cmpne r9,#13 21320 cmpne r9,#14 21330 cmpne r9,#15 21340 cmpne r9,#17 21350 ldr r9,[r8,#4] 21360 sub r9,r9,#2 21370 ldr r10,[r8,#8] 21380 addeq r10,r10,#9*4 21390 addne r10,r10,#6*4 21400 ldr r11,[r8,#16] 21410 add r11,r6,r11,lsl #5 21420 ldr r12,[r11,#8] 21430 ldr r11,[r11,#4] 21440 add r11,r11,#46*2 21450 add r12,r12,#6*4 21460 bl ctline 21470.noinp1 ldr r9,[r8,#20] 21480 cmn r9,#1 21490 beq noinp2 21500 ldr r9,[r8,#28] 21510 mov r9,r9,lsr #2 21520 and r9,r9,#3 21530 str r9,lintyp 21540 ldr r9,[r8,#4] 21550 sub r9,r9,#2 21560 ldr r10,[r8,#8] 21570 add r10,r10,#3*4 21580 ldr r11,[r8,#20] 21590 add r11,r6,r11,lsl #5 21600 ldr r12,[r11,#8] 21610 ldr r11,[r11,#4] 21620 add r11,r11,#46*2 21630 add r12,r12,#6*4 21640 bl ctline 21650.noinp2 21660.nxticn add r7,r7,#1 21670 cmp r7,#maxicons% 21680 blo chkicn 21690 ldmfd r13!,{r0-r12,pc} 21700 21710.lintyp equd 0 21720 21730.ctline add r9,r9,r0 21740 add r10,r10,r1 21750 add r11,r11,r0 21760 add r12,r12,r1 21770 stmfd r13!,{r0-r8,r14} 21780 mov r0,#4 21790 mov r1,r9 21800 mov r2,r10 21810 swi "OS_Plot" 21820 ldr r3,lintyp 21830 mov r0,#5 21840 cmp r3,#3 21850 addeq r1,r9,r11 21860 moveq r1,r1,asr #1 21870 moveq r2,r10 21880 cmp r3,#2 21890 moveq r1,r9 21900 addeq r2,r10,r12 21910 moveq r2,r2,asr #1 21920 cmp r3,#1 21930 moveq r1,r11 21940 moveq r2,r10 21950 cmp r3,#0 21960 moveq r1,r9 21970 moveq r2,r12 21980 swi "OS_Plot" 21990 ldr r3,lintyp 22000 mov r0,#5 22010 cmp r3,#3 22020 addeq r1,r9,r11 22030 moveq r1,r1,asr #1 22040 moveq r2,r12 22050 cmp r3,#2 22060 moveq r1,r11 22070 addeq r2,r10,r12 22080 moveq r2,r2,asr #1 22090 cmp r3,#1 22100 cmpne r3,#0 22110 moveq r1,r11 22120 moveq r2,r12 22130 swi "OS_Plot" 22140 ldr r3,lintyp 22150 cmp r3,#0 22160 cmpne r3,#1 22170 ldmeqfd r13!,{r0-r8,pc} 22180 mov r0,#5 22190 mov r1,r11 22200 mov r2,r12 22210 swi "OS_Plot" 22220 ldmfd r13!,{r0-r8,pc} 22230.samtyp equd 0 22240 22250.initmem ;r0=MemStart, r1=Size 22260 stmfd r13!,{r0-r3,r14} 22270 add r0,r0,#3 22280 bic r0,r0,#3 22290 bic r1,r1,#3 22300 str r0,memstart 22310 mvn r2,#0 22320 str r2,[r0,#4] 22330 sub r2,r1,#24 22340 str r2,[r0,#8] 22350 add r2,r0,r1 22360 str r2,[r0] 22370 add r3,r0,#12 22380 str r3,[r2,#-8] 22390 mvn r3,#0 22400 str r3,[r2,#-12] 22410 mov r3,#0 22420 str r3,[r2,#-4] 22430 ldmfd r13!,{r0-r3,pc} 22440 22450.allocmem ;r0=RequiredSize -> r0=PtrToFreeMem (-1=failed) 22460 cmp r0,#0 22470 mvnle r0,#0 22480 movle pc,r14 22490 stmfd r13!,{r1-r4,r14} 22500 add r0,r0,#3 22510 bic r0,r0,#3 22520 add r3,r0,#12 22530 ldr r1,memstart 22540 add r1,r1,#12 22550.alloc1 ldr r2,[r1,#-4] 22560 cmp r2,r0 22570 bmi alloc4 22580 cmp r2,r3 22590 ble alloc3 22600 add r0,r0,#12 22610 b alloc2 22620.alloc4 ldr r1,[r1,#-12] 22630 cmn r1,#1 22640 bne alloc1 22650 mvn r0,#0 22660 ldmfd r13!,{r1-r4,pc} 22670.alloc3 mov r0,r1 22680 mov r2,#0 22690 str r2,[r1,#-4] 22700 ldmfd r13!,{r1-r4,pc} 22710.alloc2 add r4,r1,r0 22720 sub r2,r2,r0 22730 ldr r3,[r1,#-12] 22740 str r3,[r4,#-12] 22750 str r2,[r4,#-4] 22760 str r1,[r4,#-8] 22770 str r4,[r1,#-12] 22780 cmn r3,#1 22790 strne r4,[r3,#-8] 22800 mov r4,#0 22810 str r4,[r1,#-4] 22820 mov r0,r1 22830 ldmfd r13!,{r1-r4,pc} 22840 22850.freemem ;r0=PtrToAllocatedMem 22860 stmfd r13!,{r0-r3,r14} 22870 ldr r1,[r0,#-12] 22880 sub r2,r1,r0 22890 sub r2,r2,#12 22900 ldr r3,[r1,#-4] 22910 cmp r3,#0 22920 beq freem1 22930 add r2,r2,r3 22940 add r2,r2,#12 22950 ldr r1,[r1,#-12] 22960 cmn r1,#1 22970 strne r0,[r1,#-8] 22980.freem1 str r1,[r0,#-12] 22990 str r2,[r0,#-4] 23000 ldr r1,[r0,#-8] 23010 cmn r1,#1 23020 beq freem2 23030 ldr r3,[r1,#-4] 23040 cmp r3,#0 23050 beq freem2 23060 add r2,r2,r3 23070 add r2,r2,#12 23080 str r2,[r1,#-4] 23090 ldr r2,[r0,#-12] 23100 str r2,[r1,#-12] 23110 cmn r2,#1 23120 strne r1,[r2,#-8] 23130.freem2 ldmfd r13!,{r0-r3,pc} 23140 23150.memstart 23160 equd 0 23170 23180.redrawvco 23190 stmfd r13!,{r0-r12,r14} 23200 add r8,r0,#166 23210 add r9,r1,#4 23220 add r10,r2,#4 23230 mov r11,#0 23240.rvcolp mov r0,#69 23250 mov r1,r11,lsl #1 23260 ldrb r2,[r10,r11] 23270 mov r2,r2,lsl #24 23280 mov r2,r2,asr #24 23290 add r2,r2,#128 23300 add r1,r1,r8 23310 add r2,r2,r9 23320 swi "OS_Plot" 23330 add r11,r11,#1 23340 cmp r11,#256 23350 bne rvcolp 23360 ldmfd r13!,{r0-r12,pc} 23370.redrawnld 23380 stmfd r13!,{r0-r12,r14} 23390 mov r8,r0 23400 mov r9,r1 23410 mov r10,r2 23420 mov r11,#0 23430.rnldlp mov r0,#69 23440 mov r1,r11,lsl #1 23450 ldrb r2,[r10,r11] 23460 mov r2,r2,lsl #1 23470 add r1,r1,r8 23480 add r2,r2,r9 23490 swi "OS_Plot" 23500 add r11,r11,#1 23510 cmp r11,#256 23520 bne rnldlp 23530 ldmfd r13!,{r0-r12,pc} 23540.redraweg 23550 stmfd r13!,{r0-r12,r14} 23560 mov r8,r0 23570 mov r9,r1 23580 add r10,r2,#8 23590 mov r11,#0 23600.rvcolp mov r0,#69 23610 mov r1,r11,lsl #1 23620 ldrb r2,[r10,r11] 23630 add r1,r1,r8 23640 add r2,r2,r9 23650 swi "OS_Plot" 23660 add r11,r11,#1 23670 cmp r11,#512 23680 bne rvcolp 23690 ldmfd r13!,{r0-r12,pc} 23700 23710.calcall 23720 cmp r2,#0 23730 movmi pc,r14 23740 cmp r3,#0 23750 movmi pc,r14 23760 stmfd r13!,{r0-r12,r14} 23770 mov r8,r0 23780 mov r9,r2 23790 mov r10,r3 23800 mov r7,r3 23810 ldr r11,samtyp 23820 ldr r12,linlog 23830.callup mov r0,#0 23840 mov r2,r1 23850.clloop ldr r3,[r2,#28] 23860 bic r3,r3,#&80000000 23870 str r3,[r2,#28] 23880 add r2,r2,#32 23890 add r0,r0,#1 23900 cmp r0,#maxicons% 23910 bne clloop 23920 mov r0,r8 23930 bl getout 23940 cmp r0,#&10000 23950 movpl r0,#&ff00 23960 orrpl r0,r0,#&ff 23970 cmn r0,#&10000 23980 movle r0,#&ff000000 23990 orrle r0,r0,#&ff0000 24000 cmp r11,#2 24010 movne r0,r0,asr #9 24020 moveq r0,r0,lsl #15 24030 ldreqb r0,[r12,r0,lsr #19] 24040 cmp r11,#1 24050 addeq r0,r0,#128 24060 strb r0,[r9],#1 24070 tst r10,#&7f 24080 bne nohgup 24090 stmfd r13!,{r0-r2} 24100 mov r0,#129 24110 mov r1,#0 24120 mov r2,#0 24130 swi "OS_Byte" 24140 cmp r2,#0 24150 cmpeq r1,#&1b 24160 ldmfd r13!,{r0-r2} 24170 beq escp 24180 stmfd r13!,{r7-r12} 24190 subs r10,r7,r10 24200 movmi r10,#0 24210 mov r11,r10,lsl #2 24220 add r11,r11,r10,lsl #5 24230 add r11,r11,r10,lsl #6 24240 mov r10,r7 24250 bl div32 24260 cmp r12,#0 24270 movmi r12,#0 24280 cmp r12,#99 24290 movpl r12,#99 24300 mov r0,r12 24310 swi "Hourglass_Percentage" 24320 ldmfd r13!,{r7-r12} 24330.nohgup subs r10,r10,#1 24340 bne callup 24350 ldmfd r13!,{r0-r12,pc} 24360.escp mov r0,#124 24370 swi "OS_Byte" 24380 ldmfd r13!,{r0-r12,pc} 24390 24400.linlog equd 0 24410;r0=icon 24420;r1=iconinfo% 24430.getout stmfd r13!,{r1-r3,r12,r14} 24440 cmp r0,#0 24450 movmi r0,#0 24460 ldmmifd r13!,{r1-r3,r12,pc} 24470 add r12,r1,r0,lsl #5 24480 ldr r3,[r12,#28] 24490 tst r3,#&80000000 24500 orr r3,r3,#&80000000 24510 str r3,[r12,#28] 24520 ldrne r0,[r12,#24] 24530 ldmnefd r13!,{r1-r3,r12,pc} 24540 mov r2,r0,lsl #5 24550 ldr r2,[r1,r2] 24560 cmp r2,#13 24570 moveq r2,#9 24580 cmp r2,#14 24590 moveq r2,#10 24600 cmp r2,#15 24610 moveq r2,#11 24620 cmp r2,#16 24630 moveq r2,#12 24640 cmp r2,#17 24650 moveq r2,#13 24660 cmp r2,#18 24670 moveq r2,#14 24680 cmp r2,#0 24690 movmi r0,#0 24700 ldmmifd r13!,{r1-r3,r12,pc} 24710 cmp r2,#15 24720 movpl r0,#0 24730 ldmplfd r13!,{r1-r3,r12,pc} 24740 adr r3,jmptab 24750 adr r14,return 24760 ldr pc,[r3,r2,lsl #2] 24770.return str r0,[r12,#24] 24780 ldmfd r13!,{r1-r3,r12,pc} 24790 24800.jmptab equd getOvco ;0 24810 equd getOnoise ;1 24820 equd getOeg ;2 24830 equd getOlpass ;3 24840 equd getOhpass ;4 24850 equd getOconst ;5 24860 equd getOmult ;6 24870 equd getOmultc ;7 24880 equd getOadd ;8 24890 equd getOsub ;13 24900 equd getOpulse ;14 24910 equd getOdelay ;15 24920 equd getOinput ;16 24930 equd getOsh ;17 24940 equd getOnld ;18 24950 24960.getOvco 24970 stmfd r13!,{r1-r5,r14} 24980 add r2,r1,r0,lsl #5 24990 ldr r0,[r2,#16] 25000 bl getout 25010 mov r5,r0 25020 ldr r0,[r2,#20] 25030 bl getout 25040 ldr r2,[r2,#12] 25050 ldr r3,[r2] 25060 tst r3,#&80000000 25070 bic r3,r3,#&ff000000 25080 bne noresv 25090 cmp r0,#0 25100 movpl r3,#0 25110.noresv add r3,r3,#&40000 25120 ldrb r4,[r2,r3,lsr #16] 25130 sub r3,r3,#&40000 25140 add r3,r3,r5 25150 bic r3,r3,#&ff000000 25160 cmp r0,#0 25170 orrpl r3,r3,#&80000000 25180 str r3,[r2] 25190 mov r0,r4,lsl #24 25200 mov r0,r0,asr #15 25210 ldmfd r13!,{r1-r5,pc}^ 25220 25230.getOnoise 25240 stmfd r13!,{r1-r6,r14} 25250 add r2,r1,r0,lsl #5 25260 stmfd r13!,{r2} 25270 ldr r0,[r2,#16] 25280 bl getout 25290 ldmfd r13!,{r2} 25300 ldr r2,[r2,#12] 25310 ldr r3,[r2,#8] 25320 add r4,r3,r0 25330 str r4,[r2,#8] 25340 mov r4,r4,lsr #16 25350 cmp r4,r3,lsr #16 25360 beq nonewr 25370 ldr r0,[r2] 25380 ldr r4,ranxor 25390 mov r3,#16 25400 mov r5,#0 25410.randlp movs r0,r0,lsl #1 25420 eorcs r0,r0,r4 25430 and r6,r0,#&80000000 25440 orr r5,r6,r5,lsr #1 25450 subs r3,r3,#1 25460 bne randlp 25470 str r0,[r2] 25480 mov r0,r5,asr #15 25490 str r0,[r2,#4] 25500.nonewr ldr r0,[r2,#4] 25510 mov r0,r0,asl #15 25520 mov r0,r0,asr #15 25530 ldmfd r13!,{r1-r6,pc}^ 25540.ranxor equd &1d872b41 25550 25560.getOeg 25570 stmfd r13!,{r1-r4,r14} 25580 add r2,r1,r0,lsl #5 25590 ldr r2,[r2,#12] 25600 ldr r3,[r2] 25610 add r3,r3,#&80000 25620 ldrb r4,[r2,r3,lsr #16] 25630 sub r3,r3,#&80000 25640 ldr r0,[r2,#4] 25650 add r3,r3,r0 25660 bic r3,r3,#&fe000000 25670 str r3,[r2] 25680 mov r0,r4,lsl #8 25690 ldmfd r13!,{r1-r4,pc}^ 25700 25710.getOlpass 25720 stmfd r13!,{r1-r12,r14} 25730 add r2,r1,r0,lsl #5 25740 ldr r0,[r2,#16] 25750 bl getout 25760 mov r5,r0 25770 ldr r0,[r2,#20] 25780 bl getout 25790 cmp r0,#0 25800 movmi r0,#0 25810 cmp r0,#&10000 25820 movpl r0,#&10000 25830 mov r6,r0 25840 ldr r7,[r2,#12] 25850 mov r3,r6 25860 ldr r2,[r7] 25870 sub r2,r5,r2 25880 bl mult64 25890 ldr r2,[r7] 25900 add r0,r0,r2 25910 str r0,[r7] 25920 mov r0,r2 25930 ldmfd r13!,{r1-r12,pc}^ 25940 25950.getOhpass 25960 stmfd r13!,{r1-r12,r14} 25970 add r2,r1,r0,lsl #5 25980 ldr r0,[r2,#16] 25990 bl getout 26000 mov r5,r0 26010 ldr r0,[r2,#20] 26020 bl getout 26030 cmp r0,#0 26040 movmi r0,#0 26050 cmp r0,#&10000 26060 movpl r0,#&10000 26070 mov r6,r0 26080 ldr r7,[r2,#12] 26090 mov r3,r6 26100 ldr r2,[r7] 26110 sub r2,r5,r2 26120 bl mult64 26130 ldr r2,[r7] 26140 add r0,r0,r2 26150 str r0,[r7] 26160 sub r0,r5,r2 26170 ldmfd r13!,{r1-r12,pc}^ 26180 26190.getOconst 26200 stmfd r13!,{r1,r14} 26210 add r0,r1,r0,lsl #5 26220 ldr r0,[r0,#12] 26230 ldr r0,[r0] 26240 ldmfd r13!,{r1,pc}^ 26250 26260.getOmult 26270 stmfd r13!,{r1-r3,r14} 26280 add r2,r1,r0,lsl #5 26290 stmfd r13!,{r2} 26300 ldr r0,[r2,#16] 26310 bl getout 26320 ldmfd r13!,{r2} 26330 stmfd r13!,{r0} 26340 ldr r0,[r2,#20] 26350 bl getout 26360 ldmfd r13!,{r2} 26370 mov r3,r0 26380 bl mult64 26390 ldmfd r13!,{r1-r3,pc}^ 26400 26410.getOmultc 26420 stmfd r13!,{r1-r3,r14} 26430 add r2,r1,r0,lsl #5 26440 stmfd r13!,{r2} 26450 ldr r0,[r2,#16] 26460 bl getout 26470 ldmfd r13!,{r2} 26480 ldr r2,[r2,#12] 26490 ldr r2,[r2] 26500 mov r3,r0 26510 bl mult64 26520 ldmfd r13!,{r1-r3,pc}^ 26530 26540.getOadd 26550 stmfd r13!,{r1-r2,r14} 26560 add r2,r1,r0,lsl #5 26570 stmfd r13!,{r2} 26580 ldr r0,[r2,#16] 26590 bl getout 26600 ldmfd r13!,{r2} 26610 stmfd r13!,{r0} 26620 ldr r0,[r2,#20] 26630 bl getout 26640 ldmfd r13!,{r2} 26650 add r0,r0,r2 26660 ldmfd r13!,{r1-r2,pc}^ 26670 26680.getOsub 26690 stmfd r13!,{r1-r2,r14} 26700 add r2,r1,r0,lsl #5 26710 stmfd r13!,{r2} 26720 ldr r0,[r2,#16] 26730 bl getout 26740 ldmfd r13!,{r2} 26750 stmfd r13!,{r0} 26760 ldr r0,[r2,#20] 26770 bl getout 26780 ldmfd r13!,{r2} 26790 sub r0,r2,r0 26800 ldmfd r13!,{r1-r2,pc}^ 26810 26820.getOpulse 26830 stmfd r13!,{r1-r12,r14} 26840 add r2,r1,r0,lsl #5 26850 ldr r0,[r2,#16] 26860 bl getout 26870 stmfd r13!,{r0} 26880 ldr r0,[r2,#20] 26890 bl getout 26900 cmp r0,#0 26910 movmi r0,#0 26920 cmp r0,#&10000 26930 movpl r0,#&10000 26940 ldmfd r13!,{r3} 26950 ldr r4,[r2,#12] 26960 ldr r5,[r4] 26970 add r5,r5,r3 26980 bic r5,r5,#&ff000000 26990 str r5,[r4] 27000 cmp r5,r0,lsl #8 27010 mov r0,#&10000 27020 rsbpl r0,r0,#0 27030 ldmfd r13!,{r1-r12,pc}^ 27040 27050.getOdelay 27060 stmfd r13!,{r1-r12,r14} 27070 add r2,r1,r0,lsl #5 27080 stmfd r13!,{r2} 27090 ldr r2,[r2,#12] 27100 add r2,r2,#248 27110 add r3,r2,#4 27120 ldmda r2!,{r4-r12,r14} 27130 stmda r3!,{r4-r12,r14} 27140 ldmda r2!,{r4-r12,r14} 27150 stmda r3!,{r4-r12,r14} 27160 ldmda r2!,{r4-r12,r14} 27170 stmda r3!,{r4-r12,r14} 27180 ldmda r2!,{r4-r12,r14} 27190 stmda r3!,{r4-r12,r14} 27200 ldmda r2!,{r4-r12,r14} 27210 stmda r3!,{r4-r12,r14} 27220 ldmda r2!,{r4-r12,r14} 27230 stmda r3!,{r4-r12,r14} 27240 ldmda r2!,{r4-r5,r14} 27250 stmda r3!,{r4-r5,r14} 27260 ldmfd r13,{r2} 27270 ldr r0,[r2,#16] 27280 bl getout 27290 ldmfd r13,{r2} 27300 ldr r2,[r2,#12] 27310 str r0,[r2] 27320 ldmfd r13,{r2} 27330 ldr r0,[r2,#20] 27340 bl getout 27350 ldmfd r13!,{r2} 27360 ldr r2,[r2,#12] 27370 mov r0,r0,asr #10 27380 cmp r0,#0 27390 movmi r0,#0 27400 cmp r0,#63 27410 movpl r0,#63 27420 ldr r0,[r2,r0,lsl #2] 27430 ldmfd r13!,{r1-r12,pc}^ 27440 27450.getOinput 27460 stmfd r13!,{r1-r6,r14} 27470 add r6,r1,r0,lsl #5 27480 ldr r6,[r6,#12] 27490 ldr r5,[r6,#264] 27500 ldr r4,[r6,#260] 27510 ldr r1,[r6,#268] 27520 cmp r5,r1,lsl #12 27530 movpl r0,#0 27540 ldmplfd r13!,{r1-r6,pc}^ 27550 ldr r1,[r6,#272] 27560 add r1,r1,r5,lsr #12 27570 ldrb r0,[r1] 27580 27590 ldr r1,[r6,#256] 27600 tst r1,#4 27610 addne r5,r5,r4 27620 addeq r5,r5,#&1000 27630 str r5,[r6,#264] 27640 27650 ldr r1,[r6,#256] 27660 and r1,r1,#3 27670 cmp r1,#0 27680 moveq r0,r0,lsl #24 27690 moveq r0,r0,asr #15 27700 ldmeqfd r13!,{r1-r6,pc}^ 27710 cmp r1,#1 27720 subeq r0,r0,#128 27730 moveq r0,r0,lsl #9 27740 ldmeqfd r13!,{r1-r6,pc}^ 27750 ldr r1,lintab 27760 ldr r0,[r1,r0,lsl #2] 27770 ldmfd r13!,{r1-r6,pc}^ 27780 27790.lintab equd 0 27800 27810.getOsh stmfd r13!,{r1-r5,r14} 27820 add r2,r1,r0,lsl #5 27830 ldr r0,[r2,#16] 27840 bl getout 27850 mov r5,r0 27860 ldr r0,[r2,#20] 27870 bl getout 27880 ldr r2,[r2,#12] 27890 ldr r4,[r2] 27900 tst r4,#&80000000 27910 bne noress 27920 cmp r0,#0 27930 movpl r4,r5,asr #1 27940.noress bic r4,r4,#&80000000 27950 cmp r0,#0 27960 orrpl r4,r4,#&80000000 27970 str r4,[r2] 27980 mov r0,r4,lsl #1 27990 ldmfd r13!,{r1-r5,pc}^ 28000 28010.getOnld 28020 stmfd r13!,{r1-r5,r14} 28030 add r2,r1,r0,lsl #5 28040 ldr r0,[r2,#16] 28050 bl getout 28060 mov r0,r0,asr #1 28070 add r0,r0,#&8000 28080 cmp r0,#0 28090 movmi r0,#0 28100 cmp r0,#&10000 28110 movpl r0,#&ff00 28120 mov r0,r0,asr #8 28130 ldr r2,[r2,#12] 28140 ldrb r0,[r2,r0] 28150 mov r0,r0,asl #8 28160 sub r0,r0,#&8000 28170 mov r0,r0,asl #1 28180 ldmfd r13!,{r1-r5,pc}^ 28190 28200.mult64 ;r0=r2*r3 and . between bit 15,16 28210 stmfd r13!,{r1-r7,r14} 28220 eor r4,r2,r3 28230 cmp r2,#0 28240 rsbmi r2,r2,#0 28250 cmp r3,#0 28260 rsbmi r3,r3,#0 28270 mov r5,r2,lsl #16 28280 mov r5,r5,lsr #16 28290 mov r6,r3,lsl #16 28300 mov r6,r6,lsr #16 28310 mul r0,r5,r6 28320 mov r0,r0,lsr #16 28330 mov r6,r3,lsr #16 28340 mul r7,r5,r6 28350 add r0,r0,r7 28360 mov r5,r2,lsr #16 28370 mov r6,r3,lsl #16 28380 mov r6,r6,lsr #16 28390 mul r7,r5,r6 28400 add r0,r0,r7 28410 mov r6,r3,lsr #16 28420 mul r7,r5,r6 28430 add r0,r0,r7,lsl #16 28440 bic r0,r0,#&80000000 28450 tst r4,#&80000000 28460 rsbne r0,r0,#0 28470 ldmfd r13!,{r1-r7,pc} 28480 28490.copymem 28500 stmfd r13!,{r0-r3,r14} 28510.cpylup cmp r2,#0 28520 ldmlefd r13!,{r0-r3,pc} 28530 ldrb r3,[r1],#1 28540 strb r3,[r0],#1 28550 sub r2,r2,#1 28560 b cpylup 28570 28580.revmem stmfd r13!,{r0-r3,r14} 28590.revlup cmp r0,r1 28600 ldmplfd r13!,{r0-r3,pc} 28610 ldrb r2,[r0] 28620 ldrb r3,[r1] 28630 strb r3,[r0],#1 28640 strb r2,[r1],#-1 28650 b revlup 28660 28670.div32 mov r9,#0 ;r12=r11/r10 28680 mov r12,#0 28690 mov r8,#32 28700 mov r7,#0 28710 cmp r10,#0 28720 rsbmi r10,r10,#0 28730 eormi r7,r7,#1 28740 cmp r11,#0 28750 rsbmi r11,r11,#0 28760 eormi r7,r7,#1 28770.divlp1 movs r11,r11,asl #1 28780 adc r9,r9,r9 28790 cmp r9,r10 28800 adc r12,r12,r12 28810 subcs r9,r9,r10 28820 subs r8,r8,#1 28830 bne divlp1 28840 cmp r7,#0 28850 rsbne r12,r12,#0 28860 mov pc,r14 28870.endcode 28880] 28890NEXT pass% 28900ENDPROC
#� >adfs::SFXM.$.!SFXM.!RunImage � >Written by G. Vermeulen � � �IntError:� �T|@ (insttime%=� 2 �Init <� F5 È™"Wimp_Poll",nopoll%,pollb% � reason%,polledb% P nopoll%=0 Z ÈŽ reason% � d � 0:�Null_Reason n � 1:�Redraw_Window x � 2:�Open_Window � � 3:�Close_Window �% � 6:�Mouse_Click:nopoll%=1<<6 � � 7:�User_Drag_Box � � 8:�Key_Pressed � � 9:�Menu_Select � � 17,18,19:�User_Message � � �� � �� � ���IntError �� � �� � � � �`PC 7A%=�interr(�$+" at line "+Þ+". Continue program?") � A%=2 � �Quit � " ,��Null_Reason 6I� ((dfunc%>=0)�(dfunc%<=9))�((dfunc%>=13)�(dfunc%<=18)) � �DragObject @� dfunc%=12 � �DragLine J� drag% � �DragMoveObjs T5� (instopen%<>0) � (�-insttime%>300) � �CheckInst ^� h r��DragObject |#È™"Wimp_GetPointerInfo",,temp2% �+� (temp2%!12=wworkh%)�(temp2%!16>=-1) � � temp%!0=wworkh% �$ È™"Wimp_GetWindowState",,temp% �& newdx%=temp2%!0+temp%!20-temp%!4 �' newdy%=temp2%!4+temp%!24-temp%!16 � newdx%=(newdx%�96)*96 � newdy%=(newdy%�56)*56-56 �+ � (olddx%<>newdx%)�(olddy%<>newdy%) � � �RemDf(olddx%,olddy%) � �PlotDf(newdx%,newdy%) �# olddx%=newdx%:olddy%=newdy% � � �� � ��DragLine &#È™"Wimp_GetPointerInfo",,temp2% 0:� (temp2%!12=wworkh%)�(temp2%!16>=-1)�(startlx%<>-1) � : temp%!0=wworkh% D$ È™"Wimp_GetWindowState",,temp% N& newlx%=temp2%!0+temp%!20-temp%!4 X' newly%=temp2%!4+temp%!24-temp%!16 b+ � (oldlx%<>newlx%)�(oldly%<>newly%) � l �PlotLn(oldlx%,oldly%) v �PlotLn(newlx%,newly%) �# oldlx%=newlx%:oldly%=newly% � � �� �� � ���DragMoveObjs �#È™"Wimp_GetPointerInfo",,temp2% �� (temp2%!8)�4 � � temp%!0=wworkh% �$ È™"Wimp_GetWindowState",,temp% �& newlx%=temp2%!0+temp%!20-temp%!4 �' newly%=temp2%!4+temp%!24-temp%!16 � newlx%=(newlx%�96)*96+48 newly%=(newly%�56)*56-32 + � (oldlx%<>newlx%)�(oldly%<>newly%) � �PlotLn(oldlx%,oldly%) �PlotLn(newlx%,newly%) *# oldlx%=newlx%:oldly%=newly% 4 � >� H% � (startlx%<>-1)�(oldlx%<>-1) � R �PlotLn(oldlx%,oldly%) \2 �MoveIcns(oldlx%-startlx%,oldly%-startly%) f � p drag%=0 z startlx%=-1:startly%=-1 � newlx%=-1:newly%=-1 � oldlx%=-1:oldly%=-1 �� �� � ���RemAllDrag �� olddx%<>-1 � � �RemDf(olddx%,olddy%) �� �� startlx%<>-1 � � �PlotLn(oldlx%,oldly%) �� �newdx%=-1:newdy%=-1 olddx%=-1:olddy%=-1 oldlx%=-1:oldly%=-1 newlx%=-1:newly%=-1 $startlx%=-1:startly%=-1 .startic%=-1 8starti%=-1 Bendi%=-1 Ldrag%=0 V� ` j��CheckInst ttemp%!0=winsth% ~È™"Wimp_CloseWindow",,temp% �instopen%=0 �� � ���MoveIcns(dx%,dy%) �temp2%!0=wworkh% ��T%=0�maxicons%-1 �; � (iconinfo%!(T%*32)<>-1)�(iconinfo%!(T%*32+28))�16 � � �ModTitle(0) � temp2%!4=T% �# È™"Wimp_DeleteIcon",,temp2% �( temp2%!4=iconinfo%!(T%*32+4)+dx% �( temp2%!8=iconinfo%!(T%*32+8)+dy% temp2%!12=temp2%!4+92 temp2%!16=temp2%!8+52 3 temp2%!20=%00001000000000001010000000011010 ÈŽ iconinfo%!(T%*32) � ( � 0:i$="vco" 2 � 1:i$="noise" < � 2:i$="eg" F � 5:i$="const" P � 3:i$="filtlo" Z � 4:i$="filthi" d � 6:i$="mult" n � 7:i$="multc" x � 8:i$="add" � � 13:i$="sub" � � 14:i$="pulse" � � 15:i$="delay" � � 9:i$="output" � � 16:i$="input" � � 17:i$="samhold" � � 18:i$="nldist" � � � $(temp2%+24)=i$ �' È™"Wimp_CreateIcon",,temp2%�ih% � iconinfo%!(T%*32+4)+=dx% � iconinfo%!(T%*32+8)+=dy% �= iconinfo%!(T%*32+28)=(iconinfo%!(T%*32+28))�&ffffffef � ih%<>T% � 2 iconinfo%!(ih%*32+0)=iconinfo%!(T%*32+0) 2 iconinfo%!(ih%*32+4)=iconinfo%!(T%*32+4) "2 iconinfo%!(ih%*32+8)=iconinfo%!(T%*32+8) ,4 iconinfo%!(ih%*32+12)=iconinfo%!(T%*32+12) 64 iconinfo%!(ih%*32+16)=iconinfo%!(T%*32+16) @4 iconinfo%!(ih%*32+20)=iconinfo%!(T%*32+20) J4 iconinfo%!(ih%*32+24)=iconinfo%!(T%*32+24) T4 iconinfo%!(ih%*32+28)=iconinfo%!(T%*32+28) ^ iconinfo%!(T%*32+0)=-1 h iconinfo%!(T%*32+4)=-1 r iconinfo%!(T%*32+8)=-1 |! iconinfo%!(T%*32+12)=-1 �! iconinfo%!(T%*32+16)=-1 �! iconinfo%!(T%*32+20)=-1 �! iconinfo%!(T%*32+24)=-1 �! iconinfo%!(T%*32+28)=-1 � �S%=0�maxicons%-1 �% � iconinfo%!(S%*32)<>-1 � �B � iconinfo%!(S%*32+16)=T% � iconinfo%!(S%*32+16)=ih% �B � iconinfo%!(S%*32+20)=T% � iconinfo%!(S%*32+20)=ih% � � � �S% � � � � ��T% /È™"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 � &��PlotDf(x%,y%) 0� x%<>-1 � : temp%!0=wworkh% D$ È™"Wimp_GetWindowState",,temp% N sx%=temp%!4+x%-temp%!20 X sy%=temp%!16+y%-temp%!24 b temp2%!0=wworkh% l temp2%!4=x% v temp2%!8=y% � temp2%!12=x%+96 � temp2%!16=y%+56 �= È™"Wimp_ReadPixTrans",&100,1,"vco",,,,scalef%,pixtrans% �) È™"Wimp_UpdateWindow",,temp2%�more% � È• more% �> È™"Wimp_SpriteOp",&34,,df$,sx%,sy%,8,scalef%,pixtrans% �+ È™"Wimp_GetRectangle",,temp2%�more% � � �� �� � ���RemDf(x%,y%) �� x%<>-1 � 4 È™"Wimp_ForceRedraw",wworkh%,x%,y%,x%+96,y%+56 � � *��PlotLn(x%,y%) 4� (x%<>-1)�(startlx%<>-1) � > temp2%!0=wworkh% H% È™"Wimp_GetWindowState",,temp2% R& ssx%=temp2%!4+startlx%-temp2%!20 \' ssy%=temp2%!16+startly%-temp2%!24 f sex%=temp2%!4+x%-temp2%!20 p! sey%=temp2%!16+y%-temp2%!24 z wsx%=startlx% � wsy%=startly% � wex%=x% � wey%=y% � � wsx%>wex% � È” wsx%,wex% � � wsy%>wey% � È” wsy%,wey% � temp2%!0=wworkh% � temp2%!4=wsx%-4 � temp2%!8=wsy%-4 � temp2%!12=wex%+4 � temp2%!16=wey%+4 �) È™"Wimp_UpdateWindow",,temp2%�more% � È• more% � �3,15 � ssx%,ssy%,sex%,sey% + È™"Wimp_GetRectangle",,temp2%�more% � $� .� 8 B��Redraw_Window L)È™"Wimp_RedrawWindow",,polledb%�more% VÈŽ polledb%!0 � ` � wworkh%:�RedrawWork j � wvcoh%:�RedrawVCO t � wegh%:�RedrawEG ~ � wnldisth%:�RedrawNLD � :�JustRedraw �� �� � ���RedrawWork �;È™"Wimp_ReadPixTrans",&100,1,"vco",,,,scalef%,pixtrans% �%ox%=newdx%+polledb%!4-polledb%!20 �&oy%=newdy%+polledb%!16-polledb%!24 �(ssx%=startlx%+polledb%!4-polledb%!20 �)ssy%=startly%+polledb%!16-polledb%!24 �&sex%=newlx%+polledb%!4-polledb%!20 �'sey%=newly%+polledb%!16-polledb%!24 È• more% M �RedrawLines(polledb%!4-58,polledb%!8-28,polledb%!12+58,polledb%!16+28) K � newdx%<>-1 � È™"Wimp_SpriteOp",&34,,df$,ox%,oy%,8,scalef%,pixtrans% (C � (startlx%<>-1) � (newlx%<>-1) � �3,15:� ssx%,ssy%,sex%,sey% 2+ È™"Wimp_GetRectangle",,polledb%�more% <� F� P Z��RedrawVCO dA%=polledb%!4 nB%=polledb%!8 xC%=vcoptr% �ȕ more% � È™"Wimp_SetColour",3 �' � A%+166,B%+132,A%+166+512,B%+132 � È™"Wimp_SetColour",1 �- � A%+166,B%+132+32,A%+166+512,B%+132+32 �- � A%+166,B%+132+64,A%+166+512,B%+132+64 �- � A%+166,B%+132+96,A%+166+512,B%+132+96 �- � A%+166,B%+132-32,A%+166+512,B%+132-32 �- � A%+166,B%+132-64,A%+166+512,B%+132-64 �- � A%+166,B%+132-96,A%+166+512,B%+132-96 � È™"Wimp_SetColour",7 � �redrawvco �+ È™"Wimp_GetRectangle",,polledb%�more% � � "��RedrawNLD ,A%=polledb%!4 6B%=polledb%!8 @C%=nldistptr% JÈ• more% T È™"Wimp_SetColour",1 ^ � A%,B%+64,A%+512,B%+64 h � A%,B%+128,A%+512,B%+128 r � A%,B%+192,A%+512,B%+192 | � A%,B%+320,A%+512,B%+320 � � A%,B%+384,A%+512,B%+384 � � A%,B%+448,A%+512,B%+448 � � A%+64,B%,A%+64,B%+512 � � A%+128,B%,A%+128,B%+512 � � A%+192,B%,A%+192,B%+512 � � A%+320,B%,A%+320,B%+512 � � A%+384,B%,A%+384,B%+512 � � A%+448,B%,A%+448,B%+512 � È™"Wimp_SetColour",3 � � A%,B%+256,A%+512,B%+256 � � A%+256,B%,A%+256,B%+512 � È™"Wimp_SetColour",7 � �redrawnld + È™"Wimp_GetRectangle",,polledb%�more% � � & 0��VCOClick :ÈŽ polledb%!16 � D � 0:�VCOsin(vcoptr%+4) N � 1:�VCOtri(vcoptr%+4) X � 2:�VCOramp(vcoptr%+4) b � 3:�VCOsqr(vcoptr%+4) l � 4:�VCOconst(vcoptr%+4) v � 5:�VCOshftlft(vcoptr%+4) �! � 6:�VCOshftrght(vcoptr%+4) � � 7:�VCOmuldiv2(vcoptr%+4) � � 8:�VCOrot90(vcoptr%+4) � � 9:�VCOrand(vcoptr%+4) � � 10:�VCOpaint(vcoptr%+4) �� �W� (polledb%!16<>10)�(polledb%!16<>-1) �:È™"Wimp_ForceRedraw",wvcoh%,166,-260,678,-4 �� � ���VCOsin(a%) � �T%=0�255 � ?(a%+T%)=127*�(2*�*T%/256) ��T% �ModTitle(0) � ��VCOtri(a%) �T%=0�127 * ?(a%+T%)=127-�(-127+2*T%) 4 ?(a%+255-T%)=-?(a%+T%) >�T% H�ModTitle(0) R� \��VCOramp(a%) fÈ— A%,B%,C% p �T%=0�255 z � C%�4 � ?(a%+T%)=-128+T% � � C%�1 � ?(a%+T%)=127-T% ��T% ��ModTitle(0) �� ���VCOsqr(a%) � �T%=0�255 � ?(a%+T%)=127+254*(T%>127) ��T% ��ModTitle(0) �� ���VCOconst(a%) �ȗ A%,B%,C% �� C%�4 � l%=127 � C%�2 � l%=0 � C%�1 � l%=128 �T%=0�255 $ ?(a%+T%)=l% .�T% 8�ModTitle(0) B� L��VCOshftlft(a%) V �T%=0�127 ` ?(a%+T%)=?(a%+T%*2) j�T% t �T%=0�127 ~ ?(a%+T%+128)=?(a%+T%) ��T% ��ModTitle(0) �� ���VCOshftrght(a%) ��T%=255�0�-1 � ?(a%+T%)=?(a%+(T%>>1)) ��T% ��ModTitle(0) �� ���VCOmuldiv2(a%) �ȗ A%,B%,C% � �T%=0�255 l%=(((?(a%+T%))<<24)>>24) � C%�4 � l%=l%*2 � C%�1 � l%=l%�2 � l%>127 � l%=127 ( � l%<-127 � l%=-127 2 ?(a%+T%)=l% <�T% F�ModTitle(0) P� Z��VCOrot90(a%) dÈ— A%,B%,C% n �T%=0�255 x l%=T% � � C%�4 � l%=(T%+64)�255 � � C%�1 � l%=(T%-64)�255 � temp%?T%=?(a%+l%) ��T% � �T%=0�255 � ?(a%+T%)=temp%?T% ��T% ��ModTitle(0) �� ���VCOrand(a%) � �T%=0�255 � ?(a%+T%)=�(255)-128 ��T% �ModTitle(0) � ��VCOpaint(a%) "È™"OS_Byte",202,0,255�,sh% ,� (sh%�8)=0 � 6È— A%,B%,C% @� C%=0 � vcolastx%=-1 J&� (C%�4)�((C%�1)�(vcolastx%=-1)) � T temp%!0=wvcoh% ^$ È™"Wimp_GetWindowState",,temp% h$ x%=polledb%!0-temp%!4+temp%!20 r% y%=polledb%!4-temp%!16+temp%!24 |1 � (x%>=166)�(x%<=676)�(y%<=-8)�(y%>=-260) � � �ModTitle(0) � a%?((x%-166)/2)=(134+y%) � vcolastx%=(x%-166)/2 � vcolasty%=134+y% �3 È™"Wimp_ForceRedraw",wvcoh%,x%,-260,x%+2,-4 � � �� �� (C%�1)�(vcolastx%<>-1) � � temp%!0=wvcoh% �$ È™"Wimp_GetWindowState",,temp% �$ x%=polledb%!0-temp%!4+temp%!20 �% y%=polledb%!4-temp%!16+temp%!24 �1 � (x%>=166)�(x%<=676)�(y%<=-8)�(y%>=-260) � �ModTitle(0) sx=vcolastx% sy=vcolasty% & ex=(x%-166)�2 0 ey=134+y% : � �(sx-ex)<1 � D! a%?((x%-166)/2)=(134+y%) N � X y=sy b dx=�(ex-sx) l dy=(ey-sy)/�(ex-sx) v � x=sx � ex � dx � a%?x=y � y+=dy � �x � � � vcolastx%=(x%-166)/2 � vcolasty%=134+y% � � sx>ex � È” sx,ex � � sy>ey � È” sy,ey �= È™"Wimp_ForceRedraw",wvcoh%,sx*2+166,-260,ex*2+168,-4 � � �� �� �� ��EGClick È™"OS_Byte",202,0,255�,sh% � (sh%�8)=0 � *a%=egptr%+8 4È— A%,B%,C% >� C%=0 � eglastx%=-1 H%� (C%�4)�((C%�1)�(eglastx%=-1)) � R temp%!0=wegh% \$ È™"Wimp_GetWindowState",,temp% f$ x%=polledb%!0-temp%!4+temp%!20 p% y%=polledb%!4-temp%!16+temp%!24 z0 � (x%>=0)�(x%<=1022)�(y%<=-4)�(y%>=-256) � � �ModTitle(0) � a%?(x%/2)=256+y% � eglastx%=x%/2 � eglasty%=256+y% �1 È™"Wimp_ForceRedraw",wegh%,x%,-256,x%+2,0 � � �� �� (C%�1)�(eglastx%<>-1) � � temp%!0=wegh% �$ È™"Wimp_GetWindowState",,temp% �$ x%=polledb%!0-temp%!4+temp%!20 �% y%=polledb%!4-temp%!16+temp%!24 �0 � (x%>=0)�(x%<=1022)�(y%<=-4)�(y%>=-256) � �ModTitle(0) sx=eglastx% sy=eglasty% $ ex=x%�2 . ey=256+y% 8 � �(sx-ex)<1 � B a%?(x%/2)=256+y% L � V y=sy ` dx=�(ex-sx) j dy=(ey-sy)/�(ex-sx) t � x=sx � ex � dx ~ a%?x=y � y+=dy � �x � � � eglastx%=x%/2 � eglasty%=256+y% � � sx>ex � È” sx,ex � � sy>ey � È” sy,ey �5 È™"Wimp_ForceRedraw",wegh%,sx*2,-256,ex*2+2,0 � � �� �� �� ��RedrawEG A%=polledb%!4 B%=polledb%!8 ( C%=egptr% 2È• more% < È™"Wimp_SetColour",1 F � A%+2,B%+32,A%+1024,B%+32 P � A%+2,B%+64,A%+1024,B%+64 Z � A%+2,B%+96,A%+1024,B%+96 d" � A%+2,B%+128,A%+1024,B%+128 n" � A%+2,B%+160,A%+1024,B%+160 x" � A%+2,B%+192,A%+1024,B%+192 �" � A%+2,B%+224,A%+1024,B%+224 � È™"Wimp_SetColour",7 � �redraweg �+ È™"Wimp_GetRectangle",,polledb%�more% �� �� � ���JustRedraw �ȕ more% �+ È™"Wimp_GetRectangle",,polledb%�more% �� �� � ��Open_Window 0� polledb%!0=wworkh% � tools% � �Open_Work:� \� polledb%!0=wtools% � polledb%!0=wworkh%:È™"Wimp_GetWindowState",,polledb%:�Open_Work:� "!È™"Wimp_OpenWindow",,polledb% ,� 6 @��Open_Work J temp2%!0=wworkh% T% È™"Wimp_GetWindowState",,temp2% ^ temp%!0=wtoolsh% h$ È™"Wimp_GetWindowState",,temp% r temp%!4=polledb%!4-114 | temp%!16=polledb%!16 � temp%!12=polledb%!4-4 �e � polledb%!16-polledb%!8>620 � temp%!8=temp%!16-620 � temp%!8=temp%!16-(polledb%!16-polledb%!8) �7 � temp%!4<0 � temp%!12=temp%!12-temp%!4:temp%!4=0 � A%=polledb%!4<oldworkx% �( A%=A% � ((polledb%!4-temp%!4)<114) �' A%=A% � (((temp2%!32)�(1<<19))=0) �( A%=A% � (((temp2%!32)�(1<<18))<>0) � � A% � � temp%!28=polledb%!28 �" È™"Wimp_OpenWindow",,temp% � polledb%!28=wtoolsh% �% È™"Wimp_OpenWindow",,polledb% � � temp%!28=polledb%!28 polledb%!28=wtoolsh% % È™"Wimp_OpenWindow",,polledb% &) È™"Wimp_GetWindowState",,polledb% 0 temp%!4=polledb%!4-114 : temp%!16=polledb%!16 D temp%!12=polledb%!4-4 Ng � polledb%!16-polledb%!8>620 � temp%!8=temp%!16-620 � temp%!8=temp%!16-(polledb%!16-polledb%!8) X9 � temp%!4<0 � temp%!12=temp%!12-temp%!4:temp%!4=0 b" È™"Wimp_OpenWindow",,temp% l polledb%!28=wtoolsh% v% È™"Wimp_OpenWindow",,polledb% � � � oldworkx%=polledb%!4 �� � ���Close_Window �"È™"Wimp_CloseWindow",,polledb% �� polledb%!0=wworkh% � � polledb%!0=wtoolsh% �$ È™"Wimp_CloseWindow",,polledb% �� �� � ���Mouse_Click ÈŽ polledb%!12 � � wworkh%:�WorkClick � wtoolsh%:�ToolsClick � wconstanth%:�ConstClick * � wmultch%:�MultCClick 4 � wvcoh%:�VCOClick > � wegh%:�EGClick H � wnldisth%:�NLDistClick R � wstatsh%:�StatsClick \ � winputh%:�InputClick f � -2:�IconBClick p� z� � ���ToolsClick �� polledb%!8<16 � � ÈŽ polledb%!16 � � � 0:�PopPlaceM �H � 1:lastmenu%=workmenu%:polledb%!0=2:polledb%!4=-1:�Menu_Select2 �H � 2:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=-1:�Menu_Select2 �U � 3:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=3:polledb%!8=-1:�Menu_Select2 �U � 4:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=4:polledb%!8=-1:�Menu_Select2 �U � 5:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=0:polledb%!8=-1:�Menu_Select2 �U � 6:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=1:polledb%!8=-1:�Menu_Select2 �U � 7:lastmenu%=workmenu%:polledb%!0=1:polledb%!4=2:polledb%!8=-1:�Menu_Select2 �H � 8:lastmenu%=workmenu%:polledb%!0=3:polledb%!4=-1:�Menu_Select2 � � � $ .��PopPlaceM 8qlastmx%=polledb%!0-64:lastmy%=polledb%!4+12:lastmenu%=addmenu%:È™"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% B� L V��NLDistClick `È™"OS_Byte",202,0,255�,sh% j� (sh%�8)=0 � ta%=nldistptr% ~È— A%,B%,C% �� C%=0 � nldistlastx%=-1 �)� (C%�4)�((C%�1)�(nldistlastx%=-1)) � � temp%!0=wnldisth% �$ È™"Wimp_GetWindowState",,temp% �$ x%=polledb%!0-temp%!4+temp%!20 �% y%=polledb%!4-temp%!16+temp%!24 �/ � (x%>=0)�(x%<=510)�(y%<=-2)�(y%>=-512) � � �ModTitle(0) � a%?(x%/2)=256+y%/2 � nldistlastx%=x%/2 � nldistlasty%=256+y%/2 �5 È™"Wimp_ForceRedraw",wnldisth%,x%,-512,x%+2,0 � � !� (C%�1)�(nldistlastx%<>-1) � temp%!0=wnldisth% ($ È™"Wimp_GetWindowState",,temp% 2$ x%=polledb%!0-temp%!4+temp%!20 <% y%=polledb%!4-temp%!16+temp%!24 F/ � (x%>=0)�(x%<=510)�(y%<=-2)�(y%>=-512) � P �ModTitle(0) Z sx=nldistlastx% d sy=nldistlasty% n ex=x%�2 x ey=256+y%/2 � � �(sx-ex)<1 � � a%?(x%/2)=256+y%/2 � � � y=sy � dx=�(ex-sx) � dy=(ey-sy)/�(ex-sx) � � x=sx � ex � dx � a%?x=y � y+=dy � �x � � � nldistlastx%=x%/2 � nldistlasty%=256+y%/2 � sx>ex � È” sx,ex � sy>ey � È” sy,ey 9 È™"Wimp_ForceRedraw",wnldisth%,sx*2,-512,ex*2+2,0 " � ,� 6� @� J T��StatsClick ^� polledb%!8<8 � h5 � polledb%!16=4 � samtype%=0:�SendSFXED(&9abc0) r5 � polledb%!16=5 � samtype%=1:�SendSFXED(&9abc1) |5 � polledb%!16=6 � samtype%=2:�SendSFXED(&9abc2) �� �� � ���SendSFXED(M%) �H%=�GetSFXEDH �� H%=0 � �& �ReportErr("SFXED not present.") �� � temp%!0=256 � temp%!4=0 � temp%!8=0 � temp%!12=0 � temp%!16=M% & È™"Wimp_SendMessage",17,temp%,H% � � & 0��MBString(s%) :È• ?s%>31 s%+=1:� D ?s%=13 N� X b��DataSave l� messbk%!4<>taskh% � v( filetoload2$=�Strip($(messbk%+44)) � messbk%!0=256 �' $(messbk%+44)="<Wimp$Scrap>"+�(0) � messbk%!12=messbk%!8 � messbk%!16=2 � messbk%!36=-1 �/ È™"Wimp_SendMessage",17,messbk%,messbk%!4 �� �� � � ��SaveAck �� savetype%<>-1 � � ÈŽ savetype% � � � 0:temp%!0=wsaveasshh% � temp%!4=1 " È™"Wimp_GetIconState",,temp% �MBString(polledb%+44) *# $(!(temp%+28))=$(polledb%+44) 4 f$=$(polledb%+44) > ÈŽ savetype% � H � 0:�SaveSh(f$) R � \ � f%<>0 � �#f% f savetype%=-1 p messbk%!12=messbk%!8 z messbk%!16=3 �/ È™"Wimp_SendMessage",17,messbk%,messbk%!4 �� �� � ���DataLoad �Ȏ polledb%!20 � � � wworkh%,-2:�LoadSheet � � winputh%:�LoadInput �� �� � ���DataOpen �� polledb%!40=&78a � �LoadSheet messbk%!0=256 messbk%!12=messbk%!8 $/ È™"Wimp_SendMessage",17,messbk%,messbk%!4 .� 8� B L��LoadInput V� � `� � � �ReportErr(�$):� j�ModTitle(0) t�MBString(polledb%+44) ~$(inpptr%)=$(polledb%+44) �temp%!0=winputh% � temp%!4=1 � È™"Wimp_GetIconState",,temp% �$(temp%!28)=$(polledb%+44) �f%=�($(polledb%+44)) �inpptr%!268=�#f% ��#f% � temp%!4=8 � È™"Wimp_GetIconState",,temp% �@%=&90a �$(temp%!28)=�(inpptr%!268) �@%=&01020a00 0È™"Wimp_ForceRedraw",winputh%,0,-4000,4000,0 � ��LoadSheet (� � 2� � � �ReportErr(�$):� <� polledb%!40<>&78a � F �ReportErr("Not a sheet.") P� Z �MBString(polledb%+44) d filetoload$=$(polledb%+44) n � sheetsaved%=-1 � x �LoadSh(filetoload$) � � �\ A%=�Confirm("Sheet has been modified. Are you sure you want to load another sheet?") �% � A%=1 � �LoadSh(filetoload$) � � �� �� � ���LoadSh(f$) � �RemAllDrag � �Clear � fi$=�Strip(f$) � sheetname$=fi$ � f%=�(f$) È™"OS_GBPB",4,f%,temp%,4 � temp%!0=&4d584653 � ! È™"OS_GBPB",4,f%,temp%,20 " temp2%!0=wstatsh% , temp2%!4=8 6% È™"Wimp_GetIconState",,temp2% @ $(temp2%!28)=$temp% J È™"OS_GBPB",4,f%,temp%,4 T � ^% � temp%!0>99999 � temp%!0=99999 h temp2%!0=wstatsh% r temp2%!4=3 |# È™"Wimp_GetIconState",,temp2% � $(temp2%!28)=�(temp%!0) � È™"OS_GBPB",4,f%,temp%,4 � i%=temp%!0 � È• i%<>-1 �" È™"OS_GBPB",4,f%,temp2%,32 � È™"OS_GBPB",4,f%,temp%,4 � l%=�Alloc(temp%!0) � temp2%!12=l% � temp2%!28=(temp2%!28)�&f �# È™"OS_GBPB",4,f%,l%,temp%!0 � temp%!0=wworkh% � temp%!4=temp2%!4 � temp%!8=temp2%!8 temp%!12=temp2%!4+92 temp%!16=temp2%!8+52 2 temp%!20=%00001000000000001010000000011010 & ÈŽ temp2%!0 � 0 � 0:i$="vco" : � 1:i$="noise" D � 2:i$="eg" N � 3:i$="filtlo" X � 4:i$="filthi" b � 5:i$="const" l � 6:i$="mult" v � 7:i$="multc" � � 8:i$="add" � � 13:i$="sub" � � 14:i$="pulse" � � 15:i$="delay" � � 9:i$="output" � � 16:i$="input" � � 17:i$="samhold" � � 18:i$="nldist" � � � $(temp%+24)=i$ �& È™"Wimp_CreateIcon",,temp%�ih% � litrans%(i%)=ih% � �T%=0�28�4 !) iconinfo%!(ih%*32+T%)=temp2%!T% ! �T% ! È™"OS_GBPB",4,f%,temp%,4 ! i%=temp%!0 !* � !4 �T%=0�maxicons%-1 !>! � iconinfo%!(T%*32)<>-1 � !HZ � iconinfo%!(T%*32+16)<>-1 � iconinfo%!(T%*32+16)=litrans%(iconinfo%!(T%*32+16)) !RZ � iconinfo%!(T%*32+20)<>-1 � iconinfo%!(T%*32+20)=litrans%(iconinfo%!(T%*32+20)) !\ � !f �T% !p �#f% !z$ � filetoload$="<Wimp$Scrap>" � !� �("Delete "+filetoload$) !� f$=filetoload2$ !� � !� $(wwork%!72)=f$ !� sheetsaved%=-1 !� temp%!0=wworkh% !� temp%!0=wsaveasshh% !� temp%!4=1 !�" È™"Wimp_GetIconState",,temp% !� $(temp%!28)=f$ !� �OpenWork !�1 È™"Wimp_ForceRedraw",wworkh%,0,-4000,4000,0 !�2 È™"Wimp_ForceRedraw",wstatsh%,0,-4000,4000,0 "� " "ݤStrip(fs$) "$� f%,a% ".f%=1 "8a%=1 "BÈ• �fs$,f%)<>"" "L1 � �fs$,f%,1)="." � �fs$,f%,1)=":" � a%=f%+1 "V f%+=1 "`� "j =�fs$,a%) "t "~ ��Inst "� n$="" "�f%=�("<SFXM$Dir>.iddata") "�a%=�#f% "�n$=n$+�(a%) "�a%=�#f% "�n$=n$+�(a%) "�a%=�#f% "�n$=n$+�(a%) "�a%=�#f% "�n$=n$+�(a%) "�F� n$<>"SFXM" � �#f%:�ReportErr("Please install SFXM first!"):�Quit "�usname$="" # idnum$="" # check%=0 #� # a%=�#f% #(+ � a%<>0 � usname$=usname$+�(a% � &aa) #2 check%=check% � a% #< � a%=0 #F� #P a%=�#f% #Z) � a%<>0 � idnum$=idnum$+�(a% � &aa) #d check%=check% � a% #n � a%=0 #xa%=�#f% #��#f% #�� a%<>check% � �Quit #�temp%!0=winsth% #� temp%!4=9 #� È™"Wimp_GetIconState",,temp% #�$(temp%!28)=usname$ #�temp%!0=winsth% #�temp%!4=13 #� È™"Wimp_GetIconState",,temp% #�$(temp%!28)=idnum$ #�temp%!0=winsth% #�"È™"Wimp_GetWindowState",,temp% #�temp%!28=-1 $È™"Wimp_OpenWindow",,temp% $insttime%=� $instopen%=-1 $"� $, $6��ConstClick $@�ModTitle(0) $J� polledb%!16=2 � $T temp%!0=wconstanth% $^ temp%!4=0 $h" È™"Wimp_GetIconState",,temp% $r v=�($(temp%!28)) $| � �(v)>32767 � $�D �ReportErr("Only numbers between -32767 and 32767 allowed.") $� � $� !constptr%=&10000*v $�# È™"Wimp_CloseWindow",,temp% $� constptr%=0 $� � $�� $�� $� $���InputClick $��ModTitle(0) $�inptype%=inpptr%!256 $�� polledb%!16=6 � % temp%!0=winputh% %! È™"Wimp_CloseWindow",,temp% %� %&5� polledb%!16=3 � inptype%=(inptype%�&fffffffc)+0 %05� polledb%!16=4 � inptype%=(inptype%�&fffffffc)+1 %:5� polledb%!16=5 � inptype%=(inptype%�&fffffffc)+2 %D6� polledb%!16=11 � inptype%=(inptype%�&fffffffb)+4 %N4� polledb%!16=12 � inptype%=(inptype%�&fffffffb) %Xinpptr%!256=inptype% %b� %l %v��MultCClick %��ModTitle(0) %�� polledb%!16=2 � %� temp%!0=wmultch% %� temp%!4=0 %�" È™"Wimp_GetIconState",,temp% %� v=�($(temp%!28)) %� � �(v)>32767 � %�D �ReportErr("Only numbers between -32767 and 32767 allowed.") %� � %� !mconstptr%=&10000*v %�# È™"Wimp_CloseWindow",,temp% %� mconstptr%=0 %� � &� &*� (polledb%!16>=3)�(polledb%!16<=13) � &% È™"Wimp_SetCaretPosition",-1,-1 & temp%!0=wmultch% &* temp%!4=0 &4" È™"Wimp_GetIconState",,temp% &>2 $(temp%!28)=��(2^(((polledb%!16)-2)/12)),11) &H0 È™"Wimp_ForceRedraw",wmultch%,0,-108,390,0 &R� &\� &f &p��WorkClick &zÈŽ polledb%!8 � &�x � 2:lastmx%=polledb%!0-64:lastmy%=polledb%!4+12:lastmenu%=workmenu%:È™"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% &� � 4*256:�ClickWork &� � 1*256:�AdjCWork &� � 4*16:�DragWork &� � 4:�DoubleWork &� � 1:�AdjCWork &�� &�� &� &���ClickWork &�Ȏ dfunc% � &�V � 0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18:�CreateObj(dfunc%,polledb%!0,polledb%!4) &� � 10:�SelIcn2 ' � 12:�Connect '� '� '$ '.��AdjToolsC '8ÈŽ olddfunc% � 'B= � 0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18:�IconColor(0,0) 'L � 10:�IconColor(2,0) 'V � 12:�IconColor(1,0) '`� 'jÈŽ dfunc% � 't= � 0,1,2,3,4,5,6,7,8,9,13,14,15,16,17,18:�IconColor(0,9) '~ � 10:�IconColor(2,9) '� � 12:�IconColor(1,9) '�� '�olddfunc%=dfunc% '�� '� '���IconColor(I%,C%) '�C%=C%�15 '�temp%!0=wtoolsh% '�temp%!4=I% '�temp%!8=C%<<28 '�temp%!12=15<<28 '� È™"Wimp_SetIconState",,temp% ( � ( (��SelIcn (� polledb%!16<>-1 � (( �SwapIconS(polledb%!16) (2� (< �ClearSel (F� (P� (Z (d ��SelIcn2 (n/� polledb%!16<>-1 � �SwapIconS(polledb%!16) (x� (� (���DragWork (�� dfunc%=10 � (� drag%=-1 (� temp%!0=wworkh% (�$ È™"Wimp_GetWindowState",,temp% (�* startlx%=polledb%!0+temp%!20-temp%!4 (�+ startly%=polledb%!4+temp%!24-temp%!16 (�" startlx%=(startlx%�96)*96+48 (�" startly%=(startly%�56)*56-32 (� newlx%=-1:newly%=-1 (� oldlx%=-1:oldly%=-1 (�� )� ) )��DoubleWork )"ÈŽ dfunc% � ), � 10:�SelIcn )6 � 12:�Connect )@� )J� )T )^��AdjCWork )hÈŽ dfunc% � )r � 10:�SetParam )| � 12:�SwapLin )�� )�� )� )���SetParam )�%ÈŽ iconinfo%!((polledb%!16)*32) � )� � 0:�SetVCOParam )� � 2:�SetEGParam )� � 5:�SetConstParam )� � 7:�SetMultCParam )� � 16:�SetInputParam )� � 18:�SetNLDistParam )�� )�� * *��SetNLDistParam *temp%!0=wnldisth% *&"È™"Wimp_GetWindowState",,temp% *0temp%!4=polledb%!0-256 *:temp%!8=polledb%!4-256 *Dtemp%!12=temp%!4+512 *Ntemp%!16=temp%!8+512 *Xtemp%!28=-1 *b6� (temp%!32)�(1<<16) � È™"Wimp_CloseWindow",,temp% *lÈ™"Wimp_OpenWindow",,temp% *v.nldistptr%=iconinfo%!((polledb%!16)*32+12) *�nldistlastx%=-1 *�nldistlasty%=-1 *��:È— A%,B%,C%:� C%=0 *�� *� *���SetInputParam *�temp%!0=winputh% *� temp%!4=1 *� È™"Wimp_GetIconState",,temp% *�+inpptr%=iconinfo%!((polledb%!16)*32+12) *�$(temp%!28)=$(inpptr%) *�inptype%=inpptr%!256 *� temp%!4=8 + È™"Wimp_GetIconState",,temp% +@%=&90a +$(temp%!28)=�(inpptr%!268) + @%=&01020a00 +*temp%!12=1<<21 +4 temp%!4=3 +>0� (inptype%�3)=0 � temp%!8=1<<21 � temp%!8=0 +H È™"Wimp_SetIconState",,temp% +R temp%!4=4 +\0� (inptype%�3)=1 � temp%!8=1<<21 � temp%!8=0 +f È™"Wimp_SetIconState",,temp% +p temp%!4=5 +z0� (inptype%�3)=2 � temp%!8=1<<21 � temp%!8=0 +� È™"Wimp_SetIconState",,temp% +�temp%!4=11 +�.� (inptype%�4) � temp%!8=1<<21 � temp%!8=0 +� È™"Wimp_SetIconState",,temp% +�temp%!4=12 +�.� (inptype%�4) � temp%!8=0 � temp%!8=1<<21 +� È™"Wimp_SetIconState",,temp% +�"È™"Wimp_GetWindowState",,temp% +�temp%!4=polledb%!0-210 +�temp%!8=polledb%!4-100 +�temp%!12=temp%!4+430 +�temp%!16=temp%!8+212 +�temp%!28=-1 ,6� (temp%!32)�(1<<16) � È™"Wimp_CloseWindow",,temp% ,È™"Wimp_OpenWindow",,temp% ,�:È— A%,B%,C%:� C%=0 ,$� ,. ,8��SetVCOParam ,Btemp%!0=wvcoh% ,L"È™"Wimp_GetWindowState",,temp% ,Vtemp%!4=polledb%!0-342 ,`temp%!8=polledb%!4-132 ,jtemp%!12=temp%!4+684 ,ttemp%!16=temp%!8+264 ,~temp%!28=-1 ,�6� (temp%!32)�(1<<16) � È™"Wimp_CloseWindow",,temp% ,�ș"Wimp_OpenWindow",,temp% ,�+vcoptr%=iconinfo%!((polledb%!16)*32+12) ,�vcolastx%=-1 ,�vcolasty%=-1 ,��:È— A%,B%,C%:� C%=0 ,�� ,� ,���SetEGParam ,�temp%!0=wegh% ,�"È™"Wimp_GetWindowState",,temp% ,�temp%!4=polledb%!0-512 - temp%!8=polledb%!4-128 - temp%!12=temp%!4+1024 -temp%!16=temp%!8+256 -temp%!28=-1 -(6� (temp%!32)�(1<<16) � È™"Wimp_CloseWindow",,temp% -2È™"Wimp_OpenWindow",,temp% -<*egptr%=iconinfo%!((polledb%!16)*32+12) -F�:È— A%,B%,C%:� C%=0 -P� -Z -d��SetConstParam -ntemp%!0=wconstanth% -x temp%!4=0 -� È™"Wimp_GetIconState",,temp% -�-constptr%=iconinfo%!((polledb%!16)*32+12) -�+$(temp%!28)=��((!constptr%)/&10000),11) -�"È™"Wimp_GetWindowState",,temp% -�temp%!4=polledb%!0-180 -�temp%!8=polledb%!4-28 -�temp%!12=temp%!4+360 -�temp%!16=temp%!8+56 -�temp%!28=-1 -�6� (temp%!32)�(1<<16) � È™"Wimp_CloseWindow",,temp% -�ș"Wimp_OpenWindow",,temp% -�� -� .��SetMultCParam .temp%!0=wmultch% . temp%!4=0 ." È™"Wimp_GetIconState",,temp% .,.mconstptr%=iconinfo%!((polledb%!16)*32+12) .6,$(temp%!28)=��((!mconstptr%)/&10000),11) .@"È™"Wimp_GetWindowState",,temp% .Jtemp%!4=polledb%!0-145 .Ttemp%!8=polledb%!4-54 .^temp%!12=temp%!4+390 .htemp%!16=temp%!8+108 .rtemp%!28=-1 .|6� (temp%!32)�(1<<16) � È™"Wimp_CloseWindow",,temp% .�ș"Wimp_OpenWindow",,temp% .�� .� .� ��SwapLin .��ModTitle(0) .�� (polledb%!16<>-1) � .� temp%!0=wworkh% .�$ È™"Wimp_GetWindowState",,temp% .�& slx%=polledb%!0-temp%!4+temp%!20 .�' sly%=polledb%!4-temp%!16+temp%!24 .� sic%=polledb%!16 .�& x%=slx%-iconinfo%!(sic%*32+4)-58 .�& y%=sly%-iconinfo%!(sic%*32+8)-28 / si%=�GetIO(x%,y%,sic%) / � (si%<>2) � /) eic%=iconinfo%!(sic%*32+si%*4+16) /&" elx%=iconinfo%!(eic%*32+4) /0" ely%=iconinfo%!(eic%*32+8) /:" ls%=iconinfo%!(sic%*32+28) /DT � si%=0 � ls%=(ls%�&fffffffc)�((ls%+1)�3) � ls%=(ls%�&fffffff3)�((ls%+4)�&c) /N" iconinfo%!(sic%*32+28)=ls% /X" � slx%>elx% � È” slx%,elx% /b" � sly%>ely% � È” sly%,ely% /lD È™"Wimp_ForceRedraw",wworkh%,slx%-98,sly%-58,elx%+98,ely%+58 /v � /�� /�� /� /� ��Connect /��ModTitle(0) /�� polledb%!16=-1 � /� �7 /�� /� temp%!0=wworkh% /�$ È™"Wimp_GetWindowState",,temp% /� � startlx%=-1 � /�, startlx%=polledb%!0-temp%!4+temp%!20 /�- startly%=polledb%!4-temp%!16+temp%!24 0 startic%=polledb%!16 00 x%=startlx%-iconinfo%!(startic%*32+4)-58 00 y%=startly%-iconinfo%!(startic%*32+8)-28 0 & starti%=�GetIO(x%,y%,startic%) 0* � 04* endlx%=polledb%!0-temp%!4+temp%!20 0>+ endly%=polledb%!4-temp%!16+temp%!24 0H endic%=polledb%!16 0R, x%=endlx%-iconinfo%!(endic%*32+4)-58 0\, y%=endly%-iconinfo%!(endic%*32+8)-28 0f" endi%=�GetIO(x%,y%,endic%) 0p/ � (starti%=endi%)�((starti%�endi%)=1) � 0z �7 0� � 0� � endi%=2 � 0�� � iconinfo%!(startic%*32+16+starti%*4)<>-1 � �ReportErr("Input already connected.") � iconinfo%!(startic%*32+16+starti%*4)=endic% 0� � 0�� � iconinfo%!(endic%*32+16+endi%*4)<>-1 � �ReportErr("Input already connected.") � iconinfo%!(endic%*32+16+endi%*4)=startic% 0� � 0�0 � startlx%>endlx% � È” startlx%,endlx% 0�0 � startly%>endly% � È” startly%,endly% 0�R È™"Wimp_ForceRedraw",wworkh%,startlx%-98,startly%-58,endlx%+98,endly%+58 0� �RemAllDrag 0� � 0� � 0�� 1� 1 1ݤGetIO(x%,y%,i%) 1$� x%>0 � 1. io%=2 18� 1B � y%>0 � io%=0 � io%=1 1L� 1VÈŽ iconinfo%!(i%*32) � 1` � 1:� io%=1 � io%=0 1j � 2:io%=2 1t � 5:io%=2 1~ � 7:� io%=1 � io%=0 1� � 9:io%=0 1� � 16:io%=2 1� � 18:� io%=1 � io%=0 1�� 1�=io% 1� 1���CreateObj(obj%,xc%,yc%) 1��RemAllDrag 1��ModTitle(0) 1�temp%!0=wworkh% 1�"È™"Wimp_GetWindowState",,temp% 1�x%=xc%-(temp%!4)+(temp%!20) 2 y%=yc%-(temp%!16)+(temp%!24) 2 x%=(x%�96)*96 2y%=((y%�56)-1)*56 2temp%!0=wworkh% 2(temp%!4=x% 22temp%!8=y% 2<temp%!12=x%+92 2Ftemp%!16=y%+52 2P.temp%!20=%00001000000000001010000000011010 2Z$(temp%+24)=df$ 2d"È™"Wimp_CreateIcon",,temp%�ih% 2n� ih%>=maxicons% � 2x temp%!0=wworkh% 2� temp%!4=ih% 2� È™"Wimp_DeleteIcon",,temp% 2�% �ReportErr("Too many objects.") 2�� 2� ÈŽ obj% � 2�3 � 0:l%=�Alloc(260):� l%<>-1 � �VCOsin(l%+4) 2� � 1:l%=-1 2�B � 2:l%=�Alloc(520):� l%<>-1 � �T%=l%+8�l%+516�4:!T%=-1:�T% 2� � 3:l%=-1 2� � 4:l%=-1 2�. � 5:l%=�Alloc(4):� l%<>-1 � !l%=&10000 2� � 6:l%=�Alloc(4) 2�. � 7:l%=�Alloc(4):� l%<>-1 � !l%=&10000 3 � 8:l%=�Alloc(4) 3 � 9:l%=�Alloc(4) 3 � 13:l%=-1 3" � 14:l%=�Alloc(4) 3, � 15:l%=-1 36 � 16:l%=-1 3@ � 17:l%=-1 3J � 18:l%=-1 3T � 3^ � l%=-1 � 3h temp%!0=wworkh% 3r temp%!4=ih% 3|" È™"Wimp_DeleteIcon",,temp% 3�) �ReportErr("No room for object.") 3� � 3�! iconinfo%!(ih%*32+0)=obj% 3� iconinfo%!(ih%*32+4)=x% 3� iconinfo%!(ih%*32+8)=y% 3� iconinfo%!(ih%*32+12)=l% 3� iconinfo%!(ih%*32+16)=-1 3� iconinfo%!(ih%*32+20)=-1 3� iconinfo%!(ih%*32+24)=-1 3� iconinfo%!(ih%*32+28)=15 3� � 3�� 3�6È™"Wimp_ForceRedraw",wworkh%,x%,y%,x%+46*2,y%+13*4 4� 4 4��IconBClick 4&ÈŽ polledb%!8 � 40 � 1,4:�OpenWork 4:q � 2:lastmx%=polledb%!0-64:lastmy%=96+176:lastmenu%=iconmenu%:È™"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% 4D� 4N� 4X 4b��OpenWork 4lpolledb%!0=wworkh% 4v%È™"Wimp_GetWindowState",,polledb% 4�polledb%!28=-1 4�oldworkx%=polledb%!4 4��Open_Window 4�temp%!0=wstatsh% 4�"È™"Wimp_GetWindowState",,temp% 4�temp%!28=-1 4�ș"Wimp_OpenWindow",,temp% 4�� 4� 4���User_Drag_Box 4��DragSaved 4�� 4� 5��Key_Pressed 5� polledb%!24=&1cc � 5 È™"Wimp_ProcessKey",&1cc 5 � 5* ÈŽ polledb%!0 � 54 � wconstanth%:�KeyConst 5> � winputh%:�KeyInput 5H � wmultch%:�KeyMultC 5Rf � wstatsh%:�((polledb%!4=3)�(polledb%!4=8))�(polledb%!24=13) � È™"Wimp_SetCaretPosition",-1,-1 5\ � 5f� 5p� 5z 5���KeyInput 5��ModTitle(0) 5�'� (polledb%!4=1)�(polledb%!24=13) � 5� temp%!0=winputh% 5� temp%!4=1 5�" È™"Wimp_GetIconState",,temp% 5� $(inpptr%)=$(temp%!28) 5� inpptr%!256=inptype% 5�! È™"Wimp_CloseWindow",,temp% 5�� 5�� 5� 5���KeyConst 6�ModTitle(0) 6'� (polledb%!4=0)�(polledb%!24=13) � 6 temp%!0=wconstanth% 6$ temp%!4=0 6." È™"Wimp_GetIconState",,temp% 68 v=�($(temp%!28)) 6B � �(v)>32767 � 6LD �ReportErr("Only numbers between -32767 and 32767 allowed.") 6V � 6` !constptr%=&10000*v 6j# È™"Wimp_CloseWindow",,temp% 6t constptr%=0 6~ � 6�� 6�� 6� 6���KeyMultC 6��ModTitle(0) 6�'� (polledb%!4=0)�(polledb%!24=13) � 6� temp%!0=wmultch% 6� temp%!4=0 6�" È™"Wimp_GetIconState",,temp% 6� v=�($(temp%!28)) 6� � �(v)>32767 � 6�D �ReportErr("Only numbers between -32767 and 32767 allowed.") 7 � 7 !mconstptr%=&10000*v 7# È™"Wimp_CloseWindow",,temp% 7 mconstptr%=0 7( � 72� 7<� 7F 7P��Menu_Select 7Z"È™"Wimp_GetPointerInfo",,temp% 7doldbut%=temp%!8 7n�Menu_Select2 7xB� (oldbut%�1) � È™"Wimp_CreateMenu",,lastmenu%,lastmx%,lastmy% 7�� 7� 7���Menu_Select2 7�Ȏ lastmenu% � 7� � iconmenu%:�MSelIcon 7� � workmenu%:�MSelWork 7�K � addmenu%:polledb%!4=polledb%!0:polledb%!8=-1:polledb%!0=0:�MSelWork 7�� 7�� 7� 7���MSelIcon 7�� polledb%!0=2 � �Clear2 7�� polledb%!0=3 � �CloseDown 8� 8 8��MSelWork 8"ÈŽ polledb%!0 � 8, � 0:�MenuAdd 86 � 1:�MenuSel 8@F � 2:workmenu%!(28+24*1+0)=0:workmenu%!(28+24*2+0)=1:�MenuConnect 8J � 3:�MenuCalc 8T � 4:�SwapTools 8^� 8h�AdjToolsC 8r� 8| 8���SwapTools 8�tools%=� tools% 8�� tools%=0 � 8� temp%!0=wtoolsh% 8�! È™"Wimp_CloseWindow",,temp% 8� workmenu%!(28+24*4+0)=128 8�� 8� polledb%!0=wworkh% 8�' È™"Wimp_GetWindowState",,polledb% 8� oldworkx%=polledb%!4 8� �Open_Window 8�! workmenu%!(28+24*4+0)=128+1 8�� 9� 9 9 ��MenuAdd 9&ÈŽ polledb%!4 � 90 � 0:dfunc%=0:df$="vco" 9: � 1:dfunc%=1:df$="noise" 9D � 2:dfunc%=2:df$="eg" 9N � 3:dfunc%=5:df$="const" 9X � 4:dfunc%=3:df$="filtlo" 9b � 5:dfunc%=4:df$="filthi" 9l � 6:dfunc%=6:df$="mult" 9v � 7:dfunc%=7:df$="multc" 9� � 8:dfunc%=8:df$="add" 9� � 9:dfunc%=13:df$="sub" 9�" � 10:dfunc%=17:df$="samhold" 9�! � 11:dfunc%=18:df$="nldist" 9� � 12:dfunc%=14:df$="pulse" 9� � 13:dfunc%=15:df$="delay" 9� � 14:dfunc%=9:df$="output" 9� � 15:dfunc%=16:df$="input" 9�� 9�F� polledb%!4<>-1 � workmenu%!(28+24*1+0)=0:workmenu%!(28+24*2+0)=0 9��RemAllDrag 9�� 9� : ��MenuSel :ÈŽ polledb%!4 � :D � -1:dfunc%=10:workmenu%!(28+24*1+0)=1:workmenu%!(28+24*2+0)=0 : � 0:�AllSel :* � 1:�ClearSel :4 � 2:�SwapSel :> � 3:�DeleteObjs :H � 4:�DeleteInpt :R� :\�RemAllDrag :f� :p :z ��SwapSel :��T%=0�maxicons%-1 :�- �iconinfo%!(T%*32)<>-1 � �SwapIconS(T%) :��T% :�� :� :���ClearSel :��T%=0�maxicons%-1 :�. �iconinfo%!(T%*32)<>-1 � �SetIconS(T%,0) :��T% :�� :� :���AllSel :��T%=0�maxicons%-1 ;. �iconinfo%!(T%*32)<>-1 � �SetIconS(T%,1) ;�T% ;� ;$ ;.��DeleteObjs ;8�T%=0�maxicons%-1 ;B> �(iconinfo%!(T%*32)<>-1)�(iconinfo%!(T%*32+28))�(1<<4) � ;Lf � iconinfo%!(T%*32+12)=constptr% � temp%!0=wconstanth%:È™"Wimp_CloseWindow",,temp%:constptr%=0 ;Ve � iconinfo%!(T%*32+12)=mconstptr% � temp%!0=wmultch%:È™"Wimp_CloseWindow",,temp%:mconstptr%=0 ;`] � iconinfo%!(T%*32+12)=vcoptr% � temp%!0=wvcoh%:È™"Wimp_CloseWindow",,temp%:vcoptr%=0 ;jZ � iconinfo%!(T%*32+12)=egptr% � temp%!0=wegh%:È™"Wimp_CloseWindow",,temp%:egptr%=0 ;t_ � iconinfo%!(T%*32+12)=inpptr% � temp%!0=winputh%:È™"Wimp_CloseWindow",,temp%:inpptr%=0 ;~f � iconinfo%!(T%*32+12)=nldistptr% � temp%!0=wnldisth%:È™"Wimp_CloseWindow",,temp%:nldistptr%=0 ;� temp%!0=wworkh% ;� temp%!4=T% ;�" È™"Wimp_DeleteIcon",,temp% ;�# �Free(iconinfo%!(T%*32+12)) ;� iconinfo%!(T%*32+0)=-1 ;� iconinfo%!(T%*32+4)=-1 ;� iconinfo%!(T%*32+8)=-1 ;� iconinfo%!(T%*32+12)=-1 ;� iconinfo%!(T%*32+16)=-1 ;� iconinfo%!(T%*32+20)=-1 ;� iconinfo%!(T%*32+24)=-1 ;� iconinfo%!(T%*32+28)=-1 <