O'Basic
O'Basic, Celtech Software's shareware desktop script language for Windows 95, a BASIC-like interpreter with built-in system objects, try/catch error handling and a script-to-EXE compiler.
Created by Sean O'Dell (Celtech Software)
O’Basic was a shareware script language for Microsoft Windows made by Celtech Software, a small company in the Los Angeles area run by Sean O’Dell. It first shipped as O’Basic95, which Celtech called a “system script language for Windows95”. It was later renamed O’Basic97, billed as a “Desktop Script Language for Windows95”. The language looked like simple BASIC. Behind that syntax was an object model for the Windows 95 shell, registry, clipboard, DDE, serial ports, sockets and printers. It also had structured Try/Catch exception handling, which was unusual for a BASIC of the time, and could call any Windows API function directly.
O’Basic was one of several Windows scripting tools of the mid-1990s that tried to give power users and administrators more than DOS batch files offered, before Windows Script Host and VBScript became standard parts of Windows. It never became widely used. Its main historical interest is as a well-documented example of a small-vendor shareware language that was eventually released from its licence checks by its own author.
History & Origins
Celtech Software
In 1996 Celtech Software’s web site listed a small family of Windows utilities, all sharing the “O’” prefix:
| Product | Description (from Celtech’s 1996 home page) |
|---|---|
| O’Setup / O’Setup95 | Application installation toolkit (Windows 3.1 / Windows 95) |
| O’Basic95 | System scripting toolkit |
| O’Ledger95 | Credit/debit register |
| O’Journal | Time-tracking register |
| O’Folder | Windows 95-style folders |
| O’Date | Graphical calendar |
| Gun | Desktop toy |
The company’s address was Valley Village, California, and later Woodland Hills. The shareware documentation names Sean O’Dell as the contact for distribution questions. O’Dell also signed the 2002 Freedom Patch “Sean O’Dell, Celtech Software”. The page names him as creator on that basis, since he is the only developer the surviving material identifies.
O’Basic95
The shareware package’s README gives the language’s copyright year as 1995. Windows 95 itself shipped in August 1995, so any O’Basic95 release can only date from late 1995 or after. The earliest copies found online are on shareware CD-ROMs from early 1996, such as DP Tool Club 28, Cream of the Crop 12 and Night Owl 20, where obasic95.zip holds a single SETUP.EXE plus README, SYSOPS and FILE_ID files, all dated 21 January 1996. Its description calls O’Basic95 a “System script language for Windows95” with “Standard object-oriented basic syntax with extended registry access, clipboard, DDE client, INI file writing, printing, and more!” A 1995 shareware release is plausible, since a January 1996 upload could follow a late-1995 one, but it is not confirmed. 1995 is best read as the year development or copyright began, and January 1996 as the earliest documented release.
A revised obasic95.zip, on The Best of Windows 95.com CD-ROM of September 1996 with every file dated 8 August 1996, adds “For registered users: ODBC access, high-level FTP service and a script-to-EXE compiler” to the description. That package contained:
OB95DE.EXE, the editor (the code editor and dialog editor in one program)OBENG10.DLL, the interpreter engineOBMAKE.EXE, the script-to-EXE compiler, available to registered users onlyFTP.OBXandODBC.OBX, two extension objectsTEMPLATE.COD, a starter script, andEXAMPLES.ZIP
It was sold under the shareware model of the day. The trial was fully functional, but O’Basic would refuse to run any .COD script more than 30 days after it was created. Registering with Celtech (reportedly also possible through the RegNet registration service, though the surviving package text names only Celtech) unlocked existing scripts again. The price list in the package, dated 12 June 1996, gave $40 for O’Basic95 with the SDK free. The order form also listed Professional ($120) and Developer ($290) editions.
O’Basic97
By late 1997 the product had become O’Basic97 and used version numbers of the form 97.0nn. Celtech’s announcements page shows a fast release pace in late 1997 and early 1998:
| Version | Date | Changes noted by Celtech |
|---|---|---|
| 97.017 | 28 Oct 1997 | Set, Reset; Form.Controls and Form.ControlCount |
| 97.018 | 8 Nov 1997 | MatchText (DOS-style wildcards), CompareText, Socket Link |
| 97.019 | 13 Nov 1997 | Forms can be shown as icons in the system tray; Socket improvements |
| 97.020 | 15 Nov 1997 | Macro-evaluation methods on arrays; a Telnet protocol implementation |
| 97.021 | 24 Nov 1997 | Updated InternetFTP and Network extensions; array Min/Max |
| 97.022 | 7 Jan 1998 | SelectStart and SelectLength on TextBox objects |
| 97.023 | 16 Jan 1998 | Macro-recorder crash fix; SoundEx function |
The installer page listed 97.025 in April 1998. By April 2000 the current version was 97.034, sold as a single-user licence for Windows 95/98/NT at $80 or a site licence at $1,600. No later version number appears in any surviving Celtech page. In 2002 the separate obasic.com site still offered 97.034 as both the trial and the full version.
Celtech’s 2000 product page also says that Ziff-Davis (ZDNet) gave O’Basic97 a four-star rating. That review has not been found independently, so the claim rests on the vendor’s word only.
The Freedom Patch
Some time after June 2002, Celtech published an “O’Basic Freedom Patch” on obasic.com (the earliest archived copy dates from 2006). It replaces three files in a trial installation: OBEngine.dll, the editor OB97DE.exe, and the compiler OBMake.exe. All three are dated 11 June 2002. In its README, O’Dell explains that the new engine “performs no more checks for a license file, so it will execute any O’Basic scripts it finds”, and calls the result “complete freedom”. The patch is labelled beta and comes with no warranty. In effect it ended O’Basic as a commercial product.
Design Philosophy
Celtech’s 1996 overview sets out the goals plainly:
- One file per script. Code and dialog resources were stored together in a single
.CODfile. The editor had a code pane and a dialog editor, and at run time the dialogs became real Windows 95 windows that the script could control. - BASIC syntax, object power. The syntax “looks a lot like simple BASIC code”. Celtech said what made O’Basic distinctive was its use of objects, which it compared to C++ and Delphi.
- Errors are exceptions, not return codes. Functions always return valid values. When something fails, an exception is thrown and the script stops at that point, unless the code is wrapped in a
Try/Catchblock. Celtech claimed that scripts could therefore be written “with virtually no testing” and still be trusted not to carry on silently after an error. - Open-ended extensibility. New objects could be added as
.OBXextension DLLs, written with the free SDK in Visual C++ 4.0 or Delphi. Those objects then became part of the language.
Key Features
Language
The November 1996 command list groups the core language as follows:
| Area | Statements and functions |
|---|---|
| Control flow | If, For, While, Select, Proc (user-defined statements and functions), Goto, GoSub/Return, Exit |
| Dynamic allocation | New, Delete, plus the “old-style” Dim and ArraySize for arrays |
| Error handling | Try, Catch, Throw (user-defined errors), Resume |
| Metaprogramming | Eval and EvalArray (run a string as script code), Run (run another .COD file) |
| Introspection | IsStringVar, IsNumberVar, IsStringArray, IsNumberArray, IsObject |
| Strings | Mid, Left, Right, Pos, ParseTok, UCase, LTrim, Str, Hex, Oct and others; + concatenates |
Variables carry their type in a sigil, $ for strings and # for numbers. Arrays are indexed with square brackets, as in Array$[1] and Array#[1]. String and number arrays are also objects, with methods such as Sort (documented as a quicksort), ParseTok, ReplaceAll, Total and Average.
Built-in objects
Some objects were static, meaning they always existed, such as Clipboard. Others were dynamic and had to be created with New and freed with Delete, such as Port for serial I/O. Printer worked both ways: one static instance connected to prn, and further instances could be created for ports such as lpt2. The 1996 list includes Application, StringArray, NumArray, Clipboard, Clock, DDEClient, Dialog, DLL, Heap, IniFile, MailSlot, Port, Printer, Registry, Status and Socket.
The DLL and Heap objects together let a script declare and call any Windows API function, with Heap managing raw memory buffers. From the Visual Basic world O’Basic also borrowed FindWindow and SendKeys, so a script could drive programs that had no programming interface by typing into them.
Windows shell integration
The language included commands for long and short (8.3) file names, creating shortcuts (CreateLink), setting the wallpaper, shell file operations with the standard progress animation (FileOperation), ExitWindows, folder-browse and open/save dialogs, and a hideable DOS-style console for Print and GetString.
Extension objects (OBX)
| OBX | Purpose (per Celtech, 1996) |
|---|---|
| Archiver | Create and edit compressed archives using deflate/inflate |
| CGIManager | Write CGI scripts: decodes GET/POST input and merges HTML templates |
| InternetFTP | High-level FTP client built on Microsoft’s ActiveX Internet extensions |
| MailEncoder | UUencode and MIME encoding |
| Network | Map network drives and redirect printers |
| ODBCSource | View and edit ODBC data sources and run SQL |
Added in O’Basic97
Celtech’s 2000 feature list adds a macro recorder that turned keyboard and mouse activity into script code, an editor with an integrated debugger, OLE Automation objects, an SMTP mail client with attachments, native Microsoft Access database support, script locking against viewing and editing, and the script-to-EXE compiler. Some of these features were for registered users only.
Example
This is Philipp Winterberg’s O’Basic program from 99-bottles-of-beer.net (2005), shown as published. It uses $ and # variables, a For…EndFor loop, + for concatenation, and a two-argument str(). The ^J and ^M sequences appear to stand for linefeed and carriage-return characters, but this has not been checked against an O’Basic manual.
| |
Community
Besides Celtech’s own message board and newsgroup, the 2000 product page points to three community resources:
- Contacts!, Jim Vaughan’s contact manager written entirely in O’Basic
- The O’Basic Domain, a site of facts and code snippets run by Simeon Wood
- O’Basic.de, a German site run by Helmut Reibold. Celtech says Reibold worked at the magazine CD+Extra, which ran an O’Basic programming contest
Current Relevance
O’Basic is a historical language. It had no releases after the 97.034 line and the 2002 Freedom Patch. It was built for Windows 95 and sold for 95/98/NT, and nothing documents support for any later version of Windows. Its jobs were later covered by tools that came with Windows or were free: Windows Script Host with VBScript and JScript from 1998, then AutoIt, AutoHotkey and eventually PowerShell. There is no maintained interpreter and no Docker image. The trial installer and the Freedom Patch survive only in web archives and on shareware CD-ROM collections.
Why It Matters
O’Basic shows what a very small shareware company could do in the early Windows 95 years. Celtech put an object model for the new Windows shell, direct Win32 API calls, sockets, ODBC, a dialog designer and a native compiler behind a BASIC syntax, and sold it for $40. A few of its choices were early for a hobbyist BASIC, notably exception-style Try/Catch error handling in place of ON ERROR GOTO, and a plug-in object system with a free SDK. Its end is also typical of the era: the author did not shut it down, but released a patch that removed the licence checks.
Sources and caveats
- Celtech Software web pages at celsoft.com (1996–2000) and obasic.com (2001–2006), read from the Internet Archive: product overview, command list (22 November 1996), extension-object page, announcements (1997–98), install page (1998), product and pricing pages (2000).
obasic95.zip(files dated 21 January 1996) on DP Tool Club 28 and other early-1996 shareware CD-ROMs, read via discmaster.textfiles.com: README.TXT, SYSOPS.TXT, FILE_ID.DIZ.obasic95.zip(files dated 8 August 1996) on The Best of Windows 95.com, September 1996, read via discmaster.textfiles.com: README.TXT, INFO.TXT, FILE_ID.DIZ.- The README of the O’Basic Freedom Patch (archived from obasic.com).
- 99-bottles-of-beer.net entry 502 (Philipp Winterberg, 20 April 2005).
- Not independently verified: whether O’Basic95 was released in 1995 or only copyrighted then, the RegNet registration route, the ZDNet four-star rating, the CD+Extra contest, the 99-bottles-of-beer.net entry (not re-checked in review), and the date O’Basic97 was first released.
Timeline
Notable Uses & Legacy
Contacts! by Jim Vaughan
A complete contact manager written entirely in O'Basic. Celtech linked to it from the product page from 1996 onward as its showcase of what the language could do
CD+Extra programming contest
According to Celtech's product page (2000), the German computer magazine CD+Extra ran a contest to find the best O'Basic program. The contest was linked through Helmut Reibold's German fan site, O'Basic.de
Windows system automation and CGI scripting
O'Basic was marketed for automating Windows 95: driving other programs with FindWindow and SendKeys, editing the registry, mapping network drives and making FTP transfers. With the CGIManager extension it could also run as a web-server CGI script language