Vom Emergency-Griff der noch nicht vorhanden war
Es muss in der zweiten Hälfte vom Jahr 1963 passiert sein. Die IBM 1401 stand noch nicht lange im Maschinenrum und ich war so stolz, dass ich mit SPS ein kleines Programm schreiben durfte. Ich kann mich nicht mehr erinnern ob es eine Lohnabrechnung wie 90% aller Aufträge war; oder vielleicht handelte es sich um die Zahnpasta-Statistik, die von einer chemischen Firma beim Service-Büro in Auftrag gegeben wurde. Auf jeden Fall musste mindestens einmal eine Division gemacht werden.
Damals waren die Befehle „Multiplizieren“ und „Dividieren“ noch nicht als fixe Operation im Rechner eingebaut. Eigentlich war nur die Funktion“Addieren“ vorhanden, denn eine Subtraktion ist einfach eine Addition mit negativem Vorzeichen. Multiplikation ging dennoch und zwar wie folgt: Bei 4 mal 5 wird einfach in das Resultatfeld 5 plus 5 plus 5 plus 5 addieret und wir erhalten 20. Bei einerDivision z.B. 12 geteilt durch 3 wird solange die 3 von 12 abgezogen, bis dasResultat Null oder kleiner als Null ist; also heisst die Rechnung 12 minus 3 = 9 minus 3 = 6 minus 3 = 3 minus 3 = Null; das Resultat ist somit 4.
Diese Generation von 1401 hatte auch keine Absicherung auf Zero-Divide-Exception!
Wenn nun der Programmierer das Feld des Divisors vorher nicht auf Null prüfte um dann eine solche Division zu verhindern, gab es eine Katastrophe. Wenn wir beim obigen Beispiel statt 3 eine 0 setzen, beginnt der Computer mit der Rechnung 12 minus 0 = 12 minus 0 = 12 minus 0 = 12 . . . Das bedeutet eine Endlosschlaufe.
Das Konzept der 1401 bestand damals darin, dass die CPU so lange arbeitete, bis ein Interrupt-Befehl durch das Programm verlangt wurde, d.h. eine Input- oder Output-Operation für ein Peripheriegerät gemacht werden musste. Auch die Tasten „START“ und „STOP“ und „RESET“ konnten einen Interrupt hervorrufen, aber erst wenn die CPU vom Programm freigegeben worden ist.
Man muss bedenken, dass die IBM 1401 noch nicht Multitasking fähig war!
Dummerweise passierte mir eine solche Division durch Null, und jetzt beschäftigte sich das System sozusagen mit sich selbst. Es war einfach nicht mehr zu stoppen. Also einfach Strom wegnehmen. Aber wo macht man das? Als Junior-Programmierer hatte ich keine Ahnung, wo der Hauptschalter sein konnte. Da musste zuerst der Chef-Operator heran. Es war auch ein recht kräftiger Eingriff nötig. Der sogenannte „Schütz“ war erst für den Zugriff frei, als der Operator die ganze hintere blaue Metallwand (ca. 76 cm x 152 cm) aushängte. Der Schalter selber war ein ca. 30 cm grosser Griff, der mit viel Kraft herunter gedrückt werden musste. Er sah etwa so aus, wie ein Stellwerkhebel in den alten Bahnhöfen, die der Bahnhofvorstand jeweils für das Öffnen eines Signals betätigte.
Nach etwa einer halben Stunde, während der die CPU ständig minus Null addierte, konnte das System endlich gestoppt werden.
Übrigens waren die Peripheriegeräte bei der 1401 mit der CPU fest verkabelt und zwar unter dem Doppelboden!
Wahrscheinlich war ich nicht die einzige Person, die eine Division durch Null vom Computer verlangt hatte. Denn die Schutzvorrichtung mit dem „Emergency“-Griff gab es schon kurze Zeit danach.
Für mich war es eine Lehre fürs ganze Leben
„Prüfe jedes Eingabefeld, bevor es weiter verarbeitet wird!“