HP-85

Ein laufender HP-85 mit einem BASIC-Listing auf dem Bildschirm
HP-85B

Der HP-85 war ein Teil der Hewlett-Packard Serie 80 kleiner wissenschaftlicher Schreibtisch-Computer, die 1980 eingeführt wurde. Das erste Modell war der HP-85, der sich an Ingenieure richtete und auch zur Anlagensteuerung verwendet wurde. Der Computer hatte die Fähigkeiten der HP 9800 Serie Schreibtisch-Computer mit einem integrierten Monitor. Bei kleineren Abmessungen war ein Thermodrucker und ein digitales Kassettenlaufwerk integriert, und das für den halben Preis der HP 9800 Serie.

Eigenschaften

HP-86B mit 9121 Dual-Disketten-Laufwerk

Das erste Modell der Serie 80 war der HP-85, er wurde im Januar 1980 eingeführt. Im amerikanischen Byte-Magazin wurde enthusiastisch berichtet „wir waren beeindruckt von der Leistungsfähigkeit … allein schon die Grafik macht ihn attraktiv, trotzdem ist er nicht teuer, verglichen mit anderen kleinen Systemen auf dem Markt … wir gehen davon aus, dass viele Personal-Computer-Enthusiasten und Hacker diese Maschine gerne haben möchten“. Unter einem Personal-Computer verstand man damals etwas anderes als heute.

In einem Gehäuse in der Bauform einer Schreibmaschine enthielt der etwa 4500 DM teure HP-85 eine CPU, eine Tastatur, ein ROM-basierendes Betriebssystem (wie die Serie 9800), 16 kB dynamisches RAM, einen 5 Zoll monochrom-Bildschirm (16 Zeilen mit je 32 Zeichen oder 256×192 Pixel), ein Kassetten-Laufwerk für DC-100 Kassetten (210 kB Kapazität, 650 B/s Transfer) und einen Thermodrucker. Sowohl der Bildschirm als auch der Drucker waren in der Lage, Text und Grafik darzustellen; der Drucker konnte eine Kopie des Bildschirms anfertigen. Das Gehäuse hatte auf der Rückseite Platz für vier Einschuberweiterungen. Solche Erweiterungen gab es in Form von Speichermodulen, ROM-Erweiterungen, Schnittstellen wie zum Beispiel RS-232 und GPIB.[1] Alle Komponenten wurden von der Hewlett-Packard Personal Computer Division in Corvallis entworfen, inklusive des Prozessors und der Basis-Chipsets.[2]

Spätere Modelle boten verschiedene Variationen wie unterschiedliche interne und externe Bildschirme, eingebaute Schnittstellen oder Rack-Gehäuse (siehe Tabelle unten für Details).

CPU-Architektur

Die Maschine basierte auf einer proprietären HP-CPU mit dem Code-Namen Capricorn (Steinbock), die Taktfrequenz betrug 625 kHz (tatsächlich nur 0,6 MHz) und hatte einen BASIC-Interpreter im ROM (32 kB). Programme konnten auf DC-100 Kassetten oder externen Disketten und Bändern gespeichert werden.

Trotz der vergleichsweise niedrigen Taktfrequenz des Prozessors war die Maschine sehr fortgeschritten im Vergleich zu anderen Computern dieser Zeit,[3] insbesondere in Bezug auf Software-Eigenschaften, die für technische und wissenschaftliche Anwendungen wichtig sind. Das Standard-Zahlenformat war ein Gleitkomma-Format mit einer 12 Ziffern Mantisse und einem Exponenten von ±499. Durch die konsequente Unterstützung von bis zu 64 Bit langen BCD Zahlen (die in einem Taktzyklus verarbeitet werden), erreichte die Gleitkommabibliothek für damalige Zeiten eine große Verarbeitungsgeschwindigkeit bei hoher Genauigkeit. Die Capricorn-CPU enthielt insgesamt 64 8-Bit Register. Die ersten 32 Register waren in 2-Byte-Gruppen unterteilt, die nächsten 32 Register in 8-Byte-Gruppen. Alle CPU-Anweisungen, die eines der Register adressierten, arbeiteten vom angegebenen Register bis zur nächsten 2-Byte- oder 8-Byte-Grenze. Dafür wurde jeweils nur ein Taktzyklus benötigt, egal ob während dieses Taktzyklus ein oder acht Byte verarbeitet wurden.

Die jahrelange Erfahrung im Design von wissenschaftlichen Taschenrechnern floss hier in das CPU-Design ein. Auch das interne Verarbeitungsformat des BASIC-Interpreters war stark durch die HP-Taschenrechnerarchitektur inspiriert. Alle eingegebenen Anweisungen wurden nach dem Drücken der Return-Taste übersetzt und in eine Token-Form überführt. Die interne Speicherung erfolgte vollständig im UPN-Format. Das hatte den sehr großen Vorteil, dass während der Abarbeitung der Programme keinerlei Prüfung mehr stattfinden musste. Der BASIC-Interpreter konnte die vorab umgewandelten Tokens direkt als Indizes in Sprungtabellen verwenden. Da mathematische Ausdrücke vorab in UPN transformiert wurden, mussten während der Abarbeitung auch keine Prioritäten mehr berücksichtigt werden.

Bedingt durch die 8-Bit-Architektur konnte der Prozessor nur insgesamt 32 kB RAM ansprechen. Für die Modelle HP-86/87 erweiterte HP das Betriebssystem dahingehend, dass die Speicheradressierung für BASIC-Programme indirekt über einen 32-Bit DMA-Zeiger erfolgte. Damit war es theoretisch möglich, diese Computer auf über ein MB Arbeitsspeicher aufzurüsten. Tatsächlich konnten jedoch "nur" maximal 640 kB eingebaut werden, da die Spannungsversorgung des Computers nicht mehr Arbeitsspeicher aufrechterhalten konnte. Bei einem damaligen Preis von rund 2.500 DM für ein 128-kB-Modul war die Aufrüstung entsprechend teuer.

BASIC

Das in der HP-Serie-80 vorhandene BASIC richtete sich in erster Linie an Wissenschaftler und Ingenieure, entsprechend war der Sprachumfang. Der BASIC-Interpreter unterstützte basierend auf der technischen Ausrichtung einen umfangreichen Satz von wissenschaftlichen Funktionen (trigonometrische Funktionen, Logarithmen usw.) mit der entsprechend vollen Genauigkeit. Die Sprache unterstützte zudem zweidimensionale Felder und eine ROM-Erweiterung bot zusätzliche mathematische Funktionen wie Matrizen-Multiplikationen, -Invertierungen u.v.m.

Der HP-BASIC-Interpreter unterschied sich von anderen BASIC-Interpretern seiner Zeit in einigen wesentlichen Bestandteilen. So wurden Programme nicht als Text gespeichert und während der Laufzeit abgearbeitet, sondern in einer UPN-Bytefolge gespeichert und abgearbeitet. Die Logikprüfung einer Programmzeile musste dadurch nur einmalig (nach dem Drücken der Eingabetaste für jede Zeile) durchgeführt werden. Zudem war der Sprachumfang dynamisch erweiterbar. Durch Hinzuladen von Binärprogrammen oder Einstecken von ROMs wurden dem BASIC-Sprachschatz neue Befehle hinzugefügt, die in der gleichen Form genutzt werden konnten, wie die in der Grundausstattung vorhandenen Anweisungen. Später verfügbare Erweiterungen – wie z. B. das SYSEXT-ROM – boten zudem die Möglichkeit, dynamisch festzustellen, welche Erweiterungen ein Programm tatsächlich benötigt und diese entsprechend während der Laufzeit zu laden.

Das gesamte BASIC-System war Token-getrieben. Im Detail verarbeitete das System eine Eingabezeile nach dem Drücken der Return-Taste wie folgt:

  • Durchsuchen der Schlüsselworttabellen und Abgleich der eingegebenen Anweisungen mit den in den Tabellen vorhandenen Anweisungen
  • Wenn eine Anweisung gefunden wurde, dann wurden die Attribute dieser Anweisung ausgewertet. Die Attribute gaben an, um welchen Anweisungstyp es sich handelt und welche Parameter die Anweisung benötigt.
  • Die Parameter einer Anweisung wurden in UPN-Form umgewandelt und gespeichert
  • Eine Index-Nummer der Anweisung (die Token-Nummer) wurde gespeichert
  • komplizierte Anweisungen oder Anweisungen mit optionalen Parametern wurden nicht direkt vom eingebauten Interpreter geparst, sondern speziellen Parserroutinen übergeben, die der Programmierer für jede solche Anweisung geschrieben hatte
  • Für Variablen oder Sprungmarken wurden zusätzlich zu den Tokennummern und Variablen noch Platzhalter zum späteren Einfügen von Zieladressen gespeichert
  • In Abhängigkeit davon, ob eine Zeilennummer am Anfang stand, wurde die Zeile im Programmspeicher abgelegt oder direkt abgearbeitet

Ein Programm oder eine Zeileneingabe wurde nach der oben beschriebenen Tokenisierung vom System wie folgt abgearbeitet:

  • Zahlen und Adressen wurden auf den Stack gelegt (der annähernd beliebig groß sein konnte)
  • Anweisungstokens wurden als Index in Sprungtabellen verwendet. Damit konnte eine BASIC-Anweisung während der Laufzeit zur Abarbeitung direkt angesprungen werden
  • Variablen-Tokens wurden ausgewertet und das Ergebnis wurde auf den Stack gelegt
  • Funktionen (arithmetisch, logisch u. a.) holten sich die benötigten Werte vom Stack, führten die Berechnung durch und legten das Ergebnis wieder auf den Stack
  • Statements (also BASIC-Anweisungen, die kein Ergebnis liefern) holten sich die benötigten Parameter vom Stack und arbeiteten sie ab
  • Bei Adress- und Variablen-Tokens wurde geprüft, ob der zusätzlich gespeicherte Index-Wert bereits vorhanden ist. Wenn dieser Wert vorhanden war, wurde direkt zu der Speicherstelle gesprungen oder der Variableninhalt direkt von der Speicherstelle geladen. War der Index-Wert nicht vorhanden, so wurde die Speicherstelle oder Variablen-Adresse gesucht und zur weiteren (nächstmaligen) Verwendung gespeichert.

Diese Gesamtstruktur führte zu einem sehr kompakten und extrem schnell abarbeitbarem Byte-Code. Bei den BASIC-Programmen handelte es sich also eigentlich um P-Code. Der Interpreter musste während der Abarbeitung keinerlei Syntax- oder Hierarchie-Prüfungen mehr durchführen.

Neben einer Vielzahl an mathematischen und anderen Anweisungen verfügte das BASIC auch über einen sehr umfangreichen Satz an Grafik-Anweisungen. So war es mit dem eingebauten BASIC möglich, den Bildschirm im Vollgrafikmodus anzusprechen und direkt Linien oder andere Strukturen zu zeichnen, da es dafür einzelne BASIC-Anweisungen gab (wie z. B. SCALE, MOVE, FRAME, DRAW, PLOT, LABEL u.v.m).

Für alle strategischen Ein-/Ausgabekomponenten enthielt das BASIC sog. Hooks. Dabei handelte es sich um Einstiegspunkte, an denen Erweiterungs-ROMs (oder Binärprogramme) eigene Routinen einhängen konnten. Bestehende BASIC-Anweisungen konnten somit um weitere Funktionalitäten erweitert werden. Ein gutes Beispiel dafür war das Plotter-ROM. Wenn dieses ROM eingesteckt war, dann wurden die eingebauten BASIC-Anweisungen intern und automatisch um eine HPGL-Unterstützung erweitert. Zusätzlich zum Bildschirm konnte dann ein angeschlossener Stiftplotter als Ausgabegerät verwendet werden, ohne dass dafür die Grafik-Anweisungen geändert werden mussten.

Die Erstellung eigener Spracherweiterungen in Form von ROMs oder Binärprogrammen wurde mit dem Assembler-ROM[4] ermöglicht. Das ROM bot einen eigenen Assembler-Editor sowie einen Assembler-Compiler, der das Capricorn-Assembler in Maschinensprache übersetzte. Die Funktionalität des Assembler-ROMs integrierte sich in der gleichen Form in das Gesamtsystem wie alle anderen ROMs, indem einfach der BASIC-Sprachumfang um entsprechende Assembler-Anweisungen erweitert wurde.

Ausbaumöglichkeiten

Für die größeren Rechner HP-86 und HP-87 bot HP zusätzlich eine CP/M-Einsteck-Karte mit einem zusätzlichen Zilog Z-80-Prozessor an.

Insbesondere ab Mitte der 80er Jahre wurden zunehmend Festplatten, die an den HPIB-Bus angeschlossen wurden, zur Programm- und Datenspeicherung genutzt. Da die größten zu dieser Zeit erhältlichen Festplatten-Laufwerke 500 MB hatten, war es rein theoretisch möglich, 37,5 GB mit einem HP-86/87 anzusprechen (ein interner HPIB-Bus, vier HPIB-Einsteckkarten, 15 Festplatten pro Bus). Bei einem Stückpreis von 50.000 DM für ein 500 MB Laufwerk von HP im Jahre 1986 hätte eine solche Kapazität jedoch über 3,7 Millionen DM gekostet. Die gebräuchlichen Festplattengrößen zu dieser Zeit waren 20 oder maximal 80 MB, die für Preise zwischen 2.500 und 8.000 DM erhältlich waren. Anbetracht des sehr geringen Speicherbedarfs der BASIC-Programme (Programme wurden in Token-Form und nicht im Klartext gespeichert), konnten sehr große und sehr viele Programme gespeichert werden. Auch bei den zu speichernden Daten wurden andere Maßstäbe als heutzutage angelegt. In erster Linie wurden Zahlen (im weitesten Sinne) und weniger Texte gespeichert. Da die auf diesem Wege häufig verarbeiteten Messreihen in der Regel nur hunderte oder tausende (sehr selten zehntausende) von Werten enthielten, wurde solche Festplattenkapazitäten als nahezu unerschöpflich betrachtet.

Über den optionalen oder fest eingebauten HPIB-Bus konnte eine Vielzahl von Peripheriegeräten direkt angesprochen werden. Da der HPIB-Bus in den 80er Jahren ein Quasi-Standard im technischen Bereich war, gab es unzählige direkt an den Rechner anschließbare Mess- und Steuergeräte sowie Drucker und Plotter von verschiedenen Herstellern. Selbst Großsysteme wie z. B. Klimaschränke wurden von HP-86-Systemen via GPIB gesteuert.

Historischer Zusammenhang

In den späten 1970er Jahren wurden vergleichsweise preiswerte Heimcomputer wie zum Beispiel der Apple II oder der TRS-80 entwickelt. Steve Wozniak entwickelte den Apple Computer mit der Idee eines Computers, der sofort nach dem Einschalten ein BASIC zur Verfügung stellt. Für dieses Konzept bot er HP die Rechte an, bekam jedoch eine Absage. In einem Interview merkte er an, dass die Taschenrechner-Division kurz danach anfing ein 8-Bit-Computer-Projekt aufzulegen, dem der Codename Capricorn gegeben wurde. Es wurde ihm nicht gestattet, an diesem Projekt mitzuarbeiten.[5] Schlussendlich entwickelte sich kurz danach der Markt für Desktop-Computer basierend auf der IBM-PC-Architektur mit einem eingebauten Floppy-Laufwerk, von dem ein Betriebssystem geladen wurde. Auf diesen Computern kam ein Intel 8088 Prozessor zum Einsatz. Dass der IBM-PC und dazu kompatible Rechner sich durchgesetzt haben, liegt an der von IBM von Anfang an verfolgten offenen Architektur, die zu zahlreichen Nachbauten führte.

Emulationen

HP-86 Emulation auf einem Planet Gemini-PDA

Die gut dokumentierte Hardware und die verfügbaren Listings des Betriebssystems inkl. umfangreicher weiterer Dokumentationen ermöglichten es, verschiedene Emulationen für die Serie-80-Computer zu erstellen. Es existieren – größtenteils freie – Emulationen für Windows, Linux und Android. Insbesondere der leicht verständliche BASIC-Interpreter ermöglicht es, eigene Programme auf einer solchen Emulation schnell zu entwickeln und so erste Erfahrungen mit Computerprogrammierungen zu sammeln, ohne sich mit umfangreichen großen Bibliotheken beschäftigen zu müssen.

Hardware

Modelle

Modell Jahr Einführungspreis Preis 2022 (inflationsbereinigt) Bemerkungen
HP-85A19803.250 $10.067 $16 K RAM, 32 K ROM; 5" CRT, 32×16 Text or 256×192 Graphics; Kassettenlaufwerk, Thermodrucker
HP-8319812.250 $6.314 $Wie der HP-85, jedoch ohne Drucker und ohne Kassetten-Laufwerk
HP-86A19821.795 $4.746 $eigenständiger externer SW-Monitor, kein Kassetten-Laufwerk, kein Drucker;
zwei Schnittstellen für 9130 Floppy-Laufwerke und ein eingebauter Centronics-Drucker-Anschluss, 64 K RAM
HP-871982unbekannt9" 80×16 (256×128) SW-Bildschirm, kein Drucker, kein Kassetten-Laufwerk, eingebautes HPIB, 32 K RAM
HP-85B1983[6]2.995 $7.673 $Abweichend zum HP-85A voller Speicherausbau mit 64 K RAM (32 K Programm/Variables, 32 K RAM-Disk);
I/O, EDISK, und Mass Storage ROM eingebaut
HP-86B1983[7]1.595 $4.086 $Abweichend zum HP-86A eingebautes HPIB Disketten-Anschlüssen und Centronics-Port, 128 K RAM, EDISK ROM eingebaut
HP-87XM19832.995 $7.673 $Abweichend zum HP-87 eingebautes HPIB, 128 K RAM
HP-9915A/B1980[8]1.675 $5.188 $Industrie-Rack-Version eines HP-85A/B ohne Bildschirm und Tastatur, I/O ROM und Program Development ROM eingebaut

ROM-Erweiterungen

82936A Einschub mit drei ROM Modulen

Bemerke: Die HP-86/87 Serie verwendete andere ROMs (gelb beschriftet) als die 85/83-Modelle (weiß beschriftet).

83/8586/87FunktionBeschreibungID[9]
00085-1500300087-15003I/OZugriff auf GPIB, Seriell und Parallel (GPIO) Interface192
00085-15001built-inMass StorageZugriff auf HP-300-Amigo-kompatible Disketten-Laufwerke via GPIB. Im 85B und allen 86/87 Modellen bereits standardmäßig vorhanden.208
00085-1500200087-15002Printer / PlotterUnterstützung externer Drucker/Plotter (86/87 benötigen das ROM nur für den Plotter-Zugriff)240
00085-1500500087-15005Advanced ProgrammingExtended Rocky-Mountain-BASIC Anweisungen232,231
n/a00087-15012Electronic DiskNutzte Teile des Speichers für eine RAM-Disk, im 85B, 86B bereits standardmäßig vorhanden.209
00085-1500400087-15004MatrixMathematische Matrix-Operationen inkl. Invertierung (lösen linearer Gleichungssysteme)176
n/a00087-15004Matrix 2Zusätzliche Matrix-Funktionen177
00085-1500700087-15007AssemblerBearbeiten und übersetzen von Assembler-Quellen für die Capricorn-Architektur40
n/a00087-15011MIKSAMIndexed-Datei-Record-Management (ein Sonder-ROM im Kundenauftrag)14
00085-1501300087-15013EMSExtended Mass Storage, Zugriff auf SS-80-kompatible Massenspeicher207
00085-6095200087-60912Service – SystemDiagnostik-Routinen für Service und Wartung224
?00087-60913Service – HPIBDiagnostik-Routinen für Service und Wartung225
98151An/aProgram developmentUnterstützung eines HP-9915 Front-Panels oder um es auf einem 83/85 zu emulieren8
n/aAKSO-SysextSysextErweiterungen des BASIC um strukturierte Programmierung, selbst modifizierenden Code, Low-Level-Programmierung, Hersteller Andre Koppel Software[10]56

Hardware-Erweiterungen

Rückseite eines HP-85B, zu sehen sind die vier Erweiterungs-Ports
82936AROM Einschub für bis zu sechs der obigen ROMs (max. einer pro Einheit)
82903A16 K Speicher-Modul, nur für HP-85A (max. eins pro Computer)
82908A64 K Speicher-Module, für HP-85B oder HP-86/87
82909A128 K Speicher-Module, für HP-85B oder HP-86/87
82900ACP/M System (nur für HP-86/87). Enthält einen Zilog Z80 Mikroprozessor und 64 kilobytes eigenständiges RAM.
82928ASystem monitor für Hardware-Entwicklung. Setzt Breakpoints zum Debuggen.
82929AProgrammierbarer ROM-Einschub für Standard EPROMs

Schnittstellen

82940A GPIO Interface, Abdeckung entfernt

Die Interface-Module der Serie 80 wurden um einen proprietären Bus-Interface-Chip herum aufgebaut, der einen Standard Intel 8049 microcontroller mit dem Haupt-Bus verband. Interface-Funktionen wie Handshaking wurden an die 8049 Firmware ausgelagert.[11]

82937AHP-IB Interface (GPIB, IEEE-488, IEC625)
82938AHP-IL Interface
82939ARS-232 Serial interface
82940AGPIO Interface (Allzweck 4 × 8-bit Parallel)
82941ABCD Interface (Parallel, 11 Binary Coded Decimal Digits + Vorzeichen)
82949ADrucker Interface (Centronics Parallel Interface)
82950AModem (110/300 bit/s, Bell 103/113)
82966AData Link Interface (zur Verbindung mit HP1000/3000 Hosts)
82967ASprach-Synthese-Modul, Vokabular mit 1500-Wörter englischen Wörtern, verwendet wurde ein Texas Instruments TMS5220 Synthesizer Chip[12]

Weblinks

Commons: HP series 80 – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

  1. Morgan, Christopher P: Hewlett-Packard’s New Personal Computer. In: BYTE, März 1980, S. 60. Abgerufen am 18. Oktober 2013. 
  2. A New World of Personal/Professional Computation. In: Todd R. Lynch: Hewlett-Packard Journal. Juli 1980, Band 31, Nr. 7, S. 3.
  3. e.g. Apple II (1977), Tandy TRS-80 (1977), CBM 2001 (1977), Zenith Z89 (1980).
  4. Assembler-ROM-Handbuch.
  5. Byte Interview mit Steve Wozniak
  6. Series 80 Personal Computer Price List. 1. Juli 1983. Abgerufen am 12. Februar 2010.
  7. Series 80 Personal Computer Price List. 1. Juli 1983. Abgerufen am 12. Februar 2010.
  8. HP 9915A Pricing Information, December 1980. Abgerufen am 12. Februar 2010.
  9. “ID” bezeichnet die interne ROM Identifikation, d. h. die Basis-Adresse, die innerhalb eines Systems einmalig sein muss.
  10. SYSEXT-ROM-Handbuch. Abgerufen am 27. April 2016.
  11. Adding I/O Capability to the HP-85. In: John H. Nairn, Tim I. Mikkelsen, David J. Sweetser: Hewlett-Packard Journal. Juli 1980, Band 31, Nr. 7, S. 7.
  12. HP Computer Museum: 82967A. Abgerufen am 12. Februar 2010.

Auf dieser Seite verwendete Medien

HP 82940A GPIO Interface interior.jpg
Autor/Urheber: QEDquid, Lizenz: CC BY-SA 3.0
Hewlett-Packard 82940A GPIO Interface für Tischrechner der Serie 80 (geöffnet). Der HP-eigene integrierte Schaltkreis ganz rechts verbindet den Intel 8049 Mikrocontroller (links daneben) mit dem Bus des Rechners.
HP 85 module slots.jpg
Autor/Urheber: QEDquid, Lizenz: CC BY-SA 3.0
Rückansicht eines HP-85B Tischcomputers. Die vier Steckplätze erlauben die Installation von Speichererweiterungen und Interface-Modulen.
HP85B.jpg
Autor/Urheber: unknown, Lizenz: CC BY-SA 3.0
HP86B with 9121 Disk.jpg
Autor/Urheber: unknown, Lizenz: CC-BY-SA-3.0
HP 92936A ROM Drawer.jpg
Autor/Urheber: QEDquid, Lizenz: CC BY-SA 3.0
Ein HP 82936A ROM-Einschub für Tischcomputer der Serie 80 (HP-85, HP-86 usw). Zwei ROMs sind eingesteckt, ein weiteres wurde aus seinem Steckplatz herausgenommen.
PlanetGeminiRunningHP86Emulation.jpg
Autor/Urheber: Andre Koppel, Lizenz: CC0
Planet Gemini Android Pocket PDA running HP86B Emulation