IBM System/23 Datamaster

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
System/23 Datamaster
ManufacturerIBM
TypeAll-in-one (5322), Computer tower (5324)
Release dateJuly 1981 (1981-07)
Introductory priceUS$9,000 (equivalent to $31,128 in 2024)
Discontinued1985 (1985)
Operating systemSystem/34 BASIC
CPUIntel 8085 @ 3.07 MHz
Memory32 KB,64 KB,96 KB,128 KB DRAM
112/128 KB ROM[1]
Removable storage0-2 internal 8-inch floppy disk drives, optional external floppy drives
DisplayGreen phosphor CRT display (80 × 24 text)
GraphicsIntel 8275
SoundInternal beeper
InputModel F keyboard
ConnectivityPrinter port, disk drive port (optional), twinax (optional)
Weight95 lb (43 kg)
PredecessorIBM 5120
SuccessorIBM Personal Computer
RelatedIBM Displaywriter System

The System/23 Datamaster (desktop model 5322 and tower model 5324) was an 8-bit microcomputer developed by IBM. Like the 6850 Displaywriter, it was one of the first IBM microcomputers, preceding the IBM Personal Computer (PC), with which it is incompatible. Launched in July 1981,[2] the System/23 was IBM's most affordable computer until the PC was announced the following month, proving to be much more economical and popular.[3][4]

Description

[edit | edit source]
IBM 5324
The 5324 is a tower model which has the monitor and the keyboard separate from the processing unit

The Datamaster was IBM's only 8-bit microcomputer and one of the few to use the EBCDIC encoding.

Model 5322 is an integrated unit with a CRT screen, keyboard, processor, memory and up to two internal 8-inch floppy drive units.[5] Model 5324, labelled "ergonomic", is tower-based and contains the same components as the 5322 except for screen and keyboard. Internally, both models use the same motherboard.[6]

Hardware

[edit | edit source]

Its microprocessor is an Intel 8085 clocked at 3.07 MHz, with a bank system that enables allocation of 272 KB ROM and 128 KB RAM. The computer has four internal expansion slots.[7]

File:IBM 5322 - PCB keyboard controller from 8122.JPG
Intel 8048 microcontroller relabeled with IBM reference.

Design and development of this machine was made mostly using off-the-shelf integrated circuits of that time. This means they used microprocessor and support ICs which were available on the market, particularly the 7400 series of support chips. This marked a radical change for IBM, which previously had always used their own semiconductor families (like the SLT family). Even so, in order to deter third parties from producing clones, all components were relabelled with internal references determined by the company. This component redesignation is the main issue repairing this kind of machines, and as a consequence a large number of units remain with faults.

This system's read-only memory originally used fourteen 8KB memory modules, for a total of 112KB.[8] Not long after entering production, the computer was patched and two more memories of the same capacity were added to the motherboard, giving the system a total capacity of 128 KB.[9] ROS, IBM's term to refer this kind of memory, Is numerated in order to be identified during the diagnostics. The Datamaster's ROM memory is prone to corruption during its ageing process.

Unlike other microcomputers from the era, the System/23 uses 9-bit RAM instead of the simpler 8-bit one. This is due to the use of the ninth bit to store parity data. This storage is part of an error-detection mechanism that is used to detect errors in the memory during runtime. In case of finding such an error, the system generates an interrupt and is halted.[9] Another distinctive trait is that the motherboard contains no RAM, because it is contained in one of two boards that contain the required integrated circuits. Whilst the maximum RAM capacity the computer can manage is 272 KB, the detection and identification system limits the computer to 128 KB.[1] The available capacities for the memory boards are 32 KB and 64 KB respectively. This implies that the memory capacity for this computer is between 32 KB and 128 KB in increments of 32 KB, being the most common configuration 64 KB. In fact, there are various submodels according of the memory capacity and floppy drive units and type.[8] Finally, it is necessary to explain that the integrated circuits employed in its RAM are unusual in the sense that they are piggybacked, fact that spread rumors that the memory was redundant when in fact they are a variant of the TMS4116, the TMS4132.[1][10]

The video subsystem of this computer is based on the Intel 8275. This component has the responsibility to generate sync signals, among other functions. The section is almost copied from the datasheet of this component.[11] As a curiosity, it has support for light pen, and it has a mechanism to simulate it during diagnostics. The video memory is not dedicated, unlike integrated circuit-based computers such as the TMS9918 or similar. The symbols are defined in a character generator which consists of eight pages (one per region/language supported) of 128 glyphs each. The 128 character limit is due to the width of the internal queues of the 8275, which uses seven bits to define a character.[11] Those pages are selected according to the jumper configuration on the motherboard, but this is done by the software and it can therefore be changed in runtime. The screen field is 80 columns wide by 24 rows high.

The presence of a DMA controller is not frequent in 8-bit computers. This had to be added due to the incapacity of the CRTC of generate video addresses. In fact, this part requires a DMA controller in order to operate. In the Datamaster the DMA controller is the Intel 8257 and also has a dedicated channel to floppy drive transactions.

The Datamaster's Model F keyboard is based around the Intel 8048. It communicates with an Intel 8255 through a parallel bus. The technology of the matrix is capacitive. It has 83 keys. During initialization, the computer expects the keyboard to send a verification code to announce its presence; the diagnostics fail otherwise.

The system includes a dedicated diagnostics port which assists repairs. This was used in conjunction with a probe that showed the corresponding step code; its usage was required when the machine failed to initialize the video subsystem.

Software

[edit | edit source]
File:IBM Datamaster (2283391726).jpg
Diagnostics system of the System/23 Datamaster, displaying a ROM error (ROS 12h)

The Datamaster was conceived to be installed and operated without the need of specialists. For this reason it contained an embedded BASIC dialect. During the advanced stages of the project, IBM decided to fuse the extant BASIC implementation for the System/23 with the one from the System/34. This decision delayed the development for around a year.[12] The Datamaster's BASIC is a closed environment, as it was decided the users wouldn't be able to access directly the hardware resources and as a consequence this dialect lacks low level commands such as PEEK and POKE.[13] IBM did not provide the owners of the machine to program the computer at the low level, leaving interpreted BASIC as the only option.

A distinctive point for this microcomputer is its advanced diagnostics firmware. The checks are done on the CPU, RAM, ROM and all the main integrated circuits that are present in the motherboard. This set of routines are called PID-1200 or POD, according to the diagnostics and service manuals, respectively. These procedures show the results through the screen whenever possible, and through a probe otherwise. This firmware is accurate enough to pinpoint a failing memory and it could also determine if it is present or is missing under certain circumstances.[14]

Influence on later IBM systems

[edit | edit source]

The ease of the design team which was gained through the Datamaster and Displaywriter projects influenced the decision to select an Intel CPU for their next microcomputer design. The delay caused by the decision to fuse both BASIC versions was the main lead to use Microsoft BASIC for the 5150 PC. Another of the reasons was due to the popularity of the latter.[12]

Many hardware components, specifically the 8253 timer and the 8259 interrupt controller, were reused in the later IBM PC.[12] The DMA controller was replaced by the 8237, an improvement over the 8257 used in the System/23. The RAM memory width and parity check mechanism remained the same, though the memory type changed between projects. The same memory modules used in the Datamaster later appeared in the early official RAM expansions.[15] The computer's expansion bus, later known as the ISA bus, was based in its Datamaster counterpart, with only five signals being changed. Contrary to rumors, the Datamaster bus is not mirrored; it is a comprehension error caused by the service manual of the computer, which shows it mirrored.[14] The Datamaster's keyboard, which uses a similar layout as the 5251, was reused in the PC, albeit with a serial interface instead of the original parallel one.[12]

Although not code-compatible, the diagnostics system was ported to the PC and simplified, and was renamed to POST.

Emulators

[edit | edit source]
File:IBM Datamaster MAME prompt.png
IBM System/23 Datamaster in MAME. The system prompt waits for the user to start typing BASIC.

Until the end of February, 2025 this computer did not have an emulator. Since then, it counts with a MAME driver that offers an incomplete emulation, with one of its biggest limitations being the floppy subsystem. Nevertheless is functional enough to be used with BASIC.[16] The work still needs to be approved into the main MAME repository.[17]

Chronology

[edit | edit source]
Timeline of the IBM Personal Computer
<timeline>DateFormat=mm/dd/yyyy

Define $start = 01/01/1975 Define $end = 12/31/2005 Period = from:$start till:$end Define $skip = at:end # Force a blank line Define $dayunknown = 15 # what day to use if it's actually not known ImageSize= width:800 height:auto barincrement:21 TimeAxis = orientation:horizontal PlotArea = right:20 left:20 bottom:75 top:5 Legend = orientation:vertical position:bottom columns:1

Colors =

    id:bg         value:white
    id:line       value:rgb(1,0,0)
    id:lightline  value:rgb(0.8,0.8,0.8)
    id:lightline2 value:rgb(0.9,0.9,0.9)
    id:aio        value:rgb(1,0.8,0.8)      legend:All-in-one
    id:desk       value:rgb(0.8,1,0.8)      legend:Desktop
    id:laptop     value:rgb(0.8,1,1)        legend:Laptop
    id:portable   value:rgb(0.8,0.8,1)      legend:Portable
    id:special    value:rgb(1,0.8,1)        legend:Various
    id:current    value:rgb(0.85,0.85,0.85) legend:Ongoing
    id:start      value:green               legend:Original_IBM_PC_released
    id:spinoff    value:orange              legend:IBM_PC_division_made_autonomous_unit
    id:end        value:black               legend:Lenovo_acquires_IBM_PC_division

BackgroundColors = canvas:bg ScaleMajor = gridcolor:lightline unit:year increment:1 start:01/01/1975 ScaleMinor = gridcolor:lightline2 unit:month increment:3 start:01/01/1975

BarData =

 Barset:ibm

LineData =

 layer:back color:start
 at:08/12/1981 #IBM PC released
 layer:back color:spinoff
 at:09/03/1992 #IBM PC business spun off
 layer:back color:end
 at:05/05/2005 #Lenovo acquisition finalized

PlotData=

 width:15 textcolor:black
 barset:ibm
   shift:(5,-5) anchor:from fontsize:s
   color:portable from:09/01/1975 till:03/01/1982 text:"5100"
   color:portable from:01/01/1978 till:03/01/1982 text:"5110"
   color:aio from:01/02/1980 till:03/01/1982 text:"5120"
   color:special from:07/28/1981 till:05/06/1985 text:"System/23 Datamaster"
   color:desk from:08/12/1981 till:04/02/1987 text:"Personal Computer"
   color:desk from:03/01/1983 till:04/02/1987 text:"5550*"
   color:desk from:03/08/1983 till:06/30/1987 text:"Personal Computer XT"
   color:desk from:10/01/1983 till:07/01/1987 text:"3270 PC"
   color:desk from:10/01/1983 till:04/02/1987 text:"Personal Computer XT/370"
   color:portable from:02/01/1984 till:04/01/1986 text:"Portable Personal Computer"
   color:desk from:03/01/1984 till:03/19/1985 text:"PCjr"
   color:desk from:04/25/1984 till:01/01/1994 text:"Industrial Computer"
   color:desk from:08/14/1984 till:07/31/1987 text:"Personal Computer AT"
   color:desk from:10/01/1984 till:04/02/1987 text:"Personal Computer AT/370"
   color:desk from:10/29/1984 till:09/14/1987 text:"JX*"
   color:laptop from:04/02/1986 till:08/07/1989 text:"PC Convertible"
   color:desk from:09/01/1986 till:10/01/1987 text:"Personal Computer XT 286"
 barset:break
   color:special from:04/01/1987 till:07/01/1995 text:"PS/2"
   color:special from:04/01/1987 till:12/31/2001 text:"PS/55*"
   color:desk from:01/01/1990 till:01/01/1994 text:"PS/1"
   color:laptop from:12/01/1991 till:08/03/1993 text:"PCradio"
   color:special from:01/01/1992 till:01/01/1996 text:"Ambra"
   color:laptop from:03/01/1992 till:03/01/1994 text:"PS/note"
   color:aio from:04/01/1992 till:01/01/1996 text:"EduQuest"
   color:laptop from:10/01/1992 till:05/05/2005 text:"ThinkPad"
   color:desk from:10/01/1992 till:07/01/1995 text:"PS/ValuePoint"
   color:desk from:09/01/1994 till:05/01/2001 text:"Aptiva"
   color:desk from:10/01/1994 till:10/01/2000 text:"PC Series"
   color:laptop from:09/01/1995 till:06/01/1999 text:"Palm Top PC 110*"
   color:special from:04/01/2000 till:01/01/2003 text:"NetVista"
   color:special from:01/01/2003 till:05/05/2005 text:"ThinkCentre"
 barset:break
   $skip
   $skip
   $skip
   $skip
   $skip
   $skip
   $skip
   color:current from:05/05/2005 till:12/31/2005
   $skip
   $skip
   $skip
   $skip
   $skip
   color:current from:05/05/2005 till:12/31/2005

</timeline>

Asterisk (*) denotes a model released in Japan only

References

[edit | edit source]
  1. ^ a b c Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  2. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  8. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  9. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  11. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  12. ^ a b c d Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  14. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  15. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
  17. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).