Subversion Repositories pentevo

Rev

Rev 761 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

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