Code with no scroller test...

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!
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
Strike two!! This one was the same exercise with a quote tag.
''***************************************
''* 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.
''*[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]│
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
''***************************************
''* 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]
''*[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]│
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
''*[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]│
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
''*··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.·························│
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
····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
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
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
''*  Graphics Demo                      *
''*  Author: Chip Gracey                *
''*  Copyright (c)� Parallax, Inc.  *
''*  See end of file for terms of use.  *
''***************************************
CON
  _clkmode = xtal1 + pll16x
  _xinfreq =م_000_000
  _stack = ($3000 + $3000 +𧅤) >>ق   'accomodate display memory and stack
  x_tiles =㺐
  y_tiles =㺌
  paramcount =㺎
  bitmap_base = $2000
  display_base = $5000
  lines =م
  thickness =ق
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ـ to㺿
    colors := $00001010 * (i+4) & $F + $2B060C02
  'init tile screen
  repeat dx fromـ to tv_hc -ف
    repeat dy fromـ to tv_vc -ف
      screen[dy * tv_hc + dx] := display_base >>ن + dy + dx * tv_vc + ((dy & $3F) <<㺊)
  'init bouncing lines
  i :=�
  j :=�
  k :=�
  repeat i fromـ to lines -ف
    x := ?j //㻀
    y := k? //㺰
    repeat until xs := k? ~>㺝
    repeat until ys := ?j ~>㺝
  'start and setup graphics
  gr.start
  gr.setup(16,㺌,𧆀,㻠, bitmap_base)
  'start mouse
  mouse.start(24,㺙)
  repeat
    'clear bitmap
    gr.clear
    'draw spinning triangles
    gr.colorwidth(3,0)
    repeat i fromف toو
      gr.vec(0,ـ, (k & $7F) <<ك + i <<م, k <<ن + i <<و, @vecdef)
    'draw expanding mouse crosshairs
    gr.colorwidth(2,k>>2)
    mousex := mousex + mouse.delta_x #> -128 <#𧅿
    mousey := mousey + mouse.delta_y #> -96 <#㻟
    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) +م
      pq++
      gr.arc(mousex, mousey, pp, pp>>1, -k *𧇈, $200,و,ـ)
    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ـ to lines -ف
      if ||~x >㺼
        -xs
      if ||~y >㺨
        -ys
      x += xs
      y += ys
    'draw bouncing lines
    gr.colorwidth(1,thickness)
    gr.plot(~x[0], ~y[0])
    repeat i fromف to lines -ف
      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ـ toه
      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 &ه
      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   ـ               'status
                        long   ف               'enable
                        long    %001_0101       'pins
                        long    %0000           'mode
                        long   ـ               'screen
                        long   ـ               'colors
                        long    x_tiles         'hc
                        long    y_tiles         'vc
                        long   㺊              'hx
                        long   ف               'vx
                        long   ـ               'ho
                        long   ـ               'vo
                        long   ـ               'broadcast
                        long   ـ               'auralcog
vecdef                  word    $4000+$2000/3*0         'triangle
                        word   㺲
                        word    $8000+$2000/3*1+1
                        word   㺲
                        word    $8000+$2000/3*2-1
                        word   㺲
                        word    $8000+$2000/3*0
                        word   㺲
                        word   ـ
vecdef2                 word    $4000+$2000/12*0        'star
                        word   㺲
                        word    $8000+$2000/12*1
                        word   㺔
                        word    $8000+$2000/12*2
                        word   㺲
                        word    $8000+$2000/12*3
                        word   㺔
                        word    $8000+$2000/12*4
                        word   㺲
                        word    $8000+$2000/12*5
                        word   㺔
                        word    $8000+$2000/12*6
                        word   㺲
                        word    $8000+$2000/12*7
                        word   㺔
                        word    $8000+$2000/12*8
                        word   㺲
                        word    $8000+$2000/12*9
                        word   㺔
                        word    $8000+$2000/12*10
                        word   㺲
                        word    $8000+$2000/12*11
                        word   㺔
                        word    $8000+$2000/12*0
                        word   㺲
                        word   ـ
pixdef                  word                            'crosshair
                        byte   ق,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   ف,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.                         │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
''* 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. │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
''* 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. │
└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
}}
I may well go with that on occasion. Thanks Phil!!
[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
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!
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?
What are the implications for a cut and paste with the [noparse]_[/noparse] option?
-Phil
Cool beans, I was probably reading something into this that I shouldn't have.