Listing of file='INPUTR.SRC;01' on disk='vmedia/chip_119-sector.ccvf'
;INPUT ROUTINES: V1.1 7/17/81 GREG ALLEN ; THESE ROUTINES MAKE INPUT FROM THE KEYBOARD INTERUPT ; RATHER THEN WAIT FOR THE TIME THE INPUT IS NEEDED. ; SEVERAL ROUTINES ARE USE TO MAKE INPUT MORE EFFECENT ;INITINPUT: NO INPUT OR OUTPUT ; PRESERVE THE OLD INPUT VECTOR AND SETUP THE NEW ;RESTOREINPUT: RESTORE THE OLD INPUT JMP VECTOR ;GETCHAR: INPUTS - NONE ; OUTPUT - ACC = INPUT CHARACTER ; THIS ROUTINE RETURN THE INPUT CHARACTER AND ; UPDATES THE INPUT BUFFER AND POINTERS ;INPUTINTERUPT: THE ROUTINE THAT GRABS THE INPUT CHAR. ; AND STORES IT IN THE INPUT BUFFER. ; <CONTROL D> EXITS THE PROGRAM. ;CLEARBUF: CLEARS THE OLD INPUT CHARACTERS FROM THE BUFFER KEYFLAG EQU 81DFH INPCRT EQU 81C5H KEYCHAR EQU 81FEH GOTOFCS EQU 32C9H ENDCHAR EQU 254 ORG 8F10H INITINPUT: PUSH PSW PUSH H LDA KEYFLAG ;SAVE THE OLD INPUT STATUSES STA OLDKEYFLAG LDA INPCRT STA OLDJMP LHLD INPCRT+1 SHLD OLDVECTOR LXI H,INPUTBUFFER MVI M,ENDCHAR SHLD ENDPOINTER DI MVI A,31 ;SET THE KEYBOARD FLAG STA KEYFLAG MVI A,0C3H ;SET THE INPUT INTERUPT VECTOR STA INPCRT ;TO JMP INPUTINTERUPT LXI H,INPUTINTERUPT SHLD INPCRT+1 EI POP H POP PSW RET ORG 8F42H RESTOREINPUT: PUSH PSW PUSH H LDA OLDKEYFLAG STA KEYCHAR LDA OLDJMP STA INPCRT LHLD OLDVECTOR SHLD INPCRT+1 POP H POP PSW RET INPUTINTERUPT: PUSH PSW PUSH H LDA KEYCHAR CPI 4 ;IF INPUT CHAR = <CONTROL D> JZ GOTOFCS ; THEN JMP TO FCS ANI 127 ;ONLY ASCII INPUT EXCEPTED LHLD ENDPOINTER MOV M,A INX H MOV A,M MVI M,ENDCHAR SHLD ENDPOINTER ;NOW CHECK AND SEE WHAT WAS IN THE MEM SLOT. CPI 255 JNZ DONEINPUT ;THE END OF BUFFER WAS ENCOUNTERED. ;RESTORE THE OLD VALUES. ;HL->THE END OF THE BUFFER ;ACC = 255 MOV M,A DCX H MVI M,ENDCHAR SHLD ENDPOINTER DONEINPUT: POP H POP PSW EI RET ORG 8F81H GETCHAR: PUSH D PUSH H LXI H,INPUTBUFFER CHECK1STCHAR: MOV A,M CPI ENDCHAR JZ CHECK1STCHAR DI ;I DON'T WANT TO HAVE CHARS ;INPUT WHILE CONDENSING BUFFER STA OUTCHAR LXI D,INPUTBUFFER MOVEUP: INX H MOV A,M STAX D INX D CPI ENDCHAR JNZ MOVEUP DCX H SHLD ENDPOINTER LDA OUTCHAR EI POP H POP D RET INPUTBUFFER: DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DB 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ENDBUFFER: DB 255 ENDPOINTER: DS 2 OUTCHAR: DS 1 OLDKEYFLAG: DS 1 OLDJMP: DS 1 OLDVECTOR: DS 2 END