Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Программирование (http://zx-pk.ru/forumdisplay.php?f=14)
-   -   Как из кода получить текущее значение PC? (http://zx-pk.ru/showthread.php?t=3161)

jim 25th May 2006 12:48

Как из кода получить текущее значение PC?
 
Кто нибудь знает способы? Правда, забыл зачем мне это надо :)

fk0 25th May 2006 14:01

Quote:

Originally Posted by jim
Кто нибудь знает способы? Правда, забыл зачем мне это надо :)

Во-первых имеет смысл ТОЛЬКО ДЛЯ ПОЗИЦИОННО-НЕЗАВИСИМОГО КОДА.
Зависит от возможности ли использование заранее известного статического
адреса памяти. По этому адресу загоняется POP HL : JP (HL).

goodboy 25th May 2006 14:54

делаешь CALL на RET, после этого снимаешь со стека адрес инструкции после CALL

call 82
addr dec sp
dec sp
pop hl ; hl=addr

Titus 25th May 2006 15:11

Quote:

Originally Posted by goodboy
делаешь CALL на RET, после этого снимаешь со стека адрес инструкции после CALL

call 82
addr dec sp
dec sp
pop hl ; hl=addr

Ты забыл прерывания запретить :v2_wink2:

fk0 25th May 2006 15:58

Quote:

Originally Posted by goodboy
делаешь CALL на RET

Для этото RST нужно иметь по известному адресу в памяти.

Quote:

после этого снимаешь со стека адрес
...на котором возникло прерывание...

Quote:

call 82
А за это вообще руки отрывать, обязательно медленно и обязтельно чтоб мучтельно.

goodboy 25th May 2006 18:19

Quote:

Originally Posted by fk0
А за это вообще руки отрывать, обязательно медленно и обязтельно чтоб мучтельно.

за что такая жестокость, только если rom сменится ?

ZEK 25th May 2006 20:10

Quote:

Originally Posted by goodboy
за что такая жестокость, только если rom сменится ?

Такими выходками вы ставите железячников в большой тупик :)

TomCaT 25th May 2006 22:00

код 201 может быть в знакогенераторе отыскать? его вряд-ли куда-то денут или поменяют...

Да, кстати, команду Call 82 не может заменить команда HALT? Если уж это прерывание портит стек ниже SP, то адрес прерванной им процедуры оно все равно туда положит.

Robus 25th May 2006 23:54

Quote:

Originally Posted by TomCaT
Да, кстати, команду Call 82 не может заменить команда HALT? Если уж это прерывание портит стек ниже SP, то адрес прерванной им процедуры оно все равно туда положит.

Супер !!! Велеколепное решение !!! А что бы решить проблему с IM 2 и тому подобное можно сделать CALL 56 !!! Я, надеюсь, правильно вспомнил адрес BASIC'овского прерывания ??? ...

jerri 26th May 2006 01:31

эхх молодеш

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


All times are GMT +4. The time now is 21:39.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.