IMPRO - An Image Processing Environment for the 80x86 Platform
B.Sc Thesis - 1993
IMPRO is totally a GUI based environment that runs on MS-DOS operating system in which various image processing routines
can be applied to images with ease.
I have co-developed IMPRO with a B.Sc student in my class - Fikret Ballıkaya. Special thanks goes to him
for his contributions.
In 1993, visual software development tools were anything but visual :) Image processing requires some heavy
memory management, pointer arithmetic and fast screen updates. Our best bet was to developed IMPRO from stratch by blending C
and Assembler. A good mix huh ? :)
In those days 640 x 480 x 256 screen resolution was the de-facto desktop standard. We decided to
base IMPRO on that resolution partly because of that and partly due to the fact that higher resolution
graphics cards were so expensive for a student to afford :)
In fact, the development of such a GUI is quite tough if you don't have a pre-built library featuring
mouse, graphics, memory management, disk access, keyboard support, menu and help systems. We had none :)
I have developed all the necessary, very low level routines for mouse, keyboard, graphics, memory management and disk subsytems in 80x86 Assembly Language.
This was real fun.
Since the standard C graphics routines for MS-DOS are not re-entrant, you can not use them in interrupt handlers. If you do, chances
are; a screen mess or a system crash :)
I must admit that Turbo C, Turbo Assembler, Turbo Debugger and Turbo Profiler from Borland were fantastic programs with
which I have developed, debugged and profiled IMPRO for speed and stability.
As you know, when a disk access failure occurs (such as no diskette in floppy) system issues a critical error
handler (such as abort, retry, fail ?). If you do not handle that kind of critical error handlers your GUI can
get very well messy when the systems breaks in and displays such a message.
Well, IMPRO handles critical errors. Ask me how many days I have spent to debug and make it work in front of
the computer with Turbo Assembler & Debugger, PC Intern, Peter Norton's Assembly Language book :)
Memory management for image processing routines were done by using Extended Memory over Expanded Memory. 286 & 386 DOS Extenders
or C compilers such as Watcom C (flat addressing) were available but in fact, we did not have enough time to thoroughly evaluate those products
so I prefered to access Expanded Memory by own routines written in Assembly Language.
During our image processing classes, we have developed numerous command line programs to execute image processing algorithms.
Since IMPRO can spawn other executable programs, we have provided an innovative way to execute and capture the results of those command line programs inorder to provide a very flexible image processing environment.
IMPRO has 40,000+ lines of C and Assembly Code with its own mouse, keyboard, graphics, memory management, menu & help systems, desktop
accessories and error handlers.
It became up and running after doing 4 months (2 developers) of day to night very hard work.
We have done our A level computing homework and defended our B.Sc thesis against a jury.
Reward: Got 4 / 4