Retro Roundup: Old Computers Emulated Right In Your Browser
An anonymous reader writes: If you ever wanted to program an Altair, an Apple I, or a COSMAC ELF you may think you either have to buy one (expensive now) or load and configure simulation software. However, there's a slew of browser-based emulators for everything from a PDP-11 to Windows 1.0 out there. Some use Java, but many use Javascript and many perform better on a modern PC then they did in their original. If you want to learn some history or just want to finally play with the computers you saw in the magazines 35 years ago, these are great fun and slightly addictive.
than the original hardware. It's terrible writing but I can tell what is meant somehow.
Oh, come on ... I expected to see an "emulators are for cows" post by now. Someone is slacking off.
Moo.
Lost at C:>. Found at C.
Also, people who apparently either don't have any sense of fun, or perhaps they're all millennials and poo-poo anything older than they are, or maybe both. For cryin' out loud, people, these emulators for (in some cases literally) antique hardware aren't intended for 'serious' use, or development, or anything like that: They're intended to be fun to play with, or maybe educational since most of them are emulating systems that either don't exist anymore or are so rare that you'll likely never even see one in the flesh. Yes, some of us are old enough that we actually owned (or built, as the case may be) some of these systems, but again: If you're complaining about them then I question whether you have any sense of what's fun or not. When some of these computers were available, screwing around with computers was still fun; they're not as much fun in many ways now, because it's all too much serious business, and too much of it is closed-source, proprietary, locks the user out, physically inaccessible, or in some extreme cases you get prosecuted or sued in civil court for getting caught messing with it. In many cases some of the hardware may as well be potted in a solid brick of opaque epoxy, for all the good it'll do you to try to get at the actual hardware. Building a complete computer system from component parts (i.e. requiring soldering)? So impractical now as to be nigh-unto impossible (I could do it, but there's no point anymore). The closest thing we have anymore is you younger guys screwing around with microcontrollers (many of which are more powerful than many of the computers being emulated here, ironically enough), but even then you have to have an entire modern computer just to write the simplest code for them, there's no 'front panel' where you can enter machine code directly, one byte at a time. Don't knock it 'till you try it, guys (and ladies).
Are YOU using the TOOL, or is the TOOL using YOU? Think about it!
If not, I'm shipping the whole thing out to Sun, postage COD.
"Win treats sysadmins better than users. Mac treats users better than sysadmins. Linux treats everyone like sysadmins."
Well, 90% of them are off-topic, complaining about the wording, or just trolls about Java. I'm not entirely sure what nuanced discussion in the -1 realm you're referring to. I think the nearest I saw to a remotely reasonable modded down comment was a whine about how the poster felt the browser was not the right place for a computer emulator, which... didn't address even the reasons implied in TFS.
Me, I'm very glad people are building these things. Keeping older platforms alive isn't just nice for nostalgia reasons, it reminds us of the good things we're missing today and stops them from being forgotten.
You are not alone. This is not normal. None of this is normal.
My native FLEX / 6809 machine emulator (for Windows XP and at least several Windows versions on up... don't use Windows any more, so I dunno. :)
Late-70s / early-80's machine era.
Front panel, graphics card, single stepping, lots of software including assemblers and compilers. Stable.
If you ever used 6809 Flex, you'll be right at home. Otherwise, probably don't bother.
I've fallen off your lawn, and I can't get up.
Wow, blast from the past. My first ever computer was an Ohio Scientific "Superboard"; single board computer with a keyboard on the motherboard, no case, power supply, or monitor. Came with 8KB of RAM, only ran Basic (Copyright Microsoft, 1978) and 6502 assembler (entered in hex). You could load and store your programs to cassette tapes at 300 baud. At the time I was programming IBM/370 mainframes at work in FORTRAN IV. Now get off my lawn.
The problem, as I see it, is that by doing it in Javascript, we're introducing a new dependency: the code will only work on a browser produced in 2015.
That's because Javascript, as implemented in a browser, is itself is a moving target. Go on, just try to browse the modern web in Mozilla 1.0. Or Firefox 3.6. You'll find half the Javascript-dependent sites of 2015 simply doesn't work on older browsers. Sometimes it's performance-related (Slashdot's JS is a prime example of a site that took several seconds to render in older Firefoxes, but worked fine on IE), and some of it fails to render anything at all.
Compiling C/C++ to native gives you a binary that, once compailed, will continue to work as long as the hardware does. Win10 runs 32-bit binaries that are 15-20 years old without compilation. Linux rebuilds from source are typically a "make" command away. (If such support is ever dropped, run a Linux or Windows gues in the VM hosting solution of 2030.)
From the point of view of a software preservationist, I fail to see the point in adding a dependency on "Your 30-year-old ROMs now require whatever Javascript interpreter shipped with the binaries for Chrome 44-through-57, IE11 from mid-2014 to late-2016, and Firefox 41-through-56."
Damn this article, ended up playing Rogue for almost two hours.
The problem, as I see it, is that by doing it in Javascript, we're introducing a new dependency: the code will only work on a browser produced in 2015. That's because Javascript, as implemented in a browser, is itself is a moving target. Go on, just try to browse the modern web in Mozilla 1.0. Or Firefox 3.6. You'll find half the Javascript-dependent sites of 2015 simply doesn't work on older browsers.
Is that strictly relevant? I think the dependency we're really introducing is: the code will only work on a browser produced in 2015 or later. If an emulator was originally built for Firefox 41, five years from now I won't care whether or not it runs in Firefox 1.0 as long as it still runs in Firefox 2020.
It keeps printing SYSTEMCTL: NOT FOUND. What's up with that?
I am positive that every system emulated in Javascript already has native-code emulators available on those 3 OSes and more. Plus, they'll be available offline and use a fraction of the processing time to run full speed. This is a plus if I want to run some of them on my older laptop with a 4:3 screen, or if I want to use my kinda crappy tablet with its attached keyboard; neither of those systems is necessarily fast enough to run the emulators with the extra Javascript overhead (at least, it would limit me to the older systems, probably pre-90s).
If I want to try something out as a one-time thing, want to access it from multiple computers, or can't install software locally, then sure, I might choose to run the Javascript version of the software. Both ways have their benefits, and that's pretty obvious.
It is pitch black. You are likely to be eaten by a grue.
Correct. That's the point I was trying to make. I do not believe the JS of today will run in Firefox 2020. The language is still evolving. (Not as bad as Perl4/5/6 or Python2/3, but it's still fragmenting.) The assumption - possibly fallacious - is that because the JS of 2015 doesn't run in the browsers of 2010, the JS of 2010 probably doesn't run in the browsers of today, because things can be deprecated and removed from the standard as well as added to it. Does the BLINK tag work today? I'm glad it doesn't, but you get the point...
Code compiled for x86 has a better track record of backwards compatibility; the odds are much greater that a Win10 x64 binary will run on Windows 2020, and an ELF compiled today will be compatible with the ABI of Linux Anydistro 2020, than it is that anything written in the JS of today will run on Anybrowser 2020.
We're now dependent on two sets of developers: one set of crusty greybeards to can translate 8-bit schematics into code, and a second set of bushy blackbeards who can translate anything into Javascript. Advantage to the blackbeards for cross-platform compatibility, but I hope they're still around 20 years from now.
Built-in BASIC = cool, you say? Damn you!
I've wasted countless hours in my life typing BASIC, only to achieve modest results. If only a more powerful language had been included in those machines... Say Forth, or C, or Lisp, or <insert structured-language-of-choice here>. Had any such language been built into popular machines of the day, science and technology would have advanced so much faster that every citizen on this planet would have had his/her own flying car and faster-than-light spaceship by now. But no... BASIC.
I've made many attempts to bring a logical structure into my BASIC programs. To number lines in steps of 10, in order to insert lines as needed. To reserve a range of line numbers for sub-routines. Only to find out that for programming, line numbers AREN'T NEEDED IN THE FIRST PLACE. Or editing - using a "LIST" command to show a few lines, move cursor to one, edit a copy of it elsewhere on screen, and have it inserted back in. Only to find out later that editing text is easily done full-screen. Yes... BASIC.
Then I found out about machine code. It was like being in coder's heaven, being God of the machine, but very difficult because it was like inching forward with tiny, dangerous steps on a minefield all the f**king time. Knowing that you'd still need that BASIC interpreter to get running, and that the same BASIC interpreter would often get in the way, and eat globs of precious RAM even though you weren't using it anymore. And that no assembler was built in, because there wasn't any room left in the ROM after putting BASIC in there. Grrr.... BASIC.
And let's not get started about the days of Disk Operating Systems. Cryptic commands to do even the simplest of tasks, that low-and-behold actually made a machine somewhat useful.
And to add insult to injury, it turned out that even for low-spec-machine-I-was-stuck-with-because-dad-couldn't-afford-anything-better, many of those more powerful languages were actually available! Some even for free! So manufacturers could have built them into their machines! But no.... BASIC.
The problem, as I see it, is that by doing it in Javascript, we're introducing a new dependency: the code will only work on a browser produced in 2015.
Well you can rest easy then, because no one is writing this stuff in JavaScript.
What triggered this change is Emscripten, which is a back end for LLVM that targets ... JavaScript. Actually it targets asm.js, which runs at about 1/2 native speed in Firefox (not so fast in Chrome, because Google thinks the solution to the same problem is NaCl).
What that means is any compiler that uses LLVM can now compile to asm.js. Which means any program written in Python, Rust, Go (there are a whole pile of languages) can now be compiled to run in the browser. In particular Clang is a C compiler for LLVM. Dosbox is a x86 + MSDOS emulator, written in C. Ergo Dosbox can now be compiled to JavaScript and this run in the browser. Js-dos is a site apparently dedicated hosting games that does just that. The game console emulators are also written in C. So they to can and now have been compiled to asm.js. Because modern web browsers support WebGL, OpenGL games that have been open sourced (like Quake3) have also been compiled to JavaScript, and run spookelly well. Which is how we get to the plethora of games mentioned in the article. Pity it didn't mention the technology behind it.
But why stop a games? Sqlite3 has been recompiled for Javascript. It can do in browser SQL queries in about 2ms, and is a damned site nicer to use than wandering through a spiderweb of Javascript objects. But why stick to something sane? You can now do ffmpeg encoding in your browser.
That's actually how I learnt to code as a child, using MSX-BASIC. I'm now 40 and still using MSX computers (real hardware, though the emulators are useful for development).
If you're interesting in learning to code for these things (they're Z80-based, like the TRS-80), I'm writing a course about coding with the MSX-C compiler. 26 chapters released so far:
http://www.lavandeira.net/rele...
My site