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.


Links

Copyright-Bestimmungen: siehe Über diese Seite
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]