PDA

View Full Version : Setting whole content of array variable in a simple way?



CuriousOne
- 3rd June 2023, 21:05
Hello.

Say I have 24 byte array, called "time"
I want to set it's content to 32 (That's ASCII code for space)
TIME=32 Does not work. I have to use:

arraywrite time, [32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32 ,32,32,32,32,32,32,32]

This is weird, and will get even weirder, with longer arrays.
Yes I know there are FOR-NEXT, DO-LOOP and other ways of filling array, but I'm curious, why there's no single statement for doing that?

richard
- 4th June 2023, 01:48
one of pbp3's most redeeming features is USERCOMMAND , If you feel a command is missing then simply create your own
a MEMSET cmd that emulates the C memset(array_name,fill_chr,length) function could easily be created
start here (https://support.melabs.com/forum/picbasic-pro-compiler-3-0-and-later/usercommand)

Ioannis
- 4th June 2023, 20:04
page 119 of the manual:

rep 32\24

Ioannis

CuriousOne
- 4th June 2023, 20:48
Thanks!
That appears to be at least partial, but still usable solution.
But arraywrite must always start from position 0 of array, right?

p.s. in PBP_Manual_0609_260 on page 119 it's all about LCDOUT.

Acetronics2
- 4th June 2023, 22:07
if the value bytes are constants ...
you could use POKECODE ...

i.e.


'************************************************* ****************************
'Fading_Table
'************************************************* ****************************
' 0 1 2 3 4 5 6 7 8 9
'
Pokecode @881, 24, 27, 29, 32, 35, 38, 41, 44, 47,_ ' 30
50, 54, 57, 60, 64, 68, 71, 75, 79, 83,_ ' 40
87, 91, 96,100,104,109,113,118,123,127,_ ' 50
132,137,142,147,153,158,163,169,174,180,_ ' 60
186,191,197,203,209,212,217,245,250, 1,_ ' 70
7, 13, 21, 30, 39, 48, 57, 24, 25, 26,_ ' 80
27, 28, 29, 30, 31, 32, 33, 34, 35, 36,_ ' 90
37, 38, 39, 40, 41, 43, 44, 45, 46, 48,_ ' 100
49, 50, 52, 53, 54, 56, 57, 59, 60, 62,_ ' 110
63, 65, 67, 68, 70, 72, 73, 75, 77, 79,_ ' 120
81, 83, 84, 86, 88, 90, 92, 94, 97, 99,_ ' 130
101,103,105,107,110,112,114,117,119,122,_ ' 140
124,126,129,132,134,137,139,142,145,148,_ ' 150
150,153,156,159,162,165,168,172,176,180' 160


see § 5.54 of the LAST version Holy Manual ...

BUUUUUT ... Which version of PBP do you use ???
might be 2.60 ?

Alain

Ioannis
- 5th June 2023, 10:01
Thanks!
That appears to be at least partial, but still usable solution.
But arraywrite must always start from position 0 of array, right?

p.s. in PBP_Manual_0609_260 on page 119 it's all about LCDOUT.

I always refer to the latest Manual.

Yes, the command is referenced to the position 0. If you need something else then you have other options:

1. USERCOMMAND and do something on your own
2. Alias to another array.

But you were specific weren't you? Fill an array with a specific character.

Ioannis

CuriousOne
- 7th June 2023, 21:37
I'm using this manual : https://melabs.com/downloads/PBP_Manual_0609_260.pdf

I know what is the USERCOMMAND.
I had similar USR on ZX Spectrum for ASM code or DEF FN for Basic code :)

Ioannis
- 7th June 2023, 23:12
Which version of PBP do you own?

Ioannis

Acetronics2
- 8th June 2023, 06:46
Which version of PBP do you own?

Ioannis

Hi, Ioannis

this is obviously a link to the 2.60 Version Manual ... dated 2009/06 ...

a true Vintage one ;)

Let's suppose PBP Version is the same 2.60 version ( not guaranteed ... )

Alain

Ioannis
- 8th June 2023, 08:17
If he uses Arrayread/Arraywrite, I doubt that...

Ioannis

Acetronics2
- 8th June 2023, 14:16
If he uses Arrayread/Arraywrite, I doubt that...

Ioannis

ARRAYREAD / ARRAYWRITE belong to the V 2.60 manual ... I have this printed manual in front of me ... :rolleyes:
I also have HUGE archives ( My SSD holds ... a bit more than 1.4 TB !!! ) ;)

Alain

amgen
- 9th June 2023, 01:11
Preview
Default Re: Setting whole content of array variable in a simple way?
from the
' MPASM™ Assembler,
MPLINK™ Object Linker,
MPLIB™ Object Librarian
User’s Guide'

you might be able to use the FILL command....... something like this...calling gosub FILLING



FILLING:
ASM
org: _time 'location by the name of your-array
fill 32, 24 'puts dec 32 in next 24 locations
ENDASM
Return
this is one of the directives of MPASM, hopefully the '_array' with the underscore IS the location in ram of your array

richard
- 9th June 2023, 03:23
hopefully the '_array' with the underscore IS the location in ram of your array

which won't happen because FILL works in Program Memory [code space]