Подобную ситуацию наблюдал когда закинул новое ядро в образ от К0580. Обновляй программы чаще
Работа с файловой системой
-
Maxxxx32
Подобную ситуацию наблюдал когда закинул новое ядро в образ от К0580. Обновляй программы чаще
Дело в том, что функция запуска программ через 58-ю функцую удалена из ядра.
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, предположительно после переписывания процедур вывода на экран, которое произвел Поддубный, но это только предположение.
Для более корректной работы 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-я... я в ауте. Всем спасибо все свободны
Вчера перезагрузился в КоОС, хотел было взяться за 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
Спасибо, добавлю.
Вот поэтому 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 - программа новая. Неужели нельзя было использовать и новые функции?? Ну да ладно, к следующему релизу нужно будет это исправить.
Меня просто удивило то, что SCRSHOT - программа новая. Неужели нельзя было использовать и новые функции?? Ну да ладно, к следующему релизу нужно будет это исправить.
diamond
Я не в курсе переписал ли кто-нибудь COPY2 под 70 функцию, если нет, то у меня есть переисанная версия. Могу кому-нибудь слить исходник.
Проблема с 58 функцией несколько странная - на SIS735 все работало без проблем (и PIO, и DMA). На матери с Nfoce4 появились проблемы. Когда я переписал COPY2 на 70 функцию проблемы исчезли. Копировал я IMG файл в 100Мб и при 58 функции WinImage ругался на поврежденность, хотя после Scandisk образ открывался нормально.
Я не в курсе переписал ли кто-нибудь COPY2 под 70 функцию, если нет, то у меня есть переисанная версия. Могу кому-нибудь слить исходник.
Проблема с 58 функцией несколько странная - на SIS735 все работало без проблем (и PIO, и DMA). На матери с Nfoce4 появились проблемы. Когда я переписал COPY2 на 70 функцию проблемы исчезли. Копировал я IMG файл в 100Мб и при 58 функции WinImage ругался на поврежденность, хотя после Scandisk образ открывался нормально.
Было бы неплохо. Насколько я знаю, больше никто COPY2 не переписывал.Mario79 wrote: Я не в курсе переписал ли кто-нибудь COPY2 под 70 функцию, если нет, то у меня есть переисанная версия. Могу кому-нибудь слить исходник.
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. Другие предположения? Откуда ты брал версию, которая в дистрибе?
Спасибо за прояснение ситуации. Почему тогда на 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.
Offtop
В 194 ревизии появился баг связанный с функцией 47.
Для того чтобы его увидеть нужно запустить например PCIDEV и свернуть окно.
Очевидно баг появился в свзи с исправлением кода который выводит размер обнаруженной памяти в bootlog.
mike.dld
Действительно, с scrshoot я ошибся - он использует 70-ю функцию, и он же помещён в дистрибутив. На svn лежит устаревшая программа scrshot, которую не следует путать с творением Maxxxx32 и которой нет в дистрибутиве. scrshoot на svn не залит.
Гм... других предположений нет.
Действительно, с scrshoot я ошибся - он использует 70-ю функцию, и он же помещён в дистрибутив. На svn лежит устаревшая программа scrshot, которую не следует путать с творением Maxxxx32 и которой нет в дистрибутиве. scrshoot на svn не залит.
Гм... других предположений нет.
Да, 47-я функция и у меня глючит. Я даже скриншот для пробы сделал (у меня он нормально работает), но думаю выкладывать не стоит.
diamond
Можешь сделать код для вызова ф.70 из ядра. Я сделал две функции get_fileinfo и read_file в dll.inc но они работают через прервание что ядра ненормально. Хочу переписать загрузчик программ чтобы грузить проги упакованные kpackом. Тогда код для самораспаковки не нужен. Экономия места.
Можешь сделать код для вызова ф.70 из ядра. Я сделал две функции get_fileinfo и read_file в dll.inc но они работают через прервание что ядра ненормально. Хочу переписать загрузчик программ чтобы грузить проги упакованные kpackом. Тогда код для самораспаковки не нужен. Экономия места.
Who is online
Users browsing this forum: No registered users and 2 guests