MSBASIC for the 6502 computer
🕑 Added 2024-01-31 18:44:58 +0000 UTCIn this video, I adapt Microsoft BASIC to run on the 6502! Hopefully it all makes sense—there is a lot going on here! This video today is definitely a draft. At a minimum I intend to put the final working code from this video up on GitHub and point to it at the end of the video.
But as always, thanks for your continued support! Let me know if you see anything in the video that could be less confusing (hopefully without redoing the whole thing!) or any editing glitches, etc.
Thanks again!
-Ben
Comments
Morgan
So glad you posted this, I encountered the same problem and wasn't sure what that file was. Thank you!
NormalLuser
I agree! I have been adding graphics and sound commands to EhBasic for my BE6502 + Worlds Worst Video card and I'd love to port them over to Ben's MS Basic! I have not looked much, but I don't really see anyone out there talking about what you have to do exactly to add your own commands to 6502 MS Basic. I think it would be a great topic that would be fun for the community. https://github.com/Fifty1Ford/BeEhBasic
Mike Malpass
I've been following along since the beginning. I wonder if a future video might be on adding instructions to the MSBasic implementation you demonstrated. I'd like an instruction to link to an assembly routine to output a string to the 2x16 LCD. Or an instruction to call an assembly language routine to turn on and/or read PIA I/O (...other thank PEEK/POKE). I cut my teeth on an Apple II 40+ years ago. It has been a good renewal to follow along, buy the kit and design and fab a PCB based on your design. Much thanks Ben. I've enjoyed many hours of tinkering following your videos.
Kevin McQuown
One note, for me, when I clone the msbasic repo it does not contain the file longbranch.mac. I had to get it from the ca65 repo and copy it into all the files from the msbasic cloned directory to move forward as described in the video. Fabulous wok Ben.
Tony Weil
Very impressive as usual. Microchess next? I did it a few years ago. if a non programmer like me can get it working, it will be snap for you. This would make a great video. A few years ago, I built your 6502 kit and had a blast. Working with another person I built a 6502 on a PCB with a little more IO and wires that didn't come loose. We managed to get a version of microchess working on it. That was really exciting. The project is here: https://github.com/tonylweil/6502 The microchess code is here: https://github.com/tonylweil/6502/tree/master/Software/load/16_microchess
Richard
Excellent! On to windows 3.1?
Stefano Nicolini
I may have misremembered, but wouldn't calling MONRDKEY (aka CHRIN) from ISCNTC remove the character from the input? Wouldn't this then affect the INPUT and GET commands?
Phil Dennis
Maybe also consider adding some kind of explanation/acknowledgment that the supplied functions such as MONRDKEY need to meet the expectations of basic for register usage; how they behave; return data etc. I could imagine subtle issues if those expectations are not fully met.
Phil Dennis
This doesn’t happen for me - the audio starts at the very beginning with ‘I want to get basic running…’
Phil Dennis
Great video as usual. A couple of notes: -At 06:00 when discussing the zero page locations consider explaining that different basics use different locations to fit into areas that the OS leaves unused. This could be non-obvious for people whose only experience is with the eater machine. -At 20:35 couldn’t you add “MONCOUT = CHROUT” etc. to the config file instead of adding labels to the bios code? This might be a cleaner approach since it keeps the dependencies between basic and external code visible in the config file and avoids the need to change the bios code to include names defined by basic.
Michael Weitman
The fact that you squeezed that into a 30-something min video is a Christmas miracle. Be interested in knowing how much research, hacking, retries, etc. it took you to get it working (not including editing video and retakes); 40 hrs? Whatever it was = worth it. Thank you!
Joel
Why not change wozmon to use only LF and then enable the CONFIG_NO_CR option? Win-win?
George M1GEO
This is a great video. I've been waiting for these last two videos for a long time! Shows the interaction and the patching between hardware and software, and, how the beginnings of an OS happen.
Diego Corazón
And SCRTCH just clears the variable and string table, but it seems like it’s critical when you do this at least for the purpose of printing out the different welcome banners.
andrew cowie
There's an editing glitch at 15:50 where you repeat the line "and there's also a dummy segment down here".
Michael
Perhaps it’s intentional, but the ending of the voiceover seems a bit abrupt.
Jack Rubin
Nicely done - very pragmatic approach, well presented, with just enough debugging to prove that you're honest! I'd feel a lot more comfortable if you'd use a ZIF socket for your eprom.
TheWebMachine
9:00 - Based on the subroutine, CONFIG_SCRTCH_ORDER would appear to affect reboot/restart vectors. It's offsetting into GORESTART at different locations. 10:20 - Looks like it is reserving space for subroutine pointers, likely for executing the basic code you type into the console.
aliceitc
in the "is ctrl-c" function you could invert the last bne to a beq and avoid one jump I think. I don't think it really matters here because it's definitely not a hot loop, but I just thought it might be useful to point that out in general
Ingram Leedy
amazing... This is the video I have been waiting for.... Wow!
Don Prefontaine
Superb, as usual! Question: Have you considered a short segment on changing the RAM address limit to 0x7F00 instead of 0x3FFF by using a second breadboard with 4 or 5 ICs?
Patrick Kilian
There is duplicate audio at 15:50 when talking about the dummy segment.
Michael Herman
Right at the start, the voice over is cutoff and starts mid-sentence.