ZX Review
#7-8-9-10
08 ноября 1997 |
|
Ретро - 40 лучших процедур: Удаление блока программы.
7. ПРОЦЕДУРЫ ОБРАБОТКИ ПРОГРАММ 7.1. Удаление блока программы Длина: 42 Количество переменных: 2 Контрольная сумма: 5977 Назначение: эта программа уда- ляет блок BASIC-программы, нахо- дящийся между строками, опреде- ленными пользователем. Переменные: Имя: start line no Длина: 2 Ячейка: 23296 Комментарий: номер первой строки, подлежащей удалению. Имя: end line no Длина: 2 Ячейка: 23298 Комментарий: номер послед- ней строки, подлежащей удалению. Вызов программы: RANDOMIZE USR адрес Контроль ошибок: если имеют место следующие ошибки, то про- цедура останавливается без уда- ления строк BASIC-программы: - если последний номер строки меньше, чем первый номер строки; - если между этими двумя стро- ками нет программы на БЕЙСИКе; - если один из номеров строк или оба равны 0. Комментарий: эта программа до- вольно медленна для удаления большого блока программных строк, но, тем не менее, рабо- тать с ее помощью все же удоб- нее, чем удалять строки вручную. Не вводите номера строк боль- ше, чем 9999. ЛИСТИНГ МАШИННЫХ КОДОВ МЕТКА АССЕМБЛЕР ЧИСЛА ДЛЯ ВВОДА147. LD HL,(23296) 42 0 91 LD DE,(23298) 237 91 2 91 LD A,H 124 OR L 181 RET Z 200 LD A,D 122 OR E 179 RET Z 200 PUSH DE 213 CALL 6510 205 110 25 EX (SP),HL 227 INC HL 35 CALL 6510 205 110 25 POP DE 209 AND A 167 SBC HL,DE 237 82 RET Z 200 RET C 216 EX DE,HL 235 NXT_CH: LD A,D 122 OR E 179 RET Z 200 PUSH DE 213 PUSH HL 229 CALL 4120 205 24 16 POP HL 225 POP DE 209 DEC DE 27 JR NXT_CH 24 243 2 Как она работает: В пары регистров HL и DE заг- ружаются начальный и конечный номера строк соответственно. Эти значения проверяются и, если од- но из них или оба равны 0, прог- рамма возвращается в BASIC. Затем вызывается подпрограмма ПЗУ по адресу 6510 - она возвра- щает адрес в памяти компьютера, с которого начинается первая строка. Эта же подпрограмма за- тем вызывается снова для опреде- ления адреса символа, стоящего после ENTER в конечной строке. В пару регистров HL помещает- ся разность этих двух адресов и, если это значение равно 0 или отрицательно, программа возвра- щается в BASIC. Содержимое пары регистров HL копируется в DE для использова- ния DE в качестве счетчика. Если счетчик равен 0, то работа про- цедуры завершается, а если нет, то вызывается подпрограмма ПЗУ, расположенная по адресу 4120, которая удаляет один символ. После этого - возврат к NXT_CH.
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября