Skip to content
z-hunterPublic

About

TurboC/2 IDE — classical "Borland style" IDE for native Win console and GCC

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

35 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TurboC/2 IDE

A console IDE in the style of Borland Turbo C. Its interface is built on modern Turbo Vision port; user C and C++ sources are compiled with MinGW-w64 GCC.

TurboC/2 IDE is free software under the GNU GPL-3.0-or-later.

The goal is to recreate the authentic experience of Borland’s legendary classic IDE from the DOS era in the modern Windows console. There are some enhancements, such as

  • Snippet;
  • Macros;
  • Code navigation and Class Browser; but care was taken to ensure they feel organic—as if, in some parallel universe, Borland still existed and continued developing TUI projects :)

Download the latest pre-release.

Screenshot_43

Building the IDE

From the project directory in PowerShell:

cmake -S . -B .build/ide -G "Visual Studio 17 2022" -A x64
cmake --build .build/ide --config Release --target turboide
.\.build\ide\Release\turboide.exe

On the first configuration, CMake downloads the Turbo Vision revision pinned in CMakeLists.txt from magiblot/tvision through FetchContent. No separate installation or manual include/library setup is needed; GitHub access is required for the first configuration.

Portable releases and Universal Ctags

Official x64 portable releases include a pinned Universal Ctags binary at tools\ctags\ctags.exe. TurboC/2 IDE uses that private copy for symbol navigation; it does not inspect PATH, so another installed ctags.exe cannot affect the IDE. See THIRD_PARTY_NOTICES.md for its license and source information.

To prepare the portable output locally, fetch and verify the pinned archive, then configure with bundling enabled:

$archive = .\tools\fetch_ctags.ps1
cmake -S . -B .build\portable -G "Visual Studio 17 2022" -A x64 `
  -DTURBOIDE_BUNDLE_CTAGS=ON -DTURBOIDE_CTAGS_ARCHIVE=$archive
cmake --build .build\portable --config Release --target turboide

Zip the resulting .build\portable\Release directory without changing its layout. Publish the TurboIDE source and the matching Universal Ctags 6.2.1 source alongside that ZIP in the same GitHub release; use .\tools\fetch_ctags.ps1 -IncludeSource to retrieve the latter.

Ordinary developer builds do not download Ctags. They may opt into a local copy for testing through TURBOIDE_CTAGS; this override is compiled out of portable builds.

Code navigation

Search → Jump to symbol (Ctrl+F2) uses Universal Ctags to open a matching definition. Back from symbol (Ctrl+Shift+F2) returns to the preceding location; Word completion (Ctrl+Tab) completes an entered prefix from the current buffer and the index; Class browser shows indexed C++ types and members. The active modified file is indexed from a temporary snapshot, so a Save is never required merely to navigate or complete a name. This is tag-based navigation, not compiler-semantic resolution. Developer details, limits, test procedure, and Ctags process contract are in SYMBOL_NAVIGATION.md.

If Turbo Vision has already been downloaded, or if a local checkout is needed, pass its root directory to CMake through FETCHCONTENT_SOURCE_DIR_TVISION:

git clone https://github.com/magiblot/tvision.git C:/dev/tvision
cmake -S . -B .build/ide-local -G "Visual Studio 17 2022" -A x64 `
  -DFETCHCONTENT_SOURCE_DIR_TVISION=C:/dev/tvision
cmake --build .build/ide-local --config Release --target turboide

Point to the root of the tvision repository—the directory containing CMakeLists.txt. TurboIDE applies small compatibility patches to Turbo Vision sources while CMake configures, so use the revision pinned in CMakeLists.txt or verify a newer version first. Quote paths containing spaces.

Help

TurboIDE ships one native Turbo Vision help database, help/tchelp.h32, beside turboide.exe. It combines the temporary historical Borland C++ reference with TurboIDE-specific and rewritten topics. In the editor, Ctrl+F1 looks up the identifier under the cursor in the historical alphabetical index. F1 on a focused TurboIDE control or selected menu item opens its contextual topic, falling back to legacy Contents when absent. Help source, context IDs, status-line hints, authoring style, merging, validation, and conversion instructions are in HELP_CONVERSION.md. Borland documentation describes its old compiler; TurboC/2 IDE uses GCC/GDB.

GCC compiler

The IDE looks for gcc.exe in PATH. To provide an explicit path in the current PowerShell session:

$env:TURBOIDE_GCC = "C:\tools\w64devkit\bin\gcc.exe"
.\.build\ide\Release\turboide.exe

Use an x64 MinGW-w64 GCC. GCC supports Unicode user names in source paths; the linker receives a relative ASCII output name inside .turboide-build.

Borland conio.h compatibility

The release includes the GCC-adapted coniow implementation. TurboC/2 IDE adds it to every user C build, so legacy sources can use either #include <conio.h> or #include <coniow.h> without project configuration.

Build commands

  • Alt+F9 compiles the current saved .c file.
  • F9 builds the open project; when no project is loaded, it builds the current .c file.
  • On errors, the Messages window opens automatically. Arrow keys and Space track the selected line; Enter navigates to the source and closes the window. F11 opens Project, Shift+F11 opens Messages, and F12 opens Compiler Messages.
  • Before building, modified files can be saved, built from their on-disk versions, or the build can be cancelled.
  • The result is .turboide-build\program.exe in the source or project working directory. This directory is excluded from Git.

To create a project, choose Project → New project... in the project directory, then add source files with Project → Add item.... The IDE does not modify an existing .prj when creating a project whose name is already in use. A project file normally lives in the project root; the file dialog can create or open a project in any accessible directory. The file uses TurboIDE's text format, not Borland's binary format.

Example UTF-8 project file:

source=src/main.c
source=src/math.c
include=include
define=USE_FAST_MATH
library=user32

Paths are relative to the .prj directory. source may occur more than once; include adds a header directory; define is passed as -D; and library=foo is passed as -lfoo (a complete -lfoo argument is accepted as well). Program arguments use repeated arg=... lines; the runtime directory uses rundir=....

File → Change dir... sets TurboIDE's current directory. It is stored in settings and is the root for file dialogs and new files; it does not prevent opening a project in a different directory. The IDE stores each project's session beside its .prj in a same-named .dsk: open files, window positions, cursors, active window, breakpoints, and Watch expressions. The session is restored the next time the project is opened. .dsk is TurboIDE's text format; it is not compatible with FPC binary desktop files.

Builds use -g -O0 -Wall -Wextra so the subsequent GDB session can see symbols and variables.

Debugging

  • Debug → Start debugging builds the current file or project and starts GDB. Set TURBOIDE_GDB to gdb.exe, or add it to PATH.
  • F4 continues, F7 steps into, F8 steps over, Ctrl+F2 stops debugging, and Ctrl+F8 toggles a breakpoint on the current line.
  • Ctrl+F7 adds a Watch; Ctrl+F4 reevaluates Watches. In the Watches window, Del removes the selected expression. Values update whenever the debugger stops; TurboIDE prohibits memory writes and explicit register access. GDB 9.1+ also blocks function calls, so it supports arbitrary expressions; older versions accept only simple variable names.
  • Locals and Watches appear in separate windows. When execution stops, the IDE shows the source line and values; Alt+F5 displays the program screen.

Running and the user screen

  • Ctrl+F9 builds the current files and runs the program.
  • The program receives console input/output; after it exits, the IDE restores the screen and editor window from which it was launched.
  • Alt+F5 displays the User Screen. Press Enter to open cmd.exe there; use exit to close the shell. Alt+F5 or Esc returns to the IDE.
  • For project arguments, add one arg=value per .prj line; each value becomes one argv argument.

About

TurboC/2 IDE — classical "Borland style" IDE for native Win console and GCC

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages