Rendered at 22:24:55 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
vintagedave 14 hours ago [-]
How awesome to see this on the front page! I've been writing a wrapper for this repo. Right now I'm running Turbo Vision -- this repo -- under .Net on macOS. It's a magical feeling.
The wrapper gives a higher level API, and solves some of the things like the rather antique palette API (or wraps it), is adding layout, etc.
(This is Oxygene, currently compiling to .Net. Can be used from any .Net language of course, even Go or Swift with our toolchain, but as an assembly, consumed by anything. Using PInvoke for the native TV binaries.)
Heavily in progress :D The repo is still private and I'm working on things like basing palettes on the surfaces controls are placed on today and tomorrow. Todos are cleaning up layouts, adding a few more basic (for today) missing controls, etc.
I had experimented with libraries like Terminal.GUI, which was (still is?) in the middle of a v2 transition and really difficult to get behaving without bugs. And Claude is a great lesson about TUIs and libraries that have been built without real terminal consideration -- lots of what not to do. I found myself missing Turbo Vision and thinking, why not just have a modern version? Then I found this repo, saw it was updated for Unicode, etc... I am very grateful to the author.
magicalhippo 14 hours ago [-]
> This is Oxygene
For those who aren't familiar[1], it's part of RemObjects' Elements[2] suite, which allows you to use and mix several different popular languages in addition to the Pascal-based Oxygene across Windows, MacOS, Linux, Android etc.
That looks interesting. Pity they only have IDE's for Win/macOS though. :(
I mean, deploying on Linux is good, but not having an IDE that runs on Linux is a disappointment.
vintagedave 7 hours ago [-]
We've thought of it. Most customers are Win & Mac based. The vast majority of the IDE is shared code with only thin native UI wrappers (genuinely native, done the Right Way, aka non-Electron :D) and I admit to having been tempted to point an AI at the source and a copy of Qt and asking it to add a third one, a Linux GUI. We don't normally use AI for most of our coding, but I think with two prior examples and a thin layer only, it'd be a pretty cool experiment.
electroly 7 hours ago [-]
I've done some work with this tvision port as well. Every time I use a new TUI framework, I'm disappointed. Invariably, Turbo Vision is better.
I'm actually working on my own .NET wrapper, too. I don't think I'm as far as you, though. I'm mimicking the Windows Forms API as closely as possible and I want to have a drag-and-drop TUI designer.
I did most of the hard integration work on the C++ side: https://github.com/brianluft/terminalforms/tree/main/src/tfc... -- exporting simple C functions that I can call with P/Invoke so that the C# side is mainly about organizing into classes. It took a couple tries to find a design that didn't fall apart when I got into more complicated stuff. Initially I went too hard into "everything that you can do in C++ should be possible in C#"--this was maddeningly complex. I was using placement new to stick the C++ objects into C# buffers, you could effectively subclass the C++ classes from the C# side, it was getting way too involved. I switched to a much more direct and less flexible approach. I decided the flexibility should be on the C# side.
I'm curious how your P/Invoke system works.
guestbest 4 hours ago [-]
Must be serendipity as I’ve been working on a TUI drama nd drop designer like a terminal Visual Basic 4. I’ve tried Visual Basic for dos and it was as streamlined as the windows version
vintagedave 7 hours ago [-]
Nice! Mimicking that API is a great idea - a very different approach to mine and I love seeing it :) We shall clearly be in great competition in the future!
(Joking aside, I actually hope great cooperation, not competition... it's what open source is for. Seeing someone else is making a .Net wrapper as well is just plain awesome and I wish you the best. I really like the different API style.)
electroly 7 hours ago [-]
Definitely. Reach out to me or magiblot if you ever need any help. I love this stuff, and magiblot is extremely responsive. They have helped me many times and even made changes to tvision to support my use cases.
Also, I assume you know about the Turbo Vision Pascal and C++ books. They're really helpful. I transcribed both books to Markdown for easy searching if you want it.
vintagedave 3 hours ago [-]
I will, and thankyou.
That editor is really impressive. I'll see if I can wrap it too! Can I ask what your editor integration is for, what project?
I know the books exist, but I haven't read them. It's possible I even had a copy as a child - we had many of them but I never wrote Turbo Vision code, just Turbo Pascal in plain text or graphics modes. Then I moved on to Delphi. I would love to find both in MD - are they publicly available?
I realised I never answered your question about P/Invoke: I wrote (as in got an AI to generate) a flat C wrapper using the handle pattern, and then reimplemented classes back in Oxygene Pascal. I'm experimenting with new controls now, eg a tab/page view and others. Each is just a class that has its own view, plus some management extras, such as what max rendering it supports (I'm adding DOS character sets through to Powerline in rendering tabs, borders, etc.) It's all churning quite a bit as I do something, realise it may not be the best approach matching the TV model, rethink - learning a lot about TV's architecture at the time - so no more solid answer than that currently simply because it may be outdated tomorrow :)
Rather than focusing heavily on inheritance, I'm leaning more towards soft interfaces (duck typing) and wrapping via composition. This is just personal preference. But the concept is, if something looks like it is able to hold controls, it is treated as though it can hold controls, for example.
8 hours ago [-]
lepicz 10 hours ago [-]
> It's a magical feeling.
hehe working with this TV library scratches my nostalgia itch :D
it probably saved me from futile efforts like writing apps for GEOS or joining the one person Hurd team.
FpUser 6 hours ago [-]
I did not use TV directly but I loved the design so I used basic ideas for my own DOS UI library for Turbo Pascal. It was completely graphical and implemented using built in assembly. In order to save RAM my Window manager would save invisible regions to disk.
actionfromafar 13 hours ago [-]
I wanted to do the same. I have used Terminal.Gui but would prefer TV and so considered a wrapper. Would be really interesting to see your wrapper.
vintagedave 8 hours ago [-]
Happy to share. It's really not in a shareable state right now, so that's 'happy in a few days maybe' if that's ok :) But you can ping me and I can let you know when it is? Drop me an email, username at gmail.
warpech 16 hours ago [-]
My programming career literally started in a dumpster in the ’90s, when I found a Turbo Vision book someone had thrown away. I picked it up and immediately fell in love with the bluish TUIs that anyone could make.
jgord 17 hours ago [-]
Supercool .. the universe of possibilities really exploded when Borland came out with Turbo Pascal compiler, Turbo C++ and TurboVision.
Compiler performance was superb and the manuals were a work of art - I just wished I had kept all of mine.
This is a cultural treasure.
JimDabell 16 hours ago [-]
The manuals were great. I taught myself C/C++ in the early 90s mostly from the big stack of Borland books that came with Turbo C++. It’s hard to imagine learning something like that these days by simply sitting down and reading reference manuals.
pjmlp 15 hours ago [-]
Me as well, as a teenager those manuals were invaluable, it wasn't as if we could easily learn elsewhere.
It was either the manuals, or getting lucky with magazine articles or local library book selection.
WillAdams 9 hours ago [-]
Towards that end, I've been trying to put together a list of Literate Programming texts:
I really wish that there were more, in particular, I'd dearly love to see a graphical QT (or other up-to-date) GUI app as a Literate Program.
unj 17 hours ago [-]
Turbo Vision for a long time was for me like a golden standard. All the new TUI frameworks seemed like they were missing something.
Now I will get to see if that was just a nostalgia. Gonna use this in the next tool. Huge kudos to the authors <3
pjmlp 8 hours ago [-]
The TUI revivalism misses that for us back then, using TUIs was the only option in many cases, it wasn't because it was cool or something.
pjmlp 16 hours ago [-]
Indeed, except for GW-BASIC and MS-DOS, for me it was Borland all the way.
Turbo BASIC, Turbo Pascal, Turbo C++ for MS-DOS and Windows 3.x, Turbo Vision and OWL.
Got into VC+ on version 5, and MFC always felt so lame compared with Borland offerings.
To this day, they don't have anything that can match C++ Builder RAD capabilities, and even with the historic background, it has taken a few years for .NET to get the low level coding and AOT story straight, Delphi like.
We should give Go, C++ and Rust folks a few copies of Turbo Pascal 7 for MS-DOS, and Delphi current.
pjmlp 16 hours ago [-]
The original version came with Turbo Pascal 6, the C++ port came later.
So this is a modern port of the port. :)
Borland did the same with other frameworks OWL came first in Turbo Pascal for Windows 1.5, and many of C++ Builder tools are actually written in Delphi.
Anyway, Turbo Pascal 5.5 adoption of Object Pascal, followed by Turbo Vision on version 6, was my introduction to OOP, and it I was lucky have gone that path.
Got to learn OOP, and all the goodies that Turbo Vision offered as a framework in an environment like MS-DOS.
badsectoracula 13 hours ago [-]
Amusingly, Free Vision (the Free Pascal version of Turbo Vision) is based on a manual translation of the C++ version because that was released on public domain at some point and someone ported it back from C++ to Object/Free Pascal.
pjmlp 13 hours ago [-]
Interesting. If I remember correctly the source code was available (need to check my old disks), however most likely the licence would forbid that anyway.
badsectoracula 13 hours ago [-]
IIRC Borland released the C++ version specifically as PD later on their FTP server, it isn't based on the version from Turbo C++ physical releases. The history is (very briefly) mentioned in the Free Vision wiki page at the FPC wiki[0] (note that the wiki needs cleanup, e.g. it mentions 64bit clean support as a todo item but FV has been 64bit clean for a very long time now). It also mentions that somewhere between the C++ version and the Pascal conversion, TV/FV was converted to use graphics instead of text mode and it was ported back to text mode -- considering all the conversions, i'm surprised the API remained largely the same so that even now the best way to learn Free Vision is to read Turbo Vision docs/tutorials/books :-P.
Yeah, besides the current offerings from VCL and FireMonkey, only Qt compares to it in terms of existing C++ frameworks.
History rumor hill goes that originally MFC was just as high level, the origin of Afx prefix, however internal teams were opposed to it and hence how MFC became a very thin layer over Win32.
History repeated itself with C++/CX, finally Microsoft had something comparable to C++ Builder, and internal teams weren't happy until they sabotaged the whole effort with C++/WinRT. Now outside Windows team no one cares.
The development experience with OWL, on Windows 3.1 was great, I never bothered with raw Win16 or Win32 other that learning the foundations, or adding support for missing capabilities, at the TP, Delphi, C++ frameworks.
lepicz 17 hours ago [-]
it is still very well usable - i used TV 2.0 year ago to do some prototype. i wanted (and mostly succeeded) to create turbovision front end for LLDB debugger... you know, that would behave like Borland's Turbo Debugger.
few quick notes:
- blimey it was like it where i left it 199x :) you can even compile/run code from 1993 without major issues.
- there's even a better internal TV editor based on scintilla, so with syntax highlighting and such. although i was trying to mod it without success, i'll have to ask author for help, probably.
- there's no documentation (in the sense of common wisdom), so you can't ask stack overflow or AI. you have to do it like in old days: learn from examples (that have bugs in them ;) and read those few books on turbo vision again and again.
- manual 'layouting' is kinda annoying, some auto layout like qt would be handy
- i miss splitters, but that should not be hard to implement
- tbh i am kinda surprised how small and compact TV really is. it felt ginormous in the 90ies :)
overall - the author did very good job modernizing the library and i love it.
Narishma 13 hours ago [-]
> there's no documentation (in the sense of common wisdom), so you can't ask stack overflow or AI. you have to do it like in old days: learn from examples (that have bugs in them ;) and read those few books on turbo vision again and again.
Not sure what you mean here. Turbo Vision came with extensive high quality documentation. If anything such documentation is what's lacking nowadays.
i mean:
for example you have a problem 'how do i create scrollbars two squares wide' (not a real problem, can't think of something now)
if you work with qt for example so these days you ask google/stackoverflow/qtforum and you have multitude of responses if it's a common problem and sometimes you have whole solutions ready to copy&paste.
when you work with TV and ask google - you usually get... not much. so you have to take the longer route: study the doc/books (you mentioned), study the code, examples... or be friend with the author of this library or those two or three people who actively use this library these days ;)
--
edit: btw those books (there's a c++ one as well) you mention are good, but, sadly, no book is detailed enough when you have very specific problem :)
childintime 15 hours ago [-]
So funny to see all the cmake instructions. Really makes you want to go back in time. Turbo C or Pascal, hit F9 and you're up and running.
It does showcase our incompetence. In this age we should be able to point to some online compiler and run it. Or download it and run it on a folder. That should be the extent of our involvement with tools. But apparently they are not tools, but rituals we insist on.
rbanffy 13 hours ago [-]
Compiling software in modern unix systems used to be a solved problem: “./configure && make && make install” should always be the gold standard.
akoboldfrying 11 hours ago [-]
> solved problem
autotools is horrifying. I'm not claiming that there is an obviously better way to solve the problem that it tries to solve, but it is horrifying.
FTR, I have much more experience with cmake, which is also horrifying. (Maybe there is no non-horrifying way to solve this problem?)
badsectoracula 10 hours ago [-]
GP most likely meant it was a solved problem from the user's perspective. Autotools might be "horrifying" for the programmer (IMO that is an exaggeration, AT isn't that bad, with the potential exception of libtool) but it provides by far the best UX for a user (that knows how to use a command line and what building from code is, not your average grandma :-P) compared to everything else out there.
However one important aspect here is that there is no reason for Autotools to be what provides the `./configure && make && make install` UX - the GNU standards (not sure the exact name) describe the UX itself without mentioning anything about Autotools so any other approach to implementing it would be just as valid. However in practice whenever you find a configure script in the wild it is either Autotools or a hand-made one (that more often that not misses some of the GNU standard stuff).
rbanffy 10 hours ago [-]
Autotools can be daunting if you plan to write code that’s portable to Ultrix, IRIX, Apollo’s UNIX whose name I forgot, NonStop, UNICOS, OpenVMS, z/OS, macOS, and modern Linux.
Nowadays we don’t bother supporting dozens of platforms. Even Windows is something we can push aside and suggest WSL if you really need to run it under Windows.
And I even try to make sure my code runs correctly on z/OS (which IS a UNIX).
A critical part that is somewhat lost when running this in a terminal is how the mouse behaved on a real text mode screen. It was a yellow block that you moved with the mouse not a mouse pointer.
Anyone tested to run this on a high resolution Linux text mode with GPM?
Timwi 14 hours ago [-]
It wasn't inherently yellow, it was the inverse of whatever it was on top of, but since the main window filling most of the screen was dark blue, it looked bright yellow most of the time.
rezaprima 16 hours ago [-]
I am still wishing for the "real" Turbo Vision, the Pascal version because the C++ one is more like a port of the Pascal one.
"Uses" is keyword in Pascal, for example, so "including" a module by "#define"-ing feels like a "hack"
I guess it doesn't matter, nowadays.
badsectoracula 13 hours ago [-]
Free Vision, included with Free Pascal is basically that. The text mode IDE[0] uses Free Vision.
The main issue is that Free Vision (and Turbo Vision) uses the original "object" types introduced in Turbo Pascal 5.5 instead of "class" types introduced in Delphi which make a lot of things easier (e.g. the "class" RTTI allows for enough reflection to implement automatic serialization of objects, but "object" types do not have that and Free/Turbo Vision require manual serialization with registration of the VMT pointer -accessed via a fixed offset in object pointers- as a means to distinguish at runtime between different types). Free Pascal adds a few of the niceties of "class" types to "object" types (like private/protected/public sections -TP objects are all public- and properties) but Free Vision doesn't use those as it implements the original Turbo Vision API.
I’m happy it relies on libcursesw for terminal abstraction instead of hard-coding ANSI sequences. This way I can continue using my VT-100 compatible terminal.
I still need a VT-230 or 330.
NSUserDefaults 13 hours ago [-]
I recommend the recent Wookash podcast with Chuck Jazdzewski, who was part of the team that created the original TV and much more in that ecosystem.
dsign 9 hours ago [-]
How deep does this library reach into the the OS? I’m searching for something I can use from microcontroller code, where there isn’t full POSIX or Win32 support.
ChrisArchitect 16 hours ago [-]
A good related post & discussion to this for various memory lanes:
Hmm this is based on the original turbo vision source code. I wonder if Embarcadero or whoever owns the corpse of Borland this week can find a reason to complain.
Wow. I had forgotten DOSShell. Thanks for the memories, and you're right, it evokes that well.
rbanffy 13 hours ago [-]
I really hate that VGA looking font. That IBM went with serifs by default on the MDA and all subsequent PC fonts is a disgrace. They had a much nicer one in their mainframe and mini terminals.
The wrapper gives a higher level API, and solves some of the things like the rather antique palette API (or wraps it), is adding layout, etc.
```
var lMenuBar := new MenuBar;
```(This is Oxygene, currently compiling to .Net. Can be used from any .Net language of course, even Go or Swift with our toolchain, but as an assembly, consumed by anything. Using PInvoke for the native TV binaries.)
Heavily in progress :D The repo is still private and I'm working on things like basing palettes on the surfaces controls are placed on today and tomorrow. Todos are cleaning up layouts, adding a few more basic (for today) missing controls, etc.
I had experimented with libraries like Terminal.GUI, which was (still is?) in the middle of a v2 transition and really difficult to get behaving without bugs. And Claude is a great lesson about TUIs and libraries that have been built without real terminal consideration -- lots of what not to do. I found myself missing Turbo Vision and thinking, why not just have a modern version? Then I found this repo, saw it was updated for Unicode, etc... I am very grateful to the author.
For those who aren't familiar[1], it's part of RemObjects' Elements[2] suite, which allows you to use and mix several different popular languages in addition to the Pascal-based Oxygene across Windows, MacOS, Linux, Android etc.
[1]: https://www.remobjects.com/elements/oxygene/
[2]: https://www.remobjects.com/elements/
I mean, deploying on Linux is good, but not having an IDE that runs on Linux is a disappointment.
I'm actually working on my own .NET wrapper, too. I don't think I'm as far as you, though. I'm mimicking the Windows Forms API as closely as possible and I want to have a drag-and-drop TUI designer.
Some examples of my wrapper: https://github.com/brianluft/terminalforms/tree/main/src/Ter...
I did most of the hard integration work on the C++ side: https://github.com/brianluft/terminalforms/tree/main/src/tfc... -- exporting simple C functions that I can call with P/Invoke so that the C# side is mainly about organizing into classes. It took a couple tries to find a design that didn't fall apart when I got into more complicated stuff. Initially I went too hard into "everything that you can do in C++ should be possible in C#"--this was maddeningly complex. I was using placement new to stick the C++ objects into C# buffers, you could effectively subclass the C++ classes from the C# side, it was getting way too involved. I switched to a much more direct and less flexible approach. I decided the flexibility should be on the C# side.
I'm curious how your P/Invoke system works.
(Joking aside, I actually hope great cooperation, not competition... it's what open source is for. Seeing someone else is making a .Net wrapper as well is just plain awesome and I wish you the best. I really like the different API style.)
As a stretch goal, you might try to integrate https://github.com/magiblot/turbo too. This is a Scintilla-based text editor control implemented in tvision. We worked together to make it embeddable in other programs (because I wanted it in mine). Example usage: https://github.com/tmbasic/tmbasic/blob/master/src/tmbasic/C...
Also, I assume you know about the Turbo Vision Pascal and C++ books. They're really helpful. I transcribed both books to Markdown for easy searching if you want it.
That editor is really impressive. I'll see if I can wrap it too! Can I ask what your editor integration is for, what project?
I know the books exist, but I haven't read them. It's possible I even had a copy as a child - we had many of them but I never wrote Turbo Vision code, just Turbo Pascal in plain text or graphics modes. Then I moved on to Delphi. I would love to find both in MD - are they publicly available?
I realised I never answered your question about P/Invoke: I wrote (as in got an AI to generate) a flat C wrapper using the handle pattern, and then reimplemented classes back in Oxygene Pascal. I'm experimenting with new controls now, eg a tab/page view and others. Each is just a class that has its own view, plus some management extras, such as what max rendering it supports (I'm adding DOS character sets through to Powerline in rendering tabs, borders, etc.) It's all churning quite a bit as I do something, realise it may not be the best approach matching the TV model, rethink - learning a lot about TV's architecture at the time - so no more solid answer than that currently simply because it may be outdated tomorrow :)
Rather than focusing heavily on inheritance, I'm leaning more towards soft interfaces (duck typing) and wrapping via composition. This is just personal preference. But the concept is, if something looks like it is able to hold controls, it is treated as though it can hold controls, for example.
hehe working with this TV library scratches my nostalgia itch :D
it probably saved me from futile efforts like writing apps for GEOS or joining the one person Hurd team.
Compiler performance was superb and the manuals were a work of art - I just wished I had kept all of mine.
This is a cultural treasure.
It was either the manuals, or getting lucky with magazine articles or local library book selection.
https://www.goodreads.com/review/list/21394355-william-adams...
I really wish that there were more, in particular, I'd dearly love to see a graphical QT (or other up-to-date) GUI app as a Literate Program.
Now I will get to see if that was just a nostalgia. Gonna use this in the next tool. Huge kudos to the authors <3
Turbo BASIC, Turbo Pascal, Turbo C++ for MS-DOS and Windows 3.x, Turbo Vision and OWL.
Got into VC+ on version 5, and MFC always felt so lame compared with Borland offerings.
To this day, they don't have anything that can match C++ Builder RAD capabilities, and even with the historic background, it has taken a few years for .NET to get the low level coding and AOT story straight, Delphi like.
We should give Go, C++ and Rust folks a few copies of Turbo Pascal 7 for MS-DOS, and Delphi current.
So this is a modern port of the port. :)
Borland did the same with other frameworks OWL came first in Turbo Pascal for Windows 1.5, and many of C++ Builder tools are actually written in Delphi.
Anyway, Turbo Pascal 5.5 adoption of Object Pascal, followed by Turbo Vision on version 6, was my introduction to OOP, and it I was lucky have gone that path.
Got to learn OOP, and all the goodies that Turbo Vision offered as a framework in an environment like MS-DOS.
[0] https://wiki.freepascal.org/Free_Vision
History rumor hill goes that originally MFC was just as high level, the origin of Afx prefix, however internal teams were opposed to it and hence how MFC became a very thin layer over Win32.
History repeated itself with C++/CX, finally Microsoft had something comparable to C++ Builder, and internal teams weren't happy until they sabotaged the whole effort with C++/WinRT. Now outside Windows team no one cares.
The development experience with OWL, on Windows 3.1 was great, I never bothered with raw Win16 or Win32 other that learning the foundations, or adding support for missing capabilities, at the TP, Delphi, C++ frameworks.
few quick notes:
- blimey it was like it where i left it 199x :) you can even compile/run code from 1993 without major issues.
- there's even a better internal TV editor based on scintilla, so with syntax highlighting and such. although i was trying to mod it without success, i'll have to ask author for help, probably.
- there's no documentation (in the sense of common wisdom), so you can't ask stack overflow or AI. you have to do it like in old days: learn from examples (that have bugs in them ;) and read those few books on turbo vision again and again.
- manual 'layouting' is kinda annoying, some auto layout like qt would be handy
- i miss splitters, but that should not be hard to implement
- tbh i am kinda surprised how small and compact TV really is. it felt ginormous in the 90ies :)
overall - the author did very good job modernizing the library and i love it.
Not sure what you mean here. Turbo Vision came with extensive high quality documentation. If anything such documentation is what's lacking nowadays.
https://archive.org/details/bitsavers_borlandTurrogrammingGu...
if you work with qt for example so these days you ask google/stackoverflow/qtforum and you have multitude of responses if it's a common problem and sometimes you have whole solutions ready to copy&paste.
when you work with TV and ask google - you usually get... not much. so you have to take the longer route: study the doc/books (you mentioned), study the code, examples... or be friend with the author of this library or those two or three people who actively use this library these days ;)
-- edit: btw those books (there's a c++ one as well) you mention are good, but, sadly, no book is detailed enough when you have very specific problem :)
It does showcase our incompetence. In this age we should be able to point to some online compiler and run it. Or download it and run it on a folder. That should be the extent of our involvement with tools. But apparently they are not tools, but rituals we insist on.
autotools is horrifying. I'm not claiming that there is an obviously better way to solve the problem that it tries to solve, but it is horrifying.
FTR, I have much more experience with cmake, which is also horrifying. (Maybe there is no non-horrifying way to solve this problem?)
However one important aspect here is that there is no reason for Autotools to be what provides the `./configure && make && make install` UX - the GNU standards (not sure the exact name) describe the UX itself without mentioning anything about Autotools so any other approach to implementing it would be just as valid. However in practice whenever you find a configure script in the wild it is either Autotools or a hand-made one (that more often that not misses some of the GNU standard stuff).
Nowadays we don’t bother supporting dozens of platforms. Even Windows is something we can push aside and suggest WSL if you really need to run it under Windows.
And I even try to make sure my code runs correctly on z/OS (which IS a UNIX).
There's also this one in C++: https://github.com/kloczek/tvision
The one that comes with FreePascal/Lazarus is written in Pascal.
There's even one in Rust, though it might have been vibe-coded: https://github.com/aovestdipaperino/turbo-vision-4-rust
Anyone tested to run this on a high resolution Linux text mode with GPM?
"Uses" is keyword in Pascal, for example, so "including" a module by "#define"-ing feels like a "hack"
I guess it doesn't matter, nowadays.
The main issue is that Free Vision (and Turbo Vision) uses the original "object" types introduced in Turbo Pascal 5.5 instead of "class" types introduced in Delphi which make a lot of things easier (e.g. the "class" RTTI allows for enough reflection to implement automatic serialization of objects, but "object" types do not have that and Free/Turbo Vision require manual serialization with registration of the VMT pointer -accessed via a fixed offset in object pointers- as a means to distinguish at runtime between different types). Free Pascal adds a few of the niceties of "class" types to "object" types (like private/protected/public sections -TP objects are all public- and properties) but Free Vision doesn't use those as it implements the original Turbo Vision API.
[0] https://wiki.lazarus.freepascal.org/images/1/19/Userscreen.p...
I still need a VT-230 or 330.
IDEs we had 30 years ago and lost (2023)
https://news.ycombinator.com/item?id=45626910
https://github.com/gansm/finalcut
1. [https://en.wikipedia.org/wiki/DOS_Shell#/media/File:DOS_Shel...]