;=========================================================== ; ; Процесс создания папки ; ;=========================================================== make_folder: call test_show_panels ; тест на режим вкл. панелей ret z call get_fire ; защита от "залипания" бутонов ld a,(format_mode) ; тек. формат панели and form_info+form_qview ; info, qview ret nz ; вывод начального окна ld hl,dial_folder ; описатель окна call DialogW cp evCommand ; событие "команда" ret nz ld a,(hl) ;+1 what cp cmOkey ; "Ok" ret nz ; Создание папки ld a,(input_line_makedir+4); длина введ. строки or a ret z ; пустая строка ; call set_path_from_activ_panel ; уст. диск и путь акт. панели ret c ; ; выделить имя папки ld hl,input_line_makedir+5 ; откуда ld de,temp_fname ; куда (13 байт) ld bc,0345h rst ToDSS push af push af or a bit 3,a ; указан диск ? call nz,cut_disk ; выделить и уст. диск jr c,make_fold_err1 pop af or a bit 2,a ; указан путь ? call nz,cut_path ; выделить и уст. путь jr c,make_fold_err2 pop af and 00001100b ; диск и путь задавались ? jr z,try_make_fold ; нет ld (fresh_two_panels_flag+1),a ; уст. флаг обновл. двух панелей jr try_make_folder ; try_make_fold: ; call set_path_from_activ_panel ; нет, уст. диск и путь акт. панели ; ret c ; создать папку try_make_folder: ld hl,temp_fname ; имя папки ld c,1Bh ; создать папку rst ToDSS jr c,make_fold_err ; обновить список панелей fresh_two_panels: ;<- обращение из delete.asm ; акт. панель call read_new_list ; заполнить банку новым списком + размер файлов jr c,make_fold_err call sorting ; раздельный список указателей + сорт. списка call A20FC ; обновить панель fresh_two_panels_flag: ld a,0 ; признак обновления двух панелей or a jr nz,$+8 ; сравнить пути панелей (при совпад. обновить вторую) call compare_path_two_panels jp nz,show_pointer ; не равны, показать указатель xor a ld (fresh_two_panels_flag+1),a ; сбр. флаг ; пасс. панель call change_panel call read_new_list ; заполнить банку новым списком + размер файлов jr c,make_fold_err call sorting ; раздельный список указателей + сорт. списка call A20FC call change_panel ; сменить панель jp show_pointer ; показать указатель make_fold_err1: pop af make_fold_err2: pop af ; Ошибка make_fold_err: ; центровка имени папки ld hl,input_line_makedir+5 ; структура строки ~input line~ ld de,create_name ; куда call copy_dest_name ; скопир. путь+имя файла/папки ; вывод окна ошибки создания папки ld hl,dial_error_make_folder call DialogEr cp evCommand ; событие "команда" ret nz ld a,(hl) ;+1 what cp cmOkey ; "Retry" jr z,try_make_folder ret