Compare commits
38 changed files with 5 additions and 1813 deletions
7
404.md
7
404.md
|
|
@ -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." %}
|
|
||||||
4
Gemfile
4
Gemfile
|
|
@ -1,4 +0,0 @@
|
||||||
source 'https://rubygems.org'
|
|
||||||
gem 'github-pages'
|
|
||||||
gem 'jekyll-sitemap'
|
|
||||||
gem 'jekyll-redirect-from'
|
|
||||||
203
Gemfile.lock
203
Gemfile.lock
|
|
@ -1,203 +0,0 @@
|
||||||
GEM
|
|
||||||
remote: https://rubygems.org/
|
|
||||||
specs:
|
|
||||||
activesupport (4.2.7)
|
|
||||||
i18n (~> 0.7)
|
|
||||||
json (~> 1.7, >= 1.7.7)
|
|
||||||
minitest (~> 5.1)
|
|
||||||
thread_safe (~> 0.3, >= 0.3.4)
|
|
||||||
tzinfo (~> 1.1)
|
|
||||||
addressable (2.5.0)
|
|
||||||
public_suffix (~> 2.0, >= 2.0.2)
|
|
||||||
coffee-script (2.4.1)
|
|
||||||
coffee-script-source
|
|
||||||
execjs
|
|
||||||
coffee-script-source (1.12.2)
|
|
||||||
colorator (1.1.0)
|
|
||||||
ethon (0.10.1)
|
|
||||||
ffi (>= 1.3.0)
|
|
||||||
execjs (2.7.0)
|
|
||||||
faraday (0.11.0)
|
|
||||||
multipart-post (>= 1.2, < 3)
|
|
||||||
ffi (1.9.17)
|
|
||||||
forwardable-extended (2.6.0)
|
|
||||||
gemoji (3.0.0)
|
|
||||||
github-pages (119)
|
|
||||||
activesupport (= 4.2.7)
|
|
||||||
github-pages-health-check (= 1.3.0)
|
|
||||||
jekyll (= 3.3.1)
|
|
||||||
jekyll-avatar (= 0.4.2)
|
|
||||||
jekyll-coffeescript (= 1.0.1)
|
|
||||||
jekyll-default-layout (= 0.1.4)
|
|
||||||
jekyll-feed (= 0.8.0)
|
|
||||||
jekyll-gist (= 1.4.0)
|
|
||||||
jekyll-github-metadata (= 2.3.1)
|
|
||||||
jekyll-mentions (= 1.2.0)
|
|
||||||
jekyll-optional-front-matter (= 0.1.2)
|
|
||||||
jekyll-paginate (= 1.1.0)
|
|
||||||
jekyll-readme-index (= 0.0.4)
|
|
||||||
jekyll-redirect-from (= 0.12.1)
|
|
||||||
jekyll-relative-links (= 0.2.1)
|
|
||||||
jekyll-sass-converter (= 1.5.0)
|
|
||||||
jekyll-seo-tag (= 2.1.0)
|
|
||||||
jekyll-sitemap (= 0.12.0)
|
|
||||||
jekyll-swiss (= 0.4.0)
|
|
||||||
jekyll-theme-architect (= 0.0.3)
|
|
||||||
jekyll-theme-cayman (= 0.0.3)
|
|
||||||
jekyll-theme-dinky (= 0.0.3)
|
|
||||||
jekyll-theme-hacker (= 0.0.3)
|
|
||||||
jekyll-theme-leap-day (= 0.0.3)
|
|
||||||
jekyll-theme-merlot (= 0.0.3)
|
|
||||||
jekyll-theme-midnight (= 0.0.3)
|
|
||||||
jekyll-theme-minimal (= 0.0.3)
|
|
||||||
jekyll-theme-modernist (= 0.0.3)
|
|
||||||
jekyll-theme-primer (= 0.1.7)
|
|
||||||
jekyll-theme-slate (= 0.0.3)
|
|
||||||
jekyll-theme-tactile (= 0.0.3)
|
|
||||||
jekyll-theme-time-machine (= 0.0.3)
|
|
||||||
jekyll-titles-from-headings (= 0.1.4)
|
|
||||||
jemoji (= 0.8.0)
|
|
||||||
kramdown (= 1.11.1)
|
|
||||||
liquid (= 3.0.6)
|
|
||||||
listen (= 3.0.6)
|
|
||||||
mercenary (~> 0.3)
|
|
||||||
minima (= 2.0.0)
|
|
||||||
nokogiri (= 1.6.8.1)
|
|
||||||
rouge (= 1.11.1)
|
|
||||||
terminal-table (~> 1.4)
|
|
||||||
github-pages-health-check (1.3.0)
|
|
||||||
addressable (~> 2.3)
|
|
||||||
net-dns (~> 0.8)
|
|
||||||
octokit (~> 4.0)
|
|
||||||
public_suffix (~> 2.0)
|
|
||||||
typhoeus (~> 0.7)
|
|
||||||
html-pipeline (2.5.0)
|
|
||||||
activesupport (>= 2)
|
|
||||||
nokogiri (>= 1.4)
|
|
||||||
i18n (0.8.0)
|
|
||||||
jekyll (3.3.1)
|
|
||||||
addressable (~> 2.4)
|
|
||||||
colorator (~> 1.0)
|
|
||||||
jekyll-sass-converter (~> 1.0)
|
|
||||||
jekyll-watch (~> 1.1)
|
|
||||||
kramdown (~> 1.3)
|
|
||||||
liquid (~> 3.0)
|
|
||||||
mercenary (~> 0.3.3)
|
|
||||||
pathutil (~> 0.9)
|
|
||||||
rouge (~> 1.7)
|
|
||||||
safe_yaml (~> 1.0)
|
|
||||||
jekyll-avatar (0.4.2)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-coffeescript (1.0.1)
|
|
||||||
coffee-script (~> 2.2)
|
|
||||||
jekyll-default-layout (0.1.4)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-feed (0.8.0)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-gist (1.4.0)
|
|
||||||
octokit (~> 4.2)
|
|
||||||
jekyll-github-metadata (2.3.1)
|
|
||||||
jekyll (~> 3.1)
|
|
||||||
octokit (~> 4.0, != 4.4.0)
|
|
||||||
jekyll-mentions (1.2.0)
|
|
||||||
activesupport (~> 4.0)
|
|
||||||
html-pipeline (~> 2.3)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-optional-front-matter (0.1.2)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-paginate (1.1.0)
|
|
||||||
jekyll-readme-index (0.0.4)
|
|
||||||
jekyll (~> 3.0)
|
|
||||||
jekyll-redirect-from (0.12.1)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-relative-links (0.2.1)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-sass-converter (1.5.0)
|
|
||||||
sass (~> 3.4)
|
|
||||||
jekyll-seo-tag (2.1.0)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-sitemap (0.12.0)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-swiss (0.4.0)
|
|
||||||
jekyll-theme-architect (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-cayman (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-dinky (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-hacker (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-leap-day (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-merlot (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-midnight (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-minimal (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-modernist (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-primer (0.1.7)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-slate (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-tactile (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-theme-time-machine (0.0.3)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-titles-from-headings (0.1.4)
|
|
||||||
jekyll (~> 3.3)
|
|
||||||
jekyll-watch (1.5.0)
|
|
||||||
listen (~> 3.0, < 3.1)
|
|
||||||
jemoji (0.8.0)
|
|
||||||
activesupport (~> 4.0)
|
|
||||||
gemoji (~> 3.0)
|
|
||||||
html-pipeline (~> 2.2)
|
|
||||||
jekyll (>= 3.0)
|
|
||||||
json (1.8.6)
|
|
||||||
kramdown (1.11.1)
|
|
||||||
liquid (3.0.6)
|
|
||||||
listen (3.0.6)
|
|
||||||
rb-fsevent (>= 0.9.3)
|
|
||||||
rb-inotify (>= 0.9.7)
|
|
||||||
mercenary (0.3.6)
|
|
||||||
mini_portile2 (2.1.0)
|
|
||||||
minima (2.0.0)
|
|
||||||
minitest (5.10.1)
|
|
||||||
multipart-post (2.0.0)
|
|
||||||
net-dns (0.8.0)
|
|
||||||
nokogiri (1.6.8.1)
|
|
||||||
mini_portile2 (~> 2.1.0)
|
|
||||||
octokit (4.6.2)
|
|
||||||
sawyer (~> 0.8.0, >= 0.5.3)
|
|
||||||
pathutil (0.14.0)
|
|
||||||
forwardable-extended (~> 2.6)
|
|
||||||
public_suffix (2.0.5)
|
|
||||||
rb-fsevent (0.9.8)
|
|
||||||
rb-inotify (0.9.8)
|
|
||||||
ffi (>= 0.5.0)
|
|
||||||
rouge (1.11.1)
|
|
||||||
safe_yaml (1.0.4)
|
|
||||||
sass (3.4.23)
|
|
||||||
sawyer (0.8.1)
|
|
||||||
addressable (>= 2.3.5, < 2.6)
|
|
||||||
faraday (~> 0.8, < 1.0)
|
|
||||||
terminal-table (1.7.3)
|
|
||||||
unicode-display_width (~> 1.1.1)
|
|
||||||
thread_safe (0.3.5)
|
|
||||||
typhoeus (0.8.0)
|
|
||||||
ethon (>= 0.8.0)
|
|
||||||
tzinfo (1.2.2)
|
|
||||||
thread_safe (~> 0.1)
|
|
||||||
unicode-display_width (1.1.3)
|
|
||||||
|
|
||||||
PLATFORMS
|
|
||||||
ruby
|
|
||||||
|
|
||||||
DEPENDENCIES
|
|
||||||
github-pages
|
|
||||||
jekyll-redirect-from
|
|
||||||
jekyll-sitemap
|
|
||||||
|
|
||||||
BUNDLED WITH
|
|
||||||
1.11.2
|
|
||||||
200
_config.yml
200
_config.yml
|
|
@ -1,200 +0,0 @@
|
||||||
# Site settings
|
|
||||||
|
|
||||||
source: .
|
|
||||||
destination: ./docs
|
|
||||||
title: "PCjs Machines"
|
|
||||||
email: Jeff@pcjs.org
|
|
||||||
description: >
|
|
||||||
Welcome to PCjs, home of the original IBM PC in a web browser.
|
|
||||||
PCjs provides a variety of computer emulators written in JavaScript, including PCx86 for x86-based machines
|
|
||||||
(up through the 80386), C1Pjs for the 6502-based Ohio Scientific Challenger 1P, PC8080 for 8080-based machines
|
|
||||||
such as Space Invaders and the DEC VT100 Terminal, and PDPjs with support for PDP-10 and PDP-11 machines.
|
|
||||||
PCjs also provides an archive of selected historical PC software, publications, and reference materials.
|
|
||||||
baseurl: ""
|
|
||||||
url: "http://www.pcjs.org"
|
|
||||||
twitter_username: jeffpar
|
|
||||||
github_username: jeffpar
|
|
||||||
|
|
||||||
left_brace: "{"
|
|
||||||
right_brace: "}"
|
|
||||||
encoding: UTF-8
|
|
||||||
|
|
||||||
# Build settings
|
|
||||||
|
|
||||||
exclude: ["index.html", "**/index.html", "bin", "logs", "node_modules", "projects", "src", "tmp", "videos", "web", "**/archive", "**/ecp", "**/c64", "**/private", "**/restricted", "**/src", "**/tmp", "**/unlisted", ".git", ".idea", "/Gemfile", "/Gemfile.lock", "/Gruntfile.js", "/gulpfile.js", "/notes.md", "/server.js", "/*.sh"]
|
|
||||||
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.37.1 # 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/keys.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/parallel.js
|
|
||||||
- /modules/pcx86/lib/serial.js
|
|
||||||
- /modules/pcx86/lib/mouse.js
|
|
||||||
- /modules/pcx86/lib/disk.js
|
|
||||||
- /modules/pcx86/lib/fdc.js
|
|
||||||
- /modules/pcx86/lib/hdc.js
|
|
||||||
- /modules/shared/lib/debugger.js
|
|
||||||
- /modules/pcx86/lib/debugger.js
|
|
||||||
- /modules/pcx86/lib/computer.js
|
|
||||||
- /modules/shared/lib/state.js
|
|
||||||
- /modules/shared/lib/embed.js
|
|
||||||
- /modules/shared/lib/save.js
|
|
||||||
pc8080_scripts:
|
|
||||||
- /modules/shared/lib/defines.js
|
|
||||||
- /modules/shared/lib/nodebug.js
|
|
||||||
- /modules/shared/lib/dumpapi.js
|
|
||||||
- /modules/shared/lib/reportapi.js
|
|
||||||
- /modules/shared/lib/userapi.js
|
|
||||||
- /modules/shared/lib/keys.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/serial.js
|
|
||||||
- /modules/shared/lib/debugger.js
|
|
||||||
- /modules/pc8080/lib/debugger.js
|
|
||||||
- /modules/pc8080/lib/computer.js
|
|
||||||
- /modules/shared/lib/state.js
|
|
||||||
- /modules/shared/lib/embed.js
|
|
||||||
pdp10_scripts:
|
|
||||||
- /modules/shared/lib/defines.js
|
|
||||||
- /modules/shared/lib/nodebug.js
|
|
||||||
- /modules/shared/lib/dumpapi.js
|
|
||||||
- /modules/shared/lib/reportapi.js
|
|
||||||
- /modules/shared/lib/userapi.js
|
|
||||||
- /modules/shared/lib/keys.js
|
|
||||||
- /modules/shared/lib/strlib.js
|
|
||||||
- /modules/shared/lib/usrlib.js
|
|
||||||
- /modules/shared/lib/weblib.js
|
|
||||||
- /modules/shared/lib/component.js
|
|
||||||
- /modules/pdp10/lib/defines.js
|
|
||||||
- /modules/pdp10/lib/messages.js
|
|
||||||
- /modules/pdp10/lib/panel.js
|
|
||||||
- /modules/pdp10/lib/bus.js
|
|
||||||
- /modules/pdp10/lib/device.js
|
|
||||||
- /modules/pdp10/lib/memory.js
|
|
||||||
- /modules/pdp10/lib/cpu.js
|
|
||||||
- /modules/pdp10/lib/cpustate.js
|
|
||||||
- /modules/pdp10/lib/cpuops.js
|
|
||||||
- /modules/pdp10/lib/rom.js
|
|
||||||
- /modules/pdp10/lib/ram.js
|
|
||||||
- /modules/pdp10/lib/serial.js
|
|
||||||
- /modules/shared/lib/debugger.js
|
|
||||||
- /modules/pdp10/lib/debugger.js
|
|
||||||
- /modules/pdp10/lib/macro10.js
|
|
||||||
- /modules/pdp10/lib/computer.js
|
|
||||||
- /modules/shared/lib/state.js
|
|
||||||
- /modules/shared/lib/embed.js
|
|
||||||
pdp11_scripts:
|
|
||||||
- /modules/shared/lib/defines.js
|
|
||||||
- /modules/shared/lib/nodebug.js
|
|
||||||
- /modules/shared/lib/dumpapi.js
|
|
||||||
- /modules/shared/lib/reportapi.js
|
|
||||||
- /modules/shared/lib/userapi.js
|
|
||||||
- /modules/shared/lib/keys.js
|
|
||||||
- /modules/shared/lib/strlib.js
|
|
||||||
- /modules/shared/lib/usrlib.js
|
|
||||||
- /modules/shared/lib/weblib.js
|
|
||||||
- /modules/shared/lib/component.js
|
|
||||||
- /modules/pdp11/lib/defines.js
|
|
||||||
- /modules/pdp11/lib/messages.js
|
|
||||||
- /modules/pdp11/lib/panel.js
|
|
||||||
- /modules/pdp11/lib/bus.js
|
|
||||||
- /modules/pdp11/lib/device.js
|
|
||||||
- /modules/pdp11/lib/memory.js
|
|
||||||
- /modules/pdp11/lib/cpu.js
|
|
||||||
- /modules/pdp11/lib/cpustate.js
|
|
||||||
- /modules/pdp11/lib/cpuops.js
|
|
||||||
- /modules/pdp11/lib/rom.js
|
|
||||||
- /modules/pdp11/lib/ram.js
|
|
||||||
- /modules/pdp11/lib/keyboard.js
|
|
||||||
- /modules/pdp11/lib/serial.js
|
|
||||||
- /modules/pdp11/lib/pc11.js
|
|
||||||
- /modules/pdp11/lib/disk.js
|
|
||||||
- /modules/pdp11/lib/drive.js
|
|
||||||
- /modules/pdp11/lib/rk11.js
|
|
||||||
- /modules/pdp11/lib/rl11.js
|
|
||||||
- /modules/pdp11/lib/rx11.js
|
|
||||||
- /modules/shared/lib/debugger.js
|
|
||||||
- /modules/pdp11/lib/debugger.js
|
|
||||||
- /modules/pdp11/lib/computer.js
|
|
||||||
- /modules/shared/lib/state.js
|
|
||||||
- /modules/shared/lib/embed.js
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
developer: true
|
|
||||||
baseurl: ""
|
|
||||||
url: "http://localhost:4000"
|
|
||||||
#
|
|
||||||
# In the following pcjs section, setting "compiled: false" works only for pages with a single machine,
|
|
||||||
# because the uncompiled scripts use shared classes that can only be instantiated once on a page (unless
|
|
||||||
# they're compiled and/or wrapped inside a function).
|
|
||||||
#
|
|
||||||
pcjs:
|
|
||||||
compiled: true
|
|
||||||
debug: false
|
|
||||||
private: true
|
|
||||||
|
|
@ -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 }}\<a href="/{{ url }}">{{ splitted_url_parts[i] | upcase }}</a>{% endcapture %}
|
|
||||||
{% if splitted_url_parts[i] == "blog" %}
|
|
||||||
{% break %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
<h4>Directory of C:\<a href="{{ site.baseurl }}/">PCJS.ORG</a>{{ path }}</h4>
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
||||||
<footer class="site-footer">
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
|
|
||||||
<div class="footer-col-wrapper">
|
|
||||||
|
|
||||||
{% comment %}
|
|
||||||
|
|
||||||
<div class="footer-col footer-col-1">
|
|
||||||
<ul class="contact-list">
|
|
||||||
<li>{{ site.title }}</li>
|
|
||||||
<li><a href="mailto:{{ site.email }}">{{ site.email }}</a></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="footer-col footer-col-2">
|
|
||||||
<ul class="social-media-list">
|
|
||||||
{% if site.github_username %}
|
|
||||||
<li>
|
|
||||||
<a href="https://github.com/{{ site.github_username }}">
|
|
||||||
<span class="icon icon--github">
|
|
||||||
<svg viewBox="0 0 16 16">
|
|
||||||
<path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="username">{{ site.github_username }}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if site.twitter_username %}
|
|
||||||
<li>
|
|
||||||
<a href="https://twitter.com/{{ site.twitter_username }}">
|
|
||||||
<span class="icon icon--twitter">
|
|
||||||
<svg viewBox="0 0 16 16">
|
|
||||||
<path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809
|
|
||||||
c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/>
|
|
||||||
</svg>
|
|
||||||
</span>
|
|
||||||
|
|
||||||
<span class="username">{{ site.twitter_username }}</span>
|
|
||||||
</a>
|
|
||||||
</li>
|
|
||||||
{% endif %}
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% endcomment %}
|
|
||||||
|
|
||||||
<div class="footer-col footer-col-3">
|
|
||||||
<p class="text">
|
|
||||||
<span style="float:right"><a href="{{ site.url }}">{{ site.pcjs.domain }}</a> © 2012-2017 by <a href="https://twitter.com/{{ site.twitter_username }}">@{{ site.twitter_username }}</a></span><br/>
|
|
||||||
<span style="float:right"><a href="http://github.com/jeffpar/pcjs">PCjs Project</a> released under <a href="http://gnu.org/licenses/gpl.html">GPLv3</a></span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</footer>
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
{% unless site.developer %}
|
|
||||||
<script>
|
|
||||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
||||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
||||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
||||||
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
||||||
ga('create', 'UA-49658648-1', 'pcjs.org');
|
|
||||||
ga('send', 'pageview');
|
|
||||||
</script>
|
|
||||||
{% endunless %}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<title>{% if page.title %}PCjs: {{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
|
||||||
<meta name="description" content="{{ site.description }}">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">
|
|
||||||
<link rel="stylesheet" href="{{ "/css/main.css" | prepend: site.baseurl }}">
|
|
||||||
<link rel="canonical" href="{{ page.url | replace:'index.html','' | prepend: site.baseurl | prepend: site.url }}">
|
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="{{ site.baseurl }}/versions/icons/current/pc-icon-57.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="{{ site.baseurl }}/versions/icons/current/pc-icon-72.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="76x76" href="{{ site.baseurl }}/versions/icons/current/pc-icon-76.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="{{ site.baseurl }}/versions/icons/current/pc-icon-114.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href="{{ site.baseurl }}/versions/icons/current/pc-icon-120.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="{{ site.baseurl }}/versions/icons/current/pc-icon-144.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="{{ site.baseurl }}/versions/icons/current/pc-icon-152.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ site.baseurl }}/versions/icons/current/pc-icon-180.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="192x192" href="{{ site.baseurl }}/versions/icons/current/pc-icon-192.png">
|
|
||||||
<link rel="apple-touch-icon" href="{{ site.baseurl }}/versions/icons/current/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="192x192" href="{{ site.baseurl }}/versions/icons/current/pc-icon-192.png">
|
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="{{ site.baseurl }}/versions/icons/current/favicon.ico">
|
|
||||||
{% include machine-styles.html %}
|
|
||||||
</head>
|
|
||||||
|
|
@ -1,32 +0,0 @@
|
||||||
<header class="site-header">
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
|
|
||||||
<a class="site-title" href="{{ site.baseurl }}/">{{ site.title }}</a>
|
|
||||||
|
|
||||||
<nav class="site-nav">
|
|
||||||
<a href="#" class="menu-icon">
|
|
||||||
<svg viewBox="0 0 18 15">
|
|
||||||
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
|
|
||||||
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
|
|
||||||
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
<div class="trigger">
|
|
||||||
{% assign sorted_pages = site.pages | sort:"menu_order" %}
|
|
||||||
{% for page in sorted_pages %}
|
|
||||||
{% if page.menu_title %}
|
|
||||||
<a class="page-link" href="{{ page.url | prepend: site.baseurl }}">{{ page.menu_title }}</a>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
{% include breadcrumbs.html %}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</header>
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
[<img src="{{ site.baseurl }}{{ include.src }}" width="{{ include.width }}" height="{{ include.height }}"/>]({{ include.link }} "{{ include.alt }}")
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
<div class="buildpc" id="{{ include.id }}"></div>
|
|
||||||
|
|
@ -1,22 +0,0 @@
|
||||||
{% comment %}
|
|
||||||
|
|
||||||
As discussed in /_posts/2017-01-03-pdp-11-tutorials.md, when a page (usually part of a tutorial)
|
|
||||||
wants to create a control that tests some feature of a machine, the page will define a machine command
|
|
||||||
using a Liquid-style include that looks like this:
|
|
||||||
|
|
||||||
{% include machine-command.html type='button' label='Try It!' machine='vt100' component='Keyboard' command='sendString' value='Hello World' %}
|
|
||||||
|
|
||||||
and which should generate something like this:
|
|
||||||
|
|
||||||
<button type="button" onclick="commandMachine(this, false, 'vt100','Keyboard','sendString','Hello World')">Try It!</button>
|
|
||||||
|
|
||||||
Alternatively, if the command parameter is the name of a machine script in the page's Front Matter, then this:
|
|
||||||
|
|
||||||
{% include machine-command.html type='button' label='Try It!' machine='vt100' component='Keyboard' command='scriptName' %}
|
|
||||||
|
|
||||||
should generate something like this:
|
|
||||||
|
|
||||||
<button type="button" onclick="commandMachine(this, false, 'vt100','Keyboard','script','...')">Try It!</button>
|
|
||||||
|
|
||||||
{% endcomment %}
|
|
||||||
{% if page.machineScripts[include.command] != nil %}{% assign machine_command = "script" %}{% capture command_value %}{{ page.machineScripts[include.command] | replace:'"','"' | strip }}{% endcapture %}{% else %}{% capture machine_command %}{{ include.command }}{% endcapture %}{% capture command_value %}{{ include.value | replace:'"','"' }}{% endcapture %}{% endif %}{% if include.type == "clickOnce" %}{% assign control_type = "button" %}{% assign control_single = "true" %}{% elsif include.type == "button" %}{% assign control_type = "button" %}{% assign control_single = "false" %}{% else %}{% assign control_type = "unknown" %}{% assign control_single = "false" %}{% endif %}{% if control_type == "button" %}<button type="button" onclick="commandMachine(this,{{ control_single }},'{{ include.machine }}','{{ include.component }}','{{ machine_command }}','{{ command_value }}')">{{ include.label }}</button>{% else %}<!-- Unrecognized machine control type: {{ include.type }} -->{% endif %}
|
|
||||||
|
|
@ -1,178 +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, pdp10, pdp11)
|
|
||||||
'debugger' (default: false)
|
|
||||||
'config' (default: machine.xml)
|
|
||||||
'template' (default: machine.xsl)
|
|
||||||
'debug' (default: false; true enables asserts and is much slower)
|
|
||||||
'uncompiled' (default: false; true is useful for debugging but slower)
|
|
||||||
'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)
|
|
||||||
'autoScript' (eg, type Keyboard "$date\r$time\r")
|
|
||||||
'autoStart' (eg: true)
|
|
||||||
'autoType' (eg: $date\r$time\r)
|
|
||||||
'drives' (eg: '[{name:"68Mb Hard Disk",type:4,path:"http://archive.pcjs.org/disks/pc/fixed/68mb/win95.json"}]')
|
|
||||||
'resume' (eg: 1)
|
|
||||||
'state' (eg: state.json)
|
|
||||||
'commands' (debugger commands, if any)
|
|
||||||
'messages' (eg: fault)
|
|
||||||
'connection' (eg: serialPort->vt100a.serialPort)
|
|
||||||
|
|
||||||
{% endcomment %}
|
|
||||||
{% for machine in page.machines %}
|
|
||||||
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
|
|
||||||
{% if machine_type == "c1p" %}
|
|
||||||
{% assign machine_app = "c1pjs" %}
|
|
||||||
{% elsif machine_type == "pdp10" or machine_type == "pdp11" %}
|
|
||||||
{% assign machine_app = "pdpjs" %}
|
|
||||||
{% else %}
|
|
||||||
{% capture machine_app %}{{ machine_type }}{% endcapture %}
|
|
||||||
{% endif %}
|
|
||||||
{% unless machine.config %}
|
|
||||||
{% assign machine_config = "machine.xml" %}
|
|
||||||
{% else %}
|
|
||||||
{% assign machine_config = machine.config %}
|
|
||||||
{% endunless %}
|
|
||||||
{% if machine.debugger or machine_config contains "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 == "" %}
|
|
||||||
{% assign machine_autoMount = "{}" %}
|
|
||||||
{% else %}
|
|
||||||
{% capture machine_autoMount %}{{ machine.autoMount|jsonify }}{% endcapture %}
|
|
||||||
{% endif %}
|
|
||||||
{% if machine.autoPower != nil %}
|
|
||||||
{% capture machine_autoPower %},autoPower:{{ machine.autoPower }}{% endcapture %}
|
|
||||||
{% else %}
|
|
||||||
{% assign machine_autoPower = "" %}
|
|
||||||
{% endif %}
|
|
||||||
{% if machine.autoScript != nil %}
|
|
||||||
{% capture machine_autoScript %},autoScript:"{{ page.machineScripts[machine.autoScript] | strip_newlines | replace:'"':"\\\\"" | replace:"\r":"\\\\r" | replace:"\n":"\\\\n" | replace:"\t":"\\\\t" | replace:"\x":"\\\\x" }}"{% endcapture %}
|
|
||||||
{% else %}
|
|
||||||
{% assign machine_autoScript = "" %}
|
|
||||||
{% endif %}
|
|
||||||
{% if machine.autoStart != nil %}
|
|
||||||
{% capture machine_autoStart %},autoStart:{{ machine.autoStart }}{% endcapture %}
|
|
||||||
{% else %}
|
|
||||||
{% assign machine_autoStart = "" %}
|
|
||||||
{% endif %}
|
|
||||||
{% if machine.autoType != nil %}
|
|
||||||
{% capture machine_autoType %},autoType:"{{ machine.autoType | replace:"\r":"\\\\r" | replace:"\n":"\\\\n" | replace:"\t":"\\\\t" | replace:"\x":"\\\\x" }}"{% endcapture %}
|
|
||||||
{% else %}
|
|
||||||
{% assign machine_autoType = "" %}
|
|
||||||
{% endif %}
|
|
||||||
{% 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_autoScript }}{{ machine_autoStart }}{{ machine_autoType }}{{ machine_drives }},resume:"{{ machine.resume }}",state:"{{ machine.state }}",commands:"{{ machine.commands }}",messages:"{{ machine.messages }}",connection:"{{ machine.connection }}"{{ site.right_brace }}{% endcapture %}
|
|
||||||
{% if site.pcjs.compiled == true and machine.uncompiled != true %}
|
|
||||||
{% capture page_script %}
|
|
||||||
<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/{{ machine_file }}.js"></script>{% endcapture %}
|
|
||||||
{% unless page_scripts contains page_script %}
|
|
||||||
{{ page_script }}
|
|
||||||
{% endunless %}
|
|
||||||
{% capture page_scripts %}{{ page_scripts }}{{ page_script }}{% endcapture %}
|
|
||||||
{% if machine_template == "" %}
|
|
||||||
{% capture machine_template %}{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/components.xsl{% endcapture %}
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% capture machine_file_uncompiled %}{{ machine_file | remove:"-dbg" | append:"-uncompiled" }}{% endcapture %}
|
|
||||||
{% capture page_script %}
|
|
||||||
<script type="text/javascript" src="{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/{{ machine_file_uncompiled }}.js"></script>{% endcapture %}
|
|
||||||
{% unless page_scripts contains page_script %}
|
|
||||||
{{ page_script }}
|
|
||||||
{% endunless %}
|
|
||||||
{% capture page_scripts %}{{ page_scripts }}{{ page_script }}{% endcapture %}
|
|
||||||
{% if machine_template == "" %}
|
|
||||||
{% capture machine_template %}{{ site.baseurl }}/versions/{{ machine_app }}/{{ site.pcjs.version }}/components.xsl{% endcapture %}
|
|
||||||
{% endif %}
|
|
||||||
{% comment %}
|
|
||||||
|
|
||||||
The following approach worked well before we converted most of the code to ES6 classes. Unfortunately, ES6 classes
|
|
||||||
don't coexist well with the conditional Node require() statements inside the individual scripts. Since we were already
|
|
||||||
stripping all the Node-related code from the scripts to build monolithic scripts that we could feed into the Closure
|
|
||||||
Compiler, we have simply moved those monolithic scripts from the /tmp folder to the /versions folder, with "-uncompiled"
|
|
||||||
suffixes. And since they are now checked in alongside the compiled files, there's the added benefit that we can always
|
|
||||||
reference them from source maps.
|
|
||||||
|
|
||||||
So, the following template code is no longer of any use, but we'll leave it here for historical reference. Note that
|
|
||||||
our Node web server still serves up individual scripts, because it has the ability to strip all Node references from the
|
|
||||||
scripts before delivering them to the web browser. But that's not really feasible in the Jekyll environment.
|
|
||||||
|
|
||||||
{% 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 %}
|
|
||||||
{% if machine_type == "pdp10" %}{% assign array_scripts = site.pcjs.pdp10_scripts %}{% endif %}
|
|
||||||
{% if machine_type == "pdp11" %}{% assign array_scripts = site.pcjs.pdp11_scripts %}{% endif %}
|
|
||||||
{% for script in array_scripts %}
|
|
||||||
{% if script != "/modules/shared/lib/nodebug.js" or machine.debug != true and site.pcjs.debug != true %}
|
|
||||||
{% capture page_script %}<script type="text/javascript" src="{{ site.baseurl }}{{ script }}"></script>{% endcapture %}
|
|
||||||
{% unless page_scripts contains page_script %}
|
|
||||||
{{ page_script }}
|
|
||||||
{% if script contains "shared/lib/defines.js" %}
|
|
||||||
{% if site.pcjs.private %}
|
|
||||||
{{ page_script | replace:"defines.js","private.js" }}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% if script contains "js/lib/defines.js" %}
|
|
||||||
{% if machine_debugger != true %}
|
|
||||||
{{ page_script | replace:"defines.js","nodebugger.js" }}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endunless %}
|
|
||||||
{% capture page_scripts %}{{ page_scripts }}{{ page_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 %}
|
|
||||||
{% endcomment %}
|
|
||||||
{% endif %}
|
|
||||||
<script type="text/javascript">{{ machine_embed }}('{{ machine.id }}','{{ machine_config }}','{{ machine_template }}','{{ machine_parms }}');</script>
|
|
||||||
{% if machine.sticky == "top" %}
|
|
||||||
<script type="text/javascript" src="{{ site.baseurl }}/modules/shared/lib/sticky.js"></script>
|
|
||||||
<script type="text/javascript">addStickyMachine('{{ machine.id }}');</script>
|
|
||||||
{% endif %}
|
|
||||||
{% if page.build %}
|
|
||||||
<script type="text/javascript" src="{{ site.baseurl }}/modules/build/lib/build.js"></script>
|
|
||||||
<script type="text/javascript">buildPC("{{ page.build }}");</script>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
@ -1,23 +0,0 @@
|
||||||
{% for machine in page.machines %}
|
|
||||||
{% capture machine_type %}{{ machine.type | remove:"-dbg" }}{% endcapture %}
|
|
||||||
{% if machine_type == "c1p" %}
|
|
||||||
{% assign machine_app = "c1pjs" %}
|
|
||||||
{% elsif machine_type == "pdp10" or machine_type == "pdp11" %}
|
|
||||||
{% assign machine_app = "pdpjs" %}
|
|
||||||
{% else %}
|
|
||||||
{% capture machine_app %}{{ machine_type }}{% endcapture %}
|
|
||||||
{% endif %}
|
|
||||||
{% unless site.pcjs.compiled == true and machine.uncompiled != true %}
|
|
||||||
{% if machine_type == "c1p" %}
|
|
||||||
{% capture machine_style %}{{ site.baseurl }}/modules/c1pjs/templates/components.css{% endcapture %}
|
|
||||||
{% else %}
|
|
||||||
{% capture machine_style %}{{ site.baseurl }}/modules/shared/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 %}
|
|
||||||
<link rel="stylesheet" type="text/css" href="{{ machine_style }}">
|
|
||||||
{% endunless %}
|
|
||||||
{% capture machine_styles %}{{ machine_styles }}{{ machine_style }}{% endcapture %}
|
|
||||||
{% endfor %}
|
|
||||||
|
|
@ -1,17 +0,0 @@
|
||||||
<div class="machine" id="{{ include.id }}">
|
|
||||||
{% assign machine_name = "PCjs Machine" %}
|
|
||||||
{% for machine in page.machines %}
|
|
||||||
{% if include.id == machine.id %}
|
|
||||||
{% if machine.name %}
|
|
||||||
{% assign machine_name = machine.name %}
|
|
||||||
{% break %}
|
|
||||||
{% endif %}
|
|
||||||
{% if machine.type %}
|
|
||||||
{% capture machine_name %}{{ machine.type | upcase | replace:"X86","x86" }} Machine{% endcapture %}
|
|
||||||
{% break %}
|
|
||||||
{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
|
||||||
[{{ machine_name }}]
|
|
||||||
</div>
|
|
||||||
<p id="{{ include.id }}.footer"></p>
|
|
||||||
|
|
@ -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 %}
|
|
||||||
<script type="text/javascript" src="{{ site.baseurl }}{{ script }}"></script>
|
|
||||||
{% endfor %}
|
|
||||||
|
|
@ -1,42 +0,0 @@
|
||||||
{% assign random_id = "random" %}
|
|
||||||
<div id="{{ random_id }}"></div>
|
|
||||||
<script id="randomize" type="text/javascript">
|
|
||||||
(function() {
|
|
||||||
var p = document.getElementById('{{ random_id }}');
|
|
||||||
if (p) {
|
|
||||||
var mags = ['BYTE-1975-11:98',
|
|
||||||
'MSJ-1986-10:34', 'MSJ-1987-05:90',
|
|
||||||
'PCTJ-1983-07:210', 'PCTJ-1983-09:224', 'PCTJ-1983-11:238',
|
|
||||||
'PCTJ-1984-01:214', 'PCTJ-1984-02:206', 'PCTJ-1984-03:216', 'PCTJ-1984-04:232',
|
|
||||||
'PCTJ-1984-05:234', 'PCTJ-1984-06:230', 'PCTJ-1984-07:210', 'PCTJ-1984-08:214',
|
|
||||||
'PCTJ-1984-09:215', 'PCTJ-1984-10:226', 'PCTJ-1984-11:228', 'PCTJ-1984-12:240',
|
|
||||||
'PCTJ-1985-01:214', 'PCTJ-1985-02:194', 'PCTJ-1985-03:202', 'PCTJ-1985-04:204',
|
|
||||||
'PCTJ-1985-05:244', 'PCTJ-1985-06:216', 'PCTJ-1985-07:184', 'PCTJ-1985-08:200',
|
|
||||||
'PCTJ-1985-09:196', 'PCTJ-1985-10:204', 'PCTJ-1985-11:220', 'PCTJ-1985-12:218',
|
|
||||||
'PCTJ-1986-01:212', 'PCTJ-1986-02:214', 'PCTJ-1986-03:220', 'PCTJ-1986-04:220',
|
|
||||||
'PCTJ-1986-05:222', 'PCTJ-1986-06:222', 'PCTJ-1986-07:198', 'PCTJ-1986-08:212',
|
|
||||||
'PCTJ-1986-09:230', 'PCTJ-1986-10:228', 'PCTJ-1986-11:228', 'PCTJ-1986-12:232',
|
|
||||||
'PCTJ-1987-01:216', 'PCTJ-1987-02:222', 'PCTJ-1987-03:214', 'PCTJ-1987-04:218',
|
|
||||||
'PCTJ-1987-05:240', 'PCTJ-1987-06:236', 'PCTJ-1987-07:230', 'PCTJ-1987-08:250',
|
|
||||||
'PCTJ-1987-09:252', 'PCTJ-1987-10:231', 'PCTJ-1987-11:263', 'PCTJ-1987-12:242',
|
|
||||||
'PCTJ-1988-01:200', 'PCTJ-1988-02:200', 'PCTJ-1988-03:182',
|
|
||||||
'PCTJ-1988-05:196', 'PCTJ-1988-06:180', 'PCTJ-1988-07:164', 'PCTJ-1988-08:166',
|
|
||||||
'PCTJ-1988-09:174', 'PCTJ-1988-10:170', 'PCTJ-1988-11:176', 'PCTJ-1988-12:168',
|
|
||||||
'PCTJ-1989-04:148'
|
|
||||||
];
|
|
||||||
var p2 = document.createElement('p');
|
|
||||||
p2.appendChild(document.createTextNode('{{ include.text }}'));
|
|
||||||
var div1 = document.createElement('div'); div1.setAttribute('class', 'common-image-gallery');
|
|
||||||
var div2 = document.createElement('div'); div2.setAttribute('class', 'common-image-frame'); div1.appendChild(div2);
|
|
||||||
var div3 = document.createElement('div'); div3.setAttribute('class', 'common-image-link'); div2.appendChild(div3);
|
|
||||||
var mag = mags[Math.floor(Math.random() * mags.length)];
|
|
||||||
var parts = mag.split(':'), issue = parts[0], page = Math.floor(Math.random() * parseInt(parts[1])) + 1;
|
|
||||||
parts = mag.split('-');
|
|
||||||
var name = parts[0].toLowerCase();
|
|
||||||
var a = document.createElement('a'); a.setAttribute('href', '/pubs/pc/magazines/' + name + '/' + issue + '/#page-' + page); div3.appendChild(a);
|
|
||||||
var img = document.createElement('img'); img.setAttribute('src', 'http://archive.pcjs.org/pubs/pc/magazines/' + name + '/' + issue + '/thumbs/' + issue + ' ' + page + '.jpeg'); img.setAttribute('width', '200'); a.appendChild(img);
|
|
||||||
p.parentNode.insertBefore(p2, p.nextSibling);
|
|
||||||
p2.parentNode.insertBefore(div1, p2.nextSibling)
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
|
|
@ -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 %}
|
|
||||||
<div class="screenshot-frame">
|
|
||||||
<div class="screenshot-image">
|
|
||||||
<a href="{{ site.baseurl }}{{ include.link }}">
|
|
||||||
<img src="{{ site.baseurl }}{{ include.src }}"{{ include_width }}{{ include_height }} alt="{{ include.title }}"/>
|
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<span class="screenshot-label">{{ include.title }}</span>
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
|
|
||||||
<div class="home">
|
|
||||||
|
|
||||||
{{ content }}
|
|
||||||
|
|
||||||
<h1 class="page-heading">Posts</h1>
|
|
||||||
|
|
||||||
<ul class="post-list">
|
|
||||||
{% for post in site.posts %}
|
|
||||||
<li>
|
|
||||||
<span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>
|
|
||||||
|
|
||||||
<h2>
|
|
||||||
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
|
|
||||||
</h2>
|
|
||||||
{{ post.excerpt | replace:'</p>','...</p>'}}
|
|
||||||
</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p class="rss-subscribe">subscribe <a href="{{ "/feed.xml" | prepend: site.baseurl }}">via RSS</a></p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en-US">
|
|
||||||
|
|
||||||
{% include head.html %}
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{% include header.html %}
|
|
||||||
|
|
||||||
<div class="page-content">
|
|
||||||
<div class="wrapper">
|
|
||||||
{{ content }}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% include footer.html %}
|
|
||||||
|
|
||||||
{% include machine-engines.html %}
|
|
||||||
|
|
||||||
{% include page-scripts.html %}
|
|
||||||
|
|
||||||
{% include google-analytics.html %}
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,16 +0,0 @@
|
||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
<div class="post">
|
|
||||||
|
|
||||||
{% if page.display_title %}
|
|
||||||
<header class="post-header">
|
|
||||||
<h1 class="post-title">{{ page.title }}</h1>
|
|
||||||
</header>
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
<article class="post-content">
|
|
||||||
{{ content }}
|
|
||||||
</article>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,15 +0,0 @@
|
||||||
---
|
|
||||||
layout: default
|
|
||||||
---
|
|
||||||
<div class="post">
|
|
||||||
|
|
||||||
<header class="post-header">
|
|
||||||
<h1 class="post-title">{{ page.title }}</h1>
|
|
||||||
<p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}{% if page.author %} • {{ page.author }}{% endif %}{% if page.meta %} • {{ page.meta }}{% endif %}</p>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<article class="post-content">
|
|
||||||
{{ content }}
|
|
||||||
</article>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
@ -1,78 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
{% include head.html %}
|
|
||||||
|
|
||||||
<body>
|
|
||||||
|
|
||||||
{% include header.html %}
|
|
||||||
|
|
||||||
<div class="page-content">
|
|
||||||
<div class="wrapper">
|
|
||||||
{{ content }}
|
|
||||||
<div style="width:680px;margin-left:auto;margin-right:auto;">
|
|
||||||
<div style="float:left;margin-top:350px;margin-right:8px;">
|
|
||||||
<button id="prevPDF" style="font-size:large;"><</button>
|
|
||||||
</div>
|
|
||||||
<div style="float:left;">
|
|
||||||
<iframe id="framePDF" src="" width="550" height="800"></iframe>
|
|
||||||
</div>
|
|
||||||
<div style="float:left;margin-top:350px;margin-left:8px;">
|
|
||||||
<button id="nextPDF" style="font-size:large;">></button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
{% include footer.html %}
|
|
||||||
|
|
||||||
<script id="initFrame" type="text/javascript">
|
|
||||||
(function() {
|
|
||||||
var aParms = {};
|
|
||||||
var sParms = window.location.search.substr(1);
|
|
||||||
var match, pl = /\+/g, search = /([^&=]+)=?([^&]*)/g;
|
|
||||||
var decode = function(s) { return decodeURIComponent(s.replace(pl, " ")); };
|
|
||||||
while ((match = search.exec(sParms))) aParms[decode(match[1])] = decode(match[2]);
|
|
||||||
var pdf = aParms['url'];
|
|
||||||
var curPage = parseInt(aParms['page'], 10) || 1;
|
|
||||||
var totalPages = parseInt(aParms['total'], 10) || 999;
|
|
||||||
var frame = document.getElementById('framePDF');
|
|
||||||
if (pdf && frame) {
|
|
||||||
pdf = pdf.replace('/archive/', '/');
|
|
||||||
var i = pdf.indexOf("/pages/");
|
|
||||||
if (i > 0) {
|
|
||||||
var sReturnLink = pdf.substr(0, i+1);
|
|
||||||
var sReturnPath = sReturnLink.slice(0, -1).toUpperCase().replace(/\//g, '\\');
|
|
||||||
var e = document.getElementById('returnLink');
|
|
||||||
if (e) e.setAttribute('href', sReturnLink);
|
|
||||||
e = document.getElementById('returnPath');
|
|
||||||
if (e) e.textContent = sReturnPath;
|
|
||||||
}
|
|
||||||
i = pdf.indexOf('%20');
|
|
||||||
if (i < 0) i = pdf.indexOf(' ');
|
|
||||||
if (i > 0) pdf = pdf.substr(0, i);
|
|
||||||
var setPage = function(page) {
|
|
||||||
frame.setAttribute('src', 'https://s3-us-west-2.amazonaws.com/archive.pcjs.org' + pdf + ' ' + curPage + '.pdf');
|
|
||||||
};
|
|
||||||
setPage(curPage);
|
|
||||||
var buttonPrev = document.getElementById('prevPDF');
|
|
||||||
if (buttonPrev) {
|
|
||||||
buttonPrev.onclick = function() {
|
|
||||||
if (curPage > 1) setPage(--curPage);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
var buttonNext = document.getElementById('nextPDF');
|
|
||||||
if (buttonNext) {
|
|
||||||
buttonNext.onclick = function() {
|
|
||||||
if (curPage < totalPages) setPage(++curPage);
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
{% include google-analytics.html %}
|
|
||||||
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
||||||
|
|
@ -47,7 +47,7 @@ want to send some serial data to a machine:
|
||||||
{% include machine-command.html type='button' label='Try It!' machine='test1170' component='SerialPort' command='receiveData' value='HELP\r' %}
|
{% include machine-command.html type='button' label='Try It!' machine='test1170' component='SerialPort' command='receiveData' value='HELP\r' %}
|
||||||
{% endraw %}
|
{% endraw %}
|
||||||
|
|
||||||
which should translate into a control that looks like this:
|
which should translate into a control that looks like:
|
||||||
|
|
||||||
<button type="button" onclick="commandMachine('test1170','SerialPort','receiveData','HELP\r')">Try It!</button>
|
<button type="button" onclick="commandMachine('test1170','SerialPort','receiveData','HELP\r')">Try It!</button>
|
||||||
|
|
||||||
|
|
|
||||||
185
_sass/_base.scss
185
_sass/_base.scss
|
|
@ -1,185 +0,0 @@
|
||||||
/**
|
|
||||||
* Reset some basic elements
|
|
||||||
*/
|
|
||||||
body, h1, h2, h3, h4, h5, h6,
|
|
||||||
p, blockquote, pre,
|
|
||||||
dl, dd, ol, ul, figure {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Basic styling
|
|
||||||
*/
|
|
||||||
body {
|
|
||||||
font-family: $base-font-family;
|
|
||||||
font-size: $base-font-size;
|
|
||||||
line-height: $base-line-height;
|
|
||||||
font-weight: 300;
|
|
||||||
color: $text-color;
|
|
||||||
background-color: $background-color;
|
|
||||||
-webkit-text-size-adjust: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set `margin-bottom` to maintain vertical rhythm
|
|
||||||
*/
|
|
||||||
h1, h2, h3, h4, h5, h6,
|
|
||||||
p, blockquote, pre,
|
|
||||||
ul, ol, dl, figure,
|
|
||||||
%vertical-rhythm {
|
|
||||||
margin-bottom: $spacing-unit / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Images
|
|
||||||
*/
|
|
||||||
img {
|
|
||||||
max-width: 100%;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Figures
|
|
||||||
*/
|
|
||||||
figure > img {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
figcaption {
|
|
||||||
font-size: $small-font-size;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Lists
|
|
||||||
*/
|
|
||||||
ul, ol {
|
|
||||||
margin-left: $spacing-unit;
|
|
||||||
}
|
|
||||||
|
|
||||||
li {
|
|
||||||
> ul,
|
|
||||||
> ol {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Headings
|
|
||||||
*/
|
|
||||||
h1, h2, h3, h4, h5, h6 {
|
|
||||||
font-weight: 300;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Links
|
|
||||||
*/
|
|
||||||
a {
|
|
||||||
color: $brand-color;
|
|
||||||
text-decoration: none;
|
|
||||||
|
|
||||||
&:visited {
|
|
||||||
color: darken($brand-color, 15%);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover {
|
|
||||||
color: $text-color;
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Blockquotes
|
|
||||||
*/
|
|
||||||
blockquote {
|
|
||||||
color: $grey-color;
|
|
||||||
border-left: 4px solid $grey-color-light;
|
|
||||||
padding-left: $spacing-unit / 2;
|
|
||||||
padding-right: $spacing-unit / 2;
|
|
||||||
padding-bottom: $spacing-unit / 2;
|
|
||||||
margin-bottom: 0;
|
|
||||||
text-align: justify;
|
|
||||||
/* font-size: 18px; */
|
|
||||||
/* letter-spacing: -1px; */
|
|
||||||
/* font-style: italic; */
|
|
||||||
|
|
||||||
> :last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Code formatting
|
|
||||||
*/
|
|
||||||
pre,
|
|
||||||
code {
|
|
||||||
font-size: 15px;
|
|
||||||
border: 1px solid $grey-color-light;
|
|
||||||
border-radius: 3px;
|
|
||||||
background-color: #eef;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
padding: 1px 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
pre {
|
|
||||||
padding: 8px 12px;
|
|
||||||
overflow-x: scroll;
|
|
||||||
white-space: pre-wrap;
|
|
||||||
|
|
||||||
> code {
|
|
||||||
border: 0;
|
|
||||||
padding-right: 0;
|
|
||||||
padding-left: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Wrapper
|
|
||||||
*/
|
|
||||||
.wrapper {
|
|
||||||
/* max-width: -webkit-calc(800px - (#{$spacing-unit} * 2)); */
|
|
||||||
/* max-width: calc(800px - (#{$spacing-unit} * 2)); */
|
|
||||||
margin-right: auto;
|
|
||||||
margin-left: auto;
|
|
||||||
padding-right: $spacing-unit;
|
|
||||||
padding-left: $spacing-unit;
|
|
||||||
@extend %clearfix;
|
|
||||||
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
/* max-width: -webkit-calc(800px - (#{$spacing-unit})); */
|
|
||||||
/* max-width: calc(800px - (#{$spacing-unit})); */
|
|
||||||
padding-right: $spacing-unit / 2;
|
|
||||||
padding-left: $spacing-unit / 2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Clearfix
|
|
||||||
*/
|
|
||||||
%clearfix {
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
content: "";
|
|
||||||
display: table;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Icons
|
|
||||||
*/
|
|
||||||
.icon {
|
|
||||||
|
|
||||||
> svg {
|
|
||||||
display: inline-block;
|
|
||||||
width: 16px;
|
|
||||||
height: 16px;
|
|
||||||
vertical-align: middle;
|
|
||||||
|
|
||||||
path {
|
|
||||||
fill: $grey-color;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,270 +0,0 @@
|
||||||
/**
|
|
||||||
* Site header
|
|
||||||
*/
|
|
||||||
.site-header {
|
|
||||||
border-top: 5px solid $grey-color-dark;
|
|
||||||
border-bottom: 1px solid $grey-color-light;
|
|
||||||
min-height: 56px;
|
|
||||||
|
|
||||||
// Positioning context for the mobile navigation icon
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
.site-title {
|
|
||||||
font-size: 26px;
|
|
||||||
line-height: 56px;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
&,
|
|
||||||
&:visited {
|
|
||||||
color: $grey-color-dark;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.site-nav {
|
|
||||||
float: right;
|
|
||||||
line-height: 56px;
|
|
||||||
|
|
||||||
.menu-icon {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-link {
|
|
||||||
color: $text-color;
|
|
||||||
line-height: $base-line-height;
|
|
||||||
|
|
||||||
// Gaps between nav items, but not on the first one
|
|
||||||
&:not(:first-child) {
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-query($on-palm) {
|
|
||||||
position: absolute;
|
|
||||||
top: 9px;
|
|
||||||
right: 30px;
|
|
||||||
background-color: $background-color;
|
|
||||||
border: 1px solid $grey-color-light;
|
|
||||||
border-radius: 5px;
|
|
||||||
text-align: right;
|
|
||||||
|
|
||||||
.menu-icon {
|
|
||||||
display: block;
|
|
||||||
float: right;
|
|
||||||
width: 36px;
|
|
||||||
height: 26px;
|
|
||||||
line-height: 0;
|
|
||||||
padding-top: 10px;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
> svg {
|
|
||||||
width: 18px;
|
|
||||||
height: 15px;
|
|
||||||
|
|
||||||
path {
|
|
||||||
fill: $grey-color-dark;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.trigger {
|
|
||||||
clear: both;
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:hover .trigger {
|
|
||||||
display: block;
|
|
||||||
padding-bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-link {
|
|
||||||
display: block;
|
|
||||||
padding: 5px 10px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Site footer
|
|
||||||
*/
|
|
||||||
.site-footer {
|
|
||||||
border-top: 1px solid $grey-color-light;
|
|
||||||
padding: $spacing-unit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-heading {
|
|
||||||
font-size: 18px;
|
|
||||||
margin-bottom: $spacing-unit / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.contact-list,
|
|
||||||
.social-media-list {
|
|
||||||
list-style: none;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-col-wrapper {
|
|
||||||
font-size: 15px;
|
|
||||||
color: $grey-color;
|
|
||||||
margin-left: -$spacing-unit / 2;
|
|
||||||
@extend %clearfix;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-col {
|
|
||||||
float: left;
|
|
||||||
margin-bottom: $spacing-unit / 2;
|
|
||||||
padding-left: $spacing-unit / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-col-1 {
|
|
||||||
width: -webkit-calc(40% - (#{$spacing-unit} / 2));
|
|
||||||
width: calc(40% - (#{$spacing-unit} / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-col-2 {
|
|
||||||
width: -webkit-calc(20% - (#{$spacing-unit} / 2));
|
|
||||||
width: calc(20% - (#{$spacing-unit} / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-col-3 {
|
|
||||||
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
|
|
||||||
width: calc(100% - (#{$spacing-unit} / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
.footer-col-1,
|
|
||||||
.footer-col-2 {
|
|
||||||
width: -webkit-calc(50% - (#{$spacing-unit} / 2));
|
|
||||||
width: calc(50% - (#{$spacing-unit} / 2));
|
|
||||||
}
|
|
||||||
|
|
||||||
.footer-col-3 {
|
|
||||||
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
|
|
||||||
width: calc(100% - (#{$spacing-unit} / 2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@include media-query($on-palm) {
|
|
||||||
.footer-col {
|
|
||||||
float: none;
|
|
||||||
width: -webkit-calc(100% - (#{$spacing-unit} / 2));
|
|
||||||
width: calc(100% - (#{$spacing-unit} / 2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Page content
|
|
||||||
*/
|
|
||||||
.page-content {
|
|
||||||
padding: $spacing-unit 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-heading {
|
|
||||||
font-size: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-list {
|
|
||||||
margin-left: 0;
|
|
||||||
list-style: none;
|
|
||||||
|
|
||||||
> li {
|
|
||||||
margin-bottom: $spacing-unit;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-meta {
|
|
||||||
font-size: $small-font-size;
|
|
||||||
color: $grey-color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-link {
|
|
||||||
display: block;
|
|
||||||
font-size: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Posts
|
|
||||||
*/
|
|
||||||
.post-header {
|
|
||||||
margin-bottom: $spacing-unit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-title {
|
|
||||||
font-size: 42px;
|
|
||||||
letter-spacing: -1px;
|
|
||||||
line-height: 1;
|
|
||||||
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
font-size: 36px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.post-content {
|
|
||||||
margin-bottom: $spacing-unit;
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
font-size: 32px;
|
|
||||||
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
font-size: 28px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h3 {
|
|
||||||
font-size: 26px;
|
|
||||||
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
h4 {
|
|
||||||
font-size: 20px;
|
|
||||||
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
font-size: 18px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* PCjs-specific styles
|
|
||||||
*/
|
|
||||||
.machine {
|
|
||||||
margin-bottom: 16px;
|
|
||||||
}
|
|
||||||
.machine-floating {
|
|
||||||
position: relative;
|
|
||||||
z-index: auto;
|
|
||||||
background-color: transparent;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
.machine-sticky {
|
|
||||||
position: fixed !important;
|
|
||||||
z-index: 1 !important;
|
|
||||||
background-color: #ffffff !important;
|
|
||||||
padding-right: $spacing-unit !important;
|
|
||||||
top: 0 !important;
|
|
||||||
@include media-query($on-laptop) {
|
|
||||||
padding-right: $spacing-unit / 2 !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.screenshot-frame {
|
|
||||||
display: inline-block;
|
|
||||||
margin: 8px;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
.screenshot-image {
|
|
||||||
padding: 5px;
|
|
||||||
border: 1px solid black;
|
|
||||||
border-radius: 5px;
|
|
||||||
background-color: #FAEBD7;
|
|
||||||
}
|
|
||||||
.screenshot-label {
|
|
||||||
font-size: x-small;
|
|
||||||
}
|
|
||||||
.pcjs-description, .pcjs-status {
|
|
||||||
line-height: 2.8em !important;
|
|
||||||
}
|
|
||||||
|
|
@ -1,68 +0,0 @@
|
||||||
/**
|
|
||||||
* Syntax highlighting styles
|
|
||||||
*/
|
|
||||||
.highlight {
|
|
||||||
// background: #fff;
|
|
||||||
@extend %vertical-rhythm;
|
|
||||||
|
|
||||||
.c { color: #998; font-style: italic } // Comment
|
|
||||||
.err { color: #a61717; background-color: #e3d2d2 } // Error
|
|
||||||
.k { font-weight: bold } // Keyword
|
|
||||||
.o { font-weight: bold } // Operator
|
|
||||||
.cm { color: #998; font-style: italic } // Comment.Multiline
|
|
||||||
.cp { color: #999; font-weight: bold } // Comment.Preproc
|
|
||||||
.c1 { color: #998; font-style: italic } // Comment.Single
|
|
||||||
.cs { color: #999; font-weight: bold; font-style: italic } // Comment.Special
|
|
||||||
.gd { color: #000; background-color: #fdd } // Generic.Deleted
|
|
||||||
.gd .x { color: #000; background-color: #faa } // Generic.Deleted.Specific
|
|
||||||
.ge { font-style: italic } // Generic.Emph
|
|
||||||
.gr { color: #a00 } // Generic.Error
|
|
||||||
.gh { color: #999 } // Generic.Heading
|
|
||||||
.gi { color: #000; background-color: #dfd } // Generic.Inserted
|
|
||||||
.gi .x { color: #000; background-color: #afa } // Generic.Inserted.Specific
|
|
||||||
.go { color: #888 } // Generic.Output
|
|
||||||
.gp { color: #555 } // Generic.Prompt
|
|
||||||
.gs { font-weight: bold } // Generic.Strong
|
|
||||||
.gu { color: #aaa } // Generic.Subheading
|
|
||||||
.gt { color: #a00 } // Generic.Traceback
|
|
||||||
.kc { font-weight: bold } // Keyword.Constant
|
|
||||||
.kd { font-weight: bold } // Keyword.Declaration
|
|
||||||
.kp { font-weight: bold } // Keyword.Pseudo
|
|
||||||
.kr { font-weight: bold } // Keyword.Reserved
|
|
||||||
.kt { color: #458; font-weight: bold } // Keyword.Type
|
|
||||||
.m { color: #099 } // Literal.Number
|
|
||||||
.s { color: #d14 } // Literal.String
|
|
||||||
.na { color: #008080 } // Name.Attribute
|
|
||||||
.nb { color: #0086B3 } // Name.Builtin
|
|
||||||
.nc { color: #458; font-weight: bold } // Name.Class
|
|
||||||
.no { color: #008080 } // Name.Constant
|
|
||||||
.ni { color: #800080 } // Name.Entity
|
|
||||||
.ne { color: #900; font-weight: bold } // Name.Exception
|
|
||||||
.nf { color: #900; font-weight: bold } // Name.Function
|
|
||||||
.nn { color: #555 } // Name.Namespace
|
|
||||||
.nt { color: #000080 } // Name.Tag
|
|
||||||
.nv { color: #008080 } // Name.Variable
|
|
||||||
.ow { font-weight: bold } // Operator.Word
|
|
||||||
.w { color: #bbb } // Text.Whitespace
|
|
||||||
.mf { color: #099 } // Literal.Number.Float
|
|
||||||
.mh { color: #099 } // Literal.Number.Hex
|
|
||||||
.mi { color: #099 } // Literal.Number.Integer
|
|
||||||
.mo { color: #099 } // Literal.Number.Oct
|
|
||||||
.sb { color: #d14 } // Literal.String.Backtick
|
|
||||||
.sc { color: #d14 } // Literal.String.Char
|
|
||||||
.sd { color: #d14 } // Literal.String.Doc
|
|
||||||
.s2 { color: #d14 } // Literal.String.Double
|
|
||||||
.se { color: #d14 } // Literal.String.Escape
|
|
||||||
.sh { color: #d14 } // Literal.String.Heredoc
|
|
||||||
.si { color: #d14 } // Literal.String.Interpol
|
|
||||||
.sx { color: #d14 } // Literal.String.Other
|
|
||||||
.sr { color: #009926 } // Literal.String.Regex
|
|
||||||
.s1 { color: #d14 } // Literal.String.Single
|
|
||||||
.ss { color: #990073 } // Literal.String.Symbol
|
|
||||||
.bp { color: #999 } // Name.Builtin.Pseudo
|
|
||||||
.vc { color: #008080 } // Name.Variable.Class
|
|
||||||
.vg { color: #008080 } // Name.Variable.Global
|
|
||||||
.vi { color: #008080 } // Name.Variable.Instance
|
|
||||||
.il { color: #099 } // Literal.Number.Integer.Long
|
|
||||||
.lineno { color: #ccc; display:inline-block; padding: 0 5px; border-right:1px solid #ccc; }
|
|
||||||
}
|
|
||||||
1
archive/.gitignore
vendored
1
archive/.gitignore
vendored
|
|
@ -1 +0,0 @@
|
||||||
!*.html
|
|
||||||
|
|
@ -1,72 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width initial-scale=1" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<title>PCjs Machines</title>
|
|
||||||
<meta name="description" content="Welcome to PCjs, home of the original IBM PC in a web browser. PCjs provides a variety of computer emulators written in JavaScript, including PCx86 for x86-based machines (up through the 80386), C1Pjs for the 6502-based Ohio Scientific Challenger 1P, PC8080 for 8080-based machines such as Space Invaders and the DEC VT100 Terminal, and PDPjs, a PDP-11 emulator for the PDP-11/20, PDP-11/45, and PDP-11/70. PCjs also provides an archive of selected historical PC software, publications, and reference materials.">
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">
|
|
||||||
<link rel="stylesheet" href="http://www.pcjs.org/css/main.css">
|
|
||||||
<link rel="apple-touch-icon" sizes="57x57" href="http://www.pcjs.org/versions/icons/current/pc-icon-57.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="72x72" href="http://www.pcjs.org/versions/icons/current/pc-icon-72.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="76x76" href="http://www.pcjs.org/versions/icons/current/pc-icon-76.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="114x114" href="http://www.pcjs.org/versions/icons/current/pc-icon-114.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="120x120" href="http://www.pcjs.org/versions/icons/current/pc-icon-120.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="144x144" href="http://www.pcjs.org/versions/icons/current/pc-icon-144.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="152x152" href="http://www.pcjs.org/versions/icons/current/pc-icon-152.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="180x180" href="http://www.pcjs.org/versions/icons/current/pc-icon-180.png">
|
|
||||||
<link rel="apple-touch-icon" sizes="192x192" href="http://www.pcjs.org/versions/icons/current/pc-icon-192.png">
|
|
||||||
<link rel="apple-touch-icon" href="http://www.pcjs.org/versions/icons/current/apple-touch-icon.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="192x192" href="http://www.pcjs.org/versions/icons/current/pc-icon-192.png">
|
|
||||||
<link rel="shortcut icon" type="image/x-icon" href="http://www.pcjs.org/versions/icons/current/favicon.ico">
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<header class="site-header">
|
|
||||||
<div class="wrapper">
|
|
||||||
<a class="site-title" href="http://www.pcjs.org/">PCjs Machines</a>
|
|
||||||
<nav class="site-nav">
|
|
||||||
<a href="#" class="menu-icon">
|
|
||||||
<svg viewBox="0 0 18 15">
|
|
||||||
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
|
|
||||||
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
|
|
||||||
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
|
|
||||||
</svg>
|
|
||||||
</a>
|
|
||||||
<div class="trigger">
|
|
||||||
<a class="page-link" href="http://www.pcjs.org/blog/">Blog</a>
|
|
||||||
<a class="page-link" href="http://www.pcjs.org/devices/">Devices</a>
|
|
||||||
<a class="page-link" href="http://www.pcjs.org/docs/">Docs</a>
|
|
||||||
<a class="page-link" href="http://www.pcjs.org/apps/">Software</a>
|
|
||||||
<a class="page-link" href="http://www.pcjs.org/docs/about/">About</a>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
</div>
|
|
||||||
<div class="wrapper">
|
|
||||||
<h4>Directory of C:\<a href="http://archive.pcjs.org/">ARCHIVE</a>.<a href="http://www.pcjs.org/">PCJS.ORG</a></h4>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
<div class="page-content">
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="post">
|
|
||||||
<article class="post-content">
|
|
||||||
<p>Welcome to the PCjs Archive Server.</p>
|
|
||||||
<p>There is nothing here to browse. You should return to <a href="http://www.pcjs.org/">pcjs.org</a></p>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<footer class="site-footer">
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="footer-col-wrapper">
|
|
||||||
<div class="footer-col footer-col-3">
|
|
||||||
<p class="text">
|
|
||||||
<span style="float:right"><a href="http://www.pcjs.org">pcjs.org</a> © 2012-2017 by <a href="https://twitter.com/jeffpar">@jeffpar</a></span><br/>
|
|
||||||
<span style="float:right"><a href="http://github.com/jeffpar/pcjs">PCjs Project</a> released under <a href="http://gnu.org/licenses/gpl.html">GPLv3</a></span>
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
@ -1,47 +0,0 @@
|
||||||
---
|
|
||||||
# Only the main Sass file needs front matter (the dashes are enough)
|
|
||||||
---
|
|
||||||
@charset "utf-8";
|
|
||||||
|
|
||||||
// Our variables
|
|
||||||
$base-font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
||||||
$base-font-size: 16px;
|
|
||||||
$small-font-size: $base-font-size * 0.875;
|
|
||||||
$base-line-height: 1.5;
|
|
||||||
|
|
||||||
$spacing-unit: 30px;
|
|
||||||
|
|
||||||
$text-color: #111;
|
|
||||||
$background-color: #fdfdfd;
|
|
||||||
$brand-color: #2a7ae2;
|
|
||||||
|
|
||||||
$grey-color: #828282;
|
|
||||||
$grey-color-light: lighten($grey-color, 40%);
|
|
||||||
$grey-color-dark: darken($grey-color, 25%);
|
|
||||||
|
|
||||||
$on-palm: 600px;
|
|
||||||
$on-laptop: 800px;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Using media queries with like this:
|
|
||||||
// @include media-query($palm) {
|
|
||||||
// .wrapper {
|
|
||||||
// padding-right: $spacing-unit / 2;
|
|
||||||
// padding-left: $spacing-unit / 2;
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
@mixin media-query($device) {
|
|
||||||
@media screen and (max-width: $device) {
|
|
||||||
@content;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Import partials from `sass_dir` (defaults to `_sass`)
|
|
||||||
@import
|
|
||||||
"base",
|
|
||||||
"layout",
|
|
||||||
"syntax-highlighting"
|
|
||||||
;
|
|
||||||
|
|
@ -59,7 +59,7 @@ Models 319 and 339 were introduced in April 1986:
|
||||||
- Enhanced 101-key keyboard
|
- Enhanced 101-key keyboard
|
||||||
|
|
||||||
IBM PC AT 5170 Configuration Options
|
IBM PC AT 5170 Configuration Options
|
||||||
------------------------------------
|
---
|
||||||
|
|
||||||
The IBM PC AT 5170 doesn't have DIP switches like previous models, but it still has a few switches and jumpers.
|
The IBM PC AT 5170 doesn't have DIP switches like previous models, but it still has a few switches and jumpers.
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@ it cannot be changed by the user.
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC AT 5170 (Models 68 and 99) Announcement
|
IBM PC AT 5170 (Models 68 and 99) Announcement
|
||||||
----------------------------------------------
|
---
|
||||||
|
|
||||||
The following details come from a [copy](http://www.minuszerodegrees.net/misc/IBM%20PC%20AT%205170%20announcement%20letter.txt)
|
The following details come from a [copy](http://www.minuszerodegrees.net/misc/IBM%20PC%20AT%205170%20announcement%20letter.txt)
|
||||||
of IBM's PC AT Announcement Letter, dated August 14, 1984.
|
of IBM's PC AT Announcement Letter, dated August 14, 1984.
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ permalink: /devices/pcx86/rom/
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC ROMs
|
IBM PC ROMs
|
||||||
-----------
|
---
|
||||||
|
|
||||||
ROMs are added to machines by including one *[ROM](/docs/pcx86/rom/)* component in the machine XML configuration file
|
ROMs are added to machines by including one *[ROM](/docs/pcx86/rom/)* component in the machine XML configuration file
|
||||||
for each ROM in the machine; eg:
|
for each ROM in the machine; eg:
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,6 @@ permalink: /devices/pcx86/video/cdp/
|
||||||
---
|
---
|
||||||
|
|
||||||
Columbia Data Products Video Adapters
|
Columbia Data Products Video Adapters
|
||||||
-------------------------------------
|
---
|
||||||
|
|
||||||
* [Columbia Data Products Color Graphics Adapter (CGA)](cga/)
|
* [Columbia Data Products Color Graphics Adapter (CGA)](cga/)
|
||||||
|
|
|
||||||
30
feed.xml
30
feed.xml
|
|
@ -1,30 +0,0 @@
|
||||||
---
|
|
||||||
layout: null
|
|
||||||
---
|
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>{{ site.title | xml_escape }}</title>
|
|
||||||
<description>{{ site.description | xml_escape }}</description>
|
|
||||||
<link>{{ site.url }}{{ site.baseurl }}/</link>
|
|
||||||
<atom:link href="{{ "/feed.xml" | prepend: site.baseurl | prepend: site.url }}" rel="self" type="application/rss+xml" />
|
|
||||||
<pubDate>{{ site.time | date_to_rfc822 }}</pubDate>
|
|
||||||
<lastBuildDate>{{ site.time | date_to_rfc822 }}</lastBuildDate>
|
|
||||||
<generator>Jekyll v{{ jekyll.version }}</generator>
|
|
||||||
{% for post in site.posts limit:10 %}
|
|
||||||
<item>
|
|
||||||
<title>{{ post.title | xml_escape }}</title>
|
|
||||||
<description>{{ post.content | xml_escape }}</description>
|
|
||||||
<pubDate>{{ post.date | date_to_rfc822 }}</pubDate>
|
|
||||||
<link>{{ post.url | prepend: site.baseurl | prepend: site.url }}</link>
|
|
||||||
<guid isPermaLink="true">{{ post.url | prepend: site.baseurl | prepend: site.url }}</guid>
|
|
||||||
{% for tag in post.tags %}
|
|
||||||
<category>{{ tag | xml_escape }}</category>
|
|
||||||
{% endfor %}
|
|
||||||
{% for cat in post.categories %}
|
|
||||||
<category>{{ cat | xml_escape }}</category>
|
|
||||||
{% endfor %}
|
|
||||||
</item>
|
|
||||||
{% endfor %}
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
||||||
100
index.md
100
index.md
|
|
@ -1,100 +0,0 @@
|
||||||
---
|
|
||||||
layout: page
|
|
||||||
permalink: /
|
|
||||||
machines:
|
|
||||||
- id: ibm5150
|
|
||||||
type: pcx86
|
|
||||||
resume: 1
|
|
||||||
name: "IBM PC (Model 5150) with Monochrome Display"
|
|
||||||
config: /devices/pcx86/machine/5150/mda/64kb/machine.xml
|
|
||||||
- id: demoC1P
|
|
||||||
type: c1p
|
|
||||||
config: /devices/c1p/machine/8kb/large/machine.xml
|
|
||||||
---
|
|
||||||
|
|
||||||
Welcome to PCjs, home of [PCx86](/docs/pcx86/), the original IBM PC simulation that runs in your web browser. It is
|
|
||||||
one of several JavaScript Machines in the [PCjs Project](https://github.com/jeffpar/pcjs), an open-source project that
|
|
||||||
includes:
|
|
||||||
|
|
||||||
* [PCx86](/docs/pcx86/), an x86-based emulator of the [IBM PC and PC-compatibles](/devices/pcx86/machine/)
|
|
||||||
* [PC8080](/modules/pc8080/), an 8080 machine emulator (see [Space Invaders](/devices/pc8080/machine/invaders/) and the [VT100 Terminal](/devices/pc8080/machine/vt100/))
|
|
||||||
* [C1Pjs](/docs/c1pjs/), an emulation of the 6502-based [Ohio Scientific Challenger 1P](/devices/c1p/)
|
|
||||||
* [PDPjs](/docs/pdpjs/), a set of machine emulation modules supporting the DEC [PDP-10](/devices/pdp10/machine/) and [PDP-11](/devices/pdp11/machine/)
|
|
||||||
|
|
||||||
All PCjs machine simulations are written entirely in [JavaScript](/modules/). No Flash, Java or other plugins are
|
|
||||||
required. Supported browsers include modern versions of Chrome, Safari, Firefox, Internet Explorer (v9.0 and up), Edge,
|
|
||||||
and assorted mobile browsers.
|
|
||||||
|
|
||||||
{% include machine.html id="ibm5150" %}
|
|
||||||
|
|
||||||
The [JavaScript Machine](/devices/pcx86/machine/5150/mda/64kb/) above uses [PCx86](/docs/pcx86/) configured with an Intel
|
|
||||||
8088 running at 4.77Mhz, with 64Kb of RAM and an IBM Monochrome Display Adapter. For more control, there are also
|
|
||||||
[Control Panel](/devices/pcx86/machine/5150/mda/64kb/debugger/) and [Soft Keyboard](/devices/pcx86/machine/5150/mda/64kb/softkbd/)
|
|
||||||
configurations, featuring the built-in PCx86 Debugger. For even greater control, build your own PC. The
|
|
||||||
[PCx86 Documentation](/docs/pcx86/) will help you get started.
|
|
||||||
|
|
||||||
PCx86 has steadily evolved to support more classic x86-based machines, including the IBM PC XT, the 80286-based IBM PC AT,
|
|
||||||
and the 80386-based COMPAQ DeskPro 386. PCx86 fully supports the original machine ROMs, video cards, etc, and all
|
|
||||||
machines run at their original speeds.
|
|
||||||
|
|
||||||
The goals of the [PCjs Project](/docs/about/) are to create fast, full-featured simulations of classic
|
|
||||||
computer hardware, help people understand how these early machines worked, make it easy to experiment with different
|
|
||||||
machine configurations, and provide a platform for running and analyzing old computer software.
|
|
||||||
|
|
||||||
Demos
|
|
||||||
-----
|
|
||||||
Some pre-configured machines are shown below, ready to run BASIC, DOS, Windows, OS/2, and other assorted software.
|
|
||||||
|
|
||||||
{% include screenshot.html src="/apps/pcx86/1981/visicalc/thumbnail.jpg" width="200" height="120" title="IBM PC running VisiCalc" link="/apps/pcx86/1981/visicalc/" %}
|
|
||||||
{% include screenshot.html src="/apps/pcx86/1981/donkey/thumbnail.jpg" width="200" height="120" title="IBM PC running DONKEY.BAS" link="/apps/pcx86/1981/donkey/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/1.00/thumbnail.jpg" width="200" height="120" title="IBM PC XT w/EGA, Windows 1.0" link="/disks/pcx86/windows/1.00/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/1.01/cga/thumbnail.jpg" width="200" height="120" title="IBM PC XT w/CGA, Windows 1.01" link="/disks/pcx86/windows/1.01/cga/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/1.01/thumbnail.jpg" width="200" height="120" title="IBM PC XT w/EGA, Windows 1.01" link="/disks/pcx86/windows/1.01/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/os2/ibm/1.0/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/EGA, OS/2 1.0" link="/disks/pcx86/os2/ibm/1.0/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/2.0x/thumbnail.jpg" width="200" height="120" title="COMPAQ DeskPro 386, Windows/386 2.01" link="/disks/pcx86/windows/2.0x/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/3.00/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/EGA, Windows 3.00" link="/disks/pcx86/windows/3.00/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/3.10/thumbnail.jpg" width="200" height="120" title="IBM PC AT w/VGA, Windows 3.10" link="/disks/pcx86/windows/3.10/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/windows/win95/4.00.950/thumbnail.jpg" width="200" height="120" title="COMPAQ DeskPro 386, Windows 95" link="/disks/pcx86/windows/win95/4.00.950/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/cpm/1.1b/thumbnail.jpg" width="200" height="120" title="IBM PC w/MDA, CP/M-86" link="/disks/pcx86/cpm/1.1b/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/games/microsoft/adventure/thumbnail.jpg" width="200" height="120" title="Microsoft Adventure (1981)" link="/disks/pcx86/games/microsoft/adventure/" %}
|
|
||||||
{% include screenshot.html src="/apps/pcx86/1982/esuite/thumbnail.jpg" width="200" height="120" title="Executive Suite (1982)" link="/apps/pcx86/1982/esuite/" %}
|
|
||||||
{% include screenshot.html src="/disks/pcx86/games/infocom/zork1/thumbnail.jpg" width="200" height="120" title="Zork I (1982)" link="/disks/pcx86/games/infocom/zork1/" %}
|
|
||||||
{% include screenshot.html src="/apps/pcx86/1983/adventmath/thumbnail.jpg" width="200" height="120" title="Adventures in Math (1983)" link="/apps/pcx86/1983/adventmath/" %}
|
|
||||||
{% include screenshot.html src="/apps/pcx86/1985/rogue/thumbnail.jpg" width="200" height="120" title="Rogue (1985)" link="/apps/pcx86/1985/rogue/" %}
|
|
||||||
|
|
||||||
There are many more [PCx86 Demos](/devices/pcx86/machine/#ready-to-run-app-demos), including an
|
|
||||||
[IBM PC with Dual Displays](/devices/pcx86/machine/5150/dual/64kb/) demonstrating early multi-monitor support,
|
|
||||||
and multiple IBM PC XT machines running side-by-side with [CGA Displays](/devices/pcx86/machine/5160/cga/256kb/array/)
|
|
||||||
and [EGA Displays](/devices/pcx86/machine/5160/ega/640kb/array/).
|
|
||||||
|
|
||||||
C1Pjs
|
|
||||||
-----
|
|
||||||
Below is the [OSI Challenger C1P](/docs/c1pjs/), another simulation in the PCjs Project.
|
|
||||||
It simulates Ohio Scientific's 6502-based microcomputer, released in 1978. More details about this simulation
|
|
||||||
and the original machine are available in the [C1Pjs Documentation](/docs/c1pjs/).
|
|
||||||
|
|
||||||
{% include machine.html id="demoC1P" %}
|
|
||||||
|
|
||||||
License
|
|
||||||
-------
|
|
||||||
The [PCjs Project](https://github.com/jeffpar/pcjs) is now an open-source project on [GitHub](http://github.com/).
|
|
||||||
All published portions are free for redistribution and/or modification under the terms of the
|
|
||||||
[GNU General Public License](/LICENSE) as published by the Free Software Foundation, either version 3 of the License,
|
|
||||||
or (at your option) any later version.
|
|
||||||
|
|
||||||
You are required to include the following copyright notice, with a link to [{{ site.pcjs.domain }}]({{ site.url }}/):
|
|
||||||
|
|
||||||
> [PCjs]({{ site.url }}/) © 2012-2017 by [Jeff Parsons](mailto:Jeff@pcjs.org) ([@jeffpar](http://twitter.com/jeffpar))
|
|
||||||
|
|
||||||
in every source code file of every copy or modified version of this work, and to display that notice on every web page
|
|
||||||
or computer that runs any version of this software.
|
|
||||||
|
|
||||||
See [LICENSE](/LICENSE) for details.
|
|
||||||
|
|
||||||
More Information
|
|
||||||
----------------
|
|
||||||
Learn more about the [PCjs Project](/docs/about/) and [PCx86](/docs/about/pcx86/). To
|
|
||||||
create your own PCx86 machines, see the [PCx86 Documentation](/docs/pcx86/) for details.
|
|
||||||
|
|
||||||
If you have questions or run into any problems, feel free to [tweet](http://twitter.com/jeffpar) or
|
|
||||||
[email](mailto:Jeff@pcjs.org).
|
|
||||||
|
|
@ -8,5 +8,4 @@ Challenger 1P Publications
|
||||||
--------------------------
|
--------------------------
|
||||||
|
|
||||||
* [Data Sheets](datasheets/)
|
* [Data Sheets](datasheets/)
|
||||||
* [Programming Guides/Samples](programming/)
|
|
||||||
* [Technical Reference Manuals](techref/)
|
* [Technical Reference Manuals](techref/)
|
||||||
|
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
User-agent: *
|
|
||||||
Disallow: /web/
|
|
||||||
Loading…
Reference in a new issue