From af4e3497c121d8b7710a1d29480473b6a125c539 Mon Sep 17 00:00:00 2001 From: Jeff Parsons Date: Mon, 25 Jul 2016 10:21:46 -0700 Subject: [PATCH] Removing GitHub Pages files from the development branches --- 404.md | 7 - CNAME | 1 - Gemfile | 4 - _config.yml | 128 --------- _developer.yml | 4 - _includes/breadcrumbs.html | 11 - _includes/footer.html | 61 ----- _includes/google-analytics.html | 3 - _includes/head.html | 23 -- _includes/header.html | 32 --- _includes/image.html | 1 - _includes/machine-build.html | 1 - _includes/machine-engines.html | 146 ---------- _includes/machine-styles.html | 21 -- _includes/machine.html | 10 - _includes/page-scripts.html | 8 - _includes/random-publication.html | 42 --- _includes/screenshot.html | 16 -- _layouts/blog.html | 26 -- _layouts/default.html | 26 -- _layouts/page.html | 16 -- _layouts/post.html | 15 - _layouts/viewer.html | 78 ------ _posts/2013-11-20-a-blog-thats-not-a-blog.md | 56 ---- _posts/2014-01-01-new-year-new-directions.md | 19 -- _posts/2014-03-30-running-on-azure.md | 56 ---- .../2014-03-31-browser-compatibility-woes.md | 47 ---- ...04-01-the-latest-in-emulator-technology.md | 23 -- _posts/2014-04-12-whats-new-in-1.13.0.md | 26 -- _posts/2014-04-14-node-express-safari.md | 156 ----------- _posts/2014-04-30-heading-to-new-york.md | 45 --- _posts/2014-05-12-chrome-kicks-butt.md | 33 --- _posts/2014-06-14-halt-and-catch-liar.md | 81 ------ .../2014-06-26-more-under-the-hood-changes.md | 18 -- _posts/2014-07-30-ega-support.md | 48 ---- _posts/2014-08-01-pc-tech-journal-1987.md | 32 --- _posts/2014-08-28-supporting-the-80286.md | 53 ---- .../2014-09-02-minor-fixes-and-additions.md | 32 --- ...4-09-13-the-ibm-pc-at-alive-and-booting.md | 71 ----- _posts/2014-09-30-pcjs-coding-conventions.md | 246 ----------------- _posts/2014-10-12-pcjs-released-on-github.md | 27 -- _posts/2014-10-13-the-8mhz-ibm-pc-at-5170.md | 34 --- ...-17-improved-support-for-pc-at-machines.md | 58 ---- .../2014-10-23-improved-pc-dos-700-support.md | 27 -- _posts/2014-10-26-javascript-negativity.md | 83 ------ ...-28-limited-support-for-xdf-disk-images.md | 23 -- _posts/2014-12-04-os2-10.md | 55 ---- ...-canvas-performance-and-contenteditable.md | 71 ----- _posts/2015-01-17-pcjs-uncompiled.md | 48 ---- _posts/2015-01-28-new-pcjs-control-panel.md | 23 -- _posts/2015-02-22-compaq-deskpro-386.md | 30 -- _posts/2015-02-23-early-80386-cpus.md | 116 -------- .../2015-03-26-javascript-idiosyncrasies.md | 210 -------------- .../2015-04-16-compaq-deskpro-386-update.md | 154 ----------- .../2015-05-20-pc-tech-journal-collection.md | 26 -- .../2015-06-01-debugging-the-ibm-vga-rom.md | 142 ---------- ...nge-case-of-the-ega-graphics-scroll-bug.md | 186 ------------- _posts/2015-07-17-windows-95.md | 204 -------------- ...15-09-21-windows-95-in-your-web-browser.md | 39 --- ...5-10-27-windows-95-and-early-80386-cpus.md | 218 --------------- .../2015-12-10-rebuilding-the-pcjs-website.md | 124 --------- _posts/2015-12-27-revisiting-os2.md | 48 ---- _posts/2016-01-23-early-os2-artifacts.md | 39 --- _posts/2016-02-08-super-bowl-winner-pcjs.md | 57 ---- .../2016-02-17-saving-disks-and-machines.md | 130 --------- _posts/2016-02-24-remembering-compaq.md | 95 ------- _posts/2016-03-06-touching-windows.md | 48 ---- ...3-12-demos-of-windows386-and-windows-3x.md | 34 --- _posts/2016-04-30-the-intel-8080-cpu.md | 56 ---- _posts/2016-05-04-the-sharpening.md | 95 ------- _sass/_base.scss | 205 -------------- _sass/_layout.scss | 258 ------------------ _sass/_syntax-highlighting.scss | 68 ----- blog/README.md | 14 - blog/images/avd-tablet.jpg | Bin 66482 -> 0 bytes blog/images/googlewhack.jpg | Bin 73142 -> 0 bytes blog/images/halt-and-catch-liar-small.jpg | Bin 10165 -> 0 bytes blog/images/halt-and-catch-liar.jpg | Bin 323931 -> 0 bytes blog/images/iisnode-logs.jpg | Bin 159098 -> 0 bytes blog/images/ipad-solitaire-small.jpg | Bin 76976 -> 0 bytes blog/images/ipad-solitaire.jpg | Bin 530526 -> 0 bytes blog/images/os2-debugger.jpg | Bin 123896 -> 0 bytes blog/images/si1978-fuzzier.png | Bin 84426 -> 0 bytes blog/images/si1978-sharper.png | Bin 45181 -> 0 bytes blog/images/win101-array-demo-small.jpg | Bin 50298 -> 0 bytes blog/images/win101-array-demo.jpg | Bin 258371 -> 0 bytes index.md | 94 ------- robots.txt | 2 - 88 files changed, 4863 deletions(-) delete mode 100644 404.md delete mode 100644 CNAME delete mode 100644 Gemfile delete mode 100644 _config.yml delete mode 100644 _developer.yml delete mode 100644 _includes/breadcrumbs.html delete mode 100644 _includes/footer.html delete mode 100644 _includes/google-analytics.html delete mode 100644 _includes/head.html delete mode 100644 _includes/header.html delete mode 100644 _includes/image.html delete mode 100644 _includes/machine-build.html delete mode 100644 _includes/machine-engines.html delete mode 100644 _includes/machine-styles.html delete mode 100644 _includes/machine.html delete mode 100644 _includes/page-scripts.html delete mode 100644 _includes/random-publication.html delete mode 100644 _includes/screenshot.html delete mode 100644 _layouts/blog.html delete mode 100644 _layouts/default.html delete mode 100644 _layouts/page.html delete mode 100644 _layouts/post.html delete mode 100644 _layouts/viewer.html delete mode 100644 _posts/2013-11-20-a-blog-thats-not-a-blog.md delete mode 100644 _posts/2014-01-01-new-year-new-directions.md delete mode 100644 _posts/2014-03-30-running-on-azure.md delete mode 100644 _posts/2014-03-31-browser-compatibility-woes.md delete mode 100644 _posts/2014-04-01-the-latest-in-emulator-technology.md delete mode 100644 _posts/2014-04-12-whats-new-in-1.13.0.md delete mode 100644 _posts/2014-04-14-node-express-safari.md delete mode 100644 _posts/2014-04-30-heading-to-new-york.md delete mode 100644 _posts/2014-05-12-chrome-kicks-butt.md delete mode 100644 _posts/2014-06-14-halt-and-catch-liar.md delete mode 100644 _posts/2014-06-26-more-under-the-hood-changes.md delete mode 100644 _posts/2014-07-30-ega-support.md delete mode 100644 _posts/2014-08-01-pc-tech-journal-1987.md delete mode 100644 _posts/2014-08-28-supporting-the-80286.md delete mode 100644 _posts/2014-09-02-minor-fixes-and-additions.md delete mode 100644 _posts/2014-09-13-the-ibm-pc-at-alive-and-booting.md delete mode 100644 _posts/2014-09-30-pcjs-coding-conventions.md delete mode 100644 _posts/2014-10-12-pcjs-released-on-github.md delete mode 100644 _posts/2014-10-13-the-8mhz-ibm-pc-at-5170.md delete mode 100644 _posts/2014-10-17-improved-support-for-pc-at-machines.md delete mode 100644 _posts/2014-10-23-improved-pc-dos-700-support.md delete mode 100644 _posts/2014-10-26-javascript-negativity.md delete mode 100644 _posts/2014-10-28-limited-support-for-xdf-disk-images.md delete mode 100644 _posts/2014-12-04-os2-10.md delete mode 100644 _posts/2014-12-05-canvas-performance-and-contenteditable.md delete mode 100644 _posts/2015-01-17-pcjs-uncompiled.md delete mode 100644 _posts/2015-01-28-new-pcjs-control-panel.md delete mode 100644 _posts/2015-02-22-compaq-deskpro-386.md delete mode 100644 _posts/2015-02-23-early-80386-cpus.md delete mode 100644 _posts/2015-03-26-javascript-idiosyncrasies.md delete mode 100644 _posts/2015-04-16-compaq-deskpro-386-update.md delete mode 100644 _posts/2015-05-20-pc-tech-journal-collection.md delete mode 100644 _posts/2015-06-01-debugging-the-ibm-vga-rom.md delete mode 100644 _posts/2015-06-05-the-strange-case-of-the-ega-graphics-scroll-bug.md delete mode 100644 _posts/2015-07-17-windows-95.md delete mode 100644 _posts/2015-09-21-windows-95-in-your-web-browser.md delete mode 100644 _posts/2015-10-27-windows-95-and-early-80386-cpus.md delete mode 100644 _posts/2015-12-10-rebuilding-the-pcjs-website.md delete mode 100644 _posts/2015-12-27-revisiting-os2.md delete mode 100644 _posts/2016-01-23-early-os2-artifacts.md delete mode 100644 _posts/2016-02-08-super-bowl-winner-pcjs.md delete mode 100644 _posts/2016-02-17-saving-disks-and-machines.md delete mode 100644 _posts/2016-02-24-remembering-compaq.md delete mode 100644 _posts/2016-03-06-touching-windows.md delete mode 100644 _posts/2016-03-12-demos-of-windows386-and-windows-3x.md delete mode 100644 _posts/2016-04-30-the-intel-8080-cpu.md delete mode 100644 _posts/2016-05-04-the-sharpening.md delete mode 100644 _sass/_base.scss delete mode 100644 _sass/_layout.scss delete mode 100644 _sass/_syntax-highlighting.scss delete mode 100644 blog/README.md delete mode 100644 blog/images/avd-tablet.jpg delete mode 100644 blog/images/googlewhack.jpg delete mode 100644 blog/images/halt-and-catch-liar-small.jpg delete mode 100644 blog/images/halt-and-catch-liar.jpg delete mode 100644 blog/images/iisnode-logs.jpg delete mode 100644 blog/images/ipad-solitaire-small.jpg delete mode 100644 blog/images/ipad-solitaire.jpg delete mode 100644 blog/images/os2-debugger.jpg delete mode 100644 blog/images/si1978-fuzzier.png delete mode 100644 blog/images/si1978-sharper.png delete mode 100644 blog/images/win101-array-demo-small.jpg delete mode 100644 blog/images/win101-array-demo.jpg delete mode 100644 index.md delete mode 100644 robots.txt diff --git a/404.md b/404.md deleted file mode 100644 index 5e3d75792..000000000 --- a/404.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -layout: page -title: Page Not Found -permalink: /404.html ---- - -{% include random-publication.html text="This is not the page you are looking for. You found a piece of paper instead." %} diff --git a/CNAME b/CNAME deleted file mode 100644 index 6283f0c5a..000000000 --- a/CNAME +++ /dev/null @@ -1 +0,0 @@ -www.pcjs.org diff --git a/Gemfile b/Gemfile deleted file mode 100644 index b002ff5fd..000000000 --- a/Gemfile +++ /dev/null @@ -1,4 +0,0 @@ -source 'https://rubygems.org' -gem 'github-pages' -gem 'jekyll-sitemap' -gem 'jekyll-redirect-from' diff --git a/_config.yml b/_config.yml deleted file mode 100644 index 141fb80be..000000000 --- a/_config.yml +++ /dev/null @@ -1,128 +0,0 @@ -# Site settings - -title: "PCjs Machines" -email: Jeff@pcjs.org -description: > - PCjs: Home of the original IBM PC emulator in a browser. - Classic computer simulations in JavaScript, including the IBM PC and other x86-based machines, 6502-based - machines such as the Ohio Scientific Challenger 1P, and 8080-based machines such as Space Invaders. - Includes an archive of historical PC software and publications. -baseurl: "" # "/pcjs" when using http://jeffpar.github.io or "" when using http://www.pcjs.org -url: "http://www.pcjs.org" # "http://jeffpar.github.io" or "http://www.pcjs.org" -twitter_username: jeffpar -github_username: jeffpar - -left_brace: "{" -right_brace: "}" -encoding: UTF-8 - -# Build settings - -exclude: ["**/index.html", "**/archive", "**/c64", "logs", "node_modules", "projects", "src", "**/src", "tmp", "**/tmp", "videos", "web", ".git", ".idea"] -markdown: kramdown -kramdown: - input: GFM - hard_wrap: false - -gems: - - jekyll-sitemap - - jekyll-redirect-from - -# Custom site settings - -pcjs: - domain: pcjs.org # whereas site.url is used for linking purposes, site.pcjs.domain is used for display purposes - version: 1.23.2 # IMPORTANT: keep pcjs.version in sync with package.json:version - compiled: true # by default, the compiled pcjs.version scripts will be used (eg, pcx86.js or pcx86-dbg.js) - c1p_scripts: # if pcjs.compiled is false, the following scripts will be included instead, in the order listed - - /modules/shared/lib/defines.js - - /modules/shared/lib/nodebug.js - - /modules/shared/lib/dumpapi.js - - /modules/shared/lib/reportapi.js - - /modules/shared/lib/strlib.js - - /modules/shared/lib/usrlib.js - - /modules/shared/lib/weblib.js - - /modules/shared/lib/component.js - - /modules/c1pjs/lib/defines.js - - /modules/c1pjs/lib/panel.js - - /modules/c1pjs/lib/cpu.js - - /modules/c1pjs/lib/rom.js - - /modules/c1pjs/lib/ram.js - - /modules/c1pjs/lib/keyboard.js - - /modules/c1pjs/lib/video.js - - /modules/c1pjs/lib/serial.js - - /modules/c1pjs/lib/disk.js - - /modules/c1pjs/lib/debugger.js - - /modules/c1pjs/lib/computer.js - - /modules/shared/lib/embed.js - pcx86_scripts: - - /modules/shared/lib/defines.js - - /modules/shared/lib/nodebug.js - - /modules/shared/lib/diskapi.js - - /modules/shared/lib/dumpapi.js - - /modules/shared/lib/reportapi.js - - /modules/shared/lib/userapi.js - - /modules/shared/lib/strlib.js - - /modules/shared/lib/usrlib.js - - /modules/shared/lib/weblib.js - - /modules/shared/lib/component.js - - /modules/pcx86/lib/defines.js - - /modules/pcx86/lib/x86.js - - /modules/pcx86/lib/interrupts.js - - /modules/pcx86/lib/messages.js - - /modules/pcx86/lib/panel.js - - /modules/pcx86/lib/bus.js - - /modules/pcx86/lib/memory.js - - /modules/pcx86/lib/cpu.js - - /modules/pcx86/lib/x86seg.js - - /modules/pcx86/lib/x86cpu.js - - /modules/pcx86/lib/x86fpu.js - - /modules/pcx86/lib/x86func.js - - /modules/pcx86/lib/x86help.js - - /modules/pcx86/lib/x86mods.js - - /modules/pcx86/lib/x86ops.js - - /modules/pcx86/lib/x86op0f.js - - /modules/pcx86/lib/chipset.js - - /modules/pcx86/lib/rom.js - - /modules/pcx86/lib/ram.js - - /modules/pcx86/lib/keyboard.js - - /modules/pcx86/lib/video.js - - /modules/pcx86/lib/parallelport.js - - /modules/pcx86/lib/serialport.js - - /modules/pcx86/lib/mouse.js - - /modules/pcx86/lib/disk.js - - /modules/pcx86/lib/fdc.js - - /modules/pcx86/lib/hdc.js - - /modules/pcx86/lib/debugger.js - - /modules/pcx86/lib/state.js - - /modules/pcx86/lib/computer.js - - /modules/shared/lib/embed.js - - /modules/shared/lib/save.js - pc8080_scripts: - - /modules/shared/lib/defines.js - - /modules/shared/lib/dumpapi.js - - /modules/shared/lib/reportapi.js - - /modules/shared/lib/userapi.js - - /modules/shared/lib/strlib.js - - /modules/shared/lib/usrlib.js - - /modules/shared/lib/weblib.js - - /modules/shared/lib/component.js - - /modules/pc8080/lib/defines.js - - /modules/pc8080/lib/cpudef.js - - /modules/pc8080/lib/messages.js - - /modules/pc8080/lib/panel.js - - /modules/pc8080/lib/bus.js - - /modules/pc8080/lib/memory.js - - /modules/pc8080/lib/cpu.js - - /modules/pc8080/lib/cpustate.js - - /modules/pc8080/lib/cpuops.js - - /modules/pc8080/lib/chipset.js - - /modules/pc8080/lib/rom.js - - /modules/pc8080/lib/ram.js - - /modules/pc8080/lib/keyboard.js - - /modules/pc8080/lib/video.js - - /modules/pc8080/lib/debugger.js - - /modules/pc8080/lib/state.js - - /modules/pc8080/lib/computer.js - - /modules/shared/lib/embed.js - - /modules/shared/lib/save.js diff --git a/_developer.yml b/_developer.yml deleted file mode 100644 index 5e7352f02..000000000 --- a/_developer.yml +++ /dev/null @@ -1,4 +0,0 @@ -developer: true -url: "http://localhost:4000" -pcjs: - compiled: false diff --git a/_includes/breadcrumbs.html b/_includes/breadcrumbs.html deleted file mode 100644 index 522446d67..000000000 --- a/_includes/breadcrumbs.html +++ /dev/null @@ -1,11 +0,0 @@ -{% capture page_url_without_index_html %}{{ page.url | remove: "/index.html" | remove: "/404.html" }}{% endcapture %} -{% assign splitted_url_parts = page_url_without_index_html | split: '/' %} -{% capture forLoopMaxInt %}{{ splitted_url_parts.size | minus:1 }}{% endcapture %} -{% for i in (1..forLoopMaxInt) %} - {% capture url %}{{ url }}{{ splitted_url_parts[i] }}/{% endcapture %} - {% capture path %}{{ path }}\{{ splitted_url_parts[i] | upcase }}{% endcapture %} - {% if splitted_url_parts[i] == "blog" %} - {% break %} - {% endif %} -{% endfor %} -

Directory of C:\PCJS.ORG{{ path }}

diff --git a/_includes/footer.html b/_includes/footer.html deleted file mode 100644 index e92272433..000000000 --- a/_includes/footer.html +++ /dev/null @@ -1,61 +0,0 @@ - diff --git a/_includes/google-analytics.html b/_includes/google-analytics.html deleted file mode 100644 index 6b78ba96f..000000000 --- a/_includes/google-analytics.html +++ /dev/null @@ -1,3 +0,0 @@ -{% unless site.developer %} - -{% endunless %} diff --git a/_includes/head.html b/_includes/head.html deleted file mode 100644 index 85288e0a5..000000000 --- a/_includes/head.html +++ /dev/null @@ -1,23 +0,0 @@ - - - - - {% if page.title %}PCjs: {{ page.title }}{% else %}{{ site.title }}{% endif %} - - - - - - - - - - - - - - - - - {% include machine-styles.html %} - diff --git a/_includes/header.html b/_includes/header.html deleted file mode 100644 index 78e86eeec..000000000 --- a/_includes/header.html +++ /dev/null @@ -1,32 +0,0 @@ - diff --git a/_includes/image.html b/_includes/image.html deleted file mode 100644 index b32bab7f4..000000000 --- a/_includes/image.html +++ /dev/null @@ -1 +0,0 @@ -[]({{ include.link }} "{{ include.alt }}") diff --git a/_includes/machine-build.html b/_includes/machine-build.html deleted file mode 100644 index 15a1e8bf6..000000000 --- a/_includes/machine-build.html +++ /dev/null @@ -1 +0,0 @@ -
diff --git a/_includes/machine-engines.html b/_includes/machine-engines.html deleted file mode 100644 index f35dc8290..000000000 --- a/_includes/machine-engines.html +++ /dev/null @@ -1,146 +0,0 @@ -{% comment %} - -As discussed in /modules/markout/lib/markout.js, our Node web server recognizes the following machine properties -in the Front Matter of our Markdown documents, for compatibility with the Jekyll web server: - - 'id' (eg, "ibm5150") - 'name' (eg, "IBM PC (Model 5150) with Monochrome Display") - 'type' (eg, "c1p", "pcx86", "pc8080") - 'debugger' (default is false) - 'config' (default is "machine.xml") - 'template' (default is "machine.xsl") - 'debug' (default is false; true enables asserts and is very slow) - 'uncompiled' (default is false; true is useful for debugging but slow) - 'parms' (stringified object that collects additional machine properties listed below) - -Note that if you want BACKTRACK support enabled in a machine, both 'debugger' and 'uncompiled' must be true. -Also note that while multiple machines ARE supported on a single page, there are some limitations; for example, -loading two or more machines of the same 'type' but with different 'debug', 'uncompiled', or 'debugger' settings -may not work as desired. - -The following optional machine properties will be added to the 'parms' property: - - 'autoMount' (eg, {"A":{"name":"OS/2 FOOTBALL (v7.68.17)","path":"/disks/pc/os2/misc/football/FOOTBALL-76817.json"}}) - 'autoPower' (eg, true) - 'autoStart' (eg, true) - 'drives' (eg, '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pc/fixed/68mb/win95.json"}]') - 'state' (eg, "state.json") - 'messages' (eg, "fault") - -Finally, all our JavaScript components expect multi-word property names to use camelCase, so we automatically convert -any lower-case forms to camelCase, both here and in markout.js and components.xsl, in case we've gotten sloppy in any -of our Markdown or XML documents. Examples: 'automount' becomes 'autoMount', 'autopower' becomes 'autoPower', etc. - -{% endcomment %} -{% for machine in page.machines %} - {% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %} - {% if machine_type != "c1p" %} - {% capture machine_app %}{{ machine_type }}{% endcapture %} - {% else %} - {% capture machine_app %}{{ machine_type }}js{% endcapture %} - {% endif %} - {% if machine.debugger %} - {% capture machine_file %}{{ machine_type }}-dbg{% endcapture %} - {% assign machine_debugger = true %} - {% else %} - {% capture machine_file %}{{ machine.type }}{% endcapture %} - {% if machine.type != machine_type %} - {% assign machine_debugger = true %} - {% else %} - {% assign machine_debugger = false %} - {% endif %} - {% endif %} - {% capture machine_embed %}embed{{ machine_type | upcase | replace:"X86","x86" }}{% endcapture %} - {% if machine.automount != nil %} - {% if machine.automount == "" %} - {% assign machine_autoMount = "{}" %} - {% else %} - {% capture machine_autoMount %}{{ machine.automount|jsonify }}{% endcapture %} - {% endif %} - {% else %} - {% if machine.autoMount == "" %} - {% assign machine_autoMount = "{}" %} - {% else %} - {% capture machine_autoMount %}{{ machine.autoMount|jsonify }}{% endcapture %} - {% endif %} - {% endif %} - {% if machine.autopower != nil %} - {% capture machine_autoPower %},autoPower:{{ machine.autopower }}{% endcapture %} - {% elsif machine.autoPower != nil %} - {% capture machine_autoPower %},autoPower:{{ machine.autoPower }}{% endcapture %} - {% else %} - {% assign machine_autoPower = "" %} - {% endif %} - {% if machine.autostart != nil %} - {% capture machine_autoStart %},autoStart:{{ machine.autostart }}{% endcapture %} - {% elsif machine.autoStart != nil %} - {% capture machine_autoStart %},autoStart:{{ machine.autoStart }}{% endcapture %} - {% else %} - {% assign machine_autoStart = "" %} - {% endif %} - {% unless machine.config %} - {% assign machine_config = "machine.xml" %} - {% else %} - {% assign machine_config = machine.config %} - {% endunless %} - {% if machine.drives != nil %} - {% if machine.drives == "" %} - {% assign machine_drives = ",drives:[]" %} - {% else %} - {% capture machine_drives %},drives:{{ machine.drives }}{% endcapture %} - {% endif %} - {% else %} - {% assign machine_drives = "" %} - {% endif %} - {% unless machine.template %} - {% assign machine_template = "" %} - {% else %} - {% assign machine_template = machine.template %} - {% endunless %} - {% capture machine_parms %}{{ site.left_brace }}autoMount:{{ machine_autoMount }}{{ machine_autoPower }}{{ machine_autoStart }}{{ machine_drives }},state:"{{ machine.state }}",messages:"{{ machine.messages }}"{{ site.right_brace }}{% endcapture %} - {% if site.pcjs.compiled == true and machine.uncompiled != true %} - {% capture machine_script %}{% endcapture %} - {% unless machine_scripts contains machine_script %} - {{ machine_script }} - {% endunless %} - {% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %} - {% if machine_template == "" %} - {% capture machine_template %}{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/components.xsl{% endcapture %} - {% endif %} - {% else %} - {% if machine_type == "c1p" %}{% assign array_scripts = site.pcjs.c1p_scripts %}{% endif %} - {% if machine_type == "pcx86" %}{% assign array_scripts = site.pcjs.pcx86_scripts %}{% endif %} - {% if machine_type == "pc8080" %}{% assign array_scripts = site.pcjs.pc8080_scripts %}{% endif %} - {% for script in array_scripts %} - {% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true %} - {% capture machine_script %}{% endcapture %} - {% unless machine_scripts contains machine_script %} - {{ machine_script }} - {% if script contains "shared/lib/defines.js" %} - {% if site.pcjs.private %} - {{ machine_script | replace:"defines.js","private.js" }} - {% endif %} - {% endif %} - {% if script contains "js/lib/defines.js" %} - {% if machine_debugger != true %} - {{ machine_script | replace:"defines.js","nodebugger.js" }} - {% endif %} - {% endif %} - {% endunless %} - {% capture machine_scripts %}{{ machine_scripts }}{{ machine_script }}{% endcapture %} - {% endif %} - {% endfor %} - {% if machine_template == "" %} - {% if machine_app != "c1pjs" %} - {% capture machine_template %}{{ site.baseurl }}/modules/shared/templates/components.xsl{% endcapture %} - {% else %} - {% capture machine_template %}{{ site.baseurl }}/modules/{{ machine_app }}/templates/components.xsl{% endcapture %} - {% endif %} - {% endif %} - {% endif %} - - {% if page.build %} - - - {% endif %} -{% endfor %} diff --git a/_includes/machine-styles.html b/_includes/machine-styles.html deleted file mode 100644 index 1f5ba10e0..000000000 --- a/_includes/machine-styles.html +++ /dev/null @@ -1,21 +0,0 @@ -{% for machine in page.machines %} - {% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %} - {% if machine_type != "c1p" %} - {% capture machine_app %}{{ machine_type }}{% endcapture %} - {% else %} - {% capture machine_app %}{{ machine_type }}js{% endcapture %} - {% endif %} - {% unless site.pcjs.compiled == true and machine.uncompiled != true %} - {% if machine_type != "c1p" %} - {% capture machine_style %}{{ site.baseurl }}/modules/shared/templates/components.css{% endcapture %} - {% else %} - {% capture machine_style %}{{ site.baseurl }}/modules/{{ machine_app }}/templates/components.css{% endcapture %} - {% endif %} - {% else %} - {% capture machine_style %}{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/components.css{% endcapture %} - {% endunless %} - {% unless machine_styles contains machine_style %} - - {% endunless %} - {% capture machine_styles %}{{ machine_styles }}{{ machine_style }}{% endcapture %} -{% endfor %} diff --git a/_includes/machine.html b/_includes/machine.html deleted file mode 100644 index 7b1e4619e..000000000 --- a/_includes/machine.html +++ /dev/null @@ -1,10 +0,0 @@ -
- {% assign machine_name = "PCjs: The Virtual IBM PC" %} - {% for machine in page.machines %} - {% if include.id == machine.id and machine.name%} - {% assign machine_name = machine.name %} - {% break %} - {% endif %} - {% endfor %} - [{{ machine_name }}] -
diff --git a/_includes/page-scripts.html b/_includes/page-scripts.html deleted file mode 100644 index e6d675b08..000000000 --- a/_includes/page-scripts.html +++ /dev/null @@ -1,8 +0,0 @@ -{% comment %} - -Used by pages like the one in /api/v1/dump/ to simulate a client-side API. - -{% endcomment %} -{% for script in page.scripts %} - -{% endfor %} diff --git a/_includes/random-publication.html b/_includes/random-publication.html deleted file mode 100644 index 87f225591..000000000 --- a/_includes/random-publication.html +++ /dev/null @@ -1,42 +0,0 @@ -{% assign random_id = "random" %} -
- diff --git a/_includes/screenshot.html b/_includes/screenshot.html deleted file mode 100644 index fa7ef75f2..000000000 --- a/_includes/screenshot.html +++ /dev/null @@ -1,16 +0,0 @@ -{% assign include_width = "" %} -{% assign include_height = "" %} -{% if include.width %} - {% capture include_width %} width="{{ include.width }}"{% endcapture %} -{% endif %} -{% if include.height %} - {% capture include_height %} height="{{ include.height }}"{% endcapture %} -{% endif %} -
-
- - {{ include.title }} - -
- {{ include.title }} -
diff --git a/_layouts/blog.html b/_layouts/blog.html deleted file mode 100644 index d43798d8f..000000000 --- a/_layouts/blog.html +++ /dev/null @@ -1,26 +0,0 @@ ---- -layout: default ---- - -
- - {{ content }} - -

Posts

- - - -

subscribe via RSS

- -
diff --git a/_layouts/default.html b/_layouts/default.html deleted file mode 100644 index 66d847c16..000000000 --- a/_layouts/default.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - {% include head.html %} - - - - {% include header.html %} - -
-
- {{ content }} -
-
- - {% include footer.html %} - - {% include machine-engines.html %} - - {% include page-scripts.html %} - - {% include google-analytics.html %} - - - - diff --git a/_layouts/page.html b/_layouts/page.html deleted file mode 100644 index f8de36d10..000000000 --- a/_layouts/page.html +++ /dev/null @@ -1,16 +0,0 @@ ---- -layout: default ---- -
- - {% if page.display_title %} -
-

{{ page.title }}

-
- {% endif %} - -
- {{ content }} -
- -
diff --git a/_layouts/post.html b/_layouts/post.html deleted file mode 100644 index a2b4e52fe..000000000 --- a/_layouts/post.html +++ /dev/null @@ -1,15 +0,0 @@ ---- -layout: default ---- -
- -
-

{{ page.title }}

- -
- -
- {{ content }} -
- -
diff --git a/_layouts/viewer.html b/_layouts/viewer.html deleted file mode 100644 index 2d185d246..000000000 --- a/_layouts/viewer.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - {% include head.html %} - - - - {% include header.html %} - -
-
- {{ content }} -
-
- -
-
- -
-
- -
-
-
-
- - {% include footer.html %} - - - - {% include google-analytics.html %} - - - - diff --git a/_posts/2013-11-20-a-blog-thats-not-a-blog.md b/_posts/2013-11-20-a-blog-thats-not-a-blog.md deleted file mode 100644 index ac6a73677..000000000 --- a/_posts/2013-11-20-a-blog-thats-not-a-blog.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -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. - -Originally, the site was a smattering of HTML files, along with some XML files that I was rendering as HTML -using some simple XSL stylesheets. However, I was tired of having one set of files for the website to explain -things and a different set of files on [GitHub](http://github.com) that explained other things -- many -of those things being the SAME things. - -So this month, I decided to eliminate all the HTML files. As you browse the site, you're simply navigating -folders from the **GitHub** project and reading the project's **README.md** files. - -There's a single PHP script responsible for transforming a folder's default document (either **README.md** -or **machine.xml**) to HTML, as well as displaying the current directory across the top and a directory listing -down the left-hand side. - -The same script provides support for a subset of the [Markdown](http://daringfireball.net/projects/markdown/) -syntax, which is more than sufficient to handle all the site's **README.md** files. I probably should -have used a third-party Markdown library, but this was more educational, and it was easy to add extra features, -like the ability to embed JavaScript machines with a single Markdown-style link; eg: - - [IBM PC](/devices/pcx86/machine/5150/mda/64kb/ "PCjs:ibm5150") - -The script takes care of the rest, adding the appropriate stylesheets and PCjs scripts automatically. - -I had more grandiose plans, including a command-line prompt written in JavaScript that would allow you to -navigate the site exactly as you would an IBM PC hard drive from a "DOS prompt", and I may try something -like that later, but don't hold your breath. - -I've tried to improve the organization of all the [Machine Configuration Files](/devices/pcx86/machine/) as well. -The variety of configurations was getting out of hand. It's a bit tidier now, but there's still room for -improvement. - -My workflow is improving, too. I'm more comfortable with [GitHub](http://github.com) now, -and I recently switched from Eclipse to JetBrains' [WebStorm](http://www.jetbrains.com/webstorm) (well, -actually [PhpStorm](http://www.jetbrains.com/phpstorm), since it's a superset of WebStorm, although I did start -with WebStorm), and the new development environment is feeling pretty good now. I've had zero problems with -[JetBrains](http://www.jetbrains.com) products and I'm seriously impressed with their quality and completeness, -so I have no qualms about moving from the "free" Eclipse platform to the $99 PhpStorm IDE. - -The nice thing about the new GitHub-centric approach is that it's easy to "push" changes to both the repository -and the website. I update one or more **README.md** files, "Commit and Push" from the IDE, then "pull" from GitHub -on the web server. - -This so-called blog is more of the same: **README.md** files in a series of folders. The only question now: -will this actually evolve into a series...? - -*[@jeffpar](http://twitter.com/jeffpar)* -*November 20, 2013* diff --git a/_posts/2014-01-01-new-year-new-directions.md b/_posts/2014-01-01-new-year-new-directions.md deleted file mode 100644 index 0758c2455..000000000 --- a/_posts/2014-01-01-new-year-new-directions.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -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; -- Deciding whether to separate PCjs from C1Pjs for the new web site, or simply make PCjs.org a mirror of jsmachines.net; -- Deciding how best (or even whether) to accomodate PCjs running from both **node** and **non-node** web servers. - -I guess we'll learn more as the year progresses. - -*[@jeffpar](http://twitter.com/jeffpar)* -*January 20, 2014* diff --git a/_posts/2014-03-30-running-on-azure.md b/_posts/2014-03-30-running-on-azure.md deleted file mode 100644 index 02521f5ec..000000000 --- a/_posts/2014-03-30-running-on-azure.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -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. - -Unfortunately, because Azure's underlying server technology is Windows-based (IIS), some of the same Windows/Unix -portability problems that have plagued us for decades still plague us today: **carriage returns** and **backslashes**. - -Even though all PCjs text files in my project contain only linefeeds, IIS would serve them up with CR/LF -instead. I first noticed this on the client side, when an XML file retrieved via *XMLHttpRequest()* came back -full of CR/LFs, and later on the server side, when *fs.readFile()* returned a Markdown file filled with CR/LFs. - -I wondered if the CR/LF transformation had happened when Azure pulled all my files from GitHub, because -while I can understand some whitespace inconsistencies across web servers, I would never expect file system calls -on the server to modify file contents. - -I finally confirmed that the files were indeed modified on the server, by using Azure's FTP browser. For example, -[us83-buttons-minimal.xml](/devices/pcx86/keyboard/us83-buttons-minimal.xml) is currently 622 bytes locally, but on the -Azure server, the reported size is 632 bytes -- one extra CR for each of the file's 10 lines. After a little more -digging, I [learned something new](http://git-scm.com/book/ch7-1.html#Formatting-and-Whitespace) about **Git**: it -has a setting called `core.autocrlf` which, for me on OS X, defaults to `input` (meaning "convert CR/LF to LF on commit -but do NOT convert LF back to CR/LF on check-out"). But Azure apparently sets this to `true`, causing all LFs to be -converted to CR/LF. - -Regarding slashes, even when path components contained only slashes, *path.join()* would return paths with -backslashes. And unfortunately, this behavior varies from Node module to module. For example, I use the NPM -[glob](https://www.npmjs.org/package/glob) module, and even when the input path to *glob()* contains backslashes, -its output paths do not. - -In the process of fixing those portability issues, I also had some trouble getting Azure logging to work as -documented. Setting `loggingEnabled: true` in **/IISNode.yml** would generate logs in **/site/wwwroot/iisnode/**, -but the logs were numerous and poorly organized. - -And the Azure command-line tool that was *supposed* to enable real-time log-streaming to the console: - - azure site log tail pcjs - -would happily report: - - Welcome, you are now connected to log-streaming service - -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](/blog/images/iisnode-logs.jpg) - -Sigh. But at least the site is up and fully operational now. - -*[@jeffpar](http://twitter.com/jeffpar)* -*March 30, 2014* diff --git a/_posts/2014-03-31-browser-compatibility-woes.md b/_posts/2014-03-31-browser-compatibility-woes.md deleted file mode 100644 index a58e37b90..000000000 --- a/_posts/2014-03-31-browser-compatibility-woes.md +++ /dev/null @@ -1,47 +0,0 @@ ---- -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. - -Not that anyone ever made such a promise. - -Specifically, I'm talking about DOM events. Take the HTML5 <canvas> element, for example. If I give -it a `contenteditable="true"` attribute, it will play nicely with my JavaScript app in a Mobile Safari browser, -by popping up the device's soft keyboard in response to the canvas element receiving focus (ie, when you tap on it). - -The Silk browser on a Kindle Fire, however, is another story -- it acts like it has no idea what `contenteditable` -means. Even if I display an actual <input> text field alongside the <canvas>, and attach all the same -input event handlers to the text field instead of the canvas, the Kindle Fire's soft keyboard will pop up, but my -input event handlers still won't fire. - -I've done what testing I can with the Android SDK and the "Android Virtual Device Manager", and in general, support -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](/blog/images/avd-tablet.jpg) - ---- - -Here's another issue I've yet to resolve. - -When Apple released iOS 7.0, PCjs went from being a rock-solid web application on -2nd/3rd/4th-generation iPads to a very flaky web application. It's still rock-solid on 5th-generation iPads -(the iPad Air and iPad Mini w/Retina Display), and so I suspect a bug in Apple's JavaScript engine that's specific -to their older A5 processor. - -It may be possible to work around the bug, but I haven't yet isolated exactly what code -sequence(s) are failing. For now, this is the most serious unresolved PCjs bug I'm aware of. - ---- - -If you're having a problem (or trouble with a device) that I've not already mentioned, [let me know](mailto:Jeff@pcjs.org). -Thanks. - -*[@jeffpar](http://twitter.com/jeffpar)* -*March 31, 2014* diff --git a/_posts/2014-04-01-the-latest-in-emulator-technology.md b/_posts/2014-04-01-the-latest-in-emulator-technology.md deleted file mode 100644 index a33a6b948..000000000 --- a/_posts/2014-04-01-the-latest-in-emulator-technology.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -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. - -Check out the ALPHA release demo below. - - - -Disclaimer: InternetJS may not be suitable for everyone. Ask your doctor if InternetJS is right for you. Side-effects may include: - -- Increased awareness -- Loss of appetite after eating large meals -- Inability to forget things you never wanted to remember - -*[@jeffpar](http://twitter.com/jeffpar)* -*April 1, 2014* diff --git a/_posts/2014-04-12-whats-new-in-1.13.0.md b/_posts/2014-04-12-whats-new-in-1.13.0.md deleted file mode 100644 index 811ca4011..000000000 --- a/_posts/2014-04-12-whats-new-in-1.13.0.md +++ /dev/null @@ -1,26 +0,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. -Conversely, a PCjs machine XML file can refer back to the manifest, to obtain a list of disk images. - -Here are some [Demos](/apps/pc/) of "ready-to-run" apps on [PCjs](/docs/about/). - -There have been lots of server-side changes recently, including API improvements that make it easy (well, *easier*) -to dynamically create diskette images from a list of files, or even an entire folder (including all subfolders), -as long as the total size of all the files will fit on a PCjs-supported diskette image. Support for creating hard disk -images is still on the "TODO" list (the original **convdisk** PHP script supported hard disk images, but that functionality -hasn't been ported to the newer **diskdump** Node module yet). - -Almost nothing has changed in the PCjs client-side code (which is where the emulator runs), except for changes to use -the new **diskdump** API. - -*[@jeffpar](http://twitter.com/jeffpar)* -*April 12, 2014* diff --git a/_posts/2014-04-14-node-express-safari.md b/_posts/2014-04-14-node-express-safari.md deleted file mode 100644 index d9f395245..000000000 --- a/_posts/2014-04-14-node-express-safari.md +++ /dev/null @@ -1,156 +0,0 @@ ---- -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). - -[{{ 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/pcx86/machine/5150/mda/64kb/machine.xml) file that's also embedded on the -[{{ 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: - - Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - Cache-Control: max-age=0 - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14 - -and the response would look like: - - Date: Mon, 14 Apr 2014 22:11:20 GMT - Last-Modified: Sun, 13 Apr 2014 01:59:06 GMT - Server: Apache/2.2.26 (Unix) DAV/2 PHP/5.4.24 mod_ssl/2.2.26 OpenSSL/0.9.8y - Etag: "37a10b3-492-4f6e2e96b2e80" - Content-Type: text/xml - Connection: Keep-Alive - Accept-Ranges: bytes - Keep-Alive: timeout=5, max=100 - Content-Length: 1170 - -with a status code of 200 ("OK"). And no matter how many times I hit Safari's Reload button, the response was the same. - -Now with Node+Express, the same exact request would look like: - - Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14 - -with a response of: - - Date: Mon, 14 Apr 2014 22:16:42 GMT - Etag: "1170-1397354346000" - Last-Modified: Sun, 13 Apr 2014 01:59:06 GMT - X-Powered-By: Express - Content-Type: application/xml - Cache-Control: public, max-age=0 - Connection: keep-alive - Accept-Ranges: bytes - Content-Length: 1170 - -HOWEVER, as soon as I used Safari's Back button to return to the home page, and then pressed the Forward button to return to -the XML file, the XML request changed to: - - Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 - Cache-Control: max-age=0 - If-None-Match: "1170-1397354346000" - If-Modified-Since: Sun, 13 Apr 2014 01:59:06 GMT - User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14 - -with a response of 304 ("Not Modified") and the following response headers: - - Date: Mon, 14 Apr 2014 22:18:26 GMT - Cache-Control: public, max-age=0 - Etag: "1170-1397354346000" - Last-Modified: Sun, 13 Apr 2014 01:59:06 GMT - Connection: keep-alive - Accept-Ranges: bytes - X-Powered-By: Express - -And here's where the "blank page" problem occurs: pressing Safari's Reload button. Again, the request looks the same as before, -and the response is still 304 ("Not Modified"), but the page is blank, and the response now looks like: - - Date: Mon, 14 Apr 2014 22:21:15 GMT - Cache-Control: public, max-age=0 - Last-Modified: Sun, 13 Apr 2014 01:59:06 GMT - Connection: keep-alive - Accept-Ranges: bytes - X-Powered-By: Express - Etag: "1170-1397354346000" - -and no matter how many times I press Reload, the response is the same (except for an updated *Date*), and the page is still blank. - -So, here's the kludge I've added to my Express server code, to prevent Safari from displaying blank pages for those XML files: - -{% highlight javascript linenos %} - /* - * The Safari "blank page" problem continues to plague us. Our first work-around was for directory - * "index.html" documents, which we resolved by always sending the document ourselves, along with an - * "ok" (200) response, instead of letting next() handle it, which would result in a "not modified" - * (304) response. - * - * However, the problem also extends to any XML files that we serve to an initial Safari request - * (eg, the machine.xml and manifest.xml files that we style as web pages). Safari includes - * "Cache-Control max-age=0" in the request, and if the response is "Cache-Control public, max-age=0" - * along with a 304 response code, Safari may once again display a blank page. - * - * This problem appears limited to the initial resource request for a particular URL. When these XML - * files are requested by Safari while loading another web page, Safari's caching logic is different - * (eg, it doesn't include the same "Cache-Control" setting). - */ - if (sBaseName == "machine.xml" || sBaseName == "manifest.xml") { - var sAgent = req.headers['user-agent']; - if (sAgent && sAgent.indexOf("Safari/") >= 0 && sAgent.indexOf("Chrome/") < 0 && sAgent.indexOf("OPR/") < 0) { - var sCacheControl = req.headers['cache-control']; - if (sCacheControl && sCacheControl.indexOf("max-age=0") >= 0) { - fs.readFile(sPath, {encoding: "utf8"}, function doneReadFile(err, sData) { - if (err) { - next(); // alternatively: res.status(404).send("Cannot GET " + req.path); - } else { - /* - * HACK: Express may still modify our response, turning our 200 status code into a 304 - * and adding an Etag, unless we ALSO change the req.method from "GET" to something else. - * Supposedly, we could also use app.disable('etag'), but I'm not sure that would prevent - * Express from changing the status code, and I'm tired of testing work-arounds for this - * irritating behavior in Safari. - */ - req.method = "NONE"; - res.set("Content-Type", "application/xml"); - res.status(200).send(sData); - } - }); - return; - } - } - } -{% endhighlight %} - -I should add that this problem wasn't limited to XML files. It's a problem for the first resource requested by -Safari for any URL on the site (eg, URLs that default to "index.html" files). - -I'm also rather surprised that no one yet seems to have figured out exactly what's going on here between Node+Express -and Safari. Or maybe they have, and I haven't been keeping my Node.js config up-to-date. I've tried to avoid changing -too many variables. - -Lots of people have run into this problem. For example, on -[StackOverflow](http://stackoverflow.com/questions/18811286/nodejs-express-cache-and-304-status-code), someone -concluded that the [node-fresh](https://github.com/visionmedia/node-fresh) module should be changed. And for a while, -it was changed, until the change was [reverted](https://github.com/visionmedia/node-fresh/issues/8) -- along with a -lengthy discussion about why the change was wrong and that this was really a bug in Safari. - -This "blank page" behavior may well be a bug in Safari, but that doesn't mean Express server components can't -or shouldn't provide a work-around for that behavior in the meantime. It also seems that some people who decided -this was a bug in Safari did not actually reproduce the bug themselves. - -I don't know the right answer, but I do know that the current situation adversely affects users of other Node-powered -websites, who will probably get blank pages when they shouldn't, and other developers, who must all discover/debug/work-around -this problem on their own. - -*[@jeffpar](http://twitter.com/jeffpar)* -*April 14, 2014* diff --git a/_posts/2014-04-30-heading-to-new-york.md b/_posts/2014-04-30-heading-to-new-york.md deleted file mode 100644 index b76da214a..000000000 --- a/_posts/2014-04-30-heading-to-new-york.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -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. - -And I certainly can't start on "the next BIG thing" now, because I'm heading to New York tomorrow, for [EmpireJS](http://2014.empirejs.org), -my first JavaScript conference *and* my first trip to New York in about 20 years. - -I'm going to the conference partly because it was a great excuse to finally visit New York again (and with the whole family, -since all three of us are computer nerds), but also to get a more up-close-and-personal sense of where this whole JavaScript -renaissance is headed. - -Is it headed for a fiery crash? This recent blog post -("[you have ruined javascript](http://codeofrob.com/entries/you-have-ruined-javascript.html)") -suggests it already has for some people. Is it drowning in the Sea of Endless Proliferation, as this still-relevant two-year-old -[parody](http://www.webmonkey.com/2012/05/jokes-for-nerds-html9-responsive-boilerstrap-js/) implies? Excerpt: - -> *If you’re feeling overwhelmed by the endless proliferation of responsive grids, adaptive images, HTML boilerplates, -CSS frameworks and JavaScript whirligigs then what you need is the HTML9 Responsive Boilerstrap JS.* - -> *To install HTML9 Responsive Boilerstrap JS just “attackclone the grit repo pushmerge, then rubygem the lymphnode js shawarma -module — and presto!”* - -> *If you’re wondering what H9RBS.js actually is, well, you can abandon any hopes of one day being hip. But if you must know, -H9RBS.js is a “flexible, dependency-free, lightweight, device-agnostic, modular, baked-in, component framework MVC library -shoelacestrap to help you kickstart your responsive CSS-based app architecture backbone kitchensink tweetybirds.”* - -Seriously, I'm concerned about how the JavaScript language (rather than the endless procession of frameworks) is going to evolve, -and whether it even can. Two examples: at a high-level, we have Microsoft pushing [TypeScript](http://www.typescriptlang.org/), -and at a much lower level, we have Mozilla pushing [asm.js](http://asmjs.org). And while I like aspects of both those efforts, -I'm relunctant to go very far down either of those paths right now, because I don't want to get suckered. Inevitably, someone will -see a *different* shiny object along another fork in the road, and everyone will chase after that instead. - -Will [EmpireJS](http://2014.empirejs.org) answer any of these big questions? It doesn't really matter. I just expect to learn stuff, -and learning is fun! - -*[@jeffpar](http://twitter.com/jeffpar)* -*April 30, 2014* diff --git a/_posts/2014-05-12-chrome-kicks-butt.md b/_posts/2014-05-12-chrome-kicks-butt.md deleted file mode 100644 index ce7c6727d..000000000 --- a/_posts/2014-05-12-chrome-kicks-butt.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -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?" - -However, at some point during the last couple months, Chrome's performance suddenly jumped through the roof. On my -2.8GHz Intel Core i7 MacBook Pro, Chrome v34.0.1847.131 easily punches through the 120Mhz barrier on a PCjs machine -running PC-DOS 2.00. - -That's roughly a 3x-4x increase over previous versions of Chrome. Safari used to be the performance champ, capable -of running a PCjs machine at a top speed of around 70-80MHz, while Chrome was less than half that, and Firefox was -slower still. - -Chrome has now leap-frogged Safari in a big way, almost doubling Safari's speed. And with Chrome's superior -Developer Tools, Chrome is clearly the "Browser of Choice," whether you're just playing with PCjs or actually -debugging it. - -Firefox is a bit of a disappointment, given all the hoopla over [asm.js](http://asmjs.org/) and other investments -that Mozilla is making. I've taken a "wait-and-see" attitude toward asm.js, because PCjs is hand-coded JavaScript, -and I'm not prepared to build a preprocessor that converts the code to asm.js semantics solely for the benefit of a -single browser. - -Chrome's approach to making regular JavaScript run faster seems to be a winning strategy so far, at least for apps -like PCjs. - -*[@jeffpar](http://twitter.com/jeffpar)* -*May 12, 2014* diff --git a/_posts/2014-06-14-halt-and-catch-liar.md b/_posts/2014-06-14-halt-and-catch-liar.md deleted file mode 100644 index 2a33cb5a8..000000000 --- a/_posts/2014-06-14-halt-and-catch-liar.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -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 -high [IMDb score](http://www.imdb.com/title/tt2543312/), which is currently 8.4 (out of 10). Either AMC has figured -out how to game the system, or viewers are easily turned on by clichés, like the know-it-all Hot Programmer, -the self-assured Sales Guy, and the non-plot-advancing sex that they almost instantly engage in. - -The premise: ex-IBM Sales Guy waltzes into a fictional computer company, smooth-talks his way into a top -marketing position without so much as a resumé, and then immediately risks all, including a huge potential lawsuit -with IBM, because he has dreams of building IBM clones that are "2x fast" at "1/2 price" -- with *handles*! - -And the first thing they must do to achieve this dream is clone the IBM PC ROM BIOS, which the show pretends -was so secret that you couldn't even tell which chips on the IBM PC motherboard contained the ROM. Never mind -that IBM published the entire ROM BIOS listing in their Technical Reference Manual, which also included system -diagrams identifying every chip in the machine. I think if you're going to weave facts into your fiction, -the least you can do is get your facts right. - -And centerpiece of this whole conceit -- the cloning of the IBM PC ROM BIOS. What a farce! Check out this -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](/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. - -Here are some excerpts: - - Initialization - MOV AX,CX ; set up DS - MOV DS,AX - MOV SS,AX ; and SS - LEA AX,BEGINSTACK - MOV SP,AX - MOV AL,OUTINT - ... - TSTART - LEA AX,BEGTRACE - MOV POINT,AX - MOV AL,YES ; TURN TRACE ON - MOV TFLAG,AL - MOV AL,NO ; NOT WRAPPED - MOV WRAP,AL - MOV AX,CS ; CONVERT ADDRESS FOR OUTPUT - LEA SI,LOADCS - CALL HEXPRT - MOV AX,100H - LEA SI,LOADIP - CALL HEXPRT - LEA DX,SIGNIN - MOV AH,9 - INT DOSINT - LEA DX,OUTPUT - MOV AL,OUTPUT (?) - MOV AH,25H ; Set Interrupt Vector - INT DOSINT ; Have DOS place the interrupt... - ... - -This is clearly **NOT** code for a PC ROM BIOS, because no PC BIOS would ever issue a DOS interrupt. -A BIOS is designed to be called *by* DOS, not the other way around. - -This turns out to be code largely copied from a file I found online: [PCTRACE.ASM](http://ftpmirror.your.org/pub/misc/dos/RbbsInABoxVol1No2_640/files/007P/PCTRACE.ZIP-contents/PCTRACE.ASM) - -Another curiosity is that searching for this resulted in a "[Googlewhack](http://en.wikipedia.org/wiki/Googlewhack)" -of sorts: - -![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é. - -*[@jeffpar](http://twitter.com/jeffpar)* -*June 14, 2014* diff --git a/_posts/2014-06-26-more-under-the-hood-changes.md b/_posts/2014-06-26-more-under-the-hood-changes.md deleted file mode 100644 index e6d718aa9..000000000 --- a/_posts/2014-06-26-more-under-the-hood-changes.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -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." - -To that end, there's a new [/pubs/](/pubs/) directory for old documents, and [/disks/pcx86/](/disks/pcx86/) contains -more disk images, with more on the way. I have a TON of old diskette images, and it has taken more time to organize -them and create manifests than I would like. - -*[@jeffpar](http://twitter.com/jeffpar)* -*June 26, 2014* diff --git a/_posts/2014-07-30-ega-support.md b/_posts/2014-07-30-ega-support.md deleted file mode 100644 index 2425209e2..000000000 --- a/_posts/2014-07-30-ega-support.md +++ /dev/null @@ -1,48 +0,0 @@ ---- -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/pcx86/machine/5160/ega/640kb/win101/) in color. Check out our -[Windows 1.01 "Server Array"](/devices/pcx86/machine/5160/ega/640kb/array/) demo. - -[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: - -```xml -