Subversion Repositories pentevo

Rev

Rev 792 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ; LAST UPDATE: 11.02.2025 savelij
  3.  
  4. SUPPORT_EXT     DB "TRD"
  5.                 DB "SCL"
  6.                 DB "FDI"
  7.                 DB "TAP"
  8.                 DB "SPG"
  9.                 DB "$C "
  10.                 DB "FNT"
  11.                 DB "BMP"
  12.                 DB "ROM"
  13.                 DB 0
  14.  
  15. SYMS4SORT       DB ".!#$%&'()-0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ^_`{}~",0x7F
  16.                 DB "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯЁ",0
  17.  
  18. ; сортировка списка найденных директорий/файлов
  19. SORT_FINDFILES  LD HL,(KOL_FOUNDED)
  20.                 LD A,H
  21.                 OR L
  22.                 RET Z                           ; выход если ничего не найдено
  23.                 DEC HL
  24.                 LD A,H
  25.                 OR L
  26.                 RET Z                           ; выход если директория/файл только 1
  27.         EVOPORT WIN_P3,RAM_SORTFILES
  28.                 LD HL,CPU3+0x1000               ; адрес первых символов
  29.                 LD DE,0x1000
  30.                 LD BC,SYMS4SORT
  31.                 EXX
  32.                 LD HL,CPU3+0x2000               ; адрес куда складировать сортированное
  33.                 LD BC,(FATVAR.KOLFIND)
  34.                 EXX
  35. ; первый проход для директорий
  36. SORTIR03        LD A,(HL)
  37.                 AND M_DIR_Directory
  38.                 JR Z,SORTIR01
  39.                 INC HL
  40.                 LD A,(BC)
  41.                 CP (HL)
  42.                 DEC HL
  43.                 JR NZ,SORTIR01
  44.                 SBC HL,DE                       ; переход к номерам
  45.                 LD A,(HL)
  46.                 INC HL
  47.                 EXX
  48.                 LD (HL),A
  49.                 INC HL
  50.                 EXX
  51.                 LD A,(HL)
  52.                 INC HL
  53.                 EXX
  54.                 LD (HL),A
  55.                 INC HL
  56.                 DEC BC
  57.                 LD A,B
  58.                 OR C
  59.                 EXX
  60.                 JR Z,SORTIR05                   ; если кончилось то тоже самое для файлов
  61.                 ADD HL,DE                       ; возврат к флагам и именам
  62.                 JR SORTIR03
  63.  
  64. ; не директория, следующая пара
  65. SORTIR01        INC HL
  66.                 INC HL
  67.                 EXX
  68.                 DEC BC
  69.                 LD A,B
  70.                 OR C
  71.                 EXX
  72.                 JR NZ,SORTIR03
  73. SORTIR05        EXX
  74.                 LD BC,(FATVAR.KOLFIND)
  75.                 EXX
  76.                 LD HL,CPU3+0x1000
  77.                 INC BC
  78.                 LD A,(BC)
  79.                 AND A
  80.                 JR NZ,SORTIR03
  81.                 LD BC,SYMS4SORT
  82.                 LD HL,CPU3+0x1000
  83. ; второй проход для файлов
  84. SORTIR02        LD A,(HL)
  85.                 AND M_DIR_Directory
  86.                 JR NZ,SORTIR04
  87.                 INC HL
  88.                 LD A,(BC)
  89.                 CP (HL)
  90.                 DEC HL
  91.                 JR NZ,SORTIR04
  92.                 SBC HL,DE
  93.                 LD A,(HL)
  94.                 INC HL
  95.                 EXX
  96.                 LD (HL),A
  97.                 INC HL
  98.                 EXX
  99.                 LD A,(HL)
  100.                 INC HL
  101.                 EXX
  102.                 LD (HL),A
  103.                 INC HL
  104.                 DEC BC
  105.                 LD A,B
  106.                 OR C
  107.                 EXX
  108.                 JR Z,SORTIR07
  109.                 ADD HL,DE
  110.                 JR SORTIR02
  111.  
  112. SORTIR04        INC HL
  113.                 INC HL
  114.                 EXX
  115.                 DEC BC
  116.                 LD A,B
  117.                 OR C
  118.                 EXX
  119.                 JR NZ,SORTIR02
  120. SORTIR07        EXX
  121.                 LD BC,(FATVAR.KOLFIND)
  122.                 EXX
  123.                 LD HL,CPU3+0x1000
  124.                 INC BC
  125.                 LD A,(BC)
  126.                 AND A
  127.                 JR NZ,SORTIR02
  128.                 LD HL,CPU3+0x2000
  129.                 LD DE,CPU3
  130.                 LD BC,0x1000
  131.                 LDIR
  132.                 RET
  133.