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’.
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.
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.
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.