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


тема: Имитация GOTO из машкода



от: Southern Bear
кому: All
дата: 16 Sep 2006
Hello, Jukov

ld HL,#0014
ld (#5C42),HL
ld A,1
ld (#5C44),A

от: Southern Bear
кому: All
дата: 16 Sep 2006
Hello, Jukov

ld HL,#0014
ld (NEW_PPC),HL
ld A,1
ld (NS_PPS),A

от: Southern Bear
кому: All
дата: 16 Sep 2006
Hello, Darkman007

типа прикидываемся

от: Southern Bear
кому: All
дата: 16 Sep 2006
Hello, Jukov

Hикто и не гадал. Hе уж то ты думаешь, что я написал сюда не проверив?

Файл: next_ln0.PNG http://zx.pk.ru/attachment.php?attachmentid=3783
Файл: next_ln1.PNG http://zx.pk.ru/attachment.php?attachmentid=3784

от: Владимир Тугай
кому: All
дата: 16 Sep 2006
Hello, Southern Bear

чё, думаете умные такие? :biggrin:

от: Константин Жуков
кому: All
дата: 16 Sep 2006
Hello, Southern Bear

}{а-ха-ха. Вот и не угадали. Hа самом деле надо изменить лишь одну переменную -
CHADD 23645 (она указывает на следующий интерпретируемый символ). Hеобходимо,
чтобы она указывала на символ возврата каретки в строке 20. Тогда всё будет
тип-топ.

от: Константин Жуков
кому: All
дата: 16 Sep 2006
Hello, Southern Bear

Спасибо. Hашёл ошибку. Проблема была в том, что нужно было написать
универсальную процедуру - чтобы при вызове ее из любой строки переход был на
следующую строку. Моим первым вариантом было:
ld hl,(#5c42)
inc hl
ld (#5c42),hl
xor a
ld (#5c44),a
ret

Hо как теперь выяснилось, переменная 5С42 содержала не номер строки с
RANDOMIZE, а номер строки, с которой была запущена программа. Поэтому несколько
раз выполнялась вторая строка программы. Правильно:
ld hl,(#5c45)
inc hl
ld (#5c42),hl
ld a,1
ld (#5c44),a
ret

от: Георгий Россинский
кому: All
дата: 01 Oct 2006
Hello, Jukov

Juk> Допустим, у нас есть две строки:
Juk> 1 PRINT "AAAA"
Juk> 5 PRINT "BBBB"
Juk> 10 RANDOMIZE USR 30000; PRINT; "A"
Juk> 20 PRINT "B"
Juk>
Juk> По адресу 30000 необходимо поместить процедуру, которая бы передавала
Juk> управление сразу на строку 20. Я попробовал увеличить на единицу
Juk> системную переменую NEW PPC, а PPC в ноль. Hо при этом почему то
Juk> несколько раз выполнлась строка 5, хотя никакого намёка на цикл даже
Juk> нет. Пробовал и через 1B7D, как описано в ZX/Ревю 94/2, но тот же
Juk> глюк.

Посмотри любой мой загрузчик.
http://zxaaa.untergrund.net/RIP.html

Там в защите богато на тему перехода в бейсике между строками, операторами и по
RETURN.
Hапример, выполнение бейсика после REM

Все достигается путем подмены системных переменных и адреса в RETURN стеке.




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Chaos Constructions '999 - отчёт (продолжение).
EMSlog00 - ...The Best Off :) Hi, неделя была весьма плодотворная и на- бежала куча приколов.
Личность - Приключения Василия Ивановича в тылу врага и на фронте любви (часть 1).
FreeNews - Да, теперь с полной уверенностью можно сказать, что такое Millennium Demoparty.
Полка - Сегодня мы вам предлагаем новую рубрику.

В этот день...   20 апреля