Почему когда я опрашиваю клавиши после установки цвета бордюра и вертикального скролинга кодом ниже, цвет бордюра не устанавливается корректно?
но когда я опращиваю клавиши до бордюра и скроллинга, то все равботает как нужно?Код:LXI H,palette_sprites+15 ; ЗАПИСЬ ПАЛИТРЫ. LXI D,$100F INIT1: MOV A,E OUT 02 MOV A,M OUT $0c OUT $0c OUT $0c OUT $0c OUT $0c DCX H OUT $0c DCR E OUT $0c DCR D OUT $0c JNZ INIT1 NWRPAL: MVI A,$88 OUT 00 mvi a, 1 ; УСТАНОВКА ЦВЕТА БОРДЮРА. ANI $0F OUT 02 mvi a, 255 ; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА. OUT 03 MVI A,$8A ; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ OUT 00 ; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ). XRA A OUT 03 IN 2 STA anyKeyPressed MVI A,$FE ; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА. OUT 03 IN 02 STA keyCode
проверял в Emu80 и VVКод:LXI H,palette_sprites+15 ; ЗАПИСЬ ПАЛИТРЫ. LXI D,$100F INIT1: MOV A,E OUT 02 MOV A,M OUT $0c OUT $0c OUT $0c OUT $0c OUT $0c DCX H OUT $0c DCR E OUT $0c DCR D OUT $0c JNZ INIT1 NWRPAL: MVI A,$8A ; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ OUT 00 ; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ). XRA A OUT 03 IN 2 STA anyKeyPressed MVI A,$FE ; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА. OUT 03 IN 02 STA keyCode MVI A,$88 OUT 00 mvi a, 1 ; УСТАНОВКА ЦВЕТА БОРДЮРА. ANI $0F OUT 02 mvi a, 255 ; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА. OUT 03
- - - Добавлено - - -
Вот тестовая программа для Pretty Asm
Код:.project helv06c.rom .tape v06c-rom .org $100 StartInit: DI ; dismount a quasi-disk XRA A out $10 ; set entry points of a restart, and an interruption MVI A, 0C3h STA 0 STA 38h LXI H, StartInit SHLD 1 LXI H, Interruption1 SHLD 38h + 1 ; stack init LXI SP, 8000h EI HLT ; clear the screen CALL CLEAR Start: JMP Start CLEAR: DI PUSH H ; СОХРАНИТЬ ИСПОЛЬЗУЕМЫЕ РЕГИСТРЫ. PUSH B PUSH D PUSH PSW LXI H,0000H ; ПОДГОТОВИТЬ HL ДЛЯ ВЗЯТИЯ ЗНАЧЕНИЯ SP. DAD SP ; ВЗЯТЬ ЗНАЧЕНИЕ SP ПУТЕМ СЛОЖЕНИЯ С HL. LXI SP,0000H ; НАЧАТЬ СТИРАНИЕ С АДРЕСА 0FFFFH. LXI D,0000H ; В DE - ЗНАЧЕНИЕ, КОТОРЫМ БУДЕТ СТЕРТ ЭКРАН. LXI B,0800H ; В BC - СЧЕТЧИК. CLEAR1: PUSH D ; НАЧАТЬ СТИРАТЬ ЭКРАН ПУТЕМ "ОПУСКАНИЯ" СТЕКА. PUSH D ; ВЫПОЛНИТЬ 8 ОПЕРАЦИЙ "В ЛОБ" ДЛЯ СКОРОСТИ. PUSH D PUSH D PUSH D PUSH D PUSH D PUSH D DCX B ; УМЕНЬШИТЬ СЧЕТЧИК И MOV A,B ; ПРОВЕРИТЬ ЕГО. ORA C ; КОНЕЦ СЧЕТА? JNZ CLEAR1 ; ЕСЛИ НЕТ - ПРОДОЛЖАТЬ СТИРАНИЕ. SPHL ; ВЕРНУТЬ ПРЕЖНЕЕ ЗНАЧЕНИЕ SP И POP PSW ; ВСЕХ РЕГИСТРОВ. POP D POP B POP H EI RET anyKeyPressed: .db 0 keyCode: .db 0 palette_sprites: .DB 01001010b, 00000001b, 01011100b, 00011010b, .DB 11100100b, 11111101b, 01110111b, 01011111b, .DB 01000010b, 01001011b, 01001100b, 11111111b, .DB 11111111b, 11101011b, 00001010b, 01011011b, ;---------------------------------------------------------------- ; Common interruption sub Interruption1: PUSH PSW PUSH B PUSH D PUSH H ; common interruption logic LXI H,palette_sprites+15 ; ЗАПИСЬ ПАЛИТРЫ. LXI D,$100F INIT1: MOV A,E OUT 02 MOV A,M OUT $0c OUT $0c OUT $0c OUT $0c OUT $0c DCX H OUT $0c DCR E OUT $0c DCR D OUT $0c JNZ INIT1 MVI A,$88 OUT 00 mvi a, 1 ; УСТАНОВКА ЦВЕТА БОРДЮРА. ANI $0F OUT 02 mvi a, 255 ; УСТАНОВКА ВЕРТИКАЛЬНОГО ПОЛОЖЕНИЯ ЭКРАНА. OUT 03 MVI A,$8A ; ПРОВЕРКА НАЖАТИЯ НА ЛЮБУЮ КЛАВИШУ OUT 00 ; МАТРИЦЫ КЛАВИАТУРЫ 8*8 (КРОМЕ УС,СС,РУС/ЛАТ). XRA A OUT 03 IN 2 STA anyKeyPressed MVI A,$FE ; ПРОВЕРКА НАЖАТИЯ НА КЛАВИШИ ИГРОВОГО РЯДА. OUT 03 IN 02 STA keyCode ; end common interruption logic POP H POP D POP B POP PSW EI RET end




Ответить с цитированием