[HN Gopher] BBC Basic Editor
       ___________________________________________________________________
        
       BBC Basic Editor
        
       Author : mnem
       Score  : 159 points
       Date   : 2020-11-30 18:07 UTC (4 hours ago)
        
 (HTM) web link (bbcmic.ro)
 (TXT) w3m dump (bbcmic.ro)
        
       | jonnydubowsky wrote:
       | From the 'About' section:
       | 
       | 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!
        
         | brundolf wrote:
         | I was confused for a minute why the British Broadcasting
         | Corporation was developing a BASIC editor
        
           | mattgodbolt wrote:
           | It's for the BBC Micro. Which really _is_ named after the
           | British Broadcasting Corporation.
           | https://en.wikipedia.org/wiki/BBC_Micro
        
             | z2 wrote:
             | I've never seen one of these in person or in emulation, but
             | on seeing the terminal font, was immediately and
             | subliminally motivated to type:                 PRINT "LOOK
             | AROUND YOU ";       GOTO 10
        
       | codeulike wrote:
       | I got an old game from a magazine and pasted into the editor,
       | didn't like for some reason.
       | 
       | 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:
       | 
       | https://pastebin.com/dntnb8es
        
         | mattgodbolt wrote:
         | Thanks! I'll note the leading spaces bug!
        
       | royaltjames wrote:
       | ah yes another paradox
        
       | jedimastert wrote:
       | 10 PRINT doesn't seem to be working for me
       | 
       | > 10 PRINT CHR$(205.5+RND(1)); : GOTO 10
        
         | gabrielsroka wrote:
         | Isn't that just for the Commodore machines/petscii?
        
       | mmcwilliams wrote:
       | I've been enjoying this account[0]--shared on HN several times--
       | that showcases of tweet-length BBC Micro programs. Similar to
       | dwitter.net and Processing sketches appearing under the hashtag
       | ##tsubuyakiProcessing[1] and more recently #tinycode[2] they've
       | been great quarantine diversions into code golfing on social
       | media.
       | 
       | [0] https://twitter.com/bbcmicrobot
       | 
       | [1] https://twitter.com/tweetprocessing
       | 
       | [2] https://twitter.com/search?q=%23tinycode
        
       | jhfdbkofdcho wrote:
       | Does INPUT work?
        
         | mattgodbolt wrote:
         | Not on this site, but click the "jsbeeb" button underneath the
         | emulator to open the code on a full emulator.
        
       | mattgodbolt wrote:
       | So, one of the authors here: we just announced this site on
       | https://twitter.com/bbcmicrobot/status/1333496146400985088 after
       | being caught a little off-guard with this HN post! We still have
       | a bunch of things to improve on, so please let us know and file
       | issues (https://github.com/mattgodbolt/owlet-editor/issues) and
       | we'll try and improve things!
       | 
       | Thanks!
        
         | jvalencia wrote:
         | This is cool. It would be great if the editor linked to good
         | docs/walkthroughs.
        
           | mattgodbolt wrote:
           | That's definitely the hope. The Examples tab is supposed to
           | be more of that, currently we hacked it to point at the more
           | complex demos, but we have some ideas on making more
           | "tutorial" like content.
        
       | jonnycomputer wrote:
       | wish it could have been called: BBE Basic Editor. Of course its
       | BBC Basic, not BBE Basic, so there's that.
        
         | mst wrote:
         | BBC BASIC Console
        
           | jonnycomputer wrote:
           | ah! thank you
        
       | monkpit wrote:
       | Cool!
       | 
       | The Examples tab shows the same 2 examples repeated, at least for
       | me it does.
        
         | mattgodbolt wrote:
         | We are still working on it! :) It was a placeholder, we just
         | replaced with something else, but the hope is to have some
         | great resources for folks learning BASIC, as well as some
         | impressive demos.
        
         | DoofusOfDeath wrote:
         | Taking "20 GOTO 10" to an entirely new level. Well played,
         | Owlet.
        
       | ChrisArchitect wrote:
       | This is good.
       | 
       | 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 :)
        
       | Kototama wrote:
       | This is great, BBC Micro Bot is the best bot on the internet :-).
       | Now they make the entry barrier even lower.
        
       | sangli wrote:
       | This is great. I was trying to pick a language to teach my kid
       | and I wanted to start with BASIC as that's what I learned as my
       | first language, but I couldn't find a working editor that could
       | compile and run by click of a button. So I started with python.
       | But I think BASIC would be easier to teach. This will allow me to
       | do that.
        
         | xyzelement wrote:
         | How's that going? I learned on BASIC around 1990 but it was
         | cool then because you could do things that were in-line with
         | the fun/game state of the art.
         | 
         | 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 :)
        
           | sangli wrote:
           | We just started. It takes time for it to click. But we are
           | making progress. I enjoy seeing his face light up when he
           | writes something that works as intended.
        
       | egypturnash wrote:
       | 10 I=I+.3:J=J+.34:H=ABS(SIN(I)* 27):W=ABS(SIN(J)* 27)
       | 
       | 20 PRINT TAB(H)"HELLO":PRINT TAB(W)"WORLD":GOTO10
        
       ___________________________________________________________________
       (page generated 2020-11-30 23:00 UTC)