Судя по скринам, как раз эти шашки среди имеющихся у меня lvt называются checkers.lvt. Они работали и в предыдущей версии и в обновленной
Выложил обновленный вариант (sof и исходники софта), extmem(1) теперь включает не только read only пзу 0000-0FFF но и доп.озу по адресам C000-C7FF. Игрушки, залезающие за A000 (например rockman) заработали
Имхо теперь любые однофайловые программы должны запускаться. С многофайловыми, вероятно, поможет только замена процедур чтения бита, по аналогии с эмулятором b2mа
могу подсказать почему не все работает.
1. на схеме Львова есть ошибка:на дешифратор D28 заходит не А3, а А5
причем если проследить по картинке разводки платы, то там та же ошибка.
Смотрите оригинальную документацию, там написано порты С0-С3 и D0-D3,
для этого нужна линия A5. Ну и + я прозвонил на живом Львове.
Внимание: А3 в дешифрауии не участвует вообще.
2. Карты памяти: при включении VRAM А15 подаваемые на память всегда 1
kapitan-u, планируете ли реализовать аутентичное торможение?
Первый релиз Лвов ПК-02 для Aeon Lite
В комплекте
- исходники VHDL
- исходники С
- готовый образ диска для SD со всем необходимым и образами дисков
http://unofficial.portaone.com/~kapitan/LvovPK-02.zip
Умеет:
Львов ПК-02
* 256Kb
* переключение плоскостей экрана
* AY 8910 Sound
* 512x256 Mono mode
* Interupts
* FDD 1818ВГ93
На VHDL реализован универсальный 1818ВГ93, который можно легко пересаживать на любой другой компьютер. К примеру, сделать РК-86 с дисководом займет пол дня.
Внутри у ВГ93 работает более чем полноценный ZX Spectrum. За основу для Спектрума взят известный туториал от Ewgeny7. Он разогнан на 7Mhz и у него полноценные 64Kb RAM, развертка переделана на 60Hz, добавлена двухпортовая VRAM на FPGA, заменена клавиатура (на безглючную VHDL из проекта speccy), исправлено пару ошибок(двойной импульс INT и т.п.). Имеется полноценный адаптер двухпортового доступа к SRAM - Львов и Спектрум работают с ней одновременно. Перед стартом Aeon заружает в ZX софт:
- Модифицированный ZX 48K ROM, который, после инициализации всего чего надо, запускает программу по адресу 0x6000
- Файл с текстовыми расшифровками ошибок FatFs
- и, собственно, саму программу VG93
Переключать экраны Львов - ВГ93 можно кнопками WinLeft & WinRight
На экране ВГ93 бежит консоль, там есть встроенный help, можно наблюдать за выполнением комманд, а самое главное запустить file manager и выбрать DSK файлы!!
Сразу после старта софт пробует вставить default.dsk из корня SD карты в драйв А: остальные будут пустые.
В файл менеджере, так же имеется help
Самое главное, что надо знать:
- софт понимает и показывает только DSK файлы без всяких заголовков - чистые данные. Для определения формата он пытается найти поочереди
* файл с таким же именем как и DSK но с расширением CFG в текущем каталоге
* файл default.cfg в текущем каталоге
* файл default.cfg в корне SD карты
Описания там вот такие:
т.о. ВГ93 может работать с любым форматом дисков. В прилагаемом образе есть все нужные для Львова CFG файлы. К примеру, посмотрите файлы для CPM80.Код:[VG93 DSK Config] Name=Lvov MFM Encoding=MFM Tracks=83 Sides=2 Sectors=16 First Sector ID=1 Sector Size=256
ВГ93 работает как та чтение, так и на запись. Переключатель защиты записи на карте не работает - FPGA не имеет к нему доступа, но будет работать защита от записи на уровне файлов.
Для ВГ93 реализованны все команды! Даже Write Track, которая используется для форматирования. На консоли можно видеть все подробности формата. Сами данные никуда не пишутся - для этого нет памяти.
Совместимось Львова на невиданном доселе уровне.
За основу был взят Львов ПК-01 идущий с Aeon Lite и глубоко переделан.
По сути, от него осталась толко видео подсистема + в нее был добавлен режим 512х256 и клавиатура,
которая была доработана для режима ленивого сканиврования (это вызывало несовместимость с играми даже для ПК-01).
ПК-01 работает на 100%
ПК-02 на 99.5%
есть пару игр, которые не идут и я разберусь с этим попозже.
Работают игры и дэмо с AY звуком, доп. памятью и высоким разрешением экрана. Софт для тестирования быстродействия Z80 не идет по причине бага в Т80: последовательность команд
лочит процессор. Причина такова, что после выполнения EI во время следующей за ней команды прерывания запрещены! Это нормально, но во время ваполнения HALT процессор на самом деле выполняет много команд NOP, и это тоже правильно, но прерывания должны быть запрещены только в течении одного полного цикла. Если последовательность команд переделать наКод:EI HALT
то все будет в порядке. Ждем фикса от Т80!Код:EI NOP HALT
Артефакты:
- BASICZ80 запускается только если сначала запустить игру ZYBEX с этого же диска, нажать сброс и только потом BASICZ80
Это работает ТОЧНО так же как на железном ПК-02.
Причина неизвестна.
Совместимость ПК-01 полная, со скидкой на то, что он на Z80.
BASIC3 с диска пойдет, но будет неправильно работать арифменика.
На ПК-02 идет CPM-36 и CPM80 без проблем!
Для запуска CPM-36 надо вставить диск system в А: и нажать П/Д - F12 на Львове.
Для запуска CPM80 надо вставить диск Loaders и запустить с него
CPM80MFM в Хамелеоне, после чего вставить в А: один из CPM80 дисков, вернуться во Львов и нажать любую кнопку.
На одном из дисков есть программа FORMAT3 для форматирования.
При форматировании времменно меняется режим MFM/FM и размер сектора независимо от типа DSK и запрещается фактическая запись на SD.
Восстановление происходит после команды Restore или Force Interupt. Это обеспечивает корректную работу форматирования и защиту DSK
от порчи при записи чистого каталога с меткой диска после форматирования.
Nice to have: возможность включения логирования консоли на SD карту,
но памяти для этого нету ВООБЩЕ! Утрамбовывать приходилось до последнего байта. Все рабочие области памяти пересажены внутрь ПЗУ.
Скорее всего в следующей версии проекта будет использованна лучшая хост система с большим количеством памяти. Быстродействия 7MHz ZX хватает. При отключеном логе комманд скорость напоминает скорость реального дисковода. Ограничена она скоростью SD карты, поскольку RAM мало и каждый раз подгружается новая дорожка. Быстродействие можно ускорить отключив имитацию времени поиска дорожки как у реального дисковода (включена по умолчанию). Но тогда могут быть сопроблемы совместимости! Не пойдет CPM80 она реально считает индексные импульсы во время позиционирования.
Картинки.
Консоль
Файл Менеджер
Выбран DSK. Ошибка на экране будет встречаться часто. Те кто снимал образы для Хамелеона незнал, что у него 83 дорожки и снял только 80.
Если такой диск заполнен до конца, то последние файлы на полностью заполненом диске не будут читаться и будет выдана соответствующая ошибка.
Лог выполнения команд на консоли. Запись короткого файла.
Лог выполнения команды форматирования и пошаговая отладка.Так же есть возможность вклбчит пэйджер консоли
для постраничной остановки.
Требуется компилятор z88dk-20141201 в более поздних версиях есть известная ошибка с integer types casting.
Использована библиотека FatFs by Elm Chan с исправленным мной драйвером SD карты.
Библиотека позволяет делать все, но памяти на Спектруме мало, поэтому неработают длинные имена и Code Pages & UNICODE (да и ненадо это, непонятно что делать с ними на экране спектрума), проваливание в под директории ограничено длинной пути для приводов(мало памяти), но достаточно глубока для практических целей.
Сделана полноценная расшифровка ошибок и полная их обработка с автовосстановлением. В любой момент можно вынуть карту и вставить ее назад!
Have Fun!
Последний раз редактировалось kapitan-u; 06.07.2015 в 22:47.
пока недобрался до этого, да оно и несильно нужно
исправил
например MIPS, перекомпилировать все под нее не составит труда
---------- Post added at 17:54 ---------- Previous post was at 17:12 ----------
было
сталоКод:KEYB_D <= not Matrix(0) when KEYB_A(0) = '0' else not Matrix(1) when KEYB_A(1) = '0' else not Matrix(2) when KEYB_A(2) = '0' else not Matrix(3) when KEYB_A(3) = '0' else not Matrix(4) when KEYB_A(4) = '0' else not Matrix(5) when KEYB_A(5) = '0' else not Matrix(6) when KEYB_A(6) = '0' else not Matrix(7) when KEYB_A(7) = '0' else "11111111"; KEYB_D2<= not Matrix2(0) when KEYB_A2(0) = '0' else not Matrix2(1) when KEYB_A2(1) = '0' else not Matrix2(2) when KEYB_A2(2) = '0' else not Matrix2(3) when KEYB_A2(3) = '0' else "1111";
Код:KEYB_D <= "11111111" and ( not Matrix(0) or (7 downto 0 => KEYB_A(0)) ) and ( not Matrix(1) or (7 downto 0 => KEYB_A(1)) ) and ( not Matrix(2) or (7 downto 0 => KEYB_A(2)) ) and ( not Matrix(3) or (7 downto 0 => KEYB_A(3)) ) and ( not Matrix(4) or (7 downto 0 => KEYB_A(4)) ) and ( not Matrix(5) or (7 downto 0 => KEYB_A(5)) ) and ( not Matrix(6) or (7 downto 0 => KEYB_A(6)) ) and ( not Matrix(7) or (7 downto 0 => KEYB_A(7)) ); KEYB_D2<= "1111" and ( not Matrix2(0) or (3 downto 0 => KEYB_A2(0)) ) and ( not Matrix2(1) or (3 downto 0 => KEYB_A2(1)) ) and ( not Matrix2(2) or (3 downto 0 => KEYB_A2(2)) ) and ( not Matrix2(3) or (3 downto 0 => KEYB_A2(3)) );
зачем? полноценный продукт, пользуйтесь на здоровье. если будут баги - исправлю
V1.1 Перезелил архив, ссылка та же.
Вчера пока писал описание понял, что надо откорректировать.
- Форматирование. Теперь все равно какого типа DSK вставлен.
При форматировании времменно меняется режим MFM/FM и размер сектора независимо от типа DSK и запрещается фактическая запись на SD.
Восстановление происходит после команды Restore или Force Interupt. Это обеспечивает корректную работу форматирования и защиту DSK
от порчи при записи чистого каталога с меткой диска после форматирования.
- добавлен страничный пейджер в консоль с возможностью включения-выключения
- усовершенствованна диагностива при выходе головки за пределы DSK
- вынесен консольный help в отдельный файл con_help.txt загружаемый через config.ini
- даже с учетом экономии памяти на con_help.txt пришлось пожертвовать командой Read Address и она вынесена в условную компиляцию (думаю она никогда и непонадобится)
Последний раз редактировалось kapitan-u; 19.06.2015 в 05:22.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)