Blinker
Das Programm ist etwa 130 Byte lang und frei im Speicher des C 64 verschiebbar. Mit dem Befehl
SYS Startadresse, Anzahl der Menüpunkte (maximal 9), Anfangszeile werden Zahlen von 1 bis 9 am linken Bildschirmrand dargestellt. Diese Zahlen blinken so lange, bis eine dieser Zahlen eingegeben wird. Fehleingaben werden ignoriert. Die eingegebene Zahl wird im ASCII-Format in die Speicherstelle 251 geschrieben und kann mit dem Befehl PEEK(251) vom Basic ausgelesen und weiterverarbeitet werden. Bei einem Fehler in dem SYS-Befehl wird eine »0« in die Speicherstelle 251 geschrieben.
Nach dem Start mit RUN muß dem C 64 mitgeteilt werden, ab welcher Adresse das Programm stehen soll.
Was das Programm leistet, zeigt das folgende Demoprogramm. Dazu müssen Sie in Zeile 50 der Variablen BL die Startadresse des Maschinenprogramms zuordnen.
(P K. Bhattacharya/ah)10 print"{clr}{wht}" 11 input "staradresse={rght}{rght}{rght}{rght}828{left}{left}{left}{left}{left}";bl 20 fori=bltobl+132:readx:s=s+x:pokei,x:next:ifs<>19188thenprint"fehler":goto107 100 data32,253,174,32,158,183,134,253,224,10,176,113,224,1,144,109,32,253 101 data174,32,158,183,134,254,165,253,10,24,101,254,201,26,176,91,165,253 102 data9,48,133,252,166,254,160,0,24,32,240,255,169,48,133,250,230,250,165 103 data2,240,4,169,18,133,199,165,250,32,210,255,169,13,32,210,255,165,250 104 data197,252,240,7,169,13,32,210,255,208,223,162,103,165,198,240,15,32 105 data180,229,133,251,197,252,240,29,176,4,201,49,176,23,136,208,234,202 106 data208,231,165,2,240,5,138,133,2,240,175,230,2,208,171,169,0,133,251 107 data96,0,0,0:pokev,14:end
10 a$=chr$(18):a$=a$+chr$(176) 20 fori=1to38:a$=a$+chr$(192):next:a$=a$+chr$(174):a$=a$+chr$(221) 30 fori=1to38:a$=a$+chr$(32):next:a$=a$+chr$(221):a$=a$+chr$(173) 40 fori=1to38:a$=a$+chr$(192):next:a$=a$+chr$(189) 50 :bl=828:s$="{home}{down}{down}{down}{down}{down}{down}":l$=" ":v=53280 60 fori=0to3:reada$(i):next:fori=0to3:readb$(i):next 70 fori=0to3:readt$(i):next:fori=0to3:readf$(i):next 80 fori=0to5:readd$(i):next 90 :pokev,6:print"{clr}";chr$(14)chr$(8)chr$(5) 100 x$=b$(0):gosub500:prints$;:fori=0to3:printl$a$(i):print:next:sysbl,4,6 110 fb=val(chr$(peek(251))):onfbgoto150,200,250,2000 120 goto100 150 x$=b$(1):gosub500:prints$;:fori=0to3:printl$t$(i):print:next:sysbl,4,6 160 fb=val(chr$(peek(251))):on-(fb=4)goto100:goto400 200 x$=b$(2):gosub500:prints$;:fori=0to3:printl$f$(i):print:next:sysbl,4,6 210 fb=val(chr$(peek(251))):on-(fb=4)goto100:goto400 250 x$=b$(3):gosub500:prints$;:fori=0to5:printl$d$(i):print:next:sysbl,6,6 260 fb=val(chr$(peek(251))):on-(fb=6)goto100:goto400 400 print"{home}":fori=0to18:print:next:printl$l$"Bitte eine Taste drucken" 410 poke198,0:wait198,255:goto100 500 rem 510 ln=len(x$):print"{clr}";a$;"{home}{down}";spc((40-ln)/2);x$chr$(146);"{down}{down}":return 1000 data "Arbeit mit Tastatur","Arbeit mit Diskette","Arbeit mit Drucker" 1010 data "Ende","MENUE","TASTATUR","DISKETTE","DRUCKER" 1020 data "Lesen","Schreiben","Editieren","Menue" 1030 data "Directory","Load","Save","Menue" 1040 data "Briefkopf","Grusswort","Titel","Seitenzahl","Text","Menue" 2000 pokev,14:printchr$(9):end