home *** CD-ROM | disk | FTP | other *** search
/ Hamburger Atari Club Magazin 11 / Hamburger_Atari_Club_Magazin_11_1990___DE_Side_B.atr / kurs8.bc3 < prev    next >
Text File  |  2023-02-26  |  12KB  |  1 lines

  1. ¢1000 A=500:GOTO20:REM  BASICODE-3 JOURNAL 11¢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 GOSUB1410: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:GOTO1220¢1100 PRINT:PRINT"Wieviel Leerzeichen"¢1110 INPUT"am Zeilenanfang    ";HL¢1120 PRINT:PRINT"Wieviel Text-Zeichen"¢1130 INPUT"auf jeder Zeile    ";I:HR=HL+I-1¢1140 PRINT:PRINT"Wieviel Text-Zeilen"¢1150 INPUT"auf jeder Seite    ";VR:VR=VR-3¢1160 PRINT"(E) Endlospapier oder  "¢1170 PRINT"(L) Lose Blaetter (E/L) ";¢1180 GOSUB210:IFIN=76 THENVL=-1:GOTO1220¢1190 IFIN<>69 THEN GOSUB250:GOTO1160¢1200 PRINT:PRINT"Wieviel Leerzeilen"¢1210 INPUT"am Seitenende      ";VL:VR=VR+VL¢1220 MM$="":IFHL>0 THENMM$=LEFT$(S$,HL)¢1230 GOSUB1380:M$=MM$:AL=VL:IFSC=2 THEN GOSUB1360¢1240 IFLEN(R$)>HR-HL THEN GOSUB1820¢1250 GOSUB1440:IFR$<>"" THENR$=R$+" "¢1260 R$=R$+D$:GOTO1240¢1270 IFSC=2 THENSR$=M$+SR$:GOSUB350:GOSUB360:GOTO1290¢1280 GOSUB120:PRINTM$;SR$;:VE=VE+1:HO=0:GOSUB110:HL=0¢1290 M$=MM$:AL=AL+1:IFAL<=VR THENRETURN¢1300 IFSC=1 THEN1380¢1310 IFVL>=0 THENFORI=1 TOVL:GOSUB360:NEXTI:GOTO1350¢1320 PRINT"Neues Blatt in Drucker einlegen"¢1330 PRINT"druecke dann       RETURN/ENTER"¢1340 GOSUB210:IFIN<>13 THEN1340¢1350 AL=VL¢1360 SR$=LEFT$(S$,(HR-HL-LEN(T$))/2)+T$:GOSUB1270¢1370 SR$="":GOSUB1270:AL=VL:RETURN¢1380 HO=3:VE=VT:GOSUB110¢1390 SR$="Weiter:druecke <RETURN/ENTER>":GOSUB150¢1400 GOSUB210:IFIN<>13 THEN1400¢1410 GOSUB100:AL=VL:SR$=T$¢1420 PRINTLEFT$(S$,(HT-LEN(SR$))/2-3);:GOSUB150¢1430 PRINT:PRINT:RETURN¢1440 READD$¢1450 IFD$="" THEN1440¢1460 IFLEFT$(D$,1)="." THEN1530¢1470 IFLEFT$(D$,1)<>">" THEN1490¢1480 D$=LEFT$(S$,23-LEN(R$))+MID$(D$,2):RETURN¢1490 IFLEFT$(D$,1)<>"!" THENRETURN¢1500 IFD$="!" THEND$="":GOTO1520¢1510 D$=MID$(D$,2)¢1520 GOSUB1760:GOTO1450¢1530 IFD$<>".E" THEN1580¢1540 J=1:GOSUB1760:T$="E N D E"¢1550 SR$="":GOSUB1270:GOSUB1270:SR$=T$:GOSUB1270:T$=""¢1560 SR$="":GOSUB1270:IFAL<>VL THEN1560¢1570 GOTO950¢1580 DD$=MID$(D$,2,1):D$=MID$(D$,3)¢1590 IFDD$<>"R" THEN1640¢1600 IFSC=2 THENRETURN¢1610 IFLEN(R$)+6+LEN(D$)>=HR-HL THENSR$=R$:GOSUB1270:R$=""¢1620 PRINTM$;R$;:SR$=D$:GOSUB150:M$=""¢1630 HL=HL+LEN(R$)+LEN(D$)+6:R$="":GOTO1440¢1640 IFDD$<>"M" THEN1670¢1650 I=VAL(D$):MM$="":IFI+HL=0 THEN1440¢1660 MM$=LEFT$(S$,I+HL):GOTO1440¢1670 IFDD$="P" THENJ=VAL(D$):GOSUB1760:GOSUB1780:GOTO1440¢1680 IFDD$="T" THENT$=D$:J=10:GOSUB1760:GOSUB1780:GOTO1600¢1690 IFDD$="Q" THENR$=R$+CHR$(34)+D$:GOTO1440¢1700 IFDD$<>"F" THEN1730¢1710 J=VAL(D$):GOSUB1760¢1720 J=J-1:IFJ>-1 THENSR$="":GOSUB1270:GOTO1720¢1730 IFDD$<>"C" THEN1750¢1740 SR$=LEFT$(S$,(HR-HL-LEN(D$))/2)+D$:GOSUB1270¢1750 GOTO1440¢1760 GOSUB1820:SR$=R$:GOSUB1270:R$="":J=J-1¢1770 RETURN¢1780 IF(SC=1)OR(AL+J>VR)THEN1800¢1790 SR$="":GOSUB1270:GOSUB1270:RETURN¢1800 IFAL<>VL THENSR$="":GOSUB1270:GOTO1800¢1810 RETURN¢1820 K=HR-HL+1-LEN(M$)¢1830 IFLEN(R$)<=K THENRETURN¢1840 IFMID$(R$,K,1)=" " THEN1870¢1850 K=K-1:IFK>0 THEN1840¢1860 SR$="":GOTO1880¢1870 SR$=LEFT$(R$,K-1):R$=MID$(R$,K+1)¢1880 GOSUB1270:GOTO1820¢1890 REM¢1900 REM UEBERSETZTE VERSION¢1910 REM¢1920 REM COMPUTER-BULLETIN NO.40 (11/89)¢1930 REM STICHTING BASICODE, EINDHOVEN¢1940 REM¢25000 DATA"Programmieren in BASICODE (8)"¢25010 DATA".RSignalton - Subroutine # 250"¢25020 DATA"!!Diese Subroutine gibt ein akustisches Signal"¢25030 DATA"(entspricht ASCII 7 - BEL). Damit kann - sofern"¢25040 DATA"erforderlich - die Aufmerksamkeit auf einen"¢25050 DATA"bestimmten Schritt im Programm gelenkt werden."¢25060 DATA"!Allerdings ist das Signal nur von kurzer Dauer."¢25070 DATA"Oft ist es notwendig, das Signal andauern zu"¢25080 DATA"lassen, um dann den Programmlauf nach"¢25090 DATA"Betaetigen einer Taste verzweigen oder enden"¢25100 DATA"zu lassen."¢25110 DATA".P0"¢25120 DATA".RZufallszahlen - Subroutine # 260"¢25130 DATA"!!Hiermit wird der Zufallszahlengenerator"¢25140 DATA"des Computers aufgerufen; in RV werden dann"¢25150 DATA"Pseudozufallszahlen im Bereich","!! 0 <= RV < 1"¢25160 DATA"!!zurueckgegeben. In der Regel werden nur"¢25170 DATA"ganzzahlige Werte benoetigt, die durch Rechnung"¢25180 DATA"gewonnen werden koennen."¢25190 DATA".P0"¢25200 DATA".RFreier Arbeitsspeicher","!"¢25210 DATA".R      - Subroutine 270"¢25220 DATA"!!Man kann davon ausgehen, dass BASICODE-"¢25230 DATA"Programme eine Laenge von max. 18 KByte haben"¢25240 DATA"koennen, in Einzelfaellen auch mehr. Infolge der"¢25250 DATA"Uebertragung der einzelnen Zeichen und der"¢25260 DATA"rechnerinternen Umwandlung in 'Token' ist die"¢25270 DATA"im Computer gespeicherte Programmlaenge kuerzer."¢25280 DATA"Im Computer ist ein freier Arbeitsspeicher"¢25290 DATA"von mind. 16 KByte erforderlich.",".P0"¢25300 DATA"Der nach Laden des Bascoders freie Speicherplatz"¢25310 DATA"(in Bytes) kann im Direkt-Modus mit"¢25320 DATA"!! GOSUB 270:PRINT FR"¢25330 DATA"!!abgefragt werden. Die Wiederholung nach dem"¢25340 DATA"Laden des Programms und die Bildung der"¢25350 DATA"Differenz ergibt die computer- spezifische"¢25360 DATA"Programmlaenge (in Bytes)."¢25370 DATA".P0"¢25380 DATA".RVariablen SR und SR$"¢25390 DATA"!!In BASICODE-3-Programmen und -Subroutinen"¢25400 DATA"kommen den Variablen SR und SR$ besondere"¢25410 DATA"Aufgaben zu:"¢25420 DATA"!! - Wandeln einer numerischen in eine"¢25430 DATA"!   Stringvariable,"¢25440 DATA"! - Formatieren der Ausgabe numerischer"¢25450 DATA"!   Daten,"¢25460 DATA"! - Wandeln von Klein- in Grossbuch-"¢25470 DATA"!   staben,"¢25480 DATA"! - Ausgabe ueber den Drucker,"¢25490 DATA"! - Schreiben eines sequentiellen Files"¢25500 DATA"!   auf Cassette oder Diskette,"¢25510 DATA"! - Textausgabe im grafischen Betrieb."¢25520 DATA"!!Die freie Verwendung dieser Namen in einem"¢25530 DATA"Programm ist nicht erlaubt."¢25540 DATA".P0"¢25550 DATA".RTypwandlung - Subroutine # 300"¢25560 DATA"!!Die Subroutine # 300 entspricht der in BASIC"¢25570 DATA"vorhandenen Funktion STR$(x), mit der numerische"¢25580 DATA"in Stringvariable gewandelt werden koennen."¢25590 DATA"Damit werden die Leerraeume vor und hinter"¢25600 DATA"numerischen Daten unterdrueckt:"¢25610 DATA"!! A$=STR$(A) wird ersetzt durch:"¢25620 DATA"!! SR=A:GOSUB 300:A$=SR$"¢25630 DATA".P0"¢25640 DATA".RFormatieren numerischer Daten","!"¢25650 DATA".R           - Subroutine # 310"¢25660 DATA"!!Zahlen werden in BASICODE - je nach Groesse"¢25670 DATA"und Computer - mit 6 bzw. 9 Stellen oder in"¢25680 DATA"wissenschaftlicher Notation ('E-Format')"¢25690 DATA"angezeigt. Manche Computer (PC's) erlauben die"¢25700 DATA"Darstellung in 'doppelter' Genauigkeit (bis zu"¢25710 DATA"18 gueltige Ziffern)."¢25720 DATA"!Die Subroutine # 310 aehnelt der 'PRINT USING'"¢25730 DATA"- Anweisung mancher BASIC-Dialekte, die jedoch"¢25740 DATA"vielfaeltiger eingesetzt werden kann als die"¢25750 DATA"Subroutine 310. In BASICODE-3 ist nur das"¢25760 DATA"Formatieren der Ausgabe numerischer Werte"¢25770 DATA"- ueber Bildschirm oder Drucker - moeglich."¢25780 DATA".P0"¢25790 DATA"Die formatierte Ausgabe des Wertes der"¢25800 DATA"numerischen Variablen A erfolgt ueber die"¢25810 DATA"Variablen SR$, CT und CN. Dabei bedeuten:"¢25820 DATA"!! SR  numerische Variable, deren Wert"¢25830 DATA"!     in SR$ formatiert dargestellt"¢25840 DATA"!     werden soll,"¢25850 DATA"!! CT  Anzahl der Zeichen, die in SR$"¢25860 DATA"!     enthalten sind (einschl. Dezimal-"¢25870 DATA"!     punkt und Vorzeichen),"¢25880 DATA"!! CN  Anzahl der Nachkommastellen."¢25890 DATA"!!Diese Variablen sind vor dem Aufruf der"¢25900 DATA"Subroutine # 310 zu belegen:"¢25910 DATA".P0"¢25920 DATA"Die Zeichenkette SR$ kann maximal nur neun"¢25930 DATA"Ziffern enthalten, d.h. dass CT begrenzt ist:"¢25940 DATA"!!     1 - Vorzeichen,"¢25950 DATA"!  + vk - Anzahl der Vorkommastellen,"¢25960 DATA"!  +  1 - Dezimalpunkt,"¢25970 DATA"!  + CN - Anzahl der Nachkommastellen,"¢25980 DATA"!    ---------------------------------"¢25990 DATA"!    CT - Anzahl der Zeichen"¢26000 DATA"!!In Abhaengigkeit von der Groesse der"¢26010 DATA"darzustellenden Zahl gilt:"¢26020 DATA"!! vk + CN <= 9 (ohne fuehrende Null"¢26030 DATA"!              falls SR < 1)",".P0"¢26040 DATA"Mit der Subroutine # 310 ist es nicht moeglich,"¢26050 DATA"Zahlen im wissenschaftl. Format darzustellen."¢26060 DATA"!Kann die Zahl nicht im vorausbestimmten Format"¢26070 DATA"angezeigt werden, enthaelt SR$ Sterne ('*')."¢26080 DATA"Ggf. wird die Zahl auf CN Stellen gerundet. Die"¢26090 DATA"Werte der Variablen CT, CN und SR werden mit"¢26100 DATA"dem Aufruf der Subroutine nicht veraendert."¢26110 DATA"!!Beim Programmieren sind die Werte fuer CT"¢26120 DATA"und CN sorgfaeltig zu bestimmen, z.B.:"¢26130 DATA"!! - Ganze Zahlen (-1E8 ... +1E8):"¢26140 DATA"!   CT=11"¢26150 DATA"!! - SR < 1 (Vorzeichen, fuehrende Null,"¢26160 DATA"!   Dezimalpunkt, neun Nachkommastellen):"¢26170 DATA"!   CT=12, CN=9",".P0"¢26180 DATA"Der Variablen CT kann ein Wert bis zu 20"¢26190 DATA"zugewiesen werden; dies fuehrt zu einer"¢26200 DATA"Positionierung der Ausgabe in der Zeile. Besser"¢26210 DATA"ist es, die Subroutine # 110 zu benutzen."¢26220 DATA".P0"¢26230 DATA".RKlein- -> Grossbuchstaben","!"¢26240 DATA".R       - Subroutine # 330"¢26250 DATA"!!Dieses Unterprogramm aendert alle in der"¢26260 DATA"Zeichenkette SR$ vorhandenen  Kleinbuchstaben"¢26270 DATA"in Grossbuchstaben, indem der ASCII-Wert der"¢26280 DATA"Zeichen im Bereich 96 ... 128 um 32 vermindert"¢26290 DATA"wird. Aus ASCII 97 ('a') wird ASCII 65 ('A')."¢26300 DATA"Da das Alphabet die ASCII-Werte 97 ... 122"¢26310 DATA"umfasst, werden auch die Sonderzeichen im"¢26320 DATA"Bereich 123 ... 126 gewandelt."¢26330 DATA"!!Die Zeichen der urspruenglichen Zeichenkette"¢26340 DATA"werden nicht geaendert."¢26350 DATA".P0"¢26360 DATA".RAusgabe ueber den Drucker","!"¢26370 DATA".R - Subroutinen # 350, 360","!"¢26380 DATA"!!Grundsaetzlich kann davon ausgegangen werden,"¢26390 DATA"dass neben der Ausgabe ueber den Bildschirm auch"¢26400 DATA"ein Ausdruck auf Papier (Erlaeuterungen,Tabellen"¢26410 DATA" usw.) sinnvoll ist. Das Programm soll also die"¢26420 DATA"Wahl unter beiden Moeglichkeiten lassen."¢26430 DATA".P0"¢26440 DATA"Der Drucker wird ueber die Subroutinen # 350"¢26450 DATA"bzw. # 360 - und nur ueber diese - angesprochen."¢26460 DATA"Die Anweisung 'GOSUB 350' entspricht der"¢26470 DATA"Anweisung 'PRINT SR$;' - bei einer Ausgabe ueber"¢26480 DATA"den Bildschirm."¢26490 DATA"!Vorher ist der Inhalt der auszugebenden"¢26500 DATA"Variablen der Variablen SR$ zuzuweisen. Dies"¢26510 DATA"geschieht fuer"¢26520 DATA"!! Zeichenkettenvariable (z.B. A$):"¢26530 DATA"!!     SR$=A$:GOSUB 350 oder"¢26540 DATA"!     SR$='abcde':GOSUB 350"¢26550 DATA"!! numerische Variable (z.B. A):"¢26560 DATA"!!     SR=A:GOSUB 300 (oder GOSUB 310)"¢26570 DATA"!     (Wandlung in Stringvariable SR$)"¢26580 DATA"!     GOSUB 350"¢26590 DATA".P0"¢26600 DATA"Der Ausdruck erfolgt ohne Wagenruecklauf und"¢26610 DATA"Zeilenvorschub; die Druckzeile wird nicht"¢26620 DATA"abgeschlossen. Die bewirkt die Subroutine # 360;"¢26630 DATA"mit dieser Anweisung ist jede Anweisungsfolge"¢26640 DATA"zum Ausdruck einer Zeile zu beenden."¢26650 DATA"!!Wird die Anweisung 'GOSUB 360' allein benutzt,"¢26660 DATA"erfolgt der Ausdruck einer Leerzeile (dies"¢26670 DATA"entspricht 'PRINT' bei einer Ausgabe ueber den"¢26680 DATA"Bildschirm)."¢26690 DATA".P10","Das war das","!!"¢26700 DATA".C****************************"¢26710 DATA".C*                          *"¢26720 DATA".C*  BASICODE-3   Journal    *"¢26730 DATA".C*        Nummer  11        *"¢26740 DATA".C*     11.  Juli  1990      *"¢26750 DATA".C*                          *"¢26760 DATA".C****************************",".E"¢30000 REM¢30010 REM Grundlagen von BASICODE¢30020 REM       -- Teil 8 --¢32000 REM -------------------------¢32010 REM FRIEDRICH DORMEIER¢32020 REM¢32030 REM D-1000 BERLIN 39¢32040 REM¢32050 REM C64/C128 - 2/1990¢32060 REM -------------------------¢32070 REM¢32080 REM Erstausstrahlung: DS-Kultur¢32090 REM-spezial 900711¢