Celebrating the 30th Anniversary of Delphi version 1.0’s Launch

By David Intersimone “David I” – Friday, February 14, 2025

Today we celebrate the 30th anniversary of the launch of Delphi version 1.0 on Valentine’s Day, February 14, 1995, at the Software Development West Conference in San Francisco California. More that 12 years of continuous IDE, language, tools and library development led up to the launch of Delphi version 1.0.

The development of Delphi can trace some of its roots and technologies across Borland product releases including Turbo Pascal 1 (DOS and CP/M), Turbo Pascal 3 (overlays), Turbo Pascal 4 (units), Turbo Pascal 5 (integrated and standalone debugger), Turbo Pascal 5.5 (objects), Turbo Pascal for the Mac, Turbo Pascal for Windows, Borland Pascal 7 for DOS and Windows, Paradox, dBase and InterBase. While Borland Pascal 7 was available, the development team had been working for about 2 years to complete the first Delphi release (see links at the end of this article for a few of the important historical documents).

The Delphi “Sneak Peak” at the Borland Conference 1994

The first public showing of Delphi took place at the Borland International Conference (BIC) 1994 Walt Disney World Dolphin and Swan Hotels, Orlando Florida. The original language track was focused on Borland C++ 4 and also Borland Pascal. Paul Gross gave the “Product Address: Languages” in the Swan Ballroom on Monday morning from 8-9:15am. Prior to the conference a last minute decision was made to add two Delphi sessions: “Sneak Peak: Rapid Application Development in Pascal” session given by Zack Urlocker (Delphi95) and Bill Dunlap’s sneak session, “Sneak Peak: Exception Handling in Pascal”. “Even Spencer the Cat hasn’t seen this,” said senior product manager Zack Urlocker. Delphi95 will “compete with Visual Basic on the low end and PowerBuilder on the high end.”

It’s funny to look back and remember that the title of the Zack and Bill sessions were titled “Sneak Peak” – instead of “Sneak Peek” – a purposeful choice of the word “Peak” to denote the state-of-the-art technologies in Rapid Application Development (Visual Basic and PowerBuilder still did not integrate native code compilers).

There was also an NDA session for leading Paradox developer partners where Delphi95 was presented. One of the questions during the session was “is this the Paradox compiler that was rumored to be in development?” The answer was no, unless you wanted to use Delphi and the BDE to access your Paradox files.

The Delphi v1 Launch – Valentine’s Day, February 14, 1995

The Delphi launch took place at the Miller Freeman Software Development Conference West in San Francisco California, on Valentine’s Day, February 14th 1995 at 7PM just after Philippe Kahn’s keynote “The Importance of Object Computing – The Algorithmic Link”. Two editions of Delphi were announced: Delphi and Delphi Client/Server. Before the launch, we were demonstrating existing Borland language products in the Borland booth. The day after the launch we demoed Delphi to overflowing crowds of enthusiastic developers.

While we annually celebrate the launch of Delphi version 1.0 on February 14, the actual RTM (release to manufacturing) date, and the date that all of the Delphi v1 files are date stamped, was February 15, 1995. Gary Whizin, R&D manager for Delphi tells the story about the RTM date in a 10 year remembrance audio interview. Gary said that the team did sign off the Delphi 1 master on February 14, 1995 before driving to the conference for the product launch. A stop ship bug was found and the product was re-mastered and the team signed off the first version again on February 15, 1995 (the date stamp on the files).

What Made Delphi version 1 So Special

While Microsoft had Visual Basic and PowerSoft had PowerBuilder, what differentiated Delphi was the combination of the power of the Object Pascal language, a visual component-based development environment and desktop and SQL database access:

  • High speed, native code compiler
  • IDE providing visual two-way tools – form designer and source code editor
  • TObject, records, component, and owner memory management
  • Property Method Event (PME)
  • Visual Component Library (VCL)
  • Runtime Library (RTL)
  • Structured exception handling
  • Data-aware components live at design time
  • Database support via BDE and SQL Links


Running Delphi v1 on Windows 3.1 in a DOSBox on a Win10 (or 11) PC

To Get Started

If you’re unfamiliar with how to install and run Delphi v1 on Windows 3.1, watch the YouTube video, “Stu’s Game Reviews – How to Play Windows 3.1 Games in Windows 11!!! New for 2024!!!”. Sure, it’s about installing Windows 3.1 and running games, but the information and steps work for any Windows 3.1 software including Delphi v1. Hint: you don’t need to install the drivers mentioned in the video unless you also want to play games. https://www.youtube.com/watch?v=P4vtHkan5xw

The Software You Need to Run Delphi v1 on Windows 3.1

The following is a list of the required software to get Windows 3.1 and Delphi running on your Windows 10 (or 11) PC.

DOSBox-X: https://dosbox-x.com/ or DosBox v7.4.2 https://www.dosbox.com/download.php?main=1

Windows 3.1 (Retail) (3.5-1.44mb) Contains 1.44mb 3.5″ retail disk images https://winworldpc.com/download/41574932-18c3-9a11-c3a4-e284a2c3a570

Borland Delphi 1.00 (2-15-1995)(CD) ISO https://winworldpc.com/download/c2b3c3be-c38a-e280-b00b-c38711c3a5ef

Borland Delphi 1.00 (2-15-1995)(CD).7z contains the following folders:

Installing Windows 3.1 and Delphi v1

To install Windows 3.1 and Delphi v1 I used DOSBox-X because it has a feature to easily handle swapping the Windows 3.1 six floppy disk image files and because “Stu” told me to use it 🙂

Install DOSBox-X and choose a folder on your Windows 10 (or 11) PC hard drive. Select all of the default settings during the install.

To install Windows 3.1, start DOSBox-X and mount the floppy disk image files for Windows 3.1. (note: I put the Win31 floppy disk images on my hard disk in a folder named “c:\w31”. I installed Windows 3.1 in my c:\DOSBox folder). The commands I typed were:

  • mount c: c:\DOSBox
  • imgmount a: c:\w31\disk01.img c:\w31\disk02.img c:\w31\disk03.img c:\w31\disk04.img c:\w31\disk05.img c:\w31\disk06.img -t floppy
  • a:
  • setup

When Windows setup asks you to put disk 2 in drive A:, use the DOSBox-X menu “Drive” menu item, select drive A and in the popup menu select “Swap disk” (note: Guy said you might be able to use CTRL-F4). This will “put floppy disk 2 into drive A”. To complete the Windows 3.1 install, repeat this procedure for each of the remaining floppy disks. Note that DOSBox-X is in control of your mouse. When the Windows install asks for input (for example when it asks you to type in your name and company), hit CTRL-F10 to switch mouse control to the program your installing and then to get mouse control back to DOSBox-X hit CTRL-F10 again (you will hear an audible beep each time you hit CTRL-F10 if your PC’s sound is turned on).

When you choose to exit the Windows 3.1 setup program click the “Reboot” button to restart the DOS virtual machine to take you back to DOSBox-X.

To install Delphi v1 I put the CDROM install image, Delphi.iso, in my c:\installs folder. Using DOSBox-X, I typed the following commands:

  • imgmount d: C:\Installs\Delphi.iso -t cdrom
  • c:
  • cd windows
  • win

After Windows 3.1 starts, use the “File Manager” app to install Delphi.


and click on the “d” drive that contains the Delphi 1 CDROM.


Open the “INSTALL” folder and you’ll see folders containing the contents for each of the 15 floppy disk images (DISK1-DISK15) and the SETUP.EXE program.

Click on the SETUP.EXE program to install Delphi 1. Note: if you have the separate floppy disk image files (not recommended), follow the Windows 3.1 DOSBox-X “imgmount” command and floppy swap disk steps above for selecting and using all 15 of the floppy disk image files.

After Windows 3.1 and Delphi v1 were installed, the following is the c:\DOSBox folder contents:

With Windows 3.1 and Delphi v1 installed you’re now ready to experience the intoxication of using Delphi version 1.0 on your Windows PC 🙂

Running Delphi version 1.0

To run the Windows and Delphi you just installed, you can use either DOSBox-X or DOSBox.

Type the following commands:

  • mount c: c:\DOSBox
  • cd windows
  • win

Then from within Windows open the Delphi folder and click on the Delphi icon. Note: use Ctrl-F10 to capture and release the mouse for use on your PC desktop and in the DOSBox running Windows.

Check Out the Delphi version 1.0 Easter Eggs

In the Delphi v1 IDE select the Help | About menu item.

Hold down the Alt-key and type (all caps) DEVELOPERS

Hold down the Alt-key and type (all caps) AND

You’ll see a picture of Anders Hejlsberg floating in one of the lakes on the Borland campus in Scotts Valley, California. I shot a video of Anders (in Denmark Donald Duck is called “ANDERS AND”), during an all day party to celebrate his engagement, and grabbed a video frame to put in the About Box for Delphi.

Hold down the Alt-key and type (all caps) TEAM

You’ll see multiple pages of the names of the extended Delphi team that were a part of the development, launch and support of Delphi 1.0 (in alphabetical order by first name).

Here is a group photo of the extended Delphi team taken in the outdoor amphitheater on the campus.


Three Delphi adds that appeared in developer magazines during the launch year

Happy 30th Anniversary Delphi Launch Day!!!

I send big hugs and love to all of the employees who ever worked on Delphi. I send my thanks to all of the technology partners and MVPs who support Delphi. And, I send my deepest thanks to all of the customers who have ever used Delphi (many still do), attend Delphi conferences and seminars, participate in Delphi user groups, participate in online webinars, and share knowledge, source code and suggestions to help everyone (including me) become better Delphi software engineers.

Check out my YouTube video: Windows 3.1 and Delphi version 1.0 running on my Windows 10 PC

I can’t finish this Delphi anniversary story without including a special developer, author and educator in my life, my brother separated at birth, and my technology travelling companion. That very special someone is Charlie Calvert. Charlie started at Borland working in technical support. Charlie is the author of “Turbo Pascal Programming 101”. After getting to know Charlie, I knew he was a one-of-a-kind developer, author and human being. I asked Charlie to join me in Borland Developer Relations. During the development of Delphi we knew that we would need great documentation, example programs, and to rev up our global Turbo Pascal community to be ready for the launch of Delphi. Charlie used his unique talents as a developer and an author to create his “Delphi Unleashed” book and also helped the team with the documentation. Charlie and I traveled the world together to present Delphi to customers, at conferences and meet with partners. While we were both children of the 60’s wearing comfy clothes (I wear Tie-dye t-shirts almost every day), on a trip to Madrid Spain we met with the government technology team working to create Spain’s early eBanking infrastructure. Nestor Miranda, head of the Borland office in Madrid, asked us to wear suits for the meeting because we were going to meet the head of the Bank of Spain. Along with two of Charlie’s programming books here is, probably the only time, a picture of Charlie and me at our hotel before we left for the meeting.

While I don’t travel, write, present and program nearly as much as I did during my 30+ years at Borland International, Inprise, Borland Software, CodeGear and Embarcadero, I have the code, pictures, videos and great memories that keep me smiling. I still program using Delphi as a semi-retired software engineer. Programming keeps me young, happy and alive!

Additional Information (with links)

Why the Name “Delphi”? By Danny Thorpe https://web.archive.org/web/20100411053213/https://edn.embarcadero.com/article/20396

Interview with Anders Hejlsberg, Chief Architect of Delphi conducted by .EXE Magazine editor Will Watts from 1995 https://web.archive.org/web/20200213131815/https://www.theopenforce.com/2020/02/anders-hejlsberg-delphi-1995.html

Delphi 1.0 Reviewers Guide http://web.archive.org/web/19961221161914/http://www.borland.com/delphi/delphi1.0/guide/8.1.1.html

Delphi Product Definition 3rd Draft (incomplete) May 13, 1993 by Zack Urlocker https://web.archive.org/web/20210928095512/https://edn.embarcadero.com/article/32971

Visual Component Library First Draft – May 24, 1993 https://web.archive.org/web/20090309083617/http://edn.embarcadero.com/article/32975

Delphi 1.0 launch demos source code, launch script – provided by Anders Hejlsberg https://web.archive.org/web/20210513011702/https://edn.embarcadero.com/article/32977

Delphi 1.0 Quick Info Guide and Features for Delphi and Delphi Client/Server editions https://web.archive.org/web/20010618130820/http://www.borland.com/delphi/del1/quinfo.html

Delphi 1.0 Fact Sheet https://web.archive.org/web/20010525055617/http://www.borland.com/delphi/del1/dpfctsht.html

Delphi 1.0 Client/Server for Windows 3.X Quick Info Guide https://web.archive.org/web/20010525055623/http://www.borland.com/delphi/del1/csqinfo.html

50 Years of Pascal and Delphi by Marco Cantu https://blogs.embarcadero.com/50-years-of-pascal-and-delphi-is-in-power/

Delphi Wikipedia https://en.wikipedia.org/wiki/Delphi_(software)

Delphi Wiki (Fandom) https://delphi.fandom.com/wiki/Delphi_Wiki

Brian Long’s Delphi & RAD Studio Easter Eggs http://blong.com/Undocumented/EasterEggs.htm#Delphi

What’s New in Delphi (and RAD Studio) version links and (release dates):

How to Become a Better Presenter – some advice and a partial book list

In decades of giving and attending thousands of presentations, I’ve learned a thing or two about how to give a talk, a webinar and a technology demonstration. Back in 2015, while I was working for Evans Data in Santa Cruz, I created a blog post “Most Everything I learned about presenting I learned from Jerry Weissman“, on the DevRelate site. In that post I covered some of the tips, tricks and techniques that I’ve learned (and co-opted from other great presenters) that helped me improve my presentation skills.

If you are looking for a few quick presentation tips, the following are some of my top suggestions:

  • Practice your presentation a few times to understand the pacing (if there is a time limit). If you have time, record the presentation and then watch it several times.
  • Get rid of distractions by turning off notifications, alerts, social/team apps, email, calendar, mute your phone, and set do not disturb on your phone/fitness band.
  • If you need to keep hydrated, drink still water that is room temperature. Also, use the bathroom before your presentation. Avoid alcohol and too much caffeine.
  • Watch talks by other great presenters from inside and outside of your field of expertise.
  • Use more than just a blizzard of bullet points. You can also use quotes, images, short video clips, visualizatons and other ways to avoid a presentation full of text.

There are a number of great books that can provide additional ways to improve your presentation creation, delivery and distribution. The following are just a few books you might consider owning.

The Worst and Best Delphi Programs I Ever Created

My Worst Delphi Program

The worst “on-the-fly” (pun intended) Delphi demo I ever wrote was a thread based sort program (Dreaded Sorts). I created the code on the flight from San Jose to Seattle for the Microsoft Windows 95 launch. The launch took place on Thursday August 24, 1995 on the Microsoft campus. Multiple software vendors, including Borland, demonstrated their support for Win95 in tents on the lawn.

During the flight I realized that I didn’t have a Delphi 2 demo that took full advantage of Win95’s 32-bit OS and other features. So, for the duration of flight (approximately 2 hours) I hacked together a 32-bit VCL application using a pre-release version of Delphi. Note: the program still compiles and runs using the latest release of Delphi 11 Alexandria!

Charlie Calvert included my “Dreaded Sorts” program in his Delphi 2 Unleashed book (pages 240-243). The source code for the project can be found on the book’s CD.

To introduce my program Charlie wrote:

“The program shown in Listing 7.9 was written by David Intersimone, a fellow Borland employee. The code has some historical significance, as it was written on the flight to the Windows 95 launch in Seattle. The fact that David was able to do some serious coding on a West Coast shuttle flight shows that almost anything is possible if you set your mind to it!”

The Original Dreaded Sorts Source Code (THSORTS.DPR)

The original name of my on-the-fly demo was THSorts. I eventually called it my “Dreaded Sorts” program when Charlie Calvert asked to include it in his Delphi 2 Unleased book. Take a look at the source code below. You’ll see that it contains many bad programming practices and hacks that I used on the flight to get the demo working. Examples of bad programming practices include using magic numbers, offset coordinate hacks, hard coded array size (Delphi now supports dynamic arrays), changing the caption for the input error message instead of a Message Box popup, etc. The most glaring warning was the note at the top of the main form’s source code: “This example program shows how to set a thread’s priority. Don’t use Canvas property in program like this! Not unless you also use the TThread object and its Synchronize procedure!”

MAIN.PAS (note: you can download a zip file of the complete program)

unit main;

{
  Dreaded Sorts
  copyright (c) 1996 by David Intersimone

  This example program shows how to set a
  thread's priority. Don't use Canvas property
  in program like this! Not unless you also
  use the TThread object and its Synchronize
  procedure!
}
  
interface

uses
  SysUtils, WinTypes, WinProcs,
  Messages, Classes, Graphics,
  Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, Buttons;

const
  aMax = 300;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label2: TLabel;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    BitBtn1: TBitBtn;
    BubbleTrackBar: TTrackBar;
    QuickTrackBar: TTrackBar;
    procedure Button1Click(Sender: TObject);
  private
    T1 : THandle;
    T2 : THandle;
  end;

var
  Form1: TForm1;
  a,b : array[0..aMax-1] of integer;
  numItems : integer;

implementation

uses
  secform, thform;

{$R *.DFM}

procedure BubbleSort(var ia:array of integer; items: integer);
var
  i,j,t : integer;
  DC: HDC;
begin
  DC := GetDC(Form2.Handle);
  for i := items downto 0 do
  begin
    for j := 0 to items-1 do
      if ia[j] < ia[j+1] then
      begin
        t := ia[j];
        SetPixel(DC, ia[j+1]+5, j+1+5, clBlue);
        SetPixel(DC, ia[j]+5, j+5, clBlue);
        ia[j] := ia[j+1];
        ia[j+1] := t;
        Setpixel(DC, ia[j+1]+5,j+1+5, clYellow);
        Setpixel(DC, ia[j]+5,j+5, clYellow);
      end;
   end;
   ReleaseDC(Form2.Handle, DC);
end;

procedure QuickSort(var ia:array of integer; iLo,iHi : integer);
var
  Lo,Hi,Mid,T : integer;
  DC: HDC;
begin
  Lo := iLo;
  Hi := iHi;
  mid := ia[(Lo+hi) div 2];
  repeat
    DC := GetDC(Form3.Handle);
    while ia[Lo] < mid do Inc(Lo);
    while ia[Hi] > mid do Dec(Hi);
    if Lo <= Hi then
    begin
      T := ia[Lo];
      SetPixel(DC, ia[Lo]+5,Lo+5, clBlue);
      SetPixel(DC, ia[Hi]+5,Hi+5, clBlue);
      ia[Lo] := ia[Hi];
      ia[Hi] := T;
      SetPixel(DC, ia[Lo]+5,Lo+5, clLime);
      SetPixel(DC, ia[Hi]+5,Hi+5, clLime);
      inc(Lo);
      dec(Hi);
    end;
  until Lo > Hi;
  if Hi > iLo then QuickSort(ia,iLo,Hi);
  if Lo < iHi then QuickSort(ia,Lo,iHi);
  ReleaseDC(Form3.Handle, DC);
end;

function BubbleThread(parms:pointer) : LongInt; far;
begin
  BubbleSort(a,numItems-1);
end;

function QuickThread(parms:pointer) : LongInt; far;
begin
  QuickSort(b,0,numItems-1);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i : integer;
  ThreadID : dWord;
begin
  numItems := strToInt(Edit1.Text);
  if numItems <= aMax then
  begin
    form2.free;
    form2 := TForm2.Create(self);
    form2.top := 140;
    form2.left := 2;
    form2.clientheight := numItems+10;
    form2.clientwidth := numItems+10;
    form2.color := clBlue;
    form2.caption := 'Bubble Sort';
    form2.show;

    form3.free;
    form3 := TForm3.Create(self);
    form3.top := 140;
    form3.left := 320;
    form3.clientheight := numItems+10;
    form3.clientwidth := numItems+10;
    form3.color := clBlue;
    form3.caption := 'Quick Sort';
    form3.show;

    Randomize;
    for i := 0 to numItems-1 do
    begin
      a[i] := random(numItems);
      b[i] := a[i];
      form2.canvas.pixels[a[i]+5,i+5] := clYellow;
      form3.canvas.pixels[b[i]+5,i+5] := clLime;
    end;
    T1 := createThread(nil,0,@BubbleThread,nil,0,threadID);
    setThreadPriority(T1, BubbleTrackBar.Position);
    T2 := createThread(nil,0,@QuickThread,nil,0,threadID);
    setThreadPriority(T2, QuickTrackBar.Position);
  end
  else
    Form1.Caption := 'Too Large!';
end;

end.

A Much Better Version of a Delphi Multi-Threaded Sort Demo

A much better version of a Delphi multi-threaded demo shipped in the release version of Delphi 2 (release date: February 10, 1996) is available on GitHub. You can download the Delphi multi threading demo by Bob Ainsbury and Ray Konopka that first appeared at the 1995 Borland Conference.

My Best Delphi Program

The best Delphi program I ever created is one that I haven’t written yet!

Additional Information

Embarcadero Delphi product page – https://www.embarcadero.com/products/delphi

Parts of this post first appeared on my Embarcadero Blog article celebrating the 27th birthday of Delphi – https://blogs.embarcadero.com/happy-27th-birthday-delphi-building-the-future-how-we-get-to-delphi-36/

Remembering the Iconic Windows 95 Launch by Lance Ulanof – https://onezero.medium.com/remembering-the-iconic-windows-95-launch-94cfcf215d50

Delphi 2 Unleased by Charlie Calvert – https://www.abebooks.com/9780672308581/Delphi-2-Unleashed-Calvert-Charles-0672308584/plp

My First Trip to “The Computer Doctor”

The first personal computer I owned was an IMSAI 8080 kit computer that I bought and put together in December 1975.

Putting the IMSAI kit together involved a lot of soldering:

  • Soldered all twenty-two slot S-100 bus connectors onto the non-solder-masked motherboard
  • Soldered the front panel circuit board, Intel 8080 processor board and two 4K static RAM boards (lots of chips, connectors, resistors, capacitors, etc.)
  • Soldered the power supply with its large capacitors
  • Visually inspected all of the boards, motherboard, checked things with a voltmeter.
  • Assembled the Front Panel involved snapping on the cool looking blue and red paddle switches and the power switch, inserting the boards into the S-100 connectors.

It was time to plug in the power cord and turn the computer on for the first time (while crossing my fingers, toes, legs and eyes). When I turned it on, the front panel LEDs did light up, but pressing the stop and reset panel switches did nothing. There was no smoke or smell (always a good sign). I looked again at the boards. I pulled out and plugged back in the boards and tried again. No Joy!

I was a member of the Southern California Computer Society (SCCS) which met monthly at the TRW Space Park campus in Redondo Beach California (Note: at the time I was a real time Data General Nova assembly language programmer for a division of TRW – TRW Data Systems in El Segundo California). The monthly meeting was a place to talk about computers, buy kits, trade parts and keep up to date on what was happening in computing outside of work.

At the next monthly SCCS meeting at TRW Space Park (Redondo Beach), I left the computer with one of the vendors at the Saturday meeting, “The Computer Doctor”, who said he would find any soldering or component problems, get it running and give me a call. A week later, I got the call and the computer doctor said he had found some bad soldering, some solder that had spilled across some of the motherboard and computer board traces. I drove to his house and picked up my IMSAI. The doctor also suggested that I buy a bus terminator board from Godbout Electronics to “quiet” the non-solder-masked motherboard.

I brought my IMSAI back to my apartment, plugged it in, pressed the stop and reset paddle switches and my personal computer was ready for me to put some Intel 8080 instructions into memory and press the Run button. The IMSAI manual had a simple starting machine code program to display the LEDs on the front panel. It also had a “game” example where you had to try and turn the LEDs all off our on as they were changing.

The fun fact is that “The Computer Doctor’s” actual name was George Tate. Some of you remember George Tate as the co-founder of Ashton Tate Software and dBase fame.

I still have that original IMSAI 8080 computer and the last time I took it our and turned it on (a couple of years ago), it still worked.