Even worse, in the T200, the LCD controller has an 8K RAM which is more than needed to display 240x128 pixels (only 3840 bytes needed).  Not only does the ROM have to update the LCD controller RAM with what is in the LCD buffer, it also moves that 3840 byte "screen" around in the 8K LCD controller RAM at times, typically when a screen changes completely.

Ken

On 1/18/26 11:54 PM, John R. Hogerhuis wrote:
The lcd buffer is what "was" written to the lcd chips. It will only be rewritten if the screen is scrolled. And the t200 has hardware scrolling so I am not sure how often it redisplays thing. Ideally as infrequently as possible because it's costly.

You can peek the buffer but usually I think you'd want to use print @ or equivalent to modify the screen.

One thing I didn't remember is if the lcd buffer has attributes for each position. Like reverse video. I guess it must. It would affect computations.

-- John.



On Sun, Jan 18, 2026, 11:24 PM B 9 <[email protected]> wrote:

    Okay, I’m very confused now. The memory address labeled “LCD” on
    the “Cross Map
    
<https://bitchin100.com/wiki/index.php?title=Model_T_Cross_Map_RAM_Variables>“
    doesn’t work the way I expected it to if it was a memory mapped
    screen like on the Commodore PET. Here’s a program that is
    supposed to show an asterisk on the screen which can be controlled
    by the arrow keys. It completely fails.

    |10 SC=64048 ' "LCD" for Tandy 200 20 R=7: C=19 30
    Y=PEEK(SC+R*40+C) 100 POKE SC + R*40 + C, ASC("*") 110 K$=INKEY$:
    IF K$="" THEN 110 120 K=ASC(K$) 125 IF Y>0 THEN POKE SC+R*40+C,Y
    129 '27 is Esc 130 IF K=27 OR K$="q" OR K$="Q" THEN END 139
    '28,29,30,31 is CLOSE,LOAD,DSKO$,OPEN 140 IF K=28 OR K$="l" THEN
    C=C+1 150 IF K=29 OR K$="h" THEN C=C-1 160 IF K=30 OR K$="k" THEN
    R=R-1 170 IF K=31 OR K$="j" THEN R=R+1 210 IF R<0 THEN R=0 220 IF
    R>15 THEN R=15 230 IF C<0 THEN C=0 240 IF C>39 THEN C=39 480
    Y=PEEK(SC+R*40+C) 490 PRINT @0,CHR$(Y);" "; 495 PRINT Y;" at
    ";R;", ";C 500 GOTO 100 |

    Using |POKE| to display characters doesn’t seem to work at all.
    Using |PEEK| kind of works, but not enough to be usable, yet. I
    added line 490 which prints the character under the asterisk in
    the top left corner and it appears “LCD” is a rolling buffer of
    lines that were sent to the chips on the LCD panel. so the first
    line on the screen is not the first line in the buffer. For
    example, I might see an offset like this:

          o LINE 14
          o LINE 15
          o LINE 16
          o LINE 1
          o LINE 2
          o LINE 3
          o ⋮
          o LINE 13

    If there’s a not-too-cumbersome way to ensure the offset is always
    zero, I could see using the LCD buffer to check for collisions. I
    tried using |CLS|, but that didn’t help.

    Similarly, I know that TELCOM can quickly switch between
    displaying the ALT screen and the normal screen. Would I be right
    to guess there’s some machine language routine that updates what
    the LCD chips are actually showing given an address in memory (and
    maybe an offset)? If so, is there a simple way to call it? My
    usual resource for such things, Anderson’s PEEKs and POKEs
    
<https://archive.org/details/ProgrammingTipsPeeksAndPokesForTheTandyPortableComputers>
    only mentions the LCD image buffer as existing, but does not give
    details.

    —b9


    On Sun, Jan 18, 2026 at 1:19 PM B9 <[email protected]> wrote:

        Thank you for error correcting my memory, John! I probably
        confused it with the Model 100's Disk/Video Interface (DVI or
        MVT100). Or am I misremembering that, too, and it does have
        the screen mapped to RAM somewhere?

        --b9

        P.S. Twospruce's MVT100 is here:
        https://bitchin100.com/wiki/index.php?title=VT100

        BTW: at the bottom it says the high-ASCII extended character
        set doesn't exist and suggests upscaling from the Model 100's
        5x8 font to 6x12 for VGA. If that hasn't been done yet, there
        may be a better starting point using the original DVI 8x8
        font:
        
https://github.com/robhagemans/hoard-of-bitfonts/blob/master/kyotronic/trs80-dvi-8x8.yaff




        On January 18, 2026 12:03:40 PM PST, "John R. Hogerhuis"
        <[email protected]> wrote:

            "Again IIRC, the Tandy 200 can’t do that because the
            screen memory is stored in the LCD driver chips, right?"

            No, that is incorrect. True, the *pixel image* is not
            stored in RAM, just in the lcd hardware. But there are two
            RAM areas where the ASCII characters are maintained, LCD
            and ALTLCD (for restoring after switching control  modes
            in TELCOM).
            
https://bitchin100.com/wiki/index.php?title=Model_T_Cross_Map_RAM_Variables

            So I think you should be good for your port. No faking needed.

            -- John.

Reply via email to