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


