<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://gunkies.org/index.php?action=history&amp;feed=atom&amp;title=RIM10B_Loader</id>
		<title>RIM10B Loader - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://gunkies.org/index.php?action=history&amp;feed=atom&amp;title=RIM10B_Loader"/>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;action=history"/>
		<updated>2026-05-02T13:36:10Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.1</generator>

	<entry>
		<id>https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;diff=36030&amp;oldid=prev</id>
		<title>Jnc: Assembly of 6-bit bytes into 36-bit words is done by the device controller</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;diff=36030&amp;oldid=prev"/>
				<updated>2025-03-21T01:26:25Z</updated>
		
		<summary type="html">&lt;p&gt;Assembly of 6-bit bytes into 36-bit words is done by the device controller&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 01:26, 21 March 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''RIM10B Loader''' was a [[bootstrap]] program for early [[PDP-10]]'s. It read &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;8&lt;/del&gt;-bit bytes from the [[paper tape]] reader, converted them to 36-bit words, and deposited the words in main memory, verifying the [[checksum]]s of the program blocks on the tape as it went.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''RIM10B Loader''' was a [[bootstrap]] program for early [[PDP-10]]'s. It read &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;6&lt;/ins&gt;-bit bytes from the [[paper tape]] reader, converted them to 36-bit words, and deposited the words in main memory, verifying the [[checksum]]s of the program blocks on the tape as it went.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What was novel about this program was that (after a great deal of work) it was only 14 [[instruction]]s long, and used 2 data [[register]]s; this allowed the entire thing to be held in the 16 registers of the PDP-10. (In the PDP-10, the registers could be used as ordinary memory, including holding instructions.) That allowed the Loader to be retained in memory (details below), in a way that could not be over-written during operation of the system, allowing that copy to be used later for loading a new program.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What was novel about this program was that (after a great deal of work) it was &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;reduced to &lt;/ins&gt;only 14 [[instruction]]s long, and used 2 data [[register]]s; this allowed the entire thing to be held in the 16 registers of the PDP-10. (In the PDP-10, the registers could be used as ordinary memory, including holding instructions.) That allowed the Loader to be retained in memory (details below), in a way that could not be over-written during operation of the system, allowing that copy to be used later for loading a new program.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Loader was initially included in the &amp;quot;PDP-10 Reference Handbook&amp;quot; as a PDP-10 coding example; by the 1971 edition, there had been so many questions asked by people trying to use it as an example that this comment was added in the margin:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Loader was initially included in the &amp;quot;PDP-10 Reference Handbook&amp;quot; as a PDP-10 coding example; by the 1971 edition, there had been so many questions asked by people trying to use it as an example that this comment was added in the margin:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot; &gt;Line 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;17/			CKSM=ADR+1&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;17/			CKSM=ADR+1&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;/pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;#160;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;There are no instructions to assemble 6-bit bytes into 36-bit words, as the paper tape reader is operated in 'binary' mode, in which the [[device controller]] assembles six 6-bit bytes from the reader into a 36-bit word.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Code analysis===&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===Code analysis===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot; &gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 40:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When the Read-In Mode (RIM) switch is pressed on the console of a KA or KI, it sends a reset pulse down the I/O bus, sets the PC flags to zero, and executes &amp;quot;DATAI D,0&amp;quot; (where D is the device code selected by a set of 7 switches, the paper tape reader is device 104). The DATAI reads in an IOWD, which has the negative word count in the left half and starting address minus one in the right half. The CPU then repeatedly executes &amp;quot;BLKI D,0&amp;quot; until the left half of location 0 reaches zero. (&amp;quot;BLKI D,X&amp;quot; increments both halves of location X, reads in a word from device D, and stores it the address that the right half of location X now points to.)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When the Read-In Mode (RIM) switch is pressed on the console of a KA or KI, it sends a reset pulse down the I/O bus, sets the PC flags to zero, and executes &amp;quot;DATAI D,0&amp;quot; (where D is the device code selected by a set of 7 switches, the paper tape reader is device 104). The DATAI reads in an IOWD, which has the negative word count in the left half and starting address minus one in the right half. The CPU then repeatedly executes &amp;quot;BLKI D,0&amp;quot; until the left half of location 0 reaches zero. (&amp;quot;BLKI D,X&amp;quot; increments both halves of location X, reads in a word from device D, and stores it the address that the right half of location X now points to.)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the code listing below, note that the actual instructions executed are given; the two 'XCT' instructions in the code above perform different actions, depending on the state the program is in, which depends on where in the paper tape it is. This allows the instructions of the input operation (CONSO and DATAI) to be shared between the three states (the other two instructions in each &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;differing&lt;/del&gt;), which reduced the size enough to fit.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the code listing below, note that the actual instructions executed are given; the two 'XCT' instructions in the code above perform different actions, depending on the state the program is in, which depends on where in the paper tape it is. This allows the instructions of the input operation (CONSO and DATAI) to be shared between the three states (the other two instructions in each &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;state differ from state to state&lt;/ins&gt;), which reduced the size enough to fit.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;00/ XWD -16,0&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;00/ XWD -16,0&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	<entry>
		<id>https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;diff=36029&amp;oldid=prev</id>
		<title>Jnc: The 'trick'</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;diff=36029&amp;oldid=prev"/>
				<updated>2025-03-20T16:24:12Z</updated>
		
		<summary type="html">&lt;p&gt;The &amp;#039;trick&amp;#039;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Revision as of 16:24, 20 March 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot; &gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''RIM10B Loader''' was a [[bootstrap]] program for early [[PDP-10]]'s. It read 8-bit bytes from the [[paper tape]] reader, converted them to 36-bit words, and deposited the words in main memory, verifying the [[checksum]]s of the program blocks on the tape as it went.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The '''RIM10B Loader''' was a [[bootstrap]] program for early [[PDP-10]]'s. It read 8-bit bytes from the [[paper tape]] reader, converted them to 36-bit words, and deposited the words in main memory, verifying the [[checksum]]s of the program blocks on the tape as it went.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What was novel about this program was that (after a great deal of work&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;, to make it as short as possible&lt;/del&gt;) it was only 14 [[instruction]]s long, and used 2 data [[register]]s; this allowed the entire thing to be held in the 16 registers of the PDP-10. (In the PDP-10, the registers could be used as ordinary memory, including holding instructions.) That allowed the Loader to be retained in memory (details below), in a way that could not be over-written during operation of the system, allowing that copy to be used later for loading a new program.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;What was novel about this program was that (after a great deal of work) it was only 14 [[instruction]]s long, and used 2 data [[register]]s; this allowed the entire thing to be held in the 16 registers of the PDP-10. (In the PDP-10, the registers could be used as ordinary memory, including holding instructions.) That allowed the Loader to be retained in memory (details below), in a way that could not be over-written during operation of the system, allowing that copy to be used later for loading a new program.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Loader was initially included in the &amp;quot;PDP-10 Reference Handbook&amp;quot; as a PDP-10 coding example; by the 1971 edition, there had been so many questions asked by people trying to use it as an example that this comment was added in the margin:&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;The Loader was initially included in the &amp;quot;PDP-10 Reference Handbook&amp;quot; as a PDP-10 coding example; by the 1971 edition, there had been so many questions asked by people trying to use it as an example that this comment was added in the margin:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l38&quot; &gt;Line 38:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 38:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When the Read-In Mode (RIM) switch is pressed on the console of a KA or KI, it sends a reset pulse down the I/O bus, sets the PC flags to zero, and executes &amp;quot;DATAI D,0&amp;quot; (where D is the device code selected by a set of 7 switches, the paper tape reader is device 104). The DATAI reads in an IOWD, which has the negative word count in the left half and starting address minus one in the right half. The CPU then repeatedly executes &amp;quot;BLKI D,0&amp;quot; until the left half of location 0 reaches zero. (&amp;quot;BLKI D,X&amp;quot; increments both halves of location X, reads in a word from device D, and stores it the address that the right half of location X now points to.)&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;When the Read-In Mode (RIM) switch is pressed on the console of a KA or KI, it sends a reset pulse down the I/O bus, sets the PC flags to zero, and executes &amp;quot;DATAI D,0&amp;quot; (where D is the device code selected by a set of 7 switches, the paper tape reader is device 104). The DATAI reads in an IOWD, which has the negative word count in the left half and starting address minus one in the right half. The CPU then repeatedly executes &amp;quot;BLKI D,0&amp;quot; until the left half of location 0 reaches zero. (&amp;quot;BLKI D,X&amp;quot; increments both halves of location X, reads in a word from device D, and stores it the address that the right half of location X now points to.)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the code listing below, note that the actual instructions executed are given; the two 'XCT' instructions in the code above perform different actions, depending on the state the program is in, which depends on where in the paper tape it is.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color:black; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;In the code listing below, note that the actual instructions executed are given; the two 'XCT' instructions in the code above perform different actions, depending on the state the program is in, which depends on where in the paper tape it is&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. This allows the instructions of the input operation (CONSO and DATAI) to be shared between the three states (the other two instructions in each differing), which reduced the size enough to fit&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;00/ XWD -16,0&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;&amp;#160;&lt;/td&gt;&lt;td style=&quot;background-color: #f9f9f9; color: #333333; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #e6e6e6; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;00/ XWD -16,0&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	<entry>
		<id>https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;diff=36027&amp;oldid=prev</id>
		<title>Jnc: Created page with &quot;The '''RIM10B Loader''' was a bootstrap program for early PDP-10's. It read 8-bit bytes from the paper tape reader, converted them to 36-bit words, and deposited t...&quot;</title>
		<link rel="alternate" type="text/html" href="https://gunkies.org/w/index.php?title=RIM10B_Loader&amp;diff=36027&amp;oldid=prev"/>
				<updated>2025-03-20T15:50:15Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;The &amp;#039;&amp;#039;&amp;#039;RIM10B Loader&amp;#039;&amp;#039;&amp;#039; was a &lt;a href=&quot;/wiki/Bootstrap&quot; title=&quot;Bootstrap&quot;&gt;bootstrap&lt;/a&gt; program for early &lt;a href=&quot;/wiki/PDP-10&quot; title=&quot;PDP-10&quot;&gt;PDP-10&lt;/a&gt;&amp;#039;s. It read 8-bit bytes from the &lt;a href=&quot;/wiki/Paper_tape&quot; title=&quot;Paper tape&quot;&gt;paper tape&lt;/a&gt; reader, converted them to 36-bit words, and deposited t...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;The '''RIM10B Loader''' was a [[bootstrap]] program for early [[PDP-10]]'s. It read 8-bit bytes from the [[paper tape]] reader, converted them to 36-bit words, and deposited the words in main memory, verifying the [[checksum]]s of the program blocks on the tape as it went.&lt;br /&gt;
&lt;br /&gt;
What was novel about this program was that (after a great deal of work, to make it as short as possible) it was only 14 [[instruction]]s long, and used 2 data [[register]]s; this allowed the entire thing to be held in the 16 registers of the PDP-10. (In the PDP-10, the registers could be used as ordinary memory, including holding instructions.) That allowed the Loader to be retained in memory (details below), in a way that could not be over-written during operation of the system, allowing that copy to be used later for loading a new program.&lt;br /&gt;
&lt;br /&gt;
The Loader was initially included in the &amp;quot;PDP-10 Reference Handbook&amp;quot; as a PDP-10 coding example; by the 1971 edition, there had been so many questions asked by people trying to use it as an example that this comment was added in the margin:&lt;br /&gt;
&lt;br /&gt;
 This loader is written for minimum size and is quite complex. Do not approach it as a simple programming example.&lt;br /&gt;
&lt;br /&gt;
===Retention===&lt;br /&gt;
&lt;br /&gt;
The 'FM ENB' switch on the [[KA10]]'s [[front panel]] enabled the Fast Memory ([[semiconductor]]) versions of the registers, in the [[Central Processing Unit|CPU]], to be enabled, causing references to them (notionally locations 00 through 17 in main memory, in the PDP-10) to go to the instances in the CPU, instead of the main memory instances. When FM ENB is off, the bootstrap can be toggled into normally inaccessible memory locations 01 through 16 (locations 00 and 17 need not be initialized), to be run for loading programs from paper tape, and retained, un-modifiable, when FM ENB is turned on.&lt;br /&gt;
&lt;br /&gt;
This technique only worked on the KA10; later PDP-10s did not have the FM ENB switch.&lt;br /&gt;
&lt;br /&gt;
==Program==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
00/   777762,,0			XWD	-16,0&lt;br /&gt;
01/   710600,,60	ST:	CONO	PTR,60&lt;br /&gt;
02/   541400,,4		ST1:	HRRI	A,RD+1&lt;br /&gt;
03/   710740,,10	RD:	CONSO	PTR,10&lt;br /&gt;
04/   254000,,3			 JRST	.-1&lt;br /&gt;
05/   710470,,7			DATAI	PTR,@TBL1-RD+1(A)&lt;br /&gt;
06/   256010,,7			XCT	     TBL1-RD+1(A)&lt;br /&gt;
07/   256010,,12		 XCT	     TBL2-RD+1(A)&lt;br /&gt;
10/   364400,,0		A:	SOJA	A,	; Magic occurs here ****&lt;br /&gt;
11/   312740,,16	TBL1:	CAME	CKSM,ADR&lt;br /&gt;
12/   270756,,1			 ADD	CKSM,1(ADR)&lt;br /&gt;
13/   331740,,16		SKIPL	CKSM,ADR&lt;br /&gt;
14/   254200,,1		TBL2:	 JRST	4,ST&lt;br /&gt;
15/   253700,,3			AOBJN	ADR,RD&lt;br /&gt;
16/   254000,,2		ADR:	JRST	ST1&lt;br /&gt;
17/			CKSM=ADR+1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Code analysis===&lt;br /&gt;
&lt;br /&gt;
When the Read-In Mode (RIM) switch is pressed on the console of a KA or KI, it sends a reset pulse down the I/O bus, sets the PC flags to zero, and executes &amp;quot;DATAI D,0&amp;quot; (where D is the device code selected by a set of 7 switches, the paper tape reader is device 104). The DATAI reads in an IOWD, which has the negative word count in the left half and starting address minus one in the right half. The CPU then repeatedly executes &amp;quot;BLKI D,0&amp;quot; until the left half of location 0 reaches zero. (&amp;quot;BLKI D,X&amp;quot; increments both halves of location X, reads in a word from device D, and stores it the address that the right half of location X now points to.)&lt;br /&gt;
&lt;br /&gt;
In the code listing below, note that the actual instructions executed are given; the two 'XCT' instructions in the code above perform different actions, depending on the state the program is in, which depends on where in the paper tape it is.&lt;br /&gt;
&lt;br /&gt;
00/ XWD -16,0&amp;lt;br&amp;gt;&lt;br /&gt;
Transfer 16 octal (14 decimal) words, starting at location 1.&lt;br /&gt;
&lt;br /&gt;
01/ST: CONO PTR,60&amp;lt;br&amp;gt;&lt;br /&gt;
Start paper tape reader in binary mode&lt;br /&gt;
&lt;br /&gt;
02/ST1: HRRI A,RD+1&amp;lt;br&amp;gt;&lt;br /&gt;
Reset finite-state machine to looking for IOWD&lt;br /&gt;
&lt;br /&gt;
''State RD+1 = Looking for IOWD or JRST''&lt;br /&gt;
&lt;br /&gt;
03/RD: CONSO PTR,10&amp;lt;br&amp;gt;&lt;br /&gt;
Read paper tape reader status, skip if &amp;quot;DONE&amp;quot; bit is set&lt;br /&gt;
&lt;br /&gt;
04/ JRST .-1&amp;lt;br&amp;gt;&lt;br /&gt;
Not set, keep looping until the bit does get set&lt;br /&gt;
&lt;br /&gt;
05/ DATAI PTR,@TBL1-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Index register A has RD+1, indexing TBL1-RD+1+RD+1 is TBL1+2, which is the SKIPL CKSM,ADR instruction, therefore the effective address is ADR. Store the IOWD in ADR.&lt;br /&gt;
&lt;br /&gt;
06/ XCT TBL1-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Same effective address, &amp;quot;SKIPL CKSM,ADR&amp;quot; loads the IOWD into accumulator CKSM, and skips next instruction because its negative.&lt;br /&gt;
&lt;br /&gt;
07/ XCT TBL2-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Not executed first time around. At the end of the tape, a JRST instruction will be read in instead of an IOWD. (JRST is opcode 254, which is positive). TBL2-RD+1+RD+1 is TBL2+2, which is ADR. The JRST instruction which was just read in is executed, and that causes the PC to jump to the beginning of the program.&lt;br /&gt;
&lt;br /&gt;
10/A: SOJA A,RD+1&amp;lt;br&amp;gt;&lt;br /&gt;
Set the PC to RD+1, subtract one from index register A (so it now has RD in the right half, then jump to the original address (RD+1).&lt;br /&gt;
&lt;br /&gt;
04/ JRST .-1&amp;lt;br&amp;gt;&lt;br /&gt;
Not set, keep looping until the bit does get set&lt;br /&gt;
&lt;br /&gt;
''State RD+0 = Reading in data words''&lt;br /&gt;
&lt;br /&gt;
03/RD: CONSO PTR,10&amp;lt;br&amp;gt;&lt;br /&gt;
Read paper tape reader status, skip if &amp;quot;DONE&amp;quot; bit is set&lt;br /&gt;
&lt;br /&gt;
04/ JRST .-1&amp;lt;br&amp;gt;&lt;br /&gt;
Not set, keep looping until the bit does get set&lt;br /&gt;
&lt;br /&gt;
05/ DATAI PTR,@TBL1-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Index register A has RD+0, indexing TBL1-RD+1+RD+0 is TBL1+1, which is the ADD CKSM,1(ADR) instruction, therefore the effective address is one greater than what ADR points to. Store the data in memory.&lt;br /&gt;
&lt;br /&gt;
06/ XCT TBL1-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Same effective address, &amp;quot;ADD CKSM,1(ADR)&amp;quot; adds the word read in to the additive checksum in accumulator CKSM.&lt;br /&gt;
&lt;br /&gt;
07/ XCT TBL2-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
The address is TBL2-RD+1+RD+0 which is TBL2+1. That location has &amp;quot;AOBJN ADR,RD&amp;quot;. Add one to both halves of accumulator ADR. If the result is still negative, loop back to RD (location 3). If non-negative, continue on at location 10.&lt;br /&gt;
&lt;br /&gt;
10/A: SOJA A,RD+0&amp;lt;br&amp;gt;&lt;br /&gt;
Set the PC to RD+0, subtract one from index register A (so it now has RD-1 in the right half, then jump to the original address (RD+0).&lt;br /&gt;
&lt;br /&gt;
''State RD-1 = Reading in checksum''&lt;br /&gt;
&lt;br /&gt;
03/RD: CONSO PTR,10&lt;br /&gt;
Read paper tape reader status, skip if &amp;quot;DONE&amp;quot; bit is set&lt;br /&gt;
&lt;br /&gt;
04/ JRST .-1&amp;lt;br&amp;gt;&lt;br /&gt;
Not set, keep looping until the bit does get set&lt;br /&gt;
&lt;br /&gt;
05/ DATAI PTR,@TBL1-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Index register A has RD-1, indexing TBL1-RD+1+RD-1 is TBL1+0, which is the CAME CKSM,ADR instruction, therefore the effective address is ADR. Store the expected checksum in ADR.&lt;br /&gt;
&lt;br /&gt;
06/ XCT TBL1-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
Same effective address, &amp;quot;CAME CKSM,ADR&amp;quot; compares the calculated checksum in accumulator CKSM with the expected checksum stored in memory location ADR. Skip the next instruction if they're equal.&lt;br /&gt;
&lt;br /&gt;
07/ XCT TBL2-RD+1(A)&amp;lt;br&amp;gt;&lt;br /&gt;
The address is TBL2-RD+1+RD-1 which is TBL2+0. That location has &amp;quot;JRST 4,ST&amp;quot; which is a HALT instruction. If the previous compare instruction failed, set the program counter to ST and halt the CPU. This allows the operator to back up the paper tape reader and try again. If the CAME succeeded, this HALT is not executed.&lt;br /&gt;
&lt;br /&gt;
10/A: SOJA A,RD+1&amp;lt;br&amp;gt;&lt;br /&gt;
Set the PC to RD+1, subtract one from index register A (so it now has RD-2 in the right half, then jump to the original address (RD+1). This jumps to location ST1, which resets the finite-state machine.&lt;br /&gt;
&lt;br /&gt;
''Dispatch table for finite-state machine''&lt;br /&gt;
&lt;br /&gt;
11/TBL1: CAME CKSM,ADR&amp;lt;br&amp;gt;&lt;br /&gt;
In state RD-1, read expected checksum into ADR, then compare calculated checksum with expected checksum.&lt;br /&gt;
&lt;br /&gt;
12/ ADD CKSM,1(ADR)&amp;lt;br&amp;gt;&lt;br /&gt;
In state RD+0, store data word into memory, then add data word into running checksum.&lt;br /&gt;
&lt;br /&gt;
13/ SKIPL CKSM,ADR&amp;lt;br&amp;gt;&lt;br /&gt;
In state RD+1, store IOWD or JRST in ADR, then load that word into accumulator CKSM and skip if the word is negative.&lt;br /&gt;
&lt;br /&gt;
14/TBL2: JRST 4,ST&amp;lt;br&amp;gt;&lt;br /&gt;
If the checksum comparison fails, halt the CPU, with ST in the PC.&lt;br /&gt;
&lt;br /&gt;
15/ AOBJN ADR,RD&amp;lt;br&amp;gt;&lt;br /&gt;
In state RD+0, increment the IOWD and jump to RD if more to go.&lt;br /&gt;
&lt;br /&gt;
16/ADR: JRST ST1&amp;lt;br&amp;gt;&lt;br /&gt;
This is the last word of the RIM10B loader. When the hardware read-in process is completed, this instruction is executed to start the program.&lt;br /&gt;
&lt;br /&gt;
17/CKSM=ADR+1&amp;lt;br&amp;gt;&lt;br /&gt;
The additive checksum is calculated using this accumulator.&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
&lt;br /&gt;
* [https://www.inwap.com/pdp10/rim10b.html RIM10B Loader]&lt;br /&gt;
* [https://bitsavers.org/pdf/dec/pdp10/1970_PDP-10_Ref/1970PDP10Ref_Part2.pdf PDP-10 Reference Handbook] - page 6-7 (page 67 of the PDF) shows the format of a RIM10B tape&lt;br /&gt;
&lt;br /&gt;
[[Category: PDP-10 Software]]&lt;/div&gt;</summary>
		<author><name>Jnc</name></author>	</entry>

	</feed>