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 >
Commodore BASIC  |  2022-10-26  |  2KB  |  87 lines

  1. 100 rem directory-sorter
  2. 101 rem sortiert directory alphabetisch
  3. 102 rem bei vielen eintraegen bitte
  4. 103 rem etwas geduld (max. 5.min)
  5. 104 rem sortiert auch gescratchte files
  6. 105 rem mit, stellt sie aber nicht
  7. 106 rem wieder her ! sortieralgorithmus
  8. 107 rem kann sich in einem solchen fall
  9. 108 rem in einer endlosschleife ver-
  10. 109 rem heddern. abhilfe: nach 3-4 min.
  11. 110 rem stop-taste druecken, dann
  12. 111 rem goto 210 eingeben. sind eintr.
  13. 112 rem dann noch nicht vollkommen sor-
  14. 113 rem tiert, nochmals fuer einige
  15. 114 rem minuten laufen lassen.
  16. 115 rem achtung !!! nur zusammen mit
  17. 116 rem den unterprogrammen 1 & 2
  18. 117 rem ablauffaehig !!!
  19. 118 :
  20. 119 :
  21. 120 dimdd$(144)
  22. 130 mm=mm+1:gosub1000
  23. 140 if dd$=nn$thenmm=mm-1:goto160
  24. 150 dd$(mm)=dd$:dd$="":goto130
  25. 160 for gg=1tomm-1
  26. 170 if mid$(dd$(gg),4,16)<mid$(dd$(gg+1),4,16)then 190
  27. 180 hh$=dd$(gg):dd$(gg)=dd$(gg+1):dd$(gg+1)=hh$:ff=1
  28. 190 next gg
  29. 200 if ff then ff=0:goto160
  30. 210 ii=mm
  31. 220 formm=1toii:dd$=dd$(mm):gosub2000:nextmm
  32. 230 end
  33. 1000 rem unterprogramm 1
  34. 1001 rem lesen eines eintrages aus dem
  35. 1002 rem directory (alle 30 bytes !!!)
  36. 1003 rem in die variable dd$
  37. 1004 rem uebergabeparameter:
  38. 1005 rem mm=nummer des eintrages der
  39. 1006 rem    gelesen werden soll
  40. 1007 :
  41. 1008 :
  42. 1009 :
  43. 1010 open 15,8,15,"i":open8,8,8,"#"
  44. 1020 nn$="":fori=1to30:nn$=nn$+chr$(0):nexti
  45. 1030 xx=int((mm-1)/8)
  46. 1040 print#15,"u1 8 0 18 0"
  47. 1050 forzz=1toxx+1
  48. 1060 print#15,"b-p 8 0"
  49. 1070 get#8,tt$:tt=asc(tt$+chr$(0))
  50. 1080 get#8,ss$:ss=asc(ss$+chr$(0))
  51. 1090 if tt=0 then dd$=nn$:goto1170
  52. 1100 print#15,"u1 8 0";tt;ss
  53. 1110 nextzz
  54. 1120 pp=mm-(xx*8):pp=(pp-1)*32+2
  55. 1130 print#15,"b-p 8";pp
  56. 1140 forzz=1 to 30:get#8,zz$
  57. 1150 ifzz$=""thenzz$=chr$(0)
  58. 1160 dd$=dd$+zz$:nextzz
  59. 1170 close 8:close 15
  60. 1180 return
  61. 2000 rem unterprogramm 2
  62. 2001 rem schreiben eines eintrages in
  63. 2002 rem das directory (30 bytes !!!)
  64. 2003 rem uebergabeparameter:
  65. 2004 rem mm=nummer des eintrages der
  66. 2005 rem    geschrieben werden soll
  67. 2006 rem dd$=directoryeintrag
  68. 2007 :
  69. 2008 :
  70. 2009 :
  71. 2010 open 15,8,15,"i":open8,8,8,"#"
  72. 2020 xx=int((mm-1)/8)
  73. 2030 print#15,"u1 8 0 18 0"
  74. 2040 forzz=1toxx+1
  75. 2050 print#15,"b-p 8 0"
  76. 2060 get#8,t$:tt=asc(t$+chr$(0))
  77. 2070 get#8,s$:ss=asc(s$+chr$(0))
  78. 2080 if tt=0 then 2150
  79. 2090 print#15,"u1 8 0";tt;ss
  80. 2100 nextzz
  81. 2110 pp=mm-(xx*8):pp=(pp-1)*32+2
  82. 2120 print#15,"b-p 8";pp
  83. 2130 print#8,dd$;
  84. 2140 print#15,"u2 8 0";tt;ss
  85. 2150 close 8:close 15
  86. 2160 return
  87.