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

User Tag List

Страница 7 из 11 ПерваяПервая ... 34567891011 ПоследняяПоследняя
Показано с 61 по 70 из 108

Тема: Эмулятор Специалиста - EmuStudio

  1. #61
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,563
    Спасибо Благодарностей отдано 
    1,224
    Спасибо Благодарностей получено 
    1,766
    Поблагодарили
    685 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Почитал описание клавиатуры. Не очень понял что там с клавишей <НР>. В любом случае нужна полноценная эмуляция или возможность её включить. Судя по тексту, у Вас там полная или частичная "химия" с перехватом входных точек, хотя тогда непонятно как работают игры с прямым доступом к матрице.
    Никакого перехвата нет.

    Приведу образный пример, как это все работает.
    Есть настоящая матрица специалистовской клавиатуры. Допустим, за ней сидит оператор по имени Петя. Рядом сижу я с PC-шной клавой. Я беру и нажимаю Shift + '2'. Петя видит это и нажимает на настоящей специалистовкой матрице ту комбинацию, которая нужна для получения символа '@'. Вот и все. Нет никакого перехвата. Есть умный виртуальный Петя, который делает нужные действия, для того, чтобы получить на специалисте то, что нажато на PC-шной клаве. Петя это машинистка-секретарша. А я директор, который диктует документ)

    - - - Добавлено - - -

    Цитата Сообщение от barsik Посмотреть сообщение
    Какие нужны тесты на реале? Могу что-то проверить на Z80
    Нужен человек с реальный классическим Специалистом, чтобы имело смысл писать тест.

    - - - Добавлено - - -

    Цитата Сообщение от barsik Посмотреть сообщение
    Почему Вы клавишу TAB на PC-клавиатуре отдали под <ПВ>? Клавиша TAB должна быть клавишей <TAB>.
    Клавиши 'TAB' на классическом Специалисте вообще нет.

  2. #61
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

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

    По умолчанию

    Цитата Сообщение от Pyk Посмотреть сообщение
    barsik, на клавиатуре PC знак @ нажимается с шифтом, а на клавиатуре Специалиста - без. При нажатии Shift на клавиатуре PC в эмулятор передается это нажатие. Если потом нажимается "2" (@), то нужно сначала передать в эмулятор отжатие шифта, а уж потом саму "@".
    Это пояснило о чём речь.

    Т.е речь идёт не о лобовой эмуляции кнопок, а о "химии", чтобы совпадали надписи на клавишах. При лобовой эмуляции кнопок таких проблем нет. И как упомянуто выше, я проблему соответствия надписей решал со стороны 8-ми разрядки, а не со стороны PC. Да и проблема несоответствия надписей важна только для текстовых редакторов, а их всего несколько.

    Клавиша <НР> ROM-BIOS-ом вообще отдельно не контроллируется (а только при нажатиях клавиш на основном поле). Но есть драйвер отдельно контроллирующий <НР>, где на саму эту клавишу возложена функция смены режима клавиатуры (аналогично русификаторам на PC). Но всё-равно этот нюанс не проблема, т.к лишь приведёт при вводе '@' к смене режима клавиатуры.

    Цитата Сообщение от Titus Посмотреть сообщение
    Клавиши 'TAB' на классическом Специалисте вообще нет.
    В оригинальном журнальном Специалисте клавиш <F1>...<F5>, <АР2>, <СТР>, <ТАБ> не было, что делало невозможным использование системных программ от РК86. Потому вскоре Зверков, опубликовал улучшенную версию "загрузчика" в которой были изменены коды клавиш. Клавишу <ТАБ> Зверков добавил в неиспользуемом узле матрицы. А клавишу <Control> Зверков программно ввести не смог, т.к тут нужны апп.доработки.

    В журнале МК 03.1987 стр.37 другие названия клавиш, т.к это для волковского загрузчика, который с тех пор никто не использует. У меня клавиши верхнего ряда называются F1...F9, NOINV, INV, СТР, АР2. И клавиша <ТАБ> на моей клавиатуре тоже есть и как и положено она возвращет код 9.

    Хотя п/п-мы ввода C337, C803, C81B вводят, но п/п-ммы вывода C037 и C809 не обслуживают код TAB. Вот здесь я недавно положил редактор, в котором всякий может убедиться, что клавиша <TAB> существует и работает. В данном редакторе шаг табуляции не 8, а 4, но так принято на 8-ми разрядках, потому что удобнее для ассемблера.

    Цитата Сообщение от Titus Посмотреть сообщение
    Приведу образный пример, как это все работает.
    Этот образный пример вообще ничего не поясняет.

    В моём MSDOS эмуляторе ОРИОНА эмуляция матрицы делается так. Перехватываются Z80-команды чтения портов ППА-клавиатуры. Надо перехватывать не только команду LD A,(mem_port), но и LD A,(RR), а для РК86 и IN A,(io_port).

    Как только программа читает порт ППА, то смотрится, во-первых, в какой режим запрограммирован ППА, затем смотрится, что за байт записан в другой порт ППА. И если читаемый порт настроен на ввод, другой порт на вывод и в другом порту есть "бегущий 0" по какому-то разряду, то смотрится нажата ли клавиша на PC. И если есть нажатая PC-клавиша и она расположена на матрице эмулируемой клавиатуры по той линии где есть "бегущий ноль", то по таблице берётся возвращаемый код, иначе FF. Эмулируются и двойные нажатия.

    Точно также работают и контроллеры PS/2 клавиатуры на Atmega от vinxru.

    Цитата Сообщение от Titus Посмотреть сообщение
    Нужен человек с реальным классическим Специалистом, чтобы имело смысл писать тест.
    Да тут владельцев реального Специалиста - пол-форума, да и эмуляторы, возможно, позволят что-то проверить.

    Вы, похоже, собираетесь проверять нелегальную работу с клавиатурой, когда на порты выдаётся не 0, а сочетание нулей и единиц и нажимаются сразу две клавиши, что приводит к замыканию ППА-выхода с нулём на ППА-выход с единицей (т.к диодов нет).

    Но зачем это надо? Нет программ занимающихся вредительством, да и сжечь ППА не получится, его разработали не идиоты. Кроме того это делать бессмысленно, т.к у всех разные резисторы привязки, отчего на разных машинах будут разные результаты.
    Последний раз редактировалось barsik; 08.03.2018 в 06:04.

  4. #63
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,574
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    399
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Может быть на одних ВВ55 игра работала, на других нет?
    Всё именно так и есть! Подтверждаю! Я ВВ55 на своём Специалисте поставил в "кроватку" уж не помню почему, то ли горели они, то ли ещё почему-то. Так вот именно для SkyScraper приходилось подбирать ВВ55, потому что игра работала далеко не с каждой исправной микросхемой. У нас с другом ситуация была идентичной, и мы ещё недоумевали как такое может быть. И вот теперь спустя столько лет, загадка разрешена!
    С уважением, Станислав.

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

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Этот образный пример вообще ничего не поясняет.

    В моём MSDOS эмуляторе ОРИОНА эмуляция матрицы делается так. Перехватываются Z80-команды чтения портов ППА-клавиатуры. Надо перехватывать не только команду LD A,(mem_port), но и LD A,(RR), а для РК86 и IN A,(io_port).
    Тогда уж не знаю, как вам обьяснить)
    Одно скажу - никаких команд у меня нигде не перехватывается. Все делается только на уровне матрицы клавиатуры.

    - - - Добавлено - - -

    Цитата Сообщение от barsik Посмотреть сообщение
    Вы, похоже, собираетесь проверять нелегальную работу с клавиатурой, когда на порты выдаётся не 0, а сочетание нулей и единиц и нажимаются сразу две клавиши, что приводит к замыканию ППА-выхода с нулём на ППА-выход с единицей (т.к диодов нет).
    Да, и это тоже. Но обещаю, что в тесте крупными буквами будет написано: 'Это тесть потенциально может навредить вашему ВВ55'.

  6. #65
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    13,563
    Спасибо Благодарностей отдано 
    1,224
    Спасибо Благодарностей получено 
    1,766
    Поблагодарили
    685 сообщений
    Mentioned
    67 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Почитал тему про клон Специалиста под названием 'Микрон-2'. Там говорится, что обращение к портам ВВ55 может быть так же по In/Out.
    А в классическом Специалисте куда будет обращение по In/Out? И что даст чтение порта In, если он никуда не ведет?

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

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Почитал тему про клон Специалиста под названием 'Микрон-2'. Там говорится, что обращение к портам ВВ55 может быть так же по IN/OUT
    Таких программ нет. А если кто-то и сделал такую программу, то следует его найти и оторвать руки.

    Потому что, хотя для простоты дешифратор ИД4 в базовой схеме тратит на ППА участок в целых 2 кб, но ROM-BIOS А.Волкова обращается к ППА не по адресу F800, а по адресу FF00. Что однозначно свидетельствует, о том что для расширения области В/У предполагается расширять область F800...FFFF делением дешифратором на 8 участков с шагом в 100H.

    Но т.к официального стандарта на область В/У не опубликовали, и из-за того, что для журнального ROM-BIOS тратится только 4 кб, то остальные 2-х килобайтовые чип-селекты пользователь может тратить как угодно, в т.числе не только на ПЗУ РФ2, но и для портов, например для ППА принтера или ВИ53. Это плохой вариант, хотя и экономит дешифратор.

    У меня на большинстве плат Специалиста был распаян дешифратор делящий область F800 на 8 участков. И не встречал программ, что не работали бы из-за этого. А если бы такие программы были, я бы их исправил.

    Конечно, пользуясь тем, что в отсутствии дешифратора области В/У, ППА адресуется во всей области в 2 кб, подлый вредитель, которому ещё не оторвали руки, может использовать команды OUT, считая, что ППА стоит на F800. Тогда естественно:

    OUT (F8),A - попадает в PA,
    OUT (F9),A - попадает в PB,
    OUT (FA),A - попадает в PC,
    OUT (FB),A - попадает в РУС ППА.

    Однако эти команды давно зарезервированы под порты. Причём некоторые эти порты используются именно с адресацией по OUT. Более короткая команда OUT (F8),A удобнее, чем LD (F800),A для системных регистров.

    Запись в порт F8 (или адрес F800) используется для коммутации в окне ПЗУ C000...DFFF 8-ми килобайтовых участков из ПЗУ 27256 или 27512, что удобно для расширения ROM-BIOS. Бит D7=1 в этом порту совсем отключает ПЗУ, делая FULL RAM 62К в банке 0 (в других банках и без того сплошные 62К).

    Запись в порт F9 (или адрес F900) используется для коммутации банки при расширении ОЗУ. Это совместимо с ОРИОНОМ, как аппаратно, так и программно. Потому команда OUT (F9),A переключает банки. Если текущей установлена доп.банка 1...15, то процессору доступны сплошные 62 кб. Это делает такую архитектуру более выгодной, чем в ОРИОНЕ, где банки по 60К.

    Кстати, также расширяли ОЗУ в теме "РК86 на 8085", чтобы использовать ORDOS ОРИОНА. Это логично, т.к для ОРИОНА есть многобанковое ПО и глупо несовместиться. Потому, когда я расширил ОЗУ, не пришлось переписывать DOS, в которых есть RAM-диск. Чтобы заменить РУ5 на РУ7 и поиметь 256 кб достаточно 10 минут труда. К сожалению, при этом и ОЗУ цвета приходится делать на РУ7. А при РУ5-тых удобно напаивать их вторым этажом.

    Если Вы сделаете в эмуляторе расширение ОЗУ и ПЗУ портами F8 и F9 и поставите ROM-диск по адресу FE00, то для этого есть программы.

    Во вложении - тест доп.ОЗУ любого размера и конфиг-файл на 512 кб для эмулятора EMU80. Имея доп.ОЗУ на Специалисте, можно использовать дисковое ПО для разных DOS, не имея дисковода или винчестера.

    Цитата Сообщение от Titus Посмотреть сообщение
    что даст чтение порта IN, если он никуда не ведет?
    По IN не читал, но по LD, если читать по адресу незадействованного чип-селекта, то у меня почему-то читается 82H. Т.к у меня нет прерываний и соответственно резисторов привязки шины на +5В. Хотя, возможно, это в разных машинах по разному.
    Вложения Вложения
    Последний раз редактировалось barsik; 08.03.2018 в 16:34.

  8. #67
    Master Аватар для TomaTLAB
    Регистрация
    09.03.2017
    Адрес
    г. Троицк
    Сообщений
    607
    Спасибо Благодарностей отдано 
    124
    Спасибо Благодарностей получено 
    63
    Поблагодарили
    47 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от barsik Посмотреть сообщение
    Т.к у меня нет прерываний и соответственно резисторов привязки шины на +5В.
    Вот уже не первый раз это от Вас слышу. Откуда такая уверенность, что подтяжка на ШД нужна только при наличии прерываний?
    Для прерываний она нужна, если их делать по-извращенски
    Однако, подтяжку ставят и при наличии контроллера, и при неиспользовании прерываний вовсе.
    Подтяжка шины выполняет еще пару важных функций. В том числе, и чтобы не читалась погода на марсе из "ничейных" адресов.
    Последний раз редактировалось TomaTLAB; 08.03.2018 в 16:18.
    electronox necromancer

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

    По умолчанию

    Цитата Сообщение от TomaTLAB Посмотреть сообщение
    Откуда такая уверенность, что подтяжка на ШД нужна только при наличии прерываний?
    Оттуда, что не встречал этого, ни в РК86, ни в Специалисте, ни в ОРИОНЕ, - значит совершенно незачем впустую грузить шину. С чего Вы взяли, что грузить шину полезно? И без разницы, что читается с шины, когда все устройства шины неактивны. И полезнее не подтяжка шины на +5В, а наоборот утяжка шины на землю через резисторы 300 Ом. Это повышает надёжность.

    Цитата Сообщение от TomaTLAB Посмотреть сообщение
    Для прерываний подтяжка нужна, если их делать по-извращенски.
    Это претензии к сэру Клайву Синклеру. Но вроде на это никто не жаловался. По-моему бОльшим извращением является установка контроллера прерываний, если прерывание всего одно.

    Для прерываний в КР580 лучше всего использовать ВК28, подав через резистор 1 кОм на его выход INTA напряжение +12 вольт. Вот такая у него странность. Тогда он начинает обслуживать прерывания, выдавая процессору код RST 38 в цикле обработки прерывания. И без всяких резисторов привязки.

    ВК28, а ещё лучше ВК38 это мои любимые микросхемы для Специалиста. Они позволяют разогнать Специалист до 4 МГЦ. А ОРИОН на КР580, не имея ВК28, несмотря на всю его буферизацию не может вытянуть даже 3 МГЦ.

    - - - Добавлено - - -

    Кстати, по поводу прерываний при КР580.
    Последний раз редактировалось barsik; 09.03.2018 в 07:55.

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

    По умолчанию

    Какие есть точки входа в классическом ПЗУ Специалиста для печати символа или сообщения?
    Такие, чтобы работали на всех прошивках и во всех случаях. Т.е. самые стандартные.

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

    По умолчанию

    Прошивок ПЗУ было много, в основном туфтовые, т.к совместимые с журнальным стандартом лишь частично. Программы рассчитаны в основном на монитор Орлова и загрузчик Зверкова. Игры чаще используют только загрузчик, т.к монитора C800 может не быть. А системные программы требуют обязательного наличия монитора Орлова или 100% совместимого.

    Все входные точки, если они хоть один раз были в журнале документированы являются стандартными. Но в ходе эволюции возникли стандартные, но недокументированные входные точки, т.к программы идиотов лезли внутрь ПЗУ и на недокументированные точки. Это затруднило разработку 100% совместимого ленинградского монитора, но задача была решена. В частности ленинградский монитор сохранил не только 18 документированных, но и 20 недокументированных, но стандартных по факту использования входных точек монитора Орлова.

    Надо бы набрать в файл описание всех входных точек Специалиста, оно у меня только на бумаге. Ранее было лень, понимая, что это никому не надо, а кому надо тот и без того знает.

    C037 - ZCOUT. Вход: С - символ. Все регистры и AF сохраняются. Символ выводится по XOR с экраном. Потому, если на экране уже что-то есть, то надо почистить знакоместо выдав 7F и 08. В ленинградском мониторе много отличий, например, в отличие от волкова-зверкова, есть ролик экрана, есть эхо-печать на принтер (по флагу принтера), вход векторизован, т.е можно загрузить драйвер другого шрифта, есть переключения по НР+Fn и т.п. Не помню обрабатывает ли зверков упр.код ESC+Y, но в ленинградском мониторе да. Других искейп-кодов нет. Включить/выключить инверсию - коды 8B, 8C. Но пользоваться инверсией не очень удобно, т.к выводится только 8 линий знакоместа высотой 10 линий.

    C809 - MCOUT. Выводимый символ также в регистре C. Этот вход работает так. Если код символа больше или равен 20H, то предварительно знакоместо очищается, затем делается JMP C037. Все регистры сохраняются.

    C438 - ZMSSG. Вход: HL - адрес начала текста. Стоп байт 00. Выход: HL указывает на байт 00, портятся регистры AF и C. Вывод происходит через вход C037, потому не стоит выводить на нечистый экран.

    C818 - MMSSG. Аналогично C438, но текст выводится с очисткой знакоместа.

    А вообще достаточно почитать описание ПЗУ РК86, т.к входы C803...C833 в мониторе Орлова работают почти идентично стандартным подпрограммам РК86 F803...F833, описанными в ж.Радио 10.1986. Есть конечно, отличия. Самая фатальная из которых то, что в МГ-подпрограммах перепутаны регистры A и C, т.к Орлов на входах LDBYTE/SVBYTE C806 и C80C поставил просто JMP на C377 и C3D0.
    Последний раз редактировалось barsik; 09.03.2018 в 11:37.

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

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

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

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

Похожие темы

  1. Эмулятор Союз-Неон ПК-11/16 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 335
    Последнее: 01.04.2024, 11:33
  2. Эмулятор УКНЦ - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 1191
    Последнее: 15.02.2024, 13:32
  3. Эмулятор МС-0515 - EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 143
    Последнее: 09.02.2023, 10:44
  4. Эмулятор ТИА-МЦ-1 EmuStudio
    от Titus в разделе Эмуляторы отечественных компьютеров
    Ответов: 104
    Последнее: 15.01.2022, 01:17
  5. EmuStudio-ZX
    от Titus в разделе Эмуляторы
    Ответов: 597
    Последнее: 09.03.2020, 17:30

Ваши права

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