Finished porting the blog posts
|
|
@ -15,7 +15,7 @@
|
||||||
{% else %}
|
{% else %}
|
||||||
{% assign machine_state = machine.state %}
|
{% assign machine_state = machine.state %}
|
||||||
{% endunless %}
|
{% 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 %}
|
{% 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 %}
|
{% unless machine_scripts contains machine_script %}
|
||||||
{{ machine_script }}
|
{{ machine_script }}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
{% for machine in page.machines %}
|
{% 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 %}
|
{% capture machine_style %}{{ site.baseurl }}/modules/{{ machine.type | remove:'-dbg' }}js/templates/components.css{% endcapture %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% capture machine_style %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.css{% endcapture %}
|
{% capture machine_style %}{{ site.baseurl }}/versions/{{ machine.type | remove:'-dbg' }}js/{{ site.pcjs_version }}/components.css{% endcapture %}
|
||||||
|
|
|
||||||
|
|
@ -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
|
As you may have noticed (or not), the [JSMachines](http://jsmachines.net/) website had a very modest makeover
|
||||||
recently.
|
recently.
|
||||||
|
|
||||||
|
|
@ -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;
|
- 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;
|
- Porting this project to work with node.js, which includes rewriting all the PHP code as server-side JavaScript;
|
||||||
|
|
@ -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
|
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.
|
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
|
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:
|
"FTP DIAGNOSTIC LOGS" link on the web portal -- which presents the logs as one big, ugly, fragmented mess:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Sigh. But at least the site is up and fully operational now.
|
Sigh. But at least the site is up and fully operational now.
|
||||||
|
|
||||||
|
|
@ -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
|
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.
|
[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
|
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).
|
an outlier. I'm not sure what I'll do about it yet (or even what I can do).
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
@ -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.
|
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.
|
And like all PCjs applications, there's nothing to install. It runs safely and securely from any web browser.
|
||||||
|
|
||||||
|
|
@ -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
|
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
|
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.
|
link to a PCjs machine configuration capable of running the software, along with a "ready-to-run" machine state 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.
|
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).
|
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.
|
stylesheets. And occasionally Safari -- and ONLY Safari -- will render those XML files as blank pages.
|
||||||
|
|
||||||
For example, here's the
|
For example, here's the
|
||||||
[machine.xml](/devices/pc/machine/5150/mda/64kb/machine.xml) file that's also embedded on 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),
|
When Safari fetched that XML file from an Apache web server (what I used before switching to Node),
|
||||||
the request would look like:
|
the request would look like:
|
||||||
|
|
@ -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.
|
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
|
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.
|
PCjs requires a much more serious time commitment, with limited interruptions.
|
||||||
|
|
@ -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
|
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?"
|
been limited to "Does the latest version still work in all current web browsers?"
|
||||||
|
|
||||||
|
|
@ -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),"
|
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
|
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
|
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
|
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.
|
is easily awed, because he did the same thing when Sales Guy wrote "2x fast, 1/2 price" on an earlier whiteboard.
|
||||||
|
|
||||||

|
[<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
|
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.
|
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)"
|
Another curiosity is that searching for this resulted in a "[Googlewhack](http://en.wikipedia.org/wiki/Googlewhack)"
|
||||||
of sorts:
|
of sorts:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Technically, a Googlewhack (a two-word search that yields exactly one result) must use two words found in an actual
|
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é.
|
dictionary. But dictionaries are so passé.
|
||||||
|
|
@ -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
|
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"
|
efficiently. The rest of the changes to the website involved beefing up support for both "software manifests"
|
||||||
and "document manifests."
|
and "document manifests."
|
||||||
|
|
@ -1,14 +1,20 @@
|
||||||
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
|
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
|
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"](/devices/pc/machine/5160/ega/640kb/array/) demo.
|
||||||
|
|
||||||

|
[<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:
|
EGA support is added to a **machine.xml** file using two XML elements; eg:
|
||||||
|
|
||||||
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350"/>
|
<video id="videoEGA" model="ega" memory="0x20000" screenwidth="640" screenheight="350"/>
|
||||||
|
|
||||||
The *model* attribute must be set to "ega" and the *memory* attribute should be set to the amount of memory
|
The *model* attribute must be set to "ega" and the *memory* attribute should be set to the amount of memory
|
||||||
desired on the card; valid memory sizes are:
|
desired on the card; valid memory sizes are:
|
||||||
|
|
@ -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
|
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.
|
scanning and posting the 12 issues of [PC Tech Journal](/pubs/pc/magazines/pctj/) from 1987.
|
||||||
|
|
||||||
|
|
@ -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.
|
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
|
PCjs version 1.15.0 is the first step on the path to full 80286 support. It includes changes to the physical
|
||||||
|
|
@ -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:
|
The following fixes were made in PCjs v1.15.1:
|
||||||
|
|
@ -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
|
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
|
The Keyboard Controller and Real-Time Clock/CMOS components required the most tinkering to pass through the ROM BIOS
|
||||||
gauntlet.
|
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)")
|
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](../../../../pubs/pc/reference/ibm/static/5170/techref/1984-03/pages/IBM-5170-TECHREF 212.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
|
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
|
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.
|
that if "KBD_RESET" returned zero in CX, no interrupt had occurred.
|
||||||
|
|
@ -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.
|
Here are a few highlights of the (evolving) JavaScript coding conventions used in PCjs.
|
||||||
|
|
@ -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
|
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/).
|
[GitHub](http://github.com/).
|
||||||
|
|
||||||
|
|
@ -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
|
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
|
to the list of [IBM PC Machine Configurations](/devices/pc/machine/), and not surprisingly, the new machine
|
||||||
fails to boot.
|
fails to boot.
|
||||||
|
|
@ -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
|
The [8Mhz IBM PC AT](/devices/pc/machine/5170/ega/1152kb/rev3/) machine configuration boots in
|
||||||
|
|
@ -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
|
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.
|
that prevented PC-DOS 7.00 from working properly.
|
||||||
|
|
||||||
|
|
@ -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.
|
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.
|
As a newcomer, you quickly learn that JavaScript supports only one numeric data type -- 64-bit floats -- and you groan.
|
||||||
|
|
@ -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
|
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
|
[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
|
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
|
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").
|
start the protected-mode command interpreter ("Start a Program") or the real-mode command interpreter ("command.com").
|
||||||
|
|
||||||

|
[<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
|
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.
|
mouse and COM2 connected to the **Control Panel** output window.
|
||||||
|
|
@ -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
|
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
|
[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
|
and input. It's the obvious choice for output, because the Canvas provides a 2D drawing API that's
|
||||||
46
_posts/2015-01-17-pcjs-uncompiled.md
Normal 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)*
|
||||||
|
|
@ -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
|
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.
|
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.
|
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)*
|
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||||
*January 28, 2015*
|
*January 28, 2015*
|
||||||
|
|
@ -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
|
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.
|
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
|
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.
|
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)*
|
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||||
*February 22, 2015*
|
*February 22, 2015*
|
||||||
|
|
@ -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"
|
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
|
(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.
|
problems were fixed by a later stepping, seems virtually impossible at this late date.
|
||||||
|
|
@ -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.
|
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/).
|
Also, see my previous posts on [PCjs Coding Conventions](/blog/2014/09/30/) and [JavaScript Negativity](/blog/2014/10/26/).
|
||||||
|
|
@ -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/).
|
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,
|
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
|
can use the "rp" command to dump all the registers, including the current base and limit values loaded into
|
||||||
the segment registers.
|
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)*
|
*[@jeffpar](http://twitter.com/jeffpar)*
|
||||||
*April 16-19, 2015*
|
*April 16-19, 2015*
|
||||||
|
|
@ -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
|
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.
|
[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,
|
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.
|
numerically, puts it squarely between the December 1986 and January 1987 issues.
|
||||||
|
|
||||||

|
[<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!
|
Happy reading!
|
||||||
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: Debugging the IBM VGA ROM
|
title: Debugging the IBM VGA ROM
|
||||||
date: 2015-06-01 11:00:00
|
date: 2015-06-01 11:00:00
|
||||||
categories: video
|
category: Video
|
||||||
permalink: /blog/2015/06/01/
|
permalink: /blog/2015/06/01/
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: The Strange Case of the EGA Graphics Scroll Bug
|
title: The Strange Case of the EGA Graphics Scroll Bug
|
||||||
date: 2015-06-05 11:00:00
|
date: 2015-06-05 11:00:00
|
||||||
categories: video
|
category: Video
|
||||||
permalink: /blog/2015/06/05/
|
permalink: /blog/2015/06/05/
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: Windows 95
|
title: Windows 95
|
||||||
date: 2015-07-17 11:00:00
|
date: 2015-07-17 11:00:00
|
||||||
categories: windows-95
|
category: Windows 95
|
||||||
permalink: /blog/2015/07/17/
|
permalink: /blog/2015/07/17/
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: Windows 95 In Your Web Browser
|
title: Windows 95 In Your Web Browser
|
||||||
date: 2015-09-21 11:00:00
|
date: 2015-09-21 11:00:00
|
||||||
categories: windows-95 80386
|
category: Windows 95
|
||||||
permalink: /blog/2015/09/21/
|
permalink: /blog/2015/09/21/
|
||||||
machines:
|
machines:
|
||||||
- type: pc-dbg
|
- type: pc-dbg
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: Windows 95 and Early 80386 CPUs
|
title: Windows 95 and Early 80386 CPUs
|
||||||
date: 2015-10-27 11:00:00
|
date: 2015-10-27 11:00:00
|
||||||
categories: windows-95 80386
|
categories: ['Windows 95', '80386']
|
||||||
permalink: /blog/2015/10/27/
|
permalink: /blog/2015/10/27/
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
---
|
---
|
||||||
layout: post
|
layout: post
|
||||||
title: Rebuilding the PCjs Website
|
title: Rebuilding the PCjs Website
|
||||||
date: 2015-12-10 11:03:00
|
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
|
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
|
- 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
|
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
|
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
|
using the default `components.xsl` file; `state` to specify a JSON-encoded machine state file if the machine requires a
|
||||||
requires a predefined state.
|
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):
|
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
|
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
|
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.
|
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*
|
||||||
|
|
|
||||||
|
|
@ -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*
|
|
||||||
|
Before Width: | Height: | Size: 102 KiB After Width: | Height: | Size: 102 KiB |
|
Before Width: | Height: | Size: 71 KiB After Width: | Height: | Size: 71 KiB |
|
Before Width: | Height: | Size: 9.9 KiB After Width: | Height: | Size: 9.9 KiB |
|
Before Width: | Height: | Size: 316 KiB After Width: | Height: | Size: 316 KiB |
|
Before Width: | Height: | Size: 315 KiB After Width: | Height: | Size: 315 KiB |
|
Before Width: | Height: | Size: 121 KiB After Width: | Height: | Size: 121 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 49 KiB |
|
Before Width: | Height: | Size: 252 KiB After Width: | Height: | Size: 252 KiB |
|
|
@ -1,6 +1,12 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: IBM PC AT (Model 5170) BIOS
|
||||||
|
permalink: /devices/pc/bios/5170/
|
||||||
|
---
|
||||||
|
|
||||||
IBM PC AT (Model 5170) BIOS
|
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/):
|
From [http://minuszerodegrees.net/bios/BIOS_5170_10JAN84_6MHZ.zip](http://minuszerodegrees.net/bios/):
|
||||||
|
|
||||||
|
|
@ -13,8 +19,8 @@ From [http://minuszerodegrees.net/bios/BIOS_5170_10JAN84_6MHZ.zip](http://minusz
|
||||||
|
|
||||||
8 bit checksum of 6181028 = 36
|
8 bit checksum of 6181028 = 36
|
||||||
8 bit checksum of 6181029 = CA
|
8 bit checksum of 6181029 = CA
|
||||||
--
|
--
|
||||||
added = 00
|
added = 00
|
||||||
|
|
||||||
There are two BIN files in this ZIP file:
|
There are two BIN files in this ZIP file:
|
||||||
|
|
||||||
|
|
@ -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
|
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]())
|
Since a MAP file ([1984-01-10.map](1984-01-10.map)) exists as well, it is automatically appended to the JSON file
|
||||||
when using a ROM input file (or JSON output file) with a matching filename.
|
([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))
|
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*).
|
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
|
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:
|
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")
|
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,
|
[1985-06-10.json](1985-06-10.json) contains the second IBM PC AT BIOS, dated June 10, 1985, which expanded hard disk
|
||||||
fixed some bugs, and added support for 720Kb 3.5-inch floppy diskette drives.
|
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/):
|
From [http://minuszerodegrees.net/bios/BIOS_5170_10JUN85_6MHZ.zip](http://minuszerodegrees.net/bios/):
|
||||||
|
|
||||||
|
|
@ -54,8 +60,8 @@ From [http://minuszerodegrees.net/bios/BIOS_5170_10JUN85_6MHZ.zip](http://minusz
|
||||||
|
|
||||||
8 bit checksum of 6480090 = 71
|
8 bit checksum of 6480090 = 71
|
||||||
8 bit checksum of 6480091 = 8F
|
8 bit checksum of 6480091 = 8F
|
||||||
--
|
--
|
||||||
added = 00
|
added = 00
|
||||||
|
|
||||||
There are two BIN files in this ZIP file:
|
There are two BIN files in this ZIP file:
|
||||||
|
|
||||||
|
|
@ -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")
|
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
|
[1985-11-15.json](1985-11-15.json) contains the third (and last) IBM PC AT BIOS, dated November 15, 1985,
|
||||||
diskette drives.
|
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/):
|
From [http://minuszerodegrees.net/bios/BIOS_5170_15NOV85_8MHZ_VARIATION_2.zip](http://minuszerodegrees.net/bios/):
|
||||||
|
|
||||||
|
|
@ -84,8 +90,8 @@ From [http://minuszerodegrees.net/bios/BIOS_5170_15NOV85_8MHZ_VARIATION_2.zip](h
|
||||||
|
|
||||||
8 bit checksum of 61X9266 = 10
|
8 bit checksum of 61X9266 = 10
|
||||||
8 bit checksum of 61X9265 = F0
|
8 bit checksum of 61X9265 = F0
|
||||||
--
|
--
|
||||||
added = 00
|
added = 00
|
||||||
|
|
||||||
There are two BIN files in this ZIP file:
|
There are two BIN files in this ZIP file:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,15 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: Compaq DeskPro 386 ROMs
|
||||||
|
permalink: /devices/pc/bios/compaq/deskpro386/
|
||||||
|
---
|
||||||
|
|
||||||
Compaq DeskPro 386 ROMs
|
Compaq DeskPro 386 ROMs
|
||||||
---
|
---
|
||||||
The oldest Compaq DeskPro 386 ROM I have is a Rev J.4 ROM from a "Version 2" motherboard designed
|
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.
|
in 1987 and released in 1988.
|
||||||
|
|
||||||

|
[<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.
|
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:
|
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):
|
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
|
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/)"
|
"[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/).
|
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.
|
datasheet -- the closest match I could find online.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
On my first dump attempt, every ROM address returned 0xFF. After looking at the 27128A datasheet more closely, I noticed
|
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,
|
the DEVICE OPERATION table indicated that, for a READ operation, /CE and /OE pins should be connected to INPUT LOW VOLTAGE,
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,11 @@
|
||||||
---
|
---
|
||||||
layout: page
|
layout: page
|
||||||
title: "Compaq DeskPro 386 Machines"
|
title: Compaq DeskPro 386 Machines
|
||||||
permalink: /devices/pc/machine/compaq/deskpro386/
|
permalink: /devices/pc/machine/compaq/deskpro386/
|
||||||
---
|
---
|
||||||
|
|
||||||
Compaq DeskPro 386 Machines
|
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/)
|
||||||
|
|
|
||||||
10
devices/pc/machine/compaq/deskpro386/vga/2048kb/machine.md
Normal 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" %}
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
---
|
---
|
||||||
layout: page
|
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/
|
permalink: /devices/pc/machine/compaq/deskpro386/vga/4096kb/
|
||||||
machines:
|
machines:
|
||||||
- type: pc-dbg
|
- type: pc-dbg
|
||||||
|
|
|
||||||
11
disks/pc/os2/misc/machine.md
Normal 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" %}
|
||||||
2
notes.md
|
|
@ -134,7 +134,7 @@ To convert PCjs' special links, such as:
|
||||||
|
|
||||||
to normal Markdown links, search using this regex:
|
to normal Markdown links, search using this regex:
|
||||||
|
|
||||||
\!\[(.*?)\]\(([^ )]*) \"link:(.*?):([0-9]*):([0-9]*)\"\)
|
\!\[(.*?)\]\((.*?) \"link:(.*?):([0-9]*):([0-9]*)\"\)
|
||||||
|
|
||||||
and replace using this regex:
|
and replace using this regex:
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ permalink: /pubs/pc/magazines/pctj/
|
||||||
PC Tech Journal
|
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-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-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/)
|
[<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/)
|
||||||
|
|
|
||||||