EDM/2

Meta Index

  In the metaindex of the site you can find links to the articles that were published in EDM/2, sorted by topic.
Some notes:
  • Some articles are referenced under more than one topic.
  • Three of the columns are presented as a whole, the rest are found under various topics.
  • The more general columns, like 'From the Editor', 'News' and 'Off the Beaten Track' are not linked. To read those columns, Read The Past Issues.
  • An overview of 'The Codesmith's Library' can be found in the Bookstore.
  • The most recent articles are at the top. Series are placed according to the date of the last article. Links are provided to all parts.
  • Series that are courses are placed at the top of each topic. They have only one link, to the first article.
Most of the topic names are self-explanatory, but a few could use an explanation:
  • Development - Contains the more general articles about development (languages, tools, etc).
  • Programming (other) - Articles about programming that belong to the more specialized programming topics (code-protection, multilingual, etc).
  • Software - Reviews and comparisons of software.
  • Miscellaneous - Everything that didn't fit into the other categories, mostly on OS/2's past, present and future.
Last, but not least: comments, suggestions and so on for this page are welcome. You can send them to the EDM/2 editor.

Books C Programming C++ Database Development
Device Drivers Internet Java Networking OS/2
PM Programming (Other) REXX Software
WPS
Miscellaneous

OpenGL Introduction to PM OOPS Avenue

top C Programming
Introduction to C Programming.
Part 1
An online course which will introduce you to the art of C Programming. The series has ten parts which are all reachable from the first one. Best read in sequence.
Building a REXX DLL in C This article shows how to build a DLL in the C programming language containing functions that can be called from REXX.
12 Common C Errors In this list 12 common pitfalls that are made in C. The checklist is meant as a list of things for beginners to avoid.
Stupid Enumeration Tricks Some things to do and some things not to do with C and C++ enumerations.

top C++
OOPS Avenue More articles about C++ can be found under the topic OOPS Avenue, an overview of Gordon Zeglinski's column from early years.
Introduction to C++ Programming
Part 1
An online course which will introduce you to the art of C++ Programming. The series has thirteen parts which are all reachable from the first one. Read them in sequence.
V - A Free C++ Graphical User Interface Framework An introduction to V, a cross-platform GUI framework that has recently been ported to OS/2.
VisualAge C++ Version 4.0 A review of the latest C++ compiler from IBM
Programming the OS/2 File Dialog in C++ C programmers have had this great dialog for opening and saving files, but with C++ programming, you can make things even easier.
A Progress-indicating Status Line in C++
Part 1 Part 2 Part 3
How to build a progress indicator in C++.
Part 1: The progress-indicating status line and the needed message handler.
Part 2: A simple base file class which is wrapped around the API-calls and a derived class which sends status messages to a given status line.
Part 3: The use of them in a sample application.
Using Semaphores in C++ How to embed semaphores in a C++ wrapper in order to simplify and bullet-proof the use of them.
Encapsulating Extended Attributes
Part 1 Part 2
Encapsulating the normally tedious and complicated extended attributes.
Part 1: How to program extended attributes with the OS/2 API.
Part 2: The design of a C++ frame work called "Your Extended Attribute Helper" (YEA.H for short) and its free class library
Stupid Enumeration Tricks What to do and not do with C/C++ enumerations.
C++ Encapsulation of PM The purpose of this article is to illustrate some of the concepts of PM encapsulation and some of the methods that can be used to implement this encapsulation.
Thread Safe STL An Allocator Class For The C++ Standard Template Library That Uses The OS/2 API Memory Functions
Hunting Memory Bugs Some interesting C++ classes to deal with aggravating memory overwrite bugs.
C++ Compiler Review
Part 1 Part 2 Part 3
A review of C++ compilers for OS/2
Part 1: Watcom C/C++ 10.a and IBM's Visual Age C++ (C-Set++3.0)
Part 2: Borland C++ 2.0 and Metaware High C/C++ 3.32
Part 3: Watcom C/C++ 10.5
Debugging Classes in Borland C++ Some solutions to problems arising when debugging code.
Writing a C++ Thread Class This article will introduce a basic hierarchy for encapsulating thread specific variables and other thread creation/maintenance related details.
A Review of C++ Compilers This article examines various real-world aspects of the primary C++ compilers available for OS/2: Borland C++ 1.0; Watcom C/C++ 9.5; IBM CSet++ 2.0 and EMX/gcc 0.8g.

top Database
Introduction to Relational Database Design This article will teach the basis of Relational Database design, so the readers can make more ambitious projects using mSQL or any other Relational Database under OS/2.
Installing and Configuring the Sybase SQL Anywhere Server for OS/2 A detailed explanation of which (standalone) version you should get. How to install and configure it, and what problems (with solutions) could arise. Also some info on the architecture of the database server.
RAD for the Web The intent of this article is to leverage w3-msql as a RAD tool for the web. An Application Template that you can use and reuse is developed, and we will also learn how to create and work with function libraries, allowing code to be reused between web pages from different web applications built with w3-msql.
Accessing Databases Using Java and JDBC How a Java Application, Applet or Servlet can access data stored in relational databases using the JDBC API.
mSQL Revisited An update on the mSQL Database Server, with new features and syntax of mSQL-2
An introduction to mSQL A short history of the mSQL Database Server. How to install and configure it, together with the building of a test table and some programs to manipulate data in that table.

top Development
A Programmer's Editor Shootout We have reviewed a lot of editors in the past. An overview can be found here
XDS Oberon Reviews of a commercial compiler/debugger/profiler package which enables developers to build Oberon-2 and Modula-2 apps for OS/2.
A Discussion of Oberon A short history, system overview and OS/2 implementations of the Oberon language/operating system.
A Description of the Oberon-2 Language An overview of the syntax of the Oberon-language.
Modula-2 Legacy Code: Problems and Solutions Technical problems(along with some possible solutions) that may arise in the process of:
(a) migration of the source code to a modern 32-bit ISO Modula-2 compiler
(b) conversion of the source code to an industry standard language, such as C or C++
VisualAge for Java Professional An overview of the Java branch in the Visual Age tree.
A Brief Summary of Visual Prolog 4.2 for OS/2 A short description of Visual Prolog 4.2. A GUI-Builder for Prolog,the number-one language for AI, Expert Systems, etc..
Software Conversion, Translation and Migration Automating the Construction of Application Generators
This technical note describes a powerful new kind of software utility which can reinforce the efforts of programmers and software developers by providing an unparalled level of programming automation.
OS/2's Symmetrical Multiprocessing Demystified Some light on the details surrounding OS/2 SMP programming.
ICAT: The New Remote Source-code Debugger for OS/2 An introduction to this incredibly capable new debugger from IBM.
Using The GNU Configure Scripts In OS/2 Configure scripts are a key tool in permitting the automatic configuration of source code among a wide divergence of Unix systems. Extending their use to OS/2 opens the possibility of much more high quality and easily available software than we might otherwise enjoy.
Using Modula-3 Under OS/2 How to try out the OS/2 Modula-3 port done by Klaus Preschern.
A Look at EPM 6.0x The new release of this venerable old programmer's editor.
A Brief Look at Personal REXX An overview of Personal REXX by Quercus Systems.
Building Smaller OS/2 Executables
Part 1 Part 2
Series of articles describing five simple steps you can take to get your OS/2 executables down to size.
Part 1: Compressing resources and Linker possibilities
Part 2: Changing compilers, Compiler switches and API wrapper functions
Porting STEP02 to ICLUI This article describes the translation of Gavin Baker's STEP02.C to the IBM's C++ libraries for PM (ICLUI).
A Review of Personal REXX for OS/2 An indepth review of Quercus Sytems Personal REXX.
Getting Started with EMX/GCC Here is a quick conversion of the standard document, detailing how to get EMX and GCC up and running on your system.
Reviewed Editors The SemWare Editor
CodeQuill version 1.0
Program Editor V2
FTE
Andy's Editor
Boxer
MED
Kon
SmallEd 1.45
RimStar Professional 4.0
Preditor 3.0
Visual SlickEdit 2.0

top Device Drivers
A Note on the OS/2 Warp Boot Sequence More details on the Warp boot sequence.
SMP Considerations for OS/2 Device Drivers The tale of four areas of concern when writing drivers for OS/2 that may be used in an SMP environment.
Inside the OS/2 Kernel An expedition into the little-seen but fundamental workings of the system kernel.
High Resolution Timing Under OS/2 Various options for how to get access to timers, including using Timur Tabi's timer device driver for high resolution.
The Case of the Invisible Corpse A story about debugging in the OS/2 environment. Recount of a highly controversial tale of OS/2 debugging in a way never seen before.
SMP - Symmetrical Multiprocessing What it takes to write fast and safe SMP code for OS/2.
(Note: the information in here about SMP and drivers may not be correct)
ICAT: The New Remote Source-code Debugger for OS/2 An introduction to this incredibly capable new debugger from IBM.
From Hello World to Real World
Part 1 Part 2 Part 3 Part 4 Part 5 Part 6
A very hot subject in OS/2 programming is the writing of a device driver. Here is a how-to.
Part 1: The Driver
Part 2: Putting your driver to work
Part 3: Passing Your Own Data To and From Your Device Driver
Part 4: Writing a Device Driver for your own Data Acquisition Card
Part 5: Making I/O Calls
Part 6: Interrupt Processing
Adventures in Kernel Debugging This article discusses the use of the OS/2 Kernel Debugger (KDB), an essential tool for anyone interested in the internal workings of OS/2, or with a need to debug a device driver or file system driver.
32-Bit I/O With Warp Speed How to circumvent the systems I/O-handling and give the application direct I/O-management.
OS/2 Installable File Systems
Part 1 Part 2 Part 3
This series explores the IFS API in depth with working examples in order to take the mystery out of writing them.
Part 1: A brief overview of the IFS concept to give a feel for what's involved in writing one.
Part 2: The code that does initialization and communication between ring 0 and ring 3.
Part 3: Problems with the code and solutions for them.
OS/2 Presentation Drivers in a Nutshell A brief introduction to the Presentation Drivers that provide OS/2's device independence.

top Internet
Using TCL and cgi.tcl to Create and Maintain your Web Page This article covers some basic TCL syntax, some cgi.tcl usage and finally some examples and hints on how to get the most from these tools in maintaining static Webpages.
Inet 101
Part1 Part2 Part3 Part4
A short series of basic articles on the Internet, providing an overview of how to use basic Internet tools and applications.
Part 1: A brief history of the Internet
Part 2: Electronic Mail Basics
Part 3: The basics of file transfers
Part 4: The World Wide Web
RAD for the Web The intent of this article is to leverage w3-msql as a RAD tool for the web. An Application Template that you can use and reuse is developed, and you will also learn how to create and work with function libraries, allowing code to be reused between web pages from different web applications built with w3-msql.
Java Servlet Programming in OS/2 Creating a server-side application (in Java). In this case the HttpServlet for the Lotus Domino Gowebserver
Designing Web Pages with Home Page Publisher 2.0 An indepth review of Home Page Publisher 2.0
InJoy Internet Dialer V1.1 A hard look at one of the premier dialers of the OS/2 Internet community.
The Internet Adventurer An in-depth review of the Internet Adventurer, a "suite"-program for the electronic highway.
The Service-Oriented Home Page Primer Some thoughts and ideas about the design of a website.
OS/2 E-mail Client 3-Way Review Review of the top three most popular e-mail programs in the OS/2 market, with a large comparison along the way.
Using OS/2 as a Platform for a Web Server An introduction to using OS/2 as a web server platform.
Sending Mail with REXX Sending email to a list of addresses using REXX, SMTP, and TCP Sockets.

top Java
Creating GUI Applications Using Java and mSQL How to build a Java GUI application that accesses an mSQL database and some hints on how to design this kind of application using Visual Age for Java 2.0 as the IDE.
Java Servlet Programming in OS/2 Creating a server-side application (in Java). In this case the HttpServlet for the Lotus Domino Gowebserver
Accessing Databases Using Java and JDBC How a Java Application, Applet or Servlet can access data stored in relational databases using the JDBC API.
VisualAge for Java Professional An overview of the Java branch in the Visual Age tree.
Introduction to Java Remote Method Invocation (RMI) The basics of Java RMI (e.g., layers, rmic, registry, etc.) and how to apply and use it to develop distributed computing applications through examples.
Grinding Java
A series of articles about Java
Part 1: An Introduction
Part 2: Enhancing the AWT
Part 3: Back to Basics
Part 4: Searching the WWW
Part 5: Dynamic Java
Part 6: Beans Components
Part 7: Class Files and The VM
Part 8: Distributed Java
Part 9: Real World Java
Introduction to Java How to install Java, check it out, and write a couple of simple applets.

top Networking
OS/2 Routes
Part 1 Part 2 Part 3 Part 4 Part 5
This entry and intermediate level articles are dedicated to network related issues.
Part 1: Shared Nothing
Part 2: Network Protocols
Part 3: TCP/IP-1 IP
Part 4: TCP/IP-2 TCP,UDP,ICMP
Part 5: TCP/IP-3 PPP Automation
Plugging Into OS/2 Socket Programming
Part 1 Part 2 Part 3
A series of articles about socket programming.
Part 1: An introduction to the basic functions in the socket API.
Part 2: Some more about the socket interface API functions. In particular, the socket utility functions.
Part 3: A more advanced client-server setup.
TCP/IP Socket Programming in REXX This article shows how to write programs in REXX that access TCP/IP sockets.
Beginning Client/Server Programming: Named Pipes This article is an introduction to client server applications, and their interface in OS/2.

top OS/2
Implementing Flyout Menus in OS/2 How to construct Windows-style jumping menus in an OS/2 application.
A Warped RCS/CVS HowTo In fine Linux style, a step-by-step "HowTo" on installing RCS and CVS for OS/2.
OS2LDR and OS2KRNL
The Secret Handshake
In which we reveal a previously unknown API between two of OS/2's most essential system components.
A Keystroke Recorder An article on recording and playing back keystrokes, using IBM's OCL.
A Note on the OS/2 Warp Boot Sequence More details on the Warp boot sequence.
Programming Dynamic Job Properties Under OS/2 How to extend your printing to use dynamic job properties.
SMP Considerations for OS/2 Device Drivers The tale of four areas of concern when writing drivers for OS/2 that may be used in an SMP environment.
Memory-Mapped Files in OS/2 Building a small library that implements the use of Memory Mapped Files in OS/2. With some explanation about memory-mapped files and their presence in OS/2
Managing DOS Settings Accessing and setting DOS settings programmatically is the topic in this article.
Measuring CPU Usage Several techniques to measure the workload on the CPU, which can be used to build a measurement application.
Inside the OS/2 Kernel An expedition into the little-seen but fundamental workings of the system kernel.
Adding syntax highlighting to EPM Adding automatic syntax generation and/or syntax colouring to EPM 6, IBM's programmable 32bit PM text editor. The language used is Oberon, a descendant of Pascal and Modula.
OS/2 v4.0 Notebooks A simple process of creating an OS/2 v4.0 style notebook.
High Resolution Timing Under OS/2 Various options for how to get access to timers, including using Timur Tabi's timer device driver for high resolution.
The Case of the Invisible Corpse A story about debugging in the OS/2 environment. Recount of a highly controversial tale of OS/2 debugging in a way never seen before.
Rebooting OS/2 How to reboot OS/2 programmatically.
Thread Safe STL An Allocator Class For The C++ Standard Template Library That Uses The OS/2 API Memory Functions
SMP - Symmetrical Multiprocessing What it takes to write fast and safe SMP code for OS/2.
(Note: the information in here about SMP and drivers may not be correct)
Adding BLDLEVEL information to executables The BLDLEVEL (Build Level) is a signature that OS/2 modules (*.EXE and *.DLL files) contain, which allows one to easily identify the version and/or build date of that modules. The steps to add this signature are explained in this article.
Digital Sound & Music Interface for OS/2 How to program for this exciting method of adding multiple channels of sound to applications, even for sound cards which only support one.
Inside the High Performace File System
Part 1 Part 2 Part 3 Part 4 Part 5 Part 6
After finishing working your way through this series you will have a detailed knowledge of the structures of the HPFS.
Part1: Preface
Part 2: Introduction
Part 3: The SuperBlock and the SpareBlock
Part 4: Fragmentation, Diskspace Bitmaps and Code Pages
Part 5: B-Trees, DIRBLKs, and DIRENTs
Part 6: FNODEs, ALSECs and B+trees
From Hello World to Real World
Part 1 Part 2 Part 3 Part 4 Part 5 Part 6
A very hot subject in OS/2 programming is the writing of a device driver. Here is a how-to.
Part 1: The Driver
Part 2: Putting your driver to work
Part 3: Passing Your Own Data To and From Your Device Driver
Part 4: Writing a Device Driver for your own Data Acquisition Card
Part 5: Making I/O Calls
Part 6: Interrupt Processing
Adventures in Kernel Debugging This article discusses the use of the OS/2 Kernel Debugger (KDB), an essential tool for anyone interested in the internal workings of OS/2, or with a need to debug a device driver or file system driver.
Encapsulating Extended Attributes
Part 1 Part 2
Encapsulating the normally tedious and complicated extended attributes.
Part 1: How to program extended attributes with the OS/2 API.
Part 2: The design of a C++ frame work called "Your Extended Attribute Helper" (YEA.H for short) and it's free class library
Multimedia I/O Procedures About I/O procedures (aka IOProcs), part of OS/2's complex multimedia system.
Plugging Into OS/2 Socket Programming
Part 1 Part 2 Part 3
A series of articles about socket programming.
Part 1: An introduction to the basic functions in the socket API.
Part 2: Some more about the socket interface API functions. In particular, the socket utility functions.
Part 3: A more advanced client-server setup.
A Look at EPM 6.0x The new release of this venerable old programmer's editor.
Inside INF Presenting an overview of the OS/2 INF/HLP file format in such a manner that a cursory read will leave the reader with a general idea of the file format.
Gearing Up For Games
Part 1 Part 2 Part 3
Some technical information you need to know in order to write games under OS/2.
Part 1: Dive and the Canvas Class.
Part 2: Palettes and PCX.
Part 3: Threads, semaphores and an approach to sprites.
32-Bit I/O With Warp Speed How to circumvent the systems I/O-handling and give the application direct I/O-management.
IPC Between DOS Processes Pipes is one of three forms of interprocess communication (IPC) supported by OS/2, and the only one that can be used in connection with DOS processes.
Reducing the Code Load How application code enters memory, the performance issues involved and some techniques and a new development tool designed to optimize the process.
RMX-OS2: An In-Depth View
Part 1 Part 2 Part 3 Part 4
A series of articles describing ReMote eXecution for OS/2 - RMX-OS2, or simply RMX.
Part 1: Overview.
Part 2: Implementing the Remote Procedure Calls.
Part 3: Replacing the Local Procedure Calls with Remote Procedure Calls.
Part 4: Starting the remote application.
Building Smaller OS/2 Executables
Part 1 Part 2
Series of articles describing five simple steps you can take to get your OS/2 executables down to size.
Part 1: Compressing resources and Linker possibilities
Part 2: Changing compilers, Compiler switches and API wrapper functions
KEYBOARD.DCP File Format This article describes the OS/2 2.x KEYBOARD.DCP file format.
Controlling Yourself: A Framework for Configurable Options This article discusses an approach to uniform management of option sets that may reside in a profile (INI file) or on a file's extended attributes (EA's).
Resources and Decompiling Them Extracting resources from EXE- and DLL-files.
Using SYSLEVEL Files in Your Applications Creating SYSLEVEL-files to set your application's version number and maintenance level.
Making Noise with MMPM/2
Part 1 Part 2
An overview of MMPM/2 which introduces programming for multimedia using the REXX language, which is sufficient for many cases.
Part 1: Overview, Media Control Interface and using the MCI from REXX
Part 2: Limitations of REXX, EMX-considerations, Two ways of programming, MMPM/2 System Values and the MMIO Subsystem.
Adding Sounds to Your OS/2 Application "How can I add sound to my program in the shortest amount of time possible without trudging through the enormous and very complex MMPM/2-subsystem?"
OS/2 Installable File Systems
Part 1 Part 2 Part 3
This series explores the IFS API in depth with working examples in order to take the mystery out of writing them.
Part 1: A brief overview of the IFS concept to give a feel for what's involved in writing one.
Part 2: The code that does initialization and communication between ring 0 and ring 3.
Part 3: Problems with the code and solutions for them.
Using OS/2 2.x bitmap files This article discusses the OS/2 2.x bitmap file format and how to use it in your applications.
Customizing the Enhanced Editor This article will cover custom configuration of your editor using this toolkit and - through examples - provide you with some nice additional features such as file autoloading and positioning and keyboard undo.
The Help Manager and Online Documentation Article about the creation of online Help and/or online Books.
DOS Development Tools Under OS/2 Developing for DOS with OS/2 tools.
OS/2 Presentation Drivers in a Nutshell A brief introduction to the Presentation Drivers that provide OS/2's device independence.
The Unofficial Guide to the Palette Manager An excellent introduction to the mysterious black area of OS/2 programming, the 256 colour palette.
Advanced GPI: Retained Segments and Transformations Learn how to use retained graphics in OS/2, and how this comes in extremely handy for certain types of programs.

top PM-Programming
Introduction to PM Programming More articles on PM progamming (especially the basics) can be found under the topic Introduction to PM Programming, an early years column in which Gavin Baker and Larry Salomon, Jr. explore the basics of PM programming.
Mnemonics in Dialog Boxes How to implement the use of Mnemonics in static text controls under OS/2
Calling PM APIs from AVIO Sessions A way to call PM APIs from an AVIO-session, so you can start programs with the attribute WINDOWCOMPAT as PM-sessions.
Adding syntax highlighting to EPM Adding automatic syntax generation and/or syntax colouring to EPM 6, IBM's programmable 32bit PM text editor. The language used is Oberon, a descendant of Pascal and Modula.
Split Views and Toolbars Some techniques which can be used to build PM applications with more-or-less modern user interfaces. In this case adjustable split views and toolbar(s).
OS/2 v4.0 Notebooks A simple process of creating an OS/2 v4.0 style notebook.
Dynamic Control Formatting How to make your controls dockable.
Disabling a Window Rectangle) How to disable a window, and why to do this.
Notebook Key Processing A short tutorial on how to process key strokes better in notebooks.
Fitting a Notebook into a Dialog How to create dialog-based notebooks.
Hooking: TSRs Invade PM This article will introduce PM system hooks, giving tips along the way to allow you to get your hands dirty without having to stare at the boot logo all day long.
Bubble help The hows and whys of bubble help for PM applications.
OS/2 Frequently Asked Questions A number of topics that revolve around popular misconceptions or obscurities related to PM programming.
Building an Editor
Part 1 Part 2 Part 3
How to build a small editor using the MLE control
Part 1: Custom Controls.
Part 2: File handling.
Part 3: Font changing.
Easy Buttonbars A very simple approach to build a buttonbar.
The Design and Implementation of VIOWIN
Part 1 Part 2 Part 3 Part 4 Part 5 Part 6 Part 7 Part 8
This series describes the design and implementation of VIOWIN, a library that implements a subset of the Win APIs provided by PM for use in fullscreen sessions.
Part 1: Data Structures Anchor Block, Class Information, Window and Message Queue.
Part 2: Keyboard device monitor.
Part 3: Remaining Functions Classes, Windows, Messages
Part 4: Window Management
Part 5: Rest of the base library Timers, Resources, Drawing, Cursors
Part 6: VWWC_ENTRYFIELD class Utility Functions
Part 7: VWWC_STATIC classStatic Controls
Part 8: VWWC_BUTTON class Button Controls
The Infinitely Floating Spinbutton How to create a spinbutton that handles an infinite range of undetermined values.
Sprites and Animation
Part 1 Part 2 Part 3 Reprise
The design and implementation of a sprite library; using the sprite library for animation is briefly discussed.
Part 1: Basic library design;Drawing, masking and moving a sprite
Part 2: Basic library design;Background and work-area and delving into the code itself.
Part 3: Animating a set of sprites
Reprise: Necessary changes to implement z-ordering within the library
Writing a Direct Manipulation Spy A PM application which creates a "standard window" and within that a container window is created as a child of the client window. The container is initialized in detail view.
Threads in PM Applications This article attempts to design an architecture that deals with the issue of communication between the user-interface and additional threads created by the user-interface
Programming the Container Control
Part 1 Part 2 Part 3
This is a multi-part series on how to program the container and will describe the container control from a developer's perspective as well as introduce some of the basic programming concepts that can be used in you applications.
Part 1: Introduction and programming basics.
Part 2: The tree view and a sample
Part 3: Detail view, direct editing and sample upgrading.
C++ Encapsulation of PM The purpose of this article is to illustrate some of the concepts of PM encapsulation and some of the methods that can be used to implement this encapsulation.

top Programming Other
The Anon CVS Bazaar
Part I
Part II
A series of articles on CVS, a source code control system which may figure prominently in future OS/2 development efforts.
Part 1: Introduction and History
Part 2: Branches, Source file keywords, Accessing revision logs and more
The Partition Table A way to read and study the partition tables.
A Fast and Efficient Solution to the Backpack Problem The backpack problem, and some NP-complete variations of this problem, and discussion of some solutions.
Safe Document Handling How do you ensure that when your user handles data, your program keeps it completely safe, even in the event of crashes?
Let's Talk About... Singleton A discussion of the issues involved in implementing Singleton classes, and some possible solutions.
Real Glass A look at some traditional and some better ways to achieve realistic looking glass effect.
Multilingual Resources What is needed to give the user a language-choice for the application on the desktop .
Manage Your Configuration Files and Data An outline of the steps required to set up configuration and initialization data for your application.
Hunting Memory Bugs Some interesting C++ classes to deal with aggravating memory overwrite bugs.
Adding Native Compression To Your Application Two DLLs and an article on how to add compression to your application's file saving and loading.
Watermarking Your Printouts Watermarking in OS/2 and a brief coverage of topics such as color use, fonts, graphics boundary determination, and rotational transformations.
Coding for Dollars: Copy Protection and Prevention This article will attempt to develop code that will enable an application to keep track of the number of licenses available and prevent unauthorized copying of the application.

top REXX
Dr. Dialog How to install and use Dr. Dialog, the Rexx GUI-builder.
Building a REXX DLL in C This article shows how to build a DLL in the C programming language containing functions that can be called from REXX.
A Look at OREXX A commentary on poly.cmd, introducing concepts from ORexx as needed. Poly.cmd is a polynomial class of objects written by the author.
REXX Inside and Out
Part 1 Part 2 Part 3 Part 4
Some articles about the REXX language.
Part 1: File handling
Part 2:The EDM/2 Rexx Utility Library and the translate() function.
Part 3: Date manipulation
Part 4: Rexx and automation: the interpret function. Some thoughts about "dynamically self-violating code".
Sending Mail with REXX Sending email to a list of addresses using REXX, SMTP, and TCP Sockets.
A Brief Look at Personal REXX An overview of Personal REXX by Quercus Systems.
REXX, The Developer's Best Friend This article focuses on one feature of OS/2 that can really help improve the way you build software, perhaps more than any other - REXX.
Visual REXX Faceoff
Part 1 Part 2 Part 3
Reviews and comparison of three Visual REXX builders
Part 1: Watcom's VX-REXX
Part 2: Hockware's VisPro REXX/Bronze 2.0
Part 3: Hockware's VisPro REXX/Gold 2.03
A Review of Personal REXX for OS/2 An indepth review of Quercus Sytems Personal REXX.
TCP/IP Socket Programming in REXX This article shows how to write programs in REXX that access TCP/IP sockets.
REXX-ercising Your Applications
Part 1 Part 2
Articles about the incorporation of REXX abilities in applications.
Part 1: Creating external functions and executing them from apps; intro to RexxStart()
Part 2: More on RexxStart(), external command handlers and REXX macrospace.

top Software
Designing Web Pages with Home Page Publisher 2.0 An indepth review of Home Page Publisher 2.0
InJoy Internet Dialer V1.1 A hard look at one of the premier dialers of the OS/2 Internet community.
Building a CD Player
Part 1 Part 2 Part 3 Part 4
This series of articles will present the steps necessary to build a simple application that plays audio CDs. The interface will present menus for all possible actions, buttons for the most common action, and display some information about the currently inserted CD, such as the number of the current track and some form of time display (eg. the time remaining in the current track). Finally, dialogs will present and request various information.
The Making of CandyBarZ The author of a popular shareware utility drops by in his little spare time to let us know how he did it (or some of it anyway).
The Internet Adventurer An in-depth review of the Internet Adventurer, a "suite"-program for the electronic highway.
Embellish 2.0 This graphics program gets a thorough first look as the new and old features it offers are examined.
SecureIt v2.0 Protect Your Software Against Piracy, an overview of SecureIt v2.0
OS/2 E-mail Client 3-Way Review Review of the top three most popular e-mail programs in the OS/2 market, with a large comparison along the way.
The Making of WarpTris
Part 1 Part 2
This article is about the concept and design of WarpTris, a small game.
PMView 1.00 Review of the graphics viewer PMView.
ICAT: The New Remote Source-code Debugger for OS/2 An introduction to this incredibly capable new debugger from IBM.
Xit 2.3 A look at the ubiquitous WPS enhancement, Xit.
Partition Magic 3.0 Partition Magic 3.0 as the first review in the new power-user direction of EDM/2.
Under the Scope
Part 1 Part 2 Part 3 Part 4 Part 5
Some software reviews
Part 1: PSTAT PM/2 v5.10 + EditINI
Part 2: Guidelines 3.1j Base Pack
Part 3: Mr. Ed 1.04 + UniMaint 4.0
Part 4: Guidelines 3.2
Part 5: WebExplorer Toolkit + JOT
Visual REXX Faceoff
Part 1 Part 2 Part 3
Reviews and comparison of three Visual REXX builders
Part 1: Watcom's VX-REXX
Part 2: Hockware's VisPro REXX/Bronze 2.0
Part 3: Hockware's VisPro REXX/Gold 2.03
The Making of MineSweeper A very detailed description of the implementation of this old favorite game.

top Work Place Shell
Calling PM APIs from AVIO Sessions A way to call PM APIs from an AVIO-session, so you can start programs with the attribute WINDOWCOMPAT as PM-sessions.
Work Place Shell Programming
Part 1 Part 2 Part 3 Part4
How to integrate an application with the OS/2 Work Place Shell.
PART 1: Creating the SOM IDL module; Compile the IDL code; Make the C++ DLL; Register the new WPS class; Create objects of the new class.
PART 2: The code that needs to be added to the C++ program from part 1; How to write a settings page dialog in C++.
PART 3: Referencing WPS objects from a C++ program; Referencing the EA's attached to a WPDataFile child object; Saving EA's when a file is overwritten.
PART 4: The creation of the ChartFolder class.
Programming the WPS Using the UICL Some shared experiences to easily write applications which are completely integrated into the WPS using the UICL.
WPS Programming the Easy Way
Part 1 Part 2
An introduction to WPS programming
Part 1: Overview of Object-oriented and SOM-programming, the first WPS-class.
Part 2: Expanding the class and improving WPs integration.
Workplace Shell Development 101 Creating a class that can send all the files dropped on the program object to the associated program as a series of parameters.
Utilizing Hooks for Added Capabilities This article discusses what hooks are, what the different types of hooks are, and the uses of some of the various types of hooks.
Writing a Direct Manipulation Spy A PM application which creates a "standard window" and within that a container window is created as a child of the client window. The container is initialized in detail view.
Threads in PM Applications This article will attempt to design an architecture that deals with the issue of communication between the user-interface and additional threads created by the user-interface
Development of a New Window Class
Part 1 Part 2
This article is a multi-part series which will ultimately result in the development of a new window class.
Part 1: Function and design considerations.
Part 2: Implementing the components.
Road Map for the Workplace Shell An introduction to the internal structure of the WPS.

top Miscellaneous
Intel Developer's Forum Some notes on the first Intel Developers Forum, held in San Francisco.
An Interview with IBM About OS/2 What is IBM going to do with OS/2? Some questions for, and answers by Stephanie Rasmussen (IBM Software) and John Albee (IBM PSP).
A Commentary on the IBM Interview A comment on the above interview by the interviewer, Marco J. Shmerykowsky.
OS/2 Observations, Rumors, & Tips from PC Expo This article is essentially a compilation of small tidbits of information that the author picked up as he talked to IBM representatives and a few "OS/2 aware" computer professionals at PC Expo.
OS/2 Warp Game Developer's Seminar A brief report about the author's experiences at that event.

top OpenGL
A Model Viewer
Part1 Part2 Part3 Part 4
The creation of OpenGL based model-viewer for Quake II characters
All About NURBS A description of Non-Uniform Rational B-Spline, their functions and how to use them.
The Utility Libraries An overview of the toolkits that can be used to compile OpenGl programs beside Visual Age.
The Bumpy Road Ahead How the magical effect of fast texture mapping -- without actually using textures -- is done.
Avoiding the Jaggies A simple way of doing antialiasing that in many cases is sufficient, and how to do scene antialiasing.
Questions and Answers Some answers to questions e-mailed to Perry Newhook, and/or placed in the OpenGL mailing list.
Let There Be Lit Things Putting together lighting and texture mapping, with some add-ons
Let There Be Texture Texture mapping in OpenGL
Let There Be Light Lighting in OpenGL
A More Complex Scene How to use the matrix stack to create a more complex scene.
A Simple 3D Application Changing a 2D square into a 3D object.
A Simple Application Creating an OpenGL application to perform some simple drawing.
An Introduction The introduction to the OpenGL series of EDM.

top Introduction to PM-Programming
In the early days of EDM/2, a column was started to help readers on programming Presentation Manager applications. Although it was not intended as a course, we thought it might be helpful to keep them together instead of putting them under the PM-topic. Here they are in order of appearance.
These installments are written by Gavin Baker 1. Introduction and a bare-bones PM application.
2. Processes and Threads.
3. Resources.
These installments are written by Larry Salomon, Jr. 4. A new intro, Events, Resources and Handles.
5. Basic concepts and components of a simple app.
6. The window procedure.
7. Dialog boxes and resource files.
8. The dialog procedures and its controls.
9. The dialog procedure continued and the first window class (WC_ENTRYFIELD).
10. WC_ENTRYFIELD cont., it's messages and associated concepts.
11. WC_LISTBOX class, its use, limitations and messages(some).
12. nameDlgProc() and Listboxes.
13. WC_BUTTON class.
14. Ownerdrawn control and Button control.
15. WC_LISTBOX class.
16. Ownerdrawn capabilities of the WC_LISTBOX class.
17. WC_TITLEBAR and WC_STATIC classes.
18. WC_MENU class.
19. WC_MENU class continued.
20. A sample app. with a menu control.
21. Popup Menus, interacting messages for the menu control and neat possibilities for menus.
22. WC_SCROLLBAR class.
23. The use of scrollbars in an application.
24. The slider classes.

top OOPS Avenue
In the early years of EDM/2, Gordon Zeglinski wrote a column in which he explored various aspects of using C++ for OS/2. Here they are:
OOPS Avenue 1. User Interface Class Library (UICL for short)
2. C-Set++ 2.1 Review.
3. Developing the first version of a queue encapsulation hierarchy.
4. Queues Continued.
5. Drag and Drop.
6. Multi-threading using the IThread class.
7. The profile API and its encapsulation in a group of C++ classes.
8. SOM's OOP modelfrom the SOMobjects Developer Toolkit.
9. The use of SOM to mirror the C++ object.
10. Some benchmarks of SOM vs C++ based objects.
11. Using C++ Objects in SOM.
12. A Look at What's New in SOM 2.1.
13. An Introduction to DSOM.
14. Using C++ In Dynamic Link Libraries.
15. The STL (Standardized Template Library).
16. Direct To SOM (DTS) compiling, a C++ Screen Saver - Part 1.
17. C++ Exceptions.
18. Adding socket support to the iostreams hierarchy.
19. A C++ Screen Saver - Part 2.
20. A C++ Screen Saver - Part 3.
21. A C++ Screen Saver - Part 4.
22. The Java Language.
23. VAC++ NT vs. OS/2 .
24. Fun with IO Streams.
25. Building a Simple Editor Part 1.
26. Building a Simple Editor Part 2.

Feedback Search Top