VC 20 + 8 KByte
Programm-Datei
5/84, S. 69

Relative Programm-Datei

Dieses Programm ist ein Beispiel, wie man mit dem VC 20 eine relative Datei erstellen und nutzen kann. Das hier vorgestellte Programm hilft den Überblick in seiner Programmsammlung zu behalten.

Eingabemaske

Durch das Sammeln und Kopieren von Programmen ergibt es sich zwangsläufig, daß gewisse Informationen wie Kopieradressen und ähnliches immer wieder gebraucht werden. Diese Angaben legt man gewöhnlich in einer Kartei ab oder schreibt sie auf einen Zettel, der wahrscheinlich bei längerem Nichtgebrauch in den Mülleimer wandert. Daraus resultiert, daß beim späteren Kopieren eines Programmes die verlorenen Informationen in mühsamer Kleinarbeit am Computer erst wieder erarbeitet werden müssen. Dies bewog mich, ein Programm zu konzipieren, mit dem die Fülle der wichtigen Daten von Programmen auf einer Diskette gespeichert und nach Bedarf wieder eingelesen werden können.

Um das Programm möglichst kurz zu halten und um keine Routinen doppelt zu schreiben, ist es in Blocks/Subroutinen geschrieben, die durch Sprungbefehle immer wieder angesprungen und genutzt werden. Deshalb besitzt das Programm eine Länge von nur 5760 Byte. Der zusätzlich benötigte Speicherplatz für die maximale Länge der Eingaben beträgt 478 Bytes. Mehr zusätzlicher Speicherplatz wird nicht benötigt, da es sich ja um eine relative Datei handelt. Das bedeutet, daß das Programm im laufenden Zustand mit insgesamt 6 238 Byte Länge ohne Schwierigkeiten im VC 20 mit Erweiterungen ab 8 KByte RAM läuft. Das Programm ist ausgelegt, um die Daten von 250 Programmen aufzunehmen. Es können also genügend Daten von Programmen gespeichert werden.

Programmbeschreibung:

Nach dem Start mit RUN meldet sich das Programm-Menü auf dem Bildschirm. Von hier aus wird nach der entsprechenden Wahl in die einzelnen Routinen verzweigt. Um die Bildschirmmaske während des Programmlaufes erhalten zu können, mußte darauf verzichtet werden, weitere Menüs zu programmieren. Es sind allerdings die Funktionstasten f1/f5/f7 während des Programmlaufes belegt. Wenn man sie benötigt, wird das im oberen Bildteil optisch und über Lautsprecher auch akustisch angezeigt. Die Anzeige erfolgt in zwei Kombinationen, das heißt
a) f1 / f5 / f7
b) f1 / f7
dabei bedeutet:
f1 = Rücksprung zum Menü
f5 = Datenspeicherung
f7 = Datenänderung.

f1 — Dateneingabe

Nach Drücken der Taste f1 wird in die Routine zum Dateieröffnen verzweigt. Die Datei wird geöffnet (erstmaliges Öffnen der Datei nimmt einige Minuten in Anspruch) und anschließend nach der Recordnummer gefragt. Die Recordnummer ist die Nummer unter der die gesamte Eingabe auf dem Diskettenlaufwerk abgespeichert und mit der bei Abfrage wieder eingelesen wird. Nach Eingabe der Recordnummer erfolgt der Bildschirmaufbau und die Dateneingabe. Jetzt erfolgt oben beschriebenes Einblenden der Funktionstastenbelegung. Durch Drücken von f1 erfolgt ein Rücksprung ins Menü. Mit f5 wird in die Speicherroutine verzweigt und im oberen Bildteil zum Zeichen des Speicherns das Wort »SAVE« angezeigt. Anschließend wird das Hauptmenü wieder eingeblendet. Mit Druck auf f7 springt das Programm in die Eingabekorrekturroutine. Es können jetzt falsche Eingaben korrigiert werden, welche dann ohne weiteren Tastendruck durch die Speicherroutine auf der Diskette abgelegt werden.

f3 — Datenausgabe

Die Datenausgabe erfolgt über die Taste f3 vom Menü aus. Die Datei wird geöffnet, und es wird nach der einzulesenden Recordnummer gefragt. Nach Eingabe wird der entsprechende Record über die Einleseroutine (Zeilen 105 bis 123) eingelesen, die Bildschirmmaske neu erstellt und der Record über die Ausgaberoutine der Bildschirmmaske eingeschrieben. Es folgt wieder die Einblendung der belegten Funktionstasten, mit denen, wie schon beschrieben, zu verfahren ist.

f7 — Datenänderung

Durch Betätigung der Taste f7 wird in die Änderungsroutine gesprungen. Es kann hier auf weitere Programmbeschreibungen verzichtet werden, da das Programm von hier aus die bekannten und schon beschriebenen Subroutinen aufsucht, deren Handhabung und Ablauf schon ausführlich abgehandelt wurde.

(Dieter Chocko)
5 Farbcodierung
10 - 21 Menü + Tastenbelegung
24 - 32 Dateiöffnungsroutine
35 - 65 Dateieingaberoutine
68 - 84 Schriftbild F1/F5/F7 + Tastenbelegung
87 - 102 Speicherroutine
105 - 123 Einleseroutine
126 - 131 Änderungsroutine
134 - 144 Bildschirmmaske
147 - 160 Beschriftung der Bildschirmmaske
163 - 183 Korrekturroutine (Eingaben)
186 - 200 Striche für Eingabemaske
203 - 225 Ausgaberoutine + Schriftbild F1/F7 + Tastenbelegung
228 - 231 Tonroutine + Löschroutine für Schriftbilder
234 - 243 DATA-Anweisungen (Beschriftungen der Bildschirmmaske/SAVE)
Programmbeschreibung anhand der Zeilennummern
YN Recordnummer
U1$- UU$ dienen zur Aufnahme der einzelnen Ein-/Ausgabezeilen
Z$ verkettet U1$- UU$ zum Abspeichern und Einlesen
A - K Read-Anweisungen
RA Positionen für Bildschirmmaske
F Bildschirmpositionen
FS Farbpositionen für Striche
WS Verzögerungsschleife
C1 Ausgangsposition zum Positionieren der READ-Anweisungen
S Bildschirmpositionen für F1/F3/F7
S1 Farbpositionen zu S
Variablenliste
0 rem*****************
1 rem* prg.datei 250 *
2 rem*****************
3 rem*dico-soft-prog.*
4 rem*****(c)1983*****
5 poke36879,8:poke646,1
6 :
7 :
8 rem** menue **
9 printchr$(147)"    {rvon}=============={rvof}        {rvon}programm-datei{rvof}        {rvon}=============={rvof}"
10 print"{down}{down}{rvon}>>> programm-menue <<<"
11 print"{down}{down}dateneingabe......<f1>"
12 print"{down}datenausgabe......<f3>"
13 print"{down}datenaenderung....<f7>"
14 :
15 :
16 geta$
17 ifa$=chr$(133)then24
18 ifa$=chr$(134)then105
19 ifa$=chr$(136)then126
20 goto16
21 :
22 :
23 rem*dat.oeffnen**
24 print"{clr}{down}{down}{down}{down}{down}{down}{rght}{rght} bitte warten !! "
25 x$="                 "
26 open1,8,2,"programm-datei,l,"+chr$(137)
27 open2,8,15
28 print#2,"p"+chr$(2)+chr$(250)+chr$(0)+chr$(1)
29 print#1,chr$(255)
30 restore:input"{rvon}{down}{down}{down}{down}{rght}{rght}recordnummer:";yn
31 gosub134:gosub147:gosub185
32 :
33 :
34 rem*dateneingabe*
35 input"{home}{down}{down}{down}{rght}{rvon}";u1$
36 u1$=left$(u1$,16)
37 poke37955,0:goto187
38 input"{down}{down}{rght}{rght}{rght}{rght}{rght}{rvon}";u2$
39 u2$=left$(u2$,11)
40 poke38025,0:goto189
41 input"{rght}{rght}{rght}{rght}{rght}{rvon}";u3$
42 u3$=left$(u3$,11)
43 poke38047,0:goto191
44 input"{down}{down}{rght}{rght}{rght}{rght}{rvon}";u4$
45 u4$=left$(u4$,13)
46 poke38112,0:goto194
47 input"{down}{down}{rght}{rght}{rght}{rght}{rvon}";u5$
48 u5$=left$(u5$,5)
49 poke38178,0:goto195
50 input"{down}{down}{rght}{rvon}";u6$
51 u6$=left$(u6$,18)
52 poke38241,0:goto196
53 input"{rght}{rvon}";u7$
54 u7$=left$(u7$,18)
55 poke38263,0:goto197
56 input"{rght}{rvon}";u8$
57 u8$=left$(u8$,18)
58 poke38285,0:goto198
59 input"{rght}{rvon}";u9$:poke38307,0
60 u9$=left$(u9$,18)
61 poke38307,0:goto199
62 input"{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";uu$
63 uu$=left$(u9$,9)
64 poke38359,0
65 :
66 :
67 rem**t.-schrift**
68 s=4127:s1=37919:pokes,6:pokes1,7:gosub228
69 pokes+1,49:pokes1+1,7:gosub228
70 pokes+2,46:pokes1+2,7:gosub228
71 pokes+3,6:pokes1+3,7:gosub228
72 pokes+4,53:pokes1+4,7:gosub228
73 pokes+5,47:pokes1+5,7:gosub228
74 pokes+6,6:pokes1+6,7:gosub228
75 pokes+7,55:pokes1+7,7:gosub228
76 :
77 :
78 rem* tasten **
79 geta$
80 ifa$=chr$(133)then100
81 ifa$=chr$(135)thengosub229:goto87
82 ifa$=chr$(136)thengosub163:gosub229:goto87
83 goto79
84 :
85 :
86 rem*speichern*
87 z$=u1$+left(x$,16-len(u1$))
88 z$=z$+u2$+left$(x$,11-len(u2$))
89 z$=z$+u3$+left$(x$,11-len(u3$))
90 z$=z$+u4$+left$(x$,13-len(u4$))
91 z$=z$+u5$+left$(x$,5-len(u5$))
92 z$=z$+u6$+left$(x$,18-len(u6$))
93 z$=z$+u7$+left$(x$,18-len(u7$))
94 z$=z$+u8$+left$(x$,18-len(u8$))
95 z$=z$+u9$+left$(x$,18-len(u9$))
96 z$=z$+uu$+left$(x$,9-len(uu$))
97 forb=0to3:readk:poke4135+b,k:poke37927+b,7:gosub228:nextb
98 print#2,"p"+chr$(2)+chr$(yn)+chr$(0)+chr$(1)
99 print#1,z$
100 close1:close2
101 goto9
102 :
103 :
104 rem* einlesen *
105 open1,8,2,"programm-datei,l,"+chr$(137)
106 open2,8,15
107 printchr$(147):input"{rvon}{down}{down}{down}{down}{down}{down}{rght}{rght} recordnummer:";yn
108 print#2,"p"+chr$(2)+chr$(yn)+chr$(0)+chr$(1)
109 z$=""
110 fori=1to137:get#1,o$:z$=z$+o$:nexti
111 u1$=mid$(z$,1,16)
112 u2$=mid$(z$,17,11)
113 u3$=mid$(z$,28,11)
114 u4$=mid$(z$,39,13)
115 u5$=mid$(z$,52,5)
116 u6$=mid$(z$,57,18)
117 u7$=mid$(z$,75,18)
118 u8$=mid$(z$,93,18)
119 u9$=mid$(z$,111,18)
120 uu$=mid$(z$,129,9)
121 close1:close2
122 goto203
123 :
124 :
125 rem* aendern *
126 gosub105
127 gosub163
128 open1,8,2,"programm/datei,l,"+chr$(137)
129 open2,8,15
130 goto87
131 :
132 :
133 rem** rahmen **
134 print"{clr}":forra=4097to4116:pokera,64:nextra
135 forra=4581to4600:pokera,64:nextra
136 forra=4118to4558step22:pokera,93:nextra
137 forra=4139to4579step22:pokera,93:nextra
138 poke4096,112:poke4117,110:poke4580,109:poke4601,125
139 forra=4185to4204:pokera,64:nextra
140 forra=4273to4292:pokera,64:nextra
141 forra=4339to4358:pokera,64:nextra
142 forra=4405to4424:pokera,64:nextra
143 forra=4537to4556:pokera,64:nextra:return
144 :
145 :
146 rem** schrift **
147 printchr$(14):v1=4118
148 forb=0to5:reada:pokev1+1,a:gosub228:forws=0to5:nextws:v1=v1+1:nextb
149 forb=0to14:readc:pokev1-5+22*4,c:gosub228:forws=0to5:nextws:v1=v1+1:nextb
150 forb=0to3:readd:pokev1+2+22*4,d:gosub228:forws=0to5:nextws:v1=v1+1:nextb
151 poke4240,45
152 forb=0to3:reade:pokev1-2+22*5,e:gosub228:forws=0to5:nextws:v1=v1+1:nextb
153 poke4262,45
154 forb=0to11:readf:pokev1-6+22*7,f:gosub228:forws=0to5:nextws:v1=v1+1:nextb
155 poke4331,47
156 forb=0to14:readg:pokev1-18+22*10,g:gosub228:forws=0to5:nextws:v1=v1+1:nextb
157 forb=0to4:readh:pokev1-22+22*11,h:gosub228:forws=0to5:nextws:v1=v1+1:nextb
158 forb=0to11:readi:pokev1-38+22*13,i:gosub228:forws=0to5:nextws:v1=v1+1:nextb
159 forb=0to7:readj:pokev1-50+22*19,j:gosub228:forws=0to5:nextws:v1=v1+1:nextb:return
160 :
161 :
162 rem** korrektur der eingabe **
163 input"{home}{down}{down}{down}{rght}{rvon}";u1$:poke37955,0
164 u1$=left$(u1$,16)
165 input"{down}{down}{rght}{rght}{rght}{rght}{rght}{rvon}";u2$:poke38025,0
166 u2$=left$(u2$,11)
167 input"{rght}{rght}{rght}{rght}{rght}{rvon}";u3$:poke38047,0
168 u3$=left$(u3$,11)
169 input"{down}{down}{rght}{rght}{rght}{rght}{rvon}";u4$:poke38112,0
170 u4$=left$(u4$,13)
171 input"{down}{down}{rght}{rght}{rght}{rght}{rvon}";u5$:poke38178,0
172 u5$=left$(u5$,5)
173 input"{down}{down}{rght}{rvon}";u6$:poke38241,0
174 u6$=left$(u6$,18)
175 input"{rght}{rvon}";u7$:poke38263,0
176 u7$=left$(u7$,18)
177 input"{rght}{rvon}";u8$:poke38285,0
178 u8$=left$(u8$,18)
179 input"{rght}{rvon}";u9$:poke38307,0
180 u9$=left$(u9$,18)
181 input"{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";uu$:poke38359,0
182 uu$=left$(u9$,9):return
183 :
184 :
185 rem** r. striche **
186 forf=4165to4180:pokef,45:pokef+33792,2:nextf:goto 35
187 forf=4235to4238:pokef,45:pokef+33792,2:nextf
188 forf=4242to4245:pokef,45:pokef+33792,2:nextf:goto 38
189 forf=4257to4260:pokef,45:pokef+33792,2:nextf
190 forf=4264to4267:pokef,45:pokef+33792,2:nextf:goto 41
191 forf=4322to4324:pokef,45:pokef+33792,2:nextf
192 forf=4326to4330:pokef,45:pokef+33792,2:nextf
193 forf=4332to4334:pokef,45:pokef+33792,2:nextf:goto 44
194 forf=4388to4392:pokef,45:pokef+33792,2:nextf:goto 47
195 forf=4451to4468:pokef,45:pokef+33792,2:nextf:goto 50
196 forf=4473to4490:pokef,45:pokef+33792,2:nextf:goto 53
197 forf=4495to4512:pokef,45:pokef+33792,2:nextf:goto 56
198 forf=4517to4534:pokef,45:pokef+33792,2:nextf:goto 59
199 forf=4569to4577:pokef,45:pokef+33792,2:nextf:goto 62:return
200 :
201 :
202 rem** bildschirmausgabe nach einlesen **
203 restore:gosub134:gosub147:print"{home}{down}{down}{down}{rght}{rght}{rght}{rvon}";u1$
204 print"{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";u2$
205 print"{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";u3$
206 print"{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";u4$
207 print"{down}{down}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";u5$
208 print"{down}{down}{rght}{rght}{rght}{rvon}";u6$
209 print"{rght}{rght}{rght}{rvon}";u7$
210 print"{rght}{rght}{rght}{rvon}";u8$
211 print"{rght}{rght}{rght}{rvon}";u9$
212 print"{down}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rght}{rvon}";uu$
213 s=4127:s1=37919:pokes,6:pokes1,7:gosub228
214 pokes+1,49:pokes1+1,7:gosub228
215 pokes+2,47:pokes1+2,7:gosub228
216 pokes+3,6:pokes1+3,7:gosub228
217 pokes+4,55:pokes1+4,7:gosub228
218 :
219 :
220 rem** tasten **
221 geta$
222 ifa$=chr$(133)then9
223 ifa$=chr$(136)thengosub230:goto127
224 goto221
225 :
226 :
227 rem** ton **
228 poke36878,15:poke36876,220:forws=0to5:nextws:poke36876,0:return
229 forx=0to10:pokes1+x,0:nextx:return
230 forx=0to5:pokes1+x,0:nextx:return
231 :
232 :
233 rem** data's **
234 data84,73,84,69,76,58
235 data75,79,80,73,69,82,65,68,82,69,83,83,69,78,58
236 data82,79,77,58
237 data82,65,77,58
238 data83,84,65,82,84,66,69,70,69,72,76,58
239 data80,82,79,71,82,65,77,77,76,65,69,78,71,69,58
240 data66,89,84,69,83
241 data66,69,77,69,82,75,85,78,71,69,78,58
242 data66,69,82,69,73,67,72,58
243 data83,65,86,69
Listing zu »Relative Programm-Datei«
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →