BASIC and the ROMs that changed the world (and then disappeared) (2022)(jcoterhals.medium.com)
jcoterhals.medium.com
BASIC and the ROMs that changed the world (and then disappeared) (2022)
https://jcoterhals.medium.com/basic-and-the-roms-that-changed-the-world-and-then-disappeared-38318db4611c
12 comments
I've asked this before, but I'll try again every time Basic ROMs come up :)
I've written a fully functional emulator for the Philips P2000T, my childhood love, and I wish to distribute it along with the Basic ROM, as nearly all software for it uses that ROM as a basis. (It's written in Kotlin and can run in both the JVM and in a browser in JavaScript).
That ROM is copyrighted by Philips and Microsoft. Unfortunately, I have no contact at Microsoft to help me with this. Anyone here who can perhaps point me in the right direction?
I've written a fully functional emulator for the Philips P2000T, my childhood love, and I wish to distribute it along with the Basic ROM, as nearly all software for it uses that ROM as a basis. (It's written in Kotlin and can run in both the JVM and in a browser in JavaScript).
That ROM is copyrighted by Philips and Microsoft. Unfortunately, I have no contact at Microsoft to help me with this. Anyone here who can perhaps point me in the right direction?
I don't have a contact at MS, but I am part of a retro computing community based around another system that has been distributing a Microsoft BASIC ROM along with various emulators for literally decades and nothing has ever happened. IANAL but it seems like this isn't a big deal?
Is that ROM available elsewhere online? If so, most emulators simply say, "You need this ROM, you should dump it yourself iff you have the legal right to; the md5 is blahblahblah, definitely don't type that into google" and let the internet do the rest.
Rewrite it. Ok, easier said than done, but how difficult can it really be, today with the tools, namely debuggers, emulators and macro-assemblers, available to us? It's just 8 or 16KiB machine code, right?
I'm way ahead of you :)
Unfortunately, rewriting it without reverse engineering makes it almost impossible to reach the same performance characteristics. These are essential to reproduce proper timing in several games.
Also, it may not be much code, but the floating point operations are quite a piece of art. See the GW-BASIC source code, which is somewhat similar [1].
I also rewrote most of the BASIC interpreter directly in Kotlin, omitting assembly, but obviously that runs into the same compatibility issues.
As far as I understand it, reverse engineering is not allowed without permission, although some people suggest that it is ok to get other software to run. Not sure whether that case would hold up for my entertainment value.
[1] https://github.com/microsoft/GW-BASIC/blob/master/MATH2.ASM
Unfortunately, rewriting it without reverse engineering makes it almost impossible to reach the same performance characteristics. These are essential to reproduce proper timing in several games.
Also, it may not be much code, but the floating point operations are quite a piece of art. See the GW-BASIC source code, which is somewhat similar [1].
I also rewrote most of the BASIC interpreter directly in Kotlin, omitting assembly, but obviously that runs into the same compatibility issues.
As far as I understand it, reverse engineering is not allowed without permission, although some people suggest that it is ok to get other software to run. Not sure whether that case would hold up for my entertainment value.
[1] https://github.com/microsoft/GW-BASIC/blob/master/MATH2.ASM
I see. I'm a bit surprised that the timing would be so critical. I recall BASIC only ever being too slow (time critical sections needed to be in machine code or required hardware support). Cycle counting was a thing then in machine code (and to some degree it still is, at least in embedded systems), but clearly not possible in BASIC.
Well, if you decide to go ahead, don't forget to include Gates' easter egg in the sin data table: https://www.pagetable.com/?p=43 ;-)
Well, if you decide to go ahead, don't forget to include Gates' easter egg in the sin data table: https://www.pagetable.com/?p=43 ;-)
Sorry to say this, but there's no hope of getting two of the world's largest companies to license you some ancient ROM code. The legal status and licensing of it is probably murky at best, and there's nothing in it for them to even look into it.
The good news is that they probably don't care about it anyway.
The good news is that they probably don't care about it anyway.
It’s abandonware.
If they think they might have a market for it in the future they will like Nintendo assert their copyright if not IANAL you can proceed. But yeah they can legally assert their copyright if they want to so probably best of doing it on the QT
If they think they might have a market for it in the future they will like Nintendo assert their copyright if not IANAL you can proceed. But yeah they can legally assert their copyright if they want to so probably best of doing it on the QT
For those feeling nostalgic (or curious), you can run my BASIC to JS compiler in your browser:
https://codepen.io/kgr/full/yLQyLjR
https://codepen.io/kgr/full/yLQyLjR
[deleted]
Woz. It was Woz. Pretty much any question of the form "whoever thought of" from this era points through Wozniak's lab.