home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Commodore Disc 38
/
Commodore_Disc_38_19xx_-_de.d64
/
datver.64
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
5KB
|
180 lines
10 rem datenverwaltung==============c64
20 rem by alfons mittelmeyer
30 rem
40 rem c64
50 rem basic v2.0
60 rem ================================
70 if peek(49154)=174then100
80 sys57812"sysmc",8,0:poke780,0
90 poke781,254:poke782,191:sys65493
100 poke53281,0:poke53280,0:printchr$(14);:gosub880:printcl$;:gosub170
110 printg$;:syssf:printchr$(14);
120 printcl$;:gosub770:gosub820
130 gosub1360:gosub1420:gosub1820:goto120
140 rem -----------------------------
150 rem laden
160 rem -----------------------------
170 print"[196]ateiname? ";:sysin:vw$
180 open8,8,8,vw$+",p,r":input#8,mf$,mf$,df$:close8
190 open8,8,8,mf$+",p,r":input#8,a$,fz,tz:fz=fz-1:tz=tz-1
200 dimtx%(tz),ty%(tz),tz$(tz),fx%(fz),fy%(fz),fz%(fz)
210 gosub300:fori=0totz:sysin:tx%(i):sysin:ty%(i):sysin:tz$(i):next
220 fori=0tofz:inputfx%(i),fy%(i),fz%(i):next:gosub310
230 open8,8,8,df$+",p,r":input#8,a$,a,mz,sz
240 mz=mz-1:nz=sz:sz=sz-1
250 iffz+1<>athenclose8:end
260 dimf$(mz,fz):dimz%(mz):if sz<0 then 290
270 gosub300:forj=0tosz:fori=0tofz
280 sysin:f$(j,i):next:z%(j)=j:next
290 gosub310:z=0:return
300 poke19,8:poke781,8:sys65478:return
310 close8:sys65484:poke19,0:return
320 (NULL)
330 rem ------------------------
340 rem speichern
350 rem ------------------------
360 open8,8,8,fi$+",p,w":print#8,chr$(1)chr$(1)chr$(0)chr$(0)
370 print#8,fz+1:print#8,mz+1:print#8,sz+1:ifsz=0then400
380 forj=0tosz
390 fori=0tofz:print#8,f$(z%(j),i):next:next
400 close8:return
410 rem ------------------------
420 rem vorwaerts
430 rem ------------------------
440 z=z+1:ifz>szthenz=z-1
450 goto820
460 rem ------------------------
470 rem rueckwaerts
480 rem ------------------------
490 z=z-1:ifz<0thenz=0
500 goto820
510 rem ------------------------
520 rem loeschen
530 rem ------------------------
540 ifz>szthenreturn
550 sz=sz-1:ifz>szthenz%(z)=nz:return
560 fori=ztosz:z%(i)=z%(i+1):next
570 return
580 rem ------------------------
590 rem einsortieren
600 rem ------------------------
610 ifsz=0thenreturn
620 z=0:a=z%(sz):vw$=f$(a,0):fori=sz-1to0step-1
630 iff$(z%(i),0)<=vw$thenz=i+1:i=0:goto650
640 z%(i+1)=z%(i)
650 next:z%(z)=a:return
660 rem ------------------------
670 rem suchen
680 rem ------------------------
690 ug=0:og=sz
695 fori=0to1step0
700 if og=<ugtheni=1:goto730
710 z=int((ug+og)/2)
720 ifvw$<=f$(z%(z),0)thenog=z:next
725 ug=z+1
730 next:z=ug:return
740 rem -------------------------
750 rem textausgabe
760 rem -------------------------
770 for i=0 to tz:sysat,tx%(i),ty%(i):printtz$(i);:next
780 return
790 rem -------------------------
800 rem feldausgabe
810 rem -------------------------
820 for i=0 to fz:sysat,fx%(i),fy%(i):print"<";
830 printw$left$(f$(z%(z),i)+left$(le$,fz%(i)),fz%(i))g$">";
840 next:return
850 rem -------------------------
860 rem variablendefinition
870 rem -------------------------
880 le$=" ":le$=le$+le$
890 le$=le$+le$:cl$=chr$(147)
900 in=49465:at=49152:wo=49172:ef=49337
910 sf=49482:so=49497
920 w$=chr$(5):g$=chr$(153):return
1100 rem -----------------------
1110 rem maskeneingabe
1120 rem -----------------------
1130 for i=0tofz
1140 gosub 1230
1150 on n goto 1190,1170
1160 next:return
1170 ifi>0theni=i-1
1180 goto1140
1190 i=fz:goto1160
1200 rem -----------------------
1210 rem feldeingabe
1220 rem -----------------------
1230 sysat,fx%(i)+1,fy%(i)
1240 printw$;
1250 sysef,fz%(i),n,f$(z%(z),i)
1310 printg$;
1320 return
1330 rem -------------------------
1340 rem menue
1350 rem -------------------------
1360 sysat,0,23:print"e = erfassen, a = aendern, l = loeschen";
1370 sysat,0,24:print"s = suchen, d=druck";
1380 return
1390 rem ------------------------
1400 rem auswahl
1410 rem ------------------------
1420 getta$:ifta$=""then1420
1430 syswo,ta$,"ealsd[145]",n
1440 ifta$=chr$(3)thenreturn
1450 on n gosub 1500,1680,1610,1560,1760,440,490
1460 goto 1420
1470 rem ------------------------
1480 rem erfassen
1490 rem ------------------------
1500 if nz=mz+1thensysat,0,22:print"[211]peicher ist voll !";:return
1510 sz=sz+1:z=sz:z%(z)=nz:nz=nz+1
1520 gosub820:gosub1130:goto610
1530 rem ------------------------
1540 rem suchen
1550 rem ------------------------
1560 sysat,0,22:print"[211]uchbegriff: ";:sysin:vw$
1570 sysat,0,22:printleft$(le$,39);:gosub690:goto820
1580 rem ------------------------
1590 rem loeschen
1600 rem ------------------------
1610 sysat,0,22:print"[215]irklich loeschen j/n?";
1615 getta$:ifta$=""then1615
1620 sysat,0,22:printleft$(le$,25);
1630 ifta$<>"j"thenreturn
1640 gosub540:goto820
1650 rem ------------------------
1660 rem aendern
1670 rem ------------------------
1680 if z>szthen1500
1690 vw$=f$(z%(z),0):gosub1130
1700 ifvw$=f$(z%(z),0)thenreturn
1710 dz=z%(z):gosub540:sz=sz+1
1720 z=sz:z%(z)=dz:goto610
1730 rem ------------------------
1740 rem drucken
1750 rem ------------------------
1760 open4,4,7:poke781,4:sys65481
1761 if (peek(783)and1)=1then1780
1762 fori=0tofz
1770 printf$(z%(z),i)
1779 next:print#4
1780 sys65484:close4:return
1790 rem ------------------------
1800 rem sichern? ende?
1810 rem ------------------------
1820 printcl$"[196]aten speichern j/n?"
1830 getta$:ifta$=""then1830
1840 ifta$="n"then1880
1850 if ta$<>"j"then1830
1860 sysat,0,2:print"[198]ilename? @:"df$;
1870 sysat,10,2:sysin:fi$:gosub360
1880 printcl$"[208]rogramm beenden j/n?";
1890 getta$:ifta$=""then1890
1900 ifta$="j"thensysso:printchr$(142);:end
1910 ifta$<>"n"then1890
1920 return
1930 rem ==============================
1940 rem p r o g r a m m e n d e
1950 rem ==============================