ZX Review
#7-8-9-10
08 ноября 1997 |
|
Ретро - 40 лучших процедур: Обмен токена.
7.2. Обмен токена Примечание: под "токеном" подразумевается любое ключевое слово (команда, функция) из "словаря" БЕЙСИКа, которое рас- сматривается данной программой (как и интерпретатором компьюте- ра) в виде определенного кода. Длина: 46 Количество переменных: 2 Контрольная сумма: 5000 Назначение: меняет любое вхож- дение заданного токена в БЕЙ- СИК-программе на другой токен (например, все операторы PRINT могут быть изменены на LPRINT). Переменные: Имя: chr old Длина: 1 Ячейка: 23296 Комментарий: код заменяемо- го токена. Имя: chr new Длина: 1 Ячейка: 23297 Комментарий: код замещающе- го токена. Вызов программы: RANDOMIZE USR адрес Контроль ошибок: если БЕЙСИК- программы нет в памяти или один из двух заданных токенов имеет код меньше 32, то процедура воз- вращается в BASIC. Комментарий: эта процедура очень быстра, но чем длиннее БЕЙСИК-программа, тем медленнее она работает. ЛИСТИНГ МАШИННЫХ КОДОВ МЕТКА АССЕМБЛЕР ЧИСЛА ДЛЯ ВВОДА147. LD BC,(23296) 237 75 0 91 LD A,31 62 31 CP B 184 RET NC 208 CP C 185 RET NC 208 LD HL,(23635) 42 83 92 NXT_CH INC HL 35 INC HL 35 INC HL 35 CHECK LD DE,(23627) 237 91 75 92 AND A 167 SBC HL,DE 237 82 RET NC 208 ADD HL,DE 25 INC HL 35 LD A,(HL) 126 INC HL 35 CP 13 254 13 JR Z,NXT_CH 40 237 CP 14 254 14 JR NZ,COMP 32 3 INC HL 35 JR NEXT_CHR 24 230 CONP DEC HL 43 CP C 185 JR NZ,CHECK 32 229 LD (HL),B 112 JR CHECK 24 226 2 Как она работает: В регистры B и C загружаются новый и старый токены соответ- ственно. Если любой из токенов имеет код меньше, чем 32, то программа возвращается в BASIC. В пару HL заносится адрес на- чала БЕЙСИК-программы. Пара ре- гистров затем увеличивается и сравнивается с адресом области переменных. Если HL не меньше, чем адрес начала области пере- менных, программа возвращается в BASIC. Пара HL увеличивается, указы- вая на следующий символ. Код этого символа загружается в ак- кумулятор и HL увеличивается вновь. Если значение в аккумуля- торе равно 13 или 14 (ENTER или NUMBER), подпрограмма возвра- щается к NXT_CH, а HL увели- чивается, указывая на следующий символ. Если аккумулятор не со- держит 13 или 14, хранимое зна- чение сравнивается с chr old. Если пара найдена, этот символ замещается на chr new. Затем возврат к проверке (CHECK) на конец обрабатываемой программы.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября