-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathJOURN02.bc
256 lines (256 loc) · 10.1 KB
/
JOURN02.bc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
1000 A=500:GOTO20:REM BASICODE-3 JOURNAL 2
1010 HT=HO:VT=VE:S$="":FORI=1 TOHT:S$=S$+" ":NEXTI
1020 HL=0:HR=HT:VL=2:VR=VT-2:R$="":READT$
1030 GOSUB1340:HO=(HT-LEN(SR$)-6)/2:VE=0:GOSUB110
1040 GOSUB150:PRINT:PRINT:PRINT
1050 PRINT"Ausdruck ueber"
1060 PRINT:PRINT" - 1 den Bildschirm,"
1070 PRINT" - 2 den Drucker."
1080 PRINT:PRINT"Welche Nummer ?";:GOSUB210
1090 SC=IN-48:PRINTSC:IFSC<>2 THENSC=1:GOTO1180
1100 PRINT:PRINT"Wieviel Leerzeichen "
1110 PRINT"am Zeilenanfang ";:INPUTHL
1120 PRINT:PRINT"Wieviel Text-Zeichen "
1130 PRINT"auf jeder Zeile ";:INPUTI:HR=HL+I-1
1140 PRINT:PRINT"Wieviel Leer-Zeilen "
1150 PRINT"am Seitenende ";:INPUTVL
1160 PRINT:PRINT"Wieviel Text-Zeilen "
1170 PRINT"auf jeder Seite ";:INPUTVR:VR=VR+VL-3
1180 MM$="":IFHL>0 THENMM$=LEFT$(S$,HL)
1190 GOSUB1310:M$=MM$:AL=VL:IFSC=2 THEN GOSUB1290
1200 IFLEN(R$)>HR-HL THEN GOSUB1730
1210 GOSUB1370:IFR$<>"" THENR$=R$+" "
1220 R$=R$+D$:GOTO1200
1230 IFSC=2 THENSR$=M$+SR$:GOSUB350:GOSUB360:GOTO1250
1240 GOSUB120:PRINTM$;SR$;:VE=VE+1:HO=0:GOSUB110:HL=0
1250 M$=MM$:AL=AL+1:IFAL<=VR THENRETURN
1260 IFSC=1 THEN1310
1270 IFVL>0 THENFORI=1 TOVL:GOSUB360:NEXTI
1280 AL=VL
1290 SR$=LEFT$(S$,(HR-HL-LEN(T$))/2)+T$:GOSUB1230
1300 SR$="":GOSUB1230:AL=VL:RETURN
1310 HO=0:VE=VT:GOSUB110
1320 SR$="WEITER: druecke <RETURN/ENTER>":GOSUB150
1330 GOSUB210:IFIN<>13 THEN1330
1340 GOSUB100:AL=VL:SR$=T$
1350 PRINTLEFT$(S$,(HT-LEN(SR$))/2-3);:GOSUB150
1360 PRINT:PRINT:RETURN
1370 READD$
1380 IFD$="" THEN1370
1390 IFLEFT$(D$,1)="." THEN1440
1400 IFLEFT$(D$,1)<>"!" THENRETURN
1410 IFD$="!" THEND$="":GOTO1430
1420 D$=RIGHT$(D$,LEN(D$)-1)
1430 GOSUB1670:GOTO1380
1440 IFD$<>".E" THEN1490
1450 J=1:GOSUB1670:T$="E N D E"
1460 SR$="":GOSUB1230:GOSUB1230:SR$=T$:GOSUB1230:T$=""
1470 SR$="":GOSUB1230:IFAL<>VL THEN1470
1480 GOTO950
1490 DD$=MID$(D$,2,1):D$=RIGHT$(D$,LEN(D$)-2)
1500 IFDD$<>"R" THEN1550
1510 IFSC=2 THENRETURN
1520 IFLEN(R$)+6+LEN(D$)>=HR-HL THENSR$=R$:GOSUB1230:R$=""
1530 PRINTM$;R$;:SR$=D$:GOSUB150:M$=""
1540 HL=HL+LEN(R$)+LEN(D$)+6:R$="":GOTO1370
1550 IFDD$<>"M" THEN1580
1560 I=VAL(D$):MM$="":IFI+HL=0 THEN1370
1570 MM$=LEFT$(S$,I+HL):GOTO1370
1580 IFDD$="P" THENJ=VAL(D$):GOSUB1670:GOSUB1690:GOTO1370
1590 IFDD$="T" THENT$=D$:J=10:GOSUB1670:GOSUB1690:GOTO1510
1600 IFDD$="Q" THENR$=R$+CHR$(34)+D$:GOTO1370
1610 IFDD$<>"F" THEN1640
1620 J=VAL(D$):GOSUB1670
1630 J=J-1:IFJ>-1 THENSR$="":GOSUB1230:GOTO1630
1640 IFDD$<>"C" THEN1660
1650 SR$=LEFT$(S$,(HR-HL-LEN(D$))/2)+D$:GOSUB1230
1660 GOTO1370
1670 GOSUB1730:SR$=R$:GOSUB1230:R$="":J=J-1
1680 RETURN
1690 IF(SC=1)OR(AL+J>VR) THEN1710
1700 SR$="":GOSUB1230:GOSUB1230:RETURN
1710 IFAL<>VL THENSR$="":GOSUB1230:GOTO1710
1720 RETURN
1730 K=HR-HL+1-LEN(M$)
1740 IFLEN(R$)<=K THENRETURN
1750 IFMID$(R$,K,1)=" " THEN1780
1760 K=K-1:IFK>0 THEN1750
1770 SR$="":GOTO1790
1780 SR$=LEFT$(R$,K-1):R$=RIGHT$(R$,LEN(R$)-K)
1790 GOSUB1230:GOTO1730
1800 REM---------------------------------
1810 REM UEBERSETZTE VERSION:
1820 REM
1830 REM COMPUTER-BULLETIN NO.32 (7/89)
1840 REM STICHTING BASICODE, EINDHOVEN
1850 REM---------------------------------
25000 DATA"Programmieren in BASICODE (1)"
25010 DATA"Grundlagen zum Programmieren in BASICODE sind"
25020 DATA"!!- die Programmiersprache BASIC,"
25030 DATA"!- der BASIC-Dialekt des Computers,"
25040 DATA"!- die unter BASICODE erlaubten Anweisungen,"
25050 DATA"Funktionen, Operatoren und Variablennamen,"
25060 DATA"!- die BASICODE-Subroutinen (Unterprogramme) und"
25070 DATA"!- die Regeln zum Aufbau eines Programms."
25080 DATA".P0"
25090 DATA"Ausgehend vom 'BASICODE-3-Protokoll' soll auf"
25100 DATA"die Besonderheiten hingewiesen werden."
25110 DATA"!!BASIC bzw. BASICODE schliessen strukturiertes"
25120 DATA"Programmieren nicht aus, erzwingen es aber auch"
25130 DATA"nicht, wie z.B. Pascal. Die Gestaltung eines"
25140 DATA"Programms liegt in der Hand des Programmierers."
25150 DATA"Vorhandene BASICODE-Programme zeigen, dass es"
25160 DATA"moeglich ist, Programme zu strukturieren; sie"
25170 DATA"geben Anregungen und Beispiele."
25180 DATA".P0"
25190 DATA".RDer Programmaufbau"
25200 DATA"!!Ein Programm besteht aus den Zeilen"
25210 DATA"!! 0 - 999 - BASICODE-Subroutinen,"
25220 DATA"! 1000 - 32767 - BASICODE-Programm."
25230 DATA"!!Der erste Teil (# 0 - 999) wird im Speicher"
25240 DATA"als BASIC- oder Maschinensprache-Programm"
25250 DATA"(durch Laden des Bascoders) abgelegt."
25260 DATA"!Der zweite Teil (# 1000 - 32767) - das"
25270 DATA"BASICODE-Programm - wird mit dem fuer"
25280 DATA"jeden Rechner spezifischen Befehl nachgeladen"
25290 DATA"oder kann frei programmiert werden."
25300 DATA"!!Die Zeilen # 0 - 999 koennen bzw. duerfen"
25310 DATA"nicht veraendert werden!"
25320 DATA".P0"
25330 DATA"Der Zeilenbereich # 0 - 999 hat folgenden"
25340 DATA"Aufbau:"
25350 DATA"!! 10 GOTO 1000"
25360 DATA"! 20 - Ueberfuehren des Computers in"
25370 DATA"! die Betriebsart 'BASICODE'"
25380 DATA"! 25 GOTO 1010"
25390 DATA"! 100 )"
25400 DATA"! . (- Computerspezifische"
25410 DATA"! . ( BASICODE-Subroutinen"
25420 DATA"! 650 )"
25430 DATA"! 950 - Zuruecksetzen in die"
25440 DATA"! normale Betriebsart"
25450 DATA"! 955 END"
25460 DATA"!!Ist dieser Teil als Maschinenspracheprogramm"
25470 DATA"abgelegt, so bleibt er 'verdeckt'; er ist nicht"
25480 DATA"listbar."
25490 DATA".P0"
25500 DATA"Das eigentliche Programm beginnt mit der"
25510 DATA"Zeilenummer # 1000. Der Inhalt dieser Zeile ist"
25520 DATA"verbindlich vorgeschrieben."
25530 DATA"!! 1000 A=wert:GOTO 20:REM programmname"
25540 DATA"! 1010 )"
25550 DATA"! . ( Hauptprogramm"
25560 DATA"! . ( GOTO 950 (Ende)"
25570 DATA"! 19999 )"
25580 DATA"! 20000 )"
25590 DATA"! . ( Computerspezifische"
25600 DATA"! . ( Unterprogramme, die in"
25610 DATA"! . ( BASICODE nicht erlaubte"
25620 DATA"! . ( Anweisungen enthalten"
25630 DATA"! 24999 )"
25640 DATA".P0"
25650 DATA" 25000 )"
25660 DATA"! . ( DATA-Zeilen"
25670 DATA"! 29999 )"
25680 DATA"! 30000 )"
25690 DATA"! . ( REM-Zeilen"
25700 DATA"! . ( Hinweise, Bemerkungen"
25710 DATA"! 31999 )"
25720 DATA"! 32000 )"
25730 DATA"! . ( REM-Zeilen"
25740 DATA"! . ( Autor, Computer, Datum"
25750 DATA"! 32767 )"
25760 DATA".P0"
25770 DATA".RDie Programmzeile"
25780 DATA"!!Die Laenge einer Programmzeile ist auf"
25790 DATA"60 Zeichen beschraenkt - einschliesslich"
25800 DATA"!! - Zeilennummer,"
25810 DATA"! - Zwischenraeume und"
25820 DATA"! - Abschlusszeichen"
25830 DATA"! (Carriage return, CHR$(13))."
25840 DATA"!!In einer Programmzeile koennem mehrere"
25850 DATA"Anweisungen - getrennt durch ':' (Doppelpunkt) -"
25860 DATA"aufgenommen werden."
25870 DATA"!Es ist eine gute Gewohnheit, die Zeilen in"
25880 DATA"Schritten von '10' zu numerieren (z.B. ... 2000,"
25890 DATA"2010, 2020, ...); es bleibt Raum fuer"
25900 DATA"Aenderungen und Ergaenzungen."
25910 DATA".P0"
25920 DATA".RDie Programmzeile # 1000"
25930 DATA"!!Der Inhalt der Zeile # 1000 ist festgelegt:"
25940 DATA"!! A=wert : GOTO 20 : REM programmname"
25950 DATA"!!Mit dem Sprung zur Zeile # 20 wird der"
25960 DATA"Computer in die Betriebsart 'BASICODE' versetzt."
25970 DATA"Dazu gehoeren:"
25980 DATA"!! - Loeschen des Bildschirms (CLS),"
25990 DATA"! - Loeschen der Variablen (CLR),"
26000 DATA"! - Wahl des Text-Modus,"
26010 DATA"! - Setzen der Bildschirmfarben"
26020 DATA"! (Zeichen - weiss,"
26030 DATA"! Hintergrund - dunkel),"
26040 DATA"! - Deklarieren und Initialisieren der"
26050 DATA"! Variablen HO, VE, HG, VG und SV."
26060 DATA".P0"
26070 DATA"Wichtig ist der Wert der Variablen A, der vom"
26080 DATA"Programmierer festzulegen ist. Fuer Computer,"
26090 DATA"die mit einer Z-80-aehnlichen CPU arbeiten,"
26100 DATA"muss der String-Speicherraum festgelegt werden"
26110 DATA"(z.B. CLEAR 500). Reicht der Speicherplatz nicht"
26120 DATA"aus, wird ein 'Out of string space'"
26130 DATA" (OS) - Fehler angezeigt."
26140 DATA"!Bei Rechnern mit dynamischer Speicherverwaltung"
26150 DATA"(z.B. Commodore) spielt das keine Rolle,ist aber"
26160 DATA"zu beachten, um die Portabilitaet der Programme"
26170 DATA"zu gewaehrleisten. Fuer eine Abschaetzung der"
26180 DATA"Wertzuweisung bietet sich an, die Subroutine"
26190 DATA"# 270 zu nutzen, die in der Variablen FR den"
26200 DATA"freien Speicherplatz (in Byte) zurueckgibt:"
26210 DATA".P0"
26220 DATA" - Aufstellen des Programms mit A=500,"
26230 DATA"! - Abspeichern des Programms,"
26240 DATA"! - Aus/Einschalten bzw. Reset,"
26250 DATA"! - Laden des Programms,"
26260 DATA"! - GOSUB 270 : PRINT FR (RETURN),"
26270 DATA"! - Lauf des Programms,"
26280 DATA"! - GOSUB 270 : PRINT FR (RETURN)."
26290 DATA"!!Die Differenz beider Werte ergibt annaehernd"
26300 DATA"den Wert der aufgerundet der Variablen A"
26310 DATA"zuzuweisen ist."
26320 DATA".P0"
26330 DATA".RBeenden des Programms"
26340 DATA"!!Das Programm ist ordnungsgemaess zu beenden;"
26350 DATA"die Verwendung der Anweisungen END oder STOP"
26360 DATA"ist verboten. Mit dem Sprung 'GOTO 950' wird"
26370 DATA"das Programm beendet, der Bildschirm wird"
26380 DATA"geloescht, BASICODE-Programm und"
26390 DATA"-Subroutinen bleiben erhalten."
26400 DATA".P0"
26410 DATA".REin BASICODE-Programm"
26420 DATA"!!Das folgende Programm ('programm') laeuft"
26430 DATA"schnell ab, hat keinen Effekt, ist aber ein"
26440 DATA"BASICODE-Programm:"
26450 DATA"!! 1000 A=100:GOTO 20:REM programm"
26460 DATA"! 1010 REM hauptprogramm"
26470 DATA"! 1020 GOTO 950"
26490 DATA".P10","Das war das","!!"
26500 DATA".C**************************"
26510 DATA".C* *"
26520 DATA".C* BASICODE-3 Journal *"
26530 DATA".C* Nummer 2 *"
26540 DATA".C* 21 Februar 1990 *"
26550 DATA".C* *"
26560 DATA".C**************************",".E"
30000 REM
30010 REM Grundlagen von BASICODE
30020 REM -- PROG-1 --
30030 REM
32000 REM ---------------------
32010 REM FRIEDRICH DORMEIER
32020 REM
32030 REM D-1000 BERLIN 39
32040 REM
32050 REM 11/1989 - C64/C128
32060 REM ---------------------
32070 REM
32080 REM Erstausstrahlung: Radio DDR
32090 REM 900221