BBC Basic Editor
bbcmic.ro
bbcmic.ro
Thanks!
[0] https://twitter.com/bbcmicrobot
A simple, modern editor for BBC BASIC inspired by [BBC Micro bot](https://www.bbcmicrobot.com/)
Created by [8bitkick](https://www.github.com/8bitkick) and [mattgodbolt](https://twitter.com/mattgodbolt).
The microbot site has quite a few demos which were also published as tweets. Looks awesome!
PRINT "LOOK AROUND YOU ";
GOTO 10thz2
20 PRINT TAB(H)"HELLO":PRINT TAB(W)"WORLD":GOTO10
Today what you can do in BASIC is "boring" compared to the most "basic" fun the kid can have on the iPad. Are you finding traction?
Asking for my son who's currently 4 months :)
Anyway, as someone who had a PC and GWBASIC or Microsoft QBASIC it was weird for me that these books mentioned all these platforms which I couldn't find anywhere around my small place in the world. Maybe now I can now run these as the author intended.
edit:it was leading spaces before the line numbers that had broken it - got rid of them and it works.
OK so take this code below, strip off the leading spaces (thats important) and paste it into the box.
Its a helicopter game, controls are Z,X,M,K for left, right, up and down. You have to collect the asterixes.
The controls wont work in the right hand pane but if you press the JSBeeb button at the bottom it will port your code to JSBeeb where it does run
"Helicopter" by David Johnston from Acorn Computing magazine, 1994
10 MODE1
20 TIME=0
30 VDU 23;8202;0;0;0;
40 VDU 23,130,248,63,0,0,0,15,57,96
50 VDU 23,131,0,255,16,16,16,19,215,126
60 VDU 23,132,0,252,31,0,0,192,0,0
70 VDU 23,133,0,0,0,0,0,48,72,132
80 VDU 23,134,192,128,128,192,127,127,31,0
90 VDU 23,135,63,63,63,63,255,254,254,130
100 VDU 23,136,255,255,248,128,0,0,0,0
110 VDU 23,137,228,132,72,48,0,0,0,0
120 VDU 23,138,0,31,63,31,0,0,0,0
130 VDU 23,139,130,255,255,255,0,0,0,0
140 VDU 23,140,0,240,248,240,0,0,0,0
150 VDU 23,141,85,85,255,0,0,0,0,0
160 VDU 23,142,255,255,195,195,195,195,255,255
170 VDU 23,143,24,126,126,255,255,126,126,24
180 A=35:B=15
190 FORZ=1TO38:PRINTTAB(Z,31);CHR$(141);:NEXT
200 S=0
210 BA2=0:BB2=0:BL2=0
220 BA=-6:BB=20:BL=7
230 BA3=0:BB3=0:BL3=0
240 CA=0:CB=0
250 PROCdraw
260 QT%=TIME+8:IF INKEY(-71)=-1 THEN PROCup
270 IF INKEY(-102)=-1 THEN PROCdown
280 IF INKEY(-98)=-1 THEN PROCleft
290 IF INKEY(-67)=-1 THEN PROCright
300 PROCbuilding
310 PROCsidec
320 PROCcir
330 IF (CA=A AND CB=B+2) OR (CA=A+1 AND CB=B+2) OR (CA=A+2 AND CB=B+2) THEN CA=0:S=S+10
340 IF TIME>10000 THEN CLS:PRINT"Out of time":PRINT:PRINT"You scored ";S:GOTO1260
350 REPEATUNTILTIME>QT%:GOTO260
360 DEFPROCup
370 IF B=1 THEN ENDPROC
380 PROCundraw
390 B=B-1
400 IF (INKEY(-98)=-1 AND A>1) OR (INKEY(-67)=-1 AND A<35) THEN GOTO 410 ELSE PROCdraw
410 ENDPROC
420 DEFPROCdown
430 IF B=28 THEN ENDPROC
440 IF A+3>BA AND A<BA+BL AND B=BB-3 THEN PROCdie
450 IF A+3>BA2 AND A<BA2+BL2 AND B=BB2-3 THEN PROCdie
460 IF A+3>BA3 AND A<BA3+BL3 AND B=BB3-3 THEN PROCdie
470 PROCundraw
480 B=B+1
490 IF (INKEY(-98)=-1 AND A>1) OR (INKEY(-67)=-1 AND A<35) THENGOTO500 ELSE PROCdraw
500 ENDPROC
510 DEFPROCleft
520 IF A=1 THEN ENDPROC
530 PROCsidec
540 PROCundraw
550 A=A-1:PROCdraw
560 ENDPROC
570 DEFPROCright
580 IF A=35 THEN ENDPROC
590 PROCundraw
600 A=A+1:PROCdraw
610 ENDPROC
620 DEFPROCsidec
630 IF B+3>BB AND A=BA+BL THEN PROCdie
640 IF B+3>BB2 AND A=BA2+BL2 THEN PROCdie
650 IF B+3>BB3 AND A=BA3+BL3 THEN PROCdie
660 ENDPROC
670 DEFPROCcir
675 COLOUR3
680 IF CA=0 THENGOTO730
690 PRINTTAB(CA,CB)" "
700 IF CA=38 THEN CA=0:GOTO740
710 CA=CA+1
720 PRINTTAB(CA,CB)CHR$(143)
730 IF CA>0 THEN ENDPROC
740 IF POINT(36,100)=2 THEN ENDPROC
750 IF RND(10)>1 THEN ENDPROC
760 CA=1:CB=RND(5)+20
770 ENDPROC
780 DEFPROCdraw
785 COLOUR1
790 PRINTTAB(A,B);
800 VDU130:VDU131:VDU132:VDU133
810 PRINTTAB(A,B+1);
820 VDU134:VDU135:VDU136:VDU137
830 PRINTTAB(A,B+2);
840 VDU138:VDU139:VDU140
850 ENDPROC
860 DEFPROCundraw
870 PRINTTAB(A,B);" "
880 PRINTTAB(A,B+1);" "
890 PRINTTAB(A,B+2);" "
900 ENDPROC
910 DEFPROCbuilding
915 COLOUR2
920 IF BL=0 THENGOTO980
930 IF BA<1 THENGOTO950
940 FOR Z%=BB TO 30:PRINTTAB(BA,Z%);" ";:NEXT
950 IF BA>38-BL THENGOTO970
960 FOR Z%=BB TO 30:PRINTTAB(BA+BL,Z%)CHR$(142):NEXT
970 BA=BA+1:IF BA=39 THEN BL=0
980 IF BL2=0 THENGOTO1040
990 IF BA2<1 THENGOTO1010
1000 FOR Z%=BB2 TO 30:PRINTTAB(BA2,Z%);" ";:NEXT
1010 IF BA2>38-BL2 THENGOTO1030
1020 FOR Z%=BB2 TO 30:PRINTTAB(BA2+BL2,Z%)CHR$(142):NEXT
1030 BA2=BA2+1:IF BA2=39 THEN BL2=0
1040 IF BL3=0 THENGOTO1100
1050 IF BA3<1 THENGOTO1070
1060 FOR Z%=BB3 TO 30:PRINTTAB(BA3,Z%);" ";:NEXT
1070 IF BA3>38-BL3 THENGOTO1090
1080 FOR Z%=BB3 TO 30:PRINTTAB(BA3+BL3,Z%)CHR$(142):NEXT
1090 BA3=BA3+1:IF BA3=39 THEN BL3=0
1095 IF CA=1 OR CA=2 THEN ENDPROC
1100 IF BL=0 AND (BA2>2 OR BL2=0) AND (BA3>2 OR BL3=0) THENGOTO1120
1110 GOTO1140
1120 IF RND(10)>1 THENGOTO1140
1130 BL=RND(10)+5:BA=1-BL:BB=RND(10)+10
1140 IF BL2=0 AND (BA>2 OR BL=0) AND (BA3>2 OR BL3=0) THENGOTO1160
1150 GOTO1180
1160 IF RND(10)>1 THENGOTO1180
1170 BL2=RND(10)+5:BA2=1-BL2:BB2=RND(10)+10
1180 IF BL3=0 AND (BA>2 OR BL=0) AND (BA2>2 OR BL2=0) THENGOTO1200
1190 GOTO1220
1200 IF RND(10)>1 THENGOTO1220
1210 BL3=RND(10)+5:BA3=1-BL3:BB3=RND(10)+10
1220 ENDPROC
1230 DEFPROCdie
1240 CLS:PRINT"You have crashed"
1250 PRINT:PRINT"You scored ";S
1260 FORT=1TO3000:NEXT:*FX15,1
1270 PRINT:PRINT"Press any key to play again"
1280 A=GET:RUN
Also a bat and ball game here, its not very good though:PRINT ASC("\") " " CHR$(92) : PRINT ASC("/") " " CHR$(47)
47 prints fine, but 92 reveals a symbol "12" in super/subscript.
Some of the others are also off, e.g. the arrow sequence revealed by 10 FOR A= 1 TO 255 STEP 1 : PRINT CHR$(A) ;: NEXT
shows down arrow suffering the same.
Thanks, can't wait to see where this goes next!
5 MODE 1
10 IF RND(1) > 0.5 THEN PRINT CHR$(92) ;: ELSE PRINT CHR$(47) ;:
20 GOTO 10
I'm sure you really mean print it out then type it in, line by line.
Loved early BBC Micro Bot, then amazing seeing ppl pushing demoscene-level FX on it, but the code's all shrunk & obfuscated, taking away from BASIC spirit: being able to see the sequences & be inspired to learn & create, how BASIC got me in my youth & onwards :)
Is it because the programs are supposed to fit into tweets? (Yet another way good ideas get crippled by Twitter?)
Elsethread there's also links to tweets involving a "golfified" version of Processing if that's what you're looking for.
The Examples tab shows the same 2 examples repeated, at least for me it does.
> 10 PRINT CHR$(205.5+RND(1)); : GOTO 10