Whoa, that's cool! The telnet daemon runs automatically with Virtual-T?
For the threads/deadlock issue, does it work reliably as long as no
operator is at the graphical console?
--b9
On December 22, 2025 7:15:30 PM PST, Kenneth Pettit
<[email protected]> wrote:
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>