; TITLE ZMAP-1.Z80 - 01/01/88 - ZMD I/O Overlay for APPLE II/MCPS ; Copyrighted (c) 1987, 1988 ; Robert W. Kramer III PAGE ;- -; ; Update History ; ; ; ; Date Release Comments ; ; -------- ------- ---------------------------------------------- ; ; ; ; 01/01/88 v1.00 - Initial version ; ;- -; ; SLOT EQU 2 ; CPS slot number, usually 1 or 2 MODCR EQU 0E0FEH+SLOT*100H ; Control port of CPS card MODDATP EQU 0E0FAH+SLOT*100H ; Data port of CPS card MODCTL1 EQU 0E0FBH+SLOT*100H ; Status port of CPS card MODRCVB EQU 02H ; Bit to test for receive MODRCVR EQU 02H ; Value when ready MODSNDB EQU 01H ; Bit to test for send MODSNDR EQU 01H ; Value when ready MODDCDB EQU 01000000B ; Carrier detect bit MODDCDA EQU 01000000B ; Value when active MODPARE EQU 00001000B ; Parity error MODOVRE EQU 00010000B ; Overrun error MODFRME EQU 00100000B ; Framing error ; ;-------------------------------------------------------------------------; ; Input/Output Jump Table | ;-------------------------------------------------------------------------; ; ORG 0580H ; Start after configuration table JP 0000H ; See CONOUT.INF JP INIT ; Initialization routine JP UNINIT ; Unititialize routine JP SNDCHR ; Send character JP CARCHK ; Test for carrier JP GETCHR ; Get character from modem JP RCVRDY ; Check receive ready JP SNDRDY ; Check send ready ; ;-------------------------------------------------------------------------; ; System startup inititialization routine | ;-------------------------------------------------------------------------; INIT: RET ; ;-------------------------------------------------------------------------; ; System exit unititialization routine | ;-------------------------------------------------------------------------; UNINIT: RET ; ;-------------------------------------------------------------------------; ; Send character out modem | ;-------------------------------------------------------------------------; SNDCHR: POP AF ; Get the character back LD (MODDATP),A ; Send it to the modem output RET ; ;-------------------------------------------------------------------------; ; Check for carrier | ;-------------------------------------------------------------------------; CARCHK: LD A,(MODCTL1) ; Read modem status port AND MODDCDB ; Get carrier detect bit CP MODDCDA ; Test bit RET ; ;-------------------------------------------------------------------------; ; Get character from modem | ;-------------------------------------------------------------------------; GETCHR: LD A,(MODDATP) ; Get character from data in port RET ; ;-------------------------------------------------------------------------; ; Check modem receive ready | ;-------------------------------------------------------------------------; RCVRDY: LD A,(MODCTL1) ; Get modem status AND MODRCVB ; Isolate ready bit CP MODRCVR ; Test it LD A,0 ; Return with zero in A (so MB-KMD doesn't RET ; Think we have an error) ; ;-------------------------------------------------------------------------; ; Check modem send ready | ;-------------------------------------------------------------------------; SNDRDY: LD A,(MODCTL1) ; Read status port AND MODSNDB ; Mask off bit to be tested CP MODSNDR ; Set status flag RET END