C 64
Unterprogramm

Unterprogrammebibliothek: Sieger mit Maske

In dieser Ausgabe wird zum erstenmal ein Gewinner unseres Programmierwettbewerbs »Unterprogrammbibliothek« vorgestellt. Das Programm »Maske« bietet eine komfortable Routine zur Eingabe und Programmierung von Bildschirmmasken.

Jacques Effenberg, der Autor des Programms

Die Anzahl der eingegangenen Unterprogramme und deren unterschiedliche Thematik machte eine Bewertung natürlich nicht einfach. Wenn Ihr Programm diesmal nicht vorgestellt wird, so bedeutet das keine Abqualifikation. Damit Sie als Leser aber auch in den Genuß umfangreicherer Unterprogramme kommen, werden wir gelegentlich zusätzlich zu unserem »Unterprogramm des Monats« andere interessante Einsendungen veröffentlichen.

Der Autor dieses Programms ist ein waschechter Berliner. Jacques Effenberg ist 35 Jahre alt und von Beruf Maschinenschlosser. Im März 1983 kaufte er sich einen C 64. Nachdem er sich ein knappes Jahr mit Basic versuchte, stieg er auf Assemblerprogrammierung um, weil er mit Maschinensprache viele Probleme besser lösen konnte. Zum Programm selbst:

Das Programm Maske hat die Aufgabe, die Programmierung von Bildschirmmasken zu vereinfachen. Der erste Befehl erstellt horizontale und vertikale Linien. Die an den Schnittstellen benötigten Zeichen werden vom Programm ermittelt und eingesetzt. Der zweite Befehl löscht vom Benutzer definierte Felder in der Bildschirmmaske. Der dritte Befehl dient dazu, Text an bestimmte Stellen des Bildschirms zu drucken. Das Maschinenprogramm liegt im Speicherbereich von 49152 bis 50539. Eigene Fehlermeldungen und das Listen der Basic-Zeile in der der Fehler vorkommt, erleichtern dem Benutzer die Arbeit.

Parameterübergabe, Fehlermeldungen

1) Linien zeichnen

Der Befehl für Linien zeichnen wird in Basic wie folgt programmiert:
SYS 49152, Richtung, Zeile, Spalte, Länge, Farbe
1a) Richtung
Für eine horizontale Linie geben Sie eine 0 und für eine vertikale Linie eine 1 ein. Bei einer Zahl größer als 1 meldet sich der Computer mit der Fehlermeldung:

Richtung Wert zu groß (0 bis 1) in:
und listet die Zeile Ihres Basic-Programms.
1b) Zeile
Die Zeilenangabe liegt im Bereich von 1 bis 25. Bei Werten von kleiner als 1 oder größer als 25 lautet die Fehlermeldung:

Zeilenwert kleiner 1 oder größer 25 in:
und die Basic-Zeile wird gelistet. 1c) Spalte

Die Werte für die Spaltenangabe liegen im Bereich von 1 bis 40 und Werte kleiner als 1 oder größer als 40 ergeben die Fehlermeldung:

Spaltenwert kleiner 1 oder größer 40 in:
sowie eine Anzeige der Zeile.
1d) Die Länge kann im Bereich von 1 bis 40 für horziontale Linien und für vertikale Linien im Bereich von 1 bis 25 liegen. Werte, die nicht in diesem Zahlenbereich liegen, führen zu der Fehlermeldung:

Länge Linie zu klein oder zu groß in:
Wollen Sie zum Beispiel eine horizontale Linie zeichnen, mit dem Spaltenwert 20 und geben als Länge einen Wert von 22 an, so führt das zur Meldung:

Spalte + Länge Linie größer 40 in:
da der Bereich von 40 möglichen Spalten überschritten wird.

Eine vertikale Linie zum Beispiel ab Zeile 10 und mit der Länge 17 würde die Fehlermeldung:

Zeile + Länge Linie größer 25 in:
ergeben, da das Ergebnis von 10 + 17 den möglichen Bereich von 25 Zeilen überschreitet. In allen drei Beispielen erfolgt ein LISTen der Basic-Zeile.
1e) Farbe
Für die Farbwerte würden Zahlen im Bereich von 0 bis 15 in Frage kommen. Werte größer als 15 führen zu keiner Fehlermeldung.

2) Felder löschen

Um bestimmte Bereiche auf dem Bildschirm zu löschen, müssen Sie den Befehl:

SYS50083, abZeile, bisZeile, Spalte, Länge eingeben.
2a) abZeile, bisZeile

Wollen Sie zum Beispiel die ersten fünf Zeilen auf Ihrem Bildschirm komplett löschen, müßte der Befehl wie folgt aussehen:
SYS 50083,1,5,1,40
also ab Zeile 1 bis Zeile 5, ab Spalte 1 und 40 Zeichen lang. Ist nur eine Zeile zu löschen, dann ist der Wert ab Zeile gleich dem Wert bis Zeile.

Geben Sie zum Beispiel für ab Zeile 10 und bis Zeile 2 ein, so erfolgt die Fehlermeldung:

Zeile 1 ist größer als Zeile 2 in:
sowie ein Listen der Basic-Zeile.
2b) Zahlenbereich

Für die Bereichsangabe gelten die Werte aus Absatz 1, sowie bei Überschreitungen auch die Fehlermeldungen.

3) Print

Für die gezielte Ausgabe eines Textes auf dem Bildschirm lautet der Befehl:

SYS 50242, Zeile, Spalte, Farbe, ”Text”
3a) Zeile, Spalte, Farbe

Alle unter Absatz 1 beschriebenen Zahlenbereiche für die Angabe bei Zeile, Spalte, Farbe gelten auch hier. Ebenso treffen auch die dort erwähnten Fehlermeldungen bei einer Bereichsüberschreitung zu.
3b) "Text”

Hier kann all das stehen, was Sie auf dem Bildschirm ausgeben wollen.
Ein Beispiel:
SYS 50242,1,20,2,”Probe”
es wird in diesem Fall in der ersten Zeile ab Spalte 20 das Wort »Probe« in roter Farbe auf dem Bildschirm ausgegeben. Sie könnten auch vorher im Programm festlegen, daß D$ = ’’Probe” ist, schreiben dann SYS 50242,1,20,2, D$ und erhalten das gleiche Ergebnis.

Hatten Sie vor diesem Befehl eine grüne Cursorfarbe, dann wird, nach dem Ausgeben des Wortes »Probe« in roter Farbe, Ihre Cursorfarbe wieder grün sein.

4) Erklärungen zum DATA-Programm

4a) Programmablauf

In Zeile 1000 werden nach der Dimensionierung der Variablen P die 116 Prüfsummen für das Maschinenprogramm in P(I) eingelesen. Jede Prüfsumme ist das Ergebnis einer Addition von zwölf DATA-Werten. Die Variable SP addiert die Prüfsummen. Zeile 1130 überprüft die Gesamtsumme und gibt bei einer Differenz die Meldung »Fehler Prüfsumme« aus. Das Programm wird beendet.

Das Maschinenprogramm wird ab Zeile 1140 eingelesen und gespeichert. Die Variablen S und SI addieren und ZI zählt die DATA-Werte.

Ist ZI = 12 wird in Zeile 1160 die Variable S mit der jeweiligen Prüfsumme P (PI) verglichen. Ist S ungleich P (PI), verzweigt das Programm zur Zeile 1210.

In Zeile 1190 wird SI mit der Gesamtsumme aller DATAs verglichen. Bei einer Differenz ergibt sich ein Fehler in der letzten DATA-Reihe. Es kommt zur Ausgabe der Meldung »Fehler letzte Reihe DATA«.

Sind alle Werte richtig eingegeben, wird in Zeile 1200 nach der Meldung »OK« das Programm beendet. Beim Einlesen von DATA-Zeilen notiert sich der Interpreter die abzuarbeitende Zeilennummer in den Speicherstellen 63 und 64 der Zeropage. War in Zeile 1160 die Summe von 12 DATA-Werten und die Prüfsumme P (PI) ungleich, so wird in Zeile 1210 die Zeilennummer in der der Fehler auftrat in Z$ festgehalten.

Dann wird der Bildschirm gelöscht und in Zeile 1240 die Meldung »Fehler in Zeile« Z$ ausgegeben. In den Zeilen 1250 bis 1260 wird der Befehl »LIST« und die Zeilennummer in den Tastaturpuffer gePOKEt. Dazu kommt in Zeile 1270 noch der Befehl »RETURN« und in der Speicherstelle 198 wird dem Interpreter mitgeteilt, wieviel Stellen im Tastaturpuffer belegt sind.

Nach dem Befehl »END« in Zeile 1280 und der Ausgabe von »READY« befindet sich der Computer in einer Warteschleife, in der auch die Speicherstelle 198 abgefragt wird. Da der Wert in 198 größer als 0 ist, arbeitet der Interpreter jetzt den Tastaturpuffer in folgender Reihenfolge (zum Beispiel bei Fehler in Zeile 1290) ab:
Speicher 631 Wert 76 = L
Speicher 632 Wert 105 = i (L + Shift i = Kurzzeichen für LIST)
Speicher 633 Wert 49 = 1
Speicher 634 Wert 50 = 2
Speicher 635 Wert 57 = 9
Speicher 636 Wert 48 = 0
Speicher 637 Wert 13 = Return
also LIST 1290 und die Zeile mit dem Fehler wird gelistet.
4b) Programmverbindung

Haben Sie alle DATA-Werte richtig eingegeben und der Computer hat sich nach einiger Zeit mit »OK« wieder gemeldet, so können Sie jetzt die Zeilen 1000 bis 1280 löschen. Dann geben Sie die folgende Zeile ein: 1280 FOR I = 49152 TO 50539:READ X : POKE I, X:NEXT:NEW
und speichern das Programm ab.

Wenn Sie das Programm in Zukunft benutzen, dann wird nach dem Einlesen des Maschinenprogramms in den Speicherbereich 49152 bis 50539 das DATA-Programm gelöscht, und Sie haben den ganzen Basic-Speicher für Ihr eigenes Programm zur Verfügung.

Sind Sie Besitzer eines Diskettenlaufwerkes, dann können Sie in der Zeile 1280 statt »NEW« den Befehl LOAD ”…”,8 schreiben, und das DATA-Programm lädt nach dem Einlesen der DATA-Zeilen Ihr eigenes Programm gleich nach.

Zwischen ”…” muß der Name Ihres Programms stehen. Wenn Sie diese Variante wählen, dann muß aber die erste Zeile Ihres eigenen Programms wie folgt aussehen:
10 POKE 45, PEEK (174): POKE 46, PEEK (175): CLR
Durch diese Lösung wird das DATA-Programm auch gelöscht und Ihr Programm wird gleich nachgeladen und startet sich selbst.

(Jacques Effenberg/gk)
10 rem---------------------------------
20 rem up maske  (datas)
30 rem   jacques effenberg
40 rem---------------------------------
50 :
1000 dimp(115):fori=0to115:readx:p(i)=x:sp=sp+x:next
1010 data1249,1266,1206,1429,1453,1416,1184,1949,1754,1732
1020 data1665,1376,1854,1202,1653,1611,2033,1588,1979,1674
1030 data1433,1523,1343,1359,1493,1984,1744,1413,1649,1693
1040 data1883,1478,1422,1121,1447,1745,1952,1318,1747,1954
1050 data1519,1860,1592,1701,1429,2066,1590,1986,1392,2063
1060 data1762,1649,1811,1225,1887,1537,1512,1552,1640,1510
1070 data1878,1306,1379,1529,1544,1473,1799,1798,1244,1667
1080 data1282,1244,1703,1404,1342,1319,1350,1372,1414,1392
1090 data1433,1529,1708,2062,1481,1995,1689,1918,1744,2013
1100 data2050,1369,1363,1623,1454,1322,1282,1264,934,668
1110 data808,793,677,826,723,762,716,661,752,763
1120 data736,827,564,788,759,387
1130 ifsp<>168139thenprint"fehler pruefsumme !":end
1140 fori=49152to50539:readx:pokei,x:s=s+x
1150 z1=z1+1:s1=s1+x
1160 ifz1=12ands<>p(p1)then1210
1170 ifz1=12thenp1=p1+1:s=0:z1=0
1180 next
1190 ifs1<>168139thenprint"fehler letzte reihe data !":end
1200 print"ok.":end
1210 z$=str$(peek(64)*256+peek(63))
1220 z1=len(z$)-1:z2=2:sp=633:printchr$(147)
1230 fori=0toz1-1:z(i)=val(mid$(z$,z2,1)):z2=z2+1:next
1240 print" ** fehler in zeile : "z$
1250 poke631,76:poke632,105
1260 fori=0toz1-1:pokesp,z(i)+48:sp=sp+1:next
1270 pokesp+1,13:poke198,z1+4
1280 end
1290 data 169, 0, 141, 169, 2, 141, 170, 2, 141, 171, 2, 141
1300 data 172, 2, 141, 173, 2, 141, 174, 2, 141, 175, 2, 141
1310 data 176, 2, 32, 43, 193, 224, 2, 176, 45, 142, 169, 2
1320 data 32, 43, 193, 202, 48, 52, 224, 25, 176, 48, 134, 252
1330 data 32, 43, 193, 202, 48, 56, 224, 40, 176, 52, 134, 253
1340 data 32, 43, 193, 32, 126, 192, 134, 254, 32, 43, 193, 142
1350 data 168, 2, 32, 20, 193, 96, 32, 68, 229, 162, 150, 32
1360 data 167, 192, 232, 224, 180, 208, 248, 32, 174, 192, 32, 68
1370 data 229, 162, 0, 32, 167, 192, 232, 224, 28, 208, 248, 32
1380 data 174, 192, 32, 68, 229, 162, 28, 32, 167, 192, 232, 224
1390 data 56, 208, 248, 32, 174, 192, 32, 182, 192, 173, 174, 2
1400 data 208, 1, 96, 32, 68, 229, 174, 175, 2, 32, 167, 192
1410 data 232, 236, 176, 2, 208, 247, 32, 174, 192, 165, 57, 133
1420 data 20, 165, 58, 133, 21, 32, 19, 166, 32, 201, 166, 189
1430 data 153, 196, 32, 210, 255, 96, 169, 13, 32, 210, 255, 32
1440 data 153, 192, 138, 240, 49, 173, 169, 2, 208, 22, 224, 41
1450 data 176, 40, 202, 169, 39, 56, 229, 253, 133, 254, 228, 254
1460 data 176, 2, 232, 96, 208, 38, 232, 96, 224, 26, 240, 18
1470 data 202, 169, 24, 56, 229, 252, 133, 254, 228, 254, 176, 2
1480 data 232, 96, 208, 30, 232, 96, 238, 174, 2, 169, 56, 141
1490 data 175, 2, 169, 89, 141, 176, 2, 96, 238, 174, 2, 169
1500 data 89, 141, 175, 2, 169, 120, 141, 176, 2, 96, 238, 174
1510 data 2, 169, 120, 141, 175, 2, 169, 150, 141, 176, 2, 96
1520 data 173, 169, 2, 201, 1, 240, 4, 32, 74, 193, 96, 174
1530 data 169, 2, 189, 126, 196, 133, 251, 32, 74, 193, 96, 32
1540 data 253, 174, 32, 158, 183, 96, 166, 252, 32, 240, 233, 165
1550 data 253, 240, 11, 165, 209, 24, 101, 253, 133, 209, 144, 2
1560 data 230, 210, 32, 36, 234, 96, 32, 50, 193, 160, 0, 140
1570 data 170, 2, 32, 139, 193, 165, 251, 145, 209, 173, 168, 2
1580 data 145, 243, 173, 169, 2, 201, 1, 240, 9, 200, 140, 170
1590 data 2, 196, 254, 208, 22, 96, 238, 173, 2, 198, 254, 240
1600 data 13, 230, 252, 32, 50, 193, 32, 139, 193, 173, 169, 2
1610 data 16, 211, 96, 32, 139, 193, 173, 169, 2, 16, 202, 173
1620 data 169, 2, 201, 1, 240, 4, 32, 112, 194, 96, 32, 38
1630 data 195, 96, 173, 169, 2, 208, 36, 173, 171, 2, 208, 14
1640 data 198, 252, 32, 50, 193, 32, 231, 193, 230, 252, 32, 50
1650 data 193, 96, 230, 252, 32, 50, 193, 32, 231, 193, 198, 252
1660 data 32, 50, 193, 206, 171, 2, 96, 173, 171, 2, 208, 14
1670 data 198, 253, 32, 50, 193, 32, 231, 193, 230, 253, 32, 50
1680 data 193, 96, 230, 253, 32, 50, 193, 32, 231, 193, 198, 253
1690 data 32, 50, 193, 206, 171, 2, 96, 162, 0, 177, 209, 221
1700 data 126, 196, 240, 33, 232, 224, 11, 208, 246, 173, 169, 2
1710 data 208, 11, 162, 0, 189, 126, 196, 133, 251, 142, 172, 2
1720 data 96, 162, 0, 142, 172, 2, 232, 189, 126, 196, 133, 251
1730 data 96, 173, 169, 2, 208, 45, 173, 171, 2, 208, 20, 162
1740 data 0, 177, 209, 221, 141, 196, 240, 214, 232, 224, 4, 208
1750 data 246, 162, 1, 142, 172, 2, 96, 162, 0, 177, 209, 221
1760 data 137, 196, 240, 194, 232, 224, 4, 208, 246, 162, 1, 142
1770 data 172, 2, 96, 173, 171, 2, 208, 20, 162, 0, 177, 209
1780 data 221, 149, 196, 240, 180, 232, 224, 4, 208, 246, 162, 1
1790 data 142, 172, 2, 96, 162, 0, 177, 209, 221, 145, 196, 240
1800 data 160, 232, 224, 4, 208, 246, 162, 1, 142, 172, 2, 96
1810 data 165, 252, 208, 51, 238, 171, 2, 32, 154, 193, 173, 172
1820 data 2, 208, 1, 96, 173, 170, 2, 208, 8, 162, 6, 189
1830 data 126, 196, 133, 251, 96, 165, 254, 56, 237, 170, 2, 201
1840 data 1, 208, 8, 162, 5, 189, 126, 196, 133, 251, 96, 162
1850 data 8, 189, 126, 196, 133, 251, 96, 201, 24, 208, 48, 32
1860 data 154, 193, 173, 172, 2, 208, 1, 96, 173, 170, 2, 208
1870 data 8, 162, 4, 189, 126, 196, 133, 251, 96, 165, 254, 56
1880 data 237, 170, 2, 201, 1, 208, 8, 162, 10, 189, 126, 196
1890 data 133, 251, 96, 162, 7, 189, 126, 196, 133, 251, 96, 238
1900 data 171, 2, 32, 154, 193, 173, 172, 2, 208, 13, 32, 154
1910 data 193, 173, 172, 2, 208, 1, 96, 32, 180, 194, 96, 32
1920 data 154, 193, 173, 172, 2, 208, 4, 32, 128, 194, 96, 173
1930 data 170, 2, 208, 8, 162, 3, 189, 126, 196, 133, 251, 96
1940 data 165, 254, 56, 237, 170, 2, 201, 1, 208, 8, 162, 9
1950 data 189, 126, 196, 133, 251, 96, 162, 2, 189, 126, 196, 133
1960 data 251, 96, 165, 253, 208, 35, 238, 171, 2, 32, 154, 193
1970 data 173, 172, 2, 208, 1, 96, 173, 173, 2, 208, 4, 32
1980 data 133, 194, 96, 165, 254, 201, 1, 208, 4, 32, 185, 194
1990 data 96, 32, 4, 195, 96, 201, 39, 208, 32, 32, 154, 193
2000 data 173, 172, 2, 208, 1, 96, 173, 173, 2, 208, 4, 32
2010 data 151, 194, 96, 165, 254, 201, 1, 208, 4, 32, 203, 194
2020 data 96, 32, 22, 195, 96, 238, 171, 2, 32, 154, 193, 173
2030 data 172, 2, 208, 4, 32, 81, 195, 96, 32, 154, 193, 173
2040 data 172, 2, 208, 4, 32, 54, 195, 96, 173, 173, 2, 208
2050 data 4, 32, 159, 194, 96, 165, 254, 201, 1, 208, 4, 32
2060 data 211, 194, 96, 32, 30, 195, 96, 32, 43, 193, 202, 48
2070 data 45, 224, 25, 176, 41, 134, 251, 32, 43, 193, 202, 48
2080 data 33, 224, 25, 176, 29, 134, 252, 32, 217, 195, 32, 43
2090 data 193, 202, 48, 46, 224, 40, 176, 42, 134, 253, 32, 43
2100 data 193, 32, 245, 195, 134, 254, 32, 26, 196, 96, 32, 94
2110 data 192, 165, 251, 197, 252, 48, 18, 240, 16, 32, 68, 229
2120 data 162, 180, 32, 167, 192, 232, 224, 211, 208, 248, 32, 174
2130 data 192, 96, 32, 110, 192, 138, 240, 22, 224, 41, 176, 18
2140 data 202, 169, 39, 56, 229, 253, 133, 254, 228, 254, 176, 2
2150 data 232, 96, 208, 8, 232, 96, 32, 234, 192, 32, 135, 192
2160 data 32, 248, 192, 32, 135, 192, 166, 251, 32, 240, 233, 165
2170 data 253, 240, 11, 165, 209, 24, 101, 253, 133, 209, 144, 2
2180 data 230, 210, 169, 32, 160, 0, 145, 209, 200, 196, 254, 208
2190 data 249, 228, 252, 240, 4, 230, 251, 208, 217, 96, 32, 43
2200 data 193, 202, 48, 41, 224, 25, 176, 37, 134, 214, 32, 43
2210 data 193, 202, 48, 32, 224, 40, 176, 28, 134, 211, 32, 43
2220 data 193, 173, 134, 2, 133, 251, 142, 134, 2, 32, 253, 174
2230 data 32, 119, 196, 165, 251, 141, 134, 2, 96, 32, 94, 192
2240 data 32, 110, 192, 32, 108, 229, 32, 164, 170, 96, 64, 93
2250 data 91, 107, 109, 110, 112, 113, 114, 115, 125, 64, 110, 112
2260 data 114, 64, 109, 113, 125, 93, 107, 109, 112, 93, 110, 115
2270 data 125, 90, 69, 73, 76, 69, 78, 87, 69, 82, 84, 32
2280 data 60, 49, 32, 79, 68, 69, 82, 32, 62, 50, 53, 32
2290 data 32, 73, 78, 32, 58, 83, 80, 65, 76, 84, 69, 78
2300 data 87, 69, 82, 84, 32, 60, 49, 32, 79, 68, 69, 82
2310 data 32, 62, 52, 48, 32, 73, 78, 32, 58, 76, 65, 69
2320 data 78, 71, 69, 32, 76, 73, 78, 73, 69, 32, 90, 85
2330 data 32, 60, 32, 79, 68, 69, 82, 32, 90, 85, 32, 62
2340 data 32, 32, 73, 78, 32, 58, 83, 80, 65, 76, 84, 69
2350 data 32, 43, 32, 76, 65, 69, 78, 71, 69, 32, 76, 73
2360 data 78, 73, 69, 32, 62, 52, 48, 32, 32, 73, 78, 32
2370 data 58, 90, 69, 73, 76, 69, 32, 43, 32, 76, 65, 69
2380 data 78, 71, 69, 32, 76, 73, 78, 73, 69, 32, 62, 50
2390 data 53, 32, 32, 73, 78, 32, 58, 82, 73, 67, 72, 84
2400 data 85, 78, 71, 32, 87, 69, 82, 84, 32, 90, 85, 32
2410 data 62, 32, 40, 48, 45, 49, 41, 32, 32, 73, 78, 32
2420 data 58, 90, 69, 73, 76, 69, 32, 49, 32, 73, 83, 84
2430 data 32, 62, 32, 65, 76, 83, 32, 90, 69, 73, 76, 69
2440 data 32, 50, 32, 32, 73, 78, 32, 58
Dieses Demo-Programm zeigt anschaulich die Möglichkeiten des Unterprogramms
10 rem--------------------------------
20 rem maske demo-programm
30 rem--------------------------------
40 :
100 poke53280,0:poke53281,0:printchr$(147)
110 l=49152  :rem linie
120 s=50083  :rem feld loeschen
130 p=50242  :rem print
140 rem
150 rem linie 40 * vertikal
160 rem
170 fori=1to40:sysl,1,1,i,25,13:next
180 rem
190 rem linie 25 * horizontal
200 rem
210 fori=1to25:sysl,0,i,1,40,8:next
220 rem
230 rem feld 1 =  hauptmenue
240 rem
250 syss,1,5,12,18:sysl,0,1,1,40,8:sysl,0,5,1,40,8:sysl,1,1,12,25,8
260 sysl,1,1,29,25,8:sysl,0,2,13,16,10:sysl,0,4,13,16,10:sysl,1,2,13,3,10
270 sysl,1,2,28,3,10:sysp,3,16,4,"demo - prg"
280 rem
290 rem feld 2 = sys......
300 rem
310 syss,7,21,4,34:sysl,0,7,1,40,8:sysl,0,21,1,40,8:sysl,1,1,4,25,8
320 sysl,1,1,37,25,8
330 n=1:fori=10to18step4:sysp,i,6,3,n:n=n+1:next
340 fori=9to19step2:sysl,0,i,6,3,12:next
350 fori=9to17step4:sysl,1,i,6,3,12:sysl,1,i,8,3,12:next
360 sysp,10,10,5,"sys 49152  linie  zeichnen"
370 sysp,14,10,14,"sys 50083  feld   loeschen"
380 sysp,18,10,13,"sys 50242  print  bildsch."
390 rem
400 rem feld 3 noch......
410 rem
420 syss,24,24,5,32:sysl,0,23,1,40,8:sysl,0,25,1,40,8
430 sysl,1,1,4,25,8:sysl,1,1,37,25,8
440 sysp,24,11,14,"noch  einmal  (j/n)"
450 rem
460 rem
470 getx$:ifx$=""then470
480 ifx$="n"thenprintchr$(147):list
490 ifx$="j"then100
500 goto470
Das Programm »Maske« in Form von DATA-Zeilen
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →