home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Input 64
/
Input_64_85-01_1985_Verlag_Heinz_Weise_de.d64
/
HILFSPROGRAMME
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2023-02-26
|
14KB
|
294 lines
1000 rem **** m o d u l f u e r *****
1020 rem **** h i l s p r o g r a m m e
1040 :
1060 rem*******************************
1080 poke50257,20:rem nicht sichern
1100 rem*******************************
1120 :
1140 rem*******************************
1160 a$(1)="[196][193][212][193] - [199]enerator"
1180 a$(2)="[210][197] - [206][197][215] - [210]outine"
1200 a$(3)="[194][193][211][201][195] 2 mal im [210][193][205]"
1220 a$(4)="[204][201][211][212] im [208]rogramm"
1260 rem*******************************
1280 :
1300 printchr$(14);chr$(8);"[147][144]";:poke53280,5 :poke53281,5:si=54272
1320 print"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]";
1340 print"[221] [146][221]";
1360 print"[221] w i r s t e l l e n v o r : [146][221]";
1380 print"[221] [146][221]";
1400 print"[221] [200] i l f s p r o g r a m m e [146][221]";
1420 print"[221] [146][221]";
1440 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]" :print
1460 print"[193]uf den folgenden [211]eiten stellen wir"
1480 print"[201]hnen mehrere [200]ilfsprogramme vor.":print
1500 print"[211]ie werden die [193]nwendung dieser"
1520 print"[200]ilfsprogramme kennenlernen.":print
1530 print"[205]it [195][212][210][204][146] [211][146] sichern [211]ie in diesem [198]all"
1535 print"nur das angewaehlte [200]ilfsprogramm!":print
1540 print"[196]arueberhinaus stehen [201]hnen die"
1560 print"bekannten [198]unktionen von [201][206][208][213][212] 64 [146]"
1580 print"zur [214]erfuegung."
1640 gosub5800
1650 :
1660 poke53280,0:poke53281,0:print"[147]";
1670 poke50257,20:rem nicht sichern
1680 print"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]";
1700 print"[221] [146][221]";
1720 print"[221] [193] u s w a h l t a f e l [146][221]";
1740 print"[221] [146][221]";
1760 print"[221] [200] i l f s p r o g r a m m e [146][221]";
1780 print"[221] [146][221]";
1800 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]" :print:print:print
1820 fori=1to4:print" "i"[157] [146] = "a$(i):print:nexti
1840 z=24:s=0:gosub5960:print"[194]itte waehlen [211]ie (1-4) !";:fort=0to200:nextt
1860 getg$:ifg$=""then1880
1870 ifg$>"0"andg$<"5"thengosub6000:goto1900
1875 gosub6100
1880 gosub5960:print"[194]itte waehlen [211]ie (1-4[146])"; :fort=0to200:nextt:goto1840
1900 a=val(g$):print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
1920 on a gosub 2000,3240,3680,4120
1940 goto1660
1960 :
1980 rem 1. hilfsprogramm
2000 poke50259,025:poke50260,051:poke50261,211:poke50262,052:rem uebergabe
2010 poke50257,24:rem teilweise sichern
2020 print"[196]ieses [200]ilfsprogramm liest die [215]erte"
2040 print"eines frei bestimmbaren [211]peicherbereichs";
2060 print"aus und legt diese in [196][193][212][193]-[218]eilen ab.":print
2080 print"[158][197]inige [193]nwendungsbeispiele waeren z.[194].:":print
2100 print"[211]ie wollen in ein [194][193][211][201][195]-[208]rogramm eine"
2120 print"[210]outine in [205]aschinensprache einbinden":print
2140 print" [158]oder":print
2160 print"[211]ie wollen [201]hr selbstentwickeltes"
2180 print"[205]aschinensprache-[208]rogramm in einer [198]orm"
2200 print"weitergeben, die es ermoeglicht, das"
2220 print"[208]rogramm auch ohne [205]onitor zu laden."
2240 gosub5480:ifg$="m"org$="[205]"thenreturn
2260 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
2280 print"[201]n der vorliegenden [198]orm erwartet das"
2300 print"[208]rogramm zu [194]eginn einige [197]ingaben:":print:print
2320 print"[158] - erste [218]eilennummer der [196][193][212][193]-[218]eilen":print
2340 print" - [211]chrittweite der [218]eilennummern":print
2360 print" - [211]tartadresse des [211]peicherbereichs":print
2380 print" - [197]ndadresse des [211]peicherbereichs":print:print
2400 print"[196]iese [193]bfrage kann aber auch entfallen,"
2420 print"wenn die [196][193][212][193]-[210]outine als [213]nterprogramm"
2440 print"verwendet wird und die [214]ariablen vom"
2460 print"[200]auptprogramm mit [215]erten versorgt"
2480 print"werden."
2500 gosub5480:ifg$="m"org$="[205]"thenreturn
2520 print"[147][158]";:f=2:gosub5360:
2540 z=5:s=0:gosub5960:print"[158][197][160][201][160][206][160][199][160][193][160][194][160][197][160][215][160][197][160][210][160][212][160][197][160]:":print
2560 print"erste [218]eilennr. = ":print
2580 print"[211]chrittweite = ":print
2600 print"[211]tartadresse = ":print
2620 print"[197]ndadresse = ":gosub5140
2640 t$="[215]ir legen zuerst die erste [218]eilennummer fest; z.[194].: 1000 "
2660 gosub5280:z=7:s=20:gosub5960:print"<";
2680 gosub5480:ifg$="m"org$="[205]"thenreturn
2700 z=7:s=20:gosub5960:print"1000"
2720 t$="[196]anach den [218]eilenabstand; z.[194].: 10 "
2740 gosub5280:z=9:s=20:gosub5960:print"<";
2760 gosub5480:ifg$="m"org$="[205]"thenreturn
2780 z=9:s=20:gosub5960:print"10"
2800 t$="[193]ls dritte [197]ingabe benoetigen wir die [211]tartadresse; z.[194].: 42562"
2820 gosub5280:z=11:s=20:gosub5960:print"<";
2840 gosub5480:ifg$="m"org$="[205]"thenreturn
2860 z=11:s=20:gosub5960:print"42562"
2880 t$="[213]nd als letzte [197]ingabe die [197]ndadresse; z.[194].: 42588"
2900 gosub5280:z=13:s=20:gosub5960:print"<";
2920 gosub5480:ifg$="m"org$="[205]"thenreturn
2940 z=13:s=20:gosub5960:print"42588"
2960 t1$="[201]n diesem [211]peicherbereich liegt uebrigens die [194]etriebssystemroutine"
2980 t2$="[160]fuer den [194][193][211][201][195]-[194]efehl [160][206][197][215][160][160]"
3000 t$=t1$+t2$:gosub5280:fort=0to2000:nextt
3020 t1$="[206]achdem wir die vier [215]erte dem [208]rogramm uebergeben haben, werden die "
3040 t2$="entsprechenden [196][193][212][193]-[218]eilen erzeugt"
3060 t$=t1$+t2$:gosub5280
3080 forz=5to13step2:s=0:gosub5960:print" ":nextz
3100 z=5:s=0:gosub5960:print"[196][160][193][160][212][160][193][160][218][160][197][160][201][160][204][160][197][160][206][160]:":print:print
3120 print"1010 [196][193][212][193] 208,253,169, 0,168,145, 43,200,145, 43,165, 43, 24,";
3140 print"105, 2,133, 45":print
3160 print"1020 [196][193][212][193] 165, 44,105, 0,133, 46, 32,142,166,169":print
3180 gosub5640:return
3200 :
3220 rem 2. hilfsprogramm
3240 poke50259,212:poke50260,052:poke50261,188:poke50262,058:rem uebergabe
3250 poke50257,24:rem teilweise sichern
3260 print"[205]it diesem [200]ilfsprogramm koennen [211]ie ein";
3280 print"[208]rogramm retten, dass [211]ie versehentlich"
3300 print"mit [206][197][215] geloescht haben.":print
3340 print"[158][196]ie [210][197]-[206][197][215]-[210]outine muss aber unmittelbar";
3360 print"nach dem irrtuemlichen [206][197][215]-[194]efehl zum"
3380 print"[197]insatz kommen":print
3400 print"[213]nser [200]ilfsprogramm enthaelt in einigen"
3420 print"[196][193][212][193]-[218]eilen ein kurzes [208]rogramm in"
3440 print"[205]aschinensprache":print
3460 print"[158][197]s muss daher vor der ersten [193]nwendung"
3480 print"einmal als [205]aschinenprogramm erzeugt"
3500 print"und abgespeichert werden":print
3582 gosub5480:ifg$="m"org$="[205]"thenreturn
3583 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
3584 print"[215]enn die [210]outine benoetigt wird, kann"
3586 print"sie einfach 'absolut' mit ',1' geladen"
3588 print"werden und dann mit [211][217][211] [[193][196][210][197][211][211][197]]"
3589 print"aufgerufen werden.":print
3590 print"[158][196]as [194][193][211][201][195]-[208]rogramm ist danach 'gerettet'";
3592 print"und kann normal benutzt werden."
3600 gosub5480:ifg$="m"org$="[205]"thenreturn
3601 print"[147][158]";:f=2:gosub5360:
3602 z=5:s=0:gosub5960:print"[158][197][160][201][160][206][160][199][160][193][160][194][160][197][160][215][160][197][160][210][160][212][160][197][160]:":print
3604 print"[211]tartadresse = 53180":print
3606 print"[196]iskette oder [203]assette = [196]":gosub5120
3608 t1$="[215]ir muessen zuerst die [211]tartadresse festlegen, an der unser"
3610 t2$="[160][205]aschinen-[208]rogramm beginnen soll."
3611 t$=t1$+t2$:gosub 5280:fort=oto2000:nextt
3612 t1$="[215]ir koennen die vorgegebene [193]dresse"
3614 t2$="[160]mit [210][197][212][213][210][206] uebernehmen, oder eine andere geeignete [193]dresse eingeben;"
3615 t3$="[160]z.[194].: 49152 [194]eginn des oberen [210][193][205]-[194]ereichs"
3616 t$=t1$+t2$+t3$:gosub 5280:z=7:s=25:gosub5960:print"49152"
3617 gosub5480:ifg$="m"org$="[205]"thenreturn
3620 t1$="[196]anach legen wir fest, ob wir das [205]aschinen-[208]rogramm auf [196]iskette"
3622 t2$="[160]oder auf [203]assette abspeichern wollen. ([194]ei [196]iskette nur [210][197][212][213][210][206]"
3624 t3$="[160]druecken). [198]uer [203]assette geben wir [203] ein. "
3626 t$=t1$+t2$+t3$:gosub 5280:z=9:s=25:gosub5960:print"[203]"
3628 gosub5480:ifg$="m"org$="[205]"thenreturn
3630 t1$="[193]uf dem [194]ildschirm erscheinen nun die ueblichen [200]inweise, die [211]ie von"
3632 t2$="[160]der [203]assetten-[194]edienung gewohnt sind:[160] [160][160][160][160]"
3634 t$=t1$+t2$:gosub 5280
3635 z=11:s=0:gosub5960:print"[208][210][197][211][211] [210][197][195][207][210][196] & [208][204][193][217] [207][206] [212][193][208][197]":print"[207][203]"
3636 print"[211][193][214][201][206][199] [210][197]-[206][197][215] 49152":print"[210][197][193][196][217]":gosub5480
3638 t1$="[196]ie [211]tartadresse ist [212]eil des [208]rogramm-[206]amens. [194]eim [204]aden der"
3640 t2$="[160][210]outine muessen [211]ie also in diesem [198]all eingeben '[210][197]-[206][197][215] 49152' "
3642 t$=t1$+t2$:gosub5280
3656 gosub5640:return
3658 :
3660 rem 3. hilfsprogramm
3680 poke50259,189:poke50260,058:poke50261,128:poke50262,061:rem uebergabe
3690 poke50257,24:rem teilweise sichern
3700 print"[205]it dem folgenden kurzen [200]ilfsprogramm"
3720 print"ist es moeglich, zwei unabhaengige"
3740 print"[194][193][211][201][195]-[208]rogramme im [210]echner zu halten"
3760 print"und zwischen ihnen beliebig hin und "
3780 print"her zu schalten.":print
3800 print"[158][196]ieses [200]ilfsprogramm ist in [205]aschinen-"
3820 print"[211]prache geschrieben und teilt den "
3840 print"verfuegbaren [194][193][211][201][195]-[210][193][205]-[194]ereich in"
3860 print"zwei gleich grosse [212]eilbereiche auf.":print
3880 print"[196]a auch die [214]ariablen-[214]erwaltung nicht"
3900 print"vergessen wurde, koennen [211]ie wie gewohnt";
3920 print"in [194][193][211][201][195] programmieren.":print
3930 print"[158][196]ie [200]andhabung des [200]ilfsprogramms ist"
3935 print"denkbar einfach:"
3940 gosub5480:ifg$="m"org$="[205]"thenreturn
3960 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
3970 print"[158][211]ie laden das [200]ilfsprogramm vor [194]eginn"
3972 print"[201]hrer [194][193][211][201][195]-[208]rogrammierung als normales"
3975 print"[194][193][211][201][195]-[208]rogramm in den [210]echner":print
3977 print"[196]as [200]ilfsprogramm initialisiert sich"
3980 print"selbst und loescht danach auch die"
3982 print"eigenen [194][193][211][201][195]-[218]eilen":print
3985 print"[158][205]it dem [194]efehl [211][217][211] 36917[146] koennen"
3987 print"[211]ie nun innerhalb [201]hres [194][193][211][201][195]-[208]rogramms"
3990 print"zwischen den beiden [194]ereichen umschalten";:print
3992 print"[193]lle [193]nweisungen (z.[194].: [206][197][215]) beziehen"
3995 print"sich nun immer nur auf den aktivierten"
3997 print"[194]ereich":print
4000 print"[158][197]xperimentieren [211]ie ruhig einmal!!!"
4007 gosub5640:return
4080 :
4100 rem 4. hilfsprogramm
4120 poke50259,129:poke50260,061:poke50261,008:poke50262,063:rem uebergabe
4130 poke50257,24:rem teilweise sichern
4140 print"[158][194]eim [193]ustesten von [194][193][211][201][195]-[208]rogrammen kann";
4160 print"es hilfreich sein, den eigentlichen "
4180 print"[208]rogrammablauf kurz zu unterbrechen,"
4200 print"einige [208]rogramm-[218]eilen anzeigen zu"
4220 print"lassen und dann im [208]rogrammablauf"
4240 print"direkt fortzufahren.":print
4260 print"[196]as [200]ilfsprogramm ist als [213]nterprogramm"
4280 print"geschrieben und kann somit von jeder"
4300 print"[211]telle aus mit [199][207][211][213][194] 50000 angesprungen"
4320 print"werden.":print
4340 print"[158][215]enn das [200]ilfsprogramm aufgerufen wird,"
4360 print"erwartet es die [197]ingaben von [193]nfangs-"
4380 print"und [197]ndzeile. [196]er [218]eilenbereich wird"
4400 print"danach gelistet."
4410 gosub5480:ifg$="m"org$="[205]"thenreturn
4415 print"[147]";:f=8:gosub5360:z=5:s=0:gosub5960
4420 print"[196]urch druecken einer beliebigen [212]aste"
4440 print"wird das [200]auptprogramm mit dem naechsten";
4442 print"[194]efehl fortgesetzt.":print
4444 print"[158][215]enn [211]ie allerdings eine angezeigte"
4446 print"[218]eile veraendern wollen, muessen [211]ie das";
4448 print"[208]rogramm mit [210][213][206]/[211][212][207][208] unterbrechen.":print
4450 print"[213]m bei einem [206][197][213][211][212][193][210][212] den [196][193][212][197][206]-[214][197][210][204][213][211][212]"
4452 print"zu vermeiden, starten [211]ie einfach mit:":print
4454 print"[158] [199][207][212][207] [erste [218]eilen-[206]ummer]":print
4460 print"[206]atuerlich koennen [211]ie den [196][193][212][197][206]-[214][197][210][204][213][211][212]";
4462 print"nicht vermeiden, wenn [211]ie eine [218]eile":
4464 print"veraendert haben."
4495 gosub5640:return
4500 return
4520 :
5080 rem ****** unterprogramme ******
5100 :
5120 rem fenster fuer fliessDO
5140 z=16:s=0:gosub5960:print"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]";
5160 print"[221] [146][221]";
5180 print"[221] [146][221]";
5200 print"[221] [146][221]";
5220 print"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189]";:return
5240 :
5260 rem fliesstext
5280 t$="[160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160][160]"+t$:fori=1tolen(t$)-19:z=18:s=10:gosub5960
5300 print"[158]";mid$(t$,i,20):forz=0to100:nextz,i:return
5320 :
5340 rem ueberschrift setzen
5360 poke53280,f:poke53281,f
5380 print"[144][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]";:printa$(a)
5400 print"[175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175]";:return
5420 :
5440 :
5460 rem hinweiszeile
5480 z=24:s=0:gosub5960:print"[144][215]eiter = [215] [146] [205]enue = [205] [146]";
5500 fort=0to200:nextt
5510 getg$:ifg$=""then5540
5520 ifg$="m"org$="[205]"org$="w"org$="[215]"thengosub6000:goto5580
5530 gosub6100
5540 gosub5960:print"[144][215]eiter = [215] [205]enue = [205] ";
5560 fort=0to200:nextt:goto5480
5580 gosub5960:print" ";:return
5600 :
5620 rem hinweiszeile (ohne w)
5640 z=24:s=0:gosub5960:print"[144] [205]enue = [205] [146]";
5660 fort=0to200:nextt
5670 getg$:ifg$=""then5700
5680 ifg$="m"org$="[205]"thengosub6000:goto5740
5690 gosub6100
5700 gosub5960:print"[144] [205]enue = [205] ";
5720 fort=0to200:nextt:goto5640
5740 gosub5960:print" ";:return
5760 :
5780 rem hinweiszeile (ohne m)
5800 z=24:s=0:gosub5960:print"[144][215]eiter = [215] [146]";
5820 fort=0to200:nextt
5830 getg$:ifg$=""then5860
5840 ifg$="w"org$="[215]"thengosub6000:goto5900
5850 gosub6100
5860 gosub5960:print"[144][215]eiter = [215] ";
5880 fort=0to200:nextt:goto5800
5900 gosub5960:print" ";:return
5920 :
5940 rem cursor setzen
5960 poke214,z:poke211,s:sys58640:print"";:return
5970 :
5990 rem gueltige eingabe
6000 pokesi,59:pokesi+1,139:pokesi+6,240:pokesi+4,17
6010 pokesi+24,15:fort=0to100:nextt:pokesi+4,0:return
6020 :
6090 rem ungueltige eingabe
6100 pokesi,180:pokesi+1,8:pokesi+6,240:pokesi+4,17
6110 pokesi+24,15:fort=0to100:nextt:pokesi+4,0:return