Subversion Repositories pentevo

Rev

Rev 585 | Rev 643 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LAST UPDATE: 03.12.2012 savelij
  3.  
  4. FILE_BROWSER    DI
  5.                 LD IYL,INTERNAL
  6.                 PCALL DEVFIND,P_RST8            ;ПОИСК УСТРОЙСТВ ЕСЛИ НЕ БЫЛИ НАЙДЕНЫ
  7.                 LD A,E
  8.                 AND A
  9.                 JR NZ,FILEBROWSE1
  10. ;ЕСЛИ НИ ОДНОГО УСТРОЙСТВА НЕ НАЙДЕНО, ТО ВЫВОДИМ ОШИБКУ
  11.                 LD IX,DEV_NOTFOUND
  12. ERROR           EVOPORT WIN_A1,P_ADDON1
  13.                 CALL ITWINW
  14.                 CALL ANY_KEYS
  15.                 JP RESTART_MAIN
  16.  
  17. FILEBROWSE1     DI
  18.                 EVOPORT WIN_A1,P_ADDON1
  19.                 LD HL,FILES_EXT_ALL
  20.                 LD DE,EXT4FOUND
  21.                 LD BC,EFILES_EXT-FILES_EXT
  22.                 LDIR                            ;УСТАНОВКА МАСКИ РАСШИРЕНИЙ ДЛЯ ПОИСКА
  23.                 PCALL FIND_FILEITEM,P_RST8      ;ПОИСК
  24.                 LD A,B
  25.                 OR C                            ;ЗДЕСЬ КОЛИЧЕСТВО НАЙДЕННЫХ ОПИСАТЕЛЕЙ В HL
  26.                 JR NZ,SEARCHF1
  27.                 LD IX,NOFILES
  28.                 JR ERROR
  29.  
  30. SEARCHF1        PUSH BC
  31.                 PCALL SORT_FINDFILES,P_RST8
  32.                 EVOPORT WIN_A1,P_ADDON1
  33.                 LD IX,LEGEND_EXT
  34.                 CALL ITWINW
  35.                 POP BC
  36. FBR00           PUSH BC
  37.                 LD IX,FILESBROWSER
  38.                 CALL ITWINW
  39.                 EVOPORT WIN_P3,PAGE_TEMP
  40.                 POP BC
  41.                 BIT 7,(IX+7)
  42.                 JR NZ,FBR02
  43.                 LD (IX+0X0A),C
  44.                 LD (IX+0X0B),B                  ;КОЛИЧЕСТВО ПУНКТОВ
  45.                 LD L,(IX+8)
  46.                 LD H,(IX+9)                     ;ПОЛУЧИЛИ НОМЕР ТЕКУЩЕЙ ПОЗИЦИИ
  47.                 LD E,(IX+7)                     ;ПОЛУЧИЛИ ПОЗИЦИЮ КУРСОРА В ОКНЕ
  48.                 JR FBR06
  49.  
  50. FBR02           LD L,(IX+8)
  51.                 LD H,(IX+9)
  52.                 LD A,(HL)
  53.                 INC HL
  54.                 LD E,(HL)
  55.                 INC HL
  56.                 LD D,(HL)
  57.                 INC HL
  58.                 LD (HL),C
  59.                 INC HL
  60.                 LD (HL),B
  61.                 EX DE,HL
  62.                 LD E,A
  63. FBR06           XOR A
  64.                 LD D,A
  65.                 SBC HL,DE                       ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ФАЙЛА С КОТОРОГО БУДЕМ ВЫВОДИТЬ
  66.                 LD DE,CPU3
  67.                 ADD HL,HL
  68.                 ADD HL,DE
  69.                 LD D,(IX+0)
  70.                 LD E,(IX+1)
  71.                 INC D
  72.                 INC E                           ;ВЫЧИСЛИЛИ ПОЗИЦИЮ ВЫВОДА НА ЭКРАН
  73.                 LD A,C
  74.                 CP V_FILES-2
  75.                 JR C,OTF2
  76.                 LD C,V_FILES-2
  77. OTF2            PUSH BC
  78.                 LD C,(HL)
  79.                 INC HL
  80.                 LD B,(HL)
  81.                 INC HL
  82.                 PUSH HL
  83.                 PUSH DE
  84.                 PCALL POSTF06,P_RST8
  85.                 LD HL,BUF_256
  86.                 PCALL READ_DIR,P_RST8
  87.                 LD DE,FILES_EXT
  88.                 PCALL CP_EXT,P_RST8
  89.                 EX AF,AF'
  90.                 POP DE
  91.                 PUSH DE
  92.                 LD BC,0X0B
  93.                 ADD HL,BC
  94.                 LD A,(HL)
  95.                 SBC HL,BC
  96.                 AND 0X10
  97.                 LD A,BLUE<<3+WHITE+BR_INK
  98.                 LD (OUT_NAME_FILE+1),A          ;ЕСЛИ ДИРЕКТОРИЯ ТО ЦВЕТ БЕЛЫЙ
  99.                 JR NZ,OTF9
  100.                 EX AF,AF'
  101.                 LD L,A
  102.                 INC A
  103.                 JR Z,OTF8
  104.                 LD A,L
  105. OTF8            LD HL,COLOR_EXT
  106.                 ADD A,L
  107.                 LD L,A
  108.                 ADC A,H
  109.                 SUB L
  110.                 LD A,(HL)
  111.                 ADD A,BLUE<<3+BR_INK
  112.                 LD (OUT_NAME_FILE+1),A
  113. OTF9            LD HL,BUF_256
  114.                 PCALL GET_LONGNAME,P_RST8
  115.                 POP DE
  116.                 PUSH DE
  117.                 CALL FILENAME8_3
  118.                 POP DE
  119.                 POP HL
  120.                 POP BC
  121.                 INC E
  122.                 DEC C
  123.                 JR NZ,OTF2
  124.                 EVOPORT WIN_P3,VMODE7_0
  125.                 JP SET_ADR_ATR
  126.  
  127. FILENAME8_3     LD C,A
  128.                 LD B,0
  129.                 EX DE,HL
  130.                 LD (OUT_NAME_FILET),HL
  131.                 LD HL,BUF_256
  132.                 LD A,H_FILES-3
  133.                 CP C
  134.                 JR Z,OTF7
  135.                 JR NC,OTF6
  136.                 EX DE,HL
  137.                 LD HL,H_FILES-3
  138.                 ADD HL,DE
  139.                 LD (HL),">"
  140.                 INC HL
  141.                 LD (HL),0
  142.                 JR OTF7
  143.  
  144. OTF6            SUB C
  145.                 ADD HL,BC
  146.                 LD C,A
  147.                 LD D,H
  148.                 LD E,L
  149.                 INC DE
  150.                 LD (HL)," "
  151.                 LDIR
  152.                 XOR A
  153.                 LD (DE),A
  154. OTF7            LD HL,OUT_NAME_FILE
  155.                 CALL ITPRINT_MESSAGE
  156.                 LD HL,BUF_256
  157.                 JP ITPRINT_MESSAGE
  158.  
  159. ;ВЫБОР ФАЙЛА ИЛИ ХОЖДЕНИЕ ПО ДИРЕКТОРИЯМ
  160. SELECT_FILE     DI
  161.                 EVOPORT WIN_P3,PAGE_TEMP
  162.                 LD L,(IX+8)
  163.                 LD H,(IX+9)                     ;ВЗЯЛИ НОМЕР ФАЙЛА/ДИРЫ ИЛИ АДРЕС ГДЕ ЭТО ЛЕЖИТ
  164.                 BIT 7,(IX+7)
  165.                 JR Z,SELFILES01
  166.                 INC HL
  167.                 LD E,(HL)
  168.                 INC HL
  169.                 LD D,(HL)                       ;ЕСЛИ АДРЕС ТО ИЗВЛЕКЛИ ОТТУДА НОМЕР
  170.                 EX DE,HL
  171. SELFILES01      LD DE,CPU3
  172.                 ADD HL,HL
  173.                 ADD HL,DE
  174.                 LD C,(HL)
  175.                 INC HL
  176.                 LD B,(HL)                       ;ВЗЯЛИ РЕАЛЬНЫЙ НОМЕР ФАЙЛА/ДИРЫ
  177.                 PCALL POSTF06,P_RST8            ;УСТАНОВИЛИ ПОЗИЦИЮ
  178.                 LD HL,BUF_256
  179.                 PCALL READ_DIR,P_RST8           ;ПОЛУЧИЛИ АДРЕС ОТКУДА ОПИСАТЕЛЬ ВЗЯТЬ
  180.                 PUSH HL
  181.                 LD DE,BUF_FILEITEM
  182.                 LD BC,0X20
  183.                 LDIR                            ;ПЕРЕНЕСЛИ ОПИСАТЕЛЬ В БУФЕР
  184.                 POP HL
  185.                 LD DE,0X0B
  186.                 ADD HL,DE
  187.                 LD A,(HL)
  188.                 SBC HL,DE
  189.                 AND 0X10                        ;ПРОВЕРЯЕМ ФАЙЛ ИЛИ ДИРА
  190.                 JP Z,SELFILES03                 ;ВЫБРАН ФАЙЛ ИДЕМ ДАЛЕЕ
  191. ;ВЫБРАНА ДИРА
  192.                 PCALL ENTER_DIR,P_RST8          ;ВХОДИМ В ДИРУ
  193.                 LD HL,BUF_PATH
  194.                 PCALL GET_PATH,P_RST8           ;ПОЛУЧАЕМ ПУТЬ ПОСЛЕ ВХОДА
  195.                 EVOPORT WIN_A1,P_ADDON1
  196.                 LD A,(HL)
  197.                 SUB "E"
  198.                 LD H,A
  199.                 LD L,0
  200.                 SRL H
  201.                 RR L
  202.                 SRL H
  203.                 RR L
  204.                 LD DE,BUF_WINPATH
  205.                 ADD HL,DE
  206.                 LD A,(BUF_FILEITEM)
  207.                 CP "."
  208.                 JP NZ,SELFILES02                ;ВХОД В ДИРЕКТОРИЮ
  209. ;ВЫХОД ИЗ ДИРЕКТОРИИ, ВОССТАНОВЛЕНИЕ УСТАНОВОК ОКНА ПРЕДЫДУЩЕГО УРОВНЯ
  210.                 LD A,(HL)
  211.                 ADD A,A
  212.                 ADD A,(HL)
  213.                 LD C,A
  214.                 LD B,0
  215.                 DEC (HL)                        ;ПЕРЕШЛИ НА ПРЕДЫДУЩУЮ ПОЗИЦИЮ
  216.                 INC HL
  217.                 ADD HL,BC
  218.                 DEC HL
  219.                 LD B,(HL)
  220.                 DEC HL
  221.                 LD C,(HL)
  222.                 DEC HL
  223.                 LD A,(HL)
  224.                 BIT 7,(IX+7)
  225.                 JR NZ,SELFILES04
  226.                 LD (IX+7),A
  227.                 LD (IX+8),C
  228.                 LD (IX+9),B
  229.                 PCALL FIND_FILEITEM,P_RST8
  230.                 LD (IX+0X0A),C
  231.                 LD (IX+0X0B),B
  232.                 JR SELFILES05
  233.  
  234. SELFILES04      LD L,(IX+8)
  235.                 LD H,(IX+9)
  236.                 LD (HL),A
  237.                 INC HL
  238.                 LD (HL),C
  239.                 INC HL
  240.                 LD (HL),B
  241.                 INC HL
  242.                 PUSH HL
  243.                 PCALL FIND_FILEITEM,P_RST8
  244.                 LD B,H
  245.                 LD C,L
  246.                 POP HL
  247.                 LD (HL),C
  248.                 INC HL
  249.                 LD (HL),B
  250. SELFILES05      PUSH BC
  251.                 PCALL SORT_FINDFILES,P_RST8
  252.                 POP BC
  253.                 JP FBR00
  254.  
  255. ;ВХОД В ДИРЕКТОРИЮ, СОХРАНЕНИЕ ТЕКУЩИХ УСТАНОВОК ОКНА
  256. SELFILES02      LD A,(HL)
  257.                 CP 0X10
  258.                 RET NC
  259.                 LD A,(HL)
  260.                 ADD A,A
  261.                 ADD A,(HL)
  262.                 INC (HL)
  263.                 INC HL
  264.                 LD C,A
  265.                 LD B,0
  266.                 ADD HL,BC
  267.                 BIT 7,(IX+7)
  268.                 JR NZ,SELFILES06
  269.                 LD A,(IX+7)
  270.                 LD (HL),A
  271.                 INC HL
  272.                 LD A,(IX+8)
  273.                 LD (HL),A
  274.                 INC HL
  275.                 LD A,(IX+9)
  276.                 LD (HL),A
  277.                 INC HL
  278.                 PCALL FIND_FILEITEM,P_RST8
  279.                 XOR A
  280.                 LD (IX+7),A
  281.                 LD (IX+8),A
  282.                 LD (IX+9),A
  283.                 LD (IX+0X0A),L
  284.                 LD (IX+0X0B),H
  285.                 LD B,H
  286.                 LD C,L
  287.                 JP SELFILES05
  288.  
  289. SELFILES06      LD E,(IX+8)
  290.                 LD D,(IX+9)
  291.                 EX DE,HL
  292.                 LDI
  293.                 LDI
  294.                 LDI
  295.                 PCALL FIND_FILEITEM,P_RST8
  296.                 LD L,(IX+8)
  297.                 LD H,(IX+9)
  298.                 XOR A
  299.                 LD (HL),A
  300.                 INC HL
  301.                 LD (HL),A
  302.                 INC HL
  303.                 LD (HL),A
  304.                 JP SELFILES05
  305.  
  306. SELFILES03      LD HL,BUF_FILEITEM
  307.                 LD DE,FILES_EXT
  308.                 PCALL CP_EXT,P_RST8
  309.                 CP 5
  310.                 RET NC
  311.                 LD (EXT_TYPE),A
  312.                 CP 1
  313.                 JR NZ,LOADIMAGES
  314.                 LD IX,SEL_MOUNT                 ;ВЫВОД МЕНЮ МОНТИРОВАНИЯ ИЛИ ЗАГРУЗКИ В РАМДИСК
  315.                 CALL ITWINW
  316.                 JP SET_ADR_ATR
  317.  
  318. LOADIMAGES      LD A,(EXT_TYPE)
  319.                 PCALL ILOADIMAGE,P_RST8
  320.                 JP C,ERROR
  321.                 JP RESTART_MAIN
  322.  
  323. MOUNT_A         XOR A
  324.                 JR MOUNT_TRD
  325.  
  326. MOUNT_B         LD A,1
  327.                 JR MOUNT_TRD
  328.  
  329. MOUNT_C         LD A,2
  330.                 JR MOUNT_TRD
  331.  
  332. MOUNT_D         LD A,3
  333. MOUNT_TRD       PCALL OPEN_MOUNT_INT,P_RST8
  334.                 JP RESTART_MAIN
  335.  
  336. ;СМЕНА ДИСКА/РАЗДЕЛА
  337. SELECT_DRIVE    DI
  338.                 LD IX,ENMI_SERVICE              ;ОПИСАТЕЛЬ ОКНА ВЫБОРА ДИСКА/РАЗДЕЛА
  339.                 LD HL,SEL_DRIVE
  340.                 LD D,IXH
  341.                 LD E,IXL
  342.                 LD BC,ESEL_DRIVE-SEL_DRIVE
  343.                 LDIR
  344.                 LD BC,0X14-(ESEL_DRIVE-SEL_DRIVE)
  345.                 EX DE,HL
  346.                 ADD HL,BC
  347.                 LD (IX+0X0C),L
  348.                 LD (IX+0X0D),H
  349.                 EX DE,HL
  350.                 LD BC,ETXT_SELDRIVES-TXT_SELDRIVES
  351.                 LDIR
  352.                 LD A,(SETDVOL)                  ;НОМЕР ТЕКУЩЕГО ДИСКА/РАЗДЕЛА
  353.                 LD (IX+7),A
  354.                 LD (IX+8),A
  355.                 LD (IX+9),0
  356.                 LD A,(KOLDVOL)                  ;КОЛИЧЕСТВО РАЗДЕЛОВ
  357.                 LD (IX+0X0A),A
  358.                 LD (IX+0X0B),0
  359.                 LD B,A
  360.                 ADD A,2
  361.                 LD (IX+2),A                     ;УСТАНОВИЛИ ВЫСОТУ ОКНА
  362.                 PUSH DE
  363.                 LD DE,6
  364.                 LD HL,BUF_TABLVOL
  365.                 EXX
  366.                 POP HL
  367.                 EXX
  368. SELECTDRIVE1    EXX
  369.                 LD (HL),0X0D
  370.                 INC HL
  371.                 LD (HL)," "
  372.                 INC HL
  373.                 EXX
  374.                 LD A,(HL)
  375.                 INC HL
  376.                 LD C,(HL)
  377.                 INC HL
  378.                 ADD A,C
  379.                 ADD A,C
  380.                 SUB 4
  381.                 ADD A,A
  382.                 ADD A,A
  383.                 ADD A,A
  384.                 ADD A,A
  385.                 EXX
  386.                 EX DE,HL
  387.                 LD HL,TXT4MENU_DEVICE
  388.                 LD C,A
  389.                 LD B,0
  390.                 ADD HL,BC
  391.                 LD BC,0X10
  392.                 EXX
  393.                 LD A,L
  394.                 EXX
  395.                 RRCA
  396.                 RRCA
  397.                 RRCA
  398.                 AND 0X1F
  399.                 ADD A,"E"
  400.                 LD (DE),A
  401.                 INC DE
  402.                 LDIR
  403.                 EXX
  404.                 LD A,(HL)
  405.                 EXX
  406.                 LD C,A
  407.                 ADD A,A
  408.                 ADD A,A
  409.                 ADD A,C
  410.                 LD HL,TXT4MENU_TYPE
  411.                 LD C,A
  412.                 ADD HL,BC
  413.                 LD C,5
  414.                 LDIR
  415.                 EX DE,HL
  416.                 EXX
  417.                 ADD HL,DE
  418.                 DJNZ SELECTDRIVE1
  419.                 EXX
  420.                 LD (HL),0
  421.                 INC HL
  422.                 LD B,(IX+2)
  423.                 DEC B
  424.                 DEC B
  425.                 LD C,B
  426.                 LD A,"e"
  427.                 LD (IX+0X12),L
  428.                 LD (IX+0X13),H                  ;УСТАНОВКА АДРЕСА ГОРЯЧИХ КЛАВИШ МЕНЮ
  429.                 LD (HL),B
  430.                 INC HL
  431. SELECTDRIVE2    LD (HL),A
  432.                 INC HL
  433.                 INC A
  434.                 DJNZ SELECTDRIVE2
  435.                 LD (IX+0X0E),L
  436.                 LD (IX+0X0F),H                  ;УСТАНОВКА АДРЕСА СПИСКА ПОДПРОГРАММ
  437.                 LD B,C
  438. SELECTDRIVE3    LD (HL),LOW (SELDRIVE)
  439.                 INC HL
  440.                 LD (HL),HIGH (SELDRIVE)
  441.                 INC HL
  442.                 DJNZ SELECTDRIVE3
  443.                 LD A,C
  444.                 EXX
  445.                 DEC A
  446.                 CALL ITWINW
  447.                 JP SET_ADR_ATR
  448.  
  449. SELDRIVE        LD A,(IX+7)
  450.                 PCALL SET_VOL,P_RST8
  451.                 JP FILEBROWSE1
  452.