Merge branch 'master' into gh-pages

This commit is contained in:
Jeff Parsons 2017-05-26 10:19:28 -07:00
commit 28676361ce
32 changed files with 2128 additions and 19 deletions

File diff suppressed because it is too large Load diff

View file

@ -8,3 +8,16 @@ PDP-10 Software Tapes
---------------------
PCjs has not yet archived any PDP-10 software from tape.
Tape Formats
------------
This is a topic that will obviously take some time to digest, especially when starting from scratch, so for
now, we'll just archive some relevant documents.
From [http://src.gnu-darwin.org/ports/emulators/klh10/work/klh10-2.0a/doc/vtape.txt](http://src.gnu-darwin.org/ports/emulators/klh10/work/klh10-2.0a/doc/vtape.txt):
{% highlight text %}
{% include_relative vtape.txt %}
{% endhighlight %}

493
apps/pdp10/tapes/vtape.txt Normal file
View file

@ -0,0 +1,493 @@
/* VTAPE.TXT - KLH10 Virtual Tape Format
*/
/* $Id: vtape.txt,v 2.3 2001/11/10 21:24:21 klh Exp $
*/
/* Copyright © 1994-1999, 2001 Kenneth L. Harrenstien
** All Rights Reserved
**
** This file is part of the KLH10 Distribution. Use, modification, and
** re-distribution is permitted subject to the terms in the file
** named "LICENSE", which contains the full text of the legal notices
** and should always accompany this Distribution.
*/
One of the methods used by the KLH10 to emulate PDP-10
magnetic tape devices is to provide support for "virtual tapes".
These virtual tapes are in reality disk files on the native host
system which have a specific format. Because they are native disk
files, it is far easier and faster to manipulate these virtual tape
images (for reading, writing, copying, archival, and transport over
networks) than would be the case for real physical tapes.
The purpose of this description is to allow users to generate or
maintain virtual tapes using their own tools in addition to the ones
provided in the KLH10 distribution. In most cases these tools can be
nothing more than a text editor and a simple copy program such as Unix
"dd".
VIRTUAL TAPE FORMATS
====================
Several virtual tape formats exist, developed more or less
independently. The KLH10 software can handle most of them and others
could be added if necessary. These formats are:
"RAW" - original KLH10 format
"TPS" - Wilson & Supnik format
"TPC" - DECUS/Shoppa format
"ITSDUMP" - special KLH10 format for ITS
"RAW" VIRTUAL TAPE: Directory and Data files
==================
Each RAW-format virtual tape consists of two native files, one
for the actual tape data and the other to describe that data. For
example, a virtual tape with the name "kosh" would consist of these
two files:
Virtual tape "kosh":
kosh - Tape directory (text; defines structure of data)
kosh.tap - Tape data (binary; one byte per tape frame)
"RAW" DATA FILE FORMAT (.TAP)
The tape data file is simply a continuous sequence of 8-bit bytes
corresponding to the logical stream of 8-bit tape data frames. There is
nothing in this file except tape data; there are no record boundaries or
tapemarks. Because this is a binary data file, all operations on this
file must preserve the data exactly.
"RAW" DIRECTORY FILE FORMAT (.TDR)
The tape directory is a text file that describes the contents of
its associated tape data file; it defines how the tape is structured in
terms of record boundaries, tapemarks, length, and internal format. It
can be used to describe anything about the tape in an easily readable
and editable form.
The directory is formatted as a set of logical text lines. Each
line begins with a keyword, optionally followed by data. Comments are
introduced by a semi-colon character (';') and continue to the end of
that physical line. Blank lines are ignored. Whitespace is also
ignored except at the start of a line, where indentation may be used
only when continuing a logical <filedesc> line over several physical
lines.
Keywords:
TF-Format: <fmtword> [<filename>]
; Tape datafile format and optional filename
<#>: <filedesc> ; File/Record descriptors
<indentation> <filedesc> ; optional continuation of above
EOT: ; Physical End of Tape, remaining text ignored.
<fmtword> - REQUIRED. Describes how the tape file data is stored on
disk. Currently only one keyword is fully supported:
"raw" - 8-bit bytes, one per frame.
<filename> - DEPRECATED. Optional name of tape data file, a feature
no longer used (ie ignored on input, not generated on output).
The tape data filename is either specified at mount time or
dynamically generated using ".tap" as an extension to the name of
the tape directory file. This extension replaces ".tdr" if it
exists, otherwise ".tap" is simply appended.
<#> - location in data file of 1st record beginning next file. For "raw"
format this corresponds to the logical frame # on tape as well, but
for other formats this may serve a realignment purpose.
The string "BOT" is considered equivalent to "0".
<filedesc> - a list of <recdesc> record descriptors composing the file,
separated by whitespace. The list may be empty, as is normally
the case for two consecutive tapemarks that signal a logical EOT.
<recdesc> - A record descriptor, with the format
<len>[*<cnt>][E[<type>]]
where:
<len> - decimal record length, in frames (8-bit bytes)
<cnt> - # times this record length recurs.
E - indicates error when reading this record (or the last of a
series). <type> is an optional # and specifies additional
information, if any, as to nature of the error.
The string "EOF" is a special <recdesc> that signals a tape mark.
TAPE DIRECTORY EXAMPLE:
Here is an example of a tape directory file for a small dump:
; DUMPER saveset of PS:<SYSTEM> ; Human-readable comment
TF-Format: raw ; Required, and must be "raw"
0: 2590*8407 EOF ; First file
21774130: EOF ; Second file (empty == logical EOT)
EOT: ; Physical EOT
Note that comments can exist, that the data file format is RAW, and
that it starts at frame 0 with a 2590-byte record which is repeated
8407 times, followed by an EOF tapemark, then another EOF tapemark.
The emulator software generates the second EOF using a new line so
that the tape location (21774130) can serve as a validity cross-check;
this is a compromise between putting everything on a single line or
putting each record on its own line, either of which is equally valid.
"TPS" FILE FORMAT (.TAP, .TPS, .TPE)
====================================
This is the format used by Bob Supnik's SIMH emulators. It is
almost the same as John Wilson's E11 format, which it was intended to
resemble.
A TPS file is assumed to consist of 8-bit bytes.
Each record starts with a 4-byte header in little-endian order.
The high bit of this 32-bit header is set to indicate an error of
some kind (similar to the 'E' flag in a RAW-format control file) and
the remaining 31 bits contain the record length N.
This header is followed by N data bytes plus, if N is odd, a padding
byte (of undefined value) at the end. Following this is a copy of the
4-byte record header.
Tapemarks are represented by a single header with N=0.
The reason for having the record length both before and after the
record data is so tape motion in the reverse direction can be more
easily simulated.
The E11 (.TPE) format is identical except there are no padding bytes.
"TPC" FILE FORMAT (.TPC)
========================
This format is not as flexible as the others but was
apparently quite commonly used for DECUS tape images, and Tim Shoppa
has a "couple thousand" TPC images stashed away.
A TPC file is assumed to consist of 8-bit bytes.
Each record starts with a 2-byte header in little-endian order,
containing 16 bits of record length N.
This header is followed by N data bytes plus, if N is odd, a padding
byte (of undefined value) at the end. Unlike TPS format, there is no
trailing header.
Tapemarks are represented by a single header with N=0.
Obviously it is difficult to use this format directly when reverse
tape motion is desired; an internal representation must be built.
TAPE GENERATION
There are three principal ways to create virtual tapes:
(1) Using the emulator to write tapes.
(2) Copying from real PDP-10 tapes.
(3) Creating synthesized tapes "by hand".
TAPE GENERATION [1]: Using the emulator
=======================================
Method [1] is described in the documentation for the emulator
proper; see the section "Using Virtual Tapes" in USAGE.TXT.
TAPE GENERATION [2]: Copying a real tape
========================================
This is likely to be the most common use of virtual tapes for a
new installation. This is also the only way to move data in and out of
a virtual system if there is no network support.
The simplest method for copying a real tape is to use the TAPEDD utility
provided with the emulator, as follows:
<Mount the physical tape on a drive such as /dev/rmt0a>
% tapedd it=/dev/rmt0a otv=kosh
This will copy the tape into a virtual tape named "kosh" with whatever
extension is appropriate for the format. Note that the TAPEDD
arguments have a form similar to that of the standard Unix DD utility,
but are not the same. Invoking TAPEDD without arguments will cause it
to list the possible options, most of which are never needed.
If you want to copy a virtual tape back onto a physical tape, then
the counterpart to the above command would be:
% tapedd itv=kosh ot=/dev/rmt0a
If for some reason TAPEDD is not available or you want to build a virtual
tape that isn't a direct copy of an existing physical tape, you will need
to get your hands dirty with method [3].
TAPEDD allows specifying the virtual tape format with a letter following
the "v". For example:
% tapedd it=/dev/rmt0a otvs=kosh
will copy a tape into a TPS format file called "kosh.tps".
TAPE GENERATION [3]: Creating a synthesized tape
================================================
One of the primary reasons for implementing virtual tapes as a
RAW-format pair of files (data and directory) was to simplify the
process of creating and managing these tapes by hand in an extremely
portable way, without using any special software tools.
To generate the tape directory file, all you need is a text editor.
To generate the tape data file, normally it suffices to use the Unix
utility "dd" or equivalent device-to-device copying program. You simply
need to append every byte of tape data into a sequential binary file.
For example, the tape data file corresponding to the sample tape
directory above could have been read with a command like this:
% dd if=/dev/rmt0a of=kosh.tap bs=126b
0+8407 records in
0+8407 records out
Note that to use this technique properly you must have some prior
knowledge of the record sizes on the tape. For one thing, the blocksize
specified must be larger than the largest possible record size, to avoid
record truncation (hence the bs=126b); but more importantly, without
knowing the record size you don't know what to put in the tape directory
(TDR) file. In this case, we know that TOPS-20 DUMPER records are <518
words * 5 bytes/word> = 2590 bytes and so the appropriate <recdesc> is
2590*8407. But if the records were of different lengths then DD
provides no way for you to tell what these lengths were; this is one
reason TAPEDD is easier.
[Aside: TOPS-20 DUMPER could actually use a blocking factor of up to 15,
so that records could be 15*518*5 = 38850 bytes long, but for virtual
tapes the blocking is irrelevant and a factor of 1 always works for
DUMPER.]
To read multiple files from a tape using DD you must use a non-rewind
device specification, such as "/dev/nrmt0a", and invoke DD once for
each file. Remember to insert "EOF"s at appropriate places in the
descriptor file.
Although there is an UNIX utility called READ20 that can extract
native files from TOPS-20 DUMPER format tapes (real or virtual), there
is currently none for the inverse operation. In order to transport
native files into the virtual system without a network, pretty much
your only option is to synthesize a virtual tape where the contents
are simple data files.
WFCONV is a handy utility included with the emulator that will help
prepare such files. It acts as a conversion filter, copying the
standard input to the standard output and converting the data from one
PDP-10 tape format to another. In order to fully understand why this is
needed, you need to understand something about PDP-10 tape formats; for
now, just note the following examples, and see the appendix for details.
Example 1: transferring an ASCII text file:
# Make NL -> CRLF and convert into core-dump format
% wfconv -tc > temp.tap
# Find size of file
% ls -l temp.tap
-rw-rw-r-- 1 klh klh10 18641 Apr 1 1994 temp.tap
# Use size to compute number of 512-byte records
# 18641/512 = 36, plus leftover record of 209
% cat > temp
TF-Format: raw
0: 512*36 209 EOF EOF ; 36 records plus a short 37th
EOT:
^D
%
;; Then in TOPS-20 after mounting the tape "temp":
;; Note default format is CORE-DUMP, default reclen is 512.
@copY (FROM) mta0: (TO) temp.txt
MTA0: => TEMP.TXT.1 [OK]
@vd temp.txt
PS:<OPERATOR>
TEMP.TXT.1;P777700 8 3729(36) 20-Apr-97 01:00:59 OPERATOR
@
Example 2: transferring a binary file of 8-bit bytes (no conversion needed):
% cp temp.dat temp.tap
% ls -l temp.tap # Find size of file
-rw-rw-r-- 1 klh klh10 18641 Feb 13 1994 temp.tap
% cat > temp
TF-Format: raw
0: 2560*7 721 EOF EOF
EOT:
^D
%
;; Then in TOPS-20 after mounting the tape "temp":
@set taPE rECORD-LENGTH (TO) 2560
@set taPE fORMAT (TO) iNDUSTRY-COMPATIBLE
@copY (FROM) mta0: (TO) temp.dat,
@@byTE (SIZE) 8
@@
MTA0: => TEMP.DAT.1 [OK]
@vd temp.dat
PS:<OPERATOR>
TEMP.DAT.1;P777700 10 18641(8) 19-Apr-97 23:57:46 OPERATOR
@
Example 3: building a TOPS-20 installation tape
If you already have a TOPS-20 system, especially one with local
modifications (which pretty much includes everyone), you may wish to
build your own installation tape. The following illustrates what the
tape directory of the V7.0 TOPS-20 installation tape looks like. Note
it does not have an initial bootstrap on it since MTBOOT is assumed to
be already loaded in the PDP-10 memory.
; Tape directory for V7.0 TOPS-20 installation tape
; Bytes: 22519060, Records: 8704, Files(EOF marks): 7
TF-Format: raw
0: 2560*597 EOF ; MONITR.EXE
1528320: 2560*125 EOF ; EXEC.EXE
1848320: 2560*8 EOF ; DLUSER.EXE
1868800: 1270 EOF ; DLUSER data
1870070: 2560*36 EOF ; DUMPER.EXE
1962230: 2590*7937 EOF ; DUMPER savesets for <SYSTEM>, etc.
22519060: EOF
EOT:
All of these files must be in core-dump format. You can generate the
tape either by:
(1) creating it on a real TOPS system and then using it directly
or using TAPEDD to copy it into a virtual tape.
(2) copying the necessary files over, converting them into core-dump
format, and concatenating them to form a virtual tape.
See "klt20.txt" for more details on how such an installation tape is
actually used.
Quick lesson in tape formats:
A PDP-10 word is 36 bits. The 8-bit bytes ("frames" on 9-track
drives) that are now universal for tape don't fit exactly into 36 bits,
which opens a Pandora's Box of packing options. The basic formats
offered at one time or another on Digital systems are as follows:
WFCONV mode TOPS-20 name
----------- ------------------
a ANSI-ASCII
c CORE-DUMP
h HIGH-DENSITY
i INDUSTRY-COMPATIBLE
s SIXBIT
Only CORE-DUMP and INDUSTRY-COMPATIBLE are universally supported; the
others are features of older or newer formatters. In general, the TOPS-20
monitor expects CORE-DUMP format so that should be your normal choice.
Tape_Coredump (5 tape bytes per word)
B0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
0 0 0 0 32 33 34 35
Tape_Indust (4 tape bytes per PARTIAL word)
B0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 ; Bits 32-35 are unused!
Tape_Sixbit (6 tape bytes per word)
0 0 B0 1 2 3 4 5
0 0 6 7 8 9 10 11
0 0 12 13 14 15 16 17
0 0 18 19 20 21 22 23
0 0 24 25 26 27 28 29
0 0 30 31 32 33 34 35
Tape_Ascii (5 tape bytes per word)
0 B0 1 2 3 4 5 6
0 7 8 9 10 11 12 13
0 14 15 16 17 18 19 20
0 21 22 23 24 25 26 27
35 28 29 30 31 32 33 34
Tape_Hidens (9 tape bytes per 2 words)
B0 1 2 3 4 5 6 7
8 9 10 11 12 13 14 15
16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31
32 33 34 35 B0 1 2 3
4 5 6 7 8 9 10 11
12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27
28 29 30 31 32 33 34 35
WFCONV operation notes
======================
Invoking WFCONV without arguments will print out a summary similar to
the following:
Usage: wfconv -io <infile >outfile\n\
where 'i' and 'o' are chars specifying the input and output formats:
c - Core-dump (std tape format, 4 8-bit, 1 4-bit bytes = 36 bits)
h - High-density (FTP 36-bit image, 9 8-bit bytes = 72 bits)
a,7 - Ansi-Ascii (4 7-bit, 1 8-bit byte = 36 bits)
s,6 - Sixbit (6 6-bit bytes = 36 bits)
u - Unixified (Alan Bawden format, various = 36 bits)
t - Text-Newline (CRLF-NL conversion; 5 7-bit bytes = 35 bits ONLY)
d - Debug (for output only)
Note: EOF on input always causes zero-padding up to a PDP-10 word boundary.
Typical uses of WFCONV would be as follows:
1. Examining a PDP-10 text file copied from a tape:
# Convert from core-dump to ansi-ascii (preserve CRs)
$ wfconv -ca < file.tap > file.asc
or:
# Convert from core-dump to text-newline (convert CRLFs to NLs)
$ wfconv -ct < file.tap > file.txt
2. Preparing a text file for writing to tape:
# Convert from ansi-ascii to core-dump (preserve NLs)
$ wfconv -ac < file.asc > file.tap
or:
# Convert from text-newline to core-dump (convert NLs to CRLFs)
$ wfconv -tc < file.txt > file.tap
3. Preparing a file for tape after transferring it from a real PDP-10
using FTP 36-bit Image mode:
# Convert from high-density (FTP Image) to core-dump
$ wfconv -hc < file.ftp > file.tap
Note:
Due to the fact that PDP-10 words are used as the canonical input
conversion target (and output conversion source), input is always
effectively rounded up to a word boundary.
This can cause the addition of a few trailing zero bytes when converting
from Text-Newline or Ansi-ASCII format, so WFCONV is not a
general-purpose text-to-text conversion program. For that, one can use:
# To insert CR (must use ^V or equiv to quote the ^M)
$ sed 's/$/\^M/' temp.nls > temp.crlfs
# To delete CR (must use ^V or equiv to quote the ^M)
$ sed 's/\^M$//' temp.crlfs > temp.nls

101
apps/pdp10/tops10/README.md Normal file
View file

@ -0,0 +1,101 @@
---
layout: page
title: PDP-10 TOPS-10
permalink: /apps/pdp10/tops10/
---
PDP-10 TOPS-10
--------------
Having never used TOPS-10 in real life, it seemed like a good idea to get familiar with it first, using another
emulator. Thankfully, [The Digital Antiquarian](http://www.filfre.net/) created "[TOPS-10 in a Box](http://www.filfre.net/2011/05/tops-10-in-a-box/)",
everything you need to run TOPS-10 on a virtual PDP-10.
From README.txt (in the "TOPS-10 in a Box" zip file):
STARTING YOUR VIRTUAL PDP-10
============================
1. Bring up a command prompt in the PDP-10 In a Box directory using whatever technique is normal for your platform.
2. Enter "pdp10 tops10.cfg".
3. At the "BOOT>" prompt, just press enter.
4. At the "Why reload:" prompt, enter "NEW".
5. At the "Date:" prompt, just press enter to accept your host computer's current date.
If you wish, you may enter another date in the format "MM-DD-YYYY".
6. At the "Time:" prompt, just press enter to accept your host computer's current time.
If you wish, you may enter another time in the format "HHMMSS".
7. At the "Startup option:" prompt, enter "GO".
8. After a moment, the system will place you in the system operator's console (denoted by the "OPR>" prompt).
To work with programs and files like a normal user, just type "EXIT" here.
Unfortunately, my first attempt hung after step #3, which I resolved by downgrading from [SIMH V4.0](https://github.com/simh/simh/releases/tag/v4.0-devel)
to the older [SIMH V3.9](http://simh.trailing-edge.com/sources/simhv39-0.zip). Here's the resulting output:
PDP-10 simulator V3.9-0
Listening on port 2020 (socket 5)
Modem control activated
Auto disconnect activated
Logging to file "tops10.log"
BOOT V4(76)
BOOT>
[Loading from DSKB:SYSTEM.EXE[1,4]]
KS10 07-Oct-88
Why reload: NEW
Date:
Time:
Startup option: GO
[Rebuilding the system search list from the HOM blocks]
[Rebuilding the active swapping list from the HOM blocks]
[Rebuilding the system dump list from the HOM blocks]
KS10 09:09:41 CTY system 4097
Connected to Node CENTRA(0) Line # 42
.LOGIN 1,2
.R OPR
[CCPWFD Waiting for file daemon to start]
%%TTY STOMPER - Starting
OPR>
9:09:51 -- Message from the Accounting System --
Account validation is not required
9:09:52 -- Begin auto take file --
File: SYS:SYSTEM.CMD[1,4]
9:09:52 -- End auto take file --
17 lines processed
OPR>
At this point, I stopped, because now that I knew the `pdp10` binary from
[SIMH V3.9](http://simh.trailing-edge.com/sources/simhv39-0.zip) worked on my system (macOS), I wanted to
create an Xcode project to build *just* that binary, and make it easier for me to modify and debug that binary.
I had already run `make` to build the official SimH `pdp10` binary, so in order to isolate all the commands required
to build *just* `pdp10`, I re-ran `make` with `-B` to unconditionally remake all targets and `-n` to print the commands
that would be executed with executing them, and then isolated the PDP10-specific command(s) with `grep`:
make -Bn | grep pdp10
I was pleasantly surprised to see that there was only one (albeit rather lengthy) command:
gcc -std=c99 -U__STRICT_ANSI__ -O2 -finline-functions -flto -fwhole-program -I . -D_GNU_SOURCE -DUSE_READER_THREAD \
-DHAVE_DLOPEN=dylib PDP10/pdp10_fe.c PDP11/pdp11_dz.c PDP10/pdp10_cpu.c PDP10/pdp10_ksio.c PDP10/pdp10_lp20.c \
PDP10/pdp10_mdfp.c PDP10/pdp10_pag.c PDP10/pdp10_rp.c PDP10/pdp10_sys.c PDP10/pdp10_tim.c PDP10/pdp10_tu.c \
PDP10/pdp10_xtnd.c PDP11/pdp11_pt.c PDP11/pdp11_ry.c PDP11/pdp11_cr.c scp.c sim_console.c sim_fio.c sim_timer.c \
sim_sock.c sim_tmxr.c sim_ether.c sim_tape.c -DVM_PDP10 -DUSE_INT64 -I PDP10 -I PDP11 -o BIN/pdp10 -lm -lpthread \
-ldl -flto -fwhole-program
It was time to build the Xcode project.

View file

@ -7,7 +7,7 @@ redirect_from:
---
IBM PC (Model 5150) Machines
---
----------------------------
Our IBM PC 5150 configurations include:

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC (Model 5150, 256Kb) with Color Display and Debugger
permalink: /devices/pcx86/machine/5150/cga/256kb/debugger/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="white">
<name pos="center">IBM PC (Model 5150), CGA, 256K, Debugger</name>
<computer id="pc-cga-256k" name="IBM PC" resume="1"/>
<cpu id="cpu8088" model="8088"/>
<debugger id="debugger"/>
<ram id="ramLow" addr="0x00000" test="false" comment="no memory test"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01001001" sw2="10011000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC (Model 5150, 256Kb) with Color Display
permalink: /devices/pcx86/machine/5150/cga/256kb/
machines:
- type: pcx86
id: ibm5150
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="white">
<name pos="center">IBM PC (Model 5150), CGA, 256K</name>
<computer id="pc-cga-256k" name="IBM PC"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000" test="false" comment="no memory test"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/cga/ibm-cga.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5150" sw1="01001001" sw2="10011000"/>
</machine>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" width="1000px" pos="center" background="white">
<name>IBM PC (Model 5150), CGA, 384K</name>
<name pos="center">IBM PC (Model 5150), CGA, 384K, Soft Keyboard</name>
<computer id="pc-cga-384k" name="IBM PC"/>
<cpu id="cpu8088" model="8088"/>
<debugger id="debugger"/>

View file

@ -8,10 +8,11 @@ redirect_from:
---
IBM PC with Color Graphics (CGA) Display
---
----------------------------------------
All our Color Graphics (CGA) configurations of the IBM PC Model 5150 are located here, including:
* [IBM PC (64Kb) with Color Display](/devices/pcx86/machine/5150/cga/64kb/donkey/) ([Debugger](/devices/pcx86/machine/5150/cga/64kb/donkey/debugger/))
* [IBM PC (64Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/cga/64kb/softkbd/)
* [IBM PC (256Kb) with Color Display](/devices/pcx86/machine/5150/cga/256kb/) ([Debugger](/devices/pcx86/machine/5150/cga/256kb/debugger/))
* [IBM PC (384Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/cga/384kb/softkbd/)

View file

@ -0,0 +1,11 @@
---
layout: page
title: IBM PC (Model 5150, 256Kb) with Monochrome Display and Debugger
permalink: /devices/pcx86/machine/5150/mda/256kb/debugger/
machines:
- type: pcx86
id: ibm5150
debugger: true
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150), MDA, 256K, Debugger</name>
<computer id="pc-mda-256k" name="IBM PC" resume="1"/>
<ram id="ramLow" addr="0x00000" test="false" comment="no memory test"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true"/>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<debugger id="debugger"/>
<panel ref="/devices/pcx86/panel/wide.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="10011000" pos="left" padLeft="8px" padBottom="8px">
<control type="switches" label="SW1" binding="sw1" left="0px"/>
<control type="switches" label="SW2" binding="sw2" left="0px"/>
<control type="description" binding="swdesc" left="0px"/>
</chipset>
</machine>

View file

@ -0,0 +1,10 @@
---
layout: page
title: IBM PC (Model 5150, 256Kb) with Monochrome Display
permalink: /devices/pcx86/machine/5150/mda/256kb/
machines:
- type: pcx86
id: ibm5150
---
{% include machine.html id="ibm5150" %}

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150), MDA, 256K</name>
<computer id="pc-mda-64k" name="IBM PC"/>
<ram id="ramLow" addr="0x00000" test="false" comment="no memory test"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
<rom id="romBIOS" addr="0xfe000" size="0x2000" file="/devices/pcx86/rom/5150/1981-04-24/PCBIOS-REV1.json"/>
<video ref="/devices/pcx86/video/ibm/mda/ibm-mda.xml"/>
<fdc ref="/disks/pcx86/compiled/library.xml"/>
<cpu id="cpu8088" model="8088" autostart="true" pos="left" padLeft="8px" padBottom="8px">
<control type="button" binding="run">Run</control>
<control type="button" binding="reset">Reset</control>
</cpu>
<keyboard ref="/devices/pcx86/keyboard/us83-buttons-minimal.xml"/>
<chipset id="chipset" model="5150" sw1="01000001" sw2="10011000"/>
</machine>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
<name pos="center">IBM PC (Model 5150), MDA, 64K, Debugger</name>
<computer id="pc-mda-64k" name="IBM PC"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="#FAEBD7">
<name pos="center">IBM PC (Model 5150) with Monochrome Display</name>
<name pos="center">IBM PC (Model 5150), MDA, 64K</name>
<computer id="pc-mda-64k" name="IBM PC" resume="1"/>
<ram id="ramLow" addr="0x00000"/>
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>

View file

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="white">
<name>IBM PC (Model 5150), MDA, 64K</name>
<name pos="center">IBM PC (Model 5150), MDA, 64K, Soft Keyboard</name>
<computer id="pc-mda-64k" name="IBM PC"/>
<cpu id="cpu8088" model="8088"/>
<ram id="ramLow" addr="0x00000"/>

View file

@ -11,12 +11,13 @@ machines:
---
IBM PC with Monochrome (MDA) Display
---
------------------------------------
All our Monochrome (MDA) configurations of the IBM PC Model 5150 are located here, including:
* [IBM PC (64Kb) with Monochrome Display](/devices/pcx86/machine/5150/mda/64kb/) ([Debugger](/devices/pcx86/machine/5150/mda/64kb/debugger/))
* [IBM PC (64Kb) with Monochrome Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/mda/64kb/softkbd/)
* [IBM PC (256Kb) with Monochrome Display](/devices/pcx86/machine/5150/mda/256kb/) ([Debugger](/devices/pcx86/machine/5150/mda/256kb/debugger/))
Below is a 64kb configuration, with a clock speed of 4.77Mhz,
using the original IBM PC Model 5150 ROM BIOS and MDA font ROM. For more control,

View file

@ -11,6 +11,7 @@
<disk path="/disks/pcx86/diags/ibm/1.02/5150_ADVDIAG_102.json">IBM PC Diagnostics 1.02</disk>
<disk path="/disks/pcx86/diags/ibm/2.20/5150_5155_5160_ADVDIAG_220.json">IBM PC Diagnostics 2.20</disk>
<disk path="/disks/pcx86/diags/ibm/2.07/5170_ADVDIAG_207.json">IBM PC AT Diagnostics 2.07</disk>
<disk path="/disks/pcx86/dos/ibm/0.90/PCDOS090.json">PC-DOS 0.90</disk>
<disk path="/disks/pcx86/dos/ibm/1.00/PCDOS100.json">PC-DOS 1.00</disk>
<disk path="/disks/pcx86/dos/ibm/1.10/PCDOS110.json">PC-DOS 1.10</disk>
<disk path="/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json">PC-DOS 2.00 (Disk 1)</disk>

View file

@ -5,7 +5,7 @@ permalink: /disks/pcx86/dos/
---
PC-DOS and MS-DOS
---
-----------------
Information is available for assorted versions of PC-DOS and MS-DOS from these vendors:

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,70 @@
---
layout: page
title: PC-DOS 0.90
permalink: /disks/pcx86/dos/ibm/0.90/
machines:
- type: pcx86
id: ibm5150-pcdos090
config: /devices/pcx86/machine/5150/mda/256kb/machine.xml
autoMount:
A:
path: /disks/pcx86/dos/ibm/0.90/PCDOS090.json
---
PC-DOS 0.90
-----------
There was no PC-DOS 0.90 product *per se*. It has been dubbed version 0.90 simply because it predates
[PC-DOS 1.00](../1.00/) by several months. More information about this preliminary version of PC-DOS can
be found at the [OS/2 Museum](http://www.os2museum.com/).
Below is an IBM PC (Model 5150) with an original IBM ROM BIOS and Monochrome (MDA) Display that will boot PC-DOS 0.90.
A similar configuration with [Color Display and Debugger](debugger/) is also available.
The machine is configured to run at 4.77Mhz, so the ROM BIOS memory test has been disabled,
since a PC with 256Kb was rather slow to boot.
{% include machine.html id="ibm5150-pcdos090" %}
PC-DOS 0.90 files were distributed on one single-sided (160Kb) diskette. A directory listing of the disk is
provided below.
### Directory of PC-DOS 0.90 Diskette
Volume in drive A has no label
Directory of A:\
COMMAND COM 2576 05-29-81 12:00a
DEBUG COM 5450 05-27-81 12:00a
TIME COM 243 05-19-81 12:00a
DATE COM 245 05-20-81 12:00a
ASM COM 6389 05-15-81 12:00a
FORMAT COM 2048 05-29-81 12:00a
HEX2BIN COM 483 05-07-81 12:00a
BASIC COM 11008 06-04-81 12:00a
CHKDSK COM 1224 05-30-81 12:00a
EDLIN COM 2231 05-29-81 12:00a
MODE COM 675
COMMENTS 3561 06-05-81 12:00a
MOVBAS COM 128 04-23-81 12:00a
BAS18 COM 11008 06-04-81 12:00a
BASICA COM 14976 06-04-81 12:00a
AUTOEXEC BAT 24
SYS COM 896 06-03-81 12:00a
BAS18A COM 14976 06-04-81 12:00a
COMMENTS BAK 3560 06-05-81 12:00a
FCOMP COM 1408 04-13-81 12:00a
DISKCOPY COM 1211 06-04-81 12:00a
CONVERT COM 3200 04-15-81 12:00a
COMP COM 256 04-15-81 12:00a
KILO BAS 768 04-23-81 12:00a
20HAL COM 1792 04-24-81 12:00a
SPCWAR BAS 5120 05-22-81 12:00a
TTY ASC 2432 05-22-81 12:00a
VCOPY BAT 26 04-24-81 12:00a
SHIPS MAC 1792 06-01-81 12:00a
CIRCLE MAC 384 06-01-81 12:00a
RBAS COM 32768 04-25-81 12:00a
THREED BAS 3072
CUBE DAT 402 04-30-81 12:00a
33 file(s) 136332 bytes
8192 bytes free

View file

@ -0,0 +1,71 @@
---
layout: page
title: "PC-DOS 0.90 (with CGA and Debugger)"
permalink: /disks/pcx86/dos/ibm/0.90/debugger/
machines:
- type: pcx86
id: ibm5150-pcdos090
debugger: true
config: /devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml
autoMount:
A:
path: /disks/pcx86/dos/ibm/0.90/PCDOS090.json
---
PC-DOS 0.90 (with CGA and Debugger)
-----------------------------------
There was no PC-DOS 0.90 product *per se*. It has been dubbed version 0.90 simply because it predates
[PC-DOS 1.00](../1.00/) by several months. More information about this preliminary version of PC-DOS can
be found at the [OS/2 Museum](http://www.os2museum.com/).
Below is an IBM PC (Model 5150) with an original IBM ROM BIOS and Color (CGA) Display that will boot PC-DOS 0.90.
A similar configuration with [Monochrome Display](/disks/pcx86/dos/ibm/0.90/) is also available.
The machine is configured to run at 4.77Mhz, so the ROM BIOS memory test has been disabled,
since a PC with 256Kb was rather slow to boot.
{% include machine.html id="ibm5150-pcdos090" %}
PC-DOS 0.90 files were distributed on one single-sided (160Kb) diskette. A directory listing of the disk is
provided below.
### Directory of PC-DOS 0.90 Diskette
Volume in drive A has no label
Directory of A:\
COMMAND COM 2576 05-29-81 12:00a
DEBUG COM 5450 05-27-81 12:00a
TIME COM 243 05-19-81 12:00a
DATE COM 245 05-20-81 12:00a
ASM COM 6389 05-15-81 12:00a
FORMAT COM 2048 05-29-81 12:00a
HEX2BIN COM 483 05-07-81 12:00a
BASIC COM 11008 06-04-81 12:00a
CHKDSK COM 1224 05-30-81 12:00a
EDLIN COM 2231 05-29-81 12:00a
MODE COM 675
COMMENTS 3561 06-05-81 12:00a
MOVBAS COM 128 04-23-81 12:00a
BAS18 COM 11008 06-04-81 12:00a
BASICA COM 14976 06-04-81 12:00a
AUTOEXEC BAT 24
SYS COM 896 06-03-81 12:00a
BAS18A COM 14976 06-04-81 12:00a
COMMENTS BAK 3560 06-05-81 12:00a
FCOMP COM 1408 04-13-81 12:00a
DISKCOPY COM 1211 06-04-81 12:00a
CONVERT COM 3200 04-15-81 12:00a
COMP COM 256 04-15-81 12:00a
KILO BAS 768 04-23-81 12:00a
20HAL COM 1792 04-24-81 12:00a
SPCWAR BAS 5120 05-22-81 12:00a
TTY ASC 2432 05-22-81 12:00a
VCOPY BAT 26 04-24-81 12:00a
SHIPS MAC 1792 06-01-81 12:00a
CIRCLE MAC 384 06-01-81 12:00a
RBAS COM 32768 04-25-81 12:00a
THREED BAS 3072
CUBE DAT 402 04-30-81 12:00a
33 file(s) 136332 bytes
8192 bytes free

View file

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/manifest.xsl"?>
<manifest type="software">
<title>PC-DOS</title>
<version>0.90</version>
<type>DOS</type>
<category>Operating System</category>
<author>IBM/Microsoft</author>
<releaseDate/>
<disk id="disk01" size="163840" chs="40:1:8" img="archive/PCDOS090.img" href="/disks/pcx86/dos/ibm/0.90/PCDOS090.json" md5="668dce23d681b02b9f43eec3c3834c78" md5json="db8d0dd00ee725e30e9dc011cfdb68dd"/>
</manifest>

View file

@ -12,7 +12,7 @@ machines:
---
PC-DOS 1.00
---
-----------
The PCjs machine below is running PC-DOS 1.00.

View file

@ -9,6 +9,7 @@ IBM PC-DOS
Information is available for these versions of IBM PC-DOS:
* [PC-DOS 0.90](0.90/) (1981)
* [PC-DOS 1.00](1.00/) (1981)
* [PC-DOS 1.10](1.10/) (1982)
* [PC-DOS 2.00](2.00/) (1983)

View file

@ -5,6 +5,7 @@
<manifest ref="/disks/pcx86/empty/manifest.xml"/>
<manifest ref="/disks/pcx86/cpm/1.1b/manifest.xml"/>
<manifest ref="/disks/pcx86/diags/ibm/manifest.xml"/>
<manifest ref="/disks/pcx86/dos/ibm/0.90/manifest.xml"/>
<manifest ref="/disks/pcx86/dos/ibm/1.00/manifest.xml"/>
<manifest ref="/disks/pcx86/dos/ibm/1.10/manifest.xml"/>
<manifest ref="/disks/pcx86/dos/ibm/2.00/manifest.xml"/>

View file

@ -32,6 +32,7 @@
*/
"use strict";
var path = require("path");
var fs = require("fs");
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib/");

View file

@ -32,6 +32,7 @@
*/
"use strict";
var path = require("path");
var fs = require("fs");
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib/");

View file

@ -50,7 +50,7 @@ if (NODE) {
* iBlock: number,
* cBlocks: number,
* type: number
* }}
* }} Region
*/
var Region;

View file

@ -15,7 +15,7 @@ PDP-10 Hardware Publications
----------------------------
- [PDP-10 System Reference Manual (May 1968)](http://archive.pcjs.org/pubs/dec/pdp10/ka10/DEC-10-HGAA-D_PDP-10_System_Reference_Manual_May1968.pdf) [[Original PDF](http://bitsavers.trailing-edge.com/pdf/dec/pdp10/KA10/DEC-10-HGAA-D_PDP-10_System_Reference_Manual_May1968.pdf)]
- [DECSYSTEM-10/DECSYSTEM-20 Processor Reference Manual (June 1982)](http://archive.pcjs.org/pubs/dec/pdp10/tops10/AA-H391A-TK_DECsystem-10_DECSYSTEM-20_Processor_Reference_Jun1982.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp10/TOPS10_softwareNotebooks/vol05/AA-H391A-TK_DECsystem-10_DECSYSTEM-20_Processor_Reference_Jun1982.pdf)]
- [DECSYSTEM-10/DECSYSTEM-20 Processor Reference Manual (June 1982)](http://archive.pcjs.org/pubs/dec/pdp10/kl10/AA-H391A-TK_DECsystem-10_DECSYSTEM-20_Processor_Reference_Jun1982.pdf) [[Original PDF](http://bitsavers.org/pdf/dec/pdp10/TOPS10_softwareNotebooks/vol05/AA-H391A-TK_DECsystem-10_DECSYSTEM-20_Processor_Reference_Jun1982.pdf)]
PDP-10 Software Publications
----------------------------