Форум - Процедура перевода числа в десятичный вид. Процедура - сканер пароля.

ZX Review #11-12
   В заключение - еще пара  про-
цедур.
   Первая процедура предназначе-
на для перевода числа в десятич-
ный вид, пригодный  для  печати.
На входе: в регистре HL - исход-
ное число. На  выходе:  с  метки
TABLE в памяти  располагаются  5
байт  -  десятки  тысяч, тысячи,
сотни, десятки и единицы.
   Для печати эти ячейки необхо-
димо увеличить на 48. Это  можно
поручить процедуре, убрав  знаки
";".
140.
        ORG 40000
;Written by Max from 'Cyberax Software'.
DECIMAL LD BC,TABLE
        LD DE,10000
        CALL COUNT
        LD DE,1000
        CALL COUNT
        LD DE,100
        CALL COUNT
        LD DE,10
        CALL COUNT
        LD A,L
;       ADD A,48
        LD (BC),A
        RET
COUNT   XOR A
LP      PUSH HL
        SBC HL,DE
        JR C,ENDC
        INC A
        INC SP
        INC SP
        JP LP
ENDC    POP HL
;       ADD A,48
        LD (BC),A
        INC BC
        RET
TABLE   DEFS 5
2
   Вторая процедура - сканер па-
роля. Ее можно вызывать 50 раз в
секунду, например  по  IM 2.  На
выходе, если пароль  набран, ус-
тановлен флаг "C".
   Пароль задан с метки  PASS  и
имеет следующий формат:  старший
байт  порта, затем  маска, соот-
ветствующая нажатой клавише. Ес-
ли  в  байте  маски   установлен
старший бит, то это означает ко-
нец пароля. В  приведенном  при-
мере  паролем  является   строка
"ABC".
140.
        ORG 40000
;Written by Max from 'CYBERAX SOFTWARE'.
PSW     LD A,0
        LD E,31
        AND A
        JR NZ,KBSC
        CALL KBSC
        RET Z
PSWADR  LD HL,PASS
        LD B,(HL)
        INC HL
        LD D,(HL)
        INC HL
        LD (PSWADR+1),HL
        LD C,254
        IN A,(C)
        AND D
        AND E
        JR NZ,PSW_INI
        IN A,(C)
        OR D
        CPL
        AND E
        JR NZ,PSW_INI
        BIT 7,D
        RET Z
        CALL PSW_INI
        SCF
        RET
KBSC    XOR A
        IN A,(254)
        CPL
        AND E
        LD (PSW+1),A
        RET
PSW_INI LD HL,PASS
        LD (PSWADR+1),HL
        XOR A
        LD (PSW+1),A
        RET
PASS    DEFB #FD,1,#7F,16,#FE,8+128
2
   Такую программу  можно  внед-
рить, скажем, в код игры  и  ис-
пользовать  факт  набора  пароля
для установки/снятия  бессмертия
в любой момент игры.
   Подходящим местом для внедре-
ния  является  процедура  опроса
клавиш в игре, либо  подпрограм-
ма обслуживания IM 2.

           *   *   *