Skip to main content

Windows Command Line, Tabbed Windows, and JP Software (Part II)

In my last post, I talked about the origins of 4DOS, 4NT, and Take Command up to v8.

After v8 was released, I knew that we had to make some drastic changes to the 4NT / Take Command architecture. The archaic Windows console was crippling further development of 4NT, and trying to combine console applications and a GUI-based command line was crippling Take Command. I decided to merge our three products (4NT, Take Command, and TCI) and adopt the TCI approach of wrapping command line applications in a tabbed window environment, and call the resulting package ”
Take Command v9.”

(Note to the command-line-only-forever crowd: TCC (the much improved descendent of 4NT v8) still exists as a component of Take Command, and it can still be run as a stand-alone Windows console even with Take Command v13. In v9, 4NT was renamed “TCC” (Take Command Console) in recognition of the fact that Microsoft hadn’t used the “NT” name in years, and new users didn’t understand the name.)

The first thing to do was discard 99% of the existing TCI and Take Command code. (The resemblance of Take Command and TCI is purely superficial; the underlying architectures are completely different.) The goal was to knock off most of the numerous rough edges of the Windows console, and promote command line applications from second class citizens by giving them the most of the same features available to GUI apps.

Command line apps are executed by the Windows console manager, which runs them in a crude window. The console manager and CMD (the default Windows command processor) were introduced in Windows NT 3.1 in 1993, and neither has changed significantly since then. The Windows console manager shortcomings include:

  • No tabbed windows option
  • No toolbars
  • No status bar
  • Clumsy and limited cut and paste options
  • Ditto for the search options
  • No save or print features
  • Bad-to-nonexistent drag & drop capabilities (this is marginally better in Windows 7)
  • Awkward resizing
  • Not very configurable
  • Slooooooowwwww

Rewriting the Windows console manager itself was out of the question (for one thing, Microsoft had neglected to document it or any of its APIs). But I could wrap it up and hide it away, and solve all of the limitations above. Including (somewhat to my surprise), the last one!

I wanted to turn 4NT / TCC into a combined command line / GUI app. Then I could do things like change the character-mode popup windows (history, filename completion, etc.) to GUI popup windows, which would allow:

  • Resizing the windows with the mouse
  • Toolbar for add/edit/delete/search

and I could send messages between the parent Take Command (tabbed windows) session and the child command line sessions that ran in the tabbed windows. This also meant that 4NT / TCC would no longer be able to run as a full-screen app, though since Microsoft removed full-screen support in the later versions of Windows (Vista and Windows 7) this didn’t seem too burdensome. (There were a handful of users who complained about not being able to run Windows as an 80×25 full-screen console window, but they were also the ones who pined for 4DOS and Win16, which wasn’t the model we were trying to pursue by this time!)

I also wanted to address the #1 issue with Take Command v8 — namely, the somewhat awkward ways of seamlessly running command line applications within a GUI window.

Next: The Take Command v9 architecture and how 4NT, TCI and Take Command were merged.