HP-85

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
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.

HP-86B mit 9121 Dual-Diskettenlaufwerk

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 HP-IB (GPIB, IEEE-488, IEC625).[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

[Bearbeiten | Quelltext bearbeiten]

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.

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

[Bearbeiten | Quelltext bearbeiten]

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

Insbesondere ab Mitte der 80er Jahre wurden zunehmend Festplatten, die an den HP-IB-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 (einmal HP-IB, vier HP-IB-Steckkarten, 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 HP-IB 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 HPIB gesteuert.

Historischer Zusammenhang

[Bearbeiten | Quelltext bearbeiten]

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 Diskettenlaufwerk, 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.

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.

Modell Jahr Einführungs-
preis
Preis 2024
(inflationsbereinigt)
Bemerkungen
HP-85A 1980 3.250 $ 10.691 $ 16 K RAM, 32 K ROM; 5" CRT, 32×16 Text or 256×192 Graphics; Kassettenlaufwerk, Thermodrucker
HP-83 1981 2.250 $ 6.706 $ Wie der HP-85, jedoch ohne Drucker und ohne Kassetten-Laufwerk
HP-86A 1982 1.795 $ 5.041 $ 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-87 1982 unbekannt 9" 80×16 (256×128) SW-Bildschirm, kein Drucker, kein Kassetten-Laufwerk, eingebautes HP-IB, 32 K RAM
HP-85B 1983 [6]2.995 $ 8.149 $ 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-86B 1983 [7]1.595 $ 4.340 $ Abweichend zum HP-86A eingebautes HP-IB Disketten-Anschlüssen und Centronics-Port, 128 K RAM, EDISK ROM eingebaut
HP-87XM 1983 2.995 $ 8.149 $ Abweichend zum HP-87 eingebautes HP-IB, 128 K RAM
HP-9915A/B 1980 [8]1.675 $ 5.510 $ Industrie-Rack-Version eines HP-85A/B ohne Bildschirm und Tastatur, I/O ROM und Program Development ROM eingebaut

ROM-Erweiterungen

[Bearbeiten | Quelltext bearbeiten]
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/85 86/87 Funktion Beschreibung ID[9]
00085-15003 00087-15003 I/O Zugriff auf HP-IB, Seriell und Parallel (GPIO) Interface 192
00085-15001 built-in Mass Storage Zugriff auf HP-300-Amigo-kompatible Diskettenlaufwerke via HP-IB. Im 85B und allen 86/87 Modellen bereits standardmäßig vorhanden. 208
00085-15002 00087-15002 Printer / Plotter Unterstützung externer Drucker/Plotter (86/87 benötigen das ROM nur für den Plotter-Zugriff) 240
00085-15005 00087-15005 Advanced Programming Extended Rocky-Mountain-BASIC Anweisungen 232,231
n/a 00087-15012 Electronic Disk Nutzte Teile des Speichers für eine RAM-Disk, im 85B, 86B bereits standardmäßig vorhanden. 209
00085-15004 00087-15004 Matrix Mathematische Matrix-Operationen inkl. Invertierung (lösen linearer Gleichungssysteme) 176
n/a 00087-15004 Matrix 2 Zusätzliche Matrix-Funktionen 177
00085-15007 00087-15007 Assembler Bearbeiten und übersetzen von Assembler-Quellen für die Capricorn-Architektur 40
n/a 00087-15011 MIKSAM Indexed-Datei-Record-Management (ein Sonder-ROM im Kundenauftrag) 14
00085-15013 00087-15013 EMS Extended Mass Storage, Zugriff auf SS-80-kompatible Massenspeicher 207
00085-60952 00087-60912 Service – System Diagnostik-Routinen für Service und Wartung 224
? 00087-60913 Service – HPIB Diagnostik-Routinen für Service und Wartung 225
98151A n/a Program development Unterstützung eines HP-9915 Front-Panels oder um es auf einem 83/85 zu emulieren 8
n/a AKSO-Sysext Sysext Erweiterungen des BASIC um strukturierte Programmierung, selbst modifizierenden Code, Low-Level-Programmierung, Hersteller Andre Koppel Software[10] 56

Hardware-Erweiterungen

[Bearbeiten | Quelltext bearbeiten]
Rückseite eines HP-85B, zu sehen sind die vier Erweiterungs-Ports
82936A ROM Einschub für bis zu sechs der obigen ROMs (max. einer pro Einheit)
82903A 16 K Speicher-Modul, nur für HP-85A (max. eins pro Computer)
82908A 64 K Speicher-Module, für HP-85B oder HP-86/87
82909A 128 K Speicher-Module, für HP-85B oder HP-86/87
82900A CP/M System (nur für HP-86/87). Enthält einen Zilog Z80 Mikroprozessor und 64 kilobytes eigenständiges RAM.
82928A System monitor für Hardware-Entwicklung. Setzt Breakpoints zum Debuggen.
82929A Programmierbarer ROM-Einschub für Standard EPROMs
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]

82937A HP-IB Interface (GPIB, IEEE-488, IEC625)
82938A HP-IL Interface
82939A RS-232 Serial interface
82940A GPIO Interface (Allzweck 4 × 8-bit Parallel)
82941A BCD Interface (Parallel, 11 Binary Coded Decimal Digits + Vorzeichen)
82949A Drucker Interface (Centronics Parallel Interface)
82950A Modem (110/300 bit/s, Bell 103/113)
82966A Data Link Interface (zur Verbindung mit HP1000/3000 Hosts)
82967A Sprach-Synthese-Modul, Vokabular mit 1500 englischen Wörtern, verwendet wurde ein Texas Instruments TMS5220 Synthesizer Chip[12]
Commons: HP series 80 – Sammlung von Bildern, Videos und Audiodateien

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Christopher P. Morgan: 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.