NCR DMV Spielereien

  • Immer her mit netten Projekten zur DMV!

    Ich habe für diesen ersten Post die Firmware zur 16-Bit-Erweiterung aus dem ... System Technical Manual Hardware abgetippt ... ich möchte versuchen, die Display-Routine in einem eigenen Programm zu nutzen, um zu verstehen, wo die Inkompatibilitäten der DMV zum IBM PC liegen.

    Auf der reinen DOS-Ebene wird ein Lear-Siegler ADM-31-Terminal emuliert, das ist auch die richtige Einstellung für Programme, die laufen, z.B. Turbo Pascal 3.0 oder WordStar.


    Bislang habe ich nur den Source-Code abgetippt, da das OCR zu ... spannenden Ergebnissen geführt hatte. Ich gebe keine Garantie auf Fehlerfreiheit, aber vielleicht mag ja auch jemand anders damit rumexperimentieren.


    Gruß

    Robert

  • Das ist wirklich clever - der Autor dieser BIOS-Erweiterung lädt eine Datei MIO.SYS, für welche die Assembler-Source auf der Diskette vorliegt, über das ursprüngliche IO.SYS und wollte damit - so der Plan - nach und nach die bei der DMV eh auf der Diskette, und nicht im ROM vorliegenden Ein- und Ausgaberoutinen ersetzen. Letztlich wäre dann die weniger kompatible IO.SYS der DMV durch eine kompatiblere oder kompatible ersetzt worden.


    Hier ist ein Image der bootfähigen Datei, mit der MIO.SYS im Bootprozess aktiviert. In der Beschreibung in den vorherigen Posts ist die Rede davon, dass WordPerfect damit läuft, zumindest der Personal Editor, ein abgespecktes WordPerfect 4.1 läuft damit prima.


    Der Norton Commander 1.0 zeichnet ein angedeutetes Fenster, schmiert aber dann ab. Die Farben lassen sich mit ANSI-Kommandos in der AUTOEXEC.BAT ändern, aber so sieht man, dass der Treiber läuft.


    Sollte sich der Autor dieser BIOS-Erweiterung hierher verirren, herzliche Grüße, herzlichen Dank, und ich würde mich über eine Nachricht freuen.

  • Ich habe mich vor Jahrzehnten mit ausführlich mit der Programmierung des NEC7220 beschäftigt.

    Im Eingangsposting wird die Frage gestellt, worin genau die Unterschiede zu einer herkömmlichen IBM-kompatiblen Graka bestehen, sodaß auf dem DMV so gut wie nix läuft, was damals auf jedem alten PC/XT/AT standardmäßig funktionierte.


    Wenn am DMV Programme nicht liefen/laufen, lag das nicht nur (wenn auch vor allem) an der unterschiedlichen Ansteuerung der Graka, sondern auch an unterschiedlichen Portadressen wie zB des 8259 InterruptControllers, des TimerChips 8253, an unterschiedlicher Abarbeitung/Ansteuerung des Keyboards, unterschiedlicher BIOS-Adressen diverser gern von Programmen abgefragter Werte (Keyboard-Buffer, TimeOfDay).


    Im Unterschied zu "normalen" Grakas blendet der DMV den Bildschirmspeicher nicht in der Hauptspeicher ein (wie sonst zb bei A000:0000 / B800:000 / etc). Der NEC7220 ist Alleinherrscher über seinen Speicher und um auf ihn zuzugreifen, muß man 1. den Controller über einen CommandPort davon in Kenntnis setzen (zb lesen/schreiben) mit Angabe wieviele Zeichen und nun 2. über einen Datenport (FIFObuffer) die Daten reinschreiben bzw rauslesen.


    Der Vorgang ist somit völlig unterschiedlich zu jeder herkömmlichen Graka und jedes Program das versuchte von/an obigen Adressen lesen/schreiben zu können veursacht in wenigen Sekunden einen Absturz.


    Die zweite Variante einer schnellen Bildschirmausgabe war dann noch die über den BIOS -Video Interupt 10H zu gehen.

    Wobei "schnell" relativ zur Ausgabe über den Dos 21 Interrupt zu sehen ist. Der DMV ist ja sozusagen ein ANSI-Terminal, und das mitgeliefert DOS beinhaltet bereits die Abarbeitung von ANSI-ESCape Sequenzen für die Bildschirmansteuerung, wo andere PCs extra ein ANSI.SYS zu diesem Zweck als Treiber in die config.sys aufnehmen müssen. Und genau diese Übersetzungsarbeit macht die Bildausgabe so furchtbar langsam.


    Der VIdeo-Interrupt 10H exisitert standardmäßig am DMV nicht, bzw tut nichts (der macht nur ein IRET).

    Dank des Programmes "Clone.exe" wird dieser aber für den DMV erhältlich und damit läuft dann einiges (wie zb WS4).

    Clone.exe bohrt auch gleichzeitig den Keyboard Interrupt 16H auf, der dann auch ALT-Tasten simuliert. In meimer Erinnerung sind dann F11-F20 entsprechend ALT-F1 bis ALT-F10).


    Der Unterschied in der Geschwindigkeit wird sofort deutlich, wenn man zb statt der MsDos Variante von TurboPascal 3 (die es ja für den DMV gibt) die PC-Dos Variante benztzt. Diese muß zwar extra dazu gepatcht werden und ein weiteres Hilfsprogramm (resident) installiert werden (autoecec.bat), aber dann kommt Freude auf :)


    Für das Clone Programm habe ich ein Manual gescannt, die Vorlage ist/war leider selbst nur eine sehr schlechte Kopie. OCR hat da keine Chance aber die jpegs tun es zur Not auch.

  • Heute mal ein paar Einblicke in ROMs und Bootsektoren bei der DMV ...



    Die 8088-ROMs haben einen Monitor an jeweils unterschiedlichen Stellen ... ich habe es aber noch nicht geschafft, ihn aufzurufen.



    Im Z80-ROM sieht man die "Schalter" für die Betriebssysteme ... ein CP/M 3.0 kenne ich nicht für die DMV, obwohl es im ROM erwähnt wird, und es das Modul K233 mit 16KB shared RAM gibt.


    Ansonsten entsprechen die Bootsektoren den Erwartungen:



    Im CP/M-80-Bootsektor geht es eng zu ...


    dafür springt der von CP/M-86 nach ein paar Bytes direkt in den zweiten Sektor.



    Beide scheinen sich durch das "NCR F3" als CP/M zu identifizieren ...


    anders als MS-DOS 2.11 ...



    ... und das P-System



    CP/M-68K ist eine ganz eigene Nummer ...



    ... es startet als CP/M-Abkömmling im Z80-Modus (anders als die 8088-Karten hat das 68008-Modul kein eigenes ROM) und wird von einem MPM II-Loader hochgefahren ... ob das wohl ein komplettes MP/M-BIOS/XIOS ist?


    LG Robert

    NCR DMV/Olivetti M20/ITT 3030/DEC Rainbow 100/Siemens PC-D/OlyPeople/MFA 8085/TA Alphatronic

  • Bislang habe ich nur den Source-Code abgetippt, da das OCR zu ... spannenden Ergebnissen geführt hatte. Ich gebe keine Garantie auf Fehlerfreiheit, aber vielleicht mag ja auch jemand anders damit rumexperimentieren.

    In Zeile 309 muß es heißen: " JNC ROT_ONE"

    Zeile 80: es ist mit Sicherheit "0D0" der richtige Wert (die Portnummer für cpu-switch)

    Zeile 352: ist das eine gültige asm anweisung: "MOV SB16,=" ?

    2 Mal editiert, zuletzt von DoPe ()