Willkommen in WordStar 4.0! Wie man sieht, befinden wir uns unter MSDOS im ganz regul„ren Wordstar 4, also einer Version, die nicht speziell fr den DMV angepaát ist. Ich muáte lediglich mit WSCHANGE auf ROM- Kompatiblen einstellen, was bedeutet, daá die notwendigen BIOS- Ints verfgbar sind, die Hardware aber nicht kompatibel ist und insbesondere nicht direkt in den Bildschirmspeicher geschrieben wird. Dieser Wordstar ist schon erheblich schneller als die NCR- Version 3.0, und sogar schneller als WS-4.0 unter CP/M (z.B. scrolling). Nichtsdestotrotz ist WordStar insgesamt eher beh„big. Um weitere, unn”tige, Verz”gerungen zu vermeiden, werden mit WSCHANGE s„mtliche delays auf 0 gesetzt. Es sei auch auf die Bedeutung der zur Verfgung gestellten Buffer in config.sys hingewiesen, je mehr davon eingerichtet werden (jeweils 512 bytes), desto seltener muá von der Diskette nachgeladen werden (empfohlener Wert Buffers=20). Natrlich werden diese Puffer vom regul„ren Arbeitsspeicher abgezweigt.Auff„llig langsam ist vor allem das Markieren und Verschieben eines l„ngeren Blockes sowie das Formatieren mit ^B. Dies liegt nicht an den, inzwischen ziemlich ausgereizten Bildschirmroutinen, sondern tats„chlich an WordStar selbst. Wieso WS so lange im Speicher rumfudeln muá, um einen markierten Block auf den Bildschirm zu zaubern, wird wohl ewiges Geheimnis von MicroPro bleiben. Tr”stlicherweise l„uft WS auf meinem AT auch nicht wesentlich schneller! Doch nun zu den Highligts: Dieser WS kann problemlos Laufwerke und Unterverzeichnisse wechseln, es gibt eine undo Funktion (^u), einen Taschenrechner (via esc) , mit Makros belegbare Funktionstasten und ein wesentlich besseres Installations/ModifikationsProgramm WSCHANGE. Eine Auflistung findet sich in WS.DOC. Im unteren Bildschirmfenster máten jetzt die Funktionstastenbelegungungen in inverser Darstellung erscheinen, in der zweituntersten Reihe entsprechend die "geshifteten" Funktionstasten. Diese funkionieren brigens alle, ebenso home, end, pageup und pagedown (s.u.). Die BIOS-Erweiterung MIO.SYS ist aktiv, auáerdem ANSI.SYS, s. config.sys. Diese Diskette unterscheidet sich von den Standardbootdisks: Die IO.SYS ist gepatched, damit mit dem V20 das MotOnDelay eingehalten wird. Auáerdem wird in config.sys MIO.SYS installiert, die BIOS Implementierung fr allm„hlich wachsende Kompatibilit„t. NeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeuNeu: Tastatur liefert jetzt Standardzeichensatz und scancodes.Erweiterter Zeichensatz: F11 F12 F13 F14 F15 F16 F17 [ \ ] hom end Pgup Pgdn zusammen mit shift: F11 F12 F13 F14 F15 F16 F17 { | } hom end Pgup Pgdn zusammen mit ctl: F11 F12 F13 F14 F15 F16 F17 ESC hom end Die Taste CLR l”scht in WS wie ^G auf dem Zeichen, BS l”scht nach links, die Kursortasten funktionieren. Bildschirm -Der Bildschirm zeigt Standard Ascii an, d.h. sowohl „”Ž™šá als auch [\]{|} -Die Bildschirmausgaben sind auf Geschwindigkeit getrimmt, man beachte die Geschwindigkeit beim Scrollen (^W und ^Z)! -es entf„llt bis auf weiteres die Terminal Emulation. Damit unter DOS2.11 Bildschirml”schen, backspace delete etc. functionieren, muá in config.sys ansi.sys geladen werden. Diese Datei habe ich von einer Olivetti M24 BootDisk (DOS 2.11) problemlos bernehmen k”nnen. Dies fhrt allerdings zu einer sprbaren Verlangsamung der Bildschirmausgaben auf der DOS Kommandoebene, also z.B. bei dir. Umlaute erscheinen als ihre amerikanischen Žquivalente. Startet man in dieser Konfiguration, so l„uft das NCR angepaáte Turbo 2.0 nicht mehr richtig, es fehlen einige ber den ANSI Standard hinausgehende Steuersequenzen. Erweiterter Zeichensatz Drucker Ausgehend davon, daá am DM-V Drucker mit 128-er Zeichensatz betrieben werden, wurde der Umfang der druckbaren Zeichen erweitert, so daá sowohl „”Ž™šá als auch [\]{|} ohne Umschaltung ausgedruckt werden k”nnen: Der auf 128 Output char basierende Druckertreiber schaltet einfach per escape sequence tempor„r den Drucker auf BRD-Zeichensatz, wenn ein deutsches Sonderzeichen auszudrucken ist. Dies l„uft bereits mit meinem Siemens PT88, der aber nicht Epson kompatibel ist. Zur Anpassung an andere Drucker mssen die BRD/USA-Esc-Sequenzen am Ende des Druckertreibers (dateiname:PRT) entsprechend angepaát werden und der Systemtreiber mittels Assembler/Linker neu generiert werden (s. Programmierumgebung:i.bat) Zus„tzlich wird folgende Software verfgbar: WordStar 4.0 WordPerfect Norton Integrator Hardware Inkompatibilit„t des DM-V Gr”átes Handicap ist zweifellos der Graphikadapter mit dem NEC 7220: S„mtliche Software, die direkt in den Bildschirmspeicher schreibt, kann, ohne Žnderung der Hardware, hier nicht laufen. Dies betrifft nicht nur ausgesprochene Graphikprogramme, sondern auch die meisten neueren Revisionen von Textverarbeitungen etc. Die Tastatur gl„nzt ebenfalls durch Nichtkompatibil„t, am „rgerlichsten ist das Fehlen der Alt-Taste. Sie kann auch nicht gegen eine Standarttastatur ausgetauscht werden, da es zum einen keine Synchrontaktleitung gibt, zum anderen beim Start ein Nationalit„tencode ausgelesen werden m”chte, den Standardtastaturen nicht liefern. Eine weitere, weniger gravierende, Abweichung, ist die Abwesenheit eines Interruptcontrollers bei „lteren Intelboards, die Hardware Interrupts des 8088 sind dort totgelegt, die von einigen Bausteinen erzeugten Ints werden lediglich auf Slot 7 gefhrt (68008). Es gibt es keinen timer ticker, der Timerbaustein wird zur Bildschirm- und Tastatursteuerung verwendet. System Info von Norton findet berhaupt keine Paralleldruckerschnittstelle vor, was bei der abweichenden hardware (Portadresse) wohl auch nicht zu erwarten war. Žnderungen der hardware sind jedoch sorgf„ltig zu bedenken: Der Einbau einer normalen Herkules Grafikkarte k”nnte sicherlich dem DM-V eine Vielzahl neuer, auch graphikorienter, MS-DOS Programme erschlieáen, was aber passiert dann mit anderen Betriebssysstemen wie CP/M 80, CP/M86, CP/M68k: Hier w„ren s„mtliche I/O Treiber bis hin zur Startfirmware entsprechend anzupassen. Dasselbe gilt auch fr weniger aufwendige Žnderungen, wie z.B. den Austausch eines 40-Spur Laufwerks gegen ein 80-Spur HD-Laufwerk. Software Inkompatibilit„ten des DM-V Der DM-V ist lediglich "DOS-kompatibel", nicht jedoch BIOS kompatibel: Der berwiegende Teil des zum ROMBIOS geh”renden Interrupts ist nicht standardm„áig implementiert. Von daher l„uft zun„chst nur absolut sauber programmierte Software, d.h. solche Programme, die ausschlieálich DOS - Aufrufe benutzen, sowie die seinerzeit fr den DM-V speziell angepaáte Software. Der erste Schritt in Richtung mehr Kompatibilit„t ist die Implementierung eines kompatiblen BIOS, d.h. die bis dato fehlenden BIOS - Interrupteinsprnge werden sukzessive eingebaut. Dann k”nnen Programme benutzt werden, die BIOS Calls verwenden, jedoch keine unmittelbaren Zugriffe auf die Hardware machen. Abweichende Zeichens„tze: In Dateien... Es f„llt auf, daá vom DM-V unter dem (speziell angepaáten Wordstar-3.0) erzeugte Texte nicht 100% Zeichenkompatibel zu Standard-PC's sind. Dies h„ngt mit der internen Beschr„nkung auf den, aus CP/M Zeiten stammenden, 128er Zeichensatz zusammen (deshalb die Nationalit„tenumschaltung am Keyboard!). Damit zusammen h„ngt auch, daá es, beim deutschen Zeichensatz, unter DOS anstelle des Backslashs ein ™ auf dem Bildschirm erscheint, die amerikanischen Sonderzeichen [\]{|} werden durch die deutschen Umlaute ersetzt. ...auf dem Bildschirm Der Charaktergenerator des Graphikadapter kann zwar mehr als 128 Zeichen darstellen, wobei aber, je nach eingestelltem Nationalit„tenkode, immer nur jeweils 128 benutzt werden (CP/M l„át gráen!). Mit dem entsprechenden Treiberprogramm k”nnen ohne Umschaltung US- und BRD-Sonderzeichen zugleich abgebildet werden, die fehlenden Blockgraphiksymbole werden durch Leerschritte ersetzt. ...von der Tastatur Hier werden auch nur teilweise die Standardzeichen geliefert, zudem bergibt der Tastaturinterrupt keinerlei "scan-codes". Mit entsprechenden Kodebersetzungen l„át sich die Tastatur jedoch weitgehend kompatibel machen, wenn nur nicht des Problem mit der fehlenden alt-Taste w„re! Um andere ladbare Betriebssysteme unbehelligt zu lassen, wird zun„chst eine nur fr MS-DOS relevante Minimalsoftwarel”sung angepeilt, Eingriffe in die hardware werden hintangestellt. Zwangsl„ufig muá man sich hier auf die reine Textausgabe beschr„nken, denn es gibt weder im DOS noch im ROM-BIOS eine brauchbare Grafikschnittstelle (eben deshalb schreiben die Programme ja direkt in den Bildschirmspeicher). Software Tuning am DM-V Zwei Hauptaspekte stehen hier im Vordergrund: Erschlieáung modernerer Software (ber mehr Kompatibilit„t) und Erh”hung der Arbeitsgeschwindigkeit. Zentraler Knackpunkt IO.SYS Diese Datei befindet sich bei allen PC's auf jeder Systemdiskette als versteckte Systemdatei, sie wird automatisch erzeugt bei z.B.Format b:/s. Beim Systemstart wird als erstes nach dieser Datei gesucht, ohne daá diese in config.sys explizit angegeben wird. Sie ist das zentrale Bindeglied zwischen MSDOS und den I/O Kan„len, d.h. letztlich die Verbindung zwischen DOS und ROM-BIOS. Dieses Programm ist maschinenspezifisch (also speziell fr den DM-V) und drfte darberhinaus auch von der MSDOS-Version abh„ngen. Aus dem Programlisting geht hervor, daá sich, abweichend vom Standard, in dieser Datei das gesamte Bios befindet. Dafr gibt es beim DM-V kein ROM-BIOS, das BIOS wird beim Systemstart von Diskette geladen. Dieses, stark an CP/M erinnernde Konzept, erm”glicht Žnderungen am BIOS zur Laufzeit, ohne daá EPROM's gebrannt und ausgetauscht werden máten! Da sich IO.SYS und BIOS in einer gemeinsamen Datei befinden, sind unmittelbare šbergaben an BIOS-Routinen m”glich, ohne die blichen Interrupts, was einiges an overhead einsparen kann. Hiervon wurde derzeit auch Gebrauch gemacht, ein Groáteil der blichen BIOS-Interrupts, z.B. Int10h, existiert nach auáen hin garnicht, was eben auch erheblich zur Inkompatibilit„t beigetragen hat. Dafr ist die hierin befindliche Terminalemulation aus den genannten Grnden erstaunlich fix. Des weiteren werden die Speicherzellen oberhalb 400h (Ende der Interruptvektoren) nicht kompatibel belegt. MIO:SYS Die Anpassung an PC-Standard erfolgt sukzessiv mit einem Treiberprogramm, daá ich bis auf weiteres MIO.SYS nenne (=my IO.SYS) und das mittels config.sys dem bestehenden IO:SYS aufgesetzt wird. Im Gegensatz zu dem anf„nglich benutzten transienten Speicherprogramm wirkt sich ein Systemtreiber auch auf MSDOS aus, merkbar daran, daá das directory nun statt ™ tats„chlich \ anzeigt. Konsequent w„re der vollst„ndige Ersatz der bisherigen IO.SYS, was aber erst dann m”glich wird, wenn dieser Treiber wirklich vollst„ndig ist, was aufgrund des zu erwartenden Aufwandes wohl nie geschehen wird. Bis dahin wird die IO.SYS weiterhin ben”tigt, MIO.SYS wird in Config.sys aufgerufen und lenkt um auf die neuen I/O Kan„le, soweit sie eben implementiert sind. Bezglich der Speicherausnutzung ist dies nicht optimal, belegt doch IO/Sys nach wie vor wenigstens 20k, auch wenn schon inzwischen einiges davon von MIO.SYS nachtr„glich totgelegt wird, und mio.sys natrlich weiteren Speicherplatz beansprucht. Erster Schritt: CON Die Implementierung des bis dahin nicht existierenden BIOS INT10h ist Grundvoraussetzung zur Benutzung weiterer, bislang nicht funktionierender, Standardsoftware. Der Konsolenkanal besteht aus der Tastatur und dem Bildschirm. schnellerer Bildschirmaufbau Ganz wesentlich wird die subjektiv empfundene Geschwindigkeit durch die Bildschirmausgaben herabgesetzt. Da ein Zeichenblockbertragungsbefehl im IBM-ROMBIOS nicht vorgesehen wurde, mssen Textverarbeitungen, wie z.B. Wordstar, den Bildschirm zeichenweise aufbauen, wobei pro Zeichen auch noch die Kursorpositionierung vorausgeht: Um einen Bildschirm neu zu schreiben, sind dies dann knapp 2*2000 Interruptaufrufe! Von daher habe ich versucht, den Int10h zu optimieren, wobei aber Grenzen gesetzt sind: Der "Overhead" (Sichern & Wiederherstellen aller Register, Stackpointermanipulationen) nimmt beim Schreiben eines einzelnen Zeichens auf den Bildschirm etwa 2/3 der gesamten Ausfhrungszeit in Anspruch. Relativ zur Originalsoftware ist der Bildaufbau aber schon erheblich schneller geworden. Scrolling: Fifo vs DMA Ich realisiere das Scrollen durch Blocktransfer des Bildschirminhalts. Jeweils eine Bildschirmzeile wird aus dem Bildschirmspeicher in den Arbeitsspeicher geladen und von dort anschlieáend an die neue Bildschirmposition wieder zurckbertragen. Von dem, zweiffellos wesentlich schnelleren, Vektorscrolling (Bildschirmzeiger des GDC verbiegen), bin ich abgekommen, da es, speziell unter Wordstar , zu st”rendem Aufblitzen der kurzzeiteig versetzten inversen top/bottom lines kommt. Nachdem es mir endlich geglckt war, den GDC ber die vorhandene DMA - Schnittstelle zu laden, waren die Resultate entt„uschend: Der DMA - Transfer ist langsamer als die Zeichenbertragung ber das Fifo. Dies liegt daran, daá der DMA des GDC nur in der nichtaktiven Zeit Zeichen annehmen kann, daá Fifo hingegen st„ndig, solange es nicht berl„uft. Gemessen wurden 37sec fr das Schreiben von 2000 Zeilen, entsprechend 230 usec/Zeichen oder fast 1sec zum scrollen: Demgegenber ben”tigt die ber das Fifo ablaufende Routine nur 0,1sec, unter Wordstar insgesamt 0,17sec zum scrollen. Zweiter Schritt: LST In MIO.SYS befindet sich jetzt auch der Druckertreiber mit erweitertem Zeichensatz, erreichbar sowohl ber LPT1 als auch ber PRN. Hardware tuning: h”here Taktfrequenzen, NEC V20 Der Intel8088 kann gegen den kompatiblen Nec V20 ausgetauscht werden, dieser Chip kann in der Normalausfhrung mit 8 statt bisher 5 MHz getaktet werden. Tests mit dem V20 bei unge„nderter Taktfrequenz zeigten einen sprbar schnelleren Bildaufbau, leider hat die Sache einen Haken: Es treten h„ufig Floppyfehler auf ("Laufwerk nicht bereit", seltener "Positionierungsfehler"). Ursache ist die zu kurz gewordene Motorhochlauf-Warteschleife. Ein Patch in IO.SYS behebt diesen Fehler. Z.ZT ist der 15 MHz Quarz durch eine 20MHz Ausfhrung ersetzt, entsprechend 6,7MHz eff Takt. Bei 24 MHz traten 2 Probleme auf: Der Quarz schwang auf 1/3 (ObertonQuarz) und muáte erst durch einen Schwingkreis abgestimmt werden. Auáerdem funktioniert bei 8MHz das Auslesen der Echtzeituhr nicht mehr, dies w„re mit einem geeigneten Treiberprogramm wohl l”sbar. Davon abgesehen lief der 8 MHz Betrieb aber v”llig problemlos. System Info von Norton liefert am original DMV einen computing index von 0,9, mit dem V20 erh”ht sich dieser Wert auf 1,6 und bei einem 20 MHz Quarz auf 1,9. Die folgenden Zeitmessungen ergeben effektive Laufzeiten, die etwa doppelt so lang sind wie die aus der Taktfrequenz und Anzahl der Zyklen errechneten Werte. Ursache scheint der memory controller (8203) zu sein, der neben dem addressmultiplexing wohl auch fr reichlich viel refresh sorgt. Dieser Baustein erzeugt ein Wartesignal, das als "readyp" (Pin b10 an J107) auf dem Systembus liegt. Auf der 8088 Karte wird dieses Signal ber den Taktgenerator auf den ready input des 8088 geleitet und erzeugt dort zus„tzliche Wartezeiten. Dieses Signal ist etwa die H„lfte der Zeit aktiv, was ins beschriebene Bild paát. Zeitmessungen mit V20 bei 20/3 MHz: 500 000 Int 80h (dummy int) 12,8 sec 50 int 80h 39 iret 1,4 loop ------------- 90,4 cyc -> 3530000 cyc/sec, also ca 3,5 MHz statt 6,7 MHz! autoscroll (^Qz) mit WS 4.0: 180msec/scroll (move window) scroll via WrTTY test: 100msec/scroll 50 000*Int10/0 (max overhead) 8,3s dummy subfunction 50 000*int10/2 (set cursorto 0,0) 9,2s always same position 50 000*Int10/9 (WrAChar,reposition) 14,0s 50 000*dito, ohne reposition 12,0s 50 000*Int10/-1 (min overhead) 5,4s illegal subfunction Floppy I/O Die Einstellungen Kopfberuhigungszeit (head settle), Kopfhaltezeit und die Steprate werden durch output - Befehle unmittelbar in den 765-kompatiblen floppycontroller programmiert, sie sind deshalb unabh„ngig von der Arbeitsgeschwindigkeit des Prozessors. Die Probleme in Verbindung mit dem V20 konnten ihre Ursache nur in der Motorhochlaufzeit (routine MOTORCK:) haben: Hier wird eine 1sec Warteschleife mithilfe des Befehls AAM programmiert, der beim 8088 zwar 83 Zyklen dauert, beim V20 aber wesentlich krzer ausf„llt. Deshalb wird dieser 2 byte Befehl "gepatched" mit INT 80h (dummy interrupt), wobei die Interruptroutine eine auch fr den V20 hinreichende Warteschleife darstellt. Norton Integrator Beim Aufruf von NI erscheint eine šbersicht ber die einzelnen utilities, die man u.a. mit den Kursortasten anw„hlen kann, um entweder eine ausfhrliche Hilfe zu erhalten, oder selbige gleich auszuprobieren. Seitdem die Kursortasten statt der CP/M Kontrollkodes den Wert Null liefern, funktioniert der Norton Integrator (NI) vollst„ndig. Wenn man sich erstmal mit den einzelnen Norton Utilities auskennt, kann man sie auch direkt von der Dos Kommandoebene aus aufrufen. Am h„ufigsten benutze ich QU (quick unerase) zum Wiederherstellen gel”schter Dateien, FF (File Find), um Disks auf bestimmte Dateien hin zu durchsuchen sowie FA (File Attributes), um z.B. versteckte Systemdateien hervorzuholen. Turbo 3.0 In der mir bislang vorliegenden Form, ohne Installer, erscheint das Men ordnungsgem„á, es lassen sich auch Dateien aufrufen. Die Statuszeile zeigt s„mtliche Kursorbewegungen an, ich kann Zeichen eingeben und der Kursor bewegt sich. Leider ist bis heute kein einziges dieser Textzeichen jemals auch auf dem Bildschirm erschienen, so daá ich befrchte, daá Turbo 3.0 direkt in den Bildschirmspeicher schreibt. Beschreibung meiner Hardware Motherboard ASSY 017-0033402 A, SCHM 017-0032012 H 2 Diskdrives mit je 360k, keine Festplatte Intelboard: ASSY 017-0033501 A, SCHM 017-0033502 A mit Interruptcontroller 8259A und ROM 33473 von 1985 (kein EPROM!) Firmware Version M.06.00, z.Zt bestckt mit V20 und 20 MHz Quarz Speichererweiterung auf 512k 68008 kit 3273-K234-V001 603-6091360 1 Parallelschnittstelle 1 Serielle Schnittstelle meine Programmierumgebung: Ich benutze auf dem DM-V als Assembler/Linker die Turbo Versionen TASM und TLINK, die sich auf LW B: befinden, Editor und Quelltexte finden sich auf LW A:. Als bislang schnellsten Programmeditor nahm ich zun„chst die DM-V spezifische Version von Turbo 2.0 in Verbindung mit dem DM-V Standard Boot, inzwischen aber auch diesen WS-4.0. Mit der Stapeldatei i.bat l„uft in dieser Konfiguration der gesamte Assembler/Linker Ablauf automatisch ab.