Wow, awesome! For the Mac one with mouse support, you might want to add ".emscripten { cursor: none; }" to your stylesheet so the host cursor doesn't cover up the emulated one.
The Mac is great -- just as I remember it when I was a little kid. Actually, not exactly -- the emulator seems faster than the Mac we had. Also, I tried to get it to crash but wasn't able to.
> The Mac is great -- just as I remember it when I was a little kid. Actually, not exactly -- the emulator seems faster than the Mac we had. Also, I tried to get it to crash but wasn't able to.
You really shouldn't see a crash on a fresh install of the operating system. A lot of crashes on Mac OS Classic were caused by software that hooked itself deeply into the system and corrupted state. Not so different from Windows, actually ...
As software became ever more complex in the 9.x era, Option-OpenApple-Reset became as familiar as Ctrl-Alt-Delete.
Yeah, I'll put it up on GitHub once I've had time to clean up the build process to separate the new code from the dependencies (which I've had to hack extensively). In the meantime here's a dump of the source: http://jamesfriend.com.au/pce-js/pcejs20131028.zip
I am really enjoying a lot of the retro things being posted recently. Sadly, they miss out some of the details. Like Elite being playable at 4 MHz, but really hard at 25 MHz, because that's how clocks worked then, and that's what the turbo button did. (It was a de-turbo button, turning your machine into a slow machine for compatibility. If it was connected, that is.)
And this makes me wonder about the Wayback machine. I can retrieve an old web page, but can I recreate the experience of posting to that site? Is anyone archiving the various social network sites code, so that the Future People can recreate the experience of Friendster or Facebook or Myspace? Or are the Future People going to have to guess by looking at screenshots and videos?
One of the first (perhaps the first?) commercial games for Windows was "Balance of Power". I think it either came with a weird runtime version of Win 1.0, or a voucher to get it, for people running dos.
> it came with an embedded windows runtime - I think it was Microsoft not sure quite yet how they'd license it.
The Windows port of Microsoft Excel also initially came bundled with a Windows runtime. It wasn't really until Windows 3.0 that you could start take Windows as a prereq. Before then, very few systems had Windows installed.
Wait a minute. "Windows Runtime" has a different meaning nowadays. Microsoft is really reusing a lot of its existing trademarks for Windows 8, isn't it? "Surface" was also a trademark that they already owned, for a giant touchscreen table.
Seems like they're usually based on hardware emulators like qemu, bochs or similar which are compiled to javascript using tools like emscripten. IO hardware needs to be emulated in JS, a framebuffer is drawn to a canvas, mouse input events are translated to the native hardware events, I'm sure there's a million details.
First you need to port x86(or any other) instruction set. This can also be done by compiling (part of)Bochs/PCE using emscripten. Then you need to port IO (floppy,HD etc.). Then monitor and graphics card. And if you really want to be cool there are hosts of other things to port like touchscreen, networking, USB etc.
The same way as any other emulator. Programs for any computer are just a sequence of bytes - i.e. just another file format. So you write something that interpret that file format. It's not fundamentally any different from writing, say, a PDF viewer.
Do you really need to put the guy down for honestly admitting ignorance and trying to learn?
Anyway, "hacking" and computer science in general is diverse enough now that I wouldn't expect even an expert in any particular subfield to necessarily know anything about another. It's quite possible to be, say, an experienced database guru with a solid working knowledge of raytracing, network administration, and Unicode, without ever having touched anything related to emulators.
I wasn't putting him down. Just noting that his use of the word 'hacker' is not correct. There's a minimum bar to clear to call one's self a hacker and understanding how to substitute part of a software stack with another one is above that bar (in my opinion).
What I'm about to say probably sounds a lot like something that somebody who lacks impressive technical prowess (like myself, self-admittedly) would say, but I think that being a "hacker" is almost more of a mindset. Or, alternatively, there is a hacker mindset, and a lot of the folks here can identify with, and exhibit, that mindset. Specifically, the hacker mindset means that you're always curious, always learning, always improving, just like the poster who asked the question above.
I was referring to the term hacker in the 'good programmer' sense (as mentioned in the PG essay I linked to). Being a good programmer pre-supposes being a programmer (and good programmers should definitely have an idea how emulators are written, IMO).
I was referring to the term 'hacker' in the 'good programmer' sense as mentioned by Paul Graham in the link I posted. Obviously, to be a good programmer one must first be a programmer.
The key to Reversi is to win the corners (EDIT: you can lose while still winning 2-3 corners, but losing the corners gives the opponent a much greater chance to take large chunks of the edges and then purse to turn whole rows). To win the corners, you must avoid the spots 1 out from the corners. To avoid being forced to take the spots 1 out from the corners, one strategy is to avoid the edges as long as possible, and then try to only take edge pieces with at least one gap to the corners, and one gap to the opponent.
You also want to keep your options open, to prevent being forced into taking the wrong piece near the edge or corners.
A simple strategy that works against this version relatively often is to at the start look for positions that will take some of the opponents pieces while ideally increasing your possible moves, while being as far from the edges as possible. Then when you are forced to put a piece near the edges, put it near the centre of an edge (as far from corners as possible).
By then the options will be so constrained you can start looking a at consequences of each option, with the goal being to avoid putting pieces near the corners.
I'm not a particularly good player, and I got 3 out of 4 corners on my first attempt by just relatively haphazardly following the above, which means the default settings and/or overall strength of this version is pretty weak.
> I'm not a particularly good player, and I got 3 out of 4 corners on my first attempt by just relatively haphazardly following the above, which means the default settings and/or overall strength of this version is pretty weak.
It defaults to Beginner. Use the "Skill" menu to change it to Master. It'll be much more challenging, and the AI will take a lot longer to calculate its move.
(Remember: This is Windows 1.01, so you have to hold down the mouse button to use pull-down menus.)
The first time I ran this something went wrong I somehow didn't manage to even boot in to windows but found myself at the command line, with only the DOS floppy disks available.
From what I've heard, the overlapping technology was there as proven by its use in drop-down menus; the designers of the first version of Windows just thought tiling was a better way to go.
Great. I like those interactive fiction and will play Lost pig :)
What is missing is some sort of save game option via web storage. And maybe you should give some example links on the first page.
bookmarked
As a hack, all of these JavaScript emulators are awesome to play with. But in reality if you need performance for something in the past decade, like a N64 or newer arcade emulators, JS is still orders of magnitude slower than dynarec emulators written in C. I hope something like PNaCl will come along to bridge the performance gap.
N64 might work. With WebGL support of course.
And I hope too for a really new standard for web programming. Java was the answer for some time, then Flash, now Javascript. The big companies should sit together and agree on one standard with typed variables. The JIT compilers of Javascript will reach there limits sooner or later.
So I worked on a defuct N64 emulator, TRwin, back around 2000. Thirteen years later and thanks to the power of the modern web, my PC that's literally orders of magnitude faster runs the best JS emulator like a slide show. Using native code, my celeron400 with a Voodo card could run it full speed.
JavaScript is a toy language. But I do agree that strong typing and restrictions on GC like asm.js would help the situation. Unfortunately we can't rely on the standards bodies to make good decisions. Static typing was supposed to be in ECMAScript 4 back in 2008, but they abandoned it back in 2007.
It's still painfully clear to me the we are going backwards with all of these bloated poorly designed layers in HTML5 and I have little faith in the standards bodies.
Yeah I had the same, I figured out it was more the acceleration that was the problem rather than the cursor movement itself...moving slower than usual meant I could use it without problems.
As someone who really enjoys the history of computing, this is awesome! I don't think I've ever had a chance to play with Win 1 and probably wouldn't have gone through the trouble of getting it running myself. This and others like it would be neat for the Computer History Museum to have on its site.
Windows 1.01 feels much closer to Mac Classic than Windows 3.1 does. (Button appearance, close button on left, menus must be held down to stay open, "Get Info" instead of "Properties".)
It's actually MS Sans Serif not even trying to hide the fact it's a ripoff. It's still in Windows 7 (don't know about 8), along with a TrueType version. Major differences between MS Sans Serif and Helvetica are the uppercase R and G. The overall typeface has a little more vertical stress. It's a way better ripoff than Arial; it's a shame Arial became so ubiquitous in that capacity.
There is some issue with the mouse. When I click on terminal.exe and try to click on "File", the mouse is coming out of the emulator. You would probably want to create an interface like a VM, where the mouse comes out of the emulator only when you press some combination of keys.
> QBasic didn't come until MS-DOS 5, the demo uses MS-DOS 2.
Actually, the demo is PC-DOS 2.0, not MS-DOS 2.0. Notice the disk that's in the emulator's drive. Also, IBM replaced all of Microsoft's copyright notices:
The IBM Personal Computer DOS
Version 2.00 (C)Copyright IBM Corp 1981, 1982 1983
If they're using real disk images, then they must have an actual IBM ROM BASIC in the emulator. PC-DOS BASIC(A) would only run on a true-blue IBM machine, because it called into the ROM BASIC. In contrast, MS-DOS BASIC(A) was implemented entirely in software and would run on any clone.
Check out the windows 3.0 demo in the first comment. Qbasic is the first thing I found there. Had so much fun w/ qbasic, writing polysonic songs for the little pc speaker, hacking up GORILLAS.BAS, which WORKS!!!!
Mac System 7 Demo: http://jamesfriend.com.au/pce-js/
Windows 3.0 Demo: http://jamesfriend.com.au/pce-js/ibmpc-win/
IBM PC doesn't have mouse support... Yet. For Mac OS it's writing the mouse position directly into memory, but I've yet to add that hack for Windows.