TI-86 Display; ; version : 9/25/97 ; TI-86 DISPLAY ------------- Note: Remember that all symbols used here are equated to values in the include file TI86ASM.INC. The TI-86 has a memory-mapped display, RAM address 0FC00h - 0FFFFh. TEXT WRITING ------------ The TI-86 has 2 different fonts which are used for displaying chars. 1) 5x7 characters 2) 6 pixels high by a variable width Different display routines are are used for each of the fonts. The character values are documented in the include file. The character set in both fonts is the same; only the size of the chars is different. 5x7 Font -------- This font is not designed for use on the graph screen. For this font, the home screen is divided into 8 rows by 21 columns of character locations. c c c o o o l l l 0 1 . . . 20 _______________________ row 0 | | | | | |-----------------------| row 1 | | | | | |-----------------------| | | | | | . | | | | | . | | | | | . | | | | | | | | | | |-----------------------| row 7 | | | | | ----------------------- Most display routines will use two system bytes as inputs to provide the location for writing to the home screen. CURROW = a byte for the row location CURCOL = a byte for the col location These are in the include file. The following system flags control display to the home screen: 1) The appTextSave flag controls whether or not all writes to the home screen are also written to the textshadow. appTextSave,(iy+appFlags) This should only be needed if your ASM program will display other screens than the home screen. 2) The textInverse flag determines if writes to the display are to be normal or reverse video. Set it for reverse. textInverse,(iy+textflags) 3) The appAutoScroll flag controls what occurs when text is written to the home screen and runs out of room on the bottom. If set, then the screen will automatically scroll up a row. Set it to scroll. appAutoScroll,(iy+appFlags) 4) The textScrolled flag is set if the screen has scrolled while text was being wrintten. textScrolled,(iy+textflags) Variable Width Font ------------------- This font is made of up chars that are 6 pixels high with variable widths. This font can be written to the graph screen as well as the home screen. Chars in this font can be displayed anywhere on the display, unlike the 5x7 chars which can only be displayed in preset character locations. A pixel location specifies where to display chars in this font. ------------------- |(0,0) (127,0)| | | | | | | |(0,63) (127,63)| ------------------- The top row for each of these chars is blank. Most display routines will use two system bytes as inputs to provide the location for writing to the home screen. PENROW = a byte for the row location. PENCOL = a byte for the col location. These are in the include file. Note: The graph backup buffer is used as the "shadow" for variable font writes. So when using this font in the home screen make sure this flag is reset : textwrite,(iy+new_grf_flgs) Note: Variable font chars cannot be written to the graph screen and its backup buffer with one call. If the char needs to be written to both the display and the graph backup buffer then you must call the display routine once with the TEXTWRITE flag reset to write to the display, and once with the flag reset to write to the buffer. DISPLAY ROUTINE HEADERS: ----------------------- ; ;--------------------------------------------------------------- ; clrLCD - clear LCD screen ; ; registers destroyed: bc, de, hl. ;--------------------------------------------------------------- ; _clrLCD equ 4A7Eh ; ;--------------------------------------------------------------- ; clrScrn - clear LCD screen. LCD memory is set to zeros. ASCII ; version of screen is set to blanks if appTextSave ; flag is set. ; ; registers destroyed: bc, de, hl. ;--------------------------------------------------------------- ; _clrScrn equ 4A82h ; ;--------------------------------------------------------------- ; putmap - display a character at current cursor location. ; ; input: a := character number ; textInverse flag = 0, normal video ; 1, inverse video ; registers destroyed: none. ;--------------------------------------------------------------- ; _putmap equ 4A27h ; ;--------------------------------------------------------------- ; putc - display a character and advance cursor ; ; input: a := character number ; textInverse flag = 0, normal character ; 1, invert character ; output: curRow and curCol updated ; registers destroyed: none. ;--------------------------------------------------------------- ; _putc equ 4A2Bh ; ;--------------------------------------------------------------- ; _puts - send string 0 terminated to display. ; ; HL MUST BE RAM PAGE 0 OR A ROM ADDRESS ; ; ; input: hl -> first character of string. ; output: C Flag = 1 if entire string was displayed. ; C Flag = 0 if ran off end of screen. ; side effects: cursor location is updated. ; registers destroyed: hl ;--------------------------------------------------------------- _puts equ 4A37h ; ;--------------------------------------------------------------- ; _putps - send string with leading length byte to display. ; ; input: hl -> length byte of string, followed by ascii string ; side effects: cursor location is updated. ; registers destroyed: a, f, b, hl. ;--------------------------------------------------------------- ; _putps equ 4A3Bh ; ;--------------------------------------------------------------- ; vputmap - display variable width character at current pen ; location. ; ; input: a := character number ; textInverse flag = 0, normal video ; 1, inverse video ; textEraseBelow flag = 0, normal ; 1, erase line below char ; ; TEXTWRITE,(IY+NEW_GRF_FLGS) = 0 FOR WRITING TO PLOTSSCREEN ; 1 FOR WRITING TO DISPLAY ; ; OUTPUT : CA=1 IF COULDN'T FIT ON THE LINE ; ; registers destroyed: af, de, ix. ;--------------------------------------------------------------- ; _vputmap equ 4AA1h ; ;--------------------------------------------------------------- ; vputs - send string of variable-width characters to display. ; ; ALL STRINGS IN ROM OR RAM PAGE 0 ; ; ; input: hl -> first character of string ; textEraseBelow flag = 0, normal ; 1, erase line below char ; side effects: pen location is updated. ; registers destroyed: A,hl. ;--------------------------------------------------------------- ; _vputs equ 4AA5h ; ;--------------------------------------------------------------- ; vputsn - send string of variable-width characters to display. ; ; ALL STRINGS IN ROM OR RAM PAGE 0 ; ; input: hl -> first character of string ; b := number of characters to display ; side effects: pen location is updated. ; registers destroyed: b, hl. ;--------------------------------------------------------------- ; _vputsn equ 4AA9h TI-86 Assembly Programming |
(c) Copyright 1998 Texas Instruments Incorporated. All rights reserved.