How to erase string on TV
Hi.
I'm studying TV-display.
I want to erase string"ABCD".
But It cannot erase below;
How do erase string?
I'm studying TV-display.
I want to erase string"ABCD".
But It cannot erase below;
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
twenty_sec = 1_600_000_000
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"
PUB start | i, dx, dy, a
'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[i] := $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)
gr.start
gr.setup(16, 12, 128, 96, bitmap_base)
gr.colorwidth(1,1)
gr.textmode(2,2,6,1)
gr.clear
repeat
gr.text(80,-80,string("ABCD"))
gr.copy(display_base)
waitcnt(clkfreq*2 + cnt)
gr.text(80,-80,string(" "))
gr.copy(display_base)
waitcnt(clkfreq*2 + cnt)
DAT
tvparams long 2 '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
How do erase string?

Comments
The graphics object uses a vector font and draws only the lines for the character, but not the background, thats why erasing with spaces does not work. Do you really need the graphics object? TV_Text, which uses the ROM-Bitmap font, is much simpler and can overdraw characters with spaces.
Andy
I need graphic object because I want to display pulse-wave and pulse-value.
I tried to write "0" in v-ram.
I put string"ABCD" topof v-ram(left-up on TVscreen).
repeat gr.text(-128,96,string("ABCD")) gr.copy(display_base) waitcnt(clkfreq*2 + cnt) a := bitmap/4 longfill(@a, 0, 16) gr.copy(display_base) waitcnt(clkfreq*2 + cnt)But character"A" don't erase.
Character"A" erased when I changed "longfill(@a, 0, 630)".
How is relation of V-ram address and TVscreen?
Haven't tested this with your code but changing the color of the text to the background color should work.
repeat gr.colorwidth(1,1) gr.text(80,-80,string("ABCD")) gr.copy(display_base) waitcnt(clkfreq*2 + cnt) gr.colorwidth(0,1) gr.text(80,-80,string("ABCD")) gr.copy(display_base) waitcnt(clkfreq*2 + cnt)Thanks Beau Schwabe.
But it cannot use.
Codes I showed is merely sample.
Pulse monitor display many string(OVER, UNDER, LOST, and number from 50 to 199).
Every strings overlap.
You'll need to keep track of what strings were displayed (and where) so they can be erased.
"...Pulse monitor display many string(OVER, UNDER, LOST, and number from 50 to 199)....Every strings overlap." - Sure you can, just keep track of the old number versus the new number... if there is a change then clear the display (color 0) with the old number, and then replace it (color 1) with the new number.
...Edit: dang Duane :-) apparently I'm going to be your back seat driver today. You beat me to it again :-)
@Beau, You can be my back seat driver anytime. I just wish I could get back at Phil for the dozens of times he's bet me to it.
@caskaz, To go along with what Beau said. You'll want to only write the numbers to the screen when their values change. Part of the writing process will be to write the previous value in the background color and the write the new value. You don't want to continuously be erasing the last value (if it's the same) since the numbers will flicker. There's actually a lot of displays that need to be treated this way. I'm almost starting to get used to it.
BTW, Your project looks way cool. I love the look of that line across the screen.
Thanks Duane Degn and Beau Schwabe.
I think problem(Character overlap) had gone.
I did think changing the color of the text can't erase string.
I had misunderstanding.
This month(3/24), Open source conferense EHIME(OSC EHIME) open at Ehime-university.
Kansai Propeller User Group(propelabu) have exhibition on OSC EHIME.
So I demonstrate this "PulseMonitor TV".
If you live at Ehime in Japan, please visit OSC EHIME.
http://www.ospn.jp/osc2012-ehime/
(It's japanese langauge)