layout | title | permalink | machines | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
page |
FlickerFree 1.0 |
/disks/pcx86/tools/other/flickerfree/ |
|
FlickerFree was a DOS utility created by Steve Gibson in 1986 that improved common IBM PC display operations. It was reviewed by Peter Norton in the July 1986 Issue of PC Magazine, who described it as "the most fascinating software I've seen for some time." He goes on to say:
FlickerFree is a memory-resident program that solves several problems that muck up display screens: snow, flicker, and lack of speed. The original IBM Color/Graphics Adapter was cursed with an ugly "snow" effect whenever programs wrote directly to the display memory (unless the programs used time-consuming desnowing operations). Fortunately, newer display adapters, such as Compaq's nifty built-in adapter, don’t suffer from snow, but they do sometimes suffer from an even greater pain-in-the-eye: screen flickers when information is scrolled. And all the screens, even with the IBM monochrome adapter, often function much more slowly than they should.
The demo machine below is configured as an IBM PC (Model 5150) with a CGA and 256Kb of RAM. It will automatically
load FlickerFree (FF.COM
) and then run the companion FlickerFree Performance Analyzer (FPA.COM
).
{% include machine.html id="ibm5150" %}
Volume in drive B is FlickerFree
Directory of B:\
FF COM 22330 04-01-86 12:00a
FPA COM 5438 04-01-86 12:00a
FFIX COM 3590 04-01-86 12:00a
FF_HIST 14610 04-01-86 12:00a
README 859 04-01-86 12:00a
5 file(s) 46827 bytes
0 bytes free
From the file FF_HIST
:
-------------------------------------------------------
A brief history of FlickerFree
- or -
A look at the Technology behind "FlickerFreedom".
- or -
Software efficiency is MUCH more important
than raw hardware power!!
-------------------------------------------------------
THANKS TO IBM!
-------------------------------------------------------
Before I begin, I'd like to take a moment to give
my sincere, public thanks and appreciation to
International Business Machines, Inc. (aka IBM) as
the company which created the IBM PC ... and the
tidal-wave phenomenon of that product's success.
FlickerFree, would not exist if the marketplace
created by IBM was any less vital and wonderful.
FlickerFree has the benefit of being designed many
years AFTER the architecture of the PC was cast in
marketing-hardened concrete ... so I have the
advantage of hindsight which IBM never enjoyed.
If here, or elsewhere, I ever appear to be harsh,
acerbic, or "Holier-than-IBM", please remember that
I NEVER STOP BEING GRATEFUL for the opportunities
created by IBM's success with this machine.
-------------------------------------------------------
-------------------------------------------------------
Phase ONE - discovery
-------------------------------------------------------
It began rather innocently.
Like everyone else, I kept reading about all the things
which could be purchased to speed up my "old clunker"
4.77 Mhz 8088 PC. Each passing "enhancement" article
reminded me that OTHER PEOPLE were computing FASTER
than I..... Hmmmm.....
From among all the TURBO Add-In Cards, V20 chips,
faster clock crystals, new motherboards, weird do-
hickies, and the like, one product caught my eye: The
286-EXPRESS CARD from PC Technologies. This excellent
card is the same one also being sold by Victor,
Mountain Computer, as well as several other well-known
companies.
So one of these beauties found its way into the unused
slot-8 of my trusty (rusty) old XT.
WHIZZZZZZZZzzzzzzzzzzzz . . .. ... (hic!)
Sure enough, the RAW PROCESSING POWER of my system shot
up SIGNIFICANTLY, just as I'd hoped, but to my surprise
and consternation, the SCREEN didn't receive NEARLY the
same speed boost as raw number-crunching.
My prior hardware products: The LPS II Light Pen
System for Apple II computers followed by Koala's
GIBSON Light Pen System, demonstrate that I'm a *BIG*
*FAN* of Display Screens. Screens are *REALLY*
important. They're our only WINDOWS into what's going
ON in there!! And SCREEN SPEED MATTERS . . . A LOT!!
I'm also sure that computers should be FAST! I mean
our EXPERIENCE of them should feel light, responsive,
and snappy under our fingers.
A slow screen makes EVERYTHING feel slow ... and dull.
Something was wrong in IBM screenland.
Out came my trusty IBM PC Technical Reference manual --
I hoped to understand where all of my new 80286's
power-juice was going. After all, the finest hardware
in the world is POWERLESS to perform in the face of
inefficient SOFTWARE. . . .
|
\ /
> GULP! <
/ \
|
I couldn't BELIEVE what I found. Did I say inefficient?
Horrifying would be more accurate. . .
The original authors of IBM's ROM BIOS could not have
known just what a phenomenon the IBM PC would become
... so I suppose that no one spent much (or perhaps
any) time worrying about the efficiency of the lower-
level ROM BIOS routines... after all, they WORKED
didn't they???
Yeah, sure.
It's just that no one ever knew HOW MUCH BETTER the
BIOS might have been or could be. The deeper and closer
I looked, the more room for "improvement" I found.
Though I still didn't know it then, the product which
would become FlickerFree ... was well on its way!
-------------------------------------------------------
Phase TWO - a closer look at the issues
-------------------------------------------------------
The Performance Issue:
The original IBM Color Graphics Display Adapter has an
intrinsic hardware limitation which places a FIXED LOW
RATE on display update speed. However, the CRIME is
that the BIOS ROM, which was written with these Color
Adapter limitations in mind, treats the Color and
Monochrome Display Adapters identically, needlessly
reducing the speed of the Monochrome Display output to
the slow speed of the Color Display!!
What's more, many of the newer color display adapters
do not suffer under the "screen static" limitations of
the original CGA, but they are STILL RUNNING UNDER THE
SAME (OLD) BIOS ..... and are therefore not permitted
to function as fast as their better designs allow!!
Finally, this FIXED LOW DISPLAY RATE is NOT TIED to the
speed and power of your computer's CPU chip ... but is
set by the FIXED RASTER SCAN RATE of the display's
sweeping beam. The BIOS only permits a single byte or
word to be written to the display for each horizontal
scan retrace.
Therefore, the addition of more PROCESSING POWER (like
my addition of the PC Technologies 80286) does not
deliver a proportionate increase in screen performance.
Your FASTER MACHINE simply spends a greater percentage
of its time WAITING for the ROM BIOS to permit a single
character to be written to the display... then waits
again for the next one....
-------------------------------------------------------
The FLICKER issue:
-------------------------------------------------------
Scrolling the screen image UP by one line normally
requires the rapid movement of all 4000 bytes of screen
character data. Essentially, EACH CHARACTER on the
screen is advanced FORWARD by exactly eighty locations.
As we've just seen, the Color Adapter's hardware
limitation prevents this mass data movement from being
performed quickly, so the IBM ROM BIOS simply TURNS THE
SCREEN OFF (to black) while the data is all quickly
moved up one line. (What you can't see can't hurt you?)
Since I found the Flickering effect to be extremely
annoying, and was sure you would too, I decided that it
would just have to go. So I invented a completely new
technique for scrolling the screen's data ... which
results in a effectively INSTANTANEOUS VERTICAL SCROLL.
(If you've seen the INFO page, you've already seen that
super-smooth HORIZONTAL SCROLLING can now be done too.)
-------------------------------------------------------
The Color Issue:
-------------------------------------------------------
I'm sure I'll NEVER understand how a computer could be
sold with a Color Graphics Adapter and Color Monitor
... but without any simple, semi-permanent means for
choosing and setting the display's default screen
colors. That's just unbelievable to me.
You've already seen how much nicer ANY COLORS OTHER
than the PC's default "DimWhite-on-Black" appears ...
and you may have already used the on-screen menu to set
up your own preferred screen colors. So enough said.
-------------------------------------------------------
The Inefficient Code Issue:
-------------------------------------------------------
I don't want to be critical of anyone else's work -
especially behind their back, so I'll keep this short,
polite, and a bit white washed:
The video portion (at least) of the standard IBM PC ROM
BIOS was not skillfully written. I don't need to stand
here in judgment, since FlickerFree is the result of
what I consider skillful writing (he said modestly)...
and you have seen the difference for yourself.
-------------------------------------------------------
Phase THREE - implementation of a product
-------------------------------------------------------
So I began dabbling here and there, counting each and
every single "thought" cycle of the PC's 8088 micro-
processor. Even though each "tick" of its clockwork
brain would make a difference of only 210 Billionths of
a second, I knew how quickly they tend to all add up.
(Having waited for your display screen, you know too!)
Every part of this project HAD to be hand-written in
100% machine language. Fortunately (and happily) I'm
one of that dying breed who eats and breathes (and
loves) machine language. I've never been comfortable
tolerating the inevitable performance loss of higher
level languages. I prefer the experience of that
special hand-crafted feeling ... the power, and control
which comes with machine language.
I was gaining ground.
With the new FlickerFree technologies up, working, and
tightly hand-coded for maximum speed and power, I had
two major aspects remaining: User Interface and
Software Compatibility.
I decided to go all out on the user interface. I've
always felt that little things make big differences.
Like the diagonal on-screen wipe.
I didn't just want *MY* menus to explode onto the
screen like so many other products. I wanted something
smoother. After hand-coding about ten "special-
effects" I settled upon the diagonal wipe.
But it wasn't right yet.
The EASY WAY for the menu to operate would have been to
let it "wipe-on" first, WITHOUT the inverse highlight
bars ... and add them AFTERWARD. That would have been
easy. I tried it, and knew it was wrong. The wipe
phase was so smooth and "proper" that the subsequent
sudden appearance of the inverse highlights carried the
impression of an afterthought. So, I did it the hard
way. The menu is completely built (WITH the inverse
highlight bars) "off stage", and only then wiped onto
the screen, complete.
I wouldn't ship it any other way.
What about the horizontal smooth-scroll?? Well I guess
I was just showing off ... but I never get tired of
seeing it slide by!
-------------------------------------------------------
Software Compatibility
-------------------------------------------------------
Boy... there is a nightmare! But I don't suppose I have
to tell you about the mish-mash of today's software
compatibility problems. It's all so technical and
uninteresting that I won't waste your time further,
except to say that fully one third of my time (and two-
thirds of my anxiety!) was devoted to developing the
resident technology behind FlickerFree. Again, I'm
proud of the result and know that it speaks for itself.
*******************************************************
-------------------------------------------------------
So, What's next???
Well, I'm at work on product number two (code name: P-2)
As a paid, registered, owner of FlickerFree, you'll be
receiving early notification of P-2's availability.
I'm as excited about it as I was about FlickerFree ...
and I know you will be too!!
In the mean time, enjoy being FlickerFreed, and thanks
again for you support and your purchase!
Steve Gibson
April, 1986
Irvine, CA, USA
- End Of File -