С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Не совсем. Если запустить моделирование схемы ПК-6128ц, то там микросхемы К155РУ2 блокируются 8 раз на время ССИ перед КСИ и на 8 строк в конце сигнала КСИ, в это время палитру нельзя записать:
Если ошибок в перерисовке схемы нет, то в реале было также, а в моей схеме это было исправлено и запись палитры доступна в любой момент. А как запись палитры была реализована в эмуляторах -- не могу сказать...
Последний раз редактировалось Improver; 30.09.2024 в 13:05.
ivagor(30.09.2024)
В них даже для 06Ц зоны непрограммируемости не реализованы, кроме VV при включении соответствующей опции, вряд ли с 6128 ситуация лучше. Хотя помню, что по крайней мере в старых версиях Emu (скорее всего так и в новых) для 6128 была странность с непрограммируемостью палитры сразу после прерывания.
Improver(30.09.2024)
Вчера добавлял поддержку формата .cas в свой эмулятор. Добавлял, основываясь на анализе .cas-файлов, которые нашёл.
Всё уже работает (по-крайней мере - те .cas-файлы, которые нашёл - все нормально запускаются), но возможно что-то я упустил. Поэтому есть несколько вопросов:
1. В .cas-файлах могут храниться только Бейсик-программы? или могут быть и какие-то другие?
2. Формат .cas (как я его понял, основываясь на реверсе):
а) 0xD3,0xD3,0xD3,0xD3;
б) ASCII-имя_файла, завершающееся тремя 0x00 подряд;
в) 0x55[0 ... k байт. подряд], завершается 0xE6 (каково макс. возможное значение k?);
г) 0xD3,0xD3,0xD3,0x00;
д) тело_программы [1...n байт];
е) 2 байта контрольной суммы.
Всё ли правильно?
И особенно интересен пункт "в": Может ли вместо 0xE6 быть его инверсия =0x19? И если да - тогда все байты после неё нужно инвертировать?
В тех .cas-файлах, что удалось найти, везде только 0xE6.
В этом формате могут храниться файлы Бейсика, записанные по команде CSAVE, BSAVE и файлы Монитора-отладчика.
Там примерно так должно быть:
Формат CSAVE в CAS следующий:
- 4 байта 0D3h
- имя (до 127 байт)
- 3 байта 0h
- заголовок 768 байт 55h
- синхробайт 0E6h
- 3 байта 0D3h
- байт 0h
- байты файла ==========
- 3 байта 0h
- младший байт контр. суммы всех байтов файла без переноса
- старший байт контр. суммы всех байтов файла без переноса
Формат BSAVE в CAS следующий:
- 4 байта 0D2h
- имя (до 127 байт);
- 3 байта 0h
- заголовок 256 байт 0h
- синхробайт 0E6h
- ст., мл. байт адреса начала;
- ст., мл. байт адреса конца;
- байты файла ==========
- 1 байт контр. сумма всех байтов файла без переноса
Формат Монитора-отладчика совпадает с BSAVE, только имя файла ограничено до 11 байт.
Некое описание форматов Вектора я собрал вот тут, если что...
Ok. Значит я правильно разобрал .cas-формат. И всегда только 0E6h. Без инверсии.
Вот тут неясность: Я считал, что эти 3 байта 0 - входят в тело файла. И их туда включаю. В Бейсике (который в базовой поставке, v2.5 вроде) есть две ячейки в памяти, в которых хранится начало и конец программы в ОЗУ. И, если исходя из их содержимого вычислить размер программы, то он будет включать в себя эти 3 хвостовых 0.
У меня в эмуляторе так описаны ячейки Бейсика:
enum {BASIC_PRG_CSUM = 0x4015, BASIC_PRG_START = 0x4043, BASIC_PRG_END = 0x4045};
Эти: BASIC_PRG_START, BASIC_PRG_END.
Вот за это - Большое Спасибо! Получается, что .cas может содержать не только Бейсик-программы, но и в кодах. И что по содержимому их можно различать. Добавлю в свой эмулятор это.
Последний раз редактировалось rst; 30.09.2024 в 15:27.
Возможно и так, по крайней мере я в скетче ардуино-плеера заремил вывод этих трёх нулей, пометив, что они должны быть в файле BAS... Но в любом случае, без нулей в конце программы Бейсик будет выдавать ошибку, поэтому пометил этот момент в формате вывода.
- - - Добавлено - - -
Да.
Похоже - у "Virtual Vector" сносит крышу, если в Бейсике в команде BSAVE указать начальный адрес больше конечного. Пишет в файл какой-то мусор.
Oleg N. Cher(01.10.2024)
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)