Важная информация

User Tag List

Страница 7 из 20 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 193

Тема: [Поиск 1] Эмуляция

  1. #61

    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,648
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    181
    Поблагодарили
    116 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Тяжела и неказиста жизнь советского артиста (c) Для начала сделать бы клавиатуру и видео...

  2. #61
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #62

    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,648
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    181
    Поблагодарили
    116 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Описание матрицы нашлось в исходниках BIOS -- TBL_KBDP.ASM и SCANINT2.ASM, опрос делается по таймеру (канал 1 заведен на IRQ6). Разумеется, у Поиска-91 матрица немного другая.


  4. #63

    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,648
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    181
    Поблагодарили
    116 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В комментарии к исходникам упоминается нечто по имени ИНТЕК. Что это?
    Код:
    ; --  таблица клавиш для ИНТЕК ( по новому  ГОСТу )
    ;             бит 7 - признак необходимости инвертирования SHIFT
    ;----------------------------------------------------------------------------
    ; ------------нет спецсимволов--- SHIFT1 ----SHIFT2-----позиция в матрице--
    ;                                                      ИНТЕК              ПОИСК
    LN_KEY1 DB        80H+09H,           04H,   80H+29H    ; 1/12       1      4/7

  5. #64

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    124 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    На досуге ковырялся с PCem... Хочется все-таки сделать эмулятор с соблюдением тактов 8088, чтоб по скорости было максимально похоже на Поиск. Ну и чтоб работал "честно", то есть рисовал все символы программно, как это делает реал.

    Пытался впилить в него обработку NMI. BTW, обработки NMI практически ни у кого нет, ни у fake86, ни у PCE. Вообще, хорошо если TRAP (int 1) обрабатывают, некоторые и на него забивают. Ввел несколько переменных и флагов:

    Код:
    // POISK variables
    uint16_t p28h; // port 28 value
    uint8_t nmi_enabled; // NMI enabled ?
    uint8_t nmi_int_now=0; // force NMI
    uint8_t in_nmi=0; // in NMI?
    uint8_t p6Ah,p68h; // port 6Ah and port 68h
    Дальше vid_cga.c. Откуда-то скопипастил такую процедуру установки графического режима в CGA через порты. В качестве аргумента (mode) - 0x1E это по идее 640x400, 0x2E - это 320x200.

    Код:
    static int mode_graph[] = {0x38, 0x28, 0x2D, 0x0A, 0x7F, 0x06, 
                               0x64, 0x70, 2, 1, 6, 7,0, 0, 0, 0};
    
    void set_poisk_mode(uint8_t mode)
    	#define MODE_REG 0x3d8
    	#define VID_DISABLE 0
    	#define ADDRESS_REG 0x3d4
    	#define REGISTER_PORT 0x3d5
    {
    int loop_count = 0;
            cga_out(MODE_REG,VID_DISABLE); /*disable video signal */
    		for( ; loop_count < 0x0e; ++loop_count) {
    			cga_out( ADDRESS_REG, loop_count ); /* set up CRT register */
    			cga_out( REGISTER_PORT, mode_graph[loop_count]); /* write to reg */
    		}
    		cga_out( MODE_REG, mode); /* switch in mode now */;
    }
    Процедура обработки порта 68. Смотрит, не сменился ли режим, если сменился - устанавливает новый. Также устанавливает флаг разрешения или запрещения NMI.
    Код:
    void poisk_out(uint16_t addr, uint8_t val) 
    { 
        uint8_t b; 
        uint8_t tmp_b;
        switch (addr) 
        { 
            case 0x68: 
                p68h = val; 
                b = 0x2e; //320x200
                if (val & 0x80) b = 0x1e; //hires
                if (poisk_mode != b)
                  {
                    poisk_mode = b;
                    set_poisk_mode(b);
                    pclog("POISK set mode %02X: \n",b);
                  }
                if (!(val & 8))
                  {
                    nmi_enabled = 1;
                    pclog("[poisk] NMI enable\n");
                  }
                else
                  {
                    nmi_enabled = 0;
                    pclog("[poisk] NMI disable\n");
                  }
                pclog("POISK 68h value: %02X cgamode: %02X cgacol: %02X\n",val,tmp_b,b); 
    
                return; 
            case 0x6A: 
                p6Ah = val;
                val = p68h;
    // TO DO:
                return; 
        } 
    } 
    
    uint8_t poisk_in(uint16_t addr) 
    { 
        switch (addr) 
        { 
            case 0x68: 
                return p68h; 
            case 0x6A: 
                return p6Ah; 
        } 
        return 0xFF; 
    }
    При возникновении NMI в порт 28 должно находится смещение, куда произошла запись:

    Код:
    uint16_t p28h_in(uint16_t addr)
    {
        switch (addr) 
        { 
            case 0x28:
                   {
                   pclog("[poisk] IN 0x28h = %04X\n",(p28h) & 0xFF);
                   return ((p28h) & 0xFF);
                   }
            case 0x29: 
                   {
                   pclog("[poisk] IN 0x29h = %04X\n",(p28h>>8) & 0xFF);
                   return ((p28h>>8) & 0xFF);
                   }
        }
    }
    Дальше, установил новые хендлеры для портов:
    Код:
            io_sethandler(0x0068, 0x0002, poisk_in,  NULL, NULL, poisk_out,  NULL, NULL);        
            io_sethandler(0x006A, 0x0002, poisk_in,  NULL, NULL, poisk_out,  NULL, NULL);        
    
            io_sethandler(0x0028, 0x0002, p28h_in,  NULL, NULL, NULL,  NULL, NULL);
    Если что-то пишет в видео-память, проверить разрешены ли NMI, если разрешены - запомнить смещение куда произошла запись (для обработки 28 порта) и установить флаг вызова NMI.
    Код:
    void cga_write(uint32_t addr, uint8_t val)
    {
    //        pclog("CGA_WRITE %04X %02X\n", addr, val);
            vram[addr&0x3FFF]=val;
            charbuffer[ ((int)(((dispontime - vidtime) * 2) / CGACONST)) & 0xfc] = val;
            charbuffer[(((int)(((dispontime - vidtime) * 2) / CGACONST)) & 0xfc) | 1] = val;
            cycles -= 4;
    
            p28h = addr&0x3FFF;
    
            if (nmi_enabled == 1) 
            {
               flags&=~I_FLAG;
               nmi_int_now = 1;
            }
    }
    Дальше в x86.c обработку NMI сделал по аналогии обработки IRQ с PIC, вставил такой текст:
    Код:
                    if (nmi_int_now && !in_nmi && !ssegs && !noint)  // NMI interrupt
                    {
                      pclog("NMI INT NOW\n");
                            //if (ssegs) ss=oldss;
                            //        if (inhlt) pc++;
                            writememw(ss,((SP-2)&0xFFFF),flags|0xF000);
                            writememw(ss,((SP-4)&0xFFFF),CS);
                            writememw(ss,((SP-6)&0xFFFF),pc);
                            SP-=6;
                            addr=2<<2;
                            flags&=~I_FLAG;
                            flags&=~T_FLAG;
                            pc=readmemw(0,addr);
                            loadcs(readmemw(0,addr+2));
                            FETCHCLEAR();
                            inint=1;
                            nmi_int_now=0;
                            in_nmi=1;
                            cycles-=72;
                    }
    Пока результата никакого.

  6. #65

    Регистрация
    23.06.2012
    Адрес
    Астана/Новосибирск/Франкфурт
    Сообщений
    20
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Tronix Посмотреть сообщение
    На досуге ковырялся с PCem... Хочется все-таки сделать эмулятор с соблюдением тактов 8088, чтоб по скорости было максимально похоже на Поиск. Ну и чтоб работал "честно", то есть рисовал все символы программно, как это делает реал.
    Наверно, ближе всего к железу MESS (с патчами от shattered, см. выше). Правда, не знаю, умеет ли MESS всякие V20. Но, на крайняк, можно подсунуть 286 и посмотреть, что получится.

  7. #66

    Регистрация
    12.04.2009
    Адрес
    Одесса
    Сообщений
    639
    Спасибо Благодарностей отдано 
    412
    Спасибо Благодарностей получено 
    106
    Поблагодарили
    72 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Tronix, огромное Вам спасибо за habrapost!
    LodeDome: http://lodedome.no-ip.com/lodedome.php - Lode Runner 2010 Game Archive. KryoFlux, FluxEngine, Gotek boards
    Ищу пересылкой любые (неисправные/дефективные/некомплектные) платы и узлы корпуса Электроники-85 (МС-0585); дискеты 5,25".
    По_трошки: Поиск, УКНЦ, БК0010, МС1502, П-н 128, Вектор 06Ц, C64, MAC LC475, Львов ПК-01, ДВК-3Ш (ВМ2, ВМ3, MX, MY, КСМ, КЦГД, КТлК, MY4)
    Контакты: скайп: ana-sana, почта: [email protected], email: [email protected], TG: https://t.me/adesodesa

  8. #67

    Регистрация
    22.11.2009
    Адрес
    Москва
    Сообщений
    1,648
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    181
    Поблагодарили
    116 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Предлагаю не распылять усилия и пилить таки MESS, в нем заметно больше готовых запчастей.

    Пока что безуспешно борюсь с эмуляцией клавиатуры -- алфавитные клавиши работают нормально, но прочие посылают весьма странные сканкоды.

  9. #68

    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,869
    Спасибо Благодарностей отдано 
    93
    Спасибо Благодарностей получено 
    247
    Поблагодарили
    179 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Кто-нибудь помнит, как выглядел 4-тый нортон на Поиске? С цветами не совсем понятно. У меня в эмуляторе получилось вот так:
    Миниатюры Миниатюры Нажмите на изображение для увеличения. 

Название:	poisk_nc4.jpg 
Просмотров:	419 
Размер:	45.7 Кб 
ID:	44241   Нажмите на изображение для увеличения. 

Название:	poisk_goody.jpg 
Просмотров:	394 
Размер:	56.9 Кб 
ID:	44242  
    Последний раз редактировалось b2m; 22.11.2013 в 23:31.

  10. #69

    Регистрация
    02.08.2013
    Адрес
    г. Киев
    Сообщений
    528
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    6
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Привет!

    Вместо Зелёного берюзовый!!!
    Последний раз редактировалось Sonic_Blast; 24.11.2013 в 13:29.

  11. #70

    Регистрация
    16.09.2010
    Адрес
    г. Москва
    Сообщений
    1,951
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    258
    Поблагодарили
    124 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да, если смотреть на палитру 1 в графическом режиме это цвет cyan (0x01), или light cyan

Страница 7 из 20 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. [Поиск 1] поиск информации по модулям
    от Daniil Chislov 86 в разделе Поиск
    Ответов: 7
    Последнее: 25.12.2023, 16:54
  2. [Поиск 3] Восстановление
    от Filin в разделе Поиск
    Ответов: 71
    Последнее: 13.12.2020, 16:23
  3. [Поиск 1] Tandy Sound эмуляция
    от Tronix в разделе Поиск
    Ответов: 2
    Последнее: 21.03.2019, 18:40
  4. [Поиск 2] Поиск информации
    от dk_spb в разделе Поиск
    Ответов: 17
    Последнее: 02.10.2017, 09:00
  5. Эмуляция AY/YM
    от mungo в разделе Эмуляторы
    Ответов: 18
    Последнее: 22.03.2013, 06:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •