The Best Of The Plotter [1994 newsletter]

Discussion about ZX80 / ZX81 Software
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

The Best Of The Plotter [1994 newsletter]

Post by David G »

Clackamas Computer Applied Training Society
"Computing the Future - In Clackamas County"

The Plotter was the newsletter of CCATS user group in the Portland, Oregon metro area

* PDF and other formats on Archive.org
* Full text in typical OCR
The Best Of The Plotter
Table Of Contents
Section 1: ZX-81/TS1000/TS1500 ... Page 1
...
page 118
Last edited by David G on Wed Sep 14, 2022 10:09 am, edited 3 times in total.
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

The Best Of The Plotter: Rampack Test Program

Post by David G »

This program actually works on all RAM sizes from 1K to 16K

it's very quick to type in

from page 1
16K RAMpack Test program

Code: Select all

1 POKE 18000,33
2 POKE 18001,11
3 POKE 18002,0
4 POKE 18003,57
5 POKE 18004,68
6 POKE 18005,77
7 POKE 18006,201
8 PRINT (USR 18000-16373)/1024;"K"
NOTE: Line 8 as printed in the newletter returns error code C. I moved the parentheses to what is shown here, and it works!

Run it and it tells you how much RAM is available to BASIC. As usual with the ZX81, it doesn't count RAM greater than 16K nor does it count RAM in the pre-BASIC area

Not really a test, more like it tells you how much RAM was found by the ROM. I think it is just getting the stack pointer from the M/C routine, adding 11 to it ... and dividing by 1K (1024 bytes). or something like that

I remember circa 1984 I bought a MemoPak 32 and immediate had problems running larger programs. I wrote a test program to write and read back memory locations and was able to pinpoint one or two locations that were defective. I purchased it in the Portland area, but they didn't have another so I drove 8 hours round-trip to their store in Bellevue, Washington to get the replacement. The replacement MemoPak never gave a lick of trouble and never glitched. It was rock-solid reliable and high-tech looking
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

1K ADVENTURE - Best Of The Plotter

Post by David G »

An oldie - David Clark's 1K Adventure. Was also in Sinclair User magazine issue #16 (July 1983)

It uses RND to generate random events
1K ADVENTURE
by David Clark

NOTE: As you can see, this program makes good use of the INKEY$ function. That is the reason I decided to run it at this time. In future issues there will be other programs reprinted from magazine that are not in the club library.

Code: Select all

5 REM 1K ADVENTURE
10 LET S = VAL "50"
15 LET T=PI-PI 
20 LET TU=PI/PI 
25 PRINT "TURN ";TU;" TREASURE ";T;" STRENGTH ";S
30 IF S<=0 THEN GOTO 5000
35 PRINT "YOU HAVE FOUND:"
40 LET X=INT (RND*VAL "75")
45 LET H=INT (RND*INT PI)+PI/PI
65 GOSUB H*100
70 LET S=S+10
80 CLS
90 LET TU=TU+1
95 GOTO VAL "25"
100 PRINT "A MONSTER. F/B?"
110 INPUT I$
120 IF I$<>"F" AND I$<>"B" OR I$="B" AND T<X THEN GOTO 110
130 IF I$="F" THEN LET S=S-X
140 IF I$="B" THEN LET T=T-X
150 GOSUB 2000
190 RETURN
200 PRINT "A POTION"
210 LET S=S+X
220 GOSUB VAL "2000"
230 RETURN
300 PRINT "TREASURE. IT IS WORTH ";X 
310 LET T=T+X
350 GOSUB VAL "2000"
360 RETURN
2000 IF INKEY$="" THEN GOTO 2000
2010 RETURN
5000 CLS
5010 PRINT "YOU HAVE DIED.",,"YOU SURVIVED ";TU;" TURNS"
5100 STOP
5110 SAVE "1KADVEN"
5120 RUN
5130 STOP
5150 RAND USR 100: SAVE "lkadvn.Bl" LINE 1
Not sure if that last line is a typo or what. But the program works

See it in action in this YouTube video: 1K Adventure Sinclair
jdfan1000
Posts: 81
Joined: Tue Aug 02, 2016 8:06 pm
Location: Buffalo, NY
Contact:

Re: The Best Of The Plotter [1994 newsletter]

Post by jdfan1000 »

The last line saves the program to disk. You can get rid of the Randomize usr and everything after.
My archive.org collection, containing many Timex/Sinclair related publications.

TimexSinclair.com, my website about Sinclair computers in the US.
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

Re: The Best Of The Plotter [1994 newsletter]

Post by David G »

Thanks for the explanation. In the magazine it is indeed RANDOMIZE. I changed it to RAND when I typed it

Code: Select all

5150 RANDOMIZE USR 100: SAVE "lkadvn.Bl" LINE 1
I looked it up and see that this is associated with something called LKDOS

I never had any disk drives. Never had much problem using the cassette recorder (I did not use a Sinclair RAM pack so never had any "glitches"). The tape was slow but reliable. I think it was a Radio Shack recorder, it was already ancient when I got my ZX81 and continued working for 30 more years. By contrast the disk drives for my Atari 800 would go bad every six months
jdfan1000
Posts: 81
Joined: Tue Aug 02, 2016 8:06 pm
Location: Buffalo, NY
Contact:

Re: The Best Of The Plotter [1994 newsletter]

Post by jdfan1000 »

Larry Kenny made disk drive systems for the ZX82/TS1000 and TS2068. You can find more about them at the link below (where I am also slowly indexing the newly added issues of The Plotter and other magazines/newsletters).

If you’re interested, I host 2x monthly zoom meetings of TS enthusiasts. The calendar of our upcoming meetings is here:
https://www.timexsinclair.com/about/community/

David
My archive.org collection, containing many Timex/Sinclair related publications.

TimexSinclair.com, my website about Sinclair computers in the US.
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

Advice-T/S 1000 - Best Of The Plotter

Post by David G »

Next up from the table of contents is ADVICE. This program demonstrates one way of simulating READ & DATA functionality in Sinclar BASIC. Not sure how you'd get the text into the data strings, but it's showing how to get it back out again ... it's neat and a bit intriguing. How did they get the DATA in?

Runs on 4K ZX81/TS1000


Advice-T/S 1000, page 15 of Best Of The Plotter
ADVICE TS1000

Dick Wagner

This program produces the same text for the TS 1000 that the program "ADVICE 2068" does. The data code is different because of the difference between the 2 computer types. Luckily, the character codes for the TS 1000 are exactly 27 digits less than for the 2068. Comparing code tables, numbers are 20 digits less than the 2068 but none are used here.

The data is in 5 strings, about one for each text line. As the data is in string form, the separating commnas require special treatment as used in the program. This method requires the program to jump to line 200 each time a comma is read.

Line 205 simply converts the text data strings to numeric form so line 210 can print it. To prove this add a PRINT F; immediately after line 205

Considerable testing was required as the program development progressed, but I was working with my 2068 computer because I wished to do the hard copy on my large printer. The data didn't make sense except that spaces were question marks, and periods were 6s. My solution is in the article "READ TS 1000 ON A 2068".

The use of strings to input data, and change the data into numeric digits, is one of several ways of simulating READ & DATA such as is available on a 2068 computer.

FAST puts the program thru nicely but pressing the ENTRY key is required to show the display. Using SLOW displays the characters being printed on the screen. Take your pick by adding a fast or slow line to the program.

Code: Select all

   5 REM THIS TS 1000 PROGRAM READS STRINGS TO PRINT OUT A MESSAGE
  10 LET A$="50,62,0,46,51,57,42,55,42,56,57,0,46,56,0,46,51,0,57,45,42,0,43,58,57,58,55,42,"
  12 LET B$="0,0,0,0,39,42,40,38,58,56,42,0,46,0,38,50,0,44,52,46,51,44,0,57,52,0,56,53,42,51,41,0,57,45,42,"
  14 LET C$="0,55,42,56,57,0,52,43,0,50,62,0,49,46,43,42,0,57,45,42,55,42,27,"
  16 LET D$="0,0,0,0,0,0,0,0,0,0,0,40,45,38,55,49,42,56,0,43,27,0,48,42,57,57,42,55,46,51,44,"
  18 LET E$="0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,57,45,42,0,40,45,52,46,40,4 2,0,46,56,0,62,52,58,55,56,27,"
  20 LET A$=A$+B$+C$+D$+E$
 120 LET M=1
 130 FOR N=1 TO LEN A$
 140 IF A$(N)="," THEN GOSUB 200
 150 NEXT N
 200 LET F$=A$(M TO N-1)
 205 LET F=VAL F$
 210 PRINT CHR$ F;
 220 LET M=N+1
 230 RETURN
Attachments
ADVICE_TS1000_4K.p
(879 Bytes) Downloaded 79 times
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

CHARACTERS ON THE 1000 - Best Of The Plotter

Post by David G »

Thanks David. timexsinclair.com has great information. Have they considered adding a wiki section? Could be used to categorize and expand upon any topic. A sort of encyclopedia, a cross-reference of information. i could even start the content


Next up from The Best Of The Plotter table of contents (ZX81 section) is Characters On The 1000, page 4
CHARACTERS ON THE 1000

by Dick Wagner

PART 1

The 1000 computer does not provide access to the smallest increment or dot (pixel) the computer produces. PLOT characters are made up of 16 dots and use 1/4 of the normal character cell as do several GRAPHIC symbols; these are what we have to work with.

We can however, see how the various characters are made. By using a monitor or TV with good resolution* we can observe the composition of these in the form of dots. The normal space provides for a format of 8x8 dots to make GRAPHIC symbols shown on the keys. However, other characters must provide a surrounding space of at least 1 row on all sides so characters have 2/8 of a space between them. Thus, the letters and numbers are limited to a format of 6x6 dots. To observe this, make up a 3 line program:

Code: Select all

10 PRINT " | "
20 PRINT "| |"
30 PRINT " | "
...where | is CHR$ 8 GRAPHIC A. A good TV will display CHR$ 8 as 8 rows of dots staggered with 4 dots per row. Thus, 2 rows will display 8 dots.

Change line 20 by putting your favorite character in position 2. Z and M show the clear boundary on all sides. Quotes, periods, commas and other punctuation marks use the fewest dots and our little program will show where they are in relation to the character space. For instance, a period is 2 dots high and 1 dot wide while a , is 3x2.

The designers of Sinclair BASIC had to work within the limits of the 6x6 format. We can study how the designers elected to make diagonal and curved lines, which is really a challenge to make intelligent marks on the screen.
What does this mean?
A good TV will display CHR$ 8 as 8 rows of dots staggered with 4 dots per row
I couldn't figure out what this meant until I tried it

I always called CHR$ 8 "checkered" or "gray square". But now I'm thinking of "staggered" dot patterns
test.png
PART 2

II you tried the example in Part 1, you probably had difficulty in making out each dot. By enlarging the character, we can then see them. The following program from SYNCHRO-SETTE magazine will print most characters 8 times larger. Because of the program structure, not all keyboard characters will work. These enlarged characters will look crude because of being formed with a square character instead of a rounded pixel.

Code: Select all

10 LET S=0
20 PRINT AT 0,0; "ENTER ANY CHARACTER ..."
30 INPUT A$
40 LET P=7
50 LET F=CODE A$
60 LET F=8*F-8
100 FOR B=7688 TO 7688+F+7
110 LET A=PEEK B
120 FOR I=7 TO 0 STEP-1
130 PRINT AT 21-P, I+S; CHR$ ((A-2*INT (A/2))*128)
140 LET A=INT (A/2)
150 NEXT I
160 LET P=P+1
170 NEXT B
180 LET S=S+8
190 IF S>25 THEN GOTO 300
200 GOTO 20
300 FOR N=l TO 8
310 SCROLL
320 NEXT N
330 GOTO 10
9998 SAVE "BIG/CHAR EXAM"
9999 RUN
Unfortunately I couldn't get it to run properly. Did I type it in wrong, or is there a typo in the article?
CHARACTERS.png

I don't have the Syncro-Sette cassette tape, so I cannot compare the program to the type-in
SYNCHRO-SETTE volume 2 number 8 page 2
"BIG CHAR/EXAM" LT = :14

This program creates characters 8 times normal size by examining the memory location of ROM starting at decimal 7688 Four characters may be entered per line and then a SCROLL will occur to allow the next line to be entered.

Each character is represented by eight memory locations. Try entering graphic symbols or inverse characters. The result will not be what you expect.
Attachments
BIG-CHAR_EXAM._not_working.p
(590 Bytes) Downloaded 79 times
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

CHASE (game) - Best Of The Plotter

Post by David G »

CHASE

Code: Select all

  1 REM CHASE
 10 CLS
 15 LET N=0
 20 LET A=15
 25 LET B=16
 30 LET S=0
 35 LET C=INT (RND*30)+1
 40 LET D=INT (RND*20)+1
 45 LET B$=INKEY$
 50 PRINT AT A,B;CHR$ 133
 55 PRINT AT D,C;CHR$ 137
 60 LET N=N+1
 62 PAUSE 5
 65 IF N=500 THEN  GO TO 200
 70 PRINT AT A,B;"  "
 75 IF B$="5" THEN  LET B=B-1
 80 IF B$="8" THEN  LET B=B+1
 85 IF B$="6" THEN  LET A=A+1
 90 IF B$="7" THEN  LET A7=A-1
 95 IF B$="0" AND A=D AND B=C THEN  GO TO 500
 97 IF B$="0" THEN  PRINT AT D,C;"X"
100 PRINT AT D,C;" "
105 IF C=30 THEN  GO TO 35
110 LET C=C+1
115 GO TO 45
200 PRINT AT 10,14;"SCORE IS:";S

210 STOP
500 LET S=S+1
510 PRINT AT D,C;"X"
520 PRINT AT D,C;" "
530 GO TO 35
550 STOP
600 REM
610 SAVE "CHASE"
620 GO TO 1
640 STOP
700 RANDOMIZE USR 100: SAVE "chase.B1" LINE 1
710 REM This program designed for the 1000, here adapted for the 2068
720 REM Change line 55 to read CHR$ 6 for the 1000
730 REM Delete the pause in line 62 for the 1000
NOTE: Line 700 should not be typed in. It is only for systems with a Larken(?) disk drive, or maybe for the aforementioned 2068 computer. In any case, leave it out and the type-in works fine

How it works
* A and B are the player's position
* D and C are the snake's position
* INKEY$ changes A or B when the arrow keys (5,6,7,8) are held down
* To score you have to rub out the snake by holding down 0
* after 500 moves the game ends and the score is printed

Not too bad ... only, is there a way to get rid of all the flashing? The player doesn't need to be redrawn unless you have moved it

Yes, keep track of the old A,B and only blank the player position if the keys are pressed. I love BASIC, it's so easy to hack it to make changes

Code: Select all

 70 LET OLDA=A
 71 LET OLDB=B
 75 IF B$="5" THEN  LET B=B-1
 80 IF B$="8" THEN  LET B=B+1
 85 IF B$="6" THEN  LET A=A+1
 90 IF B$="7" THEN  LET A=A-1
 91 IF B$<>"" THEN PRINT AT OLDA,OLDB;"  "
Attachments
CHASE_modded.p
(819 Bytes) Downloaded 74 times
David G
Posts: 387
Joined: Thu Jul 17, 2014 7:58 am
Location: 21 North, 156 West

Computer Character Format - Best Of The Plotter

Post by David G »

Computer Character Format TS 1000 & 2068, 7

This short article refers to Jack Armstrong, who wrote several of the programs in this newsletter. Jack was also chairman of CCATS
COMPUTER CHARACTER FORMAT
T/S 1000 & 2068

by Dick Wagner

Jack Armstrong's 3 line routine for character generation uses decimal values of binary numbers in the DATA statements. The same system applies to the T/S 1000, but we cannot access generation unless we make up characters in a large 8x8 format such as some programs provide. Now is a good time to look into character format.

By making a diagram, we can arrive at the decimal values of the 8 column by 8 line character format. Zero through 7 lists the columns. The 8 rows must be used from the top down. The DEC column is the decimal values of the 1 & 0 locations across the chart. Input these values into the DATA line for columns 0 through 7 in this order and you will have the / on the v key and on the a key.

To return the a key to normal, either re-power the computer or use Jack's program and define the a by this chart.

We have also produced a simple diagram that gives us one method to easily read the binary number of any row by using the applicable DEC numbers. If rows 1 & 8 are full of l's, the number is the sum of the DEC column or 255. If rows 2 through 7 have a 1 in columns 0 & 7, the DEC number is 1+128 or 129. Thus we have Jack's DATA line formed which produces an empty square or box. If we change row 4 to 1+8+128, we will have a box with a dot in the middle.

Let your computer compute the DATA input by adding the values by inputting 1+8+128 between ","'s.

Code: Select all

7 6 5 4 3 2 1 0 DEC.
 ---------------
0 0 0 0 0 0 0 1 1
0 0 0 0 0 0 1 0 2
0 0 0 0 0 1 0 0 4
0 0 0 0 1 0 0 0 8
0 0 0 1 0 0 0 0 16
0 0 1 0 0 0 0 0 32
0 1 0 0 0 0 0 0 64
1 0 0 0 0 0 0 0 128
Not sure how to "let your computer compute the DATA", as there is no program listing here


Jack's User Defined Graphics program is on page 31 (in the 2068 section) and has a 3-line routine. This is apparently the ZX81 version of it. What? UDG on the ZX81? Maybe he's referring to a BIGCHAR type program: "we cannot access generation unless we make up characters in a large ... format". Perhaps this goes with the previously typed-in "Characters On The 1000" from page 7

Here is the TS2068/Spectrum program:
QUICK UDG PROGRAM

by Jack Armstrong

For all of the T/S 2068 users who want a better way to use the capabilities of the computer to enhance their games or even to dress up their more serious programs, here is a way to define their graphics without resorting to using the BIN codes suggested in the manual. That method requires inputting 64 numbers for each character & this method only needs 8. You do need to have a graph grid to design the characters and get the decimal numbers to use in your DATA statements.

This little routine will POKE numbers into locations in RAM which will give you user-defined graphics on lower case keys in the graphics mode--you use all the letters from a through u.

Code: Select all

6000 FOR a=USR "a" TO USR "a" +7
6010 READ UDG: POKE a, UDG: NEXT a
7000 DATA 255,129,129,129,129,129,129,255
These DATA numbers will put a box on the a key in graphics mode.
Here is the manual page 163:
Timex Sinclair 2068 Personal Computer User Manual

Chapter 18 User Defined Graphics

You can define your own symbols and characters with BIN...POKE and USR
...
UDG.jpg
The Spectrum was not just a ZX81 with color added ... im starting to realize it was like a super-ZX81 ?!
Post Reply