10
20
30
40
50
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
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