home *** CD-ROM | disk | FTP | other *** search
- ;********************************************************
- ;* *
- ;* KEYBOARD INPUT PATCH *
- ;* *
- ;* SIMULATED FUNCTION *
- ;* KEYS WITH CPM IN GENERAL; THE SORCERER COMPUTER *
- ;* IN PARTICULAR, USING KIP.HEX AND KID.COM & DDT *
- ;* *
- ;* AS PUBLISHED IN DR DOBBS JOURNAL, ISSUE 55 MAY *
- ;* 1981, BY JOHN B PALMER. *
- ;* P.O. BOX 23 *
- ;* BOONSVILLE, CA, 95415 *
- ;* USA *
- ;* *
- ;* See the Dr. Dobbs article for commented code *
- ;* *
- ;********************************************************
- ;
- ; Keyed in By John Cepak
- ; Australia
- ;
- FRERAM EQU 5C00H
- TEXT EQU FRERAM+256
- KIFUN EQU 01
- TAB EQU 09
- LF EQU 0AH
- CR EQU 0DH
- EOF EQU 01AH
- ;
- ACTIVE EQU 0FFH
- INACTIV EQU 0
- ;
- ORG FRERAM
- ;
- KIP:
- OLDST: JMP 0
- OLDIN: JMP 0
- NEWST: JMP STAT
- NEWIN: JMP INP
- ;
- ASWITCH DB 0
- EOSTR: DB 0
- STRPTR: DW 0
- SAVCHR: DB 0
- ;
- STAT:
- LDA SWITCH
- ORA A
- RNZ
- JMP OLDST
- ;
- INP:
- LDA SWITCH
- ORA A
- JNZ STRING
- CALL OLDIN
- CPI KIFUN
- RNZ
- CALL OLDIN
- STA SAVCHR
- ORI 20H
- SUI '`'
- SUI 16
- CC OLDIN
- LDA SAVCHR
- SEARCH:
- PUSH B
- PUSH H
- CPI KIFUN
- JZ PEEK
- MOV B,A
- LXI H,TEXT
- TRY:
- CALL IGNORE
- JC EXIT
- JZ TRY
- CMP B
- JZ FOUND
- CALL SKIP
- JNC TRY
- EXIT:
- MVI A,'?'
- POP H
- POP B
- RET
- ;
- PEEK:
- MVI A,CR
- CALL DIO
- MVI A,LF
- LXI H,TEXT
- PRINT:
- CALL DIO
- MOV A,M
- INX H
- CPI EOF
- JNZ PRINT
- POP H
- POP B
- MVI A,CR
- RET
- ;
- DIO:
- PUSH D
- PUSH H
- LHLD 01
- LXI B,9
- DAD B
- MOV C,A
- CALL VIAHL
- POP H
- POP D
- RET
- ;
- VIAHL:
- PCHL
- FOUND:
- MOV A,M
- STA EOSTR
- INX H
- SHLD STRPTR
- MVI A,ACTIVE
- FIN:
- STA SWITCH
- POP H
- POP B
- JMP INP
- ;
- SKIP:
- MOV A,M
- CALL EOFCHR
- RC
- MOV C,A
- INX H
- TSTCHR:
- MOV A,M
- INX H
- CALL EOFCHR
- RC
- CMP C
- RZ
- JMP TSTCHR
- ;
- IGNORE:
- MOV A,M
- INX H
- CPI ' '
- RZ
- CPI 9
- RZ
- CPI ','
- RZ
- CPI CR
- RZ
- CPI LF
- RZ
- EOFCHR:
- CPI EOF
- STC
- CMC
- RNZ
- ORA A
- STC
- RET
- ;
- STRING:
- CALL GETCHR
- RM
- CPI '^'
- RNZ
- CALL GETCHR
- RM
- CPI '^'
- RZ
- ANI 01FH
- RET
- ;
- GETCHR:
- PUSH H
- LHLD STRPTR
- MVI A,EOF
- CMP M
- JZ WIERD
- LDA EOSTR
- CMP M
- JZ WIERD
- INX H
- SHLD STRPTR
- CMP M
- DCX H
- MOV L,M
- JNZ READY
- SUB A
- STA SWITCH
- READY:
- MOV A,L
- POP H
- ORA A
- RET
- ;
- WIERD:
- POP PSW
- SUB A
- STA SWITCH
- DCR A
- MVI A,'?'
- POP H
- RET
- ;
- END
-