home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
64'er Special 83
/
64er_Magazin_Sonderheft_83_19xx_Markt__Technik_de_Side_B.d64
/
dir-sorter
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
2022-10-26
|
2KB
|
87 lines
100 rem directory-sorter
101 rem sortiert directory alphabetisch
102 rem bei vielen eintraegen bitte
103 rem etwas geduld (max. 5.min)
104 rem sortiert auch gescratchte files
105 rem mit, stellt sie aber nicht
106 rem wieder her ! sortieralgorithmus
107 rem kann sich in einem solchen fall
108 rem in einer endlosschleife ver-
109 rem heddern. abhilfe: nach 3-4 min.
110 rem stop-taste druecken, dann
111 rem goto 210 eingeben. sind eintr.
112 rem dann noch nicht vollkommen sor-
113 rem tiert, nochmals fuer einige
114 rem minuten laufen lassen.
115 rem achtung !!! nur zusammen mit
116 rem den unterprogrammen 1 & 2
117 rem ablauffaehig !!!
118 :
119 :
120 dimdd$(144)
130 mm=mm+1:gosub1000
140 if dd$=nn$thenmm=mm-1:goto160
150 dd$(mm)=dd$:dd$="":goto130
160 for gg=1tomm-1
170 if mid$(dd$(gg),4,16)<mid$(dd$(gg+1),4,16)then 190
180 hh$=dd$(gg):dd$(gg)=dd$(gg+1):dd$(gg+1)=hh$:ff=1
190 next gg
200 if ff then ff=0:goto160
210 ii=mm
220 formm=1toii:dd$=dd$(mm):gosub2000:nextmm
230 end
1000 rem unterprogramm 1
1001 rem lesen eines eintrages aus dem
1002 rem directory (alle 30 bytes !!!)
1003 rem in die variable dd$
1004 rem uebergabeparameter:
1005 rem mm=nummer des eintrages der
1006 rem gelesen werden soll
1007 :
1008 :
1009 :
1010 open 15,8,15,"i":open8,8,8,"#"
1020 nn$="":fori=1to30:nn$=nn$+chr$(0):nexti
1030 xx=int((mm-1)/8)
1040 print#15,"u1 8 0 18 0"
1050 forzz=1toxx+1
1060 print#15,"b-p 8 0"
1070 get#8,tt$:tt=asc(tt$+chr$(0))
1080 get#8,ss$:ss=asc(ss$+chr$(0))
1090 if tt=0 then dd$=nn$:goto1170
1100 print#15,"u1 8 0";tt;ss
1110 nextzz
1120 pp=mm-(xx*8):pp=(pp-1)*32+2
1130 print#15,"b-p 8";pp
1140 forzz=1 to 30:get#8,zz$
1150 ifzz$=""thenzz$=chr$(0)
1160 dd$=dd$+zz$:nextzz
1170 close 8:close 15
1180 return
2000 rem unterprogramm 2
2001 rem schreiben eines eintrages in
2002 rem das directory (30 bytes !!!)
2003 rem uebergabeparameter:
2004 rem mm=nummer des eintrages der
2005 rem geschrieben werden soll
2006 rem dd$=directoryeintrag
2007 :
2008 :
2009 :
2010 open 15,8,15,"i":open8,8,8,"#"
2020 xx=int((mm-1)/8)
2030 print#15,"u1 8 0 18 0"
2040 forzz=1toxx+1
2050 print#15,"b-p 8 0"
2060 get#8,t$:tt=asc(t$+chr$(0))
2070 get#8,s$:ss=asc(s$+chr$(0))
2080 if tt=0 then 2150
2090 print#15,"u1 8 0";tt;ss
2100 nextzz
2110 pp=mm-(xx*8):pp=(pp-1)*32+2
2120 print#15,"b-p 8";pp
2130 print#8,dd$;
2140 print#15,"u2 8 0";tt;ss
2150 close 8:close 15
2160 return