47th Byte #01

Как переделывать игры - подпрограммы работающие с лентой.

<b>Как переделывать игры</b> - подпрограммы работающие с лентой.

    ╔════════════════════════════════════════════════════╗
    ║                                                    ║
    ║ ░                ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  ║
    ║ ░  █    █ ▀▀▀▀▀▄                                ▒  ║
    ║ ░  █    █      █  ▓   ▓      ▓         ▓        ▒  ║
    ║ ░  █    █      █  ▓▓▓ ▓▓▓    ▓▓▓  ▓  ▓ ▓▓▓  ▓▓  ▒  ║
    ║ ░   ▀▀▀▀▄      █  ▓   ▓  ▓   ▓  ▓ ▓  ▓ ▓   ▓  ▓ ▒  ║
    ║ ░       █      █  ▓   ▓  ▓   ▓  ▓ ▓  ▓ ▓   ▓▓▓  ▒  ║
    ║ ░       █      █   ▓▓ ▓  ▓   ▓▓▓   ▓▓▓  ▓▓ ▓    ▒  ║
    ║ ░                                    ▓      ▓▓  ▒  ║
    ║ ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  ▓▓           ▒  ║
    ║                                                    ║
    ╚════════════════════════════════════════════════════╝



                    * СПЕЦИАЛЬНЫЙ ВЫПУСК *



          К А К   П Е Р Е Д Е Л Ы В А Т Ь   И Г Р Ы


                         ЧАСТЬ ПЕРВАЯ.

           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.





Другие статьи номера:

Как переделывать игры - подпрограммы работающие с лентой.

Как переделывать игры - поиск подпрограмм работающих с лентой.

Как переделывать игры - подпрограммы работы с диском.


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

Похожие статьи:
ZX+Dendy - возвращение к напечатанному.
Рек-тайм - Реклама и объявления ...
Двигатель торговли - Пpиобpету схему паpаллельного поpта на ВВ55, ноpмально pаботающую со Скоpпионом-256.

В этот день...   1 декабря