nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 08:42



Reply to topic  [ 48 posts ]  Go to page Previous  1, 2, 3, 4  Next
«Специалист» на Java 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Эти 74 кнопки ещё в реальном "Специалисте" меня допекли...
Разложил матрицу на клавиатуру IBM вот так (кликабельно):
Image
Цветом - символы "Специалиста". [Kbd 0/1] - смена раскладок.
[Shift-HP] пока не знаю, смогу ли отловить реальный Shift-модификатор
в виде события отдельно. Вроде есть такой приём - попробую...
Готов изловить все камни и замечания...
Чертов Юникод - весьма неудобный для табличных перекодировок... :(

HardWareMan, если я тебя правильно понял (http://www.nedopc.org/nedopc/upload/SpeZHW.pas) -
ты часть кнопок разложил на NumPad ?
http://www.nedopc.org/forum/viewtopic.php?t=8154&postdays=0&postorder=asc&start=60

ЗЫ. СТР задублировал - СТР на ДЕЛ удобнее (по опыту), чем на Ф12.


03 May 2011 06:51
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Lavr wrote:
Чертов Юникод - весьма неудобный для табличных перекодировок...

Затейливо до безобразия завешан Юникод на служебные клавиши... :o
Code:
   <PrtScr>-не выдаёт кода;

     <Home>-Code: 3E8h;
      <End>-Code: 3E9h;
     <PgUp>-Code: 3EAh;
     <PgDn>-Code: 3EBh;
     < Up >-Code: 3ECh;
     <Down>-Code: 3EDh;
     <Left>-Code: 3EEh;
    <Right>-Code: 3EFh;
       <F1>-Code: 3F0h;
       <F2>-Code: 3F1h;
       <F3>-Code: 3F2h;
       <F4>-Code: 3F3h;
       <F5>-Code: 3F4h;
       <F6>-Code: 3F5h;
       <F7>-Code: 3F6h;
       <F8>-Code: 3F7h;
       <F9>-Code: 3F8h;
      <F10>-Code: 3F9h;
      <F11>-Code: 3FAh;
      <F12>-Code: 3FBh;
       ???        3FCh;-<PrtScr>???
  <ScrLock>-Code: 3FDh; + Shift = <NunLock>-Code: 3FFh
 <CapsLock>-Code: 3FEh
    <Pause>-Code: 400h;
   <Insert>-Code: 401h = [ Ё ]!;
(Совпадает с русской [ Ё ]!)
   <Delete>-Code: 7Fh ;
<Backspace>-Code: 08h; + RAlt = Code: 7Fh-<Delete>;
      <Esc>-Code: 1Bh; + Shift = Code: FFFFh
    <Enter>-Code: 0Ah;
      <Tab>-не выдаёт кода!;
(Хотя в Jasper: <Tab>-E MODE!)

<Shift>-mod=1 (оба);
 <Ctrt>-mod=2 (оба);
 <LAlt>-mod=8;
 <RAlt>-mod=10


PS. Через Hashtable что-ли коды в состояние матрицы переводить...


03 May 2011 08:39
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Итак - эмуляция К580ВВ55 в среде Спектрума заработала!!!

Image

В принципе - прикольная вещь: "Специалист" с экраном "Спектрума"!
Затейливо, что оба работают. Когда выход за экран - "Спектрум"
предлагает: "scroll?". :lol:
Порт потестирую на баги и займусь переносом экрана на 9000Н.

Натолкнула меня эта поделка по пути на мысль затейливую...
http://www.nedopc.org/forum/viewtopic.php?t=9518

PS. Нажатие модификаторов отдельно от клавиш кодов, похоже, отследить
независимо нельзя. :-? Так что 'Shift' как отдельный "НР" в "Спеце" работать
не будет. И кодировка Юникод неудобна, в отличие от скан-кода клавиши.
Удивило, что int у JAVA 32-битый. :o Я это как-то подзабыл...


10 May 2011 18:45
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Альфа-версия эмулятора "Специалист" на JAVA неожиданно заработала с первого
пинка без мучений ошибок и отладки.

Image

Карта памяти от оригинального Волкова. Монитор - Загрузчик + МК.
Контроллер цвета от Шевцова (0FFF8h). Под такую конфигурацию цветных
игрушек у меня нет - попробовал что под руку попало:

Image

Бордюр оставил как признак фокуса ввода окна: желтый - фокус потерян
и надпись с призывом кликнуть в экран. Зелёный - фокус ввода в окне
эмулятора.

Image

Есть возможность бордюр отключать и оставить окно эмулятора в оригинальный
размер (а можно - удвоенный по осям).

Image

Будет время - потестирую внимательнее, всё ж Z80 - в Волковском "Спеце" -
это некоторая экзотика... (за что и люблю эмуляторы) :wink:


18 May 2011 13:39
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Джентльмены, если вас, конечно, не затруднит, ещё раз прошу - протестируйте вот здесь
он-лайн версию JX-Speccy со звуком на повод качества звука:
http://www.gameszoo.net/jxspeccy/?mn=examples
У меня звук прерывистый и отвратительный.

В аналогичной ситуации вот здесь:
http://play.80snostalgia.com/index.php?module=PostWrap&page=spectrum/manicminer.html
звук мне кажется более ровным и лучшим по качеству.

Мне надо как-то определиться - какой приделать «Специалисту» звук.

PS. Если вторая ссылка не запустится отсюда, то вот здесь:
http://play.80snostalgia.com/index.php?name=Reviews&req=showcontent&id=176
выбрать: 25. MANIC MINER (Bug-Byte)
ткнуть мышью в экран и нажать пробел...


29 May 2011 14:31
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Обновил эмуятор "Специалист" на Java до версии v1.1.

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

Но не во всех, в некоторых исходные клавиши управления не совсем
привычны... :wink:

Выложил также одну новую программу REDGRAF.RKS - это по сути "два
в одном" флаконе, или даже "три в одном": Васик от Волкова с
графическими расширениями и Графическим Редактором со всеми
патчами.

По загрузке стартует Васик, и кто хочет - может им пользоваться.
Но если сразу сделать сброс, и передать управление через G2000,
то получим Графический Редактор от Волкова.

Image

Мне он дюже нравился некоторой своей необычностью...

Графический Редактор можно запустить из самого Васика по адресу
8192 (2000Н), только вот команду я точно не помню - что-то USR 8192.


29 Jul 2011 11:26
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Очень неудобная связка получается при эмуляции клавиатуры для оригинального "Специалиста". :(
Дело тут вот в чём: "Монитор" по [НР] перключает Цифры-Знаки, а по [НР Фикс] - Лат/Рус, но не Цифры-Знаки.
В JAVA код клавиши сразу попадает в программу в кодировке Юникод с учётом действия "шифтов", "контролов" и "альтов". Сами эти клавиши-модификаторы без клавиш-символов отдельных кодов не порождают. А с клавишей они получаются и совсем не нужны - все коды символов в Юникод уникальны и легко перекодируются в состояния порта ППА ВВ55 по таблице.
И вот тут наступает самый неприятный момент: по коду клавиши можно отследить, где нужно сбросить бит [НР] по порту В, но если при нажатом [НР] вводить с клавиши символ, а не цифру, то по логике "Монитор-а" символ просто не выводится на экран.
В пору вводить отдельные таблицы для кодов, на которые действует [НР], а на другие - [НР Фикс] , а на служебные клавиши они оба просто не действуют никак, в отличие от IBM PC... :wink:

Я сразу заложил возможность для "Специалиста-МХ", где есть символы Лат/Рус в нижнем регистре и работа клавиатуры более близка к IBM PC.

Но в оригинальном "Специалисте" глюки и ненажатия так пока есть.
Он получился как промежуточный вариант и перепиливать программу из-за особенностей "Монитор-а" желания как-то нет.

Сейчас работаю над эмуляцией "Специалиста-МХ" и если эмуляция клавиатуры и ППА ВВ55 будет приемлемой, эмуляцию клавиатуры переписывать не буду.


31 Jul 2011 05:26
Profile
Devil

Joined: 06 Oct 2006 03:17
Posts: 856
Location: г.Лянтор,Сургутского р-на,ХМАО
Reply with quote
Post 
Добавил ссылку на данный эмулятор на свою страницу сайта - http://www.spetsialist-mx.ru/index26.html.


03 Sep 2011 22:10
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Я решил выложить исходники "Специалист"-а на Java.
Было у меня в планах дописать "Специалист-МХ" на Java, но как-то куража
за собой на этот шаг не замечаю пока. Может быть и сделаю...

"Специалист" на Java оказался вполне возможен, ну а остальное -
чисто дело техники.
Тем более, что может кто-то горит желанием это сделать сам.

Исходники обширно комментированы мной, чтобы не забыть что к чему, так
что вполне могут быть учебным пособием для начинающего программёра
на Java.
А может быть, кто и на Андроид код адаптирует. :wink:

Исходники, на мой взгляд, очень понятные, так что отвечать на вопросы типа
"а что это тут такое написано?", я априори отказываюсь...
Кому надо - берите as is...

Мои специальные танксы to Adam Davidson & Andrew Pollard for Jasper sources.
Считаю их во многом своими учителями, но я их ничем не беспокоил... :lol:


05 Mar 2012 14:29
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Post 
Shaos wrote:
Lavr wrote:
Напомните, куда в обычной Java идёт вывод:
Code:
System.out.println(" Execute on 3.5 Mhz!");

только в отладчик чтоль?

В J2ME я этот вывод юзал для контроля параметров в отладке, а сейчас приходится заменять на:
Code:
showStatus(" Execute on 3.5 Mhz!");
- вывод в статусную строку...

угу - стандартный поток вывода в апплете никуда не идёт, если в браузере апплет запущен -
так что только showStatus...

Cтандартный поток вывода в Java-апплете оказывается идёт в Java-Консоль...

Image

Только её, оказывается, надо включить, чтобы она отображалась...

А я ещё думаю, ну столько же примеров попадается, где явно юзают
Code:
System.out.println(" Мессага");

где же они это всё смотрят? :lol:

Зря промучался, не зная... даже специально в свою "служебную строку" выводил
отладочные сообщения... :-?

_________________
iLavr


03 Feb 2013 08:38
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Добавил в набор программ эмулятора ПК "Специалист" Редактор и Ассемблер,
чтобы была возможность попрограммировать он-лайн на Асме 8080.
Точнее - получилось 2 Редактора и Ассемблера, т.к. они в одном пакете.
Исходники вытащил из архива эмулятора В.Пыхонина. Программы предварительно
проверил. Они обе рабочие.

К сожалению, в старом "Специалисте" работа с Редактором и Ассемблером затруднена
тем, что требуется помнить неочевидные сочетания управляющих клавиш.
Но по минимуму справиться всё же можно...

Пришлось и самому себе напомнить, что там и как там:
Quote:
РЕДАКТОР И АССЕМБЛЕР

А.Орлов. Ваш помощник — компьютер (Редактор и Ассемблер), «Моделист-конструктор», 1988 г. ¹10, с.20-22.

Пакет программ, состоящий из Редактора и Ассемблера, является адаптированной для компьютера «Специалист» версией пакета «Микрон» (см. «Радио», 1987 г., ¹ 7, с. 22— 26) с использованием Редактора от Дизассемблера (см. «Радио», 1988 г., ¹ 3, с. 27—31).
Коды данной версии приведены в таблице 1, контрольные суммы блоков — в таблице 2. Проверить последние можно с помощью директивы K Монитора.
В исходной версии программа использует клавиши <F2>, <F4>, <AP2>, <ТАБ>, которых нет в «Специалисте», поэтому их заменяют клавиши <SAVE>, <CONT>, <EDIT>, <RUN>.


------------Image

Quote:
Клавишу <УС> заменяет <F> (например, код 03 можно получить последовательным нажатием на клавиши <F> и <#>).
Текстовый буфер Редактора начинается с адреса 3000H. Запускают Редактор директивой G0 Монитора, при этом на экране появляется надпись «ED *МИКРОН*». Ниже приведены директивы для работы с Редактором.
<EDIT> + <N> — очистка памяти для нового текста. Чтобы не произошла случайная очистка, директива выполняется только в случае ответа <Y> на запрос «NEW?». После очистки устанавливается режим ввода в текстовый буфер.
<ВК> — ввод в память набранной строки.
< -> >, < <- > —перемещение курсора для исправления ошибки.
<СТР> — завершение ввода строк. После нажатия этой клавиши можно редактировать введенный текст.
<EDIT> + <В> — просмотр начала текста.
<EDIT> + <Е> — просмотр конца текста.
<EDIT> + <down>—просмотр следующей страницы текста.
<EDIT> + <uр> — просмотр предыдущей страницы текста.
< \ > — перемещение курсора к началу первой строки.
<left>, <right>, <up>, <down> — перемещение курсора к месту редактирования.
<EDIT> + <А> — ввод новой строки или группы строк. Завершение ввода заканчивается <СТР>.
<EDIT> + <L> — используется для поиска группы символов. После набора группы символов и нажатия на <ВК> производится отображение фрагмента текста, в котором встретилась данная последовательность. Для отображения следующего фрагмента с заданной группой символов служит директива <EDIT> + <R>.
<SAVE> — производится сдвижка строки за счет символа, на который указывает курсор.
<CONT> — очищается место для пропущенного символа.
<EDIT> + <CONT> —включается автораздвижка символов. Выключить ее можно директивой <EDIT> + <SAVE>.
<EDIT> + <D>—маркировка первой строки удаляемого фрагмента текста.
<up>, <down>, <EDIT>+ <down> — перемещение курсора к строке, следующей после последней удаляемой. Для исключения фрагмента текста необходимо снова набрать <EDIT> + <D>.
Отменить неправильно набранную директиву удаления фрагмента текста можно клавишей <СТР>.
<EDIT> + <О>—запись текста на магнитофон. В ответ на директиву Редактор запрашивает имя файла (можно не указывать), после его набора +<ВК> производится запись.
<EDIT> + <|>—производится поиск и считывание текста с заданным именем с магнитофона. Параллельно на экран выводятся имена всех найденных файлов. Если имя не указать, то загрузится первый встретившийся текст. Когда при считывании обнаруживается ошибка, Редактор сигнализирует об этом соответствующей надписью. В противном случае на экран выводится начальный фрагмент загруженного текста.
<EDIT> + <V>—сравнение текстов в буфере ОЗУ и на ленте. Если тексты неидентичны, выводится сообщение «ОШИБКА», а когда они совпадают — то их начальный фрагмент.
<EDIT> + <М> — вводится дополнительный фрагмент к уже имеющемуся в ОЗУ. Эта директива позволяет компоновать текст из отдельных фрагментов, записанных на ленте. Любую директиву работы с магнитофоном можно отменить, нажав на клавишу <СТР>.
<F> + <E> — выход в Монитор.
<СТР> — выход в Ассемблер. Его можно запустить также директивой G800 Монитора. При выходе в Ассемблер выводится надпись «ASSM *МИКРОН*».
Кратко перечислим основные требования к тексту на Ассемблере (подробнее об этом можно прочитать в «Радио», 1987 г., ¹ 4, с. 17—21 и «Радио», 1987 г., ¹ 7, с. 24).
Метки могут состоять из любого числа русских и латинских букв или цифр, начинаться с буквы или с символов « @ » или « ? ». Различение меток происходит по первым шести символам. Причем в качестве меток нельзя использовать имена регистров микропроцессора; каждая метка должна оканчиваться двоеточием.
В программе можно использовать следующие операторы:
ORG — указывает начало области, в которой будет работать программа;
EQU — присваивает метке определенное значение;
DB, DW — служат для занесения байтов или слов в память;
DS N — резервирует N байтов в памяти;
END — указывает на конец программы.
Комментарии отделяются символом « ; ».
В качестве операндов могут быть использованы константы, арифметические выражения, содержащие знаки «+» и «—», имена меток и регистров микропроцессора, десятичные и шестнадцатиричные числа, а также выражения, содержащие адрес текущей строки, обозначаемый « $ ».
Оттранслировать программу можно, нажав одну из трех клавиш:
<1> — на экран выводится полный протокол трансляции. Приостановить трансляцию можно клавишей <СТР>, а продолжить, нажав на любую другую клавишу. При повторном нажатии на <СТР> происходит переход в Редактор.
<2> — на экран выводится список всех встретившихся меток.
<3> — на экран выводится сообщение об обнаруженных ошибках (их число) и два адреса: адрес конца программы в области, которая предназначена ей для работы, и адрес конца в буферной области. Эти данные выводятся также и в первых двух случаях.
Оттранслированная программа всегда находится в области памяти, начинающейся с 1200H. Если программа должна работать в другой области, то ее можно перенести с помощью директивы Т Монитора. Выйти из Ассемблера в Монитор можно, нажав на клавиши <F> + <E> или на клавишу с кодом меньше чем 31H.
Данная версия рассчитана на работу в компьютере, имеющем ОЗУ с 0000H по 7FFFH.

Д. ОРЛОВ,
г. Пушкино,
Московская обл.


Надо будет, видимо, HTML-help написать, как я это сделал для эмулятора микропроцессора 6502.

_________________
iLavr


20 Jan 2015 08:21
Profile
Writer

Joined: 07 May 2009 13:55
Posts: 10
Location: 91.207.210.62
Reply with quote
Вчера вечером в поисках новых материалов по ЛИКу нашел этот чудный топик.

Спасибо Lavr за публикацию исходников!

Базируясь на них перевел проект с Ant+Applet на Jetty+Maven+JNLP+Applet. Быстрого способа как запустить Апплет в браузерах и IDE 2022 года не нашел. Гугл подсказал что JNLP еще немного прокатит и Апплеты переделывать не придется. Пока решил на нем остановиться.

Запустил на нем ROM Лика и игру Клад (не без глюков). Прочитав топик вдумчиво понимаю причину.

Описал мануал по запуску.

Опубликовал проект на GitHub.

И поделился "наполеоновскими планами".

Спасибо всем, кто повлиял на это.

Продолжение следует.


17 Jan 2022 21:57
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
apofig wrote:
Спасибо Lavr за публикацию исходников!

Приятно, что кому-то пригодилось... Удачи Вам! :kruto:

_________________
iLavr


18 Jan 2022 12:11
Profile
Writer

Joined: 07 May 2009 13:55
Posts: 10
Location: 91.207.210.62
Reply with quote
Эксперименты с эмулятором продолжаются. На сегодня он умеет:
  • Загружать ROM и RKS из файла (пока что в ручном режиме в сырцах true на false надо сменить).
  • При этом можно загружать ПЗУ Лика или Специалиста.
  • Игра Клад уже работает без ошибков. Бейсик все еще глючит.
  • Появился программный ассемблер/дизассемблер. Он сейчас еще работает не полноценно, т.к. не все команды реализованы (пока что 30% готовности).
  • Появились юнит тесты - тестирующие команды процессора.
  • Появились интеграционные тесты, тестирующие что будет в результате выполнения 10M тиков на определенной ROM/игре c CPU/экраном (в формате png).
  • Постепенно переношу полезные материалы (мануалы, игры) в ресурсы проекта. Этот репозиторий планируется как единое место для всех наработок и контента.
  • Код сильно отрефакторен. Удален старый код ZX Spectrum, расширенные команды Z80, фичи, которые пока что не сильно нужны (после переноса на новый модерновый UI фреймворк часть из них верну). Сильно упрощал везде, где только можно. Разделил все GodObjects на компоненты.
Продолжение следует.


20 Jan 2022 22:39
Profile
Writer

Joined: 07 May 2009 13:55
Posts: 10
Location: 91.207.210.62
Reply with quote
Очередная порция обновлений эмулятора.

Главное - исправлены ошибки с флагами и DAA командой. Бейсик заработал! Все команды переведены в ООП стиль. Добавлен ассемблер и дизассемблер. Можно трейсить выполнение команд программы. Добавлен keylogger с привязкой к тикам процессора. Переработана клавиатура. И много всего другого.

Продолжение следует.


28 Jan 2022 20:52
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 48 posts ]  Go to page Previous  1, 2, 3, 4  Next

Who is online

Users browsing this forum: No registered users and 17 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.