Для RAGE как раз 1 надо, на оригинальном железе. Значит в speccy2010 что-то не так сделано.
Вид для печати
Вектор скорее всего будет неисправен по 2м причинам - или ПЗУ не фирменное 82 года, или нет FF на шине во время когда к ней никто не обращается(эмуляция 8ми резисторов 4.7к с плюса питания на шину данных).
В зависимости от того как оно проверяет вектор - в ПЗУ или в ОЗУ.
А порт FE надо попробовать почитать во первых из 8 полных 16 битных адресов, во вторых - аналогично с шиной - могут быть 2 или сколько там старших битов неопределенными. По умолчанию - из них должно читаться еденицы в верхних разрядах. Но это уже можно выставить и принудительно в коде чтения порта FE в плисине.
будем искать :)Цитата:
(эмуляция 8ми резисторов 4.7к с плюса питания на шину данных)
вот что говорит тест портов.
http://i.piccy_.info/i9/39137ea95cb7...G_0571_500.jpghttp://i.piccy_.info/a3/2014-10-31-1...72x354-r/i.gif
а вот эмулятор
http://i.piccy_.info/i9/7a1f517902f3...iannyi_500.jpghttp://i.piccy_.info/a3/2014-10-31-1...61x362-r/i.gif
palsw, возможно проблема здесь:
модуль zports.vКод:// reading ports
always @*
begin
case (loa)
PORTFE:
dout = {1'b1, tape_read, 1'b0, keys_in};
MVV, не могу нагуглить по этому порту какой бит отвечает за что.
Цитата:
#FE - клавиатура, цвет бордюра, бипер, магнитофон
#7FFE - полуряд Space...B
#BFFE - полуряд Enter...H
#DFFE - полуряд P...Y
#EFFE - полуряд 0...6
#F7FE - полуряд 1...5
#FBFE - полуряд Q...T
#FDFE - полуряд A...G
#FEFE - полуряд CS...V
Цитата:
OUT FE
D0-D2 - цвет бордюра (8 цветов) - BRG
D3 - запись сигнала на магнитофон
D4 - управление звуковым каналом ("бипером")
по моему там D5 это вход с магнитофона - потому как D0-D4 должны быть данные клавиатуры - 5 кнопок в ряду.
П.С. Глянул еще раз картинку с тестами - так и есть.
Что до проверки шины - был вроде тест стабильности шины (floating bus test) но не помню как программа называлась
проверить можно из бейсика - вывести в цикле данные из портов с 32 по 127й включительно - если будет везде читать FF значит шина стабильна. Если лабуду - не стабильна.
так в порт клавиатуры срет загрузка с магнитофона?
Код:К примеру, рассмотрим чтение клавиатуры.
Адреса портов клавиатуры отличаются только
старшим байтом, а младший всё время равен
#FE. Какой полуряд в данный момент читает-
ся, видно из таблички:
╔═══════════╤═══════╗
║ Полуряд │ Адрес ║
║ │ порта ║
║───────────┼───────╢
║ Space...B │ 7FFE ║
║ Enter...H │ BFFE ║
║ P.......Y │ DFFE ║
║ 0.......6 │ EFFE ║
║ 1.......5 │ F7FE ║
║ Q.......T │ FBFE ║
║ A.......G │ FDFE ║
║ CS......V │ FEFE ║
╚═══════════╧═══════╝
Одной из особенностей чтения из порта
клавиатуры является то, что младшие биты
полученного значения относятся к крайним
клавишам полуряда. Наример, если мы выпол-
ним нечто вроде
LD BC,#EFFE
IN A,(C)
то полученный байт будет иметь следующее
значение:
╔══╤══╤══╤══╤══╤══╤══╤══╗
║x │x │x │6 │7 │8 │9 │0 ║ Клавиша
╟──┼──┼──┼──┼──┼──┼──┼──╢
║D7│D6│D5│D4│D3│D2│D1│D0║ Бит
╚══╧══╧══╧══╧══╧══╧══╧══╝
Битам D7, D6, D5 повезло - они имели
честь остаться неиспользованными. О том,
что определённая клавиша нажата, мы узнаем
по состоянию соответствующего ей бита - он
будет сброшен.
Порт FE
Назначение битов при чтении из порта
D0-D4 - отображают состояние определённого полуряда клавиатуры ZX Spectrum. Порты полурядов - #7FFE, #BFFE, #DFFE, #EFFE, #F7FE, #FBFE, #FDFE и #FEFE. Возможно одновременное чтение нескольких полурядов при сбросе нескольких бит в старшем байте адреса порта. В контроллере клавиатуры компьютера ATM Turbo некоторые комбинации старших адресов заняты другими функциями.
D6 - отображает состояние магнитофонного входа (EAR).
D5, D7 - обычно не используются. В некоторых клонах ZX Spectrum эти биты используются для чтения сигналов последовательного и параллельного интерфейса. В компьютерах Спарк и Аллофон эти биты отображают состояние дополнительных клавиш.
Да, с магнитофона. Мы ведь имеем возможность монтировать TAP :)
MVV, D5 получается сидит в 0 всегда вот и матерятся тесты на порт клавиатуры.в эмуляторе везде 1 читаются с порта
Чет ты меня сбиваешь? Сидит в '0' D5. А он не используется.
Попробуй поправить тут: http://zx-pk.ru/showpost.php?p=749816&postcount=1488
замени на:
dout = {1'b1, tape_read, 1'b1, keys_in};
Народ, есть тут кто уже разобрался с арбитром? Кто как считает, можно ли прикрутить GS? :v2_walkm:
Дело может пойти быстрее? :v2_dizzy_coder: если будет мотивация $$$?
ТЕСТ порта #FE (клавиатура) - Порт в порядке !!!
+1 фикс
А резалта замены кода предложенной MVV когда ждать? после работы или сейчас возможность есть ?
шустрые вы какие - пока писал уже 4 поста один из них с ответом на мой вопрос.
что до длины - надо смотреть как он накодирован. скорее всего значение с чем сравнивается - увеличить на некоторое колво.
Этот баг не исправлен: https://code.google.com/p/zx-evo-fpg...af2264eb5b2e15
Спасибо, поправил. Попробую собрать и проверить с исправлением.
Установил Int offset = 2 все в мультиколоре выровнялось!
palsw, поправь в модуле zint.v:
Код:// always @(posedge zclk, posedge int_start_lin)
always @(posedge zclk, posedge int_start_frm) // MVV 31.10.2014
begin
// if (int_start_lin)
if (int_start_frm) // MVV 31.10.2014
intctr <= 6'b000000;
else if (!intctr_fin)
intctr <= intctr + 6'b000001;
end
endmodule
MVV, у меня правка int не взлетела - снег на экране.точки,черточки .TAP не работает,только TRD .в тесте INT нет изменений.
заменил только 2 строчки
то я именно за результат спрашивал - типа помогло или нет. Особо сам код пока не нужен.
к слову - с таким подходом тапки грузится не будут - Сид правил код пзу и вроде грузил тапки через другой порт по 4 бита. то есть для загрузки тапов ( ну мало ли - припрет кого оригинальный тап загрузить) надо будет править код VHDL.
Возможно что и оно. Там надо принудительно одну из половинок адреса для IM2 делать FF. Насколько помню - младшую . Старшая хранится в регистре процессора, а младшая как раз идет с шины данных.
вот мой "родной файлик"
Чет тяжеловато все как-то ещё... :(
У мну: тапки ходят, int меняется - устанавливаю в сетап 0-7, на экране вижу как сместилось влево или вправо.
Десятичную запись от двоичной различить не можем?
Двоичная:
Десятичная:Код:intctr <= 6'b000000;
else if (!intctr_fin)
intctr <= intctr + 6'b000001;
Эээ, эт руками не трогать, прибегут кодеры, по рукам надают!Код:intctr <= 0;
else if (!intctr_fin)
intctr <= intctr + 1;
TimeQuest:
Вложение 49765
на данный момент есть прошивка palsw_30
-tv80s
-за комментирован I2C
-fix порта клавиатуры #FE
palsw - сделай те 4 строки и фикс клавы ( не трогай инт пока! )- да проверь плиз тестом что напишет про вектор IM2. А потом опять продолжиш игрища с интом. а то когда все смешивается - фиг поймеш что работает а что нет - те 4 строки что я дал - похожи на установку вектора для IM2 - вот его и охота проверить - оно ли это!
balu_dark,так уже делал без инта -тест ругался на вектор.Цитата:
сделал еще одни вариант -задал вектор ,а int оставил как было без фикса - так работает прошивка
Blade, все крутится вокгруг INT
С интом все нормально. На тсконфе нельзя измерить его длительность.
Но демки то тоже через зад работают!
ну на самом деле как в реальном спеке сделано - только те кто отреверсил ULA знают.
palsw, int# завязан на inta#. Сигнал int#, формируемый устройством в/в, анализируется в конце выполнения текущей команды. Что такое цикл подтверждения прерывания (inta# = iorq# or m1#), думаю не нужно напоминать? Просто раньше сэкономили на элементах, вместо inta# поставили RC цепочку (схема):
Вложение 49773
Длительность сигнала int# подбирали с помощью R и С. У нас же все сделано аппаратно на элементе 2ИЛИ и триггере устанавливающемся по inta# и анализируется int# поэтому сразу же. От того он в тесте видится типа как короткий.
А что там знать то ULA chip for ZX Spectrum:
У нас ведь времянки завязаны под Pentagon :) Тут немного по другому.Код:// INT generation
reg INT_n = 1;
assign msk_int_n = INT_n;
always @(negedge clk7) begin
if (`cyclestart(vc,248) && `cyclestart(hc,0))
INT_n <= 0;
else if (`cyclestart(vc,248) && `cycleend(hc,31))
INT_n <= 1;
end
Глагне верить в свои силы )
А с тестами как дела обстоят? интов, векторов и прочего?
Нужно запустить на реальной Pentevo+TS_conf и сделать скрин тестов INT.
например
http://i.piccy_.info/i9/4f133cbab84c...G_0578_500.jpghttp://i.piccy_.info/a3/2014-11-01-1...72x354-r/i.gif
и кому верить? 32 такта это правильный результат .