Ïîñëåäíÿÿ ÷àñòü ïðîãðàììû íà Ôèã.
0026 D0 E8 SHR AL, 1 ; Äåëåíèå íà 16
0028 B4 A0 MOV AH, 160
002A F6 E4 MUL AH ; Ïðåîáðàçîâàíèå â ñìåùåíèå â áóôåðå
002C 03 D8 ADD BX, AX
002E 88 2F MOV [BX], CH ; Ñîõðàíåíèå ñèìâîëà
0030 EC IN AL, DX
0031 24 10 AND AL, 10H
0033 3A C1 CMP AL, CL
0035 74 D9 JE WRITE_LOOP
0037 8A C8 MOV CL, AL
0039 80 F9 10 CMP CL, 10H
003C 75 D2 JNE WRITE_LOOP
003E FE C5 INC CH ; Ñëåäóþùèé ñèìâîë
0040 EB CE JMP WRITE_LOOP
0042 GAME_CONTROL ENDP
;----- Â AH áèò ìàñêè
0042 POSITION PROC NEAR
0042 51 PUSH CX
0043 2B C9 SUB CX, CX ; Íà÷àëüíîå çíà÷åíèå äëÿ öèêëà ââîäà
0045 EE OUT DX, AL ; Çàïóñê òàéìåðà
0046 POS_LOOP:
0046 EC IN AL, DX
0047 84 C4 TEST AL, AH
0049 E0 FB LOOPNE POS_LOOP ; Öèêë ïîêà 1 - òàéìåð íå çàêîí÷èë îòñ÷åò
004B B8 0000 MOV AX, 0
004E 2B C1 SUB AX, CX ; Îïðåäåëåíèå çíà÷åíèÿ ñ÷åò÷èêà
0050 59 POP CX ; â äèàïàçîíå 0-255
0051 C3 RET
0052 POSITION ENDP
0052 CODE ENDS
END
Ôèã. 8.18 Àäàïòåð óïðàâëåíèÿ èãðàìè (ïðîäîëæåíèå)
Ïîñëåäíÿÿ ÷àñòü ïðîãðàììû íà Ôèã. 8.18 áåðåò ïîçèöèþ X-Y,
îïðåäåëåííóþ ïî âõîäó îò äæîéñòèêà, è çàïèñûâàåò ñèìâîë â
ñîîòâåòñòâóþùóþ ïîçèöèþ äèñïëåÿ. Àäàïòåð óïðàâëåíèÿ èãðàìè òàêæå
äîïóñêàåò ÷åòûðå ïåðåêëþ÷àþùèõ ââîäà, çíà÷åíèÿ êîòîðûõ ìîæíî
ïðî÷èòàòü â ñòàðøèõ ÷åòûðåõ áèòàõ ïîðòà 201H. Ïðîãðàììà â ïðèìåðå
îïðàøèâàåò îäèí èç ýòèõ áèòîâ ïåðåêëþ÷åíèÿ, ÷òîáû ïåðåéòè îò îäíîãî
ñèìâîëà ê äðóãîìó è âûâåñòè åãî íà ýêðàí.
Ñîäåðæàíèå Íàçàä