Shop OBEX P1 Docs P2 Docs Learn Events
Code with no scroller test... — Parallax Forums

Code with no scroller test...

potatoheadpotatohead Posts: 10,261
edited 2010-08-16 12:24 in General Discussion
Ok, I hate the code window deal. We have browser scroll bars for that.

So...

''***************************************
''* Graphics Demo *
''* Author: Chip Gracey *
''* Copyright (c) 2005 Parallax, Inc. *
''* See end of file for terms of use. *
''***************************************


CON

_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
_stack = ($3000 + $3000 + 100) >> 2 'accomodate display memory and stack

x_tiles = 16
y_tiles = 12

paramcount = 14
bitmap_base = $2000
display_base = $5000

lines = 5
thickness = 2


VAR

long mousex, mousey

long tv_status '0/1/2 = off/visible/invisible read-only
long tv_enable '0/? = off/on write-only
long tv_pins '%ppmmm = pins write-only
long tv_mode '%ccinp = chroma,interlace,ntsc/pal,swap write-only
long tv_screen 'pointer to screen (words) write-only
long tv_colors 'pointer to colors (longs) write-only
long tv_hc 'horizontal cells write-only
long tv_vc 'vertical cells write-only
long tv_hx 'horizontal cell expansion write-only
long tv_vx 'vertical cell expansion write-only
long tv_ho 'horizontal offset write-only
long tv_vo 'vertical offset write-only
long tv_broadcast 'broadcast frequency (Hz) write-only
long tv_auralcog 'aural fm cog write-only

word screen[x_tiles * y_tiles]
long colors[64]

byte x[lines]
byte y[lines]
byte xs[lines]
byte ys[lines]


OBJ

tv : "tv"
gr : "graphics"
mouse : "mouse"


PUB start | i, j, k, kk, dx, dy, pp, pq, rr, numx, numchr

'start tv
longmove(@tv_status, @tvparams, paramcount)
tv_screen := @screen
tv_colors := @colors
tv.start(@tv_status)

'init colors
repeat i from 0 to 63
colors := $00001010 * (i+4) & $F + $2B060C02

'init tile screen
repeat dx from 0 to tv_hc - 1
repeat dy from 0 to tv_vc - 1
screen[dy * tv_hc + dx] := display_base >> 6 + dy + dx * tv_vc + ((dy & $3F) << 10)

'init bouncing lines
i := 1001
j := 123123
k := 8776434
repeat i from 0 to lines - 1
x := ?j // 64
y := k? // 48
repeat until xs := k? ~> 29
repeat until ys := ?j ~> 29

'start and setup graphics
gr.start
gr.setup(16, 12, 128, 96, bitmap_base)

'start mouse
mouse.start(24, 25)

repeat

'clear bitmap
gr.clear

'draw spinning triangles
gr.colorwidth(3,0)
repeat i from 1 to 8
gr.vec(0, 0, (k & $7F) << 3 + i << 5, k << 6 + i << 8, @vecdef)

'draw expanding mouse crosshairs
gr.colorwidth(2,k>>2)
mousex := mousex + mouse.delta_x #> -128 <# 127
mousey := mousey + mouse.delta_y #> -96 <# 95
gr.pix(mousex, mousey, k>>4 & $7, @pixdef)

'if left mouse button pressed, throw snowballs
if mouse.button(0)
gr.width(pq & $F)
gr.color(2)
pp := (pq & $F)*(pq & $F) + 5
pq++
gr.arc(mousex, mousey, pp, pp>>1, -k * 200, $200, 8, 0)
else
pq~

'if right mouse button pressed, pause
repeat while mouse.button(1)

'draw expanding pixel halo
gr.colorwidth(1,k)
gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

'step bouncing lines
repeat i from 0 to lines - 1
if ||~x > 60
-xs
if ||~y > 40
-ys
x += xs
y += ys

'draw bouncing lines
gr.colorwidth(1,thickness)
gr.plot(~x[0], ~y[0])
repeat i from 1 to lines - 1
gr.line(~x,~y)
gr.line(~x[0], ~y[0])

'draw spinning stars and revolving crosshairs and dogs
gr.colorwidth(2,0)
repeat i from 0 to 7
gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

'draw small box with text
gr.colorwidth(1,14)
gr.box(60,-80,60,16)
gr.textmode(1,1,6,5)
gr.colorwidth(2,0)
gr.text(90,-72,@pchip)

'draw incrementing digit
if not ++numx & 7
numchr++
if numchr < "0" or numchr > "9"
numchr := "0"
gr.textmode(8,8,6,5)
gr.colorwidth(1,8)
gr.text(-90,50,@numchr)

'copy bitmap to display
gr.copy(display_base)

'increment counter that makes everything change
k++


DAT

tvparams long 0 'status
long 1 'enable
long %001_0101 'pins
long %0000 'mode
long 0 'screen
long 0 'colors
long x_tiles 'hc
long y_tiles 'vc
long 10 'hx
long 1 'vx
long 0 'ho
long 0 'vo
long 0 'broadcast
long 0 'auralcog

vecdef word $4000+$2000/3*0 'triangle
word 50
word $8000+$2000/3*1+1
word 50
word $8000+$2000/3*2-1
word 50
word $8000+$2000/3*0
word 50
word 0

vecdef2 word $4000+$2000/12*0 'star
word 50
word $8000+$2000/12*1
word 20
word $8000+$2000/12*2
word 50
word $8000+$2000/12*3
word 20
word $8000+$2000/12*4
word 50
word $8000+$2000/12*5
word 20
word $8000+$2000/12*6
word 50
word $8000+$2000/12*7
word 20
word $8000+$2000/12*8
word 50
word $8000+$2000/12*9
word 20
word $8000+$2000/12*10
word 50
word $8000+$2000/12*11
word 20
word $8000+$2000/12*0
word 50
word 0

pixdef word 'crosshair
byte 2,7,3,3
word %%00333000,%%00000000
word %%03020300,%%00000000
word %%30020030,%%00000000
word %%32222230,%%00000000
word %%30020030,%%02000000
word %%03020300,%%22200000
word %%00333000,%%02000000

pixdef2 word 'dog
byte 1,4,0,3
word %%20000022
word %%02222222
word %%02222200
word %%02000200

pchip byte "Propeller",0 'text

{{

┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ TERMS OF USE: MIT License │
├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
│Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
│files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
│modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
│is furnished to do so, subject to the following conditions: │
│ │
│The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
│ │
│THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
│WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
│COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
│ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}

Ok, that was a failure. What I did was go copy the non-breaking space from the windows character map, open prop tool, do a find / replace, copy, paste to browser window, followed by a select all, font change.

Next try!

Comments

  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 10:48
    ''***************************************
    ''* Graphics Demo *
    ''* Author: Chip Gracey *
    ''* Copyright (c) 2005 Parallax, Inc. *
    ''* See end of file for terms of use. *
    ''***************************************


    CON

    _clkmode = xtal1 + pll16x
    _xinfreq = 5_000_000
    _stack = ($3000 + $3000 + 100) >> 2 'accomodate display memory and stack

    x_tiles = 16
    y_tiles = 12

    paramcount = 14
    bitmap_base = $2000
    display_base = $5000

    lines = 5
    thickness = 2


    VAR

    long mousex, mousey

    long tv_status '0/1/2 = off/visible/invisible read-only
    long tv_enable '0/? = off/on write-only
    long tv_pins '%ppmmm = pins write-only
    long tv_mode '%ccinp = chroma,interlace,ntsc/pal,swap write-only
    long tv_screen 'pointer to screen (words) write-only
    long tv_colors 'pointer to colors (longs) write-only
    long tv_hc 'horizontal cells write-only
    long tv_vc 'vertical cells write-only
    long tv_hx 'horizontal cell expansion write-only
    long tv_vx 'vertical cell expansion write-only
    long tv_ho 'horizontal offset write-only
    long tv_vo 'vertical offset write-only
    long tv_broadcast 'broadcast frequency (Hz) write-only
    long tv_auralcog 'aural fm cog write-only

    word screen[x_tiles * y_tiles]
    long colors[64]

    byte x[lines]
    byte y[lines]
    byte xs[lines]
    byte ys[lines]


    OBJ

    tv : "tv"
    gr : "graphics"
    mouse : "mouse"


    PUB start | i, j, k, kk, dx, dy, pp, pq, rr, numx, numchr

    'start tv
    longmove(@tv_status, @tvparams, paramcount)
    tv_screen := @screen
    tv_colors := @colors
    tv.start(@tv_status)

    'init colors
    repeat i from 0 to 63
    colors := $00001010 * (i+4) & $F + $2B060C02

    'init tile screen
    repeat dx from 0 to tv_hc - 1
    repeat dy from 0 to tv_vc - 1
    screen[dy * tv_hc + dx] := display_base >> 6 + dy + dx * tv_vc + ((dy & $3F) << 10)

    'init bouncing lines
    i := 1001
    j := 123123
    k := 8776434
    repeat i from 0 to lines - 1
    x := ?j // 64
    y := k? // 48
    repeat until xs := k? ~> 29
    repeat until ys := ?j ~> 29

    'start and setup graphics
    gr.start
    gr.setup(16, 12, 128, 96, bitmap_base)

    'start mouse
    mouse.start(24, 25)

    repeat

    'clear bitmap
    gr.clear

    'draw spinning triangles
    gr.colorwidth(3,0)
    repeat i from 1 to 8
    gr.vec(0, 0, (k & $7F) << 3 + i << 5, k << 6 + i << 8, @vecdef)

    'draw expanding mouse crosshairs
    gr.colorwidth(2,k>>2)
    mousex := mousex + mouse.delta_x #> -128 <# 127
    mousey := mousey + mouse.delta_y #> -96 <# 95
    gr.pix(mousex, mousey, k>>4 & $7, @pixdef)

    'if left mouse button pressed, throw snowballs
    if mouse.button(0)
    gr.width(pq & $F)
    gr.color(2)
    pp := (pq & $F)*(pq & $F) + 5
    pq++
    gr.arc(mousex, mousey, pp, pp>>1, -k * 200, $200, 8, 0)
    else
    pq~

    'if right mouse button pressed, pause
    repeat while mouse.button(1)

    'draw expanding pixel halo
    gr.colorwidth(1,k)
    gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    'step bouncing lines
    repeat i from 0 to lines - 1
    if ||~x > 60
    -xs
    if ||~y > 40
    -ys
    x += xs
    y += ys

    'draw bouncing lines
    gr.colorwidth(1,thickness)
    gr.plot(~x[0], ~y[0])
    repeat i from 1 to lines - 1
    gr.line(~x,~y)
    gr.line(~x[0], ~y[0])

    'draw spinning stars and revolving crosshairs and dogs
    gr.colorwidth(2,0)
    repeat i from 0 to 7
    gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    'draw small box with text
    gr.colorwidth(1,14)
    gr.box(60,-80,60,16)
    gr.textmode(1,1,6,5)
    gr.colorwidth(2,0)
    gr.text(90,-72,@pchip)

    'draw incrementing digit
    if not ++numx & 7
    numchr++
    if numchr < "0" or numchr > "9"
    numchr := "0"
    gr.textmode(8,8,6,5)
    gr.colorwidth(1,8)
    gr.text(-90,50,@numchr)

    'copy bitmap to display
    gr.copy(display_base)

    'increment counter that makes everything change
    k++


    DAT

    tvparams long 0 'status
    long 1 'enable
    long %001_0101 'pins
    long %0000 'mode
    long 0 'screen
    long 0 'colors
    long x_tiles 'hc
    long y_tiles 'vc
    long 10 'hx
    long 1 'vx
    long 0 'ho
    long 0 'vo
    long 0 'broadcast
    long 0 'auralcog

    vecdef word $4000+$2000/3*0 'triangle
    word 50
    word $8000+$2000/3*1+1
    word 50
    word $8000+$2000/3*2-1
    word 50
    word $8000+$2000/3*0
    word 50
    word 0

    vecdef2 word $4000+$2000/12*0 'star
    word 50
    word $8000+$2000/12*1
    word 20
    word $8000+$2000/12*2
    word 50
    word $8000+$2000/12*3
    word 20
    word $8000+$2000/12*4
    word 50
    word $8000+$2000/12*5
    word 20
    word $8000+$2000/12*6
    word 50
    word $8000+$2000/12*7
    word 20
    word $8000+$2000/12*8
    word 50
    word $8000+$2000/12*9
    word 20
    word $8000+$2000/12*10
    word 50
    word $8000+$2000/12*11
    word 20
    word $8000+$2000/12*0
    word 50
    word 0

    pixdef word 'crosshair
    byte 2,7,3,3
    word %%00333000,%%00000000
    word %%03020300,%%00000000
    word %%30020030,%%00000000
    word %%32222230,%%00000000
    word %%30020030,%%02000000
    word %%03020300,%%22200000
    word %%00333000,%%02000000

    pixdef2 word 'dog
    byte 1,4,0,3
    word %%20000022
    word %%02222222
    word %%02222200
    word %%02000200

    pchip byte "Propeller",0 'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ TERMS OF USE: MIT License │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
    │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
    │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
    │is furnished to do so, subject to the following conditions: │
    │ │
    │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
    │ │
    │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
    │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
    │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
    │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
    The required 10 characters.

    Strike two!! This one was the same exercise with a quote tag.
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 10:50
    [pre]
    ''***************************************
    ''* Graphics Demo *
    ''* Author: Chip Gracey *
    ''* Copyright (c) 2005 Parallax, Inc. *
    ''* See end of file for terms of use. *
    ''***************************************


    CON

    _clkmode = xtal1 + pll16x
    _xinfreq = 5_000_000
    _stack = ($3000 + $3000 + 100) >> 2 'accomodate display memory and stack

    x_tiles = 16
    y_tiles = 12

    paramcount = 14
    bitmap_base = $2000
    display_base = $5000

    lines = 5
    thickness = 2


    VAR

    long mousex, mousey

    long tv_status '0/1/2 = off/visible/invisible read-only
    long tv_enable '0/? = off/on write-only
    long tv_pins '%ppmmm = pins write-only
    long tv_mode '%ccinp = chroma,interlace,ntsc/pal,swap write-only
    long tv_screen 'pointer to screen (words) write-only
    long tv_colors 'pointer to colors (longs) write-only
    long tv_hc 'horizontal cells write-only
    long tv_vc 'vertical cells write-only
    long tv_hx 'horizontal cell expansion write-only
    long tv_vx 'vertical cell expansion write-only
    long tv_ho 'horizontal offset write-only
    long tv_vo 'vertical offset write-only
    long tv_broadcast 'broadcast frequency (Hz) write-only
    long tv_auralcog 'aural fm cog write-only

    word screen[x_tiles * y_tiles]
    long colors[64]

    byte x[lines]
    byte y[lines]
    byte xs[lines]
    byte ys[lines]


    OBJ

    tv : "tv"
    gr : "graphics"
    mouse : "mouse"


    PUB start | i, j, k, kk, dx, dy, pp, pq, rr, numx, numchr

    'start tv
    longmove(@tv_status, @tvparams, paramcount)
    tv_screen := @screen
    tv_colors := @colors
    tv.start(@tv_status)

    'init colors
    repeat i from 0 to 63
    colors := $00001010 * (i+4) & $F + $2B060C02

    'init tile screen
    repeat dx from 0 to tv_hc - 1
    repeat dy from 0 to tv_vc - 1
    screen[dy * tv_hc + dx] := display_base >> 6 + dy + dx * tv_vc + ((dy & $3F) << 10)

    'init bouncing lines
    i := 1001
    j := 123123
    k := 8776434
    repeat i from 0 to lines - 1
    x := ?j // 64
    y := k? // 48
    repeat until xs := k? ~> 29
    repeat until ys := ?j ~> 29

    'start and setup graphics
    gr.start
    gr.setup(16, 12, 128, 96, bitmap_base)

    'start mouse
    mouse.start(24, 25)

    repeat

    'clear bitmap
    gr.clear

    'draw spinning triangles
    gr.colorwidth(3,0)
    repeat i from 1 to 8
    gr.vec(0, 0, (k & $7F) << 3 + i << 5, k << 6 + i << 8, @vecdef)

    'draw expanding mouse crosshairs
    gr.colorwidth(2,k>>2)
    mousex := mousex + mouse.delta_x #> -128 <# 127
    mousey := mousey + mouse.delta_y #> -96 <# 95
    gr.pix(mousex, mousey, k>>4 & $7, @pixdef)

    'if left mouse button pressed, throw snowballs
    if mouse.button(0)
    gr.width(pq & $F)
    gr.color(2)
    pp := (pq & $F)*(pq & $F) + 5
    pq++
    gr.arc(mousex, mousey, pp, pp>>1, -k * 200, $200, 8, 0)
    else
    pq~

    'if right mouse button pressed, pause
    repeat while mouse.button(1)

    'draw expanding pixel halo
    gr.colorwidth(1,k)
    gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    'step bouncing lines
    repeat i from 0 to lines - 1
    if ||~x > 60
    -xs
    if ||~y > 40
    -ys
    x += xs
    y += ys

    'draw bouncing lines
    gr.colorwidth(1,thickness)
    gr.plot(~x[0], ~y[0])
    repeat i from 1 to lines - 1
    gr.line(~x,~y)
    gr.line(~x[0], ~y[0])

    'draw spinning stars and revolving crosshairs and dogs
    gr.colorwidth(2,0)
    repeat i from 0 to 7
    gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    'draw small box with text
    gr.colorwidth(1,14)
    gr.box(60,-80,60,16)
    gr.textmode(1,1,6,5)
    gr.colorwidth(2,0)
    gr.text(90,-72,@pchip)

    'draw incrementing digit
    if not ++numx & 7
    numchr++
    if numchr < "0" or numchr > "9"
    numchr := "0"
    gr.textmode(8,8,6,5)
    gr.colorwidth(1,8)
    gr.text(-90,50,@numchr)

    'copy bitmap to display
    gr.copy(display_base)

    'increment counter that makes everything change
    k++


    DAT

    tvparams long 0 'status
    long 1 'enable
    long %001_0101 'pins
    long %0000 'mode
    long 0 'screen
    long 0 'colors
    long x_tiles 'hc
    long y_tiles 'vc
    long 10 'hx
    long 1 'vx
    long 0 'ho
    long 0 'vo
    long 0 'broadcast
    long 0 'auralcog

    vecdef word $4000+$2000/3*0 'triangle
    word 50
    word $8000+$2000/3*1+1
    word 50
    word $8000+$2000/3*2-1
    word 50
    word $8000+$2000/3*0
    word 50
    word 0

    vecdef2 word $4000+$2000/12*0 'star
    word 50
    word $8000+$2000/12*1
    word 20
    word $8000+$2000/12*2
    word 50
    word $8000+$2000/12*3
    word 20
    word $8000+$2000/12*4
    word 50
    word $8000+$2000/12*5
    word 20
    word $8000+$2000/12*6
    word 50
    word $8000+$2000/12*7
    word 20
    word $8000+$2000/12*8
    word 50
    word $8000+$2000/12*9
    word 20
    word $8000+$2000/12*10
    word 50
    word $8000+$2000/12*11
    word 20
    word $8000+$2000/12*0
    word 50
    word 0

    pixdef word 'crosshair
    byte 2,7,3,3
    word %%00333000,%%00000000
    word %%03020300,%%00000000
    word %%30020030,%%00000000
    word %%32222230,%%00000000
    word %%30020030,%%02000000
    word %%03020300,%%22200000
    word %%00333000,%%02000000

    pixdef2 word 'dog
    byte 1,4,0,3
    word %%20000022
    word %%02222222
    word %%02222200
    word %%02000200

    pchip byte "Propeller",0 'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ TERMS OF USE: MIT License │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
    │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
    │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
    │is furnished to do so, subject to the following conditions: │
    │ │
    │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
    │ │
    │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
    │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
    │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
    │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}[/pre]

    The required 10 characters.
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 10:53
    ''***************************************
    ''*[sp][sp]Graphics[sp]Demo[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]*
    ''*[sp][sp]Author:[sp]Chip[sp]Gracey[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]*
    ''*[sp][sp]Copyright[sp](c)[sp]2005[sp]Parallax,[sp]Inc.[sp][sp]*
    ''*[sp][sp]See[sp]end[sp]of[sp]file[sp]for[sp]terms[sp]of[sp]use.[sp][sp]*
    ''***************************************


    CON

    [sp][sp]_clkmode[sp]=[sp]xtal1[sp]+[sp]pll16x
    [sp][sp]_xinfreq[sp]=[sp]5_000_000
    [sp][sp]_stack[sp]=[sp]($3000[sp]+[sp]$3000[sp]+[sp]100)[sp]>>[sp]2[sp][sp][sp]'accomodate[sp]display[sp]memory[sp]and[sp]stack

    [sp][sp]x_tiles[sp]=[sp]16
    [sp][sp]y_tiles[sp]=[sp]12

    [sp][sp]paramcount[sp]=[sp]14
    [sp][sp]bitmap_base[sp]=[sp]$2000
    [sp][sp]display_base[sp]=[sp]$5000

    [sp][sp]lines[sp]=[sp]5
    [sp][sp]thickness[sp]=[sp]2


    VAR

    [sp][sp]long[sp][sp]mousex,[sp]mousey

    [sp][sp]long[sp][sp]tv_status[sp][sp][sp][sp][sp]'0/1/2[sp]=[sp]off/visible/invisible[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]read-only
    [sp][sp]long[sp][sp]tv_enable[sp][sp][sp][sp][sp]'0/?[sp]=[sp]off/on[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_pins[sp][sp][sp][sp][sp][sp][sp]'%ppmmm[sp]=[sp]pins[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_mode[sp][sp][sp][sp][sp][sp][sp]'%ccinp[sp]=[sp]chroma,interlace,ntsc/pal,swap[sp]write-only
    [sp][sp]long[sp][sp]tv_screen[sp][sp][sp][sp][sp]'pointer[sp]to[sp]screen[sp](words)[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_colors[sp][sp][sp][sp][sp]'pointer[sp]to[sp]colors[sp](longs)[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_hc[sp][sp][sp][sp][sp][sp][sp][sp][sp]'horizontal[sp]cells[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_vc[sp][sp][sp][sp][sp][sp][sp][sp][sp]'vertical[sp]cells[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_hx[sp][sp][sp][sp][sp][sp][sp][sp][sp]'horizontal[sp]cell[sp]expansion[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_vx[sp][sp][sp][sp][sp][sp][sp][sp][sp]'vertical[sp]cell[sp]expansion[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_ho[sp][sp][sp][sp][sp][sp][sp][sp][sp]'horizontal[sp]offset[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_vo[sp][sp][sp][sp][sp][sp][sp][sp][sp]'vertical[sp]offset[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_broadcast[sp][sp]'broadcast[sp]frequency[sp](Hz)[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only
    [sp][sp]long[sp][sp]tv_auralcog[sp][sp][sp]'aural[sp]fm[sp]cog[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]write-only

    [sp][sp]word[sp][sp]screen[x_tiles[sp]*[sp]y_tiles]
    [sp][sp]long[sp][sp]colors[64]

    [sp][sp]byte[sp][sp]x[lines]
    [sp][sp]byte[sp][sp]y[lines]
    [sp][sp]byte[sp][sp]xs[lines]
    [sp][sp]byte[sp][sp]ys[lines]


    OBJ

    [sp][sp]tv[sp][sp][sp][sp]:[sp]"tv"
    [sp][sp]gr[sp][sp][sp][sp]:[sp]"graphics"
    [sp][sp]mouse[sp]:[sp]"mouse"


    PUB[sp]start[sp]|[sp]i,[sp]j,[sp]k,[sp]kk,[sp]dx,[sp]dy,[sp]pp,[sp]pq,[sp]rr,[sp]numx,[sp]numchr

    [sp][sp]'start[sp]tv
    [sp][sp]longmove(@tv_status,[sp]@tvparams,[sp]paramcount)
    [sp][sp]tv_screen[sp]:=[sp]@screen
    [sp][sp]tv_colors[sp]:=[sp]@colors
    [sp][sp]tv.start(@tv_status)

    [sp][sp]'init[sp]colors
    [sp][sp]repeat[sp]i[sp]from[sp]0[sp]to[sp]63
    [sp][sp][sp][sp]colors[sp]:=[sp]$00001010[sp]*[sp](i+4)[sp]&[sp]$F[sp]+[sp]$2B060C02

    [sp][sp]'init[sp]tile[sp]screen
    [sp][sp]repeat[sp]dx[sp]from[sp]0[sp]to[sp]tv_hc[sp]-[sp]1
    [sp][sp][sp][sp]repeat[sp]dy[sp]from[sp]0[sp]to[sp]tv_vc[sp]-[sp]1
    [sp][sp][sp][sp][sp][sp]screen[dy[sp]*[sp]tv_hc[sp]+[sp]dx][sp]:=[sp]display_base[sp]>>[sp]6[sp]+[sp]dy[sp]+[sp]dx[sp]*[sp]tv_vc[sp]+[sp]((dy[sp]&[sp]$3F)[sp]<<[sp]10)

    [sp][sp]'init[sp]bouncing[sp]lines
    [sp][sp]i[sp]:=[sp]1001
    [sp][sp]j[sp]:=[sp]123123
    [sp][sp]k[sp]:=[sp]8776434
    [sp][sp]repeat[sp]i[sp]from[sp]0[sp]to[sp]lines[sp]-[sp]1
    [sp][sp][sp][sp]x[sp]:=[sp]?j[sp]//[sp]64
    [sp][sp][sp][sp]y[sp]:=[sp]k?[sp]//[sp]48
    [sp][sp][sp][sp]repeat[sp]until[sp]xs[sp]:=[sp]k?[sp]~>[sp]29
    [sp][sp][sp][sp]repeat[sp]until[sp]ys[sp]:=[sp]?j[sp]~>[sp]29

    [sp][sp]'start[sp]and[sp]setup[sp]graphics
    [sp][sp]gr.start
    [sp][sp]gr.setup(16,[sp]12,[sp]128,[sp]96,[sp]bitmap_base)

    [sp][sp]'start[sp]mouse
    [sp][sp]mouse.start(24,[sp]25)

    [sp][sp]repeat

    [sp][sp][sp][sp]'clear[sp]bitmap
    [sp][sp][sp][sp]gr.clear

    [sp][sp][sp][sp]'draw[sp]spinning[sp]triangles
    [sp][sp][sp][sp]gr.colorwidth(3,0)
    [sp][sp][sp][sp]repeat[sp]i[sp]from[sp]1[sp]to[sp]8
    [sp][sp][sp][sp][sp][sp]gr.vec(0,[sp]0,[sp](k[sp]&[sp]$7F)[sp]<<[sp]3[sp]+[sp]i[sp]<<[sp]5,[sp]k[sp]<<[sp]6[sp]+[sp]i[sp]<<[sp]8,[sp]@vecdef)

    [sp][sp][sp][sp]'draw[sp]expanding[sp]mouse[sp]crosshairs
    [sp][sp][sp][sp]gr.colorwidth(2,k>>2)
    [sp][sp][sp][sp]mousex[sp]:=[sp]mousex[sp]+[sp]mouse.delta_x[sp]#>[sp]-128[sp]<#[sp]127
    [sp][sp][sp][sp]mousey[sp]:=[sp]mousey[sp]+[sp]mouse.delta_y[sp]#>[sp]-96[sp]<#[sp]95
    [sp][sp][sp][sp]gr.pix(mousex,[sp]mousey,[sp]k>>4[sp]&[sp]$7,[sp]@pixdef)

    [sp][sp][sp][sp]'if[sp]left[sp]mouse[sp]button[sp]pressed,[sp]throw[sp]snowballs
    [sp][sp][sp][sp]if[sp]mouse.button(0)
    [sp][sp][sp][sp][sp][sp]gr.width(pq[sp]&[sp]$F)
    [sp][sp][sp][sp][sp][sp]gr.color(2)
    [sp][sp][sp][sp][sp][sp]pp[sp]:=[sp](pq[sp]&[sp]$F)*(pq[sp]&[sp]$F)[sp]+[sp]5
    [sp][sp][sp][sp][sp][sp]pq++
    [sp][sp][sp][sp][sp][sp]gr.arc(mousex,[sp]mousey,[sp]pp,[sp]pp>>1,[sp]-k[sp]*[sp]200,[sp]$200,[sp]8,[sp]0)
    [sp][sp][sp][sp]else
    [sp][sp][sp][sp][sp][sp]pq~

    [sp][sp][sp][sp]'if[sp]right[sp]mouse[sp]button[sp]pressed,[sp]pause
    [sp][sp][sp][sp]repeat[sp]while[sp]mouse.button(1)

    [sp][sp][sp][sp]'draw[sp]expanding[sp]pixel[sp]halo
    [sp][sp][sp][sp]gr.colorwidth(1,k)
    [sp][sp][sp][sp]gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    [sp][sp][sp][sp]'step[sp]bouncing[sp]lines
    [sp][sp][sp][sp]repeat[sp]i[sp]from[sp]0[sp]to[sp]lines[sp]-[sp]1
    [sp][sp][sp][sp][sp][sp]if[sp]||~x[sp]>[sp]60
    [sp][sp][sp][sp][sp][sp][sp][sp]-xs
    [sp][sp][sp][sp][sp][sp]if[sp]||~y[sp]>[sp]40
    [sp][sp][sp][sp][sp][sp][sp][sp]-ys
    [sp][sp][sp][sp][sp][sp]x[sp]+=[sp]xs
    [sp][sp][sp][sp][sp][sp]y[sp]+=[sp]ys

    [sp][sp][sp][sp]'draw[sp]bouncing[sp]lines
    [sp][sp][sp][sp]gr.colorwidth(1,thickness)
    [sp][sp][sp][sp]gr.plot(~x[0],[sp]~y[0])
    [sp][sp][sp][sp]repeat[sp]i[sp]from[sp]1[sp]to[sp]lines[sp]-[sp]1
    [sp][sp][sp][sp][sp][sp]gr.line(~x,~y)
    [sp][sp][sp][sp]gr.line(~x[0],[sp]~y[0])

    [sp][sp][sp][sp]'draw[sp]spinning[sp]stars[sp]and[sp]revolving[sp]crosshairs[sp]and[sp]dogs
    [sp][sp][sp][sp]gr.colorwidth(2,0)
    [sp][sp][sp][sp]repeat[sp]i[sp]from[sp]0[sp]to[sp]7
    [sp][sp][sp][sp][sp][sp]gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    [sp][sp][sp][sp][sp][sp]gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    [sp][sp][sp][sp][sp][sp]gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    [sp][sp][sp][sp]'draw[sp]small[sp]box[sp]with[sp]text
    [sp][sp][sp][sp]gr.colorwidth(1,14)
    [sp][sp][sp][sp]gr.box(60,-80,60,16)
    [sp][sp][sp][sp]gr.textmode(1,1,6,5)
    [sp][sp][sp][sp]gr.colorwidth(2,0)
    [sp][sp][sp][sp]gr.text(90,-72,@pchip)

    [sp][sp][sp][sp]'draw[sp]incrementing[sp]digit
    [sp][sp][sp][sp]if[sp]not[sp]++numx[sp]&[sp]7
    [sp][sp][sp][sp][sp][sp]numchr++
    [sp][sp][sp][sp]if[sp]numchr[sp]<[sp]"0"[sp]or[sp]numchr[sp]>[sp]"9"
    [sp][sp][sp][sp][sp][sp]numchr[sp]:=[sp]"0"
    [sp][sp][sp][sp]gr.textmode(8,8,6,5)
    [sp][sp][sp][sp]gr.colorwidth(1,8)
    [sp][sp][sp][sp]gr.text(-90,50,@numchr)

    [sp][sp][sp][sp]'copy[sp]bitmap[sp]to[sp]display
    [sp][sp][sp][sp]gr.copy(display_base)

    [sp][sp][sp][sp]'increment[sp]counter[sp]that[sp]makes[sp]everything[sp]change
    [sp][sp][sp][sp]k++


    DAT

    tvparams[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'status
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]1[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'enable
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]%001_0101[sp][sp][sp][sp][sp][sp][sp]'pins
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]%0000[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'mode
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'screen
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'colors
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]x_tiles[sp][sp][sp][sp][sp][sp][sp][sp][sp]'hc
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]y_tiles[sp][sp][sp][sp][sp][sp][sp][sp][sp]'vc
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]10[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'hx
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]1[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'vx
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'ho
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'vo
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'broadcast
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]long[sp][sp][sp][sp]0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'auralcog

    vecdef[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$4000+$2000/3*0[sp][sp][sp][sp][sp][sp][sp][sp][sp]'triangle
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/3*1+1
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/3*2-1
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/3*0
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]0

    vecdef2[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$4000+$2000/12*0[sp][sp][sp][sp][sp][sp][sp][sp]'star
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*1
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]20
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*2
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*3
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]20
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*4
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*5
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]20
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*6
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*7
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]20
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*8
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*9
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]20
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*10
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*11
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]20
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]$8000+$2000/12*0
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]50
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]0

    pixdef[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'crosshair
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]byte[sp][sp][sp][sp]2,7,3,3
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%00333000,%%00000000
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%03020300,%%00000000
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%30020030,%%00000000
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%32222230,%%00000000
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%30020030,%%02000000
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%03020300,%%22200000
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%00333000,%%02000000

    pixdef2[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'dog
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]byte[sp][sp][sp][sp]1,4,0,3
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%20000022
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%02222222
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%02222200
    [sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]word[sp][sp][sp][sp]%%02000200

    pchip[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]byte[sp][sp][sp][sp]"Propeller",0[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]TERMS[sp]OF[sp]USE:[sp]MIT[sp]License[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission[sp]is[sp]hereby[sp]granted,[sp]free[sp]of[sp]charge,[sp]to[sp]any[sp]person[sp]obtaining[sp]a[sp]copy[sp]of[sp]this[sp]software[sp]and[sp]associated[sp]documentation[sp][sp][sp][sp]│
    │files[sp](the[sp]"Software"),[sp]to[sp]deal[sp]in[sp]the[sp]Software[sp]without[sp]restriction,[sp]including[sp]without[sp]limitation[sp]the[sp]rights[sp]to[sp]use,[sp]copy,[sp][sp][sp][sp]│
    │modify,[sp]merge,[sp]publish,[sp]distribute,[sp]sublicense,[sp]and/or[sp]sell[sp]copies[sp]of[sp]the[sp]Software,[sp]and[sp]to[sp]permit[sp]persons[sp]to[sp]whom[sp]the[sp]Software│
    │is[sp]furnished[sp]to[sp]do[sp]so,[sp]subject[sp]to[sp]the[sp]following[sp]conditions:[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    │[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    │The[sp]above[sp]copyright[sp]notice[sp]and[sp]this[sp]permission[sp]notice[sp]shall[sp]be[sp]included[sp]in[sp]all[sp]copies[sp]or[sp]substantial[sp]portions[sp]of[sp]the[sp]Software.│
    │[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    │THE[sp]SOFTWARE[sp]IS[sp]PROVIDED[sp]"AS[sp]IS",[sp]WITHOUT[sp]WARRANTY[sp]OF[sp]ANY[sp]KIND,[sp]EXPRESS[sp]OR[sp]IMPLIED,[sp]INCLUDING[sp]BUT[sp]NOT[sp]LIMITED[sp]TO[sp]THE[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    │WARRANTIES[sp]OF[sp]MERCHANTABILITY,[sp]FITNESS[sp]FOR[sp]A[sp]PARTICULAR[sp]PURPOSE[sp]AND[sp]NONINFRINGEMENT.[sp]IN[sp]NO[sp]EVENT[sp]SHALL[sp]THE[sp]AUTHORS[sp]OR[sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    │COPYRIGHT[sp]HOLDERS[sp]BE[sp]LIABLE[sp]FOR[sp]ANY[sp]CLAIM,[sp]DAMAGES[sp]OR[sp]OTHER[sp]LIABILITY,[sp]WHETHER[sp]IN[sp]AN[sp]ACTION[sp]OF[sp]CONTRACT,[sp]TORT[sp]OR[sp]OTHERWISE,[sp][sp][sp]│
    │ARISING[sp]FROM,[sp]OUT[sp]OF[sp]OR[sp]IN[sp]CONNECTION[sp]WITH[sp]THE[sp]SOFTWARE[sp]OR[sp]THE[sp]USE[sp]OR[sp]OTHER[sp]DEALINGS[sp]IN[sp]THE[sp]SOFTWARE.[sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp][sp]│
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 10:54
    [noparse]
    ''***************************************
    ''* Graphics Demo *
    ''* Author: Chip Gracey *
    ''* Copyright (c) 2005 Parallax, Inc. *
    ''* See end of file for terms of use. *
    ''***************************************


    CON

    _clkmode = xtal1 + pll16x
    _xinfreq = 5_000_000
    _stack = ($3000 + $3000 + 100) >> 2 'accomodate display memory and stack

    x_tiles = 16
    y_tiles = 12

    paramcount = 14
    bitmap_base = $2000
    display_base = $5000

    lines = 5
    thickness = 2


    VAR

    long mousex, mousey

    long tv_status '0/1/2 = off/visible/invisible read-only
    long tv_enable '0/? = off/on write-only
    long tv_pins '%ppmmm = pins write-only
    long tv_mode '%ccinp = chroma,interlace,ntsc/pal,swap write-only
    long tv_screen 'pointer to screen (words) write-only
    long tv_colors 'pointer to colors (longs) write-only
    long tv_hc 'horizontal cells write-only
    long tv_vc 'vertical cells write-only
    long tv_hx 'horizontal cell expansion write-only
    long tv_vx 'vertical cell expansion write-only
    long tv_ho 'horizontal offset write-only
    long tv_vo 'vertical offset write-only
    long tv_broadcast 'broadcast frequency (Hz) write-only
    long tv_auralcog 'aural fm cog write-only

    word screen[x_tiles * y_tiles]
    long colors[64]

    byte x[lines]
    byte y[lines]
    byte xs[lines]
    byte ys[lines]


    OBJ

    tv : "tv"
    gr : "graphics"
    mouse : "mouse"


    PUB start | i, j, k, kk, dx, dy, pp, pq, rr, numx, numchr

    'start tv
    longmove(@tv_status, @tvparams, paramcount)
    tv_screen := @screen
    tv_colors := @colors
    tv.start(@tv_status)

    'init colors
    repeat i from 0 to 63
    colors := $00001010 * (i+4) & $F + $2B060C02

    'init tile screen
    repeat dx from 0 to tv_hc - 1
    repeat dy from 0 to tv_vc - 1
    screen[dy * tv_hc + dx] := display_base >> 6 + dy + dx * tv_vc + ((dy & $3F) << 10)

    'init bouncing lines
    i := 1001
    j := 123123
    k := 8776434
    repeat i from 0 to lines - 1
    x := ?j // 64
    y := k? // 48
    repeat until xs := k? ~> 29
    repeat until ys := ?j ~> 29

    'start and setup graphics
    gr.start
    gr.setup(16, 12, 128, 96, bitmap_base)

    'start mouse
    mouse.start(24, 25)

    repeat

    'clear bitmap
    gr.clear

    'draw spinning triangles
    gr.colorwidth(3,0)
    repeat i from 1 to 8
    gr.vec(0, 0, (k & $7F) << 3 + i << 5, k << 6 + i << 8, @vecdef)

    'draw expanding mouse crosshairs
    gr.colorwidth(2,k>>2)
    mousex := mousex + mouse.delta_x #> -128 <# 127
    mousey := mousey + mouse.delta_y #> -96 <# 95
    gr.pix(mousex, mousey, k>>4 & $7, @pixdef)

    'if left mouse button pressed, throw snowballs
    if mouse.button(0)
    gr.width(pq & $F)
    gr.color(2)
    pp := (pq & $F)*(pq & $F) + 5
    pq++
    gr.arc(mousex, mousey, pp, pp>>1, -k * 200, $200, 8, 0)
    else
    pq~

    'if right mouse button pressed, pause
    repeat while mouse.button(1)

    'draw expanding pixel halo
    gr.colorwidth(1,k)
    gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    'step bouncing lines
    repeat i from 0 to lines - 1
    if ||~x > 60
    -xs
    if ||~y > 40
    -ys
    x += xs
    y += ys

    'draw bouncing lines
    gr.colorwidth(1,thickness)
    gr.plot(~x[0], ~y[0])
    repeat i from 1 to lines - 1
    gr.line(~x,~y)
    gr.line(~x[0], ~y[0])

    'draw spinning stars and revolving crosshairs and dogs
    gr.colorwidth(2,0)
    repeat i from 0 to 7
    gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    'draw small box with text
    gr.colorwidth(1,14)
    gr.box(60,-80,60,16)
    gr.textmode(1,1,6,5)
    gr.colorwidth(2,0)
    gr.text(90,-72,@pchip)

    'draw incrementing digit
    if not ++numx & 7
    numchr++
    if numchr < "0" or numchr > "9"
    numchr := "0"
    gr.textmode(8,8,6,5)
    gr.colorwidth(1,8)
    gr.text(-90,50,@numchr)

    'copy bitmap to display
    gr.copy(display_base)

    'increment counter that makes everything change
    k++


    DAT

    tvparams long 0 'status
    long 1 'enable
    long %001_0101 'pins
    long %0000 'mode
    long 0 'screen
    long 0 'colors
    long x_tiles 'hc
    long y_tiles 'vc
    long 10 'hx
    long 1 'vx
    long 0 'ho
    long 0 'vo
    long 0 'broadcast
    long 0 'auralcog

    vecdef word $4000+$2000/3*0 'triangle
    word 50
    word $8000+$2000/3*1+1
    word 50
    word $8000+$2000/3*2-1
    word 50
    word $8000+$2000/3*0
    word 50
    word 0

    vecdef2 word $4000+$2000/12*0 'star
    word 50
    word $8000+$2000/12*1
    word 20
    word $8000+$2000/12*2
    word 50
    word $8000+$2000/12*3
    word 20
    word $8000+$2000/12*4
    word 50
    word $8000+$2000/12*5
    word 20
    word $8000+$2000/12*6
    word 50
    word $8000+$2000/12*7
    word 20
    word $8000+$2000/12*8
    word 50
    word $8000+$2000/12*9
    word 20
    word $8000+$2000/12*10
    word 50
    word $8000+$2000/12*11
    word 20
    word $8000+$2000/12*0
    word 50
    word 0

    pixdef word 'crosshair
    byte 2,7,3,3
    word %%00333000,%%00000000
    word %%03020300,%%00000000
    word %%30020030,%%00000000
    word %%32222230,%%00000000
    word %%30020030,%%02000000
    word %%03020300,%%22200000
    word %%00333000,%%02000000

    pixdef2 word 'dog
    byte 1,4,0,3
    word %%20000022
    word %%02222222
    word %%02222200
    word %%02000200

    pchip byte "Propeller",0 'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │ TERMS OF USE: MIT License │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │
    │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │
    │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
    │is furnished to do so, subject to the following conditions: │
    │ │
    │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
    │ │
    │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │
    │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │
    │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │
    │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
    [/noparse]
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 10:56
    ''***************************************
    ''*[sp] [/sp][sp] [/sp]Graphics[sp] [/sp]Demo[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]*
    ''*[sp] [/sp][sp] [/sp]Author:[sp] [/sp]Chip[sp] [/sp]Gracey[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]*
    ''*[sp] [/sp][sp] [/sp]Copyright[sp] [/sp](c)[sp] [/sp]2005[sp] [/sp]Parallax,[sp] [/sp]Inc.[sp] [/sp][sp] [/sp]*
    ''*[sp] [/sp][sp] [/sp]See[sp] [/sp]end[sp] [/sp]of[sp] [/sp]file[sp] [/sp]for[sp] [/sp]terms[sp] [/sp]of[sp] [/sp]use.[sp] [/sp][sp] [/sp]*
    ''***************************************


    CON

    [sp] [/sp][sp] [/sp]_clkmode[sp] [/sp]=[sp] [/sp]xtal1[sp] [/sp]+[sp] [/sp]pll16x
    [sp] [/sp][sp] [/sp]_xinfreq[sp] [/sp]=[sp] [/sp]5_000_000
    [sp] [/sp][sp] [/sp]_stack[sp] [/sp]=[sp] [/sp]($3000[sp] [/sp]+[sp] [/sp]$3000[sp] [/sp]+[sp] [/sp]100)[sp] [/sp]>>[sp] [/sp]2[sp] [/sp][sp] [/sp][sp] [/sp]'accomodate[sp] [/sp]display[sp] [/sp]memory[sp] [/sp]and[sp] [/sp]stack

    [sp] [/sp][sp] [/sp]x_tiles[sp] [/sp]=[sp] [/sp]16
    [sp] [/sp][sp] [/sp]y_tiles[sp] [/sp]=[sp] [/sp]12

    [sp] [/sp][sp] [/sp]paramcount[sp] [/sp]=[sp] [/sp]14
    [sp] [/sp][sp] [/sp]bitmap_base[sp] [/sp]=[sp] [/sp]$2000
    [sp] [/sp][sp] [/sp]display_base[sp] [/sp]=[sp] [/sp]$5000

    [sp] [/sp][sp] [/sp]lines[sp] [/sp]=[sp] [/sp]5
    [sp] [/sp][sp] [/sp]thickness[sp] [/sp]=[sp] [/sp]2


    VAR

    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]mousex,[sp] [/sp]mousey

    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_status[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'0/1/2[sp] [/sp]=[sp] [/sp]off/visible/invisible[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]read-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_enable[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'0/?[sp] [/sp]=[sp] [/sp]off/on[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_pins[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'%ppmmm[sp] [/sp]=[sp] [/sp]pins[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_mode[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'%ccinp[sp] [/sp]=[sp] [/sp]chroma,interlace,ntsc/pal,swap[sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_screen[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'pointer[sp] [/sp]to[sp] [/sp]screen[sp] [/sp](words)[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_colors[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'pointer[sp] [/sp]to[sp] [/sp]colors[sp] [/sp](longs)[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_hc[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'horizontal[sp] [/sp]cells[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_vc[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vertical[sp] [/sp]cells[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_hx[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'horizontal[sp] [/sp]cell[sp] [/sp]expansion[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_vx[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vertical[sp] [/sp]cell[sp] [/sp]expansion[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_ho[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'horizontal[sp] [/sp]offset[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_vo[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vertical[sp] [/sp]offset[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_broadcast[sp] [/sp][sp] [/sp]'broadcast[sp] [/sp]frequency[sp] [/sp](Hz)[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_auralcog[sp] [/sp][sp] [/sp][sp] [/sp]'aural[sp] [/sp]fm[sp] [/sp]cog[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only

    [sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp]screen[x_tiles[sp] [/sp]*[sp] [/sp]y_tiles]
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]colors[64]

    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]x[lines]
    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]y[lines]
    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]xs[lines]
    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]ys[lines]


    OBJ

    [sp] [/sp][sp] [/sp]tv[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]:[sp] [/sp]"tv"
    [sp] [/sp][sp] [/sp]gr[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]:[sp] [/sp]"graphics"
    [sp] [/sp][sp] [/sp]mouse[sp] [/sp]:[sp] [/sp]"mouse"


    PUB[sp] [/sp]start[sp] [/sp]|[sp] [/sp]i,[sp] [/sp]j,[sp] [/sp]k,[sp] [/sp]kk,[sp] [/sp]dx,[sp] [/sp]dy,[sp] [/sp]pp,[sp] [/sp]pq,[sp] [/sp]rr,[sp] [/sp]numx,[sp] [/sp]numchr

    [sp] [/sp][sp] [/sp]'start[sp] [/sp]tv
    [sp] [/sp][sp] [/sp]longmove(@tv_status,[sp] [/sp]@tvparams,[sp] [/sp]paramcount)
    [sp] [/sp][sp] [/sp]tv_screen[sp] [/sp]:=[sp] [/sp]@screen
    [sp] [/sp][sp] [/sp]tv_colors[sp] [/sp]:=[sp] [/sp]@colors
    [sp] [/sp][sp] [/sp]tv.start(@tv_status)

    [sp] [/sp][sp] [/sp]'init[sp] [/sp]colors
    [sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]63
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]colors[sp] [/sp]:=[sp] [/sp]$00001010[sp] [/sp]*[sp] [/sp](i+4)[sp] [/sp]&[sp] [/sp]$F[sp] [/sp]+[sp] [/sp]$2B060C02

    [sp] [/sp][sp] [/sp]'init[sp] [/sp]tile[sp] [/sp]screen
    [sp] [/sp][sp] [/sp]repeat[sp] [/sp]dx[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]tv_hc[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]dy[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]tv_vc[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]screen[dy[sp] [/sp]*[sp] [/sp]tv_hc[sp] [/sp]+[sp] [/sp]dx][sp] [/sp]:=[sp] [/sp]display_base[sp] [/sp]>>[sp] [/sp]6[sp] [/sp]+[sp] [/sp]dy[sp] [/sp]+[sp] [/sp]dx[sp] [/sp]*[sp] [/sp]tv_vc[sp] [/sp]+[sp] [/sp]((dy[sp] [/sp]&[sp] [/sp]$3F)[sp] [/sp]<<[sp] [/sp]10)

    [sp] [/sp][sp] [/sp]'init[sp] [/sp]bouncing[sp] [/sp]lines
    [sp] [/sp][sp] [/sp]i[sp] [/sp]:=[sp] [/sp]1001
    [sp] [/sp][sp] [/sp]j[sp] [/sp]:=[sp] [/sp]123123
    [sp] [/sp][sp] [/sp]k[sp] [/sp]:=[sp] [/sp]8776434
    [sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]lines[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]x[sp] [/sp]:=[sp] [/sp]?j[sp] [/sp]//[sp] [/sp]64
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]y[sp] [/sp]:=[sp] [/sp]k?[sp] [/sp]//[sp] [/sp]48
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]until[sp] [/sp]xs[sp] [/sp]:=[sp] [/sp]k?[sp] [/sp]~>[sp] [/sp]29
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]until[sp] [/sp]ys[sp] [/sp]:=[sp] [/sp]?j[sp] [/sp]~>[sp] [/sp]29

    [sp] [/sp][sp] [/sp]'start[sp] [/sp]and[sp] [/sp]setup[sp] [/sp]graphics
    [sp] [/sp][sp] [/sp]gr.start
    [sp] [/sp][sp] [/sp]gr.setup(16,[sp] [/sp]12,[sp] [/sp]128,[sp] [/sp]96,[sp] [/sp]bitmap_base)

    [sp] [/sp][sp] [/sp]'start[sp] [/sp]mouse
    [sp] [/sp][sp] [/sp]mouse.start(24,[sp] [/sp]25)

    [sp] [/sp][sp] [/sp]repeat

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'clear[sp] [/sp]bitmap
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.clear

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]spinning[sp] [/sp]triangles
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(3,0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]1[sp] [/sp]to[sp] [/sp]8
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.vec(0,[sp] [/sp]0,[sp] [/sp](k[sp] [/sp]&[sp] [/sp]$7F)[sp] [/sp]<<[sp] [/sp]3[sp] [/sp]+[sp] [/sp]i[sp] [/sp]<<[sp] [/sp]5,[sp] [/sp]k[sp] [/sp]<<[sp] [/sp]6[sp] [/sp]+[sp] [/sp]i[sp] [/sp]<<[sp] [/sp]8,[sp] [/sp]@vecdef)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]expanding[sp] [/sp]mouse[sp] [/sp]crosshairs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(2,k>>2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]mousex[sp] [/sp]:=[sp] [/sp]mousex[sp] [/sp]+[sp] [/sp]mouse.delta_x[sp] [/sp]#>[sp] [/sp]-128[sp] [/sp]<#[sp] [/sp]127
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]mousey[sp] [/sp]:=[sp] [/sp]mousey[sp] [/sp]+[sp] [/sp]mouse.delta_y[sp] [/sp]#>[sp] [/sp]-96[sp] [/sp]<#[sp] [/sp]95
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.pix(mousex,[sp] [/sp]mousey,[sp] [/sp]k>>4[sp] [/sp]&[sp] [/sp]$7,[sp] [/sp]@pixdef)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'if[sp] [/sp]left[sp] [/sp]mouse[sp] [/sp]button[sp] [/sp]pressed,[sp] [/sp]throw[sp] [/sp]snowballs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]mouse.button(0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.width(pq[sp] [/sp]&[sp] [/sp]$F)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.color(2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]pp[sp] [/sp]:=[sp] [/sp](pq[sp] [/sp]&[sp] [/sp]$F)*(pq[sp] [/sp]&[sp] [/sp]$F)[sp] [/sp]+[sp] [/sp]5
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]pq++
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.arc(mousex,[sp] [/sp]mousey,[sp] [/sp]pp,[sp] [/sp]pp>>1,[sp] [/sp]-k[sp] [/sp]*[sp] [/sp]200,[sp] [/sp]$200,[sp] [/sp]8,[sp] [/sp]0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]else
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]pq~

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'if[sp] [/sp]right[sp] [/sp]mouse[sp] [/sp]button[sp] [/sp]pressed,[sp] [/sp]pause
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]while[sp] [/sp]mouse.button(1)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]expanding[sp] [/sp]pixel[sp] [/sp]halo
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,k)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'step[sp] [/sp]bouncing[sp] [/sp]lines
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]lines[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]||~x[sp] [/sp]>[sp] [/sp]60
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]-xs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]||~y[sp] [/sp]>[sp] [/sp]40
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]-ys
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]x[sp] [/sp]+=[sp] [/sp]xs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]y[sp] [/sp]+=[sp] [/sp]ys

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]bouncing[sp] [/sp]lines
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,thickness)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.plot(~x[0],[sp] [/sp]~y[0])
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]1[sp] [/sp]to[sp] [/sp]lines[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.line(~x,~y)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.line(~x[0],[sp] [/sp]~y[0])

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]spinning[sp] [/sp]stars[sp] [/sp]and[sp] [/sp]revolving[sp] [/sp]crosshairs[sp] [/sp]and[sp] [/sp]dogs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(2,0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]7
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]small[sp] [/sp]box[sp] [/sp]with[sp] [/sp]text
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,14)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.box(60,-80,60,16)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.textmode(1,1,6,5)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(2,0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.text(90,-72,@pchip)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]incrementing[sp] [/sp]digit
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]not[sp] [/sp]++numx[sp] [/sp]&[sp] [/sp]7
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]numchr++
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]numchr[sp] [/sp]<[sp] [/sp]"0"[sp] [/sp]or[sp] [/sp]numchr[sp] [/sp]>[sp] [/sp]"9"
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]numchr[sp] [/sp]:=[sp] [/sp]"0"
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.textmode(8,8,6,5)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,8)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.text(-90,50,@numchr)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'copy[sp] [/sp]bitmap[sp] [/sp]to[sp] [/sp]display
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.copy(display_base)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'increment[sp] [/sp]counter[sp] [/sp]that[sp] [/sp]makes[sp] [/sp]everything[sp] [/sp]change
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]k++


    DAT

    tvparams[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'status
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]1[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'enable
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%001_0101[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'pins
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%0000[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'mode
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'screen
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'colors
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]x_tiles[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'hc
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]y_tiles[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vc
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]10[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'hx
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]1[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vx
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'ho
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vo
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'broadcast
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'auralcog

    vecdef[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$4000+$2000/3*0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'triangle
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/3*1+1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/3*2-1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/3*0
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0

    vecdef2[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$4000+$2000/12*0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'star
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*2
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*3
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*4
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*5
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*6
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*7
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*8
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*9
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*10
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*11
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*0
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0

    pixdef[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'crosshair
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]2,7,3,3
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%00333000,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%03020300,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%30020030,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%32222230,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%30020030,%%02000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%03020300,%%22200000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%00333000,%%02000000

    pixdef2[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'dog
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]1,4,0,3
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%20000022
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%02222222
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%02222200
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%02000200

    pchip[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]"Propeller",0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]TERMS[sp] [/sp]OF[sp] [/sp]USE:[sp] [/sp]MIT[sp] [/sp]License[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission[sp] [/sp]is[sp] [/sp]hereby[sp] [/sp]granted,[sp] [/sp]free[sp] [/sp]of[sp] [/sp]charge,[sp] [/sp]to[sp] [/sp]any[sp] [/sp]person[sp] [/sp]obtaining[sp] [/sp]a[sp] [/sp]copy[sp] [/sp]of[sp] [/sp]this[sp] [/sp]software[sp] [/sp]and[sp] [/sp]associated[sp] [/sp]documentation[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │files[sp] [/sp](the[sp] [/sp]"Software"),[sp] [/sp]to[sp] [/sp]deal[sp] [/sp]in[sp] [/sp]the[sp] [/sp]Software[sp] [/sp]without[sp] [/sp]restriction,[sp] [/sp]including[sp] [/sp]without[sp] [/sp]limitation[sp] [/sp]the[sp] [/sp]rights[sp] [/sp]to[sp] [/sp]use,[sp] [/sp]copy,[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │modify,[sp] [/sp]merge,[sp] [/sp]publish,[sp] [/sp]distribute,[sp] [/sp]sublicense,[sp] [/sp]and/or[sp] [/sp]sell[sp] [/sp]copies[sp] [/sp]of[sp] [/sp]the[sp] [/sp]Software,[sp] [/sp]and[sp] [/sp]to[sp] [/sp]permit[sp] [/sp]persons[sp] [/sp]to[sp] [/sp]whom[sp] [/sp]the[sp] [/sp]Software│
    │is[sp] [/sp]furnished[sp] [/sp]to[sp] [/sp]do[sp] [/sp]so,[sp] [/sp]subject[sp] [/sp]to[sp] [/sp]the[sp] [/sp]following[sp] [/sp]conditions:[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │The[sp] [/sp]above[sp] [/sp]copyright[sp] [/sp]notice[sp] [/sp]and[sp] [/sp]this[sp] [/sp]permission[sp] [/sp]notice[sp] [/sp]shall[sp] [/sp]be[sp] [/sp]included[sp] [/sp]in[sp] [/sp]all[sp] [/sp]copies[sp] [/sp]or[sp] [/sp]substantial[sp] [/sp]portions[sp] [/sp]of[sp] [/sp]the[sp] [/sp]Software.│
    │[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │THE[sp] [/sp]SOFTWARE[sp] [/sp]IS[sp] [/sp]PROVIDED[sp] [/sp]"AS[sp] [/sp]IS",[sp] [/sp]WITHOUT[sp] [/sp]WARRANTY[sp] [/sp]OF[sp] [/sp]ANY[sp] [/sp]KIND,[sp] [/sp]EXPRESS[sp] [/sp]OR[sp] [/sp]IMPLIED,[sp] [/sp]INCLUDING[sp] [/sp]BUT[sp] [/sp]NOT[sp] [/sp]LIMITED[sp] [/sp]TO[sp] [/sp]THE[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │WARRANTIES[sp] [/sp]OF[sp] [/sp]MERCHANTABILITY,[sp] [/sp]FITNESS[sp] [/sp]FOR[sp] [/sp]A[sp] [/sp]PARTICULAR[sp] [/sp]PURPOSE[sp] [/sp]AND[sp] [/sp]NONINFRINGEMENT.[sp] [/sp]IN[sp] [/sp]NO[sp] [/sp]EVENT[sp] [/sp]SHALL[sp] [/sp]THE[sp] [/sp]AUTHORS[sp] [/sp]OR[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │COPYRIGHT[sp] [/sp]HOLDERS[sp] [/sp]BE[sp] [/sp]LIABLE[sp] [/sp]FOR[sp] [/sp]ANY[sp] [/sp]CLAIM,[sp] [/sp]DAMAGES[sp] [/sp]OR[sp] [/sp]OTHER[sp] [/sp]LIABILITY,[sp] [/sp]WHETHER[sp] [/sp]IN[sp] [/sp]AN[sp] [/sp]ACTION[sp] [/sp]OF[sp] [/sp]CONTRACT,[sp] [/sp]TORT[sp] [/sp]OR[sp] [/sp]OTHERWISE,[sp] [/sp][sp] [/sp][sp] [/sp]│
    │ARISING[sp] [/sp]FROM,[sp] [/sp]OUT[sp] [/sp]OF[sp] [/sp]OR[sp] [/sp]IN[sp] [/sp]CONNECTION[sp] [/sp]WITH[sp] [/sp]THE[sp] [/sp]SOFTWARE[sp] [/sp]OR[sp] [/sp]THE[sp] [/sp]USE[sp] [/sp]OR[sp] [/sp]OTHER[sp] [/sp]DEALINGS[sp] [/sp]IN[sp] [/sp]THE[sp] [/sp]SOFTWARE.[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 11:02
    ''***************************************
    ''*[sp] [/sp][sp] [/sp]Graphics[sp] [/sp]Demo[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]*
    ''*[sp] [/sp][sp] [/sp]Author:[sp] [/sp]Chip[sp] [/sp]Gracey[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]*
    ''*[sp] [/sp][sp] [/sp]Copyright[sp] [/sp](c)[sp] [/sp]2005[sp] [/sp]Parallax,[sp] [/sp]Inc.[sp] [/sp][sp] [/sp]*
    ''*[sp] [/sp][sp] [/sp]See[sp] [/sp]end[sp] [/sp]of[sp] [/sp]file[sp] [/sp]for[sp] [/sp]terms[sp] [/sp]of[sp] [/sp]use.[sp] [/sp][sp] [/sp]*
    ''***************************************


    CON

    [sp] [/sp][sp] [/sp]_clkmode[sp] [/sp]=[sp] [/sp]xtal1[sp] [/sp]+[sp] [/sp]pll16x
    [sp] [/sp][sp] [/sp]_xinfreq[sp] [/sp]=[sp] [/sp]5_000_000
    [sp] [/sp][sp] [/sp]_stack[sp] [/sp]=[sp] [/sp]($3000[sp] [/sp]+[sp] [/sp]$3000[sp] [/sp]+[sp] [/sp]100)[sp] [/sp]>>[sp] [/sp]2[sp] [/sp][sp] [/sp][sp] [/sp]'accomodate[sp] [/sp]display[sp] [/sp]memory[sp] [/sp]and[sp] [/sp]stack

    [sp] [/sp][sp] [/sp]x_tiles[sp] [/sp]=[sp] [/sp]16
    [sp] [/sp][sp] [/sp]y_tiles[sp] [/sp]=[sp] [/sp]12

    [sp] [/sp][sp] [/sp]paramcount[sp] [/sp]=[sp] [/sp]14
    [sp] [/sp][sp] [/sp]bitmap_base[sp] [/sp]=[sp] [/sp]$2000
    [sp] [/sp][sp] [/sp]display_base[sp] [/sp]=[sp] [/sp]$5000

    [sp] [/sp][sp] [/sp]lines[sp] [/sp]=[sp] [/sp]5
    [sp] [/sp][sp] [/sp]thickness[sp] [/sp]=[sp] [/sp]2


    VAR

    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]mousex,[sp] [/sp]mousey

    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_status[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'0/1/2[sp] [/sp]=[sp] [/sp]off/visible/invisible[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]read-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_enable[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'0/?[sp] [/sp]=[sp] [/sp]off/on[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_pins[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'%ppmmm[sp] [/sp]=[sp] [/sp]pins[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_mode[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'%ccinp[sp] [/sp]=[sp] [/sp]chroma,interlace,ntsc/pal,swap[sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_screen[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'pointer[sp] [/sp]to[sp] [/sp]screen[sp] [/sp](words)[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_colors[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'pointer[sp] [/sp]to[sp] [/sp]colors[sp] [/sp](longs)[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_hc[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'horizontal[sp] [/sp]cells[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_vc[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vertical[sp] [/sp]cells[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_hx[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'horizontal[sp] [/sp]cell[sp] [/sp]expansion[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_vx[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vertical[sp] [/sp]cell[sp] [/sp]expansion[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_ho[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'horizontal[sp] [/sp]offset[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_vo[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vertical[sp] [/sp]offset[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_broadcast[sp] [/sp][sp] [/sp]'broadcast[sp] [/sp]frequency[sp] [/sp](Hz)[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]tv_auralcog[sp] [/sp][sp] [/sp][sp] [/sp]'aural[sp] [/sp]fm[sp] [/sp]cog[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]write-only

    [sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp]screen[x_tiles[sp] [/sp]*[sp] [/sp]y_tiles]
    [sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp]colors[64]

    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]x[lines]
    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]y[lines]
    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]xs[lines]
    [sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp]ys[lines]


    OBJ

    [sp] [/sp][sp] [/sp]tv[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]:[sp] [/sp]"tv"
    [sp] [/sp][sp] [/sp]gr[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]:[sp] [/sp]"graphics"
    [sp] [/sp][sp] [/sp]mouse[sp] [/sp]:[sp] [/sp]"mouse"


    PUB[sp] [/sp]start[sp] [/sp]|[sp] [/sp]i,[sp] [/sp]j,[sp] [/sp]k,[sp] [/sp]kk,[sp] [/sp]dx,[sp] [/sp]dy,[sp] [/sp]pp,[sp] [/sp]pq,[sp] [/sp]rr,[sp] [/sp]numx,[sp] [/sp]numchr

    [sp] [/sp][sp] [/sp]'start[sp] [/sp]tv
    [sp] [/sp][sp] [/sp]longmove(@tv_status,[sp] [/sp]@tvparams,[sp] [/sp]paramcount)
    [sp] [/sp][sp] [/sp]tv_screen[sp] [/sp]:=[sp] [/sp]@screen
    [sp] [/sp][sp] [/sp]tv_colors[sp] [/sp]:=[sp] [/sp]@colors
    [sp] [/sp][sp] [/sp]tv.start(@tv_status)

    [sp] [/sp][sp] [/sp]'init[sp] [/sp]colors
    [sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]63
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]colors[sp] [/sp]:=[sp] [/sp]$00001010[sp] [/sp]*[sp] [/sp](i+4)[sp] [/sp]&[sp] [/sp]$F[sp] [/sp]+[sp] [/sp]$2B060C02

    [sp] [/sp][sp] [/sp]'init[sp] [/sp]tile[sp] [/sp]screen
    [sp] [/sp][sp] [/sp]repeat[sp] [/sp]dx[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]tv_hc[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]dy[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]tv_vc[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]screen[dy[sp] [/sp]*[sp] [/sp]tv_hc[sp] [/sp]+[sp] [/sp]dx][sp] [/sp]:=[sp] [/sp]display_base[sp] [/sp]>>[sp] [/sp]6[sp] [/sp]+[sp] [/sp]dy[sp] [/sp]+[sp] [/sp]dx[sp] [/sp]*[sp] [/sp]tv_vc[sp] [/sp]+[sp] [/sp]((dy[sp] [/sp]&[sp] [/sp]$3F)[sp] [/sp]<<[sp] [/sp]10)

    [sp] [/sp][sp] [/sp]'init[sp] [/sp]bouncing[sp] [/sp]lines
    [sp] [/sp][sp] [/sp]i[sp] [/sp]:=[sp] [/sp]1001
    [sp] [/sp][sp] [/sp]j[sp] [/sp]:=[sp] [/sp]123123
    [sp] [/sp][sp] [/sp]k[sp] [/sp]:=[sp] [/sp]8776434
    [sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]lines[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]x[sp] [/sp]:=[sp] [/sp]?j[sp] [/sp]//[sp] [/sp]64
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]y[sp] [/sp]:=[sp] [/sp]k?[sp] [/sp]//[sp] [/sp]48
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]until[sp] [/sp]xs[sp] [/sp]:=[sp] [/sp]k?[sp] [/sp]~>[sp] [/sp]29
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]until[sp] [/sp]ys[sp] [/sp]:=[sp] [/sp]?j[sp] [/sp]~>[sp] [/sp]29

    [sp] [/sp][sp] [/sp]'start[sp] [/sp]and[sp] [/sp]setup[sp] [/sp]graphics
    [sp] [/sp][sp] [/sp]gr.start
    [sp] [/sp][sp] [/sp]gr.setup(16,[sp] [/sp]12,[sp] [/sp]128,[sp] [/sp]96,[sp] [/sp]bitmap_base)

    [sp] [/sp][sp] [/sp]'start[sp] [/sp]mouse
    [sp] [/sp][sp] [/sp]mouse.start(24,[sp] [/sp]25)

    [sp] [/sp][sp] [/sp]repeat

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'clear[sp] [/sp]bitmap
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.clear

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]spinning[sp] [/sp]triangles
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(3,0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]1[sp] [/sp]to[sp] [/sp]8
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.vec(0,[sp] [/sp]0,[sp] [/sp](k[sp] [/sp]&[sp] [/sp]$7F)[sp] [/sp]<<[sp] [/sp]3[sp] [/sp]+[sp] [/sp]i[sp] [/sp]<<[sp] [/sp]5,[sp] [/sp]k[sp] [/sp]<<[sp] [/sp]6[sp] [/sp]+[sp] [/sp]i[sp] [/sp]<<[sp] [/sp]8,[sp] [/sp]@vecdef)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]expanding[sp] [/sp]mouse[sp] [/sp]crosshairs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(2,k>>2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]mousex[sp] [/sp]:=[sp] [/sp]mousex[sp] [/sp]+[sp] [/sp]mouse.delta_x[sp] [/sp]#>[sp] [/sp]-128[sp] [/sp]<#[sp] [/sp]127
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]mousey[sp] [/sp]:=[sp] [/sp]mousey[sp] [/sp]+[sp] [/sp]mouse.delta_y[sp] [/sp]#>[sp] [/sp]-96[sp] [/sp]<#[sp] [/sp]95
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.pix(mousex,[sp] [/sp]mousey,[sp] [/sp]k>>4[sp] [/sp]&[sp] [/sp]$7,[sp] [/sp]@pixdef)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'if[sp] [/sp]left[sp] [/sp]mouse[sp] [/sp]button[sp] [/sp]pressed,[sp] [/sp]throw[sp] [/sp]snowballs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]mouse.button(0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.width(pq[sp] [/sp]&[sp] [/sp]$F)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.color(2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]pp[sp] [/sp]:=[sp] [/sp](pq[sp] [/sp]&[sp] [/sp]$F)*(pq[sp] [/sp]&[sp] [/sp]$F)[sp] [/sp]+[sp] [/sp]5
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]pq++
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.arc(mousex,[sp] [/sp]mousey,[sp] [/sp]pp,[sp] [/sp]pp>>1,[sp] [/sp]-k[sp] [/sp]*[sp] [/sp]200,[sp] [/sp]$200,[sp] [/sp]8,[sp] [/sp]0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]else
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]pq~

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'if[sp] [/sp]right[sp] [/sp]mouse[sp] [/sp]button[sp] [/sp]pressed,[sp] [/sp]pause
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]while[sp] [/sp]mouse.button(1)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]expanding[sp] [/sp]pixel[sp] [/sp]halo
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,k)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'step[sp] [/sp]bouncing[sp] [/sp]lines
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]lines[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]||~x[sp] [/sp]>[sp] [/sp]60
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]-xs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]||~y[sp] [/sp]>[sp] [/sp]40
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]-ys
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]x[sp] [/sp]+=[sp] [/sp]xs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]y[sp] [/sp]+=[sp] [/sp]ys

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]bouncing[sp] [/sp]lines
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,thickness)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.plot(~x[0],[sp] [/sp]~y[0])
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]1[sp] [/sp]to[sp] [/sp]lines[sp] [/sp]-[sp] [/sp]1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.line(~x,~y)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.line(~x[0],[sp] [/sp]~y[0])

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]spinning[sp] [/sp]stars[sp] [/sp]and[sp] [/sp]revolving[sp] [/sp]crosshairs[sp] [/sp]and[sp] [/sp]dogs
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(2,0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]repeat[sp] [/sp]i[sp] [/sp]from[sp] [/sp]0[sp] [/sp]to[sp] [/sp]7
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]small[sp] [/sp]box[sp] [/sp]with[sp] [/sp]text
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,14)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.box(60,-80,60,16)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.textmode(1,1,6,5)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(2,0)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.text(90,-72,@pchip)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'draw[sp] [/sp]incrementing[sp] [/sp]digit
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]not[sp] [/sp]++numx[sp] [/sp]&[sp] [/sp]7
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]numchr++
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]if[sp] [/sp]numchr[sp] [/sp]<[sp] [/sp]"0"[sp] [/sp]or[sp] [/sp]numchr[sp] [/sp]>[sp] [/sp]"9"
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]numchr[sp] [/sp]:=[sp] [/sp]"0"
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.textmode(8,8,6,5)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.colorwidth(1,8)
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.text(-90,50,@numchr)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'copy[sp] [/sp]bitmap[sp] [/sp]to[sp] [/sp]display
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]gr.copy(display_base)

    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'increment[sp] [/sp]counter[sp] [/sp]that[sp] [/sp]makes[sp] [/sp]everything[sp] [/sp]change
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]k++


    DAT

    tvparams[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'status
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]1[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'enable
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%001_0101[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'pins
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%0000[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'mode
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'screen
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'colors
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]x_tiles[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'hc
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]y_tiles[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vc
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]10[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'hx
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]1[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vx
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'ho
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'vo
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'broadcast
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]long[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'auralcog

    vecdef[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$4000+$2000/3*0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'triangle
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/3*1+1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/3*2-1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/3*0
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0

    vecdef2[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$4000+$2000/12*0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'star
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*1
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*2
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*3
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*4
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*5
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*6
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*7
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*8
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*9
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*10
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*11
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]20
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]$8000+$2000/12*0
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]50
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]0

    pixdef[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'crosshair
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]2,7,3,3
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%00333000,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%03020300,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%30020030,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%32222230,%%00000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%30020030,%%02000000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%03020300,%%22200000
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%00333000,%%02000000

    pixdef2[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'dog
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]1,4,0,3
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%20000022
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%02222222
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%02222200
    [sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]word[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]%%02000200

    pchip[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]byte[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]"Propeller",0[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]TERMS[sp] [/sp]OF[sp] [/sp]USE:[sp] [/sp]MIT[sp] [/sp]License[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission[sp] [/sp]is[sp] [/sp]hereby[sp] [/sp]granted,[sp] [/sp]free[sp] [/sp]of[sp] [/sp]charge,[sp] [/sp]to[sp] [/sp]any[sp] [/sp]person[sp] [/sp]obtaining[sp] [/sp]a[sp] [/sp]copy[sp] [/sp]of[sp] [/sp]this[sp] [/sp]software[sp] [/sp]and[sp] [/sp]associated[sp] [/sp]documentation[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │files[sp] [/sp](the[sp] [/sp]"Software"),[sp] [/sp]to[sp] [/sp]deal[sp] [/sp]in[sp] [/sp]the[sp] [/sp]Software[sp] [/sp]without[sp] [/sp]restriction,[sp] [/sp]including[sp] [/sp]without[sp] [/sp]limitation[sp] [/sp]the[sp] [/sp]rights[sp] [/sp]to[sp] [/sp]use,[sp] [/sp]copy,[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │modify,[sp] [/sp]merge,[sp] [/sp]publish,[sp] [/sp]distribute,[sp] [/sp]sublicense,[sp] [/sp]and/or[sp] [/sp]sell[sp] [/sp]copies[sp] [/sp]of[sp] [/sp]the[sp] [/sp]Software,[sp] [/sp]and[sp] [/sp]to[sp] [/sp]permit[sp] [/sp]persons[sp] [/sp]to[sp] [/sp]whom[sp] [/sp]the[sp] [/sp]Software│
    │is[sp] [/sp]furnished[sp] [/sp]to[sp] [/sp]do[sp] [/sp]so,[sp] [/sp]subject[sp] [/sp]to[sp] [/sp]the[sp] [/sp]following[sp] [/sp]conditions:[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │The[sp] [/sp]above[sp] [/sp]copyright[sp] [/sp]notice[sp] [/sp]and[sp] [/sp]this[sp] [/sp]permission[sp] [/sp]notice[sp] [/sp]shall[sp] [/sp]be[sp] [/sp]included[sp] [/sp]in[sp] [/sp]all[sp] [/sp]copies[sp] [/sp]or[sp] [/sp]substantial[sp] [/sp]portions[sp] [/sp]of[sp] [/sp]the[sp] [/sp]Software.│
    │[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │THE[sp] [/sp]SOFTWARE[sp] [/sp]IS[sp] [/sp]PROVIDED[sp] [/sp]"AS[sp] [/sp]IS",[sp] [/sp]WITHOUT[sp] [/sp]WARRANTY[sp] [/sp]OF[sp] [/sp]ANY[sp] [/sp]KIND,[sp] [/sp]EXPRESS[sp] [/sp]OR[sp] [/sp]IMPLIED,[sp] [/sp]INCLUDING[sp] [/sp]BUT[sp] [/sp]NOT[sp] [/sp]LIMITED[sp] [/sp]TO[sp] [/sp]THE[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │WARRANTIES[sp] [/sp]OF[sp] [/sp]MERCHANTABILITY,[sp] [/sp]FITNESS[sp] [/sp]FOR[sp] [/sp]A[sp] [/sp]PARTICULAR[sp] [/sp]PURPOSE[sp] [/sp]AND[sp] [/sp]NONINFRINGEMENT.[sp] [/sp]IN[sp] [/sp]NO[sp] [/sp]EVENT[sp] [/sp]SHALL[sp] [/sp]THE[sp] [/sp]AUTHORS[sp] [/sp]OR[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    │COPYRIGHT[sp] [/sp]HOLDERS[sp] [/sp]BE[sp] [/sp]LIABLE[sp] [/sp]FOR[sp] [/sp]ANY[sp] [/sp]CLAIM,[sp] [/sp]DAMAGES[sp] [/sp]OR[sp] [/sp]OTHER[sp] [/sp]LIABILITY,[sp] [/sp]WHETHER[sp] [/sp]IN[sp] [/sp]AN[sp] [/sp]ACTION[sp] [/sp]OF[sp] [/sp]CONTRACT,[sp] [/sp]TORT[sp] [/sp]OR[sp] [/sp]OTHERWISE,[sp] [/sp][sp] [/sp][sp] [/sp]│
    │ARISING[sp] [/sp]FROM,[sp] [/sp]OUT[sp] [/sp]OF[sp] [/sp]OR[sp] [/sp]IN[sp] [/sp]CONNECTION[sp] [/sp]WITH[sp] [/sp]THE[sp] [/sp]SOFTWARE[sp] [/sp]OR[sp] [/sp]THE[sp] [/sp]USE[sp] [/sp]OR[sp] [/sp]OTHER[sp] [/sp]DEALINGS[sp] [/sp]IN[sp] [/sp]THE[sp] [/sp]SOFTWARE.[sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp][sp] [/sp]│
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 11:04
    ''***************************************
    ''*··Graphics·Demo······················*
    ''*··Author:·Chip·Gracey················*
    ''*··Copyright·(c)·2005·Parallax,·Inc.··*
    ''*··See·end·of·file·for·terms·of·use.··*
    ''***************************************


    CON

    ··_clkmode·=·xtal1·+·pll16x
    ··_xinfreq·=·5_000_000
    ··_stack·=·($3000·+·$3000·+·100)·>>·2···'accomodate·display·memory·and·stack

    ··x_tiles·=·16
    ··y_tiles·=·12

    ··paramcount·=·14
    ··bitmap_base·=·$2000
    ··display_base·=·$5000

    ··lines·=·5
    ··thickness·=·2


    VAR

    ··long··mousex,·mousey

    ··long··tv_status·····'0/1/2·=·off/visible/invisible···········read-only
    ··long··tv_enable·····'0/?·=·off/on····························write-only
    ··long··tv_pins·······'%ppmmm·=·pins···························write-only
    ··long··tv_mode·······'%ccinp·=·chroma,interlace,ntsc/pal,swap·write-only
    ··long··tv_screen·····'pointer·to·screen·(words)···············write-only
    ··long··tv_colors·····'pointer·to·colors·(longs)···············write-only
    ··long··tv_hc·········'horizontal·cells························write-only
    ··long··tv_vc·········'vertical·cells··························write-only
    ··long··tv_hx·········'horizontal·cell·expansion···············write-only
    ··long··tv_vx·········'vertical·cell·expansion·················write-only
    ··long··tv_ho·········'horizontal·offset·······················write-only
    ··long··tv_vo·········'vertical·offset·························write-only
    ··long··tv_broadcast··'broadcast·frequency·(Hz)················write-only
    ··long··tv_auralcog···'aural·fm·cog····························write-only

    ··word··screen[x_tiles·*·y_tiles]
    ··long··colors[64]

    ··byte··x[lines]
    ··byte··y[lines]
    ··byte··xs[lines]
    ··byte··ys[lines]


    OBJ

    ··tv····:·"tv"
    ··gr····:·"graphics"
    ··mouse·:·"mouse"


    PUB·start·|·i,·j,·k,·kk,·dx,·dy,·pp,·pq,·rr,·numx,·numchr

    ··'start·tv
    ··longmove(@tv_status,·@tvparams,·paramcount)
    ··tv_screen·:=·@screen
    ··tv_colors·:=·@colors
    ··tv.start(@tv_status)

    ··'init·colors
    ··repeat·i·from·0·to·63
    ····colors·:=·$00001010·*·(i+4)·&·$F·+·$2B060C02

    ··'init·tile·screen
    ··repeat·dx·from·0·to·tv_hc·-·1
    ····repeat·dy·from·0·to·tv_vc·-·1
    ······screen[dy·*·tv_hc·+·dx]·:=·display_base·>>·6·+·dy·+·dx·*·tv_vc·+·((dy·&·$3F)·<<·10)

    ··'init·bouncing·lines
    ··i·:=·1001
    ··j·:=·123123
    ··k·:=·8776434
    ··repeat·i·from·0·to·lines·-·1
    ····x·:=·?j·//·64
    ····y·:=·k?·//·48
    ····repeat·until·xs·:=·k?·~>·29
    ····repeat·until·ys·:=·?j·~>·29

    ··'start·and·setup·graphics
    ··gr.start
    ··gr.setup(16,·12,·128,·96,·bitmap_base)

    ··'start·mouse
    ··mouse.start(24,·25)

    ··repeat

    ····'clear·bitmap
    ····gr.clear

    ····'draw·spinning·triangles
    ····gr.colorwidth(3,0)
    ····repeat·i·from·1·to·8
    ······gr.vec(0,·0,·(k·&·$7F)·<<·3·+·i·<<·5,·k·<<·6·+·i·<<·8,·@vecdef)

    ····'draw·expanding·mouse·crosshairs
    ····gr.colorwidth(2,k>>2)
    ····mousex·:=·mousex·+·mouse.delta_x·#>·-128·<#·127
    ····mousey·:=·mousey·+·mouse.delta_y·#>·-96·<#·95
    ····gr.pix(mousex,·mousey,·k>>4·&·$7,·@pixdef)

    ····'if·left·mouse·button·pressed,·throw·snowballs
    ····if·mouse.button(0)
    ······gr.width(pq·&·$F)
    ······gr.color(2)
    ······pp·:=·(pq·&·$F)*(pq·&·$F)·+·5
    ······pq++
    ······gr.arc(mousex,·mousey,·pp,·pp>>1,·-k·*·200,·$200,·8,·0)
    ····else
    ······pq~

    ····'if·right·mouse·button·pressed,·pause
    ····repeat·while·mouse.button(1)

    ····'draw·expanding·pixel·halo
    ····gr.colorwidth(1,k)
    ····gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    ····'step·bouncing·lines
    ····repeat·i·from·0·to·lines·-·1
    ······if·||~x·>·60
    ········-xs
    ······if·||~y·>·40
    ········-ys
    ······x·+=·xs
    ······y·+=·ys

    ····'draw·bouncing·lines
    ····gr.colorwidth(1,thickness)
    ····gr.plot(~x[0],·~y[0])
    ····repeat·i·from·1·to·lines·-·1
    ······gr.line(~x,~y)
    ····gr.line(~x[0],·~y[0])

    ····'draw·spinning·stars·and·revolving·crosshairs·and·dogs
    ····gr.colorwidth(2,0)
    ····repeat·i·from·0·to·7
    ······gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    ······gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    ······gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    ····'draw·small·box·with·text
    ····gr.colorwidth(1,14)
    ····gr.box(60,-80,60,16)
    ····gr.textmode(1,1,6,5)
    ····gr.colorwidth(2,0)
    ····gr.text(90,-72,@pchip)

    ····'draw·incrementing·digit
    ····if·not·++numx·&·7
    ······numchr++
    ····if·numchr·<·"0"·or·numchr·>·"9"
    ······numchr·:=·"0"
    ····gr.textmode(8,8,6,5)
    ····gr.colorwidth(1,8)
    ····gr.text(-90,50,@numchr)

    ····'copy·bitmap·to·display
    ····gr.copy(display_base)

    ····'increment·counter·that·makes·everything·change
    ····k++


    DAT

    tvparams················long····0···············'status
    ························long····1···············'enable
    ························long····%001_0101·······'pins
    ························long····%0000···········'mode
    ························long····0···············'screen
    ························long····0···············'colors
    ························long····x_tiles·········'hc
    ························long····y_tiles·········'vc
    ························long····10··············'hx
    ························long····1···············'vx
    ························long····0···············'ho
    ························long····0···············'vo
    ························long····0···············'broadcast
    ························long····0···············'auralcog

    vecdef··················word····$4000+$2000/3*0·········'triangle
    ························word····50
    ························word····$8000+$2000/3*1+1
    ························word····50
    ························word····$8000+$2000/3*2-1
    ························word····50
    ························word····$8000+$2000/3*0
    ························word····50
    ························word····0

    vecdef2·················word····$4000+$2000/12*0········'star
    ························word····50
    ························word····$8000+$2000/12*1
    ························word····20
    ························word····$8000+$2000/12*2
    ························word····50
    ························word····$8000+$2000/12*3
    ························word····20
    ························word····$8000+$2000/12*4
    ························word····50
    ························word····$8000+$2000/12*5
    ························word····20
    ························word····$8000+$2000/12*6
    ························word····50
    ························word····$8000+$2000/12*7
    ························word····20
    ························word····$8000+$2000/12*8
    ························word····50
    ························word····$8000+$2000/12*9
    ························word····20
    ························word····$8000+$2000/12*10
    ························word····50
    ························word····$8000+$2000/12*11
    ························word····20
    ························word····$8000+$2000/12*0
    ························word····50
    ························word····0

    pixdef··················word····························'crosshair
    ························byte····2,7,3,3
    ························word····%%00333000,%%00000000
    ························word····%%03020300,%%00000000
    ························word····%%30020030,%%00000000
    ························word····%%32222230,%%00000000
    ························word····%%30020030,%%02000000
    ························word····%%03020300,%%22200000
    ························word····%%00333000,%%02000000

    pixdef2·················word····························'dog
    ························byte····1,4,0,3
    ························word····%%20000022
    ························word····%%02222222
    ························word····%%02222200
    ························word····%%02000200

    pchip···················byte····"Propeller",0···········'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │···················································TERMS·OF·USE:·MIT·License··················································│
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission·is·hereby·granted,·free·of·charge,·to·any·person·obtaining·a·copy·of·this·software·and·associated·documentation····│
    │files·(the·"Software"),·to·deal·in·the·Software·without·restriction,·including·without·limitation·the·rights·to·use,·copy,····│
    │modify,·merge,·publish,·distribute,·sublicense,·and/or·sell·copies·of·the·Software,·and·to·permit·persons·to·whom·the·Software│
    │is·furnished·to·do·so,·subject·to·the·following·conditions:···································································│
    │······························································································································│
    │The·above·copyright·notice·and·this·permission·notice·shall·be·included·in·all·copies·or·substantial·portions·of·the·Software.│
    │······························································································································│
    │THE·SOFTWARE·IS·PROVIDED·"AS·IS",·WITHOUT·WARRANTY·OF·ANY·KIND,·EXPRESS·OR·IMPLIED,·INCLUDING·BUT·NOT·LIMITED·TO·THE··········│
    │WARRANTIES·OF·MERCHANTABILITY,·FITNESS·FOR·A·PARTICULAR·PURPOSE·AND·NONINFRINGEMENT.·IN·NO·EVENT·SHALL·THE·AUTHORS·OR·········│
    │COPYRIGHT·HOLDERS·BE·LIABLE·FOR·ANY·CLAIM,·DAMAGES·OR·OTHER·LIABILITY,·WHETHER·IN·AN·ACTION·OF·CONTRACT,·TORT·OR·OTHERWISE,···│
    │ARISING·FROM,·OUT·OF·OR·IN·CONNECTION·WITH·THE·SOFTWARE·OR·THE·USE·OR·OTHER·DEALINGS·IN·THE·SOFTWARE.·························│
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 11:10
    ····'draw·small·box·with·text
    ····gr.colorwidth(1,14)
    ····gr.box(60,-80,60,16)
    ····gr.textmode(1,1,6,5)
    ····gr.colorwidth(2,0)
    ····gr.text(90,-72,@pchip)

    ····'draw·incrementing·digit
    ····if·not·++numx·&·7
    ······numchr++
    ····if·numchr·<·"0"·or·numchr·>·"9"
    ······numchr·:=·"0"
    ····gr.textmode(8,8,6,5)
    ····gr.colorwidth(1,8)
    ····gr.text(-90,50,@numchr)

    ····'copy·bitmap·to·display
    ····gr.copy(display_base)

    ····'increment·counter·that·makes·everything·change
    ····k++


    DAT

    tvparams················long····0···············'status
    ························long····1···············'enable
    ························long····%001_0101·······'pins
    ························long····%0000···········'mode
    ························long····0···············'screen
    ························long····0···············'colors
    ························long····x_tiles·········'hc
    ························long····y_tiles·········'vc
    ························long····10··············'hx
    ························long····1···············'vx
    ························long····0···············'ho
    ························long····0···············'vo
    ························long····0···············'broadcast
    ························long····0···············'auralcog

    vecdef··················word····$4000+$2000/3*0·········'triangle
    ························word····50
    ························word····$8000+$2000/3*1+1
    ························word····50
    ························word····$8000+$2000/3*2-1
    ························word····50
    ························word····$8000+$2000/3*0
    ························word····50
    ························word····0

    vecdef2·················word····$4000+$2000/12*0········'star
    ························word····50
    ························word····$8000+$2000/12*1
    ························word····20
    ························word····$8000+$2000/12*2
    ························word····50
    ························word····$8000+$2000/12*3
    ························word····20
    ························word····$8000+$2000/12*4
    ························word····50
    ························word····$8000+$2000/12*5
    ························word····20
    ························word····$8000+$2000/12*6
    ························word····50
    ························word····$8000+$2000/12*7
    ························word····20
    ························word····$8000+$2000/12*8
    ························word····50
    ························word····$8000+$2000/12*9
    ························word····20
    ························word····$8000+$2000/12*10
    ························word····50
    ························word····$8000+$2000/12*11
    ························word····20
    ························word····$8000+$2000/12*0
    ························word····50
    ························word····0

    pixdef··················word····························'crosshair
    ························byte····2,7,3,3
    ························word····%%00333000,%%00000000
    ························word····%%03020300,%%00000000
    ························word····%%30020030,%%00000000
    ························word····%%32222230,%%00000000
    ························word····%%30020030,%%02000000
    ························word····%%03020300,%%22200000
    ························word····%%00333000,%%02000000

    pixdef2·················word····························'dog
    ························byte····1,4,0,3
    ························word····%%20000022
    ························word····%%02222222
    ························word····%%02222200
    ························word····%%02000200

    pchip···················byte····"Propeller",0···········'text


    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 11:25
    Well, ok. That's just not going to work all that well.

    The last attempt was a middle dot character, changed to white. I kind of like it for counting intent spaces, but I mostly don't like it otherwise.

    Learned some stuff. Turns out the browser is the one nuking spaces. Many forum software packages see the non-breaking space and will output it as such, so the browser won't compress the spaces in the text.

    So, there you go. That's where I got to. Wonder if there are ASCII art friendly configuration options?

    BTW, that last post isn't editable. Turns out all the formatting info bumps it over 50K. I would have changed the font to something else, if that were possible.
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2010-08-14 11:50
    You can use &#038#160; as a non-breaking space. But you can't re-edit it after that. vBulletin converts it to an asterisk on the second go-round.

    -Phil
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 12:07
    ''***************************************
    ''*&#160&#160Graphics&#160Demo&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160*
    ''*&#160&#160Author:&#160Chip&#160Gracey&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160*
    ''*&#160&#160Copyright&#160(c)&#1602005&#160Parallax,&#160Inc.&#160&#160*
    ''*&#160&#160See&#160end&#160of&#160file&#160for&#160terms&#160of&#160use.&#160&#160*
    ''***************************************


    CON

    &#160&#160_clkmode&#160=&#160xtal1&#160+&#160pll16x
    &#160&#160_xinfreq&#160=&#1605_000_000
    &#160&#160_stack&#160=&#160($3000&#160+&#160$3000&#160+&#160100)&#160>>&#1602&#160&#160&#160'accomodate&#160display&#160memory&#160and&#160stack

    &#160&#160x_tiles&#160=&#16016
    &#160&#160y_tiles&#160=&#16012

    &#160&#160paramcount&#160=&#16014
    &#160&#160bitmap_base&#160=&#160$2000
    &#160&#160display_base&#160=&#160$5000

    &#160&#160lines&#160=&#1605
    &#160&#160thickness&#160=&#1602


    VAR

    &#160&#160long&#160&#160mousex,&#160mousey

    &#160&#160long&#160&#160tv_status&#160&#160&#160&#160&#160'0/1/2&#160=&#160off/visible/invisible&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160read-only
    &#160&#160long&#160&#160tv_enable&#160&#160&#160&#160&#160'0/?&#160=&#160off/on&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_pins&#160&#160&#160&#160&#160&#160&#160'%ppmmm&#160=&#160pins&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_mode&#160&#160&#160&#160&#160&#160&#160'%ccinp&#160=&#160chroma,interlace,ntsc/pal,swap&#160write-only
    &#160&#160long&#160&#160tv_screen&#160&#160&#160&#160&#160'pointer&#160to&#160screen&#160(words)&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_colors&#160&#160&#160&#160&#160'pointer&#160to&#160colors&#160(longs)&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_hc&#160&#160&#160&#160&#160&#160&#160&#160&#160'horizontal&#160cells&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_vc&#160&#160&#160&#160&#160&#160&#160&#160&#160'vertical&#160cells&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_hx&#160&#160&#160&#160&#160&#160&#160&#160&#160'horizontal&#160cell&#160expansion&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_vx&#160&#160&#160&#160&#160&#160&#160&#160&#160'vertical&#160cell&#160expansion&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_ho&#160&#160&#160&#160&#160&#160&#160&#160&#160'horizontal&#160offset&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_vo&#160&#160&#160&#160&#160&#160&#160&#160&#160'vertical&#160offset&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_broadcast&#160&#160'broadcast&#160frequency&#160(Hz)&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only
    &#160&#160long&#160&#160tv_auralcog&#160&#160&#160'aural&#160fm&#160cog&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160write-only

    &#160&#160word&#160&#160screen[x_tiles&#160*&#160y_tiles]
    &#160&#160long&#160&#160colors[64]

    &#160&#160byte&#160&#160x[lines]
    &#160&#160byte&#160&#160y[lines]
    &#160&#160byte&#160&#160xs[lines]
    &#160&#160byte&#160&#160ys[lines]


    OBJ

    &#160&#160tv&#160&#160&#160&#160:&#160"tv"
    &#160&#160gr&#160&#160&#160&#160:&#160"graphics"
    &#160&#160mouse&#160:&#160"mouse"


    PUB&#160start&#160|&#160i,&#160j,&#160k,&#160kk,&#160dx,&#160dy,&#160pp,&#160pq,&#160rr,&#160numx,&#160numchr

    &#160&#160'start&#160tv
    &#160&#160longmove(@tv_status,&#160@tvparams,&#160paramcount)
    &#160&#160tv_screen&#160:=&#160@screen
    &#160&#160tv_colors&#160:=&#160@colors
    &#160&#160tv.start(@tv_status)

    &#160&#160'init&#160colors
    &#160&#160repeat&#160i&#160from&#1600&#160to&#16063
    &#160&#160&#160&#160colors&#160:=&#160$00001010&#160*&#160(i+4)&#160&&#160$F&#160+&#160$2B060C02

    &#160&#160'init&#160tile&#160screen
    &#160&#160repeat&#160dx&#160from&#1600&#160to&#160tv_hc&#160-&#1601
    &#160&#160&#160&#160repeat&#160dy&#160from&#1600&#160to&#160tv_vc&#160-&#1601
    &#160&#160&#160&#160&#160&#160screen[dy&#160*&#160tv_hc&#160+&#160dx]&#160:=&#160display_base&#160>>&#1606&#160+&#160dy&#160+&#160dx&#160*&#160tv_vc&#160+&#160((dy&#160&&#160$3F)&#160<<&#16010)

    &#160&#160'init&#160bouncing&#160lines
    &#160&#160i&#160:=&#1601001
    &#160&#160j&#160:=&#160123123
    &#160&#160k&#160:=&#1608776434
    &#160&#160repeat&#160i&#160from&#1600&#160to&#160lines&#160-&#1601
    &#160&#160&#160&#160x&#160:=&#160?j&#160//&#16064
    &#160&#160&#160&#160y&#160:=&#160k?&#160//&#16048
    &#160&#160&#160&#160repeat&#160until&#160xs&#160:=&#160k?&#160~>&#16029
    &#160&#160&#160&#160repeat&#160until&#160ys&#160:=&#160?j&#160~>&#16029

    &#160&#160'start&#160and&#160setup&#160graphics
    &#160&#160gr.start
    &#160&#160gr.setup(16,&#16012,&#160128,&#16096,&#160bitmap_base)

    &#160&#160'start&#160mouse
    &#160&#160mouse.start(24,&#16025)

    &#160&#160repeat

    &#160&#160&#160&#160'clear&#160bitmap
    &#160&#160&#160&#160gr.clear

    &#160&#160&#160&#160'draw&#160spinning&#160triangles
    &#160&#160&#160&#160gr.colorwidth(3,0)
    &#160&#160&#160&#160repeat&#160i&#160from&#1601&#160to&#1608
    &#160&#160&#160&#160&#160&#160gr.vec(0,&#1600,&#160(k&#160&&#160$7F)&#160<<&#1603&#160+&#160i&#160<<&#1605,&#160k&#160<<&#1606&#160+&#160i&#160<<&#1608,&#160@vecdef)

    &#160&#160&#160&#160'draw&#160expanding&#160mouse&#160crosshairs
    &#160&#160&#160&#160gr.colorwidth(2,k>>2)
    &#160&#160&#160&#160mousex&#160:=&#160mousex&#160+&#160mouse.delta_x&#160#>&#160-128&#160<#&#160127
    &#160&#160&#160&#160mousey&#160:=&#160mousey&#160+&#160mouse.delta_y&#160#>&#160-96&#160<#&#16095
    &#160&#160&#160&#160gr.pix(mousex,&#160mousey,&#160k>>4&#160&&#160$7,&#160@pixdef)

    &#160&#160&#160&#160'if&#160left&#160mouse&#160button&#160pressed,&#160throw&#160snowballs
    &#160&#160&#160&#160if&#160mouse.button(0)
    &#160&#160&#160&#160&#160&#160gr.width(pq&#160&&#160$F)
    &#160&#160&#160&#160&#160&#160gr.color(2)
    &#160&#160&#160&#160&#160&#160pp&#160:=&#160(pq&#160&&#160$F)*(pq&#160&&#160$F)&#160+&#1605
    &#160&#160&#160&#160&#160&#160pq++
    &#160&#160&#160&#160&#160&#160gr.arc(mousex,&#160mousey,&#160pp,&#160pp>>1,&#160-k&#160*&#160200,&#160$200,&#1608,&#1600)
    &#160&#160&#160&#160else
    &#160&#160&#160&#160&#160&#160pq~

    &#160&#160&#160&#160'if&#160right&#160mouse&#160button&#160pressed,&#160pause
    &#160&#160&#160&#160repeat&#160while&#160mouse.button(1)

    &#160&#160&#160&#160'draw&#160expanding&#160pixel&#160halo
    &#160&#160&#160&#160gr.colorwidth(1,k)
    &#160&#160&#160&#160gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

    &#160&#160&#160&#160'step&#160bouncing&#160lines
    &#160&#160&#160&#160repeat&#160i&#160from&#1600&#160to&#160lines&#160-&#1601
    &#160&#160&#160&#160&#160&#160if&#160||~x&#160>&#16060
    &#160&#160&#160&#160&#160&#160&#160&#160-xs
    &#160&#160&#160&#160&#160&#160if&#160||~y&#160>&#16040
    &#160&#160&#160&#160&#160&#160&#160&#160-ys
    &#160&#160&#160&#160&#160&#160x&#160+=&#160xs
    &#160&#160&#160&#160&#160&#160y&#160+=&#160ys

    &#160&#160&#160&#160'draw&#160bouncing&#160lines
    &#160&#160&#160&#160gr.colorwidth(1,thickness)
    &#160&#160&#160&#160gr.plot(~x[0],&#160~y[0])
    &#160&#160&#160&#160repeat&#160i&#160from&#1601&#160to&#160lines&#160-&#1601
    &#160&#160&#160&#160&#160&#160gr.line(~x,~y)
    &#160&#160&#160&#160gr.line(~x[0],&#160~y[0])

    &#160&#160&#160&#160'draw&#160spinning&#160stars&#160and&#160revolving&#160crosshairs&#160and&#160dogs
    &#160&#160&#160&#160gr.colorwidth(2,0)
    &#160&#160&#160&#160repeat&#160i&#160from&#1600&#160to&#1607
    &#160&#160&#160&#160&#160&#160gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
    &#160&#160&#160&#160&#160&#160gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
    &#160&#160&#160&#160&#160&#160gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

    &#160&#160&#160&#160'draw&#160small&#160box&#160with&#160text
    &#160&#160&#160&#160gr.colorwidth(1,14)
    &#160&#160&#160&#160gr.box(60,-80,60,16)
    &#160&#160&#160&#160gr.textmode(1,1,6,5)
    &#160&#160&#160&#160gr.colorwidth(2,0)
    &#160&#160&#160&#160gr.text(90,-72,@pchip)

    &#160&#160&#160&#160'draw&#160incrementing&#160digit
    &#160&#160&#160&#160if&#160not&#160++numx&#160&&#1607
    &#160&#160&#160&#160&#160&#160numchr++
    &#160&#160&#160&#160if&#160numchr&#160<&#160"0"&#160or&#160numchr&#160>&#160"9"
    &#160&#160&#160&#160&#160&#160numchr&#160:=&#160"0"
    &#160&#160&#160&#160gr.textmode(8,8,6,5)
    &#160&#160&#160&#160gr.colorwidth(1,8)
    &#160&#160&#160&#160gr.text(-90,50,@numchr)

    &#160&#160&#160&#160'copy&#160bitmap&#160to&#160display
    &#160&#160&#160&#160gr.copy(display_base)

    &#160&#160&#160&#160'increment&#160counter&#160that&#160makes&#160everything&#160change
    &#160&#160&#160&#160k++


    DAT

    tvparams&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'status
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1601&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'enable
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#160%001_0101&#160&#160&#160&#160&#160&#160&#160'pins
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#160%0000&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'mode
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'screen
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'colors
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#160x_tiles&#160&#160&#160&#160&#160&#160&#160&#160&#160'hc
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#160y_tiles&#160&#160&#160&#160&#160&#160&#160&#160&#160'vc
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#16010&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'hx
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1601&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'vx
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'ho
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'vo
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'broadcast
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160long&#160&#160&#160&#1600&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'auralcog

    vecdef&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$4000+$2000/3*0&#160&#160&#160&#160&#160&#160&#160&#160&#160'triangle
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/3*1+1
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/3*2-1
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/3*0
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#1600

    vecdef2&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$4000+$2000/12*0&#160&#160&#160&#160&#160&#160&#160&#160'star
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*1
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16020
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*2
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*3
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16020
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*4
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*5
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16020
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*6
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*7
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16020
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*8
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*9
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16020
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*10
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*11
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16020
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160$8000+$2000/12*0
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#16050
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#1600

    pixdef&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'crosshair
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160byte&#160&#160&#160&#1602,7,3,3
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%00333000,%%00000000
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%03020300,%%00000000
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%30020030,%%00000000
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%32222230,%%00000000
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%30020030,%%02000000
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%03020300,%%22200000
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%00333000,%%02000000

    pixdef2&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'dog
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160byte&#160&#160&#160&#1601,4,0,3
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%20000022
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%02222222
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%02222200
    &#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160word&#160&#160&#160&#160%%02000200

    pchip&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160byte&#160&#160&#160&#160"Propeller",0&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160TERMS&#160OF&#160USE:&#160MIT&#160License&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission&#160is&#160hereby&#160granted,&#160free&#160of&#160charge,&#160to&#160any&#160person&#160obtaining&#160a&#160copy&#160of&#160this&#160software&#160and&#160associated&#160documentation&#160&#160&#160&#160│
    │files&#160(the&#160"Software"),&#160to&#160deal&#160in&#160the&#160Software&#160without&#160restriction,&#160including&#160without&#160limitation&#160the&#160rights&#160to&#160use,&#160copy,&#160&#160&#160&#160│
    │modify,&#160merge,&#160publish,&#160distribute,&#160sublicense,&#160and/or&#160sell&#160copies&#160of&#160the&#160Software,&#160and&#160to&#160permit&#160persons&#160to&#160whom&#160the&#160Software│
    │is&#160furnished&#160to&#160do&#160so,&#160subject&#160to&#160the&#160following&#160conditions:&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    │&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    │The&#160above&#160copyright&#160notice&#160and&#160this&#160permission&#160notice&#160shall&#160be&#160included&#160in&#160all&#160copies&#160or&#160substantial&#160portions&#160of&#160the&#160Software.│
    │&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    │THE&#160SOFTWARE&#160IS&#160PROVIDED&#160"AS&#160IS",&#160WITHOUT&#160WARRANTY&#160OF&#160ANY&#160KIND,&#160EXPRESS&#160OR&#160IMPLIED,&#160INCLUDING&#160BUT&#160NOT&#160LIMITED&#160TO&#160THE&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    │WARRANTIES&#160OF&#160MERCHANTABILITY,&#160FITNESS&#160FOR&#160A&#160PARTICULAR&#160PURPOSE&#160AND&#160NONINFRINGEMENT.&#160IN&#160NO&#160EVENT&#160SHALL&#160THE&#160AUTHORS&#160OR&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    │COPYRIGHT&#160HOLDERS&#160BE&#160LIABLE&#160FOR&#160ANY&#160CLAIM,&#160DAMAGES&#160OR&#160OTHER&#160LIABILITY,&#160WHETHER&#160IN&#160AN&#160ACTION&#160OF&#160CONTRACT,&#160TORT&#160OR&#160OTHERWISE,&#160&#160&#160│
    │ARISING&#160FROM,&#160OUT&#160OF&#160OR&#160IN&#160CONNECTION&#160WITH&#160THE&#160SOFTWARE&#160OR&#160THE&#160USE&#160OR&#160OTHER&#160DEALINGS&#160IN&#160THE&#160SOFTWARE.&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160&#160│
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 12:08
    ''***************************************
    ''*  Graphics Demo                      *
    ''*  Author: Chip Gracey                *
    ''*  Copyright (c) 2005 Parallax, Inc.  *
    ''*  See end of file for terms of use.  *
    ''***************************************


    CON

      _clkmode = xtal1 + pll16x
      _xinfreq = 5_000_000
      _stack = ($3000 + $3000 + 100) >> 2   'accomodate display memory and stack

      x_tiles = 16
      y_tiles = 12

      paramcount = 14
      bitmap_base = $2000
      display_base = $5000

      lines = 5
      thickness = 2


    VAR

      long  mousex, mousey

      long  tv_status     '0/1/2 = off/visible/invisible           read-only
      long  tv_enable     '0/? = off/on                            write-only
      long  tv_pins       '%ppmmm = pins                           write-only
      long  tv_mode       '%ccinp = chroma,interlace,ntsc/pal,swap write-only
      long  tv_screen     'pointer to screen (words)               write-only
      long  tv_colors     'pointer to colors (longs)               write-only
      long  tv_hc         'horizontal cells                        write-only
      long  tv_vc         'vertical cells                          write-only
      long  tv_hx         'horizontal cell expansion               write-only
      long  tv_vx         'vertical cell expansion                 write-only
      long  tv_ho         'horizontal offset                       write-only
      long  tv_vo         'vertical offset                         write-only
      long  tv_broadcast  'broadcast frequency (Hz)                write-only
      long  tv_auralcog   'aural fm cog                            write-only

      word  screen[x_tiles * y_tiles]
      long  colors[64]

      byte  x[lines]
      byte  y[lines]
      byte  xs[lines]
      byte  ys[lines]


    OBJ

      tv    : "tv"
      gr    : "graphics"
      mouse : "mouse"


    PUB start | i, j, k, kk, dx, dy, pp, pq, rr, numx, numchr

      'start tv
      longmove(@tv_status, @tvparams, paramcount)
      tv_screen := @screen
      tv_colors := @colors
      tv.start(@tv_status)

      'init colors
      repeat i from 0 to 63
        colors := $00001010 * (i+4) & $F + $2B060C02

      'init tile screen
      repeat dx from 0 to tv_hc - 1
        repeat dy from 0 to tv_vc - 1
          screen[dy * tv_hc + dx] := display_base >> 6 + dy + dx * tv_vc + ((dy & $3F) << 10)

      'init bouncing lines
      i := 1001
      j := 123123
      k := 8776434
      repeat i from 0 to lines - 1
        x := ?j // 64
        y := k? // 48
        repeat until xs := k? ~> 29
        repeat until ys := ?j ~> 29

      'start and setup graphics
      gr.start
      gr.setup(16, 12, 128, 96, bitmap_base)

      'start mouse
      mouse.start(24, 25)

      repeat

        'clear bitmap
        gr.clear

        'draw spinning triangles
        gr.colorwidth(3,0)
        repeat i from 1 to 8
          gr.vec(0, 0, (k & $7F) << 3 + i << 5, k << 6 + i << 8, @vecdef)

        'draw expanding mouse crosshairs
        gr.colorwidth(2,k>>2)
        mousex := mousex + mouse.delta_x #> -128 <# 127
        mousey := mousey + mouse.delta_y #> -96 <# 95
        gr.pix(mousex, mousey, k>>4 & $7, @pixdef)

        'if left mouse button pressed, throw snowballs
        if mouse.button(0)
          gr.width(pq & $F)
          gr.color(2)
          pp := (pq & $F)*(pq & $F) + 5
          pq++
          gr.arc(mousex, mousey, pp, pp>>1, -k * 200, $200, 8, 0)
        else
          pq~

        'if right mouse button pressed, pause
        repeat while mouse.button(1)

        'draw expanding pixel halo
        gr.colorwidth(1,k)
        gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

        'step bouncing lines
        repeat i from 0 to lines - 1
          if ||~x > 60
            -xs
          if ||~y > 40
            -ys
          x += xs
          y += ys

        'draw bouncing lines
        gr.colorwidth(1,thickness)
        gr.plot(~x[0], ~y[0])
        repeat i from 1 to lines - 1
          gr.line(~x,~y)
        gr.line(~x[0], ~y[0])

        'draw spinning stars and revolving crosshairs and dogs
        gr.colorwidth(2,0)
        repeat i from 0 to 7
          gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
          gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
          gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

        'draw small box with text
        gr.colorwidth(1,14)
        gr.box(60,-80,60,16)
        gr.textmode(1,1,6,5)
        gr.colorwidth(2,0)
        gr.text(90,-72,@pchip)

        'draw incrementing digit
        if not ++numx & 7
          numchr++
        if numchr < "0" or numchr > "9"
          numchr := "0"
        gr.textmode(8,8,6,5)
        gr.colorwidth(1,8)
        gr.text(-90,50,@numchr)

        'copy bitmap to display
        gr.copy(display_base)

        'increment counter that makes everything change
        k++


    DAT

    tvparams                long    0               'status
                            long    1               'enable
                            long    %001_0101       'pins
                            long    %0000           'mode
                            long    0               'screen
                            long    0               'colors
                            long    x_tiles         'hc
                            long    y_tiles         'vc
                            long    10              'hx
                            long    1               'vx
                            long    0               'ho
                            long    0               'vo
                            long    0               'broadcast
                            long    0               'auralcog

    vecdef                  word    $4000+$2000/3*0         'triangle
                            word    50
                            word    $8000+$2000/3*1+1
                            word    50
                            word    $8000+$2000/3*2-1
                            word    50
                            word    $8000+$2000/3*0
                            word    50
                            word    0

    vecdef2                 word    $4000+$2000/12*0        'star
                            word    50
                            word    $8000+$2000/12*1
                            word    20
                            word    $8000+$2000/12*2
                            word    50
                            word    $8000+$2000/12*3
                            word    20
                            word    $8000+$2000/12*4
                            word    50
                            word    $8000+$2000/12*5
                            word    20
                            word    $8000+$2000/12*6
                            word    50
                            word    $8000+$2000/12*7
                            word    20
                            word    $8000+$2000/12*8
                            word    50
                            word    $8000+$2000/12*9
                            word    20
                            word    $8000+$2000/12*10
                            word    50
                            word    $8000+$2000/12*11
                            word    20
                            word    $8000+$2000/12*0
                            word    50
                            word    0

    pixdef                  word                            'crosshair
                            byte    2,7,3,3
                            word    %%00333000,%%00000000
                            word    %%03020300,%%00000000
                            word    %%30020030,%%00000000
                            word    %%32222230,%%00000000
                            word    %%30020030,%%02000000
                            word    %%03020300,%%22200000
                            word    %%00333000,%%02000000

    pixdef2                 word                            'dog
                            byte    1,4,0,3
                            word    %%20000022
                            word    %%02222222
                            word    %%02222200
                            word    %%02000200

    pchip                   byte    "Propeller",0           'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │                                                   TERMS OF USE: MIT License                                                  │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation    │
    │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,    │
    │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
    │is furnished to do so, subject to the following conditions:                                                                   │
    │                                                                                                                              │
    │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
    │                                                                                                                              │
    │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE          │
    │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR         │
    │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,   │
    │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                         │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 12:08
    ''***************************************
    ''*  Graphics Demo                      *
    ''*  Author: Chip Gracey                *
    ''*  Copyright (c) 2005 Parallax, Inc.  *
    ''*  See end of file for terms of use.  *
    ''***************************************


    CON

      _clkmode = xtal1 + pll16x
      _xinfreq = 5_000_000
      _stack = ($3000 + $3000 + 100) >> 2   'accomodate display memory and stack

      x_tiles = 16
      y_tiles = 12

      paramcount = 14
      bitmap_base = $2000
      display_base = $5000

      lines = 5
      thickness = 2


    VAR

      long  mousex, mousey

      long  tv_status     '0/1/2 = off/visible/invisible           read-only
      long  tv_enable     '0/? = off/on                            write-only
      long  tv_pins       '%ppmmm = pins                           write-only
      long  tv_mode       '%ccinp = chroma,interlace,ntsc/pal,swap write-only
      long  tv_screen     'pointer to screen (words)               write-only
      long  tv_colors     'pointer to colors (longs)               write-only
      long  tv_hc         'horizontal cells                        write-only
      long  tv_vc         'vertical cells                          write-only
      long  tv_hx         'horizontal cell expansion               write-only
      long  tv_vx         'vertical cell expansion                 write-only
      long  tv_ho         'horizontal offset                       write-only
      long  tv_vo         'vertical offset                         write-only
      long  tv_broadcast  'broadcast frequency (Hz)                write-only
      long  tv_auralcog   'aural fm cog                            write-only

      word  screen[x_tiles * y_tiles]
      long  colors[64]

      byte  x[lines]
      byte  y[lines]
      byte  xs[lines]
      byte  ys[lines]


    OBJ

      tv    : "tv"
      gr    : "graphics"
      mouse : "mouse"


    PUB start | i, j, k, kk, dx, dy, pp, pq, rr, numx, numchr

      'start tv
      longmove(@tv_status, @tvparams, paramcount)
      tv_screen := @screen
      tv_colors := @colors
      tv.start(@tv_status)

      'init colors
      repeat i from 0 to 63
        colors := $00001010 * (i+4) & $F + $2B060C02

      'init tile screen
      repeat dx from 0 to tv_hc - 1
        repeat dy from 0 to tv_vc - 1
          screen[dy * tv_hc + dx] := display_base >> 6 + dy + dx * tv_vc + ((dy & $3F) << 10)

      'init bouncing lines
      i := 1001
      j := 123123
      k := 8776434
      repeat i from 0 to lines - 1
        x := ?j // 64
        y := k? // 48
        repeat until xs := k? ~> 29
        repeat until ys := ?j ~> 29

      'start and setup graphics
      gr.start
      gr.setup(16, 12, 128, 96, bitmap_base)

      'start mouse
      mouse.start(24, 25)

      repeat

        'clear bitmap
        gr.clear

        'draw spinning triangles
        gr.colorwidth(3,0)
        repeat i from 1 to 8
          gr.vec(0, 0, (k & $7F) << 3 + i << 5, k << 6 + i << 8, @vecdef)

        'draw expanding mouse crosshairs
        gr.colorwidth(2,k>>2)
        mousex := mousex + mouse.delta_x #> -128 <# 127
        mousey := mousey + mouse.delta_y #> -96 <# 95
        gr.pix(mousex, mousey, k>>4 & $7, @pixdef)

        'if left mouse button pressed, throw snowballs
        if mouse.button(0)
          gr.width(pq & $F)
          gr.color(2)
          pp := (pq & $F)*(pq & $F) + 5
          pq++
          gr.arc(mousex, mousey, pp, pp>>1, -k * 200, $200, 8, 0)
        else
          pq~

        'if right mouse button pressed, pause
        repeat while mouse.button(1)

        'draw expanding pixel halo
        gr.colorwidth(1,k)
        gr.arc(0,0,80,30,-k<<5,$2000/9,9,0)

        'step bouncing lines
        repeat i from 0 to lines - 1
          if ||~x > 60
            -xs
          if ||~y > 40
            -ys
          x += xs
          y += ys

        'draw bouncing lines
        gr.colorwidth(1,thickness)
        gr.plot(~x[0], ~y[0])
        repeat i from 1 to lines - 1
          gr.line(~x,~y)
        gr.line(~x[0], ~y[0])

        'draw spinning stars and revolving crosshairs and dogs
        gr.colorwidth(2,0)
        repeat i from 0 to 7
          gr.vecarc(80,50,30,30,-(i<<10+k<<6),$40,-(k<<7),@vecdef2)
          gr.pixarc(-80,-40,30,30,i<<10+k<<6,0,@pixdef2)
          gr.pixarc(-80,-40,20,20,-(i<<10+k<<6),0,@pixdef)

        'draw small box with text
        gr.colorwidth(1,14)
        gr.box(60,-80,60,16)
        gr.textmode(1,1,6,5)
        gr.colorwidth(2,0)
        gr.text(90,-72,@pchip)

        'draw incrementing digit
        if not ++numx & 7
          numchr++
        if numchr < "0" or numchr > "9"
          numchr := "0"
        gr.textmode(8,8,6,5)
        gr.colorwidth(1,8)
        gr.text(-90,50,@numchr)

        'copy bitmap to display
        gr.copy(display_base)

        'increment counter that makes everything change
        k++


    DAT

    tvparams                long    0               'status
                            long    1               'enable
                            long    %001_0101       'pins
                            long    %0000           'mode
                            long    0               'screen
                            long    0               'colors
                            long    x_tiles         'hc
                            long    y_tiles         'vc
                            long    10              'hx
                            long    1               'vx
                            long    0               'ho
                            long    0               'vo
                            long    0               'broadcast
                            long    0               'auralcog

    vecdef                  word    $4000+$2000/3*0         'triangle
                            word    50
                            word    $8000+$2000/3*1+1
                            word    50
                            word    $8000+$2000/3*2-1
                            word    50
                            word    $8000+$2000/3*0
                            word    50
                            word    0

    vecdef2                 word    $4000+$2000/12*0        'star
                            word    50
                            word    $8000+$2000/12*1
                            word    20
                            word    $8000+$2000/12*2
                            word    50
                            word    $8000+$2000/12*3
                            word    20
                            word    $8000+$2000/12*4
                            word    50
                            word    $8000+$2000/12*5
                            word    20
                            word    $8000+$2000/12*6
                            word    50
                            word    $8000+$2000/12*7
                            word    20
                            word    $8000+$2000/12*8
                            word    50
                            word    $8000+$2000/12*9
                            word    20
                            word    $8000+$2000/12*10
                            word    50
                            word    $8000+$2000/12*11
                            word    20
                            word    $8000+$2000/12*0
                            word    50
                            word    0

    pixdef                  word                            'crosshair
                            byte    2,7,3,3
                            word    %%00333000,%%00000000
                            word    %%03020300,%%00000000
                            word    %%30020030,%%00000000
                            word    %%32222230,%%00000000
                            word    %%30020030,%%02000000
                            word    %%03020300,%%22200000
                            word    %%00333000,%%02000000

    pixdef2                 word                            'dog
                            byte    1,4,0,3
                            word    %%20000022
                            word    %%02222222
                            word    %%02222200
                            word    %%02000200

    pchip                   byte    "Propeller",0           'text

    {{

    ┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
    │                                                   TERMS OF USE: MIT License                                                  │
    ├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
    │Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation    │
    │files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,    │
    │modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│
    │is furnished to do so, subject to the following conditions:                                                                   │
    │                                                                                                                              │
    │The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│
    │                                                                                                                              │
    │THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE          │
    │WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR         │
    │COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,   │
    │ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                         │
    └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
    }}
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 12:09
    Sweet, but for the width problem.

    I may well go with that on occasion. Thanks Phil!!
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2010-08-14 12:22
    I'm still wrestling with it for the conversion. I was using

    [noparse]_[/noparse]

    for each non-breaking space encountered in the outer text before discovering the '160' code. But now that I've found out that the '160' code is not re-editable, I may have to go back to that. BTW, the 'sp' code was a failed experiment to force a   into the text.

    -Phil
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 12:33
    The non edit is kind of a bummer. Good to have the option though.

    It's pretty to do the find==replace all operation, copy, paste, submit!

    One advantage of the code window is being able to preserve long line lengths. I may use it, at times for that purpose. Otherwise, I think the inline code is much more accessible and readable overall.

    Generally, I'm sensitive to state context changes in interfaces. When they don't really add a lot of value, I generally have a poor reaction to them. In the case of some long line length formatted text, having the scroll window actually does add some nice value, and it's a good option to have.

    For other bits of code, it's jarring to shift from the text mode, to the code window mode, then back to text, etc...

    Plus, there is always ASCII art. We've all used it some here, and I generally like knowing that's possible.

    Thanks again! Seems I was close, but not quite spot on in my adventures this morning. I liked the colored dot, and would like your colored underscore, but the 50K limit (which I think is perfectly reasonable) tends to limit the overall size. This method gets one a nice chunk of code with few hassles, and it can be copy pasted elsewhere, without really having to operate on it. Big plus!
  • potatoheadpotatohead Posts: 10,261
    edited 2010-08-14 12:37
    In your conversion efforts, you should ask Ken and Jim, if there isn't an option or two that would help out.

    I liked the pre tag that has been used in places. I think that one does output non-breaking spaces where there are spaces in the original text. Maybe that's just something we could turn on, rendering this whole thing a matter of using the right tag?
  • John R.John R. Posts: 1,376
    edited 2010-08-16 09:34
    I'm still wrestling with it for the conversion. I was using

    [noparse]_[/noparse]

    for each non-breaking space encountered in the outer text before discovering the '160' code. But now that I've found out that the '160' code is not re-editable, I may have to go back to that. BTW, the 'sp' code was a failed experiment to force a   into the text.

    -Phil

    What are the implications for a cut and paste with the [noparse]_[/noparse] option?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2010-08-16 09:56
    You'd probably just get the underline, with no coloring. BTW, this treatment of spaces is not being contemplated for code blocks, since it's unnecessary there. Anything cut and pasted from code blocks will just be pure code.

    -Phil
  • John R.John R. Posts: 1,376
    edited 2010-08-16 12:24

    Anything cut and pasted from code blocks will just be pure code.

    -Phil

    Cool beans, I was probably reading something into this that I shouldn't have.
Sign In or Register to comment.