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:
- SYS eingabe,12, "abcdefghijklmnopqrstuvwxyz", e1$
- SYS eingabe,5,"1234567890.",z$
- SYS eingabe,C%,a$,b$
- SYS ausgabe,0,5,"Hamader Juergen"
- SYS ausgabe,ze,sp,tab (5);a;s$,".- ";
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