Bildschirmmasken leicht erstellt
Das Tolle an diesem Programm ist, daß nicht wie üblich 25 PRINT-Befehle erzeugt werden. Die Bildschirmmaske wird schnell und platzsparend in Basic-Zeilen abgelegt, die FOR … NEXT-Schleifen, POKE-, SPC- und CHR$-Befehle enthalten.
Die Idee zu diesem Programm ist nicht neu. In der 64'er-Ausgabe 9/84 wurde bereits ein Programm (allerdings für den VC 20) vorgestellt, das eine Maske direkt vom Bildschirm liest und automatisch die entsprechenden PRINT-Befehle erzeugt. Aber eben darin bestand ein Nachteil. In dem erzeugten Programm tritt nur der Befehl PRINT auf, nicht aber Befehle wie FOR, TO, NEXT, CHR$, SPC und POKE, deren Anwendung besonders dann notwendig wird, wenn der Speicherplatz nur begrenzt ist.
Verschiedene Schriftfarben innerhalb einer Maske werden im vorliegenden Programm ebenso berücksichtigt wie die Rahmen- und Hintergrundfarbe, invers dargestellte Zeichen und auch die Wahl des Zeichensatzes (Groß- oder Kleinschrift). Im Programm ist außerdem ein Editor integriert, der gegenüber dem Basic-Editor einige Verbesserung aufzuweisen hat, wodurch eine schnellere und bequemere Eingabe der Maske möglich ist.
Das Programmieren von Bildschirmmasken ist sehr zeitaufwendig, aber leider in keinem umfangreicheren Programm wegzudenken. Kompliziertere Grafiken skizziert man auf dem Papier, bevor sie in ein Programm übertragen werden. Schwierig wird es, wenn man mehrfarbige Masken programmieren will oder aber dann, wenn einige Zeichen einfach, andere dagegen invers dargestellt werden sollen.
Das Programm besteht aus einem komfortablen Editor und einem Generator, der eine eingegebene Maske innerhalb einer Sekunde in ein Basic-Programm umwandelt. Wenn Sie das schon eingetippte Programm auf einem Datenträger abgespeichert haben, kann begonnen werden.
Hinweise zum Maskengenerator
Das Programm wird mit LOAD "Programmname",x,1 (x = Gerätenummer) in den Speicher geladen. Da es sich hier um ein Maschinenprogramm handelt, das die oberen 4 KByte RAM belegt, wird ein im Basic-Speicher stehendes Programm nicht gelöscht.
Mit SYS 49152,ln,st wird der Maskengenerator gestartet. Das noch zu erzeugende Programm steht nachher ab Zeile ln im Speicher. Beachten Sie, daß, wenn bereits ein Programm im Speicher steht, der Parameter ln größer als die letzte Zeilennummer sein muß. Die Durchnumerierung des zu erzeugenden Programms erfolgt mit der Schrittweite st(0 < st < 256).
Geben Sie nun eine Maske ein. Nehmen Sie dazu die Tabelle 1 der Steuerbefehle zu Hilfe. Neben diesen Steuerbefehlen kann man auf gewohnte Weisejede der 16 zur Verfügung stehenden Schriftfarben anwählen. Alle Zeichen und Buchstaben können uneingeschränkt verwendet werden; das gilt auch für das Anführungszeichen.
Ist die Eingabe beendet, dann geben Sie RUN/STOP und Y ein. Innerhalb einer Sekunde wird nun das Maskenprogramm erzeugt. Mit RUN In können Sie es wie gewohnt starten.
Bildschirmmaskengenerator — Beschreibung der Steuerbefehle
ASCII-Code | Eingabe | Bedeutung/Wirkung |
3 | CTRL-C STOP |
Inhalt der Cursorzeile wird in die Mitte verschoben. Eingabe beenden. Sicherheitsabfrage »finished?« mit Y (= Yes) oder N (= No) beantworten. |
4 | CTRL-D | Cursorzeile und die Zeilen darunter werden um eine Zeile nach oben verschoben. Letzte Zeile wird gelöscht. |
9 | CTRL-I | Cursorzeile und die Zeilen darunter werden um eine Zeile nach unten verschoben. Cursorzeile wird gelöscht. |
13 | RETURN | Cursor springt zum Anfang der nächsten Zeile. |
17 | CRSR down | Cursor geht um eine Zeile nach unten. In der letzten Zeile Sprung in die erste. |
19 | HOME | Sprung in die linke obere Ecke |
20 | DEL | Das links vom Cursor stehende Zeichen wird gelöscht und der Rest der Zeile um eine Position nach links verschoben. |
24 | CTRL-X | Cursorzeile wird gelöscht |
25 | CTRL-Y | Cursorspalte wird gelöscht |
29 | CRSR right | Cursor geht um eine Position nach rechts. |
133 | F1 | Rahmenfarbe verändern. |
134 | F3 | Hintergrundfarbe verändern. |
135 | F5 | Dauerfunktion aller Tasten ein- oder ausschalten. |
136 | F7 | RVS-Modus an- oder ausschalten. |
145 | CRSR up | Cursor geht um eine Zeile nach oben. In der ersten Zeile Sprung in die letzte. |
147 | CLR | Bildschirm löschen. Sicherheitsabfrage »clear screen?« mit Y (= Yes) oder N (= No) beantworten. |
148 | INST | Cursorposition und der Rest der Zeile werden innerhalb einer Zeile um eine Position nach rechts geschoben. Ein Leerzeichen wird eingefügt. |
157 | CRSR left | Cursor geht um eine Position nach links. |
Commodore- und CTRL | Umschaltung Groß-/Kleinschrift |
PROGRAMM : MASKENGEN. C000 C5BD ----------------------------------- C000 : 20 FD AE 20 EB B7 E0 00 CE C008 : D0 03 4C 08 AF 86 02 A5 F0 C010 : 15 C9 FA B0 F5 20 13 A6 D8 C018 : A0 01 B1 5F D0 EC 20 5E 43 C020 : E5 A9 00 85 C7 20 E4 FF 9C C028 : 85 CC F0 F9 48 A5 CF F0 61 C030 : 0C A5 CE AE 87 02 A0 00 A3 C038 : 84 CF 20 13 EA 68 C9 20 68 C040 : 90 2F C9 61 B0 0D 29 3F 9D C048 : 05 C7 AE 86 02 20 13 EA F1 C050 : 4C 96 C1 C9 80 B0 04 29 81 C058 : DF D0 ED C9 A0 90 12 C9 BE C060 : C0 B0 04 E9 3F D0 E1 29 0B C068 : 7F C9 7F D0 DB A9 5E D0 EC C070 : D7 20 CB E8 10 AF A0 33 CF C078 : D9 8D C0 F0 07 88 88 88 4E C080 : 10 F6 30 A1 B9 8F C0 48 F7 C088 : B9 8E C0 48 60 03 C2 C0 6C C090 : 04 05 C1 09 25 C1 0D 4A D2 C098 : C1 11 5D C1 13 67 C1 14 0D C0A0 : 6C C1 18 78 C1 19 7F C1 68 C0A8 : 1D 95 C1 85 C0 C1 86 C3 6D C0B0 : C1 87 B0 C1 88 D1 C1 91 DA C0B8 : DA C1 93 E6 C1 94 19 C2 DF C0C0 : 9D 21 C2 A5 91 C9 7F D0 5A C0C8 : 03 4C B3 C2 20 30 C2 84 CE C0D0 : 06 A9 27 38 E5 06 85 06 2C C0D8 : 30 29 A0 00 B1 D1 C9 20 D6 C0E0 : D0 05 C8 C0 28 D0 F5 98 8F C0E8 : 84 04 18 65 06 4A AA A0 C0 C0F0 : 00 E4 04 F0 0E B0 06 20 40 C0F8 : 43 C2 E8 10 F2 20 61 C2 14 C100 : CA 10 EC 4C 25 C0 A6 D6 38 C108 : F0 F9 CA 86 D6 20 F0 E9 7E C110 : BD F1 EC 85 AC B5 DA 20 D6 C118 : C8 E9 E8 E0 18 90 EE 20 2D C120 : FF E9 A6 D6 10 32 A5 D1 65 C128 : 48 A5 D2 48 A2 18 E4 D6 2D C130 : F0 ED 20 F0 E9 BD EF EC 63 C138 : 85 AC B5 D8 20 C8 E9 CA 21 C140 : 10 EC 68 85 D2 68 85 D1 BB C148 : 4C 25 C0 A6 D6 E0 18 F0 E2 C150 : 0A A9 00 85 D3 E8 86 D6 2C C158 : 20 F0 E9 4C 25 C0 A6 D6 95 C160 : E0 18 D0 F1 A2 00 F0 EE 8A C168 : 20 66 E5 30 EE A4 D3 F0 80 C170 : EA 88 84 D3 20 43 C2 10 81 C178 : E2 A6 D6 20 FF E9 30 DB 2F C180 : A5 D1 48 A5 D2 48 A2 18 FF C188 : AC D3 00 20 F0 E9 20 57 AF C190 : C2 CA 10 F7 30 AC A9 27 18 C198 : C5 D3 D0 10 A6 D6 E0 18 52 C1A0 : F0 C6 E8 86 D6 20 F0 E9 04 C1A8 : A9 FF 85 D3 E6 D3 4C 25 B5 C1B0 : C0 AD 8A 02 30 03 09 80 6A C1B8 : 2C 29 7F 8D 8A 02 4C 25 3F C1C0 : C0 A0 00 2C A0 01 BE 20 A3 C1C8 : D0 E8 8A 29 0F 99 20 D0 B4 C1D0 : 10 DC 06 C7 B0 D8 38 66 48 C1D8 : C7 90 D3 A6 D6 F0 04 CA 4C C1E0 : 4C 56 C1 A2 18 D0 F9 A0 4D C1E8 : 00 BE 0B C2 F0 05 20 7B 11 C1F0 : C2 D0 F6 8C 06 00 20 E4 14 C1F8 : FF F0 FB C9 59 F0 09 C9 7C C200 : 4E D0 F3 20 93 C2 30 A6 15 C208 : 4C 1E C0 83 8C 85 81 92 24 C210 : A0 93 83 92 85 85 8E A0 AD C218 : BF 00 A4 D3 20 61 C2 4C 2C C220 : 25 C0 A4 D3 D0 06 A0 27 57 C228 : 84 D3 D0 AF C6 D3 10 EF EB C230 : A0 27 B1 D1 C9 20 F0 04 74 C238 : C9 60 D0 05 88 10 F3 18 0F C240 : 60 38 60 20 24 EA C8 B1 F9 C248 : D1 88 91 D1 C8 B1 F3 88 F7 C250 : 91 F3 C8 C0 27 90 EF A9 2F C258 : 20 91 D1 AD 86 02 91 F3 11 C260 : 60 20 24 EA 84 05 A0 27 78 C268 : 88 B1 D1 C8 91 D1 88 B1 83 C270 : F3 C8 91 F3 88 C4 05 D0 0E C278 : EF F0 DC B9 00 04 99 34 3D C280 : 03 B9 00 D8 99 84 03 8A 5A C288 : 99 00 04 AD 86 02 99 00 B7 C290 : D8 C8 60 AC 06 00 88 30 5D C298 : F9 B9 84 03 99 00 D8 B9 60 C2A0 : 34 03 99 00 04 4C 96 C2 3F C2A8 : 86 89 8E 89 93 88 85 84 64 C2B0 : A0 BF 00 A0 00 BE A8 C2 62 C2B8 : F0 05 20 7B C2 D0 F6 8C 4A C2C0 : 06 00 20 E4 FF F0 FB C9 76 C2C8 : 59 F0 0A C9 4E D0 F3 20 D1 C2D0 : 93 C2 4C 25 C0 20 93 C2 5D C2D8 : 78 A2 00 A0 04 20 24 C5 13 C2E0 : A0 0C AD 20 D0 29 0F AA DE C2E8 : 20 65 C5 A0 17 AD 21 D0 45 C2F0 : 29 0F AA 20 65 C5 AD 18 BB C2F8 : D0 4A 4A B0 06 A0 20 A9 CF C300 : 32 91 5F A0 29 20 86 C5 20 C308 : A2 FF 86 D6 8E 86 02 E8 1D C310 : 86 07 86 09 06 C7 A9 00 22 C318 : 85 08 85 D3 E6 D6 A6 D6 EA C320 : E0 19 90 03 4C BC C3 20 0B C328 : F0 E9 20 30 C2 B0 04 E6 AA C330 : 08 D0 E9 84 03 A6 08 F0 13 C338 : 0F 20 E3 C3 A4 05 C0 04 46 C340 : F0 03 20 86 C5 20 F5 C4 49 C348 : 20 24 EA A4 D3 B1 F3 29 B6 C350 : 0F CD 86 02 F0 25 AA B1 6E C358 : D1 C9 20 F0 20 C9 60 F0 E8 C360 : 1C 8E 86 02 20 E3 C3 20 16 C368 : 14 C5 98 AC 86 02 BE DA 44 C370 : E8 A8 8A 91 5F C8 84 05 D9 C378 : AC D3 00 B1 D1 A6 09 F0 9C C380 : 09 C5 CE F0 27 48 20 E3 3A C388 : C3 68 85 CE 24 CE 30 0B 4A C390 : 06 C7 90 18 20 14 C5 A9 AE C398 : 92 D0 0C 24 C7 30 0D 38 BD C3A0 : 66 C7 20 14 C5 A9 12 91 8A C3A8 : 5F C8 84 05 E6 09 E6 D3 27 C3B0 : A5 03 C5 D3 B0 95 20 E3 C3 C3B8 : C3 4C 16 C3 20 E3 C3 A4 19 C3C0 : 05 C0 04 F0 03 20 86 C5 1B C3C8 : A9 00 A0 01 91 5F 88 10 10 C3D0 : FB A5 5F 18 69 02 8D 2D B0 C3D8 : 00 A5 60 69 00 8D 2E 00 15 C3E0 : 4C 6C FE A6 09 D0 01 60 D3 C3E8 : A4 05 A5 CE 29 7F C9 20 48 C3F0 : 90 09 C9 40 90 0A C9 60 C0 C3F8 : 90 04 18 69 40 2C 69 20 09 C400 : 85 CE C9 22 D0 30 E0 05 BF C408 : B0 1C 20 AE C4 86 06 A2 82 C410 : 2F 20 24 C5 C6 06 D0 F7 E1 C418 : 84 05 A6 03 E4 D3 B0 49 6B C420 : E0 27 F0 3C D0 3E 20 D0 79 C428 : C4 A2 2F 20 24 C5 20 C7 8E C430 : C4 20 EE C4 D0 66 C9 20 00 C438 : F0 34 C9 A0 F0 30 E0 14 05 C440 : B0 46 20 14 C5 A5 CE 91 86 C448 : 5F C8 CA D0 FA 84 05 A6 0D C450 : 03 E4 D3 B0 14 E0 27 D0 57 C458 : 0B C0 14 90 0C 20 B7 C4 05 C460 : 20 C7 C4 2C 06 C7 20 86 47 C468 : C5 A9 00 85 09 60 24 C7 66 C470 : 30 CC E0 06 90 CC 20 AE 4C C478 : C4 20 C1 C4 20 65 C5 A9 ED C480 : 29 91 5F C8 84 05 D0 E1 DA C488 : 20 D0 C4 20 BE C4 A5 CE 8C C490 : 91 5F C8 20 BE C4 20 C7 29 C498 : C4 20 EE C4 A6 03 E4 D3 7E C4A0 : B0 C4 E0 27 F0 C0 20 C4 EE C4A8 : C4 20 CA C4 D0 B6 C0 04 95 C4B0 : F0 18 06 07 B0 08 60 06 E8 C4B8 : 07 B0 03 38 66 07 A9 22 69 C4C0 : 2C A9 A6 2C A9 3A 2C A9 60 C4C8 : 3B 2C A9 99 91 5F C8 60 AF C4D0 : C0 04 F0 09 20 B2 C4 20 DB C4D8 : C7 C4 20 C4 C4 86 06 A2 80 C4E0 : 26 20 24 C5 A6 06 20 65 BE C4E8 : C5 20 C4 C4 D0 DC 20 C4 85 C4F0 : C4 A9 82 D0 D7 06 C7 A6 5E C4F8 : 08 E0 06 B0 0F 20 CA C4 AF C500 : CA F0 05 20 C4 C4 D0 F5 29 C508 : 20 86 C5 60 20 D0 C4 20 C5 C510 : EE C4 D0 F4 A4 05 C0 04 B0 C518 : D0 05 20 CA C4 D0 9C 24 5A C520 : 07 10 98 60 BD 30 C5 F0 B8 C528 : 06 91 5F C8 E8 D0 F5 60 95 C530 : 97 20 35 33 32 38 30 2C 89 C538 : 20 20 3A 97 20 35 33 32 C7 C540 : 38 31 2C 20 20 3A 99 20 9A C548 : C7 28 31 34 20 29 C7 28 B1 C550 : 31 34 37 29 3B 00 81 20 88 C558 : 5A B2 31 20 A4 20 00 C7 37 C560 : 28 33 34 29 00 84 05 A9 E0 C568 : 00 85 62 86 63 A2 90 38 92 C570 : 20 49 BC 20 DF BD A2 00 DE C578 : A4 05 BD 00 01 F0 06 91 E1 C580 : 5F E8 C8 D0 F5 60 A9 00 A8 C588 : 91 5F 84 06 A0 02 A5 14 84 C590 : 91 5F 18 65 02 85 14 A5 6C C598 : 15 90 02 E6 15 C8 91 5F EF C5A0 : A0 00 A5 5F 38 65 06 91 80 C5A8 : 5F 48 A5 60 69 00 C8 91 7E C5B0 : 5F 85 60 68 85 5F A0 04 D5 C5B8 : 84 05 06 07 60 05