[Tuto] Message line scrolling...

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

[Tuto] Message line scrolling...

Post by XavSnap »

Hi,

With BASIC:

Code: Select all

1 DIM B$(30)
3 LET A$="HELLO WORLD, THIS IS A SCROLLING ON THE 18TH LINE ON YOUR ZX81 SCREEN IN BASIC. JUST INITIALIZE A STRING VALUE IN A$ AND LET\' S RUN IT...  "
4 LET A$=A$+A$( TO 30)
5 FOR A=1 TO LEN A$-30
6 LET  B$=A$( A TO A+30)
7 PRINT AT 18,1;B$
8 IF INKEY$="" THEN NEXT A
11 GOTO 5
OR

Code: Select all

3 LET A$="HELLO WORLD, THIS IS A SCROLLING ON THE 18TH LINE ON YOUR ZX81 SCREEN IN BASIC. JUST INITIALIZE A STRING VALUE IN A$ AND LET\' S RUN IT...  "
4 LET A$=A$+A$( TO 30)
5 FOR A=1 TO LEN A$-30
7 PRINT AT 18,1;A$( A TO A+30)( TO 30)
8 IF INKEY$="" THEN NEXT A
11 GOTO 5
With ASM codes:
;------- Rom and Ram Symbols -------
RAM_D_FILE equ $400C
RAM_SPARE2 equ $407B


ORG $4082 ; [@16514/@h4082]
Lb4082:
LD HL,(RAM_D_FILE) ; GET D-FILE
LD DE,$0252
ADD HL,DE
INC HL
INC HL
LD B,$1D
Lb408D:
INC HL
LD A,(HL)
DEC HL
LD (HL),A
INC HL
DJNZ Lb408D ; [$408D:16525]
PUSH HL
LD HL,(RAM_SPARE2) ; GET UNUSED-16
LD A,(HL)
INC HL
LD (RAM_SPARE2),HL ; SET UNUSED-16
POP HL
LD (HL),A
RET ; ==========================

;------- Rom and Ram Symbols -------
RAM_VARS equ $4010
RAM_SPARE2 equ $407B


ORG $40A6 ; [@16550/@h40A6]
Lb40A6:
LD HL,(RAM_VARS) ; GET VARS
Lb40A9:
INC HL
LD A,(HL)
CP $FF ; [255]
JR NZ, Lb40A9 ; [$40A9:16553]
INC HL
LD A,(HL)
CP $FF ; [255]
JR NZ, Lb40A9 ; [$40A9:16553]
INC HL
LD (RAM_SPARE2),HL ; SET UNUSED-16
RET ; ==========================

Code: Select all

# 16514: SCROLLING LINE#18
1 REM [HEX:2A,0C,40,11,52,02,\
19,23,23,06,1D,23,7E,2B,\
77,23,10,F9,E5,2A,7B,40,\
7E,23,22,7B,40,E1,77,C9]

# 16550: RETRIVE $FF$FF TAG IN VARS
2 REM [HEX:\
2A,10,40,23,7E,FE,FF,20,FA,23,\
7E,FE,FF,20,F4,23,22,7B,40,C9 ]

3 LET A$=CHR$ 255+CHR$ 255+"HELLO WORLD, THIS IS A SCROLLING ON THE 18TH LINE ON YOUR ZX81 SCREEN. JUST INITIALIZE A STRING VALUE WITH A $FFFF TAG AND LET\' S RUN IT...  "
4 RAND USR 16550
5 FOR A=1 TO LEN A$-2
6 RAND USR 16514
7 RAND SIN PI
8 IF INKEY$="" THEN NEXT A
10 CLS
11 GOTO 4
SCROLLING_BAS.P
(1.4 KiB) Downloaded 75 times
SCROLLING_BAS2.P
(1.35 KiB) Downloaded 74 times
SCROLLING_ASM.P
(1.38 KiB) Downloaded 72 times
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
dr beep
Posts: 2060
Joined: Thu Jun 16, 2011 8:35 am
Location: Boxmeer

Re: [Tuto] Message line scrolling...

Post by dr beep »

This version will go around much better.

Code: Select all

10 LET A$="GIVE ME A TEXT THAT GOES ON FOR A LONG TIME AND SHOW WHAT YOU WANT"
20 PRINT AT 10,0;A$(TO 32)
30 LET A$=A$(2 TO)+A$(1)
40 PAUSE 10
50 GOTO 20
User avatar
XavSnap
Posts: 1940
Joined: Sat May 10, 2008 4:23 pm
Location: 'Zx81 France' Fb group.

Re: [Tuto] Message line scrolling...

Post by XavSnap »

:oops:
True i ever seen it in a listing !

Another way using a PRINT:

Code: Select all

5 FOR A=1 TO 108
7 PRINT AT 18,1;"HELLO WORLD, THIS IS A SCROLLING ON THE 18TH LINE ON YOUR ZX81 SCREEN IN BASIC. JUST INITIALIZE A STRING VALUE IN A$ AND LET\' S RUN IT...  "( A TO A+30)( TO 30)
8 IF INKEY$="" THEN NEXT A
11 GOTO 5+SIN PI+SIN PI+SIN PI+SIN PI+SIN PI+SIN PI
Xavier ...on the Facebook groupe : "Zx81 France"(fr)
Post Reply