Page 6 of 6
Re: Tricks in BASIC
Posted: Mon Aug 14, 2023 12:08 pm
by XavSnap
To set or retrieve a binary value in memory:
To retrieve the D_file:
10 LET A=PEEK 16396+256*PEEK 16397
Code: Select all
1 REM [HEX: 2A,32,40,4E,23,46,C9 ]
10 RAND 16396
20 LET A=USR 16514
;------- TASM ASM mnemonics. -------
;------- ROM and RAM Symbols -------
RAM_SEED equ $4032
ORG 16514
Start:
LD HL,(RAM_SEED) ; GET SEED
LD C,(HL)
INC HL
LD B,(HL)
RET ; ==========================
.end
To POKE a decimal value:
10 POKE 16507,A-INT(A/256)*256
20 POKE 16508,INT((A/256)
Code: Select all
10 RAND A
20 POKE 16507,PEEK 16434
30 POKE 16508,PEEK 16435
Have fun.
Re: Tricks in BASIC
Posted: Wed Aug 16, 2023 1:14 am
by XavSnap
How to get a character code with a PRINT AT ?
Code: Select all
10 PRINT AT Y,X;
20 IF PEEK (PEEK 16398+256*PEEK 16399)<>0 THEN GOTO xxxx
This code peeks up the next character after the X,Y coordinates.
In ASM:
RAM_DF_CC equ $400E
ORG $4082 ; [@16514/@h4082]
Lb4082:
LD HL,(RAM_DF_CC) ; GET DF-CC (NEXT CHARACTER PRINTED LOCATION)
LD C,$00
INC HL
LD B,(HL)
RET ; ==========================
Code: Select all
0 REM [HEX: 2A,0E,40,0E,00,23,46,C9 ]
10 PRINT AT Y,X;
20 IF USR 16514<>0 THEN GOTO xxxx
Re: Tricks in BASIC
Posted: Thu Feb 08, 2024 9:00 pm
by XavSnap
Booleans in BASIC:
Code: Select all
5 LET FALSE=0
7 LET TRUE=1
9 LET B=0
10 LET A=TRUE
20 IF A>0 THEN LET B=B+1
30 LET B=B+1*(A>0)
35 LET B=B+(A>0)
40 LET B=B+NOT NOT A
45 PRINT "A IS ";("TRUE") AND A;("FALSE") AND NOT A,,,,
50 PRINT "BOOL SUM=";B
Re: Tricks in BASIC
Posted: Sat Feb 10, 2024 3:53 am
by XavSnap
"ON N GOTO 1250,2000,4500,6001,2000,4500,6001"
IF you can't use a GOTO N...
Example:
#Regular code:
Code: Select all
10 IF N=1 THEN GOTO 1250
20 IF N=2 THEN GOTO 2000
30 IF N=3 THEN GOTO 4500
40 IF N=4 THEN GOTO 6001
50 IF N=5 THEN GOTO 2000
60 IF N=6 THEN GOTO 4500
70 IF N=7 THEN GOTO 6001
80 STOP
Use this code:
Code: Select all
110 GOTO VAL"1250200045006001200045006001"(N*4-3 TO N*4)
Re: Tricks in BASIC
Posted: Thu Feb 15, 2024 2:10 am
by XavSnap
Compess the D_file in 1,2 or 16k:
Set the RAM_TOP TO 1k or 2k:
ZX81: (1K)
POKE 16389,68
NEW
TS1000: (2K)
POKE 16389,72
NEW
Or in 16k BASIC (only 22 lines)
Code: Select all
1 PRINT "HELLO"
2 STOP
10 FOR A=1 TO 22
20 SCROLL
30 NEXT A
60 SAVE "P"
70 RUN
Re: Tricks in BASIC
Posted: Sat Mar 30, 2024 4:18 am
by XavSnap
Hi,
In BASIC, after a FAST/SLOW process, an unsightly scrolling can occur when exiting the FAST mode.
To avoid this dropout of the screen frame, just add a PAUSE before the SLOW commande:
Code: Select all
10 FAST
(... your code..)
1000 PAUSE 0
1010 SLOW
Have fun.
Re: Tricks in BASIC
Posted: Sat Mar 30, 2024 3:18 pm
by stroebeljc
XavSnap wrote: ↑Sat Mar 30, 2024 4:18 am
Hi,
In BASIC, after a FAST/SLOW process, an unsightly scrolling can occur when exiting the FAST mode.
To avoid this dropout of the screen frame, just add a PAUSE before the SLOW commande:
Code: Select all
10 FAST
(... your code..)
1000 PAUSE 0
1010 SLOW
Have fun.
...and don't forget to add this line if running on first editions ROMs:
Re: Tricks in BASIC
Posted: Sat Mar 30, 2024 3:32 pm
by stroebeljc
I love your suggestions, XavSnap.
You're such a trickster!