2021-04-07: Writing BASIC-8 on the TSS-8 rak
================================================================
I recently discovered SDF’s PiDP-8 [0]. You can access it over
SSH and watch the blinkenlights over its twitch stream. It runs
TSS/8, a time-sharing operating system written in 1967 by Adrian
van de Goor while a grad student here at CMU. I’ve been having
fun tinkering with it, and I just wrote my first BASIC program
[1] since high school. It plots the graph of some user-specified
univariate function. I don’t claim that it’s elegant or
well-engineered, but it works!
10 DEF FNC(X) = 19 * COS(X/2)
20 FOR Y = 20 TO -20 STEP -1
30 FOR X = -25 TO 24
40 LET V = FNC(X)
50 GOSUB 90
60 NEXT X
70 PRINT ""
80 NEXT Y
85 STOP
90 REM SUBROUTINE PRINTS AXES AND PLOT
100 IF X = 0 THEN 150
110 IF Y = 0 THEN 150
120 REM X != 0 AND Y != 0 SO IN QUADRANT
130 GOSUB 290
140 RETURN
150 GOSUB 170
160 RETURN
170 REM SUBROUTINE PRINTS AXES (X = 0 OR Y = 0)
180 IF X + Y = 0 THEN 230
190 IF X = 0 THEN 250
200 IF Y = 0 THEN 270
210 PRINT "AXES INVARIANT VIOLATED"
220 STOP
230 PRINT "+";
240 GOTO 280
250 PRINT "I";
260 GOTO 280
270 PRINT "-";
280 RETURN
290 REM SUBROUTINE PRINTS FUNCTION GRAPH (X != 0 AND Y != 0)
300 IF 0 <= Y THEN 350
310 REM Y < 0
320 IF V <= Y THEN 410
330 REM Y < 0 AND Y < V SO OUTSIDE OF PLOT AREA
340 GOTO 390
350 REM 0 <= Y
360 IF Y <= V THEN 410
370 REM 0 <= Y AND V < Y SO OUTSIDE OF PLOT AREA
380 GOTO 390
390 PRINT " ";
400 RETURN
410 PRINT "*";
420 RETURN
430 REM COPYRIGHT 2021 RYAN KAVANAGH RAK AT RAK.AC
440 END
It produces the following output:
I
I
* ** I **
* ** I **
** ** *I* ** *
** ** *I* ** *
** *** *I* *** *
** **** *I* **** *
** **** *I* **** *
** **** *I* **** *
** **** **I** **** *
*** **** **I** **** **
*** **** **I** **** **
*** **** **I** **** **
*** ***** **I** ***** **
*** ****** **I** ****** **
*** ****** **I** ****** **
*** ****** **I** ****** **
*** ****** **I** ****** **
*** ****** ***I*** ****** **
-------------------------+------------------------
****** ****** I ****** ******
****** ****** I ****** ******
***** ****** I ****** *****
***** ****** I ****** *****
***** ***** I ***** *****
***** ***** I ***** *****
***** ***** I ***** *****
***** **** I **** *****
***** **** I **** *****
**** **** I **** ****
**** **** I **** ****
*** **** I **** ***
*** *** I *** ***
*** *** I *** ***
*** *** I *** ***
** ** I ** **
** ** I ** **
* * I * *
I
I
Next up, I am going to try my hand at writing some FORTRAN or some
FOCAL69. If you like tinkering with old systems, then you should give
the TSS/8 a try.
[0]
https://tss8.sdf.org/
[1] It’s written in the BASIC-8 dialect.