;SSTERM VERSION 2.00 - SPLIT SCREEN TERMINAL PROGRAM (3/22/87) ; ;KAYPRO II OVERLAY: ; ; TERMINAL PROGRAM FOR USE WITH REAL TIME CONFERANCE, C.B. LIVEWIRE OR ; ANY OTHER FULL DUPLEX APPLICATIONS WHERE YOU WISH TO KEEP YOUR ; KEYBOARD TEXT SEPERATE FROM THE TEXT RECEIVED FROM THE MODEM. ; ; PROGRAM WRITTEN BY W.MUNSON... IF YOU FIND ANY BUGS IN THE PROGRAM OR ; IF YOU NEED ASSISTANCE IN CUSTOMIZING IT FOR YOUR USE, CONTACT ME BY ; E-MAIL ON GENIE OR ON THE HEATH/ZENITH BBS. (716) 424-2576. ; ; NOTE: THIS PROGRAM IS BEING RELEASED AS PUBLIC DOMAIN AND MAY BE ; DISTRIBUTED TO ALL WHO WISH TO USE IT. ; ; THIS OVERLAY IS WRITTEN FOR THE KAYPRO II USING AN EXTERNAL MODEM. THE ; OVERLAY USES THE BIOS CONSOLE ROUTINES (CONST, CONIN, CONOT), THE ; MODEM IS NOT INITIALIZED. ; ; ; ; ;***************************************************************************** ; ; ;THIS SECTION CONTAINS ALL OF THE ADDRESSES AND CONTROL WORDS USED TO ;COMMAND THE UARTS... THESE ARE THE STANDARD COMMANDS USED WITH THE SIO. ; MDMPRT EQU 04H ; address of the modem communication port STAPRT EQU 06H ; address of the modem status port CONDAT EQU 00H ; address of console data port -- not used CONSTA EQU 00H ; address of console status port -- not used ; URTRCV EQU 01H ; status mask to see if character is received URTSND EQU 04H ; status mask to see if ready send MODEMK EQU 00H ; uart mode setup word -- not used MODEGO EQU 00H ; default modem initialization word - not used DTROFF EQU 05H ; word to turn off dtr MDMRST EQU 00H ; modem reset word -- not used MDMATN EQU 00H ; gets attention of the uart -- not used ; ;***************************************************************************** ; YES EQU 0FFH NO EQU 0H CR EQU 13 ; carrage return LF EQU 10 ; line feed BKSP EQU 8 ; backspace DEL EQU 0FFH ; delete character ESC EQU 27 ; escape key TAB EQU 9 ; tab character ; ; ; THIS IS THE START OF THE PROGRAM ; ORG 100H ; start assembly at beginning of the tpa ; ; THIS SECTION INITIALIZES THE CONSOLE ROUTINES FROM THE BIOS VECTOR TABLE ; INIT: LHLD 1 ; get the start of the warm boot vector table LXI D,3 ; three bytes for each entry DAD D ; point to const routine SHLD INCSTA+1 ; store it in the jump instruction LXI D,3 DAD D ; point to conin routine SHLD INCDAT+1 ; store it in the jump instruction LXI D,3 DAD D ; point to conot routine SHLD OUTCDTJ+1 ; store it in the jump instruction JMP START ; this is the jump to the start of the program ; ; HERE IS THE SECTION WHICH DEFINES THE TERMINAL CONTROL COMMANDS. ; ; YOU MUST BE ABLE TO ADDRESS THE CURSOR OF YOUR TERMINAL. ; THE FORMAT OF THE STRING IS - FIRST BYTE IS THE NUMBER OF CHARACTERS IN ; THE STRING THEN THE REMAINING BYTES ARE THE STRING ITSELF. ; ORG 140H CLRLNE EQU $ DB 1,24,0 ; string to clear to end of line ; ORG 200H CURADR: DB 2,27,'=' ; string sent before cursor address information ; ORG 210H OFFSET: DB 20H ; value of offset added to cursor addresses COLROW: DB NO ; send column before row for cursor address? NEEDLF: DB NO ; yes, if your terminal need line feeds ; ORG 220H CLRSCN EQU $ DB 1,26 ; string sent to clear screen-can be 24 ; carrage returns ; ORG 240H ALTON EQU $ DB 1,0 ; string to turn on the alternate video mode ; can be 1,0 if not supported by your terminal ORG 250H ALTOFF EQU $ DB 1,0 ; string to turn off the alternate video mode ; can be 1,0 if not supported by your terminal ; ORG 260H SCRLUP EQU $ DB 2,CR,LF ; scroll up string should cause one line to ; be inserted at the bottom of the screen ; when cursor is positioned at bottom of screen ; ORG 270H NAME EQU $ ; string to describe the operating system DB 41 ; and terminal type DB 'using Kaypro overlay 1.0 -- 2/18/87 ',CR,LF ; ; THIS SECTION CONTAINS THE CALLS TO SERVICE THE USARTS. DO NOT CHANGE THE ; STARTING ADDRESSES OF THEM. ; ORG 370H INCDAT: JMP $-$ ; jump to bios conin routine ; ORG 380H OUTCDT: MOV C,A ; conot needs character in register c OUTCDTJ:JMP $-$ ; jump to bios conot routine ; ORG 390H INCSTA: JMP $-$ ; jump to bios const routine ORG 398H OTCSTA: MVI A,0FFH ; jump to bios const routine ORA A RET ; ORG 3A0H INMDAT: IN MDMPRT ; get character from modem usart RET ; ORG 3B0H OUTMDT: OUT MDMPRT ; send character to modem usart RET ; ORG 3C0H INMSTA: IN STAPRT ; get status from modem usart ANI URTRCV ; mask status word for char ready in sio RET ORG 3C8H ; OTMSTA: IN STAPRT ; get status from modem usart ANI URTSND ; mask status word for char ready in uart RET ; ORG 3D0H OUTMST: OUT STAPRT ; send command to modem status port RET ; ; THIS JUMP LOCATION IS FOR RESETING THE TERMINAL MODE IF NEEDED. ; THE ROUTINE CANNOT BE MORE THAN 20H BYTES LONG. ORG 3E0H RESET: JMP 0000H ; no special terminal commands needed ; ; ; HERE IS THE START OF THE ACTUAL PROGRAM ; ORG 1000H ; ; START EQU $ ; END