Computer - Moppel der 4. 10.2018 bis ...
 
 
 

[Seitenanfang][Startseite][Impressum]
(C)2018 Werner Römer
Gedanken ...

beim Basteln benötige ich manchmal einfach einen Zähler, Adressdecoder oder nur einen Datenport.
Hab ich bisher immer auf dem Steckbrett zusammengestrickt, sollte doch einfacher gehen - so per Software ...

Im Fundus liegt ja noch eine weiter CPU-Karte nebst HEX-Display und Tastatur, war ja schon bei der Inbetriebnahme diverser Karten erfolgreich im Einsatz. Ein schönes Gehäuse gab es auch noch,
also alles eingebaut. Die Stromversorgung ist mit einem Steckernetzteil recht einfach zu lösen.

Für den Datenaustausch hat die Karte ja eine einfache V24-Schnittstelle, die +-12V erzeugt ein kleiner Spannungswandler. Für Testzwecke ist der Systembus ist rausgeführt, hier kann eine EC-Bus Karte mit zwei Steckplätzen angefügt werden.

Der 3. Steckplatz(FDC-Routinen) ist mit einem 2. SRAM bestückt, so stehen insgesammt  4kByte SRAM (2000h-2FFFh) mit Batteriepufferung zur Verfügung. Die Ladeschaltung für die LIPO-Zelle ist noch irgendwo auf Hoher See ...

Als Softwaregrundlage dient das Monitorprogramm im 1.Steckplatz, damit ich das ganze mit den Testroutinen beschicken kann, muss der "Intel-Hex Interpreter" angepasst werden, so dass er als "Boot-Loader" dient ...

25.11.2018

Zunächst sollte natürlich die Hardware vervollständigt und getestet werden. Die Ladeschaltung ist endlich eingetroffen, damit werden die Lipo-Zelle im optimalem Betriebszustand gehalten. Besser als die damals einfachen Vorwiderstände zum NC-Akku - schauen wir mal wie das in 20Jahren aussieht ;-). Nur irgendwie verhält sich die CPU-Karte wie ein altes Dampfradio, nach einer längeren Aufwärmphase lief das System ordentlich - Fehlersuche.

Im Bereich der Jumper für die Speicherbestückung gab es schlechte Lötstellen, die Jumper neu Handverdrahtet und schon funktioniert es wieder einwandfreil.

Jetzt kann die Software angepasste werden ...



 
Fortsetzung folgt ...
08.12.2018
Im HEX-Monitor V5.5 gibt es die Funktionen 2 und 3 für die Aus- Eingabe über die Anschlüsse SOD und SID. Eigentlich für das alte Kasetteninterface aber schon mit einfachen V24-Treibern ausgestattet. Die hierzu erforderlichen Betriebsspannungen +-12Volt stellt ein kleiner Schaltregler zur Verfügung. Damit sind die grundsätzlichen Vorraussetzungen für die "Nabelschnur" hergestellt.

Da SOD/SID keinerlei Hardwareunterstützung in Form von Aus-, Eingangsschieberegister oder Baudrategenerator haben, muss das Timing und Protokoll in Software erfolgen.
Hier beginnt nun die Herausforderung, als erstes benötigt man einen Timer für die halbe Bitdauer,
bei 600Bd (für den 1.Test) sind das 833µs. Die halbe Bitdauer ist für das Abtasttheorem beim Empfang der Bits erforderlich, im Hex-Monitor beträgt diese 1ms, also nicht normgerecht für die gewählte Baudrate. Also Taktzyklen für die einzelnen Befehle aufadiert und den Schleifenzähler ermittelt (HTIME) und daraus einen neuen Timer programmiert:
Als Berechnungsgrundlage dient natürlich der Quarz von 6,144Mhz, das ganze halbiert (wg. dem Oszilator) ergibt das eine Zykluszeit von rund 0,325µs. Die # zeigt die Taktzyklen pro Befehl, das ergibt rechnerisch 178 Schleifendurchläufe mit jeweils 14 Taktzyklen. Nach der Messreihe hat sich schließlich der Wert für HTIME 174 ergeben, damit wird die Baudrate von 606Bd erzeugt - genau genug. Für 2400Bd konnte der Wert nicht einfach durch halbieren ermittelt werden, da dann die aufrufenden Befehle einen größeren Anteil an die Verzögerungsroutine bekommen. Ich hoffe das das Ganze schließlich mit 1200Bd im Empfangsmodus sicher funktioniert - schauen wir mal...

Damit das ganze einfach und mit ausreichendem Komfort getestet werden kann, ist der CP/M-Moppel mit dem provisorischem SOD/SID Interface ausgestattet. Mit dem Hex-Lader können die "Programme" einfach geladen und getestet werden - sich selber an der Haaren aus dem Sumpf ziehen funktionier nur bei Münchhausen ...

Die erzeugten Zeiten mit dem Oszilloskop gescheckt und anschließen mit einem einfachem Sendeprogramm ausführich für die drei Baudraten getestet und dem LogikSniffer fein abgestimmt.

Senden ist ja noch einfach, der Empfang deutlich schwieriger da für den Handshake ja auch noch das RTS-Signal generiert werden muss. Hier bietet sich der SOD-Ausgang an, wenn der Moppel Empfangsbereit ist muss RTS auf Low gesetzt werden. Damit bietet diese Software V24 halbduplex mit manueller Umschaltung von Senden auf Empfangen an. Suboptimal aber für den Einsatzzweck "Bootloader" ausreichend.

Nebendran ein paar Bilder vom Timing und "Messaufbau" -->>>>
 
09.12.2018
Die grundsätzlichen Ein- Ausgaberoutinen sind auf Basis FCT2/3 aus dem Monitor V5.5 erstellt und getestet. Der Empfang funktioniert sogar mit 2400Bd - hätte ich nicht gedacht, aber nur wenn der Moppel alles sofort zum Buffer schieben kann. Grund ist der FIFO im PC, der trotz gesetztem RTS noch ein/zwei Bytes sendet.

So kann kein Zeilenbuffer für den Intel-Hex-Lader realisiert werden, sondern nur noch mit einem "großen" Buffer wo der komplette Code reinpasst, sehr unschön, zumal ja das Dateiende erst im HEX-Interpreter ermittelt werden kann. Aber dort kommt das Programm erst garnicht hin da die CPU auf das nächste Startbit wartet und
wartet - bis zum "Sankt-Nimmerleins-Tag".

Da es kein Timer gibt, gibt es auch keine Möglichkeit ein "Wachhund" für die Abfrage des Startbits zu programmieren ...
Quelltext
11.12.2018
... und es klappt doch !
In der Warteschleife ein Timeoutzähler eingebaut. Zunächst eine Taktanalyse durchgeführt ob die zusätlichen Bytes den Abtastzeitpunkt nicht zu weit nach hinten legen. Bei maximal 30µS Ver-zögerung ist das selbst bei 2400Bd (Bitzeit=420µs) noch OK.

Der Timeout wird aber über ein Flag erst nach dem 1. empfangenen Byte aktiv. So wartet nun die Empfangsroutine bis ein Byte empfangen wurde, sobald der Datenstrom aufhört, greift der Timeout nach ca. 1 Sekunde und das aufrufende Programm erhält wieder die Kontrolle zurück. Das ist erstmal ein guter Kompromiss.

Es wartet aber ein noch größeres Problem auf Lösung.
In den vorhandenen PC's kann der FIFO nicht vollständig abgeschaltet werden, es trudeln immer noch ein/zwei Bytes ein obwohl RTS schon lange gesetzt ist. Mit Hilfe von IRQ-Routinen kein Problem, die stehen hier aber nicht zur Verfügung. Entweder ich schaufel die Intel-Hex-Datei in einem Rutsch in einem recht großen Buffer oder die Übertragung muss über den CP/M-Moppel erfolgen, denn der UART 6850 hat kein FIFO.

Die zuerwartenden Testroutinen, dafür soll der ganze "Quatsch" ja sein, kommen wohl mit den 2kByte RAM als Eingangspuffer (ab 2000h) aus. Das fertige Testprogrämmchen kann dann in dem 2800er Bereich unterkommen.

schauen wir mal ob das so Funktional ist ...
Quelltext mit Timeout