C 64
Unterprogramm-Wettbewerb

500 Mark für formatierte Eingabe

Schreiben Sie ein Programm, dann besteht es in der Regel aus drei Teilen: Eingabe, Verarbeitung und Ausgabe von Daten. Es sind also diese Teile, die immer wieder programmiert werden müssen. Und deshalb hat dieses Mal ein Unterprogramm den Wettbewerb gewonnen, das eine wichtige und universelle Eingabe-Routine zur Verfügung stellt.

Jeder Programmierer steht bei einem neuen Programm vor der gleichen Frage: Wie soll meine Eingabe aussehen? Begnügt man sich mit dem vorhandenen Wortschatz des Commodore-Basic, ist es schwierig, eine sichere Eingabe zu erhalten. Andere Basic-Versionen haben entsprechende Befehle. Was also liegt näher, als sich eine Eingabe-Routine selbst zu programmieren, und zwar eine, die man immer wieder verwenden kann? Doch da beginnt auch schon das Problem. Es ist gar nicht so einfach, Standard-Unterprogramme zu entwickeln. So ein Programm muß folgende Forderungen erfüllen:

  1. Es muß fehlerfrei sein. Das heißt, ganz gleich, welche Taste bei einer Eingabe gedrückt wird, das Programm darf niemals mit einer Fehlermeldung (oder noch schlimmer: ohne Meldung) abstürzen.
  2. Es muß flexibel sein. Man muß das Unterprogramm in jedem möglichen Programm einsetzen können, unabhängig von der sonstigen Aufgabe. Die wichtigsten Eingaben sind: nur numerische, also alle Ziffern von 0 bis 9; für kaufmännische und ähnliche Probleme muß wahlweise zusätzlich noch die Eingabe eines Dezimalpunktes möglich sein; und Text, also alle Buchstaben, Sonderzeichen und Ziffern. Oft wird eine bestimmte Eingabelänge gefordert und darf nicht überschritten werden, auch das ist wichtig. Und damit die einzugebenden Werte auch an der richtigen Stelle stehen, muß der Cursor positioniert werden können.

Das folgende Unterprogramm erfüllt diese Forderungen und läßt sich in jedem Basic-Programm einsetzen. Die Bedienung des Programms können Sie den REM-Zeilen des Listings entnehmen.

(Rolf Hilchner/gk)
|
1 rem" O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P"
2 rem" {CBM-H}  up  -  formatierte eingabe  {CBM-N}"
3 rem" L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
4 rem" O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P"
5 rem" {CBM-H}  q1  =  zeile der eingabe    {CBM-N}"
6 rem" {CBM-H}  q2  =  spalte der eingabe   {CBM-N}"
7 rem" {CBM-H}  q3  =  max. laenge d. eing. {CBM-N}"
8 rem" {CBM-H}  q4  =  1 _ leereingabe nicht{CBM-N}"
9 rem" {CBM-H}             erlaubt          {CBM-N}"
10 rem"{CBM-H}  q5  =  1 _ nur numerische   {CBM-N}"
11 rem"{CBM-H}             eingabe erlaubt  {CBM-N}"
12 rem"{CBM-H}  q6  =  1 _ bei numerischer  {CBM-N}"
13 rem"{CBM-H}             eingabe ist ein  {CBM-N}"
14 rem"{CBM-H}             punkt erlaubt    {CBM-N}"
15 rem"{CBM-H}                              {CBM-N}"
16 rem"{CBM-H}  y3$ =  muss einmal am anfang{CBM-N}"
17 rem"{CBM-H}         des hauptprogrammes  {CBM-N}"
18 rem"{CBM-H}         definiert werden. ein{CBM-N}"
19 rem"{CBM-H}         punktestring, der die{CBM-N}"
20 rem"{CBM-H}         laenge der laengesten{CBM-N}"
21 rem"{CBM-H}         eingabe im hauptprog.{CBM-N}"
22 rem"{CBM-H}         hat. zusaetzlich muss{CBM-N}"
23 rem"{CBM-H}         am ende des strings  {CBM-N}"
24 rem"{CBM-H}         das zeichen '_'      {CBM-N}"
25 rem"{CBM-H}         stehen. beispiel :   {CBM-N}"
26 rem"{CBM-H}         y3$=''............_''{CBM-N}"
27 rem"{CBM-H}                              {CBM-N}"
28 rem"{CBM-H}  y4$ =  wie 'y3$', jedoch    {CBM-N}"
29 rem"{CBM-H}         werden statt punkte  {CBM-N}"
30 rem"{CBM-H}         spaces gesetzt. das  {CBM-N}"
31 rem"{CBM-H}         zeichen '_' entfaellt{CBM-N}"
32 rem"{CBM-H}         beispiel :           {CBM-N}"
33 rem"{CBM-H}         y4$=''             ''{CBM-N}"
34 rem"L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
35 rem"O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P"
36 rem"{CBM-H}  ii  =  laufvariable         {CBM-N}"
37 rem"{CBM-H}  jj  =  laufvariable         {CBM-N}"
38 rem"{CBM-H}  q7  =  zaehler, der angibt, {CBM-N}"
39 rem"{CBM-H}         an welcher stelle ein{CBM-N}"
40 rem"{CBM-H}         punkt gesetzt wurde  {CBM-N}"
41 rem"{CBM-H}                              {CBM-N}"
42 rem"{CBM-H}  y1$ =  inhalt der eingabe   {CBM-N}"
43 rem"{CBM-H}         wird vom unterprog.  {CBM-N}"
44 rem"{CBM-H}         an das hauptprog.    {CBM-N}"
45 rem"{CBM-H}         uebergeben.          {CBM-N}"
46 rem"{CBM-H}                              {CBM-N}"
47 rem"{CBM-H}  y2$ =  enthaelt das jeweils {CBM-N}"
48 rem"{CBM-H}         eingegebene zeichen  {CBM-N}"
49 rem"L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
50 rem"O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P"
51 rem"{CBM-H}  formatierte eingabe, bei der{CBM-N}"
52 rem"{CBM-H}  jedes eingegebene zeichen   {CBM-N}"
53 rem"{CBM-H}  ueberprueft und falls noetig{CBM-N}"
54 rem"{CBM-H}  zurueckgewiesen werden kann.{CBM-N}"
55 rem"{CBM-H}  die angegebenen parameter   {CBM-N}"
56 rem"{CBM-H}  muessen zum teil (q1,q2,q3, {CBM-N}"
57 rem"{CBM-H}  y3$,y4$) eingegeben werden, {CBM-N}"
58 rem"{CBM-H}  oder koennen bei bedarf     {CBM-N}"
59 rem"{CBM-H}  uebergeben werden (q4,q5,q6){CBM-N}"
60 rem"{CBM-H}  vor dem ruecksprung ins     {CBM-N}"
61 rem"{CBM-H}  hauptprogramm werden alle   {CBM-N}"
62 rem"{CBM-H}  parameter auf null gesetzt. {CBM-N}"
63 rem"{CBM-H}  das ergebnis der eingabe-   {CBM-N}"
64 rem"{CBM-H}  routine, die eingabe wird in{CBM-N}"
65 rem"{CBM-H}  der variablen 'y1$' an das  {CBM-N}"
66 rem"{CBM-H}  hauptprogramm uebergeben.   {CBM-N}"
67 rem"L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
68 rem
69 rem
70 rem
100 rem   ***************************
102 rem   *** formatierte eingabe ***
104 rem   ***         von         ***
106 rem   ***    rolf hilchner    ***
108 rem   ***   rheydter str.48   ***
109 rem   ***     4040 neuss 1    ***
110 rem   ***************************
120 poke650,255:y1$="":q2=q2-1:poke214,q1:poke211,q2:print"{up}{CBM-I}";right$(y3$,q3)
130 forii=1toq3+1
140 gety2$:ify2$=""then140
150 ifasc(y2$)=20andii>1theny1$=left$(y1$,len(y1$)-1):ii=ii-2:goto250
160 ifasc(y2$)=13andii=1andq4=1thengosub280:goto140
170 ifasc(y2$)<>13andii=q3+1thengosub280:goto140
180 ifasc(y2$)=13goto260
190 ifasc(y2$)<32orasc(y2$)>93thengosub280:goto140
200 ifq5=1andasc(y2$)=45andii=1goto240
210 ifii<=q7thenq7=0:q6=1
220 ifq5=1andasc(y2$)=46andq6=1thenq6=0:q7=ii:goto240
230 ifq5=1andasc(y2$)<48orq5=1andasc(y2$)>57thengosub280:goto140
240 y1$=y1$+y2$
250 poke214,q1:poke211,q2:print"{up}";left$(y1$+"{CBM-I}"+y3$,q3)+"_";:nextii
260 poke214,q1:poke211,q2:print"{up}";y1$+left$(y4$,q3-len(y1$)+1)
270 q1=0:q2=0:q3=0:q4=0:q5=0:q6=0:q7=0:poke650,0:return:'<---ausgangausup
280 poke54296,15:poke54277,6:poke54278,0:poke54275,8:poke54274,0
290 poke54273,92:poke54272,237:poke54276,65:forjj=1to150:nextjj:poke54276,0
300 return:'<---ausgangauspiep-up
310 rem"O{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}P"
320 rem"{CBM-H}beispiel 1 fuer den aufruf : {CBM-N}"
330 rem"{CBM-H}                             {CBM-N}"
340 rem"{CBM-H}10 y3$=''.........._'':y4$=''{CBM-N}"
350 rem"{CBM-H}                             {CBM-N}"
360 rem"{CBM-H}20 print''{clr}'':poke214,5:poke {CBM-N}"
370 rem"{CBM-H}   211,15:print''{up}name :''    {CBM-N}"
380 rem"{CBM-H}30 q1=5:q2=23:q3=10:gosub 100{CBM-N}"
390 rem"{CBM-H}40 print:print''sie heissen''{CBM-N}"
400 rem"{CBM-H}   ;y1$:end                  {CBM-N}"
410 rem"{CBM-H}                             {CBM-N}"
420 rem"{CBM-H}beispiel 2 fuer den aufruf : {CBM-N}"
430 rem"{CBM-H}                             {CBM-N}"
440 rem"{CBM-H}10 y3$=''.........._'':y4$=''{CBM-N}"
460 rem"{CBM-H}20 print''{clr}'':poke214,5:poke {CBM-N}"
470 rem"{CBM-H}   211,15:print''{up}alter :''  {CBM-N}"
480 rem"{CBM-H}30 q1=5:q2=24:q3=10:q4=1:    {CBM-N}"
490 rem"{CBM-H}   q5=1:gosub 100            {CBM-N}"
500 rem"{CBM-H}40 print:print''sie sind'';  {CBM-N}"
510 rem"{CBM-H}   val(y1$);''jahre alt'':end{CBM-N}"
520 rem"{CBM-H}                             {CBM-N}"
530 rem"{CBM-H}hinweis :                    {CBM-N}"
540 rem"{CBM-H}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}{CBM-Y}                    {CBM-N}"
550 rem"{CBM-H}poke 214,y bewirkt, dass der {CBM-N}"
560 rem"{CBM-H}cursor in die zeile y springt{CBM-N}"
570 rem"{CBM-H}                             {CBM-N}"
580 rem"{CBM-H}poke 211,x bewirkt, dass der {CBM-N}"
590 rem"{CBM-H}cursor an d. spalte x springt{CBM-N}"
600 rem"L{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{CBM-P}{SHIFT-@}"
  1 REM " OYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYP" 
  2 REM " H{2SPACE}UP{2SPACE}-{2SPACE}FORMATIERTE EINGABE{2SPACE}N" 
  3 REM " LPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP@" 
  4 REM " OYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYP" 
  5 REM " H{2SPACE}Q1{2SPACE}={2SPACE}ZEILE DER EINGABE{4SPACE}N" 
  6 REM " H{2SPACE}Q2{2SPACE}={2SPACE}SPALTE DER EINGABE{3SPACE}N" 
  7 REM " H{2SPACE}Q3{2SPACE}={2SPACE}MAX. LAENGE D. EING. N" 
  8 REM " H{2SPACE}Q4{2SPACE}={2SPACE}1 ← LEEREINGABE NICHTN" 
  9 REM " H{13SPACE}ERLAUBT{10SPACE}N" 
 10 REM "H{2SPACE}Q5{2SPACE}={2SPACE}1 ← NUR NUMERISCHE{3SPACE}N" 
 11 REM "H{13SPACE}EINGABE ERLAUBT{2SPACE}N" 
 12 REM "H{2SPACE}Q6{2SPACE}={2SPACE}1 ← BEI NUMERISCHER{2SPACE}N" 
 13 REM "H{13SPACE}EINGABE IST EIN{2SPACE}N" 
 14 REM "H{13SPACE}PUNKT ERLAUBT{4SPACE}N" 
 15 REM "H{30SPACE}N" 
 16 REM "H{2SPACE}Y3$ ={2SPACE}MUSS EINMAL AM ANFANGN" 
 17 REM "H{9SPACE}DES HAUPTPROGRAMMES{2SPACE}N" 
 18 REM "H{9SPACE}DEFINIERT WERDEN. EINN" 
 19 REM "H{9SPACE}PUNKTESTRING, DER DIEN" 
 20 REM "H{9SPACE}LAENGE DER LAENGESTENN" 
 21 REM "H{9SPACE}EINGABE IM HAUPTPROG.N" 
 22 REM "H{9SPACE}HAT. ZUSAETZLICH MUSSN" 
 23 REM "H{9SPACE}AM ENDE DES STRINGS{2SPACE}N" 
 24 REM "H{9SPACE}DAS ZEICHEN '←'{6SPACE}N" 
 25 REM "H{9SPACE}STEHEN. BEISPIEL :{3SPACE}N" 
 26 REM "H{9SPACE}Y3$=''............←''N" 
 27 REM "H{30SPACE}N" 
 28 REM "H{2SPACE}Y4$ ={2SPACE}WIE 'Y3$', JEDOCH{4SPACE}N" 
 29 REM "H{9SPACE}WERDEN STATT PUNKTE{2SPACE}N" 
 30 REM "H{9SPACE}SPACES GESETZT. DAS{2SPACE}N" 
 31 REM "H{9SPACE}ZEICHEN '←' ENTFAELLTN" 
 32 REM "H{9SPACE}BEISPIEL :{11SPACE}N" 
 33 REM "H{9SPACE}Y4$=''{13SPACE}''N" 
 34 REM "LPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP@" 
 35 REM "OYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYP" 
 36 REM "H{2SPACE}II{2SPACE}={2SPACE}LAUFVARIABLE{9SPACE}N" 
 37 REM "H{2SPACE}JJ{2SPACE}={2SPACE}LAUFVARIABLE{9SPACE}N" 
 38 REM "H{2SPACE}Q7{2SPACE}={2SPACE}ZAEHLER, DER ANGIBT, N" 
 39 REM "H{9SPACE}AN WELCHER STELLE EINN" 
 40 REM "H{9SPACE}PUNKT GESETZT WURDE{2SPACE}N" 
 41 REM "H{30SPACE}N" 
 42 REM "H{2SPACE}Y1$ ={2SPACE}INHALT DER EINGABE{3SPACE}N" 
 43 REM "H{9SPACE}WIRD VOM UNTERPROG.{2SPACE}N" 
 44 REM "H{9SPACE}AN DAS HAUPTPROG.{4SPACE}N" 
 45 REM "H{9SPACE}UEBERGEBEN.{10SPACE}N" 
 46 REM "H{30SPACE}N" 
 47 REM "H{2SPACE}Y2$ ={2SPACE}ENTHAELT DAS JEWEILS N" 
 48 REM "H{9SPACE}EINGEGEBENE ZEICHEN{2SPACE}N" 
 49 REM "LPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP@" 
 50 REM "OYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYP" 
 51 REM "H{2SPACE}FORMATIERTE EINGABE, BEI DERN" 
 52 REM "H{2SPACE}JEDES EINGEGEBENE ZEICHEN{3SPACE}N" 
 53 REM "H{2SPACE}UEBERPRUEFT UND FALLS NOETIGN" 
 54 REM "H{2SPACE}ZURUECKGEWIESEN WERDEN KANN.N" 
 55 REM "H{2SPACE}DIE ANGEGEBENEN PARAMETER{3SPACE}N" 
 56 REM "H{2SPACE}MUESSEN ZUM TEIL (Q1,Q2,Q3, N" 
 57 REM "H{2SPACE}Y3$,Y4$) EINGEGEBEN WERDEN, N" 
 58 REM "H{2SPACE}ODER KOENNEN BEI BEDARF{5SPACE}N" 
 59 REM "H{2SPACE}UEBERGEBEN WERDEN (Q4,Q5,Q6)N" 
 60 REM "H{2SPACE}VOR DEM RUECKSPRUNG INS{5SPACE}N" 
 61 REM "H{2SPACE}HAUPTPROGRAMM WERDEN ALLE{3SPACE}N" 
 62 REM "H{2SPACE}PARAMETER AUF NULL GESETZT. N" 
 63 REM "H{2SPACE}DAS ERGEBNIS DER EINGABE-{3SPACE}N" 
 64 REM "H{2SPACE}ROUTINE, DIE EINGABE WIRD INN" 
 65 REM "H{2SPACE}DER VARIABLEN 'Y1$' AN DAS{2SPACE}N" 
 66 REM "H{2SPACE}HAUPTPROGRAMM UEBERGEBEN.{3SPACE}N" 
 67 REM "LPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP@" 
 68 REM 
 69 REM 
 70 REM 
 100 REM   *************************** 
 102 REM   *** FORMATIERTE EINGABE *** 
 104 REM   ***         VON         *** 
 106 REM   ***    ROLF HILCHNER    *** 
 108 REM   ***   RHEYDTER STR.48   *** 
 109 REM   ***     4040 NEUSS 1    *** 
 110 REM   *************************** 
 120 POKE 650,255:Y1$="":Q2=Q2-1:POKE 214,Q1:POKE 211,Q2:PRINT"{UP}I";RIGHT$ (Y3$,Q3) 
 130 FOR II=1 TOQ3+1 
 140 GET Y2$:IF Y2$="" THEN140 
 150 IF ASC (Y2$)=20AND II>1 THENY1$=LEFT$ (Y1$,LEN (Y1$)-1):II=II-2:GOTO 250 
 160 IF ASC (Y2$)=13AND II=1AND Q4=1 THENGOSUB 280:GOTO 140 
 170 IF ASC (Y2$)<>13AND II=Q3+1 THENGOSUB 280:GOTO 140 
 180 IF ASC (Y2$)=13GOTO 260 
 190 IF ASC (Y2$)<32OR ASC (Y2$)>93 THENGOSUB 280:GOTO 140 
 200 IF Q5=1AND ASC (Y2$)=45AND II=1GOTO 240 
 210 IF II<=Q7 THENQ7=0:Q6=1 
 220 IF Q5=1AND ASC (Y2$)=46AND Q6=1 THENQ6=0:Q7=II:GOTO 240 
 230 IF Q5=1AND ASC (Y2$)<48OR Q5=1AND ASC (Y2$)>57 THENGOSUB 280:GOTO 140 
 240 Y1$=Y1$+Y2$ 
 250 POKE 214,Q1:POKE 211,Q2:PRINT"{UP}";LEFT$ (Y1$+"I"+Y3$,Q3)+"←";:NEXT II 
 260 POKE 214,Q1:POKE 211,Q2:PRINT"{UP}";Y1$+LEFT$ (Y4$,Q3-LEN (Y1$)+1) 
 270 Q1=0:Q2=0:Q3=0:Q4=0:Q5=0:Q6=0:Q7=0:POKE 650,0:RETURN :'<---AUSGANGAUSUP 
 280 POKE 54296,15:POKE 54277,6:POKE 54278,0:POKE 54275,8:POKE 54274,0 
 290 POKE 54273,92:POKE 54272,237:POKE 54276,65:FOR JJ=1 TO150:NEXT JJ:POKE 54276,0 
 300 RETURN :'<---AUSGANGAUSPIEP-UP 
 310 REM "OYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYP" 
 320 REM "HBEISPIEL 1 FUER DEN AUFRUF : N" 
 330 REM "H{29SPACE}N" 
 340 REM "H10 Y3$=''..........←'':Y4$=''N" 
 350 REM "H{29SPACE}N" 
 360 REM "H20 PRINT''{CLR}'':POKE214,5:POKE N" 
 370 REM "H{3SPACE}211,15:PRINT''{UP}NAME :''{SPACE,3SPACE}N" 
 380 REM "H30 Q1=5:Q2=23:Q3=10:GOSUB 100N" 
 390 REM "H40 PRINT:PRINT''SIE HEISSEN''N" 
 400 REM "H{3SPACE};Y1$:END{18SPACE}N" 
 410 REM "H{29SPACE}N" 
 420 REM "HBEISPIEL 2 FUER DEN AUFRUF : N" 
 430 REM "H{29SPACE}N" 
 440 REM "H10 Y3$=''..........←'':Y4$=''N" 
 460 REM "H20 PRINT''{CLR}'':POKE214,5:POKE N" 
 470 REM "H{3SPACE}211,15:PRINT''{UP}ALTER :''{SPACE,SPACE}N" 
 480 REM "H30 Q1=5:Q2=24:Q3=10:Q4=1:{4SPACE}N" 
 490 REM "H{3SPACE}Q5=1:GOSUB 100{12SPACE}N" 
 500 REM "H40 PRINT:PRINT''SIE SIND'';{2SPACE}N" 
 510 REM "H{3SPACE}VAL(Y1$);''JAHRE ALT'':ENDN" 
 520 REM "H{29SPACE}N" 
 530 REM "HHINWEIS :{20SPACE}N" 
 540 REM "HYYYYYYYYY{20SPACE}N" 
 550 REM "HPOKE 214,Y BEWIRKT, DASS DER N" 
 560 REM "HCURSOR IN DIE ZEILE Y SPRINGTN" 
 570 REM "H{29SPACE}N" 
 580 REM "HPOKE 211,X BEWIRKT, DASS DER N" 
 590 REM "HCURSOR AN D. SPALTE X SPRINGTN" 
 600 REM "LPPPPPPPPPPPPPPPPPPPPPPPPPPPPP@" 
Formatierte Eingabe
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →