No worries,

Yes, VirtualT emulates the hardware of the controllers on the LCD panels, including the T200 controller.  It emulates the same 8K ram, "start of LCD" pointer within that 8K RAM as well as all I/O commands.  This is what allows the ROM to operate "as is" ... VirtualT is a hardware emulator.

The first step to making VirutalT "speed compliant" would necessarily be to fix the CPU cycle timing in Linux (there should be no reason for it to be faster than the Windows implementation, yet it is).  Then after that focus on any LCD / peripheral timing differences.

Ken

On 2/21/26 10:35 AM, B9 wrote:
Sorry, I'm using the wrong words. I may also be confused about Virtual T. Most likely both! :-)

By "emulate", I was thinking of a chip-level emulation. When you said the "model" is not 100% accurate, I thought you were talking about a black-box, function-level emulation.

Does Virtual-T emulate the processor built in to the LCD?

--b9

P.S. Can one manipulate the LCD using OUT on Virtual T? https://github.com/LivingM100SIG/Living_M100SIG/blob/main/M100SIG/Lib-10-TANDY200/SCROLL.200or.





On February 20, 2026 8:05:55 PM PST, Kenneth Pettit <[email protected]> wrote:

    Umm,

    I'm not sure what you mean.  VirtualT *does* emulate the LCD
    controller chips.  Just maybe the timing of BUSY is not modeled
    accurately.

    Ken

    On 2/20/26 1:53 PM, B 9 wrote:
    Are there hooks in Virtual T so that someday it might be able to
    emulate the LCD controller chips? I noticed that the MAME ROMs
    for the Tandy 200 included the Hitachi ROM, if that was what was
    holding up development in Virtual T.

    Besides timing accuracy, there are some esoteric features missing
    which Virtual T won't be able to do until it gets full LCD
    emulation. (If I recall correctly, smooth scroll and text mode
    didn't work, I'm not sure offhand what else.)

    —b9


    On Fri, Feb 20, 2026 at 11:26 AM Kenneth Pettit
    <[email protected]> wrote:

        Yes, there is no doubt that VirtualT runs too fast wriring to
        the screen.  Even with the 8085 running at 2.4 MHz, it is
        still fasterr than the LCD controller chips.  The ROM polls
        the LCD controller for "BUSY" status after writing new data
        an will only continue once the controller is ready.  I tried
        to model this in the emulation, but it moster certainly is
        not 100% accurate.

        Ken

        On 2/19/26 10:28 PM, B 9 wrote:
        This may be just more of the same problem, but it appears
        Virtual T runs too fast when printing to the screen as well.

        image.png

        I noticed this because the BASIC loader
        <https://github.com/hackerb9/co2do/> I made for .co files is
        superduper slow and the reason is (partly) due to constantly
        printing the status. If anyone knows a fast way to display
        on the screen, please do let me know.

        To test, I printed strings of different lengths and
        measured the elapsed time. On my actual Tandy 200, it was a
        linear relationship for strings from 0 to 39 chars:
        n×16÷9+5. Virtual T seems to be going about twice as fast
        with a speed of about n+3 seconds for printing an
        n-character string 1000 times.

        —b9


        On Mon, Feb 9, 2026 at 3:39 PM B 9 <[email protected]> wrote:

            Virtual-T seems to be running too fast for me compared
            to real hardware (Tandy 200). I could be doing things
            wrong, so it’d be helpful if other people checked this
            out as well.

            Experimentally, my Tandy 200 takes 10 seconds to count
            to 3535.

            |FOR T=1 TO 3535: NEXT |

            When I do the same thing on Virtual-T’s emulated T200 it
            takes only 6 seconds.

            Machine     Time to count to 3535
            Genuine T200        10s
            Virtual-T 1.7 T200  6s
            Virtual-T 1.7 M100  5s

            Is the same thing true for other folks with real
            hardware? What about the Model 100 and Tandy 102 (or
            other more esoteric of the Kyotronic kin)?

            Second thing: REX# seems to slow my machine down
            significantly when I do not have an Option ROM
            activated. It is completely repeatable. Is this a known
            issue? I tried using the emulated REX in Virtual T, but
            I must have an old version as it only had REX and REX2
            listed, not REX#, and those didn’t cause any slowdown.

            Machine and REX# setup      Time to count to 3535
            Genuine T200 with REX# De-installed         10s
            Genuine T200 with REX# Installed, but no Option ROMs
            activated   16s
            Genuine T200 with REX# Installed and any Option ROM
            activated   11s

            Finally, here’s a program that makes it easy to run
            timing tests repeatedly.

            |0 REM Speed Check 4 COUNT=3535 ' T200 takes 10s to 3535
            5 PRINT"Counting up to";COUNT 6 PRINTTIME$ 10 T1$=TIME$
            20 FOR T=1 TO COUNT: NEXT 30 T2$=TIME$: PRINTT2$ 40
            H1$=MID$(T1$,1,2) 50 M1$=MID$(T1$,4,2) 60
            S1$=MID$(T1$,7,2) 70 H2$=MID$(T2$,1,2) 80
            M2$=MID$(T2$,4,2) 90 S2$=MID$(T2$,7,2) 110
            H2=VAL(H2$):H1=VAL(H1$) 120 M2=VAL(M2$):M1=VAL(M1$) 130
            S2=VAL(S2$):S1=VAL(S1$) 150
            IFS2<S1THENS2=S2+60:M2=M2-1:GOTO 150 160
            IFM2<M1THENM2=M2+60:H2=H2-1:GOTO 160 170 IF H2<H1 THEN
            H2=H2+12: GOTO 120 180 H=H2-H1: M=M2-M1: S=S2-S1 190
            PRINT"Ran";COUNT;"loops in"; 200
            PRINTUSING"##h##m##s";H;M;S |

            Please let me know what you find. Thanks all!

            —b9



Reply via email to