|
nedoPC.orgCommunity for electronics hobbyists, established in 2002 |
|
Author |
Message |
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
Это потому, что отладчик был использован. Если после начала эмуляции компьютера отладчик не был использован, то он не запишется в сохранённый файл.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
08 Dec 2021 05:15 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну естественно, отладчик был использован, потому как по Ctrl-L в "Специалист-МХ" грузится бинарник, а по Ctrl-S - выгружается отдебуженный исходник. А нельзя как-то прописать где-то, чтобы Debugger не стартовал, когда не надо? И где можно что-то прописать, чтобы программа по умолчанию сразу загружала "Специалист-МХ" без предварительного меню выбора компьютера? И еще один момент, не очень приятный... хотя, может быть, он у тебя исправлен уже... Вот смотрю я на встроенном отладчике исполнение программы и жду, когда она запишет что-то в память: Наконец, программа пишет в память ( STA XXYY), но в памяти - ничего не меняется по адресу XXYY ! Башка начинает закипать... как же так? Оказывается, надо уйти с этого участка памяти и открыть его снова! Какая-то очень неудобная фича... И как во встроенном отладчике изменить содержимое регистров процессора, если это необходимо?
_________________ iLavr
|
08 Dec 2021 12:33 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
Нет. Нужно добиться того, чтобы программа без отладчика запускалась. В случае Специалист-МХ можно стартовать файлы для эмулятора Шевцова .cpu/.i80 emu.exe MyCoolProg.cpu Вот несколько примеров: 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 проскочишь Прямо в окне регистров и менять. Или Tab-ом туда перейти, или мышью ткнуть.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
09 Dec 2021 08:54 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Жмакать постоянно вообще ничего не надо! Добрая Венда за этим следит и вылазит с предупреждением о залипании клавиш... Как она меня утомила во время отладки этой игры!
_________________ iLavr
|
09 Dec 2021 10:51 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
[OFFTOP]Извини уж, может быть я в чем-то туплю, но столь удобный вариант у меня не работает никак... При старте "Специалист-МХ" ОС RAMFOS видит отсутствие даты по адресу 0xD202 и запрашивает её. В этот момент RAMFOS еще не развернулся до конца...
Но в этот момент в память загружается программа Hanoi.CPU и управление отдаётся ей. В результате всё вешается на приведённом выше скриншоте...
Когда у меня были исходники Шевцова, я там подправил код и дата из DOS вводилась автоматом.
Но здесь я пробовал и утилитой nircmd.exe нажать введение даты - достаточно {0 [Enter]}. Но не срабатывает и этот фокус...
Как автор emu.exe посоветует разрешить этот траббл? По-простому у меня не вышло никак... P.S. Но даже если стартануть emu.exe обычным образом, и запустить из меню файл *.cpu, то из RAMFOS всё равно вылетаешь на ввод даты... 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 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
А почему не в теме про ханойские башни? Выкладывай свои hanoi.cpu/.i80, попробую разобраться.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
16 Feb 2022 02:11 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
А потому что совет ты мне давал здесь, а не в теме про ханойские башни. А зачем тебе мои hanoi.cpu/.i80? Так работает любой файл *cpu/.i80 Я просто собирался пописать hanoi, но сутки прыгаю с бубном вокруг emu.exe. Когда я этого совета не знал, то и не делал так, но ты посоветовал, а оно - никак...
_________________ iLavr
|
16 Feb 2022 03:37 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
Ну файл-то твой запускается? Я думаю да. А вот то, что сервисы RAMFOSа не работают - это уже другой вопрос. Тут разбираться надо, как более корректно его запускать. Enter можно подсунуть изменив файл EMU.ext (там есть похожие строчки): Но надо ли это делать с другими мониторами - вопрос. Поэтому лучше для совместимости скопировать под именем, например mx, и вместо .cpu делать файл .mx То есть так:
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
16 Feb 2022 08:40 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну я немного иначе поступил... поскольку не мог позволить себе попрыгать сутки с бубном безрезультатно... Я пропатчил файл 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" не добавишь? Он же простенький совсем...
_________________ iLavr
|
16 Feb 2022 11:12 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Несмотря на то, что подправил RAMFOS на автоматическое нажатие "0 0" [Enter], файл EMU.ext также пришлось подшаманить, и нормально всё работает вот так: Иначе что-то там RAMFOS у себя не успевал, и программа *.cpu запускалась в инверсном цвете порой... Я, честно говоря, Hanoi больше хотел под 6502 написать, но столкнулся с тем, что КУЧА скачанных мной из интернета компиляторов ассемблера не умеет скомпилировать правильно простой код: Они справляются правильно лишь в ситуации типа: А если явно подсказать вот так (взять младшую часть): То у них возникает фазовая ошибка - на первом проходе резервировали 2 байта под BOX, на втором проходе вдруг понимают, что <BOX - это байт, и рухнули все адреса меток дальше... Поэтому я решил алгоритм прогнать на i8080, и перенести его потом аккуратно под 6502. Тем более, что среда под i8080 более удобная для работы. Ну и я попробовал было " Агат-7", из emu.exe в качестве заменителя Apple... Но с ним получается вот что - там в папочке есть примеры его программ с адресами запуска: Из меню " Агат-7" их загрузить не умеет: Их загружать только через отладчик? А второй момент - после старта " Агат-7", он пишет сверху Apple 11 в цвете и больше не реагирует на нажатия клавиш... Что ему надо нажать, чтобы хоть в Воз-монитор вывалился?
_________________ iLavr
|
18 Feb 2022 11:12 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
При сбросе удерживать пробел, например. Т.е. нажать на пробел и не отпуская ткнуть мышью на кнопку сброса на тулбаре. Или нажать Space+Ctrl+Break. Нет, всё как на обычном компьютере. Ввести команду R, откроется окно выбора файла с расширением .b (эмуляция магнитофона). И уже потом вводить команду запуска, для PACMAN - 2000G В файле .b первые два байта - адрес загрузки, вторая пара - длина блока данных, затем сами данные.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
19 Feb 2022 06:20 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Пора бы уже, видимо, портировать EMU под Android ! Под ним ведь и на C++ можно писать приложения, и под Python... А то - народ жаждет на своих смартфонах отечественных ретро-компьютеров! А за всё прошедшее время на платформе Android лишь гордо реет одинокий BkEmu — эмулятор БК-0010 для платформы Android https://github.com/3cky/bkemu-androidИ ничего отечественного больше нет... Десктопы да ноуты не в моде ведь ныне!
_________________ iLavr
|
08 Apr 2023 14:31 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
Для начала "Пора бы уже" сделать его кроссплатформенным. Однако воз и ныне там: то времени нет, то желания, а то и просто нет мотивации.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
09 Apr 2023 04:24 |
|
|
Mondx
Doomed
Joined: 10 Aug 2022 07:27 Posts: 378
|
b2m, а возможно как то для произвольного z80 компа как то сконфигурировать? Типа, ОЗУ, ПЗУ, 1 порт ввода и 1 вывода? Реально?)
|
09 Apr 2023 09:54 |
|
|
b2m
Devil
Joined: 26 May 2003 06:57 Posts: 889
|
Можно. Но в качестве портов ввода-вывода не получится использовать реальное железо. Максимум - эмуляция ВВ55 через TCP соединение. Можно ещё типа светодиодов сделать вместо вывода на экран (по аналогии с Наири). Ну и типа клавиатуры что-нибудь, вместо порта ввода. Всё остальное - только в отладчике смотреть.
_________________Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
|
11 Apr 2023 00:58 |
|
|
Who is online |
Users browsing this forum: No registered users and 2 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
|
|