Code: Select all
REM Waving Flag
SCRw% = 640 : SCRh% = 384
VDU 23,22,SCRw%;SCRh%;8,16,16,0
*REFRESH OFF
PROCunionflag(SCRw% * 2, SCRh% * 2)
DIM BMP{bfType{l&,h&}, bfSize%, bfReserved%, bfOffBits%, \
\ biSize%, biWidth%, biHeight%, biPlanes{l&,h&}, biBitCount{l&,h&}, \
\ biCompression%, biSizeImage%, biXPelsPerMeter%, biYPelsPerMeter%, \
\ biClrUsed%, biClrImportant%, rgb&(SCRh%-1,SCRw%-1,2)}
*HEX 64
OSCLI "LOAD """ + @tmp$ + "unionflag.bmp"" " + STR$~BMP{} + " +" + STR$~DIM(BMP{})
ORIGIN 128,64 : GCOL 1 : OFF
phase=0
REPEAT
CLS
phase += 0.075
FOR Y% = 6 TO SCRh%-6 STEP 12
FOR X% = 6 TO SCRw%-6 STEP 12
a = phase+2*PI*(X%/SCRh%+Y%/SCRh%)
xs = 20*SIN(a) : ys=20*COS(a)
COLOUR 1,BMP.rgb&(Y%,X%,2),BMP.rgb&(Y%,X%,1),BMP.rgb&(Y%,X%,0)
CIRCLE FILL X%*1.6+xs,Y%*1.6+ys,6
NEXT
NEXT Y%
*REFRESH
UNTIL FALSE
REM Draw a Union Flag
DEF PROCunionflag(w,h) : LOCAL d,ho,vo : d = SQR(w^2 + h^2)
ho = 0.2 * h * w / d : vo = 0.2 * h * h / d
GCOL 12 : RECTANGLE FILL 0,0,w,h
GCOL 15 : REM St.Andrew's Cross:
MOVE 0,0 : MOVE 0,vo : PLOT 85,ho,0 : PLOT 85,w-ho,h : PLOT 85,w,h-vo : PLOT 85,w,h
MOVE 0,h : MOVE 0,h-vo : PLOT 85,ho,h : PLOT 85,w-ho,0 : PLOT 85,w,vo : PLOT 85,w,0
GCOL 1 : REM St.Patrick's Cross:
MOVE 0,0 : MOVE ho*2/3,0 : PLOT 85,w/2,h/2 : PLOT 85,w/2+ho*2/3,h/2
MOVE 0,h : MOVE 0,h-vo*2/3 : PLOT 85,w/2,h/2 : PLOT 85,w/2,h/2-vo*2/3
MOVE w,h : MOVE w-ho*2/3,h : PLOT 85,w/2,h/2 : PLOT 85,w/2-ho*2/3,h/2
MOVE w,0 : MOVE w,vo*2/3 : PLOT 85,w/2,h/2 : PLOT 85,w/2,h/2+vo*2/3
REM St.George's Cross:
GCOL 15 : RECTANGLE FILL 0,h/2-h/6,w,h/3 : RECTANGLE FILL w/2-h/6,0,h/3,h
GCOL 1 : RECTANGLE FILL 0,h/2-h/10,w,h/5 : RECTANGLE FILL w/2-h/10,0,h/5,h
OSCLI "GSAVE """ + @tmp$ + "unionflag"""
ENDPROC
https://youtu.be/XBER596Y3k8