Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/5/84; site osu-eddie.UUCP Path: utzoo!watmath!clyde!cbosgd!osu-eddie!elwell From: elwell@osu-eddie.UUCP (Clayton M. Elwell) Newsgroups: net.micro.ti Subject: TI Screen Layout Message-ID: <923@osu-eddie.UUCP> Date: Wed, 4-Dec-85 20:46:25 EST Article-I.D.: osu-eddi.923 Posted: Wed Dec 4 20:46:25 1985 Date-Received: Thu, 5-Dec-85 20:45:44 EST Distribution: net Organization: Ohio State Univ., CIS Dept., Cols, Oh. Lines: 68 This might help people who are interested in writing TI screen drivers and the like. It is paraphrased and condensed from the somewhat obtuse description in the Technical Reference Manual. This applies to the TI Professional Desktop & Portable. A Short description of the TI Screen Hardware --------------------------------------------- The CRT Controller board uses a Motorola 6845 CRTC chip. Unlike most peripherals in the TI PC, it is memory mapped. It's generally a bad idea to muck about with this chip, but there are a few useful registers that can be played with for various effects. To write into a CRTC register, first write the register number (1 byte) into the address D000:F810, and the desired contents into D000:F812. The "safe" registers are: Reg. # Name Default Value (60 Hz) ------ ----------------------------- ------- 10 Cursor start line and blink 40H 11 Cursor end line 0BH 12 Display start address high -- 13 Display start address low -- 14 Cursor position address high -- 15 Cursor position address low -- Note: The display start address is relative to the beginning of the 2K screen buffer, and changes when the BIOS scrolls the screen (bad idea). The cursor position address is also relative to the beginning of the buffer. The screen memory is organized as 2K words of 16 bits each, but TI in their infinite wisdom decided that that was cumbersome, so they arranged for the CPU to access the buffer as 2K by 8 bits plus an extra byte called the attribute latch. The screen buffer starts at D000:E000 and extends to D000:E7FF. The attribute latch is memory mapped at D000:F800. To write a character into the buffer, first load the attribute latch with the desired attribute (see below) and the write the ASCII code for the character into the buffer. If you have successive characters with the same attribute, you don't have to reload the latch. Attributes are mapped into the attribute byte as follows: 7 6 5 4 3 2 1 +-+-+-+-+-+-+-+ |A|B|U|V|G|R|B| +-+-+-+-+-+-+-+ A = alternate character set (don't ask me...) B = blink U = underline V = reverse video G = green gun R = red gun B = blue gun. For a monchrome monitor, the RGB outputs determine a 1 of 8 gray scale value instead of color. Have fun! -- -- Clayton Elwell Elwell@Ohio-State.CSNET Elwell%Ohio-State@CSNET-RELAY.ARPA ...!cbosgd!osu-eddie!elwell ----------------- "Roads? Where we're going, we don't need roads..."