
VZ200 and Vz300 Matrix lo-res text demo
=============================  Bushy - 05/02/2020 ======



==========================
Overview
==========================

Matrix text-based simulation screen-saver type demo for the VZ.




==========================
To RUN
==========================

This demo was developed and tested on the two VZ200 emulators : MAME or VZEM
Download and install either emulator :

MAME	: https://www.mamedev.org/release.php
VZEM	: http://www.vz200.org

For a better effect on real hardware, ensure that you run the correct version for whichever computer.
Or, within the emulators, both default to the VZ300 screen.
You can reset the emulator and press and hold down <CTRL> button for the VZ200 screen.
VZ200 screen : Light green text on very dark green background.
VZ300 screen : dark green text on a bright fluro green background.

Load the 'MATRIX200.VZ' snapshot in.
Type 'RUN'

Load the 'MATRIX300.VZ' snapshot in.
Type 'RUN'



==========================
LISTING
==========================


VZ200
=====
0 DIMA(13):CLS:FORI=1TO13:A(I)=28672+RND(14)*32+RND(32):NEXT 
1 FORI=RND(3)TORND(3)+4:FORJ=1TORND(8):POKEA(I),RND(63):NEXTJ,I
2 FORI=1TO7:IFA(I)<29182,POKEA(I),RND(63):A(I)=A(I)+32:NEXT:GOTO4
3 A(I)=28671+RND(32):NEXT 
4 FORI=8TO12:IFA(I)<29182,POKEA(I),128:A(I)=A(I)+32:NEXT:GOTO1
5 A(I)=28671+RND(32):NEXT:GOTO2


VZ300
=====
0 B=29182:DIMA(13):FORI=1TO13:A(I)=28672+RND(14)*32+RND(32):NEXT 
1 FORI=RND(3)TORND(3)+4:FORJ=1TORND(8):POKEA(I),RND(63)+64
2 NEXTJ,I
3 FORI=1TO7:IFA(I)<B,POKEA(I),RND(63)+64:A(I)=A(I)+32:NEXT:GOTO5
4 A(I)=28671+RND(32):NEXT 
5 FORI=8TO12:IFA(I)<B,POKEA(I),96:A(I)=A(I)+32:NEXT:GOTO1
6 A(I)=28671+RND(32):NEXT:GOTO3

Due to physical line size of 64 characters, unfortunately the vz300 was pushed out to one extra line.



==========================
Detailed description
==========================
vz200
-----
Line 0 : Set array, clear screen. Set 12 entrys of array to be random locations on the screen.

Line 1 : For the first random amount of entries, display a random amount of random characters on screen.
         This is the initial effect when The Matrix characters appear dripping down the screen.

Line 2 : For the first seven entries that are on the screen, pick a random character and display it.
	 Increase the location on the screen by one line down. And do this 7 times for each entry.
         If the location is on the screen then skip line 3.

Line 3 : This line will only be reached if a single entry's display location has dropped off / fallen 
         off the screen. So select a new screen location.

Line 4 : For the next five array entries if they are still on the screen, blank them out - make them dark green/black for VZ200.
         And increase down to the following line. Do this five times, then jump back to line 1.

Line 5 : For each array entriy that has fallen off the screen, pick a new screen location. Goto 2 coz don't 
	 really need to do fancy char display for this run as all it does is add a tiny unwanted delay.


vz300
-----
Line 0 : Set fall off screen location. Set array, clearescreen. Set 13 entrys of array to be random locations on the screen.

Line 1 : For the first random amount of entries, display a random amount of random characters on screen.
         This is the initial effect when The Matrix characters appear dripping down the screen.

Line 2:  Can not fit on Line 1 unfortunately. And can not find enough space for a CLS.
         ONLY ONE SINGLE MORE CHARACTER IS NEEDED!. 
         This is dreadful, however, I simply gave up looking further.
         This adds one more line to the VZ300 listing.

Line 3 : For the first seven entries that are on the screen, pick a random character and display it.
	 Increase the location on the screen by one line down. And do this 7 times for each entry.
         If the location is on the screen then skip line 4.

Line 4 : This line will only be reached if a single entry's display location has dropped off / fallen 
         off the screen. So select a new screen location.


Line 5 : For the next six array entries if they are still on the screen, blank them out - make them light green space for VZ300.
         And increase down to the following line. Do this six times, then jump back to line 1.

Line 6 : For each array entriy that has fallen off the screen, pick a new screen location. Goto 3 coz don't 
	 really need to do fancy char display for this run as all it does is add a tiny unwanted delay.


