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' %}
|
||||
{% 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>
|
||||
|
||||
|
|
|
|||
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
|
||||
|
||||
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.
|
||||
|
||||
|
|
@ -103,7 +103,7 @@ it cannot be changed by the user.
|
|||
---
|
||||
|
||||
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)
|
||||
of IBM's PC AT Announcement Letter, dated August 14, 1984.
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ permalink: /devices/pcx86/rom/
|
|||
---
|
||||
|
||||
IBM PC ROMs
|
||||
-----------
|
||||
---
|
||||
|
||||
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:
|
||||
|
|
|
|||
|
|
@ -5,6 +5,6 @@ permalink: /devices/pcx86/video/cdp/
|
|||
---
|
||||
|
||||
Columbia Data Products Video Adapters
|
||||
-------------------------------------
|
||||
---
|
||||
|
||||
* [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/)
|
||||
* [Programming Guides/Samples](programming/)
|
||||
* [Technical Reference Manuals](techref/)
|
||||
|
|
|
|||
|
|
@ -1,2 +0,0 @@
|
|||
User-agent: *
|
||||
Disallow: /web/
|
||||
Loading…
Reference in a new issue