Merge branch 'master' into gh-pages
This commit is contained in:
commit
28676361ce
32 changed files with 2128 additions and 19 deletions
File diff suppressed because it is too large
Load diff
|
|
@ -8,3 +8,16 @@ PDP-10 Software Tapes
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
PCjs has not yet archived any PDP-10 software from tape.
|
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
493
apps/pdp10/tapes/vtape.txt
Normal 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
101
apps/pdp10/tops10/README.md
Normal 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.
|
||||||
|
|
@ -7,7 +7,7 @@ redirect_from:
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC (Model 5150) Machines
|
IBM PC (Model 5150) Machines
|
||||||
---
|
----------------------------
|
||||||
|
|
||||||
Our IBM PC 5150 configurations include:
|
Our IBM PC 5150 configurations include:
|
||||||
|
|
||||||
|
|
|
||||||
11
devices/pcx86/machine/5150/cga/256kb/debugger/machine.md
Normal file
11
devices/pcx86/machine/5150/cga/256kb/debugger/machine.md
Normal 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" %}
|
||||||
20
devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml
Normal file
20
devices/pcx86/machine/5150/cga/256kb/debugger/machine.xml
Normal 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>
|
||||||
10
devices/pcx86/machine/5150/cga/256kb/machine.md
Normal file
10
devices/pcx86/machine/5150/cga/256kb/machine.md
Normal 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" %}
|
||||||
14
devices/pcx86/machine/5150/cga/256kb/machine.xml
Normal file
14
devices/pcx86/machine/5150/cga/256kb/machine.xml
Normal 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>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
<?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">
|
<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"/>
|
<computer id="pc-cga-384k" name="IBM PC"/>
|
||||||
<cpu id="cpu8088" model="8088"/>
|
<cpu id="cpu8088" model="8088"/>
|
||||||
<debugger id="debugger"/>
|
<debugger id="debugger"/>
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,11 @@ redirect_from:
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC with Color Graphics (CGA) Display
|
IBM PC with Color Graphics (CGA) Display
|
||||||
---
|
----------------------------------------
|
||||||
|
|
||||||
All our Color Graphics (CGA) configurations of the IBM PC Model 5150 are located here, including:
|
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](/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 (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/)
|
* [IBM PC (384Kb) with Color Display and Soft Keyboard (Debugger)](/devices/pcx86/machine/5150/cga/384kb/softkbd/)
|
||||||
|
|
|
||||||
11
devices/pcx86/machine/5150/mda/256kb/debugger/machine.md
Normal file
11
devices/pcx86/machine/5150/mda/256kb/debugger/machine.md
Normal 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" %}
|
||||||
20
devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml
Normal file
20
devices/pcx86/machine/5150/mda/256kb/debugger/machine.xml
Normal 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>
|
||||||
10
devices/pcx86/machine/5150/mda/256kb/machine.md
Normal file
10
devices/pcx86/machine/5150/mda/256kb/machine.md
Normal 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" %}
|
||||||
17
devices/pcx86/machine/5150/mda/256kb/machine.xml
Normal file
17
devices/pcx86/machine/5150/mda/256kb/machine.xml
Normal 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>
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
||||||
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="#FAEBD7">
|
<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"/>
|
<computer id="pc-mda-64k" name="IBM PC"/>
|
||||||
<ram id="ramLow" addr="0x00000"/>
|
<ram id="ramLow" addr="0x00000"/>
|
||||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
||||||
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="#FAEBD7">
|
<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"/>
|
<computer id="pc-mda-64k" name="IBM PC" resume="1"/>
|
||||||
<ram id="ramLow" addr="0x00000"/>
|
<ram id="ramLow" addr="0x00000"/>
|
||||||
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
<rom id="romBASIC" addr="0xf6000" size="0x8000" file="/devices/pcx86/rom/5150/basic/BASIC100.json"/>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
<?xml-stylesheet type="text/xsl" href="/versions/pcx86/1.34.3/machine.xsl"?>
|
||||||
<machine id="ibm5150" type="pcx86" border="1" pos="center" background="white">
|
<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"/>
|
<computer id="pc-mda-64k" name="IBM PC"/>
|
||||||
<cpu id="cpu8088" model="8088"/>
|
<cpu id="cpu8088" model="8088"/>
|
||||||
<ram id="ramLow" addr="0x00000"/>
|
<ram id="ramLow" addr="0x00000"/>
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,13 @@ machines:
|
||||||
---
|
---
|
||||||
|
|
||||||
IBM PC with Monochrome (MDA) Display
|
IBM PC with Monochrome (MDA) Display
|
||||||
---
|
------------------------------------
|
||||||
|
|
||||||
All our Monochrome (MDA) configurations of the IBM PC Model 5150 are located here, including:
|
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](/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 (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,
|
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,
|
using the original IBM PC Model 5150 ROM BIOS and MDA font ROM. For more control,
|
||||||
|
|
|
||||||
|
|
@ -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/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.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/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.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/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>
|
<disk path="/disks/pcx86/dos/ibm/2.00/PCDOS200-DISK1.json">PC-DOS 2.00 (Disk 1)</disk>
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ permalink: /disks/pcx86/dos/
|
||||||
---
|
---
|
||||||
|
|
||||||
PC-DOS and MS-DOS
|
PC-DOS and MS-DOS
|
||||||
---
|
-----------------
|
||||||
|
|
||||||
Information is available for assorted versions of PC-DOS and MS-DOS from these vendors:
|
Information is available for assorted versions of PC-DOS and MS-DOS from these vendors:
|
||||||
|
|
||||||
|
|
|
||||||
1
disks/pcx86/dos/ibm/0.90/PCDOS090.json
Normal file
1
disks/pcx86/dos/ibm/0.90/PCDOS090.json
Normal file
File diff suppressed because one or more lines are too long
70
disks/pcx86/dos/ibm/0.90/README.md
Normal file
70
disks/pcx86/dos/ibm/0.90/README.md
Normal 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
|
||||||
71
disks/pcx86/dos/ibm/0.90/debugger/README.md
Normal file
71
disks/pcx86/dos/ibm/0.90/debugger/README.md
Normal 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
|
||||||
11
disks/pcx86/dos/ibm/0.90/manifest.xml
Normal file
11
disks/pcx86/dos/ibm/0.90/manifest.xml
Normal 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>
|
||||||
|
|
@ -12,7 +12,7 @@ machines:
|
||||||
---
|
---
|
||||||
|
|
||||||
PC-DOS 1.00
|
PC-DOS 1.00
|
||||||
---
|
-----------
|
||||||
|
|
||||||
The PCjs machine below is running PC-DOS 1.00.
|
The PCjs machine below is running PC-DOS 1.00.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ IBM PC-DOS
|
||||||
|
|
||||||
Information is available for these versions of 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.00](1.00/) (1981)
|
||||||
* [PC-DOS 1.10](1.10/) (1982)
|
* [PC-DOS 1.10](1.10/) (1982)
|
||||||
* [PC-DOS 2.00](2.00/) (1983)
|
* [PC-DOS 2.00](2.00/) (1983)
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
<manifest ref="/disks/pcx86/empty/manifest.xml"/>
|
<manifest ref="/disks/pcx86/empty/manifest.xml"/>
|
||||||
<manifest ref="/disks/pcx86/cpm/1.1b/manifest.xml"/>
|
<manifest ref="/disks/pcx86/cpm/1.1b/manifest.xml"/>
|
||||||
<manifest ref="/disks/pcx86/diags/ibm/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.00/manifest.xml"/>
|
||||||
<manifest ref="/disks/pcx86/dos/ibm/1.10/manifest.xml"/>
|
<manifest ref="/disks/pcx86/dos/ibm/1.10/manifest.xml"/>
|
||||||
<manifest ref="/disks/pcx86/dos/ibm/2.00/manifest.xml"/>
|
<manifest ref="/disks/pcx86/dos/ibm/2.00/manifest.xml"/>
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var path = require("path");
|
var path = require("path");
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib/");
|
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib/");
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var path = require("path");
|
var path = require("path");
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib/");
|
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib/");
|
||||||
|
|
|
||||||
|
|
@ -50,7 +50,7 @@ if (NODE) {
|
||||||
* iBlock: number,
|
* iBlock: number,
|
||||||
* cBlocks: number,
|
* cBlocks: number,
|
||||||
* type: number
|
* type: number
|
||||||
* }}
|
* }} Region
|
||||||
*/
|
*/
|
||||||
var Region;
|
var Region;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)]
|
- [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
|
PDP-10 Software Publications
|
||||||
----------------------------
|
----------------------------
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue