How to Fill Datas in a Basic variable.

Anything Sinclair ZX Basic related; history, development, tips - differences between BASIC on the ZX80 and ZX81
Post Reply
User avatar
XavSnap
Posts: 1941
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

How to Fill Datas in a Basic variable.

Post by XavSnap »

How to Fill Datas in a Basic variable.

BASIC Exemple (1):
How to Fill integers...(0 to 255)


Code: Select all

33 DIM E(37)
##1, 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10
60 REM INIT VAR E():
62 LET ADD=PEEK 16425+256*PEEK 16426+5
65 REM [DEC:\
002,003,004,005,006,000,008,009,010,011,\
000,000,014,015,000,000,000,000,020,000,\
000,023,000,000,026,027,028,029,030,000,\
032,000,034,035,036,000 ]
66 FOR A=1 TO 36
67 LET E(A)=PEEK (ADD+A-1)
69 NEXT A
BASIC Exemple (2):
How to Fill integers...

Code: Select all

8 DIM N(23)
15 LET ADD=PEEK 16425+256*PEEK 16426+5
16 REM 05100š09.40š13180š\
17220š21260š25320š\
05100Ÿ09.40Ÿ-3180Ÿ\
17220Ÿ21260Ÿ25320Ÿ\
-1.41š03081š07121š\
11161š20.51š24321š\
05101Ÿ09141Ÿ13.81Ÿ\
17221Ÿ-1261Ÿ
55 FOR Z=1 TO 23
56 GOSUB 80
57 LET N(Z)=VAL D$
58 PRINT N(Z),
59 NEXT Z
60 STOP

79 REM GET A VALUE.
80 LET D$=""
81 LET D=PEEK ADD
82 LET ADD=ADD+1
83 IF D>128 THEN GOTO 86
84 LET D$=D$+CHR$ D
85 GOTO 81
86 LET D$=D$+CHR$ (D-128)
87 RETURN

ASM:

How to Fill a string array ...


>>RAND USR 16514
* To get the REM datas memory offset.

>>LET DLEN= USR 16525
* READ DATA ID(@16417 0-255) @16525
* Result(BC)=DATA LENGHT
NEXT LINE : LET F$="xxxxxxx" => DATA VALUE (RESETED EACH TIME)
The F$="MYDATA " is loaded in the VARS memory.

Code: Select all

# REM 
     1  REM [HEX:\
2A,29,40,01,05,00,09,22,7B,40,C9,2A,29,40,01,09,00,09,22,3C,40,7E,FE,0B,28,04,70,23,18,F7,2A,7B,40,3A,21,40,47,ED,5B,3C,40,0E,00,0C,13,CB,7E,23,28,F9,10,F1,ED,43,3C,40,0D,2B,1B,7E,EE,80,12,2B,1B,ED,B8,ED,4B,3C,40,C9 ]

5120 RAND USR 16514
5130 REM \
FREDERICk\
ARCHIBALd\
REGINALd\
WINSTOn\
WILLIAm\
CYRIl\
CECIl\
CHARLEs\
JUPITEr\
NARCISSe\
RODRIGUEz\
ABRAHAm\
ANTHELMe\
DIMITRi\
EDOUARd\
VICTORIEn\
JULIEn\
ANDREUs\
CYRIl\
CESAr\
MARCEl\
NESTOr\
PACOMe\
JUSTe\
REx\
Jo\
PAUl\
JEf\
LUc\
CLAUDe\
ERIc\
RENe
5135 LET W=3
5140 POKE 16417,W
5150 REM DONT ADD LINES BEATWEEN 5159 AND 5160
5159 LET DLEN= USR 16525
5160 LET F$="         "
5165 REM YOU HAD TO TRIM SPACES IN THE F$ VALUE...
5170 LET F$=F$( TO DLEN)
>>F$="MYDATA     "=>F$="MYDATA"
(in case of a non fixed string value)
Note:
DIM E$(2,5) >Value fixed to 5 Char. Lenght.
LET E$(1)="XXXXXXXXX"
E$(1)="XXXXX"

PRINT E$(1,3 TO 6) => MID$(E$,3,4) "3X5X"
PRINT E$(1, TO 6) => LEFT$(E$,6) "1X3X5X"
PRINT E$(1,3 TO ) => RIGHT$(E$,3) "3X5X7X"

DIM E$(2) >Random lenght value.
LET E$(1)="1X3X5X7X"
E$(1)="1X3X5X7X"

PRINT E$(1)(3 TO 6) => MID$(E$,3,4) "3X5X"
PRINT E$(1)(TO 6) => LEFT$(E$,6) "1X3X5X"
PRINT E$(1)(3 TO ) => RIGHT$(E$,3) "3X5X7X"
How to trim an integer value:
10 FOR S=150 TO 0 STEP -1
20 PRINT AT 2,23;("0"+STR$ S)(LEN STR$ S TO);" POINTS"
30 NEXT S
How to use booleans conditions in PRINT command:

Code: Select all

10 LET Z3=50
20 INPUT F1
30 PRINT (" TROP HAUT" AND F1>Z3)+(" TROP BAS" AND F1<Z3)+(" MEME VALEUR" AND F1=Z3)
40 GOTO 20
Note: Dont use integers, it will display a "0"!
10 LET Z3=50
20 INPUT F1
30 PRINT (F1 AND F1>Z3)
40 GOTO 20

Juste use a STR$
30 PRINT (STR$ F1 AND F1>Z3)
Have Fun.
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
sirmorris
Posts: 2811
Joined: Thu May 08, 2008 5:45 pm

Re: How to Fill Datas in a Basic variable.

Post by sirmorris »

Some useful techniques there Xav, thanks!
Post Reply