nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 15 Apr 2024 22:05



Reply to topic  [ 22 posts ]  Go to page 1, 2  Next
B2M EMU 
Author Message
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Lavr wrote:
После загрузки Digit.emu программа emu почему-то выходит в свой Debugger - в нём надо нажать F5.

Это потому, что отладчик был использован. Если после начала эмуляции компьютера отладчик не был использован, то он не запишется в сохранённый файл.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


08 Dec 2021 05:15
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
Lavr wrote:
После загрузки Digit.emu программа emu почему-то выходит в свой Debugger - в нём надо нажать F5.

Это потому, что отладчик был использован.

Ну естественно, отладчик был использован, потому как по Ctrl-L в "Специалист-МХ" грузится бинарник,
а по Ctrl-S - выгружается отдебуженный исходник.
А нельзя как-то прописать где-то, чтобы Debugger не стартовал, когда не надо?
И где можно что-то прописать, чтобы программа по умолчанию сразу загружала "Специалист-МХ"
без предварительного меню выбора компьютера
?

И еще один момент, не очень приятный... хотя, может быть, он у тебя исправлен уже...
Вот смотрю я на встроенном отладчике исполнение программы и жду, когда она запишет что-то в память:
Attachment:
дебаг.PNG
дебаг.PNG [ 89.13 KiB | Viewed 8270 times ]

Наконец, программа пишет в память (STA XXYY), но в памяти - ничего не меняется по адресу XXYY ! :o
Башка начинает закипать... как же так? :roll: Оказывается, надо уйти с этого участка памяти и открыть его снова! 8)
Какая-то очень неудобная фича... :-?

И как во встроенном отладчике изменить содержимое регистров процессора, если это необходимо?

_________________
iLavr


08 Dec 2021 12:33
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Lavr wrote:
А нельзя как-то прописать где-то, чтобы Debugger не стартовал, когда не надо?

Нет. Нужно добиться того, чтобы программа без отладчика запускалась. В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80

emu.exe MyCoolProg.cpu

Lavr wrote:
И где можно что-то прописать, чтобы программа по умолчанию сразу загружала "Специалист-МХ"
без предварительного меню выбора компьютера
?


Вот несколько примеров:

emu.exe /c "Orion-128"
emu.exe /d
emu.exe /c "Orion-128" /d
emu.exe /c "Orion-128" /brk F842
emu.exe /c "Orion-128" /brk @my.brk

1. C автоматическим выбором конфигурации
2. Вызов отладчика, без выбора конфигурации
3. Более полезный вариант, с автоматическим выбором конфигурации
4. Ещё более удобный вариант, с указанием точки останова
5. Вариант с сохранением точек останова в файле my.brk

Lavr wrote:
Наконец, программа пишет в память (STA XXYY), но в памяти - ничего не меняется по адресу XXYY !

Раньше компы были слабые, такая вот оптимизация, не обновляется окно дампа. Но можно трассировать с shift, тогда обновляется. Правда, жмакать shift постоянно не надо, а то CALL проскочишь :)

Lavr wrote:
И как во встроенном отладчике изменить содержимое регистров процессора, если это необходимо?

Прямо в окне регистров и менять. Или Tab-ом туда перейти, или мышью ткнуть.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


09 Dec 2021 08:54
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
Правда, жмакать shift постоянно не надо, а то CALL проскочишь :)

Жмакать постоянно вообще ничего не надо! :wink:
Добрая Венда за этим следит и вылазит с предупреждением о залипании клавиш... :lol:
Attachment:
Залип.PNG
Залип.PNG [ 28.96 KiB | Viewed 8420 times ]

Как она меня утомила во время отладки этой игры! :ebiggrin:

_________________
iLavr


09 Dec 2021 10:51
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
[OFFTOP]
b2m wrote:
В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80

emu.exe MyCoolProg.cpu

Извини уж, может быть я в чем-то туплю, но столь удобный вариант у меня не работает никак... :(
Attachment:
RAMFOS.PNG
RAMFOS.PNG [ 57.9 KiB | Viewed 7641 times ]

При старте "Специалист-МХ" ОС RAMFOS видит отсутствие даты по адресу 0xD202 и запрашивает её.
В этот момент RAMFOS еще не развернулся до конца...

Но в этот момент в память загружается программа Hanoi.CPU и управление отдаётся ей.
В результате всё вешается на приведённом выше скриншоте...

Когда у меня были исходники Шевцова, я там подправил код и дата из DOS вводилась автоматом.

Но здесь я пробовал и утилитой nircmd.exe нажать введение даты - достаточно {0 [Enter]}.
Но не срабатывает и этот фокус...

Как автор emu.exe посоветует разрешить этот траббл? По-простому у меня не вышло никак...
:-?

P.S. Но даже если стартануть emu.exe обычным образом, и запустить из меню файл *.cpu, то
из RAMFOS всё равно вылетаешь на ввод даты...

Attachment:
RAMFOS1.PNG
RAMFOS1.PNG [ 43.83 KiB | Viewed 7640 times ]

P.P.S. Я посмотрел свой старый исходник spmx42, дата вводится вот так:
Code:
procedure SetData;
 begin
  asm
   push ax
   push cx
   push dx
   mov  ax,$2a00 {________________________ введем автоматом дату__}
   int  21h      {______________________________ для RAMFOS_______}
  {===============================================================}
   les di,buf1          {укажем стpаницу 1 (служебное озу)}
   add di,$ffbb         {смещение к атpибуту даты}
   mov al,$1            {пpизнак}
   mov es:[di],al       {установим}

   mov al,$8b           {дата введена}
   mov es:[di+1],al     {установим}

   xor  ax,ax
   mov  al,dl           {__________________________ день_____}
   call Dec_cor
   {mov  al,$20}        {тест}
   mov es:[di+2],al

   mov  al,dh           {__________________________ месяц____}
   call Dec_cor
   {mov  al,$04}        {тест}
   mov es:[di+3],al

   sub  cx,2000
   mov  al,cl           {__________________________ год______}
   call Dec_cor
   {mov  al,$65}        {тест}
   mov es:[di+4],al
   pop dx
   pop cx
   pop ax
  end
 end;

Эти 5 байт пишутся в первую, а не в нулевую страницу ОЗУ, причем важны 01h, 8Bh - признак даты,
а сама дата не так уж и важна...

[/OFFTOP]

_________________
iLavr


15 Feb 2022 11:54
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Lavr wrote:
Как автор emu.exe посоветует разрешить этот траббл?

А почему не в теме про ханойские башни?
Выкладывай свои hanoi.cpu/.i80, попробую разобраться.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


16 Feb 2022 02:11
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
А почему не в теме про ханойские башни?
А потому что совет ты мне давал здесь, а не в теме про ханойские башни.
b2m wrote:
В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80
emu.exe MyCoolProg.cpu

b2m wrote:
Выкладывай свои hanoi.cpu/.i80, попробую разобраться.

А зачем тебе мои hanoi.cpu/.i80? :roll: Так работает любой файл *cpu/.i80 :esmile:
Я просто собирался пописать hanoi, но сутки прыгаю с бубном вокруг emu.exe.
Когда я этого совета не знал, то и не делал так, но ты посоветовал, а оно - никак... :-?

_________________
iLavr


16 Feb 2022 03:37
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Ну файл-то твой запускается? Я думаю да.
А вот то, что сервисы RAMFOSа не работают - это уже другой вопрос. Тут разбираться надо, как более корректно его запускать.

Enter можно подсунуть изменив файл EMU.ext (там есть похожие строчки):
Code:
cpu : loader {
  config="SpecialistMX"
  cmd[0].delay=700
  cmd[0].keymacro="{enter}"
  cmd[1].delay=1500
  cmd[1].poke="FFF8:70"
  cmd[2].start=now
  mode=2
}

Но надо ли это делать с другими мониторами - вопрос.

Поэтому лучше для совместимости скопировать под именем, например mx, и вместо .cpu делать файл .mx
То есть так:
Code:
mx : loader {
  config="SpecialistMX"
  cmd[0].delay=700
  cmd[0].keymacro="{enter}"
  cmd[1].delay=1500
  cmd[1].poke="FFF8:70"
  cmd[2].start=now
  mode=2
}

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


16 Feb 2022 08:40
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Ну я немного иначе поступил... поскольку не мог позволить себе попрыгать сутки с бубном безрезультатно... :-?
Я пропатчил файл RAMFOS и убрал запрос ввода даты - всё равно в случае с эмуляторами - это чисто фиктивная
функция, ибо даты всех внешних файлов прописывает Венда, а эмулятор - чисто запуск и отладка...

Патч следующий:
Attachment:
PATCH.png
PATCH.png [ 6.2 KiB | Viewed 7560 times ]

В файле SPMX.ROM ищем сигнатуру 21 A9 D1 - это указатель на дата:
Адрес D1 A9 может быть и другой в других версиях RAMFOS, тогда сначала
ищем, где дата: - это сигнатура C4 C1 D4 C1 для WinHEX, т.к. KOI-8, и слово
не видно... ну а потом патчим указанный участок вот так:
Attachment:
PATCH1.png
PATCH1.png [ 5.01 KiB | Viewed 7560 times ]

По сути дела в командную строку вводится 30 30 0D, что равносильно "0 0" [ENTER].

Теперь RAMFOS успевает развернуться и разложить всё что надо по своим служебным
ячейкам и падать перестаёт. Без этого он и виснуть будет и вылетать на дата:
Патч линейный, от адреса не зависит.

Но! Теперь не будет работать функция Удалить дату: - дата и так всегда 00 00 00. :wink:

Для других мониторов, я думаю, ничего делать не надо - они же не запрашивают дату...


P.S. Кстати... я там увидел в наборе MC6502.dll и "Агат", а чего ты "Apple I" не добавишь?
Он же простенький совсем...

_________________
iLavr


16 Feb 2022 11:12
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
b2m wrote:
Enter можно подсунуть изменив файл EMU.ext (там есть похожие строчки):
Code:
cpu : loader {
  config="SpecialistMX"
  cmd[0].delay=700
  cmd[0].keymacro="{enter}"
  cmd[1].delay=1500
  cmd[1].poke="FFF8:70"
  cmd[2].start=now
  mode=2
}

Несмотря на то, что подправил RAMFOS на автоматическое нажатие "0 0" [Enter], файл EMU.ext также
пришлось подшаманить, и нормально всё работает вот так:
Code:
cpu : loader {
  config="SpecialistMX"
  cmd[0].delay=1500
  cmd[0].poke="FFF8:70"
  cmd[1].delay=500
  cmd[1].start=now
  mode=2
}

Иначе что-то там RAMFOS у себя не успевал, и программа *.cpu запускалась в инверсном цвете порой... :-?

Lavr wrote:
Кстати... я там увидел в наборе MC6502.dll и "Агат", а чего ты "Apple I" не добавишь?
Он же простенький совсем...

Я, честно говоря, Hanoi больше хотел под 6502 написать, но столкнулся с тем, что КУЧА скачанных мной
из интернета компиляторов ассемблера не умеет скомпилировать правильно простой код: :o
Code:
   LDA BOX; где BOX - короткий адрес в zero page

Они справляются правильно лишь в ситуации типа:
Code:
   LDA $55; где $55 - короткий адрес в zero page

А если явно подсказать вот так (взять младшую часть):
Code:
   LDA <BOX; где BOX - короткий адрес в zero page

То у них возникает фазовая ошибка - на первом проходе резервировали 2 байта под BOX,
на втором проходе вдруг понимают, что <BOX - это байт, и рухнули все адреса меток дальше...

Поэтому я решил алгоритм прогнать на i8080, и перенести его потом аккуратно под 6502.
Тем более, что среда под i8080 более удобная для работы.

Ну и я попробовал было "Агат-7", из emu.exe в качестве заменителя Apple...
Но с ним получается вот что - там в папочке есть примеры его программ с адресами запуска:
Quote:
PACMAN - 2000G
MARS - 4000G
TARAKAN - 4000G
ROCKER - 5600G

Из меню "Агат-7" их загрузить не умеет:
Attachment:
Агат.PNG
Агат.PNG [ 39.03 KiB | Viewed 7455 times ]

Их загружать только через отладчик?

А второй момент - после старта "Агат-7", он пишет сверху Apple 11 в цвете и больше не реагирует
на нажатия клавиш... Что ему надо нажать, чтобы хоть в Воз-монитор вывалился? :roll:

_________________
iLavr


18 Feb 2022 11:12
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Lavr wrote:
Что ему надо нажать, чтобы хоть в Воз-монитор вывалился?

При сбросе удерживать пробел, например. Т.е. нажать на пробел и не отпуская ткнуть мышью на кнопку сброса на тулбаре. Или нажать Space+Ctrl+Break.

Lavr wrote:
Их загружать только через отладчик?

Нет, всё как на обычном компьютере. Ввести команду R, откроется окно выбора файла с расширением .b (эмуляция магнитофона).
И уже потом вводить команду запуска, для PACMAN - 2000G

В файле .b первые два байта - адрес загрузки, вторая пара - длина блока данных, затем сами данные.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


19 Feb 2022 06:20
Profile WWW
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Пора бы уже, видимо, портировать EMU под Android ! :roll:

Под ним ведь и на C++ можно писать приложения, и под Python...

А то - народ жаждет на своих смартфонах отечественных ретро-компьютеров! :o

А за всё прошедшее время на платформе Android лишь гордо реет одинокий
BkEmu — эмулятор БК-0010 для платформы Android :wink:
https://github.com/3cky/bkemu-android

Image

И ничего отечественного больше нет... :-? Десктопы да ноуты не в моде ведь ныне! :wink:

_________________
iLavr


08 Apr 2023 14:31
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Для начала "Пора бы уже" сделать его кроссплатформенным.
Однако воз и ныне там: то времени нет, то желания, а то и просто нет мотивации.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


09 Apr 2023 04:24
Profile WWW
Doomed

Joined: 10 Aug 2022 07:27
Posts: 355
Reply with quote
b2m, а возможно как то для произвольного z80 компа как то сконфигурировать?
Типа, ОЗУ, ПЗУ, 1 порт ввода и 1 вывода? Реально?)


09 Apr 2023 09:54
Profile
Devil

Joined: 26 May 2003 06:57
Posts: 859
Reply with quote
Можно. Но в качестве портов ввода-вывода не получится использовать реальное железо. Максимум - эмуляция ВВ55 через TCP соединение. Можно ещё типа светодиодов сделать вместо вывода на экран (по аналогии с Наири). Ну и типа клавиатуры что-нибудь, вместо порта ввода. Всё остальное - только в отладчике смотреть.

_________________
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/


11 Apr 2023 00:58
Profile WWW
Display posts from previous:  Sort by  
Reply to topic   [ 22 posts ]  Go to page 1, 2  Next

Who is online

Users browsing this forum: No registered users and 11 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.