Суббота, 23.11.2024, 01:12
Приветствую Вас Гость | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 2
  • «
  • 1
  • 2
FPGA games
vikctcДата: Пятница, 29.05.2015, 22:11 | Сообщение # 16
Генерал
Группа: Модераторы
Сообщений: 1745
Репутация: 1
Статус: Offline
Цитата RW9UAO ()
то 486DX133 =)
Ну тоже раритет неплохой.


 
MaloyДата: Суббота, 30.05.2015, 10:17 | Сообщение # 17
Генерал
Группа: Moderator
Сообщений: 1653
Репутация: 1
Статус: Offline
у всех прогресс
а ретро лучше


С Уважением Владимир !

Мозг - это тормоз, чувства - это газ. Главное - найти сцепление,,,

 
RW9UAOДата: Понедельник, 08.06.2015, 12:06 | Сообщение # 18
Генерал
Группа: Проверенные
Сообщений: 2085
Репутация: 3
Статус: Offline
выбрал вечер свободного времени. допилил проект эмулятора ПЗУ BIOS.
отвязал мультиплексором шину адреса и еще одним мультиплексором шину данных чипа SRAM, последовательно в сдвиговый регистр загружаю адрес и данные. 64 кб образ льется за 1 минуту. нормально.
образ XTBIOS собирается из исходников, пришлось его немного доработать. bootloader по умолчанию должен занимать 1 кб кода, пришлось по входу точки сброса прописать переинициализацию регистра управляющего сигналом CS ROM BIOS. ради этого пришлось выкинуть строку версии BIOS.
также надо доработать инициализацию CS выбора чипа RAM, по умолчанию 256 кб, у меня 512 кб нижней памяти.
в итоге образ BIOS частично запустился. пробежался по тестам и ушел в HLT по какой-то причине. ибо нет дешифрации портов ввода-вывода и не понятно, чего там откуда читается.
занялся функционалом отладки. я хочу на лог анализаторе видеть всю шину адреса. ну или хотябы 12 бит ее. а ширина ЛА - 8 бит.
пока дошел до следующего: по спаду сигнала ALE отдавать по 4 бита шины адреса в debug порт с выводом clock синхронизации еще в один бит. уперся в недостаток скорости. 80 мгц мало, или мой ЛА не успевает защелкнуть все что выше 24 мгц. буду думать дальше.
 
RW9UAOДата: Понедельник, 08.06.2015, 21:35 | Сообщение # 19
Генерал
Группа: Проверенные
Сообщений: 2085
Репутация: 3
Статус: Offline
вобщем ничего у меня с дебагом путнего не вышло. решил сделать проще. засинхронизировался по сигналу ALE и считал шину адреса по 4 бита. зависаю я примерно в одном месте.
и вот что получилось
Код
E0D5: 75
E0D6: D4    JNZ E0AB
E0D7: неважно, так работает механизм выборки инструкции
E0AB: F4    HLT
глянул я в дизасм, что же лежит по этим адресам в BIOS, и что можно увидеть в исходнике
Код
;----------------------------------------
;   ROS CHECKSUM TEST I      :
;DESCRIPTION            :
;   A CHECKSUM IS DONE FOR THE 8K   :
;   ROS MODULE CONTAINING POD AND   :
;   BIOS.            :
;----------------------------------------
                ; ZERO IN AL ALREADY
    OUT   0A0H,AL           ; DISABLE NMI INTERRUPTS
    OUT   83H,AL             ; INITIALIZE DMA PAGE REG
    MOV   DX,3D8H
    OUT   DX,AL             ; DISABLE COLOR VIDEO
    INC   AL
    MOV   DL,0B8H
    OUT   DX,AL             ; DISABLE B/W VIDEO,EN HIGH RES
    MOV   AL,89H             ;     SET 8255 FOR B,A=OUT, C=IN
    OUT   CMD_PORT,AL
    MOV   AL,10100101B
                    ; ENABLE PARITY CHECKERS AND
    OUT   PORT_B,AL          ; PULL KB CLOCK HI, TRI-STATE
                    ; KEYBOARD INPUTS,ENABLE HIGH
                    ; BANK OF SWITCHES->PORT C(0-3)
    MOV   AL,01H                 ; <><><><><><><><><><><><>
    OUT   PORT_A,AL          ; <><><>CHECKPOINT 1<><><>
    MOV   AX,CS                 ; SETUP SS SEG REG
    MOV   SS,AX
    MOV   DS,AX                 ; SET UP DATA SEG TO POINT TO
                    ; ROM ADDRESS
    CLD                            ; SET DIRECTION FLAG TO INC.
    ASSUME   SS:CODE
    MOV   BX,00000H          ; SETUP STARTING ROS ADDR
    MOV   SP,OFFSET C1      ; SETUP RETURN ADDRESS
    JMP   ROS_CHECKSUM
[b]C11:
    [b]JNE   ERR01             ; HALT SYSTEM IF ERROR
теперь надо посмотреть, откуда я попадаю в точку С11. ее адрес положили в SP.
MOV SP,OFFSET C1 ; SETUP RETURN ADDRESS
значит что-то пошло не так в функции "ROS_CHECKSUM". она просто XORит байтики по адресу который лежит в BX и возвращает флаг Z. на который я и реагирую переходом на ERR01.

надо как-то более оперативно все-же адрес считывать. думаю как.
 
RW9UAOДата: Понедельник, 08.06.2015, 22:02 | Сообщение # 20
Генерал
Группа: Проверенные
Сообщений: 2085
Репутация: 3
Статус: Offline
отключил проверку контрольной суммы BIOS, теперь она всегда верная =)
уткнулся в другую проверку:
Код
;----- VERIFY THAT TIMER 1 FUNCTIONS OK
теперь нужно развести сигналы S2-S1 из которых получаются IOWR-IORD, посмотреть в какие порты пишет-читает и реализовать таймер КР580ВИ53, следом за ним пойдет 8237 DMA.
 
RW9UAOДата: Понедельник, 15.06.2015, 17:19 | Сообщение # 21
Генерал
Группа: Проверенные
Сообщений: 2085
Репутация: 3
Статус: Offline
по быстрому набросал механизм выборки IOWR-IORD, сигналов записи-чтения внешних устройств.

засинхронизировался по сигналу IOWR и вижу, что была запись в порты:
0х60 значения 0х02
0х08 значения 0х04
0х43 значения 0х54
0х41 значения 0х00
что вполне совпадает с исходником

Цитата
MOV AL,02H
OUT PORT_A,AL    ;060H ; KEYBOARD SCAN CODE/CONTROL PORT
MOV AL,04
OUT DMA08,AL ; 008H ; DMA STATUS REGISTER PORT ADDRESS

MOV AL,54H ; SEL TIMER 1,LSB,MODE 2
OUT TIMER+3,AL ; 043H ; 8253 TIMER CONTROL PORT ADDR
MOV AL,CL ; SET INITIAL TIMER CNT TO 0
OUT TIMER+1,AL
Прикрепления: 5033843.jpg (141.4 Kb)
 
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск: