Фрагмент расшифровщика-создателя объектов, при построении экрана
Код:
ORG 0CB8FH
OR A ;CB8F B7
CALL Z,CC05H ;CB90 CC05CC
CP A,01H ;CB93 FE01
CALL Z,CC40H ;CB95 CC40CC
CP A,02H ;CB98 FE02
CALL Z,CC75H ;<-- капля ;CB9A CC75CC
; вычисляя случайное число "терпения" капли, оставляет его в A
CP A,03H ;CB9D FE03
CALL Z,CC53H ;CB9F CC53CC
CP A,04H ;CBA2 FE04
CALL Z,CC9DH ;CBA4 CC9DCC
CP A,05H ;CBA7 FE05
CALL Z,CCF3H ;CBA9 CCF3CC
CP A,09H ;CBAC FE09
CALL Z,CCD1H ;CBAE CCD1CC
CP A,06H ;CBB1 FE06
CALL Z,CC18H ;CBB3 CC18CC
CP A,0EH ;CBB6 FE0E
CALL Z,CD15H ;CBB8 CC15CD
CP A,7CH ;CBBB FE7C
CALL Z,CCBFH ;CBBD CCBFCC
; если случайно "терпение" капли будет равно 7C, то... капля превратится в это
Вылечил, минимальными изменениями, переставив вызов конструктора капли в самый конец.
Остальные конструкторы просто заполняют данные объекта константами, не меняя А
Лучше было-бы выделить этот блок CASE в отдельную подпрограмму, и все эти CALL Z заменить на JP Z, тогда не нужно было-бы помнить, что аккумулятор в конструкторах менять нельзя.
[свернуть]