Subversion Repositories pentevo

Rev

Rev 646 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

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