More old OS/2 disk information
This commit is contained in:
parent
8eb1e0aa21
commit
aeb518f078
12 changed files with 445 additions and 11 deletions
|
|
@ -12,7 +12,7 @@
|
||||||
<keyboard ref="/devices/pc/keyboard/keyboard-minimal-functions.xml"/>
|
<keyboard ref="/devices/pc/keyboard/keyboard-minimal-functions.xml"/>
|
||||||
<debugger id="debugger" messages="fault" commands=""/>
|
<debugger id="debugger" messages="fault" commands=""/>
|
||||||
<panel ref="/devices/pc/panel/wide.xml"/>
|
<panel ref="/devices/pc/panel/wide.xml"/>
|
||||||
<fdc ref="/disks/pc/library.xml" width="340px" automount='{A: {name: "PC-DOS 3.20 (Disk 1)", path: "/disks/pc/dos/ibm/3.20/PCDOS320-DISK1.json"}, B: {name: "PC-DOS 3.20 (Disk 2)", path: "/disks/pc/dos/ibm/3.20/PCDOS320-DISK2.json"}}'/>
|
<fdc ref="/disks/pc/library.xml" automount='{A: {name: "PC-DOS 3.20 (Disk 1)", path: "/disks/pc/dos/ibm/3.20/PCDOS320-DISK1.json"}, B: {name: "PC-DOS 3.20 (Disk 2)", path: "/disks/pc/dos/ibm/3.20/PCDOS320-DISK2.json"}}'/>
|
||||||
<hdc id="hdcAT" type="at" drives='[{name:"20Mb Hard Disk",type:2}]'/>
|
<hdc id="hdcAT" type="at" drives='[{name:"20Mb Hard Disk",type:2}]'/>
|
||||||
<chipset id="chipset" model="5170" floppies="[1440,1200]"/>
|
<chipset id="chipset" model="5170" floppies="[1440,1200]"/>
|
||||||
<serial id="com1" adapter="1"/>
|
<serial id="com1" adapter="1"/>
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<name>IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk</name>
|
<name>IBM PC AT (8Mhz), 128Kb EGA, 2Mb RAM, 20Mb Hard Disk</name>
|
||||||
<computer id="at-ega-2048k" name="IBM PC AT" buswidth="24"/>
|
<computer id="at-ega-2048k" name="IBM PC AT" buswidth="24"/>
|
||||||
<cpu id="cpu286" model="80286" cycles="8000000"/>
|
<cpu id="cpu286" model="80286" cycles="8000000"/>
|
||||||
<ram id="ramLow" addr="0x00000" test="true" size="0xa0000" comment="ROM BIOS memory test has NOT been disabled"/>
|
<ram id="ramLow" addr="0x00000" test="false" size="0xa0000" comment="ROM BIOS memory test has been disabled"/>
|
||||||
<ram id="ramExt" addr="0x100000" size="0x160000" comment=""/>
|
<ram id="ramExt" addr="0x100000" size="0x160000" comment=""/>
|
||||||
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pc/video/ibm/ega/ibm-ega.json" notify="videoEGA"/>
|
<rom id="romEGA" addr="0xc0000" size="0x4000" file="/devices/pc/video/ibm/ega/ibm-ega.json" notify="videoEGA"/>
|
||||||
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/bios/5170/1985-11-15.json"/>
|
<rom id="romBIOS" addr="0xf0000" size="0x10000" alias="0xff0000" file="/devices/pc/bios/5170/1985-11-15.json"/>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ redirect_from:
|
||||||
OS/2 1.0 Debugger Boot Disk
|
OS/2 1.0 Debugger Boot Disk
|
||||||
---
|
---
|
||||||
|
|
||||||
This disk contains a version of OS/2 1.0 built on October 12, 1988, which included the built-in kernel debugger
|
This disk contained a version of OS/2 1.0 built on October 12, 1988, which included the built-in kernel debugger
|
||||||
used by Microsoft and IBM for internal development, along with a rudimentary program selector.
|
used by Microsoft and IBM for internal development, along with a rudimentary program selector.
|
||||||
|
|
||||||
Note that [IBM OS/2 1.0](/disks/pc/os2/ibm/1.0/) was finalized in October 1987, nearly a year before the timestamps
|
Note that [IBM OS/2 1.0](/disks/pc/os2/ibm/1.0/) was finalized in October 1987, nearly a year before the timestamps
|
||||||
|
|
|
||||||
|
|
@ -9,24 +9,34 @@ Other OS/2 Disks
|
||||||
|
|
||||||
### OS/2 CP-DOS Boot Disk (v7.68)
|
### OS/2 CP-DOS Boot Disk (v7.68)
|
||||||
|
|
||||||
The [OS/2 CP-DOS Boot Disk (v7.68)](/disks/pc/os2/misc/cpdos/86295/) contains a pre-1.0 version of OS/2
|
The [OS/2 CP-DOS Boot Disk (v7.68)](/disks/pc/os2/misc/cpdos/86295/) contained a pre-1.0 version of OS/2
|
||||||
(aka **CP-DOS** or **286DOS** or **DOS5**) built on October 22, 1986.
|
(aka **CP-DOS** or **286DOS** or **DOS5**) built on October 22, 1986.
|
||||||
|
|
||||||
### OS/2 FOOTBALL Boot Disk (v7.68.17)
|
### OS/2 FOOTBALL Boot Disk (v7.68.17)
|
||||||
|
|
||||||
The [OS/2 FOOTBALL Boot Disk (v7.68.17)](/disks/pc/os2/misc/football/87058/) contains a prototype version of OS/2
|
The [OS/2 FOOTBALL Boot Disk (v7.68.17)](/disks/pc/os2/misc/football/87058/) contained a prototype version of OS/2
|
||||||
from February 1987 that was designed to test two important new features of the Intel 80386 processor: paging and V86-mode.
|
from February 1987 that was designed to test two important new features of the Intel 80386 processor: paging and V86-mode.
|
||||||
This prototype was forked from pre-1.0 OS/2 sources, and the only hardware it supported was the Compaq DeskPro 386-16.
|
This prototype was forked from pre-1.0 OS/2 sources, and the only hardware it supported was the Compaq DeskPro 386-16.
|
||||||
|
|
||||||
### OS/2 FOOTBALL Boot Disk (v4.41.00)
|
### OS/2 FOOTBALL Boot Disk (v4.41.00)
|
||||||
|
|
||||||
The [OS/2 FOOTBALL Boot Disk (v4.41.00)](/disks/pc/os2/misc/football/87357/) contains an updated FOOTBALL prototype.
|
The [OS/2 FOOTBALL Boot Disk (v4.41.00)](/disks/pc/os2/misc/football/87357/) contained an updated FOOTBALL prototype.
|
||||||
It was built in December 1987, using final OS/2 1.0 sources merged with assorted FOOTBALL changes, and although
|
It was built in December 1987, using final OS/2 1.0 sources merged with assorted FOOTBALL changes, and although
|
||||||
it was originally assigned version number 1.3, this version of OS/2 would ultimately become 2.0.
|
it was originally assigned version number 1.3, this version of OS/2 would ultimately become 2.0.
|
||||||
|
|
||||||
|
### OS/2 SIZZLE Boot Disk (v7.68.18)
|
||||||
|
|
||||||
|
The [OS/2 SIZZLE Boot Disk (v7.68.18)](/disks/pc/os2/misc/cpdos/87007/) contained a pre-1.0 version of OS/2
|
||||||
|
(aka **CP-DOS** or **286DOS** or **DOS5**) built on January 7, 1987.
|
||||||
|
|
||||||
|
### OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)
|
||||||
|
|
||||||
|
The [OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)](/disks/pc/os2/misc/cpdos/87007/debug/) was largely identical to the
|
||||||
|
previous disk, with the exception of a *DEBUG* kernel (with built-in debugger) and a different assortment of tools.
|
||||||
|
|
||||||
### OS/2 1.0 Debugger Boot Disk
|
### OS/2 1.0 Debugger Boot Disk
|
||||||
|
|
||||||
The [OS/2 1.0 Debugger Boot Disk](/disks/pc/os2/misc/1.0/88286/) contains a version of OS/2 1.0 built on
|
The [OS/2 1.0 Debugger Boot Disk](/disks/pc/os2/misc/1.0/88286/) contained a version of OS/2 1.0 built on
|
||||||
October 12, 1988, which included the built-in kernel debugger used by Microsoft and IBM for internal development,
|
October 12, 1988, which included the built-in kernel debugger used by Microsoft and IBM for internal development,
|
||||||
along with a rudimentary program selector. For more details, see the [OS/2 1.0](/blog/2014/12/04/) blog post.
|
along with a rudimentary program selector. For more details, see the [OS/2 1.0](/blog/2014/12/04/) blog post.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ machines:
|
||||||
OS/2 CP-DOS Boot Disk (v7.68)
|
OS/2 CP-DOS Boot Disk (v7.68)
|
||||||
---
|
---
|
||||||
|
|
||||||
This disk contains a pre-1.0 version of OS/2 (aka **CP-DOS** or **286DOS**) built on October 22, 1986.
|
This disk contained a pre-1.0 version of OS/2 (aka **CP-DOS** or **286DOS**) built on October 22, 1986.
|
||||||
|
|
||||||
When this disk boots, the following message is displayed on-screen:
|
When this disk boots, the following message is displayed on-screen:
|
||||||
|
|
||||||
|
|
|
||||||
90
disks/pc/os2/misc/cpdos/87007/README.md
Normal file
90
disks/pc/os2/misc/cpdos/87007/README.md
Normal file
|
|
@ -0,0 +1,90 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: OS/2 SIZZLE Boot Disk (v7.68.18)
|
||||||
|
permalink: /disks/pc/os2/misc/cpdos/87007/
|
||||||
|
machines:
|
||||||
|
- id: ibm5170
|
||||||
|
type: pc-dbg
|
||||||
|
config: /devices/pc/machine/5170/ega/1152kb/rev3/debugger/machine.xml
|
||||||
|
automount:
|
||||||
|
A:
|
||||||
|
name: OS/2 SIZZLE Boot Disk (v7.68.18)
|
||||||
|
path: /disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107.json
|
||||||
|
---
|
||||||
|
|
||||||
|
OS/2 SIZZLE Boot Disk (v7.68.18)
|
||||||
|
---
|
||||||
|
|
||||||
|
This disk contained a pre-1.0 version of OS/2 (aka **CP-DOS** or **286DOS**) built on January 7, 1987.
|
||||||
|
|
||||||
|
When this disk boots, the following message is displayed on-screen:
|
||||||
|
|
||||||
|
CP-DOS version 1.0
|
||||||
|
Copyright 1986 IBM Corp.
|
||||||
|
|
||||||
|
SIZZLE Internal revision 7.68.18, 86/12/12
|
||||||
|
|
||||||
|
A directory listing of this disk is provided [below](#directory-of-os2-sizzle-boot-disk-v76818).
|
||||||
|
|
||||||
|
{% include machine.html id="ibm5170" %}
|
||||||
|
|
||||||
|
### Directory of OS/2 SIZZLE Boot Disk (v7.68.18)
|
||||||
|
|
||||||
|
Volume in drive A has no label
|
||||||
|
|
||||||
|
Directory of A:\
|
||||||
|
|
||||||
|
IBMBIO COM 49408 01-07-87 12:18p
|
||||||
|
IBMDOS COM 172881 01-07-87 11:45a
|
||||||
|
OSO001 MSG 40730 01-07-87 1:41p
|
||||||
|
CMD EXE 47056 10-22-86 7:41p
|
||||||
|
COMMAND COM 23724 10-22-86 7:41p
|
||||||
|
COUNTRY SYS 6175 10-22-86 7:57p
|
||||||
|
MSG EXE 5824 10-22-86 7:58p
|
||||||
|
NLS EXE 3124 10-23-86 8:38a
|
||||||
|
SWAPPER EXE 4150 10-22-86 8:04p
|
||||||
|
ANSICALL EXE 3165 01-07-87 12:19p
|
||||||
|
BKSCALLS EXE 3611 01-07-87 12:21p
|
||||||
|
BMSCALLS EXE 2064 01-07-87 12:23p
|
||||||
|
BVSCALLS EXE 11710 01-07-87 12:30p
|
||||||
|
DOSCALL1 EXE 7071 01-07-87 12:33p
|
||||||
|
KBDCALLS EXE 4138 01-07-87 12:34p
|
||||||
|
MONCALLS EXE 5655 01-07-87 12:35p
|
||||||
|
MOUCALLS EXE 5177 01-07-87 12:36p
|
||||||
|
QUECALLS EXE 11508 01-07-87 1:03p
|
||||||
|
SESMGR EXE 25744 01-07-87 1:41p
|
||||||
|
SHELL EXE 4096 01-07-87 1:43p
|
||||||
|
VIOCALLS EXE 9833 01-07-87 1:10p
|
||||||
|
COM SYS 12342 10-22-86 10:11p
|
||||||
|
COM MSG 144 10-22-86 10:39a
|
||||||
|
EXTDSKDD EXE 1885 10-22-86 7:31p
|
||||||
|
MOUSE00 SYS 12342 10-22-86 7:31p
|
||||||
|
MOUSE01 SYS 12342 10-22-86 7:32p
|
||||||
|
MOUSE02 SYS 12342 10-22-86 7:32p
|
||||||
|
MOUSE03 SYS 12854 10-22-86 7:31p
|
||||||
|
POINTDD SYS 4240 10-22-86 7:32p
|
||||||
|
VDISK SYS 4662 10-22-86 7:33p
|
||||||
|
OSO001H MSG 82177 01-07-87 1:40p
|
||||||
|
IBMBIO MAP 14290 01-07-87 12:18p
|
||||||
|
IBMDOS MAP 75444 01-07-87 11:45a
|
||||||
|
CONFIG SYS 138 01-05-87 3:42p
|
||||||
|
DOS3TOOL <DIR> 01-07-87 2:21p
|
||||||
|
TEMP BAT 13 01-10-87 4:41p
|
||||||
|
36 file(s) 692059 bytes
|
||||||
|
|
||||||
|
Directory of A:\DOS3TOOL
|
||||||
|
|
||||||
|
. <DIR> 01-07-87 2:21p
|
||||||
|
.. <DIR> 01-07-87 2:21p
|
||||||
|
MSC EXE 29428 02-10-86 10:12a
|
||||||
|
CL EXE 27655 12-07-86 3:49p
|
||||||
|
P1 EXE 130969 12-07-86 3:49p
|
||||||
|
P2 EXE 116077 12-07-86 3:49p
|
||||||
|
P3 EXE 115357 12-07-86 3:49p
|
||||||
|
7 file(s) 419486 bytes
|
||||||
|
|
||||||
|
Total files listed:
|
||||||
|
43 file(s) 1111545 bytes
|
||||||
|
88576 bytes free
|
||||||
|
|
||||||
|
Return to [Other OS/2 Disks](/disks/pc/os2/misc/).
|
||||||
100
disks/pc/os2/misc/cpdos/87007/debug/README.md
Normal file
100
disks/pc/os2/misc/cpdos/87007/debug/README.md
Normal file
|
|
@ -0,0 +1,100 @@
|
||||||
|
---
|
||||||
|
layout: page
|
||||||
|
title: OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)
|
||||||
|
permalink: /disks/pc/os2/misc/cpdos/87007/debug/
|
||||||
|
machines:
|
||||||
|
- id: ibm5170
|
||||||
|
type: pc-dbg
|
||||||
|
config: /devices/pc/machine/5170/ega/1152kb/rev3/debugger/machine.xml
|
||||||
|
automount:
|
||||||
|
A:
|
||||||
|
name: OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)
|
||||||
|
path: /disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107-DEBUG.json
|
||||||
|
---
|
||||||
|
|
||||||
|
OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)
|
||||||
|
---
|
||||||
|
|
||||||
|
This disk contained a *DEBUG* pre-1.0 version of OS/2 (aka **CP-DOS** or **286DOS**) built on January 7, 1987, and
|
||||||
|
it is largely identical to the [OS/2 SIZZLE Boot Disk (v7.68.18)](/disks/pc/os2/misc/cpdos/87007/), with
|
||||||
|
the exception of a *DEBUG* kernel (with built-in debugger) and a different assortment of tools.
|
||||||
|
|
||||||
|
When this disk boots, the following message is displayed on-screen:
|
||||||
|
|
||||||
|
CP-DOS version 1.0
|
||||||
|
Copyright 1986 IBM Corp.
|
||||||
|
|
||||||
|
SIZZLE Internal revision 7.68.18, 86/12/12
|
||||||
|
|
||||||
|
A directory listing of this disk is provided [below](#directory-of-os2-sizzle-boot-disk-v76818-debug).
|
||||||
|
|
||||||
|
{% include machine.html id="ibm5170" %}
|
||||||
|
|
||||||
|
### Directory of OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)
|
||||||
|
|
||||||
|
Volume in drive A has no label
|
||||||
|
|
||||||
|
Directory of A:\
|
||||||
|
|
||||||
|
IBMBIO COM 53056 01-07-87 2:41p
|
||||||
|
IBMDOS COM 202569 01-07-87 2:39p
|
||||||
|
OSO001 MSG 40730 01-07-87 1:41p
|
||||||
|
CMD EXE 47056 10-22-86 7:41p
|
||||||
|
COMMAND COM 23724 10-22-86 7:41p
|
||||||
|
COUNTRY SYS 6175 10-22-86 7:57p
|
||||||
|
MSG EXE 5824 10-22-86 7:58p
|
||||||
|
NLS EXE 3124 10-23-86 8:38a
|
||||||
|
SWAPPER EXE 4150 10-22-86 8:04p
|
||||||
|
ANSICALL EXE 3165 01-07-87 12:19p
|
||||||
|
BKSCALLS EXE 3611 01-07-87 12:21p
|
||||||
|
BMSCALLS EXE 2064 01-07-87 12:23p
|
||||||
|
BVSCALLS EXE 11710 01-07-87 12:30p
|
||||||
|
DOSCALL1 EXE 7071 01-07-87 12:33p
|
||||||
|
KBDCALLS EXE 4138 01-07-87 12:34p
|
||||||
|
MONCALLS EXE 5655 01-07-87 12:35p
|
||||||
|
MOUCALLS EXE 5177 01-07-87 12:36p
|
||||||
|
QUECALLS EXE 11508 01-07-87 1:03p
|
||||||
|
SESMGR EXE 25744 01-07-87 1:41p
|
||||||
|
SHELL EXE 4096 01-07-87 1:43p
|
||||||
|
VIOCALLS EXE 9833 01-07-87 1:10p
|
||||||
|
COM SYS 12342 10-22-86 10:11p
|
||||||
|
COM MSG 144 10-22-86 10:39a
|
||||||
|
EXTDSKDD EXE 1885 10-22-86 7:31p
|
||||||
|
MOUSE00 SYS 12342 10-22-86 7:31p
|
||||||
|
MOUSE01 SYS 12342 10-22-86 7:32p
|
||||||
|
MOUSE02 SYS 12342 10-22-86 7:32p
|
||||||
|
MOUSE03 SYS 12854 10-22-86 7:31p
|
||||||
|
POINTDD SYS 4240 10-22-86 7:32p
|
||||||
|
VDISK SYS 4662 10-22-86 7:33p
|
||||||
|
OSO001H MSG 82177 01-07-87 1:40p
|
||||||
|
IBMBIO MAP 14557 01-07-87 2:41p
|
||||||
|
IBMDOS MAP 83303 01-07-87 2:39p
|
||||||
|
CONFIG SYS 138 01-05-87 3:42p
|
||||||
|
DOS3TOOL <DIR> 01-07-87 2:49p
|
||||||
|
35 file(s) 733508 bytes
|
||||||
|
|
||||||
|
Directory of A:\DOS3TOOL
|
||||||
|
|
||||||
|
. <DIR> 01-07-87 2:49p
|
||||||
|
.. <DIR> 01-07-87 2:49p
|
||||||
|
MASM EXE 95369 12-07-86 3:50p
|
||||||
|
LINK4 EXE 75544 10-22-86 7:55p
|
||||||
|
MAKE EXE 49120 07-02-86 3:49p
|
||||||
|
TRESP EXE 14133 08-01-86 10:57a
|
||||||
|
LIB EXE 29359 06-27-86 4:00a
|
||||||
|
LINK EXE 47547 06-27-86 4:00a
|
||||||
|
IMPLIB EXE 23396 10-22-86 7:57p
|
||||||
|
SED EXE 19882 01-15-85 4:47p
|
||||||
|
RELOC EXE 15635 05-14-86 12:00p
|
||||||
|
MKMSGF EXE 14830 09-10-86 1:07p
|
||||||
|
MSGBIND EXE 12966 07-18-86 11:47a
|
||||||
|
MSGSPLIT EXE 11188 09-19-86 7:58a
|
||||||
|
SYMDEB EXE 37021 10-16-85 4:00a
|
||||||
|
BOOT BAT 169 01-07-87 2:43p
|
||||||
|
16 file(s) 446159 bytes
|
||||||
|
|
||||||
|
Total files listed:
|
||||||
|
51 file(s) 1179667 bytes
|
||||||
|
19456 bytes free
|
||||||
|
|
||||||
|
Return to [Other OS/2 Disks](/disks/pc/os2/misc/).
|
||||||
1
disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107-DEBUG.json
Normal file
1
disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107-DEBUG.json
Normal file
File diff suppressed because one or more lines are too long
1
disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107.json
Normal file
1
disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107.json
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -15,8 +15,10 @@ machines:
|
||||||
OS/2 FOOTBALL Boot Disk (v7.68.17)
|
OS/2 FOOTBALL Boot Disk (v7.68.17)
|
||||||
---
|
---
|
||||||
|
|
||||||
This disk contains a prototype version of OS/2 from February 1987, code-named **FOOTBALL** (aka **PIGSKIN**).
|
This disk contained a prototype version of OS/2 from February 1987, code-named **FOOTBALL** (aka **PIGSKIN**).
|
||||||
It predates the completion of OS/2 1.0 by some eight months.
|
It predated the completion of OS/2 1.0 by some eight months.
|
||||||
|
|
||||||
|
See the original [Design Document](#design-document) describing the **FOOTBALL** prototype.
|
||||||
|
|
||||||
On boot, the following message is displayed on-screen:
|
On boot, the following message is displayed on-screen:
|
||||||
|
|
||||||
|
|
@ -133,4 +135,228 @@ Under PCjs, the kernel crashes shortly thereafter. This issue is still under in
|
||||||
CPGREP EXE 25286 10-21-86 9:08p
|
CPGREP EXE 25286 10-21-86 9:08p
|
||||||
31 File(s) 549888 bytes free
|
31 File(s) 549888 bytes free
|
||||||
|
|
||||||
|
Design Document
|
||||||
|
---
|
||||||
|
|
||||||
|
The following text is from an email titled "3xBox Design Document" sent to the
|
||||||
|
*football* alias on Saturday, February 28, 1987, at 5:02pm.
|
||||||
|
|
||||||
|
### Overview
|
||||||
|
|
||||||
|
The goal for this research project was to demonstrate the feasability of
|
||||||
|
supporting multiple virtual DOS 3.x machines on a 286DOS-based kernel running
|
||||||
|
on an 386 personal computer. Each "3xBox" would have its own virtual screen,
|
||||||
|
keyboard, interrupt vectors, and address space. Furthermore, well- behaved
|
||||||
|
DOS 3.x applications that do text (as opposed to graphic) screen output would
|
||||||
|
run in the background.
|
||||||
|
|
||||||
|
In order to acheive this goal in a reasonable amount of time, we started from
|
||||||
|
the 286DOS "sizzle" kernel and made the minimum amount of changes necessary,
|
||||||
|
both in code and fundamental design. The resulting DOS will be referred to
|
||||||
|
as "386DOS" in this paper.
|
||||||
|
|
||||||
|
386DOS provides up to four 3xBoxes, depending upon the available RAM. More
|
||||||
|
3xBoxes could be supported if a slight change is made to the method of
|
||||||
|
allocating page tables.
|
||||||
|
|
||||||
|
Well-behaved DOS 3.x applications (i.e., MS-Multiplan, MS-Word, Lotus 1-2-3)
|
||||||
|
can run in the background, multi-tasking against one another and against the
|
||||||
|
foreground screen group. Lotus 1-2-3 (version 2.01) passes its floppy-based
|
||||||
|
copy protection when in the foreground.
|
||||||
|
|
||||||
|
It should be noted that 386DOS, while functional, is not an optimal design/
|
||||||
|
implementation of multiple 3xBoxes. In particular, interrupt management, the
|
||||||
|
device driver model, and the existence of V86-mode kernel code should be
|
||||||
|
modified before 386DOS is made a commercial product.
|
||||||
|
|
||||||
|
Unless stated otherwise, most of the concepts extant in 286DOS apply to 386DOS.
|
||||||
|
|
||||||
|
### V86 Mode and the 386
|
||||||
|
|
||||||
|
The 386 CPU has three distinct execution modes: REAL, PROT, and V86. REAL
|
||||||
|
and PROT modes are largely compatible with the corresponding modes of an 286.
|
||||||
|
V86 modes is exactly the same as RING 3 PROT mode, with the following
|
||||||
|
differences:
|
||||||
|
|
||||||
|
o Memory Address Hierarchy
|
||||||
|
A 386 has three levels of memory addresses:
|
||||||
|
- Virtual (Intel refers to this as Logical)
|
||||||
|
This is either the selector:offset or segment:offset address used
|
||||||
|
by unprivledged machine language code.
|
||||||
|
- Linear
|
||||||
|
This is the 32-bit address arrived at either via a GDT/LDT
|
||||||
|
selector lookup, or via the 8086-compatible (seg << 4 + offset).
|
||||||
|
- Physical
|
||||||
|
This is the 32-bit address arrived at by pushing a linear address
|
||||||
|
through the paging mechanism. This is the address that the CPU
|
||||||
|
sends out on the bus to select physical memory.
|
||||||
|
|
||||||
|
When in V86 mode, the CPU performs the 8086-compatible computation.
|
||||||
|
|
||||||
|
o I/O instructions are NOT IOPL-sensitive
|
||||||
|
Trapping of I/O is done using the IO Permission Map.
|
||||||
|
|
||||||
|
o All instructions which modify or expose the Interrupt Flag ARE IOPL-
|
||||||
|
sensitive.
|
||||||
|
This allows the OS to simulate the Interrupt Flag, if desired.
|
||||||
|
|
||||||
|
### V86 IRETD Frame
|
||||||
|
|
||||||
|
When any interrupt, trap, exception, or fault occurs in V86 mode, the CPU
|
||||||
|
switches to PROT mode and switches to the TSS Ring 0 Stack and builds the
|
||||||
|
following stack frame:
|
||||||
|
|
||||||
|
(0) (old GS)
|
||||||
|
(0) (old FS)
|
||||||
|
(0) (old DS)
|
||||||
|
(0) (old ES)
|
||||||
|
(0) (old SS)
|
||||||
|
(old ESP)
|
||||||
|
(old EFLAGS)
|
||||||
|
(0) (old CS)
|
||||||
|
(old EIP) <- (SS:SP)
|
||||||
|
|
||||||
|
### CPU Mode Determination
|
||||||
|
|
||||||
|
A new implementation of the WHATMODE macro was written in order to distinguish
|
||||||
|
between the three CPU modes: REAL, PROT, and V86. REAL mode is indicated by
|
||||||
|
a 0 PE bit in CR0 (a.k.a. MSW on a 286). If the PE bit is 1, then the mode
|
||||||
|
may be either PROT or V86. These two modes may be distinguished by attempting
|
||||||
|
to change the IOPL bits in the FLAGS word. At Ring 0 in PROT mode (the only
|
||||||
|
place WHATMODE is used), the IOPL may be changed. In V86 mode, IOPL cannot
|
||||||
|
be changed. So, we change IOPL and then check to see if it changed. If so,
|
||||||
|
PROT mode, else V86 mode.
|
||||||
|
|
||||||
|
### CPU Mode Switching
|
||||||
|
|
||||||
|
The 286DOS kernel relies extensively on switching inbetween REAL and PROT.
|
||||||
|
This functionality is provided by the RealMode and ProtMode routines.
|
||||||
|
In 386DOS, RealMode is no longer needed. As soon as we switch to PROT mode
|
||||||
|
during SysInit, the CPU only uses PROT and V86 modes.
|
||||||
|
|
||||||
|
Two new routines, ProtToV86 and V86ToProt, that are analogous to RealMode and
|
||||||
|
ProtMode. ProtToV86 is quite straightforward. We build a V86 IRETD frame
|
||||||
|
on the stack with the VM bit set in the EFLAGS image. We set the SS:SP
|
||||||
|
image to be equivalent to the stack just above the V86 IRETD frame, and
|
||||||
|
set the CS:IP image to instruction following an IRETD. Then, we issue the
|
||||||
|
IRETD and the CPU continues processing following the IRETD and in V86 mode.
|
||||||
|
|
||||||
|
V86ToProt is a bit trickier. The only way to get out of V86 mode is to
|
||||||
|
trap or fault or issue a software interrupt. We chose to use a software
|
||||||
|
interrupt, 30h, which we call the V86 Services interrupt. The INT 30h entry
|
||||||
|
in the IDT is a ring 3 interrupt gate, so issuing an INT 30 from V86 mode
|
||||||
|
causes a V86 IRETD frame to be built on the TSS Ring 0 stack and control
|
||||||
|
transfers to the INT 30h vector. The handler verifies that the INT 30h
|
||||||
|
was issued by the V86ToProt routine (checks CS:IP on the stack). If not,
|
||||||
|
the interrupt is reflected back to the requesting 3xBox (See Interrupt
|
||||||
|
Reflection). If it was V86ToProt, we clean off the stack frame and return to
|
||||||
|
the caller. NOTE: V86 Services is also used for completing the 386 LOADALL
|
||||||
|
used by PhysToVirt to map "high" memory in "REAL" mode.
|
||||||
|
|
||||||
|
### Stack Switching
|
||||||
|
|
||||||
|
In order to maintain the 286DOS mode switch and stack switch semantics
|
||||||
|
when V86 mode is used, we have a new stack (the V86 Stack) in the 3xBox PTDA.
|
||||||
|
|
||||||
|
### 286DOS Modes and Stacks
|
||||||
|
|
||||||
|
The RealMode and ProtMode procedures in 286DOS are the only ways to switch
|
||||||
|
the CPU execution mode. These routines both maintain SS:SP, allowing
|
||||||
|
RealMode and ProtMode to be reentrant. The TSS Ring 0 stack is always the
|
||||||
|
current TCB stack in the current PTDA. The only other stacks in the system
|
||||||
|
are the Interrupt Stack and user stack(s).
|
||||||
|
|
||||||
|
### 386DOS Modes and Stacks
|
||||||
|
|
||||||
|
In 386DOS, any interrupt or exception while in V86 mode causes a switch to
|
||||||
|
PROT mode and the TSS Ring 0 Stack. So we have a new way to mode switch with
|
||||||
|
an incompatible stack semantic. We had to fix this mode switch to make it
|
||||||
|
compatible with 286DOS.
|
||||||
|
|
||||||
|
### Observation
|
||||||
|
|
||||||
|
In V86 mode, the current stack must not be the TSS Ring 0 Stack. The CPU
|
||||||
|
only leaves V86 mode via an interrupt/exception, which causes a stack switch
|
||||||
|
to the TSS Ring 0 Stack. If the current stack was the same as the TSS Ring 0
|
||||||
|
Stack, then the stack might get corrupted. In 286DOS, the Ring 0 Stack is
|
||||||
|
the PTDA. Since we run on this stack in V86 mode, we need a new Ring 0 stack
|
||||||
|
when a 3xBox is running.
|
||||||
|
|
||||||
|
### Approach
|
||||||
|
|
||||||
|
1) When a PMBox is running, the TSS Ring 0 Stack is a PTDA TCB stack.
|
||||||
|
+ This is consistent with the 286DOS model.
|
||||||
|
|
||||||
|
2) When a 3xBox is running, the TSS Ring 0 Stack is the "V86 Stack".
|
||||||
|
+ The V86 Stack is allocated in the 3xBox PTDA.
|
||||||
|
+ If the cause of the mode switch can be handled without enabling
|
||||||
|
interrupts (e.g., interrupt reflection, IN/OUT trapping), we stay
|
||||||
|
on the V86 stack.
|
||||||
|
+ Otherwise, copy the V86 IRETD frame to the previous stack and
|
||||||
|
switch back to the previous stack.
|
||||||
|
|
||||||
|
### Details
|
||||||
|
|
||||||
|
1) Leaving V86 mode
|
||||||
|
a. V86ToProt (analog of ProtMode)
|
||||||
|
+ Issue special V86ToProt software interrupt. If the interrupt
|
||||||
|
gate is DPL=3 (and it must be a 386 Interrupt Gate), then the 386
|
||||||
|
switches to Ring 0 (and the TSS Ring 0 stack) and transfers
|
||||||
|
control to the handler.
|
||||||
|
+ To ensure that 3xBox apps don't use this feature, the interrupt
|
||||||
|
handler checks that CS=DosGroup and IP is in the correct range.
|
||||||
|
If not, then the interrupt is reflected (see below).
|
||||||
|
+ To make V86ToProt compatible with ProtMode, the interrupt handler
|
||||||
|
switches to the old stack (we get SS:ESP from TSS Ring 0 stack,
|
||||||
|
which is where we are running).
|
||||||
|
+ Finally, V86ToProt restores saved registers and flags from the
|
||||||
|
stack and returns to caller.
|
||||||
|
|
||||||
|
b. Software interrupt
|
||||||
|
+ GP-Fault handler reflects to 3xBox IVT handler in V86 mode.
|
||||||
|
o Add IRET frame on old stack, taking IP, CS, FLAGS from
|
||||||
|
TSS Ring 0 Stack.
|
||||||
|
o Look up handler in 3xBox IVT.
|
||||||
|
o Edit TSS Ring 0 Stack EIP and CS to point to IVT handler.
|
||||||
|
o IRETD
|
||||||
|
+ IVT interrupt handler IRET uses IRET frame we built on old stack.
|
||||||
|
|
||||||
|
c. Hardware interrupt
|
||||||
|
+ To make this operation compatible with 286Dos, the interrupt
|
||||||
|
handler copies the V86 stack from the TSS Ring 0 stack to
|
||||||
|
the old stack, then switches stacks to the newly modified old
|
||||||
|
stack. This allows the Interupt Manager to do an IRETD to
|
||||||
|
get back to the correct mode.
|
||||||
|
|
||||||
|
d. Exception
|
||||||
|
+ Remain on V86 stack, process exception, and IRETD.
|
||||||
|
|
||||||
|
2) Entering V86 mode
|
||||||
|
a. ProtToV86
|
||||||
|
+ Build V86 IRETD frame on current stack and IRETD.
|
||||||
|
b. LinToVirtDM_HANDLE
|
||||||
|
+ Execute 386 LOADALL with VM bit set in EFLAGS image in loadall
|
||||||
|
buffer.
|
||||||
|
|
||||||
|
### Interrupt Management
|
||||||
|
|
||||||
|
All software interrupts, hardware interrupts, and CPU traps and exceptions
|
||||||
|
are vectored through a common IDT, regardless of whether the CPU is in PROT
|
||||||
|
or V86 mode.
|
||||||
|
|
||||||
|
NOTE: Background 3xBoxes get no hardware interrupts. In the commercial 386DOS,
|
||||||
|
this restriction can be relaxed so that interrupts, other than for the
|
||||||
|
keyboard and mouse (since those are implicitly for the foreground box),
|
||||||
|
can be given to background 3xBoxes.
|
||||||
|
|
||||||
|
### Passing Hardware Interrupts to the Foreground 3xBox
|
||||||
|
|
||||||
|
In the interrupt manager:
|
||||||
|
|
||||||
|
IF a 3xBox is foreground -AND-
|
||||||
|
the current mapped 3xBox is background
|
||||||
|
THEN
|
||||||
|
MapIn foreground 3xBox;
|
||||||
|
Dispatch interrupt;
|
||||||
|
|
||||||
Return to [Other OS/2 Disks](/disks/pc/os2/misc/).
|
Return to [Other OS/2 Disks](/disks/pc/os2/misc/).
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ machines:
|
||||||
OS/2 FOOTBALL Boot Disk (v4.41.00)
|
OS/2 FOOTBALL Boot Disk (v4.41.00)
|
||||||
---
|
---
|
||||||
|
|
||||||
This disk contains an updated version of [OS/2 FOOTBALL Boot Disk (v7.68.17)](/disks/pc/os2/misc/football/87058/).
|
This disk contained an updated version of [OS/2 FOOTBALL Boot Disk (v7.68.17)](/disks/pc/os2/misc/football/87058/).
|
||||||
It was built in December 1987, using final OS/2 1.0 sources merged with assorted FOOTBALL changes, and although
|
It was built in December 1987, using final OS/2 1.0 sources merged with assorted FOOTBALL changes, and although
|
||||||
it was originally assigned version number 1.3, this version of OS/2 would ultimately become 2.0.
|
it was originally assigned version number 1.3, this version of OS/2 would ultimately become 2.0.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,10 @@
|
||||||
<disk id="disk04" size="1228800" chs="80:2:15" img="1.0/static/OS210-88286.img" href="/disks/pc/os2/misc/1.0/OS210-88286.json">
|
<disk id="disk04" size="1228800" chs="80:2:15" img="1.0/static/OS210-88286.img" href="/disks/pc/os2/misc/1.0/OS210-88286.json">
|
||||||
<name>OS/2 1.0 Debugger Boot Disk</name>
|
<name>OS/2 1.0 Debugger Boot Disk</name>
|
||||||
</disk>
|
</disk>
|
||||||
|
<disk id="disk05" size="1228800" chs="80:2:15" img="cpdos/static/SIZZLE-76818-19870107.img" href="/disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107.json" md5="be9f5b8f1b7882cf039f254ac11d9b2e" md5json="1a666f759f0e5dd27251626b4bc290dd">
|
||||||
|
<name>OS/2 SIZZLE Boot Disk (v7.68.18)</name>
|
||||||
|
</disk>
|
||||||
|
<disk id="disk06" size="1228800" chs="80:2:15" img="cpdos/static/SIZZLE-76818-19870107-DEBUG.img" href="/disks/pc/os2/misc/cpdos/SIZZLE-76818-19870107-DEBUG.json" md5="c0bc3c29cf5cd319b2104ea091090cf3" md5json="fc59fc2622dbd459f88d79368c631fec">
|
||||||
|
<name>OS/2 SIZZLE Boot Disk (v7.68.18 DEBUG)</name>
|
||||||
|
</disk>
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue