mirror of
https://github.com/irmen/prog8.git
synced 2024-12-18 07:29:36 +00:00
217 lines
5.2 KiB
Lua
217 lines
5.2 KiB
Lua
%import monogfx
|
|
%import textio
|
|
%import math
|
|
|
|
%option no_sysinit
|
|
%zeropage basicsafe
|
|
|
|
|
|
main {
|
|
const ubyte FILL_STACK_BANK = 2
|
|
|
|
sub start() {
|
|
monogfx.lores()
|
|
demofill()
|
|
sys.wait(2*60)
|
|
monogfx.hires()
|
|
demo1()
|
|
sys.wait(2*60)
|
|
demo2()
|
|
|
|
monogfx.textmode()
|
|
txt.print("done!\n")
|
|
}
|
|
|
|
sub demofill() {
|
|
monogfx.circle(160, 120, 110, true)
|
|
monogfx.rect(180, 5, 25, 190, true)
|
|
monogfx.line(100, 150, 240, 10, true)
|
|
monogfx.line(101, 150, 241, 10, true)
|
|
monogfx.drawmode(monogfx.MODE_STIPPLE)
|
|
sys.wait(60)
|
|
monogfx.fill(100,100,true, FILL_STACK_BANK)
|
|
}
|
|
|
|
sub demo1() {
|
|
uword yy = 10
|
|
uword xx
|
|
uword cnt
|
|
|
|
monogfx.drawmode(monogfx.MODE_STIPPLE)
|
|
monogfx.disc(320,240,200,true)
|
|
for xx in 0 to 639 {
|
|
monogfx.vertical_line(xx, 0, 480, true)
|
|
}
|
|
for xx in 0 to 639 {
|
|
monogfx.vertical_line(xx, 0, 480, false)
|
|
}
|
|
|
|
xx=monogfx.width/2
|
|
yy=10
|
|
monogfx.drawmode(monogfx.MODE_NORMAL)
|
|
linesy()
|
|
linesx()
|
|
monogfx.drawmode(monogfx.MODE_STIPPLE)
|
|
linesy()
|
|
linesx()
|
|
|
|
|
|
|
|
sub linesx() {
|
|
repeat 8 {
|
|
monogfx.horizontal_line(10,yy,300,true)
|
|
yy++
|
|
}
|
|
yy+=4
|
|
|
|
repeat 8 {
|
|
monogfx.line(10,yy,309,yy,false)
|
|
yy++
|
|
}
|
|
yy+=4
|
|
|
|
repeat 8 {
|
|
for cnt in 10 to 309 {
|
|
monogfx.plot(cnt, yy, true)
|
|
}
|
|
yy+=1
|
|
}
|
|
yy += 4
|
|
|
|
repeat 8 {
|
|
monogfx.horizontal_line(10,yy,100,true)
|
|
yy++
|
|
}
|
|
yy+=4
|
|
|
|
repeat 8 {
|
|
monogfx.line(10,yy,109,yy,false)
|
|
yy++
|
|
}
|
|
yy+=4
|
|
|
|
repeat 8 {
|
|
for cnt in 10 to 109 {
|
|
monogfx.plot(cnt, yy, true)
|
|
}
|
|
yy++
|
|
}
|
|
yy+=4
|
|
}
|
|
|
|
sub linesy() {
|
|
repeat 8 {
|
|
monogfx.vertical_line(xx,10,300,true)
|
|
xx++
|
|
}
|
|
xx+=4
|
|
|
|
repeat 8 {
|
|
monogfx.line(xx,10, xx, 309, false)
|
|
xx++
|
|
}
|
|
xx+=4
|
|
|
|
repeat 8 {
|
|
for cnt in 10 to 309 {
|
|
monogfx.plot(xx, cnt, true)
|
|
}
|
|
xx+=1
|
|
}
|
|
xx += 4
|
|
|
|
repeat 8 {
|
|
monogfx.vertical_line(xx,10,100,true)
|
|
xx++
|
|
}
|
|
xx+=4
|
|
|
|
repeat 8 {
|
|
monogfx.line(xx,10,xx,109,false)
|
|
xx++
|
|
}
|
|
xx+=4
|
|
|
|
repeat 8 {
|
|
for cnt in 10 to 109 {
|
|
monogfx.plot(xx, cnt, true)
|
|
}
|
|
xx++
|
|
}
|
|
xx+=4
|
|
}
|
|
}
|
|
|
|
sub demo2 () {
|
|
monogfx.text_charset(3)
|
|
monogfx.lores()
|
|
draw()
|
|
sys.wait(100)
|
|
monogfx.hires()
|
|
draw()
|
|
sys.wait(100)
|
|
monogfx.drawmode(monogfx.MODE_INVERT)
|
|
repeat 7 {
|
|
for cx16.r8 in 100 to 400 {
|
|
monogfx.vertical_line(cx16.r8, 0, 400, true)
|
|
}
|
|
}
|
|
}
|
|
|
|
sub draw() {
|
|
|
|
monogfx.rect(10,10, 1, 1, true)
|
|
monogfx.rect(20,10, 2, 1, true)
|
|
monogfx.rect(30,10, 3, 1, true)
|
|
monogfx.rect(40,10, 1, 2, true)
|
|
monogfx.rect(50,10, 1, 3, true)
|
|
monogfx.rect(60,10, 2, 2, true)
|
|
monogfx.rect(70,10, 3, 3, true)
|
|
monogfx.rect(80,10, 4, 4, true)
|
|
monogfx.rect(90,10, 5, 5, true)
|
|
monogfx.rect(100,10, 8, 8, true)
|
|
monogfx.rect(110,10, 20, 5, true)
|
|
monogfx.rect(80, 80, 200, 140, true)
|
|
|
|
monogfx.fillrect(10,40, 1, 1, true)
|
|
monogfx.fillrect(20,40, 2, 1, true)
|
|
monogfx.fillrect(30,40, 3, 1, true)
|
|
monogfx.fillrect(40,40, 1, 2, true)
|
|
monogfx.fillrect(50,40, 1, 3, true)
|
|
monogfx.fillrect(60,40, 2, 2, true)
|
|
monogfx.fillrect(70,40, 3, 3, true)
|
|
monogfx.fillrect(80,40, 4, 4, true)
|
|
monogfx.fillrect(90,40, 5, 5, true)
|
|
monogfx.fillrect(100,40, 8, 8, true)
|
|
monogfx.fillrect(110,40, 20, 5, true)
|
|
monogfx.fillrect(82, 82, 200-4, 140-4, true)
|
|
|
|
ubyte i
|
|
for i in 0 to 254 step 4 {
|
|
uword x1 = ((monogfx.width-256)/2 as uword) + math.sin8u(i)
|
|
uword y1 = (monogfx.height-128)/2 + math.cos8u(i)/2
|
|
uword x2 = ((monogfx.width-64)/2 as uword) + math.sin8u(i)/4
|
|
uword y2 = (monogfx.height-64)/2 + math.cos8u(i)/4
|
|
monogfx.line(x1, y1, x2, y2, true)
|
|
}
|
|
|
|
sys.wait(60)
|
|
monogfx.clear_screen(true)
|
|
monogfx.clear_screen(false)
|
|
|
|
ubyte radius
|
|
|
|
for radius in 110 downto 8 step -4 {
|
|
monogfx.circle(monogfx.width/2, (monogfx.height/2 as ubyte), radius, true)
|
|
}
|
|
|
|
monogfx.disc(monogfx.width/2, monogfx.height/2, 80, true)
|
|
|
|
ubyte tp
|
|
for tp in 0 to 15 {
|
|
monogfx.text(19+tp, 20+tp*11, true, sc:"ScreenCODE text! 1234![]<>#$%&*()")
|
|
}
|
|
|
|
}
|
|
}
|