; THIS PROGRAM WILL POLL A PORT SELECTED FROM THE KEYBOARD. ; A DELAY IS PROVIDED BETWEEN POLLINGS, BECAUSE WITHOUT IT ; THE DISPLAY UPDATES TOO FAST TO KEEP UP WITH. DELAY EQU 0FFFFH ORG 0100H CS1: LXI D,STR2 ; CLEAR SCREEN STRING ADDRESS MVI C,9 CALL 5 LXI D,STR1 ; 'ENTER PORT NUMBER' MVI C,9 CALL 5 POLL1: MVI C,06 ;CONSOLE IN DIRECT MVI E,0FFH CALL 5 STA TEMP SUI 30H JM POLL1 ;CONTROL CHARACTER CPI 0AH JM STORE1 SUI 7 JM POLL1 CPI 10H JP POLL1 STORE1: STA (GET+1) LDA TEMP MOV E,A MVI C,2 CALL 0005 POLL2: MVI C,06 MVI E,0FFH CALL 5 STA TEMP CPI 0DH ; JZ DOIT CPI 08 ; JZ CS1 SUI 30H JM POLL2 CPI 0AH JM STORE2 SUI 7 JM POLL2 CPI 10H JP POLL2 STORE2: MOV C,A LDA (GET+1) ADD A ADD A ADD A ADD A ; SHIFT LEFT 4 PLACES ORA C STA (GET+1) LDA TEMP MOV E,A MVI C,2 CALL 5 DOIT: MVI E,20H MVI C,02 CALL 5 LDA (GET+1) BACK: CALL DSPLY MVI C,02 MVI E,0DH ; CALL 5 MVI C,02 MVI E,0AH CALL 5 ; LXI H,DELAY LOOP1: DCR L JNZ LOOP1 DCR H JNZ LOOP1 GET: IN 00 ;PORT WILL BE SELF MODIFIED JMP BACK ;********************************************************** DSPLY: PUSH PSW RAR RAR RAR RAR ANI 0FH ADI 30H CPI 3AH JM PUT1 ADI 7 PUT1: MOV E,A MVI C,2 CALL 5 POP PSW ANI 0FH ADI 30H CPI 3AH JM PUT2 ADI 7 PUT2: MOV E,A MVI C,2 CALL 5 RET STR1: DB 'ENTER PORT ADDRESS TO BE POLLED? $' TEMP: DS 0 STR2: DB 26,'$' END