ZXNet эхоконференция «code.zx»
тема: Как из кода получить текущее значение PC?
от: goodboy
кому: All
дата: 25 May 2006
Hello, fk0
fk0> А за это вообще руки отрывать, обязательно медленно и обязтельно чтоб
fk0> мучтельно.
за что такая жестокость, только если rom сменится ?
от: Дмитрий Демьяненко
кому: All
дата: 25 May 2006
Hello, goodboy
goo> за что такая жестокость, только если rom сменится ?
Такими выходками вы ставите железячников в большой тупик :)
от: TomCaT
кому: All
дата: 25 May 2006
Hello, heroy
код 201 может быть в знакогенераторе отыскать? его вряд-ли куда-то денут или
поменяют...
Да, кстати, команду Call 82 не может заменить команда HALT? Если уж это
прерывание портит стек ниже SP, то адрес прерванной им процедуры оно все равно
туда положит.
от: Robus
кому: All
дата: 26 May 2006
Hello, TomCaT
Tom> Да, кстати, команду Call 82 не может заменить команда HALT? Если уж
Tom> это прерывание портит стек ниже SP, то адрес прерванной им процедуры
Tom> оно все равно туда положит.
Супер !!! Велеколепное решение !!! А что бы решить проблему с IM 2 и тому
подобное можно сделать CALL 56 !!! Я, надеюсь, правильно вспомнил адрес
BASIC'овского прерывания ??? ...
от: Yuri Potapov
кому: All
дата: 26 May 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 May 2006
Hello, jerri
О, вот это то самое! Спасибо всем. А где бы это можно было бы применить?
от: Yuri Potapov
кому: All
дата: 27 May 2006
Hello, jim
Кисо... а ты зачем просило то?
воще мона в результате прогу настроить...
на конкретный адрес
от: jim
кому: All
дата: 27 May 2006
Hello, jerri
гаккон... а как вы это делаешь? проставляешь адресы переходов?
от: Андрей Богданович
кому: All
дата: 27 May 2006
Hello, jim
Вообще это активно юзается в плагинах RC, все плагины настраиваются на работу с
адреса загрузки. С ходу еще могу вспомнить Laser Compact - распаковщик
самонастраивался.
от: jim
кому: All
дата: 28 May 2006
Hello, Spectre
Spe> Вообще это активно юзается в плагинах RC, все плагины настраиваются
Spe> на работу с адреса загрузки. С ходу еще могу вспомнить Laser Compact
Spe> - распаковщик самонастраивался.
А в gens, например, не тот же принцип? Грузится по любому адресу. Потом
работает только с этого адреса.
от: TomCaT
кому: All
дата: 31 May 2006
Hello, fk0
fk0> Hет гарантий однако, что не снимет, например, его в регистр и чем-то
fk0> ещё не загадит стек.
Т.е. возвращаться из себя процедура прерывания будет не через стек?
Тогда пожалуй гарантии нет.
Hо если узнавать сразу после вызова из Васика, то сдрес вызова по USR попадает
в BC.
от: deathsoft
кому: All
дата: 01 Jun 2006
Hello, TomCaT
Зачем такие сложности, все делается также как на x86
call на pop
call label1
label1; pop; hl
в hl получаем значение label1
от: Андрей Александрович Титов
кому: All
дата: 01 Jun 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 Jun 2006
Hello, Titus
Tit> Во-первых, call - команда абсолютного перехода
Да я уже понял, что чушь написал. Давно под z80 ничего не писал, поэтому забыл
что в call абсолютный адрес прописывается. Привых уже к x86, где все адреса в
командах перехода относительные.
от: Андрей Богданович
кому: All
дата: 01 Jun 2006
Hello, Titus
Ради интереса представил себе обработчик прерываний который на стеке не
оставляет адрес.
EX (SP),HL
LD (WHERE+1),HL
POP HL
WHERE JP 0
Выглядит несколько нереально... но почему бы и нет?
|