C 64
Tips und Tricks

Komfortable Ein-/Ausgaberoutine

Dieses frei verschiebbare Programm für den C 64 erlaubt die Eingabe von bis zu 255 Zeichen. Es sind nur Zeichen erlaubt, die vorher definiert wurden.

Das Programm ist 261 Bytes lang und wird direkt in den Speicher geschrieben. Da es frei verschiebbar ist, verlangt der Lader zuerst die Eingabe der Startadresse und gibt dann die Einsprungadressen der beiden Routinen aus.

Eingabe-Routine:

Syntax: SYS⟨eingabe⟩, ⟨länge⟩, ⟨zeichen⟩, ⟨variable⟩

⟨eingabe⟩ entspricht der Startadresse der Routine; ⟨länge⟩ bestimmt die maximale Anzahl der Zeichen und ⟨zeichen⟩ die Zeichen selbst, die eingegeben werden dürfen. Mit ⟨variable⟩ kann die Variable selbst bestimmt werden, unter der die Eingabe abgespeichert wird. Ein alter Eintrag wird dabei überschrieben. Bevor die Eingabe beendet werden kann, muß mindestens ein Zeichen eingegeben werden. Für ⟨länge⟩ und ⟨zeichen⟩ können auch Variablen gesetzt werden.

Ausgabe-Routine:

Syntax: SYS⟨ausgabe⟩, ⟨zeile⟩, ⟨spalte⟩, ⟨druckliste⟩

Diese Routine gleicht dem PRINT-Befehl, wobei jedoch auch der Startpunkt der Ausgabe mit ⟨zeile⟩ und ⟨spalte⟩ festgesetzt werden kann.

Beispiele:

(Jürgen Hamader/ah)
|
1000 rem * (c) by hamader juergen *
1010 rem *        ornetsmuehl  30 *
1020 rem *        a-4910 ried i/i *
1030 :
1040 printchr$(147)tab(12)"eingabe-ausgabe"chr$(17)
1050 input"startadresse ";sa
1060 fori= sa to sa+260
1070 reada:aa=aa+a:pokei,a:next
1080 ifaa<> 39363 thenprint"?checksum error":end
1090 printchr$(17)chr$(17)"eingabe: sys"sa",laenge,text,variable"
1100 printchr$(17)"ausgabe: sys"sa+224",spalte,zeile,text"
1110 data32,253,174,32,158,183,224,0,240,18,134,252,32,253,174,32
1120 data158,173,32,143,173,32,166,182,201,0,208,3,76,72,178,133
1130 data167,165,34,133,168,165,35,133,169,169,0,133,69,32,253,174
1140 data32,139,176,32,143,173,169,0,133,170,133,253,133,251,133,204
1150 data169,96,133,254,165,198,240,252,32,180,229,201,20,240,51,201
1160 data13,240,81,160,0,209,168,240,7,200,196,167,208,247,240,228
1170 data164,251,145,253,133,171,32,210,255,230,170,230,251,165,251,197
1180 data252,208,209,198,251,165,252,133,170,169,157,32,210,255,169,0
1190 data240,194,166,251,240,190,198,170,166,170,232,228,252,240,7,32
1200 data210,255,198,251,16,174,169,32,32,210,255,169,157,32,210,255
1210 data169,0,240,160,166,251,240,156,169,1,133,204,165,170,197,252
1220 data240,9,169,32,32,210,255,169,0,240,5,165,171,32,210,255
1230 data160,0,165,170,145,71,32,244,180,152,72,138,160,1,145,71
1240 data200,104,145,71,160,0,177,253,145,51,200,196,170,208,247,96
1250 data32,253,174,32,158,183,224,40,144,3,76,72,178,138,72,32
1260 data253,174,32,158,183,224,25,176,241,104,168,24,32,240,255,32
1270 data253,174,76,164,170
 1000 REM * (C) BY HAMADER JUERGEN * 
 1010 REM *        ORNETSMUEHL  30 * 
 1020 REM *        A-4910 RIED I/I * 
 1030 : 
 1040 PRINTCHR$ (147)TAB( 12)"EINGABE-AUSGABE"CHR$ (17) 
 1050 INPUT"STARTADRESSE ";SA 
 1060 FOR I= SA  TO SA+260 
 1070 READ A:AA=AA+A:POKE I,A:NEXT 
 1080 IF AA<> 39363  THENPRINT"?CHECKSUM ERROR":END 
 1090 PRINTCHR$ (17)CHR$ (17)"EINGABE: SYS"SA",LAENGE,TEXT,VARIABLE" 
 1100 PRINTCHR$ (17)"AUSGABE: SYS"SA+224",SPALTE,ZEILE,TEXT" 
 1110 DATA 32,253,174,32,158,183,224,0,240,18,134,252,32,253,174,32 
 1120 DATA 158,173,32,143,173,32,166,182,201,0,208,3,76,72,178,133 
 1130 DATA 167,165,34,133,168,165,35,133,169,169,0,133,69,32,253,174 
 1140 DATA 32,139,176,32,143,173,169,0,133,170,133,253,133,251,133,204 
 1150 DATA 169,96,133,254,165,198,240,252,32,180,229,201,20,240,51,201 
 1160 DATA 13,240,81,160,0,209,168,240,7,200,196,167,208,247,240,228 
 1170 DATA 164,251,145,253,133,171,32,210,255,230,170,230,251,165,251,197 
 1180 DATA 252,208,209,198,251,165,252,133,170,169,157,32,210,255,169,0 
 1190 DATA 240,194,166,251,240,190,198,170,166,170,232,228,252,240,7,32 
 1200 DATA 210,255,198,251,16,174,169,32,32,210,255,169,157,32,210,255 
 1210 DATA 169,0,240,160,166,251,240,156,169,1,133,204,165,170,197,252 
 1220 DATA 240,9,169,32,32,210,255,169,0,240,5,165,171,32,210,255 
 1230 DATA 160,0,165,170,145,71,32,244,180,152,72,138,160,1,145,71 
 1240 DATA 200,104,145,71,160,0,177,253,145,51,200,196,170,208,247,96 
 1250 DATA 32,253,174,32,158,183,224,40,144,3,76,72,178,138,72,32 
 1260 DATA 253,174,32,158,183,224,25,176,241,104,168,24,32,240,255,32 
 1270 DATA 253,174,76,164,170 
Listing »Ein-/Ausgaberoutine«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →