10 REM > WinDemo
   20 REM Windows Demonstration
   30 REM By Alan Blundell
   40 REM For Master Series with SWR Windows
   50 REM (C) BAU July 1990, JGH Oct 2011
   60 :
   70 MODE 1
   80 PROCinit
   90 PROCcursor(0)
  100 FOR loop%=10 TO 1 STEP -1
  110   GCOL 0,loop%MOD4
  120   MOVE 0,loop%*100
  130   MOVE loop%*128,0
  140   PLOT 85,1280,1024
  150 NEXT
  160 REPEAT
  170   PROCwin_title("BAU Windows")
  180   PROCwin_colours(0,3,0,1,2,0)
  190   PROCwin_open(9,2,11,26,4)
  200   PRINT '"A sideways RAM utility"'
  210   PROCprint("Some key features are:")
  220   PROCwin_colours(2,0,1,0,3,0)
  230   PROCwin_open(6,8,28,37,11)
  240   PRINT
  250   PROCprint("- works in any MODE")
  260   PROCprint("- windows for text + graphics")
  270   PRINT "- switch between multiple"
  280   PROCprint("  active windows")
  290   PROCprint("- works with scrolled screens")
  300   PROCprint("- works with shadow screens")
  310   PROCprint("- compresses stored data")
  320   PROCprint("- accessible by OSWORD call")
  330   PRINT "- takes up no user RAM";
  340   PROCpause(5)
  350   *WBACK
  360   PROCprint("Simple to use . .")
  370   PROCwin_colours(3,0,0,2,0,3)
  380   PROCwin_open(5,0,29,39,18)
  390   PROCprint(">*HELP WINDOWS")
  400   *HELP WINDOWS
  410   PROCpause(8)
  420   PROCwin_closeall
  430   PROCwin_colours(0,3,2,0,1,0)
  440   PROCwin_open(6,11,3,29,1)
  450   PRINT '"7 styles available:";
  460   PROCwin_open(3,0,15,16,5)
  470   PRINT"Style 3"
  480   PRINT '"(this window has"
  490   PRINT '"been opened"
  500   PRINT '"but has not"
  510   PRINT '"been cleared)"
  520   PROCpause(3)
  530   FOR style=4 TO 9
  540     L=(style-3)*3
  550     R=L+9+RND(8)
  560     T=(style*2)-1-((style-7)*(style>7))
  570     B=T+10
  580     PROCwin_open(style,L,B,R,T)
  590     PROCprint("Style "+STR$style)
  600   NEXT
  610   PROCpause(3)
  620   PROCwin_closeall
  630   PROCwin_open(6,1,3,28,1)
  640   PRINT '"Switch between windows . .";
  650   PROCwin_title("Two active windows!")
  660   PROCwin_colours(0,2,3,0,1,0)
  670   PROCwin_open(7,1,30,18,10)
  680   PROCwin_colours(3,0,0,3,0,2)
  690   PROCwin_open(9,20,26,38,6)
  700   step=0
  710   PROCtwin(4,250,350)
  720   FOR loop=0 TO 10*PI STEP PI/50
  730     xcoord=250+((110+step)*COS(loop+41))*SIN(loop*3)
  740     ycoord=350+((80+step)*SIN(loop+34))*SIN(loop*4)
  750     PROCtwin(5,xcoord,ycoord)
  760     step=step+0.4
  770   NEXT
  780   PROCpause(5)
  790   PROCwin_closeall
  800   PROCwin_colours(0,3,0,0,0,0)
  810   PROCwin_open(4,0,9,35,1)
  820   PROCprint("Room for plenty of windows")
  830   PRINT ">*WFREE"
  840   *WFREE
  850   PRINT
  860   PROCpause(3)
  870   PROCprint(">PROCwin_open(4,5,20,39,9)")
  880   PROCwin_colours(2,0,0,0,0,0)
  890   PROCwin_open(4,5,20,39,9)
  900   PROCpause(1)
  910   PRINT ">*WFREE"
  920   *WFREE
  930   PROCpause(2)
  940   PROCwin_colours(0,1,0,0,0,0)
  950   PROCwin_open(4,10,23,39,13)
  960   PROCpause(2)
  970   PROCprint("Of course, windows can overlap")
  980   PROCwin_colours(1,0,0,0,0,0)
  990   PROCwin_open(4,20,22,36,15)
 1000   PROCprint(">*WFREE")
 1010   *WFREE
 1020   PROCpause(2)
 1030   PROCwin_colours(3,0,0,2,0,2)
 1040   PROCwin_title("BAU Windows")
 1050   PROCwin_open(8,4,29,21,27)
 1060   PROCcursor(1)
 1070   PRINT '" Press a key . ";
 1080   IF INKEY(500)>0 PROCfinish
 1090   PROCcursor(0)
 1100   PROCwin_closeall
 1110 UNTIL 0
 1120 :
 1130 DEFPROCfinish
 1140 PROCcursor(0)
 1150 PRINT ''"   End of demo."
 1160 PROCwin_release
 1170 PROCwin_closeall
 1180 PROCcursor(1)
 1190 END
 1200 :
 1210 DEFPROCpause(seconds%)
 1220 IFINKEY(seconds%*100)
 1230 ENDPROC
 1240 :
 1250 DEFPROCprint(text$)
 1260 PRINTtext$'
 1270 PROCpause(2)
 1280 ENDPROC
 1290 :
 1300 DEFPROCcursor(on%)
 1310 VDU23,1,on%;0;0;0;
 1320 ENDPROC
 1330 :
 1340 DEFPROCtwin(a%,x%,y%)
 1350 VDU25,a%,x%;y%;:*WBACK
 1360 VDU25,a%,x%;y%;:*WFORE
 1370 ENDPROC
 1380 :
 1390 DEFPROCinit
 1400 REM Set block% to 12+(max length of title$)
 1410 DIM block% 47:X%=block%:Y%=X%DIV256
 1420 *WCLEAR
 1430 ENDPROC
 1440 :
 1450 DEFPROCwin_closeall
 1460 !X%=&00404:A%=193:CALL&FFF1
 1470 ENDPROC
 1480 :
 1490 DEFPROCwin_close
 1500 !X%=&010404:A%=193:CALL&FFF1
 1510 ENDPROC
 1520 :
 1530 DEFPROCwin_release
 1540 !X%=&020404:A%=193:CALL&FFF1
 1550 ENDPROC
 1560 :
 1570 DEFPROCwin_title(title$)
 1580 $(X%+14)=title$
 1590 ENDPROC
 1600 :
 1610 DEFPROCwin_colours(fore%,back%,barcol%,barback%,edgecol%,edgeback%)
 1620 X%?8=fore%:X%?9=back%:X%?10=barcol%:X%?11=barback%
 1630 X%?12=edgecol%:X%?13=edgeback%
 1640 ENDPROC
 1650 :
 1660 DEFPROCwin_open(action%,left%,bottom%,right%,top%)
 1670 !X%=15+LEN$(X%+14):X%?1=4:X%?2=action%
 1680 X%?4=left%:X%?5=bottom%:X%?6=right%:X%?7=top%
 1690 A%=193:CALL&FFF1
 1700 ENDPROC