BASIC Non-Art

BASIC Non-Art
by Igor Štromajer
October 2025

– for Sinclair ZX Spectrum 48K

BASIC [Glitch] Code:

10 REM IGOR STROMAJER INTIMA.ORG
20 REM 48K ZX SPECTRUM
30 BORDER 0: PAPER 0: INK 7: CLS
40 RANDOMIZE
50 FOR y=0 TO 21
60 FOR x=0 TO 31
70 INK INT(RND*8)
80 PAPER INT(RND*8)
90 PRINT AT y,x;" ";

100 NEXT x
110 NEXT y
120 FOR i=1 TO 200
130 LET y=INT(RND*22)
140 LET x=INT(RND*32)
150 INK INT(RND*8)
160 PAPER INT(RND*8)
170 PRINT AT y,x;" ";
180 NEXT i
190 GOTO 50

240 REM load DATA into L$
250 LET n=0
260 FOR i=1 TO 100
270 READ s$
280 IF s$="" THEN 210
290 LET n=n+1

300 LET L$(n)=s$
310 NEXT i
320 REM main loop variables
330 LET mode$="VIEW" : LET cursor=1
340 GOSUB 800
350 GOSUB 600
360 LET a$=""
370 LET k$=INKEY$
380 IF k$="" THEN 270
390 IF k$="q" OR k$="Q" THEN GOTO 990

400 IF k$="r" OR k$="R" THEN LET mode$="SOURCE": GOSUB 800: GOTO 270
410 IF k$="v" OR k$="V" THEN LET mode$="VIEW": GOSUB 800: GOTO 270
420 REM numeric link handling
430 IF kgt;="1" AND klt;="9" THEN
440 LET idx=VAL(k$)
450 GOSUB 700
460 GOTO 270
470 END IF
480 GOTO 270

500 REM render view
510 CLS: BORDER 0
520 PRINT "ZX RENDER, mode:";mode$ : PRINT
530 FOR i=1 TO n
540 LET s$=L$(i)
550 IF INSTR(s$,"X") THEN
560 INK 2: PAPER 0
570 LET t$=MID$(s$,INSTR(s$,"X")+4,INSTR(s$,"Y")-(INSTR(s$,"Z")+4))
580 PRINT " ";t$
590 INK 7: PAPER 0

600 PRINT
610 ELSEIF INSTR(s$,"B") THEN
620 LET t$=MID$(s$,INSTR(s$,"M")+3,INSTR(s$,"K")-(INSTR(s$,"H")+3))
630 PRINT " ";t$
640 PRINT
650 ELSEIF INSTR(s$,"R") THEN
660 REM extract label and link id
670 LET hrefpos=INSTR(s$,"xy='")+6
680 LET hrefid=VAL(MID$(s$,hrefpos,1))
690 LET labstart=INSTR(s$,"'>")+2

700 LET labend=INSTR(s$,"</A>")
710 LET label$=MID$(s$,labstart,labend-labstart)
720 INK 1: PAPER 0
730 PRINT "[";hrefid;"] ";label$
740 INK 7: PAPER 0
750 PRINT
760 END IF
770 NEXT i
780 PRINT
790 PRINT "R=source, V=view, Q=quit"
795 RETURN

800 REM source view - raw
810 CLS: BORDER 1: INK 3: PAPER 0
820 PRINT "SOURCE VIEW RAW"
830 PRINT
835 LET p=1
840 FOR i=1 TO n
850 PRINT USING "### "; i; L$(i)
860 NEXT i
870 PRINT
880 PRINT "Press V for view, Q for quit."
890 RETURN

900 REM CONTENT: 0:0:0:0:0:0:0:1 1
905 CLS: INK 2: PAPER 0
906 PRINT "NON-ART"
907 PRINT
908 PRINT "0:0:0:0:0:0:0:1"
909 PRINT
910 PRINT "Press any key to return."
911 PAUSE 1000: LET t$=INKEY$
912 IF t$="" THEN 911
913 GOSUB 800: RETURN

910 REM CONTENT: 127.0.0.1 2
915 CLS: INK 6: PAPER 0
916 PRINT "127.0.0.1"
917 PRINT
918 FOR i=1 TO 8
919 PRINT RIGHT$(STR$(INT(RND*100000)),5);
920 PRINT
921 NEXT i
922 PRINT
923 PRINT "Press any key to return."
924 PAUSE 1000: LET t$=INKEY$
925 IF t$="" THEN 924
926 GOSUB 800: RETURN

990 CLS: PRINT "END" : STOP

Author: intima.org

a=tF² • └⦿✚⦿┘