LSCROLL
Dear Editor:
For entering machine code routines like LSCROLL (SYNC 2:2) it is helpful to use the 8K ROM’s string concatenation abilities. The procedure involves breaking up the one long string in line 10 into a series of shorter strings which are entered line by line.
Set the lines up as follows:
10 LET D$="(begin entering mc numbers)"
20 LET D$=D$+"(continue entry)"
30 LET D$=D$+"(continue entry)"
etc.
Thus each new line includes all the preceding lines, and we end up with the whole string from the short strings. This makes it much easier to correct the entries since each line can be individually EDITed.
Also, the following lines give several advantages in SAVEing:
1 GOTO 3
2 SAVE "name of program"
You now do not have to type in SAVE every time when you want to make several SAVEs. Simply type in GOTO 2. The program will SAVE itself, then RUN itself. If you want to make more than one SAVE, you must change the last character of the name of the program to normal video from inverse (for some reason, the system does that).
The real advantage comes when LOADing because the program will now start itself!
I have two other hints. DATA statements could be simulated using strings; the 8K’s VAL function could be used to remove VALues. It usually makes entering MC easier to show a zero as 0 with a / through it.
Erik Sawyer
[address omitted]
Slidell, LA
Dear Editor:
Douglass Sharp’s LSCROLL program (SYNC 2:2) is a very useful expansion of the ZX81’s graphics capabilities. As written it requires the 16K RAM, but a few modifications allow LSCROLL to perform its magic with the 2K RAM since it occupies only 172 bytes. (The numbers correspond to the steps in the original article.)
1) Rather than have D$ take up valuable space within the LSCROLL program, enter D$ first without a line number as follows:
LET D$= "3AFE47FE16DA61473E0"
LET D$=D$+"032FE473AFF47D600CA7147FE15D2714"
LET D$=D$+"7C376473E1632FF47F53AFF4747F13AF"
LET D$=D$+"E4780FE16DA954726002E163AFE474F0"
LET D$=D$+"600ED427D32FF47ED5B0C400EFFF53AF"
LET D$=D$+"E476FF1260006001AFE76CAAF4713C3A"
LET D$=D$+"5470CA7E5ED42E1CABC4713C3A547060"
LET D$=D$+"0F53AFF474FF1C5D5E1237EFE76C2C74"
LET D$=D$+"7E5A7ED522B7D4DD600E1C2E047E5D1C"
LET D$=D$+"3F5473DC2E84713C3F14706000B13D5E"
LET D$=D$+"123EDB03E001213C10B79D600C2C447C"
LET D$=D$+"90000"
These lines have the same length as those in Figure 1 in LSCROLL, but the entries have been changed to conform to the addresses appropriate to the 2K RAM. Furthermore, the arrangement makes checking the entries easier.
Enter lines 4 and 20-80 as in Figure 1 but change the address in line 50 to 18259. Then add:
10 CLS
90 STOP
100 SAVE "LSCROLL"
110 PRINT "GOTO 4 (TO RUN)"
2) SAVE by entering GOTO 100 (NEVER use RUN with this program for it will erase D$).
3) Enter NEW.
4) Enter POKE 16388,84 and POKE 16389,71. Enter NEW.
5) LOAD “LSCROLL” and then enter GOTO 4 (as the screen reminder indicates). In a few seconds the number 21093 will appear. If it does not, check for an error in D$.
To execute, use RAND USR 18260. To change the values of XX, YY, and CC (Figure 3), POKE the appropriate values into 18430, 18431, and 18418 respectively.
Figure 5 should be corrected as follows:
7F66 with 32614, not 32615 7F95, not 7FA5, with 32661 7FB4, not 7FC4, with 32692 7FE5 with 32741, not 32740
Harold Miller
[address omitted]
Clarkesville, GA
Flag Use
Dear Editor:
I just saw a copy of SYNC 2:1 with Philip Gervais’s tip on flag use:
100 LET A=ABS(A-1)
A simpler and shorter statement to do the same thing is
100 LET A=1-A
Keep up the good work; I enjoy the magazine.
David Schultz
Total Information Services, Inc.
PO Box 921
Los Alamos, NM 87544
Dear Editor:
An easier way to change a flag is
LET A=NOT A
This is also 10 bytes shorter.
Tim Goldingham
[address omitted]
Maidenhead
United Kingdom
Key and Token Expressions
Dear Editor:
As Richard W. McDaniel points out (SYNC 1:6), the use of key and token expressions in PRINT and REM statements can save typing time and memory. There is, however, another way to insert these into a program which is sometimes easier.
Entering THEN gets the ZX80 and ZX81 into condition to accept keystrokes as tokens. Suppose that you want to define A$ as “STOP SEEING YOUR NAME IN PRINT FOR THE NEW YEAR”. You would key it in as follows:
10 LET A$="THEN STOP (delete THEN) SEEING YOUR NAME IN THEN PRINT (delete THEN) THEN FOR (delete THEN) THE THEN NEW (delete THEN) YEAR"
This is easier than it looks. The “DELETE THEN” procedure uses only three keystrokes: backspace (shifted 5), delete (shifted 0) and forward space (shifted 8).
Basil Wentworth
[address omitted]
Bloomington, IN
Hams and the ZX81
Dear Editor:
I am a delighted ZX81 owner. I am also an amateur radio operator (ham).
Rather than trying to communicate with other ZX81 owners by newsletters, I would be interested in comparing notes more directly: I propose to organize a ZX81 network on radio. This would entail deciding on the frequency, day of the week, and time of day. After this we would conduct our regular communications on a conversational basis.
Other combination radio amateur operators and ZX81 users are asked to contact me so that we can get organized soon. And, if you have a “ham” on the SYNC staff, it would be wonderful if he would meet with us on the air to field some of the questions which are sure to arise!
Dean Sturm, K8CYW
[address omitted]
Huntington, WV
Ed.—We do not have a “ham” on our staff, but we have heard from some operators interested in combining these two interests. One ZX81 Ham network is already organized and publishes a newsletter QZX (contact Martin Irons, K2MI, [address omitted], Goshen, NY 10924, for details). We would appreciate hearing of any others.
ZX80 ROMs
Dear Editor:
In Michael Rubesch’s “4K/8K ROMs in One ZX80” (SYNC 2:2) the reference to “pin 28” of the modules rather than to “pin 28” of the IC socket was a bit confusing. Later PC boards do have a 28-pin socket for the ROM while the ROMs have only 24 pins. Also I have found that the earlier ZX80 boards have only 24-pin sockets if they have sockets at all. The power pin then is pin 24 of the ROM module which must be inserted at pin 28 of the later sockets.
Robert D. Hartung
[address omitted]
Palmyra, NY
Hardware Suggestion
Dear Editor:
In this avalanche of new hardware for the ZX81 I wonder how many manufacturers realize that many of us bought the ZX81 because it is small. I can put it and my equally small cassette recorder into a thin slipcase and use it anywhere a TV is available. No other low or medium priced machine offers that degree of portability. Every manufacturer of hardware for the ZX81 should keep this in mind and should include the size of the product in ads. I favor stuffing as much memory and other extensions inside the case as possible.
Harold Miller
[address omitted]
Clarkesville, GA
Inventory
Dear Editor:
The Inventory program (SYNC 1:6) was both enjoyable and useful. Here is an improvement to SAVE the program (and variables) as directed by the prompt in line 2018:
Change line 2020 to:
2020 IF S$="C" THEN SAVE "INVENTORY"
Add:
2019 INPUT S$
2021 STOP
Thanks for a great magazine!
TSGT Chuck Taylor
Diyarbakir
Turkey
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.