Back from the Dead
It’s been a month since my last update, but BMOW and I are back from the dead, and better than ever. I even have some progress to report with MSBASIC! That’s pretty crazy when you consider that BMOW and I both underwent surgery in the past month. No photos of mine, but here’s BMOW on the operating table:
My month started with a health scare: out of nowhere one morning, I was hit with extremely intense abdominal pain, and was totally incapacitated. Called 911, took an ambulance to the hospital, and had surgery to remove a 6mm kidney stone. Afterwords I had a stent put in for a week, which was nearly as miserable as the stone. I’m happy to say I’m back to normal now. Overall I rate the whole experience zero stars, would not recommend.
Right on the heels of that, I had a big project milestone at work, which I won’t bore you with. Suffice it to say it occupied a lot of time. And right in the midst of that, I somehow decided it would be a good idea to replace my PC. Being the hacker sort, I of course built a custom PC from assorted new and used parts, which created all kinds of interesting problems. I had the guts of three different PCs scattered across the floor for a week. In the end I got the new PC up and running, with all the important BMOW data moved over (I hope).
Fast forward to today, when I finally decided to put BMOW back together, and take another look at this mysterious bug with MSBASIC. I described the issue in my previous entry– BASIC seemed to work fine with control flow and numeric computation, but it would lock up any time a string literal or variable was used. I couldn’t even print “HELLO WORLD”. I traced the problem to a mystery overwrite (or failed read) of a specific address in the MSBASIC code dealing with strings, which I was 99% certain was due to a hardware problem of some kind.
There were several issues getting the new PC talking to BMOW again today. I had hastily copied over all the MSBASIC source files from the old PC, which included some experimental modifications I had made to try to track the string bug. It took some digging around to determine how it had all been originally, and restore the code to its earlier state. Then some compiler settings appeared to have gotten lost in the translation, and it took more fiddling just to rebuild a new MSBASIC program image successfully. Then there was more COM port weirdness with the FTDI USB serial driver I’m using to connect to BMOW. Fun.
Finally I got it all going again, launched MSBASIC, and did some string-related operations to begin narrowing down the problem further. But I’ll be damned if it didn’t just work! I was really skeptical at first, so I exercised it for quite a while, rebooted, and cold started, but nothing I could do would shake it. I don’t know why, but maybe some of the steps I went through to get the software working on my new PC affected things somehow. That’s a pretty flimsy theory, but I can’t chase a bug that’s not there anymore.
So there you have it: a working MSBASIC running on BMOW. Is the bug going to come back again as soon as I breathe on it wrong? Quite possibly, but like I said, there’s nothing more I can do about it if I can’t even see the bug.
Onward to better things, then. There are still a couple of minor issues with my port of MSBASIC that I’d like to resolve. The biggest is that my keyboard driver doesn’t support the caps lock key, so I have to hold down the shift key while typing all keywords. FOR is not the same as for, according to MSBASIC. There are also some display formatting issues. You can see in the photo above that the visitor number has two spaces before and after it, for reasons unknown.
Beyond that, I think it’s time to start wrapping up BMOW. It’s come a long way in a year plus, and it’s been pretty amazing, but I’m feeling the pull of other projects and passtimes that I’d like to work on too. Before I send BMOW off for a well-deserved retirement, though, I want to build a decent case to hold everything, and protect it from accidental smashing. It’s been sitting bare on my desk for a year, and it’s a miracle that some kid, cat, or flying object hasn’t demolished it already. Just look at this thing:
I’ve got a case, I’ve got the tools, all I need is a little time and motivation to put it all together.
For bonus points, I’d still like to add some simple audio output, and maybe persistent storage using battery backed RAM, but I won’t cry if those never come to pass. As I tell my kids, we’ll see. I can’t say exactly how the next few months will turn out for BMOW, but I’m sure they’ll be interesting ones.
Read 10 comments and join the conversation10 Comments so far
Leave a reply. For customer support issues, please use the Customer Support link instead of writing comments.
Sorry to hear about the kidney stone. *Shudders* I don’t really want to think about the pain of those, and the passing of them… Anyyyyyyyyways, it’ll be nice to see some BMOW updates!
Sorry to hear about your illness — hope you’re feeling better now! And congratulations on getting BMOW running again, too.
As for those spaces around the numbers, that’s probably normal. You have one space each side in your string literals, and MS BASIC adds one before and one after the number. If the number is negative, I think the one before becomes a minus sign. I certainly remember having to do tricks with STR$, LEFT$, RIGHT$ and MID$ just to get the digits alone, with no spaces.
Welcome back – and continued congratulations on your progress. As you start thinking about wrapping up, consider a public showing – I’d sure like to see BMOW in person. A couple of years ago I took Magic-1 to the Maker Faire in San Mateo – lots of fun. It’s going to be May 30/31 this year, and I’m thinking about one last public showing for Magic-1 (there really isn’t much left for me to do on my project – and I’m ready to move on to a model ship or something). Perhaps we could have a homebuilt-cpu corner at Maker Faire?
Looks like I haven’t seen the last of the string bug in MSBASIC. I made a few minor modifications to remove the memory size and terminal width boot-up prompts, and suddenly it was once again freezing up whenever I used a string. Restoring the code to its earlier state got everything working again. It’s possible there’s still a memory bug with that setup, but it’s affecting a location unrelated to strings. In that case, there’s still a hidden time bomb that I just haven’t hit yet. At least I have a little more data to work with now.
I went to the Maker Faire last year and wondered if BMOW might be interesting enough to show, but decided it wasn’t. Maybe if it were part of some larger demonstration of homebrew computers, like you suggested, it might fly.
I found a fantastic source for old-school electronics parts yesterday: http://www.arcadecomponents.com I’d been looking for a 68008 (a 68000 variant with an 8-bit bus) for ages, and this site had them in stock for only $5. I also picked up a couple of 1980s-era sound generator chips for BMOW. Good stuff.
I think the BMOW would be interesting enough for a Maker Faire exhibit! But I don’t suppose I could persuade you to bring it to the Newcastle (UK) Maker Faire in March…
I second the idea of perusading you to bring it to the Newcastle Maker Faire. With regards to the bug does it happen on all clock speeds or have you only tested it with the one?
Given that Maker Faires seem to be ignoring the NY area, perhaps we can persuade them to try this area, and yes to host a HomeBuilt CPU area.
And yes I am glad to see you are alright.
Incidentally on the original Apple IIe, he understood commands typed in L/C, typically he’d translate them back to U/C, and thence when the list command is given they’d be shown in U/C.
But then again it has been a while, I was describing that from memory.
Thanks for the kind words… maybe I will look into exhibiting at the Maker Faire. If anyone’s crazy enough to find this kind of thing interesting, they’re probably attending.
I tried Applesoft BASIC on an Apple IIe emulator, and it does accept commands typed in lower-case. That’s probably a better solution than expecting the user to use the caps lock key, so I’ll see if I can make BMOW behave the same way.
Applesoft BASIC does *not* appear to add extra spaces around numbers the way my port of BASIC for BMOW does, so I’m not sure why that’s happening. They’re both based on the same MSBASIC source code.
The statement ?”A”;:?2;:?”B”
in Applesoft BASIC it prints A2B
in BMOW BASIC it prints A 2 B
Hi!
It’s always great to hear and see where the parts I sell through my web site end up. 😀
Raymond
Cool looking project! I found your site when doing a periodic Google search for my company name. I like to see where parts I sell get used. 😀
I’m also happy to see a 68008 get a good home as I’m always nervous when those chips sell as they are an odd duck and I don’t want someone mistakenly ordering them instead of a 68000-8!
Raymond