Seems my VirtualT socket interface issue was mostly just \r\n line
ending issues (though "telnet mode" still not working for some reason).
But there also seems to be some tread dealock issues lurking somewhere
because sometimes the LCD gets some junk on it and X prints errors like
below, and then VirtualT hangs (most likely on a semaphore wait that's
in a deadlock)
X_ChangeGC: BadPixmap (invalid Pixmap parameter) 0x0
X_GetWindowAttributes: BadLength (poly request too large or internal
Xlib length error) 0x0
X_GetInputFocus: BadLength (poly request too large or internal Xlib
length error) 0x0
X_GetWindowAttributes: BadLength (poly request too large or internal
Xlib length error) 0x0
==================================
Example run (this could be turned into an agentic workflow once deadlock
is resolved)
==================================
(Launch VirtualT in another Linux terminal)...
ken@andromeda# telnet localhost 2023
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
help
Help
====
bye
clear_break(cb) address
cold_boot
debug_isr(isr) [on off]
dis address [lines]
exit
flags [all S Z ac P=1 s=0 ...]
halt
in port
key(k) [enter cr f1 esc ctrl+c shift+code+a "Text" ...]
kill filename
lcd_ignore(li) [none (row,col)-(row,col)]
lcd_mon(lm) [on off]
list_break(lb)
load filename
model [m10 m102 t200 pc8201 m10 kc85]
optrom [unload, filename]
out port, value
radix [10 or 16]
read_mem(rm) address [count]
read_reg(rr) [all A B h m DE ...]
read_rex
reset
run
screen_dump(sd)
set_break(sb) address [main opt mplan ram ram2 ram3 read write]
speed [2.4 friendly max]
status
step(s) [count]
step_over(so) [count]
string address
terminate
write_mem(wm) address [data data data ...]
write_reg(wr) [A=xx B=xx hl=xx ...]
x [lines] (short for "dis pc")
Ok> speed
2.4
Ok> speed max
Ok> speed
max (484.971 Mhz)
Ok> screen_dump
Dec 22,2025 Mon 19:02:21 VirtualT 1.8
BASIC TEXT TELCOM ADDRSS
SCHEDL TRIANG.DO TRIANG.BA MIAM.BA
ASCPIX.CO -.- -.- -.-
-.- -.- -.- -.-
-.- -.- -.- -.-
-.- -.- -.- -.-
Select: _ 10670 Bytes free
Ok> key enter
Ok> screen_dump
TRS-80 Model 100 Software
Copr. 1983 Microsoft
10414 Bytes free
Ok
Ok> lcd_mon on
Ok> key "list" enter
event, lcdwrite, (8,1),list
event, lcdwrite, (8,1),10 FOR X=1TO5:PRINTX:NEXT
event, lcdwrite, (8,1),Ok
key "run" enter
event, lcdwrite, (8,1),run
event, lcdwrite, (8,1), 1
event, lcdwrite, (8,1), 2
event, lcdwrite, (8,1), 3
event, lcdwrite, (8,1), 4
Ok> event, lcdwrite, (8,1), 5
event, lcdwrite, (8,1),Ok
Ok> read_reg all
A=1 F=68 B=0 C=0 D=1 E=6 H=117 L=81 M=1 PC=30014 SP=57418
Ok> radix 16
Ok> read_mem 0 32
C3 33 7D 4D 45 4E 55 00 7E E3 BE C2 46 04 23 E3 C3 58 08 EB 2A EB F6 EB
7C 92 C0 7D 93 C9 3E 20
Ok>