Home » Archimedes archive » Zipped Apps » Speech » !Speech!/!RunImage
!Speech!/!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 » Zipped Apps » Speech |
Filename: | !Speech!/!RunImage |
Read OK: | ✔ |
File size: | 3072 bytes |
Load address: | 0000 |
Exec address: | 0000 |
File contents
10REM>:4.!Speech!.!RunImage 20 30 REM Speech! speak module (C)1991 David J. Hoskins. 40 50 60 maxbuf%=&800:poll_mask%=1:PROCvariables 70 DIM temp% 512 80 SYS &51 TO page% 90 wrpoi%=write% 100 PROCjbdp 110 PROCinitialise 120 text=END+20000:MEM=HIMEM-256 130 text=HIMEM:REPEAT F%=FNslot(page%,-1):UNTIL F%=TRUE AND MEM>text 140 150 REM *** LET'S ROLL 'EM *** 160 170 $(mainind%)="Hello. This is ""Speech!"" from Superior Software." 180 ON ERROR PROCerror(ERR,REPORT$,ERL) 190 PROCpitch:PROCspeed:PROCmouth:PROCtongue:PROCphonemes 200 PROClevel 210 220 REPEAT 230 SYS "Wimp_Poll",poll_mask%,q% TO action% 240 CASE action% OF 250 WHEN 0 : IF read%>=0 PROCdospeak 260 WHEN 1 : PROCredraw(!q%) 270 WHEN 2 : PROCopenwindow(q%) 280 WHEN 3 : PROCclosewindow(!q%) 290 WHEN 4 : PROCpointerleave(!q%) 300 WHEN 5 : PROCpointerenter(!q%) 310 WHEN 6 : PROCmouse(!q%,q%!4,q%!8,q%!12,q%!16) 320 WHEN 7 : PROCdragbox 330 WHEN 8 : PROCkey(q%) 340 WHEN 9 : PROCmenuselect(q%) 350 WHEN 17,18 : PROCreceive(q%) 360 ENDCASE 370 UNTIL quit 380 SYS "Wimp_CloseDown" 390 END 400 410 DEFPROCdragbox 420 SYS "Wimp_GetPointerInfo",,q% 430 q%!20=64:q%!32=0 440 q%!36=1:q%!40=q%!12:q%!44=q%!16 450 q%!48=!q%:q%!52=q%!4:q%!56=coords!16-MEM+4 460 q%!60=type%:$(q%+64)=FNleaf(drag$) 470 SYS "Wimp_SendMessage",17,q%+20,q%!12,q%!16 480 ENDPROC 490 500 DEFFNleaf(A$) 510 WHILE INSTR(A$,".") A$=MID$(A$,INSTR(A$,".")+1):ENDWHILE 520=A$ 530 540 DEFFNgname(A%) 550 A$="":WHILE ?A%<>0 AND ?A%<>13 A$+=CHR$?A%:A%+=1:ENDWHILE 560=A$ 570 580 DEFPROCdrag(A$,A%):type%=A%:drag$=A$ 590 !q%=handle%:SYS "Wimp_GetWindowState",,q% 600 bx%=q%!4-q%!20:by%=q%!16-q%!24:PROCgeticonstate(handle%,icon%) 610 q%!4=5:q%!8=q%!8+bx%:q%!12=q%!12+by%:q%!16=q%!16+bx%:q%!20=q%!20+by% 620 q%!24=0:q%!28=0:q%!32=&7FFFF:q%!36=&7FFFF 630 SYS "Wimp_DragBox",,q% 640 ENDPROC 650 660 670 PROCreprinticon(w_matl%,icon%) 680 MOUSE mox%,moy%,A%:UNTIL FF%>3 OR A%=0 690 MOUSE RECTANGLE 0,0,1279,1023 700 ENDPROC 710 720 DEFPROCsetmemory 730 SYS "Wimp_SlotSize",(text+textsize%+256),-1 740 SYS "Wimp_SlotSize",-1,-1 TO MEM 750 ENDPROC 760 770 DEFPROCvariables 780 790 DIM q% &700, block% 32, curbuf% maxbuf%, menus% &300, write% 512, err% 108 800 pitch%=128:speed%=128:mouth%=128:tongue%=128:level%=128:textsize%=0 810 pho%=0:w_main%=-1:started%=TRUE 820 quit=FALSE:read%=-1:open=FALSE 830 ENDPROC 840 850 DEF FNpar(sep$) 860 IF LEFT$(L$,1)="." L$=RIGHT$(L$,LENL$-1) 870 i1%=i%+1:i%=INSTR(L$+sep$,sep$,i1%) 880=MID$(L$,i1%,i%-i1%) 890 900 910 DEFPROCclosewindow(handle%) 920 !q%=handle%:SYS "Wimp_CloseWindow",,q% 930 IF handle%=w_main% open=FALSE 940 ENDPROC 950 960 DEFPROCopenwindow(q%) 970 SYS "Wimp_OpenWindow",,q% 980 ENDPROC 990 1000 DEFPROCredraw(handle%) 1010 !q%=handle% 1020 SYS "Wimp_RedrawWindow",,q% TO more% 1030 PROCinfo(q%,bx%,by%) 1040 WHILE more% 1050 SYS "Wimp_GetRectangle",,q% TO more% 1060 ENDWHILE 1070 ENDPROC 1080 1090 DEFPROCreprinticon(handle%,icon%) 1100 PROCgeticonstate(handle%,icon%) 1110 !q%=handle%:q%!4=ix0%:q%!8=iy0%:q%!12=ix1%:q%!16=iy1% 1120 SYS "Wimp_UpdateWindow",,q% TO more% 1130 PROCinfo(q%,bx%,by%) 1140 WHILE more% 1150 SYS "Wimp_GetRectangle",,q% TO more%:ENDWHILE 1160 ENDPROC 1170 1180 1190 DEF PROCreceive(b) 1200 CASE b!16 OF 1210 WHEN 0:quit=TRUE 1220 WHEN 1:PROCdatasave 1230 WHEN 2:PROCsaveack 1240 WHEN 3,5:IF b!4<>ourhandle% PROCdataload(q%) 1250 ENDCASE 1260 ENDPROC 1270 1280 1290 DEF FNwindow(a$) 1300 LOCAL c% 1310 SYS "Wimp_LoadTemplate",,q%,curbuf%,endbuf%,-1,a$,0 TO ,,curbuf%,,,,c% 1320 q%!64=sprites% 1330 SYS "Wimp_CreateWindow",,q% TO c% 1340=c% 1350 1360 DEFPROCerror(E%,E$,L%) 1370 VDU 6 1380 ON ERROR LOCAL GOTO 1400 1390 PROCstoptalk:VDU 7 1400 SYS "Wimp_CreateMenu",,-1 1410 IF E%<&804C00 OR E%>&804CFF E$=E$+" (Internal Error "+STR$L%+" )" 1420 A%=FNcheckOK(E$,1) 1430 IF E%>&804C00 AND E%<&804D00 ENDPROC 1440 SYS "Wimp_CloseDown" 1450 END 1460 1470 DEFPROCwigs(A%,A$) 1480 $A%=A$:?(A%+LENA$+1)=0:ENDPROC 1490 1500 DEFFNcheckOK(E$,E%) 1510 !err%=E%:$(err%+4)=LEFT$(E$,100)+CHR$0 1520 SYS "Wimp_ReportError", err%, E%, "Speech!" TO ,E% 1530=E%=1 : REM TRUE if OK 1540 1550 DEFPROCinfo(p%,RETURN bx%,RETURN by%) 1560 bx%=p%!4-p%!20:by%=p%!16-p%!24 1570 ENDPROC 1580 1590 DEF PROCupdate(handle%,ux0%,uy0%,ux1%,uy1%) 1600 !q%=handle%:q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1% 1610 SYS "Wimp_UpdateWindow",,q% TO more% 1620 ENDPROC 1630 1640 DEFPROCgeticonstate(handle%,icon%) 1650 !q%=handle%:q%!4=icon%:SYS "Wimp_GetIconState",,q% 1660 ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20 1670 ENDPROC 1680 1690 DEFPROCgetwindinfo(handle%) 1700 !q%=handle%:SYS "Wimp_GetWindowInfo",,q% 1710 scx%=q%!20:scy%=q%!24 1720 wx0%=q%!4:wy0%=q%!8:wx1%=q%!12:wy1%=q%!16:bx%=wx0%-scx%:by%=wy1%-scy% 1730 ENDPROC 1740 1750 DEFPROCseticonstate(handle%,icon%,eor%,mask%) 1760 !q%=handle%:q%!4=icon%:q%!8=eor%:q%!12=mask%:SYS "Wimp_SetIconState",,q% 1770 ENDPROC 1780 1790 DEFPROCpointerenter(handle%) 1800 ENDPROC 1810 1820 DEFPROCpointerleave(handle%) 1830 ENDPROC 1840 1850 DEFPROCinitialise 1860 PROCjbdp2:PROCjbdp3 1870 endbuf%=curbuf%+maxbuf%:startbuf%=curbuf% 1880 $block%="TASK" 1890 SYS "Wimp_Initialise",200,!block%,"Speech!" TO ,ourhandle% 1900 SYS "OS_File",5,"<Speech!$Dir>.Sprites" TO type%,,,,areasize% 1910 IF type%<>1 THEN ERROR 1,"Can't find <Speech!$Dir>.Sprites" 1920 areasize%+=256:DIM sprites% areasize%:sprites%!0=areasize% 1930 SYS "OS_SpriteOp",&10A,sprites%,"<Speech!$Dir>.Sprites" 1940 SYS "Wimp_OpenTemplate",,"<speech!$dir>.Templates" 1950 infoind%=curbuf%:w_info% = FNwindow("progInfo") 1960 mainind%=curbuf%:w_main% = FNwindow("Main") 1970 SYS "Wimp_CloseTemplate" 1980 !q%=-1:q%!20=&3102:q%!4=0:q%!8=0:q%!12=108:q%!16=112 1990 $block%="!Speech!":q%!24=block%:q%!28=sprites%:q%!32=LEN$block%+1 2000 SYS "Wimp_CreateIcon",,q% TO initicon% 2010 PROCcreatemenus 2020 $(infoind%+19+20+20+25)="1.3" 2030 ENDPROC 2040 2050 DEFPROCmouse(mox%,moy%,A%,handle%,icon%) 2060 butt%=A% 2070 CASE butt% OF 2080 WHEN &04,&01,&5 2090 CASE handle% OF 2100 WHEN -2:REM Iconbar 2110 IF icon%=initicon% !q%=w_main%:SYS "Wimp_GetWindowState",,q%:q%!28=-1:open=TRUE:PROCopenwindow(q%) 2120 WHEN w_main%:PROChitmain 2130 ENDCASE 2140 ENDCASE 2150 2160 CASE butt% OF 2170 WHEN &02 2180 CASE handle% OF 2190 WHEN -2:IF icon%=initicon% PROCdomenu(m_quit%,mox%-64,272) 2200 ENDCASE 2210 ENDCASE 2220 ENDPROC 2230 2240 DEFPROCcreatemenus 2250 2260 RESTORE 2290:wid%=188 2270 mpoi%=menus% 2280 m_quit%=FNmakemenu 2290 DATA "Speech!","Stop speech,Info>w_info%,Quit+Kill,Quit" 2300 ENDPROC 2310 DEFPROCkey(b) 2320 A%=b!24 2330 CASE A% OF 2340 WHEN &1B:REMERROR 17,"Escape" 2350 WHEN 13:PROCsaystring 2360 OTHERWISE:SYS "Wimp_ProcessKey",A% 2370 ENDCASE 2380 ENDPROC 2390 2400 ENDPROC 2410 2420 2430 2440 DEFFNmakemenu 2450 2460 LOCAL T$ 2470 add%=mpoi%:i%=0 2480 READ T$:$mpoi%=T$:mpoi%!20=44:mpoi%!12=&000D0207:mpoi%!16=wid%:mpoi%!24=0 2490 mpoi%+=28:READ L$:REPEAT I$=FNpar(","):PROCitem(I$):UNTIL I$="" 2500=add% 2510 2520 DEFPROCitem(I$) 2530 IF I$="" mpoi%!-24=(mpoi%!-24)OR&80:ENDPROC 2540 F%=0:D%=0 2550 IF LEFT$(I$,1)="#" F%=1<<22:I$=MID$(I$,2,255) 2560 IF LEFT$(I$,1)="/" D%=D%+1:I$=MID$(I$,2,255) 2570 IF LEFT$(I$,1)="_" D%=D%+2:I$=MID$(I$,2,255) 2580 IF LEFT$(I$,1)="@" D%=D%+4:I$=MID$(I$,2,255):F%+=1<<8:mpoi%!12=wrpoi%:mpoi%!16=0:mpoi%!20=128 2590 S%=INSTR(I$,">",0):IF S%>0 T%=S%:S%=EVAL(MID$(I$,S%+1,255)):I$=LEFT$(I$,T%-1) 2600 !mpoi%=D%:mpoi%!4=S%:mpoi%!8=&07000001+F% 2610 IF NOT D%AND4 $(mpoi%+12)=I$ ELSE $wrpoi%=I$:wrpoi%+=LENI$+8 2620 mpoi%+=24:IF mpoi%>menus%+&C00 ERROR 1,"Too many menus" 2630 ENDPROC 2640 2650 DEFPROCtick(H%,M%,T%) 2660 IF T%=0 H%!(28+24*M%)=H%!(28+24*M%) AND 254 2670 IF T%=1 OR T%=-1 H%!(28+24*M%)=H%!(28+24*M%)OR 1 2680 ENDPROC 2690 2700 DEFPROCshade(H%,M%,T%) 2710 IF T%=0 H%!(28+24*M%+8)=H%!(28+24*M%+8) AND NOT(1<<22) 2720 IF T%=1 H%!(28+24*M%+8)=H%!(28+24*M%+8) OR (1<<22) 2730 ENDPROC 2740 DEFPROCjbdp 2750 j$="adfs::0.!Sp_Spell.":b$="code" 2760 DIM dummycode% 500 2770 ENDPROC 2790 2800 DEFPROCdomenu(A%,MX%,MY%) 2810 VDU 23,140,112,68,78,68,68,68,115,0,23,141,0,4,116,69,68,68,68,0 2820 SYS "Wimp_CreateMenu",,A%,MX%,MY%:currmenu%=A%:curmx%=MX%:curmy%=MY% 2830 ENDPROC 2840 2850 DEFPROCmenuselect(b) 2860 redo%=0 2870 SYS "Wimp_DecodeMenu",,currmenu%,b,temp% TO ,,,A%:L$=$A% 2880 i%=0:I$=FNpar(".") 2890 CASE I$ OF 2900 WHEN "Quit":*RESET 2910 *SPEAKW SPEE2CH KWIH6T. 2920 quit=-1:PROCstoptalk 2930 WHEN "Stop speech":*RESET 2940 *SPEAKW SPEE6CH STO5PT. 2950 PROCstoptalk 2960 WHEN "Quit+Kill":*RESET 2970 *SPEAKW SPEE6CH KWIHT AE3ND KIH5L. 2980 quit=-1:*RMKILL Speech! 2990 ENDCASE 3000 SYS "Wimp_GetPointerInfo",,q%:IF (q%!8)AND&1 OR redo%=1 PROCdomenu(currmenu%,MX%,MY%) 3010 ENDPROC 3020 3030 3040 DEFPROCsaveack 3050 PROCsave(FNgname(q%+44)) 3060 q%!12=q%!8:q%!16=3:!q%=64 3070 SYS "Wimp_SendMessage",17,q%,q%!20,q%!24 3080 ENDPROC 3090 3100 DEFPROCdatasave 3110 IF q%!4=ourhandle% ENDPROC 3120 CASE q%!40 OF 3130 WHEN &FFF 3140 SYS "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 TO ,,A%:IF A%=0 ERROR ero%,"<Wimp$Scrap> not defined" 3150 scrap$=FNgname(q%+44) 3160 $(q%+44)="<Wimp$Scrap>"+CHR$0:!q%=(48+LEN"<Wimp$Scrap>")ANDNOT3 3170 q%!12=q%!8:q%!16=2:q%!36=-1:SYS "Wimp_SendMessage",17,q%,q%!4 3180 scrap%=q%!8 3190 ENDCASE 3200 ENDPROC 3210 3220 DEFPROCdataload(q%) 3230 ref%=q%!12:IF q%!16=5 ENDPROC 3240 Vnam$=FNgname(q%+44):Wind%=q%!20 3250 GG%=q%!40 3260 CASE GG% OF 3270 WHEN &FFF: PROCload(Vnam$) 3280 ENDCASE 3290 ENDPROC 3300 3310 DEFPROCload(A$) 3320 SYS "OS_File",5,A$ TO RR0%,,RR2%,RR3%,RR4% 3330 IF RR0%<>1 ENDPROC 3340 F%=TRUE:IF (MEM-256)-text<=RR4% THEN 3350 REPEAT F%=FNslot(page%,-1):UNTIL F%=FALSE OR (MEM-256)-text>RR4% 3360 ENDIF 3370 IF F%=TRUE THEN 3380 SYS "OS_File",&FF,A$,text 3390 PROCackload(q%) 3400 textsize%=RR4%:poll_mask%=0:read%=0 3410 PROCsetmemory 3420 ENDIF 3430 ENDPROC 3440 3450 DEFPROCackload(q%) 3460 q%!12=q%!8:q%!16=4:!q%=64 3470 SYS "Wimp_SendMessage",17,q%,q%!4 3480 ENDPROC 3490 3500 3510 DEFPROCjbdp2 3511 ENDPROC 3520 SYS 8,13,b$,,,j$ TO R0% 3530 IF R0%=0 THEN END 3540 ENDPROC 3550 3560 3570 3580 DEFFNslot(K%,M%) 3590 LOCAL T%,S%,M%,F% 3600 SYS "Wimp_SlotSize",-1,-1 TO T%,,S% 3610 IF S%>=K% THEN 3620 SYS "Wimp_SlotSize",T%+K%,-1 3630 F%=TRUE 3640 ELSE 3650 PROCsetmemory 3660 $temp%=" Out of memory":SYS "Wimp_ReportError",temp%,1,"Speech!" 3670 F%=FALSE 3680 ENDIF 3690 SYS "Wimp_SlotSize",-1,-1 TO MEM:MEM=MEM-256 3700=F% 3710 DEFPROCjbdp3 3711 ENDPROC 3720 LOCAL flags,dummy% 3730 dummy%=(79*2)*&1400 3740 SYS &60240,,0,dummy%,0,1 TO ;flags 3750 IF (NOT -(flags AND 1)) THEN END 3760 ENDPROC 3770 3780 DEFPROCdocommand 3790 E$=MID$(say$,2,LENsay$-2) 3800 E%=LENE$+1:REPEAT E%-=1:N%=ASCMID$(E$,E%,1):UNTIL N%<48 OR N%>57 3810 IF E%=LENE$ N%=0 ELSE N%=EVAL(MID$(E$,E%+1,LENE$)) 3820 E$=LEFT$(E$,E%) 3830 N$="":FORT%=1 TO LENE$:N$=N$+CHR$(ASCMID$(E$,T%,1)OR32):NEXT:N$=N$+" " 3840 N$=LEFT$(N$,INSTR(N$," ",0)-1) 3850 CASE N$ OF 3860 WHEN "pitch":IF N%>=0 AND N%<=200 pitch%=N%:PROCpitch 3870 WHEN "speed":IF N%>=0 AND N%<=200 speed%=N%:PROCspeed 3880 WHEN "tongue":IF N%>=0 AND N%<=255 tongue%=N%:PROCtongue 3890 WHEN "mouth":IF N%>=0 AND N%<=255 mouth%=N%:PROCmouth 3900 WHEN "phonemes":pho%=1:PROCphonemes 3910 WHEN "words":pho%=0:PROCphonemes 3920 WHEN "level":IF N%>=0 AND N%<=128 level%=N%:PROClevel 3930 WHEN "reset":pitch%=128:PROCpitch:speed%=128:PROCspeed:tongue%=128:PROCtongue:mouth%=128:PROCmouth:level%=128:PROClevel 3940 OTHERWISE:F%=FALSE 3950 ENDCASE 3960 ENDPROC 3970 3980 DEFPROCdospeak 3990 IF read%=-1 ENDPROC 4000 IF started%=TRUE AND read%<>textsize% THEN 4010 A$="":D%=0:R%=0:F%=0:REPEAT 4020 E%=?(text+read%):IF E%=ASC"""" E%=32 4030 IF E%=91 AND R%=0 F%=TRUE 4040 E$=CHR$E%:IF E%<33 AND D%=TRUE E$=" ":A$+=E$ ELSE IF E%>32 A$+=E$:D%=TRUE 4050 read%+=1:R%+=1:IF R%>200 AND E$=" " E%=0 4060 UNTIL E$="." OR E%=0 OR E%=10 OR E$="?" OR E$="!" OR E$="]" OR (E$="[" AND F%=FALSE) OR read%=textsize% 4070 IF E$="[" AND F%=FALSE read%-=1:A$=LEFT$(A$,LENA$-1) 4080 started%=FALSE:say$=A$ 4090 ENDIF 4100 SYS "Spch_Ready?" TO A%:IF A%=FALSE ENDPROC 4110 IF started%=TRUE AND read%=textsize% poll_mask%=1:read%=-1:SYS "Spch_Oldchannel":ENDPROC 4120 started%=TRUE 4130 IF F%=TRUE PROCdocommand 4140 IF D%=TRUE AND F%=FALSE $(mainind%)=say$:PROCreprinticon(w_main%,0):PROCsaystring 4150 ENDPROC 4160 4170 DEFPROCsaystring 4180 4190 A$=$(mainind%)+CHR$13 4200 ON ERROR LOCAL PROCwrongsyntax:ENDPROC 4210 SYS "Spch_Pitch",pitch%:SYS "Spch_Speed",speed% 4220 SYS "Spch_Mouth",mouth%:SYS "Spch_Tongue",tongue%:SYS "Spch_Level",level% 4230 VDU 21 4240 CASE pho% OF 4250 WHEN 0:SYS "Spch_Say",A$ 4260 WHEN 1:SYS "Spch_Speak",A$ 4270 ENDCASE 4280 VDU 6 4290 ENDPROC 4300 DEFPROCwrongsyntax 4310 VDU 6 4320 IF ERR<&804C00 OR ERR>&804CFF PROCerror(ERR,REPORT$,ERL):ENDPROC 4330 SYS "Spch_Oldchannel" 4340 IF open=TRUE SYS "Spch_Error" TO A%:SYS "Wimp_SetCaretPosition",w_main%,0,0,0,-1,A% 4350 IF read%<>-1 poll_mask%=1:read%=-1 4360 E$=REPORT$:A%=FNcheckOK(E$,1) 4370 ENDPROC 4380 DEFPROCstoptalk 4390 poll_mask%=1:read%=-1:PROCwipe:started%=TRUE 4400 SYS "Spch_Oldchannel" 4410 ENDPROC 4420 4430 DEFPROCwipe 4440 IF w_main%<>-1 $(mainind%)="":PROCreprinticon(w_main%,0) 4450 IF open=TRUE SYS "Wimp_SetCaretPosition",w_main%,0,0,0,-1,-1 4460 ENDPROC 4470 4480 DEFPROCpitch:$(mainind%+255)=STR$pitch%:PROCreprinticon(w_main%,5):ENDPROC 4490 DEFPROCspeed:$(mainind%+255+4)=STR$speed%:PROCreprinticon(w_main%,6):ENDPROC 4500 DEFPROCmouth:$(mainind%+255+12)=STR$mouth%:PROCreprinticon(w_main%,8):ENDPROC 4510 DEFPROCtongue:$(mainind%+255+8)=STR$tongue%:PROCreprinticon(w_main%,7):ENDPROC 4520 DEFPROCphonemes 4530 IF pho%=1 $(mainind%+255+16)="Phonemes" 4540 IF pho%=0 $(mainind%+255+16)="Words" 4550 PROCreprinticon(w_main%,17):ENDPROC 4560 4570 DEFPROClevel:$(mainind%+255+28)=STR$level%:PROCreprinticon(w_main%,21):SYS "Spch_Level",level%:ENDPROC 4580 4590 DEFPROChitmain 4600 IF butt%=1 THEN 4610 IF (icon%=9 OR icon%=11 OR icon%=15 OR icon%=13 OR icon%=22) icon%+=1:GOTO4630 4620 IF (icon%=10 OR icon%=12 OR icon%=16 OR icon%=14 OR icon%=23) icon%-=1 4630 ENDIF 4640 CASE icon% OF 4650 WHEN 1:pitch%=128:PROCpitch 4660 WHEN 2:speed%=128:PROCspeed 4670 WHEN 4:tongue%=128:PROCtongue 4680 WHEN 3:mouth%=128:PROCmouth 4690 WHEN 9:IF pitch%<200 pitch%+=1:PROCpitch 4700 WHEN 10:IF pitch%>0 pitch%-=1:PROCpitch 4710 WHEN 11:IF speed%<200 speed%+=1:PROCspeed 4720 WHEN 12:IF speed%>0 speed%-=1:PROCspeed 4730 WHEN 13:IF tongue%<255 tongue%+=1:PROCtongue 4740 WHEN 14:IF tongue%>0 tongue%-=1:PROCtongue 4750 WHEN 15:IF mouth%<255 mouth%+=1:PROCmouth 4760 WHEN 16:IF mouth%>0 mouth%-=1:PROCmouth 4770 WHEN 17:pho%=pho%EOR1:PROCphonemes 4780 WHEN 19:VDU 7:PROCwipe 4790 WHEN 18:PROCsaystring 4800 WHEN 20:level%=128:PROClevel 4810 WHEN 22:IF level%<128 level%+=1:PROClevel 4820 WHEN 23:IF level%>0 level%-=1:PROClevel 4830 ENDCASE 4840 YYY%=icon% 4850 ENDPROC
�>:4.!Speech!.!RunImage 5 � Speech! speak module (C)1991 David J. Hoskins. ( 2 <) maxbuf%=&800:poll_mask%=1:�variables F � temp% 512 P ș &51 � page% Z wrpoi%=write% d �jbdp n �initialise x text=�+20000:MEM=�-256 �2 text=�:� F%=�slot(page%,-1):� F%=� � MEM>text � � � *** LET'S ROLL 'EM *** � �E $(mainind%)="Hello. This is ""Speech!"" from Superior Software." � � � �error(�,�$,�) �+ �pitch:�speed:�mouth:�tongue:�phonemes � �level � � � �+ ș "Wimp_Poll",poll_mask%,q% � action% � Ȏ action% � �" � 0 : � read%>=0 �dospeak � 1 : �redraw(!q%) � 2 : �openwindow(q%) � 3 : �closewindow(!q%) "! � 4 : �pointerleave(!q%) ,! � 5 : �pointerenter(!q%) 60 � 6 : �mouse(!q%,q%!4,q%!8,q%!12,q%!16) @ � 7 : �dragbox J � 8 : �key(q%) T � 9 : �menuselect(q%) ^ � 17,18 : �receive(q%) h � r � quit | ș "Wimp_CloseDown" � � � � ��dragbox �! ș "Wimp_GetPointerInfo",,q% � q%!20=64:q%!32=0 �$ q%!36=1:q%!40=q%!12:q%!44=q%!16 �/ q%!48=!q%:q%!52=q%!4:q%!56=coords!16-MEM+4 �& q%!60=type%:$(q%+64)=�leaf(drag$) �/ ș "Wimp_SendMessage",17,q%+20,q%!12,q%!16 � � � � ݤleaf(A$) �% ȕ �A$,".") A$=�A$,�A$,".")+1):� =A$ ݤgname(A%) &/ A$="":ȕ ?A%<>0 � ?A%<>13 A$+=�?A%:A%+=1:� 0=A$ : D$ ��drag(A$,A%):type%=A%:drag$=A$ N- !q%=handle%:ș "Wimp_GetWindowState",,q% X@ bx%=q%!4-q%!20:by%=q%!16-q%!24:�geticonstate(handle%,icon%) bI q%!4=5:q%!8=q%!8+bx%:q%!12=q%!12+by%:q%!16=q%!16+bx%:q%!20=q%!20+by% l. q%!24=0:q%!28=0:q%!32=&7FFFF:q%!36=&7FFFF v ș "Wimp_DragBox",,q% � � � � � �reprinticon(w_matl%,icon%) �# ȗ mox%,moy%,A%:� FF%>3 � A%=0 � ȗ ȓ 0,0,1279,1023 � � � � ��setmemory �/ ș "Wimp_SlotSize",(text+textsize%+256),-1 �# ș "Wimp_SlotSize",-1,-1 � MEM � � � ��variables M � q% &700, block% 32, curbuf% maxbuf%, menus% &300, write% 512, err% 108 H pitch%=128:speed%=128:mouth%=128:tongue%=128:level%=128:textsize%=0 *! pho%=0:w_main%=-1:started%=� 4 quit=�:read%=-1:open=� > � H R � �par(sep$) \ � �L$,1)="." L$=�L$,�L$-1) f# i1%=i%+1:i%=�L$+sep$,sep$,i1%) p=�L$,i1%,i%-i1%) z � � ��closewindow(handle%) �* !q%=handle%:ș "Wimp_CloseWindow",,q% � � handle%=w_main% open=� � � � � ��openwindow(q%) � ș "Wimp_OpenWindow",,q% � � � � ��redraw(handle%) � !q%=handle% �' ș "Wimp_RedrawWindow",,q% � more% �info(q%,bx%,by%) ȕ more% ' ș "Wimp_GetRectangle",,q% � more% $ � . � 8 B! ��reprinticon(handle%,icon%) L! �geticonstate(handle%,icon%) V: !q%=handle%:q%!4=ix0%:q%!8=iy0%:q%!12=ix1%:q%!16=iy1% `' ș "Wimp_UpdateWindow",,q% � more% j �info(q%,bx%,by%) t ȕ more% ~) ș "Wimp_GetRectangle",,q% � more%:� � � � � � � �receive(b) � Ȏ b!16 � � � 0:quit=� � � 1:�datasave � � 2:�saveack �* � 3,5:� b!4<>ourhandle% �dataload(q%) � � � � � � �window(a$) � c% I ș "Wimp_LoadTemplate",,q%,curbuf%,endbuf%,-1,a$,0 � ,,curbuf%,,,,c% ( q%!64=sprites% 2$ ș "Wimp_CreateWindow",,q% � c% <=c% F P ��error(E%,E$,L%) Z � 6 d � � � � �DxE n �stoptalk:� 7 x ș "Wimp_CreateMenu",,-1 �A � E%<&804C00 � E%>&804CFF E$=E$+" (Internal Error "+�L%+" )" � A%=�checkOK(E$,1) � � E%>&804C00 � E%<&804D00 � � ș "Wimp_CloseDown" � � � � ��wigs(A%,A$) � $A%=A$:?(A%+�A$+1)=0:� � � ݤcheckOK(E$,E%) �# !err%=E%:$(err%+4)=�E$,100)+�0 �5 ș "Wimp_ReportError", err%, E%, "Speech!" � ,E% �=E%=1 : � TRUE if OK ��info(p%,� bx%,� by%) # bx%=p%!4-p%!20:by%=p%!16-p%!24 " � , 6+ � �update(handle%,ux0%,uy0%,ux1%,uy1%) @: !q%=handle%:q%!4=ux0%:q%!8=uy0%:q%!12=ux1%:q%!16=uy1% J' ș "Wimp_UpdateWindow",,q% � more% T � ^ h" ��geticonstate(handle%,icon%) r6 !q%=handle%:q%!4=icon%:ș "Wimp_GetIconState",,q% |/ ix0%=q%!8:iy0%=q%!12:ix1%=q%!16:iy1%=q%!20 � � � � ��getwindinfo(handle%) �, !q%=handle%:ș "Wimp_GetWindowInfo",,q% � scx%=q%!20:scy%=q%!24 �J wx0%=q%!4:wy0%=q%!8:wx1%=q%!12:wy1%=q%!16:bx%=wx0%-scx%:by%=wy1%-scy% � � � �- ��seticonstate(handle%,icon%,eor%,mask%) �L !q%=handle%:q%!4=icon%:q%!8=eor%:q%!12=mask%:ș "Wimp_SetIconState",,q% � � � � ��pointerenter(handle%) � ��pointerleave(handle%) & � 0 : ��initialise D �jbdp2:�jbdp3 N. endbuf%=curbuf%+maxbuf%:startbuf%=curbuf% X $block%="TASK" b= ș "Wimp_Initialise",200,!block%,"Speech!" � ,ourhandle% l@ ș "OS_File",5,"<Speech!$Dir>.Sprites" � type%,,,,areasize% v8 � type%<>1 � � 1,"Can't find <Speech!$Dir>.Sprites" �= areasize%+=256:� sprites% areasize%:sprites%!0=areasize% �; ș "OS_SpriteOp",&10A,sprites%,"<Speech!$Dir>.Sprites" �6 ș "Wimp_OpenTemplate",,"<speech!$dir>.Templates" �3 infoind%=curbuf%:w_info% = �window("progInfo") �/ mainind%=curbuf%:w_main% = �window("Main") � ș "Wimp_CloseTemplate" �9 !q%=-1:q%!20=&3102:q%!4=0:q%!8=0:q%!12=108:q%!16=112 �D $block%="!Speech!":q%!24=block%:q%!28=sprites%:q%!32=�$block%+1 �) ș "Wimp_CreateIcon",,q% � initicon% � �createmenus �" $(infoind%+19+20+20+25)="1.3" � � � ( ��mouse(mox%,moy%,A%,handle%,icon%) butt%=A% Ȏ butt% � � &04,&01,&5 * Ȏ handle% � 4 � -2:� Iconbar >_ � icon%=initicon% !q%=w_main%:ș "Wimp_GetWindowState",,q%:q%!28=-1:open=�:�openwindow(q%) H � w_main%:�hitmain R � \ � f p Ȏ butt% � z � &02 � Ȏ handle% � �8 � -2:� icon%=initicon% �domenu(m_quit%,mox%-64,272) � � � � � � � � ��createmenus � � � �drH:wid%=188 � mpoi%=menus% � m_quit%=�makemenu �: � "Speech!","Stop speech,Info>w_info%,Quit+Kill,Quit" � � ��key(b) A%=b!24 Ȏ A% � $ � &1B:�ERROR 17,"Escape" . � 13:�saystring 8 :ș "Wimp_ProcessKey",A% B � L � V ` � j t ~ � ݤmakemenu � � � T$ � add%=mpoi%:i%=0 �K � T$:$mpoi%=T$:mpoi%!20=44:mpoi%!12=&000D0207:mpoi%!16=wid%:mpoi%!24=0 �4 mpoi%+=28:� L$:� I$=�par(","):�item(I$):� I$="" � =add% � � ��item(I$) �( � I$="" mpoi%!-24=(mpoi%!-24)�&80:� � F%=0:D%=0 �( � �I$,1)="#" F%=1<<22:I$=�I$,2,255) ' � �I$,1)="/" D%=D%+1:I$=�I$,2,255) ' � �I$,1)="_" D%=D%+2:I$=�I$,2,255) X � �I$,1)="@" D%=D%+4:I$=�I$,2,255):F%+=1<<8:mpoi%!12=wrpoi%:mpoi%!16=0:mpoi%!20=128 @ S%=�I$,">",0):� S%>0 T%=S%:S%=�(�I$,S%+1,255)):I$=�I$,T%-1) (. !mpoi%=D%:mpoi%!4=S%:mpoi%!8=&07000001+F% 27 � � D%�4 $(mpoi%+12)=I$ � $wrpoi%=I$:wrpoi%+=�I$+8 <7 mpoi%+=24:� mpoi%>menus%+&C00 � 1,"Too many menus" F � P Z ��tick(H%,M%,T%) d- � T%=0 H%!(28+24*M%)=H%!(28+24*M%) � 254 n2 � T%=1 � T%=-1 H%!(28+24*M%)=H%!(28+24*M%)� 1 x � � � ��shade(H%,M%,T%) �6 � T%=0 H%!(28+24*M%+8)=H%!(28+24*M%+8) � �(1<<22) �5 � T%=1 H%!(28+24*M%+8)=H%!(28+24*M%+8) � (1<<22) � � � ��jbdp �& j$="adfs::0.!Sp_Spell.":b$="code" � � dummycode% 500 � � � � ��domenu(A%,MX%,MY%) �C � 23,140,112,68,78,68,68,68,115,0,23,141,0,4,116,69,68,68,68,0 H ș "Wimp_CreateMenu",,A%,MX%,MY%:currmenu%=A%:curmx%=MX%:curmy%=MY% � " ��menuselect(b) , redo%=0 6; ș "Wimp_DecodeMenu",,currmenu%,b,temp% � ,,,A%:L$=$A% @ i%=0:I$=�par(".") J Ȏ I$ � T � "Quit":*RESET ^ *SPEAKW SPEE2CH KWIH6T. h quit=-1:�stoptalk r � "Stop speech":*RESET | *SPEAKW SPEE6CH STO5PT. � �stoptalk � � "Quit+Kill":*RESET �' *SPEAKW SPEE6CH KWIHT AE3ND KIH5L. � quit=-1:*RMKILL Speech! � � �R ș "Wimp_GetPointerInfo",,q%:� (q%!8)�&1 � redo%=1 �domenu(currmenu%,MX%,MY%) � � � � � ��saveack � �save(�gname(q%+44)) � q%!12=q%!8:q%!16=3:!q%=64 �, ș "Wimp_SendMessage",17,q%,q%!20,q%!24 � ��datasave & � q%!4=ourhandle% � 0 Ȏ q%!40 � : � &FFF D] ș "XOS_ReadVarVal","Wimp$Scrap",,-1,0,3 � ,,A%:� A%=0 � ero%,"<Wimp$Scrap> not defined" N scrap$=�gname(q%+44) X; $(q%+44)="<Wimp$Scrap>"+�0:!q%=(48+�"<Wimp$Scrap>")��3 bA q%!12=q%!8:q%!16=2:q%!36=-1:ș "Wimp_SendMessage",17,q%,q%!4 l scrap%=q%!8 v � � � � � ��dataload(q%) � ref%=q%!12:� q%!16=5 � �$ Vnam$=�gname(q%+44):Wind%=q%!20 � GG%=q%!40 � Ȏ GG% � � � &FFF: �load(Vnam$) � � � � � � ��load(A$) �- ș "OS_File",5,A$ � RR0%,,RR2%,RR3%,RR4% � RR0%<>1 � " F%=�:� (MEM-256)-text<=RR4% � 6 � F%=�slot(page%,-1):� F%=� � (MEM-256)-text>RR4% � * � F%=� � 4 ș "OS_File",&FF,A$,text > �ackload(q%) H( textsize%=RR4%:poll_mask%=0:read%=0 R �setmemory \ � f � p z ��ackload(q%) � q%!12=q%!8:q%!16=4:!q%=64 �% ș "Wimp_SendMessage",17,q%,q%!4 � � � � � ��jbdp2 � � � ș 8,13,b$,,,j$ � R0% � � R0%=0 � � � � � � � � ݤslot(K%,M%) � T%,S%,M%,F% & ș "Wimp_SlotSize",-1,-1 � T%,,S% � S%>=K% � $ ș "Wimp_SlotSize",T%+K%,-1 . F%=� 8 � B �setmemory LH $temp%=" Out of memory":ș "Wimp_ReportError",temp%,1,"Speech!" V F%=� ` � j/ ș "Wimp_SlotSize",-1,-1 � MEM:MEM=MEM-256 t=F% ~ ��jbdp3 � � � flags,dummy% � dummy%=(79*2)*&1400 �% ș &60240,,0,dummy%,0,1 � ;flags � � (� -(flags � 1)) � � � � � � ��docommand � E$=�say$,2,�say$-2) �3 E%=�E$+1:� E%-=1:N%=��E$,E%,1):� N%<48 � N%>57 �( � E%=�E$ N%=0 � N%=�(�E$,E%+1,�E$)) � E$=�E$,E%) �9 N$="":�T%=1 � �E$:N$=N$+�(��E$,T%,1)�32):�:N$=N$+" " N$=�N$,�N$," ",0)-1) Ȏ N$ � 1 � "pitch":� N%>=0 � N%<=200 pitch%=N%:�pitch 1 � "speed":� N%>=0 � N%<=200 speed%=N%:�speed (4 � "tongue":� N%>=0 � N%<=255 tongue%=N%:�tongue 21 � "mouth":� N%>=0 � N%<=255 mouth%=N%:�mouth <" � "phonemes":pho%=1:�phonemes F � "words":pho%=0:�phonemes P1 � "level":� N%>=0 � N%<=128 level%=N%:�level Zj � "reset":pitch%=128:�pitch:speed%=128:�speed:tongue%=128:�tongue:mouth%=128:�mouth:level%=128:�level d :F%=� n � x � � � ��dospeak � � read%=-1 � �& � started%=� � read%<>textsize% � � A$="":D%=0:R%=0:F%=0:� �& E%=?(text+read%):� E%=�"""" E%=32 � � E%=91 � R%=0 F%=� �> E$=�E%:� E%<33 � D%=� E$=" ":A$+=E$ � � E%>32 A$+=E$:D%=� �* read%+=1:R%+=1:� R%>200 � E$=" " E%=0 �[ � E$="." � E%=0 � E%=10 � E$="?" � E$="!" � E$="]" � (E$="[" � F%=�) � read%=textsize% �+ � E$="[" � F%=� read%-=1:A$=�A$,�A$-1) � started%=�:say$=A$ � � # ș "Spch_Ready?" � A%:� A%=� � P � started%=� � read%=textsize% poll_mask%=1:read%=-1:ș "Spch_Oldchannel":� started%=� " � F%=� �docommand ,F � D%=� � F%=� $(mainind%)=say$:�reprinticon(w_main%,0):�saystring 6 � @ J ��saystring T ^ A$=$(mainind%)+�13 h � � � �wrongsyntax:� r2 ș "Spch_Pitch",pitch%:ș "Spch_Speed",speed% |K ș "Spch_Mouth",mouth%:ș "Spch_Tongue",tongue%:ș "Spch_Level",level% � � 21 � Ȏ pho% � � � 0:ș "Spch_Say",A$ � � 1:ș "Spch_Speak",A$ � � � � 6 � � � ��wrongsyntax � � 6 �- � �<&804C00 � �>&804CFF �error(�,�$,�):� � ș "Spch_Oldchannel" �Q � open=� ș "Spch_Error" � A%:ș "Wimp_SetCaretPosition",w_main%,0,0,0,-1,A% �& � read%<>-1 poll_mask%=1:read%=-1 E$=�$:A%=�checkOK(E$,1) � ��stoptalk &+ poll_mask%=1:read%=-1:�wipe:started%=� 0 ș "Spch_Oldchannel" : � D N ��wipe X9 � w_main%<>-1 $(mainind%)="":�reprinticon(w_main%,0) b< � open=� ș "Wimp_SetCaretPosition",w_main%,0,0,0,-1,-1 l � v �> ��pitch:$(mainind%+255)=�pitch%:�reprinticon(w_main%,5):� �@ ��speed:$(mainind%+255+4)=�speed%:�reprinticon(w_main%,6):� �A ��mouth:$(mainind%+255+12)=�mouth%:�reprinticon(w_main%,8):� �B ��tongue:$(mainind%+255+8)=�tongue%:�reprinticon(w_main%,7):� � ��phonemes �+ � pho%=1 $(mainind%+255+16)="Phonemes" �( � pho%=0 $(mainind%+255+16)="Words" � �reprinticon(w_main%,17):� � �Y ��level:$(mainind%+255+28)=�level%:�reprinticon(w_main%,21):ș "Spch_Level",level%:� � � ��hitmain � � butt%=1 � K � (icon%=9 � icon%=11 � icon%=15 � icon%=13 � icon%=22) icon%+=1:�TVR F � (icon%=10 � icon%=12 � icon%=16 � icon%=14 � icon%=23) icon%-=1 � Ȏ icon% � * � 1:pitch%=128:�pitch 4 � 2:speed%=128:�speed > � 4:tongue%=128:�tongue H � 3:mouth%=128:�mouth R& � 9:� pitch%<200 pitch%+=1:�pitch \% � 10:� pitch%>0 pitch%-=1:�pitch f' � 11:� speed%<200 speed%+=1:�speed p% � 12:� speed%>0 speed%-=1:�speed z* � 13:� tongue%<255 tongue%+=1:�tongue �( � 14:� tongue%>0 tongue%-=1:�tongue �' � 15:� mouth%<255 mouth%+=1:�mouth �% � 16:� mouth%>0 mouth%-=1:�mouth � � 17:pho%=pho%�1:�phonemes � � 19:� 7:�wipe � � 18:�saystring � � 20:level%=128:�level �' � 22:� level%<128 level%+=1:�level �% � 23:� level%>0 level%-=1:�level � � � YYY%=icon% � � �
00000000 0d 00 0a 1b f4 3e 3a 34 2e 21 53 70 65 65 63 68 |.....>:4.!Speech| 00000010 21 2e 21 52 75 6e 49 6d 61 67 65 0d 00 14 05 20 |!.!RunImage.... | 00000020 0d 00 1e 35 20 f4 20 53 70 65 65 63 68 21 20 73 |...5 . Speech! s| 00000030 70 65 61 6b 20 6d 6f 64 75 6c 65 20 28 43 29 31 |peak module (C)1| 00000040 39 39 31 20 44 61 76 69 64 20 4a 2e 20 48 6f 73 |991 David J. Hos| 00000050 6b 69 6e 73 2e 0d 00 28 05 20 0d 00 32 05 20 0d |kins...(. ..2. .| 00000060 00 3c 29 20 6d 61 78 62 75 66 25 3d 26 38 30 30 |.<) maxbuf%=&800| 00000070 3a 70 6f 6c 6c 5f 6d 61 73 6b 25 3d 31 3a f2 76 |:poll_mask%=1:.v| 00000080 61 72 69 61 62 6c 65 73 0d 00 46 10 20 de 20 74 |ariables..F. . t| 00000090 65 6d 70 25 20 35 31 32 0d 00 50 13 20 c8 99 20 |emp% 512..P. .. | 000000a0 26 35 31 20 b8 20 70 61 67 65 25 0d 00 5a 12 20 |&51 . page%..Z. | 000000b0 77 72 70 6f 69 25 3d 77 72 69 74 65 25 0d 00 64 |wrpoi%=write%..d| 000000c0 0a 20 f2 6a 62 64 70 0d 00 6e 10 20 f2 69 6e 69 |. .jbdp..n. .ini| 000000d0 74 69 61 6c 69 73 65 0d 00 78 1b 20 74 65 78 74 |tialise..x. text| 000000e0 3d e0 2b 32 30 30 30 30 3a 4d 45 4d 3d 93 2d 32 |=.+20000:MEM=.-2| 000000f0 35 36 0d 00 82 32 20 74 65 78 74 3d 93 3a f5 20 |56...2 text=.:. | 00000100 46 25 3d a4 73 6c 6f 74 28 70 61 67 65 25 2c 2d |F%=.slot(page%,-| 00000110 31 29 3a fd 20 46 25 3d b9 20 80 20 4d 45 4d 3e |1):. F%=. . MEM>| 00000120 74 65 78 74 0d 00 8c 05 20 0d 00 96 1d 20 f4 20 |text.... .... . | 00000130 2a 2a 2a 20 4c 45 54 27 53 20 52 4f 4c 4c 20 27 |*** LET'S ROLL '| 00000140 45 4d 20 2a 2a 2a 0d 00 a0 05 20 0d 00 aa 45 20 |EM ***.... ...E | 00000150 24 28 6d 61 69 6e 69 6e 64 25 29 3d 22 48 65 6c |$(mainind%)="Hel| 00000160 6c 6f 2e 20 54 68 69 73 20 69 73 20 22 22 53 70 |lo. This is ""Sp| 00000170 65 65 63 68 21 22 22 20 66 72 6f 6d 20 53 75 70 |eech!"" from Sup| 00000180 65 72 69 6f 72 20 53 6f 66 74 77 61 72 65 2e 22 |erior Software."| 00000190 0d 00 b4 17 20 ee 20 85 20 f2 65 72 72 6f 72 28 |.... . . .error(| 000001a0 9f 2c f6 24 2c 9e 29 0d 00 be 2b 20 f2 70 69 74 |.,.$,.)...+ .pit| 000001b0 63 68 3a f2 73 70 65 65 64 3a f2 6d 6f 75 74 68 |ch:.speed:.mouth| 000001c0 3a f2 74 6f 6e 67 75 65 3a f2 70 68 6f 6e 65 6d |:.tongue:.phonem| 000001d0 65 73 0d 00 c8 0b 20 f2 6c 65 76 65 6c 0d 00 d2 |es.... .level...| 000001e0 05 20 0d 00 dc 06 20 f5 0d 00 e6 2b 20 c8 99 20 |. .... ....+ .. | 000001f0 22 57 69 6d 70 5f 50 6f 6c 6c 22 2c 70 6f 6c 6c |"Wimp_Poll",poll| 00000200 5f 6d 61 73 6b 25 2c 71 25 20 b8 20 61 63 74 69 |_mask%,q% . acti| 00000210 6f 6e 25 0d 00 f0 11 20 c8 8e 20 61 63 74 69 6f |on%.... .. actio| 00000220 6e 25 20 ca 0d 00 fa 22 20 c9 20 30 20 20 20 20 |n% ...." . 0 | 00000230 20 3a 20 e7 20 72 65 61 64 25 3e 3d 30 20 f2 64 | : . read%>=0 .d| 00000240 6f 73 70 65 61 6b 0d 01 04 1b 20 c9 20 31 20 20 |ospeak.... . 1 | 00000250 20 20 20 3a 20 f2 72 65 64 72 61 77 28 21 71 25 | : .redraw(!q%| 00000260 29 0d 01 0e 1e 20 c9 20 32 20 20 20 20 20 3a 20 |).... . 2 : | 00000270 f2 6f 70 65 6e 77 69 6e 64 6f 77 28 71 25 29 0d |.openwindow(q%).| 00000280 01 18 20 20 c9 20 33 20 20 20 20 20 3a 20 f2 63 |.. . 3 : .c| 00000290 6c 6f 73 65 77 69 6e 64 6f 77 28 21 71 25 29 0d |losewindow(!q%).| 000002a0 01 22 21 20 c9 20 34 20 20 20 20 20 3a 20 f2 70 |."! . 4 : .p| 000002b0 6f 69 6e 74 65 72 6c 65 61 76 65 28 21 71 25 29 |ointerleave(!q%)| 000002c0 0d 01 2c 21 20 c9 20 35 20 20 20 20 20 3a 20 f2 |..,! . 5 : .| 000002d0 70 6f 69 6e 74 65 72 65 6e 74 65 72 28 21 71 25 |pointerenter(!q%| 000002e0 29 0d 01 36 30 20 c9 20 36 20 20 20 20 20 3a 20 |)..60 . 6 : | 000002f0 f2 6d 6f 75 73 65 28 21 71 25 2c 71 25 21 34 2c |.mouse(!q%,q%!4,| 00000300 71 25 21 38 2c 71 25 21 31 32 2c 71 25 21 31 36 |q%!8,q%!12,q%!16| 00000310 29 0d 01 40 17 20 c9 20 37 20 20 20 20 20 3a 20 |)..@. . 7 : | 00000320 f2 64 72 61 67 62 6f 78 0d 01 4a 17 20 c9 20 38 |.dragbox..J. . 8| 00000330 20 20 20 20 20 3a 20 f2 6b 65 79 28 71 25 29 0d | : .key(q%).| 00000340 01 54 1e 20 c9 20 39 20 20 20 20 20 3a 20 f2 6d |.T. . 9 : .m| 00000350 65 6e 75 73 65 6c 65 63 74 28 71 25 29 0d 01 5e |enuselect(q%)..^| 00000360 1b 20 c9 20 31 37 2c 31 38 20 3a 20 f2 72 65 63 |. . 17,18 : .rec| 00000370 65 69 76 65 28 71 25 29 0d 01 68 06 20 cb 0d 01 |eive(q%)..h. ...| 00000380 72 0b 20 fd 20 71 75 69 74 0d 01 7c 18 20 c8 99 |r. . quit..|. ..| 00000390 20 22 57 69 6d 70 5f 43 6c 6f 73 65 44 6f 77 6e | "Wimp_CloseDown| 000003a0 22 0d 01 86 06 20 e0 0d 01 90 05 20 0d 01 9a 0e |".... ..... ....| 000003b0 20 dd f2 64 72 61 67 62 6f 78 0d 01 a4 21 20 c8 | ..dragbox...! .| 000003c0 99 20 22 57 69 6d 70 5f 47 65 74 50 6f 69 6e 74 |. "Wimp_GetPoint| 000003d0 65 72 49 6e 66 6f 22 2c 2c 71 25 0d 01 ae 15 20 |erInfo",,q%.... | 000003e0 71 25 21 32 30 3d 36 34 3a 71 25 21 33 32 3d 30 |q%!20=64:q%!32=0| 000003f0 0d 01 b8 24 20 71 25 21 33 36 3d 31 3a 71 25 21 |...$ q%!36=1:q%!| 00000400 34 30 3d 71 25 21 31 32 3a 71 25 21 34 34 3d 71 |40=q%!12:q%!44=q| 00000410 25 21 31 36 0d 01 c2 2f 20 71 25 21 34 38 3d 21 |%!16.../ q%!48=!| 00000420 71 25 3a 71 25 21 35 32 3d 71 25 21 34 3a 71 25 |q%:q%!52=q%!4:q%| 00000430 21 35 36 3d 63 6f 6f 72 64 73 21 31 36 2d 4d 45 |!56=coords!16-ME| 00000440 4d 2b 34 0d 01 cc 26 20 71 25 21 36 30 3d 74 79 |M+4...& q%!60=ty| 00000450 70 65 25 3a 24 28 71 25 2b 36 34 29 3d a4 6c 65 |pe%:$(q%+64)=.le| 00000460 61 66 28 64 72 61 67 24 29 0d 01 d6 2f 20 c8 99 |af(drag$).../ ..| 00000470 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 61 | "Wimp_SendMessa| 00000480 67 65 22 2c 31 37 2c 71 25 2b 32 30 2c 71 25 21 |ge",17,q%+20,q%!| 00000490 31 32 2c 71 25 21 31 36 0d 01 e0 06 20 e1 0d 01 |12,q%!16.... ...| 000004a0 ea 05 20 0d 01 f4 0f 20 dd a4 6c 65 61 66 28 41 |.. .... ..leaf(A| 000004b0 24 29 0d 01 fe 25 20 c8 95 20 a7 41 24 2c 22 2e |$)...% .. .A$,".| 000004c0 22 29 20 41 24 3d c1 41 24 2c a7 41 24 2c 22 2e |") A$=.A$,.A$,".| 000004d0 22 29 2b 31 29 3a ce 0d 02 08 07 3d 41 24 0d 02 |")+1):.....=A$..| 000004e0 12 05 20 0d 02 1c 10 20 dd a4 67 6e 61 6d 65 28 |.. .... ..gname(| 000004f0 41 25 29 0d 02 26 2f 20 41 24 3d 22 22 3a c8 95 |A%)..&/ A$="":..| 00000500 20 3f 41 25 3c 3e 30 20 80 20 3f 41 25 3c 3e 31 | ?A%<>0 . ?A%<>1| 00000510 33 20 41 24 2b 3d bd 3f 41 25 3a 41 25 2b 3d 31 |3 A$+=.?A%:A%+=1| 00000520 3a ce 0d 02 30 07 3d 41 24 0d 02 3a 05 20 0d 02 |:...0.=A$..:. ..| 00000530 44 24 20 dd f2 64 72 61 67 28 41 24 2c 41 25 29 |D$ ..drag(A$,A%)| 00000540 3a 74 79 70 65 25 3d 41 25 3a 64 72 61 67 24 3d |:type%=A%:drag$=| 00000550 41 24 0d 02 4e 2d 20 21 71 25 3d 68 61 6e 64 6c |A$..N- !q%=handl| 00000560 65 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 57 |e%:.. "Wimp_GetW| 00000570 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 71 25 0d |indowState",,q%.| 00000580 02 58 40 20 62 78 25 3d 71 25 21 34 2d 71 25 21 |.X@ bx%=q%!4-q%!| 00000590 32 30 3a 62 79 25 3d 71 25 21 31 36 2d 71 25 21 |20:by%=q%!16-q%!| 000005a0 32 34 3a f2 67 65 74 69 63 6f 6e 73 74 61 74 65 |24:.geticonstate| 000005b0 28 68 61 6e 64 6c 65 25 2c 69 63 6f 6e 25 29 0d |(handle%,icon%).| 000005c0 02 62 49 20 71 25 21 34 3d 35 3a 71 25 21 38 3d |.bI q%!4=5:q%!8=| 000005d0 71 25 21 38 2b 62 78 25 3a 71 25 21 31 32 3d 71 |q%!8+bx%:q%!12=q| 000005e0 25 21 31 32 2b 62 79 25 3a 71 25 21 31 36 3d 71 |%!12+by%:q%!16=q| 000005f0 25 21 31 36 2b 62 78 25 3a 71 25 21 32 30 3d 71 |%!16+bx%:q%!20=q| 00000600 25 21 32 30 2b 62 79 25 0d 02 6c 2e 20 71 25 21 |%!20+by%..l. q%!| 00000610 32 34 3d 30 3a 71 25 21 32 38 3d 30 3a 71 25 21 |24=0:q%!28=0:q%!| 00000620 33 32 3d 26 37 46 46 46 46 3a 71 25 21 33 36 3d |32=&7FFFF:q%!36=| 00000630 26 37 46 46 46 46 0d 02 76 1a 20 c8 99 20 22 57 |&7FFFF..v. .. "W| 00000640 69 6d 70 5f 44 72 61 67 42 6f 78 22 2c 2c 71 25 |imp_DragBox",,q%| 00000650 0d 02 80 06 20 e1 0d 02 8a 05 20 0d 02 94 05 20 |.... ..... .... | 00000660 0d 02 9e 20 20 f2 72 65 70 72 69 6e 74 69 63 6f |... .reprintico| 00000670 6e 28 77 5f 6d 61 74 6c 25 2c 69 63 6f 6e 25 29 |n(w_matl%,icon%)| 00000680 0d 02 a8 23 20 c8 97 20 6d 6f 78 25 2c 6d 6f 79 |...# .. mox%,moy| 00000690 25 2c 41 25 3a fd 20 46 46 25 3e 33 20 84 20 41 |%,A%:. FF%>3 . A| 000006a0 25 3d 30 0d 02 b2 18 20 c8 97 20 c8 93 20 30 2c |%=0.... .. .. 0,| 000006b0 30 2c 31 32 37 39 2c 31 30 32 33 0d 02 bc 06 20 |0,1279,1023.... | 000006c0 e1 0d 02 c6 05 20 0d 02 d0 10 20 dd f2 73 65 74 |..... .... ..set| 000006d0 6d 65 6d 6f 72 79 0d 02 da 2f 20 c8 99 20 22 57 |memory.../ .. "W| 000006e0 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 28 74 |imp_SlotSize",(t| 000006f0 65 78 74 2b 74 65 78 74 73 69 7a 65 25 2b 32 35 |ext+textsize%+25| 00000700 36 29 2c 2d 31 0d 02 e4 23 20 c8 99 20 22 57 69 |6),-1...# .. "Wi| 00000710 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 2d 31 2c |mp_SlotSize",-1,| 00000720 2d 31 20 b8 20 4d 45 4d 0d 02 ee 06 20 e1 0d 02 |-1 . MEM.... ...| 00000730 f8 05 20 0d 03 02 10 20 dd f2 76 61 72 69 61 62 |.. .... ..variab| 00000740 6c 65 73 0d 03 0c 05 20 0d 03 16 4d 20 de 20 71 |les.... ...M . q| 00000750 25 20 26 37 30 30 2c 20 62 6c 6f 63 6b 25 20 33 |% &700, block% 3| 00000760 32 2c 20 63 75 72 62 75 66 25 20 6d 61 78 62 75 |2, curbuf% maxbu| 00000770 66 25 2c 20 6d 65 6e 75 73 25 20 26 33 30 30 2c |f%, menus% &300,| 00000780 20 77 72 69 74 65 25 20 35 31 32 2c 20 65 72 72 | write% 512, err| 00000790 25 20 31 30 38 0d 03 20 48 20 70 69 74 63 68 25 |% 108.. H pitch%| 000007a0 3d 31 32 38 3a 73 70 65 65 64 25 3d 31 32 38 3a |=128:speed%=128:| 000007b0 6d 6f 75 74 68 25 3d 31 32 38 3a 74 6f 6e 67 75 |mouth%=128:tongu| 000007c0 65 25 3d 31 32 38 3a 6c 65 76 65 6c 25 3d 31 32 |e%=128:level%=12| 000007d0 38 3a 74 65 78 74 73 69 7a 65 25 3d 30 0d 03 2a |8:textsize%=0..*| 000007e0 21 20 70 68 6f 25 3d 30 3a 77 5f 6d 61 69 6e 25 |! pho%=0:w_main%| 000007f0 3d 2d 31 3a 73 74 61 72 74 65 64 25 3d b9 0d 03 |=-1:started%=...| 00000800 34 1b 20 71 75 69 74 3d a3 3a 72 65 61 64 25 3d |4. quit=.:read%=| 00000810 2d 31 3a 6f 70 65 6e 3d a3 0d 03 3e 06 20 e1 0d |-1:open=...>. ..| 00000820 03 48 05 20 0d 03 52 11 20 dd 20 a4 70 61 72 28 |.H. ..R. . .par(| 00000830 73 65 70 24 29 0d 03 5c 1f 20 e7 20 c0 4c 24 2c |sep$)..\. . .L$,| 00000840 31 29 3d 22 2e 22 20 4c 24 3d c2 4c 24 2c a9 4c |1)="." L$=.L$,.L| 00000850 24 2d 31 29 0d 03 66 23 20 69 31 25 3d 69 25 2b |$-1)..f# i1%=i%+| 00000860 31 3a 69 25 3d a7 4c 24 2b 73 65 70 24 2c 73 65 |1:i%=.L$+sep$,se| 00000870 70 24 2c 69 31 25 29 0d 03 70 14 3d c1 4c 24 2c |p$,i1%)..p.=.L$,| 00000880 69 31 25 2c 69 25 2d 69 31 25 29 0d 03 7a 05 20 |i1%,i%-i1%)..z. | 00000890 0d 03 84 05 20 0d 03 8e 1b 20 dd f2 63 6c 6f 73 |.... .... ..clos| 000008a0 65 77 69 6e 64 6f 77 28 68 61 6e 64 6c 65 25 29 |ewindow(handle%)| 000008b0 0d 03 98 2a 20 21 71 25 3d 68 61 6e 64 6c 65 25 |...* !q%=handle%| 000008c0 3a c8 99 20 22 57 69 6d 70 5f 43 6c 6f 73 65 57 |:.. "Wimp_CloseW| 000008d0 69 6e 64 6f 77 22 2c 2c 71 25 0d 03 a2 1d 20 e7 |indow",,q%.... .| 000008e0 20 68 61 6e 64 6c 65 25 3d 77 5f 6d 61 69 6e 25 | handle%=w_main%| 000008f0 20 6f 70 65 6e 3d a3 0d 03 ac 06 20 e1 0d 03 b6 | open=..... ....| 00000900 05 20 0d 03 c0 15 20 dd f2 6f 70 65 6e 77 69 6e |. .... ..openwin| 00000910 64 6f 77 28 71 25 29 0d 03 ca 1d 20 c8 99 20 22 |dow(q%).... .. "| 00000920 57 69 6d 70 5f 4f 70 65 6e 57 69 6e 64 6f 77 22 |Wimp_OpenWindow"| 00000930 2c 2c 71 25 0d 03 d4 06 20 e1 0d 03 de 05 20 0d |,,q%.... ..... .| 00000940 03 e8 16 20 dd f2 72 65 64 72 61 77 28 68 61 6e |... ..redraw(han| 00000950 64 6c 65 25 29 0d 03 f2 10 20 21 71 25 3d 68 61 |dle%).... !q%=ha| 00000960 6e 64 6c 65 25 0d 03 fc 27 20 c8 99 20 22 57 69 |ndle%...' .. "Wi| 00000970 6d 70 5f 52 65 64 72 61 77 57 69 6e 64 6f 77 22 |mp_RedrawWindow"| 00000980 2c 2c 71 25 20 b8 20 6d 6f 72 65 25 0d 04 06 16 |,,q% . more%....| 00000990 20 f2 69 6e 66 6f 28 71 25 2c 62 78 25 2c 62 79 | .info(q%,bx%,by| 000009a0 25 29 0d 04 10 0d 20 c8 95 20 6d 6f 72 65 25 0d |%).... .. more%.| 000009b0 04 1a 27 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 |..' .. "Wimp_Get| 000009c0 52 65 63 74 61 6e 67 6c 65 22 2c 2c 71 25 20 b8 |Rectangle",,q% .| 000009d0 20 6d 6f 72 65 25 0d 04 24 06 20 ce 0d 04 2e 06 | more%..$. .....| 000009e0 20 e1 0d 04 38 05 20 0d 04 42 21 20 dd f2 72 65 | ...8. ..B! ..re| 000009f0 70 72 69 6e 74 69 63 6f 6e 28 68 61 6e 64 6c 65 |printicon(handle| 00000a00 25 2c 69 63 6f 6e 25 29 0d 04 4c 21 20 f2 67 65 |%,icon%)..L! .ge| 00000a10 74 69 63 6f 6e 73 74 61 74 65 28 68 61 6e 64 6c |ticonstate(handl| 00000a20 65 25 2c 69 63 6f 6e 25 29 0d 04 56 3a 20 21 71 |e%,icon%)..V: !q| 00000a30 25 3d 68 61 6e 64 6c 65 25 3a 71 25 21 34 3d 69 |%=handle%:q%!4=i| 00000a40 78 30 25 3a 71 25 21 38 3d 69 79 30 25 3a 71 25 |x0%:q%!8=iy0%:q%| 00000a50 21 31 32 3d 69 78 31 25 3a 71 25 21 31 36 3d 69 |!12=ix1%:q%!16=i| 00000a60 79 31 25 0d 04 60 27 20 c8 99 20 22 57 69 6d 70 |y1%..`' .. "Wimp| 00000a70 5f 55 70 64 61 74 65 57 69 6e 64 6f 77 22 2c 2c |_UpdateWindow",,| 00000a80 71 25 20 b8 20 6d 6f 72 65 25 0d 04 6a 16 20 f2 |q% . more%..j. .| 00000a90 69 6e 66 6f 28 71 25 2c 62 78 25 2c 62 79 25 29 |info(q%,bx%,by%)| 00000aa0 0d 04 74 0d 20 c8 95 20 6d 6f 72 65 25 0d 04 7e |..t. .. more%..~| 00000ab0 29 20 c8 99 20 22 57 69 6d 70 5f 47 65 74 52 65 |) .. "Wimp_GetRe| 00000ac0 63 74 61 6e 67 6c 65 22 2c 2c 71 25 20 b8 20 6d |ctangle",,q% . m| 00000ad0 6f 72 65 25 3a ce 0d 04 88 06 20 e1 0d 04 92 05 |ore%:..... .....| 00000ae0 20 0d 04 9c 05 20 0d 04 a6 12 20 dd 20 f2 72 65 | .... .... . .re| 00000af0 63 65 69 76 65 28 62 29 0d 04 b0 0e 20 c8 8e 20 |ceive(b).... .. | 00000b00 62 21 31 36 20 ca 0d 04 ba 0f 20 c9 20 30 3a 71 |b!16 ..... . 0:q| 00000b10 75 69 74 3d b9 0d 04 c4 12 20 c9 20 31 3a f2 64 |uit=..... . 1:.d| 00000b20 61 74 61 73 61 76 65 0d 04 ce 11 20 c9 20 32 3a |atasave.... . 2:| 00000b30 f2 73 61 76 65 61 63 6b 0d 04 d8 2a 20 c9 20 33 |.saveack...* . 3| 00000b40 2c 35 3a e7 20 62 21 34 3c 3e 6f 75 72 68 61 6e |,5:. b!4<>ourhan| 00000b50 64 6c 65 25 20 f2 64 61 74 61 6c 6f 61 64 28 71 |dle% .dataload(q| 00000b60 25 29 0d 04 e2 06 20 cb 0d 04 ec 06 20 e1 0d 04 |%).... ..... ...| 00000b70 f6 05 20 0d 05 00 05 20 0d 05 0a 12 20 dd 20 a4 |.. .... .... . .| 00000b80 77 69 6e 64 6f 77 28 61 24 29 0d 05 14 09 20 ea |window(a$).... .| 00000b90 20 63 25 0d 05 1e 49 20 c8 99 20 22 57 69 6d 70 | c%...I .. "Wimp| 00000ba0 5f 4c 6f 61 64 54 65 6d 70 6c 61 74 65 22 2c 2c |_LoadTemplate",,| 00000bb0 71 25 2c 63 75 72 62 75 66 25 2c 65 6e 64 62 75 |q%,curbuf%,endbu| 00000bc0 66 25 2c 2d 31 2c 61 24 2c 30 20 b8 20 2c 2c 63 |f%,-1,a$,0 . ,,c| 00000bd0 75 72 62 75 66 25 2c 2c 2c 2c 63 25 0d 05 28 13 |urbuf%,,,,c%..(.| 00000be0 20 71 25 21 36 34 3d 73 70 72 69 74 65 73 25 0d | q%!64=sprites%.| 00000bf0 05 32 24 20 c8 99 20 22 57 69 6d 70 5f 43 72 65 |.2$ .. "Wimp_Cre| 00000c00 61 74 65 57 69 6e 64 6f 77 22 2c 2c 71 25 20 b8 |ateWindow",,q% .| 00000c10 20 63 25 0d 05 3c 07 3d 63 25 0d 05 46 05 20 0d | c%..<.=c%..F. .| 00000c20 05 50 16 20 dd f2 65 72 72 6f 72 28 45 25 2c 45 |.P. ..error(E%,E| 00000c30 24 2c 4c 25 29 0d 05 5a 08 20 ef 20 36 0d 05 64 |$,L%)..Z. . 6..d| 00000c40 11 20 ee 20 85 20 ea 20 e5 20 8d 44 78 45 0d 05 |. . . . . .DxE..| 00000c50 6e 12 20 f2 73 74 6f 70 74 61 6c 6b 3a ef 20 37 |n. .stoptalk:. 7| 00000c60 0d 05 78 1d 20 c8 99 20 22 57 69 6d 70 5f 43 72 |..x. .. "Wimp_Cr| 00000c70 65 61 74 65 4d 65 6e 75 22 2c 2c 2d 31 0d 05 82 |eateMenu",,-1...| 00000c80 41 20 e7 20 45 25 3c 26 38 30 34 43 30 30 20 84 |A . E%<&804C00 .| 00000c90 20 45 25 3e 26 38 30 34 43 46 46 20 45 24 3d 45 | E%>&804CFF E$=E| 00000ca0 24 2b 22 20 28 49 6e 74 65 72 6e 61 6c 20 45 72 |$+" (Internal Er| 00000cb0 72 6f 72 20 22 2b c3 4c 25 2b 22 20 29 22 0d 05 |ror "+.L%+" )"..| 00000cc0 8c 16 20 41 25 3d a4 63 68 65 63 6b 4f 4b 28 45 |.. A%=.checkOK(E| 00000cd0 24 2c 31 29 0d 05 96 20 20 e7 20 45 25 3e 26 38 |$,1)... . E%>&8| 00000ce0 30 34 43 30 30 20 80 20 45 25 3c 26 38 30 34 44 |04C00 . E%<&804D| 00000cf0 30 30 20 e1 0d 05 a0 18 20 c8 99 20 22 57 69 6d |00 ..... .. "Wim| 00000d00 70 5f 43 6c 6f 73 65 44 6f 77 6e 22 0d 05 aa 06 |p_CloseDown"....| 00000d10 20 e0 0d 05 b4 05 20 0d 05 be 12 20 dd f2 77 69 | ..... .... ..wi| 00000d20 67 73 28 41 25 2c 41 24 29 0d 05 c8 1b 20 24 41 |gs(A%,A$).... $A| 00000d30 25 3d 41 24 3a 3f 28 41 25 2b a9 41 24 2b 31 29 |%=A$:?(A%+.A$+1)| 00000d40 3d 30 3a e1 0d 05 d2 05 20 0d 05 dc 15 20 dd a4 |=0:..... .... ..| 00000d50 63 68 65 63 6b 4f 4b 28 45 24 2c 45 25 29 0d 05 |checkOK(E$,E%)..| 00000d60 e6 23 20 21 65 72 72 25 3d 45 25 3a 24 28 65 72 |.# !err%=E%:$(er| 00000d70 72 25 2b 34 29 3d c0 45 24 2c 31 30 30 29 2b bd |r%+4)=.E$,100)+.| 00000d80 30 0d 05 f0 35 20 c8 99 20 22 57 69 6d 70 5f 52 |0...5 .. "Wimp_R| 00000d90 65 70 6f 72 74 45 72 72 6f 72 22 2c 20 65 72 72 |eportError", err| 00000da0 25 2c 20 45 25 2c 20 22 53 70 65 65 63 68 21 22 |%, E%, "Speech!"| 00000db0 20 b8 20 2c 45 25 0d 05 fa 19 3d 45 25 3d 31 20 | . ,E%....=E%=1 | 00000dc0 3a 20 20 f4 20 54 52 55 45 20 69 66 20 4f 4b 0d |: . TRUE if OK.| 00000dd0 06 04 05 20 0d 06 0e 1b 20 dd f2 69 6e 66 6f 28 |... .... ..info(| 00000de0 70 25 2c f8 20 62 78 25 2c f8 20 62 79 25 29 0d |p%,. bx%,. by%).| 00000df0 06 18 23 20 62 78 25 3d 70 25 21 34 2d 70 25 21 |..# bx%=p%!4-p%!| 00000e00 32 30 3a 62 79 25 3d 70 25 21 31 36 2d 70 25 21 |20:by%=p%!16-p%!| 00000e10 32 34 0d 06 22 06 20 e1 0d 06 2c 05 20 0d 06 36 |24..". ...,. ..6| 00000e20 2b 20 dd 20 f2 75 70 64 61 74 65 28 68 61 6e 64 |+ . .update(hand| 00000e30 6c 65 25 2c 75 78 30 25 2c 75 79 30 25 2c 75 78 |le%,ux0%,uy0%,ux| 00000e40 31 25 2c 75 79 31 25 29 0d 06 40 3a 20 21 71 25 |1%,uy1%)..@: !q%| 00000e50 3d 68 61 6e 64 6c 65 25 3a 71 25 21 34 3d 75 78 |=handle%:q%!4=ux| 00000e60 30 25 3a 71 25 21 38 3d 75 79 30 25 3a 71 25 21 |0%:q%!8=uy0%:q%!| 00000e70 31 32 3d 75 78 31 25 3a 71 25 21 31 36 3d 75 79 |12=ux1%:q%!16=uy| 00000e80 31 25 0d 06 4a 27 20 c8 99 20 22 57 69 6d 70 5f |1%..J' .. "Wimp_| 00000e90 55 70 64 61 74 65 57 69 6e 64 6f 77 22 2c 2c 71 |UpdateWindow",,q| 00000ea0 25 20 b8 20 6d 6f 72 65 25 0d 06 54 06 20 e1 0d |% . more%..T. ..| 00000eb0 06 5e 05 20 0d 06 68 22 20 dd f2 67 65 74 69 63 |.^. ..h" ..getic| 00000ec0 6f 6e 73 74 61 74 65 28 68 61 6e 64 6c 65 25 2c |onstate(handle%,| 00000ed0 69 63 6f 6e 25 29 0d 06 72 36 20 21 71 25 3d 68 |icon%)..r6 !q%=h| 00000ee0 61 6e 64 6c 65 25 3a 71 25 21 34 3d 69 63 6f 6e |andle%:q%!4=icon| 00000ef0 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 49 63 |%:.. "Wimp_GetIc| 00000f00 6f 6e 53 74 61 74 65 22 2c 2c 71 25 0d 06 7c 2f |onState",,q%..|/| 00000f10 20 69 78 30 25 3d 71 25 21 38 3a 69 79 30 25 3d | ix0%=q%!8:iy0%=| 00000f20 71 25 21 31 32 3a 69 78 31 25 3d 71 25 21 31 36 |q%!12:ix1%=q%!16| 00000f30 3a 69 79 31 25 3d 71 25 21 32 30 0d 06 86 06 20 |:iy1%=q%!20.... | 00000f40 e1 0d 06 90 05 20 0d 06 9a 1b 20 dd f2 67 65 74 |..... .... ..get| 00000f50 77 69 6e 64 69 6e 66 6f 28 68 61 6e 64 6c 65 25 |windinfo(handle%| 00000f60 29 0d 06 a4 2c 20 21 71 25 3d 68 61 6e 64 6c 65 |)..., !q%=handle| 00000f70 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 57 69 |%:.. "Wimp_GetWi| 00000f80 6e 64 6f 77 49 6e 66 6f 22 2c 2c 71 25 0d 06 ae |ndowInfo",,q%...| 00000f90 1a 20 73 63 78 25 3d 71 25 21 32 30 3a 73 63 79 |. scx%=q%!20:scy| 00000fa0 25 3d 71 25 21 32 34 0d 06 b8 4a 20 77 78 30 25 |%=q%!24...J wx0%| 00000fb0 3d 71 25 21 34 3a 77 79 30 25 3d 71 25 21 38 3a |=q%!4:wy0%=q%!8:| 00000fc0 77 78 31 25 3d 71 25 21 31 32 3a 77 79 31 25 3d |wx1%=q%!12:wy1%=| 00000fd0 71 25 21 31 36 3a 62 78 25 3d 77 78 30 25 2d 73 |q%!16:bx%=wx0%-s| 00000fe0 63 78 25 3a 62 79 25 3d 77 79 31 25 2d 73 63 79 |cx%:by%=wy1%-scy| 00000ff0 25 0d 06 c2 06 20 e1 0d 06 cc 05 20 0d 06 d6 2d |%.... ..... ...-| 00001000 20 dd f2 73 65 74 69 63 6f 6e 73 74 61 74 65 28 | ..seticonstate(| 00001010 68 61 6e 64 6c 65 25 2c 69 63 6f 6e 25 2c 65 6f |handle%,icon%,eo| 00001020 72 25 2c 6d 61 73 6b 25 29 0d 06 e0 4c 20 21 71 |r%,mask%)...L !q| 00001030 25 3d 68 61 6e 64 6c 65 25 3a 71 25 21 34 3d 69 |%=handle%:q%!4=i| 00001040 63 6f 6e 25 3a 71 25 21 38 3d 65 6f 72 25 3a 71 |con%:q%!8=eor%:q| 00001050 25 21 31 32 3d 6d 61 73 6b 25 3a c8 99 20 22 57 |%!12=mask%:.. "W| 00001060 69 6d 70 5f 53 65 74 49 63 6f 6e 53 74 61 74 65 |imp_SetIconState| 00001070 22 2c 2c 71 25 0d 06 ea 06 20 e1 0d 06 f4 05 20 |",,q%.... ..... | 00001080 0d 06 fe 1c 20 dd f2 70 6f 69 6e 74 65 72 65 6e |.... ..pointeren| 00001090 74 65 72 28 68 61 6e 64 6c 65 25 29 0d 07 08 06 |ter(handle%)....| 000010a0 20 e1 0d 07 12 05 20 0d 07 1c 1c 20 dd f2 70 6f | ..... .... ..po| 000010b0 69 6e 74 65 72 6c 65 61 76 65 28 68 61 6e 64 6c |interleave(handl| 000010c0 65 25 29 0d 07 26 06 20 e1 0d 07 30 05 20 0d 07 |e%)..&. ...0. ..| 000010d0 3a 11 20 dd f2 69 6e 69 74 69 61 6c 69 73 65 0d |:. ..initialise.| 000010e0 07 44 12 20 f2 6a 62 64 70 32 3a f2 6a 62 64 70 |.D. .jbdp2:.jbdp| 000010f0 33 0d 07 4e 2e 20 65 6e 64 62 75 66 25 3d 63 75 |3..N. endbuf%=cu| 00001100 72 62 75 66 25 2b 6d 61 78 62 75 66 25 3a 73 74 |rbuf%+maxbuf%:st| 00001110 61 72 74 62 75 66 25 3d 63 75 72 62 75 66 25 0d |artbuf%=curbuf%.| 00001120 07 58 13 20 24 62 6c 6f 63 6b 25 3d 22 54 41 53 |.X. $block%="TAS| 00001130 4b 22 0d 07 62 3d 20 c8 99 20 22 57 69 6d 70 5f |K"..b= .. "Wimp_| 00001140 49 6e 69 74 69 61 6c 69 73 65 22 2c 32 30 30 2c |Initialise",200,| 00001150 21 62 6c 6f 63 6b 25 2c 22 53 70 65 65 63 68 21 |!block%,"Speech!| 00001160 22 20 b8 20 2c 6f 75 72 68 61 6e 64 6c 65 25 0d |" . ,ourhandle%.| 00001170 07 6c 40 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 |.l@ .. "OS_File"| 00001180 2c 35 2c 22 3c 53 70 65 65 63 68 21 24 44 69 72 |,5,"<Speech!$Dir| 00001190 3e 2e 53 70 72 69 74 65 73 22 20 b8 20 74 79 70 |>.Sprites" . typ| 000011a0 65 25 2c 2c 2c 2c 61 72 65 61 73 69 7a 65 25 0d |e%,,,,areasize%.| 000011b0 07 76 38 20 e7 20 74 79 70 65 25 3c 3e 31 20 8c |.v8 . type%<>1 .| 000011c0 20 85 20 31 2c 22 43 61 6e 27 74 20 66 69 6e 64 | . 1,"Can't find| 000011d0 20 3c 53 70 65 65 63 68 21 24 44 69 72 3e 2e 53 | <Speech!$Dir>.S| 000011e0 70 72 69 74 65 73 22 0d 07 80 3d 20 61 72 65 61 |prites"...= area| 000011f0 73 69 7a 65 25 2b 3d 32 35 36 3a de 20 73 70 72 |size%+=256:. spr| 00001200 69 74 65 73 25 20 61 72 65 61 73 69 7a 65 25 3a |ites% areasize%:| 00001210 73 70 72 69 74 65 73 25 21 30 3d 61 72 65 61 73 |sprites%!0=areas| 00001220 69 7a 65 25 0d 07 8a 3b 20 c8 99 20 22 4f 53 5f |ize%...; .. "OS_| 00001230 53 70 72 69 74 65 4f 70 22 2c 26 31 30 41 2c 73 |SpriteOp",&10A,s| 00001240 70 72 69 74 65 73 25 2c 22 3c 53 70 65 65 63 68 |prites%,"<Speech| 00001250 21 24 44 69 72 3e 2e 53 70 72 69 74 65 73 22 0d |!$Dir>.Sprites".| 00001260 07 94 36 20 c8 99 20 22 57 69 6d 70 5f 4f 70 65 |..6 .. "Wimp_Ope| 00001270 6e 54 65 6d 70 6c 61 74 65 22 2c 2c 22 3c 73 70 |nTemplate",,"<sp| 00001280 65 65 63 68 21 24 64 69 72 3e 2e 54 65 6d 70 6c |eech!$dir>.Templ| 00001290 61 74 65 73 22 0d 07 9e 33 20 69 6e 66 6f 69 6e |ates"...3 infoin| 000012a0 64 25 3d 63 75 72 62 75 66 25 3a 77 5f 69 6e 66 |d%=curbuf%:w_inf| 000012b0 6f 25 20 3d 20 a4 77 69 6e 64 6f 77 28 22 70 72 |o% = .window("pr| 000012c0 6f 67 49 6e 66 6f 22 29 0d 07 a8 2f 20 6d 61 69 |ogInfo").../ mai| 000012d0 6e 69 6e 64 25 3d 63 75 72 62 75 66 25 3a 77 5f |nind%=curbuf%:w_| 000012e0 6d 61 69 6e 25 20 3d 20 a4 77 69 6e 64 6f 77 28 |main% = .window(| 000012f0 22 4d 61 69 6e 22 29 0d 07 b2 1c 20 c8 99 20 22 |"Main").... .. "| 00001300 57 69 6d 70 5f 43 6c 6f 73 65 54 65 6d 70 6c 61 |Wimp_CloseTempla| 00001310 74 65 22 0d 07 bc 39 20 21 71 25 3d 2d 31 3a 71 |te"...9 !q%=-1:q| 00001320 25 21 32 30 3d 26 33 31 30 32 3a 71 25 21 34 3d |%!20=&3102:q%!4=| 00001330 30 3a 71 25 21 38 3d 30 3a 71 25 21 31 32 3d 31 |0:q%!8=0:q%!12=1| 00001340 30 38 3a 71 25 21 31 36 3d 31 31 32 0d 07 c6 44 |08:q%!16=112...D| 00001350 20 24 62 6c 6f 63 6b 25 3d 22 21 53 70 65 65 63 | $block%="!Speec| 00001360 68 21 22 3a 71 25 21 32 34 3d 62 6c 6f 63 6b 25 |h!":q%!24=block%| 00001370 3a 71 25 21 32 38 3d 73 70 72 69 74 65 73 25 3a |:q%!28=sprites%:| 00001380 71 25 21 33 32 3d a9 24 62 6c 6f 63 6b 25 2b 31 |q%!32=.$block%+1| 00001390 0d 07 d0 29 20 c8 99 20 22 57 69 6d 70 5f 43 72 |...) .. "Wimp_Cr| 000013a0 65 61 74 65 49 63 6f 6e 22 2c 2c 71 25 20 b8 20 |eateIcon",,q% . | 000013b0 69 6e 69 74 69 63 6f 6e 25 0d 07 da 11 20 f2 63 |initicon%.... .c| 000013c0 72 65 61 74 65 6d 65 6e 75 73 0d 07 e4 22 20 24 |reatemenus..." $| 000013d0 28 69 6e 66 6f 69 6e 64 25 2b 31 39 2b 32 30 2b |(infoind%+19+20+| 000013e0 32 30 2b 32 35 29 3d 22 31 2e 33 22 0d 07 ee 06 |20+25)="1.3"....| 000013f0 20 e1 0d 07 f8 05 20 0d 08 02 28 20 dd f2 6d 6f | ..... ...( ..mo| 00001400 75 73 65 28 6d 6f 78 25 2c 6d 6f 79 25 2c 41 25 |use(mox%,moy%,A%| 00001410 2c 68 61 6e 64 6c 65 25 2c 69 63 6f 6e 25 29 0d |,handle%,icon%).| 00001420 08 0c 0d 20 62 75 74 74 25 3d 41 25 0d 08 16 0f |... butt%=A%....| 00001430 20 c8 8e 20 62 75 74 74 25 20 ca 0d 08 20 11 20 | .. butt% ... . | 00001440 c9 20 26 30 34 2c 26 30 31 2c 26 35 0d 08 2a 11 |. &04,&01,&5..*.| 00001450 20 c8 8e 20 68 61 6e 64 6c 65 25 20 ca 0d 08 34 | .. handle% ...4| 00001460 13 20 c9 20 2d 32 3a f4 20 49 63 6f 6e 62 61 72 |. . -2:. Iconbar| 00001470 0d 08 3e 5f 20 e7 20 69 63 6f 6e 25 3d 69 6e 69 |..>_ . icon%=ini| 00001480 74 69 63 6f 6e 25 20 21 71 25 3d 77 5f 6d 61 69 |ticon% !q%=w_mai| 00001490 6e 25 3a c8 99 20 22 57 69 6d 70 5f 47 65 74 57 |n%:.. "Wimp_GetW| 000014a0 69 6e 64 6f 77 53 74 61 74 65 22 2c 2c 71 25 3a |indowState",,q%:| 000014b0 71 25 21 32 38 3d 2d 31 3a 6f 70 65 6e 3d b9 3a |q%!28=-1:open=.:| 000014c0 f2 6f 70 65 6e 77 69 6e 64 6f 77 28 71 25 29 0d |.openwindow(q%).| 000014d0 08 48 17 20 c9 20 77 5f 6d 61 69 6e 25 3a f2 68 |.H. . w_main%:.h| 000014e0 69 74 6d 61 69 6e 0d 08 52 06 20 cb 0d 08 5c 06 |itmain..R. ...\.| 000014f0 20 cb 0d 08 66 05 20 0d 08 70 0f 20 c8 8e 20 62 | ...f. ..p. .. b| 00001500 75 74 74 25 20 ca 0d 08 7a 0a 20 c9 20 26 30 32 |utt% ...z. . &02| 00001510 0d 08 84 11 20 c8 8e 20 68 61 6e 64 6c 65 25 20 |.... .. handle% | 00001520 ca 0d 08 8e 38 20 c9 20 2d 32 3a e7 20 69 63 6f |....8 . -2:. ico| 00001530 6e 25 3d 69 6e 69 74 69 63 6f 6e 25 20 f2 64 6f |n%=initicon% .do| 00001540 6d 65 6e 75 28 6d 5f 71 75 69 74 25 2c 6d 6f 78 |menu(m_quit%,mox| 00001550 25 2d 36 34 2c 32 37 32 29 0d 08 98 06 20 cb 0d |%-64,272).... ..| 00001560 08 a2 06 20 cb 0d 08 ac 06 20 e1 0d 08 b6 05 20 |... ..... ..... | 00001570 0d 08 c0 12 20 dd f2 63 72 65 61 74 65 6d 65 6e |.... ..createmen| 00001580 75 73 0d 08 ca 05 20 0d 08 d4 14 20 f7 20 8d 64 |us.... .... . .d| 00001590 72 48 3a 77 69 64 25 3d 31 38 38 0d 08 de 11 20 |rH:wid%=188.... | 000015a0 6d 70 6f 69 25 3d 6d 65 6e 75 73 25 0d 08 e8 16 |mpoi%=menus%....| 000015b0 20 6d 5f 71 75 69 74 25 3d a4 6d 61 6b 65 6d 65 | m_quit%=.makeme| 000015c0 6e 75 0d 08 f2 3a 20 dc 20 22 53 70 65 65 63 68 |nu...: . "Speech| 000015d0 21 22 2c 22 53 74 6f 70 20 73 70 65 65 63 68 2c |!","Stop speech,| 000015e0 49 6e 66 6f 3e 77 5f 69 6e 66 6f 25 2c 51 75 69 |Info>w_info%,Qui| 000015f0 74 2b 4b 69 6c 6c 2c 51 75 69 74 22 0d 08 fc 06 |t+Kill,Quit"....| 00001600 20 e1 0d 09 06 0d 20 dd f2 6b 65 79 28 62 29 0d | ..... ..key(b).| 00001610 09 10 0c 20 41 25 3d 62 21 32 34 0d 09 1a 0c 20 |... A%=b!24.... | 00001620 c8 8e 20 41 25 20 ca 0d 09 24 1d 20 c9 20 26 31 |.. A% ...$. . &1| 00001630 42 3a f4 45 52 52 4f 52 20 31 37 2c 22 45 73 63 |B:.ERROR 17,"Esc| 00001640 61 70 65 22 0d 09 2e 14 20 c9 20 31 33 3a f2 73 |ape".... . 13:.s| 00001650 61 79 73 74 72 69 6e 67 0d 09 38 1e 20 7f 3a c8 |aystring..8. .:.| 00001660 99 20 22 57 69 6d 70 5f 50 72 6f 63 65 73 73 4b |. "Wimp_ProcessK| 00001670 65 79 22 2c 41 25 0d 09 42 06 20 cb 0d 09 4c 06 |ey",A%..B. ...L.| 00001680 20 e1 0d 09 56 05 20 0d 09 60 06 20 e1 0d 09 6a | ...V. ..`. ...j| 00001690 05 20 0d 09 74 05 20 0d 09 7e 05 20 0d 09 88 0f |. ..t. ..~. ....| 000016a0 20 dd a4 6d 61 6b 65 6d 65 6e 75 0d 09 92 05 20 | ..makemenu.... | 000016b0 0d 09 9c 09 20 ea 20 54 24 0d 09 a6 14 20 61 64 |.... . T$.... ad| 000016c0 64 25 3d 6d 70 6f 69 25 3a 69 25 3d 30 0d 09 b0 |d%=mpoi%:i%=0...| 000016d0 4b 20 f3 20 54 24 3a 24 6d 70 6f 69 25 3d 54 24 |K . T$:$mpoi%=T$| 000016e0 3a 6d 70 6f 69 25 21 32 30 3d 34 34 3a 6d 70 6f |:mpoi%!20=44:mpo| 000016f0 69 25 21 31 32 3d 26 30 30 30 44 30 32 30 37 3a |i%!12=&000D0207:| 00001700 6d 70 6f 69 25 21 31 36 3d 77 69 64 25 3a 6d 70 |mpoi%!16=wid%:mp| 00001710 6f 69 25 21 32 34 3d 30 0d 09 ba 34 20 6d 70 6f |oi%!24=0...4 mpo| 00001720 69 25 2b 3d 32 38 3a f3 20 4c 24 3a f5 20 49 24 |i%+=28:. L$:. I$| 00001730 3d a4 70 61 72 28 22 2c 22 29 3a f2 69 74 65 6d |=.par(","):.item| 00001740 28 49 24 29 3a fd 20 49 24 3d 22 22 0d 09 c4 09 |(I$):. I$=""....| 00001750 3d 61 64 64 25 0d 09 ce 05 20 0d 09 d8 0f 20 dd |=add%.... .... .| 00001760 f2 69 74 65 6d 28 49 24 29 0d 09 e2 28 20 e7 20 |.item(I$)...( . | 00001770 49 24 3d 22 22 20 6d 70 6f 69 25 21 2d 32 34 3d |I$="" mpoi%!-24=| 00001780 28 6d 70 6f 69 25 21 2d 32 34 29 84 26 38 30 3a |(mpoi%!-24).&80:| 00001790 e1 0d 09 ec 0e 20 46 25 3d 30 3a 44 25 3d 30 0d |..... F%=0:D%=0.| 000017a0 09 f6 28 20 e7 20 c0 49 24 2c 31 29 3d 22 23 22 |..( . .I$,1)="#"| 000017b0 20 46 25 3d 31 3c 3c 32 32 3a 49 24 3d c1 49 24 | F%=1<<22:I$=.I$| 000017c0 2c 32 2c 32 35 35 29 0d 0a 00 27 20 e7 20 c0 49 |,2,255)...' . .I| 000017d0 24 2c 31 29 3d 22 2f 22 20 44 25 3d 44 25 2b 31 |$,1)="/" D%=D%+1| 000017e0 3a 49 24 3d c1 49 24 2c 32 2c 32 35 35 29 0d 0a |:I$=.I$,2,255)..| 000017f0 0a 27 20 e7 20 c0 49 24 2c 31 29 3d 22 5f 22 20 |.' . .I$,1)="_" | 00001800 44 25 3d 44 25 2b 32 3a 49 24 3d c1 49 24 2c 32 |D%=D%+2:I$=.I$,2| 00001810 2c 32 35 35 29 0d 0a 14 58 20 e7 20 c0 49 24 2c |,255)...X . .I$,| 00001820 31 29 3d 22 40 22 20 44 25 3d 44 25 2b 34 3a 49 |1)="@" D%=D%+4:I| 00001830 24 3d c1 49 24 2c 32 2c 32 35 35 29 3a 46 25 2b |$=.I$,2,255):F%+| 00001840 3d 31 3c 3c 38 3a 6d 70 6f 69 25 21 31 32 3d 77 |=1<<8:mpoi%!12=w| 00001850 72 70 6f 69 25 3a 6d 70 6f 69 25 21 31 36 3d 30 |rpoi%:mpoi%!16=0| 00001860 3a 6d 70 6f 69 25 21 32 30 3d 31 32 38 0d 0a 1e |:mpoi%!20=128...| 00001870 40 20 53 25 3d a7 49 24 2c 22 3e 22 2c 30 29 3a |@ S%=.I$,">",0):| 00001880 e7 20 53 25 3e 30 20 54 25 3d 53 25 3a 53 25 3d |. S%>0 T%=S%:S%=| 00001890 a0 28 c1 49 24 2c 53 25 2b 31 2c 32 35 35 29 29 |.(.I$,S%+1,255))| 000018a0 3a 49 24 3d c0 49 24 2c 54 25 2d 31 29 0d 0a 28 |:I$=.I$,T%-1)..(| 000018b0 2e 20 21 6d 70 6f 69 25 3d 44 25 3a 6d 70 6f 69 |. !mpoi%=D%:mpoi| 000018c0 25 21 34 3d 53 25 3a 6d 70 6f 69 25 21 38 3d 26 |%!4=S%:mpoi%!8=&| 000018d0 30 37 30 30 30 30 30 31 2b 46 25 0d 0a 32 37 20 |07000001+F%..27 | 000018e0 e7 20 ac 20 44 25 80 34 20 24 28 6d 70 6f 69 25 |. . D%.4 $(mpoi%| 000018f0 2b 31 32 29 3d 49 24 20 8b 20 24 77 72 70 6f 69 |+12)=I$ . $wrpoi| 00001900 25 3d 49 24 3a 77 72 70 6f 69 25 2b 3d a9 49 24 |%=I$:wrpoi%+=.I$| 00001910 2b 38 0d 0a 3c 37 20 6d 70 6f 69 25 2b 3d 32 34 |+8..<7 mpoi%+=24| 00001920 3a e7 20 6d 70 6f 69 25 3e 6d 65 6e 75 73 25 2b |:. mpoi%>menus%+| 00001930 26 43 30 30 20 85 20 31 2c 22 54 6f 6f 20 6d 61 |&C00 . 1,"Too ma| 00001940 6e 79 20 6d 65 6e 75 73 22 0d 0a 46 06 20 e1 0d |ny menus"..F. ..| 00001950 0a 50 05 20 0d 0a 5a 15 20 dd f2 74 69 63 6b 28 |.P. ..Z. ..tick(| 00001960 48 25 2c 4d 25 2c 54 25 29 0d 0a 64 2d 20 e7 20 |H%,M%,T%)..d- . | 00001970 54 25 3d 30 20 48 25 21 28 32 38 2b 32 34 2a 4d |T%=0 H%!(28+24*M| 00001980 25 29 3d 48 25 21 28 32 38 2b 32 34 2a 4d 25 29 |%)=H%!(28+24*M%)| 00001990 20 80 20 32 35 34 0d 0a 6e 32 20 e7 20 54 25 3d | . 254..n2 . T%=| 000019a0 31 20 84 20 54 25 3d 2d 31 20 48 25 21 28 32 38 |1 . T%=-1 H%!(28| 000019b0 2b 32 34 2a 4d 25 29 3d 48 25 21 28 32 38 2b 32 |+24*M%)=H%!(28+2| 000019c0 34 2a 4d 25 29 84 20 31 0d 0a 78 06 20 e1 0d 0a |4*M%). 1..x. ...| 000019d0 82 05 20 0d 0a 8c 16 20 dd f2 73 68 61 64 65 28 |.. .... ..shade(| 000019e0 48 25 2c 4d 25 2c 54 25 29 0d 0a 96 36 20 e7 20 |H%,M%,T%)...6 . | 000019f0 54 25 3d 30 20 48 25 21 28 32 38 2b 32 34 2a 4d |T%=0 H%!(28+24*M| 00001a00 25 2b 38 29 3d 48 25 21 28 32 38 2b 32 34 2a 4d |%+8)=H%!(28+24*M| 00001a10 25 2b 38 29 20 80 20 ac 28 31 3c 3c 32 32 29 0d |%+8) . .(1<<22).| 00001a20 0a a0 35 20 e7 20 54 25 3d 31 20 48 25 21 28 32 |..5 . T%=1 H%!(2| 00001a30 38 2b 32 34 2a 4d 25 2b 38 29 3d 48 25 21 28 32 |8+24*M%+8)=H%!(2| 00001a40 38 2b 32 34 2a 4d 25 2b 38 29 20 84 20 28 31 3c |8+24*M%+8) . (1<| 00001a50 3c 32 32 29 0d 0a aa 06 20 e1 0d 0a b4 0b 20 dd |<22).... ..... .| 00001a60 f2 6a 62 64 70 0d 0a be 26 20 6a 24 3d 22 61 64 |.jbdp...& j$="ad| 00001a70 66 73 3a 3a 30 2e 21 53 70 5f 53 70 65 6c 6c 2e |fs::0.!Sp_Spell.| 00001a80 22 3a 62 24 3d 22 63 6f 64 65 22 0d 0a c8 15 20 |":b$="code".... | 00001a90 de 20 64 75 6d 6d 79 63 6f 64 65 25 20 35 30 30 |. dummycode% 500| 00001aa0 0d 0a d2 06 20 e1 0d 0a e6 05 20 0d 0a f0 19 20 |.... ..... .... | 00001ab0 dd f2 64 6f 6d 65 6e 75 28 41 25 2c 4d 58 25 2c |..domenu(A%,MX%,| 00001ac0 4d 59 25 29 0d 0a fa 43 20 ef 20 32 33 2c 31 34 |MY%)...C . 23,14| 00001ad0 30 2c 31 31 32 2c 36 38 2c 37 38 2c 36 38 2c 36 |0,112,68,78,68,6| 00001ae0 38 2c 36 38 2c 31 31 35 2c 30 2c 32 33 2c 31 34 |8,68,115,0,23,14| 00001af0 31 2c 30 2c 34 2c 31 31 36 2c 36 39 2c 36 38 2c |1,0,4,116,69,68,| 00001b00 36 38 2c 36 38 2c 30 0d 0b 04 48 20 c8 99 20 22 |68,68,0...H .. "| 00001b10 57 69 6d 70 5f 43 72 65 61 74 65 4d 65 6e 75 22 |Wimp_CreateMenu"| 00001b20 2c 2c 41 25 2c 4d 58 25 2c 4d 59 25 3a 63 75 72 |,,A%,MX%,MY%:cur| 00001b30 72 6d 65 6e 75 25 3d 41 25 3a 63 75 72 6d 78 25 |rmenu%=A%:curmx%| 00001b40 3d 4d 58 25 3a 63 75 72 6d 79 25 3d 4d 59 25 0d |=MX%:curmy%=MY%.| 00001b50 0b 0e 06 20 e1 0d 0b 18 05 20 0d 0b 22 14 20 dd |... ..... ..". .| 00001b60 f2 6d 65 6e 75 73 65 6c 65 63 74 28 62 29 0d 0b |.menuselect(b)..| 00001b70 2c 0c 20 72 65 64 6f 25 3d 30 0d 0b 36 3b 20 c8 |,. redo%=0..6; .| 00001b80 99 20 22 57 69 6d 70 5f 44 65 63 6f 64 65 4d 65 |. "Wimp_DecodeMe| 00001b90 6e 75 22 2c 2c 63 75 72 72 6d 65 6e 75 25 2c 62 |nu",,currmenu%,b| 00001ba0 2c 74 65 6d 70 25 20 b8 20 2c 2c 2c 41 25 3a 4c |,temp% . ,,,A%:L| 00001bb0 24 3d 24 41 25 0d 0b 40 16 20 69 25 3d 30 3a 49 |$=$A%..@. i%=0:I| 00001bc0 24 3d a4 70 61 72 28 22 2e 22 29 0d 0b 4a 0c 20 |$=.par(".")..J. | 00001bd0 c8 8e 20 49 24 20 ca 0d 0b 54 14 20 c9 20 22 51 |.. I$ ...T. . "Q| 00001be0 75 69 74 22 3a 2a 52 45 53 45 54 0d 0b 5e 1c 20 |uit":*RESET..^. | 00001bf0 2a 53 50 45 41 4b 57 20 53 50 45 45 32 43 48 20 |*SPEAKW SPEE2CH | 00001c00 4b 57 49 48 36 54 2e 0d 0b 68 16 20 71 75 69 74 |KWIH6T...h. quit| 00001c10 3d 2d 31 3a f2 73 74 6f 70 74 61 6c 6b 0d 0b 72 |=-1:.stoptalk..r| 00001c20 1b 20 c9 20 22 53 74 6f 70 20 73 70 65 65 63 68 |. . "Stop speech| 00001c30 22 3a 2a 52 45 53 45 54 0d 0b 7c 1c 20 2a 53 50 |":*RESET..|. *SP| 00001c40 45 41 4b 57 20 53 50 45 45 36 43 48 20 53 54 4f |EAKW SPEE6CH STO| 00001c50 35 50 54 2e 0d 0b 86 0e 20 f2 73 74 6f 70 74 61 |5PT..... .stopta| 00001c60 6c 6b 0d 0b 90 19 20 c9 20 22 51 75 69 74 2b 4b |lk.... . "Quit+K| 00001c70 69 6c 6c 22 3a 2a 52 45 53 45 54 0d 0b 9a 27 20 |ill":*RESET...' | 00001c80 2a 53 50 45 41 4b 57 20 53 50 45 45 36 43 48 20 |*SPEAKW SPEE6CH | 00001c90 4b 57 49 48 54 20 41 45 33 4e 44 20 4b 49 48 35 |KWIHT AE3ND KIH5| 00001ca0 4c 2e 0d 0b a4 1c 20 71 75 69 74 3d 2d 31 3a 2a |L..... quit=-1:*| 00001cb0 52 4d 4b 49 4c 4c 20 53 70 65 65 63 68 21 0d 0b |RMKILL Speech!..| 00001cc0 ae 06 20 cb 0d 0b b8 52 20 c8 99 20 22 57 69 6d |.. ....R .. "Wim| 00001cd0 70 5f 47 65 74 50 6f 69 6e 74 65 72 49 6e 66 6f |p_GetPointerInfo| 00001ce0 22 2c 2c 71 25 3a e7 20 28 71 25 21 38 29 80 26 |",,q%:. (q%!8).&| 00001cf0 31 20 84 20 72 65 64 6f 25 3d 31 20 f2 64 6f 6d |1 . redo%=1 .dom| 00001d00 65 6e 75 28 63 75 72 72 6d 65 6e 75 25 2c 4d 58 |enu(currmenu%,MX| 00001d10 25 2c 4d 59 25 29 0d 0b c2 06 20 e1 0d 0b cc 05 |%,MY%).... .....| 00001d20 20 0d 0b d6 05 20 0d 0b e0 0e 20 dd f2 73 61 76 | .... .... ..sav| 00001d30 65 61 63 6b 0d 0b ea 19 20 f2 73 61 76 65 28 a4 |eack.... .save(.| 00001d40 67 6e 61 6d 65 28 71 25 2b 34 34 29 29 0d 0b f4 |gname(q%+44))...| 00001d50 1e 20 71 25 21 31 32 3d 71 25 21 38 3a 71 25 21 |. q%!12=q%!8:q%!| 00001d60 31 36 3d 33 3a 21 71 25 3d 36 34 0d 0b fe 2c 20 |16=3:!q%=64..., | 00001d70 c8 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 |.. "Wimp_SendMes| 00001d80 73 61 67 65 22 2c 31 37 2c 71 25 2c 71 25 21 32 |sage",17,q%,q%!2| 00001d90 30 2c 71 25 21 32 34 0d 0c 08 06 20 e1 0d 0c 12 |0,q%!24.... ....| 00001da0 05 20 0d 0c 1c 0f 20 dd f2 64 61 74 61 73 61 76 |. .... ..datasav| 00001db0 65 0d 0c 26 18 20 e7 20 71 25 21 34 3d 6f 75 72 |e..&. . q%!4=our| 00001dc0 68 61 6e 64 6c 65 25 20 e1 0d 0c 30 0f 20 c8 8e |handle% ...0. ..| 00001dd0 20 71 25 21 34 30 20 ca 0d 0c 3a 0b 20 c9 20 26 | q%!40 ...:. . &| 00001de0 46 46 46 0d 0c 44 5d 20 c8 99 20 22 58 4f 53 5f |FFF..D] .. "XOS_| 00001df0 52 65 61 64 56 61 72 56 61 6c 22 2c 22 57 69 6d |ReadVarVal","Wim| 00001e00 70 24 53 63 72 61 70 22 2c 2c 2d 31 2c 30 2c 33 |p$Scrap",,-1,0,3| 00001e10 20 b8 20 2c 2c 41 25 3a e7 20 41 25 3d 30 20 85 | . ,,A%:. A%=0 .| 00001e20 20 65 72 6f 25 2c 22 3c 57 69 6d 70 24 53 63 72 | ero%,"<Wimp$Scr| 00001e30 61 70 3e 20 6e 6f 74 20 64 65 66 69 6e 65 64 22 |ap> not defined"| 00001e40 0d 0c 4e 19 20 73 63 72 61 70 24 3d a4 67 6e 61 |..N. scrap$=.gna| 00001e50 6d 65 28 71 25 2b 34 34 29 0d 0c 58 3b 20 24 28 |me(q%+44)..X; $(| 00001e60 71 25 2b 34 34 29 3d 22 3c 57 69 6d 70 24 53 63 |q%+44)="<Wimp$Sc| 00001e70 72 61 70 3e 22 2b bd 30 3a 21 71 25 3d 28 34 38 |rap>"+.0:!q%=(48| 00001e80 2b a9 22 3c 57 69 6d 70 24 53 63 72 61 70 3e 22 |+."<Wimp$Scrap>"| 00001e90 29 80 ac 33 0d 0c 62 41 20 71 25 21 31 32 3d 71 |)..3..bA q%!12=q| 00001ea0 25 21 38 3a 71 25 21 31 36 3d 32 3a 71 25 21 33 |%!8:q%!16=2:q%!3| 00001eb0 36 3d 2d 31 3a c8 99 20 22 57 69 6d 70 5f 53 65 |6=-1:.. "Wimp_Se| 00001ec0 6e 64 4d 65 73 73 61 67 65 22 2c 31 37 2c 71 25 |ndMessage",17,q%| 00001ed0 2c 71 25 21 34 0d 0c 6c 10 20 73 63 72 61 70 25 |,q%!4..l. scrap%| 00001ee0 3d 71 25 21 38 0d 0c 76 06 20 cb 0d 0c 80 06 20 |=q%!8..v. ..... | 00001ef0 e1 0d 0c 8a 05 20 0d 0c 94 13 20 dd f2 64 61 74 |..... .... ..dat| 00001f00 61 6c 6f 61 64 28 71 25 29 0d 0c 9e 1b 20 72 65 |aload(q%).... re| 00001f10 66 25 3d 71 25 21 31 32 3a e7 20 71 25 21 31 36 |f%=q%!12:. q%!16| 00001f20 3d 35 20 e1 0d 0c a8 24 20 56 6e 61 6d 24 3d a4 |=5 ....$ Vnam$=.| 00001f30 67 6e 61 6d 65 28 71 25 2b 34 34 29 3a 57 69 6e |gname(q%+44):Win| 00001f40 64 25 3d 71 25 21 32 30 0d 0c b2 0e 20 47 47 25 |d%=q%!20.... GG%| 00001f50 3d 71 25 21 34 30 0d 0c bc 0d 20 c8 8e 20 47 47 |=q%!40.... .. GG| 00001f60 25 20 ca 0d 0c c6 19 20 c9 20 26 46 46 46 3a 20 |% ..... . &FFF: | 00001f70 f2 6c 6f 61 64 28 56 6e 61 6d 24 29 0d 0c d0 06 |.load(Vnam$)....| 00001f80 20 cb 0d 0c da 06 20 e1 0d 0c e4 05 20 0d 0c ee | ..... ..... ...| 00001f90 0f 20 dd f2 6c 6f 61 64 28 41 24 29 0d 0c f8 2d |. ..load(A$)...-| 00001fa0 20 c8 99 20 22 4f 53 5f 46 69 6c 65 22 2c 35 2c | .. "OS_File",5,| 00001fb0 41 24 20 b8 20 52 52 30 25 2c 2c 52 52 32 25 2c |A$ . RR0%,,RR2%,| 00001fc0 52 52 33 25 2c 52 52 34 25 0d 0d 02 10 20 e7 20 |RR3%,RR4%.... . | 00001fd0 52 52 30 25 3c 3e 31 20 e1 0d 0d 0c 22 20 46 25 |RR0%<>1 ...." F%| 00001fe0 3d b9 3a e7 20 28 4d 45 4d 2d 32 35 36 29 2d 74 |=.:. (MEM-256)-t| 00001ff0 65 78 74 3c 3d 52 52 34 25 20 8c 0d 0d 16 36 20 |ext<=RR4% ....6 | 00002000 f5 20 46 25 3d a4 73 6c 6f 74 28 70 61 67 65 25 |. F%=.slot(page%| 00002010 2c 2d 31 29 3a fd 20 46 25 3d a3 20 84 20 28 4d |,-1):. F%=. . (M| 00002020 45 4d 2d 32 35 36 29 2d 74 65 78 74 3e 52 52 34 |EM-256)-text>RR4| 00002030 25 0d 0d 20 06 20 cd 0d 0d 2a 0d 20 e7 20 46 25 |%.. . ...*. . F%| 00002040 3d b9 20 8c 0d 0d 34 1d 20 c8 99 20 22 4f 53 5f |=. ...4. .. "OS_| 00002050 46 69 6c 65 22 2c 26 46 46 2c 41 24 2c 74 65 78 |File",&FF,A$,tex| 00002060 74 0d 0d 3e 11 20 f2 61 63 6b 6c 6f 61 64 28 71 |t..>. .ackload(q| 00002070 25 29 0d 0d 48 28 20 74 65 78 74 73 69 7a 65 25 |%)..H( textsize%| 00002080 3d 52 52 34 25 3a 70 6f 6c 6c 5f 6d 61 73 6b 25 |=RR4%:poll_mask%| 00002090 3d 30 3a 72 65 61 64 25 3d 30 0d 0d 52 0f 20 f2 |=0:read%=0..R. .| 000020a0 73 65 74 6d 65 6d 6f 72 79 0d 0d 5c 06 20 cd 0d |setmemory..\. ..| 000020b0 0d 66 06 20 e1 0d 0d 70 05 20 0d 0d 7a 12 20 dd |.f. ...p. ..z. .| 000020c0 f2 61 63 6b 6c 6f 61 64 28 71 25 29 0d 0d 84 1e |.ackload(q%)....| 000020d0 20 71 25 21 31 32 3d 71 25 21 38 3a 71 25 21 31 | q%!12=q%!8:q%!1| 000020e0 36 3d 34 3a 21 71 25 3d 36 34 0d 0d 8e 25 20 c8 |6=4:!q%=64...% .| 000020f0 99 20 22 57 69 6d 70 5f 53 65 6e 64 4d 65 73 73 |. "Wimp_SendMess| 00002100 61 67 65 22 2c 31 37 2c 71 25 2c 71 25 21 34 0d |age",17,q%,q%!4.| 00002110 0d 98 06 20 e1 0d 0d a2 05 20 0d 0d ac 05 20 0d |... ..... .... .| 00002120 0d b6 0c 20 dd f2 6a 62 64 70 32 0d 0d b7 06 20 |... ..jbdp2.... | 00002130 e1 0d 0d c0 1a 20 c8 99 20 38 2c 31 33 2c 62 24 |..... .. 8,13,b$| 00002140 2c 2c 2c 6a 24 20 b8 20 52 30 25 0d 0d ca 10 20 |,,,j$ . R0%.... | 00002150 e7 20 52 30 25 3d 30 20 8c 20 e0 0d 0d d4 06 20 |. R0%=0 . ..... | 00002160 e1 0d 0d de 05 20 0d 0d e8 05 20 0d 0d f2 05 20 |..... .... .... | 00002170 0d 0d fc 12 20 dd a4 73 6c 6f 74 28 4b 25 2c 4d |.... ..slot(K%,M| 00002180 25 29 0d 0e 06 12 20 ea 20 54 25 2c 53 25 2c 4d |%).... . T%,S%,M| 00002190 25 2c 46 25 0d 0e 10 26 20 c8 99 20 22 57 69 6d |%,F%...& .. "Wim| 000021a0 70 5f 53 6c 6f 74 53 69 7a 65 22 2c 2d 31 2c 2d |p_SlotSize",-1,-| 000021b0 31 20 b8 20 54 25 2c 2c 53 25 0d 0e 1a 0f 20 e7 |1 . T%,,S%.... .| 000021c0 20 53 25 3e 3d 4b 25 20 8c 0d 0e 24 20 20 c8 99 | S%>=K% ...$ ..| 000021d0 20 22 57 69 6d 70 5f 53 6c 6f 74 53 69 7a 65 22 | "Wimp_SlotSize"| 000021e0 2c 54 25 2b 4b 25 2c 2d 31 0d 0e 2e 09 20 46 25 |,T%+K%,-1.... F%| 000021f0 3d b9 0d 0e 38 06 20 cc 0d 0e 42 0f 20 f2 73 65 |=...8. ...B. .se| 00002200 74 6d 65 6d 6f 72 79 0d 0e 4c 48 20 24 74 65 6d |tmemory..LH $tem| 00002210 70 25 3d 22 20 20 20 20 20 4f 75 74 20 6f 66 20 |p%=" Out of | 00002220 6d 65 6d 6f 72 79 22 3a c8 99 20 22 57 69 6d 70 |memory":.. "Wimp| 00002230 5f 52 65 70 6f 72 74 45 72 72 6f 72 22 2c 74 65 |_ReportError",te| 00002240 6d 70 25 2c 31 2c 22 53 70 65 65 63 68 21 22 0d |mp%,1,"Speech!".| 00002250 0e 56 09 20 46 25 3d a3 0d 0e 60 06 20 cd 0d 0e |.V. F%=...`. ...| 00002260 6a 2f 20 c8 99 20 22 57 69 6d 70 5f 53 6c 6f 74 |j/ .. "Wimp_Slot| 00002270 53 69 7a 65 22 2c 2d 31 2c 2d 31 20 b8 20 4d 45 |Size",-1,-1 . ME| 00002280 4d 3a 4d 45 4d 3d 4d 45 4d 2d 32 35 36 0d 0e 74 |M:MEM=MEM-256..t| 00002290 07 3d 46 25 0d 0e 7e 0c 20 dd f2 6a 62 64 70 33 |.=F%..~. ..jbdp3| 000022a0 0d 0e 7f 06 20 e1 0d 0e 88 13 20 ea 20 66 6c 61 |.... ..... . fla| 000022b0 67 73 2c 64 75 6d 6d 79 25 0d 0e 92 18 20 64 75 |gs,dummy%.... du| 000022c0 6d 6d 79 25 3d 28 37 39 2a 32 29 2a 26 31 34 30 |mmy%=(79*2)*&140| 000022d0 30 0d 0e 9c 25 20 c8 99 20 26 36 30 32 34 30 2c |0...% .. &60240,| 000022e0 2c 30 2c 64 75 6d 6d 79 25 2c 30 2c 31 20 b8 20 |,0,dummy%,0,1 . | 000022f0 3b 66 6c 61 67 73 0d 0e a6 1b 20 e7 20 28 ac 20 |;flags.... . (. | 00002300 2d 28 66 6c 61 67 73 20 80 20 31 29 29 20 8c 20 |-(flags . 1)) . | 00002310 e0 0d 0e b0 06 20 e1 0d 0e ba 05 20 0d 0e c4 10 |..... ..... ....| 00002320 20 dd f2 64 6f 63 6f 6d 6d 61 6e 64 0d 0e ce 18 | ..docommand....| 00002330 20 45 24 3d c1 73 61 79 24 2c 32 2c a9 73 61 79 | E$=.say$,2,.say| 00002340 24 2d 32 29 0d 0e d8 33 20 45 25 3d a9 45 24 2b |$-2)...3 E%=.E$+| 00002350 31 3a f5 20 45 25 2d 3d 31 3a 4e 25 3d 97 c1 45 |1:. E%-=1:N%=..E| 00002360 24 2c 45 25 2c 31 29 3a fd 20 4e 25 3c 34 38 20 |$,E%,1):. N%<48 | 00002370 84 20 4e 25 3e 35 37 0d 0e e2 28 20 e7 20 45 25 |. N%>57...( . E%| 00002380 3d a9 45 24 20 4e 25 3d 30 20 8b 20 4e 25 3d a0 |=.E$ N%=0 . N%=.| 00002390 28 c1 45 24 2c 45 25 2b 31 2c a9 45 24 29 29 0d |(.E$,E%+1,.E$)).| 000023a0 0e ec 0f 20 45 24 3d c0 45 24 2c 45 25 29 0d 0e |... E$=.E$,E%)..| 000023b0 f6 39 20 4e 24 3d 22 22 3a e3 54 25 3d 31 20 b8 |.9 N$="":.T%=1 .| 000023c0 20 a9 45 24 3a 4e 24 3d 4e 24 2b bd 28 97 c1 45 | .E$:N$=N$+.(..E| 000023d0 24 2c 54 25 2c 31 29 84 33 32 29 3a ed 3a 4e 24 |$,T%,1).32):.:N$| 000023e0 3d 4e 24 2b 22 20 22 0d 0f 00 19 20 4e 24 3d c0 |=N$+" ".... N$=.| 000023f0 4e 24 2c a7 4e 24 2c 22 20 22 2c 30 29 2d 31 29 |N$,.N$," ",0)-1)| 00002400 0d 0f 0a 0c 20 c8 8e 20 4e 24 20 ca 0d 0f 14 31 |.... .. N$ ....1| 00002410 20 c9 20 22 70 69 74 63 68 22 3a e7 20 4e 25 3e | . "pitch":. N%>| 00002420 3d 30 20 80 20 4e 25 3c 3d 32 30 30 20 70 69 74 |=0 . N%<=200 pit| 00002430 63 68 25 3d 4e 25 3a f2 70 69 74 63 68 0d 0f 1e |ch%=N%:.pitch...| 00002440 31 20 c9 20 22 73 70 65 65 64 22 3a e7 20 4e 25 |1 . "speed":. N%| 00002450 3e 3d 30 20 80 20 4e 25 3c 3d 32 30 30 20 73 70 |>=0 . N%<=200 sp| 00002460 65 65 64 25 3d 4e 25 3a f2 73 70 65 65 64 0d 0f |eed%=N%:.speed..| 00002470 28 34 20 c9 20 22 74 6f 6e 67 75 65 22 3a e7 20 |(4 . "tongue":. | 00002480 4e 25 3e 3d 30 20 80 20 4e 25 3c 3d 32 35 35 20 |N%>=0 . N%<=255 | 00002490 74 6f 6e 67 75 65 25 3d 4e 25 3a f2 74 6f 6e 67 |tongue%=N%:.tong| 000024a0 75 65 0d 0f 32 31 20 c9 20 22 6d 6f 75 74 68 22 |ue..21 . "mouth"| 000024b0 3a e7 20 4e 25 3e 3d 30 20 80 20 4e 25 3c 3d 32 |:. N%>=0 . N%<=2| 000024c0 35 35 20 6d 6f 75 74 68 25 3d 4e 25 3a f2 6d 6f |55 mouth%=N%:.mo| 000024d0 75 74 68 0d 0f 3c 22 20 c9 20 22 70 68 6f 6e 65 |uth..<" . "phone| 000024e0 6d 65 73 22 3a 70 68 6f 25 3d 31 3a f2 70 68 6f |mes":pho%=1:.pho| 000024f0 6e 65 6d 65 73 0d 0f 46 1f 20 c9 20 22 77 6f 72 |nemes..F. . "wor| 00002500 64 73 22 3a 70 68 6f 25 3d 30 3a f2 70 68 6f 6e |ds":pho%=0:.phon| 00002510 65 6d 65 73 0d 0f 50 31 20 c9 20 22 6c 65 76 65 |emes..P1 . "leve| 00002520 6c 22 3a e7 20 4e 25 3e 3d 30 20 80 20 4e 25 3c |l":. N%>=0 . N%<| 00002530 3d 31 32 38 20 6c 65 76 65 6c 25 3d 4e 25 3a f2 |=128 level%=N%:.| 00002540 6c 65 76 65 6c 0d 0f 5a 6a 20 c9 20 22 72 65 73 |level..Zj . "res| 00002550 65 74 22 3a 70 69 74 63 68 25 3d 31 32 38 3a f2 |et":pitch%=128:.| 00002560 70 69 74 63 68 3a 73 70 65 65 64 25 3d 31 32 38 |pitch:speed%=128| 00002570 3a f2 73 70 65 65 64 3a 74 6f 6e 67 75 65 25 3d |:.speed:tongue%=| 00002580 31 32 38 3a f2 74 6f 6e 67 75 65 3a 6d 6f 75 74 |128:.tongue:mout| 00002590 68 25 3d 31 32 38 3a f2 6d 6f 75 74 68 3a 6c 65 |h%=128:.mouth:le| 000025a0 76 65 6c 25 3d 31 32 38 3a f2 6c 65 76 65 6c 0d |vel%=128:.level.| 000025b0 0f 64 0b 20 7f 3a 46 25 3d a3 0d 0f 6e 06 20 cb |.d. .:F%=...n. .| 000025c0 0d 0f 78 06 20 e1 0d 0f 82 05 20 0d 0f 8c 0e 20 |..x. ..... .... | 000025d0 dd f2 64 6f 73 70 65 61 6b 0d 0f 96 11 20 e7 20 |..dospeak.... . | 000025e0 72 65 61 64 25 3d 2d 31 20 e1 0d 0f a0 26 20 e7 |read%=-1 ....& .| 000025f0 20 73 74 61 72 74 65 64 25 3d b9 20 80 20 72 65 | started%=. . re| 00002600 61 64 25 3c 3e 74 65 78 74 73 69 7a 65 25 20 8c |ad%<>textsize% .| 00002610 0d 0f aa 1b 20 41 24 3d 22 22 3a 44 25 3d 30 3a |.... A$="":D%=0:| 00002620 52 25 3d 30 3a 46 25 3d 30 3a f5 0d 0f b4 26 20 |R%=0:F%=0:....& | 00002630 45 25 3d 3f 28 74 65 78 74 2b 72 65 61 64 25 29 |E%=?(text+read%)| 00002640 3a e7 20 45 25 3d 97 22 22 22 22 20 45 25 3d 33 |:. E%=."""" E%=3| 00002650 32 0d 0f be 18 20 e7 20 45 25 3d 39 31 20 80 20 |2.... . E%=91 . | 00002660 52 25 3d 30 20 46 25 3d b9 0d 0f c8 3e 20 45 24 |R%=0 F%=....> E$| 00002670 3d bd 45 25 3a e7 20 45 25 3c 33 33 20 80 20 44 |=.E%:. E%<33 . D| 00002680 25 3d b9 20 45 24 3d 22 20 22 3a 41 24 2b 3d 45 |%=. E$=" ":A$+=E| 00002690 24 20 8b 20 e7 20 45 25 3e 33 32 20 41 24 2b 3d |$ . . E%>32 A$+=| 000026a0 45 24 3a 44 25 3d b9 0d 0f d2 2a 20 72 65 61 64 |E$:D%=....* read| 000026b0 25 2b 3d 31 3a 52 25 2b 3d 31 3a e7 20 52 25 3e |%+=1:R%+=1:. R%>| 000026c0 32 30 30 20 80 20 45 24 3d 22 20 22 20 45 25 3d |200 . E$=" " E%=| 000026d0 30 0d 0f dc 5b 20 fd 20 45 24 3d 22 2e 22 20 84 |0...[ . E$="." .| 000026e0 20 45 25 3d 30 20 84 20 45 25 3d 31 30 20 84 20 | E%=0 . E%=10 . | 000026f0 45 24 3d 22 3f 22 20 84 20 45 24 3d 22 21 22 20 |E$="?" . E$="!" | 00002700 84 20 45 24 3d 22 5d 22 20 84 20 28 45 24 3d 22 |. E$="]" . (E$="| 00002710 5b 22 20 80 20 46 25 3d a3 29 20 84 20 72 65 61 |[" . F%=.) . rea| 00002720 64 25 3d 74 65 78 74 73 69 7a 65 25 0d 0f e6 2b |d%=textsize%...+| 00002730 20 e7 20 45 24 3d 22 5b 22 20 80 20 46 25 3d a3 | . E$="[" . F%=.| 00002740 20 72 65 61 64 25 2d 3d 31 3a 41 24 3d c0 41 24 | read%-=1:A$=.A$| 00002750 2c a9 41 24 2d 31 29 0d 0f f0 17 20 73 74 61 72 |,.A$-1).... star| 00002760 74 65 64 25 3d a3 3a 73 61 79 24 3d 41 24 0d 0f |ted%=.:say$=A$..| 00002770 fa 06 20 cd 0d 10 04 23 20 c8 99 20 22 53 70 63 |.. ....# .. "Spc| 00002780 68 5f 52 65 61 64 79 3f 22 20 b8 20 41 25 3a e7 |h_Ready?" . A%:.| 00002790 20 41 25 3d a3 20 e1 0d 10 0e 50 20 e7 20 73 74 | A%=. ....P . st| 000027a0 61 72 74 65 64 25 3d b9 20 80 20 72 65 61 64 25 |arted%=. . read%| 000027b0 3d 74 65 78 74 73 69 7a 65 25 20 70 6f 6c 6c 5f |=textsize% poll_| 000027c0 6d 61 73 6b 25 3d 31 3a 72 65 61 64 25 3d 2d 31 |mask%=1:read%=-1| 000027d0 3a c8 99 20 22 53 70 63 68 5f 4f 6c 64 63 68 61 |:.. "Spch_Oldcha| 000027e0 6e 6e 65 6c 22 3a e1 0d 10 18 0f 20 73 74 61 72 |nnel":..... star| 000027f0 74 65 64 25 3d b9 0d 10 22 16 20 e7 20 46 25 3d |ted%=...". . F%=| 00002800 b9 20 f2 64 6f 63 6f 6d 6d 61 6e 64 0d 10 2c 46 |. .docommand..,F| 00002810 20 e7 20 44 25 3d b9 20 80 20 46 25 3d a3 20 24 | . D%=. . F%=. $| 00002820 28 6d 61 69 6e 69 6e 64 25 29 3d 73 61 79 24 3a |(mainind%)=say$:| 00002830 f2 72 65 70 72 69 6e 74 69 63 6f 6e 28 77 5f 6d |.reprinticon(w_m| 00002840 61 69 6e 25 2c 30 29 3a f2 73 61 79 73 74 72 69 |ain%,0):.saystri| 00002850 6e 67 0d 10 36 06 20 e1 0d 10 40 05 20 0d 10 4a |ng..6. ...@. ..J| 00002860 10 20 dd f2 73 61 79 73 74 72 69 6e 67 0d 10 54 |. ..saystring..T| 00002870 05 20 0d 10 5e 17 20 41 24 3d 24 28 6d 61 69 6e |. ..^. A$=$(main| 00002880 69 6e 64 25 29 2b bd 31 33 0d 10 68 19 20 ee 20 |ind%)+.13..h. . | 00002890 85 20 ea 20 f2 77 72 6f 6e 67 73 79 6e 74 61 78 |. . .wrongsyntax| 000028a0 3a e1 0d 10 72 32 20 c8 99 20 22 53 70 63 68 5f |:...r2 .. "Spch_| 000028b0 50 69 74 63 68 22 2c 70 69 74 63 68 25 3a c8 99 |Pitch",pitch%:..| 000028c0 20 22 53 70 63 68 5f 53 70 65 65 64 22 2c 73 70 | "Spch_Speed",sp| 000028d0 65 65 64 25 0d 10 7c 4b 20 c8 99 20 22 53 70 63 |eed%..|K .. "Spc| 000028e0 68 5f 4d 6f 75 74 68 22 2c 6d 6f 75 74 68 25 3a |h_Mouth",mouth%:| 000028f0 c8 99 20 22 53 70 63 68 5f 54 6f 6e 67 75 65 22 |.. "Spch_Tongue"| 00002900 2c 74 6f 6e 67 75 65 25 3a c8 99 20 22 53 70 63 |,tongue%:.. "Spc| 00002910 68 5f 4c 65 76 65 6c 22 2c 6c 65 76 65 6c 25 0d |h_Level",level%.| 00002920 10 86 09 20 ef 20 32 31 0d 10 90 0e 20 c8 8e 20 |... . 21.... .. | 00002930 70 68 6f 25 20 ca 0d 10 9a 19 20 c9 20 30 3a c8 |pho% ..... . 0:.| 00002940 99 20 22 53 70 63 68 5f 53 61 79 22 2c 41 24 0d |. "Spch_Say",A$.| 00002950 10 a4 1b 20 c9 20 31 3a c8 99 20 22 53 70 63 68 |... . 1:.. "Spch| 00002960 5f 53 70 65 61 6b 22 2c 41 24 0d 10 ae 06 20 cb |_Speak",A$.... .| 00002970 0d 10 b8 08 20 ef 20 36 0d 10 c2 06 20 e1 0d 10 |.... . 6.... ...| 00002980 cc 12 20 dd f2 77 72 6f 6e 67 73 79 6e 74 61 78 |.. ..wrongsyntax| 00002990 0d 10 d6 08 20 ef 20 36 0d 10 e0 2d 20 e7 20 9f |.... . 6...- . .| 000029a0 3c 26 38 30 34 43 30 30 20 84 20 9f 3e 26 38 30 |<&804C00 . .>&80| 000029b0 34 43 46 46 20 f2 65 72 72 6f 72 28 9f 2c f6 24 |4CFF .error(.,.$| 000029c0 2c 9e 29 3a e1 0d 10 ea 19 20 c8 99 20 22 53 70 |,.):..... .. "Sp| 000029d0 63 68 5f 4f 6c 64 63 68 61 6e 6e 65 6c 22 0d 10 |ch_Oldchannel"..| 000029e0 f4 51 20 e7 20 6f 70 65 6e 3d b9 20 c8 99 20 22 |.Q . open=. .. "| 000029f0 53 70 63 68 5f 45 72 72 6f 72 22 20 b8 20 41 25 |Spch_Error" . A%| 00002a00 3a c8 99 20 22 57 69 6d 70 5f 53 65 74 43 61 72 |:.. "Wimp_SetCar| 00002a10 65 74 50 6f 73 69 74 69 6f 6e 22 2c 77 5f 6d 61 |etPosition",w_ma| 00002a20 69 6e 25 2c 30 2c 30 2c 30 2c 2d 31 2c 41 25 0d |in%,0,0,0,-1,A%.| 00002a30 10 fe 26 20 e7 20 72 65 61 64 25 3c 3e 2d 31 20 |..& . read%<>-1 | 00002a40 70 6f 6c 6c 5f 6d 61 73 6b 25 3d 31 3a 72 65 61 |poll_mask%=1:rea| 00002a50 64 25 3d 2d 31 0d 11 08 1c 20 45 24 3d f6 24 3a |d%=-1.... E$=.$:| 00002a60 41 25 3d a4 63 68 65 63 6b 4f 4b 28 45 24 2c 31 |A%=.checkOK(E$,1| 00002a70 29 0d 11 12 06 20 e1 0d 11 1c 0f 20 dd f2 73 74 |).... ..... ..st| 00002a80 6f 70 74 61 6c 6b 0d 11 26 2b 20 70 6f 6c 6c 5f |optalk..&+ poll_| 00002a90 6d 61 73 6b 25 3d 31 3a 72 65 61 64 25 3d 2d 31 |mask%=1:read%=-1| 00002aa0 3a f2 77 69 70 65 3a 73 74 61 72 74 65 64 25 3d |:.wipe:started%=| 00002ab0 b9 0d 11 30 19 20 c8 99 20 22 53 70 63 68 5f 4f |...0. .. "Spch_O| 00002ac0 6c 64 63 68 61 6e 6e 65 6c 22 0d 11 3a 06 20 e1 |ldchannel"..:. .| 00002ad0 0d 11 44 05 20 0d 11 4e 0b 20 dd f2 77 69 70 65 |..D. ..N. ..wipe| 00002ae0 0d 11 58 39 20 e7 20 77 5f 6d 61 69 6e 25 3c 3e |..X9 . w_main%<>| 00002af0 2d 31 20 24 28 6d 61 69 6e 69 6e 64 25 29 3d 22 |-1 $(mainind%)="| 00002b00 22 3a f2 72 65 70 72 69 6e 74 69 63 6f 6e 28 77 |":.reprinticon(w| 00002b10 5f 6d 61 69 6e 25 2c 30 29 0d 11 62 3c 20 e7 20 |_main%,0)..b< . | 00002b20 6f 70 65 6e 3d b9 20 c8 99 20 22 57 69 6d 70 5f |open=. .. "Wimp_| 00002b30 53 65 74 43 61 72 65 74 50 6f 73 69 74 69 6f 6e |SetCaretPosition| 00002b40 22 2c 77 5f 6d 61 69 6e 25 2c 30 2c 30 2c 30 2c |",w_main%,0,0,0,| 00002b50 2d 31 2c 2d 31 0d 11 6c 06 20 e1 0d 11 76 05 20 |-1,-1..l. ...v. | 00002b60 0d 11 80 3e 20 dd f2 70 69 74 63 68 3a 24 28 6d |...> ..pitch:$(m| 00002b70 61 69 6e 69 6e 64 25 2b 32 35 35 29 3d c3 70 69 |ainind%+255)=.pi| 00002b80 74 63 68 25 3a f2 72 65 70 72 69 6e 74 69 63 6f |tch%:.reprintico| 00002b90 6e 28 77 5f 6d 61 69 6e 25 2c 35 29 3a e1 0d 11 |n(w_main%,5):...| 00002ba0 8a 40 20 dd f2 73 70 65 65 64 3a 24 28 6d 61 69 |.@ ..speed:$(mai| 00002bb0 6e 69 6e 64 25 2b 32 35 35 2b 34 29 3d c3 73 70 |nind%+255+4)=.sp| 00002bc0 65 65 64 25 3a f2 72 65 70 72 69 6e 74 69 63 6f |eed%:.reprintico| 00002bd0 6e 28 77 5f 6d 61 69 6e 25 2c 36 29 3a e1 0d 11 |n(w_main%,6):...| 00002be0 94 41 20 dd f2 6d 6f 75 74 68 3a 24 28 6d 61 69 |.A ..mouth:$(mai| 00002bf0 6e 69 6e 64 25 2b 32 35 35 2b 31 32 29 3d c3 6d |nind%+255+12)=.m| 00002c00 6f 75 74 68 25 3a f2 72 65 70 72 69 6e 74 69 63 |outh%:.reprintic| 00002c10 6f 6e 28 77 5f 6d 61 69 6e 25 2c 38 29 3a e1 0d |on(w_main%,8):..| 00002c20 11 9e 42 20 dd f2 74 6f 6e 67 75 65 3a 24 28 6d |..B ..tongue:$(m| 00002c30 61 69 6e 69 6e 64 25 2b 32 35 35 2b 38 29 3d c3 |ainind%+255+8)=.| 00002c40 74 6f 6e 67 75 65 25 3a f2 72 65 70 72 69 6e 74 |tongue%:.reprint| 00002c50 69 63 6f 6e 28 77 5f 6d 61 69 6e 25 2c 37 29 3a |icon(w_main%,7):| 00002c60 e1 0d 11 a8 0f 20 dd f2 70 68 6f 6e 65 6d 65 73 |..... ..phonemes| 00002c70 0d 11 b2 2b 20 e7 20 70 68 6f 25 3d 31 20 24 28 |...+ . pho%=1 $(| 00002c80 6d 61 69 6e 69 6e 64 25 2b 32 35 35 2b 31 36 29 |mainind%+255+16)| 00002c90 3d 22 50 68 6f 6e 65 6d 65 73 22 0d 11 bc 28 20 |="Phonemes"...( | 00002ca0 e7 20 70 68 6f 25 3d 30 20 24 28 6d 61 69 6e 69 |. pho%=0 $(maini| 00002cb0 6e 64 25 2b 32 35 35 2b 31 36 29 3d 22 57 6f 72 |nd%+255+16)="Wor| 00002cc0 64 73 22 0d 11 c6 1f 20 f2 72 65 70 72 69 6e 74 |ds".... .reprint| 00002cd0 69 63 6f 6e 28 77 5f 6d 61 69 6e 25 2c 31 37 29 |icon(w_main%,17)| 00002ce0 3a e1 0d 11 d0 05 20 0d 11 da 59 20 dd f2 6c 65 |:..... ...Y ..le| 00002cf0 76 65 6c 3a 24 28 6d 61 69 6e 69 6e 64 25 2b 32 |vel:$(mainind%+2| 00002d00 35 35 2b 32 38 29 3d c3 6c 65 76 65 6c 25 3a f2 |55+28)=.level%:.| 00002d10 72 65 70 72 69 6e 74 69 63 6f 6e 28 77 5f 6d 61 |reprinticon(w_ma| 00002d20 69 6e 25 2c 32 31 29 3a c8 99 20 22 53 70 63 68 |in%,21):.. "Spch| 00002d30 5f 4c 65 76 65 6c 22 2c 6c 65 76 65 6c 25 3a e1 |_Level",level%:.| 00002d40 0d 11 e4 05 20 0d 11 ee 0e 20 dd f2 68 69 74 6d |.... .... ..hitm| 00002d50 61 69 6e 0d 11 f8 10 20 e7 20 62 75 74 74 25 3d |ain.... . butt%=| 00002d60 31 20 8c 0d 12 02 4b 20 e7 20 28 69 63 6f 6e 25 |1 ....K . (icon%| 00002d70 3d 39 20 84 20 69 63 6f 6e 25 3d 31 31 20 84 20 |=9 . icon%=11 . | 00002d80 69 63 6f 6e 25 3d 31 35 20 84 20 69 63 6f 6e 25 |icon%=15 . icon%| 00002d90 3d 31 33 20 84 20 69 63 6f 6e 25 3d 32 32 29 20 |=13 . icon%=22) | 00002da0 69 63 6f 6e 25 2b 3d 31 3a e5 8d 54 56 52 0d 12 |icon%+=1:..TVR..| 00002db0 0c 46 20 e7 20 28 69 63 6f 6e 25 3d 31 30 20 84 |.F . (icon%=10 .| 00002dc0 20 69 63 6f 6e 25 3d 31 32 20 84 20 69 63 6f 6e | icon%=12 . icon| 00002dd0 25 3d 31 36 20 84 20 69 63 6f 6e 25 3d 31 34 20 |%=16 . icon%=14 | 00002de0 84 20 69 63 6f 6e 25 3d 32 33 29 20 69 63 6f 6e |. icon%=23) icon| 00002df0 25 2d 3d 31 0d 12 16 06 20 cd 0d 12 20 0f 20 c8 |%-=1.... ... . .| 00002e00 8e 20 69 63 6f 6e 25 20 ca 0d 12 2a 1a 20 c9 20 |. icon% ...*. . | 00002e10 31 3a 70 69 74 63 68 25 3d 31 32 38 3a f2 70 69 |1:pitch%=128:.pi| 00002e20 74 63 68 0d 12 34 1a 20 c9 20 32 3a 73 70 65 65 |tch..4. . 2:spee| 00002e30 64 25 3d 31 32 38 3a f2 73 70 65 65 64 0d 12 3e |d%=128:.speed..>| 00002e40 1c 20 c9 20 34 3a 74 6f 6e 67 75 65 25 3d 31 32 |. . 4:tongue%=12| 00002e50 38 3a f2 74 6f 6e 67 75 65 0d 12 48 1a 20 c9 20 |8:.tongue..H. . | 00002e60 33 3a 6d 6f 75 74 68 25 3d 31 32 38 3a f2 6d 6f |3:mouth%=128:.mo| 00002e70 75 74 68 0d 12 52 26 20 c9 20 39 3a e7 20 70 69 |uth..R& . 9:. pi| 00002e80 74 63 68 25 3c 32 30 30 20 70 69 74 63 68 25 2b |tch%<200 pitch%+| 00002e90 3d 31 3a f2 70 69 74 63 68 0d 12 5c 25 20 c9 20 |=1:.pitch..\% . | 00002ea0 31 30 3a e7 20 70 69 74 63 68 25 3e 30 20 70 69 |10:. pitch%>0 pi| 00002eb0 74 63 68 25 2d 3d 31 3a f2 70 69 74 63 68 0d 12 |tch%-=1:.pitch..| 00002ec0 66 27 20 c9 20 31 31 3a e7 20 73 70 65 65 64 25 |f' . 11:. speed%| 00002ed0 3c 32 30 30 20 73 70 65 65 64 25 2b 3d 31 3a f2 |<200 speed%+=1:.| 00002ee0 73 70 65 65 64 0d 12 70 25 20 c9 20 31 32 3a e7 |speed..p% . 12:.| 00002ef0 20 73 70 65 65 64 25 3e 30 20 73 70 65 65 64 25 | speed%>0 speed%| 00002f00 2d 3d 31 3a f2 73 70 65 65 64 0d 12 7a 2a 20 c9 |-=1:.speed..z* .| 00002f10 20 31 33 3a e7 20 74 6f 6e 67 75 65 25 3c 32 35 | 13:. tongue%<25| 00002f20 35 20 74 6f 6e 67 75 65 25 2b 3d 31 3a f2 74 6f |5 tongue%+=1:.to| 00002f30 6e 67 75 65 0d 12 84 28 20 c9 20 31 34 3a e7 20 |ngue...( . 14:. | 00002f40 74 6f 6e 67 75 65 25 3e 30 20 74 6f 6e 67 75 65 |tongue%>0 tongue| 00002f50 25 2d 3d 31 3a f2 74 6f 6e 67 75 65 0d 12 8e 27 |%-=1:.tongue...'| 00002f60 20 c9 20 31 35 3a e7 20 6d 6f 75 74 68 25 3c 32 | . 15:. mouth%<2| 00002f70 35 35 20 6d 6f 75 74 68 25 2b 3d 31 3a f2 6d 6f |55 mouth%+=1:.mo| 00002f80 75 74 68 0d 12 98 25 20 c9 20 31 36 3a e7 20 6d |uth...% . 16:. m| 00002f90 6f 75 74 68 25 3e 30 20 6d 6f 75 74 68 25 2d 3d |outh%>0 mouth%-=| 00002fa0 31 3a f2 6d 6f 75 74 68 0d 12 a2 1f 20 c9 20 31 |1:.mouth.... . 1| 00002fb0 37 3a 70 68 6f 25 3d 70 68 6f 25 82 31 3a f2 70 |7:pho%=pho%.1:.p| 00002fc0 68 6f 6e 65 6d 65 73 0d 12 ac 13 20 c9 20 31 39 |honemes.... . 19| 00002fd0 3a ef 20 37 3a f2 77 69 70 65 0d 12 b6 14 20 c9 |:. 7:.wipe.... .| 00002fe0 20 31 38 3a f2 73 61 79 73 74 72 69 6e 67 0d 12 | 18:.saystring..| 00002ff0 c0 1b 20 c9 20 32 30 3a 6c 65 76 65 6c 25 3d 31 |.. . 20:level%=1| 00003000 32 38 3a f2 6c 65 76 65 6c 0d 12 ca 27 20 c9 20 |28:.level...' . | 00003010 32 32 3a e7 20 6c 65 76 65 6c 25 3c 31 32 38 20 |22:. level%<128 | 00003020 6c 65 76 65 6c 25 2b 3d 31 3a f2 6c 65 76 65 6c |level%+=1:.level| 00003030 0d 12 d4 25 20 c9 20 32 33 3a e7 20 6c 65 76 65 |...% . 23:. leve| 00003040 6c 25 3e 30 20 6c 65 76 65 6c 25 2d 3d 31 3a f2 |l%>0 level%-=1:.| 00003050 6c 65 76 65 6c 0d 12 de 06 20 cb 0d 12 e8 0f 20 |level.... ..... | 00003060 59 59 59 25 3d 69 63 6f 6e 25 0d 12 f2 06 20 e1 |YYY%=icon%.... .| 00003070 0d ff |..| 00003072