<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://bitspassats.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Retroand</id>
	<title>Bits Passats - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://bitspassats.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Retroand"/>
	<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php/Special:Contributions/Retroand"/>
	<updated>2026-04-04T07:20:00Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://bitspassats.com/index.php?title=Category:AS/400_Hardware&amp;diff=827</id>
		<title>Category:AS/400 Hardware</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=Category:AS/400_Hardware&amp;diff=827"/>
		<updated>2026-02-05T09:42:45Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Category created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:AS/400]]&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=MFIOP&amp;diff=826</id>
		<title>MFIOP</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=MFIOP&amp;diff=826"/>
		<updated>2026-02-05T09:42:22Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Page created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The MFIOP modules are the main I/O module of the CISC AS/400. They are tasked with SCSI control, real-time-clock tasks and in some cases floppy drive control.&lt;br /&gt;
&lt;br /&gt;
=FN2507=&lt;br /&gt;
The FN2507 is the first iteration of the module and is employed by AS/400 computers of families B, C and D.&lt;br /&gt;
&lt;br /&gt;
=FN2615=&lt;br /&gt;
The FN2615 is the last design of the module and is employed by AS/400 computers of families E and F.&lt;br /&gt;
&lt;br /&gt;
[[Category: AS/400 Hardware]][[Category: 68000 Devices]]&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_AS/400_9404_F-10&amp;diff=825</id>
		<title>IBM AS/400 9404 F-10</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_AS/400_9404_F-10&amp;diff=825"/>
		<updated>2025-10-14T20:05:06Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Corrected category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:AS/400]]&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_AS/400_9404_F-10&amp;diff=824</id>
		<title>IBM AS/400 9404 F-10</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_AS/400_9404_F-10&amp;diff=824"/>
		<updated>2025-10-14T20:04:30Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added categories&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:Computers of the United States]][[Category:Computers of IBM]][[Category:AS/400]]&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=Category:AS/400&amp;diff=823</id>
		<title>Category:AS/400</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=Category:AS/400&amp;diff=823"/>
		<updated>2025-10-14T20:03:41Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Category created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_AS/400_9404_C-10&amp;diff=822</id>
		<title>IBM AS/400 9404 C-10</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_AS/400_9404_C-10&amp;diff=822"/>
		<updated>2025-10-14T20:03:18Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added AS/400 Category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:AS-400 9404-C10 general plane.jpg|thumb|right|alt=AS/400 9404-C10|AS/400 9404-C10]]&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Overall Description ===&lt;br /&gt;
The system is structured in several boards connected to a backplane at the rear of the machine, while the peripherals are placed at the front. The system has room at the front for an extra power supply unit, a battery, three full height 5 1/4&amp;quot; hard disk drives, a tape drive and a floppy drive.&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor ===&lt;br /&gt;
[[File:20240613 131303.jpg|thumb|left|alt=AS/400 C-10 CPU Board|AS/400 C-10 CPU Board]]&lt;br /&gt;
While usually microprocessors work with words whose length is power of two, the CISC CPU the early AS/400 models had are 48 bits wide. Its family derives from the System/38 and is known as IMPI and althought being code-compatible with the former, its instruction set is unknown outside IBM.&lt;br /&gt;
&lt;br /&gt;
=== Input/Output Control ===&lt;br /&gt;
[[File:20240613 090104.jpg|thumb|alt=AS/400 C-10 I/O Board|AS/400 C-10 I/O Board]]&lt;br /&gt;
The input/output control board of the C-10 is an intelligent system per se. It includes a 68000 microprocessor to handle petitions from and to the peripherals. It has 128KB of ROM and 768KB of DRAM. It also contains a NEC 765 as a floppy controller.&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
|  234|| 9404 || C-10 || Fitted with two hard disk drives and one 150MB Tape drive; expanded with 4MB additional RAM.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:AS/400]][[Category:68000 Devices]]&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, AS/400, 9404, C-10}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_AS/400_9404_F-10&amp;diff=821</id>
		<title>IBM AS/400 9404 F-10</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_AS/400_9404_F-10&amp;diff=821"/>
		<updated>2025-10-14T20:02:12Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added category&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:AS/400]]&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=820</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=820"/>
		<updated>2025-09-19T07:53:38Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Changed status of machine in collection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Models and submodels ==&lt;br /&gt;
The IBM System/23 was offered in two models, the all-in-one 5322 and the tower-based 5324. Internally both computers share the same motherboard and therefore operation and peripherals are compatible. The Datamaster computers has a series of submodels according to the presence of the word-processing card, the amount of memory and the number and type of floppy drives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Submodels of the System/23 Datamaster&lt;br /&gt;
|-&lt;br /&gt;
! Submodel !! Word-processing Card !! Memory amount !! Floppy Drive Amount !! Floppy Drive Type&lt;br /&gt;
|-&lt;br /&gt;
| 110 || No || 32KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 111 || No || 32KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 112 || No || 32KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 113 || No || 32KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 114 || No || 32KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 120 || No || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 121 || No || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 122 || No || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 123 || No || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 124 || No || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 130 || No || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 131 || No || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 132 || No || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 133 || No || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 134 || No || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 140 || No || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 141 || No || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 142 || No || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 143 || No || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 144 || No || 128KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 420 || Yes || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 421 || Yes || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 422 || Yes || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 423 || Yes || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 424 || Yes || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 430 || Yes || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 431 || Yes || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 432 || Yes || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 433 || Yes || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 434 || Yes || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 440 || Yes || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 441 || Yes || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 442 || Yes || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 443 || Yes || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 444 || Yes || 128KB || 2 || 51TD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The absence of a submodel comprising a word-processing card and an amount of RAM of 32KB is due that IBM set the specifications for the word processing units with a minimum of 64KB.&lt;br /&gt;
The submodel must be determined not by the number written at the rear plate but by observing the features of the machine, as some plates don&#039;t have the submodel written or have dummy values.&lt;br /&gt;
By late 1982, most submodels with 32KB and 31SD floppy drives had been withdrawn from the market.&amp;lt;ref&amp;gt;https://archive.org/details/bitsavers_ibmserviceceForConsultants198210_13344165/page/n69/mode/2up&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
[[File:Datamaster_Video_Connector.png|260px|thumb|left|alt=Datamaster video connector|Datamaster video connector]]&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
The video connector present in the motherboard presents at least two supply voltages (+5V and +12V). The other video signals are strictly TTL compatible. Synchronism signals are separate, vertical sync is negative and horizontal sync is positive. The display has three degrees of monochrome tones: full off, normal and highlighted (full on). This is achieved with an intensity signal being carried separately from the video signal.&lt;br /&gt;
&lt;br /&gt;
The Datamaster has two pixel clocks: 18.432 MHz for the American units and 18.2 MHz for the European machines. Its timings makes them incompatible with the later and more common MDA. While European units have both oscillators and the selection jumper, the Americans only have an oscillator and lack the jumper, although its space on board is present.&lt;br /&gt;
&lt;br /&gt;
There have been unofficial attempts to obtain the picture without having to recur to the original monitors. For instance, a composite video addon was first created, followed by a much simpler and overall better RGB-Scart adapter. Finally, the computer has been given support by the RGBtoHDMI project, therefore enabling Datamasters with broken or no monitor at all to be able to output image.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Spanish, fitted with 96KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5322&lt;br /&gt;
|124&lt;br /&gt;
|American, boards only, fitted with 32KB RAM, no keyboard&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5324&lt;br /&gt;
|124&lt;br /&gt;
|French, in restoration, with American keyboard, no monitor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=819</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=819"/>
		<updated>2025-08-06T07:50:50Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added referenced statement about lower spec submodels being retired by 1982&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Models and submodels ==&lt;br /&gt;
The IBM System/23 was offered in two models, the all-in-one 5322 and the tower-based 5324. Internally both computers share the same motherboard and therefore operation and peripherals are compatible. The Datamaster computers has a series of submodels according to the presence of the word-processing card, the amount of memory and the number and type of floppy drives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Submodels of the System/23 Datamaster&lt;br /&gt;
|-&lt;br /&gt;
! Submodel !! Word-processing Card !! Memory amount !! Floppy Drive Amount !! Floppy Drive Type&lt;br /&gt;
|-&lt;br /&gt;
| 110 || No || 32KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 111 || No || 32KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 112 || No || 32KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 113 || No || 32KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 114 || No || 32KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 120 || No || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 121 || No || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 122 || No || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 123 || No || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 124 || No || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 130 || No || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 131 || No || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 132 || No || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 133 || No || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 134 || No || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 140 || No || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 141 || No || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 142 || No || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 143 || No || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 144 || No || 128KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 420 || Yes || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 421 || Yes || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 422 || Yes || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 423 || Yes || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 424 || Yes || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 430 || Yes || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 431 || Yes || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 432 || Yes || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 433 || Yes || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 434 || Yes || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 440 || Yes || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 441 || Yes || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 442 || Yes || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 443 || Yes || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 444 || Yes || 128KB || 2 || 51TD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The absence of a submodel comprising a word-processing card and an amount of RAM of 32KB is due that IBM set the specifications for the word processing units with a minimum of 64KB.&lt;br /&gt;
The submodel must be determined not by the number written at the rear plate but by observing the features of the machine, as some plates don&#039;t have the submodel written or have dummy values.&lt;br /&gt;
By late 1982, most submodels with 32KB and 31SD floppy drives had been withdrawn from the market.&amp;lt;ref&amp;gt;https://archive.org/details/bitsavers_ibmserviceceForConsultants198210_13344165/page/n69/mode/2up&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
[[File:Datamaster_Video_Connector.png|260px|thumb|left|alt=Datamaster video connector|Datamaster video connector]]&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
The video connector present in the motherboard presents at least two supply voltages (+5V and +12V). The other video signals are strictly TTL compatible. Synchronism signals are separate, vertical sync is negative and horizontal sync is positive. The display has three degrees of monochrome tones: full off, normal and highlighted (full on). This is achieved with an intensity signal being carried separately from the video signal.&lt;br /&gt;
&lt;br /&gt;
The Datamaster has two pixel clocks: 18.432 MHz for the American units and 18.2 MHz for the European machines. Its timings makes them incompatible with the later and more common MDA. While European units have both oscillators and the selection jumper, the Americans only have an oscillator and lack the jumper, although its space on board is present.&lt;br /&gt;
&lt;br /&gt;
There have been unofficial attempts to obtain the picture without having to recur to the original monitors. For instance, a composite video addon was first created, followed by a much simpler and overall better RGB-Scart adapter. Finally, the computer has been given support by the RGBtoHDMI project, therefore enabling Datamasters with broken or no monitor at all to be able to output image.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Spanish, fitted with 96KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5322&lt;br /&gt;
|124&lt;br /&gt;
|American, boards only, fitted with 32KB RAM, no keyboard&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5324&lt;br /&gt;
|124&lt;br /&gt;
|French, in restoration, no keyboard, no monitor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=818</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=818"/>
		<updated>2025-08-05T10:23:44Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added unit in collection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Models and submodels ==&lt;br /&gt;
The IBM System/23 was offered in two models, the all-in-one 5322 and the tower-based 5324. Internally both computers share the same motherboard and therefore operation and peripherals are compatible. The Datamaster computers has a series of submodels according to the presence of the word-processing card, the amount of memory and the number and type of floppy drives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Submodels of the System/23 Datamaster&lt;br /&gt;
|-&lt;br /&gt;
! Submodel !! Word-processing Card !! Memory amount !! Floppy Drive Amount !! Floppy Drive Type&lt;br /&gt;
|-&lt;br /&gt;
| 110 || No || 32KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 111 || No || 32KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 112 || No || 32KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 113 || No || 32KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 114 || No || 32KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 120 || No || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 121 || No || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 122 || No || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 123 || No || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 124 || No || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 130 || No || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 131 || No || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 132 || No || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 133 || No || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 134 || No || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 140 || No || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 141 || No || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 142 || No || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 143 || No || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 144 || No || 128KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 420 || Yes || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 421 || Yes || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 422 || Yes || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 423 || Yes || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 424 || Yes || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 430 || Yes || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 431 || Yes || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 432 || Yes || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 433 || Yes || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 434 || Yes || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 440 || Yes || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 441 || Yes || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 442 || Yes || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 443 || Yes || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 444 || Yes || 128KB || 2 || 51TD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The absence of a submodel comprising a word-processing card and an amount of RAM of 32KB is due that IBM set the specifications for the word processing units with a minimum of 64KB.&lt;br /&gt;
The submodel must be determined not by the number written at the rear plate but by observing the features of the machine, as some plates don&#039;t have the submodel written or have dummy values.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
[[File:Datamaster_Video_Connector.png|260px|thumb|left|alt=Datamaster video connector|Datamaster video connector]]&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
The video connector present in the motherboard presents at least two supply voltages (+5V and +12V). The other video signals are strictly TTL compatible. Synchronism signals are separate, vertical sync is negative and horizontal sync is positive. The display has three degrees of monochrome tones: full off, normal and highlighted (full on). This is achieved with an intensity signal being carried separately from the video signal.&lt;br /&gt;
&lt;br /&gt;
The Datamaster has two pixel clocks: 18.432 MHz for the American units and 18.2 MHz for the European machines. Its timings makes them incompatible with the later and more common MDA. While European units have both oscillators and the selection jumper, the Americans only have an oscillator and lack the jumper, although its space on board is present.&lt;br /&gt;
&lt;br /&gt;
There have been unofficial attempts to obtain the picture without having to recur to the original monitors. For instance, a composite video addon was first created, followed by a much simpler and overall better RGB-Scart adapter. Finally, the computer has been given support by the RGBtoHDMI project, therefore enabling Datamasters with broken or no monitor at all to be able to output image.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Spanish, fitted with 96KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5322&lt;br /&gt;
|124&lt;br /&gt;
|American, boards only, fitted with 32KB RAM, no keyboard&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5324&lt;br /&gt;
|124&lt;br /&gt;
|French, in restoration, no keyboard, no monitor&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=817</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=817"/>
		<updated>2025-08-05T07:20:16Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added table of submodels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Models and submodels ==&lt;br /&gt;
The IBM System/23 was offered in two models, the all-in-one 5322 and the tower-based 5324. Internally both computers share the same motherboard and therefore operation and peripherals are compatible. The Datamaster computers has a series of submodels according to the presence of the word-processing card, the amount of memory and the number and type of floppy drives.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Submodels of the System/23 Datamaster&lt;br /&gt;
|-&lt;br /&gt;
! Submodel !! Word-processing Card !! Memory amount !! Floppy Drive Amount !! Floppy Drive Type&lt;br /&gt;
|-&lt;br /&gt;
| 110 || No || 32KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 111 || No || 32KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 112 || No || 32KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 113 || No || 32KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 114 || No || 32KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 120 || No || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 121 || No || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 122 || No || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 123 || No || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 124 || No || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 130 || No || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 131 || No || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 132 || No || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 133 || No || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 134 || No || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 140 || No || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 141 || No || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 142 || No || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 143 || No || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 144 || No || 128KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 420 || Yes || 64KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 421 || Yes || 64KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 422 || Yes || 64KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 423 || Yes || 64KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 424 || Yes || 64KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 430 || Yes || 96KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 431 || Yes || 96KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 432 || Yes || 96KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 433 || Yes || 96KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 434 || Yes || 96KB || 2 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 440 || Yes || 128KB || 0 || N/A&lt;br /&gt;
|-&lt;br /&gt;
| 441 || Yes || 128KB || 1 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 442 || Yes || 128KB || 2 || 31SD&lt;br /&gt;
|-&lt;br /&gt;
| 443 || Yes || 128KB || 1 || 51TD&lt;br /&gt;
|-&lt;br /&gt;
| 444 || Yes || 128KB || 2 || 51TD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The absence of a submodel comprising a word-processing card and an amount of RAM of 32KB is due that IBM set the specifications for the word processing units with a minimum of 64KB.&lt;br /&gt;
The submodel must be determined not by the number written at the rear plate but by observing the features of the machine, as some plates don&#039;t have the submodel written or have dummy values.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
[[File:Datamaster_Video_Connector.png|260px|thumb|left|alt=Datamaster video connector|Datamaster video connector]]&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
The video connector present in the motherboard presents at least two supply voltages (+5V and +12V). The other video signals are strictly TTL compatible. Synchronism signals are separate, vertical sync is negative and horizontal sync is positive. The display has three degrees of monochrome tones: full off, normal and highlighted (full on). This is achieved with an intensity signal being carried separately from the video signal.&lt;br /&gt;
&lt;br /&gt;
The Datamaster has two pixel clocks: 18.432 MHz for the American units and 18.2 MHz for the European machines. Its timings makes them incompatible with the later and more common MDA. While European units have both oscillators and the selection jumper, the Americans only have an oscillator and lack the jumper, although its space on board is present.&lt;br /&gt;
&lt;br /&gt;
There have been unofficial attempts to obtain the picture without having to recur to the original monitors. For instance, a composite video addon was first created, followed by a much simpler and overall better RGB-Scart adapter. Finally, the computer has been given support by the RGBtoHDMI project, therefore enabling Datamasters with broken or no monitor at all to be able to output image.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Spanish, fitted with 96KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5322&lt;br /&gt;
|124&lt;br /&gt;
|American, boards only, fitted with 32KB RAM, no keyboard&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=816</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=816"/>
		<updated>2025-07-09T07:56:51Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added description for the video subsystem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
[[File:Datamaster_Video_Connector.png|260px|thumb|left|alt=Datamaster video connector|Datamaster video connector]]&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
The video connector present in the motherboard presents at least two supply voltages (+5V and +12V). The other video signals are strictly TTL compatible. Synchronism signals are separate, vertical sync is negative and horizontal sync is positive. The display has three degrees of monochrome tones: full off, normal and highlighted (full on). This is achieved with an intensity signal being carried separately from the video signal.&lt;br /&gt;
&lt;br /&gt;
The Datamaster has two pixel clocks: 18.432 MHz for the American units and 18.2 MHz for the European machines. Its timings makes them incompatible with the later and more common MDA. While European units have both oscillators and the selection jumper, the Americans only have an oscillator and lack the jumper, although its space on board is present.&lt;br /&gt;
&lt;br /&gt;
There have been unofficial attempts to obtain the picture without having to recur to the original monitors. For instance, a composite video addon was first created, followed by a much simpler and overall better RGB-Scart adapter. Finally, the computer has been given support by the RGBtoHDMI project, therefore enabling Datamasters with broken or no monitor at all to be able to output image.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Spanish, fitted with 96KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5322&lt;br /&gt;
|124&lt;br /&gt;
|American, boards only, fitted with 32KB RAM, no keyboard&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=File:Datamaster_Video_Connector.png&amp;diff=815</id>
		<title>File:Datamaster Video Connector.png</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=File:Datamaster_Video_Connector.png&amp;diff=815"/>
		<updated>2025-07-09T07:45:42Z</updated>

		<summary type="html">&lt;p&gt;Retroand: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Licensing ==&lt;br /&gt;
{{copyright-lic}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=814</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=814"/>
		<updated>2025-07-01T08:41:46Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added unit in collection&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Spanish, fitted with 96KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|5322&lt;br /&gt;
|124&lt;br /&gt;
|American, boards only, fitted with 32KB RAM, no keyboard&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=813</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=813"/>
		<updated>2025-07-01T06:06:12Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added link to Q&amp;amp;A with Dr. Bradley&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
&lt;br /&gt;
[[Q&amp;amp;A with Dr. Dave Bradley]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=Q%26A_with_Dr._Dave_Bradley&amp;diff=812</id>
		<title>Q&amp;A with Dr. Dave Bradley</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=Q%26A_with_Dr._Dave_Bradley&amp;diff=812"/>
		<updated>2025-06-30T13:06:15Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added more entries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Start of the exchange ==&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 04/05/2025 Dr. Bradley Wrote&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I would be happy to answer any questions I can about the Datamaster. But it&#039;s been nearly 50 years and I have no documentation. I was there at the beginning and can tell you why certain things were done. I was involved completely with the BIOS and reviewed large amounts of the BASIC and Diagnostics for the machine, but I don&#039;t think I can answer anything very specific.&lt;br /&gt;
&lt;br /&gt;
For instance, there is a 3-key sequence in Datamaster that will invoke a simple debugger. I don&#039;t know whether that made it into the final production, or even which three keys did it. But that is the origin of Ctl-Atl-Del on the IBM PC. In fact, the answer to almost any question of &amp;quot;why did the IBM PC do it this way?&amp;quot; can be answered &amp;quot;Datamaster.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== About component relabeling ==&lt;br /&gt;
&lt;br /&gt;
I have some questions about this machine. Since we got at home our first System/23 I have been studying the motherboard and the keyboard, and therefore I have some questions nobody but the developers can answer. The Datamaster is a very misterious machine, but this obscurity has played against it in the long run and for this reason not so many units remain, from those even less are working. And so comes my first question: Do you know why this computer&#039;s components were relabelled? The truth is that it goes against the doctrine of using the standard parts they used. I have seen also relabelled parts in an AS/400 though.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know directly why the parts are relabeled, but I have a guess. IBM certified their vendors, and this was true of common components. IBM certified the processes by which they were made, and probably asked that components made on this verified process be labeled as such -- hence, relabeled parts. This was probably done for all parts destined for IBM.  I think.&lt;br /&gt;
&lt;br /&gt;
== About the ROM memories corruption ==&lt;br /&gt;
&lt;br /&gt;
Then there is one of the main reasons a Datamaster can fail, which are the ROM memories. They tend to corrupt very easily and it is very easy to see Datamasters with broken romsets. For example, if you looked at the Wikipedia, the main image of the computer shows a 5322 with the 12h error on the POD screen. Those memories were sourced from Motorola and Mostek. Wouldn&#039;t you know by any chance why those memories were selected from them instead of other ROM makers?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Motorola and Mostek were probably selected from a bidding process, with their components verified. I doubt that a 50 year lifetime was part of the validation process.&lt;br /&gt;
&lt;br /&gt;
== About components from the Datamaster present in the PC prototype ==&lt;br /&gt;
&lt;br /&gt;
Other than the Datamaster, I would also like to talk about the PC prototype (not the final product) and its relation with the System/23. I have two questions about it. I saw the power supply connector was maintained from the Datamaster to the prototype, but was replaced in the final product, although the signals are the very same. Do you know what was the main motivation to replace it? Then, there is the DRAM matter. I saw in the prototype that the memory used in the prototype was the 4332 (also used by the Apple III), pin-compatible with the 4132 that the Datamaster employs (I was able to determine it when studying the 64KB memory card). However the final product used its predecessor, the 4116. Does this reversion have to do with the release of the 4164 as a way to close distance between both chips trace layout?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
the prototype was put together with Datamaster leftovers and whatever new components were necessary (8088, obviously). The PS and connector was one of those. Why it changed I don&#039;t know, although it may have been a space issue.  Narrow connector along the side of the board rather than the fat one elsewhere? Don&#039;t really know. As for RAM, the prototype board has two banks of 32kb, while the final board has 4 banks of 16kb -- so we could sell a 16kb stripped version for an advertisable low price. That&#039;s why you have 4332s on the proto and 4116 on the final -- 32kbits vs 16kbits.&lt;br /&gt;
&lt;br /&gt;
== About the hidden key sequence on the Datamaster ==&lt;br /&gt;
&lt;br /&gt;
The key combination you stated was the precursor to Ctrl-Alt-Del wouldn&#039;t be by any chance Command-Test-Erase? This is a well known combination in the Datamaster but haven&#039;t noticed before how similar both combinations are.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I don&#039;t recognize any of those keys on the s/23, but it&#039;s been 50 years, and I&#039;ve spent all of that time looking at the IBM PC keyboard.  And C-A-D.&lt;br /&gt;
&lt;br /&gt;
== About the Datamaster clock frequency ==&lt;br /&gt;
&lt;br /&gt;
I would like to inform you about the ridiculous situation I am involved in, and one of the reasons of why I have contacted you. It all started when we (I collect computers with my father) acquired our first unit, a 5322-124. It didn&#039;t work, so I had to conduct research about the computer, and the culprit of the issue were some capacitors in the 64KB DRAM board. That card was fixed and later studied. And there goes the myth that the Datamaster has redundant memory, which I found it was false when I determined the type of RAM IC it was carrying was the piggy-backed TMS4132. Then I wrote to all sites that were spreading the rumour in order to correct it. This has happened a few times during my interactions with the Datamaster hardware. One of them is an error that originated at the English Wikipedia, then spread to the other Wikipedias, then spread to third sites and finally Wikipedia used those sites as references. I am talking about the microprocessor&#039;s clock, which according to Wikipedia was 4.77MHz and should be 6.14MHz / 3.07MHz effective.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I can&#039;t verify the S23 clock speed, but what you have sounds reasonable. It&#039;s not 4.77MHz because that&#039;s the PC, which is 14.31818 MHz divided by 3. 14.31818 was chosen to generate the color burst frequency of 3.58MHz for use by the CGA with a home TV.&lt;br /&gt;
&lt;br /&gt;
== About the DRAM cards of the Datamaster ==&lt;br /&gt;
&lt;br /&gt;
I would like to know what motivated the design team to structure the RAM in cards instead of placing them in the motherboard, please. I am aware that while the banking mechanism allows for a theoretical 256KB of DRAM, the detection and identification mechanism of such cards prevents the inclusion of more than 128KB of DRAM in cards. I am also aware that are other ways to place RAM in the Datamaster, but will leave those for a later time. My question about the mechanism is if you know why an identification for 128KB signal like the one used for the 64KB RAM board wasn&#039;t created to profit from memory over the 128KB boundary.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I got no idea&lt;br /&gt;
&lt;br /&gt;
== About the Light pen test ==&lt;br /&gt;
&lt;br /&gt;
Then, when writing the emulator I found test 05h (CRTC + DMA). It has sparkled some other questions to me. The first curious thing about this test is the video interrupt signal. The trace between the interrupt RST5.5 and the 8275 /IRQ is cut and the interrupt is checked using polling. What is the motivation behind that behaviour? Then, in the same test, I found the light pen test. It was a pain to trace and describe in the MAME source, but I am proud of having found it. I imagine this test was done to check if the DMA device was working and delivering data to the CRTC; is this correct? I also found the test signal to be gated with a pin in the video connector. Such pin is not documented in the service manuals of the machine. Does it means there was an initial requirement for a light pen that was eventually dropped?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;At 21/05/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I didn&#039;t write the diagnostics, and only proof-read/optimized the ones in ROM. I do know that the Customer Engineer types who wrote the code did everything they could to test something in two different ways to verify everything they could.&lt;br /&gt;
There may have been a light pen design early on, but I&#039;m pretty sure it went away. Same thing happened with the PC --we made allowances for a light pen and they never caught on. I&#039;ll suggest that a pointing device like a mouse removed the need for a light pen, and mice appeared the late 80s.&lt;br /&gt;
&lt;br /&gt;
== About the Datamaster and MDA ==&lt;br /&gt;
&lt;br /&gt;
This one is a question about the MDA video subsystem and its relationship with the Datamaster video subsystem. To be fair, I have had my dose of research on the issue and found the two subsystems, while they serve the same purpose, are designed and act in ways completely different. The Datamaster video subsystem is based around the i8275 and the i8257. The i8275 does not generate video addresses, so it relegates the task to the DMA device. MDA on the other hand is based on the MC6845, which does generate video addresses. This fact changes the design of the video subsystem radically. Also, the i8275 has internal queues of 7 bits each, element not present in the 6845, and which limits&lt;br /&gt;
the characters to 128 per bank (there are seven banks of characters plus one empty). MDA was designed to bypass this specific limitation, at the same time some of the hardwired characters of the i8275 were transfered to the MDA character generator ROM. The pixel clock also differs between both subsystems (with the Datamaster having two different pixel clocks).&lt;br /&gt;
&lt;br /&gt;
In short, we have two very different implementations of the video subsystem, however it is claimed that the MDA is based on the Datamaster video subsystem. Tracing the source of the claim was one of your interviews. Please, could you clarify what it is meant that MDA is based on the other video system even when there is nearly no common point?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On 28/06/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If i said the mda came from dm, then i was wrong. Your analysis of the dm video seems right on as i recall it from 50 years ago.&lt;br /&gt;
The idea of 80x25 mono video does translate from dm to mda.&lt;br /&gt;
I can&#039;t recall why we didn&#039;t like the intel chips , probably the limitations you indicated. Pc was intended to be more open and accessible while the dm was closed.&lt;br /&gt;
Or, using 6845 on both mda and cga was a better solution...made them more alike . Intel chips wouldn&#039;thave done the graphics.&lt;br /&gt;
&lt;br /&gt;
== About the Datamaster word-processing card ==&lt;br /&gt;
&lt;br /&gt;
There is also a doubt about the expansion cards. There is the word-processing card, which contains a second i8275 and possibly a 8048 as well as 32KB of extra memory. However, in most cases there is a second board which is identical to the word-processing card minus some components (for instance, the i8275 is removed). With no direct connection with the word-processing card and no connectors other than the pre-ISA bus, the purpose of that card remains unknown. Please, if you know what that card is, could you state what is its function?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;On 28/06/2025 Dr. Bradley answered&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
I know nothing about the word processing card. Might have been a different bunch from ibm building a special pirpose thingie.&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=Q%26A_with_Dr._Dave_Bradley&amp;diff=811</id>
		<title>Q&amp;A with Dr. Dave Bradley</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=Q%26A_with_Dr._Dave_Bradley&amp;diff=811"/>
		<updated>2025-06-30T12:34:46Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Article created&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Start of the exchange ==&lt;br /&gt;
&lt;br /&gt;
At 04/05/2025 Dr. Bradley Wrote&lt;br /&gt;
&lt;br /&gt;
I would be happy to answer any questions I can about the Datamaster. But it&#039;s been nearly 50 years and I have no documentation. I was there at the beginning and can tell you why certain things were done. I was involved completely with the BIOS and reviewed large amounts of the BASIC and Diagnostics for the machine, but I don&#039;t think I can answer anything very specific.&lt;br /&gt;
&lt;br /&gt;
For instance, there is a 3-key sequence in Datamaster that will invoke a simple debugger. I don&#039;t know whether that made it into the final production, or even which three keys did it. But that is the origin of Ctl-Atl-Del on the IBM PC. In fact, the answer to almost any question of &amp;quot;why did the IBM PC do it this way?&amp;quot; can be answered &amp;quot;Datamaster.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== About component relabeling ==&lt;br /&gt;
&lt;br /&gt;
I have some questions about this machine. Since we got at home our first System/23 I have been studying the motherboard and the keyboard, and therefore I have some questions nobody but the developers can answer. The Datamaster is a very misterious machine, but this obscurity has played against it in the long run and for this reason not so many units remain, from those even less are working. And so comes my first question: Do you know why this computer&#039;s components were relabelled? The truth is that it goes against the doctrine of using the standard parts they used. I have seen also relabelled parts in an AS/400 though.&lt;br /&gt;
&lt;br /&gt;
At 21/05/2025 Dr. Bradley answered&lt;br /&gt;
&lt;br /&gt;
I don&#039;t know directly why the parts are relabeled, but I have a guess. IBM certified their vendors, and this was true of common components. IBM certified the processes by which they were made, and probably asked that components made on this verified process be labeled as such -- hence, relabeled parts. This was probably done for all parts destined for IBM.  I think.&lt;br /&gt;
&lt;br /&gt;
== About the ROM memories corruption ==&lt;br /&gt;
&lt;br /&gt;
Then there is one of the main reasons a Datamaster can fail, which are the ROM memories. They tend to corrupt very easily and it is very easy to see Datamasters with broken romsets. For example, if you looked at the Wikipedia, the main image of the computer shows a 5322 with the 12h error on the POD screen. Those memories were sourced from Motorola and Mostek. Wouldn&#039;t you know by any chance why those memories were selected from them instead of other ROM makers?&lt;br /&gt;
&lt;br /&gt;
At 21/05/2025 Dr. Bradley answered&lt;br /&gt;
&lt;br /&gt;
Motorola and Mostek were probably selected from a bidding process, with their components verified. I doubt that a 50 year lifetime was part of the validation process.&lt;br /&gt;
&lt;br /&gt;
== About components from the Datamaster present in the PC prototype ==&lt;br /&gt;
&lt;br /&gt;
Other than the Datamaster, I would also like to talk about the PC prototype (not the final product) and its relation with the System/23. I have two questions about it. I saw the power supply connector was maintained from the Datamaster to the prototype, but was replaced in the final product, although the signals are the very same. Do you know what was the main motivation to replace it? Then, there is the DRAM matter. I saw in the prototype that the memory used in the prototype was the 4332 (also used by the Apple III), pin-compatible with the 4132 that the Datamaster employs (I was able to determine it when studying the 64KB memory card). However the final product used its predecessor, the 4116. Does this reversion have to do with the release of the 4164 as a way to close distance between both chips trace layout?&lt;br /&gt;
&lt;br /&gt;
At 21/05/2025 Dr. Bradley answered&lt;br /&gt;
&lt;br /&gt;
the prototype was put together with Datamaster leftovers and whatever new components were necessary (8088, obviously). The PS and connector was one of those. Why it changed I don&#039;t know, although it may have been a space issue.  Narrow connector along the side of the board rather than the fat one elsewhere? Don&#039;t really know. As for RAM, the prototype board has two banks of 32kb, while the final board has 4 banks of 16kb -- so we could sell a 16kb stripped version for an advertisable low price. That&#039;s why you have 4332s on the proto and 4116 on the final -- 32kbits vs 16kbits.&lt;br /&gt;
&lt;br /&gt;
== About the hidden key sequence on the Datamaster ==&lt;br /&gt;
&lt;br /&gt;
The key combination you stated was the precursor to Ctrl-Alt-Del wouldn&#039;t be by any chance Command-Test-Erase? This is a well known combination in the Datamaster but haven&#039;t noticed before how similar both combinations are.&lt;br /&gt;
&lt;br /&gt;
At 21/05/2025 Dr. Bradley answered&lt;br /&gt;
&lt;br /&gt;
I don&#039;t recognize any of those keys on the s/23, but it&#039;s been 50 years, and I&#039;ve spent all of that time looking at the IBM PC keyboard.  And C-A-D.&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=810</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=810"/>
		<updated>2025-05-11T10:22:32Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added floppy disk controller ports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the motherboard&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ I/O Ports decoded in the floppy controller card&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| F4h-F7h || NEC 765 || Floppy drive controller&lt;br /&gt;
|-&lt;br /&gt;
| F8h-FBh || 8255 PPI || Unknown purpose&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=809</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=809"/>
		<updated>2025-05-05T07:25:49Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=808</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=808"/>
		<updated>2025-05-05T07:25:10Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Interrupts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Expansion slot B4&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test. It fails with standard 8275s.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=807</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=807"/>
		<updated>2025-04-26T12:45:07Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Corrections on statements about the video subsystem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves exactly the same way as stock 8275s. Compatibility with stock 8275 has been tested with good results, as well as the Soviet KR580VG75, which is also compatible. The Intel 8276 is not compatible without a ROM hack that modifies test 05h in order to deactivate the light pen test.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test. It fails with standard 8275s.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=806</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=806"/>
		<updated>2025-04-20T10:33:47Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Changed original release date&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by mid 1980, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves slightly different from stock 8275s when activating the interrupts. This small difference makes the test 05 fail with standard 8275s without a patch on ROS 02h. Otherwise, the Datamaster&#039;s CRTC has the same pinout and accepts the same commands and parameters than the regular components.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test. It fails with standard 8275s.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=805</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=805"/>
		<updated>2025-04-18T10:37:02Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* RAM Memory */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;base&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves slightly different from stock 8275s when activating the interrupts. This small difference makes the test 05 fail with standard 8275s without a patch on ROS 02h. Otherwise, the Datamaster&#039;s CRTC has the same pinout and accepts the same commands and parameters than the regular components.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test. It fails with standard 8275s.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=804</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=804"/>
		<updated>2025-04-15T06:53:05Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Expansion ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves slightly different from stock 8275s when activating the interrupts. This small difference makes the test 05 fail with standard 8275s without a patch on ROS 02h. Otherwise, the Datamaster&#039;s CRTC has the same pinout and accepts the same commands and parameters than the regular components.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has four expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test. It fails with standard 8275s.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=803</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=803"/>
		<updated>2025-04-10T08:15:14Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added explanation about probe not displaying results, added explanation that stock 8275s fail test 05h.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves slightly different from stock 8275s when activating the interrupts. This small difference makes the test 05 fail with standard 8275s without a patch on ROS 02h. Otherwise, the Datamaster&#039;s CRTC has the same pinout and accepts the same commands and parameters than the regular components.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. Faulty CPU, ROM or 8255 (units 2 and 3) will prevent any diagnostics to be displayed, even with a probe. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test. It fails with standard 8275s.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=802</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=802"/>
		<updated>2025-04-10T08:10:31Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added video subsystem with indications about CRTC differences&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Video Subsystem ===&lt;br /&gt;
The video subsystem is almost copied verbatim from the Intel 8275 Datasheet. It consists in a 8275 variant plus a 8257 DMA device. The 4178629 made by Intel is the CRTC chip and it behaves slightly different from stock 8275s when activating the interrupts. This small difference makes the test 05 fail with standard 8275s without a patch on ROS 02h. Otherwise, the Datamaster&#039;s CRTC has the same pinout and accepts the same commands and parameters than the regular components.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=801</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=801"/>
		<updated>2025-04-10T08:04:43Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Corrected ROM capacity description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of fourteen to sixteen ROMs of 8KB each, for a total of 112KB/128KB, although the service manual states 112KB which means they did not update the capacity after adding ROMs 10h and 11h&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=800</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=800"/>
		<updated>2025-04-06T07:43:57Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255#3, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=799</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=799"/>
		<updated>2025-02-02T11:25:27Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* I/O Ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register / Character ROM pagination&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=798</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=798"/>
		<updated>2025-01-29T08:45:08Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* I/O Ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Keyboard scan codes&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Keyboard control signals&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=797</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=797"/>
		<updated>2025-01-29T08:44:09Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Interrupts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD (enable), memory parity error&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=796</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=796"/>
		<updated>2025-01-29T08:42:52Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Interrupts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|-&lt;br /&gt;
| IRQ0 || Keyboard&lt;br /&gt;
|-&lt;br /&gt;
| IRQ1 || USART&lt;br /&gt;
|-&lt;br /&gt;
| IRQ2 || USART&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=795</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=795"/>
		<updated>2025-01-18T14:28:56Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* I/O Ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed using the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h || 74LS670 || DMA Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 21h || 74LS670 || RAM Write Register&lt;br /&gt;
|-&lt;br /&gt;
| 22h || 74LS670 || RAM Read Register&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches, RAM configuration&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=794</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=794"/>
		<updated>2025-01-16T12:59:19Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Interrupts */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-22h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || 8085 SOD&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=793</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=793"/>
		<updated>2025-01-16T08:00:06Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-22h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06 || CRTC || Sync and video data tests.&lt;br /&gt;
|-&lt;br /&gt;
| 07 || CRT Tube || Tube initialization&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || ROS paging register&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || ROM at 0x2000&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || ROMs at 0x4000 and 0x6000&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=792</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=792"/>
		<updated>2025-01-14T12:26:19Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Logical Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory is placed at address 8200h.&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-22h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 23h || 74LS670 || CPU ROS Page Register&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=791</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=791"/>
		<updated>2025-01-08T09:07:14Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Fixed quick facts table ROM size&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 112KB/128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=790</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=790"/>
		<updated>2025-01-08T09:04:08Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added PID-1200 casuistic&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; In the case of early boards with 14 ROMs, 10 and 11 are also marked as missing.&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=789</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=789"/>
		<updated>2025-01-08T08:37:06Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Detailed test 05&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A).&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test.&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h.&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e.&lt;br /&gt;
|-&lt;br /&gt;
| 05 || CRTC, DMA || Interrupt test; initialization of 8275, 8257; light pen test.&lt;br /&gt;
|-&lt;br /&gt;
| 06-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=788</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=788"/>
		<updated>2025-01-04T18:41:21Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added interrupts&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Interrupts ===&lt;br /&gt;
Interrupts in the Datamaster are mostly handled by the 8259 PIC. However, the extra interrupts added by the 8085 are handled directly by the CPU.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Interrupt !! Function&lt;br /&gt;
|-&lt;br /&gt;
| TRAP || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST7.5 || PIT timer 2&lt;br /&gt;
|-&lt;br /&gt;
| RST6.5 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| RST5.5 || 8275 IRQ (if J1 is bridged)&lt;br /&gt;
|-&lt;br /&gt;
| IRQ || 8259 PIC&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=787</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=787"/>
		<updated>2025-01-04T10:13:09Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB. Lecture of register 0x2e&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=786</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=786"/>
		<updated>2024-12-31T17:31:38Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first unpaged 16KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the paged RAM memory&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=785</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=785"/>
		<updated>2024-12-31T17:30:54Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* I/O Ports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown; related to memory test 04&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=784</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=784"/>
		<updated>2024-12-31T08:24:57Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added SID signal constant value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
It has been found by continuity tests that the SID signal from the CPU is tied to the 5V supply rail. The microprocessor checks its value during test 1 at power-up.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=783</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=783"/>
		<updated>2024-12-31T08:14:12Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Separated ports 42h and 43h&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 43h || 8255#2 || 8255#2 control port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=782</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=782"/>
		<updated>2024-12-31T08:13:11Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Detailed 8255 PPI ports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch || 8255#1 || Language/Region switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Dh || 8255#1 || CE/ROM Update switches&lt;br /&gt;
|-&lt;br /&gt;
| 2Eh || 8255#1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 2Fh || 8255#1 || 8255#1 control port&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h-43h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Eh || 8255#3 || Keyboard port/C option switches&lt;br /&gt;
|-&lt;br /&gt;
| 4Fh || 8255#3 || 8255#3 control port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=781</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=781"/>
		<updated>2024-12-30T14:35:21Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Fixed quick facts table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz&lt;br /&gt;
(effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch-2Fh || 8255#1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h-43h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Fh || 8255#3 || Keyboard port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=780</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=780"/>
		<updated>2024-12-30T12:32:19Z</updated>

		<summary type="html">&lt;p&gt;Retroand: Added devices and clarified ports&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz (effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device !! Function&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || 8257 || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || 74LS670 || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || 8253 || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || 8259 || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch-2Fh || 8255#1 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 40h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 41h || 8255#2 || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 42h-43h || 8255#2 || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || 8275 || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || 8251 || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || 8255#3 || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Fh || 8255#3 || Keyboard port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=779</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=779"/>
		<updated>2024-12-30T10:45:14Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz (effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch-2Fh || 8255#3&lt;br /&gt;
|-&lt;br /&gt;
| 40h-43h || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Fh || Keyboard port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unused. Tests pass directly from 02 to 04.&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
	<entry>
		<id>https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=778</id>
		<title>IBM System/23 Datamaster</title>
		<link rel="alternate" type="text/html" href="https://bitspassats.com/index.php?title=IBM_System/23_Datamaster&amp;diff=778"/>
		<updated>2024-12-28T12:06:53Z</updated>

		<summary type="html">&lt;p&gt;Retroand: /* Diagnostics */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The IBM System/23 Datamaster is the first IBM computer to be based upon an Intel CPU and the only known IBM computer to feature an 8-bit microprocessor. Along with the [[Displaywriter]], is one of the few EBCDIC microcomputers ever made. Development of the hardware began in 1978 and was ready to roll out by late 1979, but due to the late decision to make its BASIC compatible with the one from the System/34 the software delayed its release to July 1981, just one month before the [[IBM 5150 Personal Computer]]. As a result, it was a commercial failure and sold very poorly. While IBM engineers decided to use industry standard components instead of their own SLT family, all references were ofuscated by remarking them with its IBM internal catalog number; this fact difficults enormously their repair and most units are in a state of decay.&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;float:right;margin:10px;border:1px solid black&amp;quot;&lt;br /&gt;
|+ System/23 Datamaster&lt;br /&gt;
| colspan=2 | &lt;br /&gt;
[[File:System-23 Datamaster.jpg|260px|frameless|alt=System/23 Datamaster|System/23 Datamaster]]&lt;br /&gt;
|-&lt;br /&gt;
| Manufacturer || IBM&lt;br /&gt;
|-&lt;br /&gt;
| Models || 5322, 5324&lt;br /&gt;
|-&lt;br /&gt;
| CPU || Intel 8085@6.14MHz (effective 3.07MHz)&lt;br /&gt;
|-&lt;br /&gt;
| DMA || Intel 8257&lt;br /&gt;
|-&lt;br /&gt;
| CRTC || Intel 8275&lt;br /&gt;
|-&lt;br /&gt;
| Display || 80x24 characters, MDA-like&lt;br /&gt;
|-&lt;br /&gt;
| FDC || NEC 765&lt;br /&gt;
|-&lt;br /&gt;
| RAM || 32KB/64KB/96KB/128KB&lt;br /&gt;
|-&lt;br /&gt;
| ROM || 128KB-272KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Historical Signifiance ==&lt;br /&gt;
=== Commercial Failure ===&lt;br /&gt;
The scarcity of those systems is the result of high prices (it was marketed at USD9000 at the time), delayed availability, poor marketing and the release of in-house competing systems such as the Displaywriter and the PC. This made the computer fail to be adopted by the marked, which had a plaethora of competing systems at much more competitive price and performance. Therefore the System/23 quickly became a niche in the marked and was soon forgotten as the technology improved quickly in the mid-80s.&lt;br /&gt;
&lt;br /&gt;
=== Influence over the 5120 ===&lt;br /&gt;
The long development time of the IBM Datamaster made its case a model for the [[IBM 5120]], which adopted a variant. While it is acknowledged that both units have related cases, it is usually wrongly stated that the 5120 influenced the System/23 where in reality it was the Datamaster that influenced the 5120.&lt;br /&gt;
&lt;br /&gt;
=== Usage of standard parts ===&lt;br /&gt;
The IBM Datamaster is the first IBM computer to rely on then industry-standard components including microprocessor, memories, peripheral devices and logic integrated circuits. This aproach would be reused in the Displaywriter (which has a mix of both standard components and IBM SLTs) and later developments, such as the PC family of computers. However, the references were changed to avoid third parties to tamper with the machine.&lt;br /&gt;
&lt;br /&gt;
=== Creation of the IBM PC ===&lt;br /&gt;
It is often said that the IBM had a rushed development of the PC with a single year in development. Whereas the statement is partially true, it is also forgotten how close both systems are and how the same engineers that worked in the Datamaster later worked in the PC, bringing the required expertise. Also, the chosen CPU was the [[Intel 8088]] due of its similarity hardware-wise with the [[Intel 8085]] and this way most of the peripherals were maintained in the transition from the Datamaster. The character set and its format were also brought from the System/23 to the [[5150]]. Also, the expansion bus is nearly untouched in that evolution. Finally, from pictures of early prototypes it can be seen that the power connectors were the same as the one in the Datamaster. As a conclusion, it might be stated that the early life of the IBM PC started as modifications on the Datamaster.&lt;br /&gt;
&lt;br /&gt;
== Hardware Description ==&lt;br /&gt;
&lt;br /&gt;
=== Microprocessor and timing ===&lt;br /&gt;
The CPU selected to serve as the core of the system was the Intel 8085. However, as the component references were ofuscated identifying the CPU was not a straightforward task. It was hinted that the component with reference 4178015 could be the part. To confirm the true identity of the integrated circuit, an exchange with a legit 8085 was done: the remarked part went into a [[Alphatronic P2|P2]] CPU board and the P2 CPU went in place of the unknown component. The test went successfully and the cross reference was proved as fact.&amp;lt;ref name=&amp;quot;:0&amp;quot;&amp;gt;Own research&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:IBM 8085 CPU being tested in the Alphatronic P2.jpg|thumb|left|alt=IBM 8085 CPU being tested in the Alphatronic P2|IBM 8085 CPU being tested in the Alphatronic P2]]&lt;br /&gt;
&lt;br /&gt;
The computer has no specific reset circuit like other computers but it is just triggered by the &amp;quot;Power_Good&amp;quot; signal from the power supply unit.&lt;br /&gt;
&lt;br /&gt;
Regarding the system clock, it is derivated from a 18.432MHz square wave oscillator which is then divided by three to feed the microprocessor with a 6.14MHz signal.&lt;br /&gt;
&lt;br /&gt;
=== ROM Operating System ===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;  style=&amp;quot;float:right;margin:10px;&amp;quot; &lt;br /&gt;
! ROS Code !! ROM Reference&lt;br /&gt;
|-&lt;br /&gt;
| 02 || 4481186&lt;br /&gt;
|-&lt;br /&gt;
| 09 || 8493747 &lt;br /&gt;
|-&lt;br /&gt;
| 0A || 8519402&lt;br /&gt;
|-&lt;br /&gt;
| 0B || 8519404&lt;br /&gt;
|-&lt;br /&gt;
| 0C || 8519403 &lt;br /&gt;
|-&lt;br /&gt;
| 0D || 8519405 &lt;br /&gt;
|-&lt;br /&gt;
| 10 || 8519411 &lt;br /&gt;
|-&lt;br /&gt;
| 11 || 8519407&lt;br /&gt;
|-&lt;br /&gt;
| 12 || 8519408&lt;br /&gt;
|-&lt;br /&gt;
| 13 || 8519414&lt;br /&gt;
|-&lt;br /&gt;
| 14 || 8519406&lt;br /&gt;
|-&lt;br /&gt;
| 15 || 8519416&lt;br /&gt;
|-&lt;br /&gt;
| 16 || 8519409&lt;br /&gt;
|-&lt;br /&gt;
| 17 || 8519410&lt;br /&gt;
|-&lt;br /&gt;
| 18 || 8519417&lt;br /&gt;
|-&lt;br /&gt;
| 19 || 8519411&lt;br /&gt;
|}&lt;br /&gt;
[[File:ROS Memories.jpg|thumb|left|alt=Some of the sixteen ROS memories|Some of the sixteen ROS memories]]&lt;br /&gt;
The ROM Operating System or simply ROS is the firmware of the System/23. It consists in a set of sixteen ROMs of 8KB each, for a total of 128KB, although the service manual states 112KB which means they did not count the non-paged ROM memory&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 74&amp;lt;/ref&amp;gt;. Each ROS ROM has a unique diagnostics identification code, which is determined by the outputs of two 74LS138 3:8 decoders. ROMs 02h and 09h are fixed in the memory map, where the rest are paged in the memory range 4000h-7FFFh. ROMs 0Eh and 0Fh are not present but the logic to select them is implemented even if there is no place to place them in the board; still, with an appropriate ROM adapter their space could be enabled to inject code into the system.&lt;br /&gt;
&lt;br /&gt;
ROMs paged 0-7 are present in the board while ROMs paged 8-15 are expected to be provided by expansion cards on their corresponding slots. Therefore, the maximum theoretical ROM capacity for the Datamaster consists of 272KB if the 0Eh-0Fh gap and pages 8-15 are used.&lt;br /&gt;
&lt;br /&gt;
Regarding the diagnostics, every single ROS image contains its own reference inside the code&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. It is still not known at the moment of this writing but it is supposed to be part of the verification algorithm used by procedure PID 1200. Other important aspects to have in mind during the checks are that if the ROM identifier is inverted the memory is faulty. In case it is underlined, usually means that it is not present or detected. Usual causes for this fault are either power supply issues or memory select signals.&lt;br /&gt;
&lt;br /&gt;
Regarding the memories as components, they usually come as Mostek MK36000 or Motorola 68366 and has been reported that in early units the components were Motorola 68766 EPROMs due to delays in supply lines&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/searching-for-ibm-s-23-datamaster-users.1241962/post-1386460&amp;lt;/ref&amp;gt;. Nowadays, the Mostek memories are prone to fail and are one of the major causes of failure of this kind of computer. The issue can be solved easily with adapters, in case that the appropriate firmware is provided.&lt;br /&gt;
&lt;br /&gt;
=== RAM Memory ===&lt;br /&gt;
[[File:System-23 64KB memory board.jpg|thumb|left|alt=System/23 64KB memory board|System/23 64KB memory board]]&lt;br /&gt;
RAM in the Datamaster is completely contained in one to two boards complementary to the motherboard and are attached through a card-edge connector of 36 pins each. This facilitates the removal and placement of memory cards into the system and grants the possibility of fast repair and extension of the computer. There are two memory slots, and at the same time official memory boards were produced in two sizes: 32KB and 64KB respectively. This led to five possible official configurations.&amp;lt;ref name=&amp;quot;:1&amp;quot;&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 36&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Still, it is known that the official maximum of 128KB is just the maximum for the earlier models of 5322, as later revisions could address up to 256KB by configuring some jumpers in the motherboard. This is possible as the bank control register is implemented with a 74LS670, which is 4 bits wide, giving 16 pages of 16KB each. Additionally, there is a non-banked page which is used among other things as the display memory. For this reason the actual theorical maximum memory for a System/23 is 272KB. Still, it has been hinted that some clones of the system exist and that those expand the width of the page register to eight bits, giving the theorical maximum to 4112KB to them.&lt;br /&gt;
&lt;br /&gt;
The memory boards contain one or two TMS4132 arrays of 9 memories each&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. Having nine units per bank allows them to have a data byte width of data plus a ninth bit for parity. Both because of the rareness of the format of the TMS4132 and the replacement of the official reference led for years to believe that IBM soldered the memories in piggyback to cope with failure rates when in reality it was a feat of Texas instruments to sell them directly soldered after manufacture of both dies. This kind of memory contains a 16KB bank per package and both packages have a slight difference of the pinout to not have conflict with /CAS and /RAS.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;margin:10px;&amp;quot; |&lt;br /&gt;
|+ Official RAM configurations&amp;lt;ref name=&amp;quot;:1&amp;quot; /&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! Feature board !! Option board !! Total&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || None || 32KB&lt;br /&gt;
|-&lt;br /&gt;
| 32KB || 32KB || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || None || 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 32KB || 96KB&lt;br /&gt;
|-&lt;br /&gt;
| 64KB || 64KB || 128KB&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Memory is subject to many diagnostics tests, some of which are considered critical and could prevent the system from successfully IPL, giving the impression of a completely dead computer whereas only the memory could be failing. It has also been tested that the computer won&#039;t boot if no memory board is present at the &amp;quot;feature&amp;quot; socket.&lt;br /&gt;
&lt;br /&gt;
A common cause of failure for this board and subsequently the whole computer is by having faulty capacitors in shortcircuit in the RAM power supply lines&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;. By simply removing them the issue is solved. In case of 4132 failure, each 4132 upper and lower packages must be separated in order to run the tests.&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics port ===&lt;br /&gt;
The System/23 has a dedicated diagnostics port&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 37&amp;lt;/ref&amp;gt;. It is controlled by a single 8255 by using its port B, whereas ports A and C have no relation in function; for this reason it is deduced that port B is working in mode 0, without handshaking of any sort. This fact is confirmed by the eight data lines which conform the data port being directly connected only to port B and the remaining four signals are for supplying power to the probes.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:20240409 143826.jpg|thumb|left|alt=System/23 diagnostics port|System/23 diagnostics port]]&lt;br /&gt;
After finding the pinout of the diagnostics port a simple probe containing a led per data line was built, and it showed a count when booting. Removing the RAM board(s) caused the count to stop at &amp;quot;00000100&amp;quot; (4 in decimal), which corresponds to a memory check test procedure of PID 1200. With those facts it was deduced that the port was outputting a two-digit hex code which was written just before the start of a test routine and would stop when the error was considered critical.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For most cases it is not necessary having the probe, as the same values that are outputted through the service port are also written in the video memory, displaying the passed tests and the errors encountered. However, as the same tests that check the video display controller are the same routines that initialize it, all the tests made before the initialization cannot be seen in the screen until passed. In case some of them failed the screen would not be initialized and therefore the results wouln&#039;t be seen. For this reason the probe is still needed.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Keyboard ===&lt;br /&gt;
The computer presents itself with a pre-Model F keyboard with 83 keys. Internally, it used the very same components than the keyboard of the IBM PC would later. The only difference between them is that the PC uses a serial interface to communicate the peripheral with the computer and the Datamaster has a parallel interface. This change also implies that the code in the 8048 microcontroller both carry is different. For this reason this was also one of the most common causes of not repairable failures.&lt;br /&gt;
&lt;br /&gt;
=== Expansion ports ===&lt;br /&gt;
The Datamaster has three expansion ports located at the rear of the system. It is important to notice that when the PC was developed most of the pins were left in place and, contrary to the popular belief, one is not the mirrored image of the other.&amp;lt;ref&amp;gt;https://forum.vcfed.org/index.php?threads/system-23-datamaster-i-o-slots.1248011/&amp;lt;/ref&amp;gt;&lt;br /&gt;
[[File:IBM System 23 expansion port comparison with ISA-8.png|frame|center|alt=IBM Datamaster and PC I/O bus comparison|IBM Datamaster and PC I/O bus comparison]]&lt;br /&gt;
&lt;br /&gt;
=== Power Supply Unit ===&lt;br /&gt;
[[File:IBM 5322 Power Supply.jpg|thumb|right|alt=IBM 5322 Power Supply|IBM 5322 Power Supply]]&lt;br /&gt;
The power supply of the computer is a heavy block which consists in a linear supply that outputs +5V, +12V, +24V, -5V and -12V&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 30&amp;lt;/ref&amp;gt;. Its connector is a 12-pin molex structured in three columns and four rows. Other than the voltages, it also provides with a &amp;quot;power good&amp;quot; signal as posterior IBM computers would, such as the IBM PC. The first IBM PC prototype used the same connector and possibly the same pinout. Adapting an ATX supply to feed the main board is possible and relatively easy to do (actually, it is recommendable when testing the system in a bench). When the connector transitioned to the PC it was linealized but maintained all contacts present in the Datamaster power supply connector, including the key pin (N.C.). The change might have been motivated to reduce friction when attaching/deattaching the cord.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Logical Description ==&lt;br /&gt;
&lt;br /&gt;
=== Simplified Memory Map ===&lt;br /&gt;
&lt;br /&gt;
[[File:IBM System-23 Simplified memory map.png|frameless|right|alt=IBM System/23 Simplified memory map|IBM System/23 Simplified memory map]]&lt;br /&gt;
The IBM System/23 divides its 64KB of addressable space in four segments of 16KB each. All even segments are fixed into the memory map but all the odds are paged and can support up to 16 pages each. The first half portion of the map corresponds to ROM while the last half of it is mapped to RAM&amp;lt;ref&amp;gt;SY34-0171-0 IBM 5322 Computer Service Manual, page 78&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Pagination is achieved thanks to four registers mapped 20h-23h at the I/O space. From those, one determines the ROS page being read, another is used by the DMA mechanism and the other two are used by the CPU access to RAM (for reading and writing, respectively). The widths of each register is four bits, therefore allowing the maximum of sixteen pages. From those, the first eight are expected to be in the board while the remaining are expected to be provided by each expansion card added.&lt;br /&gt;
&lt;br /&gt;
Video memory seems to be placed at address 8000h (to be confirmed).&lt;br /&gt;
&lt;br /&gt;
=== I/O Ports ===&lt;br /&gt;
The Datamaster has a rich set of Intel peripherals which consist of a 8251 USART, 8253 PIT, three 8255 PPI, 8257 DMA, 8259 PIC and 8275 CRTC. All of them, including other devices are accessed the following ports&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
&lt;br /&gt;
! Ports !! Device&lt;br /&gt;
|-&lt;br /&gt;
| 00h-0Fh || DMA&lt;br /&gt;
|-&lt;br /&gt;
| 20h-23h || Page registers&lt;br /&gt;
|-&lt;br /&gt;
| 24h-27h || PIT&lt;br /&gt;
|-&lt;br /&gt;
| 28h-2Bh || PIC&lt;br /&gt;
|-&lt;br /&gt;
| 2Ch-2Fh || 8255#3&lt;br /&gt;
|-&lt;br /&gt;
| 40h-43h || Service port&lt;br /&gt;
|-&lt;br /&gt;
| 44h-47h || CRTC&lt;br /&gt;
|-&lt;br /&gt;
| 48h-4Bh || USART&lt;br /&gt;
|-&lt;br /&gt;
| 4Ch || Data bus test register&lt;br /&gt;
|-&lt;br /&gt;
| 4Dh-4Fh || Keyboard port&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Timers ===&lt;br /&gt;
Having a 8253 PIT the computer has access to three independent programmable timers.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Timer !! Function&lt;br /&gt;
|-&lt;br /&gt;
| Timer 0 || Baud rate generator for 8251 USART&lt;br /&gt;
|-&lt;br /&gt;
| Timer 1 || Beeper&lt;br /&gt;
|-&lt;br /&gt;
| Timer 2 || 8085 interrupt RST7.5&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
The System/23 Datamaster implements a set of self-test routines identified as &amp;quot;PID-1200&amp;quot;. With them it tests the CPU, the memory and the different peripherals of the computer. Usually the results of the tests are written to the screen at start-up but if an error occurs before the initialization of the screen a probe is needed. The tests are identified by an hexadecimal value and can be presented unstyled, underlined or inverted. In the case of being underlined it means that the feature tested wasn&#039;t found by the system, whereas if it is inverted it has been detected but was tested and found faulty. If the text is left unstyled, it means the test passed. The test routines and their tested areas are the following&amp;lt;ref&amp;gt;6841631 System/23 Diagnostic User Guide, page 87&amp;lt;/ref&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Test !! Description !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 00/FF (uninitialized) || Data bus test (undocumented) || writes and reads to port 0x4C (8255 managing keyboard, port A)&lt;br /&gt;
|-&lt;br /&gt;
| 01 || CPU || 8085 self-test&lt;br /&gt;
|-&lt;br /&gt;
| 02 || First unpaged ROS ROM || This is the ROM at 0000h&lt;br /&gt;
|-&lt;br /&gt;
| 03 || Reserved || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 04 || RAM || Test for the first 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 05-07 || CRTC || Initialization and test; any error in this step or earlier requires a probe&lt;br /&gt;
|-&lt;br /&gt;
| 08 || Page registers || For CPU access, ROM only&lt;br /&gt;
|-&lt;br /&gt;
| 09 || Unpaged ROS ROM || The second part of the unpaged segment&lt;br /&gt;
|-&lt;br /&gt;
| 10-19 || Paged ROS ROMs in the motherboard || &lt;br /&gt;
|-&lt;br /&gt;
| 1A-29 || ROS Extensions || Test for ROMs in expansion slots&lt;br /&gt;
|-&lt;br /&gt;
| 2A-30 || RAM || Test for the last 64KB&lt;br /&gt;
|-&lt;br /&gt;
| 31 || Paging Register || For CPU access RAM only&lt;br /&gt;
|-&lt;br /&gt;
| 32 || Paging register || For DMA access&lt;br /&gt;
|-&lt;br /&gt;
| 33 || PIC || Interrupt controller initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 34 || PIT || Interval timer initialization and test&lt;br /&gt;
|-&lt;br /&gt;
| 35 || Keyboard || Tests if communication with the keyboard controller is successful&lt;br /&gt;
|-&lt;br /&gt;
| 36 || Printer || Checks if there is a printer attached to the computer&lt;br /&gt;
|-&lt;br /&gt;
| 37 || Printer diagnose || Sends a diagnose command to the printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 38 || Floppy disk drive controller || Checks if there is a FDC card in the expansion slots and if it is functional&lt;br /&gt;
|-&lt;br /&gt;
| 39 || +24V || Tests internal line of +24V supplied to the drives&lt;br /&gt;
|-&lt;br /&gt;
| 3A || Secondary printer || Checks if there is a printer control card in the expansion slot and checks if there is a printer attached to it&lt;br /&gt;
|-&lt;br /&gt;
| 3B || Secondary printer diagnose || If the previous test is successful, Sends a diagnose command to the secondary printer and waits the response&lt;br /&gt;
|-&lt;br /&gt;
| 3C || Internal wrap of serial interface adapter || Unknown&lt;br /&gt;
|-&lt;br /&gt;
| 3D || Disk unit || Checks if there is a 5247 external disk unit connected&lt;br /&gt;
|-&lt;br /&gt;
| 3E || Disk unit ready || In the previous test is successful, wait until the drive is ready&lt;br /&gt;
|-&lt;br /&gt;
| FD || System diskette installation || Unknown&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that in case a ROM is unselected or unpowered it will mark its test as &amp;quot;missing&amp;quot;. ROMs 0E and 0F aren&#039;t present on the board and therefore its tests will always result with a &amp;quot;missing&amp;quot; status.&amp;lt;ref name=&amp;quot;:0&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gallery ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;y_SS5pG2JTE&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;ySpm9gXVqEY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;UrLsx8ZtCpY&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&amp;lt;youtube width=&amp;quot;300&amp;quot;&amp;gt;2pDAU76_jug&amp;lt;/youtube&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Units in collection ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:center; margin:auto;&amp;quot;&lt;br /&gt;
! Inventory ID !! Model !! Submodel !! Comments&lt;br /&gt;
|-&lt;br /&gt;
| 22 || 5322 || 124 || Fitted with 64KB RAM + 2 x 8&amp;quot; floppy drives&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
[[IBM System/23 Datamaster Resources]]&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Computers of the United States of America]][[Category:Computers of IBM]][[Category:8085 Devices]][[Category:8275 Devices]][[Category:8253 Devices]]&lt;br /&gt;
&lt;br /&gt;
{{#seo:|robots=index, follow|keywords=IBM, System/23, 5322, 5324, Datamaster}}&lt;/div&gt;</summary>
		<author><name>Retroand</name></author>
	</entry>
</feed>