Как из кода получить текущее значение PC?

ZXNet эхоконференция «code.zx»

От goodboy Кому All 25.05.2006

Hello, fk0 fk0> А за это вообще руки отрывать, обязательно медленно и обязтельно чтоб fk0> мучтельно. за что такая жестокость, только если rom сменится ?

От Дмитрий Демьяненко Кому All 25.05.2006

Hello, goodboy goo> за что такая жестокость, только если rom сменится ? Такими выходками вы ставите железячников в большой тупик :)

От TomCaT Кому All 25.05.2006

Hello, heroy код 201 может быть в знакогенераторе отыскать? его вряд-ли куда-то денут или поменяют... Да, кстати, команду Call 82 не может заменить команда HALT? Если уж это прерывание портит стек ниже SP, то адрес прерванной им процедуры оно все равно туда положит.

От Robus Кому All 26.05.2006

Hello, TomCaT Tom> Да, кстати, команду Call 82 не может заменить команда HALT? Если уж Tom> это прерывание портит стек ниже SP, то адрес прерванной им процедуры Tom> оно все равно туда положит. Супер !!! Велеколепное решение !!! А что бы решить проблему с IM 2 и тому подобное можно сделать CALL 56 !!! Я, надеюсь, правильно вспомнил адрес BASIC'овского прерывания ??? ...

От Yuri Potapov Кому All 26.05.2006

Hello, Robus эхх молодеш ld hl,#e9e1 ; pop hl : jp (hl) ; ld de,(#4000) ld (#4000),hl call #4000 ;ld (#4000),de в hl - адрес возврата если вдруг резко понадобилось сохранить содержимое памяти то можно добавить то что за точкой с запятой

От jim Кому All 27.05.2006

Hello, jerri О, вот это то самое! Спасибо всем. А где бы это можно было бы применить?

От Yuri Potapov Кому All 27.05.2006

Hello, jim Кисо... а ты зачем просило то? воще мона в результате прогу настроить... на конкретный адрес

От jim Кому All 27.05.2006

Hello, jerri гаккон... а как вы это делаешь? проставляешь адресы переходов?

От Андрей Богданович Кому All 27.05.2006

Hello, jim Вообще это активно юзается в плагинах RC, все плагины настраиваются на работу с адреса загрузки. С ходу еще могу вспомнить Laser Compact - распаковщик самонастраивался.

От jim Кому All 28.05.2006

Hello, Spectre Spe> Вообще это активно юзается в плагинах RC, все плагины настраиваются Spe> на работу с адреса загрузки. С ходу еще могу вспомнить Laser Compact Spe> - распаковщик самонастраивался. А в gens, например, не тот же принцип? Грузится по любому адресу. Потом работает только с этого адреса.

От TomCaT Кому All 31.05.2006

Hello, fk0 fk0> Hет гарантий однако, что не снимет, например, его в регистр и чем-то fk0> ещё не загадит стек. Т.е. возвращаться из себя процедура прерывания будет не через стек? Тогда пожалуй гарантии нет. Hо если узнавать сразу после вызова из Васика, то сдрес вызова по USR попадает в BC.

От deathsoft Кому All 01.06.2006

Hello, TomCaT Зачем такие сложности, все делается также как на x86 call на pop call label1 label1; pop; hl в hl получаем значение label1

От Андрей Александрович Титов Кому All 01.06.2006

Hello, deathsoft dea> Зачем такие сложности, все делается также как на x86 dea> call на pop dea> dea> call label1 dea> label1; pop; hl dea> в hl получаем значение label1 Во-первых, call - команда абсолютного перехода, а абсолютных адресов мы не знаем. :v2_tong:

От deathsoft Кому All 01.06.2006

Hello, Titus Tit> Во-первых, call - команда абсолютного перехода Да я уже понял, что чушь написал. Давно под z80 ничего не писал, поэтому забыл что в call абсолютный адрес прописывается. Привых уже к x86, где все адреса в командах перехода относительные.

От Андрей Богданович Кому All 01.06.2006

Hello, Titus Ради интереса представил себе обработчик прерываний который на стеке не оставляет адрес. EX (SP),HL LD (WHERE+1),HL POP HL WHERE JP 0 Выглядит несколько нереально... но почему бы и нет?