home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er 1986 May
/
64er_Magazin_86-05_1986_Markt__Technik_de.d64
/
hypra-basic
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
6KB
|
190 lines
5 iffg<>0then10
7 fg=1:load"basic .ass",8,1
10 dima%(100):an=1:md=1:poke53280,0:poke53281,0:f=1:poke646,f:mp=12600
15 poke55,56:poke56,49
20 hl$=" "
30 h$="[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][192]"
40 rem****hauptmenue*******
50 printchr$(147)tab(9)" hauptmenue [146] hypra-basic":printh$:an=1:md=1
60 print"folgende optionen sind moeglich:":printh$:print
70 printtab(5)"[f1][146] erweiterung erstellen
80 [153][163]5)"[f3]wait erweiterung abspeichern
90 printtab(5)"[f5][146] parameter eingeben
100 [153][163]5)"[f7]wait parameter anzeigen"
110 [153][163]5)"[f2]wait protokoll":[153]:[153]h$
115 [153][163]10)"bitte waehlen sie !!"
120 [151]198,0:[146]198,1:[161]s$:s[178][198](s$)
130 [139]s[179]133[176]s[177]137[167]120
140 s[178]s[171]132
150 [145]s[141]210,410,600,800,11000
160 [137]50
200 [143]*****erweiterungerstellen***
210 [141]1010
220 [151]211,8:[151]214,0:[158]58640:[153]"sind sie sicher ? (j/n)"
230 [151]198,0:[146]198,1:[161]s$:[139]s$[179][177]"j"[176]an[178]0[167][142]
240 [141]10010
250 [153][199](147)"sie muessen jetzt zwei speicherbereiche"
260 [153]"auswaehlenen":[153]:[153]"1) bereich fuer befehlstabelle.dieser"
270 [153][163]3)"darf nur im 'normalen ram' liegen.
280 print:print"2) bereich fuer die erweiterung.hier
290 [153][163]3)"ist der speicherbereich beliebig.":[153]
292 [153]"falls beide programmteile nacheinander"
293 [153]"stehen sollen,bitte bei 'befehle' nur"
294 [153]"<return> druecken.":[153]h$
295 [153]"die befehlstabelle braucht";hg" bytes":[153]h$
300 [133]"1) tabelle:";sd$:sd[178][197](sd$):[139]sd[178]0[167]250
305 [153][163]12)sd[170]hg
310 [133]"on2) befehle:";ma$:ma[178][197](ma$):ms[178]ma
320 [139]ma[178]0[167][142]
330 [153][199](147)"erweiterung wird generiert":[153]
340 la[178]sd[170]162[170]ha:[141]10410
350 [129]ki[178]1[164]an:mo%[178]a%(ki):[153]mo%,
360 hm[178][181](mo%[173]70)[170]1:[139]md[179][177]hm[167][141]10210
370 [141]10660:[130]:[142]
400 [143]*****programmabspeichern**
410 [153][199](147)[163]10)"erweiterung speichern":[153]h$
420 [153]"beim abspeichern koennen zwei verschie- dene";
430 [153]" files abgelegt werden.":[153]
440 [153]"1) befehlstabelle"
450 [153]"2) module":[153]
460 [153]"dies ist erforderlich,wenn beide pro-"
470 [153]"grammteile unabhaengig voneinander
480 print"existieren. falls sie beide programme"
490 print"gemeinsam generiert haben, geben sie un-";
500 print"ter module einen leerstring ein.":printh$
510 input"tabelle:";na$
520 input"befehle:";nb$:printh$
525 print"sind sie sicher,dass die richtige dis- "
527 print"kette im laufwerk ist? (j/n)"
528 poke198,0:wait198,1:geta$:ifa$="n"thenreturn
530 ifnb$=""thensys(mp+362)"@:"+na$,8,sd,ma+1:return
540 sys(mp+362)"@:"+na$,8,sd,bt+1
550 sys(mp+229)ms,ma+1,mp+2000
560 close1:open1,8,1,"@:"+nb$:print#1,chr$(ms-int(ms/256)*256);chr$(ms/256);
570 n=ma+1-ms
580 fori=0ton-1:print#1,chr$(peek(mp+2000+i));:next:close1
590 return
600 rem*******parametereingeben***
610 printchr$(147)tab(10)"parameter eingeben":printh$
615 input"modulnummer :";mo$
620 input"wieviele befehle:";ab
630 printh$
640 fori=1toab
650 poke211,0:poke214,5:sys58640:printi"[157]) ";:input"name:";na$(i):printh$
660 input" startadresse:";as$(i)
670 input" endadresse :";ae$(i)
680 input" datenbytes :";ad$(i)
690 printh$:next
700 printtab(10)"sind sie sicher (j/n)"
710 poke198,0:wait198,1:geta$:ifa$="n"thenreturn
720 close1:open1,8,1,"@:"+mo$+"modul,s"
730 print#1,str$(ab)
740 fori=1toab:print#1,na$(i):print#1,as$(i):print#1,ae$(i):print#1,ad$(i)
750 next:close1:return
800 rem******parameteranzeigen****
810 printchr$(147)tab(10)"parameter anzeigen":printh$
820 input"von modulnummer:";m1
830 input"bis modulnummer:";m2:printh$
840 fork=m1tom2:poke214,5:sys58640
845 fori=1to15:printhl$:next
850 poke211,0:poke214,5:sys58640
860 mo%=k:gosub10530:print"modulnummer:"k:print"anzahl der befehle:"ab:printh$
870 fori=1toab
880 poke214,9:sys58640:printi"[157]) name:"na$(i);left$(hl$,10):print
890 print"startadresse:"as(i);left$(hl$,10)
900 print"endadresse :"ae(i);left$(hl$,10)
910 print"datenbytes :"ad(i);left$(hl$,10)
930 printh$:printtab(6)"weiter mit beliebiger taste"
940 poke198,0:wait198,1:next:next:return
999 end
1000 rem*****moduleauswaehlen*****
1010 printchr$(147)tab(10)"module auswaehlen!"
1020 printh$
1040 print"bitte modulnummern eingeben:"
1050 printh$
1060 fori=1to19:printhl$:next
1070 printh$:printtab(5)" e [146] = ende f [146] = fehler";
1080 poke211,30:poke214,2:sys58640:poke19,1:inputmn$:poke19,0:print
1090 ifleft$(mn$,1)="e"thenan=an-1:return
1100 ifleft$(mn$,1)="f"andan>1thenan=an-1:mn$=" ":goto1130
1110 iflen(mn$)>3orval(mn$)=0then1080
1120 a%(an)=val(mn$)
1130 z=int(an/10)+4:s=(an-(z-4)*10)*4:poke211,s:poke214,z:sys58640:printmn$
1150 ifmn$<>" "thenan=an+1
1160 goto1080
10000 rem****laengedecodebestimmen*
10010 hg=0:ha=0:ab=0:zb=0:forji=1toan
10015 hm=int(a%(ji)/70)+1:ifhm<>mdthengosub10210
10020 close1:open1,8,0,mid$(str$(a%(ji)),2,4)+"modul,s"
10030 input#1,a$:h=val(a$):zb=zb+h
10040 forj=1toh
10050 input#1,h1$,h2$(j),h3$(j),h4$(j):ha=ha+len(h1$)+6
10060 next
10070 hb=(val(h3$(h))+val(h4$(h)))-val(h2$(1)):ifhb>hgthenhg=hb
10090 close1:next
10100 hg=int((hg/256)+1)*256:hg=hg+ha+170:return
10200 rem****moduldiskausgeben****
10210 h1=peek(211):h2=peek(214)
10212 forx=1984to2023:pokex-1156,peek(x):pokex,32:x1=x1+1:next
10215 poke211,0:poke214,24:sys58640
10220 printtab(3)"[152]bitte moduldisk nr."hm" einlegen! ";
10230 md=hm:poke646,f:poke198,0:wait198,1
10240 forx=1984to2023:pokex,peek(x-1156):pokex+54272,f:next:poke211,h1
10250 poke214,h2:sys58640:return
10300 rem******programmladen*****
10310 hi=int(la/256):lo=la-256*hi
10330 sys(57812)na$,8,0:poke780,0:poke781,lo:poke782,hi:sys65493
10340 return
10400 rem******decoderoutineholen**
10410 h=la:la=sd:sys(mp+229)13025,13184,sd
10430 la=h:h=sd+11:hi=int(h/256):lo=h-256*hi:pokesd+1,lo:pokesd+6,hi
10440 h=sd+161:hi=int(h/256):lo=h-256*hi:pokesd+25,lo:pokesd+29,hi
10460 hi=int(la/256):lo=la-256*hi:pokesd+103,lo:pokesd+107,hi
10470 pokela-1,0:bt=sd+161:return
10500 rem*****parameterladen*****
10530 fl$=mid$(str$(mo%)+"modul,s,r",2,13)
10540 close2:open2,8,2,fl$
10550 input#2,a$:ab=val(a$)
10560 forji=1toab:input#2,na$(ji):input#2,a$:as(ji)=val(a$)
10570 input#2,a$:ae(ji)=val(a$)
10580 input#2,a$:ad(ji)=val(a$)
10590 next
10600 close2:return
10610 rem****befehlstabellebearbeiten**
10615 yy=len(na$(i)):pokebt,yy
10620 fork=1toyy:pokebt+k,asc(mid$(na$(i),k,1)):next:bt=bt+k
10630 hi=int(pz/256):lo=pz-256*hi:pokebt,lo:pokebt+1,hi
10635 hi=int(ma/256):lo=ma-256*hi:pokebt+2,lo:pokebt+3,hi
10636 le=ae(ab)+ad(ab)-as(1):pokebt+4,int(le/256):bt=bt+5
10640 return
10650 rem**********verschieb**********
10660 gosub10530:a$=str$(mo%)+"erw .ass":na$=mid$(a$,2,13):gosub10310:pz=la
10670 n1=pz:fori=1toab:gosub10610:n=as(i)
10680 sysmp,pz:a=peek(247)
10690 ifa<>3then10740
10700 a1=peek(249)+256*peek(250)
10710 ifa1<as(1)ora1>ae(ab)+ad(ab)then10750
10720 a1=a1-as(1):a1=n1+a1:hi=int(a1/256):lo=a1-256*hi
10730 pokepz+1,lo:pokepz+2,hi
10740 ifa=0thena=1
10750 pz=pz+a:n=n+a:ifn<>ae(i)+1then10680
10760 pz=pz+ad(i):next
10770 sys(mp+229)la,pz,ma
10780 ma=ma+le+1:return
11000 rem******protokoll********
11010 printchr$(147)tab(12)"protokoll":printh$
11020 gn=3
11025 close1:open1,gn
11030 print#1,"erweiterung hypra-basic version 1.1":print#1,h$
11040 print#1,"anzahl der befehle: ";zb
11050 print#1,"startadresse befehlstabelle:";sd
11060 print#1,"startadresse der module: ";ms:print#1,h$
11070 print#1,"bytes fuer tabelle: ";hg
11080 print#1,"bytes fuer befehle: ";ma-ms:print#1,h$
11082 print#1,"die erweiterung enthaelt folgende module":print#1
11085 fori=1toki-1:print#1,a%(i);:next:print#1
11090 iffk=1thenfk=0:gn=3:close1:return
11100 print#1,h$:print#1," ausgabe auf drucker (j/n)"
11110 poke198,0:wait198,1:geta$:ifa$="n"thenclose1:return
11120 gn=4:fk=1:close1:goto11025