Rechner-Quellprogramm fr GW-BASIC

www.hobby-output.info 

Leider knnen ber das Internet die im Programm verwendeten Sonderzeichen gem dem alten 8-Bit (erweiterten) ASCII-Code* nicht mehr dargestellt werden. Wer also das Programm verwenden will, mu die hier gezeigten "verrckt" aussehenden Sonderzeichen - ber die Eingabe der zugehrigen Zahlen - umwandeln ([Alt] und Zahleneingabe ber die numerische Tastatur).

* ASCII = American Standard Code for Information Interchange

Also ist dieses Quellprogramm fr den nebenstehenden Rechner nur fr "Spezialisten" interessant. Zur Nutzung ist auch GWBasic.exe erforderlich fr den erweiterten Zeichensatz  vor allem mit Grafikzeichen fr Windows zur Nutzung von mehr Mglichkeiten bei der Sprache Beginners All-Purpose Symbolic Instruction Code; Der ASCII-Zeichensatz ist von 7 Bit um ein Bit erweitert worden auf 255 statt 127 Zeichen. Der erweiterte Satz ist >hier< zu sehen mit einem Auszug nur der Grafikzeichen.

Das ist ein Bild!Also, nur fr Eingeweihte, die noch eine ASCII-Tabelle haben und die Umsetzung mglichst mit Hilfe eines Programms machen knnen. (Da ist beispielsweise das "" in der Programm-Liste unten als "□" dargestellt):

Die Originalauflistung unter GW-Basic sieht - wie links zu sehen - aus. (Man kann zwar bei der Eingabeaufforderung schon auf "color f0" mit f = schwarz fr die Vordergrundfarbe und 0 - also Null = wei fr die Hintergrundfarbe schalten. Das wird nach dem Aufruf von gwbasic.exe aber vergessen. Auerdem geht es beim Basic umgekehrt: "color 0,7" schaltet bei hoher Bildschirmauflsung auf 0 fr schwarz zum Vordergrund - also der Schrift, und 7 fr grau als Hintergrund. Mehr geht nicht. Aber das sind schon Programmiereigenschaften und wurde nur als Spielerei erwhnt.)

Es ist dem Autor nicht gelungen, diese schne Programmauflistung auch unten nach Transformation in die HTML-Sprache zu erhalten.

10 ' ************************ Taschenrechner **********************************

20 ' ********************* Programm: RECHNER.BAS ******************************

30 ' ͻ        (z.B. durch [Alt] 201, dann durch [Alt] 205 und durch 187 ersetzen)

40 ' Bedeutung von Variablen: MERK, um sich Speicher zu merken ( durch [Alt] 186 ersetzen...)

50 ' FLAG, normal 0,

60 ' 1, wenn [Enter] und X<>0

70 ' 3 beim Programm-Start

80 ' FKTN, Prfung auf Winkelfunktionen und

90 ' SZAHL, ob Zahl 1 oder 2 zu speichern ist

100 ' ͼ

110 MHZ=190000!:'*********** Anzeigefaktor fr 12 MHZ und 2 Sekunden ***********

120 ' **** nderung: 4,5 MHZ=1600; 6 MHZ=2500; 8 MHZ=6200;10 MHZ=10000

130 DIM A(12)

140 KEY OFF:COLOR 7,0:CLS:COLOR 7,4:KEY 1, " ":KEY(1) ON:ON KEY(1) GOSUB 4150

150 KEY 10," ":ON KEY(10) GOSUB 4710:KEY(10) OFF:KEY 2, " ":KEY(2) ON:ON KEY(2) GOSUB 4890

160 TAGE=0:ZUSATZ=-1:PI=3.141593:PRUF=0:'ON ERROR GOTO 4060

170 ' *********************** Bestimmung des Wochentages ***********************

180 W$(1)="Montag":W$(2)="Dienstag":W$(3)="Mittwoch":W$(4)="Donnerstag"

190 W$(5)="Freitag":W$(6)="Samstag":W$(7)="Sonntag"

200 A$=DATE$

210 PRINT

220 A1=VAL(LEFT$(A$,2))

230 A2=VAL(MID$(A$,4,2))

240 A3=VAL(RIGHT$(A$,4))

250 A(1)=31:IF A3/4=INT(A3/4) THEN A(2)=29 ELSE A(2)=28

260 A(3)=31:A(4)=30:A(5)=31:A(6)=30:A(7)=31:A(8)=31:A(9)=30:A(10)=31:A(11)=30:A(12)=31

270 FOR X=1 TO A1-1:TAGE=TAGE+A(X):NEXT

280 TAGE=TAGE + A2:A=0

290 FOR X=1 TO TAGE STEP 7

300 A=A+1:' Anzahl der Wochen

310 NEXT

320 ' ************************** Beginn der Zhlung Mittwoch 1.1.2003 ********

330 X=A3-2003:IF A3>2010 THEN X=X+1

380 TAGE=TAGE-((A-1)*7)+X+2

390 IF TAGE>7 THEN TAGE=TAGE-7

400 W$=W$(TAGE)

410 ' ********************** Rahmen fr die Uhrzeit **************************

420 COLOR 15:LOCATE 1,46:PRINT "";STRING$(33,"");""

430 FOR X=2 TO 3:LOCATE X,46:PRINT "":LOCATE X,80:PRINT"":NEXT

440 LOCATE 4,46:PRINT "";STRING$(33,"");""

450 M$=LEFT$(DATE$,2):T$=MID$(DATE$,4,2):J$=RIGHT$(DATE$,4)

460 IF M$="01" THEN M$="Januar"

470 IF M$="02" THEN M$="Februar"

480 IF M$="03" THEN M$="Mrz"

490 IF M$="04" THEN M$="April"

500 IF M$="05" THEN M$="Mai"

510 IF M$="06" THEN M$="Juni"

520 IF M$="07" THEN M$="Juli"

530 IF M$="08" THEN M$="August"

540 IF M$="09" THEN M$="September"

550 IF M$="10" THEN M$="Oktober" 560 IF M$="11" THEN M$="November

570 IF M$="12" THEN M$="Dezember"

580 LOCATE 2,47:PRINT SPC(CINT((22-LEN(M$)-LEN(W$))/2));W$;", "T$;". ";M$;" ";J$;SPC(INT((22-LEN(M$)-LEN(W$))/2))

590 J$=DATE$

600 IF K=1 THEN K=0:GOTO 4770

610 ' ********************** Darstellung des Rechners ************************

620 LOCATE 1,2:PRINT "";STRING$(41,"");""

630 FOR X=2 TO 23:LOCATE X,2:PRINT "";STRING$(41," ");"":NEXT

640 LOCATE 24,2:PRINT "";STRING$(41,"");"";

650 LOCATE 10,2:PRINT "";STRING$(41,"");""

660 LOCATE 13,2:PRINT "";STRING$(41,"");""

670 LOCATE 18,2:PRINT "";STRING$(41,"");""

680 LOCATE 12,6:COLOR 7,4:PRINT "[U]";:COLOR 3,4:PRINT "mrechnung: Min./Sek. ";CHR$(27);CHR$(26);" Dezimale"

690 COLOR 11:LOCATE 11,3:PRINT "Operationen: ";:COLOR 7:PRINT" + - * / ^";:COLOR 3,4:PRINT"(^=Potenz)"

700 LOCATE 14,3:COLOR 11:PRINT "Funktionen: ";:COLOR 7,4

710 PRINT "[S]";:COLOR 3,4:PRINT "in ";:COLOR 7,4:PRINT "[C]";:COLOR 3,4

720 PRINT "os ";:COLOR 7,4:PRINT"[T]";:COLOR 3,4:PRINT "an C";

730 COLOR 7,4:PRINT "[o]";:COLOR 3,4:PRINT "tan"

740 LOCATE 15,16:COLOR 7,4:PRINT"[A]";:COLOR 3,4:PRINT "rcusfunktionen"

750 LOCATE 16,3:COLOR 7,4:PRINT"[L]";:COLOR 3,4:PRINT "og ";:COLOR 7,4:PRINT "[N]";:COLOR 3,4

760 PRINT "at.Log ";:COLOR 7,4:PRINT "[e]";:COLOR 3,4:PRINT "=2,718 ";:COLOR 7,4:PRINT "[I]";:COLOR 3,4:PRINT "nteger"

770 LOCATE 17,3:PRINT "n.";:COLOR 7,4:PRINT "[W]";:COLOR 3,4:PRINT "urzel aus ";

780 COLOR 7,4:PRINT "[P]";:COLOR 3,4:PRINT "i(";CHR$(20);") ";:COLOR 7,4:PRINT"[V]";:COLOR 3,4:PRINT"orzeichen":COLOR 7,4

790 LOCATE 19,3:PRINT "[Enter]";:COLOR 3,4:PRINT " Ergebnis ";

800 COLOR 7,4:PRINT "[<] ";:COLOR 3,4:PRINT "Eingabe L"schen":COLOR 7,4

810 LOCATE 20,3:COLOR 7,4:PRINT "[Z]";:COLOR 3,4:PRINT "ahl oder Ergebnis speichern":COLOR 7,4

820 LOCATE 21,3:PRINT "[G]";:COLOR 3,4:PRINT "espeicherte Werte aufrufen"

830 LOCATE 22,3:PRINT "Speicher l";:COLOR 7,4:PRINT "[]";:COLOR 3,4:PRINT "schen ";

840 COLOR 7,4:PRINT " [F]";:COLOR 3,4:PRINT "ormel eingeben":COLOR 7

850 LOCATE 23,3:PRINT "[D]";:COLOR 3,4:PRINT "rucker anschalten ";

860 COLOR 14,4:PRINT " [Esc]";:COLOR 3,4:PRINT " zurck zu DOS":COLOR 0,7

870 LOCATE 25,2:PRINT "[F1] Erklrungen [F2] Anzeigedauer ndern";:DRUCK=0

880 FOR N=1 TO 3

890 COLOR 7,4

900 IF SPEICH(N)<>0 THEN LOCATE 4+N,7:PRINT "Im Speicher ";ANT$;":";:COLOR 0,3:LOCATE 4+N,22:PRINT SPC(16-LEN(STR$(SPEICH(N))));SPEICH(N)

910 NEXT

920 COLOR 7,4

930 D$(1)="1. Zahl: ":D$(2)="Ergebnis:":D$(3)="2. Zahl: ":D$(4)="n der : ":D$(5)="Hochzahl:":X=1:FKTN=0:L=22:GOTO 950

940 ' ****************** Das eigentliche Rechenprogramm beginnt hier ************

950 LOCATE 2,7:PRINT D$(1);:COLOR 23,2:PRINT SPC(21);"? ";:COLOR 7,4:PRINT " "

960 FLAG=3:ANT$="":FOR N=1 TO X:ZAHL$(X)="":NEXT N:X=1

970 IF SPEI<>0 THEN 5270

980 ANT$="":ANT$=INKEY$:IF ANT$="" THEN 4760

990 IF ANT$="F" OR ANT$="f" THEN 5310

1000 IF FLAG=3 AND ANT$<>"" THEN FLAG=0:COLOR 23,2:LOCATE 2,16:PRINT SPC(21);"? "

1010 COLOR 7,4:LOCATE 9,6:PRINT SPC(20)

1020 IF ANT$="-" THEN 1650

1030 IF ANT$="+" THEN IF ZAHL$(X)="" THEN 2780 ELSE A$(X)=" + ":LOCATE 3,7:PRINT D$(3):GOTO 1950

1040 IF ANT$="*" THEN IF ZAHL$(X)="" THEN 2780 ELSE A$(X)=" * ":LOCATE 3,7:PRINT D$(3):GOTO 1950

1050 IF ANT$="/" THEN IF ZAHL$(X)="" THEN 2780 ELSE A$(X)=" / ":LOCATE 3,7:PRINT D$(3):GOTO 1950

1060 IF ANT$="^" OR ANT$="" THEN A$(X)=" ^ ":GOTO 1910

1070 IF ANT$="Z" OR ANT$="z" THEN 1530

1080 IF A$(X)="Z" THEN 2290

1090 SZAHL=0:IF ANT$="S" OR ANT$="s" THEN A$(X)="SIN ":GOTO 2780

1100 IF ANT$="C" OR ANT$="c" THEN A$(X)="COS ":GOTO 2780

1110 IF ANT$="T" OR ANT$="t" THEN A$(X)="TAN ":GOTO 2780

1120 IF ANT$="O" OR ANT$="o" THEN A$(X)="COT ":GOTO 2780

1130 IF ANT$="I" OR ANT$="i" THEN A$(X)="INT ":GOTO 2870

1140 IF ANT$="N" OR ANT$="n" THEN A$(X)="Ln ":GOTO 2870

1150 IF ANT$="L" OR ANT$="l" THEN A$(X)="Log ":GOTO 2870

1160 IF ANT$="W" OR ANT$="w" THEN A$(X)="n. ":GOSUB 3010:LOCATE 3,7:PRINT D$(4):GOTO 1950

1170 IF ANT$="A" OR ANT$="a" THEN A$(X)="ARC ":GOTO 3610

1180 IF ANT$="G" OR ANT$="g" THEN A$(X)="G":GOTO 2120

1190 IF A$(X)="G" THEN GOTO 2120

1200 IF ANT$="V" OR ANT$="v" THEN A$(X)=" ":GOTO 2870

1210 IF ANT$="" OR ANT$=""" THEN 1570

1220 IF A$(X)="" THEN 2600

1230 IF ANT$=CHR$(27) THEN COLOR 7,0:LOCATE 25,1:SYSTEM

1240 IF ANT$="U" OR ANT$="u" THEN A$(X)="Umr ":GOTO 3080

1250 IF A$(1)="Umr " THEN 3130

1260 IF ANT$="D" OR ANT$="d" THEN 1420

1270 IF ANT$=CHR$(8) THEN GOTO 1990

1280 IF FLAG=1 THEN COLOR 23,4:LOCATE 9,7:PRINT "oder Ergebnis l"schen fr neue Zahl":GOTO 1620

1290 IF ANT$=CHR$(13) AND X=1 THEN IF ZAHL$(1)<>"" THEN COLOR 23,4:LOCATE 9,6:PRINT "[Enter] nur fr (Zwischen)-Ergebnis":GOTO 1620

1300 IF ANT$=CHR$(13) AND ZAHL$(2)="" THEN COLOR 23,4:LOCATE 9,10:PRINT "[Enter] wofr? (";MID$((STR$(X)),2,1);". Zahl fehlt)":GOSUB 4860:GOTO 980

1310 IF ANT$=CHR$(13) AND X <> 1 THEN X=X+1:FLAG=1:LOCATE 3,7:PRINT SPC(8):GOTO 1700

1320 IF FKTN=1 THEN COLOR 23,4:GOTO 1610

1330 IF ANT$="E" OR ANT$="e" THEN A$(X)=" e ":ZAHL(X)=2.718282:GOTO 2950

1340 IF ANT$="P" OR ANT$="p" THEN A$(X)=" "+CHR$(20)+" ":ZAHL(X)=PI:GOTO 2950

1350 IF ANT$="," THEN ANT$="."

1360 IF ANT$<"0" OR ANT$>"9" THEN IF ANT$<>"." THEN 980

1370 ZAHL$(X)=ZAHL$(X)+ANT$

1380 COLOR 0,2:LOCATE 1+X,16:PRINT SPC(22-LEN(ZAHL$(X)));ZAHL$(X):COLOR 7,4

1390 IF X=1 THEN LOCATE 2,7:PRINT D$(1)

1400 GOTO 980

1410 '*************** Drucker ein/aus *******************************************

1420 IF DRUCK=0 THEN DRUCK=1 ELSE DRUCK=0

1430 COLOR 23,4:LOCATE 8,6:PRINT "Drucker ist nicht eingeschaltet!"

1440 IF DRUCK=1 THEN LOCATE 23,13:PRINT "ab":LPRINT CHR$(15);CHR$(27);CHR$(108);CHR$(10)

1450 IF DRUCK=0 THEN LOCATE 23,13: PRINT "an":LPRINT CHR$(18);;CHR$(27);CHR$(108);CHR$(1)

1460 LOCATE 8,6:PRINT SPC(37);

1470 GOTO 980

1480 ' ******************** Druck der eingebenen Zahl mit Drucker **************

1490 IF DRUCK=1 THEN LPRINT SPC(L-LEN(ZAHL$(X)));ZAHL$(X)

1500 IF DRUCK>1 THEN DRUCK=1

1510 L=22:RETURN

1520 '*************** Prfung zum Speichern, ob Umrechnung eingeleitet **********

1530 IF A$(1)="Umr " THEN MERK=1

1540 A$(X)="Z"

1550 GOTO 2290

1560 '*************** Prfung zum L"schen, ob Umrechnung eingeleitet ************

1570 IF A$(1)="Umr " THEN MERK=1

1580 A$(X)=""

1590 GOTO 2600

1600 '*************** Prfung, ob nun Operation oder Funktion folgen mu ********

1610 LOCATE 9,6:PRINT "oder Zahl mit [<] l"schen!"

1620 COLOR 23,4:LOCATE 8,6:PRINT "Operation od. Funktion aus Liste unten"

1630 GOSUB 4840:GOSUB 4860:GOTO 980

1640 ' ******************* Prfung des Minus-Zeichens ***************************************

1650 IF ZAHL$(1)="" THEN IF FLAG=0 THEN 1370 ELSE LOCATE 3,7:PRINT D$(3):GOTO 1950

1660 IF ZAHL$(X)="-" THEN COLOR 23,4:LOCATE 8,7:PRINT "Bitte erst mal eine Zahl eingeben!":GOSUB 4860:GOTO 980

1670 IF ZAHL$(X)<>"" THEN A$(X)=" - ":LOCATE 3,7:PRINT D$(3):GOTO 1950

1680 IF A$(X-1)=" ^ " OR A$(X-1)=" * " OR A$(X-1)=" / " THEN 1370

1690 ' ******************* Ende der Zahlen-, Operations- oder Funktionseingabe **************

1700 ZAHL(X-1)=VAL(ZAHL$(X-1))

1710 IF X>2 AND A$(X-2)=" - " THEN ZAHL(1)=ZAHL(1)-ZAHL(2):GOTO 1790

1720 IF X>2 AND A$(X-2)=" + " THEN ZAHL(1)=ZAHL(1)+ZAHL(2):GOTO 1790

1730 IF X>2 AND A$(X-2)=" * " THEN ZAHL(1)=ZAHL(1)*ZAHL(2):GOTO 1790

1740 IF X>2 AND A$(X-2)=" / " THEN ZAHL(1)=ZAHL(1)/ZAHL(2):GOTO 1790

1750 IF X>2 AND A$(X-2)=" ^ " THEN ZAHL(1)=ZAHL(1)^ZAHL(2):GOTO 1790

1760 IF X>2 AND A$(X-2)="n. " THEN ZAHL(1)=ZAHL(1)^(1/ZAHL(2)):GOTO 1790

1770 GOTO 980

1780 ' ********************** Druck der neuen Zahlen im Rechner ****************

1790 IF DRUCK>0 AND DRUCK<3 AND A$(X-2)<>"n. " THEN LPRINT A$(X-2);:L=18

1800 IF DRUCK>0 AND DRUCK<3 THEN LPRINT SPC(L-LEN(ZAHL$(2)));ZAHL$(2)

1810 ZAHL$(1)=STR$(ZAHL(1))

1820 LOCATE 2,6:PRINT SPC(28):COLOR 0,2:LOCATE 2,16:PRINT SPC(22-LEN(STR$(ZAHL(1))));ZAHL(1);:COLOR 7,4

1830 IF DRUCK>0 THEN L=22:LPRINT SPC(L-LEN(STR$(ZAHL(1))));ZAHL(1);" (Zwischen-)Ergebnis":DRUCK=2

1840 LOCATE 2,7:PRINT D$(2):X=2:LOCATE 2,40:IF FLAG=0 THEN PRINT A$(X) ELSE PRINT " "

1850 IF FLAG=1 THEN LOCATE 3,6:PRINT SPC(38)

1860 IF FLAG<>1 THEN COLOR 23,2:LOCATE 3,16:PRINT SPC(21);"? ";:COLOR 7,4:PRINT " "

1870 ZAHL$(2)="":ZAHL(2)=0:IF FLAG=0 THEN A$(1)=A$(2)

1880 IF FLAG=1 THEN A$(1)="":A$(2)="":A$(3)="":X=1

1890 GOTO 980

1900 ' ******************** Prfung, ob Potenzieren m"glich ist ****************

1910 IF X>1 THEN LOCATE 8,7:COLOR 23,4:PRINT "Nur die 1. Zahl (bzw. das Ergebnis)":LOCATE 9,7:PRINT "kann potenziert werden!":GOSUB 4860:GOTO 980

1920 IF ZAHL$(X)="" THEN COLOR 23,4:LOCATE 8,7:PRINT "Welche Zahl soll potenziert werden?":GOSUB 4860:GOTO 980

1930 LOCATE 3,7:PRINT D$(5)

1940 ' ******************** Prfung auf [Enter] oder fortlaufende Rechnung *****

1950 LOCATE 2,40:PRINT A$(X):COLOR 23,2:LOCATE 3,16:PRINT SPC(21);"? ";:COLOR 7,4:PRINT " ":IF X=2 THEN SZAHL=1 ELSE SZAHL=0

1960 IF DRUCK=1 THEN GOSUB 1490

1970 X=X+1:FKTN=0:IF FLAG=0 THEN GOTO 1700 ELSE FLAG=0:GOTO 980

1980 ' ******************** Korrektur der Rechner-Eingabe **********************

1990 IF DRUCK=0 THEN 2040

2000 IF X=1 AND A$(X)<>"" THEN LPRINT A$(X);" gel"scht"

2010 IF X=1 AND A$(X)="" THEN LPRINT ZAHL$(1);" gel"scht"

2020 IF X=2 THEN LPRINT A$(1);" ";ZAHL$(2);" gel"scht"

2030 DRUCK=1:L=22

2040 A$(1)="":A$(2)=""

2050 IF FLAG=1 THEN X=1:FLAG=0

2060 IF X=3 THEN X=2

2070 ZAHL$(X)="":ZAHL(X)=0:ANT$="":ZAHL$(2)="":ZAHL(2)=0

2080 LOCATE 1+X,7:PRINT SPC(37):LOCATE 2,40:PRINT " ":IF X=2 THEN X=1

2090 LOCATE 4,6:PRINT SPC(36)

2100 FKTN=0:IF ZAHL$(1)="" THEN 950 ELSE 980

2110 ' **************** Aufruf einer gespeicherten Zahl ************************

2120 FOR N=1 TO 3:IF SPEICH(N)=0 THEN NEXT

2130 IF N=4 THEN COLOR 23,4:LOCATE 8,6:PRINT " Nichts im Speicher!";SPC(18):GOTO 2210 2140 GOSUB 2690

2150 LOCATE 9,6:PRINT SPC(38)

2160 N=VAL(ANT$):IF SPEICH(N)=0 THEN 2170 ELSE 2180

2170 LOCATE 8,6:COLOR 23,4:PRINT " Nichts im Speicher";N;SPC(16):GOTO 2210

2180 IF VAL(ZAHL$(X))=0 THEN ZAHL(X)=SPEICH(N):GOTO 2230

2190 K=0:IF X=1 THEN ANT$="(Ergebnis)" ELSE ANT$="":K=10

2200 IF VAL(ZAHL$(X))<>0 THEN LOCATE 8,6:PRINT "Zahl";X;ANT$;" berschreiben? <J/N>";SPC(K):GOTO 2260

2210 ANT$="":GOSUB 4840:GOSUB 4860

2220 GOTO 2730

2230 LOCATE 8,6:PRINT SPC(38):LOCATE 1+X,16:COLOR 0,2:PRINT SPC(22-LEN(STR$(SPEICH(N))));SPEICH(N)

2240 ZAHL$(X)=STR$(SPEICH(N)):GOSUB 1490

2250 COLOR 7,4:A$(X)="":GOTO 980

2260 ANT$=INKEY$:IF ANT$="J" OR ANT$="j" THEN 2230

2270 IF ANT$="N" OR ANT$="n" THEN 2220 ELSE 2260

2280 ' *********************** Wert speichern **********************************

2290 IF SZAHL<>1 THEN A=X ELSE A=1

2300 IF VAL(ZAHL$(A))=0 OR ZAHL$(2)="-" THEN 2380

2310 IF MERK=1 AND ZAHL$(2)<>"" THEN A=2:FOR N=1 TO 3:IF SPEICH(N)=VAL(ZAHL$(2)) THEN 2580 ELSE NEXT

2320 GOTO 2520

2330 GOSUB 2690

2340 N=VAL(ANT$)

2350 IF SPEICH(N)<>0 THEN 2420

2360 IF VAL(ZAHL$(1))<>0 AND FLAG=1 THEN SPEICH(N)=VAL(ZAHL$(1)):LOCATE 4+N,7:PRINT "Im Speicher ";ANT$;":";:COLOR 0,3:LOCATE 4+N,22:PRINT SPC(16-LEN(STR$(SPEICH(N))));SPEICH(N):COLOR 7,4:GOTO 2730

2370 IF VAL(ZAHL$(A))<>0 THEN SPEICH(N)=VAL(ZAHL$(A)):LOCATE 4+N,7:PRINT "Im Speicher ";ANT$;":";:COLOR 0,3:LOCATE 4+N,22:PRINT SPC(16-LEN(STR$(SPEICH(N))));SPEICH(N):COLOR 7,4:GOTO 2730

2380 IF X > 1 THEN 2470

2390 LOCATE 8,6:COLOR 23,4:PRINT " Da ist nichts zu speichern! "

2400 GOSUB 4840:GOSUB 4860

2410 GOTO 2730

2420 LOCATE 8,6:PRINT SPC(38);:LOCATE 9,6:PRINT SPC(38);

2430 LOCATE 8,7:COLOR 7,4:PRINT "Speicher berschreiben? <J/N>"

2440 AT$="":AT$=INKEY$:IF AT$="J" OR AT$="j" THEN LOCATE 8,7:PRINT SPC(30);:GOTO 2360

2450 IF AT$="N" OR AT$="n" THEN 2730

2460 GOTO 2440

2470 COLOR 23,4:LOCATE 8,7:PRINT CHR$(34);ZAHL$(2);CHR$(34);" lohnt sich nicht zu speichern!"

2480 LOCATE 9,7:PRINT "Evtl. Eingabe ";CHR$(34);ZAHL$(2);CHR$(34);" l"schen mit [<]"

2490 GOSUB 4840:GOSUB 4860:A$(X)="":GOTO 980

2500 IF MERK=1 THEN A$(1)="Umr ":MERK=0

2510 GOTO 980

2520 ZAHL(1)=VAL(ZAHL$(1)):ZAHL(2)=VAL(ZAHL$(2))

2530 FOR N=1 TO 3

2540 IF X=1 AND A<>2 THEN IF ZAHL(1) <> 0 THEN IF SPEICH(N) = ZAHL(1) THEN 2580

2550 IF X=2 AND A<>2 THEN IF ZAHL(1) <> 0 THEN IF SPEICH(N) = ZAHL(1) THEN 2580

2560 IF ZAHL(2) <> 0 THEN IF SPEICH(N) = ZAHL(2) THEN 2580

2570 NEXT:GOTO 2330

2580 LOCATE 8,6:COLOR 23,4:PRINT " Wert schon gespeichert! ":GOTO 2400

2590 ' *********************** Speicher l"schen ********************************

2600 FOR N=1 TO 3:IF SPEICH(N)=0 THEN NEXT

2610 IF N=4 THEN 2670

2620 GOSUB 2690:LOCATE 9,6:PRINT SPC(38)

2630 N=VAL(ANT$):IF SPEICH(N)=0 THEN 2670

2640 SPEICH(N)=0:LOCATE 4+N,7:PRINT SPC(37):GOTO 2660

2650 GOSUB 4840:GOSUB 4860

2660 GOTO 2730

2670 COLOR 23,4:LOCATE 8,6:PRINT " Da ist doch nichts zu l"schen! ":GOTO 2650

2680 ' *********************** Ob bzw. wo speichern, l"schen usw. **************

2690 IF ANT$=CHR$(8) THEN 2740

2700 IF ANT$=CHR$(27) THEN GOTO 1230

2710 IF ANT$<"1" OR ANT$>"3" THEN COLOR 7,4:LOCATE 8,6:PRINT "Speicher-Nummer angeben! ([1] [2] [3])":LOCATE 9,7:PRINT " oder Befehl mit [<] korrigieren!":RETURN 980

2720 RETURN

2730 LOCATE 8,6:PRINT SPC(38):LOCATE 9,6:PRINT SPC(38):A$(X)="":GOTO 2500

2740 LOCATE 8,6:PRINT SPC(38):LOCATE 9,8:PRINT SPC(33):A$(X)=""

2750 IF MERK=1 THEN A$(1)="Umr ":MERK=0

2760 RETURN 980

2770 ' ****** Winkelfunktionen und andere Berechnungen: z.B. Int, Log **********

2780 IF ZAHL$(X)="" THEN COLOR 23,4:LOCATE 8,7:PRINT "Bitte erst mal eine Zahl eingeben!":GOSUB 4860:GOTO 980

2790 IF DRUCK=3 THEN DRUCK=1

2800 GOSUB 1490:ZAHL(X)=VAL(ZAHL$(X)):ZAHL(X)=ZAHL(X)*PI/180

2810 IF A$(X)="SIN " THEN ZAHL(X)=SIN(ZAHL(X)):GOTO 2950 2820 IF A$(X)="COS " THEN ZAHL(X)=COS(ZAHL(X)):GOTO 2950

2830 IF A$(X)="TAN " AND ZAHL(X)=PI/2 OR ZAHL(X)=PI+PI/2 THEN ZAHL(X)=9.999999E+37:GOTO 2950

2840 IF A$(X)="TAN " THEN ZAHL(X)=TAN(ZAHL(X)):GOTO 2950

2850 IF A$(X)="COT " AND ZAHL(X)=0 OR ZAHL(X)=PI THEN ZAHL(X)=9.999999E+37 ELSE ZAHL(X)=1/TAN(ZAHL(X))

2860 GOTO 2950

2870 IF ZAHL$(X)="" THEN COLOR 23,4:LOCATE 8,7:PRINT "Bitte erst mal eine Zahl eingeben!":GOSUB 4860:GOTO 980

2880 IF DRUCK=3 THEN DRUCK=1

2890 GOSUB 1490:ZAHL(X)=VAL(ZAHL$(X))

2900 IF A$(X)="INT " AND ZAHL(X)<>0 THEN ZAHL(X)=CINT(ZAHL(X)):GOTO 2950

2910 IF A$(X)="Ln " THEN ZAHL(X)=LOG(ZAHL(X)):GOTO 2950

2920 IF A$(X)="Log " THEN ZAHL(X)=LOG(ZAHL(X))/LOG(10):GOTO 2950

2930 IF A$(X)=" " AND ZAHL(X)<>0 THEN ZAHL(X)=(ZAHL(X))*-1:GOTO 2950

2940 COLOR 23,4:LOCATE 8,7:PRINT "Da ist keine Zahl zu verndern!":GOSUB 4860:GOTO 980

2950 IF DRUCK>0 THEN DRUCK=3 ELSE 2980

2960 IF A$(X-1)<>"" THEN LPRINT A$(X-1);:L=18

2970 LPRINT SPC(L-LEN(STR$(ZAHL(X))));ZAHL(X);:IF ZAHL(X)<>PI THEN LPRINT A$(X) ELSE LPRINT " Pi"

2980 ZAHL$(X)=STR$(ZAHL(X)):COLOR 0,2:LOCATE 1+X,16:PRINT SPC(22-LEN(STR$(ZAHL(X))));ZAHL(X);:COLOR 7,4:PRINT " ";A$(X)

2990 MERK=0:A$(X)="":FKTN=1:GOTO 980

3000 ' ********************** Wurzelberechnung *********************************

3010 IF LEFT$(ZAHL$(X),1)="-" THEN COLOR 23,4:LOCATE 9,7:PRINT A$(X);" nicht erlaubt!";SPC(10):GOSUB 4840:GOSUB 4860:A$(X)="":FKTN=1:GOTO 980

3020 IF X>1 THEN LOCATE 8,7:COLOR 23,4:PRINT "Nur aus 1. Zahl (bzw. dem Ergebnis)":LOCATE 9,7:PRINT "kann die Wurzel gezogen werden!":GOSUB 4860:GOTO 980

3030 IF ZAHL$(X)="" THEN COLOR 23,4:LOCATE 8,7:PRINT "Wurzel aus welcher Zahl bitte?":GOSUB 4860:RETURN 980

3040 LOCATE X+1,40:PRINT A$(X):LOCATE 8,7:PRINT "Wert fr ";CHR$(34);"n";CHR$(34);" tippen!"

3050 IF DRUCK>0 THEN GOSUB 1490:LPRINT "Daraus n., n =";:L=7:DRUCK=2

3060 GOSUB 4860:RETURN

3070 ' ************** Umrechnung Min./Sek. in Dezimale und umgekehrt ***********

3080 LOCATE 4,6:COLOR 3,4:PRINT "[";:COLOR 7,4:PRINT"M";:COLOR 3,4:PRINT"]in./Sek. ";CHR$(26);" Dez.; [";:COLOR 7,4:PRINT"D";:COLOR 3,4:PRINT"]ez. ";CHR$(26);" Min./Sek."

3090 IF ZAHL$(1)="" THEN LOCATE 9,7:COLOR 23,4:PRINT "Erst einmal eine Zahl eingeben!":A$(X)="":GOSUB 4860:GOTO 980

3100 IF X>1 THEN LOCATE 8,7:COLOR 23,4:PRINT "Nur ";CHR$(34);"Zahl 1 - Ergebnis;"CHR$(34);" kann":LOCATE 9,7:PRINT "bearbeitet werden":A$(2)="":GOSUB 4860:GOTO 980

3110 LOCATE 2,40:PRINT A$(1):CNT=1:ZAHL$(2)=""

3120 GOTO 980

3130 COLOR 7,4:LOCATE 4,6:PRINT SPC(38)

3140 IF ANT$=CHR$(8) THEN LOCATE 3,6:PRINT SPC(38):A$(1)="":A$="":ZAHL(1)=0:ZAHL(2)=0:FKTN=0:GOSUB 4840:GOSUB 4860:GOTO 950

3150 IF ANT$="M" OR ANT$="m" THEN A$="M":GOTO 3350:'********* Umwandlung in Min./Sek.

3160 IF ANT$="D" OR ANT$="d" THEN 3190:'***** Umwandlung in Dezimale

3170 IF A$="M" THEN 3360 ELSE 980

3180 IF A$="D" THEN 3330 ELSE 980

3190 GOSUB 1490:IF DRUCK=1 THEN LPRINT "Umgerechnet in:"

3200 ZAHL(0)=0:IF INT(VAL(ZAHL$(1)))<>0 THEN ZAHL(0)=INT(VAL(ZAHL$(1)))

3210 ZAHL(3)=VAL(ZAHL$(1))-ZAHL(0):ZAHL(1)=INT(ZAHL(3)*60)

3220 ZAHL(2)=CINT(((ZAHL(3)*60)-ZAHL(1))*60)

3230 IF ZAHL(2)=60 THEN ZAHL(2)=0:ZAHL(1)=ZAHL(1)+1

3240 CNT=LEN(STR$(ZAHL(1)))

3250 IF ZAHL(0)<>0 THEN 3290

3260 LOCATE 3,7:PRINT "Ergebnis:";:COLOR 0,3:PRINT SPC(8-CNT);ZAHL(1);CHR$(39);" ";ZAHL(2);CHR$(34);

3270 IF DRUCK=1 THEN LPRINT SPC(8-CNT);ZAHL(1);CHR$(39);" ";ZAHL(2);CHR$(34)

3280 CNT=LEN(STR$(ZAHL(2))):PRINT SPC(9-CNT):ZAHL$(2)="":GOTO 3330

3290 N=CINT(7-LEN(STR$(ZAHL(0)))):LOCATE 3,7:PRINT "Ergebnis:";:COLOR 0,3

3300 PRINT SPC(N);ZAHL(0);" ";ZAHL(1);CHR$(39);" ";ZAHL(2);CHR$(34);

3310 IF DRUCK=1 THEN LPRINT SPC(N);ZAHL(0);" ";ZAHL(1);CHR$(39);" ";ZAHL(2);CHR$(34)

3320 N=LEN(STR$(ZAHL(1))):CNT=LEN(STR$(ZAHL(2))):PRINT SPC(8-(N+CNT)):ZAHL$(2)=""

3330 COLOR 3,4:LOCATE 4,10:PRINT "Diese Werte notieren, dann [<]":A$="D":GOTO 980

3340 ' ****Ende Umrechnung in Min. und Sek. ** Jetzt Min./Sek in Dezimale ********

3350 IF CNT=1 THEN 3470

3360 IF CNT=4 AND ANT$=CHR$(13) THEN 3440

3370 IF CNT=4 THEN 3430

3380 IF ANT$=CHR$(13) THEN 980

3390 IF ANT$>="0" AND ANT$=<"9" THEN CNT=CNT+1

3400 IF CNT=3 AND ANT$>"5" THEN LOCATE 4,8:CNT=CNT-1:COLOR 23,4:PRINT "Werte > 59 Sekunden nicht erlaubt!":GOTO 980

3410 ZAHL$(2)=ZAHL$(2)+ANT$:COLOR 0,2:LOCATE 3,16:PRINT SPC(22-LEN(ZAHL$(2)));ZAHL$(2)

3420 IF CNT<4 THEN 980

3430 LOCATE 8,7:COLOR 7,4:PRINT " Jetzt [Enter] drcken! ":LOCATE 9,7:PRINT SPC(22):GOTO 980

3440 ZAHL(2)=VAL(ZAHL$(2))/3600:ZAHL(1)=ZAHL(1)+ZAHL(2):X=1:A$="":Z$=ZAHL$(2):ZAHL$(2)="":COLOR 3,4

3450 LOCATE 3,6:PRINT SPC(38):LOCATE 4,6:PRINT SPC(38):LOCATE 8,6:PRINT SPC(38):LOCATE 9,6:PRINT SPC(38):A$(X)="MS"+CHR$(26)+"D"

3460 IF DRUCK=1 THEN 3570 ELSE 2950

3470 IF INT(VAL(ZAHL$(1)))<>VAL(ZAHL$(1)) THEN COLOR 23,4:LOCATE 4,7:PRINT "Minuten mit Dezimalstellen unsinnig!":GOSUB 4860:GOTO 980

3480 ZAHL(1)=VAL(ZAHL$(1))/60:CNT=CNT+1:LOCATE 2,40:PRINT "M";CHR$(26);"D":LOCATE 8,7:PRINT "Jetzt 2. Zahl (oder 00) eingeben"

3490 IF CNT < 4 AND DRUCK=1 THEN 3550

3500 ZAHL$(1)=STR$(ZAHL(1)):COLOR 23,2:LOCATE 3,16:PRINT SPC(21);"? ";:COLOR 7,4:PRINT " Sek"

3510 LOCATE 9,7:PRINT "Sekunden zweistellig!":LOCATE 3,7:PRINT D$(3)

3520 LOCATE 2,16:COLOR 0,2:PRINT SPC(22-LEN(STR$(ZAHL(1))));ZAHL(1)

3530 LOCATE 4,6:COLOR 7,4:PRINT SPC(38):GOTO 980

3540 ' ******************** Druckerausgabe *************************************

3550 LPRINT SPC(22-LEN(ZAHL$(1)));ZAHL$(1);" Minuten":LPRINT "Umgerechnet in Dezimale:"

3560 LPRINT SPC(22-LEN(STR$(ZAHL(1))));ZAHL(1):GOTO 3500

3570 LPRINT SPC(22-LEN(Z$));Z$;" Sekunden":LPRINT "Dezimales Endergebnis:"

3580 LPRINT SPC(22-LEN(STR$(ZAHL(1))));ZAHL(1);"M/S in Dez"

3590 GOTO 2980

3600 ' ******************** Arcus-Winkelfunktionen *****************************

3610 IF ZAHL$(X)="" THEN LOCATE 8,7:PRINT "Bitte erst mal eine Zahl eingeben!":GOSUB 4860:GOTO 980 3620 LOCATE 8,7:PRINT "Welche Arcus-Funktion? [B]";:COLOR 3,4:PRINT "ogenma"

3630 COLOR 7,4:LOCATE 9,7:PRINT "[S]";:COLOR 3,4:PRINT "in ";:COLOR 7,4:PRINT "[C]";

3640 COLOR 3,4:PRINT "os ";:COLOR 7,4:PRINT "[T]";:COLOR 3,4:PRINT "an C";

3650 COLOR 7,4:PRINT"[O]";:COLOR 3,4:PRINT "t ";:COLOR 7,4:PRINT "[W]";:COLOR 3,4:PRINT "inkelma" 3660 GOSUB 1490:ZAHL(X)=VAL(ZAHL$(X))

3670 ANT$="":MERK=0:ANT$=INKEY$

3680 IF ANT$=CHR$(8) THEN MERK=1:GOTO 3930

3690 IF ANT$="S" OR ANT$="s" THEN FL=1:GOTO 3770

3700 IF ANT$="C" OR ANT$="c" THEN FL=2:GOTO 3770

3710 IF ANT$="T" OR ANT$="t" THEN FL=3:ZAHL(X)=ATN(ZAHL(X)):GOTO 3770

3720 IF ANT$="O" OR ANT$="o" THEN FL=4:ZAHL(X)=1/ZAHL(X):ZAHL(X)=ATN(ZAHL(X)):GOTO 3770

3730 IF ANT$="B" OR ANT$="b" THEN FL=5:ZAHL(X)=PI*ZAHL(X)/180:GOTO 3770

3740 IF ANT$="W" OR ANT$="w" THEN FL=6:GOTO 3770

3750 IF ANT$=CHR$(27) THEN GOTO 1230

3760 GOTO 3670

3770 LOCATE 8,7:PRINT SPC(37):LOCATE 9,7:PRINT SPC(37)

3780 IF FL=1 THEN LOCATE 8,15:PRINT "ARCSIN":A$(X)="ARSN":GOSUB 3950

3790 IF FL=2 THEN LOCATE 8,15:PRINT "ARCCOS":A$(X)="ARCS":GOSUB 4020

3800 IF FL=3 THEN LOCATE 8,15:PRINT "ARCTAN":A$(X)="ARTN"

3810 IF FL=4 THEN LOCATE 8,15:PRINT "ARCCOT":A$(X)="ARCT"

3820 IF FL=5 THEN LOCATE 8,15:A$(X)="Bog ":GOTO 3910

3830 IF FL=6 THEN LOCATE 8,15:A$(X)="Wkl ":ZAHL(X)=ZAHL(X)*180/PI:GOTO 3910

3840 LOCATE 9,7:PRINT " Wert in Winkelgrad? <J/N>"

3850 ANT$=INKEY$

3860 IF ANT$="J" OR ANT$="j" THEN ZAHL(X)=ZAHL(X)*180/PI:GOTO 3910

3870 IF ANT$="N" OR ANT$="n" THEN 3910

3880 IF ANT$=CHR$(8) THEN MERK=1:GOTO 3930

3890 IF ANT$=CHR$(27) THEN GOTO 1230

3900 GOTO 3850

3910 ZAHL$(X)=STR$(ZAHL(X)):COLOR 0,2:LOCATE 1+X,16:PRINT SPC(22-LEN(ZAHL$(X)));ZAHL(X);:COLOR 7,4:PRINT " ";A$(X)

3920 IF DRUCK=1 THEN LPRINT SPC(22-LEN(ZAHL$(X)));ZAHL(X);A$(X):DRUCK=2

3930 LOCATE 8,7:PRINT SPC(37):LOCATE 9,7:PRINT SPC(37):IF MERK=1 THEN 1990 ELSE 980

3940 ' ****************** Prfung auf ARCSIN(90,270) ***************************

3950 IF ZAHL(X)>1 THEN A$(X)=" > 1":K=1:GOTO 4090

3960 A=SQR(1-(ZAHL(X))*(ZAHL(X))):IF A<>0 THEN 4000

3970 IF ZAHL(X)=1 THEN ZAHL(X)=PI/2

3980 IF ZAHL(X)=-1 THEN ZAHL(X)=-PI/2

3990 RETURN

4000 ZAHL(X)=ATN((ZAHL(X))/A):RETURN

4010 ' ****************** Prfung auf ARCCOS(0) ******************************

4020 IF ZAHL(X)>1 THEN A$(X)=" > 1":K=1:GOTO 4090

4030 A=SQR(1-(ZAHL(X))*(ZAHL(X))):IF A<>0 THEN 4070

4040 IF ZAHL(X)=1 THEN ZAHL(X)=0

4050 IF ZAHL(X)=-1 THEN ZAHL(X)=PI

4060 RETURN

4070 ZAHL(X)=1.570797-ATN((ZAHL(X))/A):RETURN

4080 ' ********************** Nicht erlaubte Eingaben (ON ERROR) ***************

4090 COLOR 23,4:LOCATE 9,6:PRINT A$(X);" nicht m"glich! Eingabe l"schen! ";:COLOR 7,4

4100 IF DRUCK>0 THEN LPRINT "Fehler-Meldung wegen Eingabe von ";A$(X)

4110 GOSUB 4840:GOSUB 4860

4120 IF K=1 THEN K=0:A$(X)="":GOTO 980

4130 A$(X)="":RESUME NEXT

4140 ' ******************* Erklrungen mit [F1] ********************************

4150 IF HILFE=1 THEN 4360

4160 IF HILFE=2 THEN 4530

4170 COLOR 2,0:LOCATE 5,46:PRINT STRING$(35,"")

4180 FOR N = 6 TO 23:LOCATE N,46:PRINT "":LOCATE N,80:PRINT "";:NEXT

4190 LOCATE 24,46:PRINT STRING$(35,"");:COLOR 7,0

4200 LOCATE 7,47:PRINT "Eigenschaften des Rechners:":COLOR 3,0

4210 LOCATE 9,47:PRINT "Es kann nur mit 2 Zahlen gearbei-"

4220 LOCATE 10,47:PRINT "tet werden. H"here Rechenart erst"

4230 LOCATE 11,47:PRINT "bearbeiten. Ergebnis abspeichern"

4240 LOCATE 12,47:PRINT "(3 Speicher). Aufruf der Funkti-"

4250 LOCATE 13,47:PRINT "onen - Sinus, Kosinus, Tangenz,"

4260 LOCATE 14,47:PRINT "Kotangens, Logarithmus, Integer,"

4270 LOCATE 15,47:PRINT "Wurzel usw. - betrifft die je-"

4280 LOCATE 16,47:PRINT "weils zuletzt eingebene Zahl."

4290 LOCATE 18,47:PRINT "Fr Winkelfunktionen ist die Zahl"

4300 LOCATE 19,47:PRINT "in Grad (z.B. 25) anzugeben."

4310 LOCATE 21,47:PRINT CHR$(34);"Anzeigedauer";CHR$(34);" betrifft Fehler-

4320 LOCATE 22,47:PRINT "meldungen und Hinweise.":COLOR 0,7

4330 LOCATE 25,1:PRINT " [F10] Information l"schen [F1] Mehr Informationen [F2] Anzeigedauer ndern ";

4340 COLOR 7,4:KEY(10) ON:HILFE=1:RETURN

4350 ' ******************** 2. Informationsseite *******************************

4360 COLOR 7,0:LOCATE 7,47:PRINT " Rechner-Eigenschaften ";:COLOR 2,0:PRINT "(Seite 2) ":COLOR 3,0

4370 LOCATE 9,47:PRINT " Obwohl Anweisungen und Fehler- "

4380 LOCATE 10,47:PRINT " meldungen den Benutzer leiten, "

4390 LOCATE 11,47:PRINT " sind nicht alle Fehleingaben zu "

4400 LOCATE 12,47:PRINT " vermeiden, wie z.B. nach Aufruf "

4410 LOCATE 13,47:PRINT " der [U]mrechnung von Minuten "

4420 LOCATE 14,47:PRINT " und Sekunden in Dezimalwerte "

4430 LOCATE 15,47:PRINT " ein [L]ogarithmus-Befehl statt "

4440 LOCATE 16,47:PRINT " [M]in./Sek. zu tippen. ";:COLOR 3,5:PRINT" Daher "

4450 LOCATE 17,47:PRINT " Vorsicht!";:COLOR 3,0:PRINT SPC(23)

4460 LOCATE 18,47:PRINT SPC(33);

4470 LOCATE 19,47:PRINT " Es kann auch direkt eine [F]or- "

4480 LOCATE 20,47:PRINT " mel in der blichen Darstellung "

4490 LOCATE 21,47:PRINT " (jedoch ohne komplexe Zahlen) "

4500 LOCATE 22,47:PRINT " eingegeben werden. "

4510 COLOR 7,4:HILFE=2:RETURN

4520 ' ******************** 3. Informationsseite *******************************

4530 COLOR 7,0:LOCATE 7,47:PRINT " Rechenbeispiele:";SPC(15)

4540 LOCATE 9,47:PRINT " SIN(X)+COS(X)";:COLOR 3,0:PRINT ": Zuerst X dann "

4550 LOCATE 10,47:PRINT " [S]in [^] [2] [Enter] [Z]wi- "

4560 LOCATE 11,47:PRINT " schenspeicher [<]. Erneut X "

4570 LOCATE 12,47:PRINT " [C]os [^] [2] + [g]espeicher- "

4580 LOCATE 13,47:PRINT " ten Wert [Enter]";:COLOR 2,0:PRINT " {Ergebnis = 1}.":COLOR 7,0

4590 LOCATE 14,47:PRINT " _____ "

4600 LOCATE 15,47:PRINT " CA+B";:COLOR 3,0:PRINT ": Zahl A, dann [^] [2] "

4610 LOCATE 16,47:PRINT " [Enter] [Z]wischenspeicher [<] "

4620 LOCATE 17,47:PRINT " Zahl B und [^] [2] [Enter] [+] "

4630 LOCATE 18,47:PRINT " [g]espeicherten Wert [Enter] "

4640 LOCATE 19,47:PRINT " [W]urzel [2] [Enter] [+] C oder "

4650 LOCATE 20,47:PRINT " nach [W]urzel [2] [Enter] erst "

4660 LOCATE 21,47:PRINT " [V]orzeichenwechsel, dann [+] C "

4670 LOCATE 22,47:PRINT " [Enter].";SPC(23)

4680 LOCATE 25,1:PRINT SPC(12);:COLOR 0,7:PRINT " [F10] Information l"schen [F2] Anzeigedauer ndern ";

4690 COLOR 7,4:HILFE=2:RETURN

4700 ' ***************** Information l"schen ***********************************

4710 HILFE=0:COLOR 7,0:FOR N=5 TO 24:LOCATE N,46:PRINT SPC(35);:NEXT

4720 LOCATE 25,1:PRINT " ";:COLOR 0,7:LOCATE 25,2

4730 PRINT "[F1] Erklrungen [F2] Anzeigedauer ndern";:COLOR 7,0:IF MHZ=0 THEN MHZ=18000

4740 PRINT SPC(36);:KEY(1) ON:COLOR 7,4:KEY(10) OFF:KEY(2) ON:PRUF=0:RETURN

4750 ' *********************** Uhrzeit *****************************************

4760 IF DATE$<>J$ THEN K=1:COLOR 7,4:GOTO 450

4770 COLOR 10:ZT$=TIME$

4780 ZTS$=RIGHT$(ZT$,2):ZTM$=MID$(ZT$,4,2):ZTH$=LEFT$(ZT$,2)

4790 IF ZTS$="01" THEN S$=" Sekunde " ELSE S$=" Sekunden "

4800 IF ZTM$="01" THEN M$=" Minute " ELSE M$=" Minuten "

4810 LOCATE 3,47:IF CSRLIN = 3 THEN PRINT " ";ZTH$;" Uhr ";ZTM$;M$;ZTS$;S$

4820 COLOR 7:IF PRUF=1 THEN 5130 ELSE 980

4830 ' ********************** Aufforderung zum Warten **************************

4840 LOCATE 4,6:PRINT SPC(19);"Bitte warten! ":COLOR 7,4:RETURN

4850 ' ********************** Kommentare l"schen *******************************

4860 BEEP:FOR N=1 TO MHZ:NEXT:COLOR 7,4:LOCATE 8,6:PRINT SPC(38):LOCATE 4,6:PRINT SPC(38)

4870 LOCATE 9,6:PRINT SPC(38):RETURN

4880 ' ********* Einstellung der Wartezeit, ehe Kommentare gel"scht werden *****

4890 GOSUB 4710:KEY(1) OFF:COLOR 7,0:KEY (2) OFF

4900 LOCATE 25,1:PRINT SPC(51);:COLOR 0,7:PRINT " [<] Keine nderungen ";

4910 COLOR 7,0:AEN$=""

4920 LOCATE 7,46:PRINT "Wielange (in Sekunden) sollen Kom-"

4930 LOCATE 8,46:PRINT "mentare (Fehlermeldungen udgl.)":LOCATE 9,46

4940 PRINT "angezeigt werden?":LOCATE 12,46:PRINT "Zuerst Taktfrequenz 4,5 angeben"

4950 LOCATE 13,53:PRINT "(z.B. 6 oder 8 MHz):":GOSUB 5240

4960 GOSUB 5030:MHZ=VAL(AEN$):IF MHZ<4.5 THEN GOSUB 5220:GOTO 4960

4970 LOCATE 12,46:PRINT "Jetzt die Zeit (bis zu 9 Sekunden)":LOCATE 13,52

4980 PRINT SPC(9);"angeben:";SPC(14):MHZ=VAL(AEN$):AEN$="":GOSUB 5240:GOSUB 5120

4990 IF VAL(AEN$)>9 THEN LOCATE 14,46:PRINT "Zu lang! (9 Sek. ist schon zu viel)":GOTO 4970

5000 IF MHZ=4.5 THEN MHZ=1 ELSE IF MHZ>0 THEN MHZ=MHZ-4.5

5010 MHZ=INT(833*(MHZ^1.05)*VAL(AEN$))

5020 GOSUB 4710:RETURN

5030 LOCATE 17,46:PRINT STRING$(34,"")

5040 COLOR 3,0:LOCATE 15,46:PRINT "Eingabe mit [Enter] abschlieen! ";:COLOR 7,1

5050 LOCATE 18,46:PRINT "Fr bleibende nderung:";:COLOR 2,0:PRINT " Tippe [0]."

5060 LOCATE 19,46:PRINT "Zeilen 110 und 120 werden automa-"

5070 LOCATE 20,46:PRINT "tisch gelistet nach Verlassen des"

5080 LOCATE 21,46:PRINT "Programms. Mit EDIT 110 Anweisun-"

5090 LOCATE 22,46:PRINT "gen aus Zeile 120 benutzen. Dann"

5100 LOCATE 23,46:PRINT "SAVE";CHR$(34);"RECHNER[Enter] tippen."

5110 LOCATE 24,46:PRINT "Neustart: RUN";CHR$(34);"RECHNER[Enter].";:COLOR 7,0

5120 ANT$="":PRUF=1

5130 COLOR 7,0:ANT$=INKEY$:IF ANT$="" THEN 4760

5140 IF ANT$="." OR ANT$="," THEN ANT$=".":GOTO 5190

5150 IF ANT$=CHR$(13) THEN RETURN

5160 IF ANT$=CHR$(8) THEN GOSUB 5230

5170 IF ANT$<"0" OR ANT$>"9" THEN 5120

5180 IF ANT$="0" THEN 5250

5190 AEN$=AEN$+ANT$:LOCATE 13,75,0:PRINT AEN$:ANT$=""

5200 LOCATE 14,46:PRINT SPC(35):GOTO 5120

5210 ' ************************* Prfung der Taktfrequenz **********************

5220 IF AEN$<>"" THEN LOCATE 14,50:PRINT "Takt mu 4,5 MHz sein!":GOTO 5240

5230 IF AEN$="" THEN RETURN 4710

5240 COLOR 23,0:LOCATE 13,75:PRINT "? ":COLOR 7,0:AEN$="":RETURN

5250 CLS:LIST 110-120:EDIT 110:END

5260 '************************* Darstellung des Ergebnisses der Formel *********

5270 ZAHL$(1)=STR$(SPEI):SPEI=0

5280 COLOR 23,4:LOCATE 9,6:PRINT "Ergebnis der Formel"

5290 FLAG=0:GOTO 1380

5300 '************************ Aufruf des FORMEL-Programms *********************

5310 LOCATE 10,50:COLOR 23,0:PRINT "Einige Sekunden Geduld"

5320 SPEICH1=SPEICH(1):SPEICH2=SPEICH(2):SPEICH3=SPEICH(3)

5330 COMMON SPEI,SPEICH1,SPEICH2,SPEICH3:CHAIN "spiele\FORMEL"

 


Der erweiterte ASCII-Zeichensatz wurde unter DOS (der Eingabeaufforderung) rekonstruiert -

DOS kennt noch den alten ASCII-Zeichensatz...(geht nicht mit Windows), indem z.B. fr das erste Zeichen, das "?" [Alt] gedrckt gehalten und auf dem Numeric-Block 129 eingetippt wurde. Probieren es mal selbst! Da der Zeilenwechsel unter DOS sehr dicht erfolgt, gehen die Zeichen in einander ber. Das sieht man am deutlichsten an den Zeichen mit den Zeichen-Codes 186 (senkrechter Doppelstrich) und 199 darunter fr "". Wegen der "ineinander flieenden" DOS-Zeilen, konnte man im Programmbeispiel oben (auf ◄ tippen) die Zeilen 30 bis 100 schn einrahmen.Nur die Grafikzeichen des 8Bit ASCII Zeichensatzes

Da die Grafikzeichen wild im erweiterten Zeichensatz erstreut sind, wurden sie im nchsten Bild "isoliert". Der Rahmen in Zeile 30 vom oberen Bild beginnt also mit [Alt] 201, danach mute hufig [Alt] 205 wiederholt werden (70 mal. Hoffentlich richtig, wenn es jemand nachzhlt). Dann kam [Alt] 187usw. usw. Alles das geht nur, weil DOS keine Proportional-Schrift mag. (Jeder Buchstabe, ob i oder W nimmt gleich viel Platz ein, wie die auch in Windows benutzbare Schriftart "Courier".