Finished porting the blog posts

This commit is contained in:
Jeff Parsons 2015-12-10 23:41:59 -08:00
commit 78ba582d4e
56 changed files with 383 additions and 131 deletions

View file

@ -15,7 +15,7 @@
{% else %}
{% assign machine_state = machine.state %}
{% endunless %}
{% if site.pcjs_compiled %}
{% if site.pcjs_compiled == true and machine.uncompiled != true %}
{% capture machine_script %}<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/{{ machine.type }}.js"></script>{% endcapture %}
{% unless machine_scripts contains machine_script %}
{{ machine_script }}

View file

@ -1,5 +1,5 @@
{% for machine in page.machines %}
{% unless site.pcjs_compiled %}
{% unless site.pcjs_compiled == true and machine.uncompiled != true %}
{% capture machine_style %}{{ site.baseurl }}/modules/{{ machine.type | remove:'-dbg' }}js/templates/components.css{% endcapture %}
{% else %}
{% capture machine_style %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.css{% endcapture %}

View file

@ -1,5 +1,11 @@
A Blog That's Not A Blog
---
layout: post
title: "A Blog That's Not A Blog"
date: 2013-11-20 11:00:00
category: News
permalink: /blog/2013/11/20/
---
As you may have noticed (or not), the [JSMachines](http://jsmachines.net/) website had a very modest makeover
recently.

View file

@ -1,6 +1,12 @@
New Year, New Directions
---
Initial goals for 2014 include:
layout: post
title: New Year, New Directions
date: 2014-01-01 11:00:00
category: Goals
permalink: /blog/2014/01/01/
---
Initial goals for 2014 include
- Setting up a new web server running node.js, using either AWS, Google Compute Engine or Windows Azure;
- Porting this project to work with node.js, which includes rewriting all the PHP code as server-side JavaScript;

View file

@ -1,5 +1,11 @@
Running on Azure
---
layout: post
title: Running on Azure
date: 2014-03-30 11:00:00
category: Web Servers
permalink: /blog/2014/03/30/
---
Publishing a Node-based site to [Azure](http://azure.com) was painless, thanks to their friendly web portal and
GitHub integration. Getting a fully operational site, however, took a bit more time.
@ -42,7 +48,7 @@ would happily report:
but it would NEVER display anything but deployment information. Instead, I had to browse the log files using Azure's
"FTP DIAGNOSTIC LOGS" link on the web portal -- which presents the logs as one big, ugly, fragmented mess:
![Azure Logs](iisnode_logs.png)
![Azure Logs](/blog/images/iisnode_logs.png)
Sigh. But at least the site is up and fully operational now.

View file

@ -1,5 +1,11 @@
Browser Compatibility Woes
---
layout: post
title: Browser Compatibility Woes
date: 2014-03-31 11:00:00
category: JavaScript
permalink: /blog/2014/03/31/
---
While JavaScript has been doing a good job of delivering on the old "write once, run everywhere" promise that its
[unrelated namesake](http://www.java.com) coined, the "hook once, deliver everywhere" promise seems less fulfilled.
@ -18,7 +24,7 @@ I've done what testing I can with the Android SDK and the "Android Virtual Devic
looks fine -- you click/tap on the PC's screen, the soft keyboard pops up, and typing works. So I guess Silk is just
an outlier. I'm not sure what I'll do about it yet (or even what I can do).
![PCjs in AVD](avd_tablet.png)
![PCjs in AVD](/blog/images/avd_tablet.png)
---

View file

@ -1,5 +1,11 @@
The Latest in Emulator Technology
---
layout: post
title: The Latest in Emulator Technology
date: 2014-04-01 11:00:00
category: JavaScript
permalink: /blog/2014/04/01/
---
Announcing **InternetJS: The Internet Emulator**, the world's smallest JavaScript application capable of emulating the entire Internet.
And like all PCjs applications, there's nothing to install. It runs safely and securely from any web browser.

View file

@ -1,5 +1,11 @@
What's New in 1.13.0
---
layout: post
title: "What's New in 1.13.0"
date: 2014-04-12 11:00:00
category: Releases
permalink: /blog/2014/04/12/
---
The latest version adds support for "software manifests", which you can read more about [here](/apps/). Basically, manifests
are simple XML files that describe a piece of software (an application, an operating system, whatever). They can also
link to a PCjs machine configuration capable of running the software, along with a "ready-to-run" machine state file.

View file

@ -1,14 +1,20 @@
Node + Express != Safari
---
layout: post
title: "Node + Express != Safari"
date: 2014-04-14 11:00:00
category: Browsers
permalink: /blog/2014/04/14/
---
There's something very odd going on with between Node+Express and Safari, resulting in blank web pages.
Don't believe me? Just ask [Google](https://www.google.com/#q=node+express+safari+blank+page).
[pcjs.org](http://www.pcjs.org/) contains a lot of XML files that are rendered as web pages using XML
[{{ site.pcjs_domain }}]({{ site.url }}/) contains a lot of XML files that are rendered as web pages using XML
stylesheets. And occasionally Safari -- and ONLY Safari -- will render those XML files as blank pages.
For example, here's the
[machine.xml](/devices/pc/machine/5150/mda/64kb/machine.xml) file that's also embedded on the
[pcjs.org](http://www.pcjs.org/) home page.
[{{ site.pcjs_domain }}]({{ site.url }}/) home page.
When Safari fetched that XML file from an Apache web server (what I used before switching to Node),
the request would look like:

View file

@ -1,5 +1,11 @@
Heading to New York
---
layout: post
title: Heading to New York
date: 2014-04-30 11:00:00
category: JavaScript
permalink: /blog/2014/04/30/
---
Lots of tinkering has been going on here at pcjs.org the past couple of weeks, but with nothing substantial to show for it.
Fixing lots of little problems requires only small bits of time, whereas buckling down and tackling "the next BIG thing" for
PCjs requires a much more serious time commitment, with limited interruptions.

View file

@ -1,5 +1,11 @@
Chrome Kicks Butt
---
layout: post
title: Chrome Kicks Butt
date: 2014-05-12 11:00:00
category: JavaScript
permalink: /blog/2014/05/12/
---
I haven't been closely monitoring the performance of PCjs across various browsers. Most of my browser testing has
been limited to "Does the latest version still work in all current web browsers?"

View file

@ -1,5 +1,11 @@
Halt and Catch Liar
---
layout: post
title: Halt and Catch Liar
date: 2014-06-14 11:00:00
category: TV Shows
permalink: /blog/2014/06/14/
---
I had high hopes for the new AMC series "[Halt and Catch Fire](http://www.amctv.com/shows/halt-and-catch-fire),"
but it has proven to be an utter disappointment. I think I can suspend my disbelief as well as anyone, but this
show requires you to completely turn your brain off in order to be believed. I'm also baffled by the show's
@ -21,7 +27,7 @@ And centerpiece of this whole conceit -- the cloning of the IBM PC ROM BIOS. Wh
scene from Episode 2, where Brilliant Engineer looks at Hot Programmer's whiteboard in awe. Apparently, he
is easily awed, because he did the same thing when Sales Guy wrote "2x fast, 1/2 price" on an earlier whiteboard.
!["Halt and Catch Fire" Scene from Episode 2](Halt_and_Catch_Liar-thumbnail.jpg "link:Halt_and_Catch_Liar.jpg")
[<img src="/blog/images/halt-and-catch-liar-thumbnail.jpg" alt='"Halt and Catch Fire" Scene from Episode 2'/>](/blog/images/halt-and-catch-liar.jpg)
So if you deconstruct the code on this whiteboard, you quickly notice that while it IS assembly language, it is
NOT the sort of assembly language you would find in a ROM BIOS, let alone ANYTHING that would leave you in awe.
@ -66,7 +72,7 @@ This turns out to be code largely copied from a file I found online: [PCTRACE.AS
Another curiosity is that searching for this resulted in a "[Googlewhack](http://en.wikipedia.org/wiki/Googlewhack)"
of sorts:
![Googlewhack](googlewhack.jpg)
![Googlewhack](/blog/images/googlewhack.jpg)
Technically, a Googlewhack (a two-word search that yields exactly one result) must use two words found in an actual
dictionary. But dictionaries are so passé.

View file

@ -1,5 +1,11 @@
More Under-The-Hood Changes
---
layout: post
title: More Under-The-Hood Changes
date: 2014-06-26 11:00:00
category: Releases
permalink: /blog/2014/06/26/
---
v1.13.7 of PCjs contains a few minor improvements, mostly in terms of rendering video modes a little more
efficiently. The rest of the changes to the website involved beefing up support for both "software manifests"
and "document manifests."

View file

@ -1,10 +1,16 @@
EGA Support
---
layout: post
title: EGA Support
date: 2014-07-30 11:00:00
category: Video
permalink: /blog/2014/07/30/
---
PCjs v1.14.0 now includes basic EGA support. It emulates the EGA hardware well enough to pass the IBM EGA BIOS
diagnostics and run [Windows 1.01](/devices/pc/machine/5160/ega/640kb/win101/) in color. Check out our
[Windows 1.01 "Server Array"](/devices/pc/machine/5160/ega/640kb/array/) demo.
![Windows 1.01 "Server Array" Demo](/blog/2014/07/30/win101-array-demo-small.jpg "link:/blog/2014/07/30/win101-array-demo.jpg")
[<img src="/blog/images/win101-array-demo-small.jpg" alt='Windows 1.01 "Server Array" Demo'/>](/blog/images/win101-array-demo.jpg)
EGA support is added to a **machine.xml** file using two XML elements; eg:

View file

@ -1,5 +1,11 @@
PC Tech Journal, 1987
---
layout: post
title: PC Tech Journal, 1987
date: 2014-08-01 11:00:00
category: PC Tech Journal
permalink: /blog/2014/08/01/
---
As part of an ongoing effort to make classic PC technical literature more accessible, I just finished
scanning and posting the 12 issues of [PC Tech Journal](/pubs/pc/magazines/pctj/) from 1987.

View file

@ -1,5 +1,11 @@
Supporting the 80286
---
layout: post
title: Supporting the 80286
date: 2014-08-28 11:00:00
category: 80286
permalink: /blog/2014/08/28/
---
The next milestone for PCjs is complete 80286 emulation. My hope is to have it working by the end of the year.
PCjs version 1.15.0 is the first step on the path to full 80286 support. It includes changes to the physical

View file

@ -1,4 +1,9 @@
Minor Fixes and Additions
---
layout: post
title: Minor Fixes and Additions
date: 2014-09-02 11:00:00
category: Releases
permalink: /blog/2014/09/02/
---
The following fixes were made in PCjs v1.15.1:

View file

@ -1,4 +1,9 @@
The IBM PC AT: Alive and Booting
---
layout: post
title: "The IBM PC AT: Alive and Booting"
date: 2014-09-13 11:00:00
category: Releases
permalink: /blog/2014/09/13/
---
My first IBM PC AT (Model 5170) [Test Configuration](/devices/pc/machine/5170/ega/640kb/rev1/) finally
@ -20,8 +25,8 @@ Aside from the additional DMA Controller, other major new motherboard components
The Keyboard Controller and Real-Time Clock/CMOS components required the most tinkering to pass through the ROM BIOS
gauntlet.
For example, at one point, the BIOS ("[TEST.21](../../../../pubs/pc/reference/ibm/static/5170/techref/1984-03/pages/IBM-5170-TECHREF 202.pdf)")
reset the keyboard ("[KBD_RESET](../../../../pubs/pc/reference/ibm/static/5170/techref/1984-03/pages/IBM-5170-TECHREF 212.pdf)"),
For example, at one point, the BIOS ("[TEST.21](http://static.pcjs.org/pubs/pc/reference/ibm/5170/techref/1984-03/pages/IBM-5170-TECHREF 202.pdf)")
reset the keyboard ("[KBD_RESET](http://static.pcjs.org/pubs/pc/reference/ibm/5170/techref/1984-03/pages/IBM-5170-TECHREF 212.pdf)"),
which unmasked the keyboard IRQ and waited for an interrupt, using a loop where CX was initialized to zero and then
decremented until either CX wrapped around to zero again *or* an interrupt occurred. The "TEST.21" code then assumed
that if "KBD_RESET" returned zero in CX, no interrupt had occurred.

View file

@ -1,4 +1,9 @@
PCjs Coding Conventions
---
layout: post
title: PCjs Coding Conventions
date: 2014-09-30 11:00:00
category: JavaScript
permalink: /blog/2014/09/30/
---
Here are a few highlights of the (evolving) JavaScript coding conventions used in PCjs.

View file

@ -1,5 +1,11 @@
PCjs Released on GitHub
---
layout: post
title: PCjs Released on GitHub
date: 2014-10-12 11:00:00
category: Releases
permalink: /blog/2014/10/12/
---
I've decided the time has come to make the [PCjs Project](https://github.com/jeffpar/pcjs) an open source project on
[GitHub](http://github.com/).

View file

@ -1,5 +1,11 @@
The 8Mhz IBM PC AT 5170
---
layout: post
title: The 8Mhz IBM PC AT 5170
date: 2014-10-13 11:00:00
category: JavaScript
permalink: /blog/2014/10/13/
---
I just added my first [8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/) machine configuration
to the list of [IBM PC Machine Configurations](/devices/pc/machine/), and not surprisingly, the new machine
fails to boot.

View file

@ -1,4 +1,9 @@
Release of PCjs v1.15.5
---
layout: post
title: Release of PCjs v1.15.5
date: 2014-10-17 11:00:00
category: Releases
permalink: /blog/2014/10/17/
---
The [8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/) machine configuration boots in

View file

@ -1,5 +1,11 @@
Release of PCjs v1.15.6
---
layout: post
title: Release of PCjs v1.15.6
date: 2014-10-23 11:00:00
category: Releases
permalink: /blog/2014/10/23/
---
This is a fairly minor update that fixes a few Floppy Disk Controller (FDC) issues and one CPU emulation bug
that prevented PC-DOS 7.00 from working properly.

View file

@ -1,5 +1,11 @@
JavaScript Negativity
---
layout: post
title: JavaScript Negativity
date: 2014-10-26 11:00:00
category: JavaScript
permalink: /blog/2014/10/26/
---
Coming from the C programming language, it's easy to be "negative" about how JavaScript deals with 32-bit integers.
As a newcomer, you quickly learn that JavaScript supports only one numeric data type -- 64-bit floats -- and you groan.

View file

@ -1,5 +1,11 @@
OS/2 1.0
---
layout: post
title: OS/2 1.0
date: 2014-12-04 11:00:00
category: OS/2
permalink: /blog/2014/12/04/
---
Exciting news for OS/2 fans: PCjs (v1.16.1) is now able to run OS/2 1.0 on
[IBM PC AT Machine Configurations](/devices/pc/machine/#model-5170-machine-configurations). This is the culmination
of recent work in PCjs to fully emulate the Intel 80286 processor and 16-bit protected-mode, including undocumented
@ -9,7 +15,7 @@ For a quick demo, try the "[OS/2 1.0 Debugger Boot Disk](/disks/pc/os2/misc/)".
you'll see a very rudimentary OS/2 shell (a slimmed-down version of the OS/2 Program Selector) that allows you to
start the protected-mode command interpreter ("Start a Program") or the real-mode command interpreter ("command.com").
![OS/2 1.0 With Kernel Debugger](OS210-DEBUGGER.jpg "link:/disks/pc/os2/misc/")
[<img src="/blog/images/os2-debugger.jpg" alt="OS/2 1.0 With Kernel Debugger"/>](/disks/pc/os2/misc/)
As an added bonus, the Model 5170 machines feature two serial ports, with COM1 connected to a simulated serial
mouse and COM2 connected to the **Control Panel** output window.

View file

@ -1,5 +1,11 @@
Canvas Performance and ContentEditable
---
layout: post
title: Canvas Performance and ContentEditable
date: 2014-12-05 11:00:00
category: HTML5
permalink: /blog/2014/12/05/
---
From the beginning of the [JavaScript Machines](/docs/about/) Project, I've always used an HTML5
[Canvas](https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API) object for both machine output
and input. It's the obvious choice for output, because the Canvas provides a 2D drawing API that's

View file

@ -0,0 +1,46 @@
---
layout: post
title: PCjs Uncompiled
date: 2015-01-17 11:00:00
category: Features
permalink: /blog/2015/01/17/
machines:
- type: pc-dbg
id: at-ega-1152k-rev3
config: /devices/pc/machine/5170/ega/1152kb/rev3/machine.xml
uncompiled: true
---
Most machines on [{{ site.pcjs_domain }}](/) run with a compiled version of PCjs, which is produced
by running PCjs JavaScript source code through Google's Closure Compiler, yielding a smaller (minified)
version that loads and runs much faster than the original source code.
However, certain features are disabled in the compiled versions, including a new BACKTRACK feature that
makes it possible to track the contents of memory locations and registers back to their source (eg, to a ROM
or file location). Once the BACKTRACK feature is finished, it will be folded into the compiled code, but until
then, the only way to experiment with it is by running the uncompiled code.
To make it easier to launch machines with uncompiled code, a PCjs machine definition can now set `uncompiled`
to *true*, overriding the value of `site.pcjs_compiled` in **_config.yml**.
Here's what a typical Markdown file would look like:
{% raw %}
---
...
machines:
- type: pc-dbg
id: at-ega-1152k-rev3
config: /devices/pc/machine/5170/ega/1152kb/rev3/machine.xml
uncompiled: true
---
...
{% include machine.html id="at-ega-1152k-rev3" %}
{% endraw %}
In fact, that's what we've done in the Markdown file you are reading right now.
{% include machine.html id="at-ega-1152k-rev3" %}
*[@jeffpar](http://twitter.com/jeffpar)*
*January 17, 2015 (Updated December 10, 2015 to reflect the new `uncompiled` property)*

View file

@ -1,11 +1,22 @@
New PCjs Control Panel
---
layout: post
title: New PCjs Control Panel
date: 2015-01-28 11:00:00
category: Control Panel
permalink: /blog/2015/01/28/
machines:
- type: pc-dbg
id: at-ega-1152k-rev3
config: /devices/pc/machine/5170/ega/1152kb/rev3/backtrack/machine.xml
uncompiled: true
---
A new PCjs Control Panel is under development, featuring a new "Display Panel" that will provide a variety of
information about the machine, in real-time, and operate more efficiently than previous DOM-based Control Panels.
A preview of the layout is shown below. There's not much to see yet, as this is very much a work-in-progress.
[Embedded IBM PC](/devices/pc/machine/5170/ega/1152kb/rev3/backtrack/ "PCjs:at-ega-1152k-rev3::uncompiled:debugger")
{% include machine.html id="at-ega-1152k-rev3" %}
*[@jeffpar](http://twitter.com/jeffpar)*
*January 28, 2015*

View file

@ -1,5 +1,16 @@
Compaq DeskPro 386
---
layout: post
title: Compaq DeskPro 386
date: 2015-02-22 11:00:00
category: 80386
permalink: /blog/2015/02/22/
machines:
- type: pc-dbg
id: deskpro386
config: /devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml
uncompiled: true
---
I finally dumped the [Compaq DeskPro 386/16 ROMs](/devices/pc/bios/compaq/deskpro386/) from the motherboard I bought
on ebay last year, so I'm ready to begin adding 80386 support to PCjs.
@ -15,7 +26,7 @@ A Compaq DeskPro 386 test configuration is displayed below. It's located at:
The configuration doesn't run, and the debugger can't disassemble 80386-specific code yet, but this is what I will be
using to test and debug my changes over the next few months.
[Embedded DeskPro 386](/devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml "PCjs:deskpro386-ega-2048k::uncompiled:debugger")
{% include machine.html id="deskpro386" %})
*[@jeffpar](http://twitter.com/jeffpar)*
*February 22, 2015*

View file

@ -1,5 +1,11 @@
Early 80386 CPUs
---
layout: post
title: Early 80386 CPUs
date: 2015-02-23 11:00:00
category: 80386
permalink: /blog/2015/02/23/
---
Assembling a detailed and accurate history of the 80386, including a complete listing of all the "steppings"
(revisions), when they were released, what "errata" (problems) each stepping suffered from, and which of those
problems were fixed by a later stepping, seems virtually impossible at this late date.

View file

@ -1,5 +1,11 @@
JavaScript Idiosyncrasies
---
layout: post
title: JavaScript Idiosyncrasies
date: 2015-03-16 11:00:00
category: JavaScript
permalink: /blog/2015/03/16/
---
Time to mention a few JavaScript idiosyncrasies, and how I deal with them.
Also, see my previous posts on [PCjs Coding Conventions](/blog/2014/09/30/) and [JavaScript Negativity](/blog/2014/10/26/).

View file

@ -1,5 +1,16 @@
Compaq DeskPro 386 Update
---
layout: post
title: Compaq DeskPro 386 Update
date: 2015-04-16 11:00:00
category: 80386
permalink: /blog/2015/04/16/
machines:
- type: pc-dbg
id: deskpro386
config: /devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml
uncompiled: true
---
PCjs can now boot the [Compaq DeskPro 386/16 ROM BIOS](/devices/pc/bios/compaq/deskpro386/).
There's still a problem with the hard disk controller, which I haven't looked into yet,
@ -136,7 +147,7 @@ in the Debugger panel to see the above code in action. When the machine is oper
can use the "rp" command to dump all the registers, including the current base and limit values loaded into
the segment registers.
[Embedded DeskPro 386](/devices/pc/machine/compaq/deskpro386/ega/2048kb/machine.xml "PCjs:deskpro386-ega-2048k::uncompiled:debugger")
{% include machine.html id="deskpro386" %}
*[@jeffpar](http://twitter.com/jeffpar)*
*April 16-19, 2015*

View file

@ -1,5 +1,11 @@
PC Tech Journal Collection
---
layout: post
title: PC Tech Journal Collection
date: 2015-05-20 11:00:00
category: PC Tech Journal
permalink: /blog/2015/05/20/
---
This is an update to my 2014 [post](/blog/2014/08/01/) on the PCjs online collection of old
[PC Tech Journal](/pubs/pc/magazines/pctj/) magazine issues.
@ -12,7 +18,7 @@ however, even though it identifies itself as a 1987 issue, the editorial index o
October 1986, so "technically" it should be considered a late 1986 issue. It is officially Vol. 4, No. 13, which,
numerically, puts it squarely between the December 1986 and January 1987 issues.
![PC Tech Journal, July-August 1983](http://static.pcjs.org/pubs/pc/magazines/pctj/PCTJ-1983-07/thumbs/PCTJ-1983-07 1.jpeg "link:/pubs/pc/magazines/pctj/")
[<img src="http://static.pcjs.org/pubs/pc/magazines/pctj/PCTJ-1983-07/thumbs/PCTJ-1983-07 1.jpeg" width="200" height="260" alt="PC Tech Journal, July-August 1983"/>](/pubs/pc/magazines/pctj/)
Happy reading!

View file

@ -2,7 +2,7 @@
layout: post
title: Debugging the IBM VGA ROM
date: 2015-06-01 11:00:00
categories: video
category: Video
permalink: /blog/2015/06/01/
---

View file

@ -2,7 +2,7 @@
layout: post
title: The Strange Case of the EGA Graphics Scroll Bug
date: 2015-06-05 11:00:00
categories: video
category: Video
permalink: /blog/2015/06/05/
---

View file

@ -2,7 +2,7 @@
layout: post
title: Windows 95
date: 2015-07-17 11:00:00
categories: windows-95
category: Windows 95
permalink: /blog/2015/07/17/
---

View file

@ -2,7 +2,7 @@
layout: post
title: Windows 95 In Your Web Browser
date: 2015-09-21 11:00:00
categories: windows-95 80386
category: Windows 95
permalink: /blog/2015/09/21/
machines:
- type: pc-dbg

View file

@ -2,7 +2,7 @@
layout: post
title: Windows 95 and Early 80386 CPUs
date: 2015-10-27 11:00:00
categories: windows-95 80386
categories: ['Windows 95', '80386']
permalink: /blog/2015/10/27/
---

View file

@ -2,7 +2,8 @@
layout: post
title: Rebuilding the PCjs Website
date: 2015-12-10 11:03:00
categories: blog
category: Website
permalink: /blog/2015/12/10/
---
It's been nice using Node.js to power the PCjs website, using Amazon's Elastic Beanstalk service, but that combination
@ -67,9 +68,10 @@ the following values, depending on whether you want an IBM PC or Challenger 1P,
- c1p-dbg
and `id` can be any identifier you want to use to embed the machine. You may also use `config` to specify a machine XML
configuration file if not using the default `machine.xml`, `template` to specify an alternate XSL template file if not
using the default `components.xsl` file, and `state` to specify a JSON-encoded machine state file if the machine
requires a predefined state.
configuration file if not using the default `machine.xml`; `template` to specify an alternate XSL template file if not
using the default `components.xsl` file; `state` to specify a JSON-encoded machine state file if the machine requires a
predefined state; and `uncompiled` may be set to *true* to force a machine to use uncompiled sources, overriding the
value of `site.pcjs_compiled` in **_config.yml**.
For example, the PCjs home page contains two machines, and so this appears at the top of the root [README.md](https://raw.githubusercontent.com/jeffpar/pcjs/gh-pages/README.md):
@ -84,3 +86,6 @@ For example, the PCjs home page contains two machines, and so this appears at th
I will continue to include a Node web server with the PCjs project, but it remains to be seen whether I'll update the
Node components to parse the new Jekyll "Front Matter" that's been added to all the Markdown files, or whether I'll leave
leave the Node support as-is on the old "master" branch, and make the "gh-pages" the new default branch.
*[@jeffpar](http://twitter.com/jeffpar)*
*December 10, 2015*

View file

@ -1,26 +0,0 @@
PCjs Uncompiled
---
Most machines on [pcjs.org](http://www.pcjs.org/) run with a compiled version of PCjs, which is produced
by running PCjs JavaScript source code through Google's Closure Compiler, yielding a smaller (minified)
version that loads and runs much faster than the original source code.
However, certain features are disabled in the compiled versions, including a new BACKTRACK feature that
makes it possible to track the contents of memory locations and registers back to their source (eg, to a ROM
or file location). Once the BACKTRACK feature is finished, it will be folded into the compiled code, but until
then, the only way to experiment with it is by running the uncompiled code.
To make it easier to launch machines with the uncompiled code, the PCjs server now allows the *version* field
of a PCjs machine link to specify "uncompiled"; previously, the only *version* values allowed were a specific
version number (eg, "1.16.5") or an asterisk (which would default to the latest compiled version).
Here's how you embed an "uncompiled" machine in a PCjs Markdown file:
[Embedded IBM PC](/devices/pc/machine/5170/ega/1152kb/rev3/ "PCjs:at-ega-1152k-rev3::uncompiled:debugger")
And here's that example in action, in the Markdown ([README.md]()) file you are reading right now -- assuming
you are reading it on a [PCjs](http://www.pcjs.org/blog/2015/01/17/) web server:
[Embedded IBM PC](/devices/pc/machine/5170/ega/1152kb/rev3/ "PCjs:at-ega-1152k-rev3::uncompiled:debugger")
*[@jeffpar](http://twitter.com/jeffpar)*
*January 17, 2015*

View file

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 316 KiB

After

Width:  |  Height:  |  Size: 316 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 315 KiB

After

Width:  |  Height:  |  Size: 315 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 121 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 49 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 252 KiB

After

Width:  |  Height:  |  Size: 252 KiB

Before After
Before After

View file

@ -1,6 +1,12 @@
---
layout: page
title: IBM PC AT (Model 5170) BIOS
permalink: /devices/pc/bios/5170/
---
IBM PC AT (Model 5170) BIOS
---
[1984-01-10.json]() contains the original IBM PC AT BIOS.
[1984-01-10.json](1984-01-10.json) contains the original IBM PC AT BIOS.
From [http://minuszerodegrees.net/bios/BIOS_5170_10JAN84_6MHZ.zip](http://minuszerodegrees.net/bios/):
@ -25,8 +31,8 @@ The JSON-encoded ROM image that PCjs uses was created using the *FileDump* comma
filedump --file=http://static.pcjs.org/devices/pc/bios/5170/BIOS_5170_10JAN84_U27_6181028_27256_6MHZ.BIN --merge=http://static.pcjs.org/devices/pc/bios/5170/BIOS_5170_10JAN84_U47_6181029_27256_6MHZ.BIN --output=1984-01-10.json --overwrite
Since a MAP file ([1984-01-10.map]()) exists as well, it is automatically appended to the JSON file ([1984-01-10.json]())
when using a ROM input file (or JSON output file) with a matching filename.
Since a MAP file ([1984-01-10.map](1984-01-10.map)) exists as well, it is automatically appended to the JSON file
([1984-01-10.json](1984-01-10.json)) when using a ROM input file (or JSON output file) with a matching filename.
It is also possible to create a merged binary ROM image ([1984-01-10.rom](http://static.pcjs.org/devices/pc/bios/5170/1984-01-10.rom))
by adding *--format=rom* to the command-line (the default is *--format=json*).
@ -34,14 +40,14 @@ by adding *--format=rom* to the command-line (the default is *--format=json*).
These operations can only be performed using the *FileDump* command-line interface; the *FileDump* API does not support
either the *merge* option or the appending of MAP data. For the moment, the API can only dump unadorned ROM images; eg:
http://www.pcjs.org/api/v1/dump/?file=http://static.pcjs.org/devices/pc/bios/5170/1984-01-10.rom
http://localhost:8088/api/v1/dump/?file=http://static.pcjs.org/devices/pc/bios/5170/1984-01-10.rom
---
IBM PC AT (Model 5170) BIOS ("Rev 2")
---
[1985-06-10.json]() contains the second IBM PC AT BIOS, dated June 10, 1985, which expanded hard disk support from 15 to 23 drive types,
fixed some bugs, and added support for 720Kb 3.5-inch floppy diskette drives.
[1985-06-10.json](1985-06-10.json) contains the second IBM PC AT BIOS, dated June 10, 1985, which expanded hard disk
support from 15 to 23 drive types, fixed some bugs, and added support for 720Kb 3.5-inch floppy diskette drives.
From [http://minuszerodegrees.net/bios/BIOS_5170_10JUN85_6MHZ.zip](http://minuszerodegrees.net/bios/):
@ -70,8 +76,8 @@ The JSON-encoded ROM image that PCjs uses was created using the *FileDump* comma
IBM PC AT (Model 5170) BIOS ("Rev 3")
---
[1985-11-15.json]() contains the third (and last) IBM PC AT BIOS, dated November 15, 1985, which added support for 101-key keyboards and 1.44Mb floppy
diskette drives.
[1985-11-15.json](1985-11-15.json) contains the third (and last) IBM PC AT BIOS, dated November 15, 1985,
which added support for 101-key keyboards and 1.44Mb floppy diskette drives.
From [http://minuszerodegrees.net/bios/BIOS_5170_15NOV85_8MHZ_VARIATION_2.zip](http://minuszerodegrees.net/bios/):

View file

@ -1,9 +1,15 @@
---
layout: page
title: Compaq DeskPro 386 ROMs
permalink: /devices/pc/bios/compaq/deskpro386/
---
Compaq DeskPro 386 ROMs
---
The oldest Compaq DeskPro 386 ROM I have is a Rev J.4 ROM from a "Version 2" motherboard designed
in 1987 and released in 1988.
![Compaq DeskPro 386 System Board Version 2](/pubs/pc/reference/compaq/static/images/Compaq_DeskPro_386-16_System_Board_V2-640.jpg "link:/pubs/pc/reference/compaq/static/images/Compaq_DeskPro_386-16_System_Board_V2.jpg")
[<img src="http://static.pcjs.org/pubs/pc/reference/compaq/images/Compaq_DeskPro_386-16_System_Board_V2-640.jpg" alt="Compaq DeskPro 386 System Board Version 2"/>](http://static.pcjs.org/pubs/pc/reference/compaq/images/Compaq_DeskPro_386-16_System_Board_V2.jpg)
Thanks to folks on the [Vintage Computer](http://www.vintage-computer.com/) forums, I also have a Rev N.1 ROM from 1989.
@ -39,9 +45,9 @@ For a more human-readable dump, use the `--comments` option:
And for those who want a binary file, the FileDump API can be used to recreate binary data from JSON data:
> [http://www.pcjs.org/api/v1/dump?file=http://www.pcjs.org/devices/pc/bios/compaq/deskpro386/1988-01-28/1988-01-28.json&format=rom](http://www.pcjs.org/api/v1/dump?file=http://www.pcjs.org/devices/pc/bios/compaq/deskpro386/1988-01-28/1988-01-28.json&format=rom)
http://localhost:8088/api/v1/dump?file=http://localhost:8088/devices/pc/bios/compaq/deskpro386/1988-01-28/1988-01-28.json&format=rom
Similarly, [1989-04-14.json](1989-04-14/1989-04-14.json) was generated by first creating [1989-04-14.rom](http://www.pcjs.org/api/v1/dump?file=http://www.pcjs.org/devices/pc/bios/compaq/deskpro386/1989-04-14/1989-04-14.json&format=rom)
Similarly, [1989-04-14.json](1989-04-14/1989-04-14.json) was generated by first creating **1989-04-14.rom**
from the two 16Kb BIN files provided by [Al Kossow](http://www.vintage-computer.com/vcforum/member.php?2256-Al-Kossow):
cd 1989-04-14
@ -56,10 +62,10 @@ prototyping board, and capturing the serial port output on my MacBook Pro -- as
"[Stick a Straw in Its Brain and Suck: How to Read a ROM](http://www.nycresistor.com/2012/07/07/stick-a-straw-in-its-brain-and-suck-how-to-read-a-rom/)"
by [NYC Resistor](http://www.nycresistor.com/) contributor [phooky](http://www.nycresistor.com/author/phooky/).
The DeskPro 386 ROMs were P27128A-2 chips, so I wired my Uno32 based on this [27128A](/pubs/pc/datasheets/static/27128A.pdf)
The DeskPro 386 ROMs were P27128A-2 chips, so I wired my Uno32 based on this [27128A](http://static.pcjs.org/pubs/pc/datasheets/27128A.pdf)
datasheet -- the closest match I could find online.
![Compaq DeskPro 386 System ROM Version 2](/pubs/pc/reference/compaq/static/images/Compaq_DeskPro_386-16_System_ROM_V2_Breadboard-640.jpg "link:/pubs/pc/reference/compaq/static/images/Compaq_DeskPro_386-16_System_ROM_V2_Breadboard.jpg")
![<img src="http://static.pcjs.org/pubs/pc/reference/compaq/images/Compaq_DeskPro_386-16_System_ROM_V2_Breadboard-640.jpg" alt="Compaq DeskPro 386 System ROM Version 2"/>](http://static.pcjs.org/pubs/pc/reference/compaq/images/Compaq_DeskPro_386-16_System_ROM_V2_Breadboard.jpg)
On my first dump attempt, every ROM address returned 0xFF. After looking at the 27128A datasheet more closely, I noticed
the DEVICE OPERATION table indicated that, for a READ operation, /CE and /OE pins should be connected to INPUT LOW VOLTAGE,

View file

@ -1,10 +1,11 @@
---
layout: page
title: "Compaq DeskPro 386 Machines"
title: Compaq DeskPro 386 Machines
permalink: /devices/pc/machine/compaq/deskpro386/
---
Compaq DeskPro 386 Machines
---
* [Compaq DeskPro 386 with VGA Display running Windows 95](vga/4096kb/)
* [Compaq DeskPro 386 with VGA, 2Mb RAM](vga/2048kb/)
* [Compaq DeskPro 386 with VGA, 4Mb RAM, running Windows 95](vga/4096kb/)

View file

@ -0,0 +1,10 @@
---
layout: page
title: "Compaq DeskPro 386 with VGA, 2Mb RAM"
permalink: /devices/pc/machine/compaq/deskpro386/vga/2048kb/
machines:
- type: pc-dbg
id: deskpro386
---
{% include machine.html id="deskpro386" %}

View file

@ -1,6 +1,6 @@
---
layout: page
title: "Compaq DeskPro 386 with VGA Display, 4Mb"
title: "Compaq DeskPro 386 with VGA, 4Mb RAM"
permalink: /devices/pc/machine/compaq/deskpro386/vga/4096kb/
machines:
- type: pc-dbg

View file

@ -0,0 +1,11 @@
---
layout: page
title: "BM PC AT (8Mhz), 128Kb EGA, 1152Kb RAM, 20Mb Hard Disk"
permalink: /disks/pc/os2/misc/
machines:
- type: pc-dbg
id: ibm5170
config: /disks/pc/os2/misc/1.0/debugger/machine.xml
---
{% include machine.html id="ibm5170" %}

View file

@ -134,7 +134,7 @@ To convert PCjs' special links, such as:
to normal Markdown links, search using this regex:
\!\[(.*?)\]\(([^ )]*) \"link:(.*?):([0-9]*):([0-9]*)\"\)
\!\[(.*?)\]\((.*?) \"link:(.*?):([0-9]*):([0-9]*)\"\)
and replace using this regex:

View file

@ -7,6 +7,8 @@ permalink: /pubs/pc/magazines/pctj/
PC Tech Journal
---
(The nearly-complete collection!)
[<img src="http://static.pcjs.org/pubs/pc/magazines/pctj/PCTJ-1983-07/thumbs/PCTJ-1983-07 1.jpeg" width="200" height="260" alt="PC Tech Journal, Jul 1983"/>](PCTJ-1983-07/)
[<img src="http://static.pcjs.org/pubs/pc/magazines/pctj/PCTJ-1983-09/thumbs/PCTJ-1983-09 1.jpeg" width="200" height="260" alt="PC Tech Journal, Sep 1983"/>](PCTJ-1983-09/)
[<img src="http://static.pcjs.org/pubs/pc/magazines/pctj/PCTJ-1983-11/thumbs/PCTJ-1983-11 1.jpeg" width="200" height="260" alt="PC Tech Journal, Nov 1983"/>](PCTJ-1983-11/)