; OVERLAY FOR CP/M VERSION OF MICRONET EXECUTIVE TRUE EQU 0FFFFH ; DEFINE TRUE FALSE EQU NOT TRUE ; DEFINE FALSE BBASE: EQU 0000H ; "PAGE 0" ADDRESS TBASE: EQU BBASE+100H ; TRANSIENT PROGRAM AREA OVLOC: EQU BBASE+0A00H ; WHERE THE OVERLAY GOES ; ************************************************************ ; ************************************************************ ; THIS BEGINS THE SECTION THAT MUST BE MODIFIED ; TO YOUR PARTICULAR SYSTEM. THE FIRST THING YOU ; SHOULD DO IS PUT YOUR SYSTEM IDENTIFICATION INTO ; THE PROGRAM. TO DO THIS, CHANGE THE 'IMSAI 8080' ; IN THE STATEMENT LABELED "SYSID:" TO WHATEVER ; TYPE OF SYSTEM YOU HAVE. NOTE THAT "SYSID:" CAN ; BE NO LONGER THAN 23 CHARACTERS AND THE LAST ; CHARACTER MUST BE A 00 BYTE. ; ------------------------------------------------------------ ; THESE ARE THE PORT ADDRESSES USED FOR THE MODEM. CTL EQU 001H ; MODEM STATUS (CONTROL) PORT SIO EQU 000H ; MODEM DATA PORT ; ------------------------------------------------------------ ; THESE ARE THE MODEM PORT STATUS FLAG MASKS SIOIR EQU 02H ; MODEM PORT INPUT DATA READY FLAG SIOTR EQU 01H ; MODEM PORT TRANSMITTER READY FLAG ; ------------------------------------------------------------ ; THIS IS SET TO FALSE IF YOUR MODEM PORT READY FLAGS ; ARE ACTIVE LOW. (ZERO IMPLIES READY) RDYHI EQU TRUE ; TRUE IF UART READY FLAGS ARE ; ACTIVE HIGH (1=READY). FALSE ; IF FLAGS ARE ACTIVE LOW (0=READY). ; THIS ENDS THE SECTION THAT MUST BE ; MODIFIED TO YOUR PARTICULAR SYSTEM ; UNLESS YOU NEED UART INITIALIZATION. ; IF YOU DO NEED TO INITAILIZE YOUR ; MODEM UART, CHANGE "SIOINI:" (AT THE ; END OF THIS PROGRAM) TO SET UP YOUR ; UART TO USE 8 DATA BITS, NO PARITY ; AND 1 STOP BIT. ; ************************************************************ ; ************************************************************ RDYLO EQU NOT RDYHI ORG TBASE+3 ; OVERLAY TRANSFER VECTOR AND ID STRING INISIO: JMP SIOINI ; INITIALIZE MODEM UART GETSIO: JMP SIOGET ; GET CHAR FROM MODEM UART PUTSIO: JMP SIOPUT ; PUT A CHAR TO MODEM UART SYSID: DB 'Z-80 Homebrew',0 ; IDENTIFIES YOUR SYSTEM ; MAXIMUM LENGTH IS 23 CHARACTERS. ; LAST CHARACTER MUST BE A 00 ORG OVLOC ; MOVE BEYOND EXEC FOR MODEM PORT I/O ROUTINES ; THIS ROUTINE INPUTS A CHARACTER FROM THE MODEM'S UART (OR USART) SIOGET: IN CTL ; GET MIO STATUS FLAGS ANI SIOIR ; ISOLATE INPUT READY FLAG IF RDYLO ; INVERT IF ACTIVE LOW XRI SIOIR ; INVERT IT ENDIF RZ ; RETURN IF Z = 1 IN SIO ; ELSE GET MODEM CHARACTER RET ; AND RETURN (Z FLAG = 0) ; THIS ROUTINE OUTPUT CONTENTS OF A TO THE MODEM'S UART SIOPUT: PUSH PSW ; WRITE (A) TO SIO PUTSI1: IN CTL ; WAIT FOR FLAG TO = 0 ANI SIOTR IF RDYLO ; SENSE OF JUMP JNZ PUTSI1 ENDIF IF RDYHI ; SENSE OF JUMP JZ PUTSI1 ENDIF POP PSW OUT SIO RET ; THIS ROUTINE INITIALIZES THE MODEM UART FOR OPERATION SIOINI: RET ; INITILIZE MODEM UART HERE ; IF UART NEEDS IT ; 8 DATA BITS ; NO PARITY ; 1 STOP BIT END