Re: Ideas that didn't come off
- From: Jon Shemitz <jon@xxxxxxxxxxxxxxxxx>
- Date: Sun, 17 Dec 2006 11:18:58 -0800
Scout wrote:
I do have a Delphi-based invention that I am not willing to share due
to commercial constraints, but I figure that there are lots of Delphi
inventions which sounded good on paper, but which (like mine) didn't
work in practice.
Back in the Turbo Pascal days, I used a discussion BBS that ran on an
Apple ][. (That's where I met my SO, but that's another story.) The
sysop had made a bundle at Atari, and had written his BBS in
assembler, and so got a fair amount of respect from the user
community. He had this dream of writing a multi-user BBS, in 68K
assembler on top of a custom OS, that would be linked, system to
system, so you'd have local discussions and national email. He never
got farther than persuading some people to invest enough to buy a
rather expensive development box, but multi-tasking was on my mind for
a while.
I had written a few state machines, for things like protocol handling
and terminal emulation, and I had the bright idea that a state machine
could be a very efficient multitasker. Instead of doing a preemptive
task switch, which involves saving and restoring registers and
maintaining multiple stacks, you'd just change a single pointer. Now
you're pointing to a different state packet, and the state machine
executes the code for the new task.
This worked just fine, and it was even easy to add cheap IO waits and
task priorities. For a while I thought I had a patentable idea,
although it did turn out that I had just reinvented the wheel.
There were two big problems with the idea, though. One was that
long-running operations had to be manually broken up into a sequence
of states. It's just plain easier to write code that makes blocking
calls and acts like it has the whole system to itself. (A related
problem is that setting the state variable is, in effect, a GOTO, and
the compiler can't catch your careless errors. In practice, this
wasn't a very big deal.)
The second big problem was that I implemented my state names as a
Pascal enum. This meant that adding a new state in 'this' file meant I
also had to go to the Globals file and change the enum, and then make
a matching change to the state table. I write the declarations so the
system wouldn't compile if the enum and the state table were out of
synch, but it did make for a lot of fiddling and (when units came
along) a lot of forced recompilation, as everything depended on the
Globals unit.
--
..NET 2.0 for Delphi Programmers
www.midnightbeach.com/.net
What you need to know.
.
- Follow-Ups:
- Re: Ideas that didn't come off
- From: Lord Crc
- Re: Ideas that didn't come off
- References:
- Ideas that didn't come off
- From: Scout
- Ideas that didn't come off
- Prev by Date: Re: "25 Killer Apps of All Time"
- Next by Date: Re: "25 Killer Apps of All Time"
- Previous by thread: Re: Ideas that didn't come off
- Next by thread: Re: Ideas that didn't come off
- Index(es):
Relevant Pages
|
|