Skip to content

Commit

Permalink
Merge branch 'master' into gh-pages
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffpar committed Sep 15, 2023
2 parents 7e4b4a4 + a848d3b commit 45e3d0b
Show file tree
Hide file tree
Showing 314 changed files with 14,499 additions and 1,108,720 deletions.
34 changes: 18 additions & 16 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -478,6 +478,7 @@
"request": "launch",
"program": "${workspaceFolder}/tools/pc/pc.js",
"args": [
"--target=40M"
],
"cwd": "${workspaceFolder}/tools/pc/disks/test",
"stopOnEntry": false,
Expand Down Expand Up @@ -555,9 +556,11 @@
"program": "${workspaceFolder}/tools/pc/pc.js",
"args": [
"ibm5160",
"dir"
"load a: pc dos 2.0 disk 1",
"--sys=pcdos",
"--ver=2.00"
],
"cwd": "${workspaceFolder}/tools/pc/disks/MSDOS330",
"cwd": "${workspaceFolder}/tools/pc/disks/test",
"stopOnEntry": false,
"console": "integratedTerminal",
"outFiles": [
Expand All @@ -576,7 +579,7 @@
"program": "${workspaceFolder}/tools/pc/pc.js",
"args": [
"https://www.pcjs.org/machines/pcx86/ibm/5160/cga/640kb/machine.xml",
"disks/msdos320",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -598,10 +601,9 @@
"program": "${workspaceFolder}/tools/pc/pc.js",
"args": [
"ibm5170",
"--target=30M",
"--halt"
"--disk=https://harddisks.pcjs.org/pcx86/20mb/IBMOS210-EGA.json"
],
"cwd": "${workspaceFolder}/tools/pc/disks/MSDOS330",
"cwd": "${workspaceFolder}/tools/pc",
"stopOnEntry": false,
"console": "integratedTerminal",
"outFiles": [
Expand All @@ -622,7 +624,7 @@
"ibm5170",
"--driveclass=pcjs",
"--drivesize=27",
"disks/msdos330",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -645,7 +647,7 @@
"args": [
"ibm5170",
"--drivetype=200:4:17",
"disks/msdos330",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -670,7 +672,7 @@
"--ver=3.31",
"--drivesize=40"
],
"cwd": "${workspaceFolder}/tools/pc/disks/MSDOS330/SRC/MBR",
"cwd": "${workspaceFolder}/tools/pc/disks/test",
"stopOnEntry": false,
"console": "integratedTerminal",
"outFiles": [
Expand Down Expand Up @@ -774,7 +776,7 @@
"args": [
"--sys=compaq",
"--ver=3.31",
"disks/MSDOS320",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -797,7 +799,7 @@
"args": [
"--sys=pcdos",
"--ver=2.00",
"disks/MSDOS320",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -821,7 +823,7 @@
"--sys=pcdos",
"--ver=2.00",
"--drivesize=20mb",
"disks/MSDOS320",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -844,7 +846,7 @@
"args": [
"--sys=pcdos",
"--ver=3.10",
"disks/MSDOS320",
"disks/test",
"dir"
],
"cwd": "${workspaceFolder}/tools/pc",
Expand All @@ -869,7 +871,7 @@
"--ver=3.10",
"--drivesize=20mb",
"ibm5170",
"disks/MSDOS320",
"disks/test",
"dir *.*",
],
"cwd": "${workspaceFolder}/tools/pc",
Expand Down Expand Up @@ -917,7 +919,7 @@
"--sys=compaq",
"--ver=3.31"
],
"cwd": "${workspaceFolder}/tools/pc/disks/MSDOS330/SRC/MBR",
"cwd": "${workspaceFolder}/tools/pc/disks/test",
"stopOnEntry": false,
"console": "integratedTerminal",
"outFiles": [
Expand Down Expand Up @@ -1685,7 +1687,7 @@
"--target=10M",
"--overwrite"
],
"cwd": "${workspaceFolder}/tools/pc/disks/MSDOS330/SRC",
"cwd": "${workspaceFolder}/tools/pc/disks/test",
"stopOnEntry": false,
"console": "integratedTerminal",
"outFiles": [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,15 @@
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' -%}
{%- include machines/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' -%}
{%- include machines/command.html type='button' label='Try It!' machine='vt100' component='Keyboard' command='scriptName' -%}

should generate something like this:

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
2 changes: 1 addition & 1 deletion _includes/web/head.html
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
<link rel="shortcut icon" href="{{ site.baseurl }}/assets/icons/favicon.ico">
<meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="{{ site.baseurl }}/assets/icons/browserconfig.xml">
{% include machine/styles.html %}
{% include machines/styles.html %}
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
Expand Down
2 changes: 1 addition & 1 deletion _layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ <h1 id="pcjs-machines"><a href="{{ '/' | absolute_url }}">{{ site.title | defaul
<a href="{{ site.github.repository_url }}">PCjs</a> is released under an <a href="{{ absolute_url }}/LICENSE.txt">MIT License</a></p>
</footer>
</div>
{% include machine/scripts.html %}
{% include machines/scripts.html %}
{% include web/scripts.html explorer="/tools/modules/web/explorer.js" %}
</body>
</html>
2 changes: 1 addition & 1 deletion blog/_posts/2016/2016-08-03-the-vt100-terminal.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ machines:
type: vt100
name: DEC VT100
config: /machines/dec/vt100/vt100.json
layout: /_includes/vt100/vt100-diag.html
layout: /_includes/machines/vt100/vt100-diag.html
---

Summer has been filled with distractions, but I've finally begun making headway on a
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ machines:
type: vt100
name: DEC VT100
config: /machines/dec/vt100/vt100.json
layout: /_includes/vt100/vt100.html
layout: /_includes/machines/vt100/vt100.html
connection: serialPort->ibm5170.com2
- id: ibm5170
type: pcx86
Expand Down Expand Up @@ -62,7 +62,7 @@ was add the following Front Matter to the top of the Markdown file:
type: vt100
name: DEC VT100
config: /machines/dec/vt100/vt100.json
layout: /_includes/vt100/vt100.html
layout: /_includes/machines/vt100/vt100.html
connection: serialPort->ibm5170.com2

and then embed the machines in the post, each with a single line:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ machines:
type: vt100
name: DEC VT100
config: /machines/dec/vt100/vt100.json
layout: /_includes/vt100/vt100.html
layout: /_includes/machines/vt100/vt100.html
connection: serialPort->test1170.dl11
---

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ for example:

```javascript
import BusPDP11 from "./bus.js";
import MessagesPDP11 from "./messages.js";
import MESSAGE from "./message.js";
import Component from "../../../../modules/v2/component.js";
import State from "../../../../modules/v2/state.js";
import Str from "../../../../modules/v2/strlib.js";
Expand Down
4 changes: 2 additions & 2 deletions blog/_posts/2017/2017-01-03-pdp-11-tutorials.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,14 +43,14 @@ The second feature is a generalized method for sending commands to components wi
want to send some serial data to a machine:

{% raw %}
{% include machine/command.html type='button' label='Try It!' machine='test1170' component='SerialPort' command='receiveData' value='HELP\r' %}
{% include machines/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:

<button type="button" onclick="commandMachine('test1170','SerialPort','receiveData','HELP\r')">Try It!</button>

In fact, let's try it now. {% include machine/command.html type='button' label='Try It!' machine='test1170' component='SerialPort' command='receiveData' value='HELP\r' %}
In fact, let's try it now. {% include machines/command.html type='button' label='Try It!' machine='test1170' component='SerialPort' command='receiveData' value='HELP\r' %}

Obviously, every component we want to control will need to be updated to export the necessary "command" functions.

Expand Down
36 changes: 18 additions & 18 deletions blog/_posts/2017/2017-02-09-pdp-11-front-panel-demo.md
Original file line number Diff line number Diff line change
Expand Up @@ -66,75 +66,75 @@ The above "toggle-in" can broken down into the following steps.

Step 1: Load ADDRESS register with 200.

{% include machine/command.html type='clickOnce' label='LOAD 200' machine='test1170' command='script' value='set Panel SR 200; sleep 500; hold Panel LOAD 250' %}
{% include machines/command.html type='clickOnce' label='LOAD 200' machine='test1170' command='script' value='set Panel SR 200; sleep 500; hold Panel LOAD 250' %}

Step 2: Deposit 012737 at ADDRESS 200.

{% include machine/command.html type='clickOnce' label='DEPOSIT 012737' machine='test1170' command='script' value='set Panel SR 012737; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 012737' machine='test1170' command='script' value='set Panel SR 012737; sleep 500; hold Panel DEP 250' %}

Step 3: Deposit 000400 at ADDRESS 202.

{% include machine/command.html type='clickOnce' label='DEPOSIT 000400' machine='test1170' command='script' value='set Panel SR 000400; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 000400' machine='test1170' command='script' value='set Panel SR 000400; sleep 500; hold Panel DEP 250' %}

Step 4: Deposit 177572 at ADDRESS 204.

{% include machine/command.html type='clickOnce' label='DEPOSIT 177572' machine='test1170' command='script' value='set Panel SR 177572; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 177572' machine='test1170' command='script' value='set Panel SR 177572; sleep 500; hold Panel DEP 250' %}

Step 5: Deposit 012737 at ADDRESS 206.

{% include machine/command.html type='clickOnce' label='DEPOSIT 012737' machine='test1170' command='script' value='set Panel SR 012737; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 012737' machine='test1170' command='script' value='set Panel SR 012737; sleep 500; hold Panel DEP 250' %}

Step 6: Deposit 070707 at ADDRESS 210.

{% include machine/command.html type='clickOnce' label='DEPOSIT 070707' machine='test1170' command='script' value='set Panel SR 070707; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 070707' machine='test1170' command='script' value='set Panel SR 070707; sleep 500; hold Panel DEP 250' %}

Step 7: Deposit 000200 at ADDRESS 212.

{% include machine/command.html type='clickOnce' label='DEPOSIT 000200' machine='test1170' command='script' value='set Panel SR 000200; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 000200' machine='test1170' command='script' value='set Panel SR 000200; sleep 500; hold Panel DEP 250' %}

Step 8: Deposit 000000 at ADDRESS 214.

{% include machine/command.html type='clickOnce' label='DEPOSIT 000000' machine='test1170' command='script' value='set Panel SR 000000; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 000000' machine='test1170' command='script' value='set Panel SR 000000; sleep 500; hold Panel DEP 250' %}

Step 9: Load ADDRESS register with 300.

{% include machine/command.html type='clickOnce' label='LOAD 300' machine='test1170' command='script' value='set Panel SR 300; sleep 500; hold Panel LOAD 250' %}
{% include machines/command.html type='clickOnce' label='LOAD 300' machine='test1170' command='script' value='set Panel SR 300; sleep 500; hold Panel LOAD 250' %}

Step 10: Deposit 300 at ADDRESS 300.

{% include machine/command.html type='clickOnce' label='DEPOSIT 300' machine='test1170' command='script' value='hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 300' machine='test1170' command='script' value='hold Panel DEP 250' %}

Step 11: Load ADDRESS register with 17772300.

{% include machine/command.html type='clickOnce' label='LOAD 17772300' machine='test1170' command='script' value='set Panel SR 17772300; sleep 500; hold Panel LOAD 250' %}
{% include machines/command.html type='clickOnce' label='LOAD 17772300' machine='test1170' command='script' value='set Panel SR 17772300; sleep 500; hold Panel LOAD 250' %}

Step 12: Deposit 077406 at ADDRESS 17772300 ("Set Kernel I PDR 0 to R/W 4K page").

{% include machine/command.html type='clickOnce' label='DEPOSIT 077406' machine='test1170' command='script' value='set Panel SR 077406; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 077406' machine='test1170' command='script' value='set Panel SR 077406; sleep 500; hold Panel DEP 250' %}

Step 13: Load ADDRESS register with 17772340.

{% include machine/command.html type='clickOnce' label='LOAD 17772340' machine='test1170' command='script' value='set Panel SR 17772340; sleep 500; hold Panel LOAD 250' %}
{% include machines/command.html type='clickOnce' label='LOAD 17772340' machine='test1170' command='script' value='set Panel SR 17772340; sleep 500; hold Panel LOAD 250' %}

Step 14: Deposit 000001 at ADDRESS 17772340 ("Set Kernel I PAR 0 to (Base address 100").

{% include machine/command.html type='clickOnce' label='DEPOSIT 000001' machine='test1170' command='script' value='set Panel SR 000001; sleep 500; hold Panel DEP 250' %}
{% include machines/command.html type='clickOnce' label='DEPOSIT 000001' machine='test1170' command='script' value='set Panel SR 000001; sleep 500; hold Panel DEP 250' %}

Step 15: Load ADDRESS register with 200.

{% include machine/command.html type='clickOnce' label='LOAD 200' machine='test1170' command='script' value='set Panel SR 200; sleep 500; hold Panel LOAD 250' %}
{% include machines/command.html type='clickOnce' label='LOAD 200' machine='test1170' command='script' value='set Panel SR 200; sleep 500; hold Panel LOAD 250' %}

Step 16: Set ENABLE and toggle START.

{% include machine/command.html type='clickOnce' label='START' machine='test1170' command='script' value='set Panel ENABLE 1; sleep 500; hold Panel START 250' %}
{% include machines/command.html type='clickOnce' label='START' machine='test1170' command='script' value='set Panel ENABLE 1; sleep 500; hold Panel START 250' %}

Step 17: Load ADDRESS register with 300.

{% include machine/command.html type='clickOnce' label='LOAD 300' machine='test1170' command='script' value='set Panel SR 300; sleep 500; hold Panel LOAD 250' %}
{% include machines/command.html type='clickOnce' label='LOAD 300' machine='test1170' command='script' value='set Panel SR 300; sleep 500; hold Panel LOAD 250' %}

Step 18: Examine ADDRESS 300.

{% include machine/command.html type='clickOnce' label='EXAM' machine='test1170' command='script' value='hold Panel EXAM 250' %}
{% include machines/command.html type='clickOnce' label='EXAM' machine='test1170' command='script' value='hold Panel EXAM 250' %}

At this point, the DATA register should display `070707`. You can also use the PCjs Debugger's `rm` command to verify
the contents of the DATA register, or use a Dump command (`dw 300 l1`) to dump memory location 300.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ machines:
type: ti57
name: TI-57 Programmable Calculator
config: /machines/ti/ti57/rev0/ti57.json
layout: /_includes/ti57/ti57-debug.html
layout: /_includes/machines/ti57/ti57-debug.html
---

For years, we all assumed that **PCjs** meant "Personal Computers in JavaScript." Even I thought that. But now
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ machines:
type: ti57
name: TI-57 Programmable Calculator
config: /machines/ti/ti57/rev0/ti57.json
layout: /_includes/ti57/ti57-diag.html
layout: /_includes/machines/ti57/ti57-diag.html
---

The new [TI-57 Programmable Calculator](/machines/ti/ti57/) emulator, shown below, is the latest addition to the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,12 @@ machines:
type: ti55
name: TI-55 Programmable Calculator
config: /machines/ti/ti55/ti55.json
layout: /_includes/ti55/ti55-full.html
layout: /_includes/machines/ti55/ti55-full.html
- id: ti57-rev0
type: ti57
name: TI-57 Programmable Calculator
config: /machines/ti/ti57/rev0/ti57.json
layout: /_includes/ti57/ti57-full.html
layout: /_includes/machines/ti57/ti57-full.html
---

Building on the PCjs [TI-57 Programmable Calculator](/blog/2017/11/10/) emulator,
Expand Down
2 changes: 1 addition & 1 deletion blog/_posts/2019/2019-09-28-space-invaders-revisited.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ machines:
type: invaders
name: Space Invaders
config: /machines/arcade/invaders/invaders.json
layout: /_includes/invaders/invaders-diag.html
layout: /_includes/machines/invaders/invaders-diag.html
---

When I first started working on PCjs, JavaScript features like
Expand Down
16 changes: 8 additions & 8 deletions blog/_posts/2023/2023-09-05-wrapping-up-support-for-fat.md
Original file line number Diff line number Diff line change
Expand Up @@ -275,13 +275,13 @@ So that kind of answers the question: *maybe* use FAT12 if the volume is 4Mb or

With respect to question #2, there's no sign of "the table" that DOS used to choose cluster size. In DOS 2.00, as we saw above, there was only a series of disk size comparisons, which can be summarized in a table:

Disk Size Cluster Size Root Directory Size
--------- ------------ -------------------
<= 256K 512-byte clusters 64 root entries
<= 1Mb 1K clusters 112 root entries
<= 4Mb 2K clusters 256 root entries
<= 16Mb 4K clusters 512 root entries
> 16Mb 8K clusters 1024 root entries
Disk Size Cluster Size Root Directory Size
--------- ------------ -------------------
<= 256Kb 1 sector 64 root entries
<= 1Mb 2 sectors 112 root entries
<= 4Mb 4 sectors 256 root entries
<= 16Mb 8 sectors 512 root entries
> 16Mb 16 sectors 1024 root entries

And starting with DOS 3.00, since FAT16 was now preferred, "the table" for FAT12 was reduced to a single entry that *always* selected 4K clusters and was used *only* if the disk contained 32680 (0x7FA8) sectors or less (approximately 16Mb).

Expand All @@ -299,7 +299,7 @@ Aaron had a long and legendary career at Microsoft, working on DOS 1.1 and subse

My path occasionally crossed Aaron's while we were both working on Windows 95, and I even share credit with him on the "Common Name Space For Long And Short Filenames" Patent ([No. 5,579,517](https://patents.google.com/patent/US5579517A/en)) -- although to be honest, my contribution to that "invention" was pretty minimal. All I recall are hallway conversations about the viability of combinations of attribute bits, including the volume label bit, to hide long filename entries from previous versions of DOS.

Aaron was very smart, opinionated, and intense. One way that intensity came out was a tendency to really "hammer" on certain points, probably because he was tired of seeing other people repeatedly making common mistakes. And there are passages in the [FAT: General Overview of On-Disk Format](/documents/papers/microsoft/MS_FAT_OVERVIEW_103-2000-12-06.pdf) document strike me as "vintage Aaron Reynolds".
Aaron was very smart, opinionated, and intense. One way that intensity came out was a tendency to really "hammer" on certain points, probably because he was tired of seeing other people repeatedly making common mistakes. And there are passages in the [FAT: General Overview of On-Disk Format](/documents/papers/microsoft/MS_FAT_OVERVIEW_103-2000-12-06.pdf) document that strike me as "vintage Aaron Reynolds".

For example:

Expand Down
Loading

0 comments on commit 45e3d0b

Please sign in to comment.