Это потому, что отладчик был использован. Если после начала эмуляции компьютера отладчик не был использован, то он не запишется в сохранённый файл.Lavr wrote:После загрузки Digit.emu программа emu почему-то выходит в свой Debugger - в нём надо нажать F5.
B2M EMU
Moderator: Shaos
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
B2M EMU
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: 1816ВЕ48
Ну естественно, отладчик был использован, потому как по Ctrl-L в "Специалист-МХ" грузится бинарник,b2m wrote:Это потому, что отладчик был использован.Lavr wrote:После загрузки Digit.emu программа emu почему-то выходит в свой Debugger - в нём надо нажать F5.
а по Ctrl-S - выгружается отдебуженный исходник.
А нельзя как-то прописать где-то, чтобы Debugger не стартовал, когда не надо?
И где можно что-то прописать, чтобы программа по умолчанию сразу загружала "Специалист-МХ"
без предварительного меню выбора компьютера?
И еще один момент, не очень приятный... хотя, может быть, он у тебя исправлен уже...
Вот смотрю я на встроенном отладчике исполнение программы и жду, когда она запишет что-то в память: Наконец, программа пишет в память (STA XXYY), но в памяти - ничего не меняется по адресу XXYY !

Башка начинает закипать... как же так?


Какая-то очень неудобная фича...

И как во встроенном отладчике изменить содержимое регистров процессора, если это необходимо?
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
Re: 1816ВЕ48
Нет. Нужно добиться того, чтобы программа без отладчика запускалась. В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80Lavr wrote:А нельзя как-то прописать где-то, чтобы Debugger не стартовал, когда не надо?
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
Раньше компы были слабые, такая вот оптимизация, не обновляется окно дампа. Но можно трассировать с shift, тогда обновляется. Правда, жмакать shift постоянно не надо, а то CALL проскочишьLavr wrote:Наконец, программа пишет в память (STA XXYY), но в памяти - ничего не меняется по адресу XXYY !

Прямо в окне регистров и менять. Или Tab-ом туда перейти, или мышью ткнуть.Lavr wrote:И как во встроенном отладчике изменить содержимое регистров процессора, если это необходимо?
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: 1816ВЕ48
Жмакать постоянно вообще ничего не надо!b2m wrote:Правда, жмакать shift постоянно не надо, а то CALL проскочишь

Добрая Венда за этим следит и вылазит с предупреждением о залипании клавиш...


You do not have the required permissions to view the files attached to this post.
iLavr
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: 1816ВЕ48
[OFFTOP]
При старте "Специалист-МХ" ОС RAMFOS видит отсутствие даты по адресу 0xD202 и запрашивает её.
В этот момент RAMFOS еще не развернулся до конца...
Но в этот момент в память загружается программа Hanoi.CPU и управление отдаётся ей.
В результате всё вешается на приведённом выше скриншоте...
Когда у меня были исходники Шевцова, я там подправил код и дата из DOS вводилась автоматом.
Но здесь я пробовал и утилитой nircmd.exe нажать введение даты - достаточно {0 [Enter]}.
Но не срабатывает и этот фокус...
Как автор emu.exe посоветует разрешить этот траббл? По-простому у меня не вышло никак...
P.S. Но даже если стартануть emu.exe обычным образом, и запустить из меню файл *.cpu, то
из RAMFOS всё равно вылетаешь на ввод даты... P.P.S. Я посмотрел свой старый исходник spmx42, дата вводится вот так:
Эти 5 байт пишутся в первую, а не в нулевую страницу ОЗУ, причем важны 01h, 8Bh - признак даты,
а сама дата не так уж и важна...
[/OFFTOP]
Извини уж, может быть я в чем-то туплю, но столь удобный вариант у меня не работает никак...b2m wrote:В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80
emu.exe MyCoolProg.cpu

В этот момент RAMFOS еще не развернулся до конца...
Но в этот момент в память загружается программа Hanoi.CPU и управление отдаётся ей.
В результате всё вешается на приведённом выше скриншоте...
Когда у меня были исходники Шевцова, я там подправил код и дата из DOS вводилась автоматом.
Но здесь я пробовал и утилитой nircmd.exe нажать введение даты - достаточно {0 [Enter]}.
Но не срабатывает и этот фокус...
Как автор emu.exe посоветует разрешить этот траббл? По-простому у меня не вышло никак...

P.S. Но даже если стартануть emu.exe обычным образом, и запустить из меню файл *.cpu, то
из RAMFOS всё равно вылетаешь на ввод даты... P.P.S. Я посмотрел свой старый исходник spmx42, дата вводится вот так:
Code: Select all
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;
а сама дата не так уж и важна...
[/OFFTOP]
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
Re: 1816ВЕ48
А почему не в теме про ханойские башни?Lavr wrote:Как автор emu.exe посоветует разрешить этот траббл?
Выкладывай свои hanoi.cpu/.i80, попробую разобраться.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: 1816ВЕ48
А потому что совет ты мне давал здесь, а не в теме про ханойские башни.b2m wrote:А почему не в теме про ханойские башни?
b2m wrote:В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80
emu.exe MyCoolProg.cpu
А зачем тебе мои hanoi.cpu/.i80?b2m wrote:Выкладывай свои hanoi.cpu/.i80, попробую разобраться.


Я просто собирался пописать hanoi, но сутки прыгаю с бубном вокруг emu.exe.
Когда я этого совета не знал, то и не делал так, но ты посоветовал, а оно - никак...

iLavr
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
Re: 1816ВЕ48
Ну файл-то твой запускается? Я думаю да.
А вот то, что сервисы RAMFOSа не работают - это уже другой вопрос. Тут разбираться надо, как более корректно его запускать.
Enter можно подсунуть изменив файл EMU.ext (там есть похожие строчки):
Но надо ли это делать с другими мониторами - вопрос.
Поэтому лучше для совместимости скопировать под именем, например mx, и вместо .cpu делать файл .mx
То есть так:
А вот то, что сервисы RAMFOSа не работают - это уже другой вопрос. Тут разбираться надо, как более корректно его запускать.
Enter можно подсунуть изменив файл EMU.ext (там есть похожие строчки):
Code: Select all
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: Select all
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/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: 1816ВЕ48
Ну я немного иначе поступил... поскольку не мог позволить себе попрыгать сутки с бубном безрезультатно...
Я пропатчил файл RAMFOS и убрал запрос ввода даты - всё равно в случае с эмуляторами - это чисто фиктивная
функция, ибо даты всех внешних файлов прописывает Венда, а эмулятор - чисто запуск и отладка...
Патч следующий: В файле SPMX.ROM ищем сигнатуру 21 A9 D1 - это указатель на дата:
Адрес D1 A9 может быть и другой в других версиях RAMFOS, тогда сначала
ищем, где дата: - это сигнатура C4 C1 D4 C1 для WinHEX, т.к. KOI-8, и слово
не видно... ну а потом патчим указанный участок вот так: По сути дела в командную строку вводится 30 30 0D, что равносильно "0 0" [ENTER].
Теперь RAMFOS успевает развернуться и разложить всё что надо по своим служебным
ячейкам и падать перестаёт. Без этого он и виснуть будет и вылетать на дата:
Патч линейный, от адреса не зависит.
Но! Теперь не будет работать функция Удалить дату: - дата и так всегда 00 00 00.
Для других мониторов, я думаю, ничего делать не надо - они же не запрашивают дату...
P.S. Кстати... я там увидел в наборе MC6502.dll и "Агат", а чего ты "Apple I" не добавишь?
Он же простенький совсем...

Я пропатчил файл RAMFOS и убрал запрос ввода даты - всё равно в случае с эмуляторами - это чисто фиктивная
функция, ибо даты всех внешних файлов прописывает Венда, а эмулятор - чисто запуск и отладка...
Патч следующий: В файле SPMX.ROM ищем сигнатуру 21 A9 D1 - это указатель на дата:
Адрес D1 A9 может быть и другой в других версиях RAMFOS, тогда сначала
ищем, где дата: - это сигнатура C4 C1 D4 C1 для WinHEX, т.к. KOI-8, и слово
не видно... ну а потом патчим указанный участок вот так: По сути дела в командную строку вводится 30 30 0D, что равносильно "0 0" [ENTER].
Теперь RAMFOS успевает развернуться и разложить всё что надо по своим служебным
ячейкам и падать перестаёт. Без этого он и виснуть будет и вылетать на дата:
Патч линейный, от адреса не зависит.
Но! Теперь не будет работать функция Удалить дату: - дата и так всегда 00 00 00.

Для других мониторов, я думаю, ничего делать не надо - они же не запрашивают дату...
P.S. Кстати... я там увидел в наборе MC6502.dll и "Агат", а чего ты "Apple I" не добавишь?
Он же простенький совсем...
You do not have the required permissions to view the files attached to this post.
iLavr
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: 1816ВЕ48
Несмотря на то, что подправил RAMFOS на автоматическое нажатие "0 0" [Enter], файл EMU.ext такжеb2m wrote:Enter можно подсунуть изменив файл EMU.ext (там есть похожие строчки):Code: Select all
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 }
пришлось подшаманить, и нормально всё работает вот так:
Code: Select all
cpu : loader {
config="SpecialistMX"
cmd[0].delay=1500
cmd[0].poke="FFF8:70"
cmd[1].delay=500
cmd[1].start=now
mode=2
}

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

Code: Select all
LDA BOX; где BOX - короткий адрес в zero page
Code: Select all
LDA $55; где $55 - короткий адрес в zero page
Code: Select all
LDA <BOX; где BOX - короткий адрес в zero page
на втором проходе вдруг понимают, что <BOX - это байт, и рухнули все адреса меток дальше...
Поэтому я решил алгоритм прогнать на i8080, и перенести его потом аккуратно под 6502.
Тем более, что среда под i8080 более удобная для работы.
Ну и я попробовал было "Агат-7", из emu.exe в качестве заменителя Apple...
Но с ним получается вот что - там в папочке есть примеры его программ с адресами запуска:
Из меню "Агат-7" их загрузить не умеет: Их загружать только через отладчик?PACMAN - 2000G
MARS - 4000G
TARAKAN - 4000G
ROCKER - 5600G
А второй момент - после старта "Агат-7", он пишет сверху Apple 11 в цвете и больше не реагирует
на нажатия клавиш... Что ему надо нажать, чтобы хоть в Воз-монитор вывалился?

You do not have the required permissions to view the files attached to this post.
iLavr
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
Re: 1816ВЕ48
При сбросе удерживать пробел, например. Т.е. нажать на пробел и не отпуская ткнуть мышью на кнопку сброса на тулбаре. Или нажать Space+Ctrl+Break.Lavr wrote:Что ему надо нажать, чтобы хоть в Воз-монитор вывалился?
Нет, всё как на обычном компьютере. Ввести команду R, откроется окно выбора файла с расширением .b (эмуляция магнитофона).Lavr wrote:Их загружать только через отладчик?
И уже потом вводить команду запуска, для PACMAN - 2000G
В файле .b первые два байта - адрес загрузки, вторая пара - длина блока данных, затем сами данные.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Supreme God
- Posts: 16676
- Joined: 21 Oct 2009 08:08
- Location: Россия
Re: B2M EMU
Пора бы уже, видимо, портировать EMU под Android !
Под ним ведь и на C++ можно писать приложения, и под Python...
А то - народ жаждет на своих смартфонах отечественных ретро-компьютеров!
А за всё прошедшее время на платформе Android лишь гордо реет одинокий
BkEmu — эмулятор БК-0010 для платформы Android
https://github.com/3cky/bkemu-android

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

Под ним ведь и на C++ можно писать приложения, и под Python...
А то - народ жаждет на своих смартфонах отечественных ретро-компьютеров!

А за всё прошедшее время на платформе Android лишь гордо реет одинокий
BkEmu — эмулятор БК-0010 для платформы Android

https://github.com/3cky/bkemu-android
И ничего отечественного больше нет...


iLavr
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
Re: B2M EMU
Для начала "Пора бы уже" сделать его кроссплатформенным.
Однако воз и ныне там: то времени нет, то желания, а то и просто нет мотивации.
Однако воз и ныне там: то времени нет, то желания, а то и просто нет мотивации.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/
-
- Doomed
- Posts: 500
- Joined: 10 Aug 2022 07:27
- Location: Crimea
Re: B2M EMU
b2m, а возможно как то для произвольного z80 компа как то сконфигурировать?
Типа, ОЗУ, ПЗУ, 1 порт ввода и 1 вывода? Реально?)
Типа, ОЗУ, ПЗУ, 1 порт ввода и 1 вывода? Реально?)
-
- Devil
- Posts: 905
- Joined: 26 May 2003 06:57
Re: B2M EMU
Можно. Но в качестве портов ввода-вывода не получится использовать реальное железо. Максимум - эмуляция ВВ55 через TCP соединение. Можно ещё типа светодиодов сделать вместо вывода на экран (по аналогии с Наири). Ну и типа клавиатуры что-нибудь, вместо порта ввода. Всё остальное - только в отладчике смотреть.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
http://bashkiria-2m.narod.ru/