Hey John,
No VirtualT is still running locally on a PC. I have it running on my
Ubuntu distrobution. You describe to the agentic AI flow tool (I use
Copilot CLI with claude-sonnet LLM) how to interface with a tool. I
typically do this through a markdown file. Some thing like:
virtualt.md:
Virtualt Provides M100/M102/T200, etc. emulation via a socket interface
served on port 2023 of the localhost.
- Start the emulation server:
/home/ken/virtualt/virtualt -nogui -p 2023 < /dev/null > /dev/null &t
- Test if VirtualT emulation server is running
nc -z localhost 2023
Once a connection is made, commands can be issued to perform emulation
services. Each command is terminated with CR or CRLF line ending.
Commands are:
- cold_boot: resets the emulated model laptop (i.e. wipes any
previously existing apps / data that may have persisted across
invocations since Virtualt Will do this)
- load file.ba: Loads an ASCII formatted Model 100 / 200, etc. BASIC
file. VirtualT will automatically tokenize this file for M100/M1002 and
T200.
- kill FILE: Deletes a file from the emulated "filesystem" by name.
Must include any extension and be all caps.
- key [keylist]: [keylist] can be a space separated list of keys
presses to emulate. Quoted strings like "list" will be injected one
keystroke at a time without the quotes. Special keys:
enter cr esc left up down right shift+code+a (where a is any key)
shift+graph+a f1 f2 f3, etc.
- quit: closes the socket connection leaving the VirtualT emulation
server running
- terminate: Terminates both the socket connection AND terminates the
VirtaulT emulation server
- screen_dump (sd for short): Dump the entire contents of the 40x8
ASCII data currently displayed on the emulated LCD
- lcd_mon [on / off]: Turn dynamic LCD update montioring on or off.
Any writes to the emulated LCD will be reported using the following format:
event, lcdwrite, (row,col),DATA
example:
event, lcdwrite, (2,1),list
event, lcdwrite, (3,1),10 FOR X=1TO5:PRINTX:NEXT
event, lcdwrite, (4,1),Ok
etc.
Then you can even pass this markdown file to your LLM and ask it to
convert it to a more appropriate tool interface descripton format that
for it to parse instead of parsing the source markdown over and over.
You are basically teaching the agentic AI tool how to interface with
VirtualT, then it uses it's LLM interface for identifying what code to
write, when it needs to be loade, how to use screen_dump or lcd_mon to
gather test results and intrepret if they are correct, etc.
This is what I do at work all the time, though I typically interface
with things like Xilinx xsim for doing Verilog coding tasks, gnu make
tools for C coding or others for Pyhon, etc.
Ken
On 12/23/25 1:47 PM, John R. Hogerhuis wrote:
On Tue, Dec 23, 2025 at 1:36 PM George M. Rimakis <[email protected]>
wrote:
Like magic - Codex/Claude can not only use the socket interface,
it manages to correctly update the GUI to reflect whatever it's
doing over the socket.
I just observed it enter BASIC, and type a test program
"""
10 PRINT "HELLO FROM MCP"
20 FOR I = 1 TO 3
30 PRINT I
40 NEXT I
50 END
"""
In not too long - I think this will be working flawlessly.
So are you saying you built VirtualT in some cloud thing and it
learned about the custom VirtualT socket and started using it?
-- John.