Так что расчехляй своего зверя :)
Заодно и эмуль проверить надо. Насколько я посмотрел в дампе кассеты - там вполне себе прошивка 1982 лежит.
Вид для печати
Так что расчехляй своего зверя :)
Заодно и эмуль проверить надо. Насколько я посмотрел в дампе кассеты - там вполне себе прошивка 1982 лежит.
Один байт всё-таки отличается, по адресу 3А1А вместо FF стоит F7. Специально так сделали или у авторов ПЗУ случайно считалось неправильно - неизвестно.
А эмуль не надо проверять, эмуляцию режима ZX я не доделал, т.к. не было нужных файлов (zx.com, kbd.snc). Теперь есть над чем подумать.
Как я и предполагал, ВГ75 настраивается на высоту символа 16 пикселей, и в памяти создаётся табличка с последовательным перебором всех символов. Часть младшего байта адреса задаётся аттрибутами ВГ75. А вот что я не мог предположить, так это то, что старший байт адреса тоже как символ выдаётся, т.е. ширина экрана не 40 символов, а 80, и символы объеденены в пары (младшие биты, старший байт адреса).
Вобщем - копаю дальше.
Это я не тебе писал :) а байтмэну.
сам SOS82 я не проверял - просто нашел надпись синклер ресерч и понял что все что надо таки есть в комплекте.
А вот с эмулятором - подождем продвижений еще и в этой эмуляции.
Кстати возможно эмулируется только бэйсик. Поэтому и жду инфу от владельцев реалов.
Ну вот, все заняты делом. А я так и живу без двоеточия :-(
Потому, что bt-формат [показывает пальцем в сторону b2m] ;)
12 - заголовок bt-блока
далее байты с ленты
2+4 - пилот+синхропоследователь ость
данные, 24 - заголовок блока или 2048 - блок
2 - CRC
0...2 - хвост, лишние байты (post-pilot?)
В моём логе длина - это данные+crc+хвост.
Спасибо (в алфавитном порядке) b2m, DDp, dk_spb за разборки с уникальным ПО для Арго!
Не за что. Мне бы еще свободного времени побольше, я бы ууух....... ;-)
А схемы и содержания РЕшек ни у кого не появилось?
ТУ я заказал и оплатил....
В ТУ - одна ерунда. Вообще ни слова про внутреннюю организацию.
Нужен совет:
на Арго не гасится бордюр (смотри аттач).
Рабочее поле я могу двигать влево-вправо, балуясь конденсаторами в RC цепочках двух половинок АГ3 (видимо они как раз выдают КСИ и ССИ). При этом видно что бордюр есть вокруг всего рабочего поля (не только слева и снизу как на фото). На бордюре рябь, то есть это не отображение лишних кусков ОЗУ. Ни схемы, ни описания нет. На что посоветуете посмотреть?
ВГ75 мб того? я блин не помню как там вообще бордюр формируется.
Спасибо, погляжу что там с 35-й ногой.
а я до своего никак добраться не могу.... то бобинники, то ещё какая хрень...
Две разных версии ПЗУ.
1-я как в эмуляторе, 3-я - похоже битая 1-я (хотя из двух байт разницы только первый похож на "уплывание ПЗУ")
Что думаете?
кстати, 3я версия в эмуляторе команду I вроде как отрабатывает, только букву на экран не выводит.
Насколько я понял, чтобы показать 80 символов на телевизоре, там не всё так просто. ВГ75 не может выдавать бордюр, сигналы гашения и КСИ/ССИ, он выдаёт только КСИ/ССИ. Поэтому для формирования дополнительных полей там используется ВИ53. Выход ВГ75 используется для запуска одновибратора в одном из каналов ВИ53, формируя таким образом правый бордюр. Выход ВИ53 используется для запуска АГ3, который формирует реальный ССИ (для КСИ аналогично). Остальное время, пока активен выход ВГ75, используется как левый бордюр.
То, что экран стабилен, говорит о правильной работе ВГ75, ВИ53, АГ3. Выходы ВГ75 и АГ3 должны объединяться логической функцией, чтобы получить сигнал формирования бордюра. Начиная оттуда нужно искать проблему. Я так понимаю, оно должно идти на мультиплексор, который переключает выход РУ5 (возможно через регистр) с выходом регистра цвета бордюра. Возможно этот мультиплексор накрылся.
>ВГ75 не может выдавать бордюр, сигналы гашения
Почему? А что у него на 35-ой ноге?
Или речь о том что 80 символов на телевизоре слишком нестандартно для ВГ75?
Остальное посмотрю. У меня в планах сегодня потыркаться осцилографом.
Речь о том что 80 символов в строке было не стандартным для самих бытовых цветных телевизоров выпускавшихся в СССР. 640 точек было видно настолько хреново что глаза вылазили. (640 точек в строке / 8 точек ширины символа давали 80 символов в строке.) Поэтому как правило максимальное количество пикселей дававшее четкую картинку символов - было 320 точек в строке(точка получалась в 2 раза шире).
Тот же Спектрум имел всего 256 точек в строке именно из за необходимости его нормального использования на любых телевизорах ( то-есть с высоким разрешением и за бугром проблемы были).
Там не совсем то гашение. Оно конечно активно во время ССИ/КСИ, но не для формирования бордюра. Оно используется, например, для мигания, формирования пустых линий между строчками, а также если встретится спец. команда конца строки/экрана или ПДП не выдаёт символы.
Проблема в том, что ССИ выдаётся сразу же после того, как кончился самый правый символ. А в команде инициализации можно указать лишь длительность ССИ. По окончании ССИ сразу же начинается левый символ. Именно поэтому в РК память текстового экрана с "дырками".
---------- Post added at 22:25 ---------- Previous post was at 22:23 ----------
А для телевизора нужны дополнительные поля чёрного цвета.
Есть какие сподвижки с эмуляцией?
Даже и не начинал. Времени вообще нет.
вернулся...
С возвращением.
да в силе-то оно в силе, вот только каким образом его теперь в Росиию переслать - ума не приложу :-)
А что, УкрПошта в РФ не принимает посылки теперь?
Отправьте в DE, адрес готов дать
Кстати, Becoss, если всю тему не читал - кассету мы нашли, файл для эмулятора на 20-той странице. Есть кое-какие вопросы: неясно назначение битов порта 80h, а также порта маппера памяти (0A1h,0A9h,0B1h,0B9h).
Про кассету уже прочитал. Это просто чудо какое-то. Я, признаться, не верил, что сможем найти её.
По-поводу портов. Посмотрю, вспомню. Нужно добраться до десктопа . пока с планшета.
А эмулятор насколько полноценно работает?
Эмуляцию экрана я ещё не делал, но сам ZX стартует, правда вместо графики - идущие подряд пары символов (старший байт адреса атрибутов и символ с последовательно увеличивающимся кодом - младшие 7 бит адреса графики). Три части, перед началом каждой свой спец-символ, задающий атрибуты символов ВГ75 - тоже часть адреса.
Опрос клавиатуры там мудрёный, используется NMI при чтении порта 0FEh плюс другая раскладка памяти в режиме NMI. Это тоже ещё не сделано. Так что смотреть пока не на что.
Начал делать эмуляцию NMI при чтении порта 0FEh, но упёрся в непонимание, каким образом KBD.SNC работал на реальном Арго. Трассировка этого обработчика наводит на мысль, что написан он с ошибками. Если изменить один байт, то клавиатура в режиме ZX начинает худо-бедно работать, но я не сторонник грязных хаков. Вряд-ли кто-то разбирался с этим обработчиком. Единственный, кто это мог быть - Becoss. Понимаю, что за давностью лет, всё уже забылось, но как говорится, одна голова хорошо, а две лучше. Может кто-нибудь посмотрит на KBD.SNC? У меня просто уже идеи кончились.
---------- Post added at 12:21 ---------- Previous post was at 12:14 ----------
И ещё - просьба в владельцам реала: проверьте пожалуйста, действительно ли запускается ZX.COM и клавиатура работает?
Поэтому выкладываю как есть, кому интересно - качайте с моего сайта.
Пока работает только если хакнуть KBD.SNC:
- после загрузки ZX запустить отладчик
- поставить точку останова на 0066
- нажать F5, точка сработает - можно её убрать
- в окне дампа перейти к адресу 015D и вместо 43 записать 41
- нажать F5
После загрузки ZX кассету с системой нужно "вынуть" (нажать на тулбаре кнопку воспроизведения ещё раз).
Shift в режиме ZX находится где русская буква Б, поэтому чтобы набрать LOAD "" нужно нажимать J, затем < и не отпуская её нажать P.
---------- Post added at 01:21 ---------- Previous post was at 01:20 ----------
Да, раскладку клавиатуры я немного изменил, теперь проблемы с двоеточием нет, оно на месте.
Возможно, это не хак, а просто при оцифровке кассеты один битик проскочил не тот?
Нет, там так задумано было. По непонятным причинам создатели решили, что IN A,(0FEh) и IN A,(C) можно обрабатывать одинаково, и что старший байт на шине адреса во время команды ввода будет равен регистру A, но драйвер клавиатуры в ZX использует именно команду IN A,(C), а там старший байт должен браться из регистра B (как впрочем и в остальных командах ввода). В имеющемся KBD.SNC считается, что нужно брать байт из регистра, куда происходит ввод. Такой обработчик правильно обрабатывает только команду IN A,(0FEh). Возможно, у создателей была какая-то версия ROM-а, в которой драйвер использовал именно эту команду (и запускали они игрушки, в которых тоже использовалась именно эта команда).
Хммм... А какой вариант Z80 использовался в компьютере Арго?Возможно, это был не совсем точный клон, который нестандартно выставлял значение старшего байта адреса при IN A,(0xNN) ??? Или у тебя эмуляция не совсем точная. Что выставляет оригинальный Z80 при IN A,(0xNN) ?? Точно регистр В ?
Посмотрел фотку на плате, там проц от ST Z8400AB1.
Вот здесь http://www.z80.info/zip/z80cpu_um.pdf такое описание:
IN A, (n)
Operation: A←(n)
Op Code: IN
Operands: A, (n)
Description:
The operand n is placed on the bottom half (A0 through A7) of the address bus to select the I/O device at one of 256 possible ports. The contents of the Accumulator also appear on the top half (A8 through A15) of the address bus at this time. Then one byte from the selected port is placed on the data bus and written to the Accumulator (register A) in the CPU
Просмотрел доки на ST Z8400AB1, тута: http://pdf1.alldatasheet.com/datashe.../Z8400AB1.html
Аналогично - на старший байт адреса выставляется аккумулятор.
Нет, IN A,(0xNN) выставляет регистр A.
А вот IN A,(C) выставляет регистр B, также как и IN B,(C) и др. аналогичные команды.
То число 43h это адрес, куда сохряняется регистр A при входе в обработчик, а регистр B сохряняется по адресу 41h.
А место, где это число меняется - обработка команд IN A,(0xNN) и IN A,(C).
С таким вопросом можно было и не в личку :)Цитата:
Сообщение от predatoralpha
При срабатывании NMI карта памяти Арго переключается (это ж почти как защищённый режим на i386).
Есть два банка памяти по 64Кб:
1. рабочая память, оттуда читает символы ВГ75
2. квазидиск + знакогенератор (он же - видео-память в режиме ZX), сюда имеет доступ подсистема видео-вывода
Процессору же память видна в зависимости от режима по-разному. После сброса:
0000-F800 банк 1
F800-FFFF ПЗУ
В режиме ZX:
0000-3FFF банк 1, только чтение
4000-5FFF банк 2, абсолютный адрес ОЗУ E000-FFFF
6000-FFFF банк 1 (тут есть сомнение, возможно 6000-77FF это тоже банк 2)
В режиме после срабатывания NMI:
0000-3FFF банк 1, абсолютный адрес ОЗУ 4000-7FFF
4000-5FFF банк 2, абсолютный адрес ОЗУ E000-FFFF
6000-FFFF банк 1 (тут есть сомнение, возможно 6000-77FF это тоже банк 2)
Т.е. KBD.SNC грузится по адресу 4000h, но после срабатывания NMI он расположен в нулевых адресах вместо ROMа спекки.
но ведь там же LD a, (0x0043)
http://joxi.ru/jgmvevRhpe4raM
http://joxi.ru/qVrwQ8oCBox2Xg
---------- Post added at 00:29 ---------- Previous post was at 00:17 ----------
>(тут есть сомнение, возможно 6000-77FF это тоже банк 2)
нет, только не забываем, что ROM 0xF800 отключаем
Вот я и говорю, что грузится из памяти, куда сохранился регистр А (см. 007D-0081). Для in a,(0FEh) верно, а для in a,(с) - нет. А обе команды одинаково обрабатываются (см. 0120-0127, из порта 81h считывается последний считанный байт в цикле М1 до NMI).
ПЗУ я учёл, просто не стал вдаваться в детали, к тому-же не совсем ясно, какой именно бит (из старших 4-х) порта карты памяти отвечает за отключение ПЗУ.
Сомнение моё основывается на предположении, что режим 320х200 всё-таки можно организовать, а в этом режиме для точек нужно всё пространство 4000-5FFF, однако атрибуты тоже должны считываться из банка 2. Где, в таком случае, они расположены?
---------- Post added at 18:33 ---------- Previous post was at 18:22 ----------
А ещё, код системы CP/M переносится в область 5000-71FF, т.е в режиме ZX эта область банка 1 не видна. А для возврата в нормальный режим используется то, что область 7F00-7FFF не переключается при выходе из NMI и смене соответственно карты памяти.