Nascom Journal

  

4/81 5

Nützliche Unterprogramme für Nascom 1

In vielen Programmen ergibt sich die Notwendigkeit, Werte zu berechnen. Hierbei fällt auf, dass der Monitor des Nascom als Rechner eine absolute Niete ist; ausser Addition und Subtraktion geht nichts mehr. So habe ich einmal eine Reihe von Unterprogrammen erstellt, die frei verschiebbar sind und in Maschinenprogrammen als einfache Rechenhilfe dienen.

Alle Rechenvorgänge laufen im Hexadezimalsystem ab, können aber durch entsprechende Unterprogramme dezimal von der Tastatur eingegeben oder dezimal auf dem Bildschirm dargestellt werden. Ausgangswert und Ergebnis stehen jeweils in HL, unbeteiligte Register werden gerettet, so dass Push und Pop Befehle vor und nach Aufruf der Unterprogramme entfallen.

0C80
Eine Zahl in HL wird mit einer Zahl in B multipliziert. (die Möglichkeit der Multiplikation mit einer mehr als zweistelligen Zahl ist ist durch die beschränkte Kapazität des 8 Bit Systems nicht gegeben)
Bei Überschreiten der Rechenkapazität erfolgt ein relativer Sprung zur Fehleranzeige, der im Fall einer Verschiebung des Programms in der Adresse 0C8E geändert werden müsste.
0C95
Eine Zahl in HL wird durch eine Zahl in BC dividiert. Enthält BC 00 so rechnet das Programm bis in alle Ewigkeit. Man müsste hier eine Erkennung auf BC=0 einbauen ( z.B. LD A,B OR C JRZ ENDE) oder einfach Divisionen durch 0 vermeiden,
0CA5
Es wird die Quadratwurzel einer Zahl in HL errechnet.​Diese Zahl darf nicht grösser als 1812dez sein, da sonst der Bereich der positiven Zahlen überschritten wäre. (32676 ist max.​Radikant) Da Kommazahlen im Ergebnis nicht eingeplant sind, erübrigt es sich, die Schleifenzahl 10 zu erhöhen, um genauere Näherungswerte zu erhalten. Das Ergebnis des grössten Radikanten ist nach zehn Durchgängen auf 1 Zehntel genau. Ein Nachteil ist, dass die Wurzel aus 9 bis 15 jeweils 3 ergibt und erst ab 16 auf 4 steigt usw. Bei mir wurde das Programm zum Ansteuern von Schrittmotoren verwendet. Dabei kann ich mit Bruchteilen von Schritten nichts anfangen. Wer aber Wert auf genauere Ergebnisse legt, kann ja anstatt z.B. 5 dez 500 dez eingeben und erhält dann ein Ergebnis auf ein Hundertstel genau, wobei er sich nur ein Komma hinzudenken müsste. Dieser letzte Mangel kann sogar noch leicht im Anzeigeprogramm behoben werden, wenn man nach der Hunderter ein Komma einprogrammiert. Allerdings wird dann der Zahlenbereich nach oben auf 99,99 beschränkt. Das Wurzelprogramm enthält einen Aufruf des Divisionsprogramms bei 0CB6. Dieser muss bei Verschiebung im Speicher geändert werden.
0CC1
Fehlermeldung bei Bereichsüberschreitung und Sprung zu Monitor
0CD5
Eine Dezimalzahl in HL wird in Hex umgewandelt. Das Ergebnis steht in HL. Register DE und B werden verändert und müssen vor Aufruf gerettet werden. Bei Verschieben beachten: Aufruf des Unterprogramms Multiplizieren bei 0CE2, 0CEF, 0D02 .
0D10
Hilfsprogramm zu 0D25
0D25
Eine Hexzahl in HL wird fünfstellig dezimal auf Bildschirm ausgegeben. AF, BC und DE müssen vorher gerettet werden. Das Programm enthält Aufrufe von Multiplizieren und Dividieren 0D11, 0D1D, und Aufrufe des Hilfsprogramms in 0D28,0D2E, 0D34 und 0D3A; bei Verschieben beachten.
Seite 11 von 31