1. MONITOR-AUFRUF AUS WS-MENUE ====================================================================== Wenn WS ohne Installationsprogramm angepasst werden soll, bietet sich die Nutzung des evtl. vorhandenen residenten System-Monitors oder des transienten Debuggers DU an. Sofern das Betriebssystem CP/A zur Verfuegung steht kann bei entspre- chender Installation der System-Monitor ueber eine Fkt.-Taste aufgerufen werden (bei PC 1715 meist F12). Hier kann nach dem Patchen mit g 100 WS gestartet werden und sofort ein Test der Veraenderung stattfinden. Sollte diese Methode nicht verfuegbar sein, kann mit DU eine Moeglich- keit zu einer aehnlich komfortabelen Bearbeitung geschaffen werden. Dazu wird DU zusammen mit der WS-Datei geladen, z.B.: DU WS.COM Durch DU wird WS ab Adr. 100H nachgeladen. Danach wird das Prompt von DU ausgegeben. Durch Eingabe von d430 wird der Bereich NOFTAB in WS zur Anzeige gebracht. Hier stehen die im Startmenue von WS ausfuehrbaren Befehle. Jeder Befehl besteht aus vier Byte. Es sind 20 Eintraege moeglich, wobei je nach WS-Version vier bis sechs Eintraege noch frei sind. Nicht benutzte Eintraege sind mit Nullen gefuellt und werden ignoriert. Die Tabelle endet bei 0480H mit einem Null-Byte. Der erste freie Eintrag kann als Aufruf des System-Monitors genutzt werden. Als Beispiel sei angenommen der 16. Eintrag ist der erste freie Eintrag, er beginnt bei Adr. 046CH. Durch Eingabe von s46c kann die Funktion generiert werden. Als Befehlszeichen muss der Control-Code eines im Startmenue nicht benutzten Zeichens verwendet werden, wie hier im Beispiel "CTRL-A". Als Einsprungadr. des Monitors sei E060H (Monitor im ALPHATRONIC-PC 8) angenommen. Daraus ergibt sich folgende Belegung: 046CH 01H CTRL-A 046DH 00H Bei einstelligem Zeichen =00, sonst 2. CTRL-Zeichen. 046EH 60H Startadr. der Routine L-Byte 046FH E0H - " - H-Byte Nach dieser Modifizierung kann mit g100 WS gestartet werden. Aus dem Grundmenue heraus kann nun mit "a" der Monitor aufgerufen werden. Die Rueckehr aus dem Monitor zu WS kann mit einem Sprung auf Adr. 100H erfolgen. Dabei ist zu beachten, dass Adr. 083BH bei Neustart von WS den Wert 20H enthalten muss, andernfalls erfolgt eine falsche Laufwerks-Selek- tion. Die Adresse ist das erste Byte eines Pufferbereiches fuer den Namen der zu bearbeitenden Datei. der Initialwert 20H ist nur enthal- ten, solange keine Dateieroeffnung stattgefunden hat. Wenn dies jedoch der Fall war, muss vor dem Restart von WS diese Adresse im Monitor wieder mit 20H geladen werden! Das kann im Monitor vorgenommen werden, oder es kann in MORPAT eine Routine installiert werden die vor dem eigentlichen Monitor-Aufruf diesen Initialwert herstellt. Dazu muesste im Beispiel bei Adr. 046EH-046FH die Start-Adr. der Routine in MORPAT eingetragen werden. Die Routine selbst hat folgenden Aufbau: START: PUSH AF LD A,20 LD (083B),A ;Adr. mit Initialwert laden POP AF JP E060 ;Sprung zum Monitor Eine weitere Restart-Moeglichkeit besteht durch einen Sprung auf Adr. 3C4DH. Dabei ist der Wert in Adr. 083BH belanglos. Allerdings wird in diesem Fall kein Startmenue angezeigt und die entsprechende Kommando-Eingabe, z.B. ^D, muss blind erfolgen. Wenn kein Monitor im System verfuegbar ist, kann DU als komfortabler "Ersatzmonitor" dienen. Dazu ist ein an sich nicht vorgesehener Ruecksprung auf DU zu organi- sieren. Da sich DU in Abhaengigkeit der oberen TPA-Grenze unterhalb des BDOS anhaengt muss die Anfangsadr. von DU ermittelt werden. DU traegt diese Adresse als neue BDOS-BASE auf Adr. 06-07H ein, wobei dei Adr. immer auf 00 endet. Ein geeigneter Ruecksprung zu DU liegt bei Anfangsadresse. + F02H. Diese Adresse ist im genannten Beispiel auf 046E-046F als Startadresse fuer das Kommando CTRL-A einzutragen. Der Ruecksprung zu WS erfolgt von DU entsprechend der o.g. Verfahrenswei- sen fuer Ruecksprung aus dem Monitor. Der moegliche Monitor-Aufruf kann natuerlich auch im Startmenue von WS eingetragen werden. Dazu ist die Overlay-Datei WS-MSGS.OVR bzw. TPHT.OVR zu modifizieren. Dies kann guenstigerweise mit Hilfe von POWER vorgenommen werden. Die Datei wird oberhalb von POWER eingeladen: load ws-msgs.ovr 4000 Power wird sich mit der Angabe der Dateilaenge von 223 Records zurueckmelden. Da der generierte Befehl zu den System-Kommandos gehoert, sollte der Eintrag im Startmenue in der freien Position unter "X zum System" in der Form "A zum Monitor" eingetragen werden. Der Beginn dieses mit SPACE gefuellten Bereiches liegt unter Beachtung der o.g. Ladeadresse bei 4483H. Zwei SPACE vor und nach dem Kommando- Zeichen sind Standard. Die Aenderung kann mit der Funktion "ds" im ASCII-Modus vorgenommen werde. Nach erfolgter Aenderung kann die Datei zurueckgeschrieben werden: save ws-msgs.ovr 4000 223 Damit wird die alte Datei ueberschrieben. 2. MEMORY-MAPPED VIDEO ====================================================================== Die Terminalarbeit von WS kann ueber zwei Betriebsarten realisiert werden: - Ueber Steuersequenzen (meist gebrauechlich). - Direktes Schreiben in den Video-RAM. Die Installation der zweiten Methode setzt umfangreichere Systemkennt- nisse voraus, bringt aber einige Vorteile mit sich: 1. Der Bildschirmaufbau erfolgt bedeutend schneller. 2. Das Durchfahren des Textes erfolgt fluessiger und schneller. 3. Der belegte TPA-Bereich ist um 2 kByte geringer, da WS in dieser Betriebsart den Video-RAM als Textarbeitsspeicher benutzt. Installation ------------ Folgende Adressen sind zu patchen: VARIABLE ADR. WERT BEDEUTUNG USELST 02AA FF Schreiben in die letzte Zeichenposition erlaubt. MEMPAV 02B0 FF Video-Mapped ein. MEMADR 02B1 nnnn Anfangsadr. des Video-Ram (2 Byte). Sollte der Video-RAM nur ueber Bank-Switching adressierbar sein, z.B. unter CP/M 3.0, sind die entsprechenden Umschaltroutinen ueber SWIN (02C3) und SWOUT (02C9) zu realiesieren. Dabei wird die urspruengliche Bytfolge NOP/NOP/RET durch ein JUMP zur entsprechenden Routine er- setzt. Es koennen vorhandene Systemroutinen verwendet werden, soweit sie mit RET enden. Bei CP/M 3.0 bietet sich die Nutzung der BIOS- Funktion 27 (SELMEM) an. Die Cursor-Direktpositionierung stellt in dieser Betriebsart erfah- rungsgemaess das groesste Problem dar, da hier genaue Kenntnisse des Aufbaues des Video-RAM, seiner Adressierung und Verwaltung notwendig sind. In der Praxis finden sich vielfaeltige, da hardwareabhaengige Loesungsvarianten. In einigen Systemen wird der Cursor an der Stelle ausgegeben, wo Bit 7 im ASCII-Byte gesetzt ist. In diesem Fall ist das Patchen von HIBCUR (02B3) auf FFh notwendig. In der Mehrzahl der Installationen wird jedoch eine User-Routine zur Cursorpositionierung zur Anwendung kommen muessen. Bei UCRPOS (0264) wird ein JUMP zur zur Startadresse dieser User- Routine eingetragen. WS erkennt das Vorhandensein der Routine und benutzt sie vorzugsweise. Bei Eintritt in die User-Routine wird von WS die einzustellende Cur- sor-Position uebergeben. Dabei wird von WS beruecksichtigt, dass ver- schiedene Methoden zur Angabe der Cursor-Position in den Systemen verwendet werden, d.h. die Positionsangabe wird in drei verschiedenen Doppelregistern auf unterschiedliche Art bereitgestellt: Register H: Spaltenposition, 0=linker Rand. L: Zeilenposition, 0=obere Zeile. DE: Position ab Schirmbeginn, fortlaufend gezaehlt 0=linke, obere Zeichenposition. BC: Zahl der Zeichenpositionen ab Schirmbeginn bis zum Zei- lenanfang der Zeile in der der Cursor steht. Welche der Darstellung genutzt werden kann, muss je nach System ent- schieden werden. Bei Systemen ohne entsprechend intelligente Bildschirmsteuerungen muss auf jeden Fall f}r entsprechende Synchronisation der Zugriffe auf den Video-RAM gesorgt werden, da sonst Bildstoerungen durch den Zugriff der CPU entstehen. Zweckmaessig ist die Nutzung der entsprechenden BIOS-Systemroutine, die auch von der Funktion CONOUT benutzt wird. Mit grosser Wahrscheinlichkeit wird bei Ende Wordstar in dieser Be- triebsart keine exakte Curso-Positionierung erfolgen, da die Steuer- code-Folgen in dieser Betriebsart deaktiviert sind. Das System-Promt steht dann mitten im Menue und nicht in Zeile 24. In diesem Fall kann ueber verschiedene Methoden, entprechend dem System, eine entsprechen- de Re-Initialisierung erreicht werden. 1. Positionierung ueber die User-Routine UNISUB. Dazu ist bei UNISUB(02A7) ein JUMP zur entsprechenden Startadresse einzutragen.Dabei kann nach dem Laden der entsprechenden Register die gleiche Routine wie bei UCRPOS benutzt werden. 2. Loeschen des Bildschirmes ueber die User-Routine UNISUB. Z.B. Ausgabe von "0D" ueber BDOS-Funktion 02 (CONOUT). 3. Laden von MEMPAV durch UNISUB mit "00". Dadurch werden vor Beendigung WS die Steuercode-Folgen aktiviert und ueber die eingetragene Folge bei TRMUNI (029B), ueblich ist "01,0D", kann der Bildschirm geloescht werden. Alle notwendigen User-Routinen sollten in einem freien Bereich von MORPAT (02E0-035B), durch NOP-Befehle erkennbar, abgelegt werden und muessen mit RET abgeschlossen werden. 3. WORDSTAR AUF ALLEN LAUFWERKEN ====================================================================== Eine unangenehme Eigenschaft ist die Bindung von WS an ein bestimmtes Laufwerk. D.h entsprechend der Installation mu~ die Diskette mit WS und seinen Overlays, ausser bei CP/A, auf einem bestimmten Laufwerk gestartet werden, ansonsten kommt es zum Fehler und Abbruch. Das Problem ist im Inhalt der Adresse 02DCH begr}ndet. Hier steht die Variable DEFDSK, die festlegt, auf welchem Laufwerk WS seine Overlays suchen soll. Enthaelt dieses Flag "01" (entspricht Laufwerk A) und die Diskette mit WS und seinen Overlays wurde in Laufwerk B gestartet, dann sind die eben diese Overlays f}r WS nicht existent. Abhilfe lae~t sich durch eine zusaetzliche Routine bei Start von WS.COM erreichen. Bekanntlich steht der Aktuelle Laufwerks-Code in den unteren 4 Bit der Adr. 0004. Der Inhalt dieser Adresse wird nur bei Aufruf der BIOS-Routine SELDSK beeinflu~t. Nach dem laden von WS.COM wird also dort noch der Laufwerks-Code des Laufwerkes stehen, von dem WS.COM gestartet wurde. Dieser Code braucht nur in DEFDSK eingetragen werden und damit erkennt WS.COM auf welchem Laufwerk seine Overlays stehen. Die einfachste Art diese Massnahme zu realisieren ist das Umleiten des Startsprunges auf Adr. 0100H zu einer entsprechenden Routine und danach der Sprung zur Original-Startadresse. Die Routine kann in einem freien Bereich von MORPAT, (Adr. 02E0-035BH) abgelegt werden: 0100 JP NEWST ;Start-Adr. ersetzen NEWST: LD A,(0004) ;Laufwerks-Code holen, A=00, B=01,... AND 0F,A ;nur Bit 0-3 INC A ;Laufwerk A=01, B=02,... LD (02DC),A ;Laufwerks-Code nach DEFDSK JP OLDST ;Sprung zu der Adresse, die im Sprung auf ;0100H im Original stand. Bei den WS-Versionen ;2 und 3 meist 2D08H 4. TP UNTER CP/A, CP/M UND SCPX ====================================================================== Die WS-kompatiblen Textsysteme TP und TPG erzeugen bei Start unter den o.g. Betriebssystemen die Fehlerausschrift: "Falsches Betriebssystemkennzeichen" und fuehren einen Programmabbruch durch. Die Aenderung des Startsprun- ges auf Adr. 0100H ermoeglicht eine Umgehung dieses Vorganges, dessen Sinn anscheinend nur eine gezielte Behinderung des Anwenders bei der Arbeit mit den genannten Programmen sein soll... Nach folgender Aenderung laufen die Programme problemlos unter allen CP/M-kompatiblen Betriebssystemen: 0100H JP 3F00 aendern in: JP 2D08