Testroutinen ------------ Einige Tests fuellen die ersten 6 Zeilen des Bilschirms mit roten "B"s, damit der Effekt (z.B. beim Loeschen und Scrollen) besser sichtbar ist. TEST SAVE ORIG: Ruft die Routine zur Sicherung der Originaldaten auf. Die Werte der Zeiger sav_scrzp, sav_outptr, sav_color und sav_invers stehen in den Vergleichswerten. Die Summe der 36 Werte ab $d1 muss der Summe der 36 Werte in ab der Speicherstelle sav_scrzp entsprechen. Sollten sich Abweichungen gegenseitig aufheben, wird dies nicht erkannt. Der Zeiger in $0326 muss in der Speicherstelle sav_outptr stehen. Der Wert in $0286 muss in der Speicherstelle sav_color und der Wert in $c7 muss in der Speicherstelle sav_invers stehen. TEST SET START OF LINE: Richtet ein Fenster ueber den gesamten Bildschirm ein und setzt den Cursor in die 8. Zeile (Zeilennummer 7). Der Zeiger wlnp steht in den Vergleichswerten und muss auf die 8. Zeile (Zeilennummer 7) zeigen. TEST CLEAR SCR LINE: Richtet ein Fenster mit 6 Zeilen ein und loescht die 4. Zeile (Zeilennummer 3). Der aktuelle Wert steht in den Vergleichswerten. Die Zeile muss leer sein und den aktuellen Farbwert haben. Es wird nur das erste und letzte Zeichen der Zeile ueberprueft. TEST CLEAR SCR 1: Richtet ein Fenster mit 5 Zeilen ein und loescht es. Das Fenster muss leer sein. Es wird nur das nur das erste und letzte Zeichen des Fensters ueberprueft. TEST CLEAR SCR 2: Richtet ein Fenster mit einer Zeile ein und loescht es. Das Fenster beginnt in der 3. Bildschirmzeile. Das Fenster muss leer sein. Es wird nur das nur das erste und letzte Zeichen des Fensters ueberprueft. TEST HOME CURSOR: Platziert den Cursor oben/links (ausgehend von einer Position mitten im Fenster). Die Werte von wlnp, wx und wy stehen in den Vergleichswerten. wlnp muss auf den Anfang des Bildschirmspeichers zeigen und wx und wy muessen beide null sein. TEST MOVE SCR LINE: Fuellt die 3. Zeile (Zeilennummer 2) mit Zeichen unterschied- licher Farbe und kopiert diese Zeile dann zwei Zeilen nach unten. Die 5. Zeile (Zeilennummer 4) muss die gleichen Zeichen in der gleichen Farbe wie die 3. Zeile haben. Es wird nur das erste und letzte Zeichen der Zeile ueberprueft. TEST SCROLL 1: Richtet ein Fenster mit 5 Zeilen ein, in dem in der ersten und letzten Spalte fortlaufend Ziffern beginnend mit null stehen und scrollt das Fenster. Das Farb-RAM wird dabei nicht veraendert. Nach dem Scrollen muessen die ersten 4 Zeilen (Zeilennummern 0 bis 3) in der ersten und letzten Spalte die fortlaufenden Ziffern 1 bis 4 enthalten und die 5. Zeile (Zeilennummer 4) muss leer sein (hier wird nur das erste und letzte Zeichen ueberprueft). TEST SCROLL 2: Richtet ein Fenster mit einer Zeile ein, in der in der ersten und letzten Spalte eine Null steht und scrollt das Fenster. Das Farb-RAM wird dabei nicht veraendert. Nach dem Scrollen muss die Zeile leer sein (es wird nur das erste und letzte Zeichen ueberprueft). TEST BACKSCROLL 1: Richtet ein Fenster mit 5 Zeilen ein, in dem in der ersten und letzten Spalte fortlaufend Ziffern beginnend mit null stehen und scrollt das Fenster rueckwaerts. Das Farb-RAM wird dabei nicht veraendert. Das Fenster beginnt in der 2. Bildschirmzeile. Nach dem Scrollen muss die erste Zeile (Zeilennummer 0) leer sein (es wird nur das erste und letzte Zeichen ueberprueft). Ab der 2. Zeile (Zeilennummern 1 bis 4) muessen in der ersten und letzten Spalte die fortlaufenden Ziffern 0 bis 3 enthalten sein. TEST BACKSCROLL 2: Richtet ein Fenster mit einer Zeile ein, in der in der ersten und letzten Spalte eine Null steht und scrollt das Fenster. Das Farb-RAM wird dabei nicht veraendert. Das Fenster beginnt in der 6. Bildschirmzeile. Nach dem Scrollen muss die Zeile leer sein (es wird nur das erste und letzte Zeichen ueberprueft). TEST GOTO NEXT LINE 1: Bewegt den Cursor von der 3. zur 4. Zeile (Zeilennummer 2 nach 3). Die Werte von wlnp und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 4. Zeile des Bildschirmspeichers (Zeilennummer 3) zeigen und wy muss sich um eins auf den Wert 3 erhoeht haben. TEST GOTO NEXT LINE 2: Bewegt den Cursur von der letzten Zeile (Zeilennummer 5) aus eine Zeile nach unten (mit Scrolling). Die Werte von wlnp und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 6. Zeile des Bildschirmspeichers (Zeilennummer 5) zeigen und wy darf sich nicht erhoeht sein und muss weiterhin den Wert 5 haben. TEST PERFORM RETURN: Fuehrt in der 3. Zeile (Zeilennummer 2) einen Zeilenumbruch durch (der Cursor steht mitten in der Zeile). Die Werte von wlnp, wx und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 4. Zeile des Bildschirmspeichers (Zeilennummer 3) zeigen, wx muss den Wert null und wy muss sich um eins auf den Wert 3 erhoeht haben. TEST GOTO PREV LINE 1: Bewegt den Cursor von der 4. zur 3. Zeile (Zeilennummer 3 nach 2). Die Werte von wlnp und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 3. Zeile des Bildschirmspeichers (Zeilennummer 2) zeigen und wy muss sich um eins auf den Wert 2 verringert haben. TEST GOTO PREV LINE 2: Bewegt den Cursur von der ersten Zeile (Zeilennummer 0) aus eine Zeile nach oben (mit Scrolling). Die Werte von wlnp und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 1. Zeile des Bildschirmspeichers (Zeilennummer 0) zeigen und wy darf sich nicht verringert und muss weiterhin den Wert 0 haben. TEST PERFORM BACKRETURN: Fuehrt in der 3. Zeile (Zeilennummer 2) einen rueckwaertigen Zeilenumbruch durch (der Cursor steht mitten in der Zeile). Die Werte von wlnp, wx und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 2. Zeile des Bildschirmspeichers (Zeilennummer 1) zeigen, wx muss den Wert null und wy muss sich um eins auf den Wert 1 erhoeht haben. TEST ADVANCE CRSR 1: Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) von einer Position inmitten der Zeile um eins nach rechts. Die Werte von wlnp, wx und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 3. Zeile des Bildschirmspeichers (Zeilennummer 2) zeigen, wx muss um eins erhoeht und wy darf nicht veraendert sein. TEST ADVANCE CRSR 2: Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) von der der letzten Position der Zeile um eins nach rechts. Die Werte von wlnp, wx und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 4. Zeile des Bildschirmspeichers (Zeilennummer 3) zeigen, wx muss null und wy um eins erhoeht sein. TEST BACK CRSR 1: Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) von einer Position inmitten der Zeile um eins nach links. Die Werte von wlnp, wx und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 3. Zeile des Bildschirmspeichers (Zeilennummer 2) zeigen, wx muss um eins verringert und wy darf nicht veraendert sein. TEST BACK CRSR 2: Bewegt den Cursor in der 3. Zeile (Zeilennummer 2) von der der ersten Position der Zeile um eins nach links. Die Werte von wlnp, wx und wy stehen in den Vergleichswerten; wlnp muss auf den Anfang der 2. Zeile des Bildschirmspeichers (Zeilennummer 1) zeigen, wx muss 39 und wy um eins verringert sein. TEST DELETE CHAR 1: Loescht in der 3. Zeile (Zeilennummer 2) ein Zeichen (der Cursor befindet sich innerhalb der Zeile). Der Wert von wx und der aktuelle Farbwert stehen in den Ver- gleichswerten; wx muss um eins verringert sein. Die Zeichen ab der Cursorposition muessen um eins nach links verschoben sein und den richtigen Farbwert haben (es wird nur das erste Zeichen ueberprueft). Das letzte Zeichen der Zeile muss ein Leerzeichen in der aktuellen Farbe sein. TEST DELETE CHAR 2: Loescht in der 3. Zeile (Zeilennummer 2) ein Zeichen (der Cursor befindet sich am Anfang der Zeile). Der Wert von wx steht in den Vergleichswerten und darf sich nicht verringert haben. Die Zeichen in der Zeile und ihre Farbe duerfen sich nicht veraendert haben (es wird nur das erste und letzte Zeichen ueberprueft). TEST INSERT CHAR 1: Fuegt in der 3. Zeile (Zeilennummer 2) ein Zeichen ein (der Cursor befindet sich am Anfang der Zeile). Der Wert von wx und der aktuelle Farbwert stehen in den Ver- gleichswerten; wx muss unveraendert sein. Die Zeichen ab einer Stelle nach der Cursorposition muessen um eins nach rechts verschoben sein und den richtigen Farbwert haben (es wird nur das erste und letzte Zeichen ueberprueft). Das Zeichen an der Cursorposition muss ein Leerzeichen in der aktuellen Farbe sein. TEST INSERT CHAR 2: Fuegt in der 3. Zeile (Zeilennummer 2) ein Zeichen ein (der Cursor befindet sich am Ende der Zeile). Der Wert von wx und der aktuelle Farbwert stehen in den Ver- gleichswerten; wx muss unveraendert sein. Das letzte Zeichen der Zeile muss ein Leerzeichen in der aktuellen Farbe sein. TEST SETUP SCR PRINT: Gibt in der 3. Zeile (Zeilennummer 2) ein normales und ein inverses Zeichen in roter Farbe aus. Der aktuelle Farbwert steht in den Vergleichswerten. Die Bild- schirmcodes und die Farbwerte fuer die beiden Zeichen muessen korrekt sein. TEST OUTPUT REGISTERS: Gibt ein Zeichen aus und setzt vorher das X- und Y-Register. Die Werte der drei Register stehen in den Vergleichswerten; das A-Register muss den Wert des Zeichens und das X- und Y-Register die zuvor gesetzten Werte enthalten. TEST UNSHIFTED CHARS: Gibt die Buchstaben/Grafikzeichen ohne Umschalttaste aus (ASCII 32-127). Die Bildschirmcodes muessen korrekt sein (es werden nur die ASCII-Werte 32, 64 und 96 ueberprueft). TEST SHIFTED CHARS: Gibt die Buchstaben/Grafikzeichen mit Umschalttaste aus (ASCII 160-255). Die Bildschirmcodes muessen korrekt sein (es werden nur die ASCII-Werte 160, 192 und 224 ueberprueft). TEST RETURN: Gibt in der 3. Zeile (Zeilenindex 2) den ASCII-Wert 13 fuer einen Zeilenumbruch aus (der Cursor befindet sich in der Mitte der Zeile). Die Werte von wx und wy stehen in den Vergleichswerten; wx muss null und wy um eins erhoeht sein. TEST SHIFT RETURN: Gibt in der 3. Zeile (Zeilenindex 2) den ASCII-Wert 141 fuer einen rueckwaertigen Zeilenumbruch aus (der Cursor befindet sich in der Mitte der Zeile). Die Werte von wx und wy stehen in den Vergleichswerten; wx muss null und wy um eins verringert sein. TEST MOVE CRSR: Gibt nacheinander die ASCII-Werte 29 (Cursor right), 17 (Cursor down), 157 (Cursor left), 145 (Cursor up) und 19 (Home) aus (der Cursor wird einmal im Kreis bewegt und steht am Schluss oben/links). Die Werte von wx und wy stehen in den Vergleichswerten (insgesamt 5 Wertpaare); die Wertpaare von wx/wy muessen die korrekten Werte haben. TEST CLR: Gibt den ASCII-Wert 147 (CLR) aus. Das Fenster muss leer sein. Es wird nur das nur das erste und letzte Zeichen des Fensters ueberprueft. TEST RVS: Gibt nacheinander die ASCII-Werte 65 ("A"), 18 (RVS ON), 66 ("B"), 146 ("RVS OFF") und 67 ("C") aus. Die Bildschirmcodes muessen korrekt sein. TEST COLORS: Gibt die 15 Buchstaben "P" bis "A" (ASCII-Werte 80 bis 65) in den Farbcodes 15 bis 0 (ASCII-Werte 155 bis 149, 129, 158, 31, 30, 156, 159, 28, 5 und 144) aus. Die Werte im Farb-RAM muessen korrekt sein (15 bis 0). TEST DEL: Gibt in der 3. Zeile (Zeilennummer 2) den ASCII-WERT 20 (DEL) aus. Der Wert von wx wird in den Vergleichswerten uebergeben; er muss um eins verringert sein und das letzte Zeichen der Zeile muss ein Leerzeichen sein. TEST INS: Gibt in der 3. Zeile (Zeilennummer 2) den ASCII-WERT 148 (INS) aus. Der Wert von wx wird in den Vergleichswerten uebergeben; er muss unveraendert sein und an der Cursor-Position muss ein Leerzeichen stehen. TEST UNKNOWN: Platziert den Cursor mit ASCII 29 und ASCII 17 in der 2. Zeile (Zeilennumer 1 und Spaltennummer 1) und gibt dann einen unbekannten Wert (ASCII 1) aus. Die Werte von wlnp, wx, wy und invers stehen in den Vergleichswerten und duerfen sich nicht veraendert haben. TEST PUT ROW COL: Platziert den Cursor in der Mitte der 3. Zeile (Zeilen- nummer 2). Die Werte fuer wlnp, wx und wy stehen in den Vergleichs- werten; wlnp muss in die 3. Zeile (Zeilennummer 2) zeigen, wx und wy auf die im Y-Reg und X-Reg uebergebenen Werte. TEST SET WPTRS: Ermittelt die Adresse in der Tabelle fuer die Bildschirm- zeiger, in der die Zeiger fuer die erste und letzte Zeile stehen. Die Werte fuer wptrs stehen in den Vergleichswerten; der Inhalt der Adresse, auf die wptrs zeigt muss einmal null sein und einmal 960 (24*40) sein. TEST SET DEFAULT: Ruft die Standardkonfiguration fuer ein grosses auf. Die Werte fuer wptrs, sptrs, wrows, srows, sx und sy stehen in den Vergleichswerten; der Inhalt der Adresse, auf die wptrs und sptrs zeigen, muss null sein; wrows und srows muessen den Wert 24 haben und sx und sy den Wert null. TEST WINIT/WQUIT: Richtet ein Fenster mit winit ein und gibt das Zeichen "A" aus. Durch das Loeschen des Bildschirms in winit werden wlnp, wx und wy gesetzt. Die Werte fuer wlnp, wx und wy stehen in den Vergleichs- werten; wlnp muss auf den Anfang des Bildschirmspeichers zeigen, wx muss eins, wy muss null sein; oben/links muss der Bildschirmcode fuer "A" stehen. TEST WSPLIT 1: Teilt den Bildschirm in der 9. Zeile (Zeilennummer 8) in zwei Fenster auf. Die Werte fuer wlnp, wx, wy, wrows, sptrs, srows, sx und sy stehen in den Vergleichswerten; wlnp muss auf den Anfang des Bildschirmspeichers zeigen, wx und wy muessen null sein; wrows muss den Wert 7 haben; der Inhalt der Adresse, auf die sptrs zeigt, muss 360 (9*40) sein; srows muss den Wert 15 (25 Zeilen minus 8 Zeilen fuer das obere Fenster minus 1 Zeile fuer die Trennlinie und minus 1, weil srows auch bei null beginnt) haben; sx und sy muessen ebenfalls null sein; die Trennline muss in der 9. Zeile (Zeilennummer 8) gezeichnet worden sein (nur das erste und letzte Zeichen der Zeile wird ueberprueft). TEST WSPLIT 2: Gibt oben/links ein "A" aus und versucht, den Bildschirm in der ersten bzw. letzten Zeile zu teilen. Die Werte fuer wrows und srows stehen in den Vergleichs- werten; sie muessen alle den Wert 24 haben; das "A" oben/links darf nicht geloescht worden sein. TEST WSWITCH: Teilt den Bildschirm in der 7. Zeile (Zeilennummer 6) und gibt im oberen Fenster in den ersten drei Zeilen "A", "B" und "C" aus, sowie im unteren Fenster ein "D" Die Werte von sptrs, srows, sx und sy stehen in den Ver- gleichswerten; der Inhalt der Adresse, auf die sptrs zeigt, muss null sein; srows muss den Wert 5, sx den Wert 1 und sy den Wert 2 haben; in den ersten drei Zeilen des Bildschirm- speichers muessen die Bildschirmcodes fuer "A", "B" und "C" stehen und in der 7. Zeile (Zeilennummer 6) muss der Bild- schirmcode fuer "D" stehen. TEST WSPLIT 3: Teilt den Bildschirm in der 2. Zeile (Zeilennummer 1) in zwei Fenster auf. Die Werte fuer wlnp, wx, wy, wrows, sptrs, srows, sx und sy stehen in den Vergleichswerten; wlnp muss auf den Anfang des Bildschirmspeichers zeigen, wx und wy muessen null sein; wrows muss den Wert 0 haben; der Inhalt der Adresse, auf die sptrs zeigt, muss 80 (2*40) sein; srows muss den Wert 2 (25 Zeilen minus 1 Zeile fuer das obere Fenster minus 1 Zeile fuer die Trennlinie und minus 1, weil srows auch bei null beginnt) haben; sx und sy muessen ebenfalls null sein. TEST WSPLIT 4: Teilt den Bildschirm in der 24. Zeile (Zeilennummer 23) in zwei Fenster auf. Die Werte fuer wlnp, wx, wy, wrows, sptrs, srows, sx und sy stehen in den Vergleichswerten; wlnp muss auf den Anfang des Bildschirmspeichers zeigen, wx und wy muessen null sein; wrows muss den Wert 22 haben (25 Zeilen minus 1 Zeile fuer das untere Fenster minus 1 Zeile fuer die Trennlinie und minus 1, weil srows auch bei null beginnt); der Inhalt der Adresse, auf die sptrs zeigt, muss 960 (24*40) sein; srows muss den Wert 0 haben; sx und sy muessen ebenfalls null sein. TEST WUNSPLIT: Teilt den Bildschirm in der 7. Zeile (Zeilennummer 6) und stellt danach die Standardkonfiguration wieder her. Die Werte fuer wlnp, wx, wy, wrows und srows stehen in den Vergleichswerten; wlnp muss auf den Anfang des Bildschirm- speichers zeigen, wx und wy muessen null sein; wrows und srows muessen beide den Wert 24 haben. TEST HCOPY 1: Teilt den Bildschirm in der 6. Zeile (Zeilennummer 5), fuellt den oberen Bildschirm mit Text und druckt in aus Das Ergebnis ist im Drucker und kann mit der Bildschirm- ausgabe verglichen werden. TEST HCOPY 2: Teilt den Bildschirm in der 2. Zeile (Zeilennummer 1), fuellt den oberen Bildschirm mit Text und druckt in aus Das Ergebnis ist im Drucker und kann mit der Bildschirm- ausgabe verglichen werden.