Важная информация

User Tag List

Страница 6 из 7 ПерваяПервая ... 234567 ПоследняяПоследняя
Показано с 51 по 60 из 63

Тема: Специалист: Вопросы программирования

  1. #51
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Чего именно патчили в бейсике? DAA или может еще флаг P/V?
    Я не разбирался (т.к 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. Те, кто кракал МГ-защиты эти команды узнали. И сами стали использовать для защиты от копирования и от модификации своего кода. А вот пользователи ОРИОНА этого уже не узнали, т.к игры от Специалиста достались им уже в адаптированном виде, кракать МГ-защиты не пришлось.
    Последний раз редактировалось barsik; 27.02.2018 в 15:54.

  2. #52
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,218
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    с временной рабочей ячейкой программа работает не с помощью STA/LDA, а по IN/OUT, что чуть экономит место и ускоряет, но работает только при КР580 или с Z80
    Как можно In/Out использовать как рабочую ячейку?

  3. #53
    Guru
    Регистрация
    16.12.2008
    Адрес
    Kharkov, Ukraina
    Сообщений
    2,221
    Спасибо Благодарностей отдано 
    4
    Спасибо Благодарностей получено 
    21
    Поблагодарили
    18 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Чего именно патчили в бейсике? DAA или может еще флаг P/O?
    Ну, я так не вспомню. Касательно Ориона, в более свежих версиях этот баг с DAA пофиксили.

    Цитата Сообщение от Titus Посмотреть сообщение
    Киньте документик, в котором есть сводная таблица, как каждая команда 8080 влияет на флаги.
    Вот эта книжка мне в детстве нравилась - Тищенко В.Г. МикроЭВМ - своими руками. Кому-то отдал почитать, и не вернули
    Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...

  4. #54
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,841
    Спасибо Благодарностей отдано 
    653
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В потомках первых версий микрософтовского альтаирского бейсика проблема для z80 во флаге четности(/переполнения) в паре мест. Ну и еще иногда бывают разные уникальные дополнительные проблемы, которые создают переносчики (в одном из специалистовских есть, в одном векторовском есть).
    Очень часто при проблемах совместимости 8080 и z80 вспоминают DAA. Но мне, например, пока не разу не встречалась проблема "неидучести на z80" связанная с этой командой. Кроме флага четности/переполнения встречал проблему использования недокументированных кодов команд 8080. Ну и весьма вычурный вариант - использование регистра флагов на стеке как адреса для перехода. В доэксисайзерные времена авторам эмуляторов даже пришлось дорабатывать эмуляцию 8080.

  5. #55
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,218
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от ivagor Посмотреть сообщение
    В потомках первых версий микрософтовского альтаирского бейсика проблема для z80 во флаге четности(/переполнения) в паре мест.
    Да, как только поправил флаг четности, сразу бейсик заработал.
    Недокументированные команды тоже сделал на всякий случай.
    И флаг F, чтобы 3 и 5 биты были всегда в 0.

  6. #56
    Guru
    Регистрация
    07.08.2008
    Адрес
    г. Уфа
    Сообщений
    7,841
    Спасибо Благодарностей отдано 
    653
    Спасибо Благодарностей получено 
    1,814
    Поблагодарили
    1,043 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Насчет флагов есть источник лучше справочников - begoon i8080-core
    Там не все идеально, но именно флаги обрабатываются 100% правильно. В справочниках практически всегда неполная информация про флаг AC (который H в Z80).

  7. #57
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,218
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Сделал экспериментальную поддержку клавиатуры, как аналоговой схемы.
    Каждый выход порта ВВ55 представляется у меня, как два резистора определенного номинала на ноль, и на плюс питания. Которые меняются в зависимости от того, в каком состоянии находится порт - вход, выход '1' или выход '0'.
    Так же есть резисторы подтяжки для линий клавиатуры и сама клавиатурная матрица.
    При чтении информации с порта, вычисляется итоговый потенциал на ножке, и если > 2.0 вольт, то это лог '1', иначе '0'.
    Потестил немного в бейсике и прочих играх - вроде работает)

  8. #58
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,218
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Обнаружил, что формат файла для специалиста бывает 2-х типов, при чем, оба имеют расширение .rks.
    В первом формате все просто - начальный адрес, конечный, тело и контрольная сумма.
    А из чего состоит второй формат? Там обычно в начале какие-то символы, затем много нулевых байт, потом тело программы.

  9. #59
    Banned
    Регистрация
    05.10.2016
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,080
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Обнаружил, что формат файла для специалиста бывает 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.
    Последний раз редактировалось barsik; 01.03.2018 в 11:27.

  10. #60
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,554
    Спасибо Благодарностей отдано 
    1,218
    Спасибо Благодарностей получено 
    1,754
    Поблагодарили
    683 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Те программы, которые я с сайта www.spetsialist-mx.ru имеют другой формат, похожий на тот, что описан, но без первого пилоттона.
    Обычно там так:
    D9, D9, D9 (а иногда вместо этого что-то типа 70, 8F, 82, 8F).
    Затем имя
    Затем пилоттон разной длины, от 256 байт до 512,
    Затем E6, затем уже стартовый и конечный адрес.

    Лично я бы для эмулятора оставил только первый формат, без пилоттонов. Т.к. там есть все необходимое - имя (имя файла .rks), адрес начала, и адрес конца. И все это прекрасно грузится начальным загрузчиком и автоматически запускается.

Страница 6 из 7 ПерваяПервая ... 234567 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Специалист: Бейсик
    от Prusak в разделе Специалист
    Ответов: 28
    Последнее: 26.07.2019, 16:07
  2. Специалист: Разное
    от Splinter в разделе Специалист
    Ответов: 171
    Последнее: 09.05.2018, 07:50
  3. Языки программирования
    от BlackWolf в разделе Программирование
    Ответов: 188
    Последнее: 26.04.2009, 15:34
  4. Техника программирования процедурных сопроцессоров
    от andrews в разделе Программирование
    Ответов: 4
    Последнее: 29.12.2006, 20:10

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •