Как из кода получить текущее значение PC? — ZXNet «code.zx»

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

ZXNet echo conference «code.zx»



from: goodboy
to: All
date: 25 May 2006
Hello, fk0 fk0> А за это вообще руки отрывать, обязательно медленно и обязтельно чтоб fk0> мучтельно. за что такая жестокость, только если rom сменится ?

from: Дмитрий Демьяненко
to: All
date: 25 May 2006
Hello, goodboy goo> за что такая жестокость, только если rom сменится ? Такими выходками вы ставите железячников в большой тупик :)

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

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

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

from: jim
to: All
date: 27 May 2006
Hello, jerri О, вот это то самое! Спасибо всем. А где бы это можно было бы применить?

from: Yuri Potapov
to: All
date: 27 May 2006
Hello, jim Кисо... а ты зачем просило то? воще мона в результате прогу настроить... на конкретный адрес

from: jim
to: All
date: 27 May 2006
Hello, jerri гаккон... а как вы это делаешь? проставляешь адресы переходов?

from: Андрей Богданович
to: All
date: 27 May 2006
Hello, jim Вообще это активно юзается в плагинах RC, все плагины настраиваются на работу с адреса загрузки. С ходу еще могу вспомнить Laser Compact - распаковщик самонастраивался.

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

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

from: deathsoft
to: All
date: 1 June 2006
Hello, TomCaT Зачем такие сложности, все делается также как на x86 call на pop call label1 label1; pop; hl в hl получаем значение label1

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

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

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