О том и речь. Рассматривал журнальную схему. Поэтому весь этот программный выпендреж, после нескольких доработок вылез боком. Думаю и Специалиста это касается в какой-то мере.
Подправил предыдущий свой пост.
Вид для печати
OrionExt, его это конкретно касается. В начальном, базовом варианте, это было оправдано и в этом был успех. А потом, уже в доработках, вроде МХ, не понятно, почему нельзя было поставить 1 регистр на шину данных (которая все равно не буферизирована, в отличии от того же Ориона) и защелкивать слово состояние процессора по SYNC для дальнейшей дифференциации портов ввода-вывода. Ведь все равно вся периферия изменила свое положение, а замена STA/LDA в адаптируемом софте на IN/OUT проста, так как первые используют 3 байта а вторые всего 2 (надо дополнять NOPом).
Вопрос в другом: а была ли массовой установка Z80 в Специалист (или МХ), как это было в Орионе? Ну вот я ставил его в один из кружковых, кто-то еще тоже без сомнений. А массово, среди общего числа пользователей, был такой факт? Если нет - то и проблему никто не нашел.
- - - Добавлено - - -
Не обязательно было править. Дешифрация идет вот так:
Т.е., для R1:R0 адреса F400, F404, F408, F40C ... F4F8 и F4FC однозначны.Код:A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
1 1 1 1 0 1 0 0 x x x x x x R1 R0
+==== F ====+ +==== 4 ====+ +====+
Дорабывать софт не совсем тривиальная задача для рядового пользователя в те годы. Раньше программа запускалась, а теперь нет. Это уже с появления интернетов все начало вылазить с пояснениями (софтовые штучки-дрючки).
Да и на Орионе в те годы в глубинке не было массового перехода на Z80. Схема адаптации еще та вышла. Если не работает - подрежьте там или подмажьте здесь.
Мной была куплена Z80 кард в те годы, но так дело до установки и не дошло.
- - - Добавлено - - -
Экономить на байтах не всегда одинаково полезно. Но кого это волновало в те годы (не многие платформы в разрезе софта могут похвастаться толерантность к апгрейду железа). Как правило, все было прибито гвоздями намертво.
Попробовал добавить в свой эмулятор EmuStudio модель компьютера Специалист. Но так как у меня нет 8080, применил Z80, который уже обкатывал на эмуляторе спектрума и других.
Выяснилось, что некоторые программы не работают на Z80. В частности, тот же бейсик глючит. Когда делаешь, например, LIST вообще зависает. Так и должно быть с Z80? Какие есть нюансы?
КликЦитата:
- Z80 uses P flag for 2's complement overflow, where 8080 does not
- DAA instruction corrects both subtraction as well as addition on Z80, but addition only on 8080.
- Z80 rotate instructions clear the AC flag, but the 8080 does not.
Also, timings are different per-instruction.
Как поступали люди, которые ставили себе Z80 в Специалист, или даже в Орион? Переписывали несовместимый софт, в частности работу с DAA?
Ну, бейсик точно патчили. А так львиная доля софта работала без проблем.
Хотя были исключения. Ну, это больше из-за недопонимания как работает железо (не только Z80) или хитро-попасти авторов программ.
Я не разбирался (т.к CP/M бейсик-компилятор работает, а бейсики-интерпретаторы производные от Эр-Ка-шного МИКРОНА меня никогда не волновали), но в этом форуме в нескольких местах написано, что бейсики ОРИОНА не работают из-за DAA. Надо верить людям, но сам я, например, не видел такого кода и потому не понимаю зачем делать условный переход после DAA. Вроде бы, Z80 в DAA ставит Parity, а КР580 его не меняет. Но зачем анализировать Parity после DAA?
Причиной может быть и флаг Parity/oVerflow, если его анализировать как Parity после арифметических команд, что явное извращение, хотя и встречалось, например, в ПЗУ РК86 и с'экономило там один байт.
Кстати, кроме бейсика, есть и некоторые игры, которые почему-то не работают на Z80. Их немного, 4 или 5. Но кому охота с этими играми разбираться? Кстати, встречал "вредительство", когда с временной рабочей ячейкой программа работает не с помощью STA/LDA, а по IN/OUT, что чуть экономит место и ускоряет, но работает только при КР580 или с Z80 установленном хитроумным способом.
Бейсик ОРИОНА под Z80 исправил в 1993 В.Пушков (была статья в ж.Радио) и потому с процессором Z80 не работают только ранние бейсики ОРИОНА выпущенные до 1993. А бейсики Специалиста под Z80 исправил уже совсем недавно ivagor, есть соответствующая тема.
Кстати, как раз для Специалиста есть программы в которых применены недокумментированные коды КР580. Эти программы никак не могут работать на Z80.
Такие команды для защиты от копирования впервые применил КООП SP580 в 1988. Те, кто кракал МГ-защиты эти команды узнали. И сами стали использовать для защиты от копирования и от модификации своего кода. А вот пользователи ОРИОНА этого уже не узнали, т.к игры от Специалиста достались им уже в адаптированном виде, кракать МГ-защиты не пришлось.
Ну, я так не вспомню. Касательно Ориона, в более свежих версиях этот баг с DAA пофиксили.
Вот эта книжка мне в детстве нравилась - Тищенко В.Г. МикроЭВМ - своими руками. Кому-то отдал почитать, и не вернули:(
В потомках первых версий микрософтовского альтаирского бейсика проблема для z80 во флаге четности(/переполнения) в паре мест. Ну и еще иногда бывают разные уникальные дополнительные проблемы, которые создают переносчики (в одном из специалистовских есть, в одном векторовском есть).
Очень часто при проблемах совместимости 8080 и z80 вспоминают DAA. Но мне, например, пока не разу не встречалась проблема "неидучести на z80" связанная с этой командой. Кроме флага четности/переполнения встречал проблему использования недокументированных кодов команд 8080. Ну и весьма вычурный вариант - использование регистра флагов на стеке как адреса для перехода. В доэксисайзерные времена авторам эмуляторов даже пришлось дорабатывать эмуляцию 8080.
Насчет флагов есть источник лучше справочников - begoon i8080-core
Там не все идеально, но именно флаги обрабатываются 100% правильно. В справочниках практически всегда неполная информация про флаг AC (который H в Z80).
Сделал экспериментальную поддержку клавиатуры, как аналоговой схемы.
Каждый выход порта ВВ55 представляется у меня, как два резистора определенного номинала на ноль, и на плюс питания. Которые меняются в зависимости от того, в каком состоянии находится порт - вход, выход '1' или выход '0'.
Так же есть резисторы подтяжки для линий клавиатуры и сама клавиатурная матрица.
При чтении информации с порта, вычисляется итоговый потенциал на ножке, и если > 2.0 вольт, то это лог '1', иначе '0'.
Потестил немного в бейсике и прочих играх - вроде работает)
Обнаружил, что формат файла для специалиста бывает 2-х типов, при чем, оба имеют расширение .rks.
В первом формате все просто - начальный адрес, конечный, тело и контрольная сумма.
А из чего состоит второй формат? Там обычно в начале какие-то символы, затем много нулевых байт, потом тело программы.
То, что для разных МГ-форматов используется одно и то же расширение, это вредительство со стороны авторов эмуляторов. В реальности, т.е на реальных кассетах, все использовали только один формат, - формат с именем. Формат без имени, это атавизм, пережиток из 1985 года.
Скрытый текст
В РК86 ROM-BIOS и монитор это одна программа, т.к они в одном ПЗУ РФ2. А в Специалисте это две отдельные программы. Т.е, есть отдельно ПЗУ РФ2 содержащее ROM-BIOS и есть отдельная программа монитор, которая может работать как из ОЗУ, так и из ПЗУ C800. ROM-BIOS Специалиста прошит в ПЗУ C000 и содержит 19 стандартных входов в подпрограммы.
Термином монитор называется программа в которой есть директивы и, в частности, директивы для поддержки МГ-ленты. Хотя типов мониторов больше, но МГ-форматы определили два основных типа мониторов - волковский и орловский.
Исторически первым монитором был монитор А.Волкова. Он иногда прошивался во второе ПЗУ C800, но работал всё-равно из ОЗУ по адресу 8D00. Он поддерживал именно тот формат, который обслуживается по сбросу. Т.к в ROM-BIOS нет директив, то по сбросу грузится программа в таком формате, причём после загрузки эта программа запускается на исполнение. Потому ПЗУ C000 иногда называют загрузчиком. Загрузчик позволял грузить по сбросу и использовать уже готовые программы, а также загрузить волковский монитор, с помощью которого уже можно было записывать и читать программы в ОЗУ без автозапуска.
Т.к в таком формате нет имени файла, то ориентироваться в файлах на ленте неудобно. Поэтому в начале 1988 А.Орлов опубликовал другой монитор, который не только прошивался в ПЗУ C800, но оттуда же и работал. Этот монитор имел и входы в подпрограммы, аналогичные подпрограммам ПЗУ РК86 (адреса подпрограмм отличались от адресов в РК86 лишь одним разрядом). Это служило цели облегчить конверсию программ от РК86. Но тем самым это ввело второй стандарт входов в ROM-BIOS, что сделало необходимым наличие не только загрузчика на C000, но и второго РФ2. Хотя большинство игр работает с одним лишь загрузчиком, но почти все системные программы требуют наличие и орловского монитора с входами на C800.
Орловский монитор сохранил формат без имени загружаемый по сбросу (директивы R,W), но дополнительно ввёл более удобный формат с именем (директивы I,O). Это оказалось очень удобно, отчего формат без имени мгновенно вышел из употребления.
Pyk делая в конце 80-тых эмулятор Специалиста решил, что раз имя программы уже содержится в имени MSDOS-файла, то формат с именем для эмулятора вообще не нужен. Позднее и другие эмуляторы стали использовать такой формат.
Файл в формате с именем в эмуляторах можно загрузить стандартной директивой I, но имя приходится указывать тоже RKS, т.к только такие файлы выводятся в меню открытия файла. Я предлагал ввести иное имя, чтобы избежать путаницы, но увы, авторы эмуляторов это проигнорировали. Потому, чтобы не путаться, я в файлах грузящихся по R использую расширение 'rks' маленькими буквами, а в файлах грузящихся по I использую расширение 'RKS' большими буквами.
[свернуть]
Формат с именем, для загрузки по I:
256 нулевых байтов (первый пилотон)
E6 - синхробайт
D9, D9, D9 - признак формата с именем
17 байтов - имя файла кончающееся нулём, т.е само имя может иметь длину до 16 букв
768 нулевых байтов (второй пилотон)
E6 - синхробайт
Начальный адрес (сначала младший, затем старший байт)
Конечный адрес (сначала младший, затем старший байт)
Тело файла (длиной: кон.адрес минус нач.адрес +1)
КС - контрольная сумма по C82A (сначала младший, затем старший байт)
Второй пилотон сделан длинным специально, чтобы не имея орловского монитора можно было загрузить лишь одним загрузчиком. Тогда на слух пропускаем первый блок, содержащий имя и жмём на кнопку СБРОС, как услышим начало второго пилотона. В реальности для любого пилотона достаточно 60 байтов. Потому в файле RKS для загрузки в эмулятор удобно подгонять длину заголовка (включая байт E6) под 256 байт, тогда конверсия из одного формата в другой заключается лишь в добавке или удалении 256 байтов в начале файла.
Так что специальная программа для конверсии форматов не нужна. Используя редактор UltraEdit, я за 15 минут вручную перевёл полсотни файлов без имени в формат с именем для загрузки по I.
Те программы, которые я с сайта www.spetsialist-mx.ru имеют другой формат, похожий на тот, что описан, но без первого пилоттона.
Обычно там так:
D9, D9, D9 (а иногда вместо этого что-то типа 70, 8F, 82, 8F).
Затем имя
Затем пилоттон разной длины, от 256 байт до 512,
Затем E6, затем уже стартовый и конечный адрес.
Лично я бы для эмулятора оставил только первый формат, без пилоттонов. Т.к. там есть все необходимое - имя (имя файла .rks), адрес начала, и адрес конца. И все это прекрасно грузится начальным загрузчиком и автоматически запускается.
Всем спасибо, с форматами разобрался)
Схема клавиатуры Специалиста впервые была опубликована в ж.МК 02.1987, но эта схема, драйвер, подписи и назначения клавиш позднее были изменены в ж.МК 04.1989. Были добавлены клавиши <TAB> и <АР2> и изменены вырабатываемые коды и, соответственно, подписи клавиш функционального ряда.
Т.к найти полноценную схему клавиатуры Специалиста с правильно подписанными клавишами невозможно, а при самостоятельном изготовлении клавиатуры из кнопок, а также для программирования прямого опроса матрицы, такая схема необходима, вот эта схема. Её всегда полезно иметь под рукой каждому владельцу Специалиста, т.к размер схемы всего 4 кб, что не существенно обременит винчестер.
http://ipic.su/img/img7/fs/Klaviatur...1521463140.png
Спасибо! Весьма полезно и очень кстати.