Bildschirmmasken schnell erstellt
Bei jedem selbstgeschriebenen Anwendungsprogramm steht man in der Regel stets aufs Neue vor dem Problem, zur Abfrage diverser Parameter eine geeignete Bildschirmmake zu erstellen. Dieser Maskengenerator macht die Arbeit etwas einfacher.
Dieser Generator für den VC 20 liest eine Maske direkt vom Bildschirm und erzeugt automatisch die entsprechenden PRINT-Befehle im Programm. Durch diesen Vorgang löscht der Generator sich selbst, so daß ein SAVEn des Programms unmittelbar nach dem Eintippen unbedingt notwendig ist.
Das Programm benötigt eine Erweiterung von mindestens 8 KByte, da am Schluß der Basicspeicher höher gelegt wird. Ohne Erweiterung würde Speicherplatz fehlen. Auch müßte man eine Verschiebung des Bildschirm- und Basicspeicher beachten. Das Programm wird nach dem Laden einfach mit »RUN« gestartet. Danach erscheint eine kurze Anleitung.
So wird die Maske aufgebaut
In Zeile 23 wird der Tastaturpuffer abgefragt. Wurde eine Taste gedrückt, wird er auf 0 zurückgesetzt. Nun wird in Zeile 1000 der Bildschirm gelöscht und eine Datei für den Bildschirm eröffnet, da der Bildschirm dann ja ausgelesen wird und daraus die neuen Zeilen der Maske generiert werden. Sie sehen jetzt eine geänderte Farbe und den blinkenden Cursor. Nun erstellen Sie Ihre Maske nach Ihren Wünschen, wobei Sie mit den Cursortasten bliebig hin- und herfahren können. Ist die Bildschirm-Maske in der richtigen Form, drücken Sie RETURN.
Jetzt wird der Bildschirmspeicher ausgelesen. Die neue Zeile wird mit Zeile 2010 generiert. Das Fragezeichen ist die Kurzform von Print, (CHR$(34) ist der Code für Anführungsstriche. Das Generieren von neuen Programmzeilen geschieht in einer Schleife. Sind alle 23 Bildschirmreihen ausgelesen, springt das Programm nach Zeile 10000. Jetzt wird der Anfang vom Basicspeicher höher gelegt und Zeile 23 gelistet. Nun muß noch ein Leerzeichen aus Zeile 23 entfernt werden. Damit ist die neue Maske fertig und kann abgespeichert werden, oder das nachfolgende Programm kann direkt geschrieben werden. Zeile 50 sorgt dafür, daß das Bild nicht nach oben gescrollt wird. Dadurch wird auch die READY-Meldung unterdrückt. Die fertige Maske wird auch wieder mit RUN gestartet.
(Bernd Borghold/ev)0 print"{clr}"; 1 print" U{SHIFT-*}I {CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@}{CBM-@} U{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}I "; 2 print" {SHIFT--}c{SHIFT--}{CBM-M}Mvc-20N{CBM-G}{SHIFT--}bild -{SHIFT--} "; 3 print" {SHIFT--}b{SHIFT--}{CBM-M} M{CBM-@}{CBM-@}{CBM-@}N {CBM-G}{SHIFT--} {SHIFT--} "; 4 print" {SHIFT--}m{SHIFT--}{CBM-M} {CBM-G} {CBM-M} {CBM-G}{SHIFT--}schirm{SHIFT--} "; 5 print" {SHIFT--} {SHIFT--}{CBM-M} {CBM-G}v{CBM-M} {CBM-G}{SHIFT--} {SHIFT--} "; 6 print" {SHIFT--} {SHIFT--}{CBM-M} {CBM-G}c{CBM-M} {CBM-G}{SHIFT--}masken{SHIFT--} "; 7 print" {SHIFT--}v{SHIFT--}{CBM-M} {CBM-G} {CBM-M} {CBM-G}{SHIFT--} {SHIFT--} "; 8 print" {SHIFT--}c{SHIFT--} M {CBM-G}2{CBM-M} N {SHIFT--}gene -{SHIFT--} "; 9 print" {SHIFT--} {SHIFT--} M{CBM-G}0{CBM-M}N {SHIFT--} {SHIFT--} "; 10 print" {SHIFT--}2{SHIFT--} {CBM-T}{CBM-T}{CBM-T} {SHIFT--}rator {SHIFT--} "; 11 print" {SHIFT--}0J{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}K {SHIFT--} "; 12 print" {CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W} "; 13 print" {CBM-Q}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{CBM-W} "; 14 print"UK JI"; 15 print"{SHIFT--}dieses programm er- {SHIFT--}"; 16 print"{SHIFT--}stellt ein eigenes {SHIFT--}"; 17 print"{SHIFT--}programm. nach dem {SHIFT--}"; 18 print"{SHIFT--}erstellen der maske {SHIFT--}"; 19 print"{SHIFT--}entfernen sie bitte {SHIFT--}"; 20 print"{SHIFT--}ein leerzeichen aus {SHIFT--}"; 21 print"{SHIFT--}zeile 23U{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}K"; 22 print"J{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}{SHIFT-*}K "; 23 print" Zdruecke eine tasteZ";:poke198,0:wait198,1:poke198,0:goto500 50 goto50 500 poke36879,58 1000 print"{clr}";:open1,0:input#1,q$:close1 1010 fort=0to505:poke7680+t,peek(4096+t) 1020 poke4096+t,peek(7680+t)+128 1030 next:print"{clr}" 1035 y=1 1040 ify=24then10000 1050 fort=0to21 1060 c=peek(7680+t+(y-1)*22) 1070 gosub6050 1080 zn$=zn$+chr$(c):next 2000 print"{cyn}{home}{down}" 2010 printy" ?"chr$(34)zn$chr$(34)";" 2020 print"1035 y="y+1 2030 print"run 1035" 2034 print"{blk}es wird generiert:" 2035 print"{home}{blk}bild-zeile :#";y 2040 print"{cyn}{up}{up}{up}{up}{up}{up}{up}{up}{up}"; 2050 poke631,13:poke632,13:poke633,13:poke198,3 3000 end 6050 ifc<32thenc=c+64:return 6051 ifc=34thenc=32 6060 ifc>95thenc=c+64:return 6070 ifc>63thenc=c+32:return 6075 ifc>255thenc=32 6080 ifc>128thenc=c-128:return 6090 return 7000 fort=0to505 7010 poke4096+t,peek(7680+t)+128:next 7100 goto7100 10000 poke5341,0:poke5342,0:poke5343,0:poke45,222:poke46,20 10040 poke36879,27 10050 print"{clr}{down}{down}{down}{blk} maske fertig !!" 10100 print"{down}entfernen sie nun ein leerzeichen aus zeile" 10120 print"{down}nummer 23 10180 fort=0to2500:next 10190 print"{clr}{down}{down}":list23 10200 end