Сообщение от
freddy
DOOM запускается
Ага, я то же погонял в DOOM:
Как видно у меня режим 80x50. Но завелся не из коробки, а путем правки i_ibm.c, строчки textdestscreen += 4128
Код:
#if defined(MODE_T8050) || defined(MODE_T80100)
// Change video page
regs.h.ah = 0x05;
regs.h.al = textpage;
regs.h.bh = 0x00;
regs.h.bl = 0x00;
int386(0x10, ®s, ®s);
textdestscreen += 4096; //4128
textpage++;
if (textpage == 3)
{
textdestscreen = (unsigned short *)0xB8000;
textpage = 0;
}
#endif
Я даже у автора FastDoom спросил, точно мол нет ошибки здесь в размере страницы 4128 - он сказал что мол сам долго не мог понять, подбирал это значение опытным путем, иначе начинает мигать все. И, действительно, в DosBox работает как у автора и не работает с 4096. С ISA_VG75 работает с 4096 и не работает как у автора с 4128. Загадка прямо, почему размер страницы в 80x50 должен быть равен 8256 (4128*2)....
Сообщение от
freddy
попробуйте в процедуре записи функции 05h cli поставить перед первым out, а sti после последнего out
А теперь я даже не очень уверен, что проблема именно аппаратная, а не программная. Например, если я запускаю VC и переключаюсь в 80x50, затем печатаю просто команду DIR и жму Enter по возвращению в VC вижу следующую картину:
То есть как-бы адрес видео-буфера сбился. При этом по Ctrl+O я не вижу вывода команды DIR.
В ASCII редакторе The Draw так же такое бывает, если переключится на 80x50 и попытаться загрузить файл - сбивается адрес видео-буфера... Может быть это как раз как-то связано с размером страниц/количество символов. Почему же размер страницы 4128 у автора FastDoom, и при этом все работает в DosBox, а так же автор тестил на реальных видюхах. Может быть тогда в режиме 80x50 количество столбцов должно записываться именно как 50, а не 49. Тогда да, размер буфера 80x50+1 = 4128. Не знаю, загадка прямо.
А вообще 80x50 режимы крутые конечно. Можно .ANS смотреть, можно демки крутить текстовомодные, можно в Doom играть