{"id":385,"date":"2021-08-18T17:03:48","date_gmt":"2021-08-18T15:03:48","guid":{"rendered":"https:\/\/automatico.freevar.com\/?page_id=385"},"modified":"2021-09-29T15:48:52","modified_gmt":"2021-09-29T13:48:52","slug":"basic","status":"publish","type":"page","link":"https:\/\/automatico.freevar.com\/index.php\/z80-mbc2\/esp32\/basic\/","title":{"rendered":"BASIC"},"content":{"rendered":"<p id=\"tw-target-text\" class=\"tw-data-text tw-text-large XcVN5d tw-ta\" dir=\"ltr\" data-placeholder=\"Traduzione\"><span class=\"VIiyi\" lang=\"it\" style=\"font-size: 14pt;\"><span class=\"JLqJ4b ChMk0b\" data-language-for-alternatives=\"it\" data-language-to-translate-into=\"en\" data-phrase-index=\"4\">This is a BASIC language program for the Reddit backstage contest.\u00a0It has been adapted to Microsoft Basic-85 and incorporates FabGL graphics management routines.\u00a0The WIDTH instruction of line 160 is important for the operation of the graphics routines. The graphics routines are invoked when the video terminal collects the Escape character followed by an underscore, then the name of the routine and finally the coordinates separated by &#8220;;&#8221; at the end, the \u201c$\u201d character closes the string, for example \u201c0x1b_GPIXEL5; 10 $\u201d lights up a point on the screen at the coordinates x = 5 and y = 10.\u00a0Unfortunately\u00a0Microsoft Basic issues a CR on the terminal (even if the print is followed by a &#8220;;&#8221;) after a PRINT.\u00a0\u00a0The WIDTH statement followed by 255 forces the interpreter not to issue a CR after PRINT.\u00a0WIDTH nnn is a statement indicating the maximum number of columns in the terminal. <a href=\"https:\/\/www.reddit.com\/r\/retrobattlestations\/comments\/ov6w91\/old_z80mbc2\/\">https:\/\/www.reddit.com\/r\/retrobattlestations\/comments\/ov6w91\/old_z80mbc2\/<\/a><\/span><\/span><\/p>\n<pre class=\"brush: vb; title: ; notranslate\" title=\"\">\r\n100 REM BASIC Month 6: The Mandelbaum Set\r\n110 REM http:\/\/reddit.com\/r\/RetroBattlestations\r\n120 REM written by FozzTexx\r\n130 REM &quot;You think you're better than me?&quot;\r\n140 REM Modified for Z80-MBC2 and ESP32 Fabgl graphics library\r\n150 REM by Vito BLASI https:\/\/automatico.freevar.com\r\n160 WIDTH 255\r\n200 REM === Initialize variables and constants\r\n210 PI = 3.14159265359:DIM PT(128)\r\n220 GO(0) = 33:GO(1) = 138:GO(2) = 200\r\n230 CM(0) = 1:CM(1) = 0:CM(2) = 0\r\n240 CM(3) = 0:CM(4) = 1:CM(5) = 0\r\n250 CM(6) = 0:CM(7) = 0:CM(8) = 1\r\n260 GW = GO(2) * GO(2) \/ GO(1)\r\n262 GOSUB 10000: REM Define functions\r\n264 REM Disable cursor and clear screen\r\n270 TH = GO(2) + 5:GOSUB 2630:TH = TH + SZ(1):GOSUB 2630:TH = TH + SZ(1)\r\n280 RZ(0) = 640:RZ(1) = 480:REM Width &amp; height of screen\r\n290 SX = (RZ(0) - RZ(0) * 0.05) \/ GW:SY = (RZ(1) - RZ(1) * 0.07) \/ TH\r\n300 SK = SX:IF SY &lt; SK THEN SK = SY\r\n310 PRINT FNCURSOROFF$;FNCLR$;FNPEN$(0,255,0);\r\n320 REM &quot;What in holy hell?&quot;\r\n330 X = -GW \/ 2:Y = -GO(2) \/ 2:GOSUB 2030:REM Translate\r\n340 X = SK:Y = SK:GOSUB 2230:REM Scale\r\n350 X = RZ(0) \/ 2:Y = RZ(1) \/ 2:GOSUB 2030:REM Translate\r\n360 GOSUB 2820\r\n370 RESTORE:REM Reset reading of DATA back to first object\r\n380 GOSUB 2630:GOSUB 2720\r\n390 GOSUB 2630\r\n400 X = (GW - SZ(0)) * SK:Y = (GO(2) + SZ(1) + 5) * SK\r\n410 GOSUB 2030:GOSUB 2720:GOSUB 2920\r\n420 GOSUB 2630\r\n430 GX = GO(1) \/ 2:GY = GO(2) \/ 2:GB = GY - GX:OO = GO(2) * GO(2) \/ GO(1) - GO(1)\r\n440 GOSUB 4510\r\n\r\n500 REM &quot;Step aside, string bean.&quot;\r\n510 X = -RZ(0) \/ 2:Y = -RZ(1) \/ 2:GOSUB 2030:REM Translate\r\n520 A = PI \/ 2:GOSUB 2130:REM Rotate\r\n530 X = GO(1) \/ GO(2):Y = X:GOSUB 2230:REM Scale\r\n540 X = RZ(0) \/ 2 + (GW \/ 2 - GO(1) \/ 2) * SK:Y = RZ(1) \/ 2:GOSUB 2030:REM Translate\r\n550 GOSUB 4510\r\n560 IF HT &gt; 1 THEN GOTO 510\r\n570 GOSUB 4610\r\n\r\n999 END\r\n\r\n1000 REM === Update current transformation matrix\r\n1010 REM - Input: 3x3 matrix in 1D array NT\r\n1020 REM - Updates 3x3 Matrix in 1D array CM\r\n1030 FOR R = 0 TO 2:FOR C = 0 TO 2\r\n1040 NM(R * 3 + C) = 0\r\n1050 FOR K = 0 TO 2\r\n1060 NM(R * 3 + C) = NM(R * 3 + C) + NT(R * 3 + K) * CM(K * 3 + C)\r\n1070 NEXT K, C, R\r\n1080 FOR K = 0 TO 3 * 3 - 1:CM(K) = NM(K):NEXT K\r\n1090 RETURN\r\n\r\n2000 REM === Translate - move origin\r\n2010 REM - Input: X, Y\r\n2020 REM - Updates current transformation matrix in CM\r\n2030 NT(0) = 1:NT(1) = 0:NT(2) = X\r\n2040 NT(3) = 0:NT(4) = 1:NT(5) = Y\r\n2050 NT(6) = 0:NT(7) = 0:NT(8) = 1\r\n2060 GOSUB 1030\r\n2070 RETURN\r\n\r\n2100 REM === Rotate - rotate drawing space\r\n2110 REM - Input: Angle in radians in A\r\n2120 REM - Updates current transformation matrix in CM\r\n2130 NT(0) = COS(A):NT(1) = -SIN(A):NT(2) = 0\r\n2140 NT(3) = -NT(1):NT(4) = NT(0):NT(5) = 0\r\n2150 NT(6) = 0:NT(7) = 0:NT(8) = 1\r\n2160 GOSUB 1030\r\n2170 RETURN\r\n\r\n2200 REM === Scale - modify unit lengths of drawing\r\n2210 REM - Input: X, Y\r\n2220 REM - Updates current transformation matrix in CM\r\n2230 NT(0) = X:NT(1) = 0:NT(2) = 0\r\n2240 NT(3) = 0:NT(4) = Y:NT(5) = 0\r\n2250 NT(6) = 0:NT(7) = 0:NT(8) = 1\r\n2260 GOSUB 1030\r\n2270 RETURN\r\n\r\n2300 REM === Transform single point using current transformation matrix\r\n2310 REM - Input: X, Y\r\n2320 REM - Returns transformed point in X and Y\r\n\r\nPress RETURN to Continue\r\n2330 NT(0) = X:NT(1) = Y:NT(2) = 1\r\n2340 FOR R = 0 TO 2\r\n2350 NM(R) = 0\r\n2360 FOR K = 0 TO 2\r\n2370 NM(R) = NM(R) + NT(K) * CM(R * 3 + K)\r\n2380 NEXT K, R\r\n2390 X = NM(0):Y = NM(1)\r\n2400 RETURN\r\n\r\n2500 REM === Draw line\r\n2510 REM - Input: X1,Y1 X2,Y2\r\n2520 X = X1:Y = Y1:GOSUB 2330:A1 = X:B1 = Y\r\n2530 X = X2:Y = Y2:GOSUB 2330:A2 = X:B2 = Y\r\n2540 PRINT FNDRAW$(A1,B1,A2,B2);\r\n2550 RETURN\r\n\r\n2600 REM === Load object from DATA\r\n2610 REM - Reads the next object from DATA and leaves size in array SZ\r\n2620 REM and paths in array PT\r\n2630 ZI = 0:READ ZX:SZ(0) = ZX:READ ZY:SZ(1) = ZY\r\n2640 READ ZC:PT(ZI) = ZC:ZI = ZI + 1\r\n2650 IF ZC = 0 THEN RETURN\r\n2660 FOR ZJ = 1 TO ZC:READ ZX:READ ZY\r\n2670 PT(ZI) = ZX:ZI = ZI + 1:PT(ZI) = ZY:ZI = ZI + 1\r\n2680 NEXT ZJ\r\n2690 GOTO 2640\r\n\r\n2700 REM === Draw path\r\n2710 REM - Input: paths to draw in array PT\r\n2720 ZI = 0\r\n2730 ZC = PT(ZI):ZI = ZI + 1:IF ZC = 0 THEN RETURN\r\n2740 X1 = PT(ZI):ZI = ZI + 1:Y1 = PT(ZI):ZI = ZI + 1\r\n2750 FOR ZJ = 1 TO ZC - 1\r\n2760 X2 = PT(ZI):ZI = ZI + 1:Y2 = PT(ZI):ZI = ZI + 1\r\n2770 GOSUB 2520\r\n2780 X1 = X2:Y1 = Y2:NEXT ZJ\r\n2790 GOTO 2730\r\n\r\n2800 REM == Save current transformation matrix\r\n2810 REM Copies array CM to array OM\r\n2820 FOR I = 0 TO 8:OM(I) = CM(I):NEXT I\r\n2830 RETURN\r\n\r\n2900 REM == Restore transformation matrix\r\n2910 REM Copies array OM to array CM\r\n2920 FOR I = 0 TO 8:CM(I) = OM(I):NEXT I\r\n2930 RETURN\r\n\r\n3000 REM Mandelbaum arc\r\n3010 REM - Input: Arc center at CX,CY; Start\/end radians in SA,EA\r\n3020 REM &quot;If you want to live in a butcher shop, I'm gonna treat you like a piece of meat.&quot;\r\n3030 IF (EA &lt; SA) THEN EA = EA + 2 * PI\r\n3040 NW = SZ(0):NH = SZ(1):NS = GO(0) \/ NW:SH = NH * NS\r\n3050 RO = GO(1) \/ 2:RI = RO - GO(0)\r\n3060 AL = (EA - SA) * GO(1) \/ 2:SG = INT(AL \/ SH)\r\n3070 GA = (EA - SA) \/ SG\r\n3080 GC = COS(2 * PI - GA):GS = SIN(2 * PI - GA):ZC = COS(0):ZS = SIN(0)\r\n3090 F1 = CX + RI * GC:G1 = CY + RI * GS\r\n3100 F2 = CX + RO * GC:G2 = CY + RO * GS\r\n3110 F3 = CX + RI * ZC:G3 = CY + RI * ZS\r\n3120 F4 = CX + RO * ZC:G4 = CY + RO * ZS\r\n3130 D1 = F3 - F1:D2 = G3 - G1:D3 = F4 - F2:D4 = G4 - G2\r\n3140 L1 = SQR(D1 * D1 + D2 * D2):L2 = SQR(D3 * D3 + D4 * D4)\r\n3150 GOSUB 2820\r\n3160 X = CX:Y = CY:GOSUB 2330:AX = X:AY = Y\r\n3170 REM Walk through PT and draw\r\n3180 FOR SN = 0 TO SG - 1\r\n3190 GOSUB 2920\r\n3200 X = -AX:Y = -AY:GOSUB 2030:REM Translate\r\n3210 A = 2 * PI - (SA + SN * GA):GOSUB 2130:REM Rotate\r\n3220 X = AX:Y = AY:GOSUB 2030:REM Translate\r\n3230 ZI = 0\r\n3240 ZC = PT(ZI):ZI = ZI + 1:IF ZC = 0 THEN GOTO 3350\r\n3250 X1 = PT(ZI) * NS:ZI = ZI + 1\r\n3260 Y1 = PT(ZI) * NS * (L1 - 1 + (L2 - L1 - 1) * (X1 \/ GO(0))) \/ L2:ZI = ZI + 1\r\n3270 X1 = X1 + CX + RI:Y1 = Y1 + CY\r\n3280 FOR ZJ = 1 TO ZC - 1\r\n3290 X2 = PT(ZI) * NS:ZI = ZI + 1\r\n3300 Y2 = PT(ZI) * NS * (L1 - 1 + (L2 - L1 - 1) * (X2 \/ GO(0))) \/ L2:ZI = ZI + 1\r\n3310 X2 = X2 + CX + RI:Y2 = Y2 + CY\r\n3320 GOSUB 2520\r\n3330 X1 = X2:Y1 = Y2:NEXT ZJ\r\n3340 GOTO 3240\r\n3350 NEXT SN\r\n3360 GOSUB 2920\r\n3370 RETURN\r\n\r\n4000 REM Mandelbaum line\r\n4010 REM - Input: Start and end diagonal corners in X1,Y1 and X2,Y2\r\n4020 REM &quot;Wrong attitude, you're not bringing that trash into my house.&quot;\r\n4030 NW = SZ(0):NH = SZ(1) + 1\r\n4040 XD = X2 - X1:YD = Y2 - Y1\r\n4050 IF XD &gt; 0 AND YD &lt; 0 THEN A = 0:WD = XD:HT = YD\r\n4060 IF XD &lt; 0 AND YD &lt; 0 THEN A = 1.5 * PI:HT = XD:WD = YD\r\n4070 IF XD &lt; 0 AND YD &gt; 0 THEN A = PI:WD = XD:HT = YD\r\n4080 IF XD &gt; 0 AND YD &gt; 0 THEN A = 0.5 * PI:HT = XD:WD = YD\r\n4090 WD = ABS(WD):HT = ABS(HT)\r\n4100 NS = WD \/ NW:SH = INT(NH * NS)\r\n4110 SG = INT((HT + SH - 1) \/ SH):SH = HT \/ SG\r\n4120 SX = GO(0) \/ NW:SY = SH \/ NH\r\n4130 GOSUB 2820\r\n4140 AX = X1:AY = Y1:X = X1:Y = Y1:GOSUB 2330:OX = X:OY = Y\r\n4150 X = X2:Y = Y2:GOSUB 2330:XD = X - OX:YD = Y - OY\r\n4160 X = 0:Y = 0:GOSUB 2330\r\n4170 X = -X:Y = -Y:GOSUB 2030:REM Translate\r\n4180 GOSUB 2130:REM Rotate\r\n4190 X = SX:Y = SY\r\n4200 IF (XD &lt; 0 AND YD &lt; 0) OR (XD &gt; 0 AND YD &gt; 0) THEN Y = SX:X = SY\r\n4210 GOSUB 2230:REM Scale\r\n4220 X = OX:Y = OY:GOSUB 2030:REM Translate\r\n\r\n4230 REM Walk through PT and draw\r\n4240 FOR SN = 0 TO SG - 1\r\n4250 ZI = 0\r\n4260 ZC = PT(ZI):ZI = ZI + 1:IF ZC = 0 THEN GOTO 4350\r\n4270 X1 = PT(ZI):ZI = ZI + 1\r\n4280 Y1 = PT(ZI) * (SH - 1) \/ SH - SN * (SH \/ SY):ZI = ZI + 1\r\n4290 FOR ZJ = 1 TO ZC - 1\r\n4300 X2 = PT(ZI):ZI = ZI + 1\r\n4310 Y2 = PT(ZI) * (SH - 1) \/ SH - SN * (SH \/ SY):ZI = ZI + 1\r\n4320 GOSUB 2520\r\n4330 X1 = X2:Y1 = Y2:NEXT ZJ\r\n4340 GOTO 4260\r\n4350 NEXT SN\r\n4360 GOSUB 2920\r\n\r\n4370 REM Return height to decide if it's time to stop\r\n4380 X = AX:Y = AY + SH:GOSUB 2330\r\n4390 HT = SQR((X - OX) * (X - OX) + (Y - OY) * (Y - OY))\r\n4400 RETURN\r\n\r\n4500 REM === G\r\n4510 CX = GX:CY = GY - GB:SA = 0:EA = PI:GOSUB 3030\r\n4520 X1 = GO(0):Y1 = GY - GB:X2 = 0:Y2 = GY + GB:GOSUB 4030\r\n4530 CX = GX:CY = GY + GB:SA = PI:EA = 0:GOSUB 3030\r\n4540 X1 = GO(1):Y1 = GY + GB:X2 = GX:Y2 = GY + GB - GO(0):GOSUB 4030\r\n4550 RETURN\r\n\r\n4600 REM === O\r\n4610 CX = GX + OO:CY = GY - GB:SA = 0:EA = PI:GOSUB 3030\r\n4620 X1 = GO(0) + OO:Y1 = GY - GB:X2 = OO:Y2 = GY + GB:GOSUB 4030\r\n4630 CX = GX + OO:CY = GY + GB:SA = PI:EA = 0:GOSUB 3030\r\n4640 X1 = GO(1) - GO(0) + OO:Y1 = GY + GB:X2 = GO(1) + OO:Y2 = GY - GB:GOSUB 4030\r\n4650 RETURN\r\n\r\n9000 REM &quot;All aboard the pain train.&quot;\r\n9010 DATA 39,16,15,3,-16,0,-16,0,-13,3,-13,3,-3,0,-3,0,0,10,0,10,-3,6,-3\r\n9020 DATA 6,-13,10,-13,10,-16,6,-16,3,-16,11,16,-16,12,-16,12,-13,16,-13\r\n9030 DATA 16,0,19,0,19,-13,23,-13,23,-16,19,-16,16,-16,5,25,-16,27,-16\r\n9040 DATA 27,-13,25,-13,25,-16,19,36,-9,33,-10,32,-11,34,-13,36,-12,39\r\n9050 DATA -12,34,-16,30,-14,29,-11,32,-7,35,-6,36,-5,34,-3,32,-4,29,-4\r\n9060 DATA 34,0,38,-1,39,-5,36,-9,0\r\n9070 DATA 53,16,15,23,-13,23,-16,20,-16,16,-16,13,-16,13,-13,16,-13,16\r\n9080 DATA -3,13,-3,13,0,23,0,23,-3,20,-3,20,-13,23,-13,18,53,-13,53,-16\r\n9090 DATA 46,-16,43,-16,43,-13,43,-10,43,-6,43,-3,43,0,53,0,53,-3,46,-3\r\n9100 DATA 46,-6,51,-6,51,-10,46,-10,46,-13,53,-13,11,10,-16,7,-16,3,-16\r\n9110 DATA 0,-16,0,-13,3,-13,3,0,7,0,7,-13,10,-13,10,-16,14,37,-16,33,-9\r\n9120 DATA 29,-16,26,-16,26,0,29,0,29,-10,32,-4,34,-4,37,-10,37,0,40,0,40\r\n9130 DATA -16,37,-16,0\r\n9140 DATA 52,8,5,0,0,0,-8,3,-4,5,-8,5,0,3,10,0,8,-8,6,0,2,7,-4,9,-4,4,11\r\n9150 DATA 0,11,-8,15,0,15,-8,6,18,-8,16,-8,16,0,18,0,20,-4,18,-8,2,23,-4\r\n9160 DATA 21,-4,4,25,-8,21,-8,21,0,25,0,3,31,0,26,0,26,-8,12,32,-4,35,-4\r\n9170 DATA 36,-5,36,-7,35,-8,32,-8,32,0,35,0,35,0,36,-1,36,-3,35,-4,3,41\r\n9180 DATA 0,39,-8,37,0,2,38,-4,40,-4,6,42,-8,42,-1,44,0,45,0,47,-1,47,-8\r\n9190 DATA 5,48,0,48,-8,50,-4,52,-8,52,0,0\r\n10000 REM\r\n10010 REM ** DEFINE FUNCTIONS **\r\n10020 DEF FNPEN$(R%, G%, B%) = CHR$(27)+&quot;_GPEN&quot;+STR$(R%)+&quot;;&quot;+STR$(G%)+&quot;;&quot;+STR$(B%)+&quot;$&quot;\r\n10030 DEF FNBRUSH$(R%, G%, B%) = CHR$(27)+&quot;_GBRUSH&quot;+STR$(R%)+&quot;;&quot;+STR$(G%)+&quot;;&quot;+STR$(B%)+&quot;$&quot;\r\n10040 DEF FNPIXEL$(X%, Y%) = CHR$(27)+&quot;_GPIXEL&quot;+STR$(X%)+&quot;;&quot;+STR$(Y%)+&quot;$&quot;\r\n10050 DEF FNDRAW$(X1%, Y1%, X2%, Y2%) = CHR$(27)+&quot;_GLINE&quot;+STR$(X1%)+&quot;;&quot;+STR$(Y1%)+&quot;;&quot;+STR$(X2%)+&quot;;&quot;+STR$(Y2%)+&quot;$&quot;\r\n10060 DEF FNRECT$(X1%, Y1%, X2%, Y2%) = CHR$(27)+&quot;_GRECT&quot;+STR$(X1%)+&quot;;&quot;+STR$(Y1%)+&quot;;&quot;+STR$(X2%)+&quot;;&quot;+STR$(Y2%)+&quot;$&quot;\r\n10070 DEF FNFILLRECT$(X1%, Y1%, X2%, Y2%) = CHR$(27)+&quot;_GFILLRECT&quot;+STR$(X1%)+&quot;;&quot;+STR$(Y1%)+&quot;;&quot;+STR$(X2%)+&quot;;&quot;+STR$(Y2%)+&quot;$&quot;\r\n10080 DEF FNELLIPSE$(X%, Y%, W%, H%) = CHR$(27)+&quot;_GELLIPSE&quot;+STR$(X%)+&quot;;&quot;+STR$(Y%)+&quot;;&quot;+STR$(W%)+&quot;;&quot;+STR$(H%)+&quot;$&quot;\r\n10090 DEF FNFILLELLIPSE$(X%, Y%, W%, H%) = CHR$(27)+&quot;_GFILLELLIPSE&quot;+STR$(X%)+&quot;;&quot;+STR$(Y%)+&quot;;&quot;+STR$(W%)+&quot;;&quot;+STR$(H%)+&quot;$&quot;\r\n10110 DEF FNPATH$(POINTS$) = CHR$(27)+&quot;_GPATH&quot;+POINTS$+&quot;$&quot;\r\n10120 DEF FNFILLPATH$(POINTS$) = CHR$(27)+&quot;_GFILLPATH&quot;+POINTS$+&quot;$&quot;\r\n10130 DEF FNSCROLL$(X%, Y%) = CHR$(27)+&quot;_GSCROLL&quot;+STR$(X%)+&quot;;&quot;+STR$(Y%)+&quot;$&quot;\r\n10140 DEF FNCLR$ = CHR$(27)+&quot;_GCLEAR$&quot;\r\n10150 DEF FNCURSORON$ = CHR$(27)+&quot;_E1$&quot;\r\n10160 DEF FNCURSOROFF$ = CHR$(27)+&quot;_E0$&quot;\r\n10170 DEF FNCLRTERM$ = CHR$(27)+&quot;_B$&quot;\r\n10180 RETURN\r\n<\/pre>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_385\" class=\"pvc_stats all  \" data-element-id=\"385\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/automatico.freevar.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>This is a BASIC language program for the Reddit backstage contest.\u00a0It has been adapted to Microsoft Basic-85 and incorporates FabGL graphics management routines.\u00a0The WIDTH instruction of line 160 is important for the operation of the graphics routines. The graphics routines are invoked when the video terminal collects the Escape character followed by an underscore, then [&hellip;]<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_385\" class=\"pvc_stats all  \" data-element-id=\"385\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/automatico.freevar.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":0,"parent":338,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-385","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/385"}],"collection":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/comments?post=385"}],"version-history":[{"count":17,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/385\/revisions"}],"predecessor-version":[{"id":775,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/385\/revisions\/775"}],"up":[{"embeddable":true,"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/pages\/338"}],"wp:attachment":[{"href":"https:\/\/automatico.freevar.com\/index.php\/wp-json\/wp\/v2\/media?parent=385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}