void EraseFromCursorToEOL() { int i; for (i = COLUMN(TermInfo); i < MAXCOLS; i++) { SCREENCHAR(TermInfo, ROW(TermInfo), i) = ' '; FORMATCODE(TermInfo, ROW(TermInfo), i) = CURRENTFORMAT(TermInfo); } }
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); } }
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); }
/*----------------------------------------------------------------------------- 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; }