C 64
Tips und Tricks

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
Tabelle 1. Editor-Steuerbefehle zum Maskengenerator
(Georg Wichert/ah)
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
Listing Maskengenerator.
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →