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.