diff --git a/devices/pc/machine/5160/cga/256kb/win101/machine.xml b/devices/pc/machine/5160/cga/256kb/win101/machine.xml
index e05ce65cb..07e7a62cd 100644
--- a/devices/pc/machine/5160/cga/256kb/win101/machine.xml
+++ b/devices/pc/machine/5160/cga/256kb/win101/machine.xml
@@ -16,7 +16,7 @@
-
+
diff --git a/devices/pc/machine/5160/cga/640kb/debugger/machine.xml b/devices/pc/machine/5160/cga/640kb/debugger/machine.xml
index 9cdf0da3f..d4a499df3 100644
--- a/devices/pc/machine/5160/cga/640kb/debugger/machine.xml
+++ b/devices/pc/machine/5160/cga/640kb/debugger/machine.xml
@@ -18,4 +18,7 @@
+
+
+
diff --git a/devices/pc/machine/5160/cga/640kb/machine.xml b/devices/pc/machine/5160/cga/640kb/machine.xml
index 89662dfc0..431068124 100644
--- a/devices/pc/machine/5160/cga/640kb/machine.xml
+++ b/devices/pc/machine/5160/cga/640kb/machine.xml
@@ -16,4 +16,7 @@
+
+
+
diff --git a/disks/pc/README.md b/disks/pc/README.md
index 37a75b707..bc93adf70 100644
--- a/disks/pc/README.md
+++ b/disks/pc/README.md
@@ -37,10 +37,12 @@ computer diagnostics, programming tools, and more.
### Applications
+* [IBM TopView](apps/ibm/topview/)
* [Lotus 1-2-3](apps/lotus/123/)
* [MicroPro WordStar](apps/micropro/wordstar/)
* [Microsoft Chart](apps/microsoft/chart/)
* [Microsoft Word](apps/microsoft/word/)
+* [Sunny Hill Omniview](apps/sunnyhill/omniview/)
### Games
diff --git a/disks/pc/apps/README.md b/disks/pc/apps/README.md
index 74f81cda7..1ec75acc9 100644
--- a/disks/pc/apps/README.md
+++ b/disks/pc/apps/README.md
@@ -9,6 +9,7 @@ PC Applications
Information is available for applications from these vendors:
+* [IBM](ibm/)
* [Lotus](lotus/)
* [MicroPro](micropro/)
* [Microsoft](microsoft/)
diff --git a/disks/pc/apps/ibm/README.md b/disks/pc/apps/ibm/README.md
new file mode 100644
index 000000000..5be7e37c6
--- /dev/null
+++ b/disks/pc/apps/ibm/README.md
@@ -0,0 +1,12 @@
+---
+layout: page
+title: IBM Applications
+permalink: /disks/pc/apps/ibm/
+---
+
+IBM Applications
+---
+
+Information is available for these IBM applications:
+
+* [TopView](topview/)
diff --git a/disks/pc/apps/ibm/topview/1.01/README.md b/disks/pc/apps/ibm/topview/1.01/README.md
new file mode 100644
index 000000000..2629daa77
--- /dev/null
+++ b/disks/pc/apps/ibm/topview/1.01/README.md
@@ -0,0 +1,103 @@
+---
+layout: page
+title: TopView 1.01
+permalink: /disks/pc/apps/ibm/topview/1.01/
+machines:
+ - type: pc
+ id: ibm5160
+ config: /devices/pc/machine/5160/cga/640kb/machine.xml
+ autoMount:
+ A:
+ path: /disks/pc/dos/ibm/2.00/PCDOS200-DISK1.json
+ B:
+ path: /disks/pc/apps/ibm/topview/1.01/TOPVIEW101-PROGRAM.json
+---
+
+TopView 1.01
+---
+
+{% include machine.html id="ibm5160" %}
+
+### Directory of TopView 1.01 (Program)
+
+ Volume in drive A is TV101032885
+
+ Directory of A:\
+
+ TV PIF 13946 03-28-85 12:00p
+ TV PII 1408 03-28-85 12:00p
+ ADD EXT 16384 03-28-85 12:00p
+ ATRIBUTE DEF 32 03-28-85 12:00p
+ AUTOPIF 369 03-28-85 12:00p
+ CHANGE EXT 13568 03-28-85 12:00p
+ CLOCK COM 3682 03-28-85 12:00p
+ CLOCK PLB 2071 03-28-85 12:00p
+ COLORS EXT 10752 03-28-85 12:00p
+ COLORS PIF 369 03-28-85 12:00p
+ DELETE EXT 6400 03-28-85 12:00p
+ DOS EXT 39168 03-28-85 12:00p
+ DOSHELP PLB 10237 03-28-85 12:00p
+ DW1 TBL 51 03-28-85 12:00p
+ DW2 TBL 51 03-28-85 12:00p
+ EW TBL 55 03-28-85 12:00p
+ FD BAT 6163 03-28-85 12:00p
+ FDPGM COM 187 03-28-85 12:00p
+ FDR BAT 46 03-28-85 12:00p
+ FILTER EXT 3905 03-28-85 12:00p
+ G BAT 33 03-28-85 12:00p
+ PCW TBL 55 03-28-85 12:00p
+ PDIO EXT 3072 03-28-85 12:00p
+ PDIOKEYB EXT 3072 03-28-85 12:00p
+ PDIOMICP EXT 3222 03-28-85 12:00p
+ PDIOMICS EXT 3209 03-28-85 12:00p
+ PDIOMSY1 EXT 3096 03-28-85 12:00p
+ PDIOVIS1 EXT 3214 03-28-85 12:00p
+ PE TBL 44 03-28-85 12:00p
+ PROFED TBL 65 03-28-85 12:00p
+ PROGRAMS COM 11520 03-28-85 12:00p
+ PROGRAMS HLP 9979 03-28-85 12:00p
+ SETSYS EXT 11008 03-28-85 12:00p
+ SETUP BAT 74 03-28-85 12:00p
+ SYSTEM 84 03-28-85 12:00p
+ TUTORPIF 369 03-28-85 12:00p
+ TV COM 43264 03-28-85 12:00p
+ TV EXT 49972 03-28-85 12:00p
+ WA TBL 56 03-28-85 12:00p
+ WELCOME EXT 2560 03-28-85 12:00p
+ WP TBL 53 03-28-85 12:00p
+ VENDOR-# DO1 0 07-04-83 12:00a
+ 42 file(s) 276865 bytes
+
+ Total files listed:
+ 42 file(s) 276865 bytes
+ 57344 bytes free
+
+### Directory of TopView 1.01 (Tutorial)
+
+ Volume in drive A is TUT110784
+
+ Directory of A:\
+
+ CALC EXE 56549 11-07-84 12:00p
+ CALC PIF 369 11-07-84 12:00p
+ CALC PLB 5133 11-07-84 12:00p
+ ERROR LIB 8765 11-07-84 12:00p
+ GASWAP BAT 758 11-07-84 12:00p
+ INSTRUCT GRA 2540 11-07-84 12:00p
+ INSTRUCT WRT 2734 11-07-84 12:00p
+ LESSON1 LIB 56019 11-07-84 12:00p
+ LESSON2 LIB 10256 11-07-84 12:00p
+ LESSON3 LIB 10083 11-07-84 12:00p
+ LESSON4 LIB 43072 11-07-84 12:00p
+ OCRS PIF 369 11-07-84 12:00p
+ QUD PNL 121 11-07-84 12:00p
+ QUIT PNL 139 11-07-84 12:00p
+ TUTORIAL EXT 6556 11-07-84 12:00p
+ TUTORIAL PIF 369 11-07-84 12:00p
+ WASWAP BAT 1190 11-07-84 12:00p
+ VENDOR-# DO1 0 07-04-83 12:00a
+ 18 file(s) 205022 bytes
+
+ Total files listed:
+ 18 file(s) 205022 bytes
+ 146432 bytes free
diff --git a/disks/pc/apps/ibm/topview/README.md b/disks/pc/apps/ibm/topview/README.md
new file mode 100644
index 000000000..0fe7e9316
--- /dev/null
+++ b/disks/pc/apps/ibm/topview/README.md
@@ -0,0 +1,12 @@
+---
+layout: page
+title: TopView
+permalink: /disks/pc/apps/ibm/topview/
+---
+
+TopView
+---
+
+Information is available for these versions of TopView:
+
+* [TopView 1.01](1.01/)
diff --git a/disks/pc/apps/sunnyhill/omniview/4.30/README.md b/disks/pc/apps/sunnyhill/omniview/4.30/README.md
index a7a56d428..a4efa9242 100644
--- a/disks/pc/apps/sunnyhill/omniview/4.30/README.md
+++ b/disks/pc/apps/sunnyhill/omniview/4.30/README.md
@@ -2,11 +2,25 @@
layout: page
title: Omniview 386 4.30
permalink: /disks/pc/apps/sunnyhill/omniview/4.30/
+machines:
+ - type: pc
+ id: compaq386
+ config: /devices/pc/machine/compaq/deskpro386/vga/4096kb/machine.xml
+ autoMount:
+ A:
+ path: /disks/pc/dos/ibm/3.30/PCDOS330-DISK1-720K.json
+ B:
+ path: /disks/pc/apps/sunnyhill/omniview/4.30/OMNIVIEW386-430.json
---
Omniview 386 4.30
---
+The COMPAQ DeskPro 386 machine below is recommended for Omniview 386 4.30.
+A [directory listing](#directory-of-omniview-386-430) is also provided.
+
+{% include machine.html id="compaq386" %}
+
### Directory of Omniview 386 4.30
Volume in drive A is OMNIVIEW
diff --git a/modules/htmlout/lib/htmlout.js b/modules/htmlout/lib/htmlout.js
index d4b43c5cd..9981f0efa 100644
--- a/modules/htmlout/lib/htmlout.js
+++ b/modules/htmlout/lib/htmlout.js
@@ -1464,7 +1464,7 @@ HTMLOut.prototype.getMachineXML = function(sToken, sIndent, aParms, sXMLFile, sS
s = m.convertMD(" ").trim();
obj.processMachines(m.getMachines(), m.getBuildOptions(), function doneProcessXMLMachines() {
- obj.getMarkdownFile(obj.sFile, sToken, sIndent, aParms, s, true);
+ obj.getMarkdownFile(obj.sFile, sToken, sIndent, aParms, s, sXMLFile);
});
return;
}
@@ -1689,7 +1689,7 @@ HTMLOut.prototype.getManifestXML = function(sToken, sIndent, aParms)
};
/**
- * getMarkdownFile(sFile, sToken, sIndent, aParms, sPrevious, fMachineXML)
+ * getMarkdownFile(sFile, sToken, sIndent, aParms, sPrevious, sMachineFile)
*
* If sFile exists in the current directory, open it, convert it, and prepare for replacement.
*
@@ -1699,9 +1699,9 @@ HTMLOut.prototype.getManifestXML = function(sToken, sIndent, aParms)
* @param {string} [sIndent]
* @param {Array.} [aParms]
* @param {string|null} [sPrevious] is text, if any, that should precede the file
- * @param {boolean} [fMachineXML] true if a machine.xml file has already been processed by the caller
+ * @param {string} [sMachineFile] name (if any) of machine.xml file already processed by the caller
*/
-HTMLOut.prototype.getMarkdownFile = function(sFile, sToken, sIndent, aParms, sPrevious, fMachineXML)
+HTMLOut.prototype.getMarkdownFile = function(sFile, sToken, sIndent, aParms, sPrevious, sMachineFile)
{
var obj = this;
@@ -1731,8 +1731,11 @@ HTMLOut.prototype.getMarkdownFile = function(sFile, sToken, sIndent, aParms, sPr
}
}
} else {
- var m = new MarkOut(s, sIndent, obj.req, aParms, obj.fDebug, fMachineXML, obj.sExt == "md");
+ var m = new MarkOut(s, sIndent, obj.req, aParms, obj.fDebug, sMachineFile, obj.sExt == "md");
s = m.convertMD(" ").trim();
+
+ if (sMachineFile && m.hasMachines()) sPrevious = null;
+
/*
* If the Markdown document begins with a heading, stuff that into the tag;
* it would be cleaner if this replacement could be performed by getTitle(), but unfortunately,
diff --git a/modules/markout/lib/markout.js b/modules/markout/lib/markout.js
index 9f4be6e4e..af5842e3a 100644
--- a/modules/markout/lib/markout.js
+++ b/modules/markout/lib/markout.js
@@ -95,10 +95,10 @@ var sDefaultFile = "./README.md";
* @param {Object} [req] is the web server's (ie, Express) request object, if any
* @param {Array.|null} [aParms] is an array of overrides to use (see below)
* @param {boolean} [fDebug] turns on debugging features (eg, debug comments, special URL encodings, etc)
- * @param {boolean} [fMachineXML] true if a machine.xml file has already been processed by the caller
+ * @param {string} [sMachineFile] name of any machine.xml file already processed by the caller
* @param {boolean} [fAutoHeading] true to automatically generate a page heading
*/
-function MarkOut(sMD, sIndent, req, aParms, fDebug, fMachineXML, fAutoHeading)
+function MarkOut(sMD, sIndent, req, aParms, fDebug, sMachineFile, fAutoHeading)
{
this.sMD = sMD;
this.sIndent = (sIndent || "");
@@ -111,7 +111,7 @@ function MarkOut(sMD, sIndent, req, aParms, fDebug, fMachineXML, fAutoHeading)
this.sClassImageLabel = this.sClassImage + "-label";
}
this.fDebug = fDebug;
- this.fMachineXML = fMachineXML;
+ this.sMachineFile = sMachineFile;
this.fAutoHeading = fAutoHeading;
this.sHTML = null;
this.aIDs = []; // this keeps track of auto-generated ID attributes for page elements, to insure uniqueness
@@ -266,6 +266,17 @@ MarkOut.prototype.getMachines = function()
return this.aMachines;
};
+/**
+ * hasMachines()
+ *
+ * @this {MarkOut}
+ * @return {boolean} true if machine(s) exist, false if not
+ */
+MarkOut.prototype.hasMachines = function()
+{
+ return this.aMachines.length > 0;
+};
+
/**
* getBuildOptions()
*
@@ -1136,12 +1147,12 @@ MarkOut.prototype.convertMDMachineLinks = function(sBlock)
while ((aMatch = reIncludes.exec(sBlock))) {
sReplacement = "";
sMachineID = aMatch[2];
- if (!this.fMachineXML && this.aMachineDefs[sMachineID]) {
+ if (this.aMachineDefs[sMachineID]) {
var machine = this.aMachineDefs[sMachineID];
sMachine = machine['type'] || "pc";
sMachineOptions = ((sMachine.indexOf("-dbg") > 0 || machine['debugger'] == "true")? "debugger" : "");
sMachine = sMachine.replace("-dbg", "").toUpperCase();
- sMachineXMLFile = machine['config'] || "machine.xml";
+ sMachineXMLFile = machine['config'] || this.sMachineFile || "machine.xml";
sMachineXSLFile = machine['template'] || "";
sMachineVersion = ((machine['uncompiled'] == "true")? "uncompiled" : "");
sMachineParms = machine['parms'] || "";