Ejemplo n.º 1
0
void EraseFromCursorToEOL() {
	int i;

	for (i = COLUMN(TermInfo); i < MAXCOLS; i++) {
		SCREENCHAR(TermInfo, ROW(TermInfo), i) = ' ';
		FORMATCODE(TermInfo, ROW(TermInfo), i) = CURRENTFORMAT(TermInfo);
	}
}
Ejemplo n.º 2
0
void EraseFromSOLToCursor() {
	int i;

	for (i = 0; i < COLUMN(TermInfo); i++) {
		SCREENCHAR(TermInfo, ROW(TermInfo), i) = ' ';
		FORMATCODE(TermInfo, ROW(TermInfo), i) = FORMATCODE(TermInfo, ROW(TermInfo), 0);
	}
}
Ejemplo n.º 3
0
void PrintChar(char c) {
	int memMove, i;

	SCREENCHAR(TermInfo, ROW(TermInfo), COLUMN(TermInfo)) = c;
	FORMATCODE(TermInfo, ROW(TermInfo), COLUMN(TermInfo)) = CURRENTFORMAT(TermInfo);

	if (COLUMN(TermInfo) == MAXCOLS - 1) {
		if (ROW(TermInfo) == MAXROWS - 1 || (DOUBLELINE(TermInfo) && ROW(TermInfo) >= MAXROWS - 2)) {
			COLUMN(TermInfo) = 0;

			if (DOUBLELINE(TermInfo)) {
				memMove = 2;
			}
			else {
				memMove = 1;
			}
			
			for (i = 0; i < memMove; i++) {
				MoveMemory((LPSTR)(SCREEN(TermInfo)), (LPSTR)(SCREEN(TermInfo)) + MAXCOLS, (MAXROWS - 1) * MAXCOLS);
				FillMemory((LPSTR)(SCREEN(TermInfo) + (MAXROWS - 1)), MAXCOLS, ' ');

				MoveMemory((LPBYTE)(FORMAT(TermInfo)), (LPBYTE)(FORMAT(TermInfo)) + MAXCOLS, (MAXROWS - 1) * MAXCOLS);
				FillMemory((LPBYTE)(FORMAT(TermInfo) + (MAXROWS - 1)), MAXCOLS, CURRENTFORMAT(TermInfo));
			}
		}
		else {
			if (DOUBLELINE(TermInfo)) {
				ROW(TermInfo) = ROW(TermInfo) + 2;
				COLUMN(TermInfo) = 0;
			}
			else {
				ROW(TermInfo)++;
				COLUMN(TermInfo) = 0;
			}
		}
	}
	else {
		COLUMN(TermInfo)++;
	}

	InvalidateRect(ghWndTerm, NULL, TRUE);
}
Ejemplo n.º 4
0
/*-----------------------------------------------------------------------------

FUNCTION: OutputABufferToWindow(HWND, char *, DWORD)

PURPOSE: Updates TTY Buffer with characters just received.

PARAMETERS:
    hTTY     - handle to the TTY child window
    lpBuf    - address of data buffer
    dwBufLen - size of data buffer

HISTORY:   Date       Author      Comment
            5/ 8/91   BryanW      Wrote it
           10/27/95   AllenD      Modified for MTTTY Sample

-----------------------------------------------------------------------------*/
void OutputABufferToWindow(HWND hTTY, char * lpBuf, DWORD dwBufLen)
{
    RECT rect;

    /*
        update screen buffer with new buffer
        need to do a character by character check
        for special characters
    */
    int i;

    for ( i = 0 ; i < (int) dwBufLen; i++) {
        switch (lpBuf[ i ]) {
            case ASCII_BEL:                // BELL CHAR
                MessageBeep( 0 ) ;
                break ;

            case ASCII_BS:                 // Backspace CHAR
                if (COLUMN( TTYInfo ) > 0)
                   COLUMN( TTYInfo ) -- ;
                break ;

            case ASCII_CR:                 // Carriage Return
                COLUMN( TTYInfo ) = 0 ;
                if (!NEWLINE( TTYInfo ))
                    break;

                //
                // FALL THROUGH
                //

            case ASCII_LF:                 // Line Feed
                if (ROW( TTYInfo )++ == MAXROWS - 1)
                {
                    MoveMemory( (LPSTR) (SCREEN( TTYInfo )),
                                  (LPSTR) (SCREEN( TTYInfo ) + MAXCOLS),
                                  (MAXROWS - 1) * MAXCOLS ) ;
                    FillMemory((LPSTR) (SCREEN( TTYInfo ) + (MAXROWS - 1) * MAXCOLS),
                                  MAXCOLS,  ' ' ) ;
                    InvalidateRect( hTTY, NULL, FALSE ) ;
                    ROW( TTYInfo )-- ;
                }
                break ;

            default:                       // standard character
                SCREENCHAR(TTYInfo, COLUMN(TTYInfo), ROW(TTYInfo)) = lpBuf[ i ];

                rect.left = (COLUMN( TTYInfo ) * XCHAR( TTYInfo )) -
                            XOFFSET( TTYInfo ) ;
                rect.right = rect.left + XCHAR( TTYInfo ) ;
                rect.top = (ROW( TTYInfo ) * YCHAR( TTYInfo )) -
                           YOFFSET( TTYInfo ) ;
                rect.bottom = rect.top + YCHAR( TTYInfo ) ;
                InvalidateRect( hTTY, &rect, FALSE ) ;

                // 
                // Line wrap
                //
                if (COLUMN( TTYInfo ) < MAXCOLS-1 )
                    COLUMN( TTYInfo )++ ;
                else if (AUTOWRAP( TTYInfo ))
                    OutputABufferToWindow(hTTY, "\r\n", 2 ) ;
                
                break;
        }
    }

    MoveTTYCursor(hTTY);
    return;
}