Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Да, на Мега32
Голый ФАТ ничего недаст. В Спекки помимо ФАТа отработана эмуляция ВГ93 и пропатчены прошивки ПЗУ для удобной работы с SD. Весь этот комплекс огого какая вещь
Предполагаю, для подключения реального дисководаБлаго, NedoPC неимоверно круты и уже давно сделали это.
---------- Post added at 17:20 ---------- Previous post was at 17:08 ----------
реальная ВГ93 отпадает, выходов GPIO не хватит![]()
ScorpEvo ZS 1024 turbo+ CF-HDD/FDD/Mouse/SMUC 3.1/ProfROMse/NeoGS/ZC
Speccy-2007 128/AY/TR-DOS
Сайт с документацией к "Scorpion ZS 256"
Пропатчены прошивки там, потому что единственный (?) порт для общения с контроллером - 1Fh.
А остальное - просто доп програмка (снапшот с флешки грузящийся).
Ну а фат сделан на этом:
http://elm-chan.org/fsw/ff/00index_e.html
ZX Spectrum forever!
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Что-то не как опрос клавиатуры не работает в мониторе. Напоминаю что наверное используется не реализованный опрос, когда все выводы ВВ55 предназначенные для клавиатуры программируются на ввод. Пересечение клавиши - два нуля, соответствующие строке и столбцу нажатой клавиши. Вот выдержки кода:
Драйвер клавиатуры:Код:... if res_n = '0' then metod <= "00"; ... elsif (u7rd = '1') then -- запись в порты клавиатуры if a_buff (1 downto 0) = "00" then -- порт А клавиатуры if metod = "00" then dataI <= scan_out0 (7 downto 0); -- код ответа else dataI <= scan_out (7 downto 0); -- код ответа end if; end if; if a_buff (1 downto 0) = "01" then -- порт В клавиатуры if metod = "00" then dataI <= scan_out0 (13 downto 8) & not shift & '0'; -- код ответа else dataI <= scan_out (5 downto 0) & not shift & '0'; -- код ответа end if; end if; if a_buff (1 downto 0) = "10" then -- порт С клавиатуры if metod = "00" then dataI <= "0000" & scan_out0 (17 downto 14); -- код ответа else dataI <= "0000" & scan_out (11 downto 8);-- код ответа end if; end if; ... spetskey:spetskeyboard port map( ... metod => metod,-- метод опроса sp_kb_out0 => scan_out0, -- код ответа для метода №0 ...
Принцип прост: при считывании с одного из портов ВВ55 считывается код с двумя нулями, соответствующий скан-коду PS/2 клавиатуры.Код:always @(posedge clk) begin if (reset) case (metod) 0: begin sp_kb_out0_ <= 18'h00; end ... else begin if (strobe) case (metod) 0: begin case (sp_kb[7:0]) 9'h005: sp_kb_out0_ <= 18'b011101111111111111; //F1 9'h006: sp_kb_out0_ <= 18'b101101111111111111; //F2 9'h004: sp_kb_out0_ <= 18'b110101111111111111; //F3 9'h00c: sp_kb_out0_ <= 18'b111001111111111111; //F4 9'h003: sp_kb_out0_ <= 18'b111101111101111111; //F5 9'h00b: sp_kb_out0_ <= 18'b111101111110111111; //F6 9'h083: sp_kb_out0_ <= 18'b111101111111011111; //F7 9'h00a: sp_kb_out0_ <= 18'b111101111111101111; //F8 9'h001: sp_kb_out0_ <= 18'b111101111111110111; //F9 9'h009: sp_kb_out0_ <= 18'b111101111111111011; //ЧФ 9'h078: sp_kb_out0_ <= 18'b111101111111111101; //БФ 9'h007: sp_kb_out0_ <= 18'b111101111111111110; //СТР ... и так далее на все 12х6 клавиш
Читаем здесь. Есть такой метод. Однако мысль понятна. Реальный ВВ55 нам преподнесёт ещё много сюрпризов. Один уже был: почему то инвертируются сигналы цвета, снимаемые со старшей тетрады порта С.
Последний раз редактировалось fifan; 27.10.2010 в 17:01.
Там нет доказательств. Написать и я могу.
А если интересует метод ввода, который используется во время чтения с магнитофона, то это - А и С на вывод, В на ввод. Как задали в начале монитора, так он и не меняется (в начале монитора стоит запись 82h в РУС).
Может быть дело вот в чём. RAMFOS (ОС Специалиста_МХ) использует такой алгоритм: сначала 12 выводов программируются на вывод и засылаются все нули, а потом анализируется порт В. Если хоть один ноль появится, но включается 2-ой метод опроса клавиатуры, а именно - порт В на вывод, порты А и С на ввод. Пыхотин (ссылка на сайт выше) может действительно написал, не полностью, не подумав.
Вот за это спасибо. Хотел уже начало Монитора-2 дизасемблировать. Приму к сведению эту информацию.
В драйвере клавиатуры действительно используются оба метода, а при чтении с магнитофона по другому нельзя (если не переключать постоянно, как в драйвере клавиатуры), т.к. ввод с магнитофона тоже через порт В идёт.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)