Platinenausdruck im Maßstab 1:1 und 2:1 - Druckprogramm für Platine ST

Wer schon einmal einfache Platinen mit dem Programm „Platine ST“ von Data-Becker erstellen wollte, kennt das Problem: Die Vorlage kann nur im Maßstab 2 : 1 und mit einem 9-Nadel-Drucker ausgedruckt werden.

Für Besitzer eines 24-Nadel-Druckers (z. B. NEC P6) ergibt sich deshalb die Frage: Warum nicht mit 24-Nadel-Qualität drucken und so Platinen-Layouts erstellen, die als Vorlage für die einfache Herstellung einer Platine dienen können?

Mit dem hier vorgestellten Programm ist es möglich, die mit dem Programm „Platine ST“ erstellten Platinen-Files auf einem 24-Nadel-Drucker auszudrucken. Der Ausdruck kann direkt zur Erstellung von Folien mit guter Qualität benutzt werden (Bild 1). Der Maßstab kann zwischen 1 : 1 und 2 : 1 gewählt werden.

Das Programm ist mit Pascal Plus von CCD geschrieben und benutzt die Standardein- und -ausgaben unter TOS; damit sollte die Kompatibilität zu anderen Compilern gegeben sein. Sie müssen also das mit Pascal übersetzte ’PLTDRUCK.PRG’ anschließend noch umbenennen in ’PLTDRUCK.TOS’.

Bild 1: Platinenausdruck im Maßstab 1 : 1

Bedienung

Sie erstellen die Platine mit „Platine ST“ und sichern das ’ * .PLT’-File auf Diskette. Verlassen Sie dann „Platine ST“ und rufen Sie ’PLTDRUCK.TOS’ auf. Gleich zu Anfang müssen Sie nun den Namen des zu druckenden Files angeben (vorher merken). Nachdem alle Daten eingelesen sind, kommt man in das Hauptmenü und kann ein (N)eues File einlesen oder mit der Eingabe von (E) das Programm beenden. Bei Eingabe von (D) können die (O)berseite, die (U)nterseite oder nur der (B)ohrplan ausgedruckt werden. Beide Seiten werden in der Draufsicht ausgedruckt (Bauteileseite). Zusätzlich muß man noch den Maßstab angeben, und ob (S)ingle Density, d. h. jede Zeile einmal oder (D)ouble Density, d. h. zweimal gedruckt werden soll: Einmal Drucken empfiehlt sich beim Überprüfen der Platine, zweimal bei der endgültigen Vorlage, da nur im doppelten Druck eine qualitativ gute Kopie erstellt werden kann.

Der aktuelle Druckvorgang kann durch das Drücken einer beliebigen Taste unterbrochen werden und mit der Eingabe von (E) ganz abgebrochen werden, womit man wieder im Hauptmenü landet.

Programmbeschreibung

Jede Seite der Platine wird in 124 x 76 Rasterpunkte unterteilt, wodurch 9.424 Segmente pro Seite entstehen. Jedes Muster eines Segmentes hat einen Code zwischen 6 und 45 (0 als leeres Segment, 40 verschiedene Muster sind zugelassen), der unter dem Ort auf der Platine als Index im Array Platine [X + 128 * 'Y] abgespeichert ist. Die unteren 8 Bit des Integerwertes enthalten den Code für die Oberseite, die oberen den Code für die Unterseite.

Die Kantenlänge jedes Segmentes ist 0,05 Inch. Da der Drucker in s'einer hohen Auflösung einen Nadelabstand von 1/180 Inch hat, kann ein Segment mit 9 Zeilen und 9 Spalten gedruckt werden.

(9 X 1/180 = 0.05), im Maßstab 2 : 1 mit je 18 Zeilen und Spalten.

Um notwendige Überlappungen an den Ecken zu erreichen, benötigt man jedoch 13 (bzw. 24 in der Vergrößerung) waagerechte Zeilen. Bei dem 1 : 1-Ausdruck werden, da spaltenweise gedruckt wird, von den 24 Nadeln nur 13 wirklich benutzt. Hierbei können im Prinzip also alle Drucker mit mindestens 13 Nadeln verwendet werden, wobei sich bei anderen Druckern jedoch die Byte-Zusammensetzung der Graphikmatrizen von der hier verwendeten 3-Byte-Übertragung unterscheiden kann.

In der Procedure Init werden die jedem Segment entsprechenden Druckmatrizen erstellt, wobei jeder Spaltenwert aus drei Bytes zusammengesetzt werden muß und jedes Bit einem gesetzten Punkt entspricht (Bild 3).

Wenn Sie bis hierher alles verstanden haben, können Sie sich Ihre Druckmatrizen selbst erstellen, was z. B. bei der Größe und Form der Lötaugen von Interesse sein kann.

In diesem Programm werden die Lötaugen etwas in Spaltenrichtung verlängert, sofern das benachbarte Segment nicht belegt ist. Dies ist besonders interessant für größere Bohrungen als Normaldurchmesser 0,8 mm.

Um auch im Maßstab 2 : 1 mit 24 Nadeln und optimaler Qualität drucken zu können, muß die Punktematrix neu erstellt werden. Bei einfacher Umrechnung der 1: 1-Matrix würden die 24 Nadeln nicht ausreichen, zudem würden unschöne Schrägen entstehen. Die einfachste Lösung ist eine neue 18 x 18-Punktmatrix mit 6 Hilfslinien. Die Matrizen dazu werden ebenfalls in der Procedure-Init definiert, wobei jetzt aber für die drei Bytes einer Spalte ein long_integer Datentyp (4 byte)

benutzt wird, was zwar mehr Speicherplatz verbraucht, die Übersetzung in Graphikpunkte aber vereinfacht (vergl. Procedure M1 und M2).

Eine Besonderheit trat hier beim CCD-Compiler auf: Wird einer long_integer-Variablen ein Datenwort der Form $00fxxx zugewiesen und wird sie dann um 16 Bit nach rechts verschoben, so interpretiert der Compiler dies falsch (aus 00 wird ff). In diesem Fall sollte man das Datenwort als $100fxxx eingeben, damit klar ist, daß es sich um einen 4-Byte-Wert handelt, von dem das erste Byte sowieso nicht mitbenutzt wird.

Platinenausdruck im Maßstab 2 : 1

Einstellung am Drucker

Um beim Druck einen guten schwarz-weiß-Kontrast zu erreichen, muß die Andruckkraft des Druckers (copy control lever) optimal eingestellt sein. Ist der Druckkopf zu dicht am Papier, entstehen bei sehr dicht liegenden Leiterbahnen durch den Transport des Farbbandes Streifen. Ist der Kopf zu weit entfernt, reicht die Druckqualität trotz zweimaligen Drückens nicht aus.

Bei meinen Experimenten mit dem P6 erwies sich die Stellung 5 mit 2 Blatt Papier als am günstigsten.

Damit das Papier nicht verrutscht, muß mit Einzelblatteinzug gearbeitet werden.

Eine ganze Europakarte (160 mm lang) paßt im Maßstab 2 : 1 (320 mm lang) allerdings nicht mehr auf ein DIN A4-Blatt (<300 mm). Sie müssen sich dann längeres Papier besorgen. Qualitätsendlospapier mit dem Einzelblatteinzug bedrucken oder einfach großformatigeres Papier falten (bei schmalem Drucker).

Falls Sie wider Erwarten weiße Streifen (wie beim Ausdruck mit Originalprogramm und 9-Nadeldrucker) in Ihren Leiterbahnen finden, weist dies auf einen Fehler an Ihrem Druckkopf hin.

Insbesondere im Maßstab 2 : 1 werden alle 24 Nadeln benutzt; Sie können dieses Programm ’by the way’ auch als Test für Ihren Drucker verwenden.

G. Stresing

PROGRAM PLTDRUCK;

(* PROGRAMM ZUM AUSDRUCKEN DER MIT PLATINE ST ERSTELLTEN PLATINENFILES 
	*.PLT . VERSION: 2/MW	2/87

	MASSSTAB 1 : 1 ODER 2 : 1

							G.STRESING	*)

CONST
	XWEITE = 125;
	YWEITE = 77;

VAR
	MASS				:	INTEGER;
	XMATR,YMATR			:	INTEGER;	(* FUNKTEMATRIX *)
	XPOS,YPOS,I,INDEX	:	INTEGER;
	ANT,SEITE,ABANT,DD	:	CHAR;
	FNAME				:	STRING;
	FILEDA,ENDE,ZWEITE	:	BOOLEAN;
	PLATINE				:	ARRAY[0..9985] OF INTEGER; (*19970/2*)
	MATRIX1				:	ARRAY[0..50,1..9] OF INTEGER;
	MATRIX2				:	ARRAY[0..50,1..18] OF LONGINTEGER;
	PFILE				:	FILE OF INTEGER;
	DRUCK				:	TEXT;

PROCEDURE IO_CHECK(A:BOOLEAN);
	EXTERNAL;

PROCEDURE INITM1;
	VAR K,J : INTEGER;

	BEGIN
		FILEDA := FALSE;
		IO_CHECK(FALSE);

		(* MATRITZEN FÜR M 1:1 *)
		FOR K := 0 TO 5 DO 
			FOR J := 1 TO 9 DO 
				MATRIX1[K,J] := 0;

MATRIX1[6,1] := $0380; MATRIX1[6,2] := $0380; MATRIX1[6,3] := $0380;
MATRIX1[6,4] := $0380; MATRIX1[6,5] := $0380; MATRIX1[6,6] := $0380;
MATRIX1[6,7] := $0380; MATRIX1[6,8] := $0380; MATRIX1[6,9] := $0380;

MATRIX1[7,1] := $0; MATRIX1[7,2] := $0; MATRIX1[7,3] := $0;
MATRIX1[7,4] := $01FF0; MATRIX1[7,5] := $01EE0; MATRIX1[7,6] := $01FF0; 
MATRIX1[7,7] := $0; MATRIX1[7,8] := $0; MATRIX1[7,9] := $0;

MATRIX1[8,1] := $0078; MATRIX1[8,2] := $00F0; MATRIX1[8,3] := $01E0;
MATRIX1[8,4] := $03C0; MATRIX1[8,5] := $0780; MATRIX1[8,6] := $0F00;
MATRIX1[8,7] := $1E00; MATRIX1[8,8] := $3C00; MATRIX1[8,9] := $7800;

MATRIX1[9,1] := $7800; MATRIX1[9,2] := $3C00; MATRIX1[9,3] := $1E00;
MATRIX1[9,4] := $0F00; MATRIX1[9,5] := $0780; MATRIX1[9,6] := $03C0;
MATRIX1[9,7] := $01E0; MATRIX1[9,8] := $00F0; MATRIX1[9,9] := $0078;

MATRIX1[13,1] := $0380; MATRIX1[13,2] := $0380; MATRIX1[13,3] := $0380;
MATRIX1[13,4] := $1F80; MATRIX1[13,5] := $1F80; MATRIX1[13,6] := $1F80;
MATRIX1[13,7] := $0; MATRIX1[13,8] := $0; MATRIX1[13,9] := $0;

MATRIX1[12,1] := $0; MATRIX1[12,2] := $0; MATRIX1[12,3] := $0;
MATRIX1[12,4] := $1F80; MATRIX1[12,5] := $1F80; MATRIX1[12,6] := $1F80;
MATRIX1[12,7] := $0380; MATRIX1[12,8] := $0380; MATRIX1[12,9] := $0380;

MATRIX1[11,1] := $0; MATRIX1[11,2] := $0; MATRIX1[11,3] := $0;
MATRIX1[11,4] := $03F0; MATRIX1[11,5] := $03F0; MATRIX1[11,6] := $03F0;
MATRIX1[11,7] := $0380; MATRIX1[11,8] := $0380; MATRIX1[11,9] := $0380;

MATRIX1[10,1] := $0380; MATRIX1[10,2] := $0380; MATRIX1[10,3] := $0380;
MATRIX1[10,4] := $03F0; MATRIX1[10,5] := $03F0; MATRIX1[10,6] := $03F0;
MATRIX1[10,7] := $0; MATRIX1[10,8] := $0; MATRIX1[10,9] := $0;

MATRIX1[15,1] := $7800; MATRIX1[15,2] := $3000; MATRIX1[15,3] := $1E00; 
MATRIX1[15,4] := $0F80; MATRIX1[15,5] := $0780; MATRIX1[15,6] := $0380;
MATRIX1[15,7] := $0380; MATRIX1[15,8] := $0380; MATRIX1[15,9] := $0380;

MATRIX1[14,1] := $0078; MATRIX1[14,2] := $00F0; MATRIX1[14,3] := $01E0;
MATRIX1[14,4] := $03E0; MATRIX1[14,5] := $0300; MATRIX1[14,6] := $0380;
MATRIX1[14,7] := $0380; MATRIX1[14,8] := $0380; MATRIX1[14,9] := $0380;

MATRIX1[20,1] := $7800; MATRIX1[20,2] := $3000; MATRIX1[20,3] := $1E00;
MATRIX1[20,4] := $0FF0; MATRIX1[20,5] := $07F0; MATRIX1[20,6] := $03F0;
MATRIX1[20,7] := $0; MATRIX1[20,8] := $0; MATRIX1[20,9] := $0;

MATRIX1[21,1] := $0; MATRIX1[21,2] := $0; MATRIX1[21,3] := $0;
MATRIX1[21,4] := $03F0; MATRIX1[21,5] := $07F0; MATRIX1[21,6] := $0FF0;
MATRIX1[21,7] := $1E00; MATRIX1[21,8] := $3000; MATRIX1[21,9] := $7800;

MATCDC1[19,1] := $0380; MATRIX1[19,2] := $0380; MATRIX1[19,3] := $0380;
MATRIX1[19,4] := $0380; MATRIX1[19,5] := $0300; MATRIX1[19,6] := $0300;
MATRIX1[19,7] := $01E0; MATRIX1[19,8] := $00F0; MATRIX1[19,9] := $0078;

MATRIX1[18,1] := $0380; MATRIX1[18,2] := $0380; MATRIX1[18,3] := $0380;
MATRIX1[18,4] := $0380; MATRIX1[18,5] := $0780; MATRIX1[18,6] := $0F00;
MATRIX1[18,7] := $1E00; MATRIX1[18,8] := $3000; MATRIX1[18,9] := $7800;

MATRIX1[16,1] := $0078; MATRIX1[16,2] := $00F0; MATRIX1[16,3] := $0110;
MATRIX1[16,4] := $1FC0; MATRIX1[16,5] := $1F80; MATRIX1[16,6] := $1F00;
MATRIX1[16,7] := $0; MATRIX1[16,8] := $0; MATRIX1[16,9] := $0;

MATRIX1[17,1] := $0; MATRIX1[17,2] := $0; MATRIX1[17,3] := $0;
MATRIX1[17,4] := $1F00; MATRIX1[17,5] := $1F80; MATRIX1[17,6] := $1FC0;
MATRIX1[17,7] := $01E0; MATRIX1[17,8] := $00F0; MATRIX1[17,9] := $0078;

MATRIX1[22,1] := $0FE0; MATRIX1[22,2] := $1FF0; MATRIX1[22,3] := $1EF0;
MATRIX1[22,4] := $1070; MATRIX1[22,5] := $1830; MATRIX1[22,6] := $1070;
MATRIX1[22,7] := $1EF0; MATRIX1[22,8] := $1FF0; MATRIX1[22,9] := $0FE0;

MATRIX1[23,1] := $0; MATRIX1[23,2] := $0; MATRIX1[23,3] := $0;
MATRIX1[23,4] := $0; MATRIX1[23,5] := $1FF0; MATRIX1[23,6] := $0;
MATRIX1[23,7] := $0; MATRIX1[23,8] := $0; MATRIX1[23,9] := $0;

MATRIX1[24,1] := $0FE0; MATRIX1[24,2] := $1FF0; MATRIX1[24,3] := $1EF0;
MATRIX1[24,4] := $1070; MATRIX1[24,5] := $1830; MATRIX1[24,6] := $1070;
MATRIX1[24,7] := $1EF0; MATRIX1[24,8] := $1FF0; MATRIX1[24,9] := $0FE0;

MATRIX1[25,1] := $1FF0; MATRIX1[25,2] := $1FF0; MATRIX1[25,3] := $1FF0;
MATRIX1[25,4] := $1FF0; MATRIX1[25,5] := $1FF0; MATRIX1[25,6] := $1FF0;
MATRIX1[25,7] := $1FF0; MATRIX1[25,8] := $1FF0; MATRIX1[25,9] := $1FF0;

MATRIX1[26,1] := $0380; MATRIX1[26,2] := $0380; MATRIX1[26,3] := $0380;
MATRIX1[26,4] := $1FF0; MATRIX1[26,5] := $1FF0; MATRIX1[26,6] := $1FF0;
MATRIX1[26,7] := $0; MATRIX1[26,8] := $0; MATRIX1[26,9] := $0;

MATRIX1[29,1] := $0380; MATRIX1[29,2] := $0380; MATRIX1[29,3] := $0380;
MATRIX1[29,4] := $1F80; MATRIX1[29,5] := $1F80; MATRIX1[29,6] := $1F80;
MATRIX1[29,7] := $0380; MATRIX1[29,8] := $0380; MATRIX1[29,9] := $0380;

MATRIX1[28,1] := $0; MATRIX1[28,2] := $0; MATRIX1[28,3] := $0; 
MATRIX1[28,4] := $1FF0; MATRIX1[28,5] := $1FF0; MATRIX1[28,6] := $1FF0;
MATRIX1[28,7] := $0380; MATRIX1[28,8] := $0380; MATRIX1[28,9] := $0380;

MATRIX1[27,1] := $0380; MATRIX1[27,2] := $0380; MATRIX1[27,3] := $0380;
MATRIX1[27,4] := $03F0; MATRIX1[27,5] := $03F0; MATRIX1[27,6] := $03F0;
MATRIX1[27,7] := $0380; MATRIX1[27,8] := $0380; MATRIX1[27,9] := $0380;

MATRIX1[30,1] := $1FF0; MATRIX1[30,2] := $1FF0; MATRIX1[30,3] := $1FF0;
MATRIX1[30,4] := $1FE0; MATRIX1[30,5] := $1FF0; MATRIX1[30,6] := $0;
MATRIX1[30,7] := $0; MATRIX1[30,8] := $0; MATRIX1[30,9] := $0;

MATRIX1[31,1] := $0; MATRIX1[31,2] := $0; MATRIX1[31,3] := $0;
MAT0Dd [31,4] := $0; MATRIX1[31,5] := $1FF0; MATRIX1[31,6] := $1FF0; 
MATRIX1[31,7] := $1FF0; MATRIX1[31,8] := $1FF0; MATRIX1[31,9] := $1FF0;

MATRIX1[33,1] := $1F0; MATRIX1[33,2] := $1F0; MATRIX1[33,3] := $1F0; 
MATRIX1[33,4] := $1F0; MATRIX1[33,5] := $1F0; MATRIX1[33,6] := $1F0; 
MATRIX1[33,7] := $1F0; MATRIX1[33,8] := $1F0; MATRIX1[33,9] := $1F0;

MATRIX1[32,1] := $01F0; MATRIX1[32,2] := $01F0; MATRIX1[32,3] := $01F0;
MATRIX1[32,4] := $01F0; MATRIX1[32,5] := $01F0; MATRIX1[32,6] := $01F0;
MATRIX1[32,7] := $01F0; MATRIX1[32,8] := $01F0; MATRIX1[32,9] := $01F0;

MATRIX1[35,1] := $1000; MATRIX1[35,2] := $1800; MATRIX1[35,3] := $1000;
MATRIX1[35(4] := $1E00; MATRIX1[35,5] := $1F00; MATRIX1[35,6] := $1F80;
MATRIX1[35,7] := $1FC0; MATRIX1[35,8] := $1FE0; MATRIX1[35,9] := $1FF0;

MATRIX1[34,1] := $0010; MATRIX1[34,2] := $0030; MATRIX1[34,3] := $0070;
MATRIX1[34,4] := $00F0; MATRIX1[34,5] := $01F0; MATRIX1[34,6] := $03F0;
MATRIX1[34,7] := $07F0; MATRIX1[34,8] := $0FF0; MATRIX1[34,9] := $1FF0;

MATRIX1[37,1] := $1FF0; MATRIX1[37,2] := $0FF0; MATRIX1[37,3] := $07F0;
MATRIX1[37,4] := $03F0; MATRIX1[37,5] := $01F0; MATRIX1[37,6] := $00F0;
MATRIX1[37,7] := $0070; MATRIX1[37,8] := $0030; MATRIX1[37,9] := $0010;

MATRIX1[36,1] := $1FF0; MATRIX1[36,2] := $1FE0; MATRIX1[36,3] := $1FC0;
MATRXX1[36,4] := $1F80; MATRIX1[36,5] := $1F00; MATRIX1[36,6] := $1E00;
MATRIX1[36,7] := $1000; MATRIX1[36,8] := $1800; MATRIX1[36,9] := $1000;

MATRIX1[38,1] := $0; MATRIX1[38,2] := $0; MATRIX1[38,3] := $0; 
MATRIX1[38,4] := $0; MATRIX1[38,5] := $0380; MATRIX1[38,6] := $0380; 
MATRIX1[38,7] := $0380; MATRIX1[38,8] := $0380; MATRIX1[38,9] := $0380;

MATRIX1[45,1] := $0; MATRIX1[45,2] := $0; MATRIX1[45,3] := $0; 
MATRIX1[45,4] := $0300; MATRIX1[45,5] := $0700; MATRIX1[45,6] := $0F00;
MATRIX1[45,7] := $1E00; MATRIX1[45,8] := $3000; MATRIX1[45,9] := $7800;

MATRIX1[44,1] := $0; MATRIX1[44,2] := $0; MATRIX1[44,3] := $0; MATRIX1[44,4] := $1F00; MATRIX1[44,5] := $1F00; MATRIX1[44,6] := $1F00;
MATRIX1[44,7] := $0; MATRIX1[44,8] := $0; MATRIX1[44,9] := $0;

MATRIX1[43,1] := $7800; MATRIX1[43,2] := $3C00; MATRIX1[43,3] := $1E00;
MATRIX1[43,4] := $0F00; MATRIX1[43,5] := $0700; MATRIX1[43,6] := $0300;
MATRIX1[43,7] := $0; MATRIX1[43,8] := $0; MATRIX1[43,9] := $0;

MATRIX1[42,1] := $0380; MATRIX1[42,2] := $0380; MATRIX1[42,3] := $0380;
MATRIX1[42,4] := $0380; MATRIX1[42,5] := $0380; MATRIX1[42,6] := $0;
MATRIX1[42,7] := $0; MATRIX1[42,8] := $0; MATRIX1[42,9] := $0;

MATRIX1[41,1] := $0078; MATRIX1[41,2] := $00F0; MATRIX1[41,3] := $01E0;
MATRIX1[41,4] := $03C0; MATRIX1[41,5] := $0380; MATRIX1[41,6] := $0180;
MATRIX1[41,7] := $0; MATRIX1[41,8] := $0; MATRIX1[41,9] := $0;

MATRIX1[40,1] := $0; MATRIX1[40,2] := $0; MATRIX1[40,3] := $0;
MATRIX1[40,4] := $01F0; MATRIX1[40,5] := $01F0; MATRIX1[40,6] := $01F0;
MATRIX1[40,7] := $0; MATRIX1[40,8] := $0; MATRIX1[40,9] := $0;

MATRIX1[39,1] := $0; MATRIX1[39,2] := $0; MATRIX1[39,3] := $0;
MATRIX1[39,4] := $0180; MATRIX1[39,5] := $0380; MATRIX1[39,6] := $03C0;
MATRIX1[39,7] := $01H5; MATRIX1[39,8] := $00F0; MATRIX1[39,9] := $0078;

END;

PROCEDURE INITM2;
	VAR J,K : INTEGER;
	BEGIN
	(*MATRITZEN FÜR M 2:1*)

	FOR K := 0 TO 5 DO 
		FOR J := 1 TO 18 DO 
			MATRIX2[K,J] := 0;

	MATRIX2[6,1]:=$007E00;MATRIX2[6,2]:=$007E00;MATRIX2[6,3]:=$007E00;
	MATRIX2[6,4]:=$007E00;MATRIX2[6,5]:=$007E00;MATRIX2[6,6]:=$007E00;
	MATRIX2[6,7]:=$007E00;MATRIX2[6,8]:=$007E00;MATRIX2[6,9]:=$007E00;
	MATRIX2[6,10]:=$007E00;MATRIX2[6,11]:=$007E00;MATRIX2[6,12]:=$007E00;
	MATRIX2[6,13]:=$007E00;MATRIX2[6,14]:=$007E00;MATRIX2[6,15]:=$007E00;
	MATRIX2[6,16]:=$007E00;MATRIX2[6,17]:=$007E00;MATRIX2[6,18]:=$007E00;

	MATRIX2[7,1]:=$000000;MATRIX2[7,2]:=$000000;MATRIX2[7,3]:=$000000;
	MATRIX2[7,4]:=$000000;MATRIX2[7,5]:=$000000;MATRIX2[7,6]:=$000000;
	MATRIX2[7,7]:=$1FFFF8;MATRIX2[7,8]:=$1FFFF8;MATRIX2[7,9]:=$1FFFF8;
	MATRIX2[7,10]:=$1FFFF8;MATRIX2[7,11]:=$1FFFF8;MATRIX2[7,12]:=$1FFFF8;
	MATRIX2[7,13]:=$000000;MATRIX2[7,14]:=$000000;MATRIX2[7,15]:=$000000;
	MATRIX2[7,16]:=$000000;MATRIX2[7,17]:=$000000;MATRIX2[7,18]:=$000000;

	MATRIX2[8,1]:=$00007F;MATRIX2[8,2]:=$0000FE;MATRIX2[8,3]:=$0001FC;
	MATRIX2[8,4]:=$0003F8;MATRIX2[8,5]:=$0007F0;MATRIX2[8,6]:=$000FE0;
	MATRIX2[8,7]:=$001FC0;MATRIX2[8,8]:=$003F80;MATRIX2[8,9]:=$007F00;
	MATRIX2[8,10]:=$100FE00;MATRIX2[8,11]:=$01FC00;MATRIX2[8,12]:=$03F800;
	MATRIX2[8,13]:=$07F000;MATRIX2[8,14]:=$0FE000;MATRIX2[8,15]:=$1FC000;
	MATRIX2[8,16]:=$3F8000;MATRIX2[8,17]:=$7F0000;MATRIX2[8,18]:=$FE0000;

	MATRIX2[9,1]:=$FE0000;MATRIX2[9,2]:=$7F0000;MATRIX2[9,3]:=$3F8000;
	MATRIX2[9,4]:=$1FC000;MATRIX2[9,5]:=$0FE000;MATRIX2[9,6]:=$07F000;
	MATRIX2[9,7]:=$03F800;MATRIX2[9,8]:=$01FC00;MATRIX2[9,9]:=$100FE00;
	MATRIX2[9,10]:=$007F00;MATRIX2[9,11]:=$003F80;MATRIX2[9,12]:=$00FC0;
	MATRIX2[9,13]:=$000FE0;MATRIX2[9,14]:=$0007F0;MATRIX2[9,15]:=$0003F8;
	MATRIX2[9,16]:=$0001FC;MATRIX2[9,17]:=$0000FE;MATRIX2[9,18]:=$00007F;

	MATRIX2[10,1]:=$007E00;MATRIX2[10,2]:=$007E00;MATRIX2[10,3]:=$007E00;
	MATRIX2[10,4]:=$007E00;MATRIX2[10,5]:=$007E00;MATRIX2[10,6]:=$007E00;
	MATRIX2[10,7]:=$007FFF;MATRIX2[10,8]:=$007FFF;MATRIX2[10,9]:=$007FFF;
	MATRIX2[10,10]:=$007FFF;MATRIX2[10,11]:=$007FFF;MATRIX2[10,12]:=$007FFF;
	MATRIX2[10,13]:=$0;MATRIX2[10,14]:=$0;MATRIX2[10,15]:=$0;

	MATRIX2[10,16]:=$0;MATRIX2[10,17]:=$0;MATRIX2[10,18]:=$0;
	MATRIX2[11,1]:=$0;MATRIX2[11,2]:=$0;MATRIX2[11,3]:=$0;
	MATRIX2[11,4]:=$0;MATRIX2[11,5]:=$0;MATRIX2[11,6]:=$0;
	MATRIX2[11,7]:=$007FFF;MATRIX2[11,8]:=$007FFF;MATRIX2[11,9]:=$007FFF;
	MATRIX2[11,10]:=$007FFF;MATRIX2[11,11]:=$007FFF;MATRIX2[11,12]:=$007FFF;	
	MATRIX2[11,13]:=$007E00;MATRIX2[11,14]:=$007E00;MATRIX2[11,15]:=$007E00;
	MATRIX2[11,16]:=$007E00;MATRIX2[11,17]:=$007E00;MATRIX2[11,18]:=$007E00;

	MATRIX2[12,1]:=$0;MATRIX2[12,2]:=$0;MATRIX2[12,3]:=$0;
	MATRIX2[12,4]:=$0;MATRIX2[12,5]:=$0;MATRIX2[12,6]:=$0;
	MATRIX2[12,7]:=$FFFE00;MATRIX2[12,8]:=$FFFE00;MATRIX2[12,9]:=$FFFE00;
	MATRIX2[12,10]:=$FFFE00;MATRIX2[12,11]:=$FFFE00;MATRIX2[12,12]:=$FFFE00;
	MATRIX2[12,13]:=$007E00;MATRIX2[12,14]:=$007E00;MATRIX2[12,15]:=$007E00;
	MATRIX2[12,16]:=$007E00;MATRIX2[12,17]:=$007E00;MATRIX2[12,18]:=$007E00;

	MATRIX2[13,1]:=$007E00;MATRIX2[13,2]:=$007E00;MATRIX2[13,3]:=$007E00;
	MATRIX2[13,4]:=$007E00;MATRIX2[13,5]:=$007E00;MATRIX2[13,6]:=$007E00;
	MATRIX2[13,7]:=$FFFE00;MATRIX2[13,8]:=$FFFE00;MATRIX2[13,9]:=$FFFE00;
	MATRIX2[13,10]:=$FFFE00;MATRIX2[13,11]:=$FFFE00;MATRIX2[13,12]:=$FFFE00;
	MATRIX2[13,13]:=$©;MATRIX2[13,14]:=$0;MATRIX2[13,15]:=$0;
	MATRIX2[13,14]:=$0;MATRIX2[13,15]:=$0;MATRIX2[13,16]:=$0;

	MATRIX2[14,1]:=$00007F;MATRIX2[14,2]:=$0000FE;MATRIX2[14,3]:=$0001FC;
	MATRIX2[14,4]:=$0003F8;MATRIX2[14,5]:=$0007F0;MATRIX2[14,6]:=$000FE0;
	MATRIX2[14,7]:=$001FC0;MATRIX2[14,8]:=$003F80;MATRIX2[14,9]:=$007F00;
	MATRIX2[14,10]:=$007E00;MATRIX2[14,11]:=$007E00;MATRIX2[14,12]:=$007E00;
	MATRIX2[14,13]:=$007E00;MATRIX2[14,14]:=$007E00;MATRIX2[14,15]:=$007E00;
	MATRIX2[14,16]:=$007E00;MATRIX2[14,17]:=$007E00;MATRIX2[14,18]:=$007E00;

	MATRIX2[15,1]:=$FE0000;MATRIX2[15,2]:=$7F0000;MATRIX2[15,3]:=$3F8000;
	MATRIX2[15,4]:=$1FC000;MATRIX2[15,5]:=$0FE000;MATRIX2[15,6]:=$07F000;
	MATRIX2[15,7]:=$03F800;MATRIX2[15,8]:=$01FC00;MATRIX2[15,9]:=$100FD30;
	MATRIX2[15,10]:=$007E00;MATRIX2[15,11]:=$007E00;MATRIX2[15,12]:=$007E00;
	MATRIX2[15,13]:=$007E00;MATRIX2[15,14]:=$007E00;MATRIX2[15,15]:=$007E00;
	MATRIX2[15,16]:=$007E00;MATRIX2[15,17]:=$007E00;MATRIX2[15,18]:=$007E00;

	MATRIX2[16,1]:=$00007F;MATRIX2[16,2]:=$0000FE;MATRIX2[16,3]:=$0001FC;
	MATRIX2[16,4]:=$0003F8;MATRIX2[16,5]:=$0007F0;MATRIX2[16,6]:=$000FE0;
	MATRIX2[16,7]:=$FFFFC0;MATRIX2[16,8]:=$FFFF80;MATRIX2[16,9]:=$FFFF00;
	MATRIX2[16,10]:=$FFFE00;MATRIX2[16,H]:=$FFFC00;MATRIX2[16,12]:=$FFF800;
	MATRIX2[16,13]:=$000000;MATRIX2[16,14]:=$000000;MATRIX2[16,15]:=$000000;
	MATRIX2[16,16]:=$000000;MATRIX2[16,17]:=$000000;MATRIX2[16,18]:=$000000;

	MATRIX2[17,1]:=$000000;MATRIX2[17,2]:=$000000;MATRIX2[17,3]:=$000000;
	MATRIX2[17,4]:=$000000;MATRIX2[17,5]:=$000000;MATRIX2[17,6]:=$000000;
	MATRIX2[17,7]:=$FFF800;MATRIX2[17,8]:=$FFFC00;MATRIX2[17,9]:=$FFFE00;
	MATRIX2[17,10]:=$FFFF00;MATRIX2[17,11]:=$FFFF80;MATRIX2[17,12]:=$FFFFC0;
	MATRIX2[17,13]:=$000FE0;MATRIX2[17,14]:=$0007F0;MATRIX2[17,15]:=$0003F8;
	MATRIX2[17,16]:=$0001FC;MATRIX2[17,17]:=$0000FE;MATRIX2[17,18]:=$00007F;

	MATRIX2[18,1]:=$007E00;MATRIX2[18,2]:=$007E00;MATRIX2[18,3]:=$007E00;
	MATRIX2[18,4]:=$007E00;MATRIX2[18,5]:=$007E00;MATRIX2[18,6]:=$007E00;
	MATRIX2[18,7]:=$007E00;MATRIX2[18,8]:=$007E00;MATRIX2[18,9]:=$007E00;
	MATRIX2[18,10]:=$100FE00;MATRIX2[18,11]:=$01FC00;MATRIX2[18,12]:=$03F800: 
	MATRIX2[18,13]:=$07F000;MATRIX2[18,14]:=$0FE000;MATRIX2[18,15]:=$1FC000;
	MATRIX2[18,16]:=$3F8000;MATRIX2[18,17]:=$7F0000;MATRIX2[18,18]:=$FE0000;

	MATRIX2[19,18]:=$00007F;MATRIX2[19,17]:=$0000FE;MATRIX2[19,16]:=$0001FC;
	MATRIX2[19,15]:=$0003F8;MATRIX2[19,14]:=$0007F0;MATRIX2[19,13]:=$000FE0;
	MATRIX2[19,12]:=$001FC0;MATRIX2[19,11]:=$003F80;MATRIX2[19,10]:=$007F00;
	MATRIX2[19,9):=$007E00;MATRIX2[19,8]:=$007E00;MATRIX2[19,7]:=$007E00;
	MATRIX2[19,6]:=$007E00;MATRIX2[19,5]:=$007E00;MATRIX2[19,4]:=$007E00;
	MATRIX2[19,3]:=$007E00;MATRIX2[19,2]:=$007E00;MATRIX2[19,1]:=$007E00;

	MATRIX2[20,1]:=$FE0000;MATRIX2[20,2]:=$7F0000;MATRIX2[20,3]:=$3F8000;
	MATRIX2[20,4]:=$1FC000;MATRIX2[20,5]:=$0FE000;MATRIX2[20,6]:=$07F000;
	MATRIX2[20,7]:=$03FFFF;MATRIX2[20,8]:=$01FFFF;MATRIX2[20,9]:=$100FFFF;
	MATRIX2[20,10]:=$007FFF;MATRIX2[20,11]:=$003FFF;MATRIX2[20,12]:=$001FFF;
	MATRIX2[20,13]:=$0;MATRIX2[20,14]:=$0;MATRIX2[20,15]:=$0;
	MATRIX2[20,16]:=$0;MATRIX2[20,17]:=$0;MATRIX2[20,18]:=$0;

	MATRIX2[21,18]:=$FB0000;MATRIX2[21,17]:=$7F0000;MATRIX2[21,16]:=$3F8000;
	MATRIX2[21,15]:=$1FC000;MATRIX2[21,14]:=$0FE000;MATRIX2[21,13]:=$07F000;
	MATRIX2[21,12]:=$03FFFF;MATRIX2[21,11]:=$01FFFF;MATRIX2[21,10]:=$100FFFF;
	MATRIX2[21,9]:=$007FFF;MATRIX2[21,8]:=$003FFF;MATRIX2[21,7]:=$001FFF;
	MATRIX2[21,6]:=$0;MATRIX2[21,5]:=$0;MATRIX2[21,4]:=$0;
	MATRIX2[21,3]:=$0;MATRIX2[21,2]:=$0;MATRIX2[21,1]:=$0;

	MATRIX2[22,1]:=$1FFFF8;MATRIX2[22,2]:=$1FFFF8;MATRIX2[22,3]:=$1FFFF8;
	MATRIX2[22,4]:=$1FFFF8;MATRIX2[22,5]:=$1FFFF8;MATRIX2[22,6]:=$1FE7F8;
	MATRIX2[22,7]:=$1FE7F8;MATRIX2[22,8]:=$1FC3F8;MATRIX2[22,9]:=$1F00F8;
	MATRIX2[22,10]:=$1F00F8;MATRIX2[22,11]:=$1FC3F8;MATRIX2[22,12]:=$1FE7F8;
	MATRIX2[22,13]:=$1FE7F8;MATRIX2[22,14]:=$1FFFF8;MATRIX2[22,15]:=$1FFFF8;
	MATRIX2[22,16]:=$1FFFF8;MATRIX2[22,17]:=$1FFFF8;MATRIX2[22,18]:=$1FFFF8;

	MATRIX2[23,1]:=$0;MATRIX2[23,2]:=$0;MATRIX2[23,3]:=$0;
	MATRIX2[23,4]:=$0;MATRIX2[23,5]:=$0;MATRIX2[23,6]:=$0;
	MATRIX2[23,7]:=$0;MATRIX2[23,8]:=$0;MATRIX2[23,9]:=$1FFFF8;
	MATRIX2[23,10]:=$1FFFF8;MATRIX2[23,11]:=$0;MATRIX2[23,12]:=$0;
	MATRIX2[23,13]:=$0;MATRIX2[23,14]:=$0;MATRIX2[23,15]:=$0;
	MATRIX2[23,16]:=$0;MATRIX2[23,17]:=$0;MATRIX2[23,18]:=$0;

	MATRIX2[24,1]:=$1FFFF8;MATRIX2[24,2]:=$1FFFF8;MATRIX2[24,3]:=$1FFFF8;
	MATRIX2[24,4]:=$1FFFF8;MATRIX2[24,5]:=$1FFFF8;MATRIX2[24,6]:=$1FE7F8;
	MATRIX2[24,7]:=$1FE7F8;MATRIX2[24,8]:=$1FC3F8;MATRIX2[24,9]:=$1F00F8;
	MATRIX2[24,10]:=$1F00F8;MATRIX2[24,11]:=$1FC3F8;MATRIX2[24,12]:=$1FE7F8;
	MATRIX2[24,13]:=$1FE7F8;MATRIX2[24,14]:=$1FFFF8;MATRIX2[24,15]:=$1FFFF8;
	MATRIX2[24,16]:=$1FFFF8;MATRIX2[24,17]:=$1FFFF8;MATRIX2[24,18]:=$1FFFF8;

	MATRIX2[25,1]:=$1FFFF8;MATRIX2[25,2]:=$1FFFF8;MATRIX2[25,3]:=$1FFFF8;
	MATRIX2[25,4]:=$1FFFF8;MATRIX2[25,5]:=$1FFFF8;MATRIX2[25,6]:=$1FFFF8;
	MATRIX2[25,7]:=$1FFFF8;MATRIX2[25,8]:=$1FFFF8;MATRIX2[25,9]:=$1FFFF8;
	MATRIX2[25,10]:=$1FFFF8;MATRIX2[25,11]:=$1FFFF8;MATRrX2[25,12]:=$1FFFF8;
	MATRIX2[25,13]:=$1FFFF8;MATRIX2[25,14]:=$1FFFF8;MATRIX2[25,15]:=$1FFFF8;
	MATRIX2[25,16]:=$1FFFF8;MATRIX2[25,17]:=$1FFFF8;MATRIX2[25,18]:=$1FFFF8;

	MATRIX2[28,1]:=$000000;MATRIX2[28,2]:=$000000;MATRIX2[28,3]:=$000000;
	MATRIX2[28,4]:=$000000;MATRIX2[28,5]:=$000000;MATRIX2[28,6]:=$000000;
	MATRIX2[28,7]:=$1FFFF8;MATRIX2[28,8]:=$1FFFF8;MATRIX2[28,9]:=$1FFFF8;
	MATRIX2[28,10]:=$1FFFF8;MATRIX2[28,11]:=$1FFFF8;MATRIX2[28,12]:=$1FFFF8;
	MATRIX2[28,13]:=$007E00;MATRIX2[28,14]:=$007E00;MATRIX2[28,15]:=$007E00;
	MATRIX2[28,16]:=$007E00;MATRIX2[28,17]:=$007E00;MATRIX2[28,18]:=$007E00;

	MATRIX2[27,1]:=$007E00;MATRIX2[27,2]:=$007E00;MATRIX2[27,3]:=$007030;
	MATRIX2[27,4]:=$007E00;MATRIX2[27,5]:=$007E00;MATRIX2[27,6]:=$007E00;
	MATRIX2[27,7]:=$007FF8;MATRIX2[27,8]:=$007FF8;MATRIX2[27,9]:=$007FF8;
	MATRIX2[27,10]:=$007FF8;MATRIX2[27,11]:=$007FF8;MATRIX2[27,12]:=$007FF8;
	MATRIX2[27,13]:=$007E00;MATRIX2[27,14]:=$007E00;MATRIX2[27,15]:=$007E00;
	MATRIX2[27,16]:=$007E00;MATRIX2[27,17]:=$007E00;MATRIX2[27,18]:=$007E00;

	MATRIX2[26,18]:=$000000;MATRIX2[26,17]:=$000000;MATRIX2[26,16]:=$000000;
	MATRIX2[26,15]:=$000000;MATRIX2[26,14]:=$000000;MATRIX2[26,13]:=$000000;
	MATRIX2[26,12]:=$1FFFF8;MATRIX2[26,11]:=$1FFFF8;MATRIX2[26,10]:=$1FFFF8;
	MATRIX2[26,9]:=$1FFFF8;MATRIX2[26,8]:=$1FFFF8;MATRIX2[26,7]:=$1FFFF8;
	MATRIX2[26,6]:=$007E00;MATRIX2[26,5]:=$007E00;MATRIX2[26,4]:=$007E00;
	MATRIX2[26,3]:=$007E00;MATRIX2[26,2]:=$007E00;MATRIX2[26,1]:=$007E00;

	MATRIX2[29,1]:=$007E00;MATRIX2[29,2]:=$007E00;MATRIX2[29,3]:=$007030;
	MATRIX2[29,4]:=$007000;MATRIX2[29,5]:=$007030;MATRIX2[29,6]:=$007E00;
	MATRIX2[29,7]:=$1FFE00:MATRIX2[29,8]:=$1FFE00;MATRIX2[29,9]:=$1FF000;
	MATRIX2[29,10]:=$1FF030;MATRIX2[29,11]:=$1FFE00;MATRIX2[29,12]:=$1FFE00;
	MATRIX2[29,13]:=$007000;MATRIX2[29,14]:=$007000;MATRIX2[29,15]:=$007E00;
	MATRIX2[29,16]:=$007030;MATRIX2[29,17]:=$007030;MATRIX2[29,18]:=$007E00;

	MATRIX2[31,18]:=$1FFFF8;MATRIX2[31,17]:=$1FFFF8;MATRIX2[31,16]:=$1FFFF8;
	MATRIX2[31,15]:=$1FFFF8;MATRIX2[31,14]:=$1FFFF8;MATRIX2[31,13]:=$1FFFF8;
	MATRIX2[31,12]:=$1FFFF8;MATRIX2[31,11]:=$1FFFF8;MATRIX2[31,10]:=$1FFFF8;
	MATRIX2[31,9]:=$1FFFF8;MATRIX2[31,8]:=$000000;MATRIX2[31,7]:=$000000;
	MATRIX2[31,6]:=$000000;MATRIX2[31,5]:=$000000;MATRIX2[31,4]:=$000000;
	MATRIX2[31,3]:=$000000;MATRIX2[31,2]:=$000000;MATRIX2[31,1]:=$000000;

	MATRIX2[30,18]:=$000000;MATRIX2[30,17]:=$000000;MATRIX2[30,16]:=$000000;
	MATRIX2[30,15]:=$000000;MATRIX2[30,14]:=$000000;MATRIX2[30,13]:=$000000;
	MATRIX2[30,12]:=$000000;MATRIX2[30,11]:=$000000;MATRIX2[30,10]:=$1FFFF8;
	MATRIX2[30,9]:=$1FFFF8;MATRIX2[30,8]:=$1FFFF8;MATRIX2[30,7]:=$1FFFF8;
	MATRIX2[30,6]:=$1FFFF8;MATRIX2[30,5]:=$1FFFF8;MATRIX2[30,4]:=$1FFFF8;
	MATRIX2[30,3]:=$1FFFF8;MATRIX2[30,2]:=$1FFFF8;MATRIX2[30,1]:=$1FFFF8;

	MATRIX2[32,1]:=$001FF8;MATRIX2[32,2]:=$001FF8;MATRIX2[32,3]:=$001FF8;
	MATRIX2[32,4]:=$001FF8;MATRIX2[32,5]:=$001FF8;MATRIX2[32,6]:=$001FF8;
	MATRIX2[32,7]:=$001FF8;MATRIX2[32,8]:=$001FF8;MATRIX2[32,9]:=$001FF8;
	MATRIX2[32,10]:=$001FF8;MATRIX2[32,11]:=$001FF8;MATRIX2[32,12]:=$001FF8;
	MATRIX2[32,13]:=$001FF8;MATRIX2[32,14]:=$001FF8;MATRIX2[32,15]:=$001FF8;
	MATRIX2[32,16]:=$001FF8;MATRIX2[32,17]:=$001FF8;MATRIX2[32,18]:=$001FF8;

	MATRIX2[33,1]:=$1FF800;MATRIX2[33,2]:=$1FF800;MATRIX2[33,3]:=$1FF800;
	MATRIX2[33,4]:=$1FF800;MATRIX2[33,5]:=$1FF800;MATRIX2[33,6]:=$1FF800;
	MATRIX2[33,7]:=$1FF800;MATRIX2[33,8]:=$1FF800;MATRIX2[33,9]:=$1FF800;
	MATRIX2[33,10]:=$1FF800;MATRIX2[33,11]:=$1FF800;MATRIX2[33,12]:=$1FF800;
	MATRIX2[33,13]:=$1FF800;MATRIX2[33,14]:=$1FF800;MATRIX2[33,15]:=$1FF800;
	MATRIX2[33,16]:=$1FF800;MATRIX2[33,17]:=$1FF800;MATRIX2[33,18]:=$1FF800;

	MATRIX2[34,1]:=$000008;MATRIX2[34,2]:=$000018;MATRIX2[34,3]:=$000038;
	MATRIX2[34,4]:=$000078;MATRIX2[34,5]:=$0000F8;MATRIX2[34,6]:=$0001F8;
	MATRIX2[34,7]:=$0003F8;MATRIX2[34,8]:=$0007F8;MATRIX2[34,9]:=$000FF8;
	MATRIX2[34,10]:=$001FF8;MATRIX2[34,11]:=S003FF8;MATRIX2[34,12]:=$007FF8;
	MATRIX2[34,13]:=$100FFF8;MATRIX2[34,14]:=$01FFF8;MATRIX2[34,15]:=$03FFF8;
	MATRIX2[34,16]:=$07FFF8;MATRIX2[34,17]:=$0FFFF8;MATRIX2[34,18]:=$1FFFF8;

	MATRIX2[35,1]:=$100000;MATRIX2[35,2]:=$180000;MATRIX2[35,3]:=$1C0000;
	MATRIX2[35,4]:=$1E0000;MATRIX2[35,5]:=$1F0000;MATRIX2[35,6]:=$1F8000;
	MATRIX2[35,7]:=$1FC000;MATRIX2[35,8]:=$1FE000;MATRIX2[35,9]:=$1FF000;
	MATRIX2[35,10]:=$1FF800;MATRIX2[35,11]:=$1FFC00;MATRIX2[35,12]:=$1FFE00;
	MATRIX2[35,13]:=$1FFF00;MATRIX2[35,14]:=$1FFF80;MATRIX2[35,15]:=$1FFFC0;
	MATRIX2[35,16]:=$1FFFE0;MATRIX2[35,17]:=$1FFFF0;MATRIX2[35,18]:=$1FFFF8;

	MATRIX2[37,1]:=$1FFFF8;MATRIX2[37,2]:=$0FFFF8;MATRIX2[37,3]:=$07FFF8;
	MATRIX2[37,4]:=$03FFF8;MATRIX2[37,5]:=$01FFF8;MATRIX2[37,6]:=$100FFF8;
	MATRIX2[37,7]:=$007FF8;MATRIX2[37,8]:=$003FF8;MATRIX2[37,9]:=$001FF8;
	MATRIX2[37,10]:=$000FF8;MATRIX2[37,11]:=$0007F8;MATRIX2[37,12]:=$0003F8;
	MATRIX2[37,13]:=$0001F8;MATRIX2[37,14]:=$0000F8;MATRIX2[37,15]:=$000078;
	MATRIX2[37,16]:=$000038;MATRIX2[37,17]:=$000018;MATRIX2[37,18]:=$000008;

	MATRIX2[36,1]:=$1FFFF8;MATRIX2[36,2]:=$1FFFF0;MATRIX2[36,3]:=$1FFFE0;
	MATRIX2[36,4]:=$1FFFC0;MATRIX2[36,5]:=$1FFF80;MATRIX2[36,6]:=$1FFF00;
	MATRIX2[36,7]:=$1FFD30;MATRIX2[36,8]:=$1FFC00;MATRIX2[36,9]:=$1FF800;
	MATRIX2[36,10]:=$1FF000;MATRIX2[36,11]:=$1FE000;MATRIX2[36,12]:=$1FC000;
	MATRIX2[36,13]:=$1F8000;MATRIX2[36,14]:=$1F0000;MATRIX2[36,15]:=$1E0000;
	MATRIX2[36,16]:=$1C0000;MATRIX2[36,17]:=$180000;MATRIX2[36,18].-=$100000;

	MATRIX2[38,1]:=$0;MATRIX2[38,2]:=$0;MATRIX2[38,3]:=$0;
	MATRIX2[38,4]:=$0;MATRIX2[38,5]:=$0;MATRIX2[38,6]:=$0;
	MATRIX2[38,7]:=$0;MATRIX2[38,8]:=$003000;MATRIX2[38,9]:=$007E00;
	MATRIX2[38,10]:=$007E00;MATRIX2[38,11]:=S007E00;MATRIX2[38,12]:=$007E00;
	MATRIX2[38,13]:=$007E00;MATRIX2[38,14]:=$007B00;MATRIX2[38,15]:=$007E00;
	MATRIX2[38,16]:=$007E00;MATRIX2[38,17]:=$007B00;MATRIX2[38,18]:=$007E60;

	MATRIX2[42,1]:=$007E00;MATRIX2[42,2]:=$007E00;MATRIX2[42,3]:=$007E00;
	MATRIX2[42,4]:=$007E00;MATRIX2[42,5]:=$007E00;MATRIX2[42,6]:=$007E00;
	MATRIX2[42,7]:=$007030;MATRIX2[42,8]:=$007E00;MATRIX2[42,9]:=$007000;
	MATRIX2[42,10]:=$007E00;MATRIX2[42,11]:=$003000;MATRIX2[42,12]:=$0;
	MATRIX2[42,13]:=$0;MATRIX2[42,14]:=$0;MATRIX2[42,15]:=$0;
	MATRIX2[42,16]:=$0;MATRIX2[42,17]:=$0;MATRIX2[42,18]:=$0;

	MATRIX2[40,1]:=$000000;MATRIX2[40,2]:=$000000;MATRIX2[40,3]:=$000000;
	MATRIX2[40,4]:=$000000;MATRIX2[40,5]:=$000000;MATRIX2[40,6]:=$000000;
	MATRIX2[40,7]:=$001FF8;MATRIX2[40,8]:=$3FF8;MATRIX2[40,9]:=$3FF8;
	MATRIX2[40,10]:=$3FF8;MATRIX2[40,11]:=$3FF8;MATRIX2[40,12]:=$1FF8;
	MATRIX2[40,13]:=$000000;MATRIX2[40,14]:=$000000;MATRIX2[40,15]:=$000000;
	MATRIX2[40,16]:=$000000;MATRIX2[40,17]:=$000000;MATRIX2[40,18]:=$000000;

	MATRIX2[44,1]:=$000000;MATRIX2[44,2]:=$000000;MATRIX2[44,3]:=$000000;
	MATRIX2[44,4]:=$000000;MATRIX2[44,5]:=$000000;MATRIX2[44,6]:=$000000;
	MATRIX2[44,7]:=$1FFE00;MATRIX2[44,8]:=$1FFF00;MATRIX2[44,9]:=$1FFF00;
	MATRIX2[44,10]:=$1FFF00;MATRIX2[44,11]:=$1FFF00;MATRIX2[44,12]:=$1FFE00;
	MATRIX2[44,13]:=$000000;MATRIX2[44,14]:=$000000;MATRIX2[44,15]:=$000000;
	MATRIX2[44,16]:=$000000;MATRIX2[44,17]:=$000000;MATRIX2[44,18]:=$000000;

	MATRIX2[41,1]:=$00007F;MATRIX2[41,2]:=$0000FE;MATRIX2[41,3]:=$0001FC;
	MATRIX2[41,4]:=$0003F8;MATRIX2[41,5]:=$0007F0;MATRIX2[41,6]:=$000FE0;
	MATRIX2[41,7]:=$001FC0;MATRIX2[41,8]:=$003F80;MATRIX2[41,9]:=$003F00;
	MATRIX2[41,10]:=$001E00;MATRIX2[41,11]:=$000C00;MATRIX2[41,12]:=$0;
	MATRIX2[41,13]:=$0;MATRIX2[41,14]:=$0;MATRIX2[41,15]:=$0;
	MATRIX2[41,16]:=$0;MATRIX2[41,17]:=$0;MATRIX2[41,18]:=$0;

	MATRIX2[45,1]:=$0;MATRIX2[45,2]:=$0;MATRIX2[45,3]:=$0;
	MATRIX2[45,4]:=$0;MATRIX2[45,5]:=$0;MATRIX2[45,6]:=$0;
	MATRIX2[45,7]:=$0;MATRIX2[45,8]:=$003000;MATRIX2[45,9]:=$007800;
	MATRIX2[45,10]:=$100FC00;MATRIX2[45,11]:=$01FC00;MATRIX2[45,12]:=$03F800;
	MATRIX2[45,13]:=$07F000;MATRIX2[45,14]:=$0FE000;MATRIX2[45,15]:=$1FC000;
	MATRIX2[45,16]:=$3F8000;MATRIX2[45,17]:=$7F0000;MATRIX2[45,18]:=$FE0000;

	MATRIX2[39,1]:=$0;MATRIX2[39,2]:=$0;MATRIX2[39,3]:=$0;
	MATRIX2[39,4]:=$0;MATRIX2[39,5]:=$0;MATRIX2[39,6]:=$0;
	MATRIX2[39,7]:=$0;MATRIX2[39,8]:=$0;MATRIX2[39,9]:=$000E00;
	MATRIX2[39,10]:=$001F00;MATRIX2[39,11]:=$001F80;MATRIX2[39,12]:=$001FC0;
	MATRIX2[39,13]:=$000FE0;MATRIX2[39,14]:=$0007F0;MATRIX2[39,15]:=$0003F8;
	MATRIX2[39,16]:=$0001FC;MATRIX2[39,17]:=$0000FE;MATRIX2[39,18]:=$00007F;

	MATRIX2[43,1]:=$FE0000;MATRIX2[43,2]:=$7F0000;MATRIX2[43,3]:=$3F8000;
	MATRIX2[43,4]:=$1FC000;MATRIX2[43,5]:=$0FE000;MATRIX2[43,6]:=$07F000;
	MATRIX2[43,7]:=$03F800;MATRIX2[43,8]:=$01F800;MATRIX2[43,9]:=$100F800;
	MATRIX2[43,10]:=$007000;MATRIX2[43,11]:=$0;MATRIX2[43,12]:=$0;
	MATRIX2[43,13]:=$0;MATRIX2[43,14]:=$0;MATRIX2[43,15]:=$0;
	MATRIX2[43,16]:=$0;MATRIX2[43,17]:=$0;MATRIX2[43,18]:=$0;

	END; (*INITM2*)

PROCEDURE DRUCKINIT;
	BEGIN
	REWRITE(DRUCK,'PRN:');
	WRITE(DRUCK,CHR($1C),CHR($40)); (*INIT DRUCKER*) 
	WRITE(DRUCK,CHR($1B),'3',CHR(XMATR)); (*LINE SPACING*) 
	WRITE(DRUCK,CHR($1B),'1',CHR(18-YMATR)); (*LEFT MARGIN*) 
	END;

PROCEDURE DRUCKE (SITTE :CHAR; INDEX, XPOS, YPOS :INTEGER);
	VAR SPALTE : LONG_INTEGER;
		CODE,CODEXUP, CODEXDN : INTEGER;
		OBEN, KETTE, UNTEN : INTEGER;

PROCEDURE M1;
VAR J : INTEGER;
BEGIN
IF CODE>45 THEN
	WRITELN('CODE GROESSER 45 !')
ELSE
	FOR J:=1 TO XMATR DO 
		BEGIN
			SPALTE := 0;
			SPALTE := MATRIX1[CODE,J];
			IF (CODE=22) OR (CODE=24) THEN 
				BEGIN
					IF (CODEXUP=0) THEN
						IF (J<>1) AND (J<>XMATR) THEN 
							SPALTE := SPALTE | $0C 
						ELSE
							SPALTE := SPALTE | $18;
					IF (CODEXDN=0) THEN
						IF (J<>1) AND (J<>XMATR) THEN
							SPALTE := SPALTE | $6000 
						ELSE
							SPALTE := SPALTE | $3000;
				END;
			SPALTE := SHL(SPALTE,4);
			UNTEN := INT (SPALTE & $000000FF);
			SPALTE := SHR(SPALTE,8);
			MITTE := INT (SPALTE & $000000FF);
			SPALTE := SHR(SPALTE,8);
			OBEN := INT (SPALTE & S000000FF);
			WRITE (DRUCK, CHR(OBEN), CHR(MITTE), CHR(UNTEN)); 
		END; (*O0R J*)
	END; (*M1*)

PROCEDURE M2;
VAR J : INTEGER;
BEGIN
	IF CODE>45 TREN
		WRITELN('CODE GROESSER 45 !')
	ELSE
		FOR J:=1 TO XMATR DO 
		BEGIN
			SPALTE := 0;
			SPALTE := MATRIX2[CODE,J];
			IF (CODE!=22) OR (CODE=24) THEN 
			BEGIN
				IF (CODEXUP=0) THEN
					IF (J<>1) AND (J<>XMATR) THEN 
						SPALTE := SPALTE | $7 
					ELSE
						SPALTE := SPALTE | $6;
				IF (CODEXDN=0) THEN
					IF (J<>1) AND (J<>XMATR) THEN
						SPALTE := SPALTE | $E00000 
					ELSE
						SPALTE := SPALTE | $600000;
			END;
			UNTEN := INT(SPALTE & $000000FF);
			MITTE := INT(SHR(SPALTE,8)&$00FF) ;
			OBEN := Uff (SHR(SPALTE,16)&$00FF) ;
			WRITE(DRUCK,CHR (OBEN), CHR (MITIE), CHR (UNTEN));
		END; (*FOR J*)
END; (*M2*)

BEGIN (*DRUCKE*)
CASE SEITE CF
	'O','o' : BEGIN (*OBERES BYTE*)
				CODE := PLATINE[INDEX]&$00FF;
				IF XPOS < XWEITE THEN
					CODEXUP := PLATINE[INDEX+1]&$00FF 
				ELSE
					CODEXUP := 6; (*<>0*)
				IF XPOS > 0 THEN
					CODEXDN := PLATINE[INDEX-1]&$00FF 
				ELSE 
					CODEXDN := 6;
				END;
	'U','u' : BEGIN (*UNTERES BYTE*)
				CODE := SHR (PLATINE[INDEX],8);
				IF XPOS < XWEITE THEN
					CODEXUP := SHR(PLATINE[INDEX+1],8) 
				ELSE
					CODEXUP := 6; (*<>0*)
				IF XPOS > 0 THEN
					CODEXDN := SHR(PLATINE[INDEX-1],8) 
				ELSE 
					CODEXDN := 6;
				END;
	'B', 'b': BEGIN
				CODE := PLATINE[INDEX]&$00FF;
				IF CODE IN [22..24] THEN 
				ELSE
					CODE := 0;
				END;
		ELSE : ;
		END; (*CASE*)
	IF MASS=1 THEN M1
				ELSE M2;
	END; (*PROCEDURE DRUCKE*)

BEGIN (*HAUPTPRGRM*)

	INITM1;
	INITM2;
	ANT := ' ';
	REPEAT
		BEGIN
		IF (NOT FILEDA) OR (ANT IN ['N','n']) THEN 
			BEGIN
			WRITE(' WELCHES FILE SOLL GEDRUCKT WENDEN ?');
			READLN (FNAME);
			WRITELN;
			RESET (PFILE, FNAME);
			IF EOF(PFILE) THEN 
				WRITELN(' FILE NICHT GEFUNDEN !')
			ELSE
				BEGIN
				WRITELN(' ... ETWAS GEDULD BITTE ...');
				I := -1;
				WHILE NOT EOF (PFILE) DO 
					BEGIN 
					I := 1+1;
					PLATINE[I] := PFILE^;
					GET(PFILE);
					END;
				CLOSE(PETLE);
				FILEDA := TRUE;
				WRITELN;
				IF I<>9984 THEN
					WRITELN('*** LAENGE DEN DATEI (9984 WERTE) FALSCH :',I, '***') 
				ELSE
					WRITELN('*** DATEI EINGELESEN ***');
				WRITELN;
			END; (*ELSE*)
		END; (*IF FILEDA*)

		IF (ANT IN ['D'.'d']) AND FILEDA THEN 
			BEGIN 
			WRITELN;
			WRITELN(') MAßE DEN PLATINE : \ PLATINE[9984]&S00FF,' x ', SHR(PLATINE[9984],8),' MM');
			REPEAT
				BEGIN
				WRITE(' MAßSTAB <1> : 1 ODEN <2> : 1 ?');
				READLN (MASS);
				END;
			UNTIL MASS IN [1,2];
			IF MASS=1 THEN 
				BEGIN
				XMATR := 9;
				YMATR := 9;
				END
			ELSE
				BEGIN
				XMATR := 18;
				YMATR := 18;
				END;
			REPEAT
				BEGIN
				WRITE(' WELCHE SEITE ? (<U>:LOET- <O>:BESTUECKUNGS- SEITE,', '<B>:BOHRUNGEN) ');
				READLN (SEITE);
				WRITE(' <D>D:DOPPELT DRUCKEN, <S>D:EINMAL DRUCKEN ? '); 
				READLN(DD);
				WRITELN;
				WRITELN;
				END;
			UNTIL SEITE IN ['O', 'o', 'U', 'u', 'B', 'b'] ;
			DRUCKINIT;
			XPOS:=0;
			ENDE := FALSE;
			ZWEITE := FALSE;
			REPEAT
				BEGIN
					(* GRAPH-DATEN EINEN SPALTE*)
					WRITE (DRUCK,CHR($1B),'*',CHR(39),
					CHR(((YWETIE+1)*YMATR) MOD 256),
					CHR(((YWEITE+1)*YMATR) DIV 256));
					FOR YPOS:=0 TO YWEITE DO 
						BEGIN
						INDEX := XPOS+128*YPOS;
						DRUCKE(SEITE, INDEX, XPOS,YPOS);
						END; (*FOR YPOS*)
					IF (DD IN ['D','d']) AND (NOT ZWEITE) THEN 
						BEGIN
						ZWEITE := TRUE;
						WRITE(DRUCK,CHR($0D)) ;
						END
					ELSE
						BEGIN
						XPOS := XPOS+1;
						ZWEITE := FALSE;
						WRITE(DRUCK,CHR($0A));
						END;
					IF KEYPRESS THEN 
						BEGIN
						READ (ABANT) ;
						WRITE('* DRUCKEN UNTERBROCHEN *'); 
						WRITE(' <E>NDE ODER <W>EITER ?'); 
						READLN (ABANT);
						IF ABANT IN ['E','e'] THEN 
							ENDE := TRUE;

						END;
				END; (*REPEAT XPOS*)
			UNTIL (XPOS=XWEITE+1) OR ENDE; 
			WRITE(DRUCK,CHR($1C),CHR($40));
			CLOSE (DRUCK);
		END; (*ELSE*)
		REPEAT
			WRITELN;
			WRITEIN;
			WRITELN(' <N>EUES EILE ? ');
			WRITELN(' PROGRAMM B<E>ENDEN ?');
			WRITELN(' <D>RUCKEN ?');
			WRITELN;
			READLN(ART) ;
		UNTIL ANT IN ['N','n','E','e','D','d'];
		END; (*REPEAT*)
	UNTIL ART IN ['E','e'];
END.


Aus: ST-Computer 05 / 1987, Seite 20

Links

Copyright-Bestimmungen: siehe Über diese Seite