Santechnik,
1 Загружаешь СРМ в адрес 3100 и запускаешь ее.
2 Выходишь в монитор и грузишь с магнитофона СН.СОМ в 100 адрес
3 Запускаешь СРМ с адреса DA00
Дальше по инстукции сахраняешь её командой SAVE
Вроде как то так
Микро-80, Радио-86РК, Океан 240, Ириша, Спектрум-48, NEC PC-8201, ЮТ-88(2017) .
Спсибо всем за совет по запуску CP/M. Все заработало. Только вот квази-диск не работает. Видимо я неправильно понял логику его работы. Буду разбираться дальше. Только сейчас времени опять нет - новогодние/рождественские каникулы на носу и дел невпроврот - все выходные расписаны. Так что небольшая пауза пока
А пока вот вопрос по программному обеспечению. Там утилиты всякие в СР/М должны быть типа STAT.COM, POWER.COM и т.д. Где их взять? А то я скачал что-то из и-нета от какого-то Xerox, работать-то работает, но все надписи на "русском" (типа вместо SPACE - СПАЦЕ ).Какая-то кодовая таблица другая.
Это просто у ЮТ-88 вместо маленьких латинских большие русские. Собственно, в 7-битный набор больше и не влезет - либо то, либо другое. Можно в любом HEX-редакторе исправить маленькие латинские на большие
А-ааа! Понятно! Ну это не долго переделать. Займусь потом. Вообще хочу наборчик таких программ на квазидиске собрать, чтобы потом через DE1 Control Panel просто образ памяти в SRAM заливать и вся система вместе с квазидиском загружена (вот еще один пункт в to do: "Прикрутить для этого интерфейс").
Ввиду "популярности" компа приделывать SD видимо бессмысленно, и квазидиска с программами должно хватить на поиграться и пощупать
В адаптированных биосах обычно были какие-то способы настроить монитор для работы в разных режимах: latin1 и koi7 так, что все программы могли работать без переделок -- и английские и русские. К сожалению, не могу ничего вспомнить про это, поищи документацию.
Больше игр нет
О! Отличная идея! Поставлю второй знакогенератор и выведу переключение на один из выключателей на борде. Где только прошивку взять, чтобы не рисовать? Может от Радио подойдет? Посмотрю попозже.
Возьми файл symgen.bin (из эмулятора Пыхонина, он-же и в моём эмуляторе лежит). Там куча разных вариантов. Посмотреть можно сделав конфиг для моего эмулятора
Первый килобайт, по-моему, тебе как раз подойдёт (максимум, придётся инвертировать, если у тебя инвертированный знакогенератор, как в РК).Код:main.Caption="Test" font : Memory { rom="symgen.bin" } vid : orion-video { plane[0][0]=font }
---------- Post added at 15:23 ---------- Previous post was at 15:15 ----------
А если добавить ещё и CPU:
то можно будет запускать отладчик, и выбрав в нём ПЗУ (по Ctrl+M), редактировать его и наблюдать изменения (после закрытия отладчика).Код:CPU : K580wm80a { }
---------- Post added at 15:24 ---------- Previous post was at 15:23 ----------
Сохранять - Ctrl+S.
Спасибо, b2m! То что надо! Сегодня прикрутил по быстрому - работает как часы. Только проинвертировать предварительно файл пришлось. Зашил в 2К ПЗУ на ПЛИС вторым килобайтом, а А10 повесил на выключатель. Работы на 5 минут. Одним пунктом из todo меньше
Потестировал подольше - неидеально все же. Например какие-то ноты там где перевод строки вставляет. Надо чистить прошивку по всей видимости...
Последний раз редактировалось Santechnik; 15.12.2010 в 14:14.
Знакогенератор подчистил. Теперь работает нормально. Не нравятся некоторые символы из новой таблицы (например $), так что в todo записал пройтись по всем основным символам и заменить их со старой таблицы если выглядят хуже.
Бьюсь с квазидиском. Видимо что-то недопонимаю в принципе его работы. Нужна помощь зала
Вот такой код у меня за память и квазидиск отвечает:
a_bus[15..0] - адресная шина, d_bus_O[7..0] и d_bus_I[7..0] - выходная и входная шины данных. sync_cpu - сигнал SYNC процессора.Код:process (clk20, sync_cpu) -- эмуляция контроллера памяти КР580ВК38 begin if (clk20'event and clk20 = '0' and sync_cpu = '1') then db_status <= d_bus_O; end if; end process; mem_rd <= '1' when (sync_cpu = '0' and db_status(7) = '1' and rd_en = '1' and wr_n = '1') else '0'; -- разрешение чтение из памяти io_rd <= '1' when (sync_cpu = '0' and db_status(6) = '1' and rd_en = '1' and wr_n = '1') else '0'; -- разрешение чтение из порта mem_wr <= '1' when (sync_cpu = '0' and db_status(1) = '0' and wr_n = '0' and rd_en = '0') else '0'; -- разрешение записи в память io_wr <= '1' when (sync_cpu = '0' and db_status(4) = '1' and wr_n = '0' and rd_en = '0') else '0'; -- разрешение записи в порт io_stack <= '1' when (sync_cpu = '0' and db_status(2) = '1') else '0'; -- разрешение обращения к стэку .............................. здесь вырезан неинтересный блок распределения адресов .............................. SRAM_DQ(7 downto 0) <= d_bus_O when (ram_wr = '0' or (io_stack = '1' and wr_n = '0')) else "ZZZZZZZZ"; SRAM_WE_N <= ram_wr; SRAM_CE_N <= '0'; SRAM_LB_N <= kvazi_block(2); SRAM_UB_N <= not kvazi_block(2); SRAM_OE_N <= '0'; SRAM_ADDR <= kvazi_block(1 downto 0) & a_bus; process (clk20) begin if (clk20'event and clk20 = '0') then if (io_wr = '1' and a_bus (15 downto 12) = "0100" and sync_cpu = '0') then case d_bus_O(3 downto 0) is when "1110" => kvazi_block <= "100"; -- если старший бит 1, то квазидиск включен when "1101" => kvazi_block <= "101"; when "1011" => kvazi_block <= "110"; when "0111" => kvazi_block <= "111"; when OTHERS => kvazi_block <= "000"; end case; end if; end if; end process;
Что я недопонял?
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)