my_modules is simply modules now

This commit is contained in:
Jeff Parsons 2014-11-11 08:19:48 -08:00 • committed by jeffpar
commit e0012c3c62
139 changed files with 187 additions and 197 deletions

View file

@ -12,7 +12,7 @@ indent_style = tab
indent_size = 8 indent_size = 8
trim_trailing_whitespace = true trim_trailing_whitespace = true
[my_modules/**.js] [modules/**.js]
indent_style = space indent_style = space
indent_size = 4 indent_size = 4
trim_trailing_whitespace = true trim_trailing_whitespace = true

View file

@ -77,7 +77,7 @@
* I added the "prepjs" task to perform the same constant inlining that my old PHP script "inline.php" * I added the "prepjs" task to perform the same constant inlining that my old PHP script "inline.php"
* used to do as part of the old "jsmachines.net" build process. Unfortunately, Grunt appears to be * used to do as part of the old "jsmachines.net" build process. Unfortunately, Grunt appears to be
* a real memory hog, and so "prepjs" had to be disabled until I could resolve that issue (see my notes * a real memory hog, and so "prepjs" had to be disabled until I could resolve that issue (see my notes
* in "my_modules/grunts/prepjs/tasks/prepjs.js" for details). * in "modules/grunts/prepjs/tasks/prepjs.js" for details).
* *
* With the current version of the Closure Compiler, I don't see any measurable performance benefit * With the current version of the Closure Compiler, I don't see any measurable performance benefit
* to doing my own inlining, but I still wanted to port the code, partly in case I discover some benefit * to doing my own inlining, but I still wanted to port the code, partly in case I discover some benefit
@ -312,7 +312,7 @@ module.exports = function(grunt) {
"c1pxsl": { "c1pxsl": {
files: [ files: [
{ {
cwd: "./my_modules/shared/templates/", cwd: "./modules/shared/templates/",
src: ["common.css", "common.xsl", "document.css", "document.xsl", "machine.xsl", "manifest.xsl", "outline.xsl"], src: ["common.css", "common.xsl", "document.css", "document.xsl", "machine.xsl", "manifest.xsl", "outline.xsl"],
dest: "versions/c1pjs/<%= pkg.version %>/", dest: "versions/c1pjs/<%= pkg.version %>/",
expand: true expand: true
@ -330,7 +330,7 @@ module.exports = function(grunt) {
"pcxsl": { "pcxsl": {
files: [ files: [
{ {
cwd: "./my_modules/shared/templates/", cwd: "./modules/shared/templates/",
src: ["common.css", "common.xsl", "document.css", "document.xsl", "machine.xsl", "manifest.xsl", "outline.xsl"], src: ["common.css", "common.xsl", "document.css", "document.xsl", "machine.xsl", "manifest.xsl", "outline.xsl"],
dest: "versions/pcjs/<%= pkg.version %>/", dest: "versions/pcjs/<%= pkg.version %>/",
expand: true expand: true
@ -348,7 +348,7 @@ module.exports = function(grunt) {
"c1pjs": { "c1pjs": {
files: [ files: [
{ {
cwd: "./my_modules/c1pjs-client/templates/", cwd: "./modules/c1pjs/templates/",
src: ["components.*"], src: ["components.*"],
dest: "versions/c1pjs/<%= pkg.version %>/", dest: "versions/c1pjs/<%= pkg.version %>/",
expand: true expand: true
@ -365,7 +365,7 @@ module.exports = function(grunt) {
"pcjs": { "pcjs": {
files: [ files: [
{ {
cwd: "./my_modules/pcjs-client/templates/", cwd: "./modules/pcjs/templates/",
src: ["components.*"], src: ["components.*"],
dest: "versions/pcjs/<%= pkg.version %>/", dest: "versions/pcjs/<%= pkg.version %>/",
expand: true expand: true
@ -398,7 +398,7 @@ module.exports = function(grunt) {
run: { run: {
"delete-indexes": { "delete-indexes": {
options: {cwd: "."}, options: {cwd: "."},
cmd: "./my_modules/htmlout/bin/delete_indexes.sh", cmd: "./modules/htmlout/bin/delete_indexes.sh",
args: [] args: []
}, },
"zipify-demos": { "zipify-demos": {
@ -438,8 +438,8 @@ module.exports = function(grunt) {
grunt.loadNpmTasks("grunt-run"); grunt.loadNpmTasks("grunt-run");
grunt.loadNpmTasks("grunt-text-replace"); grunt.loadNpmTasks("grunt-text-replace");
grunt.loadTasks("my_modules/grunts/manifester/tasks"); grunt.loadTasks("modules/grunts/manifester/tasks");
grunt.loadTasks("my_modules/grunts/prepjs/tasks"); grunt.loadTasks("modules/grunts/prepjs/tasks");
grunt.registerTask("preCompiler", grunt.option("rebuild")? ["concat:tmp-c1pjs", "concat:tmp-pcjs"] : ["newer:concat:tmp-c1pjs", "newer:concat:tmp-pcjs"]); grunt.registerTask("preCompiler", grunt.option("rebuild")? ["concat:tmp-c1pjs", "concat:tmp-pcjs"] : ["newer:concat:tmp-c1pjs", "newer:concat:tmp-pcjs"]);

View file

@ -63,9 +63,9 @@ operation.
The project includes: The project includes:
- A simple Node-based web server ([server.js](server.js)) - A simple Node-based web server ([server.js](server.js))
- Custom Node modules used by the web server ([HTMLOut](my_modules/htmlout/), [MarkOut](my_modules/markout/), [DiskDump](my_modules/diskdump/), [FileDump](my_modules/filedump/)) - Custom Node modules used by the web server ([HTMLOut](modules/htmlout/), [MarkOut](modules/markout/), [DiskDump](modules/diskdump/), [FileDump](modules/filedump/))
- A variety of IBM PC and C1P configuration and resource files (see [/apps](apps/), [/devices](devices/) and [/disks](disks/)) - A variety of IBM PC and C1P configuration and resource files (see [/apps](apps/), [/devices](devices/) and [/disks](disks/))
- The [PCjs](my_modules/pcjs-client/lib/) and [C1Pjs](my_modules/c1pjs-client/lib/) client applications, both "compiled" and uncompiled - The [PCjs](modules/pcjs/lib/) and [C1Pjs](modules/c1pjs/lib/) client applications, both "compiled" and uncompiled
- A smattering of [PCjs](docs/pcjs/) and [C1Pjs](docs/c1pjs/) documentation, along with [blog posts](blog/), related [publications](pubs/) and more - A smattering of [PCjs](docs/pcjs/) and [C1Pjs](docs/c1pjs/) documentation, along with [blog posts](blog/), related [publications](pubs/) and more
The bundled web server is not strictly required. Any web server (Node, Apache, Nginx, etc) that can serve the necessary The bundled web server is not strictly required. Any web server (Node, Apache, Nginx, etc) that can serve the necessary
@ -77,7 +77,7 @@ included in the project, but unless all the resource files are moved into a sing
[Demos](/docs/pcjs/demos/)), your browser will probably be unable to load all of them, due to security restrictions. [Demos](/docs/pcjs/demos/)), your browser will probably be unable to load all of them, due to security restrictions.
Using the bundled web server is the preferred solution. Using the bundled web server is the preferred solution.
The project includes a large selection of disk images, and a powerful [DiskDump](my_modules/diskdump/) utility that The project includes a large selection of disk images, and a powerful [DiskDump](modules/diskdump/) utility that
runs on both the client and server, featuring a command-line interface (CLI) and web server API. Originally created to dump runs on both the client and server, featuring a command-line interface (CLI) and web server API. Originally created to dump
existing disk images as JSON, **DiskDump** has evolved into a full-featured disk image generator, capable of creating PC-compatible existing disk images as JSON, **DiskDump** has evolved into a full-featured disk image generator, capable of creating PC-compatible
diskette *and* hard disk images from either lists *or* directories of files (including all subdirectories). diskette *and* hard disk images from either lists *or* directories of files (including all subdirectories).
@ -189,7 +189,7 @@ Using PCjs
The PCjs web server is little more than a file/directory browser for the PCjs project, plus a collection of APIs. The PCjs web server is little more than a file/directory browser for the PCjs project, plus a collection of APIs.
If a URL corresponds to a PCjs project folder and no "index.html" exists in that folder, the server loads an HTML If a URL corresponds to a PCjs project folder and no "index.html" exists in that folder, the server loads an HTML
template ([common.html](my_modules/shared/templates/common.html)) and generates an "index.html" for that folder. template ([common.html](modules/shared/templates/common.html)) and generates an "index.html" for that folder.
The contents of the "index.html" will vary depending on the contents of the folder; for example, if the folder The contents of the "index.html" will vary depending on the contents of the folder; for example, if the folder
contains a README.md, then that file is converted to HTML and embedded in the "index.html". Similarly, if the folder contains a README.md, then that file is converted to HTML and embedded in the "index.html". Similarly, if the folder
@ -200,16 +200,16 @@ contains a machine XML file, that is embedded as well.
The PCjs client app can also be run from the command-line mode using Node, making it possible to script the application, The PCjs client app can also be run from the command-line mode using Node, making it possible to script the application,
run a series of automated tests, etc: run a series of automated tests, etc:
cd my_modules/pcjs-client/bin cd modules/pcjs/bin
node pcjs node pcjs
The [pcjs](my_modules/pcjs-client/bin/pcjs) script in [my_modules/pcjs-client/bin](my_modules/pcjs-client/bin) loads The [pcjs](modules/pcjs/bin/pcjs) script in [modules/pcjs/bin](modules/pcjs/bin) loads
all the PCjs browser scripts listed in the root [package.json](/package.json) and then starts a Node REPL ("read-eval-print loop"). all the PCjs browser scripts listed in the root [package.json](/package.json) and then starts a Node REPL ("read-eval-print loop").
The REPL handles a few special commands (eg, "load", "quit") and passes anything else to the PCjs Debugger component. The REPL handles a few special commands (eg, "load", "quit") and passes anything else to the PCjs Debugger component.
If no Debugger component has been created yet, or if the Debugger didn't recognize the command, then it's passed on to *eval()*, If no Debugger component has been created yet, or if the Debugger didn't recognize the command, then it's passed on to *eval()*,
like a good little REPL. like a good little REPL.
Use the "load" command to load a JSON machine configuration file. A sample [machine.json](my_modules/pcjs-client/bin/machine.json) Use the "load" command to load a JSON machine configuration file. A sample [machine.json](modules/pcjs/bin/machine.json)
is provided in the *bin* directory, which is a "JSON-ified" version of the [machine.xml](devices/pc/machine/5150/mda/64kb/machine.xml) is provided in the *bin* directory, which is a "JSON-ified" version of the [machine.xml](devices/pc/machine/5150/mda/64kb/machine.xml)
displayed on the [pcjs.org](/) home page. displayed on the [pcjs.org](/) home page.
@ -242,7 +242,7 @@ Debugging PCjs
### Server Components ### Server Components
To help test/debug changes to PCjs server components (eg, [DiskDump](my_modules/diskdump/), [HTMLOut](my_modules/htmlout/)), To help test/debug changes to PCjs server components (eg, [DiskDump](modules/diskdump/), [HTMLOut](modules/htmlout/)),
you can start the server with some additional options; eg: you can start the server with some additional options; eg:
node server.js --logging --console --debug node server.js --logging --console --debug
@ -320,14 +320,14 @@ closer to being released.
In the course of testing PCjs, there may be stale "index.html" files that prevent you from seeing application In the course of testing PCjs, there may be stale "index.html" files that prevent you from seeing application
updates, changes to README.md files, etc. So before running Node, you may want to "touch" the default HTML template: updates, changes to README.md files, etc. So before running Node, you may want to "touch" the default HTML template:
touch my_modules/shared/templates/common.html touch modules/shared/templates/common.html
The [HTMLOut](my_modules/htmlout/) module compares the timestamp of that template file to the timestamp of any The [HTMLOut](modules/htmlout/) module compares the timestamp of that template file to the timestamp of any
"index.html" and will regenerate the latter if it's out-of-date. "index.html" and will regenerate the latter if it's out-of-date.
There's a TODO to expand that check to include the timestamp of any local README.md file, but there are many other There's a TODO to expand that check to include the timestamp of any local README.md file, but there are many other
factors that can contribute to stale "index.html" files, so usually the safest thing to do is "touch" the factors that can contribute to stale "index.html" files, so usually the safest thing to do is "touch" the
[common.html](my_modules/shared/templates/common.html) template, or delete all existing "index.html" files, either [common.html](modules/shared/templates/common.html) template, or delete all existing "index.html" files, either
manually or with the Grunt "clean" task: manually or with the Grunt "clean" task:
grunt clean grunt clean

View file

@ -1,12 +1,12 @@
Build Tools Build Tools
--- ---
This is where all the server-side PHP code used to reside. I've since deleted that code from the project, This is where all the server-side PHP code used to reside. I've since deleted that code from the project,
because it's all been ported to JavaScript as a collection of [Node Modules](/my_modules/); e.g.: because it's all been ported to JavaScript as a collection of [Node Modules](/modules/); e.g.:
- [HTMLOut](/my_modules/htmlout/) - [HTMLOut](/modules/htmlout/)
- [MarkOut](/my_modules/markout/) - [MarkOut](/modules/markout/)
- [DiskDump](/my_modules/diskdump/) - [DiskDump](/modules/diskdump/)
- [FileDump](/my_modules/filedump/) - [FileDump](/modules/filedump/)
All that remains here is the version of Google's Closure Compiler (and its associated [README](README)) used All that remains here is the version of Google's Closure Compiler (and its associated [README](README)) used
to build the client-side JavaScript files -- not because I have any attachment to this particular version, but because to build the client-side JavaScript files -- not because I have any attachment to this particular version, but because

View file

@ -83,7 +83,7 @@ define class constants.
While we're talking about constants, it's important to be aware of constants that are not scoped to While we're talking about constants, it's important to be aware of constants that are not scoped to
any particular component. any particular component.
In [/my_modules/shared/lib/defines.js](/my_modules/shared/lib/defines.js), **DEBUG** is set to **TRUE**, In [/modules/shared/lib/defines.js](/modules/shared/lib/defines.js), **DEBUG** is set to **TRUE**,
enabling all debug-only code by default. It is also declared as a *@define* so that the Closure Compiler can enabling all debug-only code by default. It is also declared as a *@define* so that the Closure Compiler can
override it, setting it to **FALSE** and disabling debug-only code. override it, setting it to **FALSE** and disabling debug-only code.
@ -101,8 +101,8 @@ However, calls to debug-only instance methods seem to be more problematic, so al
if (DEBUG) this.log('load("' + sFileURL + '")'); if (DEBUG) this.log('load("' + sFileURL + '")');
There are a number of other important shared constants in [/my_modules/shared/lib/defines.js](/my_modules/shared/lib/defines.js) There are a number of other important shared constants in [/modules/shared/lib/defines.js](/modules/shared/lib/defines.js)
and PCjs-specific constants in [/my_modules/pcjs-client/lib/defines.js](/my_modules/pcjs-client/lib/defines.js); refer and PCjs-specific constants in [/modules/pcjs/lib/defines.js](/modules/pcjs/lib/defines.js); refer
to those files for more information. to those files for more information.
### Braces and Parentheses ### Braces and Parentheses

View file

@ -5,12 +5,12 @@ The [IBM PC AT "Rev 3"](/devices/pc/machine/5170/ega/1152kb/rev3/) machine confi
v1.15.5 of PCjs now, which includes the following fixes: v1.15.5 of PCjs now, which includes the following fixes:
+ The BIOS expects memory refresh to occur roughly every 16us, which I've resolved by tying the state + The BIOS expects memory refresh to occur roughly every 16us, which I've resolved by tying the state
of the refresh bit in port 0x61 to bit 6 of the CPU cycle count (see *in8042RWReg()* in [chipset.js](/my_modules/pcjs-client/lib/chipset.js)); of the refresh bit in port 0x61 to bit 6 of the CPU cycle count (see *in8042RWReg()* in [chipset.js](/modules/pcjs/lib/chipset.js));
the original AT BIOS was satisfied with a refresh bit that merely alternated, whereas the new AT BIOS the original AT BIOS was satisfied with a refresh bit that merely alternated, whereas the new AT BIOS
is much more particular about the rate at which that bit changes, since many hard-coded delay-loops have is much more particular about the rate at which that bit changes, since many hard-coded delay-loops have
now been replaced with code that waits for a specific number of refresh cycles. now been replaced with code that waits for a specific number of refresh cycles.
+ The 8042 Keyboard Controller emulation needed a few more tweaks, mainly with respect to what happens + The 8042 Keyboard Controller emulation needed a few more tweaks, mainly with respect to what happens
when the keyboard's "clock" line is toggled (see *set8042CmdData()* in [chipset.js](/my_modules/pcjs-client/lib/chipset.js)). when the keyboard's "clock" line is toggled (see *set8042CmdData()* in [chipset.js](/modules/pcjs/lib/chipset.js)).
+ The Floppy Disk Controller needed to add support for the "READ ID" command, in order for the BIOS + The Floppy Disk Controller needed to add support for the "READ ID" command, in order for the BIOS
"double-stepping" test to work (double-stepping is required on an 80-track drive when attempting to read "double-stepping" test to work (double-stepping is required on an 80-track drive when attempting to read
a 40-track diskette). a 40-track diskette).
@ -23,7 +23,7 @@ with a BIOS that's almost 30 years old.
after installing a second hard drive. So, when the CMOS reports only one hard drive installed, the BIOS after installing a second hard drive. So, when the CMOS reports only one hard drive installed, the BIOS
probes for a second hard drive anyway, and it does so by simply writing the drive number to the ATC's "DRVHD" probes for a second hard drive anyway, and it does so by simply writing the drive number to the ATC's "DRVHD"
register and then immediately reading the "STATUS" register, without issuing any intervening command. register and then immediately reading the "STATUS" register, without issuing any intervening command.
It was an easy fix to *outATCDrvHd()* in [hdc.js](/my_modules/pcjs-client/lib/hdc.js), but I was surprised It was an easy fix to *outATCDrvHd()* in [hdc.js](/modules/pcjs/lib/hdc.js), but I was surprised
to discover that the ATC had this behavior, and now I'm wondering how many other I/O operations require to discover that the ATC had this behavior, and now I'm wondering how many other I/O operations require
immediate "STATUS" register updates. immediate "STATUS" register updates.

View file

@ -6,8 +6,8 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta name="viewport" content="initial-scale=1"> <meta name="viewport" content="initial-scale=1">
<link rel="shortcut icon" type="image/x-icon" href="../../../../../../versions/images/current/favicon.ico"> <link rel="shortcut icon" type="image/x-icon" href="../../../../../../versions/images/current/favicon.ico">
<link rel="stylesheet" type="text/css" href="../../../../../../my_modules/shared/templates/common.css"> <link rel="stylesheet" type="text/css" href="../../../../../../modules/shared/templates/common.css">
<link rel="stylesheet" type="text/css" href="../../../../../../my_modules/c1pjs-client/templates/components.css"> <link rel="stylesheet" type="text/css" href="../../../../../../modules/c1pjs/templates/components.css">
</head> </head>
<body> <body>
@ -52,26 +52,26 @@
</div> </div>
</div> </div>
</div> </div>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/defines.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/defines.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/dumpapi.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/dumpapi.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/reportapi.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/reportapi.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/strlib.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/strlib.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/usrlib.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/usrlib.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/weblib.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/weblib.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/component.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/component.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/defines.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/defines.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/panel.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/panel.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/cpu.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/cpu.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/rom.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/rom.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/ram.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/ram.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/keyboard.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/keyboard.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/video.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/video.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/serial.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/serial.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/disk.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/disk.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/debugger.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/debugger.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/c1pjs-client/lib/computer.js"></script> <script type="text/javascript" src="../../../../../../modules/c1pjs/lib/computer.js"></script>
<script type="text/javascript" src="../../../../../../my_modules/shared/lib/embed.js"></script> <script type="text/javascript" src="../../../../../../modules/shared/lib/embed.js"></script>
<script type="text/javascript">window.embedC1P("c1p8kb","local.xml","../../../../../../my_modules/c1pjs-client/templates/components.xsl");</script> <script type="text/javascript">window.embedC1P("c1p8kb","local.xml","../../../../../../modules/c1pjs/templates/components.xsl");</script>
</body> </body>
</html> </html>

View file

@ -62,7 +62,7 @@ Pre-generated disk images are preferred to dynamically-generated images, and you
<link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link> <link href="http://www.bricklin.com/history/vclicense.htm">VisiCalc License</link>
</disk> </disk>
The PCjs [DiskDump](/my_modules/diskdump/) module is used to create all our pre-generated JSON-encoded disk images. The PCjs [DiskDump](/modules/diskdump/) module is used to create all our pre-generated JSON-encoded disk images.
In the above example, a pre-generated disk image could be created from the command-line with either the "--dir" option In the above example, a pre-generated disk image could be created from the command-line with either the "--dir" option
(which will traverse all subdirectories as well): (which will traverse all subdirectories as well):

View file

@ -3,6 +3,6 @@ Microsoft C Compiler v4.00
[Manifest](manifest.xml) updated using: [Manifest](manifest.xml) updated using:
find -L private -name "*" -type f -exec node ../../../../../../my_modules/diskdump/bin/diskdump --format=json --output=. --manifest --disk={} \; find -L private -name "*" -type f -exec node ../../../../../../modules/diskdump/bin/diskdump --format=json --output=. --manifest --disk={} \;
The original diskettes are not part of the repository/website. The original diskettes are not part of the repository/website.

View file

@ -14,4 +14,4 @@ Manifest Details
[Manifest](manifest.xml) update using: [Manifest](manifest.xml) update using:
find -L private -name "*" -type f -exec node ../../../../../my_modules/diskdump/bin/diskdump --format=json --output=. --manifest --title="SCO Xenix 8086 Operating System v2.1.3" --disk={} \; find -L private -name "*" -type f -exec node ../../../../../modules/diskdump/bin/diskdump --format=json --output=. --manifest --title="SCO Xenix 8086 Operating System v2.1.3" --disk={} \;

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/my_modules/c1pjs-client/templates/outline-debug.xsl"?> <?xml-stylesheet type="text/xsl" href="/modules/c1pjs/templates/outline-debug.xsl"?>
<outline id="osi-6502-overview"> <outline id="osi-6502-overview">
<title>C1Pjs</title> <title>C1Pjs</title>
<excerpt>The following document describes the C1Pjs source code.</excerpt> <excerpt>The following document describes the C1Pjs source code.</excerpt>
@ -94,4 +94,4 @@
but in general, you'll get much better performance -- both load-time and run-time -- by loading a single "compiled" JavaScript file.</p> but in general, you'll get much better performance -- both load-time and run-time -- by loading a single "compiled" JavaScript file.</p>
<p class="noindent"><em>Jeff Parsons<br/>August 28, 2012</em></p> <p class="noindent"><em>Jeff Parsons<br/>August 28, 2012</em></p>
</content> </content>
</outline> </outline>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2013-01-29" license="http://www.gnu.org/licenses/gpl.html" --> <!-- author="Jeff Parsons (@jeffpar)" website="http://www.pcjs.org/" created="2012-05-05" modified="2013-01-29" license="http://www.gnu.org/licenses/gpl.html" -->
<!DOCTYPE xsl:stylesheet [ <!DOCTYPE xsl:stylesheet [
<!-- XSLT understands these entities only: lt, gt, apos, quot, and amp. Other required entities may be defined below (see http://www.pcjs.org/my_modules/shared/templates/entities.dtd). --> <!-- XSLT understands these entities only: lt, gt, apos, quot, and amp. Other required entities may be defined below (see http://www.pcjs.org/modules/shared/templates/entities.dtd). -->
]> ]>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:param name="rootDir" select="''"/> <xsl:param name="rootDir" select="''"/>

View file

@ -11,7 +11,7 @@ files/folders.
For example, from the root directory of the project, you could run: For example, from the root directory of the project, you could run:
node my_modules/diskdump/bin/diskdump --path="apps/pc/1981/visicalc/README.md" --format=img --output=disk.img node modules/diskdump/bin/diskdump --path="apps/pc/1981/visicalc/README.md" --format=img --output=disk.img
to produce a `disk.img` containing one file, "README.md", which you could then mount on your local operating to produce a `disk.img` containing one file, "README.md", which you could then mount on your local operating
system *or* inside a PCjs machine. system *or* inside a PCjs machine.
@ -19,7 +19,7 @@ system *or* inside a PCjs machine.
To make the disk image more useful, you might want to download a copy of [VisiCalc](http://www.bricklin.com/history/vcexecutable.htm) To make the disk image more useful, you might want to download a copy of [VisiCalc](http://www.bricklin.com/history/vcexecutable.htm)
into that folder as well, so that you could then run: into that folder as well, so that you could then run:
node my_modules/diskdump/bin/diskdump --path="apps/pc/1981/visicalc/vc.com;README.md" --format=img --output=disk.img node modules/diskdump/bin/diskdump --path="apps/pc/1981/visicalc/vc.com;README.md" --format=img --output=disk.img
to produce a `disk.img` containing both "VC.COM" and "README.md". In fact, this is exactly how the to produce a `disk.img` containing both "VC.COM" and "README.md". In fact, this is exactly how the
[disk.json](/apps/pc/1981/visicalc/disk.json) stored in the [VisiCalc](/apps/pc/1981/visicalc/) folder was generated. [disk.json](/apps/pc/1981/visicalc/disk.json) stored in the [VisiCalc](/apps/pc/1981/visicalc/) folder was generated.

View file

@ -47,7 +47,7 @@ var str = require("../../shared/lib/strlib");
var usr = require("../../shared/lib/usrlib"); var usr = require("../../shared/lib/usrlib");
var DiskAPI = require("../../shared/lib/diskapi"); var DiskAPI = require("../../shared/lib/diskapi");
var DumpAPI = require("../../shared/lib/dumpapi"); var DumpAPI = require("../../shared/lib/dumpapi");
var X86 = require("../../pcjs-client/lib/x86"); var X86 = require("../../pcjs/lib/x86");
/** /**
* @class exports * @class exports
@ -292,9 +292,9 @@ DiskDump.aDefaultBPBs = [
* *
* Examples * Examples
* --- * ---
* node my_modules/diskdump/bin/diskdump --disk=../jsmachines/disks/pc/games/infocom/zork1/zork1.dsk * node modules/diskdump/bin/diskdump --disk=../jsmachines/disks/pc/games/infocom/zork1/zork1.dsk
* node my_modules/diskdump/bin/diskdump --dir=./apps/pc/1981/visicalc/ --format=img --output=./apps/pc/1981/visicalc/disk.img * node modules/diskdump/bin/diskdump --dir=./apps/pc/1981/visicalc/ --format=img --output=./apps/pc/1981/visicalc/disk.img
* node my_modules/diskdump/bin/diskdump --path=./apps/pc/1981/visicalc/bin/vc.com;../README.md --format=json --output=./apps/pc/1981/visicalc/disk.json * node modules/diskdump/bin/diskdump --path=./apps/pc/1981/visicalc/bin/vc.com;../README.md --format=json --output=./apps/pc/1981/visicalc/disk.json
*/ */
DiskDump.CLI = function() DiskDump.CLI = function()
{ {

View file

@ -4,19 +4,19 @@
* *
* Copyright (c) 2014 jeffpar * Copyright (c) 2014 jeffpar
* Licensed under the MIT license. * Licensed under the MIT license.
* *
* Genesis: * Genesis:
* *
* sudo npm install -g grunt-init * sudo npm install -g grunt-init
* git clone git://github.com/gruntjs/grunt-init-gruntplugin.git ~/.grunt-init/gruntplugin * git clone git://github.com/gruntjs/grunt-init-gruntplugin.git ~/.grunt-init/gruntplugin
* cd ~/Sites/pcjs/my_modules * cd ~/Sites/pcjs/modules
* mkdir -p grunts/prepjs * mkdir -p grunts/prepjs
* cd grunts/prepjs * cd grunts/prepjs
* grunt-init gruntplugin * grunt-init gruntplugin
* npm install * npm install
* *
* This file was generated at the "grunt-init gruntplugin" stage. Here's what that process looked like: * This file was generated at the "grunt-init gruntplugin" stage. Here's what that process looked like:
* *
* Running "init:gruntplugin" (init) task * Running "init:gruntplugin" (init) task
* This task will create one or more files in the current directory, based on the * This task will create one or more files in the current directory, based on the
* environment and the answers to a few questions. Note that answering "?" to any * environment and the answers to a few questions. Note that answering "?" to any
@ -31,9 +31,9 @@
* [?] Project name (grunt-prep) grunt-prepjs * [?] Project name (grunt-prep) grunt-prepjs
* [?] Description (The best Grunt plugin ever.) JS Preprocessor * [?] Description (The best Grunt plugin ever.) JS Preprocessor
* [?] Version (0.1.0) * [?] Version (0.1.0)
* [?] Project git repository (git://github.com/jeffpar/jsmachines.git) * [?] Project git repository (git://github.com/jeffpar/jsmachines.git)
* [?] Project homepage (https://github.com/jeffpar/jsmachines) * [?] Project homepage (https://github.com/jeffpar/jsmachines)
* [?] Project issues tracker (https://github.com/jeffpar/jsmachines/issues) * [?] Project issues tracker (https://github.com/jeffpar/jsmachines/issues)
* [?] Licenses (MIT) * [?] Licenses (MIT)
* [?] Author name (jeffpar) * [?] Author name (jeffpar)
* [?] Author email (jeffpar@mac.com) * [?] Author email (jeffpar@mac.com)
@ -63,17 +63,17 @@
* http://gruntjs.com/getting-started * http://gruntjs.com/getting-started
* *
* Done, without errors. * Done, without errors.
* *
* The process was a bit sloppy about trailing commas, though. I've cleaned those up, thanks to PhpStorm. * The process was a bit sloppy about trailing commas, though. I've cleaned those up, thanks to PhpStorm.
* *
* Online tutorials further recommended the following in my project's root: * Online tutorials further recommended the following in my project's root:
* *
* npm install my_modules/grunts/prepjs --save-dev * npm install modules/grunts/prepjs --save-dev
* *
* However, all that does is make another copy of my "grunt-prepjs" module, inside the "node_modules" folders; * However, all that does is make another copy of my "grunt-prepjs" module, inside the "node_modules" folders;
* I can avoid that by simply including the following in my root Gruntfile.js: * I can avoid that by simply including the following in my root Gruntfile.js:
* *
* grunt.loadTasks("my_modules/grunts/prepjs/tasks"); * grunt.loadTasks("modules/grunts/prepjs/tasks");
*/ */
'use strict'; 'use strict';

View file

@ -132,7 +132,7 @@ var sServerRoot = "/Users/Jeff/Sites/pcjs";
* template to use. * template to use.
*/ */
var sDefaultFile = "index.html"; var sDefaultFile = "index.html";
var sTemplateFile = "./my_modules/shared/templates/common.html"; var sTemplateFile = "./modules/shared/templates/common.html";
/* /*
* sReadMeFile is the default markdown file to load and convert to HTML when a "readme" token is detected in an * sReadMeFile is the default markdown file to load and convert to HTML when a "readme" token is detected in an
@ -203,8 +203,7 @@ var asFilesNonListed = [
"robots.txt", "robots.txt",
"machine.xml", "machine.xml",
"manifest.xml", "manifest.xml",
"cache.manifest", "cache.manifest"
"my_modules"
]; ];
var asExtsNonListed = [ var asExtsNonListed = [
@ -219,7 +218,6 @@ var asFilesNonServed = [
"bin", "bin",
"debug", "debug",
"grunts", "grunts",
"lib",
"logs", "logs",
"node.log", "node.log",
"node_modules", "node_modules",
@ -375,7 +373,7 @@ function HTMLOut(sDir, sFile, fRebuild, req, done)
* *
* Examples: * Examples:
* *
* node my_modules/htmlout/bin/htmlout --dir=/ --console --rebuild * node modules/htmlout/bin/htmlout --dir=/ --console --rebuild
*/ */
HTMLOut.CLI = function() HTMLOut.CLI = function()
{ {
@ -916,12 +914,12 @@ HTMLOut.prototype.getVersion = function(sToken, sIndent, aParms)
* then we should be using "current" CSS and template files (as opposed to version-specific template files). * then we should be using "current" CSS and template files (as opposed to version-specific template files).
* *
* NOTE: I used to create a symlink in each app's "versions" directory (eg, /versions/pcjs/current -> * NOTE: I used to create a symlink in each app's "versions" directory (eg, /versions/pcjs/current ->
* ../../my_modules/shared/templates), so that when fDebug was true, I could simply insert "current" in * ../../modules/shared/templates), so that when fDebug was true, I could simply insert "current" in
* place of a version number. However, that symlink didn't get added to the repository, and I'm not sure * place of a version number. However, that symlink didn't get added to the repository, and I'm not sure
* all operating systems would deal with it properly even if was added, so now I'm treating the "version" * all operating systems would deal with it properly even if was added, so now I'm treating the "version"
* token as the equivalent of a symlink here. * token as the equivalent of a symlink here.
*/ */
this.aTokens[sToken] = this.fDebug? "../../my_modules/shared/templates" : pkg.version; this.aTokens[sToken] = this.fDebug? "../../modules/shared/templates" : pkg.version;
}; };
/** /**
@ -1341,7 +1339,7 @@ HTMLOut.prototype.getMachineXML = function(sToken, sIndent, aParms, sXMLFile, sS
var sStyleSheet = aMatch[1]; var sStyleSheet = aMatch[1];
/* /*
* Recognized machine stylesheets are either "production" stylesheets in ("/versions/pcjs"|"/versions/c1pjs") * Recognized machine stylesheets are either "production" stylesheets in ("/versions/pcjs"|"/versions/c1pjs")
* or "development" stylesheets in ("/my_modules/pcjs-client/templates"|"/my_modules/c1pjs-client/templates"). * or "development" stylesheets in ("/modules/pcjs/templates"|"/modules/c1pjs/templates").
* *
* The common denominator in both sets is either "/pc" or "/c1p", which in turn indicates the class of machine * The common denominator in both sets is either "/pc" or "/c1p", which in turn indicates the class of machine
* (ie, "PC" or "C1P"). * (ie, "PC" or "C1P").
@ -1687,7 +1685,7 @@ HTMLOut.prototype.getReadMe = function(sToken, sIndent, aParms, sPrevious)
*/ */
HTMLOut.prototype.getSocketScripts = function(sToken, sIndent, aParms) HTMLOut.prototype.getSocketScripts = function(sToken, sIndent, aParms)
{ {
this.aTokens[sToken] = (fSockets? '<script type="text/javascript" src="/socket.io/socket.io.js"></script>\n' + sIndent + '<script type="text/javascript" src="/my_modules/shared/lib/sockets.js"></script>' : ""); this.aTokens[sToken] = (fSockets? '<script type="text/javascript" src="/socket.io/socket.io.js"></script>\n' + sIndent + '<script type="text/javascript" src="/modules/shared/lib/sockets.js"></script>' : "");
}; };
/** /**
@ -1805,7 +1803,7 @@ HTMLOut.prototype.processMachines = function(aMachines, done)
* Step 1: We need to find the client's "defines.js" source file, and follow it with "nodebugger.js". * Step 1: We need to find the client's "defines.js" source file, and follow it with "nodebugger.js".
*/ */
for (i = 0; i < asFiles.length; i++) { for (i = 0; i < asFiles.length; i++) {
if (asFiles[i].indexOf("-client/lib/defines.js") >= 0) { if (asFiles[i].indexOf("js/lib/defines.js") >= 0) {
asFiles.splice(i + 1, 0, asFiles[i].replace("defines.js", "nodebugger.js")); asFiles.splice(i + 1, 0, asFiles[i].replace("defines.js", "nodebugger.js"));
break; break;
} }

View file

@ -141,7 +141,7 @@ function MarkOut(sMD, sIndent, req, aParms, fDebug)
* *
* Examples: * Examples:
* *
* node my_modules/markout/bin/markout --file=/my_modules/grunts/prepjs/README.md --debug * node modules/markout/bin/markout --file=/modules/grunts/prepjs/README.md --debug
*/ */
MarkOut.CLI = function() MarkOut.CLI = function()
{ {
@ -951,7 +951,7 @@ MarkOut.prototype.convertMDMachineLinks = function(sBlock)
*/ */
if (!sMachineXSLFile || sMachineXSLFile.indexOf("components.xsl") >= 0) { if (!sMachineXSLFile || sMachineXSLFile.indexOf("components.xsl") >= 0) {
if (this.fDebug) { if (this.fDebug) {
sMachineXSLFile = "/my_modules/" + sMachineClass + "js-client/templates/components.xsl"; sMachineXSLFile = "/modules/" + sMachineClass + "js/templates/components.xsl";
} }
} }
@ -1014,7 +1014,7 @@ MarkOut.prototype.convertMDEmphasis = function(sBlock)
* *
* but we do not. That's because a Markdown link like: * but we do not. That's because a Markdown link like:
* *
* [my_modules](/my_modules/) * [modules](/modules/)
* *
* would otherwise be misconstrued as containing emphasis (and it doesn't * would otherwise be misconstrued as containing emphasis (and it doesn't
* matter whether we process emphasis BEFORE or AFTER links -- an HTML link * matter whether we process emphasis BEFORE or AFTER links -- an HTML link
@ -1025,11 +1025,11 @@ MarkOut.prototype.convertMDEmphasis = function(sBlock)
* be whitespace, but we make it a bit more flexible, so that you can do things * be whitespace, but we make it a bit more flexible, so that you can do things
* like place emphasis INSIDE links: * like place emphasis INSIDE links:
* *
* [*my_modules*](/my_modules/) * [*modules*](/modules/)
* *
* or OUTSIDE links: * or OUTSIDE links:
* *
* *[my_modules](/my_modules/)* * *[modules](/modules/)*
*/ */
if (sBlock.indexOf('*') >= 0 || sBlock.indexOf('_') >= 0) { if (sBlock.indexOf('*') >= 0 || sBlock.indexOf('_') >= 0) {
sBlock = sBlock.replace(/(^|[^a-z0-9])([\*_])\2([\s\S]*?)\2\2([^a-z0-9]|$)/gi, "$1<strong>$3</strong>$4"); sBlock = sBlock.replace(/(^|[^a-z0-9])([\*_])\2([\s\S]*?)\2\2([^a-z0-9]|$)/gi, "$1<strong>$3</strong>$4");

View file

@ -27,32 +27,32 @@ At the time of this writing, the order is:
* [shared/usrlib.js](../../shared/lib/usrlib.js) * [shared/usrlib.js](../../shared/lib/usrlib.js)
* [shared/weblib.js](../../shared/lib/weblib.js) * [shared/weblib.js](../../shared/lib/weblib.js)
* [shared/component.js](../../shared/lib/component.js) * [shared/component.js](../../shared/lib/component.js)
* [pcjs-client/defines.js](defines.js) * [pcjs/defines.js](defines.js)
* [pcjs-client/panel.js](panel.js) * [pcjs/panel.js](panel.js)
* [pcjs-client/bus.js](bus.js) * [pcjs/bus.js](bus.js)
* [pcjs-client/mem.js](mem.js) * [pcjs/mem.js](mem.js)
* [pcjs-client/cpu.js](cpu.js) * [pcjs/cpu.js](cpu.js)
* [pcjs-client/x86.js](x86.js) * [pcjs/x86.js](x86.js)
* [pcjs-client/x86seg.js](x86seg.js) * [pcjs/x86seg.js](x86seg.js)
* [pcjs-client/x86cpu.js](x86cpu.js) * [pcjs/x86cpu.js](x86cpu.js)
* [pcjs-client/x86grps.js](x86grps.js) * [pcjs/x86grps.js](x86grps.js)
* [pcjs-client/x86help.js](x86help.js) * [pcjs/x86help.js](x86help.js)
* [pcjs-client/x86mods.js](x86mods.js) * [pcjs/x86mods.js](x86mods.js)
* [pcjs-client/x86op0f.js](x86op0f.js) * [pcjs/x86op0f.js](x86op0f.js)
* [pcjs-client/x86opxx.js](x86opxx.js) * [pcjs/x86opxx.js](x86opxx.js)
* [pcjs-client/chipset.js](chipset.js) * [pcjs/chipset.js](chipset.js)
* [pcjs-client/rom.js](rom.js) * [pcjs/rom.js](rom.js)
* [pcjs-client/ram.js](ram.js) * [pcjs/ram.js](ram.js)
* [pcjs-client/keyboard.js](keyboard.js) * [pcjs/keyboard.js](keyboard.js)
* [pcjs-client/video.js](video.js) * [pcjs/video.js](video.js)
* [pcjs-client/serial.js](serial.js) * [pcjs/serial.js](serial.js)
* [pcjs-client/mouse.js](mouse.js) * [pcjs/mouse.js](mouse.js)
* [pcjs-client/disk.js](disk.js) * [pcjs/disk.js](disk.js)
* [pcjs-client/fdc.js](fdc.js) * [pcjs/fdc.js](fdc.js)
* [pcjs-client/hdc.js](hdc.js) * [pcjs/hdc.js](hdc.js)
* [pcjs-client/debugger.js](debugger.js) * [pcjs/debugger.js](debugger.js)
* [pcjs-client/state.js](state.js) * [pcjs/state.js](state.js)
* [pcjs-client/computer.js](computer.js) * [pcjs/computer.js](computer.js)
* [shared/embed.js](../../shared/lib/embed.js) * [shared/embed.js](../../shared/lib/embed.js)
Some of the modules *can* be reordered or even omitted (eg, [debugger.js](debugger.js) or Some of the modules *can* be reordered or even omitted (eg, [debugger.js](debugger.js) or

Some files were not shown because too many files have changed in this diff Show more