At 2026-02-03T19:33:19+0000, Robin Haberkorn wrote:
> On Tue Feb 3, 2026 at 20:10:00 GMT +01, G. Branden Robinson wrote:
> > Which VT100 emulator is it, and how good is it known to be?
> 
> https://github.com/larsbrinkhoff/terminal-simulator

Excellent choice, if fidelity is what you're after!

I'm familiar with the project.

One limitation I'm aware of is that his simulator does not (or did not
when last I checked) implement the "advanced video option".

https://vt100.net/docs/vt100-ug/chapter4.html

This is a significant fact for some users--note the limitation on
attributes without the option--since in casual usage and even in the
terminfo database, people assume any "VT100" to be one _with the
advanced video option installed_.  (I think the VT102 came with it
stock.)

Thus this terminfo entry:

$ infocmp vt100-nav
#       Reconstructed via infocmp from file: 
/home/branden/ncurses-HEAD/share/terminfo.db
vt100-nav|VT100 without advanced video option,
        am, mc5i, msgr, xenl, xon,
        cols#80, it#8, lines#24, vt#3, xmc#1,
        acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~,
        bel=^G, blink@, bold@, clear=\E[H\E[J$<50>, cr=\r,
        csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H,
        cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>,
        cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA,
        cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>,
        enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, ka1=\EOq,
        ka3=\EOs, kb2=\EOr, kbs=^H, kc1=\EOp, kc3=\EOn, kcub1=\EOD,
        kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, kf0=\EOy,
        kf1=\EOP, kf10=\EOx, kf2=\EOQ, kf3=\EOR, kf4=\EOS, kf5=\EOt,
        kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, lf1=pf1, lf2=pf2,
        lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8,
        rev@, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, rmkx=\E[?1l\E>,
        rmso=\E[m, rmul@, rs2=\E<\E>\E[?3;4;5l\E[?7;8h\E[r,
        sc=\E7, sgr@, sgr0@, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=,
        smso=\E[7m, smul@, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n,
        u8=\E[?%[;0123456789]c, u9=\EZ,

...which however doesn't cancel the scroll region capability (csr), so
maybe this is a red herring.

> "This is a software simulation of the VT100 hardware. The original
> firmware ROM is built in and executed by an 8080 emulator.  Other
> components include video display with character generator ROM, settings
> NVRAM, Intel 8251 USART, and a keyboard matrix scanner.  The Advance
> Video Option is not included."
> 
> Brinkhoff is something like a computer historian to my knowledge.
> I think he knows what he's doing.

I agree.

> Regarding idlok() and scrollok(): I know the manpage.
> Unfortunately, nowhere it says what to do, so ncurses
> will actually set up the scroll region.
> After reading the source code, it didn't get much clearer.

Yeah, at this point I have to yield to Thomas Dickey.

> From my understanding scrollok() shouldn't be necessary
> if the terminal has insert/delete_line caps.

Well, there's that parenthetical sentence in the man page you know.

>>> (To get the physical scrolling effect on the terminal, the
>>> application must also enable idlok).

> Perhaps I will build against a debug version of ncurses
> and step through with GDB, looking for the place actually
> preventing configuration of the scroll region.

This would seem to be the relevant code:

https://github.com/ThomasDickey/ncurses-snapshots/blob/dd63e6cc22ddea3df663b977891aedd5b918e310/ncurses/tty/tty_update.c#L1800

It appears to me that if the terminal description has the
change_scroll_region (csr) capability, ncurses will use it.

So if that's not happening for you, I have no hypothesis.  :(

Regards,
Branden

Attachment: signature.asc
Description: PGP signature

Reply via email to