17th March 1994
The intention of this unfinished document was to describe the "Roscoe Connection" application that I have developed using Visual Basic 3.0, Borland 'C' V3.0 in the form of a DLL, and Drift for Windows V1.1.0. The "Roscoe Connection" overlay on the bottom of the Drift screen behaves (ignoring a slight time lag) as if it was embedded in the Drift application window. The goal was to make the user think the "Roscoe Connection" was simply additional Drift facilities.
I decided that the "Roscoe Connection" was the best application to demonstrate, as you can see from the next two pages, it ties together a suite of software I have developed in the last few years. This collection of software is meant to provide a single interface (Drift\Roscoe Connection) to a wide range of database information and functions, including :-
This software development has been concentrated primarily on meeting the needs of the people that assign and despatch service orders to our field staff. Their speed and effectiveness impacts on the productivity of the field staff which ultimately determines the success of the our business. Consequently the challenge has been to been to provide software that lets users access any information, in any suitable format, in the shortest possible time. (I have decided that no transaction can longer than one second to occur). This type of programming, high execution speed with minimal user keystroke and mouse operation has proved to be an interesting challenge.
None of the software developed above has any formal Telecom status and large parts of it were developed on my own time, with some portions of it synthesised with software tools I have purchased privately. All the software described are production systems and are in everyday use at two LAN sites. I am aware of the well founded Telecom objections to regional development of software applications, although I believe I can escape this policy, at least at the semantic level, by claiming everything I have done so far are merely utilities!
I hope this incomplete document provides with for a feeling for the work I have done.
If you are interested in a live demonstration we could arrange a suitable time. If you have time I would be interested in some response to the following:
COMMAND BUTTONS:
WHAT FOLLOWS WAS TO BE A MORE FORMAL DOCUMENT DESCRIBING THE 'WHY' AND 'HOW' AND 'HISTORY' OF THE "ROSCOE CONNECTION" IT IS NOT COMPLETE AND REQUIRES REWRITING, ETC
EXECUTIVE SUMMARY The "Roscoe Connection" is a Windows based program that acts as a front-end for Telecoms SOE Communication package Drift for Windows V1.1.0. The "Roscoe Connection" adds additional functionality and user-friendliness to Drift for Windows as well as providing access to a number of other services. It has been developed locally to meet specific needs but also provides a range of general purpose functions that could perhaps be applied else where.
INTRODUCTION The original DOS version of the "Roscoe Connection" took it's name in part from the name of the commercial program it replaced. This was a commercial communication program released by "Softerm" and was locally identified as the "Host Connection". The Windows\Drift version retains the same name to exploit the good-will the original version had attained.
BACKGROUND (DOS Version) At the time of the design of the Sturt St LAN the preferred method of host connection was via DDN lines hooked up to CS410 boxes. The CS410 boxes allowed access into Horizon, Rass, Dcris, Leopard, etc to be broken up into user groups. Up to four different hosts could be accessed on a single session and the native terminal emulation's of the hosts were translated into a VT100 emulation. Each host required the keyboard and function keys to be remapped separately, consequently the chosen software package provided a series of hot keys macro's that ,hopefully, changed the current host session and the keyboard remapping. The LAN based system replaced the use of Dumb terminals each running in the native emulation of the host, this advance was initially seen as a great step backwards !
Inherent Problems (of the Telecom design) The LAN design had a number of major disadvantages including :-
SOLUTION I identified the problems above as requiring a technical solution. I established that is was possible to interface to the Telnet layer used in our communication protocol. Having proven the technical feasibility of the project I developed , on my time, a VT100 emulator, using Borland C++ which I had purchased as some cost. This program had a number of specific features to overcome the problems listed above. It ran in 27 line mode to provide all the required information for the HP based host. It provided pop-up menus for host access and provided a visual display of which work stations were using which sessions, to allow the best use of our limited number of sessions. Some performance fine tuning was required on my program to give it the equivalent performance of the Softerm software, which I suspect was written in assembler, when running on slow PCS (286). The overall performance of the Roscoe Connection did a lot towards encouraging users to migrate from dumb terminals to the use of LAN workstations.
BACKGROUND (DOS Version) INTRODUCTION of WINDOWS With the introduction of Windows it was important to encourage users to exploit it powerful and productive applications to the full. Unfortunately initially it was not possible to run Windows and access the hosts systems concurrently. Changing from a communications session to a windows session and back again, meant logging out of and back into a number of hosts. Which was a lengthy process assuming on leaving Windows you could actually get an available host session. This process was holding back our migration to being a Windows based site. To solve this problem I enhanced the Roscoe Connection to allow it to startup itself and the required TSRs and the load Windows on top of itself. It was then possible to task swap between Windows and the Roscoe Connection using a hot key, without loss of connectivity. This solution resolved the problems outlined.
INTRODUCTION of DRIFT for WINDOWS The production of Drift for Windows V1.0.5 provided us with the opportunity to seamlessly integrate our host connectivity into the Windows environment. But as this time, and up until the introduction to our site of CDN-B in July 1993, there was no alternative to using the CS410 boxes. As Drift for Windows is unable to support multiple keyboard remapping on a single session it then came down to a choice staying with DOS communication programs or writing a version of the Roscoe Connection to interface with Drift for Windows.
DEVELOPMENT LIFE CYCLE (Roscoe Connection for Windows) This document is the only, apart from the source code, formal statement of the design and intellectual processes involved in the development of the product. The actual development occurred through rapid prototyping. The requirements and specification stages were constantly revisited, consequently this document should not considered as a chronological statement of the program development.
REQUIREMENTS
Concept Exploration
The concept of having a Drift front-end was my own and stemmed as a logical
step from the DOS version of the Roscoe Connection.
Business
Functional
SPECIFICATION
Program screen behaviour "R.C." has to behave like a child window of Drift. Float above the Drift application window without obscuring. Disappear when Drift and itself are not the active application Resize and move itself when Drift resizes and moves. Adjust to different screen resolutions. Drift interaction
General behavior Minimize its overhead on Windows resources Detect if a copy of the program is already running and defer to that copy Detect when the Drift application closes, even if a Drift control is not attached, and prompt the user to close the Roscoe connection
DESIGN Choice of programming language As Drift for Windows supported Microsoft Visual Basic this was the obvious choice. Experience in programming language In the initial stage I had no experience with Visual Basic and no experience with Drift custom controls. Consequently I had to write some test programs to gain experience with both these products.
Program Structure
The program structure as evolved rather than stemming from an original high
level design. The program code modules are as follows:-