Работа с файловой системой

Kernel architecture questions
  • diamond
    Для более корректной работы IDE DMA нужно поправить 2 места в ядре:
    1) На ПК с поддержкой PATA и SATA для правильного определения PATA нужно в bootcode.inc код заменить на:
    ; b) class 1, subclass 1, programming interface 0x8A
    mov ax, 0xB103
    mov ecx, 1*10000h + 1*100h + 0x8A
    mov si, 0 ; device index = 0
    int 0x1A
    jnc .found
    ; c) class 1, subclass 1, programming interface 0x85
    mov ax, 0xB103
    mov ecx, 1*10000h + 1*100h + 0x85
    mov si, 0
    int 0x1A
    jc .nopci
    Иначе первым будет определяться SATA и в результате PATA работать не будет.

    2) Изменения в sched.inc

    align 4
    change_task:
    pushfd
    cli
    pushad
    call update_counters
    cmp [dma_task_switched],1
    jne .find_next_task
    mov [dma_task_switched],0
    mov ebx,[dma_process ]
    cmp [0x3000],ebx
    je .return
    mov edi,[dma_slot_ptr]
    mov [0x3000],ebx
    mov [0x3010],edi
    jmp @f
    .find_next_task:
    call find_next_task
    test eax, eax ; the same task -> skip switch
    jnz .return
    @@:
    mov [0xffff],byte 1
    call do_change_task
    .return:
    popad
    popfd
    ret

    для нормального распределения приоритетов задач

    3) Также я заметил что при загрузке не выводится размер RAM в bootlog.
    Произошло это начиная с 0581, предположительно после переписывания процедур вывода на экран, которое произвел Поддубный, но это только предположение.
  • Насчёт багов с DMA. Хотя может это и не имеет к DMA никакого отношения.
    Вчера перезагрузился в КоОС, хотел было взяться за Tinypad, открыл tinypad.asm, нажал F9 и ничего не запустилось. Глянул внутрь файла - он оказался запорченый в конце. Решил сделать скриншот этого безобразия SCRSHOT'ом, который вроде как через 70-ю функцию работает, и получил следующее при просмотре изображения: http://mikedld.com/i/hd_bug.png (37 КБайт)

    EDIT: меня очень удивило то, что SCRSHOT использует 56-ю функцию для записи файла. Эту функцию не использует никто уже пару лет! я бы ешё понял, если бы это была 58-я, но 56-я... я в ауте. Всем спасибо все свободны :)
  • mike.dld
    Вот поэтому scrshot и vscreen удалены из K0600. scrshoot использует 58-ю функцию, которая, как известно, глючит при записи больших файлов.
    Maxxxx32
    Протестируй, пожалуйста, все три ядра
    http://diamondz.land.ru/kernel2.mnt
    http://diamondz.land.ru/kernel3.mnt
    http://diamondz.land.ru/kernel4.mnt
    Mario79
    Спасибо, добавлю.
    Ушёл к умным, знающим и культурным людям.
  • diamond
    Меня просто удивило то, что SCRSHOT - программа новая. Неужели нельзя было использовать и новые функции?? Ну да ладно, к следующему релизу нужно будет это исправить.
  • diamond
    Я не в курсе переписал ли кто-нибудь COPY2 под 70 функцию, если нет, то у меня есть переисанная версия. Могу кому-нибудь слить исходник.
    Проблема с 58 функцией несколько странная - на SIS735 все работало без проблем (и PIO, и DMA). На матери с Nfoce4 появились проблемы. Когда я переписал COPY2 на 70 функцию проблемы исчезли. Копировал я IMG файл в 100Мб и при 58 функции WinImage ругался на поврежденность, хотя после Scandisk образ открывался нормально.
  • Mario79 wrote: Я не в курсе переписал ли кто-нибудь COPY2 под 70 функцию, если нет, то у меня есть переисанная версия. Могу кому-нибудь слить исходник.
    Было бы неплохо. Насколько я знаю, больше никто COPY2 не переписывал.
  • diamond
    Отправил тебе на мыло.
  • Mario79
    Спасибо, получил.
  • В моём scrshoot используется 70-я функция для сохранения файла.
  • Maxxxx32
    Спасибо за прояснение ситуации. Почему тогда на SVN лежит что-то непонятное, использующее функцию 56 от Fagotus'а (DoomEd Archangel'а)?... Хоть бы новый залить. Нет аккаунта - обратись к тому у кого есть или скажи мне, я создам.
    Источник заблуждений: http://kolibrios.org/?p=SVN&kind=file&l ... crshot.asm

    diamond
    Я отчётливо понимаю, что использовал новый SCRSHOT из 0.6.0.0. Другие предположения? Откуда ты брал версию, которая в дистрибе?
  • diamond
    Offtop
    В 194 ревизии появился баг связанный с функцией 47.
    Для того чтобы его увидеть нужно запустить например PCIDEV и свернуть окно.
    Очевидно баг появился в свзи с исправлением кода который выводит размер обнаруженной памяти в bootlog.
  • mike.dld
    Действительно, с scrshoot я ошибся - он использует 70-ю функцию, и он же помещён в дистрибутив. На svn лежит устаревшая программа scrshot, которую не следует путать с творением Maxxxx32 и которой нет в дистрибутиве. scrshoot на svn не залит.
    Гм... других предположений нет.
  • Да, 47-я функция и у меня глючит. Я даже скриншот для пробы сделал (у меня он нормально работает), но думаю выкладывать не стоит.
  • diamond
    Можешь сделать код для вызова ф.70 из ядра. Я сделал две функции get_fileinfo и read_file в dll.inc но они работают через прервание что ядра ненормально. Хочу переписать загрузчик программ чтобы грузить проги упакованные kpackом. Тогда код для самораспаковки не нужен. Экономия места.
  • Who is online

    Users browsing this forum: No registered users and 2 guests