PDA

View Full Version : Arraywrite SKIP not supported, DEC for common variable not supported, any ideas?



CuriousOne
- 15th September 2022, 08:17
Hello. I need to have this code:

ARRAYWRITE TEXTLINE,[DEC T5, DEC T6]

but to make it write into last bytes of TEXTLINE array, which is 16 bytes long.

SKIP operator is not supported for ARRAYWRITE.
I know that I can directly write to array like

TEXTLINE[X]=Y

But I need to use DEC modifier, which is not supported for non-array variables.

Any ideas?

Ioannis
- 15th September 2022, 12:03
Using a temporary var maybe?

temp=dec t5

TEXTLINE[X]=temp

temp=dec t6

TEXTLINE[X+1]=temp

Ioannis

CuriousOne
- 15th September 2022, 14:05
No it does not works

A=DEC B gives "bad expression" error.

Ioannis
- 15th September 2022, 14:13
Yeah I forgot that. You have to make the calculations and then assign the value.

Maybe others have a better idea.

Ioannis

mpgmike
- 15th September 2022, 15:45
If you are wanting to convert to ASCii, just add $30 to numeric values. This works only for single digits 0 >> 9 though.

Ioannis
- 15th September 2022, 20:11
The addition of $30 will not convert numeric 123 in a three byte ascii value as requested. Either way two words are not enough in the first place. For a byte you need three bytes after the conversion, so for two bytes you need total 6 bytes holding the ascii values.

I suppose t5 and t6 are bytes. The following will read three bytes for t5 and another three bytes for t6 into temp array. If value of say t5 is 5 then the array temp will be "0","0","5" in ascii format.

arrayread temp,[dec3 t5,dec3 t6]

then you can transfer the 6 bytes to the place you want in the final array.

Ioannis

richard
- 17th September 2022, 01:09
for a 16 byte buffer going to this much trouble to format the last 8 bytes seems unproductive
why not just format the whole thing properly in one go to start with ?

CuriousOne
- 19th September 2022, 05:23
Why update whole screen all the time, when I need only two digits to be changed?

richard
- 19th September 2022, 06:21
Why update the buffer at all when you can do partial screen updates ?
if the buffer is not part of the screen update process then what purpose does it serve ?
makes little to no sense to me

CuriousOne
- 20th September 2022, 08:32
The screen update routine is called once per second, according to time change, which is provided by DS3231.
However, other subroutines are not synced to clock seconds and have own "schedule" of being called.
So it's quite logical to have data ready, but update screen once per second.