Home » Archimedes archive » Acorn User » AU 1994-11.adf » !Saver_Saver » !MellowOut/!RunImage

!MellowOut/!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 » Acorn User » AU 1994-11.adf » !Saver_Saver
Filename: !MellowOut/!RunImage
Read OK:
File size: 67A8 bytes
Load address: 0000
Exec address: 0000
File contents
   10REM > !MellowOut.!RunImage
   20REM Version 0.10 (09-Aug-1994)
   30REM
   40REM by Peter Hartley at Iota Software 1994
   50REM
   60REM A screensaver that can play Iota films - even ones with
   70REM sounds in.
   80REM
   90REM Quick tour round the ingredients:
  100REM   * MellowOut module that increments a counter every time a
  110REM     key or mouse button is depressed, or whenever else there's
  120REM     an important event.
  130REM   * When there've been no events for a while, change mode and
  140REM     start playing a film.
  150REM   * Find the mode in the FULL(screen) chunk if it has one, or
  160REM     else in the ACEF(ilm) chunk.
  170REM   * Set up the palette from the PALE(tte) chunk if it has one.
  180REM   * Decide on film speed using the RATE chunk if it has one.
  190REM   * Call the IotaSound module so we can make the noises from
  200REM     its SOUN(d) chunk if it has one.
  210REM   * Then, expand frames from the ACEF chunk using EuclidX.
  220REM     At the same time, play frames of the soundtrack using
  230REM     IotaSound.
  240REM   * But if anything happens in the key or mouse departments,
  250REM     or if any window is opened on top of ours, go back to the
  260REM     desktop
  270REM
  280
  290claimed%=FALSE
  300ON ERROR ON ERROR OFF:PROClosesyncs:ERROR 0,"Internal error ("+REPORT$+" at line "+STR$ERL+")"
  310DIM block% 256, screenbuf% 128, buf% 100, pointer% 20
  320DIM delay%(6), pixtrans%16, factors%16, modesel%24
  330
  340delay%() = 30,60,120,300,600,900,1800 : REM seconds
  341
  342after%=0
  350
  360SYS "OS_Byte", 129, 0, 255 TO ,OSVersion%
  370RiscPC%=( OSVersion% >= 165 )
  380
  390!block%=0
  400SYS "Wimp_Initialise",310,&4B534154,"Mellow out",block%
  410SYS "IotaSound_RegisterApp"
  420wavetable%=0
  430film%=HIMEM
  440
  450PROCloadchoices( "<MellowOut$Dir>.!Choices" )
  460PROCinitwindows
  470PROCinitmenus
  480PROCloadfilm( "<MellowOut$Dir>.Film" )
  490quitapp%=FALSE
  500running%=FALSE
  510showsprite%=FALSE
  520spritex%=-1
  530J%=0
  540lastkp%=0
  550flycounter%=0
  560
  570SYS "OS_ReadMonotonicTime" TO lastkp%
  580
  590PROCmellowout_active( lastactive%, junk% )
  600SYS "Wimp_GetPointerInfo",,pointer%
  610mousex%=!pointer%
  620mousey%=pointer%!4
  630out$=""
  640
  650REPEAT
  660    SYS "Wimp_Poll",0,block% TO code%
  670    CASE code% OF
  680    WHEN 0:
  690        SYS "OS_ReadMonotonicTime" TO time%
  700        PROCmellowout_active( active%, junk% )
  710        SYS "Wimp_GetPointerInfo",,pointer%
  720        IF mousex%=-1 THEN mousex%=!pointer%:mousey%=pointer%!4
  730        IF active%<>lastactive% OR mousex%<>!pointer% OR mousey%<>pointer%!4 THEN
  740            IF running% AND (after%=0 OR time%>after%) THEN
  750                PROCfullscreen_leave
  760            ENDIF
  770            mousex%=!pointer%
  780            mousey%=pointer%!4
  790            lastkp%=time%
  800            lastactive%=active%
  810        ELSE
  820            IF (time% - lastkp%) > (delay%(delay%)*100) THEN
  830                IF NOT running% THEN after%=0:PROCfullscreen
  840            ENDIF
  850            IF running% THEN PROCfullscreen_nextframe
  860        ENDIF
  870        IF running% THEN
  880            !block%=blackhandle%
  890            SYS "Wimp_GetWindowState",,block%
  900            IF block%!28 <> -1 THEN
  910                PROCfullscreen_leave    
  920                lastactive%=active%
  930                lastkp% = time%
  940            ENDIF
  950        ENDIF
  960    WHEN 1:
  970        SYS "Wimp_RedrawWindow",,block% TO more%
  980        WHILE more%
  990            SYS "Wimp_GetRectangle",,block% TO more%
 1000        ENDWHILE
 1010    WHEN 2: SYS "Wimp_OpenWindow",,block%
 1020    WHEN 6:
 1030        CASE block%!12 OF
 1040        WHEN -2:
 1050            IF (block%!8 AND 2) PROCmenu_open(mmain%,!block%,6,1)
 1060        ENDCASE
 1070    WHEN 9:
 1080        SYS "Wimp_GetPointerInfo",,pointer%
 1090        CASE !block% OF
 1100        WHEN 1:
 1110            CASE block%!4 OF
 1120            WHEN 0,1,2,3,4,5,6:
 1130                delay% = block%!4
 1140                PROCmenu_tick( mdelay%, 0, 6, delay% )
 1150            WHEN 7:
 1151                SYS "OS_ReadMonotonicTime" TO after%
 1152                after%+=100
 1160                PROCmellowout_active( lastactive%, junk% )
 1170                PROCfullscreen
 1180                pointer%!8 = 0
 1190                REM clear mouse buttons to make sure the menu
 1200                REM isn't reopened!
 1210            ENDCASE
 1220        WHEN 2:
 1230            CASE block%!4 OF
 1240            WHEN 0,1,2,3:
 1250                motion% = block%!4
 1260                PROCmenu_tick( mfeatures%, 0, 3, motion% )
 1270            WHEN 4:
 1280                sound% = NOT sound%
 1290                PROCmenu_tick1( mfeatures%, 4, sound% )
 1300            WHEN 5:
 1310                fast% = NOT fast%
 1320                PROCmenu_tick1( mfeatures%, 5, fast% )
 1330            WHEN 6:
 1340                automode% = NOT automode%
 1350                PROCmenu_tick1( mfeatures%, 6, automode% )
 1360            ENDCASE
 1370        WHEN 3:
 1380            PROCsavefilm( "<MellowOut$Dir>.Film" )
 1390            PROCsavechoices( "<MellowOut$Dir>.!Choices" )
 1400        WHEN 4:
 1410            filmlen%=-1
 1420            acef%=0
 1430            SYS "Wimp_SlotSize",film%,-1
 1440            IF wavetable%>0 SYS "IotaSound_ReleaseTable",wavetable%
 1450            wavetable%=0
 1460        WHEN 5: quitapp%=TRUE
 1470        ENDCASE
 1480        IF (pointer%!8 AND 1) PROCmenu_open( mmain%, block%!20,6,1)
 1490    WHEN 17,18:
 1500        CASE block%!16 OF
 1510        WHEN 0: quitapp%=TRUE
 1520        WHEN 3: REM Message_DataLoad
 1530            IF block%!40 = &C2A THEN
 1540                PROCloadfilm( FNzerostr( block%+44 ) )
 1550                block%!16 = 4 : REM Message_DataLoadAck
 1560                block%!12 = block%!8
 1570                SYS "Wimp_SendMessage",17,block%,block%!4
 1580            ENDIF
 1590        WHEN &502: REM Message_HelpRequest
 1600            IF block%!32 = -2 THEN
 1610                PROCiconhelp
 1620            ELSE
 1630                block%!40=-1
 1640                REM Wimp_GetMenuState (not available in RO2)
 1650                SYS &600F4,1,block%+40,block%!32,block%!36 TO ;flags%
 1660                IF (flags% AND 1)=0 AND block%!40>-1 THEN
 1670                    PROCmenuhelp(block%!40,block%!44)
 1680                ENDIF
 1690            ENDIF
 1700        WHEN &400C1: REM Message_ModeChange
 1710            IF running% PROCfullscreen_setpalette
 1720        WHEN &81EFF: REM Message_IotaShowSprite
 1730            IF running% PROCshowsprite( FNzerostr(block%+20) )
 1740        ENDCASE
 1750    ENDCASE
 1760UNTIL quitapp%
 1770IF wavetable%>0 SYS "IotaSound_ReleaseTable",wavetable%
 1780SYS "IotaSound_DeregisterApp"
 1790SYS "Wimp_CloseDown"
 1800END
 1810
 1820DEF PROCinitwindows
 1830DIM indir% 1024, font% 256, name% 16, buffer% 1024
 1840end% = indir%+1024
 1850SYS "Wimp_OpenTemplate",,"<MellowOut$Dir>.Templates"
 1860name%!4=0
 1870name%!8=0
 1880$name%="info"
 1890SYS "Wimp_LoadTemplate",,buffer%,indir%,end%,-1,name%,0 TO ,,indir%
 1900SYS "Wimp_CreateWindow",,buffer% TO infohandle%
 1910$name%="baricon"
 1920SYS "Wimp_LoadTemplate",,buffer%,indir%,end%,-1,name%,0
 1930buffer%!84 = -1  : REM window handle
 1940SYS "Wimp_CreateIcon",,buffer%+84
 1950$name%="blackout"
 1960SYS "Wimp_LoadTemplate",,buffer%,indir%,end%,-1,name%,0
 1970SYS "Wimp_CreateWindow",,buffer% TO blackhandle%
 1980SYS "Wimp_CloseTemplate"
 1990ENDPROC
 2000
 2010DEF PROCinitmenus
 2020RESTORE +1
 2030DATA "Mellow out",6,"Info","Delay","Features","Save as Default"
 2040DATA "Clear","|","Quit"
 2050mmain%=FNmenu_make
 2060RESTORE +1
 2070DATA "Delay",8,"30 sec"," 1 min"," 2 min"
 2080DATA " 5 min","10 min","15 min","30 min","|","Now!"
 2090mdelay%=FNmenu_make
 2100RESTORE +1
 2110DATA "Extra credit",7,"Centred","Flying","Bouncing","Wandering"
 2120DATA "|","Sound","Fast","Auto mode"
 2130mfeatures%=FNmenu_make
 2140PROCmenu_attach( mmain%, 0, infohandle% )
 2150PROCmenu_attach( mmain%, 1, mdelay% )
 2160PROCmenu_attach( mmain%, 2, mfeatures% )
 2170
 2180PROCmenu_tick( mfeatures%, 0, 3, motion% )
 2190PROCmenu_tick( mdelay%, 0, 6, delay% )
 2200PROCmenu_tick1( mfeatures%, 4, sound% )
 2210PROCmenu_tick1( mfeatures%, 5, fast% )
 2220PROCmenu_tick1( mfeatures%, 6, automode% )
 2230ENDPROC
 2240
 2250DEF PROCloadfilm( film$ )
 2260LOCAL flags%
 2270acef%=0
 2280filmlen%=FNfilelen( film$ )
 2290IF filmlen%=-1 ENDPROC
 2300SYS "Wimp_SlotSize",film%+filmlen%,-1  : REM increase wimpslot
 2310SYS "OS_File",255,film$,film%,0 TO ,,filmload%,filmexec%
 2320acef% = FNfilm_findchunk( "ACEF", film%, filmlen% )
 2330IF acef%=0 ERROR 0, "This film file has no film in it!"
 2340rate% = FNfilm_findchunk( "RATE", film%, filmlen% )
 2350dir1% = FNfilm_findchunk( "DIR1", film%, filmlen% )
 2360full% = FNfilm_findchunk( "FULL", film%, filmlen% )
 2370pale% = FNfilm_findchunk( "PALE", film%, filmlen% )
 2380IF wavetable%>0 THEN SYS "IotaSound_ReleaseTable",wavetable%
 2390SYS "XIotaSound_LoadTable",film%,filmlen% TO wavetable% ; flags%
 2400IF (flags% AND 1) wavetable%=0
 2410ENDPROC
 2420
 2430DEF PROCsavefilm( film$ )
 2440IF acef%=0 THEN
 2450    SYS "OS_File",6,film$ : REM delete it
 2460    ENDPROC
 2470ENDIF
 2480SYS "OS_File",10,film$,&C2A,,film%,film%+filmlen%
 2490SYS "OS_File",2,film$,filmload%
 2500SYS "OS_File",3,film$,,filmexec% : REM reinstate datestamp
 2510ENDPROC
 2520
 2530DEF PROCloadchoices( choice$ )
 2540LOCAL H%
 2550fast%=FALSE
 2560automode%=TRUE
 2570IF FNfilelen( choice$ ) <= 0 THEN
 2580    motion%=0
 2590    delay%=0
 2600    sound%=TRUE
 2610    ENDPROC
 2620ENDIF
 2630H%=OPENIN( choice$ )
 2640IF H%=0 ENDPROC
 2650motion%=BGET#H%
 2660delay%=BGET#H%
 2670sound%=( BGET#H% > 0 )
 2680IF NOT EOF#H% THEN fast%=( BGET#H% > 0 )
 2690IF NOT EOF#H% THEN automode%=( BGET#H% > 0 )
 2700CLOSE#H%
 2710ENDPROC
 2720
 2730DEF PROCsavechoices( choice$ )
 2740LOCAL H%
 2750H% = OPENOUT( choice$ )
 2760IF H%=0 ENDPROC
 2770BPUT#H%,motion%
 2780BPUT#H%,delay%
 2790IF sound% THEN BPUT#H%,1 ELSE BPUT#H%,0
 2800IF fast% THEN BPUT#H%,1 ELSE BPUT#H%,0
 2810IF automode% THEN BPUT#H%,1 ELSE BPUT#H%,0
 2820CLOSE#H%
 2830ENDPROC
 2840
 2850DEF PROCiconhelp
 2860PROChelpreply("This is the Mellow Out icon. Drag an Iota Film file here to use it as the screensaver.")
 2870ENDPROC
 2880
 2890DEF PROCmenuhelp( one%,two% )
 2900CASE one% OF
 2910WHEN 1:
 2920    CASE two% OF
 2930    WHEN -1:PROChelpreply( "This submenu lets you set the delay before Mellow Out swings into action." )
 2940    WHEN 0,1,2,3,4,5,6:PROChelpreply( "Choose this to set the delay." )
 2950    WHEN 7:PROChelpreply( "Choose this to start the screensaver immediately." )
 2960    ENDCASE
 2970WHEN 2:
 2980    CASE two% OF
 2990    WHEN 0:PROChelpreply( "Choose this to have the film centred on the screen when the screensaver is in operation." )
 3000    WHEN 1:PROChelpreply( "Choose this to have the film �flying� from left to right on the screen." )
 3010    WHEN 2:PROChelpreply( "Choose this to have the film bouncing around the screen." )
 3020    WHEN 3:PROChelpreply( "Choose this to have the film wandering aimlessly around the screen." )
 3030    WHEN 4:PROChelpreply( "Tick this to have the sound effects in the film played while it is running." )
 3040    WHEN 5:PROChelpreply( "Tick this to have the film played flat-out (rather than at the frame rate specified when it was created)." )
 3050    WHEN 6:PROChelpreply( "Tick this to have the screen mode chosen automatically (rather than using the one specified when the film was created)." )
 3060    ENDCASE
 3070WHEN 3: PROChelpreply( "Choose this to save the current film and �Features� settings as the default for when Mellow Out is next loaded." )
 3080WHEN 4: PROChelpreply( "Choose this to have a blank screen as the screensaver (this, of course, needs much less memory)." )
 3090WHEN 5: PROChelpreply( "What? You want to quit? But having a screensaver is so tasteful!" )
 3100ENDCASE
 3110ENDPROC
 3120
 3130DEF PROChelpreply(A$)
 3140$(block%+20)=A$
 3150block%!12 = block%!8
 3160block%!16 = &503 : REM Message_HelpReply
 3170!block% = (24 + LEN($(block%+20)) ) AND (NOT3)
 3180SYS "Wimp_SendMessage",17,block%,block%!4
 3190ENDPROC
 3200
 3210DEF PROCfullscreen
 3220running%=TRUE
 3230nofilm%=FALSE
 3240!block%=blackhandle%
 3250block%!4=-100
 3260block%!8=-100
 3270block%!12=8000
 3280block%!16=8000  : REM a large box
 3290block%!20=0
 3300block%!24=0
 3310block%!28=-1    : REM on top
 3320SYS "Wimp_OpenWindow",,block%
 3330IF acef%=0 THEN
 3340    PROCsavewithnofilm
 3350    ENDPROC
 3360ENDIF
 3370IF FNfullscreen_enter = FALSE THEN
 3380    PROCsavewithnofilm
 3390    ENDPROC
 3400ENDIF
 3410mousex%=-1
 3420PROCfullscreen_findgwindow
 3430nvsyncs% = FNfullscreen_vsyncs
 3440OFF
 3450*pointer 0
 3460fptr% = acef% + acef%!16
 3470sptr% = dir1%
 3480comp% = acef%!32
 3490flags% = acef%!36
 3500yoyo% = (flags%>>2) AND 1
 3510delta% = (flags% AND 3)
 3520IF (delta%) yoyo%=FALSE : motion%=0 : REM don't move delta films
 3530base%=0
 3540forward% = TRUE
 3550PROCmellowout_active( lastactive%, vsyncs% )
 3560next% = vsyncs%
 3570gwindowx0%=-1       : REM flag as the first time through
 3580gwindowy0%=-1
 3590PROCgetsyncs
 3600ENDPROC
 3610
 3620DEF PROCgetmousepos
 3630SYS "Wimp_GetPointerInfo",,pointer%
 3640mousex% = !pointer%
 3650mousey% = pointer%!4
 3660ENDPROC
 3670
 3680DEF PROCfullscreen_nextframe
 3690E%=0
 3700IF nofilm% ENDPROC
 3710IF next% > vsyncs% THEN vsyncs% += 32768 : REM wraparound
 3720IF (vsyncs%-next%) >=0 THEN
 3730    oldx0%=gwindowx0%
 3740    oldy0%=gwindowy0%
 3750    WAIT
 3760
 3770    PROCfullscreen_gwindow
 3780    IF sptr%>0 AND wavetable%>0 AND sound% THEN
 3790    
 3800        IF NOT forward% THEN sptr% -= sptr%!-4
 3810        IF !sptr% <> !(sptr%+!sptr%-4) ERROR 0,"dir1 error"
 3820        SYS "XIotaSound_Play",wavetable%,sptr%
 3830        IF forward% THEN sptr% += !sptr%
 3840        
 3850    ENDIF
 3860
 3870    IF NOT forward% THEN fptr% -= fptr%!-4
 3880    IF !fptr% <> !(fptr%+!fptr%-4) ERROR 0,"acef error"
 3890    IF delta% THEN
 3900        SYS "XEuclid_Expand",comp%,fptr%,base% TO E%,,base% ; flags%
 3910    ELSE
 3920        SYS "XEuclid_Expand",comp%,fptr% TO E% ; flags%
 3930    ENDIF
 3940    IF (flags%AND1)=0 THEN E%=0
 3950    IF forward% THEN fptr% += !fptr%
 3960    
 3970    VDU 26  : REM clear graphics window
 3980    PROCclearlast
 3990    
 4000    IF showsprite% THEN
 4010        IF spritex%>-1 THEN
 4020            IF delta% THEN
 4030                SYS "OS_SpriteOp",256+52,sprarea%,sprite$,spritex%,spritey%,8+3,factors%,pixtrans%
 4040            ELSE
 4050                SYS "OS_SpriteOp",256+50,sprarea%,sprite$,spritex%,spritey%,,factors%
 4060            ENDIF
 4070        ENDIF
 4080        IF spritex% = -1 THEN spritex% = screenxos%/2
 4090        spritex% += 8*COSRADsprited% + (screenxos%-sprx%)
 4100        spritey% += 8*SINRADsprited% + (screenyos%-spry%)
 4110        spritex% = (spritex% AND NOT(dx%-1))MOD (screenxos%-sprx%)
 4120        spritey% = (spritey% AND NOT(dy%-1))MOD (screenyos%-spry%)
 4130        IF delta% THEN
 4140            SYS "OS_SpriteOp",256+52,sprarea%,sprite$,spritex%,spritey%,8+3,factors%,pixtrans%
 4150        ELSE
 4160            SYS "OS_SpriteOp",256+52,sprarea%,sprite$,spritex%,spritey%,8,factors%,pixtrans%
 4170        ENDIF
 4180        sprited% += spritem%
 4190        spritem% += RND(3)-1
 4200        IF spritem%>5 spritem%=5
 4210        IF spritem%<-5 spritem%=-5
 4220    ENDIF
 4230    
 4240    IF fptr% = acef%+acef%!16 THEN
 4250        forward%=TRUE
 4260        fptr% += !fptr%
 4270        IF sptr%>0 AND sound% THEN sptr% += !sptr%
 4280    ENDIF
 4290        
 4300    IF !fptr%=0 THEN
 4310        IF yoyo%=1 AND forward%=TRUE THEN
 4320            forward%=FALSE
 4330            fptr% -= fptr%!-4
 4340            IF sptr%>0 AND sound% THEN sptr% -= sptr%!-4
 4350        ELSE
 4360            forward%=TRUE
 4370            fptr% = acef%+acef%!16
 4380            base% = 0
 4390            IF sptr%>0 AND sound% THEN sptr% = dir1%
 4400        ENDIF
 4410    ENDIF
 4420    IF fast% THEN next%=vsyncs% ELSE next% += nvsyncs%
 4430    next% = next% AND &7FFF
 4440ENDIF
 4450IF E% PROCfullscreen_leave:ERROR !E%,FNzerostr(E%+4)
 4460ENDPROC
 4470
 4480DEF PROCsavewithnofilm
 4490PROCfullscreen_remembermode
 4500VDU 26
 4510OFF
 4520*pointer 0
 4530COLOUR 128
 4540VDU 19;0;0;
 4541VDU 19,0,24,0,0,0
 4550CLS
 4560nofilm%=TRUE
 4570mousex%=-1
 4580ENDPROC
 4590
 4600DEF PROCclearlast
 4610IF oldx0%<0 ENDPROC
 4620IF pale%>0 PROCsetbg( !(pale%+28+4*(pale%!4)), pale%!16 )
 4630IF oldx0% < gwindowx0% THEN
 4640    MOVE oldx0%,oldy0%
 4650    PLOT 96+7, gwindowx0%-1,oldy0%+yos%-1
 4660ENDIF
 4670IF oldx0% > gwindowx0% THEN
 4680    MOVE gwindowx0%+xos%,oldy0%
 4690    PLOT 96+7,oldx0%+xos%-1,oldy0%+yos%-1
 4700ENDIF
 4710IF oldy0% < gwindowy0% THEN
 4720    MOVE oldx0%,oldy0%
 4730    PLOT 96+7, oldx0%+xos%-1,gwindowy0%-1
 4740ENDIF
 4750IF oldy0% > gwindowy0% THEN
 4760    MOVE oldx0%,oldy0%+yos%-1
 4770    PLOT 96+7, oldx0%+xos%-1,gwindowy0%+yos%
 4780ENDIF
 4790ENDPROC
 4800
 4810DEF FNfullscreen_setmode
 4820LOCAL mode$
 4830LOCAL xeig%,yeig%,big%,x%,y%,log2bpp%,mode%,A%,flags%
 4840
 4850log2bpp% = pale%!16
 4860big% = ( motion% <> 0 )
 4870SYS "OS_ReadModeVariable",acef%!28,4 TO ,,filmxeig%
 4880SYS "OS_ReadModeVariable",acef%!28,5 TO ,,filmyeig%
 4890x% = (acef%!20) >> filmxeig%
 4900y% = (acef%!24) >> filmyeig%
 4910IF RiscPC% THEN
 4920    !modesel%=1
 4930    modesel%!12=log2bpp%
 4940    modesel%!16=-1
 4950    modesel%!20=-1
 4960    IF automode% THEN
 4970        PROCriscpc_findmode( x%, y%, big%, log2bpp%, filmxeig%-filmyeig% )
 4980        REM x and y are returned
 4990        modesel%!4=x%
 5000        modesel%!8=y%
 5010        IF x%=0 THEN = FALSE
 5020    ELSE
 5030        mode$=FNzerostr(full%+8)
 5040        IF mode$="" mode$=STR$(acef%!28)
 5050        IF mode$=STR$(VALmode$) THEN VDU 22,VALmode$ : = (MODE=VALmode$)
 5060        A%=INSTR(" "+mode$," X")    : REM avoid "EX"
 5070        IF A%=0 A% = INSTR(" "+mode$," x")
 5080        modesel%!4 = VALMID$( mode$, A%+1 )
 5090        A%=INSTR(" "+mode$," Y")    : REM avoid "EY"
 5100        IF A%=0 A% = INSTR(" "+mode$," y")
 5110        modesel%!8 = VALMID$( mode$, A%+1 )
 5120        A%=INSTR(mode$,"F")
 5130        IF A%<>0 THEN modesel%!16 = VALMID$( mode$, A%+1 )
 5140    ENDIF
 5150    SYS "XOS_ScreenMode",0,modesel% TO ;flags%
 5160    = (flags% AND 1)=0
 5170ENDIF
 5180IF automode% THEN
 5190    mode% = FNarc_findmode( x%, y%, big%, log2bpp%, filmxeig%-filmyeig% )
 5200    IF mode% = -1 THEN = FALSE
 5210ELSE
 5220    mode$=FNzerostr(full%+8)
 5230    IF mode$=STR$(VALmode$) THEN
 5240        mode%=VALmode$
 5250    ELSE
 5260        mode%=acef%!28
 5270    ENDIF
 5280ENDIF
 5290MODE mode%
 5300= (MODE = mode%)
 5310
 5320DEF PROCfullscreen_remembermode
 5330LOCAL R1%,A%,B%
 5340IF RiscPC% THEN
 5350    SYS "OS_ScreenMode",1 TO ,R1%
 5360    IF R1%<256 THEN
 5370        deskmode% = R1%
 5380    ELSE
 5390        B%=20
 5400        WHILE R1%!B% <> -1 : B%+=8 : ENDWHILE
 5410        FOR A%=0 TO B%+3 STEP4
 5420            A%!screenbuf% = A%!R1%
 5430        NEXT
 5440        deskmode% = screenbuf%
 5450    ENDIF
 5460ELSE
 5470    deskmode% = MODE
 5480ENDIF
 5490ENDPROC
 5500
 5510DEF FNfullscreen_enter
 5520PROCfullscreen_remembermode
 5530IF NOT FNfullscreen_setmode THEN = FALSE
 5540PROCfullscreen_setpalette
 5550=TRUE
 5560
 5570DEF PROCfullscreen_findgwindow
 5580xeig% = FNmodevar( 4 )
 5590yeig% = FNmodevar( 5 )
 5600xos% = ((acef%!20) >> filmxeig%) << xeig%
 5610yos% = ((acef%!24) >> filmyeig%) << yeig%
 5620dx% = 1 << xeig%
 5630dy% = 1 << yeig%
 5640screenxos% = (1+FNmodevar(11)) * dx%
 5650screenyos% = (1+FNmodevar(12)) * dy%
 5660
 5670IF screenxos% < xos% OR screenyos% < yos% THEN PROCfullscreen_leave:ERROR 0,"This film is too big for this mode!"
 5680flysparex%= (screenxos%-xos%)/dx%        : REM pixels spare
 5690flysparey%= (screenyos%-yos%)/dy%
 5700IF flysparex%=0 AND motion%=1 THEN motion%=0
 5710flyheight% = 32 : REM pixels
 5720IF flyheight% > flysparey% THEN flyheight%=flysparey%
 5730bouncex = flysparex%*dx%/2
 5740bouncey = flysparey%*dy%/2
 5750bouncedir% = RND(360) : bouncestep%=8
 5760meander% = 0
 5770ENDPROC
 5780
 5790DEF PROCfullscreen_gwindow
 5800CASE motion% OF
 5810WHEN 1: REM flying
 5820    gwindowx0%=flycounter%*dx%
 5830    gwindowy0%=flysparey%/2
 5840    gwindowy0%+=flyheight%*(SINRAD(720*flycounter%/flysparex%))
 5850    gwindowy0%= gwindowy0%*dy%
 5860    flycounter%=(flycounter%+1) MOD flysparex%
 5870WHEN 2,3: REM bouncing, meandering
 5880    IF motion% = 3 THEN
 5890        bouncedir% += meander%
 5900        meander% = meander% -2 + RND(3)
 5910        IF meander% > 5 AND RND(2)=1 THEN meander%-=1
 5920        IF meander% < -5 AND RND(2)=1 THEN meander%+=1
 5930        IF meander% < -10 meander% = -10
 5940        IF meander% > 10 meander% = 10
 5950    ENDIF
 5960    bouncex += bouncestep% * COSRAD(bouncedir%)
 5970    bouncey += bouncestep% * SINRAD(bouncedir%)
 5980    IF bouncex < 0 THEN
 5990        bouncex = 0
 6000        bouncedir% = 170 - bouncedir% + RND(20)
 6010        meander%=0
 6020    ENDIF
 6030    IF bouncex > flysparex%*dx% THEN
 6040        bouncex = flysparex%*dx%
 6050        bouncedir% = 170 - bouncedir% + RND(20)
 6060        meander%=0
 6070    ENDIF
 6080    IF bouncey < 0 THEN
 6090        bouncey = 0
 6100        bouncedir% = 10 - bouncedir% - RND(20)
 6110        meander%=0
 6120    ENDIF
 6130    IF bouncey > flysparey%*dy% THEN
 6140        bouncey = flysparey%*dy%
 6150        bouncedir% = 10 - bouncedir% - RND(20)
 6160        meander%=0
 6170    ENDIF
 6180    gwindowx0% = bouncex
 6190    gwindowy0% = bouncey
 6200OTHERWISE: REM centred
 6210    gwindowx0%=flysparex%*dx%/2
 6220    gwindowy0%=flysparey%*dy%/2
 6230ENDCASE
 6240
 6250REM must byte-align x and pixel-align y
 6260log2bpc% = FNmodevar( 10 )
 6270bits% = (gwindowx0% / dx%) << log2bpc%
 6280bits% = bits% AND (NOT7)
 6290gwindowx0% = (bits% >> log2bpc%) * dx%
 6300
 6310gwindowy0% = gwindowy0% AND NOT ( dy% -1 )
 6320
 6330gwindowx1%=gwindowx0%+xos%
 6340gwindowy1%=gwindowy0%+yos%
 6350VDU 24,gwindowx0%;gwindowy0%;gwindowx1%-1;gwindowy1%-1;
 6360ENDPROC
 6370
 6380DEF FNfullscreen_vsyncs
 6390LOCAL vsyncs%
 6400IF rate%<>0 THEN
 6410    CASE !rate% OF
 6420    WHEN 0:
 6430        REM Centiseconds per frame
 6440        = (rate%!4)*(rate%!8)/100
 6450    WHEN 1:
 6460        REM Frames per second
 6470        = (rate%!8)/(rate%!4)
 6480    WHEN 2:
 6490        = rate%!4
 6500    ENDCASE
 6510ENDIF
 6520REM not a clue ... use a sensible default
 6530=8
 6540
 6550DEF PROCfullscreen_setpalette
 6560LOCAL ncol%,log2bpc%,table%,modeflags%,A%
 6570IF pale%=0 ENDPROC
 6580log2bpc%=pale%!16
 6590table%=pale%+28
 6600PROCsetbg( table%!(pale%!4 * 4), log2bpc% )
 6610VDU 26
 6620CLG
 6630PROCsetcol( 0, 24, table%!(pale%!4 * 4) )
 6640IF log2bpc%>3 ENDPROC
 6650modeflags% = pale%!8
 6660IF (log2bpc%=3) AND (modeflags% AND 128)=0 THEN ENDPROC
 6670ncol% = 1 << (1 << log2bpc%)
 6680FOR A% = 0 TO ncol%-1
 6690PROCsetcol( A%, 16, table%!(A%*4) )
 6700NEXT
 6710ENDPROC
 6720
 6730DEF PROCsetbg( A%, log2bpc% )
 6740IF log2bpc%<3 THEN GCOL (A% AND &7F) +128 : ENDPROC
 6750IF log2bpc%=3 THEN
 6760    SYS "ColourTrans_ColourNumberToGCOL",A% AND 255 TO A%
 6770    A% = A% AND 255
 6780    GCOL 128 + (A%>>2) TINT ((A%AND3)<<6)
 6790    ENDPROC
 6800ENDIF
 6810REM Must be on a Risc PC now!
 6820SYS "ColourTrans_SetGCOL",A% AND &FFFFFF00,,,128,0
 6830ENDPROC
 6840
 6850DEF PROCsetcol( A%, B%, C%)
 6860VDU 19,A%,B%, (C%>>8),(C%>>16),(C%>>24)
 6870ENDPROC
 6880
 6890DEF PROCfullscreen_leave
 6900PROClosesyncs
 6910block%!24=blackhandle%
 6920SYS "Wimp_SetMode",deskmode%
 6930*pointer 1
 6940SYS "Wimp_CloseWindow",,block%+24
 6950SYS "ColourTrans_InvalidateCache"
 6960running%=FALSE
 6970showsprite%=FALSE
 6980ENDPROC
 6990
 7000DEF PROCgetsyncs
 7010IF claimed% ENDPROC
 7020SYS "XOS_Byte",14,4
 7030claimed%=TRUE
 7040ENDPROC
 7050
 7060DEF PROClosesyncs
 7070IF claimed%=FALSE ENDPROC
 7080SYS "XOS_Byte",13,4
 7090claimed%=FALSE
 7100ENDPROC
 7110
 7120DEF PROCshowsprite(A$)
 7130LOCAL A%,B%,C%,sprmode%,sprex%,sprey%
 7140IF OSVersion% < 163 THEN ENDPROC
 7150REM RO3 only
 7160SYS "Wimp_BaseOfSprites" TO A%,B%
 7170SYS "XOS_SpriteOp",256+40,A%,A$ TO ,,,sprx%,spry%,,sprmode% ; C%
 7180IF (C% AND 1) A%=B%
 7190SYS "XOS_SpriteOp",256+40,A%,A$ TO ,,,sprx%,spry%,,sprmode% ; C%
 7200IF (C% AND 1) ENDPROC
 7210sprarea%=A%
 7220sprite$=A$
 7230SYS "ColourTrans_InvalidateCache"
 7240SYS "ColourTrans_SelectTable",A%,A$,-1,-1,pixtrans%,0
 7250SYS "OS_ReadModeVariable",sprmode%,4 TO ,,sprex%
 7260PROCsprfactor( sprex%, xeig%, factors% )
 7270sprx% = sprx% << sprex%
 7280SYS "OS_ReadModeVariable",sprmode%,5 TO ,,sprey%
 7290PROCsprfactor( sprey%, yeig%, factors%+4 )
 7300spry% = spry% << sprey%
 7310showsprite% = TRUE
 7320spritex%=-1
 7330spritey%=screenyos%/2
 7340sprited%=RND(360)
 7350spritem%=0
 7360ENDPROC
 7370
 7380DEF PROCsprfactor( spre%, eig%, fact% )
 7390IF spre% > eig% THEN
 7400    !fact% = 1 << (spre%-eig%)
 7410    fact%!8 = 1
 7420ELSE
 7430    !fact%=1
 7440    fact%!8 = 1 << (eig%-spre%)
 7450ENDIF
 7460ENDPROC
 7470
 7480REM -------------------------------------------------------------
 7490
 7500DEF FNfilm_findchunk( chunk$, start%, len% )
 7510LOCAL end%
 7520end%=start%+len%
 7530$name%=chunk$
 7540REPEAT
 7550    IF !start% = !name% THEN =start%+8
 7560    start% += start%!4
 7570UNTIL start% >= end%
 7580=0
 7590
 7600DEF PROCmellowout_active( RETURN keyp%, RETURN vsyncs% )
 7610SYS "OS_Module",18,"MellowOut" TO ,,,,keyp%
 7620REM read private word...cunning or wot?
 7630vsyncs% = keyp% >>> 16  : REM unsigned
 7640keyp% = keyp% AND &FFFF
 7650ENDPROC
 7660
 7670REM -------------------------------------------------------------
 7680
 7690DEF FNmenu_make
 7700LOCAL item%,iptr%,len%,txt%
 7710READ name$,items%
 7720DIM menu% (items%*24)+28
 7730$menu%=name$
 7740len% = LEN(name$)-1
 7750menu%?12=7
 7760menu%?13=2
 7770menu%?14=7
 7780menu%?15=0
 7790menu%!20=44
 7800menu%!24=0
 7810FOR item%=1 TO items%
 7820    READ name$
 7830    iptr%=menu%+4+item%*24
 7840    IF name$="|" THEN
 7850        !(iptr%-24) = !(iptr%-24) OR 2
 7860        READ name$
 7870    ENDIF
 7880    !iptr%=0
 7890    IF item%=items% THEN !iptr% = 128
 7900    iptr%!4 = -1
 7910    IF LEN(name$) > 12 THEN
 7920        iptr%!8 = &07000111
 7930        DIM txt% (LENname$+1)
 7940        $txt%=name$
 7950        iptr%!12=txt%
 7960        iptr%!16=0
 7970        iptr%!20=0
 7980    ELSE
 7990        iptr%!8 = &07000011
 8000        $(iptr%+12)=name$
 8010    ENDIF
 8020    IF LEN(name$) > len% len% = LEN(name$)
 8030NEXT
 8040menu%!16 = len%*16+12
 8050=menu%
 8060
 8070DEF PROCmenu_attach( menu%, item%, submenu% )
 8080menu%!(item%*24+28+4) = submenu%
 8090ENDPROC
 8100
 8110DEF PROCmenu_open( menu%, x%, items%, lines% )
 8120LOCAL y%
 8130y%=96 + items%*44 + lines%*24
 8140SYS "Wimp_CreateMenu",,menu%,x%-64,y%
 8150ENDPROC
 8160
 8170DEF PROCmenu_tick( menu%, first%, last%, which% )
 8180LOCAL y%,flags%
 8190FOR y%=first% TO last%
 8200    PROCmenu_tick1( menu%, y%, which%=y%-first% )
 8210NEXT
 8220ENDPROC
 8230
 8240DEF PROCmenu_tick1( menu%, item%, whether% )
 8250LOCAL flags%
 8260flags% = menu%!(item%*24+28)
 8270IF whether% THEN
 8280    flags% = flags% OR 1
 8290ELSE
 8300    flags% = flags% AND (NOT1)
 8310ENDIF
 8320menu%!(item%*24+28) = flags%
 8330ENDPROC
 8340
 8350REM -------------------------------------------------------------
 8360
 8370DEF FNfilelen( file$ )
 8380LOCAL R0,R4,flags%
 8390SYS "XOS_File",5,file$ TO R0,,,,R4 ; flags%
 8400IF (flags% AND 1) OR ( R0 <> 1 ) THEN = -1
 8410=R4
 8420
 8430DEF PROCload( file$, addr% )
 8440ENDPROC
 8450
 8460DEF FNmodevar( index% )
 8470LOCAL var%
 8480SYS "OS_ReadModeVariable",-1,index% TO ,,var%
 8490=var%
 8500
 8510DEF FNzerostr( A% )
 8520LOCAL A$
 8530WHILE (?A% > 31)
 8540    A$+=CHR$(?A%)
 8550    A%+=1
 8560ENDWHILE
 8570=A$
 8580
 8590DEF PROCriscpc_findmode( RETURN x%, RETURN y%, big%, log2bpp%, eig% )
 8600LOCAL index%,bx%,by%,ptr%,done%,ptr2%,ok%,beig%
 8610bx%=0:by%=0
 8620index%=0
 8630REPEAT
 8640    SYS "OS_ScreenMode",2,,index%,,,,buf%,100 TO ,done%,,,,,ptr%
 8650    ptr2%=buf%
 8660    WHILE ptr2% < ptr%
 8670        index%+=1
 8680        IF (ptr2%!4 AND 255) = 1 THEN
 8690            REM figure out ratio of eigenfactors
 8700            beig%=1 + INT( LOG( ptr2%!12 / ptr2%!8 ) / LOG(2) )
 8710    
 8720            IF ptr2%!16 = log2bpp% AND ptr2%!8>x% AND ptr2%!12>y% AND beig% = eig% THEN
 8730                IF big% THEN
 8740                    ok% = ptr2%!8>bx% AND ptr2%!12>by%
 8750                ELSE
 8760                    IF bx%=0 bx%=ptr2%!8:by%=ptr2%!12
 8770                    ok% = ptr2%!8<bx% AND ptr2%!12<by%
 8780                ENDIF
 8790                IF ok% bx%=ptr2%!8:by%=ptr2%!12
 8800            ENDIF
 8810        ENDIF
 8820        ptr2% += !ptr2%
 8830    ENDWHILE
 8840UNTIL done% <> 0
 8850x%=bx%
 8860y%=by%
 8870ENDPROC
 8880
 8890DEF FNarc_findmode( x%, y%, big%, log2bpp%, eig% )
 8900LOCAL mode%,bx%,by%,ok%,blog2bpp%,flags%,bmode%,ex%,ey%
 8910LOCAL next%,free%,screensize%,newsize%
 8920bx%=0
 8930by%=0
 8940bmode% = -1
 8950SYS "Wimp_SlotSize",-1,-1 TO ,next%,free%
 8960SYS "OS_ReadDynamicArea",2 TO ,screensize%
 8970newsize% = screensize%+next%+free%
 8980IF newsize%>480*1024 THEN newsize%=480*1024
 8990IF newsize% > screensize% THEN SYS "OS_ChangeDynamicArea",2,newsize%-screensize%
 9000FOR mode%=0 TO 127
 9010    SYS "XOS_ReadModeVariable",mode%,10 TO ,,blog2bpp% ; flags%
 9020    IF (flags% AND 2) = 0 AND blog2bpp% = log2bpp% THEN
 9030        SYS "OS_ReadModeVariable",mode%,4 TO ,,ex%
 9040        SYS "OS_ReadModeVariable",mode%,5 TO ,,ey%
 9050        IF (ex%-ey%) = eig% THEN
 9060            SYS "OS_ReadModeVariable",mode%,11 TO ,,ex% : ex%+=1
 9070            SYS "OS_ReadModeVariable",mode%,12 TO ,,ey% : ey%+=1
 9080            SYS "OS_ReadModeVariable",mode%,0 TO ,,flags%
 9090            IF ex%>x% AND ey%>y% AND (flags%AND15)=0 THEN
 9100                IF big% THEN
 9110                    ok% = ex%>bx% AND ey%>by%
 9120                ELSE
 9130                    ok% = ex%<bx% AND ey%<by%
 9140                    IF bx%=0 ok%=TRUE
 9150                ENDIF
 9160                IF ok% THEN
 9170                    SYS "OS_CheckModeValid",mode% TO ok%
 9180                    IF ok%>=0 bx%=ex%:by%=ey%:bmode%=mode%
 9190                ENDIF
 9200            ENDIF
 9210        ENDIF
 9220    ENDIF
 9230NEXT
 9240IF newsize%<>screensize% SYS "OS_ChangeDynamicArea",2,screensize%-newsize%
 9250=bmode%
 9260

� > !MellowOut.!RunImage
 � Version 0.10 (09-Aug-1994)
�
(,� by Peter Hartley at Iota Software 1994
2�
<=� A screensaver that can play Iota films - even ones with
F� sounds in.
P�
Z'� Quick tour round the ingredients:
dA�   * MellowOut module that increments a counter every time a
nD�     key or mouse button is depressed, or whenever else there's
x�     an important event.
�C�   * When there've been no events for a while, change mode and
��     start playing a film.
�C�   * Find the mode in the FULL(screen) chunk if it has one, or
�&�     else in the ACEF(ilm) chunk.
�D�   * Set up the palette from the PALE(tte) chunk if it has one.
�B�   * Decide on film speed using the RATE chunk if it has one.
�B�   * Call the IotaSound module so we can make the noises from
�*�     its SOUN(d) chunk if it has one.
�@�   * Then, expand frames from the ACEF chunk using EuclidX.
�?�     At the same time, play frames of the soundtrack using
��     IotaSound.
�B�   * But if anything happens in the key or mouse departments,
�C�     or if any window is opened on top of ours, go back to the
�     desktop
�

"claimed%=�
,E� � � � �:�losesyncs:� 0,"Internal error ("+�$+" at line "+Þ+")"
67� block% 256, screenbuf% 128, buf% 100, pointer% 20
@4� delay%(6), pixtrans%16, factors%16, modesel%24
J
T5delay%() = 30,60,120,300,600,900,1800 : � seconds
U
Vafter%=0
^
h+ș "OS_Byte", 129, 0, 255 � ,OSVersion%
r!RiscPC%=( OSVersion% >= 165 )
|
�
!block%=0
�:ș "Wimp_Initialise",310,&4B534154,"Mellow out",block%
�ș "IotaSound_RegisterApp"
�wavetable%=0
�film%=�
�
�.�loadchoices( "<MellowOut$Dir>.!Choices" )
��initwindows
��initmenus
�'�loadfilm( "<MellowOut$Dir>.Film" )
�quitapp%=�
�running%=�
�showsprite%=�
spritex%=-1
J%=0

lastkp%=0
&flycounter%=0
0
:'ș "OS_ReadMonotonicTime" � lastkp%
D
N+�mellowout_active( lastactive%, junk% )
X&ș "Wimp_GetPointerInfo",,pointer%
bmousex%=!pointer%
lmousey%=pointer%!4
vout$=""
�
��
�'    ș "Wimp_Poll",0,block% � code%
�    Ȏ code% �
�    � 0:
�-        ș "OS_ReadMonotonicTime" � time%
�/        �mellowout_active( active%, junk% )
�.        ș "Wimp_GetPointerInfo",,pointer%
�?        � mousex%=-1 � mousex%=!pointer%:mousey%=pointer%!4
�O        � active%<>lastactive% � mousex%<>!pointer% � mousey%<>pointer%!4 �
�8            � running% � (after%=0 � time%>after%) �
�%                �fullscreen_leave
�            �
!            mousex%=!pointer%
"            mousey%=pointer%!4
            lastkp%=time%
 #            lastactive%=active%
*
        �
4<            � (time% - lastkp%) > (delay%(delay%)*100) �
>7                � � running% � after%=0:�fullscreen
H            �
R2            � running% � �fullscreen_nextframe
\
        �
f        � running% �
p$            !block%=blackhandle%
z0            ș "Wimp_GetWindowState",,block%
�#            � block%!28 <> -1 �
�)                �fullscreen_leave    
�'                lastactive%=active%
�#                lastkp% = time%
�            �
�
        �
�    � 1:
�2        ș "Wimp_RedrawWindow",,block% � more%
�        ȕ more%
�6            ș "Wimp_GetRectangle",,block% � more%
�
        �
�)    � 2: ș "Wimp_OpenWindow",,block%
�    � 6:
        Ȏ block%!12 �
        � -2:
?            � (block%!8 � 2) �menu_open(mmain%,!block%,6,1)
$
        �
.    � 9:
8.        ș "Wimp_GetPointerInfo",,pointer%
B        Ȏ !block% �
L        � 1:
V            Ȏ block%!4 �
`             � 0,1,2,3,4,5,6:
j%                delay% = block%!4
t7                �menu_tick( mdelay%, 0, 6, delay% )
~            � 7:
6                ș "OS_ReadMonotonicTime" � after%
�                after%+=100
�;                �mellowout_active( lastactive%, junk% )
�                �fullscreen
�"                pointer%!8 = 0
�?                � clear mouse buttons to make sure the menu
�%                � isn't reopened!
�            �
�        � 2:
�            Ȏ block%!4 �
�            � 0,1,2,3:
�&                motion% = block%!4
�;                �menu_tick( mfeatures%, 0, 3, motion% )
�            � 4:
%                sound% = � sound%

8                �menu_tick1( mfeatures%, 4, sound% )
            � 5:
#                fast% = � fast%
(7                �menu_tick1( mfeatures%, 5, fast% )
2            � 6:
<+                automode% = � automode%
F;                �menu_tick1( mfeatures%, 6, automode% )
P            �
Z        � 3:
d3            �savefilm( "<MellowOut$Dir>.Film" )
n:            �savechoices( "<MellowOut$Dir>.!Choices" )
x        � 4:
�            filmlen%=-1
�            acef%=0
�+            ș "Wimp_SlotSize",film%,-1
�E            � wavetable%>0 ș "IotaSound_ReleaseTable",wavetable%
�            wavetable%=0
�        � 5: quitapp%=�
�
        �
�A        � (pointer%!8 � 1) �menu_open( mmain%, block%!20,6,1)
�    � 17,18:
�        Ȏ block%!16 �
�        � 0: quitapp%=�
�#        � 3: � Message_DataLoad
�$            � block%!40 = &C2A �
6                �loadfilm( �zerostr( block%+44 ) )
9                block%!16 = 4 : � Message_DataLoadAck
(                block%!12 = block%!8
"<                ș "Wimp_SendMessage",17,block%,block%!4
,            �
6)        � &502: � Message_HelpRequest
@"            � block%!32 = -2 �
J                �iconhelp
T            �
^                 block%!40=-1
h>                � Wimp_GetMenuState (not available in RO2)
rG                ș &600F4,1,block%+40,block%!32,block%!36 � ;flags%
|5                � (flags% � 1)=0 � block%!40>-1 �
�6                    �menuhelp(block%!40,block%!44)
�                �
�            �
�*        � &400C1: � Message_ModeChange
�1            � running% �fullscreen_setpalette
�.        � &81EFF: � Message_IotaShowSprite
�=            � running% �showsprite( �zerostr(block%+20) )
�
        �
�	    �
�� quitapp%
�9� wavetable%>0 ș "IotaSound_ReleaseTable",wavetable%
� ș "IotaSound_DeregisterApp"
�ș "Wimp_CloseDown"
�

� �initwindows
&4� indir% 1024, font% 256, name% 16, buffer% 1024
0end% = indir%+1024
:7ș "Wimp_OpenTemplate",,"<MellowOut$Dir>.Templates"
D
name%!4=0
N
name%!8=0
X$name%="info"
bEș "Wimp_LoadTemplate",,buffer%,indir%,end%,-1,name%,0 � ,,indir%
l1ș "Wimp_CreateWindow",,buffer% � infohandle%
v$name%="baricon"
�:ș "Wimp_LoadTemplate",,buffer%,indir%,end%,-1,name%,0
�&buffer%!84 = -1  : � window handle
�$ș "Wimp_CreateIcon",,buffer%+84
�$name%="blackout"
�:ș "Wimp_LoadTemplate",,buffer%,indir%,end%,-1,name%,0
�2ș "Wimp_CreateWindow",,buffer% � blackhandle%
�ș "Wimp_CloseTemplate"
��
�
�� �initmenus
�� +1
�@� "Mellow out",6,"Info","Delay","Features","Save as Default"
�� "Clear","|","Quit"
mmain%=�menu_make
� +1
*� "Delay",8,"30 sec"," 1 min"," 2 min"
 4� " 5 min","10 min","15 min","30 min","|","Now!"
*mdelay%=�menu_make
4� +1
>@� "Extra credit",7,"Centred","Flying","Bouncing","Wandering"
H$� "|","Sound","Fast","Auto mode"
Rmfeatures%=�menu_make
\*�menu_attach( mmain%, 0, infohandle% )
f&�menu_attach( mmain%, 1, mdelay% )
p)�menu_attach( mmain%, 2, mfeatures% )
z
�+�menu_tick( mfeatures%, 0, 3, motion% )
�'�menu_tick( mdelay%, 0, 6, delay% )
�(�menu_tick1( mfeatures%, 4, sound% )
�'�menu_tick1( mfeatures%, 5, fast% )
�+�menu_tick1( mfeatures%, 6, automode% )
��
�
�� �loadfilm( film$ )
�� flags%
�acef%=0
�filmlen%=�filelen( film$ )
�� filmlen%=-1 �
�?ș "Wimp_SlotSize",film%+filmlen%,-1  : � increase wimpslot
	:ș "OS_File",255,film$,film%,0 � ,,filmload%,filmexec%
	6acef% = �film_findchunk( "ACEF", film%, filmlen% )
	6� acef%=0 � 0, "This film file has no film in it!"
	$6rate% = �film_findchunk( "RATE", film%, filmlen% )
	.6dir1% = �film_findchunk( "DIR1", film%, filmlen% )
	86full% = �film_findchunk( "FULL", film%, filmlen% )
	B6pale% = �film_findchunk( "PALE", film%, filmlen% )
	L;� wavetable%>0 � ș "IotaSound_ReleaseTable",wavetable%
	VBș "XIotaSound_LoadTable",film%,filmlen% � wavetable% ; flags%
	`� (flags% � 1) wavetable%=0
	j�
	t
	~� �savefilm( film$ )
	�� acef%=0 �
	�*    ș "OS_File",6,film$ : � delete it
	�	    �
	��
	�4ș "OS_File",10,film$,&C2A,,film%,film%+filmlen%
	�"ș "OS_File",2,film$,filmload%
	�;ș "OS_File",3,film$,,filmexec% : � reinstate datestamp
	��
	�
	�� �loadchoices( choice$ )
	�� H%
	�fast%=�
automode%=�

 � �filelen( choice$ ) <= 0 �
    motion%=0
    delay%=0
(    sound%=�
2	    �
<�
FH%=�( choice$ )
P� H%=0 �
Zmotion%=�#H%
ddelay%=�#H%
nsound%=( �#H% > 0 )
x!� � �#H% � fast%=( �#H% > 0 )
�%� � �#H% � automode%=( �#H% > 0 )
��#H%
��
�
�� �savechoices( choice$ )
�� H%
�H% = �( choice$ )
�� H%=0 �
��#H%,motion%
��#H%,delay%
�� sound% � �#H%,1 � �#H%,0
�� fast% � �#H%,1 � �#H%,0
�!� automode% � �#H%,1 � �#H%,0
�#H%
�

"� �iconhelp
,h�helpreply("This is the Mellow Out icon. Drag an Iota Film file here to use it as the screensaver.")
6�
@
J� �menuhelp( one%,two% )
T
Ȏ one% �
^� 1:
h    Ȏ two% �
rf    � -1:�helpreply( "This submenu lets you set the delay before Mellow Out swings into action." )
|E    � 0,1,2,3,4,5,6:�helpreply( "Choose this to set the delay." )
�M    � 7:�helpreply( "Choose this to start the screensaver immediately." )
�	    �
�� 2:
�    Ȏ two% �
�t    � 0:�helpreply( "Choose this to have the film centred on the screen when the screensaver is in operation." )
�c    � 1:�helpreply( "Choose this to have the film �flying� from left to right on the screen." )
�T    � 2:�helpreply( "Choose this to have the film bouncing around the screen." )
�_    � 3:�helpreply( "Choose this to have the film wandering aimlessly around the screen." )
�g    � 4:�helpreply( "Tick this to have the sound effects in the film played while it is running." )
�    � 5:�helpreply( "Tick this to have the film played flat-out (rather than at the frame rate specified when it was created)." )
�    � 6:�helpreply( "Tick this to have the screen mode chosen automatically (rather than using the one specified when the film was created)." )
�	    �
��� 3: �helpreply( "Choose this to save the current film and �Features� settings as the default for when Mellow Out is next loaded." )
y� 4: �helpreply( "Choose this to have a blank screen as the screensaver (this, of course, needs much less memory)." )
Y� 5: �helpreply( "What? You want to quit? But having a screensaver is so tasteful!" )
�
&�
0
:� �helpreply(A$)
D$(block%+20)=A$
Nblock%!12 = block%!8
X*block%!16 = &503 : � Message_HelpReply
b,!block% = (24 + �($(block%+20)) ) � (�3)
l,ș "Wimp_SendMessage",17,block%,block%!4
v�
�
�� �fullscreen
�running%=�
�
nofilm%=�
�!block%=blackhandle%
�block%!4=-100
�block%!8=-100
�block%!12=8000
�#block%!16=8000  : � a large box
�block%!20=0
�block%!24=0
�block%!28=-1    : � on top
� ș "Wimp_OpenWindow",,block%

� acef%=0 �

    �savewithnofilm

	    �

 �

*� �fullscreen_enter = � �

4    �savewithnofilm

>	    �

H�

Rmousex%=-1

\�fullscreen_findgwindow

f!nvsyncs% = �fullscreen_vsyncs

p�

z*pointer 0

�fptr% = acef% + acef%!16

�sptr% = dir1%

�comp% = acef%!32

�flags% = acef%!36

�yoyo% = (flags%>>2) � 1

�delta% = (flags% � 3)

�=� (delta%) yoyo%=� : motion%=0 : � don't move delta films

�base%=0

�forward% = �

�-�mellowout_active( lastactive%, vsyncs% )

�next% = vsyncs%

�:gwindowx0%=-1       : � flag as the first time through

�gwindowy0%=-1

�getsyncs
�

$� �getmousepos
.&ș "Wimp_GetPointerInfo",,pointer%
8mousex% = !pointer%
Bmousey% = pointer%!4
L�
V
`� �fullscreen_nextframe
jE%=0
t� nofilm% �
~7� next% > vsyncs% � vsyncs% += 32768 : � wraparound
�� (vsyncs%-next%) >=0 �
�    oldx0%=gwindowx0%
�    oldy0%=gwindowy0%
�
    Ȗ
�
�    �fullscreen_gwindow
�+    � sptr%>0 � wavetable%>0 � sound% �
�    
�,        � � forward% � sptr% -= sptr%!-4
�:        � !sptr% <> !(sptr%+!sptr%-4) � 0,"dir1 error"
�1        ș "XIotaSound_Play",wavetable%,sptr%
�(        � forward% � sptr% += !sptr%
        

	    �

(    � � forward% � fptr% -= fptr%!-4
(6    � !fptr% <> !(fptr%+!fptr%-4) � 0,"acef error"
2    � delta% �
<F        ș "XEuclid_Expand",comp%,fptr%,base% � E%,,base% ; flags%
F	    �
P9        ș "XEuclid_Expand",comp%,fptr% � E% ; flags%
Z	    �
d    � (flags%�1)=0 � E%=0
n$    � forward% � fptr% += !fptr%
x    
�'    � 26  : � clear graphics window
�    �clearlast
�    
�    � showsprite% �
�        � spritex%>-1 �
�            � delta% �
�e                ș "OS_SpriteOp",256+52,sprarea%,sprite$,spritex%,spritey%,8+3,factors%,pixtrans%
�            �
�X                ș "OS_SpriteOp",256+50,sprarea%,sprite$,spritex%,spritey%,,factors%
�            �
�
        �
�5        � spritex% = -1 � spritex% = screenxos%/2
�9        spritex% += 8*��sprited% + (screenxos%-sprx%)
9        spritey% += 8*��sprited% + (screenyos%-spry%)
@        spritex% = (spritex% � �(dx%-1))� (screenxos%-sprx%)
@        spritey% = (spritey% � �(dy%-1))� (screenyos%-spry%)
"        � delta% �
,a            ș "OS_SpriteOp",256+52,sprarea%,sprite$,spritex%,spritey%,8+3,factors%,pixtrans%
6
        �
@_            ș "OS_SpriteOp",256+52,sprarea%,sprite$,spritex%,spritey%,8,factors%,pixtrans%
J
        �
T         sprited% += spritem%
^        spritem% += �(3)-1
h#        � spritem%>5 spritem%=5
r%        � spritem%<-5 spritem%=-5
|	    �
�    
�"    � fptr% = acef%+acef%!16 �
�        forward%=�
�        fptr% += !fptr%
�0        � sptr%>0 � sound% � sptr% += !sptr%
�	    �
�        
�    � !fptr%=0 �
�$        � yoyo%=1 � forward%=� �
�            forward%=�
�!            fptr% -= fptr%!-4
�6            � sptr%>0 � sound% � sptr% -= sptr%!-4
�
        �
            forward%=�
&            fptr% = acef%+acef%!16
            base% = 0
&2            � sptr%>0 � sound% � sptr% = dir1%
0
        �
:	    �
D3    � fast% � next%=vsyncs% � next% += nvsyncs%
N    next% = next% � &7FFF
X�
b/� E% �fullscreen_leave:� !E%,�zerostr(E%+4)
l�
v
�� �savewithnofilm
��fullscreen_remembermode
�� 26
��
�*pointer 0
�	� 128
�
� 19;0;0;
�� 19,0,24,0,0,0
��
�
nofilm%=�
�mousex%=-1
��
�
�� �clearlast
� oldx0%<0 �
9� pale%>0 �setbg( !(pale%+28+4*(pale%!4)), pale%!16 )
� oldx0% < gwindowx0% �
     � oldx0%,oldy0%
**    � 96+7, gwindowx0%-1,oldy0%+yos%-1
4�
>� oldx0% > gwindowx0% �
H     � gwindowx0%+xos%,oldy0%
R*    � 96+7,oldx0%+xos%-1,oldy0%+yos%-1
\�
f� oldy0% < gwindowy0% �
p    � oldx0%,oldy0%
z*    � 96+7, oldx0%+xos%-1,gwindowy0%-1
��
�� oldy0% > gwindowy0% �
�    � oldx0%,oldy0%+yos%-1
�-    � 96+7, oldx0%+xos%-1,gwindowy0%+yos%
��
��
�
�� �fullscreen_setmode
�� mode$
�5� xeig%,yeig%,big%,x%,y%,log2bpp%,mode%,A%,flags%
�
�log2bpp% = pale%!16
�big% = ( motion% <> 0 )
5ș "OS_ReadModeVariable",acef%!28,4 � ,,filmxeig%
5ș "OS_ReadModeVariable",acef%!28,5 � ,,filmyeig%
 x% = (acef%!20) >> filmxeig%
$ y% = (acef%!24) >> filmyeig%
.� RiscPC% �
8    !modesel%=1
B    modesel%!12=log2bpp%
L    modesel%!16=-1
V    modesel%!20=-1
`    � automode% �
jK        �riscpc_findmode( x%, y%, big%, log2bpp%, filmxeig%-filmyeig% )
t"        � x and y are returned
~        modesel%!4=x%
�        modesel%!8=y%
�        � x%=0 � = �
�	    �
�#        mode$=�zerostr(full%+8)
�(        � mode$="" mode$=�(acef%!28)
�:        � mode$=�(�mode$) � � 22,�mode$ : = (�=�mode$)
�1        A%=�" "+mode$," X")    : � avoid "EX"
�(        � A%=0 A% = �" "+mode$," x")
�)        modesel%!4 = �� mode$, A%+1 )
�1        A%=�" "+mode$," Y")    : � avoid "EY"
�(        � A%=0 A% = �" "+mode$," y")
�)        modesel%!8 = �� mode$, A%+1 )
        A%=�mode$,"F")

4        � A%<>0 � modesel%!16 = �� mode$, A%+1 )
	    �
0    ș "XOS_ScreenMode",0,modesel% � ;flags%
(    = (flags% � 1)=0
2�
<� automode% �
FL    mode% = �arc_findmode( x%, y%, big%, log2bpp%, filmxeig%-filmyeig% )
P    � mode% = -1 � = �
Z�
d    mode$=�zerostr(full%+8)
n    � mode$=�(�mode$) �
x        mode%=�mode$
�	    �
�        mode%=acef%!28
�	    �
��
�� mode%
�= (� = mode%)
�
�� �fullscreen_remembermode
�� R1%,A%,B%
�� RiscPC% �
�#    ș "OS_ScreenMode",1 � ,R1%
�    � R1%<256 �
�        deskmode% = R1%
	    �
        B%=20
'        ȕ R1%!B% <> -1 : B%+=8 : �
"        � A%=0 � B%+3 �4
,&            A%!screenbuf% = A%!R1%
6
        �
@"        deskmode% = screenbuf%
J	    �
T�
^    deskmode% = �
h�
r�
|
�� �fullscreen_enter
��fullscreen_remembermode
�!� � �fullscreen_setmode � = �
��fullscreen_setpalette
�=�
�
�� �fullscreen_findgwindow
�xeig% = �modevar( 4 )
�yeig% = �modevar( 5 )
�-xos% = ((acef%!20) >> filmxeig%) << xeig%
�-yos% = ((acef%!24) >> filmyeig%) << yeig%
�dx% = 1 << xeig%
�dy% = 1 << yeig%
'screenxos% = (1+�modevar(11)) * dx%
'screenyos% = (1+�modevar(12)) * dy%

&i� screenxos% < xos% � screenyos% < yos% � �fullscreen_leave:� 0,"This film is too big for this mode!"
0=flysparex%= (screenxos%-xos%)/dx%        : � pixels spare
:%flysparey%= (screenyos%-yos%)/dy%
D*� flysparex%=0 � motion%=1 � motion%=0
Nflyheight% = 32 : � pixels
X5� flyheight% > flysparey% � flyheight%=flysparey%
bbouncex = flysparex%*dx%/2
lbouncey = flysparey%*dy%/2
v'bouncedir% = �(360) : bouncestep%=8
�meander% = 0
��
�
�� �fullscreen_gwindow
�Ȏ motion% �
�� 1: � flying
�"    gwindowx0%=flycounter%*dx%
�    gwindowy0%=flysparey%/2
�?    gwindowy0%+=flyheight%*(��(720*flycounter%/flysparex%))
�"    gwindowy0%= gwindowy0%*dy%
�0    flycounter%=(flycounter%+1) � flysparex%
�!� 2,3: � bouncing, meandering
�    � motion% = 3 �
"        bouncedir% += meander%
)        meander% = meander% -2 + �(3)
1        � meander% > 5 � �(2)=1 � meander%-=1
 2        � meander% < -5 � �(2)=1 � meander%+=1
*+        � meander% < -10 meander% = -10
4)        � meander% > 10 meander% = 10
>	    �
H/    bouncex += bouncestep% * ��(bouncedir%)
R/    bouncey += bouncestep% * ��(bouncedir%)
\    � bouncex < 0 �
f        bouncex = 0
p1        bouncedir% = 170 - bouncedir% + �(20)
z        meander%=0
�	    �
�$    � bouncex > flysparex%*dx% �
�$        bouncex = flysparex%*dx%
�1        bouncedir% = 170 - bouncedir% + �(20)
�        meander%=0
�	    �
�    � bouncey < 0 �
�        bouncey = 0
�0        bouncedir% = 10 - bouncedir% - �(20)
�        meander%=0
�	    �
�$    � bouncey > flysparey%*dy% �
�$        bouncey = flysparey%*dy%
0        bouncedir% = 10 - bouncedir% - �(20)
        meander%=0
	    �
$    gwindowx0% = bouncex
.    gwindowy0% = bouncey
8: � centred
B#    gwindowx0%=flysparex%*dx%/2
L#    gwindowy0%=flysparey%*dy%/2
V�
`
j)� must byte-align x and pixel-align y
tlog2bpc% = �modevar( 10 )
~*bits% = (gwindowx0% / dx%) << log2bpc%
�bits% = bits% � (�7)
�*gwindowx0% = (bits% >> log2bpc%) * dx%
�
�*gwindowy0% = gwindowy0% � � ( dy% -1 )
�
�gwindowx1%=gwindowx0%+xos%
�gwindowy1%=gwindowy0%+yos%
�9� 24,gwindowx0%;gwindowy0%;gwindowx1%-1;gwindowy1%-1;
��
�
�� �fullscreen_vsyncs
�
� vsyncs%
� rate%<>0 �

    Ȏ !rate% �
    � 0:
$        � Centiseconds per frame
(%        = (rate%!4)*(rate%!8)/100
2    � 1:
<        � Frames per second
F!        = (rate%!8)/(rate%!4)
P    � 2:
Z        = rate%!4
d	    �
n�
x+� not a clue ... use a sensible default
�=8
�
�� �fullscreen_setpalette
�)� ncol%,log2bpc%,table%,modeflags%,A%
�� pale%=0 �
�log2bpc%=pale%!16
�table%=pale%+28
�,�setbg( table%!(pale%!4 * 4), log2bpc% )
�� 26
��
�*�setcol( 0, 24, table%!(pale%!4 * 4) )
�� log2bpc%>3 �
�modeflags% = pale%!8
-� (log2bpc%=3) � (modeflags% � 128)=0 � �
 ncol% = 1 << (1 << log2bpc%)
� A% = 0 � ncol%-1
"$�setcol( A%, 16, table%!(A%*4) )
,�
6�
@
J� �setbg( A%, log2bpc% )
T(� log2bpc%<3 � � (A% � &7F) +128 : �
^� log2bpc%=3 �
h9    ș "ColourTrans_ColourNumberToGCOL",A% � 255 � A%
r    A% = A% � 255
|&    � 128 + (A%>>2) Ȝ ((A%�3)<<6)
�	    �
��
�� Must be on a Risc PC now!
�3ș "ColourTrans_SetGCOL",A% � &FFFFFF00,,,128,0
��
�
�� �setcol( A%, B%, C%)
�)� 19,A%,B%, (C%>>8),(C%>>16),(C%>>24)
��
�
�� �fullscreen_leave
��losesyncs
�block%!24=blackhandle%
ș "Wimp_SetMode",deskmode%
*pointer 1
$ș "Wimp_CloseWindow",,block%+24
&$ș "ColourTrans_InvalidateCache"
0running%=�
:showsprite%=�
D�
N
X� �getsyncs
b� claimed% �
lș "XOS_Byte",14,4
vclaimed%=�
��
�
�� �losesyncs
�� claimed%=� �
�ș "XOS_Byte",13,4
�claimed%=�
��
�
�� �showsprite(A$)
�%� A%,B%,C%,sprmode%,sprex%,sprey%
�� OSVersion% < 163 � �
�� RO3 only
�#ș "Wimp_BaseOfSprites" � A%,B%
Bș "XOS_SpriteOp",256+40,A%,A$ � ,,,sprx%,spry%,,sprmode% ; C%
� (C% � 1) A%=B%
Bș "XOS_SpriteOp",256+40,A%,A$ � ,,,sprx%,spry%,,sprmode% ; C%
 � (C% � 1) �
*sprarea%=A%
4sprite$=A$
>$ș "ColourTrans_InvalidateCache"
H8ș "ColourTrans_SelectTable",A%,A$,-1,-1,pixtrans%,0
R2ș "OS_ReadModeVariable",sprmode%,4 � ,,sprex%
\)�sprfactor( sprex%, xeig%, factors% )
fsprx% = sprx% << sprex%
p2ș "OS_ReadModeVariable",sprmode%,5 � ,,sprey%
z+�sprfactor( sprey%, yeig%, factors%+4 )
�spry% = spry% << sprey%
�showsprite% = �
�spritex%=-1
�spritey%=screenyos%/2
�sprited%=�(360)
�spritem%=0
��
�
�&� �sprfactor( spre%, eig%, fact% )
�� spre% > eig% �
�"    !fact% = 1 << (spre%-eig%)
�    fact%!8 = 1
��
    !fact%=1
#    fact%!8 = 1 << (eig%-spre%)
�
$�
.
8C� -------------------------------------------------------------
B
L-� �film_findchunk( chunk$, start%, len% )
V
� end%
`end%=start%+len%
j$name%=chunk$
t�
~&    � !start% = !name% � =start%+8
�    start% += start%!4
�� start% >= end%
�=0
�
�-� �mellowout_active( � keyp%, � vsyncs% )
�-ș "OS_Module",18,"MellowOut" � ,,,,keyp%
�)� read private word...cunning or wot?
�(vsyncs% = keyp% >>> 16  : � unsigned
�keyp% = keyp% � &FFFF
��
�
�C� -------------------------------------------------------------


� �menu_make
� item%,iptr%,len%,txt%
� name$,items%
(� menu% (items%*24)+28
2$menu%=name$
<len% = �(name$)-1
Fmenu%?12=7
Pmenu%?13=2
Zmenu%?14=7
dmenu%?15=0
nmenu%!20=44
xmenu%!24=0
�� item%=1 � items%
�    � name$
�    iptr%=menu%+4+item%*24
�    � name$="|" �
�)        !(iptr%-24) = !(iptr%-24) � 2
�        � name$
�	    �
�    !iptr%=0
�%    � item%=items% � !iptr% = 128
�    iptr%!4 = -1
�    � �(name$) > 12 �
�        iptr%!8 = &07000111
�        � txt% (�name$+1)
        $txt%=name$
        iptr%!12=txt%
        iptr%!16=0
"        iptr%!20=0
,	    �
6        iptr%!8 = &07000011
@        $(iptr%+12)=name$
J	    �
T)    � �(name$) > len% len% = �(name$)
^�
hmenu%!16 = len%*16+12
r
=menu%
|
�,� �menu_attach( menu%, item%, submenu% )
�$menu%!(item%*24+28+4) = submenu%
��
�
�-� �menu_open( menu%, x%, items%, lines% )
�� y%
�!y%=96 + items%*44 + lines%*24
�(ș "Wimp_CreateMenu",,menu%,x%-64,y%
��
�
�0� �menu_tick( menu%, first%, last%, which% )
�� y%,flags%
�� y%=first% � last%
 2    �menu_tick1( menu%, y%, which%=y%-first% )
 �
 �
 &
 0+� �menu_tick1( menu%, item%, whether% )
 :� flags%
 D flags% = menu%!(item%*24+28)
 N� whether% �
 X    flags% = flags% � 1
 b�
 l    flags% = flags% � (�1)
 v�
 � menu%!(item%*24+28) = flags%
 ��
 �
 �C� -------------------------------------------------------------
 �
 �� �filelen( file$ )
 �� R0,R4,flags%
 �-ș "XOS_File",5,file$ � R0,,,,R4 ; flags%
 �'� (flags% � 1) � ( R0 <> 1 ) � = -1
 �=R4
 �
 �� �load( file$, addr% )
 ��
!
!� �modevar( index% )
!
� var%
! /ș "OS_ReadModeVariable",-1,index% � ,,var%
!*	=var%
!4
!>� �zerostr( A% )
!H� A$
!Rȕ (?A% > 31)
!\    A$+=�(?A%)
!f
    A%+=1
!p�
!z=A$
!�
!�:� �riscpc_findmode( � x%, � y%, big%, log2bpp%, eig% )
!�/� index%,bx%,by%,ptr%,done%,ptr2%,ok%,beig%
!�bx%=0:by%=0
!�index%=0
!��
!�B    ș "OS_ScreenMode",2,,index%,,,,buf%,100 � ,done%,,,,,ptr%
!�    ptr2%=buf%
!�    ȕ ptr2% < ptr%
!�        index%+=1
!�#        � (ptr2%!4 � 255) = 1 �
!�2            � figure out ratio of eigenfactors
!�=            beig%=1 + �( �( ptr2%!12 / ptr2%!8 ) / �(2) )
"    
"Q            � ptr2%!16 = log2bpp% � ptr2%!8>x% � ptr2%!12>y% � beig% = eig% �
"                � big% �
"$8                    ok% = ptr2%!8>bx% � ptr2%!12>by%
".                �
"88                    � bx%=0 bx%=ptr2%!8:by%=ptr2%!12
"B8                    ok% = ptr2%!8<bx% � ptr2%!12<by%
"L                �
"V2                � ok% bx%=ptr2%!8:by%=ptr2%!12
"`            �
"j
        �
"t        ptr2% += !ptr2%
"~	    �
"�� done% <> 0
"�
x%=bx%
"�
y%=by%
"��
"�
"�3� �arc_findmode( x%, y%, big%, log2bpp%, eig% )
"�7� mode%,bx%,by%,ok%,blog2bpp%,flags%,bmode%,ex%,ey%
"�&� next%,free%,screensize%,newsize%
"�	bx%=0
"�	by%=0
"�bmode% = -1
"�+ș "Wimp_SlotSize",-1,-1 � ,next%,free%
#,ș "OS_ReadDynamicArea",2 � ,screensize%
#
&newsize% = screensize%+next%+free%
#+� newsize%>480*1024 � newsize%=480*1024
#O� newsize% > screensize% � ș "OS_ChangeDynamicArea",2,newsize%-screensize%
#(� mode%=0 � 127
#2A    ș "XOS_ReadModeVariable",mode%,10 � ,,blog2bpp% ; flags%
#<3    � (flags% � 2) = 0 � blog2bpp% = log2bpp% �
#F4        ș "OS_ReadModeVariable",mode%,4 � ,,ex%
#P4        ș "OS_ReadModeVariable",mode%,5 � ,,ey%
#Z         � (ex%-ey%) = eig% �
#dB            ș "OS_ReadModeVariable",mode%,11 � ,,ex% : ex%+=1
#nB            ș "OS_ReadModeVariable",mode%,12 � ,,ey% : ey%+=1
#x;            ș "OS_ReadModeVariable",mode%,0 � ,,flags%
#�3            � ex%>x% � ey%>y% � (flags%�15)=0 �
#�                � big% �
#�/                    ok% = ex%>bx% � ey%>by%
#�                �
#�/                    ok% = ex%<bx% � ey%<by%
#�%                    � bx%=0 ok%=�
#�                �
#�                � ok% �
#�:                    ș "OS_CheckModeValid",mode% � ok%
#�=                    � ok%>=0 bx%=ex%:by%=ey%:bmode%=mode%
#�                �
#�            �
#�
        �
$	    �
$�
$L� newsize%<>screensize% ș "OS_ChangeDynamicArea",2,screensize%-newsize%
$"=bmode%
$,
�
00000000  0d 00 0a 1c f4 20 3e 20  21 4d 65 6c 6c 6f 77 4f  |..... > !MellowO|
00000010  75 74 2e 21 52 75 6e 49  6d 61 67 65 0d 00 14 20  |ut.!RunImage... |
00000020  f4 20 56 65 72 73 69 6f  6e 20 30 2e 31 30 20 28  |. Version 0.10 (|
00000030  30 39 2d 41 75 67 2d 31  39 39 34 29 0d 00 1e 05  |09-Aug-1994)....|
00000040  f4 0d 00 28 2c f4 20 62  79 20 50 65 74 65 72 20  |...(,. by Peter |
00000050  48 61 72 74 6c 65 79 20  61 74 20 49 6f 74 61 20  |Hartley at Iota |
00000060  53 6f 66 74 77 61 72 65  20 31 39 39 34 0d 00 32  |Software 1994..2|
00000070  05 f4 0d 00 3c 3d f4 20  41 20 73 63 72 65 65 6e  |....<=. A screen|
00000080  73 61 76 65 72 20 74 68  61 74 20 63 61 6e 20 70  |saver that can p|
00000090  6c 61 79 20 49 6f 74 61  20 66 69 6c 6d 73 20 2d  |lay Iota films -|
000000a0  20 65 76 65 6e 20 6f 6e  65 73 20 77 69 74 68 0d  | even ones with.|
000000b0  00 46 10 f4 20 73 6f 75  6e 64 73 20 69 6e 2e 0d  |.F.. sounds in..|
000000c0  00 50 05 f4 0d 00 5a 27  f4 20 51 75 69 63 6b 20  |.P....Z'. Quick |
000000d0  74 6f 75 72 20 72 6f 75  6e 64 20 74 68 65 20 69  |tour round the i|
000000e0  6e 67 72 65 64 69 65 6e  74 73 3a 0d 00 64 41 f4  |ngredients:..dA.|
000000f0  20 20 20 2a 20 4d 65 6c  6c 6f 77 4f 75 74 20 6d  |   * MellowOut m|
00000100  6f 64 75 6c 65 20 74 68  61 74 20 69 6e 63 72 65  |odule that incre|
00000110  6d 65 6e 74 73 20 61 20  63 6f 75 6e 74 65 72 20  |ments a counter |
00000120  65 76 65 72 79 20 74 69  6d 65 20 61 0d 00 6e 44  |every time a..nD|
00000130  f4 20 20 20 20 20 6b 65  79 20 6f 72 20 6d 6f 75  |.     key or mou|
00000140  73 65 20 62 75 74 74 6f  6e 20 69 73 20 64 65 70  |se button is dep|
00000150  72 65 73 73 65 64 2c 20  6f 72 20 77 68 65 6e 65  |ressed, or whene|
00000160  76 65 72 20 65 6c 73 65  20 74 68 65 72 65 27 73  |ver else there's|
00000170  0d 00 78 1d f4 20 20 20  20 20 61 6e 20 69 6d 70  |..x..     an imp|
00000180  6f 72 74 61 6e 74 20 65  76 65 6e 74 2e 0d 00 82  |ortant event....|
00000190  43 f4 20 20 20 2a 20 57  68 65 6e 20 74 68 65 72  |C.   * When ther|
000001a0  65 27 76 65 20 62 65 65  6e 20 6e 6f 20 65 76 65  |e've been no eve|
000001b0  6e 74 73 20 66 6f 72 20  61 20 77 68 69 6c 65 2c  |nts for a while,|
000001c0  20 63 68 61 6e 67 65 20  6d 6f 64 65 20 61 6e 64  | change mode and|
000001d0  0d 00 8c 1f f4 20 20 20  20 20 73 74 61 72 74 20  |.....     start |
000001e0  70 6c 61 79 69 6e 67 20  61 20 66 69 6c 6d 2e 0d  |playing a film..|
000001f0  00 96 43 f4 20 20 20 2a  20 46 69 6e 64 20 74 68  |..C.   * Find th|
00000200  65 20 6d 6f 64 65 20 69  6e 20 74 68 65 20 46 55  |e mode in the FU|
00000210  4c 4c 28 73 63 72 65 65  6e 29 20 63 68 75 6e 6b  |LL(screen) chunk|
00000220  20 69 66 20 69 74 20 68  61 73 20 6f 6e 65 2c 20  | if it has one, |
00000230  6f 72 0d 00 a0 26 f4 20  20 20 20 20 65 6c 73 65  |or...&.     else|
00000240  20 69 6e 20 74 68 65 20  41 43 45 46 28 69 6c 6d  | in the ACEF(ilm|
00000250  29 20 63 68 75 6e 6b 2e  0d 00 aa 44 f4 20 20 20  |) chunk....D.   |
00000260  2a 20 53 65 74 20 75 70  20 74 68 65 20 70 61 6c  |* Set up the pal|
00000270  65 74 74 65 20 66 72 6f  6d 20 74 68 65 20 50 41  |ette from the PA|
00000280  4c 45 28 74 74 65 29 20  63 68 75 6e 6b 20 69 66  |LE(tte) chunk if|
00000290  20 69 74 20 68 61 73 20  6f 6e 65 2e 0d 00 b4 42  | it has one....B|
000002a0  f4 20 20 20 2a 20 44 65  63 69 64 65 20 6f 6e 20  |.   * Decide on |
000002b0  66 69 6c 6d 20 73 70 65  65 64 20 75 73 69 6e 67  |film speed using|
000002c0  20 74 68 65 20 52 41 54  45 20 63 68 75 6e 6b 20  | the RATE chunk |
000002d0  69 66 20 69 74 20 68 61  73 20 6f 6e 65 2e 0d 00  |if it has one...|
000002e0  be 42 f4 20 20 20 2a 20  43 61 6c 6c 20 74 68 65  |.B.   * Call the|
000002f0  20 49 6f 74 61 53 6f 75  6e 64 20 6d 6f 64 75 6c  | IotaSound modul|
00000300  65 20 73 6f 20 77 65 20  63 61 6e 20 6d 61 6b 65  |e so we can make|
00000310  20 74 68 65 20 6e 6f 69  73 65 73 20 66 72 6f 6d  | the noises from|
00000320  0d 00 c8 2a f4 20 20 20  20 20 69 74 73 20 53 4f  |...*.     its SO|
00000330  55 4e 28 64 29 20 63 68  75 6e 6b 20 69 66 20 69  |UN(d) chunk if i|
00000340  74 20 68 61 73 20 6f 6e  65 2e 0d 00 d2 40 f4 20  |t has one....@. |
00000350  20 20 2a 20 54 68 65 6e  2c 20 65 78 70 61 6e 64  |  * Then, expand|
00000360  20 66 72 61 6d 65 73 20  66 72 6f 6d 20 74 68 65  | frames from the|
00000370  20 41 43 45 46 20 63 68  75 6e 6b 20 75 73 69 6e  | ACEF chunk usin|
00000380  67 20 45 75 63 6c 69 64  58 2e 0d 00 dc 3f f4 20  |g EuclidX....?. |
00000390  20 20 20 20 41 74 20 74  68 65 20 73 61 6d 65 20  |    At the same |
000003a0  74 69 6d 65 2c 20 70 6c  61 79 20 66 72 61 6d 65  |time, play frame|
000003b0  73 20 6f 66 20 74 68 65  20 73 6f 75 6e 64 74 72  |s of the soundtr|
000003c0  61 63 6b 20 75 73 69 6e  67 0d 00 e6 14 f4 20 20  |ack using.....  |
000003d0  20 20 20 49 6f 74 61 53  6f 75 6e 64 2e 0d 00 f0  |   IotaSound....|
000003e0  42 f4 20 20 20 2a 20 42  75 74 20 69 66 20 61 6e  |B.   * But if an|
000003f0  79 74 68 69 6e 67 20 68  61 70 70 65 6e 73 20 69  |ything happens i|
00000400  6e 20 74 68 65 20 6b 65  79 20 6f 72 20 6d 6f 75  |n the key or mou|
00000410  73 65 20 64 65 70 61 72  74 6d 65 6e 74 73 2c 0d  |se departments,.|
00000420  00 fa 43 f4 20 20 20 20  20 6f 72 20 69 66 20 61  |..C.     or if a|
00000430  6e 79 20 77 69 6e 64 6f  77 20 69 73 20 6f 70 65  |ny window is ope|
00000440  6e 65 64 20 6f 6e 20 74  6f 70 20 6f 66 20 6f 75  |ned on top of ou|
00000450  72 73 2c 20 67 6f 20 62  61 63 6b 20 74 6f 20 74  |rs, go back to t|
00000460  68 65 0d 01 04 11 f4 20  20 20 20 20 64 65 73 6b  |he.....     desk|
00000470  74 6f 70 0d 01 0e 05 f4  0d 01 18 04 0d 01 22 0e  |top...........".|
00000480  63 6c 61 69 6d 65 64 25  3d a3 0d 01 2c 45 ee 20  |claimed%=...,E. |
00000490  85 20 ee 20 85 20 87 3a  f2 6c 6f 73 65 73 79 6e  |. . . .:.losesyn|
000004a0  63 73 3a 85 20 30 2c 22  49 6e 74 65 72 6e 61 6c  |cs:. 0,"Internal|
000004b0  20 65 72 72 6f 72 20 28  22 2b f6 24 2b 22 20 61  | error ("+.$+" a|
000004c0  74 20 6c 69 6e 65 20 22  2b c3 9e 2b 22 29 22 0d  |t line "+..+")".|
000004d0  01 36 37 de 20 62 6c 6f  63 6b 25 20 32 35 36 2c  |.67. block% 256,|
000004e0  20 73 63 72 65 65 6e 62  75 66 25 20 31 32 38 2c  | screenbuf% 128,|
000004f0  20 62 75 66 25 20 31 30  30 2c 20 70 6f 69 6e 74  | buf% 100, point|
00000500  65 72 25 20 32 30 0d 01  40 34 de 20 64 65 6c 61  |er% 20..@4. dela|
00000510  79 25 28 36 29 2c 20 70  69 78 74 72 61 6e 73 25  |y%(6), pixtrans%|
00000520  31 36 2c 20 66 61 63 74  6f 72 73 25 31 36 2c 20  |16, factors%16, |
00000530  6d 6f 64 65 73 65 6c 25  32 34 0d 01 4a 04 0d 01  |modesel%24..J...|
00000540  54 35 64 65 6c 61 79 25  28 29 20 3d 20 33 30 2c  |T5delay%() = 30,|
00000550  36 30 2c 31 32 30 2c 33  30 30 2c 36 30 30 2c 39  |60,120,300,600,9|
00000560  30 30 2c 31 38 30 30 20  3a 20 f4 20 73 65 63 6f  |00,1800 : . seco|
00000570  6e 64 73 0d 01 55 04 0d  01 56 0c 61 66 74 65 72  |nds..U...V.after|
00000580  25 3d 30 0d 01 5e 04 0d  01 68 2b c8 99 20 22 4f  |%=0..^...h+.. "O|
00000590  53 5f 42 79 74 65 22 2c  20 31 32 39 2c 20 30 2c  |S_Byte", 129, 0,|
000005a0  20 32 35 35 20 b8 20 2c  4f 53 56 65 72 73 69 6f  | 255 . ,OSVersio|
000005b0  6e 25 0d 01 72 21 52 69  73 63 50 43 25 3d 28 20  |n%..r!RiscPC%=( |
000005c0  4f 53 56 65 72 73 69 6f  6e 25 20 3e 3d 20 31 36  |OSVersion% >= 16|
000005d0  35 20 29 0d 01 7c 04 0d  01 86 0d 21 62 6c 6f 63  |5 )..|.....!bloc|
000005e0  6b 25 3d 30 0d 01 90 3a  c8 99 20 22 57 69 6d 70  |k%=0...:.. "Wimp|
000005f0  5f 49 6e 69 74 69 61 6c  69 73 65 22 2c 33 31 30  |_Initialise",310|
00000600  2c 26 34 42 35 33 34 31  35 34 2c 22 4d 65 6c 6c  |,&4B534154,"Mell|
00000610  6f 77 20 6f 75 74 22 2c  62 6c 6f 63 6b 25 0d 01  |ow out",block%..|
00000620  9a 1e c8 99 20 22 49 6f  74 61 53 6f 75 6e 64 5f  |.... "IotaSound_|
00000630  52 65 67 69 73 74 65 72  41 70 70 22 0d 01 a4 10  |RegisterApp"....|
00000640  77 61 76 65 74 61 62 6c  65 25 3d 30 0d 01 ae 0b  |wavetable%=0....|
00000650  66 69 6c 6d 25 3d 93 0d  01 b8 04 0d 01 c2 2e f2  |film%=..........|
00000660  6c 6f 61 64 63 68 6f 69  63 65 73 28 20 22 3c 4d  |loadchoices( "<M|
00000670  65 6c 6c 6f 77 4f 75 74  24 44 69 72 3e 2e 21 43  |ellowOut$Dir>.!C|
00000680  68 6f 69 63 65 73 22 20  29 0d 01 cc 10 f2 69 6e  |hoices" ).....in|
00000690  69 74 77 69 6e 64 6f 77  73 0d 01 d6 0e f2 69 6e  |itwindows.....in|
000006a0  69 74 6d 65 6e 75 73 0d  01 e0 27 f2 6c 6f 61 64  |itmenus...'.load|
000006b0  66 69 6c 6d 28 20 22 3c  4d 65 6c 6c 6f 77 4f 75  |film( "<MellowOu|
000006c0  74 24 44 69 72 3e 2e 46  69 6c 6d 22 20 29 0d 01  |t$Dir>.Film" )..|
000006d0  ea 0e 71 75 69 74 61 70  70 25 3d a3 0d 01 f4 0e  |..quitapp%=.....|
000006e0  72 75 6e 6e 69 6e 67 25  3d a3 0d 01 fe 11 73 68  |running%=.....sh|
000006f0  6f 77 73 70 72 69 74 65  25 3d a3 0d 02 08 0f 73  |owsprite%=.....s|
00000700  70 72 69 74 65 78 25 3d  2d 31 0d 02 12 08 4a 25  |pritex%=-1....J%|
00000710  3d 30 0d 02 1c 0d 6c 61  73 74 6b 70 25 3d 30 0d  |=0....lastkp%=0.|
00000720  02 26 11 66 6c 79 63 6f  75 6e 74 65 72 25 3d 30  |.&.flycounter%=0|
00000730  0d 02 30 04 0d 02 3a 27  c8 99 20 22 4f 53 5f 52  |..0...:'.. "OS_R|
00000740  65 61 64 4d 6f 6e 6f 74  6f 6e 69 63 54 69 6d 65  |eadMonotonicTime|
00000750  22 20 b8 20 6c 61 73 74  6b 70 25 0d 02 44 04 0d  |" . lastkp%..D..|
00000760  02 4e 2b f2 6d 65 6c 6c  6f 77 6f 75 74 5f 61 63  |.N+.mellowout_ac|
00000770  74 69 76 65 28 20 6c 61  73 74 61 63 74 69 76 65  |tive( lastactive|
00000780  25 2c 20 6a 75 6e 6b 25  20 29 0d 02 58 26 c8 99  |%, junk% )..X&..|
00000790  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
000007a0  72 49 6e 66 6f 22 2c 2c  70 6f 69 6e 74 65 72 25  |rInfo",,pointer%|
000007b0  0d 02 62 15 6d 6f 75 73  65 78 25 3d 21 70 6f 69  |..b.mousex%=!poi|
000007c0  6e 74 65 72 25 0d 02 6c  16 6d 6f 75 73 65 79 25  |nter%..l.mousey%|
000007d0  3d 70 6f 69 6e 74 65 72  25 21 34 0d 02 76 0b 6f  |=pointer%!4..v.o|
000007e0  75 74 24 3d 22 22 0d 02  80 04 0d 02 8a 05 f5 0d  |ut$=""..........|
000007f0  02 94 27 20 20 20 20 c8  99 20 22 57 69 6d 70 5f  |..'    .. "Wimp_|
00000800  50 6f 6c 6c 22 2c 30 2c  62 6c 6f 63 6b 25 20 b8  |Poll",0,block% .|
00000810  20 63 6f 64 65 25 0d 02  9e 12 20 20 20 20 c8 8e  | code%....    ..|
00000820  20 63 6f 64 65 25 20 ca  0d 02 a8 0c 20 20 20 20  | code% .....    |
00000830  c9 20 30 3a 0d 02 b2 2d  20 20 20 20 20 20 20 20  |. 0:...-        |
00000840  c8 99 20 22 4f 53 5f 52  65 61 64 4d 6f 6e 6f 74  |.. "OS_ReadMonot|
00000850  6f 6e 69 63 54 69 6d 65  22 20 b8 20 74 69 6d 65  |onicTime" . time|
00000860  25 0d 02 bc 2f 20 20 20  20 20 20 20 20 f2 6d 65  |%.../        .me|
00000870  6c 6c 6f 77 6f 75 74 5f  61 63 74 69 76 65 28 20  |llowout_active( |
00000880  61 63 74 69 76 65 25 2c  20 6a 75 6e 6b 25 20 29  |active%, junk% )|
00000890  0d 02 c6 2e 20 20 20 20  20 20 20 20 c8 99 20 22  |....        .. "|
000008a0  57 69 6d 70 5f 47 65 74  50 6f 69 6e 74 65 72 49  |Wimp_GetPointerI|
000008b0  6e 66 6f 22 2c 2c 70 6f  69 6e 74 65 72 25 0d 02  |nfo",,pointer%..|
000008c0  d0 3f 20 20 20 20 20 20  20 20 e7 20 6d 6f 75 73  |.?        . mous|
000008d0  65 78 25 3d 2d 31 20 8c  20 6d 6f 75 73 65 78 25  |ex%=-1 . mousex%|
000008e0  3d 21 70 6f 69 6e 74 65  72 25 3a 6d 6f 75 73 65  |=!pointer%:mouse|
000008f0  79 25 3d 70 6f 69 6e 74  65 72 25 21 34 0d 02 da  |y%=pointer%!4...|
00000900  4f 20 20 20 20 20 20 20  20 e7 20 61 63 74 69 76  |O        . activ|
00000910  65 25 3c 3e 6c 61 73 74  61 63 74 69 76 65 25 20  |e%<>lastactive% |
00000920  84 20 6d 6f 75 73 65 78  25 3c 3e 21 70 6f 69 6e  |. mousex%<>!poin|
00000930  74 65 72 25 20 84 20 6d  6f 75 73 65 79 25 3c 3e  |ter% . mousey%<>|
00000940  70 6f 69 6e 74 65 72 25  21 34 20 8c 0d 02 e4 38  |pointer%!4 ....8|
00000950  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 72 75  |            . ru|
00000960  6e 6e 69 6e 67 25 20 80  20 28 61 66 74 65 72 25  |nning% . (after%|
00000970  3d 30 20 84 20 74 69 6d  65 25 3e 61 66 74 65 72  |=0 . time%>after|
00000980  25 29 20 8c 0d 02 ee 25  20 20 20 20 20 20 20 20  |%) ....%        |
00000990  20 20 20 20 20 20 20 20  f2 66 75 6c 6c 73 63 72  |        .fullscr|
000009a0  65 65 6e 5f 6c 65 61 76  65 0d 02 f8 11 20 20 20  |een_leave....   |
000009b0  20 20 20 20 20 20 20 20  20 cd 0d 03 02 21 20 20  |         ....!  |
000009c0  20 20 20 20 20 20 20 20  20 20 6d 6f 75 73 65 78  |          mousex|
000009d0  25 3d 21 70 6f 69 6e 74  65 72 25 0d 03 0c 22 20  |%=!pointer%..." |
000009e0  20 20 20 20 20 20 20 20  20 20 20 6d 6f 75 73 65  |           mouse|
000009f0  79 25 3d 70 6f 69 6e 74  65 72 25 21 34 0d 03 16  |y%=pointer%!4...|
00000a00  1d 20 20 20 20 20 20 20  20 20 20 20 20 6c 61 73  |.            las|
00000a10  74 6b 70 25 3d 74 69 6d  65 25 0d 03 20 23 20 20  |tkp%=time%.. #  |
00000a20  20 20 20 20 20 20 20 20  20 20 6c 61 73 74 61 63  |          lastac|
00000a30  74 69 76 65 25 3d 61 63  74 69 76 65 25 0d 03 2a  |tive%=active%..*|
00000a40  0d 20 20 20 20 20 20 20  20 cc 0d 03 34 3c 20 20  |.        ...4<  |
00000a50  20 20 20 20 20 20 20 20  20 20 e7 20 28 74 69 6d  |          . (tim|
00000a60  65 25 20 2d 20 6c 61 73  74 6b 70 25 29 20 3e 20  |e% - lastkp%) > |
00000a70  28 64 65 6c 61 79 25 28  64 65 6c 61 79 25 29 2a  |(delay%(delay%)*|
00000a80  31 30 30 29 20 8c 0d 03  3e 37 20 20 20 20 20 20  |100) ...>7      |
00000a90  20 20 20 20 20 20 20 20  20 20 e7 20 ac 20 72 75  |          . . ru|
00000aa0  6e 6e 69 6e 67 25 20 8c  20 61 66 74 65 72 25 3d  |nning% . after%=|
00000ab0  30 3a f2 66 75 6c 6c 73  63 72 65 65 6e 0d 03 48  |0:.fullscreen..H|
00000ac0  11 20 20 20 20 20 20 20  20 20 20 20 20 cd 0d 03  |.            ...|
00000ad0  52 32 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |R2            . |
00000ae0  72 75 6e 6e 69 6e 67 25  20 8c 20 f2 66 75 6c 6c  |running% . .full|
00000af0  73 63 72 65 65 6e 5f 6e  65 78 74 66 72 61 6d 65  |screen_nextframe|
00000b00  0d 03 5c 0d 20 20 20 20  20 20 20 20 cd 0d 03 66  |..\.        ...f|
00000b10  18 20 20 20 20 20 20 20  20 e7 20 72 75 6e 6e 69  |.        . runni|
00000b20  6e 67 25 20 8c 0d 03 70  24 20 20 20 20 20 20 20  |ng% ...p$       |
00000b30  20 20 20 20 20 21 62 6c  6f 63 6b 25 3d 62 6c 61  |     !block%=bla|
00000b40  63 6b 68 61 6e 64 6c 65  25 0d 03 7a 30 20 20 20  |ckhandle%..z0   |
00000b50  20 20 20 20 20 20 20 20  20 c8 99 20 22 57 69 6d  |         .. "Wim|
00000b60  70 5f 47 65 74 57 69 6e  64 6f 77 53 74 61 74 65  |p_GetWindowState|
00000b70  22 2c 2c 62 6c 6f 63 6b  25 0d 03 84 23 20 20 20  |",,block%...#   |
00000b80  20 20 20 20 20 20 20 20  20 e7 20 62 6c 6f 63 6b  |         . block|
00000b90  25 21 32 38 20 3c 3e 20  2d 31 20 8c 0d 03 8e 29  |%!28 <> -1 ....)|
00000ba0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000bb0  f2 66 75 6c 6c 73 63 72  65 65 6e 5f 6c 65 61 76  |.fullscreen_leav|
00000bc0  65 20 20 20 20 0d 03 98  27 20 20 20 20 20 20 20  |e    ...'       |
00000bd0  20 20 20 20 20 20 20 20  20 6c 61 73 74 61 63 74  |         lastact|
00000be0  69 76 65 25 3d 61 63 74  69 76 65 25 0d 03 a2 23  |ive%=active%...#|
00000bf0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000c00  6c 61 73 74 6b 70 25 20  3d 20 74 69 6d 65 25 0d  |lastkp% = time%.|
00000c10  03 ac 11 20 20 20 20 20  20 20 20 20 20 20 20 cd  |...            .|
00000c20  0d 03 b6 0d 20 20 20 20  20 20 20 20 cd 0d 03 c0  |....        ....|
00000c30  0c 20 20 20 20 c9 20 31  3a 0d 03 ca 32 20 20 20  |.    . 1:...2   |
00000c40  20 20 20 20 20 c8 99 20  22 57 69 6d 70 5f 52 65  |     .. "Wimp_Re|
00000c50  64 72 61 77 57 69 6e 64  6f 77 22 2c 2c 62 6c 6f  |drawWindow",,blo|
00000c60  63 6b 25 20 b8 20 6d 6f  72 65 25 0d 03 d4 14 20  |ck% . more%.... |
00000c70  20 20 20 20 20 20 20 c8  95 20 6d 6f 72 65 25 0d  |       .. more%.|
00000c80  03 de 36 20 20 20 20 20  20 20 20 20 20 20 20 c8  |..6            .|
00000c90  99 20 22 57 69 6d 70 5f  47 65 74 52 65 63 74 61  |. "Wimp_GetRecta|
00000ca0  6e 67 6c 65 22 2c 2c 62  6c 6f 63 6b 25 20 b8 20  |ngle",,block% . |
00000cb0  6d 6f 72 65 25 0d 03 e8  0d 20 20 20 20 20 20 20  |more%....       |
00000cc0  20 ce 0d 03 f2 29 20 20  20 20 c9 20 32 3a 20 c8  | ....)    . 2: .|
00000cd0  99 20 22 57 69 6d 70 5f  4f 70 65 6e 57 69 6e 64  |. "Wimp_OpenWind|
00000ce0  6f 77 22 2c 2c 62 6c 6f  63 6b 25 0d 03 fc 0c 20  |ow",,block%.... |
00000cf0  20 20 20 c9 20 36 3a 0d  04 06 1a 20 20 20 20 20  |   . 6:....     |
00000d00  20 20 20 c8 8e 20 62 6c  6f 63 6b 25 21 31 32 20  |   .. block%!12 |
00000d10  ca 0d 04 10 11 20 20 20  20 20 20 20 20 c9 20 2d  |.....        . -|
00000d20  32 3a 0d 04 1a 3f 20 20  20 20 20 20 20 20 20 20  |2:...?          |
00000d30  20 20 e7 20 28 62 6c 6f  63 6b 25 21 38 20 80 20  |  . (block%!8 . |
00000d40  32 29 20 f2 6d 65 6e 75  5f 6f 70 65 6e 28 6d 6d  |2) .menu_open(mm|
00000d50  61 69 6e 25 2c 21 62 6c  6f 63 6b 25 2c 36 2c 31  |ain%,!block%,6,1|
00000d60  29 0d 04 24 0d 20 20 20  20 20 20 20 20 cb 0d 04  |)..$.        ...|
00000d70  2e 0c 20 20 20 20 c9 20  39 3a 0d 04 38 2e 20 20  |..    . 9:..8.  |
00000d80  20 20 20 20 20 20 c8 99  20 22 57 69 6d 70 5f 47  |      .. "Wimp_G|
00000d90  65 74 50 6f 69 6e 74 65  72 49 6e 66 6f 22 2c 2c  |etPointerInfo",,|
00000da0  70 6f 69 6e 74 65 72 25  0d 04 42 18 20 20 20 20  |pointer%..B.    |
00000db0  20 20 20 20 c8 8e 20 21  62 6c 6f 63 6b 25 20 ca  |    .. !block% .|
00000dc0  0d 04 4c 10 20 20 20 20  20 20 20 20 c9 20 31 3a  |..L.        . 1:|
00000dd0  0d 04 56 1d 20 20 20 20  20 20 20 20 20 20 20 20  |..V.            |
00000de0  c8 8e 20 62 6c 6f 63 6b  25 21 34 20 ca 0d 04 60  |.. block%!4 ...`|
00000df0  20 20 20 20 20 20 20 20  20 20 20 20 20 c9 20 30  |             . 0|
00000e00  2c 31 2c 32 2c 33 2c 34  2c 35 2c 36 3a 0d 04 6a  |,1,2,3,4,5,6:..j|
00000e10  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
00000e20  20 64 65 6c 61 79 25 20  3d 20 62 6c 6f 63 6b 25  | delay% = block%|
00000e30  21 34 0d 04 74 37 20 20  20 20 20 20 20 20 20 20  |!4..t7          |
00000e40  20 20 20 20 20 20 f2 6d  65 6e 75 5f 74 69 63 6b  |      .menu_tick|
00000e50  28 20 6d 64 65 6c 61 79  25 2c 20 30 2c 20 36 2c  |( mdelay%, 0, 6,|
00000e60  20 64 65 6c 61 79 25 20  29 0d 04 7e 14 20 20 20  | delay% )..~.   |
00000e70  20 20 20 20 20 20 20 20  20 c9 20 37 3a 0d 04 7f  |         . 7:...|
00000e80  36 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |6               |
00000e90  20 c8 99 20 22 4f 53 5f  52 65 61 64 4d 6f 6e 6f  | .. "OS_ReadMono|
00000ea0  74 6f 6e 69 63 54 69 6d  65 22 20 b8 20 61 66 74  |tonicTime" . aft|
00000eb0  65 72 25 0d 04 80 1f 20  20 20 20 20 20 20 20 20  |er%....         |
00000ec0  20 20 20 20 20 20 20 61  66 74 65 72 25 2b 3d 31  |       after%+=1|
00000ed0  30 30 0d 04 88 3b 20 20  20 20 20 20 20 20 20 20  |00...;          |
00000ee0  20 20 20 20 20 20 f2 6d  65 6c 6c 6f 77 6f 75 74  |      .mellowout|
00000ef0  5f 61 63 74 69 76 65 28  20 6c 61 73 74 61 63 74  |_active( lastact|
00000f00  69 76 65 25 2c 20 6a 75  6e 6b 25 20 29 0d 04 92  |ive%, junk% )...|
00000f10  1f 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.               |
00000f20  20 f2 66 75 6c 6c 73 63  72 65 65 6e 0d 04 9c 22  | .fullscreen..."|
00000f30  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00000f40  70 6f 69 6e 74 65 72 25  21 38 20 3d 20 30 0d 04  |pointer%!8 = 0..|
00000f50  a6 3f 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.?              |
00000f60  20 20 f4 20 63 6c 65 61  72 20 6d 6f 75 73 65 20  |  . clear mouse |
00000f70  62 75 74 74 6f 6e 73 20  74 6f 20 6d 61 6b 65 20  |buttons to make |
00000f80  73 75 72 65 20 74 68 65  20 6d 65 6e 75 0d 04 b0  |sure the menu...|
00000f90  25 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |%               |
00000fa0  20 f4 20 69 73 6e 27 74  20 72 65 6f 70 65 6e 65  | . isn't reopene|
00000fb0  64 21 0d 04 ba 11 20 20  20 20 20 20 20 20 20 20  |d!....          |
00000fc0  20 20 cb 0d 04 c4 10 20  20 20 20 20 20 20 20 c9  |  .....        .|
00000fd0  20 32 3a 0d 04 ce 1d 20  20 20 20 20 20 20 20 20  | 2:....         |
00000fe0  20 20 20 c8 8e 20 62 6c  6f 63 6b 25 21 34 20 ca  |   .. block%!4 .|
00000ff0  0d 04 d8 1a 20 20 20 20  20 20 20 20 20 20 20 20  |....            |
00001000  c9 20 30 2c 31 2c 32 2c  33 3a 0d 04 e2 26 20 20  |. 0,1,2,3:...&  |
00001010  20 20 20 20 20 20 20 20  20 20 20 20 20 20 6d 6f  |              mo|
00001020  74 69 6f 6e 25 20 3d 20  62 6c 6f 63 6b 25 21 34  |tion% = block%!4|
00001030  0d 04 ec 3b 20 20 20 20  20 20 20 20 20 20 20 20  |...;            |
00001040  20 20 20 20 f2 6d 65 6e  75 5f 74 69 63 6b 28 20  |    .menu_tick( |
00001050  6d 66 65 61 74 75 72 65  73 25 2c 20 30 2c 20 33  |mfeatures%, 0, 3|
00001060  2c 20 6d 6f 74 69 6f 6e  25 20 29 0d 04 f6 14 20  |, motion% ).... |
00001070  20 20 20 20 20 20 20 20  20 20 20 c9 20 34 3a 0d  |           . 4:.|
00001080  05 00 25 20 20 20 20 20  20 20 20 20 20 20 20 20  |..%             |
00001090  20 20 20 73 6f 75 6e 64  25 20 3d 20 ac 20 73 6f  |   sound% = . so|
000010a0  75 6e 64 25 0d 05 0a 38  20 20 20 20 20 20 20 20  |und%...8        |
000010b0  20 20 20 20 20 20 20 20  f2 6d 65 6e 75 5f 74 69  |        .menu_ti|
000010c0  63 6b 31 28 20 6d 66 65  61 74 75 72 65 73 25 2c  |ck1( mfeatures%,|
000010d0  20 34 2c 20 73 6f 75 6e  64 25 20 29 0d 05 14 14  | 4, sound% )....|
000010e0  20 20 20 20 20 20 20 20  20 20 20 20 c9 20 35 3a  |            . 5:|
000010f0  0d 05 1e 23 20 20 20 20  20 20 20 20 20 20 20 20  |...#            |
00001100  20 20 20 20 66 61 73 74  25 20 3d 20 ac 20 66 61  |    fast% = . fa|
00001110  73 74 25 0d 05 28 37 20  20 20 20 20 20 20 20 20  |st%..(7         |
00001120  20 20 20 20 20 20 20 f2  6d 65 6e 75 5f 74 69 63  |       .menu_tic|
00001130  6b 31 28 20 6d 66 65 61  74 75 72 65 73 25 2c 20  |k1( mfeatures%, |
00001140  35 2c 20 66 61 73 74 25  20 29 0d 05 32 14 20 20  |5, fast% )..2.  |
00001150  20 20 20 20 20 20 20 20  20 20 c9 20 36 3a 0d 05  |          . 6:..|
00001160  3c 2b 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |<+              |
00001170  20 20 61 75 74 6f 6d 6f  64 65 25 20 3d 20 ac 20  |  automode% = . |
00001180  61 75 74 6f 6d 6f 64 65  25 0d 05 46 3b 20 20 20  |automode%..F;   |
00001190  20 20 20 20 20 20 20 20  20 20 20 20 20 f2 6d 65  |             .me|
000011a0  6e 75 5f 74 69 63 6b 31  28 20 6d 66 65 61 74 75  |nu_tick1( mfeatu|
000011b0  72 65 73 25 2c 20 36 2c  20 61 75 74 6f 6d 6f 64  |res%, 6, automod|
000011c0  65 25 20 29 0d 05 50 11  20 20 20 20 20 20 20 20  |e% )..P.        |
000011d0  20 20 20 20 cb 0d 05 5a  10 20 20 20 20 20 20 20  |    ...Z.       |
000011e0  20 c9 20 33 3a 0d 05 64  33 20 20 20 20 20 20 20  | . 3:..d3       |
000011f0  20 20 20 20 20 f2 73 61  76 65 66 69 6c 6d 28 20  |     .savefilm( |
00001200  22 3c 4d 65 6c 6c 6f 77  4f 75 74 24 44 69 72 3e  |"<MellowOut$Dir>|
00001210  2e 46 69 6c 6d 22 20 29  0d 05 6e 3a 20 20 20 20  |.Film" )..n:    |
00001220  20 20 20 20 20 20 20 20  f2 73 61 76 65 63 68 6f  |        .savecho|
00001230  69 63 65 73 28 20 22 3c  4d 65 6c 6c 6f 77 4f 75  |ices( "<MellowOu|
00001240  74 24 44 69 72 3e 2e 21  43 68 6f 69 63 65 73 22  |t$Dir>.!Choices"|
00001250  20 29 0d 05 78 10 20 20  20 20 20 20 20 20 c9 20  | )..x.        . |
00001260  34 3a 0d 05 82 1b 20 20  20 20 20 20 20 20 20 20  |4:....          |
00001270  20 20 66 69 6c 6d 6c 65  6e 25 3d 2d 31 0d 05 8c  |  filmlen%=-1...|
00001280  17 20 20 20 20 20 20 20  20 20 20 20 20 61 63 65  |.            ace|
00001290  66 25 3d 30 0d 05 96 2b  20 20 20 20 20 20 20 20  |f%=0...+        |
000012a0  20 20 20 20 c8 99 20 22  57 69 6d 70 5f 53 6c 6f  |    .. "Wimp_Slo|
000012b0  74 53 69 7a 65 22 2c 66  69 6c 6d 25 2c 2d 31 0d  |tSize",film%,-1.|
000012c0  05 a0 45 20 20 20 20 20  20 20 20 20 20 20 20 e7  |..E            .|
000012d0  20 77 61 76 65 74 61 62  6c 65 25 3e 30 20 c8 99  | wavetable%>0 ..|
000012e0  20 22 49 6f 74 61 53 6f  75 6e 64 5f 52 65 6c 65  | "IotaSound_Rele|
000012f0  61 73 65 54 61 62 6c 65  22 2c 77 61 76 65 74 61  |aseTable",waveta|
00001300  62 6c 65 25 0d 05 aa 1c  20 20 20 20 20 20 20 20  |ble%....        |
00001310  20 20 20 20 77 61 76 65  74 61 62 6c 65 25 3d 30  |    wavetable%=0|
00001320  0d 05 b4 1b 20 20 20 20  20 20 20 20 c9 20 35 3a  |....        . 5:|
00001330  20 71 75 69 74 61 70 70  25 3d b9 0d 05 be 0d 20  | quitapp%=..... |
00001340  20 20 20 20 20 20 20 cb  0d 05 c8 41 20 20 20 20  |       ....A    |
00001350  20 20 20 20 e7 20 28 70  6f 69 6e 74 65 72 25 21  |    . (pointer%!|
00001360  38 20 80 20 31 29 20 f2  6d 65 6e 75 5f 6f 70 65  |8 . 1) .menu_ope|
00001370  6e 28 20 6d 6d 61 69 6e  25 2c 20 62 6c 6f 63 6b  |n( mmain%, block|
00001380  25 21 32 30 2c 36 2c 31  29 0d 05 d2 10 20 20 20  |%!20,6,1)....   |
00001390  20 c9 20 31 37 2c 31 38  3a 0d 05 dc 1a 20 20 20  | . 17,18:....   |
000013a0  20 20 20 20 20 c8 8e 20  62 6c 6f 63 6b 25 21 31  |     .. block%!1|
000013b0  36 20 ca 0d 05 e6 1b 20  20 20 20 20 20 20 20 c9  |6 .....        .|
000013c0  20 30 3a 20 71 75 69 74  61 70 70 25 3d b9 0d 05  | 0: quitapp%=...|
000013d0  f0 23 20 20 20 20 20 20  20 20 c9 20 33 3a 20 f4  |.#        . 3: .|
000013e0  20 4d 65 73 73 61 67 65  5f 44 61 74 61 4c 6f 61  | Message_DataLoa|
000013f0  64 0d 05 fa 24 20 20 20  20 20 20 20 20 20 20 20  |d...$           |
00001400  20 e7 20 62 6c 6f 63 6b  25 21 34 30 20 3d 20 26  | . block%!40 = &|
00001410  43 32 41 20 8c 0d 06 04  36 20 20 20 20 20 20 20  |C2A ....6       |
00001420  20 20 20 20 20 20 20 20  20 f2 6c 6f 61 64 66 69  |         .loadfi|
00001430  6c 6d 28 20 a4 7a 65 72  6f 73 74 72 28 20 62 6c  |lm( .zerostr( bl|
00001440  6f 63 6b 25 2b 34 34 20  29 20 29 0d 06 0e 39 20  |ock%+44 ) )...9 |
00001450  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 62  |               b|
00001460  6c 6f 63 6b 25 21 31 36  20 3d 20 34 20 3a 20 f4  |lock%!16 = 4 : .|
00001470  20 4d 65 73 73 61 67 65  5f 44 61 74 61 4c 6f 61  | Message_DataLoa|
00001480  64 41 63 6b 0d 06 18 28  20 20 20 20 20 20 20 20  |dAck...(        |
00001490  20 20 20 20 20 20 20 20  62 6c 6f 63 6b 25 21 31  |        block%!1|
000014a0  32 20 3d 20 62 6c 6f 63  6b 25 21 38 0d 06 22 3c  |2 = block%!8.."<|
000014b0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000014c0  c8 99 20 22 57 69 6d 70  5f 53 65 6e 64 4d 65 73  |.. "Wimp_SendMes|
000014d0  73 61 67 65 22 2c 31 37  2c 62 6c 6f 63 6b 25 2c  |sage",17,block%,|
000014e0  62 6c 6f 63 6b 25 21 34  0d 06 2c 11 20 20 20 20  |block%!4..,.    |
000014f0  20 20 20 20 20 20 20 20  cd 0d 06 36 29 20 20 20  |        ...6)   |
00001500  20 20 20 20 20 c9 20 26  35 30 32 3a 20 f4 20 4d  |     . &502: . M|
00001510  65 73 73 61 67 65 5f 48  65 6c 70 52 65 71 75 65  |essage_HelpReque|
00001520  73 74 0d 06 40 22 20 20  20 20 20 20 20 20 20 20  |st..@"          |
00001530  20 20 e7 20 62 6c 6f 63  6b 25 21 33 32 20 3d 20  |  . block%!32 = |
00001540  2d 32 20 8c 0d 06 4a 1d  20 20 20 20 20 20 20 20  |-2 ...J.        |
00001550  20 20 20 20 20 20 20 20  f2 69 63 6f 6e 68 65 6c  |        .iconhel|
00001560  70 0d 06 54 11 20 20 20  20 20 20 20 20 20 20 20  |p..T.           |
00001570  20 cc 0d 06 5e 20 20 20  20 20 20 20 20 20 20 20  | ...^           |
00001580  20 20 20 20 20 20 62 6c  6f 63 6b 25 21 34 30 3d  |      block%!40=|
00001590  2d 31 0d 06 68 3e 20 20  20 20 20 20 20 20 20 20  |-1..h>          |
000015a0  20 20 20 20 20 20 f4 20  57 69 6d 70 5f 47 65 74  |      . Wimp_Get|
000015b0  4d 65 6e 75 53 74 61 74  65 20 28 6e 6f 74 20 61  |MenuState (not a|
000015c0  76 61 69 6c 61 62 6c 65  20 69 6e 20 52 4f 32 29  |vailable in RO2)|
000015d0  0d 06 72 47 20 20 20 20  20 20 20 20 20 20 20 20  |..rG            |
000015e0  20 20 20 20 c8 99 20 26  36 30 30 46 34 2c 31 2c  |    .. &600F4,1,|
000015f0  62 6c 6f 63 6b 25 2b 34  30 2c 62 6c 6f 63 6b 25  |block%+40,block%|
00001600  21 33 32 2c 62 6c 6f 63  6b 25 21 33 36 20 b8 20  |!32,block%!36 . |
00001610  3b 66 6c 61 67 73 25 0d  06 7c 35 20 20 20 20 20  |;flags%..|5     |
00001620  20 20 20 20 20 20 20 20  20 20 20 e7 20 28 66 6c  |           . (fl|
00001630  61 67 73 25 20 80 20 31  29 3d 30 20 80 20 62 6c  |ags% . 1)=0 . bl|
00001640  6f 63 6b 25 21 34 30 3e  2d 31 20 8c 0d 06 86 36  |ock%!40>-1 ....6|
00001650  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00001660  20 20 20 20 f2 6d 65 6e  75 68 65 6c 70 28 62 6c  |    .menuhelp(bl|
00001670  6f 63 6b 25 21 34 30 2c  62 6c 6f 63 6b 25 21 34  |ock%!40,block%!4|
00001680  34 29 0d 06 90 15 20 20  20 20 20 20 20 20 20 20  |4)....          |
00001690  20 20 20 20 20 20 cd 0d  06 9a 11 20 20 20 20 20  |      .....     |
000016a0  20 20 20 20 20 20 20 cd  0d 06 a4 2a 20 20 20 20  |       ....*    |
000016b0  20 20 20 20 c9 20 26 34  30 30 43 31 3a 20 f4 20  |    . &400C1: . |
000016c0  4d 65 73 73 61 67 65 5f  4d 6f 64 65 43 68 61 6e  |Message_ModeChan|
000016d0  67 65 0d 06 ae 31 20 20  20 20 20 20 20 20 20 20  |ge...1          |
000016e0  20 20 e7 20 72 75 6e 6e  69 6e 67 25 20 f2 66 75  |  . running% .fu|
000016f0  6c 6c 73 63 72 65 65 6e  5f 73 65 74 70 61 6c 65  |llscreen_setpale|
00001700  74 74 65 0d 06 b8 2e 20  20 20 20 20 20 20 20 c9  |tte....        .|
00001710  20 26 38 31 45 46 46 3a  20 f4 20 4d 65 73 73 61  | &81EFF: . Messa|
00001720  67 65 5f 49 6f 74 61 53  68 6f 77 53 70 72 69 74  |ge_IotaShowSprit|
00001730  65 0d 06 c2 3d 20 20 20  20 20 20 20 20 20 20 20  |e...=           |
00001740  20 e7 20 72 75 6e 6e 69  6e 67 25 20 f2 73 68 6f  | . running% .sho|
00001750  77 73 70 72 69 74 65 28  20 a4 7a 65 72 6f 73 74  |wsprite( .zerost|
00001760  72 28 62 6c 6f 63 6b 25  2b 32 30 29 20 29 0d 06  |r(block%+20) )..|
00001770  cc 0d 20 20 20 20 20 20  20 20 cb 0d 06 d6 09 20  |..        ..... |
00001780  20 20 20 cb 0d 06 e0 0e  fd 20 71 75 69 74 61 70  |   ...... quitap|
00001790  70 25 0d 06 ea 39 e7 20  77 61 76 65 74 61 62 6c  |p%...9. wavetabl|
000017a0  65 25 3e 30 20 c8 99 20  22 49 6f 74 61 53 6f 75  |e%>0 .. "IotaSou|
000017b0  6e 64 5f 52 65 6c 65 61  73 65 54 61 62 6c 65 22  |nd_ReleaseTable"|
000017c0  2c 77 61 76 65 74 61 62  6c 65 25 0d 06 f4 20 c8  |,wavetable%... .|
000017d0  99 20 22 49 6f 74 61 53  6f 75 6e 64 5f 44 65 72  |. "IotaSound_Der|
000017e0  65 67 69 73 74 65 72 41  70 70 22 0d 06 fe 17 c8  |egisterApp".....|
000017f0  99 20 22 57 69 6d 70 5f  43 6c 6f 73 65 44 6f 77  |. "Wimp_CloseDow|
00001800  6e 22 0d 07 08 05 e0 0d  07 12 04 0d 07 1c 12 dd  |n"..............|
00001810  20 f2 69 6e 69 74 77 69  6e 64 6f 77 73 0d 07 26  | .initwindows..&|
00001820  34 de 20 69 6e 64 69 72  25 20 31 30 32 34 2c 20  |4. indir% 1024, |
00001830  66 6f 6e 74 25 20 32 35  36 2c 20 6e 61 6d 65 25  |font% 256, name%|
00001840  20 31 36 2c 20 62 75 66  66 65 72 25 20 31 30 32  | 16, buffer% 102|
00001850  34 0d 07 30 16 65 6e 64  25 20 3d 20 69 6e 64 69  |4..0.end% = indi|
00001860  72 25 2b 31 30 32 34 0d  07 3a 37 c8 99 20 22 57  |r%+1024..:7.. "W|
00001870  69 6d 70 5f 4f 70 65 6e  54 65 6d 70 6c 61 74 65  |imp_OpenTemplate|
00001880  22 2c 2c 22 3c 4d 65 6c  6c 6f 77 4f 75 74 24 44  |",,"<MellowOut$D|
00001890  69 72 3e 2e 54 65 6d 70  6c 61 74 65 73 22 0d 07  |ir>.Templates"..|
000018a0  44 0d 6e 61 6d 65 25 21  34 3d 30 0d 07 4e 0d 6e  |D.name%!4=0..N.n|
000018b0  61 6d 65 25 21 38 3d 30  0d 07 58 11 24 6e 61 6d  |ame%!8=0..X.$nam|
000018c0  65 25 3d 22 69 6e 66 6f  22 0d 07 62 45 c8 99 20  |e%="info"..bE.. |
000018d0  22 57 69 6d 70 5f 4c 6f  61 64 54 65 6d 70 6c 61  |"Wimp_LoadTempla|
000018e0  74 65 22 2c 2c 62 75 66  66 65 72 25 2c 69 6e 64  |te",,buffer%,ind|
000018f0  69 72 25 2c 65 6e 64 25  2c 2d 31 2c 6e 61 6d 65  |ir%,end%,-1,name|
00001900  25 2c 30 20 b8 20 2c 2c  69 6e 64 69 72 25 0d 07  |%,0 . ,,indir%..|
00001910  6c 31 c8 99 20 22 57 69  6d 70 5f 43 72 65 61 74  |l1.. "Wimp_Creat|
00001920  65 57 69 6e 64 6f 77 22  2c 2c 62 75 66 66 65 72  |eWindow",,buffer|
00001930  25 20 b8 20 69 6e 66 6f  68 61 6e 64 6c 65 25 0d  |% . infohandle%.|
00001940  07 76 14 24 6e 61 6d 65  25 3d 22 62 61 72 69 63  |.v.$name%="baric|
00001950  6f 6e 22 0d 07 80 3a c8  99 20 22 57 69 6d 70 5f  |on"...:.. "Wimp_|
00001960  4c 6f 61 64 54 65 6d 70  6c 61 74 65 22 2c 2c 62  |LoadTemplate",,b|
00001970  75 66 66 65 72 25 2c 69  6e 64 69 72 25 2c 65 6e  |uffer%,indir%,en|
00001980  64 25 2c 2d 31 2c 6e 61  6d 65 25 2c 30 0d 07 8a  |d%,-1,name%,0...|
00001990  26 62 75 66 66 65 72 25  21 38 34 20 3d 20 2d 31  |&buffer%!84 = -1|
000019a0  20 20 3a 20 f4 20 77 69  6e 64 6f 77 20 68 61 6e  |  : . window han|
000019b0  64 6c 65 0d 07 94 24 c8  99 20 22 57 69 6d 70 5f  |dle...$.. "Wimp_|
000019c0  43 72 65 61 74 65 49 63  6f 6e 22 2c 2c 62 75 66  |CreateIcon",,buf|
000019d0  66 65 72 25 2b 38 34 0d  07 9e 15 24 6e 61 6d 65  |fer%+84....$name|
000019e0  25 3d 22 62 6c 61 63 6b  6f 75 74 22 0d 07 a8 3a  |%="blackout"...:|
000019f0  c8 99 20 22 57 69 6d 70  5f 4c 6f 61 64 54 65 6d  |.. "Wimp_LoadTem|
00001a00  70 6c 61 74 65 22 2c 2c  62 75 66 66 65 72 25 2c  |plate",,buffer%,|
00001a10  69 6e 64 69 72 25 2c 65  6e 64 25 2c 2d 31 2c 6e  |indir%,end%,-1,n|
00001a20  61 6d 65 25 2c 30 0d 07  b2 32 c8 99 20 22 57 69  |ame%,0...2.. "Wi|
00001a30  6d 70 5f 43 72 65 61 74  65 57 69 6e 64 6f 77 22  |mp_CreateWindow"|
00001a40  2c 2c 62 75 66 66 65 72  25 20 b8 20 62 6c 61 63  |,,buffer% . blac|
00001a50  6b 68 61 6e 64 6c 65 25  0d 07 bc 1b c8 99 20 22  |khandle%...... "|
00001a60  57 69 6d 70 5f 43 6c 6f  73 65 54 65 6d 70 6c 61  |Wimp_CloseTempla|
00001a70  74 65 22 0d 07 c6 05 e1  0d 07 d0 04 0d 07 da 10  |te".............|
00001a80  dd 20 f2 69 6e 69 74 6d  65 6e 75 73 0d 07 e4 08  |. .initmenus....|
00001a90  f7 20 2b 31 0d 07 ee 40  dc 20 22 4d 65 6c 6c 6f  |. +1...@. "Mello|
00001aa0  77 20 6f 75 74 22 2c 36  2c 22 49 6e 66 6f 22 2c  |w out",6,"Info",|
00001ab0  22 44 65 6c 61 79 22 2c  22 46 65 61 74 75 72 65  |"Delay","Feature|
00001ac0  73 22 2c 22 53 61 76 65  20 61 73 20 44 65 66 61  |s","Save as Defa|
00001ad0  75 6c 74 22 0d 07 f8 18  dc 20 22 43 6c 65 61 72  |ult"..... "Clear|
00001ae0  22 2c 22 7c 22 2c 22 51  75 69 74 22 0d 08 02 15  |","|","Quit"....|
00001af0  6d 6d 61 69 6e 25 3d a4  6d 65 6e 75 5f 6d 61 6b  |mmain%=.menu_mak|
00001b00  65 0d 08 0c 08 f7 20 2b  31 0d 08 16 2a dc 20 22  |e..... +1...*. "|
00001b10  44 65 6c 61 79 22 2c 38  2c 22 33 30 20 73 65 63  |Delay",8,"30 sec|
00001b20  22 2c 22 20 31 20 6d 69  6e 22 2c 22 20 32 20 6d  |"," 1 min"," 2 m|
00001b30  69 6e 22 0d 08 20 34 dc  20 22 20 35 20 6d 69 6e  |in".. 4. " 5 min|
00001b40  22 2c 22 31 30 20 6d 69  6e 22 2c 22 31 35 20 6d  |","10 min","15 m|
00001b50  69 6e 22 2c 22 33 30 20  6d 69 6e 22 2c 22 7c 22  |in","30 min","|"|
00001b60  2c 22 4e 6f 77 21 22 0d  08 2a 16 6d 64 65 6c 61  |,"Now!"..*.mdela|
00001b70  79 25 3d a4 6d 65 6e 75  5f 6d 61 6b 65 0d 08 34  |y%=.menu_make..4|
00001b80  08 f7 20 2b 31 0d 08 3e  40 dc 20 22 45 78 74 72  |.. +1..>@. "Extr|
00001b90  61 20 63 72 65 64 69 74  22 2c 37 2c 22 43 65 6e  |a credit",7,"Cen|
00001ba0  74 72 65 64 22 2c 22 46  6c 79 69 6e 67 22 2c 22  |tred","Flying","|
00001bb0  42 6f 75 6e 63 69 6e 67  22 2c 22 57 61 6e 64 65  |Bouncing","Wande|
00001bc0  72 69 6e 67 22 0d 08 48  24 dc 20 22 7c 22 2c 22  |ring"..H$. "|","|
00001bd0  53 6f 75 6e 64 22 2c 22  46 61 73 74 22 2c 22 41  |Sound","Fast","A|
00001be0  75 74 6f 20 6d 6f 64 65  22 0d 08 52 19 6d 66 65  |uto mode"..R.mfe|
00001bf0  61 74 75 72 65 73 25 3d  a4 6d 65 6e 75 5f 6d 61  |atures%=.menu_ma|
00001c00  6b 65 0d 08 5c 2a f2 6d  65 6e 75 5f 61 74 74 61  |ke..\*.menu_atta|
00001c10  63 68 28 20 6d 6d 61 69  6e 25 2c 20 30 2c 20 69  |ch( mmain%, 0, i|
00001c20  6e 66 6f 68 61 6e 64 6c  65 25 20 29 0d 08 66 26  |nfohandle% )..f&|
00001c30  f2 6d 65 6e 75 5f 61 74  74 61 63 68 28 20 6d 6d  |.menu_attach( mm|
00001c40  61 69 6e 25 2c 20 31 2c  20 6d 64 65 6c 61 79 25  |ain%, 1, mdelay%|
00001c50  20 29 0d 08 70 29 f2 6d  65 6e 75 5f 61 74 74 61  | )..p).menu_atta|
00001c60  63 68 28 20 6d 6d 61 69  6e 25 2c 20 32 2c 20 6d  |ch( mmain%, 2, m|
00001c70  66 65 61 74 75 72 65 73  25 20 29 0d 08 7a 04 0d  |features% )..z..|
00001c80  08 84 2b f2 6d 65 6e 75  5f 74 69 63 6b 28 20 6d  |..+.menu_tick( m|
00001c90  66 65 61 74 75 72 65 73  25 2c 20 30 2c 20 33 2c  |features%, 0, 3,|
00001ca0  20 6d 6f 74 69 6f 6e 25  20 29 0d 08 8e 27 f2 6d  | motion% )...'.m|
00001cb0  65 6e 75 5f 74 69 63 6b  28 20 6d 64 65 6c 61 79  |enu_tick( mdelay|
00001cc0  25 2c 20 30 2c 20 36 2c  20 64 65 6c 61 79 25 20  |%, 0, 6, delay% |
00001cd0  29 0d 08 98 28 f2 6d 65  6e 75 5f 74 69 63 6b 31  |)...(.menu_tick1|
00001ce0  28 20 6d 66 65 61 74 75  72 65 73 25 2c 20 34 2c  |( mfeatures%, 4,|
00001cf0  20 73 6f 75 6e 64 25 20  29 0d 08 a2 27 f2 6d 65  | sound% )...'.me|
00001d00  6e 75 5f 74 69 63 6b 31  28 20 6d 66 65 61 74 75  |nu_tick1( mfeatu|
00001d10  72 65 73 25 2c 20 35 2c  20 66 61 73 74 25 20 29  |res%, 5, fast% )|
00001d20  0d 08 ac 2b f2 6d 65 6e  75 5f 74 69 63 6b 31 28  |...+.menu_tick1(|
00001d30  20 6d 66 65 61 74 75 72  65 73 25 2c 20 36 2c 20  | mfeatures%, 6, |
00001d40  61 75 74 6f 6d 6f 64 65  25 20 29 0d 08 b6 05 e1  |automode% ).....|
00001d50  0d 08 c0 04 0d 08 ca 18  dd 20 f2 6c 6f 61 64 66  |......... .loadf|
00001d60  69 6c 6d 28 20 66 69 6c  6d 24 20 29 0d 08 d4 0c  |ilm( film$ )....|
00001d70  ea 20 66 6c 61 67 73 25  0d 08 de 0b 61 63 65 66  |. flags%....acef|
00001d80  25 3d 30 0d 08 e8 1e 66  69 6c 6d 6c 65 6e 25 3d  |%=0....filmlen%=|
00001d90  a4 66 69 6c 65 6c 65 6e  28 20 66 69 6c 6d 24 20  |.filelen( film$ |
00001da0  29 0d 08 f2 13 e7 20 66  69 6c 6d 6c 65 6e 25 3d  |)..... filmlen%=|
00001db0  2d 31 20 e1 0d 08 fc 3f  c8 99 20 22 57 69 6d 70  |-1 ....?.. "Wimp|
00001dc0  5f 53 6c 6f 74 53 69 7a  65 22 2c 66 69 6c 6d 25  |_SlotSize",film%|
00001dd0  2b 66 69 6c 6d 6c 65 6e  25 2c 2d 31 20 20 3a 20  |+filmlen%,-1  : |
00001de0  f4 20 69 6e 63 72 65 61  73 65 20 77 69 6d 70 73  |. increase wimps|
00001df0  6c 6f 74 0d 09 06 3a c8  99 20 22 4f 53 5f 46 69  |lot...:.. "OS_Fi|
00001e00  6c 65 22 2c 32 35 35 2c  66 69 6c 6d 24 2c 66 69  |le",255,film$,fi|
00001e10  6c 6d 25 2c 30 20 b8 20  2c 2c 66 69 6c 6d 6c 6f  |lm%,0 . ,,filmlo|
00001e20  61 64 25 2c 66 69 6c 6d  65 78 65 63 25 0d 09 10  |ad%,filmexec%...|
00001e30  36 61 63 65 66 25 20 3d  20 a4 66 69 6c 6d 5f 66  |6acef% = .film_f|
00001e40  69 6e 64 63 68 75 6e 6b  28 20 22 41 43 45 46 22  |indchunk( "ACEF"|
00001e50  2c 20 66 69 6c 6d 25 2c  20 66 69 6c 6d 6c 65 6e  |, film%, filmlen|
00001e60  25 20 29 0d 09 1a 36 e7  20 61 63 65 66 25 3d 30  |% )...6. acef%=0|
00001e70  20 85 20 30 2c 20 22 54  68 69 73 20 66 69 6c 6d  | . 0, "This film|
00001e80  20 66 69 6c 65 20 68 61  73 20 6e 6f 20 66 69 6c  | file has no fil|
00001e90  6d 20 69 6e 20 69 74 21  22 0d 09 24 36 72 61 74  |m in it!"..$6rat|
00001ea0  65 25 20 3d 20 a4 66 69  6c 6d 5f 66 69 6e 64 63  |e% = .film_findc|
00001eb0  68 75 6e 6b 28 20 22 52  41 54 45 22 2c 20 66 69  |hunk( "RATE", fi|
00001ec0  6c 6d 25 2c 20 66 69 6c  6d 6c 65 6e 25 20 29 0d  |lm%, filmlen% ).|
00001ed0  09 2e 36 64 69 72 31 25  20 3d 20 a4 66 69 6c 6d  |..6dir1% = .film|
00001ee0  5f 66 69 6e 64 63 68 75  6e 6b 28 20 22 44 49 52  |_findchunk( "DIR|
00001ef0  31 22 2c 20 66 69 6c 6d  25 2c 20 66 69 6c 6d 6c  |1", film%, filml|
00001f00  65 6e 25 20 29 0d 09 38  36 66 75 6c 6c 25 20 3d  |en% )..86full% =|
00001f10  20 a4 66 69 6c 6d 5f 66  69 6e 64 63 68 75 6e 6b  | .film_findchunk|
00001f20  28 20 22 46 55 4c 4c 22  2c 20 66 69 6c 6d 25 2c  |( "FULL", film%,|
00001f30  20 66 69 6c 6d 6c 65 6e  25 20 29 0d 09 42 36 70  | filmlen% )..B6p|
00001f40  61 6c 65 25 20 3d 20 a4  66 69 6c 6d 5f 66 69 6e  |ale% = .film_fin|
00001f50  64 63 68 75 6e 6b 28 20  22 50 41 4c 45 22 2c 20  |dchunk( "PALE", |
00001f60  66 69 6c 6d 25 2c 20 66  69 6c 6d 6c 65 6e 25 20  |film%, filmlen% |
00001f70  29 0d 09 4c 3b e7 20 77  61 76 65 74 61 62 6c 65  |)..L;. wavetable|
00001f80  25 3e 30 20 8c 20 c8 99  20 22 49 6f 74 61 53 6f  |%>0 . .. "IotaSo|
00001f90  75 6e 64 5f 52 65 6c 65  61 73 65 54 61 62 6c 65  |und_ReleaseTable|
00001fa0  22 2c 77 61 76 65 74 61  62 6c 65 25 0d 09 56 42  |",wavetable%..VB|
00001fb0  c8 99 20 22 58 49 6f 74  61 53 6f 75 6e 64 5f 4c  |.. "XIotaSound_L|
00001fc0  6f 61 64 54 61 62 6c 65  22 2c 66 69 6c 6d 25 2c  |oadTable",film%,|
00001fd0  66 69 6c 6d 6c 65 6e 25  20 b8 20 77 61 76 65 74  |filmlen% . wavet|
00001fe0  61 62 6c 65 25 20 3b 20  66 6c 61 67 73 25 0d 09  |able% ; flags%..|
00001ff0  60 1f e7 20 28 66 6c 61  67 73 25 20 80 20 31 29  |`.. (flags% . 1)|
00002000  20 77 61 76 65 74 61 62  6c 65 25 3d 30 0d 09 6a  | wavetable%=0..j|
00002010  05 e1 0d 09 74 04 0d 09  7e 18 dd 20 f2 73 61 76  |....t...~.. .sav|
00002020  65 66 69 6c 6d 28 20 66  69 6c 6d 24 20 29 0d 09  |efilm( film$ )..|
00002030  88 0f e7 20 61 63 65 66  25 3d 30 20 8c 0d 09 92  |... acef%=0 ....|
00002040  2a 20 20 20 20 c8 99 20  22 4f 53 5f 46 69 6c 65  |*    .. "OS_File|
00002050  22 2c 36 2c 66 69 6c 6d  24 20 3a 20 f4 20 64 65  |",6,film$ : . de|
00002060  6c 65 74 65 20 69 74 0d  09 9c 09 20 20 20 20 e1  |lete it....    .|
00002070  0d 09 a6 05 cd 0d 09 b0  34 c8 99 20 22 4f 53 5f  |........4.. "OS_|
00002080  46 69 6c 65 22 2c 31 30  2c 66 69 6c 6d 24 2c 26  |File",10,film$,&|
00002090  43 32 41 2c 2c 66 69 6c  6d 25 2c 66 69 6c 6d 25  |C2A,,film%,film%|
000020a0  2b 66 69 6c 6d 6c 65 6e  25 0d 09 ba 22 c8 99 20  |+filmlen%...".. |
000020b0  22 4f 53 5f 46 69 6c 65  22 2c 32 2c 66 69 6c 6d  |"OS_File",2,film|
000020c0  24 2c 66 69 6c 6d 6c 6f  61 64 25 0d 09 c4 3b c8  |$,filmload%...;.|
000020d0  99 20 22 4f 53 5f 46 69  6c 65 22 2c 33 2c 66 69  |. "OS_File",3,fi|
000020e0  6c 6d 24 2c 2c 66 69 6c  6d 65 78 65 63 25 20 3a  |lm$,,filmexec% :|
000020f0  20 f4 20 72 65 69 6e 73  74 61 74 65 20 64 61 74  | . reinstate dat|
00002100  65 73 74 61 6d 70 0d 09  ce 05 e1 0d 09 d8 04 0d  |estamp..........|
00002110  09 e2 1d dd 20 f2 6c 6f  61 64 63 68 6f 69 63 65  |.... .loadchoice|
00002120  73 28 20 63 68 6f 69 63  65 24 20 29 0d 09 ec 08  |s( choice$ )....|
00002130  ea 20 48 25 0d 09 f6 0b  66 61 73 74 25 3d a3 0d  |. H%....fast%=..|
00002140  0a 00 0f 61 75 74 6f 6d  6f 64 65 25 3d b9 0d 0a  |...automode%=...|
00002150  0a 20 e7 20 a4 66 69 6c  65 6c 65 6e 28 20 63 68  |. . .filelen( ch|
00002160  6f 69 63 65 24 20 29 20  3c 3d 20 30 20 8c 0d 0a  |oice$ ) <= 0 ...|
00002170  14 11 20 20 20 20 6d 6f  74 69 6f 6e 25 3d 30 0d  |..    motion%=0.|
00002180  0a 1e 10 20 20 20 20 64  65 6c 61 79 25 3d 30 0d  |...    delay%=0.|
00002190  0a 28 10 20 20 20 20 73  6f 75 6e 64 25 3d b9 0d  |.(.    sound%=..|
000021a0  0a 32 09 20 20 20 20 e1  0d 0a 3c 05 cd 0d 0a 46  |.2.    ...<....F|
000021b0  13 48 25 3d 8e 28 20 63  68 6f 69 63 65 24 20 29  |.H%=.( choice$ )|
000021c0  0d 0a 50 0c e7 20 48 25  3d 30 20 e1 0d 0a 5a 10  |..P.. H%=0 ...Z.|
000021d0  6d 6f 74 69 6f 6e 25 3d  9a 23 48 25 0d 0a 64 0f  |motion%=.#H%..d.|
000021e0  64 65 6c 61 79 25 3d 9a  23 48 25 0d 0a 6e 17 73  |delay%=.#H%..n.s|
000021f0  6f 75 6e 64 25 3d 28 20  9a 23 48 25 20 3e 20 30  |ound%=( .#H% > 0|
00002200  20 29 0d 0a 78 21 e7 20  ac 20 c5 23 48 25 20 8c  | )..x!. . .#H% .|
00002210  20 66 61 73 74 25 3d 28  20 9a 23 48 25 20 3e 20  | fast%=( .#H% > |
00002220  30 20 29 0d 0a 82 25 e7  20 ac 20 c5 23 48 25 20  |0 )...%. . .#H% |
00002230  8c 20 61 75 74 6f 6d 6f  64 65 25 3d 28 20 9a 23  |. automode%=( .#|
00002240  48 25 20 3e 20 30 20 29  0d 0a 8c 08 d9 23 48 25  |H% > 0 ).....#H%|
00002250  0d 0a 96 05 e1 0d 0a a0  04 0d 0a aa 1d dd 20 f2  |.............. .|
00002260  73 61 76 65 63 68 6f 69  63 65 73 28 20 63 68 6f  |savechoices( cho|
00002270  69 63 65 24 20 29 0d 0a  b4 08 ea 20 48 25 0d 0a  |ice$ )..... H%..|
00002280  be 15 48 25 20 3d 20 ae  28 20 63 68 6f 69 63 65  |..H% = .( choice|
00002290  24 20 29 0d 0a c8 0c e7  20 48 25 3d 30 20 e1 0d  |$ )..... H%=0 ..|
000022a0  0a d2 10 d5 23 48 25 2c  6d 6f 74 69 6f 6e 25 0d  |....#H%,motion%.|
000022b0  0a dc 0f d5 23 48 25 2c  64 65 6c 61 79 25 0d 0a  |....#H%,delay%..|
000022c0  e6 1e e7 20 73 6f 75 6e  64 25 20 8c 20 d5 23 48  |... sound% . .#H|
000022d0  25 2c 31 20 8b 20 d5 23  48 25 2c 30 0d 0a f0 1d  |%,1 . .#H%,0....|
000022e0  e7 20 66 61 73 74 25 20  8c 20 d5 23 48 25 2c 31  |. fast% . .#H%,1|
000022f0  20 8b 20 d5 23 48 25 2c  30 0d 0a fa 21 e7 20 61  | . .#H%,0...!. a|
00002300  75 74 6f 6d 6f 64 65 25  20 8c 20 d5 23 48 25 2c  |utomode% . .#H%,|
00002310  31 20 8b 20 d5 23 48 25  2c 30 0d 0b 04 08 d9 23  |1 . .#H%,0.....#|
00002320  48 25 0d 0b 0e 05 e1 0d  0b 18 04 0d 0b 22 0f dd  |H%..........."..|
00002330  20 f2 69 63 6f 6e 68 65  6c 70 0d 0b 2c 68 f2 68  | .iconhelp..,h.h|
00002340  65 6c 70 72 65 70 6c 79  28 22 54 68 69 73 20 69  |elpreply("This i|
00002350  73 20 74 68 65 20 4d 65  6c 6c 6f 77 20 4f 75 74  |s the Mellow Out|
00002360  20 69 63 6f 6e 2e 20 44  72 61 67 20 61 6e 20 49  | icon. Drag an I|
00002370  6f 74 61 20 46 69 6c 6d  20 66 69 6c 65 20 68 65  |ota Film file he|
00002380  72 65 20 74 6f 20 75 73  65 20 69 74 20 61 73 20  |re to use it as |
00002390  74 68 65 20 73 63 72 65  65 6e 73 61 76 65 72 2e  |the screensaver.|
000023a0  22 29 0d 0b 36 05 e1 0d  0b 40 04 0d 0b 4a 1c dd  |")..6....@...J..|
000023b0  20 f2 6d 65 6e 75 68 65  6c 70 28 20 6f 6e 65 25  | .menuhelp( one%|
000023c0  2c 74 77 6f 25 20 29 0d  0b 54 0d c8 8e 20 6f 6e  |,two% )..T... on|
000023d0  65 25 20 ca 0d 0b 5e 08  c9 20 31 3a 0d 0b 68 11  |e% ...^.. 1:..h.|
000023e0  20 20 20 20 c8 8e 20 74  77 6f 25 20 ca 0d 0b 72  |    .. two% ...r|
000023f0  66 20 20 20 20 c9 20 2d  31 3a f2 68 65 6c 70 72  |f    . -1:.helpr|
00002400  65 70 6c 79 28 20 22 54  68 69 73 20 73 75 62 6d  |eply( "This subm|
00002410  65 6e 75 20 6c 65 74 73  20 79 6f 75 20 73 65 74  |enu lets you set|
00002420  20 74 68 65 20 64 65 6c  61 79 20 62 65 66 6f 72  | the delay befor|
00002430  65 20 4d 65 6c 6c 6f 77  20 4f 75 74 20 73 77 69  |e Mellow Out swi|
00002440  6e 67 73 20 69 6e 74 6f  20 61 63 74 69 6f 6e 2e  |ngs into action.|
00002450  22 20 29 0d 0b 7c 45 20  20 20 20 c9 20 30 2c 31  |" )..|E    . 0,1|
00002460  2c 32 2c 33 2c 34 2c 35  2c 36 3a f2 68 65 6c 70  |,2,3,4,5,6:.help|
00002470  72 65 70 6c 79 28 20 22  43 68 6f 6f 73 65 20 74  |reply( "Choose t|
00002480  68 69 73 20 74 6f 20 73  65 74 20 74 68 65 20 64  |his to set the d|
00002490  65 6c 61 79 2e 22 20 29  0d 0b 86 4d 20 20 20 20  |elay." )...M    |
000024a0  c9 20 37 3a f2 68 65 6c  70 72 65 70 6c 79 28 20  |. 7:.helpreply( |
000024b0  22 43 68 6f 6f 73 65 20  74 68 69 73 20 74 6f 20  |"Choose this to |
000024c0  73 74 61 72 74 20 74 68  65 20 73 63 72 65 65 6e  |start the screen|
000024d0  73 61 76 65 72 20 69 6d  6d 65 64 69 61 74 65 6c  |saver immediatel|
000024e0  79 2e 22 20 29 0d 0b 90  09 20 20 20 20 cb 0d 0b  |y." )....    ...|
000024f0  9a 08 c9 20 32 3a 0d 0b  a4 11 20 20 20 20 c8 8e  |... 2:....    ..|
00002500  20 74 77 6f 25 20 ca 0d  0b ae 74 20 20 20 20 c9  | two% ....t    .|
00002510  20 30 3a f2 68 65 6c 70  72 65 70 6c 79 28 20 22  | 0:.helpreply( "|
00002520  43 68 6f 6f 73 65 20 74  68 69 73 20 74 6f 20 68  |Choose this to h|
00002530  61 76 65 20 74 68 65 20  66 69 6c 6d 20 63 65 6e  |ave the film cen|
00002540  74 72 65 64 20 6f 6e 20  74 68 65 20 73 63 72 65  |tred on the scre|
00002550  65 6e 20 77 68 65 6e 20  74 68 65 20 73 63 72 65  |en when the scre|
00002560  65 6e 73 61 76 65 72 20  69 73 20 69 6e 20 6f 70  |ensaver is in op|
00002570  65 72 61 74 69 6f 6e 2e  22 20 29 0d 0b b8 63 20  |eration." )...c |
00002580  20 20 20 c9 20 31 3a f2  68 65 6c 70 72 65 70 6c  |   . 1:.helprepl|
00002590  79 28 20 22 43 68 6f 6f  73 65 20 74 68 69 73 20  |y( "Choose this |
000025a0  74 6f 20 68 61 76 65 20  74 68 65 20 66 69 6c 6d  |to have the film|
000025b0  20 94 66 6c 79 69 6e 67  95 20 66 72 6f 6d 20 6c  | .flying. from l|
000025c0  65 66 74 20 74 6f 20 72  69 67 68 74 20 6f 6e 20  |eft to right on |
000025d0  74 68 65 20 73 63 72 65  65 6e 2e 22 20 29 0d 0b  |the screen." )..|
000025e0  c2 54 20 20 20 20 c9 20  32 3a f2 68 65 6c 70 72  |.T    . 2:.helpr|
000025f0  65 70 6c 79 28 20 22 43  68 6f 6f 73 65 20 74 68  |eply( "Choose th|
00002600  69 73 20 74 6f 20 68 61  76 65 20 74 68 65 20 66  |is to have the f|
00002610  69 6c 6d 20 62 6f 75 6e  63 69 6e 67 20 61 72 6f  |ilm bouncing aro|
00002620  75 6e 64 20 74 68 65 20  73 63 72 65 65 6e 2e 22  |und the screen."|
00002630  20 29 0d 0b cc 5f 20 20  20 20 c9 20 33 3a f2 68  | )..._    . 3:.h|
00002640  65 6c 70 72 65 70 6c 79  28 20 22 43 68 6f 6f 73  |elpreply( "Choos|
00002650  65 20 74 68 69 73 20 74  6f 20 68 61 76 65 20 74  |e this to have t|
00002660  68 65 20 66 69 6c 6d 20  77 61 6e 64 65 72 69 6e  |he film wanderin|
00002670  67 20 61 69 6d 6c 65 73  73 6c 79 20 61 72 6f 75  |g aimlessly arou|
00002680  6e 64 20 74 68 65 20 73  63 72 65 65 6e 2e 22 20  |nd the screen." |
00002690  29 0d 0b d6 67 20 20 20  20 c9 20 34 3a f2 68 65  |)...g    . 4:.he|
000026a0  6c 70 72 65 70 6c 79 28  20 22 54 69 63 6b 20 74  |lpreply( "Tick t|
000026b0  68 69 73 20 74 6f 20 68  61 76 65 20 74 68 65 20  |his to have the |
000026c0  73 6f 75 6e 64 20 65 66  66 65 63 74 73 20 69 6e  |sound effects in|
000026d0  20 74 68 65 20 66 69 6c  6d 20 70 6c 61 79 65 64  | the film played|
000026e0  20 77 68 69 6c 65 20 69  74 20 69 73 20 72 75 6e  | while it is run|
000026f0  6e 69 6e 67 2e 22 20 29  0d 0b e0 85 20 20 20 20  |ning." )....    |
00002700  c9 20 35 3a f2 68 65 6c  70 72 65 70 6c 79 28 20  |. 5:.helpreply( |
00002710  22 54 69 63 6b 20 74 68  69 73 20 74 6f 20 68 61  |"Tick this to ha|
00002720  76 65 20 74 68 65 20 66  69 6c 6d 20 70 6c 61 79  |ve the film play|
00002730  65 64 20 66 6c 61 74 2d  6f 75 74 20 28 72 61 74  |ed flat-out (rat|
00002740  68 65 72 20 74 68 61 6e  20 61 74 20 74 68 65 20  |her than at the |
00002750  66 72 61 6d 65 20 72 61  74 65 20 73 70 65 63 69  |frame rate speci|
00002760  66 69 65 64 20 77 68 65  6e 20 69 74 20 77 61 73  |fied when it was|
00002770  20 63 72 65 61 74 65 64  29 2e 22 20 29 0d 0b ea  | created)." )...|
00002780  93 20 20 20 20 c9 20 36  3a f2 68 65 6c 70 72 65  |.    . 6:.helpre|
00002790  70 6c 79 28 20 22 54 69  63 6b 20 74 68 69 73 20  |ply( "Tick this |
000027a0  74 6f 20 68 61 76 65 20  74 68 65 20 73 63 72 65  |to have the scre|
000027b0  65 6e 20 6d 6f 64 65 20  63 68 6f 73 65 6e 20 61  |en mode chosen a|
000027c0  75 74 6f 6d 61 74 69 63  61 6c 6c 79 20 28 72 61  |utomatically (ra|
000027d0  74 68 65 72 20 74 68 61  6e 20 75 73 69 6e 67 20  |ther than using |
000027e0  74 68 65 20 6f 6e 65 20  73 70 65 63 69 66 69 65  |the one specifie|
000027f0  64 20 77 68 65 6e 20 74  68 65 20 66 69 6c 6d 20  |d when the film |
00002800  77 61 73 20 63 72 65 61  74 65 64 29 2e 22 20 29  |was created)." )|
00002810  0d 0b f4 09 20 20 20 20  cb 0d 0b fe 88 c9 20 33  |....    ...... 3|
00002820  3a 20 f2 68 65 6c 70 72  65 70 6c 79 28 20 22 43  |: .helpreply( "C|
00002830  68 6f 6f 73 65 20 74 68  69 73 20 74 6f 20 73 61  |hoose this to sa|
00002840  76 65 20 74 68 65 20 63  75 72 72 65 6e 74 20 66  |ve the current f|
00002850  69 6c 6d 20 61 6e 64 20  94 46 65 61 74 75 72 65  |ilm and .Feature|
00002860  73 95 20 73 65 74 74 69  6e 67 73 20 61 73 20 74  |s. settings as t|
00002870  68 65 20 64 65 66 61 75  6c 74 20 66 6f 72 20 77  |he default for w|
00002880  68 65 6e 20 4d 65 6c 6c  6f 77 20 4f 75 74 20 69  |hen Mellow Out i|
00002890  73 20 6e 65 78 74 20 6c  6f 61 64 65 64 2e 22 20  |s next loaded." |
000028a0  29 0d 0c 08 79 c9 20 34  3a 20 f2 68 65 6c 70 72  |)...y. 4: .helpr|
000028b0  65 70 6c 79 28 20 22 43  68 6f 6f 73 65 20 74 68  |eply( "Choose th|
000028c0  69 73 20 74 6f 20 68 61  76 65 20 61 20 62 6c 61  |is to have a bla|
000028d0  6e 6b 20 73 63 72 65 65  6e 20 61 73 20 74 68 65  |nk screen as the|
000028e0  20 73 63 72 65 65 6e 73  61 76 65 72 20 28 74 68  | screensaver (th|
000028f0  69 73 2c 20 6f 66 20 63  6f 75 72 73 65 2c 20 6e  |is, of course, n|
00002900  65 65 64 73 20 6d 75 63  68 20 6c 65 73 73 20 6d  |eeds much less m|
00002910  65 6d 6f 72 79 29 2e 22  20 29 0d 0c 12 59 c9 20  |emory)." )...Y. |
00002920  35 3a 20 f2 68 65 6c 70  72 65 70 6c 79 28 20 22  |5: .helpreply( "|
00002930  57 68 61 74 3f 20 59 6f  75 20 77 61 6e 74 20 74  |What? You want t|
00002940  6f 20 71 75 69 74 3f 20  42 75 74 20 68 61 76 69  |o quit? But havi|
00002950  6e 67 20 61 20 73 63 72  65 65 6e 73 61 76 65 72  |ng a screensaver|
00002960  20 69 73 20 73 6f 20 74  61 73 74 65 66 75 6c 21  | is so tasteful!|
00002970  22 20 29 0d 0c 1c 05 cb  0d 0c 26 05 e1 0d 0c 30  |" ).......&....0|
00002980  04 0d 0c 3a 14 dd 20 f2  68 65 6c 70 72 65 70 6c  |...:.. .helprepl|
00002990  79 28 41 24 29 0d 0c 44  13 24 28 62 6c 6f 63 6b  |y(A$)..D.$(block|
000029a0  25 2b 32 30 29 3d 41 24  0d 0c 4e 18 62 6c 6f 63  |%+20)=A$..N.bloc|
000029b0  6b 25 21 31 32 20 3d 20  62 6c 6f 63 6b 25 21 38  |k%!12 = block%!8|
000029c0  0d 0c 58 2a 62 6c 6f 63  6b 25 21 31 36 20 3d 20  |..X*block%!16 = |
000029d0  26 35 30 33 20 3a 20 f4  20 4d 65 73 73 61 67 65  |&503 : . Message|
000029e0  5f 48 65 6c 70 52 65 70  6c 79 0d 0c 62 2c 21 62  |_HelpReply..b,!b|
000029f0  6c 6f 63 6b 25 20 3d 20  28 32 34 20 2b 20 a9 28  |lock% = (24 + .(|
00002a00  24 28 62 6c 6f 63 6b 25  2b 32 30 29 29 20 29 20  |$(block%+20)) ) |
00002a10  80 20 28 ac 33 29 0d 0c  6c 2c c8 99 20 22 57 69  |. (.3)..l,.. "Wi|
00002a20  6d 70 5f 53 65 6e 64 4d  65 73 73 61 67 65 22 2c  |mp_SendMessage",|
00002a30  31 37 2c 62 6c 6f 63 6b  25 2c 62 6c 6f 63 6b 25  |17,block%,block%|
00002a40  21 34 0d 0c 76 05 e1 0d  0c 80 04 0d 0c 8a 11 dd  |!4..v...........|
00002a50  20 f2 66 75 6c 6c 73 63  72 65 65 6e 0d 0c 94 0e  | .fullscreen....|
00002a60  72 75 6e 6e 69 6e 67 25  3d b9 0d 0c 9e 0d 6e 6f  |running%=.....no|
00002a70  66 69 6c 6d 25 3d a3 0d  0c a8 18 21 62 6c 6f 63  |film%=.....!bloc|
00002a80  6b 25 3d 62 6c 61 63 6b  68 61 6e 64 6c 65 25 0d  |k%=blackhandle%.|
00002a90  0c b2 11 62 6c 6f 63 6b  25 21 34 3d 2d 31 30 30  |...block%!4=-100|
00002aa0  0d 0c bc 11 62 6c 6f 63  6b 25 21 38 3d 2d 31 30  |....block%!8=-10|
00002ab0  30 0d 0c c6 12 62 6c 6f  63 6b 25 21 31 32 3d 38  |0....block%!12=8|
00002ac0  30 30 30 0d 0c d0 23 62  6c 6f 63 6b 25 21 31 36  |000...#block%!16|
00002ad0  3d 38 30 30 30 20 20 3a  20 f4 20 61 20 6c 61 72  |=8000  : . a lar|
00002ae0  67 65 20 62 6f 78 0d 0c  da 0f 62 6c 6f 63 6b 25  |ge box....block%|
00002af0  21 32 30 3d 30 0d 0c e4  0f 62 6c 6f 63 6b 25 21  |!20=0....block%!|
00002b00  32 34 3d 30 0d 0c ee 1e  62 6c 6f 63 6b 25 21 32  |24=0....block%!2|
00002b10  38 3d 2d 31 20 20 20 20  3a 20 f4 20 6f 6e 20 74  |8=-1    : . on t|
00002b20  6f 70 0d 0c f8 20 c8 99  20 22 57 69 6d 70 5f 4f  |op... .. "Wimp_O|
00002b30  70 65 6e 57 69 6e 64 6f  77 22 2c 2c 62 6c 6f 63  |penWindow",,bloc|
00002b40  6b 25 0d 0d 02 0f e7 20  61 63 65 66 25 3d 30 20  |k%..... acef%=0 |
00002b50  8c 0d 0d 0c 17 20 20 20  20 f2 73 61 76 65 77 69  |.....    .savewi|
00002b60  74 68 6e 6f 66 69 6c 6d  0d 0d 16 09 20 20 20 20  |thnofilm....    |
00002b70  e1 0d 0d 20 05 cd 0d 0d  2a 1d e7 20 a4 66 75 6c  |... ....*.. .ful|
00002b80  6c 73 63 72 65 65 6e 5f  65 6e 74 65 72 20 3d 20  |lscreen_enter = |
00002b90  a3 20 8c 0d 0d 34 17 20  20 20 20 f2 73 61 76 65  |. ...4.    .save|
00002ba0  77 69 74 68 6e 6f 66 69  6c 6d 0d 0d 3e 09 20 20  |withnofilm..>.  |
00002bb0  20 20 e1 0d 0d 48 05 cd  0d 0d 52 0e 6d 6f 75 73  |  ...H....R.mous|
00002bc0  65 78 25 3d 2d 31 0d 0d  5c 1b f2 66 75 6c 6c 73  |ex%=-1..\..fulls|
00002bd0  63 72 65 65 6e 5f 66 69  6e 64 67 77 69 6e 64 6f  |creen_findgwindo|
00002be0  77 0d 0d 66 21 6e 76 73  79 6e 63 73 25 20 3d 20  |w..f!nvsyncs% = |
00002bf0  a4 66 75 6c 6c 73 63 72  65 65 6e 5f 76 73 79 6e  |.fullscreen_vsyn|
00002c00  63 73 0d 0d 70 05 87 0d  0d 7a 0e 2a 70 6f 69 6e  |cs..p....z.*poin|
00002c10  74 65 72 20 30 0d 0d 84  1c 66 70 74 72 25 20 3d  |ter 0....fptr% =|
00002c20  20 61 63 65 66 25 20 2b  20 61 63 65 66 25 21 31  | acef% + acef%!1|
00002c30  36 0d 0d 8e 11 73 70 74  72 25 20 3d 20 64 69 72  |6....sptr% = dir|
00002c40  31 25 0d 0d 98 14 63 6f  6d 70 25 20 3d 20 61 63  |1%....comp% = ac|
00002c50  65 66 25 21 33 32 0d 0d  a2 15 66 6c 61 67 73 25  |ef%!32....flags%|
00002c60  20 3d 20 61 63 65 66 25  21 33 36 0d 0d ac 1b 79  | = acef%!36....y|
00002c70  6f 79 6f 25 20 3d 20 28  66 6c 61 67 73 25 3e 3e  |oyo% = (flags%>>|
00002c80  32 29 20 80 20 31 0d 0d  b6 19 64 65 6c 74 61 25  |2) . 1....delta%|
00002c90  20 3d 20 28 66 6c 61 67  73 25 20 80 20 33 29 0d  | = (flags% . 3).|
00002ca0  0d c0 3d e7 20 28 64 65  6c 74 61 25 29 20 79 6f  |..=. (delta%) yo|
00002cb0  79 6f 25 3d a3 20 3a 20  6d 6f 74 69 6f 6e 25 3d  |yo%=. : motion%=|
00002cc0  30 20 3a 20 f4 20 64 6f  6e 27 74 20 6d 6f 76 65  |0 : . don't move|
00002cd0  20 64 65 6c 74 61 20 66  69 6c 6d 73 0d 0d ca 0b  | delta films....|
00002ce0  62 61 73 65 25 3d 30 0d  0d d4 10 66 6f 72 77 61  |base%=0....forwa|
00002cf0  72 64 25 20 3d 20 b9 0d  0d de 2d f2 6d 65 6c 6c  |rd% = ....-.mell|
00002d00  6f 77 6f 75 74 5f 61 63  74 69 76 65 28 20 6c 61  |owout_active( la|
00002d10  73 74 61 63 74 69 76 65  25 2c 20 76 73 79 6e 63  |stactive%, vsync|
00002d20  73 25 20 29 0d 0d e8 13  6e 65 78 74 25 20 3d 20  |s% )....next% = |
00002d30  76 73 79 6e 63 73 25 0d  0d f2 3a 67 77 69 6e 64  |vsyncs%...:gwind|
00002d40  6f 77 78 30 25 3d 2d 31  20 20 20 20 20 20 20 3a  |owx0%=-1       :|
00002d50  20 f4 20 66 6c 61 67 20  61 73 20 74 68 65 20 66  | . flag as the f|
00002d60  69 72 73 74 20 74 69 6d  65 20 74 68 72 6f 75 67  |irst time throug|
00002d70  68 0d 0d fc 11 67 77 69  6e 64 6f 77 79 30 25 3d  |h....gwindowy0%=|
00002d80  2d 31 0d 0e 06 0d f2 67  65 74 73 79 6e 63 73 0d  |-1.....getsyncs.|
00002d90  0e 10 05 e1 0d 0e 1a 04  0d 0e 24 12 dd 20 f2 67  |..........$.. .g|
00002da0  65 74 6d 6f 75 73 65 70  6f 73 0d 0e 2e 26 c8 99  |etmousepos...&..|
00002db0  20 22 57 69 6d 70 5f 47  65 74 50 6f 69 6e 74 65  | "Wimp_GetPointe|
00002dc0  72 49 6e 66 6f 22 2c 2c  70 6f 69 6e 74 65 72 25  |rInfo",,pointer%|
00002dd0  0d 0e 38 17 6d 6f 75 73  65 78 25 20 3d 20 21 70  |..8.mousex% = !p|
00002de0  6f 69 6e 74 65 72 25 0d  0e 42 18 6d 6f 75 73 65  |ointer%..B.mouse|
00002df0  79 25 20 3d 20 70 6f 69  6e 74 65 72 25 21 34 0d  |y% = pointer%!4.|
00002e00  0e 4c 05 e1 0d 0e 56 04  0d 0e 60 1b dd 20 f2 66  |.L....V...`.. .f|
00002e10  75 6c 6c 73 63 72 65 65  6e 5f 6e 65 78 74 66 72  |ullscreen_nextfr|
00002e20  61 6d 65 0d 0e 6a 08 45  25 3d 30 0d 0e 74 0f e7  |ame..j.E%=0..t..|
00002e30  20 6e 6f 66 69 6c 6d 25  20 e1 0d 0e 7e 37 e7 20  | nofilm% ...~7. |
00002e40  6e 65 78 74 25 20 3e 20  76 73 79 6e 63 73 25 20  |next% > vsyncs% |
00002e50  8c 20 76 73 79 6e 63 73  25 20 2b 3d 20 33 32 37  |. vsyncs% += 327|
00002e60  36 38 20 3a 20 f4 20 77  72 61 70 61 72 6f 75 6e  |68 : . wraparoun|
00002e70  64 0d 0e 88 1b e7 20 28  76 73 79 6e 63 73 25 2d  |d..... (vsyncs%-|
00002e80  6e 65 78 74 25 29 20 3e  3d 30 20 8c 0d 0e 92 19  |next%) >=0 .....|
00002e90  20 20 20 20 6f 6c 64 78  30 25 3d 67 77 69 6e 64  |    oldx0%=gwind|
00002ea0  6f 77 78 30 25 0d 0e 9c  19 20 20 20 20 6f 6c 64  |owx0%....    old|
00002eb0  79 30 25 3d 67 77 69 6e  64 6f 77 79 30 25 0d 0e  |y0%=gwindowy0%..|
00002ec0  a6 0a 20 20 20 20 c8 96  0d 0e b0 04 0d 0e ba 1b  |..    ..........|
00002ed0  20 20 20 20 f2 66 75 6c  6c 73 63 72 65 65 6e 5f  |    .fullscreen_|
00002ee0  67 77 69 6e 64 6f 77 0d  0e c4 2b 20 20 20 20 e7  |gwindow...+    .|
00002ef0  20 73 70 74 72 25 3e 30  20 80 20 77 61 76 65 74  | sptr%>0 . wavet|
00002f00  61 62 6c 65 25 3e 30 20  80 20 73 6f 75 6e 64 25  |able%>0 . sound%|
00002f10  20 8c 0d 0e ce 08 20 20  20 20 0d 0e d8 2c 20 20  | .....    ...,  |
00002f20  20 20 20 20 20 20 e7 20  ac 20 66 6f 72 77 61 72  |      . . forwar|
00002f30  64 25 20 8c 20 73 70 74  72 25 20 2d 3d 20 73 70  |d% . sptr% -= sp|
00002f40  74 72 25 21 2d 34 0d 0e  e2 3a 20 20 20 20 20 20  |tr%!-4...:      |
00002f50  20 20 e7 20 21 73 70 74  72 25 20 3c 3e 20 21 28  |  . !sptr% <> !(|
00002f60  73 70 74 72 25 2b 21 73  70 74 72 25 2d 34 29 20  |sptr%+!sptr%-4) |
00002f70  85 20 30 2c 22 64 69 72  31 20 65 72 72 6f 72 22  |. 0,"dir1 error"|
00002f80  0d 0e ec 31 20 20 20 20  20 20 20 20 c8 99 20 22  |...1        .. "|
00002f90  58 49 6f 74 61 53 6f 75  6e 64 5f 50 6c 61 79 22  |XIotaSound_Play"|
00002fa0  2c 77 61 76 65 74 61 62  6c 65 25 2c 73 70 74 72  |,wavetable%,sptr|
00002fb0  25 0d 0e f6 28 20 20 20  20 20 20 20 20 e7 20 66  |%...(        . f|
00002fc0  6f 72 77 61 72 64 25 20  8c 20 73 70 74 72 25 20  |orward% . sptr% |
00002fd0  2b 3d 20 21 73 70 74 72  25 0d 0f 00 0c 20 20 20  |+= !sptr%....   |
00002fe0  20 20 20 20 20 0d 0f 0a  09 20 20 20 20 cd 0d 0f  |     ....    ...|
00002ff0  14 04 0d 0f 1e 28 20 20  20 20 e7 20 ac 20 66 6f  |.....(    . . fo|
00003000  72 77 61 72 64 25 20 8c  20 66 70 74 72 25 20 2d  |rward% . fptr% -|
00003010  3d 20 66 70 74 72 25 21  2d 34 0d 0f 28 36 20 20  |= fptr%!-4..(6  |
00003020  20 20 e7 20 21 66 70 74  72 25 20 3c 3e 20 21 28  |  . !fptr% <> !(|
00003030  66 70 74 72 25 2b 21 66  70 74 72 25 2d 34 29 20  |fptr%+!fptr%-4) |
00003040  85 20 30 2c 22 61 63 65  66 20 65 72 72 6f 72 22  |. 0,"acef error"|
00003050  0d 0f 32 12 20 20 20 20  e7 20 64 65 6c 74 61 25  |..2.    . delta%|
00003060  20 8c 0d 0f 3c 46 20 20  20 20 20 20 20 20 c8 99  | ...<F        ..|
00003070  20 22 58 45 75 63 6c 69  64 5f 45 78 70 61 6e 64  | "XEuclid_Expand|
00003080  22 2c 63 6f 6d 70 25 2c  66 70 74 72 25 2c 62 61  |",comp%,fptr%,ba|
00003090  73 65 25 20 b8 20 45 25  2c 2c 62 61 73 65 25 20  |se% . E%,,base% |
000030a0  3b 20 66 6c 61 67 73 25  0d 0f 46 09 20 20 20 20  |; flags%..F.    |
000030b0  cc 0d 0f 50 39 20 20 20  20 20 20 20 20 c8 99 20  |...P9        .. |
000030c0  22 58 45 75 63 6c 69 64  5f 45 78 70 61 6e 64 22  |"XEuclid_Expand"|
000030d0  2c 63 6f 6d 70 25 2c 66  70 74 72 25 20 b8 20 45  |,comp%,fptr% . E|
000030e0  25 20 3b 20 66 6c 61 67  73 25 0d 0f 5a 09 20 20  |% ; flags%..Z.  |
000030f0  20 20 cd 0d 0f 64 1d 20  20 20 20 e7 20 28 66 6c  |  ...d.    . (fl|
00003100  61 67 73 25 80 31 29 3d  30 20 8c 20 45 25 3d 30  |ags%.1)=0 . E%=0|
00003110  0d 0f 6e 24 20 20 20 20  e7 20 66 6f 72 77 61 72  |..n$    . forwar|
00003120  64 25 20 8c 20 66 70 74  72 25 20 2b 3d 20 21 66  |d% . fptr% += !f|
00003130  70 74 72 25 0d 0f 78 08  20 20 20 20 0d 0f 82 27  |ptr%..x.    ...'|
00003140  20 20 20 20 ef 20 32 36  20 20 3a 20 f4 20 63 6c  |    . 26  : . cl|
00003150  65 61 72 20 67 72 61 70  68 69 63 73 20 77 69 6e  |ear graphics win|
00003160  64 6f 77 0d 0f 8c 12 20  20 20 20 f2 63 6c 65 61  |dow....    .clea|
00003170  72 6c 61 73 74 0d 0f 96  08 20 20 20 20 0d 0f a0  |rlast....    ...|
00003180  17 20 20 20 20 e7 20 73  68 6f 77 73 70 72 69 74  |.    . showsprit|
00003190  65 25 20 8c 0d 0f aa 1b  20 20 20 20 20 20 20 20  |e% .....        |
000031a0  e7 20 73 70 72 69 74 65  78 25 3e 2d 31 20 8c 0d  |. spritex%>-1 ..|
000031b0  0f b4 1a 20 20 20 20 20  20 20 20 20 20 20 20 e7  |...            .|
000031c0  20 64 65 6c 74 61 25 20  8c 0d 0f be 65 20 20 20  | delta% ....e   |
000031d0  20 20 20 20 20 20 20 20  20 20 20 20 20 c8 99 20  |             .. |
000031e0  22 4f 53 5f 53 70 72 69  74 65 4f 70 22 2c 32 35  |"OS_SpriteOp",25|
000031f0  36 2b 35 32 2c 73 70 72  61 72 65 61 25 2c 73 70  |6+52,sprarea%,sp|
00003200  72 69 74 65 24 2c 73 70  72 69 74 65 78 25 2c 73  |rite$,spritex%,s|
00003210  70 72 69 74 65 79 25 2c  38 2b 33 2c 66 61 63 74  |pritey%,8+3,fact|
00003220  6f 72 73 25 2c 70 69 78  74 72 61 6e 73 25 0d 0f  |ors%,pixtrans%..|
00003230  c8 11 20 20 20 20 20 20  20 20 20 20 20 20 cc 0d  |..            ..|
00003240  0f d2 58 20 20 20 20 20  20 20 20 20 20 20 20 20  |..X             |
00003250  20 20 20 c8 99 20 22 4f  53 5f 53 70 72 69 74 65  |   .. "OS_Sprite|
00003260  4f 70 22 2c 32 35 36 2b  35 30 2c 73 70 72 61 72  |Op",256+50,sprar|
00003270  65 61 25 2c 73 70 72 69  74 65 24 2c 73 70 72 69  |ea%,sprite$,spri|
00003280  74 65 78 25 2c 73 70 72  69 74 65 79 25 2c 2c 66  |tex%,spritey%,,f|
00003290  61 63 74 6f 72 73 25 0d  0f dc 11 20 20 20 20 20  |actors%....     |
000032a0  20 20 20 20 20 20 20 cd  0d 0f e6 0d 20 20 20 20  |       .....    |
000032b0  20 20 20 20 cd 0d 0f f0  35 20 20 20 20 20 20 20  |    ....5       |
000032c0  20 e7 20 73 70 72 69 74  65 78 25 20 3d 20 2d 31  | . spritex% = -1|
000032d0  20 8c 20 73 70 72 69 74  65 78 25 20 3d 20 73 63  | . spritex% = sc|
000032e0  72 65 65 6e 78 6f 73 25  2f 32 0d 0f fa 39 20 20  |reenxos%/2...9  |
000032f0  20 20 20 20 20 20 73 70  72 69 74 65 78 25 20 2b  |      spritex% +|
00003300  3d 20 38 2a 9b b2 73 70  72 69 74 65 64 25 20 2b  |= 8*..sprited% +|
00003310  20 28 73 63 72 65 65 6e  78 6f 73 25 2d 73 70 72  | (screenxos%-spr|
00003320  78 25 29 0d 10 04 39 20  20 20 20 20 20 20 20 73  |x%)...9        s|
00003330  70 72 69 74 65 79 25 20  2b 3d 20 38 2a b5 b2 73  |pritey% += 8*..s|
00003340  70 72 69 74 65 64 25 20  2b 20 28 73 63 72 65 65  |prited% + (scree|
00003350  6e 79 6f 73 25 2d 73 70  72 79 25 29 0d 10 0e 40  |nyos%-spry%)...@|
00003360  20 20 20 20 20 20 20 20  73 70 72 69 74 65 78 25  |        spritex%|
00003370  20 3d 20 28 73 70 72 69  74 65 78 25 20 80 20 ac  | = (spritex% . .|
00003380  28 64 78 25 2d 31 29 29  83 20 28 73 63 72 65 65  |(dx%-1)). (scree|
00003390  6e 78 6f 73 25 2d 73 70  72 78 25 29 0d 10 18 40  |nxos%-sprx%)...@|
000033a0  20 20 20 20 20 20 20 20  73 70 72 69 74 65 79 25  |        spritey%|
000033b0  20 3d 20 28 73 70 72 69  74 65 79 25 20 80 20 ac  | = (spritey% . .|
000033c0  28 64 79 25 2d 31 29 29  83 20 28 73 63 72 65 65  |(dy%-1)). (scree|
000033d0  6e 79 6f 73 25 2d 73 70  72 79 25 29 0d 10 22 16  |nyos%-spry%)..".|
000033e0  20 20 20 20 20 20 20 20  e7 20 64 65 6c 74 61 25  |        . delta%|
000033f0  20 8c 0d 10 2c 61 20 20  20 20 20 20 20 20 20 20  | ...,a          |
00003400  20 20 c8 99 20 22 4f 53  5f 53 70 72 69 74 65 4f  |  .. "OS_SpriteO|
00003410  70 22 2c 32 35 36 2b 35  32 2c 73 70 72 61 72 65  |p",256+52,sprare|
00003420  61 25 2c 73 70 72 69 74  65 24 2c 73 70 72 69 74  |a%,sprite$,sprit|
00003430  65 78 25 2c 73 70 72 69  74 65 79 25 2c 38 2b 33  |ex%,spritey%,8+3|
00003440  2c 66 61 63 74 6f 72 73  25 2c 70 69 78 74 72 61  |,factors%,pixtra|
00003450  6e 73 25 0d 10 36 0d 20  20 20 20 20 20 20 20 cc  |ns%..6.        .|
00003460  0d 10 40 5f 20 20 20 20  20 20 20 20 20 20 20 20  |..@_            |
00003470  c8 99 20 22 4f 53 5f 53  70 72 69 74 65 4f 70 22  |.. "OS_SpriteOp"|
00003480  2c 32 35 36 2b 35 32 2c  73 70 72 61 72 65 61 25  |,256+52,sprarea%|
00003490  2c 73 70 72 69 74 65 24  2c 73 70 72 69 74 65 78  |,sprite$,spritex|
000034a0  25 2c 73 70 72 69 74 65  79 25 2c 38 2c 66 61 63  |%,spritey%,8,fac|
000034b0  74 6f 72 73 25 2c 70 69  78 74 72 61 6e 73 25 0d  |tors%,pixtrans%.|
000034c0  10 4a 0d 20 20 20 20 20  20 20 20 cd 0d 10 54 20  |.J.        ...T |
000034d0  20 20 20 20 20 20 20 20  73 70 72 69 74 65 64 25  |        sprited%|
000034e0  20 2b 3d 20 73 70 72 69  74 65 6d 25 0d 10 5e 1e  | += spritem%..^.|
000034f0  20 20 20 20 20 20 20 20  73 70 72 69 74 65 6d 25  |        spritem%|
00003500  20 2b 3d 20 b3 28 33 29  2d 31 0d 10 68 23 20 20  | += .(3)-1..h#  |
00003510  20 20 20 20 20 20 e7 20  73 70 72 69 74 65 6d 25  |      . spritem%|
00003520  3e 35 20 73 70 72 69 74  65 6d 25 3d 35 0d 10 72  |>5 spritem%=5..r|
00003530  25 20 20 20 20 20 20 20  20 e7 20 73 70 72 69 74  |%        . sprit|
00003540  65 6d 25 3c 2d 35 20 73  70 72 69 74 65 6d 25 3d  |em%<-5 spritem%=|
00003550  2d 35 0d 10 7c 09 20 20  20 20 cd 0d 10 86 08 20  |-5..|.    ..... |
00003560  20 20 20 0d 10 90 22 20  20 20 20 e7 20 66 70 74  |   ..."    . fpt|
00003570  72 25 20 3d 20 61 63 65  66 25 2b 61 63 65 66 25  |r% = acef%+acef%|
00003580  21 31 36 20 8c 0d 10 9a  16 20 20 20 20 20 20 20  |!16 .....       |
00003590  20 66 6f 72 77 61 72 64  25 3d b9 0d 10 a4 1b 20  | forward%=..... |
000035a0  20 20 20 20 20 20 20 66  70 74 72 25 20 2b 3d 20  |       fptr% += |
000035b0  21 66 70 74 72 25 0d 10  ae 30 20 20 20 20 20 20  |!fptr%...0      |
000035c0  20 20 e7 20 73 70 74 72  25 3e 30 20 80 20 73 6f  |  . sptr%>0 . so|
000035d0  75 6e 64 25 20 8c 20 73  70 74 72 25 20 2b 3d 20  |und% . sptr% += |
000035e0  21 73 70 74 72 25 0d 10  b8 09 20 20 20 20 cd 0d  |!sptr%....    ..|
000035f0  10 c2 0c 20 20 20 20 20  20 20 20 0d 10 cc 14 20  |...        .... |
00003600  20 20 20 e7 20 21 66 70  74 72 25 3d 30 20 8c 0d  |   . !fptr%=0 ..|
00003610  10 d6 24 20 20 20 20 20  20 20 20 e7 20 79 6f 79  |..$        . yoy|
00003620  6f 25 3d 31 20 80 20 66  6f 72 77 61 72 64 25 3d  |o%=1 . forward%=|
00003630  b9 20 8c 0d 10 e0 1a 20  20 20 20 20 20 20 20 20  |. .....         |
00003640  20 20 20 66 6f 72 77 61  72 64 25 3d a3 0d 10 ea  |   forward%=....|
00003650  21 20 20 20 20 20 20 20  20 20 20 20 20 66 70 74  |!            fpt|
00003660  72 25 20 2d 3d 20 66 70  74 72 25 21 2d 34 0d 10  |r% -= fptr%!-4..|
00003670  f4 36 20 20 20 20 20 20  20 20 20 20 20 20 e7 20  |.6            . |
00003680  73 70 74 72 25 3e 30 20  80 20 73 6f 75 6e 64 25  |sptr%>0 . sound%|
00003690  20 8c 20 73 70 74 72 25  20 2d 3d 20 73 70 74 72  | . sptr% -= sptr|
000036a0  25 21 2d 34 0d 10 fe 0d  20 20 20 20 20 20 20 20  |%!-4....        |
000036b0  cc 0d 11 08 1a 20 20 20  20 20 20 20 20 20 20 20  |.....           |
000036c0  20 66 6f 72 77 61 72 64  25 3d b9 0d 11 12 26 20  | forward%=....& |
000036d0  20 20 20 20 20 20 20 20  20 20 20 66 70 74 72 25  |           fptr%|
000036e0  20 3d 20 61 63 65 66 25  2b 61 63 65 66 25 21 31  | = acef%+acef%!1|
000036f0  36 0d 11 1c 19 20 20 20  20 20 20 20 20 20 20 20  |6....           |
00003700  20 62 61 73 65 25 20 3d  20 30 0d 11 26 32 20 20  | base% = 0..&2  |
00003710  20 20 20 20 20 20 20 20  20 20 e7 20 73 70 74 72  |          . sptr|
00003720  25 3e 30 20 80 20 73 6f  75 6e 64 25 20 8c 20 73  |%>0 . sound% . s|
00003730  70 74 72 25 20 3d 20 64  69 72 31 25 0d 11 30 0d  |ptr% = dir1%..0.|
00003740  20 20 20 20 20 20 20 20  cd 0d 11 3a 09 20 20 20  |        ...:.   |
00003750  20 cd 0d 11 44 33 20 20  20 20 e7 20 66 61 73 74  | ...D3    . fast|
00003760  25 20 8c 20 6e 65 78 74  25 3d 76 73 79 6e 63 73  |% . next%=vsyncs|
00003770  25 20 8b 20 6e 65 78 74  25 20 2b 3d 20 6e 76 73  |% . next% += nvs|
00003780  79 6e 63 73 25 0d 11 4e  1d 20 20 20 20 6e 65 78  |yncs%..N.    nex|
00003790  74 25 20 3d 20 6e 65 78  74 25 20 80 20 26 37 46  |t% = next% . &7F|
000037a0  46 46 0d 11 58 05 cd 0d  11 62 2f e7 20 45 25 20  |FF..X....b/. E% |
000037b0  f2 66 75 6c 6c 73 63 72  65 65 6e 5f 6c 65 61 76  |.fullscreen_leav|
000037c0  65 3a 85 20 21 45 25 2c  a4 7a 65 72 6f 73 74 72  |e:. !E%,.zerostr|
000037d0  28 45 25 2b 34 29 0d 11  6c 05 e1 0d 11 76 04 0d  |(E%+4)..l....v..|
000037e0  11 80 15 dd 20 f2 73 61  76 65 77 69 74 68 6e 6f  |.... .savewithno|
000037f0  66 69 6c 6d 0d 11 8a 1c  f2 66 75 6c 6c 73 63 72  |film.....fullscr|
00003800  65 65 6e 5f 72 65 6d 65  6d 62 65 72 6d 6f 64 65  |een_remembermode|
00003810  0d 11 94 08 ef 20 32 36  0d 11 9e 05 87 0d 11 a8  |..... 26........|
00003820  0e 2a 70 6f 69 6e 74 65  72 20 30 0d 11 b2 09 fb  |.*pointer 0.....|
00003830  20 31 32 38 0d 11 bc 0d  ef 20 31 39 3b 30 3b 30  | 128..... 19;0;0|
00003840  3b 0d 11 bd 13 ef 20 31  39 2c 30 2c 32 34 2c 30  |;..... 19,0,24,0|
00003850  2c 30 2c 30 0d 11 c6 05  db 0d 11 d0 0d 6e 6f 66  |,0,0.........nof|
00003860  69 6c 6d 25 3d b9 0d 11  da 0e 6d 6f 75 73 65 78  |ilm%=.....mousex|
00003870  25 3d 2d 31 0d 11 e4 05  e1 0d 11 ee 04 0d 11 f8  |%=-1............|
00003880  10 dd 20 f2 63 6c 65 61  72 6c 61 73 74 0d 12 02  |.. .clearlast...|
00003890  10 e7 20 6f 6c 64 78 30  25 3c 30 20 e1 0d 12 0c  |.. oldx0%<0 ....|
000038a0  39 e7 20 70 61 6c 65 25  3e 30 20 f2 73 65 74 62  |9. pale%>0 .setb|
000038b0  67 28 20 21 28 70 61 6c  65 25 2b 32 38 2b 34 2a  |g( !(pale%+28+4*|
000038c0  28 70 61 6c 65 25 21 34  29 29 2c 20 70 61 6c 65  |(pale%!4)), pale|
000038d0  25 21 31 36 20 29 0d 12  16 1b e7 20 6f 6c 64 78  |%!16 )..... oldx|
000038e0  30 25 20 3c 20 67 77 69  6e 64 6f 77 78 30 25 20  |0% < gwindowx0% |
000038f0  8c 0d 12 20 17 20 20 20  20 ec 20 6f 6c 64 78 30  |... .    . oldx0|
00003900  25 2c 6f 6c 64 79 30 25  0d 12 2a 2a 20 20 20 20  |%,oldy0%..**    |
00003910  f0 20 39 36 2b 37 2c 20  67 77 69 6e 64 6f 77 78  |. 96+7, gwindowx|
00003920  30 25 2d 31 2c 6f 6c 64  79 30 25 2b 79 6f 73 25  |0%-1,oldy0%+yos%|
00003930  2d 31 0d 12 34 05 cd 0d  12 3e 1b e7 20 6f 6c 64  |-1..4....>.. old|
00003940  78 30 25 20 3e 20 67 77  69 6e 64 6f 77 78 30 25  |x0% > gwindowx0%|
00003950  20 8c 0d 12 48 20 20 20  20 20 ec 20 67 77 69 6e  | ...H     . gwin|
00003960  64 6f 77 78 30 25 2b 78  6f 73 25 2c 6f 6c 64 79  |dowx0%+xos%,oldy|
00003970  30 25 0d 12 52 2a 20 20  20 20 f0 20 39 36 2b 37  |0%..R*    . 96+7|
00003980  2c 6f 6c 64 78 30 25 2b  78 6f 73 25 2d 31 2c 6f  |,oldx0%+xos%-1,o|
00003990  6c 64 79 30 25 2b 79 6f  73 25 2d 31 0d 12 5c 05  |ldy0%+yos%-1..\.|
000039a0  cd 0d 12 66 1b e7 20 6f  6c 64 79 30 25 20 3c 20  |...f.. oldy0% < |
000039b0  67 77 69 6e 64 6f 77 79  30 25 20 8c 0d 12 70 17  |gwindowy0% ...p.|
000039c0  20 20 20 20 ec 20 6f 6c  64 78 30 25 2c 6f 6c 64  |    . oldx0%,old|
000039d0  79 30 25 0d 12 7a 2a 20  20 20 20 f0 20 39 36 2b  |y0%..z*    . 96+|
000039e0  37 2c 20 6f 6c 64 78 30  25 2b 78 6f 73 25 2d 31  |7, oldx0%+xos%-1|
000039f0  2c 67 77 69 6e 64 6f 77  79 30 25 2d 31 0d 12 84  |,gwindowy0%-1...|
00003a00  05 cd 0d 12 8e 1b e7 20  6f 6c 64 79 30 25 20 3e  |....... oldy0% >|
00003a10  20 67 77 69 6e 64 6f 77  79 30 25 20 8c 0d 12 98  | gwindowy0% ....|
00003a20  1e 20 20 20 20 ec 20 6f  6c 64 78 30 25 2c 6f 6c  |.    . oldx0%,ol|
00003a30  64 79 30 25 2b 79 6f 73  25 2d 31 0d 12 a2 2d 20  |dy0%+yos%-1...- |
00003a40  20 20 20 f0 20 39 36 2b  37 2c 20 6f 6c 64 78 30  |   . 96+7, oldx0|
00003a50  25 2b 78 6f 73 25 2d 31  2c 67 77 69 6e 64 6f 77  |%+xos%-1,gwindow|
00003a60  79 30 25 2b 79 6f 73 25  0d 12 ac 05 cd 0d 12 b6  |y0%+yos%........|
00003a70  05 e1 0d 12 c0 04 0d 12  ca 19 dd 20 a4 66 75 6c  |........... .ful|
00003a80  6c 73 63 72 65 65 6e 5f  73 65 74 6d 6f 64 65 0d  |lscreen_setmode.|
00003a90  12 d4 0b ea 20 6d 6f 64  65 24 0d 12 de 35 ea 20  |.... mode$...5. |
00003aa0  78 65 69 67 25 2c 79 65  69 67 25 2c 62 69 67 25  |xeig%,yeig%,big%|
00003ab0  2c 78 25 2c 79 25 2c 6c  6f 67 32 62 70 70 25 2c  |,x%,y%,log2bpp%,|
00003ac0  6d 6f 64 65 25 2c 41 25  2c 66 6c 61 67 73 25 0d  |mode%,A%,flags%.|
00003ad0  12 e8 04 0d 12 f2 17 6c  6f 67 32 62 70 70 25 20  |.......log2bpp% |
00003ae0  3d 20 70 61 6c 65 25 21  31 36 0d 12 fc 1b 62 69  |= pale%!16....bi|
00003af0  67 25 20 3d 20 28 20 6d  6f 74 69 6f 6e 25 20 3c  |g% = ( motion% <|
00003b00  3e 20 30 20 29 0d 13 06  35 c8 99 20 22 4f 53 5f  |> 0 )...5.. "OS_|
00003b10  52 65 61 64 4d 6f 64 65  56 61 72 69 61 62 6c 65  |ReadModeVariable|
00003b20  22 2c 61 63 65 66 25 21  32 38 2c 34 20 b8 20 2c  |",acef%!28,4 . ,|
00003b30  2c 66 69 6c 6d 78 65 69  67 25 0d 13 10 35 c8 99  |,filmxeig%...5..|
00003b40  20 22 4f 53 5f 52 65 61  64 4d 6f 64 65 56 61 72  | "OS_ReadModeVar|
00003b50  69 61 62 6c 65 22 2c 61  63 65 66 25 21 32 38 2c  |iable",acef%!28,|
00003b60  35 20 b8 20 2c 2c 66 69  6c 6d 79 65 69 67 25 0d  |5 . ,,filmyeig%.|
00003b70  13 1a 20 78 25 20 3d 20  28 61 63 65 66 25 21 32  |.. x% = (acef%!2|
00003b80  30 29 20 3e 3e 20 66 69  6c 6d 78 65 69 67 25 0d  |0) >> filmxeig%.|
00003b90  13 24 20 79 25 20 3d 20  28 61 63 65 66 25 21 32  |.$ y% = (acef%!2|
00003ba0  34 29 20 3e 3e 20 66 69  6c 6d 79 65 69 67 25 0d  |4) >> filmyeig%.|
00003bb0  13 2e 0f e7 20 52 69 73  63 50 43 25 20 8c 0d 13  |.... RiscPC% ...|
00003bc0  38 13 20 20 20 20 21 6d  6f 64 65 73 65 6c 25 3d  |8.    !modesel%=|
00003bd0  31 0d 13 42 1c 20 20 20  20 6d 6f 64 65 73 65 6c  |1..B.    modesel|
00003be0  25 21 31 32 3d 6c 6f 67  32 62 70 70 25 0d 13 4c  |%!12=log2bpp%..L|
00003bf0  16 20 20 20 20 6d 6f 64  65 73 65 6c 25 21 31 36  |.    modesel%!16|
00003c00  3d 2d 31 0d 13 56 16 20  20 20 20 6d 6f 64 65 73  |=-1..V.    modes|
00003c10  65 6c 25 21 32 30 3d 2d  31 0d 13 60 15 20 20 20  |el%!20=-1..`.   |
00003c20  20 e7 20 61 75 74 6f 6d  6f 64 65 25 20 8c 0d 13  | . automode% ...|
00003c30  6a 4b 20 20 20 20 20 20  20 20 f2 72 69 73 63 70  |jK        .riscp|
00003c40  63 5f 66 69 6e 64 6d 6f  64 65 28 20 78 25 2c 20  |c_findmode( x%, |
00003c50  79 25 2c 20 62 69 67 25  2c 20 6c 6f 67 32 62 70  |y%, big%, log2bp|
00003c60  70 25 2c 20 66 69 6c 6d  78 65 69 67 25 2d 66 69  |p%, filmxeig%-fi|
00003c70  6c 6d 79 65 69 67 25 20  29 0d 13 74 22 20 20 20  |lmyeig% )..t"   |
00003c80  20 20 20 20 20 f4 20 78  20 61 6e 64 20 79 20 61  |     . x and y a|
00003c90  72 65 20 72 65 74 75 72  6e 65 64 0d 13 7e 19 20  |re returned..~. |
00003ca0  20 20 20 20 20 20 20 6d  6f 64 65 73 65 6c 25 21  |       modesel%!|
00003cb0  34 3d 78 25 0d 13 88 19  20 20 20 20 20 20 20 20  |4=x%....        |
00003cc0  6d 6f 64 65 73 65 6c 25  21 38 3d 79 25 0d 13 92  |modesel%!8=y%...|
00003cd0  18 20 20 20 20 20 20 20  20 e7 20 78 25 3d 30 20  |.        . x%=0 |
00003ce0  8c 20 3d 20 a3 0d 13 9c  09 20 20 20 20 cc 0d 13  |. = .....    ...|
00003cf0  a6 23 20 20 20 20 20 20  20 20 6d 6f 64 65 24 3d  |.#        mode$=|
00003d00  a4 7a 65 72 6f 73 74 72  28 66 75 6c 6c 25 2b 38  |.zerostr(full%+8|
00003d10  29 0d 13 b0 28 20 20 20  20 20 20 20 20 e7 20 6d  |)...(        . m|
00003d20  6f 64 65 24 3d 22 22 20  6d 6f 64 65 24 3d c3 28  |ode$="" mode$=.(|
00003d30  61 63 65 66 25 21 32 38  29 0d 13 ba 3a 20 20 20  |acef%!28)...:   |
00003d40  20 20 20 20 20 e7 20 6d  6f 64 65 24 3d c3 28 bb  |     . mode$=.(.|
00003d50  6d 6f 64 65 24 29 20 8c  20 ef 20 32 32 2c bb 6d  |mode$) . . 22,.m|
00003d60  6f 64 65 24 20 3a 20 3d  20 28 eb 3d bb 6d 6f 64  |ode$ : = (.=.mod|
00003d70  65 24 29 0d 13 c4 31 20  20 20 20 20 20 20 20 41  |e$)...1        A|
00003d80  25 3d a7 22 20 22 2b 6d  6f 64 65 24 2c 22 20 58  |%=." "+mode$," X|
00003d90  22 29 20 20 20 20 3a 20  f4 20 61 76 6f 69 64 20  |")    : . avoid |
00003da0  22 45 58 22 0d 13 ce 28  20 20 20 20 20 20 20 20  |"EX"...(        |
00003db0  e7 20 41 25 3d 30 20 41  25 20 3d 20 a7 22 20 22  |. A%=0 A% = ." "|
00003dc0  2b 6d 6f 64 65 24 2c 22  20 78 22 29 0d 13 d8 29  |+mode$," x")...)|
00003dd0  20 20 20 20 20 20 20 20  6d 6f 64 65 73 65 6c 25  |        modesel%|
00003de0  21 34 20 3d 20 bb c1 20  6d 6f 64 65 24 2c 20 41  |!4 = .. mode$, A|
00003df0  25 2b 31 20 29 0d 13 e2  31 20 20 20 20 20 20 20  |%+1 )...1       |
00003e00  20 41 25 3d a7 22 20 22  2b 6d 6f 64 65 24 2c 22  | A%=." "+mode$,"|
00003e10  20 59 22 29 20 20 20 20  3a 20 f4 20 61 76 6f 69  | Y")    : . avoi|
00003e20  64 20 22 45 59 22 0d 13  ec 28 20 20 20 20 20 20  |d "EY"...(      |
00003e30  20 20 e7 20 41 25 3d 30  20 41 25 20 3d 20 a7 22  |  . A%=0 A% = ."|
00003e40  20 22 2b 6d 6f 64 65 24  2c 22 20 79 22 29 0d 13  | "+mode$," y")..|
00003e50  f6 29 20 20 20 20 20 20  20 20 6d 6f 64 65 73 65  |.)        modese|
00003e60  6c 25 21 38 20 3d 20 bb  c1 20 6d 6f 64 65 24 2c  |l%!8 = .. mode$,|
00003e70  20 41 25 2b 31 20 29 0d  14 00 1a 20 20 20 20 20  | A%+1 )....     |
00003e80  20 20 20 41 25 3d a7 6d  6f 64 65 24 2c 22 46 22  |   A%=.mode$,"F"|
00003e90  29 0d 14 0a 34 20 20 20  20 20 20 20 20 e7 20 41  |)...4        . A|
00003ea0  25 3c 3e 30 20 8c 20 6d  6f 64 65 73 65 6c 25 21  |%<>0 . modesel%!|
00003eb0  31 36 20 3d 20 bb c1 20  6d 6f 64 65 24 2c 20 41  |16 = .. mode$, A|
00003ec0  25 2b 31 20 29 0d 14 14  09 20 20 20 20 cd 0d 14  |%+1 )....    ...|
00003ed0  1e 30 20 20 20 20 c8 99  20 22 58 4f 53 5f 53 63  |.0    .. "XOS_Sc|
00003ee0  72 65 65 6e 4d 6f 64 65  22 2c 30 2c 6d 6f 64 65  |reenMode",0,mode|
00003ef0  73 65 6c 25 20 b8 20 3b  66 6c 61 67 73 25 0d 14  |sel% . ;flags%..|
00003f00  28 18 20 20 20 20 3d 20  28 66 6c 61 67 73 25 20  |(.    = (flags% |
00003f10  80 20 31 29 3d 30 0d 14  32 05 cd 0d 14 3c 11 e7  |. 1)=0..2....<..|
00003f20  20 61 75 74 6f 6d 6f 64  65 25 20 8c 0d 14 46 4c  | automode% ...FL|
00003f30  20 20 20 20 6d 6f 64 65  25 20 3d 20 a4 61 72 63  |    mode% = .arc|
00003f40  5f 66 69 6e 64 6d 6f 64  65 28 20 78 25 2c 20 79  |_findmode( x%, y|
00003f50  25 2c 20 62 69 67 25 2c  20 6c 6f 67 32 62 70 70  |%, big%, log2bpp|
00003f60  25 2c 20 66 69 6c 6d 78  65 69 67 25 2d 66 69 6c  |%, filmxeig%-fil|
00003f70  6d 79 65 69 67 25 20 29  0d 14 50 1a 20 20 20 20  |myeig% )..P.    |
00003f80  e7 20 6d 6f 64 65 25 20  3d 20 2d 31 20 8c 20 3d  |. mode% = -1 . =|
00003f90  20 a3 0d 14 5a 05 cc 0d  14 64 1f 20 20 20 20 6d  | ...Z....d.    m|
00003fa0  6f 64 65 24 3d a4 7a 65  72 6f 73 74 72 28 66 75  |ode$=.zerostr(fu|
00003fb0  6c 6c 25 2b 38 29 0d 14  6e 1b 20 20 20 20 e7 20  |ll%+8)..n.    . |
00003fc0  6d 6f 64 65 24 3d c3 28  bb 6d 6f 64 65 24 29 20  |mode$=.(.mode$) |
00003fd0  8c 0d 14 78 18 20 20 20  20 20 20 20 20 6d 6f 64  |...x.        mod|
00003fe0  65 25 3d bb 6d 6f 64 65  24 0d 14 82 09 20 20 20  |e%=.mode$....   |
00003ff0  20 cc 0d 14 8c 1a 20 20  20 20 20 20 20 20 6d 6f  | .....        mo|
00004000  64 65 25 3d 61 63 65 66  25 21 32 38 0d 14 96 09  |de%=acef%!28....|
00004010  20 20 20 20 cd 0d 14 a0  05 cd 0d 14 aa 0b eb 20  |    ........... |
00004020  6d 6f 64 65 25 0d 14 b4  11 3d 20 28 eb 20 3d 20  |mode%....= (. = |
00004030  6d 6f 64 65 25 29 0d 14  be 04 0d 14 c8 1e dd 20  |mode%)......... |
00004040  f2 66 75 6c 6c 73 63 72  65 65 6e 5f 72 65 6d 65  |.fullscreen_reme|
00004050  6d 62 65 72 6d 6f 64 65  0d 14 d2 0f ea 20 52 31  |mbermode..... R1|
00004060  25 2c 41 25 2c 42 25 0d  14 dc 0f e7 20 52 69 73  |%,A%,B%..... Ris|
00004070  63 50 43 25 20 8c 0d 14  e6 23 20 20 20 20 c8 99  |cPC% ....#    ..|
00004080  20 22 4f 53 5f 53 63 72  65 65 6e 4d 6f 64 65 22  | "OS_ScreenMode"|
00004090  2c 31 20 b8 20 2c 52 31  25 0d 14 f0 13 20 20 20  |,1 . ,R1%....   |
000040a0  20 e7 20 52 31 25 3c 32  35 36 20 8c 0d 14 fa 1b  | . R1%<256 .....|
000040b0  20 20 20 20 20 20 20 20  64 65 73 6b 6d 6f 64 65  |        deskmode|
000040c0  25 20 3d 20 52 31 25 0d  15 04 09 20 20 20 20 cc  |% = R1%....    .|
000040d0  0d 15 0e 11 20 20 20 20  20 20 20 20 42 25 3d 32  |....        B%=2|
000040e0  30 0d 15 18 27 20 20 20  20 20 20 20 20 c8 95 20  |0...'        .. |
000040f0  52 31 25 21 42 25 20 3c  3e 20 2d 31 20 3a 20 42  |R1%!B% <> -1 : B|
00004100  25 2b 3d 38 20 3a 20 ce  0d 15 22 1c 20 20 20 20  |%+=8 : ...".    |
00004110  20 20 20 20 e3 20 41 25  3d 30 20 b8 20 42 25 2b  |    . A%=0 . B%+|
00004120  33 20 88 34 0d 15 2c 26  20 20 20 20 20 20 20 20  |3 .4..,&        |
00004130  20 20 20 20 41 25 21 73  63 72 65 65 6e 62 75 66  |    A%!screenbuf|
00004140  25 20 3d 20 41 25 21 52  31 25 0d 15 36 0d 20 20  |% = A%!R1%..6.  |
00004150  20 20 20 20 20 20 ed 0d  15 40 22 20 20 20 20 20  |      ...@"     |
00004160  20 20 20 64 65 73 6b 6d  6f 64 65 25 20 3d 20 73  |   deskmode% = s|
00004170  63 72 65 65 6e 62 75 66  25 0d 15 4a 09 20 20 20  |creenbuf%..J.   |
00004180  20 cd 0d 15 54 05 cc 0d  15 5e 15 20 20 20 20 64  | ...T....^.    d|
00004190  65 73 6b 6d 6f 64 65 25  20 3d 20 eb 0d 15 68 05  |eskmode% = ...h.|
000041a0  cd 0d 15 72 05 e1 0d 15  7c 04 0d 15 86 17 dd 20  |...r....|...... |
000041b0  a4 66 75 6c 6c 73 63 72  65 65 6e 5f 65 6e 74 65  |.fullscreen_ente|
000041c0  72 0d 15 90 1c f2 66 75  6c 6c 73 63 72 65 65 6e  |r.....fullscreen|
000041d0  5f 72 65 6d 65 6d 62 65  72 6d 6f 64 65 0d 15 9a  |_remembermode...|
000041e0  21 e7 20 ac 20 a4 66 75  6c 6c 73 63 72 65 65 6e  |!. . .fullscreen|
000041f0  5f 73 65 74 6d 6f 64 65  20 8c 20 3d 20 a3 0d 15  |_setmode . = ...|
00004200  a4 1a f2 66 75 6c 6c 73  63 72 65 65 6e 5f 73 65  |...fullscreen_se|
00004210  74 70 61 6c 65 74 74 65  0d 15 ae 06 3d b9 0d 15  |tpalette....=...|
00004220  b8 04 0d 15 c2 1d dd 20  f2 66 75 6c 6c 73 63 72  |....... .fullscr|
00004230  65 65 6e 5f 66 69 6e 64  67 77 69 6e 64 6f 77 0d  |een_findgwindow.|
00004240  15 cc 19 78 65 69 67 25  20 3d 20 a4 6d 6f 64 65  |...xeig% = .mode|
00004250  76 61 72 28 20 34 20 29  0d 15 d6 19 79 65 69 67  |var( 4 )....yeig|
00004260  25 20 3d 20 a4 6d 6f 64  65 76 61 72 28 20 35 20  |% = .modevar( 5 |
00004270  29 0d 15 e0 2d 78 6f 73  25 20 3d 20 28 28 61 63  |)...-xos% = ((ac|
00004280  65 66 25 21 32 30 29 20  3e 3e 20 66 69 6c 6d 78  |ef%!20) >> filmx|
00004290  65 69 67 25 29 20 3c 3c  20 78 65 69 67 25 0d 15  |eig%) << xeig%..|
000042a0  ea 2d 79 6f 73 25 20 3d  20 28 28 61 63 65 66 25  |.-yos% = ((acef%|
000042b0  21 32 34 29 20 3e 3e 20  66 69 6c 6d 79 65 69 67  |!24) >> filmyeig|
000042c0  25 29 20 3c 3c 20 79 65  69 67 25 0d 15 f4 14 64  |%) << yeig%....d|
000042d0  78 25 20 3d 20 31 20 3c  3c 20 78 65 69 67 25 0d  |x% = 1 << xeig%.|
000042e0  15 fe 14 64 79 25 20 3d  20 31 20 3c 3c 20 79 65  |...dy% = 1 << ye|
000042f0  69 67 25 0d 16 08 27 73  63 72 65 65 6e 78 6f 73  |ig%...'screenxos|
00004300  25 20 3d 20 28 31 2b a4  6d 6f 64 65 76 61 72 28  |% = (1+.modevar(|
00004310  31 31 29 29 20 2a 20 64  78 25 0d 16 12 27 73 63  |11)) * dx%...'sc|
00004320  72 65 65 6e 79 6f 73 25  20 3d 20 28 31 2b a4 6d  |reenyos% = (1+.m|
00004330  6f 64 65 76 61 72 28 31  32 29 29 20 2a 20 64 79  |odevar(12)) * dy|
00004340  25 0d 16 1c 04 0d 16 26  69 e7 20 73 63 72 65 65  |%......&i. scree|
00004350  6e 78 6f 73 25 20 3c 20  78 6f 73 25 20 84 20 73  |nxos% < xos% . s|
00004360  63 72 65 65 6e 79 6f 73  25 20 3c 20 79 6f 73 25  |creenyos% < yos%|
00004370  20 8c 20 f2 66 75 6c 6c  73 63 72 65 65 6e 5f 6c  | . .fullscreen_l|
00004380  65 61 76 65 3a 85 20 30  2c 22 54 68 69 73 20 66  |eave:. 0,"This f|
00004390  69 6c 6d 20 69 73 20 74  6f 6f 20 62 69 67 20 66  |ilm is too big f|
000043a0  6f 72 20 74 68 69 73 20  6d 6f 64 65 21 22 0d 16  |or this mode!"..|
000043b0  30 3d 66 6c 79 73 70 61  72 65 78 25 3d 20 28 73  |0=flysparex%= (s|
000043c0  63 72 65 65 6e 78 6f 73  25 2d 78 6f 73 25 29 2f  |creenxos%-xos%)/|
000043d0  64 78 25 20 20 20 20 20  20 20 20 3a 20 f4 20 70  |dx%        : . p|
000043e0  69 78 65 6c 73 20 73 70  61 72 65 0d 16 3a 25 66  |ixels spare..:%f|
000043f0  6c 79 73 70 61 72 65 79  25 3d 20 28 73 63 72 65  |lysparey%= (scre|
00004400  65 6e 79 6f 73 25 2d 79  6f 73 25 29 2f 64 79 25  |enyos%-yos%)/dy%|
00004410  0d 16 44 2a e7 20 66 6c  79 73 70 61 72 65 78 25  |..D*. flysparex%|
00004420  3d 30 20 80 20 6d 6f 74  69 6f 6e 25 3d 31 20 8c  |=0 . motion%=1 .|
00004430  20 6d 6f 74 69 6f 6e 25  3d 30 0d 16 4e 1e 66 6c  | motion%=0..N.fl|
00004440  79 68 65 69 67 68 74 25  20 3d 20 33 32 20 3a 20  |yheight% = 32 : |
00004450  f4 20 70 69 78 65 6c 73  0d 16 58 35 e7 20 66 6c  |. pixels..X5. fl|
00004460  79 68 65 69 67 68 74 25  20 3e 20 66 6c 79 73 70  |yheight% > flysp|
00004470  61 72 65 79 25 20 8c 20  66 6c 79 68 65 69 67 68  |arey% . flyheigh|
00004480  74 25 3d 66 6c 79 73 70  61 72 65 79 25 0d 16 62  |t%=flysparey%..b|
00004490  1e 62 6f 75 6e 63 65 78  20 3d 20 66 6c 79 73 70  |.bouncex = flysp|
000044a0  61 72 65 78 25 2a 64 78  25 2f 32 0d 16 6c 1e 62  |arex%*dx%/2..l.b|
000044b0  6f 75 6e 63 65 79 20 3d  20 66 6c 79 73 70 61 72  |ouncey = flyspar|
000044c0  65 79 25 2a 64 79 25 2f  32 0d 16 76 27 62 6f 75  |ey%*dy%/2..v'bou|
000044d0  6e 63 65 64 69 72 25 20  3d 20 b3 28 33 36 30 29  |ncedir% = .(360)|
000044e0  20 3a 20 62 6f 75 6e 63  65 73 74 65 70 25 3d 38  | : bouncestep%=8|
000044f0  0d 16 80 10 6d 65 61 6e  64 65 72 25 20 3d 20 30  |....meander% = 0|
00004500  0d 16 8a 05 e1 0d 16 94  04 0d 16 9e 19 dd 20 f2  |.............. .|
00004510  66 75 6c 6c 73 63 72 65  65 6e 5f 67 77 69 6e 64  |fullscreen_gwind|
00004520  6f 77 0d 16 a8 10 c8 8e  20 6d 6f 74 69 6f 6e 25  |ow...... motion%|
00004530  20 ca 0d 16 b2 11 c9 20  31 3a 20 f4 20 66 6c 79  | ...... 1: . fly|
00004540  69 6e 67 0d 16 bc 22 20  20 20 20 67 77 69 6e 64  |ing..."    gwind|
00004550  6f 77 78 30 25 3d 66 6c  79 63 6f 75 6e 74 65 72  |owx0%=flycounter|
00004560  25 2a 64 78 25 0d 16 c6  1f 20 20 20 20 67 77 69  |%*dx%....    gwi|
00004570  6e 64 6f 77 79 30 25 3d  66 6c 79 73 70 61 72 65  |ndowy0%=flyspare|
00004580  79 25 2f 32 0d 16 d0 3f  20 20 20 20 67 77 69 6e  |y%/2...?    gwin|
00004590  64 6f 77 79 30 25 2b 3d  66 6c 79 68 65 69 67 68  |dowy0%+=flyheigh|
000045a0  74 25 2a 28 b5 b2 28 37  32 30 2a 66 6c 79 63 6f  |t%*(..(720*flyco|
000045b0  75 6e 74 65 72 25 2f 66  6c 79 73 70 61 72 65 78  |unter%/flysparex|
000045c0  25 29 29 0d 16 da 22 20  20 20 20 67 77 69 6e 64  |%))..."    gwind|
000045d0  6f 77 79 30 25 3d 20 67  77 69 6e 64 6f 77 79 30  |owy0%= gwindowy0|
000045e0  25 2a 64 79 25 0d 16 e4  30 20 20 20 20 66 6c 79  |%*dy%...0    fly|
000045f0  63 6f 75 6e 74 65 72 25  3d 28 66 6c 79 63 6f 75  |counter%=(flycou|
00004600  6e 74 65 72 25 2b 31 29  20 83 20 66 6c 79 73 70  |nter%+1) . flysp|
00004610  61 72 65 78 25 0d 16 ee  21 c9 20 32 2c 33 3a 20  |arex%...!. 2,3: |
00004620  f4 20 62 6f 75 6e 63 69  6e 67 2c 20 6d 65 61 6e  |. bouncing, mean|
00004630  64 65 72 69 6e 67 0d 16  f8 17 20 20 20 20 e7 20  |dering....    . |
00004640  6d 6f 74 69 6f 6e 25 20  3d 20 33 20 8c 0d 17 02  |motion% = 3 ....|
00004650  22 20 20 20 20 20 20 20  20 62 6f 75 6e 63 65 64  |"        bounced|
00004660  69 72 25 20 2b 3d 20 6d  65 61 6e 64 65 72 25 0d  |ir% += meander%.|
00004670  17 0c 29 20 20 20 20 20  20 20 20 6d 65 61 6e 64  |..)        meand|
00004680  65 72 25 20 3d 20 6d 65  61 6e 64 65 72 25 20 2d  |er% = meander% -|
00004690  32 20 2b 20 b3 28 33 29  0d 17 16 31 20 20 20 20  |2 + .(3)...1    |
000046a0  20 20 20 20 e7 20 6d 65  61 6e 64 65 72 25 20 3e  |    . meander% >|
000046b0  20 35 20 80 20 b3 28 32  29 3d 31 20 8c 20 6d 65  | 5 . .(2)=1 . me|
000046c0  61 6e 64 65 72 25 2d 3d  31 0d 17 20 32 20 20 20  |ander%-=1.. 2   |
000046d0  20 20 20 20 20 e7 20 6d  65 61 6e 64 65 72 25 20  |     . meander% |
000046e0  3c 20 2d 35 20 80 20 b3  28 32 29 3d 31 20 8c 20  |< -5 . .(2)=1 . |
000046f0  6d 65 61 6e 64 65 72 25  2b 3d 31 0d 17 2a 2b 20  |meander%+=1..*+ |
00004700  20 20 20 20 20 20 20 e7  20 6d 65 61 6e 64 65 72  |       . meander|
00004710  25 20 3c 20 2d 31 30 20  6d 65 61 6e 64 65 72 25  |% < -10 meander%|
00004720  20 3d 20 2d 31 30 0d 17  34 29 20 20 20 20 20 20  | = -10..4)      |
00004730  20 20 e7 20 6d 65 61 6e  64 65 72 25 20 3e 20 31  |  . meander% > 1|
00004740  30 20 6d 65 61 6e 64 65  72 25 20 3d 20 31 30 0d  |0 meander% = 10.|
00004750  17 3e 09 20 20 20 20 cd  0d 17 48 2f 20 20 20 20  |.>.    ...H/    |
00004760  62 6f 75 6e 63 65 78 20  2b 3d 20 62 6f 75 6e 63  |bouncex += bounc|
00004770  65 73 74 65 70 25 20 2a  20 9b b2 28 62 6f 75 6e  |estep% * ..(boun|
00004780  63 65 64 69 72 25 29 0d  17 52 2f 20 20 20 20 62  |cedir%)..R/    b|
00004790  6f 75 6e 63 65 79 20 2b  3d 20 62 6f 75 6e 63 65  |ouncey += bounce|
000047a0  73 74 65 70 25 20 2a 20  b5 b2 28 62 6f 75 6e 63  |step% * ..(bounc|
000047b0  65 64 69 72 25 29 0d 17  5c 17 20 20 20 20 e7 20  |edir%)..\.    . |
000047c0  62 6f 75 6e 63 65 78 20  3c 20 30 20 8c 0d 17 66  |bouncex < 0 ...f|
000047d0  17 20 20 20 20 20 20 20  20 62 6f 75 6e 63 65 78  |.        bouncex|
000047e0  20 3d 20 30 0d 17 70 31  20 20 20 20 20 20 20 20  | = 0..p1        |
000047f0  62 6f 75 6e 63 65 64 69  72 25 20 3d 20 31 37 30  |bouncedir% = 170|
00004800  20 2d 20 62 6f 75 6e 63  65 64 69 72 25 20 2b 20  | - bouncedir% + |
00004810  b3 28 32 30 29 0d 17 7a  16 20 20 20 20 20 20 20  |.(20)..z.       |
00004820  20 6d 65 61 6e 64 65 72  25 3d 30 0d 17 84 09 20  | meander%=0.... |
00004830  20 20 20 cd 0d 17 8e 24  20 20 20 20 e7 20 62 6f  |   ....$    . bo|
00004840  75 6e 63 65 78 20 3e 20  66 6c 79 73 70 61 72 65  |uncex > flyspare|
00004850  78 25 2a 64 78 25 20 8c  0d 17 98 24 20 20 20 20  |x%*dx% ....$    |
00004860  20 20 20 20 62 6f 75 6e  63 65 78 20 3d 20 66 6c  |    bouncex = fl|
00004870  79 73 70 61 72 65 78 25  2a 64 78 25 0d 17 a2 31  |ysparex%*dx%...1|
00004880  20 20 20 20 20 20 20 20  62 6f 75 6e 63 65 64 69  |        bouncedi|
00004890  72 25 20 3d 20 31 37 30  20 2d 20 62 6f 75 6e 63  |r% = 170 - bounc|
000048a0  65 64 69 72 25 20 2b 20  b3 28 32 30 29 0d 17 ac  |edir% + .(20)...|
000048b0  16 20 20 20 20 20 20 20  20 6d 65 61 6e 64 65 72  |.        meander|
000048c0  25 3d 30 0d 17 b6 09 20  20 20 20 cd 0d 17 c0 17  |%=0....    .....|
000048d0  20 20 20 20 e7 20 62 6f  75 6e 63 65 79 20 3c 20  |    . bouncey < |
000048e0  30 20 8c 0d 17 ca 17 20  20 20 20 20 20 20 20 62  |0 .....        b|
000048f0  6f 75 6e 63 65 79 20 3d  20 30 0d 17 d4 30 20 20  |ouncey = 0...0  |
00004900  20 20 20 20 20 20 62 6f  75 6e 63 65 64 69 72 25  |      bouncedir%|
00004910  20 3d 20 31 30 20 2d 20  62 6f 75 6e 63 65 64 69  | = 10 - bouncedi|
00004920  72 25 20 2d 20 b3 28 32  30 29 0d 17 de 16 20 20  |r% - .(20)....  |
00004930  20 20 20 20 20 20 6d 65  61 6e 64 65 72 25 3d 30  |      meander%=0|
00004940  0d 17 e8 09 20 20 20 20  cd 0d 17 f2 24 20 20 20  |....    ....$   |
00004950  20 e7 20 62 6f 75 6e 63  65 79 20 3e 20 66 6c 79  | . bouncey > fly|
00004960  73 70 61 72 65 79 25 2a  64 79 25 20 8c 0d 17 fc  |sparey%*dy% ....|
00004970  24 20 20 20 20 20 20 20  20 62 6f 75 6e 63 65 79  |$        bouncey|
00004980  20 3d 20 66 6c 79 73 70  61 72 65 79 25 2a 64 79  | = flysparey%*dy|
00004990  25 0d 18 06 30 20 20 20  20 20 20 20 20 62 6f 75  |%...0        bou|
000049a0  6e 63 65 64 69 72 25 20  3d 20 31 30 20 2d 20 62  |ncedir% = 10 - b|
000049b0  6f 75 6e 63 65 64 69 72  25 20 2d 20 b3 28 32 30  |ouncedir% - .(20|
000049c0  29 0d 18 10 16 20 20 20  20 20 20 20 20 6d 65 61  |)....        mea|
000049d0  6e 64 65 72 25 3d 30 0d  18 1a 09 20 20 20 20 cd  |nder%=0....    .|
000049e0  0d 18 24 1c 20 20 20 20  67 77 69 6e 64 6f 77 78  |..$.    gwindowx|
000049f0  30 25 20 3d 20 62 6f 75  6e 63 65 78 0d 18 2e 1c  |0% = bouncex....|
00004a00  20 20 20 20 67 77 69 6e  64 6f 77 79 30 25 20 3d  |    gwindowy0% =|
00004a10  20 62 6f 75 6e 63 65 79  0d 18 38 10 7f 3a 20 f4  | bouncey..8..: .|
00004a20  20 63 65 6e 74 72 65 64  0d 18 42 23 20 20 20 20  | centred..B#    |
00004a30  67 77 69 6e 64 6f 77 78  30 25 3d 66 6c 79 73 70  |gwindowx0%=flysp|
00004a40  61 72 65 78 25 2a 64 78  25 2f 32 0d 18 4c 23 20  |arex%*dx%/2..L# |
00004a50  20 20 20 67 77 69 6e 64  6f 77 79 30 25 3d 66 6c  |   gwindowy0%=fl|
00004a60  79 73 70 61 72 65 79 25  2a 64 79 25 2f 32 0d 18  |ysparey%*dy%/2..|
00004a70  56 05 cb 0d 18 60 04 0d  18 6a 29 f4 20 6d 75 73  |V....`...j). mus|
00004a80  74 20 62 79 74 65 2d 61  6c 69 67 6e 20 78 20 61  |t byte-align x a|
00004a90  6e 64 20 70 69 78 65 6c  2d 61 6c 69 67 6e 20 79  |nd pixel-align y|
00004aa0  0d 18 74 1d 6c 6f 67 32  62 70 63 25 20 3d 20 a4  |..t.log2bpc% = .|
00004ab0  6d 6f 64 65 76 61 72 28  20 31 30 20 29 0d 18 7e  |modevar( 10 )..~|
00004ac0  2a 62 69 74 73 25 20 3d  20 28 67 77 69 6e 64 6f  |*bits% = (gwindo|
00004ad0  77 78 30 25 20 2f 20 64  78 25 29 20 3c 3c 20 6c  |wx0% / dx%) << l|
00004ae0  6f 67 32 62 70 63 25 0d  18 88 18 62 69 74 73 25  |og2bpc%....bits%|
00004af0  20 3d 20 62 69 74 73 25  20 80 20 28 ac 37 29 0d  | = bits% . (.7).|
00004b00  18 92 2a 67 77 69 6e 64  6f 77 78 30 25 20 3d 20  |..*gwindowx0% = |
00004b10  28 62 69 74 73 25 20 3e  3e 20 6c 6f 67 32 62 70  |(bits% >> log2bp|
00004b20  63 25 29 20 2a 20 64 78  25 0d 18 9c 04 0d 18 a6  |c%) * dx%.......|
00004b30  2a 67 77 69 6e 64 6f 77  79 30 25 20 3d 20 67 77  |*gwindowy0% = gw|
00004b40  69 6e 64 6f 77 79 30 25  20 80 20 ac 20 28 20 64  |indowy0% . . ( d|
00004b50  79 25 20 2d 31 20 29 0d  18 b0 04 0d 18 ba 1e 67  |y% -1 )........g|
00004b60  77 69 6e 64 6f 77 78 31  25 3d 67 77 69 6e 64 6f  |windowx1%=gwindo|
00004b70  77 78 30 25 2b 78 6f 73  25 0d 18 c4 1e 67 77 69  |wx0%+xos%....gwi|
00004b80  6e 64 6f 77 79 31 25 3d  67 77 69 6e 64 6f 77 79  |ndowy1%=gwindowy|
00004b90  30 25 2b 79 6f 73 25 0d  18 ce 39 ef 20 32 34 2c  |0%+yos%...9. 24,|
00004ba0  67 77 69 6e 64 6f 77 78  30 25 3b 67 77 69 6e 64  |gwindowx0%;gwind|
00004bb0  6f 77 79 30 25 3b 67 77  69 6e 64 6f 77 78 31 25  |owy0%;gwindowx1%|
00004bc0  2d 31 3b 67 77 69 6e 64  6f 77 79 31 25 2d 31 3b  |-1;gwindowy1%-1;|
00004bd0  0d 18 d8 05 e1 0d 18 e2  04 0d 18 ec 18 dd 20 a4  |.............. .|
00004be0  66 75 6c 6c 73 63 72 65  65 6e 5f 76 73 79 6e 63  |fullscreen_vsync|
00004bf0  73 0d 18 f6 0d ea 20 76  73 79 6e 63 73 25 0d 19  |s..... vsyncs%..|
00004c00  00 10 e7 20 72 61 74 65  25 3c 3e 30 20 8c 0d 19  |... rate%<>0 ...|
00004c10  0a 13 20 20 20 20 c8 8e  20 21 72 61 74 65 25 20  |..    .. !rate% |
00004c20  ca 0d 19 14 0c 20 20 20  20 c9 20 30 3a 0d 19 1e  |.....    . 0:...|
00004c30  24 20 20 20 20 20 20 20  20 f4 20 43 65 6e 74 69  |$        . Centi|
00004c40  73 65 63 6f 6e 64 73 20  70 65 72 20 66 72 61 6d  |seconds per fram|
00004c50  65 0d 19 28 25 20 20 20  20 20 20 20 20 3d 20 28  |e..(%        = (|
00004c60  72 61 74 65 25 21 34 29  2a 28 72 61 74 65 25 21  |rate%!4)*(rate%!|
00004c70  38 29 2f 31 30 30 0d 19  32 0c 20 20 20 20 c9 20  |8)/100..2.    . |
00004c80  31 3a 0d 19 3c 1f 20 20  20 20 20 20 20 20 f4 20  |1:..<.        . |
00004c90  46 72 61 6d 65 73 20 70  65 72 20 73 65 63 6f 6e  |Frames per secon|
00004ca0  64 0d 19 46 21 20 20 20  20 20 20 20 20 3d 20 28  |d..F!        = (|
00004cb0  72 61 74 65 25 21 38 29  2f 28 72 61 74 65 25 21  |rate%!8)/(rate%!|
00004cc0  34 29 0d 19 50 0c 20 20  20 20 c9 20 32 3a 0d 19  |4)..P.    . 2:..|
00004cd0  5a 15 20 20 20 20 20 20  20 20 3d 20 72 61 74 65  |Z.        = rate|
00004ce0  25 21 34 0d 19 64 09 20  20 20 20 cb 0d 19 6e 05  |%!4..d.    ...n.|
00004cf0  cd 0d 19 78 2b f4 20 6e  6f 74 20 61 20 63 6c 75  |...x+. not a clu|
00004d00  65 20 2e 2e 2e 20 75 73  65 20 61 20 73 65 6e 73  |e ... use a sens|
00004d10  69 62 6c 65 20 64 65 66  61 75 6c 74 0d 19 82 06  |ible default....|
00004d20  3d 38 0d 19 8c 04 0d 19  96 1c dd 20 f2 66 75 6c  |=8......... .ful|
00004d30  6c 73 63 72 65 65 6e 5f  73 65 74 70 61 6c 65 74  |lscreen_setpalet|
00004d40  74 65 0d 19 a0 29 ea 20  6e 63 6f 6c 25 2c 6c 6f  |te...). ncol%,lo|
00004d50  67 32 62 70 63 25 2c 74  61 62 6c 65 25 2c 6d 6f  |g2bpc%,table%,mo|
00004d60  64 65 66 6c 61 67 73 25  2c 41 25 0d 19 aa 0f e7  |deflags%,A%.....|
00004d70  20 70 61 6c 65 25 3d 30  20 e1 0d 19 b4 15 6c 6f  | pale%=0 .....lo|
00004d80  67 32 62 70 63 25 3d 70  61 6c 65 25 21 31 36 0d  |g2bpc%=pale%!16.|
00004d90  19 be 13 74 61 62 6c 65  25 3d 70 61 6c 65 25 2b  |...table%=pale%+|
00004da0  32 38 0d 19 c8 2c f2 73  65 74 62 67 28 20 74 61  |28...,.setbg( ta|
00004db0  62 6c 65 25 21 28 70 61  6c 65 25 21 34 20 2a 20  |ble%!(pale%!4 * |
00004dc0  34 29 2c 20 6c 6f 67 32  62 70 63 25 20 29 0d 19  |4), log2bpc% )..|
00004dd0  d2 08 ef 20 32 36 0d 19  dc 05 da 0d 19 e6 2a f2  |... 26........*.|
00004de0  73 65 74 63 6f 6c 28 20  30 2c 20 32 34 2c 20 74  |setcol( 0, 24, t|
00004df0  61 62 6c 65 25 21 28 70  61 6c 65 25 21 34 20 2a  |able%!(pale%!4 *|
00004e00  20 34 29 20 29 0d 19 f0  12 e7 20 6c 6f 67 32 62  | 4) )..... log2b|
00004e10  70 63 25 3e 33 20 e1 0d  19 fa 18 6d 6f 64 65 66  |pc%>3 .....modef|
00004e20  6c 61 67 73 25 20 3d 20  70 61 6c 65 25 21 38 0d  |lags% = pale%!8.|
00004e30  1a 04 2d e7 20 28 6c 6f  67 32 62 70 63 25 3d 33  |..-. (log2bpc%=3|
00004e40  29 20 80 20 28 6d 6f 64  65 66 6c 61 67 73 25 20  |) . (modeflags% |
00004e50  80 20 31 32 38 29 3d 30  20 8c 20 e1 0d 1a 0e 20  |. 128)=0 . .... |
00004e60  6e 63 6f 6c 25 20 3d 20  31 20 3c 3c 20 28 31 20  |ncol% = 1 << (1 |
00004e70  3c 3c 20 6c 6f 67 32 62  70 63 25 29 0d 1a 18 16  |<< log2bpc%)....|
00004e80  e3 20 41 25 20 3d 20 30  20 b8 20 6e 63 6f 6c 25  |. A% = 0 . ncol%|
00004e90  2d 31 0d 1a 22 24 f2 73  65 74 63 6f 6c 28 20 41  |-1.."$.setcol( A|
00004ea0  25 2c 20 31 36 2c 20 74  61 62 6c 65 25 21 28 41  |%, 16, table%!(A|
00004eb0  25 2a 34 29 20 29 0d 1a  2c 05 ed 0d 1a 36 05 e1  |%*4) )..,....6..|
00004ec0  0d 1a 40 04 0d 1a 4a 1c  dd 20 f2 73 65 74 62 67  |..@...J.. .setbg|
00004ed0  28 20 41 25 2c 20 6c 6f  67 32 62 70 63 25 20 29  |( A%, log2bpc% )|
00004ee0  0d 1a 54 28 e7 20 6c 6f  67 32 62 70 63 25 3c 33  |..T(. log2bpc%<3|
00004ef0  20 8c 20 e6 20 28 41 25  20 80 20 26 37 46 29 20  | . . (A% . &7F) |
00004f00  2b 31 32 38 20 3a 20 e1  0d 1a 5e 12 e7 20 6c 6f  |+128 : ...^.. lo|
00004f10  67 32 62 70 63 25 3d 33  20 8c 0d 1a 68 39 20 20  |g2bpc%=3 ...h9  |
00004f20  20 20 c8 99 20 22 43 6f  6c 6f 75 72 54 72 61 6e  |  .. "ColourTran|
00004f30  73 5f 43 6f 6c 6f 75 72  4e 75 6d 62 65 72 54 6f  |s_ColourNumberTo|
00004f40  47 43 4f 4c 22 2c 41 25  20 80 20 32 35 35 20 b8  |GCOL",A% . 255 .|
00004f50  20 41 25 0d 1a 72 15 20  20 20 20 41 25 20 3d 20  | A%..r.    A% = |
00004f60  41 25 20 80 20 32 35 35  0d 1a 7c 26 20 20 20 20  |A% . 255..|&    |
00004f70  e6 20 31 32 38 20 2b 20  28 41 25 3e 3e 32 29 20  |. 128 + (A%>>2) |
00004f80  c8 9c 20 28 28 41 25 80  33 29 3c 3c 36 29 0d 1a  |.. ((A%.3)<<6)..|
00004f90  86 09 20 20 20 20 e1 0d  1a 90 05 cd 0d 1a 9a 1f  |..    ..........|
00004fa0  f4 20 4d 75 73 74 20 62  65 20 6f 6e 20 61 20 52  |. Must be on a R|
00004fb0  69 73 63 20 50 43 20 6e  6f 77 21 0d 1a a4 33 c8  |isc PC now!...3.|
00004fc0  99 20 22 43 6f 6c 6f 75  72 54 72 61 6e 73 5f 53  |. "ColourTrans_S|
00004fd0  65 74 47 43 4f 4c 22 2c  41 25 20 80 20 26 46 46  |etGCOL",A% . &FF|
00004fe0  46 46 46 46 30 30 2c 2c  2c 31 32 38 2c 30 0d 1a  |FFFF00,,,128,0..|
00004ff0  ae 05 e1 0d 1a b8 04 0d  1a c2 1a dd 20 f2 73 65  |............ .se|
00005000  74 63 6f 6c 28 20 41 25  2c 20 42 25 2c 20 43 25  |tcol( A%, B%, C%|
00005010  29 0d 1a cc 29 ef 20 31  39 2c 41 25 2c 42 25 2c  |)...). 19,A%,B%,|
00005020  20 28 43 25 3e 3e 38 29  2c 28 43 25 3e 3e 31 36  | (C%>>8),(C%>>16|
00005030  29 2c 28 43 25 3e 3e 32  34 29 0d 1a d6 05 e1 0d  |),(C%>>24)......|
00005040  1a e0 04 0d 1a ea 17 dd  20 f2 66 75 6c 6c 73 63  |........ .fullsc|
00005050  72 65 65 6e 5f 6c 65 61  76 65 0d 1a f4 0e f2 6c  |reen_leave.....l|
00005060  6f 73 65 73 79 6e 63 73  0d 1a fe 1a 62 6c 6f 63  |osesyncs....bloc|
00005070  6b 25 21 32 34 3d 62 6c  61 63 6b 68 61 6e 64 6c  |k%!24=blackhandl|
00005080  65 25 0d 1b 08 1f c8 99  20 22 57 69 6d 70 5f 53  |e%...... "Wimp_S|
00005090  65 74 4d 6f 64 65 22 2c  64 65 73 6b 6d 6f 64 65  |etMode",deskmode|
000050a0  25 0d 1b 12 0e 2a 70 6f  69 6e 74 65 72 20 31 0d  |%....*pointer 1.|
000050b0  1b 1c 24 c8 99 20 22 57  69 6d 70 5f 43 6c 6f 73  |..$.. "Wimp_Clos|
000050c0  65 57 69 6e 64 6f 77 22  2c 2c 62 6c 6f 63 6b 25  |eWindow",,block%|
000050d0  2b 32 34 0d 1b 26 24 c8  99 20 22 43 6f 6c 6f 75  |+24..&$.. "Colou|
000050e0  72 54 72 61 6e 73 5f 49  6e 76 61 6c 69 64 61 74  |rTrans_Invalidat|
000050f0  65 43 61 63 68 65 22 0d  1b 30 0e 72 75 6e 6e 69  |eCache"..0.runni|
00005100  6e 67 25 3d a3 0d 1b 3a  11 73 68 6f 77 73 70 72  |ng%=...:.showspr|
00005110  69 74 65 25 3d a3 0d 1b  44 05 e1 0d 1b 4e 04 0d  |ite%=...D....N..|
00005120  1b 58 0f dd 20 f2 67 65  74 73 79 6e 63 73 0d 1b  |.X.. .getsyncs..|
00005130  62 10 e7 20 63 6c 61 69  6d 65 64 25 20 e1 0d 1b  |b.. claimed% ...|
00005140  6c 16 c8 99 20 22 58 4f  53 5f 42 79 74 65 22 2c  |l... "XOS_Byte",|
00005150  31 34 2c 34 0d 1b 76 0e  63 6c 61 69 6d 65 64 25  |14,4..v.claimed%|
00005160  3d b9 0d 1b 80 05 e1 0d  1b 8a 04 0d 1b 94 10 dd  |=...............|
00005170  20 f2 6c 6f 73 65 73 79  6e 63 73 0d 1b 9e 12 e7  | .losesyncs.....|
00005180  20 63 6c 61 69 6d 65 64  25 3d a3 20 e1 0d 1b a8  | claimed%=. ....|
00005190  16 c8 99 20 22 58 4f 53  5f 42 79 74 65 22 2c 31  |... "XOS_Byte",1|
000051a0  33 2c 34 0d 1b b2 0e 63  6c 61 69 6d 65 64 25 3d  |3,4....claimed%=|
000051b0  a3 0d 1b bc 05 e1 0d 1b  c6 04 0d 1b d0 15 dd 20  |............... |
000051c0  f2 73 68 6f 77 73 70 72  69 74 65 28 41 24 29 0d  |.showsprite(A$).|
000051d0  1b da 25 ea 20 41 25 2c  42 25 2c 43 25 2c 73 70  |..%. A%,B%,C%,sp|
000051e0  72 6d 6f 64 65 25 2c 73  70 72 65 78 25 2c 73 70  |rmode%,sprex%,sp|
000051f0  72 65 79 25 0d 1b e4 1a  e7 20 4f 53 56 65 72 73  |rey%..... OSVers|
00005200  69 6f 6e 25 20 3c 20 31  36 33 20 8c 20 e1 0d 1b  |ion% < 163 . ...|
00005210  ee 0e f4 20 52 4f 33 20  6f 6e 6c 79 0d 1b f8 23  |... RO3 only...#|
00005220  c8 99 20 22 57 69 6d 70  5f 42 61 73 65 4f 66 53  |.. "Wimp_BaseOfS|
00005230  70 72 69 74 65 73 22 20  b8 20 41 25 2c 42 25 0d  |prites" . A%,B%.|
00005240  1c 02 42 c8 99 20 22 58  4f 53 5f 53 70 72 69 74  |..B.. "XOS_Sprit|
00005250  65 4f 70 22 2c 32 35 36  2b 34 30 2c 41 25 2c 41  |eOp",256+40,A%,A|
00005260  24 20 b8 20 2c 2c 2c 73  70 72 78 25 2c 73 70 72  |$ . ,,,sprx%,spr|
00005270  79 25 2c 2c 73 70 72 6d  6f 64 65 25 20 3b 20 43  |y%,,sprmode% ; C|
00005280  25 0d 1c 0c 14 e7 20 28  43 25 20 80 20 31 29 20  |%..... (C% . 1) |
00005290  41 25 3d 42 25 0d 1c 16  42 c8 99 20 22 58 4f 53  |A%=B%...B.. "XOS|
000052a0  5f 53 70 72 69 74 65 4f  70 22 2c 32 35 36 2b 34  |_SpriteOp",256+4|
000052b0  30 2c 41 25 2c 41 24 20  b8 20 2c 2c 2c 73 70 72  |0,A%,A$ . ,,,spr|
000052c0  78 25 2c 73 70 72 79 25  2c 2c 73 70 72 6d 6f 64  |x%,spry%,,sprmod|
000052d0  65 25 20 3b 20 43 25 0d  1c 20 10 e7 20 28 43 25  |e% ; C%.. .. (C%|
000052e0  20 80 20 31 29 20 e1 0d  1c 2a 0f 73 70 72 61 72  | . 1) ...*.sprar|
000052f0  65 61 25 3d 41 25 0d 1c  34 0e 73 70 72 69 74 65  |ea%=A%..4.sprite|
00005300  24 3d 41 24 0d 1c 3e 24  c8 99 20 22 43 6f 6c 6f  |$=A$..>$.. "Colo|
00005310  75 72 54 72 61 6e 73 5f  49 6e 76 61 6c 69 64 61  |urTrans_Invalida|
00005320  74 65 43 61 63 68 65 22  0d 1c 48 38 c8 99 20 22  |teCache"..H8.. "|
00005330  43 6f 6c 6f 75 72 54 72  61 6e 73 5f 53 65 6c 65  |ColourTrans_Sele|
00005340  63 74 54 61 62 6c 65 22  2c 41 25 2c 41 24 2c 2d  |ctTable",A%,A$,-|
00005350  31 2c 2d 31 2c 70 69 78  74 72 61 6e 73 25 2c 30  |1,-1,pixtrans%,0|
00005360  0d 1c 52 32 c8 99 20 22  4f 53 5f 52 65 61 64 4d  |..R2.. "OS_ReadM|
00005370  6f 64 65 56 61 72 69 61  62 6c 65 22 2c 73 70 72  |odeVariable",spr|
00005380  6d 6f 64 65 25 2c 34 20  b8 20 2c 2c 73 70 72 65  |mode%,4 . ,,spre|
00005390  78 25 0d 1c 5c 29 f2 73  70 72 66 61 63 74 6f 72  |x%..\).sprfactor|
000053a0  28 20 73 70 72 65 78 25  2c 20 78 65 69 67 25 2c  |( sprex%, xeig%,|
000053b0  20 66 61 63 74 6f 72 73  25 20 29 0d 1c 66 1b 73  | factors% )..f.s|
000053c0  70 72 78 25 20 3d 20 73  70 72 78 25 20 3c 3c 20  |prx% = sprx% << |
000053d0  73 70 72 65 78 25 0d 1c  70 32 c8 99 20 22 4f 53  |sprex%..p2.. "OS|
000053e0  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
000053f0  65 22 2c 73 70 72 6d 6f  64 65 25 2c 35 20 b8 20  |e",sprmode%,5 . |
00005400  2c 2c 73 70 72 65 79 25  0d 1c 7a 2b f2 73 70 72  |,,sprey%..z+.spr|
00005410  66 61 63 74 6f 72 28 20  73 70 72 65 79 25 2c 20  |factor( sprey%, |
00005420  79 65 69 67 25 2c 20 66  61 63 74 6f 72 73 25 2b  |yeig%, factors%+|
00005430  34 20 29 0d 1c 84 1b 73  70 72 79 25 20 3d 20 73  |4 )....spry% = s|
00005440  70 72 79 25 20 3c 3c 20  73 70 72 65 79 25 0d 1c  |pry% << sprey%..|
00005450  8e 13 73 68 6f 77 73 70  72 69 74 65 25 20 3d 20  |..showsprite% = |
00005460  b9 0d 1c 98 0f 73 70 72  69 74 65 78 25 3d 2d 31  |.....spritex%=-1|
00005470  0d 1c a2 19 73 70 72 69  74 65 79 25 3d 73 63 72  |....spritey%=scr|
00005480  65 65 6e 79 6f 73 25 2f  32 0d 1c ac 13 73 70 72  |eenyos%/2....spr|
00005490  69 74 65 64 25 3d b3 28  33 36 30 29 0d 1c b6 0e  |ited%=.(360)....|
000054a0  73 70 72 69 74 65 6d 25  3d 30 0d 1c c0 05 e1 0d  |spritem%=0......|
000054b0  1c ca 04 0d 1c d4 26 dd  20 f2 73 70 72 66 61 63  |......&. .sprfac|
000054c0  74 6f 72 28 20 73 70 72  65 25 2c 20 65 69 67 25  |tor( spre%, eig%|
000054d0  2c 20 66 61 63 74 25 20  29 0d 1c de 14 e7 20 73  |, fact% )..... s|
000054e0  70 72 65 25 20 3e 20 65  69 67 25 20 8c 0d 1c e8  |pre% > eig% ....|
000054f0  22 20 20 20 20 21 66 61  63 74 25 20 3d 20 31 20  |"    !fact% = 1 |
00005500  3c 3c 20 28 73 70 72 65  25 2d 65 69 67 25 29 0d  |<< (spre%-eig%).|
00005510  1c f2 13 20 20 20 20 66  61 63 74 25 21 38 20 3d  |...    fact%!8 =|
00005520  20 31 0d 1c fc 05 cc 0d  1d 06 10 20 20 20 20 21  | 1.........    !|
00005530  66 61 63 74 25 3d 31 0d  1d 10 23 20 20 20 20 66  |fact%=1...#    f|
00005540  61 63 74 25 21 38 20 3d  20 31 20 3c 3c 20 28 65  |act%!8 = 1 << (e|
00005550  69 67 25 2d 73 70 72 65  25 29 0d 1d 1a 05 cd 0d  |ig%-spre%)......|
00005560  1d 24 05 e1 0d 1d 2e 04  0d 1d 38 43 f4 20 2d 2d  |.$........8C. --|
00005570  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
000055a0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 0d 1d 42 04 0d  |-----------..B..|
000055b0  1d 4c 2d dd 20 a4 66 69  6c 6d 5f 66 69 6e 64 63  |.L-. .film_findc|
000055c0  68 75 6e 6b 28 20 63 68  75 6e 6b 24 2c 20 73 74  |hunk( chunk$, st|
000055d0  61 72 74 25 2c 20 6c 65  6e 25 20 29 0d 1d 56 0a  |art%, len% )..V.|
000055e0  ea 20 65 6e 64 25 0d 1d  60 14 65 6e 64 25 3d 73  |. end%..`.end%=s|
000055f0  74 61 72 74 25 2b 6c 65  6e 25 0d 1d 6a 11 24 6e  |tart%+len%..j.$n|
00005600  61 6d 65 25 3d 63 68 75  6e 6b 24 0d 1d 74 05 f5  |ame%=chunk$..t..|
00005610  0d 1d 7e 26 20 20 20 20  e7 20 21 73 74 61 72 74  |..~&    . !start|
00005620  25 20 3d 20 21 6e 61 6d  65 25 20 8c 20 3d 73 74  |% = !name% . =st|
00005630  61 72 74 25 2b 38 0d 1d  88 1a 20 20 20 20 73 74  |art%+8....    st|
00005640  61 72 74 25 20 2b 3d 20  73 74 61 72 74 25 21 34  |art% += start%!4|
00005650  0d 1d 92 14 fd 20 73 74  61 72 74 25 20 3e 3d 20  |..... start% >= |
00005660  65 6e 64 25 0d 1d 9c 06  3d 30 0d 1d a6 04 0d 1d  |end%....=0......|
00005670  b0 2d dd 20 f2 6d 65 6c  6c 6f 77 6f 75 74 5f 61  |.-. .mellowout_a|
00005680  63 74 69 76 65 28 20 f8  20 6b 65 79 70 25 2c 20  |ctive( . keyp%, |
00005690  f8 20 76 73 79 6e 63 73  25 20 29 0d 1d ba 2d c8  |. vsyncs% )...-.|
000056a0  99 20 22 4f 53 5f 4d 6f  64 75 6c 65 22 2c 31 38  |. "OS_Module",18|
000056b0  2c 22 4d 65 6c 6c 6f 77  4f 75 74 22 20 b8 20 2c  |,"MellowOut" . ,|
000056c0  2c 2c 2c 6b 65 79 70 25  0d 1d c4 29 f4 20 72 65  |,,,keyp%...). re|
000056d0  61 64 20 70 72 69 76 61  74 65 20 77 6f 72 64 2e  |ad private word.|
000056e0  2e 2e 63 75 6e 6e 69 6e  67 20 6f 72 20 77 6f 74  |..cunning or wot|
000056f0  3f 0d 1d ce 28 76 73 79  6e 63 73 25 20 3d 20 6b  |?...(vsyncs% = k|
00005700  65 79 70 25 20 3e 3e 3e  20 31 36 20 20 3a 20 f4  |eyp% >>> 16  : .|
00005710  20 75 6e 73 69 67 6e 65  64 0d 1d d8 19 6b 65 79  | unsigned....key|
00005720  70 25 20 3d 20 6b 65 79  70 25 20 80 20 26 46 46  |p% = keyp% . &FF|
00005730  46 46 0d 1d e2 05 e1 0d  1d ec 04 0d 1d f6 43 f4  |FF............C.|
00005740  20 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  | ---------------|
00005750  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005770  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 0d 1e  |--------------..|
00005780  00 04 0d 1e 0a 10 dd 20  a4 6d 65 6e 75 5f 6d 61  |....... .menu_ma|
00005790  6b 65 0d 1e 14 1b ea 20  69 74 65 6d 25 2c 69 70  |ke..... item%,ip|
000057a0  74 72 25 2c 6c 65 6e 25  2c 74 78 74 25 0d 1e 1e  |tr%,len%,txt%...|
000057b0  12 f3 20 6e 61 6d 65 24  2c 69 74 65 6d 73 25 0d  |.. name$,items%.|
000057c0  1e 28 1a de 20 6d 65 6e  75 25 20 28 69 74 65 6d  |.(.. menu% (item|
000057d0  73 25 2a 32 34 29 2b 32  38 0d 1e 32 10 24 6d 65  |s%*24)+28..2.$me|
000057e0  6e 75 25 3d 6e 61 6d 65  24 0d 1e 3c 15 6c 65 6e  |nu%=name$..<.len|
000057f0  25 20 3d 20 a9 28 6e 61  6d 65 24 29 2d 31 0d 1e  |% = .(name$)-1..|
00005800  46 0e 6d 65 6e 75 25 3f  31 32 3d 37 0d 1e 50 0e  |F.menu%?12=7..P.|
00005810  6d 65 6e 75 25 3f 31 33  3d 32 0d 1e 5a 0e 6d 65  |menu%?13=2..Z.me|
00005820  6e 75 25 3f 31 34 3d 37  0d 1e 64 0e 6d 65 6e 75  |nu%?14=7..d.menu|
00005830  25 3f 31 35 3d 30 0d 1e  6e 0f 6d 65 6e 75 25 21  |%?15=0..n.menu%!|
00005840  32 30 3d 34 34 0d 1e 78  0e 6d 65 6e 75 25 21 32  |20=44..x.menu%!2|
00005850  34 3d 30 0d 1e 82 16 e3  20 69 74 65 6d 25 3d 31  |4=0..... item%=1|
00005860  20 b8 20 69 74 65 6d 73  25 0d 1e 8c 0f 20 20 20  | . items%....   |
00005870  20 f3 20 6e 61 6d 65 24  0d 1e 96 1e 20 20 20 20  | . name$....    |
00005880  69 70 74 72 25 3d 6d 65  6e 75 25 2b 34 2b 69 74  |iptr%=menu%+4+it|
00005890  65 6d 25 2a 32 34 0d 1e  a0 15 20 20 20 20 e7 20  |em%*24....    . |
000058a0  6e 61 6d 65 24 3d 22 7c  22 20 8c 0d 1e aa 29 20  |name$="|" ....) |
000058b0  20 20 20 20 20 20 20 21  28 69 70 74 72 25 2d 32  |       !(iptr%-2|
000058c0  34 29 20 3d 20 21 28 69  70 74 72 25 2d 32 34 29  |4) = !(iptr%-24)|
000058d0  20 84 20 32 0d 1e b4 13  20 20 20 20 20 20 20 20  | . 2....        |
000058e0  f3 20 6e 61 6d 65 24 0d  1e be 09 20 20 20 20 cd  |. name$....    .|
000058f0  0d 1e c8 10 20 20 20 20  21 69 70 74 72 25 3d 30  |....    !iptr%=0|
00005900  0d 1e d2 25 20 20 20 20  e7 20 69 74 65 6d 25 3d  |...%    . item%=|
00005910  69 74 65 6d 73 25 20 8c  20 21 69 70 74 72 25 20  |items% . !iptr% |
00005920  3d 20 31 32 38 0d 1e dc  14 20 20 20 20 69 70 74  |= 128....    ipt|
00005930  72 25 21 34 20 3d 20 2d  31 0d 1e e6 19 20 20 20  |r%!4 = -1....   |
00005940  20 e7 20 a9 28 6e 61 6d  65 24 29 20 3e 20 31 32  | . .(name$) > 12|
00005950  20 8c 0d 1e f0 1f 20 20  20 20 20 20 20 20 69 70  | .....        ip|
00005960  74 72 25 21 38 20 3d 20  26 30 37 30 30 30 31 31  |tr%!8 = &0700011|
00005970  31 0d 1e fa 1d 20 20 20  20 20 20 20 20 de 20 74  |1....        . t|
00005980  78 74 25 20 28 a9 6e 61  6d 65 24 2b 31 29 0d 1f  |xt% (.name$+1)..|
00005990  04 17 20 20 20 20 20 20  20 20 24 74 78 74 25 3d  |..        $txt%=|
000059a0  6e 61 6d 65 24 0d 1f 0e  19 20 20 20 20 20 20 20  |name$....       |
000059b0  20 69 70 74 72 25 21 31  32 3d 74 78 74 25 0d 1f  | iptr%!12=txt%..|
000059c0  18 16 20 20 20 20 20 20  20 20 69 70 74 72 25 21  |..        iptr%!|
000059d0  31 36 3d 30 0d 1f 22 16  20 20 20 20 20 20 20 20  |16=0..".        |
000059e0  69 70 74 72 25 21 32 30  3d 30 0d 1f 2c 09 20 20  |iptr%!20=0..,.  |
000059f0  20 20 cc 0d 1f 36 1f 20  20 20 20 20 20 20 20 69  |  ...6.        i|
00005a00  70 74 72 25 21 38 20 3d  20 26 30 37 30 30 30 30  |ptr%!8 = &070000|
00005a10  31 31 0d 1f 40 1d 20 20  20 20 20 20 20 20 24 28  |11..@.        $(|
00005a20  69 70 74 72 25 2b 31 32  29 3d 6e 61 6d 65 24 0d  |iptr%+12)=name$.|
00005a30  1f 4a 09 20 20 20 20 cd  0d 1f 54 29 20 20 20 20  |.J.    ...T)    |
00005a40  e7 20 a9 28 6e 61 6d 65  24 29 20 3e 20 6c 65 6e  |. .(name$) > len|
00005a50  25 20 6c 65 6e 25 20 3d  20 a9 28 6e 61 6d 65 24  |% len% = .(name$|
00005a60  29 0d 1f 5e 05 ed 0d 1f  68 19 6d 65 6e 75 25 21  |)..^....h.menu%!|
00005a70  31 36 20 3d 20 6c 65 6e  25 2a 31 36 2b 31 32 0d  |16 = len%*16+12.|
00005a80  1f 72 0a 3d 6d 65 6e 75  25 0d 1f 7c 04 0d 1f 86  |.r.=menu%..|....|
00005a90  2c dd 20 f2 6d 65 6e 75  5f 61 74 74 61 63 68 28  |,. .menu_attach(|
00005aa0  20 6d 65 6e 75 25 2c 20  69 74 65 6d 25 2c 20 73  | menu%, item%, s|
00005ab0  75 62 6d 65 6e 75 25 20  29 0d 1f 90 24 6d 65 6e  |ubmenu% )...$men|
00005ac0  75 25 21 28 69 74 65 6d  25 2a 32 34 2b 32 38 2b  |u%!(item%*24+28+|
00005ad0  34 29 20 3d 20 73 75 62  6d 65 6e 75 25 0d 1f 9a  |4) = submenu%...|
00005ae0  05 e1 0d 1f a4 04 0d 1f  ae 2d dd 20 f2 6d 65 6e  |.........-. .men|
00005af0  75 5f 6f 70 65 6e 28 20  6d 65 6e 75 25 2c 20 78  |u_open( menu%, x|
00005b00  25 2c 20 69 74 65 6d 73  25 2c 20 6c 69 6e 65 73  |%, items%, lines|
00005b10  25 20 29 0d 1f b8 08 ea  20 79 25 0d 1f c2 21 79  |% )..... y%...!y|
00005b20  25 3d 39 36 20 2b 20 69  74 65 6d 73 25 2a 34 34  |%=96 + items%*44|
00005b30  20 2b 20 6c 69 6e 65 73  25 2a 32 34 0d 1f cc 28  | + lines%*24...(|
00005b40  c8 99 20 22 57 69 6d 70  5f 43 72 65 61 74 65 4d  |.. "Wimp_CreateM|
00005b50  65 6e 75 22 2c 2c 6d 65  6e 75 25 2c 78 25 2d 36  |enu",,menu%,x%-6|
00005b60  34 2c 79 25 0d 1f d6 05  e1 0d 1f e0 04 0d 1f ea  |4,y%............|
00005b70  30 dd 20 f2 6d 65 6e 75  5f 74 69 63 6b 28 20 6d  |0. .menu_tick( m|
00005b80  65 6e 75 25 2c 20 66 69  72 73 74 25 2c 20 6c 61  |enu%, first%, la|
00005b90  73 74 25 2c 20 77 68 69  63 68 25 20 29 0d 1f f4  |st%, which% )...|
00005ba0  0f ea 20 79 25 2c 66 6c  61 67 73 25 0d 1f fe 17  |.. y%,flags%....|
00005bb0  e3 20 79 25 3d 66 69 72  73 74 25 20 b8 20 6c 61  |. y%=first% . la|
00005bc0  73 74 25 0d 20 08 32 20  20 20 20 f2 6d 65 6e 75  |st%. .2    .menu|
00005bd0  5f 74 69 63 6b 31 28 20  6d 65 6e 75 25 2c 20 79  |_tick1( menu%, y|
00005be0  25 2c 20 77 68 69 63 68  25 3d 79 25 2d 66 69 72  |%, which%=y%-fir|
00005bf0  73 74 25 20 29 0d 20 12  05 ed 0d 20 1c 05 e1 0d  |st% ). .... ....|
00005c00  20 26 04 0d 20 30 2b dd  20 f2 6d 65 6e 75 5f 74  | &.. 0+. .menu_t|
00005c10  69 63 6b 31 28 20 6d 65  6e 75 25 2c 20 69 74 65  |ick1( menu%, ite|
00005c20  6d 25 2c 20 77 68 65 74  68 65 72 25 20 29 0d 20  |m%, whether% ). |
00005c30  3a 0c ea 20 66 6c 61 67  73 25 0d 20 44 20 66 6c  |:.. flags%. D fl|
00005c40  61 67 73 25 20 3d 20 6d  65 6e 75 25 21 28 69 74  |ags% = menu%!(it|
00005c50  65 6d 25 2a 32 34 2b 32  38 29 0d 20 4e 10 e7 20  |em%*24+28). N.. |
00005c60  77 68 65 74 68 65 72 25  20 8c 0d 20 58 1b 20 20  |whether% .. X.  |
00005c70  20 20 66 6c 61 67 73 25  20 3d 20 66 6c 61 67 73  |  flags% = flags|
00005c80  25 20 84 20 31 0d 20 62  05 cc 0d 20 6c 1e 20 20  |% . 1. b... l.  |
00005c90  20 20 66 6c 61 67 73 25  20 3d 20 66 6c 61 67 73  |  flags% = flags|
00005ca0  25 20 80 20 28 ac 31 29  0d 20 76 05 cd 0d 20 80  |% . (.1). v... .|
00005cb0  20 6d 65 6e 75 25 21 28  69 74 65 6d 25 2a 32 34  | menu%!(item%*24|
00005cc0  2b 32 38 29 20 3d 20 66  6c 61 67 73 25 0d 20 8a  |+28) = flags%. .|
00005cd0  05 e1 0d 20 94 04 0d 20  9e 43 f4 20 2d 2d 2d 2d  |... ... .C. ----|
00005ce0  2d 2d 2d 2d 2d 2d 2d 2d  2d 2d 2d 2d 2d 2d 2d 2d  |----------------|
*
00005d10  2d 2d 2d 2d 2d 2d 2d 2d  2d 0d 20 a8 04 0d 20 b2  |---------. ... .|
00005d20  17 dd 20 a4 66 69 6c 65  6c 65 6e 28 20 66 69 6c  |.. .filelen( fil|
00005d30  65 24 20 29 0d 20 bc 12  ea 20 52 30 2c 52 34 2c  |e$ ). ... R0,R4,|
00005d40  66 6c 61 67 73 25 0d 20  c6 2d c8 99 20 22 58 4f  |flags%. .-.. "XO|
00005d50  53 5f 46 69 6c 65 22 2c  35 2c 66 69 6c 65 24 20  |S_File",5,file$ |
00005d60  b8 20 52 30 2c 2c 2c 2c  52 34 20 3b 20 66 6c 61  |. R0,,,,R4 ; fla|
00005d70  67 73 25 0d 20 d0 27 e7  20 28 66 6c 61 67 73 25  |gs%. .'. (flags%|
00005d80  20 80 20 31 29 20 84 20  28 20 52 30 20 3c 3e 20  | . 1) . ( R0 <> |
00005d90  31 20 29 20 8c 20 3d 20  2d 31 0d 20 da 07 3d 52  |1 ) . = -1. ..=R|
00005da0  34 0d 20 e4 04 0d 20 ee  1b dd 20 f2 6c 6f 61 64  |4. ... ... .load|
00005db0  28 20 66 69 6c 65 24 2c  20 61 64 64 72 25 20 29  |( file$, addr% )|
00005dc0  0d 20 f8 05 e1 0d 21 02  04 0d 21 0c 18 dd 20 a4  |. ....!...!... .|
00005dd0  6d 6f 64 65 76 61 72 28  20 69 6e 64 65 78 25 20  |modevar( index% |
00005de0  29 0d 21 16 0a ea 20 76  61 72 25 0d 21 20 2f c8  |).!... var%.! /.|
00005df0  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
00005e00  72 69 61 62 6c 65 22 2c  2d 31 2c 69 6e 64 65 78  |riable",-1,index|
00005e10  25 20 b8 20 2c 2c 76 61  72 25 0d 21 2a 09 3d 76  |% . ,,var%.!*.=v|
00005e20  61 72 25 0d 21 34 04 0d  21 3e 14 dd 20 a4 7a 65  |ar%.!4..!>.. .ze|
00005e30  72 6f 73 74 72 28 20 41  25 20 29 0d 21 48 08 ea  |rostr( A% ).!H..|
00005e40  20 41 24 0d 21 52 11 c8  95 20 28 3f 41 25 20 3e  | A$.!R... (?A% >|
00005e50  20 33 31 29 0d 21 5c 12  20 20 20 20 41 24 2b 3d  | 31).!\.    A$+=|
00005e60  bd 28 3f 41 25 29 0d 21  66 0d 20 20 20 20 41 25  |.(?A%).!f.    A%|
00005e70  2b 3d 31 0d 21 70 05 ce  0d 21 7a 07 3d 41 24 0d  |+=1.!p...!z.=A$.|
00005e80  21 84 04 0d 21 8e 3a dd  20 f2 72 69 73 63 70 63  |!...!.:. .riscpc|
00005e90  5f 66 69 6e 64 6d 6f 64  65 28 20 f8 20 78 25 2c  |_findmode( . x%,|
00005ea0  20 f8 20 79 25 2c 20 62  69 67 25 2c 20 6c 6f 67  | . y%, big%, log|
00005eb0  32 62 70 70 25 2c 20 65  69 67 25 20 29 0d 21 98  |2bpp%, eig% ).!.|
00005ec0  2f ea 20 69 6e 64 65 78  25 2c 62 78 25 2c 62 79  |/. index%,bx%,by|
00005ed0  25 2c 70 74 72 25 2c 64  6f 6e 65 25 2c 70 74 72  |%,ptr%,done%,ptr|
00005ee0  32 25 2c 6f 6b 25 2c 62  65 69 67 25 0d 21 a2 0f  |2%,ok%,beig%.!..|
00005ef0  62 78 25 3d 30 3a 62 79  25 3d 30 0d 21 ac 0c 69  |bx%=0:by%=0.!..i|
00005f00  6e 64 65 78 25 3d 30 0d  21 b6 05 f5 0d 21 c0 42  |ndex%=0.!....!.B|
00005f10  20 20 20 20 c8 99 20 22  4f 53 5f 53 63 72 65 65  |    .. "OS_Scree|
00005f20  6e 4d 6f 64 65 22 2c 32  2c 2c 69 6e 64 65 78 25  |nMode",2,,index%|
00005f30  2c 2c 2c 2c 62 75 66 25  2c 31 30 30 20 b8 20 2c  |,,,,buf%,100 . ,|
00005f40  64 6f 6e 65 25 2c 2c 2c  2c 2c 70 74 72 25 0d 21  |done%,,,,,ptr%.!|
00005f50  ca 12 20 20 20 20 70 74  72 32 25 3d 62 75 66 25  |..    ptr2%=buf%|
00005f60  0d 21 d4 17 20 20 20 20  c8 95 20 70 74 72 32 25  |.!..    .. ptr2%|
00005f70  20 3c 20 70 74 72 25 0d  21 de 15 20 20 20 20 20  | < ptr%.!..     |
00005f80  20 20 20 69 6e 64 65 78  25 2b 3d 31 0d 21 e8 23  |   index%+=1.!.#|
00005f90  20 20 20 20 20 20 20 20  e7 20 28 70 74 72 32 25  |        . (ptr2%|
00005fa0  21 34 20 80 20 32 35 35  29 20 3d 20 31 20 8c 0d  |!4 . 255) = 1 ..|
00005fb0  21 f2 32 20 20 20 20 20  20 20 20 20 20 20 20 f4  |!.2            .|
00005fc0  20 66 69 67 75 72 65 20  6f 75 74 20 72 61 74 69  | figure out rati|
00005fd0  6f 20 6f 66 20 65 69 67  65 6e 66 61 63 74 6f 72  |o of eigenfactor|
00005fe0  73 0d 21 fc 3d 20 20 20  20 20 20 20 20 20 20 20  |s.!.=           |
00005ff0  20 62 65 69 67 25 3d 31  20 2b 20 a8 28 20 ab 28  | beig%=1 + .( .(|
00006000  20 70 74 72 32 25 21 31  32 20 2f 20 70 74 72 32  | ptr2%!12 / ptr2|
00006010  25 21 38 20 29 20 2f 20  ab 28 32 29 20 29 0d 22  |%!8 ) / .(2) )."|
00006020  06 08 20 20 20 20 0d 22  10 51 20 20 20 20 20 20  |..    .".Q      |
00006030  20 20 20 20 20 20 e7 20  70 74 72 32 25 21 31 36  |      . ptr2%!16|
00006040  20 3d 20 6c 6f 67 32 62  70 70 25 20 80 20 70 74  | = log2bpp% . pt|
00006050  72 32 25 21 38 3e 78 25  20 80 20 70 74 72 32 25  |r2%!8>x% . ptr2%|
00006060  21 31 32 3e 79 25 20 80  20 62 65 69 67 25 20 3d  |!12>y% . beig% =|
00006070  20 65 69 67 25 20 8c 0d  22 1a 1c 20 20 20 20 20  | eig% .."..     |
00006080  20 20 20 20 20 20 20 20  20 20 20 e7 20 62 69 67  |           . big|
00006090  25 20 8c 0d 22 24 38 20  20 20 20 20 20 20 20 20  |% .."$8         |
000060a0  20 20 20 20 20 20 20 20  20 20 20 6f 6b 25 20 3d  |           ok% =|
000060b0  20 70 74 72 32 25 21 38  3e 62 78 25 20 80 20 70  | ptr2%!8>bx% . p|
000060c0  74 72 32 25 21 31 32 3e  62 79 25 0d 22 2e 15 20  |tr2%!12>by%.".. |
000060d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 cc  |               .|
000060e0  0d 22 38 38 20 20 20 20  20 20 20 20 20 20 20 20  |."88            |
000060f0  20 20 20 20 20 20 20 20  e7 20 62 78 25 3d 30 20  |        . bx%=0 |
00006100  62 78 25 3d 70 74 72 32  25 21 38 3a 62 79 25 3d  |bx%=ptr2%!8:by%=|
00006110  70 74 72 32 25 21 31 32  0d 22 42 38 20 20 20 20  |ptr2%!12."B8    |
00006120  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
00006130  6f 6b 25 20 3d 20 70 74  72 32 25 21 38 3c 62 78  |ok% = ptr2%!8<bx|
00006140  25 20 80 20 70 74 72 32  25 21 31 32 3c 62 79 25  |% . ptr2%!12<by%|
00006150  0d 22 4c 15 20 20 20 20  20 20 20 20 20 20 20 20  |."L.            |
00006160  20 20 20 20 cd 0d 22 56  32 20 20 20 20 20 20 20  |    .."V2       |
00006170  20 20 20 20 20 20 20 20  20 e7 20 6f 6b 25 20 62  |         . ok% b|
00006180  78 25 3d 70 74 72 32 25  21 38 3a 62 79 25 3d 70  |x%=ptr2%!8:by%=p|
00006190  74 72 32 25 21 31 32 0d  22 60 11 20 20 20 20 20  |tr2%!12."`.     |
000061a0  20 20 20 20 20 20 20 cd  0d 22 6a 0d 20 20 20 20  |       .."j.    |
000061b0  20 20 20 20 cd 0d 22 74  1b 20 20 20 20 20 20 20  |    .."t.       |
000061c0  20 70 74 72 32 25 20 2b  3d 20 21 70 74 72 32 25  | ptr2% += !ptr2%|
000061d0  0d 22 7e 09 20 20 20 20  ce 0d 22 88 10 fd 20 64  |."~.    .."... d|
000061e0  6f 6e 65 25 20 3c 3e 20  30 0d 22 92 0a 78 25 3d  |one% <> 0."..x%=|
000061f0  62 78 25 0d 22 9c 0a 79  25 3d 62 79 25 0d 22 a6  |bx%."..y%=by%.".|
00006200  05 e1 0d 22 b0 04 0d 22  ba 33 dd 20 a4 61 72 63  |..."...".3. .arc|
00006210  5f 66 69 6e 64 6d 6f 64  65 28 20 78 25 2c 20 79  |_findmode( x%, y|
00006220  25 2c 20 62 69 67 25 2c  20 6c 6f 67 32 62 70 70  |%, big%, log2bpp|
00006230  25 2c 20 65 69 67 25 20  29 0d 22 c4 37 ea 20 6d  |%, eig% ).".7. m|
00006240  6f 64 65 25 2c 62 78 25  2c 62 79 25 2c 6f 6b 25  |ode%,bx%,by%,ok%|
00006250  2c 62 6c 6f 67 32 62 70  70 25 2c 66 6c 61 67 73  |,blog2bpp%,flags|
00006260  25 2c 62 6d 6f 64 65 25  2c 65 78 25 2c 65 79 25  |%,bmode%,ex%,ey%|
00006270  0d 22 ce 26 ea 20 6e 65  78 74 25 2c 66 72 65 65  |.".&. next%,free|
00006280  25 2c 73 63 72 65 65 6e  73 69 7a 65 25 2c 6e 65  |%,screensize%,ne|
00006290  77 73 69 7a 65 25 0d 22  d8 09 62 78 25 3d 30 0d  |wsize%."..bx%=0.|
000062a0  22 e2 09 62 79 25 3d 30  0d 22 ec 0f 62 6d 6f 64  |"..by%=0."..bmod|
000062b0  65 25 20 3d 20 2d 31 0d  22 f6 2b c8 99 20 22 57  |e% = -1.".+.. "W|
000062c0  69 6d 70 5f 53 6c 6f 74  53 69 7a 65 22 2c 2d 31  |imp_SlotSize",-1|
000062d0  2c 2d 31 20 b8 20 2c 6e  65 78 74 25 2c 66 72 65  |,-1 . ,next%,fre|
000062e0  65 25 0d 23 00 2c c8 99  20 22 4f 53 5f 52 65 61  |e%.#.,.. "OS_Rea|
000062f0  64 44 79 6e 61 6d 69 63  41 72 65 61 22 2c 32 20  |dDynamicArea",2 |
00006300  b8 20 2c 73 63 72 65 65  6e 73 69 7a 65 25 0d 23  |. ,screensize%.#|
00006310  0a 26 6e 65 77 73 69 7a  65 25 20 3d 20 73 63 72  |.&newsize% = scr|
00006320  65 65 6e 73 69 7a 65 25  2b 6e 65 78 74 25 2b 66  |eensize%+next%+f|
00006330  72 65 65 25 0d 23 14 2b  e7 20 6e 65 77 73 69 7a  |ree%.#.+. newsiz|
00006340  65 25 3e 34 38 30 2a 31  30 32 34 20 8c 20 6e 65  |e%>480*1024 . ne|
00006350  77 73 69 7a 65 25 3d 34  38 30 2a 31 30 32 34 0d  |wsize%=480*1024.|
00006360  23 1e 4f e7 20 6e 65 77  73 69 7a 65 25 20 3e 20  |#.O. newsize% > |
00006370  73 63 72 65 65 6e 73 69  7a 65 25 20 8c 20 c8 99  |screensize% . ..|
00006380  20 22 4f 53 5f 43 68 61  6e 67 65 44 79 6e 61 6d  | "OS_ChangeDynam|
00006390  69 63 41 72 65 61 22 2c  32 2c 6e 65 77 73 69 7a  |icArea",2,newsiz|
000063a0  65 25 2d 73 63 72 65 65  6e 73 69 7a 65 25 0d 23  |e%-screensize%.#|
000063b0  28 13 e3 20 6d 6f 64 65  25 3d 30 20 b8 20 31 32  |(.. mode%=0 . 12|
000063c0  37 0d 23 32 41 20 20 20  20 c8 99 20 22 58 4f 53  |7.#2A    .. "XOS|
000063d0  5f 52 65 61 64 4d 6f 64  65 56 61 72 69 61 62 6c  |_ReadModeVariabl|
000063e0  65 22 2c 6d 6f 64 65 25  2c 31 30 20 b8 20 2c 2c  |e",mode%,10 . ,,|
000063f0  62 6c 6f 67 32 62 70 70  25 20 3b 20 66 6c 61 67  |blog2bpp% ; flag|
00006400  73 25 0d 23 3c 33 20 20  20 20 e7 20 28 66 6c 61  |s%.#<3    . (fla|
00006410  67 73 25 20 80 20 32 29  20 3d 20 30 20 80 20 62  |gs% . 2) = 0 . b|
00006420  6c 6f 67 32 62 70 70 25  20 3d 20 6c 6f 67 32 62  |log2bpp% = log2b|
00006430  70 70 25 20 8c 0d 23 46  34 20 20 20 20 20 20 20  |pp% ..#F4       |
00006440  20 c8 99 20 22 4f 53 5f  52 65 61 64 4d 6f 64 65  | .. "OS_ReadMode|
00006450  56 61 72 69 61 62 6c 65  22 2c 6d 6f 64 65 25 2c  |Variable",mode%,|
00006460  34 20 b8 20 2c 2c 65 78  25 0d 23 50 34 20 20 20  |4 . ,,ex%.#P4   |
00006470  20 20 20 20 20 c8 99 20  22 4f 53 5f 52 65 61 64  |     .. "OS_Read|
00006480  4d 6f 64 65 56 61 72 69  61 62 6c 65 22 2c 6d 6f  |ModeVariable",mo|
00006490  64 65 25 2c 35 20 b8 20  2c 2c 65 79 25 0d 23 5a  |de%,5 . ,,ey%.#Z|
000064a0  20 20 20 20 20 20 20 20  20 e7 20 28 65 78 25 2d  |         . (ex%-|
000064b0  65 79 25 29 20 3d 20 65  69 67 25 20 8c 0d 23 64  |ey%) = eig% ..#d|
000064c0  42 20 20 20 20 20 20 20  20 20 20 20 20 c8 99 20  |B            .. |
000064d0  22 4f 53 5f 52 65 61 64  4d 6f 64 65 56 61 72 69  |"OS_ReadModeVari|
000064e0  61 62 6c 65 22 2c 6d 6f  64 65 25 2c 31 31 20 b8  |able",mode%,11 .|
000064f0  20 2c 2c 65 78 25 20 3a  20 65 78 25 2b 3d 31 0d  | ,,ex% : ex%+=1.|
00006500  23 6e 42 20 20 20 20 20  20 20 20 20 20 20 20 c8  |#nB            .|
00006510  99 20 22 4f 53 5f 52 65  61 64 4d 6f 64 65 56 61  |. "OS_ReadModeVa|
00006520  72 69 61 62 6c 65 22 2c  6d 6f 64 65 25 2c 31 32  |riable",mode%,12|
00006530  20 b8 20 2c 2c 65 79 25  20 3a 20 65 79 25 2b 3d  | . ,,ey% : ey%+=|
00006540  31 0d 23 78 3b 20 20 20  20 20 20 20 20 20 20 20  |1.#x;           |
00006550  20 c8 99 20 22 4f 53 5f  52 65 61 64 4d 6f 64 65  | .. "OS_ReadMode|
00006560  56 61 72 69 61 62 6c 65  22 2c 6d 6f 64 65 25 2c  |Variable",mode%,|
00006570  30 20 b8 20 2c 2c 66 6c  61 67 73 25 0d 23 82 33  |0 . ,,flags%.#.3|
00006580  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 65 78  |            . ex|
00006590  25 3e 78 25 20 80 20 65  79 25 3e 79 25 20 80 20  |%>x% . ey%>y% . |
000065a0  28 66 6c 61 67 73 25 80  31 35 29 3d 30 20 8c 0d  |(flags%.15)=0 ..|
000065b0  23 8c 1c 20 20 20 20 20  20 20 20 20 20 20 20 20  |#..             |
000065c0  20 20 20 e7 20 62 69 67  25 20 8c 0d 23 96 2f 20  |   . big% ..#./ |
000065d0  20 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |                |
000065e0  20 20 20 6f 6b 25 20 3d  20 65 78 25 3e 62 78 25  |   ok% = ex%>bx%|
000065f0  20 80 20 65 79 25 3e 62  79 25 0d 23 a0 15 20 20  | . ey%>by%.#..  |
00006600  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cc 0d  |              ..|
00006610  23 aa 2f 20 20 20 20 20  20 20 20 20 20 20 20 20  |#./             |
00006620  20 20 20 20 20 20 20 6f  6b 25 20 3d 20 65 78 25  |       ok% = ex%|
00006630  3c 62 78 25 20 80 20 65  79 25 3c 62 79 25 0d 23  |<bx% . ey%<by%.#|
00006640  b4 25 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |.%              |
00006650  20 20 20 20 20 20 e7 20  62 78 25 3d 30 20 6f 6b  |      . bx%=0 ok|
00006660  25 3d b9 0d 23 be 15 20  20 20 20 20 20 20 20 20  |%=..#..         |
00006670  20 20 20 20 20 20 20 cd  0d 23 c8 1b 20 20 20 20  |       ..#..    |
00006680  20 20 20 20 20 20 20 20  20 20 20 20 e7 20 6f 6b  |            . ok|
00006690  25 20 8c 0d 23 d2 3a 20  20 20 20 20 20 20 20 20  |% ..#.:         |
000066a0  20 20 20 20 20 20 20 20  20 20 20 c8 99 20 22 4f  |           .. "O|
000066b0  53 5f 43 68 65 63 6b 4d  6f 64 65 56 61 6c 69 64  |S_CheckModeValid|
000066c0  22 2c 6d 6f 64 65 25 20  b8 20 6f 6b 25 0d 23 dc  |",mode% . ok%.#.|
000066d0  3d 20 20 20 20 20 20 20  20 20 20 20 20 20 20 20  |=               |
000066e0  20 20 20 20 20 e7 20 6f  6b 25 3e 3d 30 20 62 78  |     . ok%>=0 bx|
000066f0  25 3d 65 78 25 3a 62 79  25 3d 65 79 25 3a 62 6d  |%=ex%:by%=ey%:bm|
00006700  6f 64 65 25 3d 6d 6f 64  65 25 0d 23 e6 15 20 20  |ode%=mode%.#..  |
00006710  20 20 20 20 20 20 20 20  20 20 20 20 20 20 cd 0d  |              ..|
00006720  23 f0 11 20 20 20 20 20  20 20 20 20 20 20 20 cd  |#..            .|
00006730  0d 23 fa 0d 20 20 20 20  20 20 20 20 cd 0d 24 04  |.#..        ..$.|
00006740  09 20 20 20 20 cd 0d 24  0e 05 ed 0d 24 18 4c e7  |.    ..$....$.L.|
00006750  20 6e 65 77 73 69 7a 65  25 3c 3e 73 63 72 65 65  | newsize%<>scree|
00006760  6e 73 69 7a 65 25 20 c8  99 20 22 4f 53 5f 43 68  |nsize% .. "OS_Ch|
00006770  61 6e 67 65 44 79 6e 61  6d 69 63 41 72 65 61 22  |angeDynamicArea"|
00006780  2c 32 2c 73 63 72 65 65  6e 73 69 7a 65 25 2d 6e  |,2,screensize%-n|
00006790  65 77 73 69 7a 65 25 0d  24 22 0b 3d 62 6d 6f 64  |ewsize%.$".=bmod|
000067a0  65 25 0d 24 2c 04 0d ff                           |e%.$,...|
000067a8