47th Byte #01 |
|
Как переделывать игры - подпрограммы работающие с лентой.
╔════════════════════════════════════════════════════╗ ║ ║ ║ ░ ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒ ║ ║ ░ █ █ ▀▀▀▀▀▄ ▒ ║ ║ ░ █ █ █ ▓ ▓ ▓ ▓ ▒ ║ ║ ░ █ █ █ ▓▓▓ ▓▓▓ ▓▓▓ ▓ ▓ ▓▓▓ ▓▓ ▒ ║ ║ ░ ▀▀▀▀▄ █ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▒ ║ ║ ░ █ █ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓ ▓▓▓ ▒ ║ ║ ░ █ █ ▓▓ ▓ ▓ ▓▓▓ ▓▓▓ ▓▓ ▓ ▒ ║ ║ ░ ▓ ▓▓ ▒ ║ ║ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░ ▓▓ ▒ ║ ║ ║ ╚════════════════════════════════════════════════════╝ * СПЕЦИАЛЬНЫЙ ВЫПУСК * К А К П Е Р Е Д Е Л Ы В А Т Ь И Г Р Ы ЧАСТЬ ПЕРВАЯ. 1. ПОДПРОГРАММЫ, РАБОТАЮЩИЕ С ЛЕНТОЙ. 1.1 Загрузка. Программа загрузки блока кодов с магнитофона может иметь приблизительно такой вид: ... LOADER LD IX,HEAD ; В IX-адрес загрузки LD DE,#11 ; В DE-длина заголовка XOR A ; В А-0 для заголовка и #FF для тела файла SCF ; Установка CARRY-флага CALL #0556 ; Вызов подпрограммы ПЗУ ,осуществляющей ; загрузку блока кодов. JP NC,NNNN ; Переход по адресу NNNN в случае ошибки. CALL NNNN ; Тут может быть вызов подпрограммы, кото- ; рая проверяет только что загруженный за- ; головок файла. ; Если коды отгружаются без хэдера, то этого блока мо- ; жет не быть. ;----------------------------------------------------- LD IX,START; (*) Начальный адрес. LD DE,LENG ; (*) Длина. LD A,#FF ; SCF ; Загрузка тела CALL #0556 ; файла JP NC,NNNN ; ..... ; RET ; ; Звездами (*)помечены необходимые нам ад- ; реса размещения сохраняемого блока. ; Их нужно запомнить. Подпрограмма #0556 прерывается при нажатии на BREAK. Для пре- дотвращения этого изменяют программу вызова процедуры: LOAD_C LD IX,START; Длина и адрес передаются так же. LD DE,LENG ; LD A,NN ; SCF ; INC D ; EX AF,AF' ; DEC D ; DI ; LD A,15 ; OUT (254),A; CALL #0561 ; LD A,7 ; OUT (254),A; EI ; RET ; Эту процедуру обычно оформляют в виде подпрограммы: LD IX,START LD DE,LENG LD A,FLAG CALL LOAD_C ...... 1.2 Запись. Подпрограмма записи выглядит так: SAVE LD IX,HEAD ; Параметры - такие же, как в LOADER'e. LD DE,#11 ; LD A,0 ; CALL #04C2 ; LD IX,START; LD DE,LENG ; LD A,#FF ; CALL #04C2 ; RET ; Если заменить CALL #04C2 на CALL #04C6, то не будет прерывания по BREAK.
Другие статьи номера:
Как переделывать игры - подпрограммы работающие с лентой. |
Как переделывать игры - поиск подпрограмм работающих с лентой. |
Как переделывать игры - подпрограммы работы с диском. |
Похожие статьи:
В этот день... 21 ноября