Sunday, June 1, 2008

Vault OS Update #22 : An Epiphany

A week ago, after I had spent the night trying to cram FreeBSD onto a 4 megabyte RAM card, I went in the morning before work to an industrial manufacturer down the road to see if I could buy some of the standalone one piece PC terminals they were phasing out.

The terminals were too expensive considering their age ... but I saw something else that stunned me. It immediately caused me to rethink everything I was doing.

Basically, the terminals themselves (CRT based) had worn out before the software. They had an x86 based real mode system running on the terminals that had been working for 12 years without a reboot. I had a look at this system. It was a beautiful text mode interface with a strange trick to embed bitmapped graphics into parts of the screen (remapping the unused character set), redefined fonts and a custom palette. It looked awesome and it would literally run on anything. It was fast, multiuser and very powerful. The entire maintenance and installation disk for the application, which was quite big, fit onto a single floppy disk. This system ran on x86 boards with 4 megs that only accessed memory over 640K as EMS virtual storage for overlays and data. It was truly incredible. It had run for 12 years, day and night, without ever being turned off and without being rebooted. The biggest problem was that there was no screen saving function and the CRT screens had been burned as a result of running ad infinitum with the same display on them. This is why they had to phase out the terminals for new LCD panels. The operator described the application as "supernaturally robust" and said he was dreading the day management decided to go to some .NET platform or worse, Linux. He told me that "I have little doubt this application would run for 100 years unattended without failing if the hardware held up."

The application, which the operator was nice enough to show me some of the features of, consisted of a multiuser network that had fileshare and IPX sockets without anything but DOS 3.0 running underneath it. No 50 megabyte "small" Linux. No 24 megabyte "small" BSD. No 12 megabyte "small" Windows 98. Rather, just sitting on DOS.

They showed me the backup system should anything ever crash. (It never had) It was a floppy disk. They had been talking about going to a tiny compact flash card instead but since it was never broke, they never had the motivation to fix it.

When the terminals booted up, they got the addresses and service information from all the other computers with a single broadcast on the global channel and then all the other computers got it's address and services back in the same exchange. A single packet of information to say "I'm here, this is what I want to subscribe to and this is what I publish." In other words, exactly what I wanted from Vault OS. Just as I had envisioned for Vault OS, local terminals connected to local sensors and devices broadcast their inputs to all interested subscribers at regular intervals, so all machines could perform the same global functions with the same installed software, just configured differently.

As soon as I had found out what development tool had been used for this software, I went straight home and bought $300 worth of licensing, tools and add-ons for it. I set up an older machine with these tools which I will network as a test bed here at home to several cheap PCs of various antiquity.

I think when I started to investigate this idea, my very first notion of using Visual Basic For DOS was the closest I came to getting it right, except that VBDOS isn't quite the tool I needed. I wanted something as RAD but with more assembly language level power when required for certain kinds of control over the machine. I think this tool I that have found by sheer chance is it.
This would result in a Vault OS that would literally run the entire gamut of x86 devices, from lowly XTs to embedded cards (which I have a truckload of) with the same look and feel on all of them, no matter what you could scrounge up.

... and most incredible of all ... it's cross platform in the best possible way.


Anonymous said...

I have been reading your VOS updates from the beginning, but i still have no idea what you are talking about. I wish I did!

Question - would someone such as myself be able to load your program and connect sensors to the ------ and read the input on the screen?? That is it! Just drive the frikin thing thats all. I would need to let someone else with the brains and knowledge to create the program that a moron like me (or even my wife...) could use.

Yours sincerely,
Mr Mollasas.

Texas Arcane said...

There would be two options :

1. Use the I2C serial standard. This would entail attaching the sensor to the RJ-45 chain (plug in) and getting the address of the sensor so it could be identified. Then you would type in a value in milliseconds how often you wanted it polled and then what you wanted to do with that value. It would be options like "BROADCAST ALL SUBSCRIBERS TO : " (combo box - services like weather, power, water level, temperature internal, etc.)

2. Do it some uniquely strange way on RS-232 and use the BASIC-like scripting language in VOS to describe how to get the value, how to interpret it and where to send it like above. Could be something like ...

WAIT 2000 'rem every two seconds
DEFINE A [Temperature Outside]
GET COM1,A 'rem com1 into var A
A = A/20 + 16 'rem do math to A

... something similar thereof.

This would be useful for non-standard inputs like a jimmy-rigged CD-715 radiation detector input into the serial port.

Chesterton said...

Link doesn't work; says access to the server is Forbidden.

And, what's wrong with Linux? I use it at work and have never had stability issues; seems like a pretty solid OS to me. Granted, I've never had to code on it -- or any other system, for that matter.

Anonymous said...

FFS Tex will you just make it!!!!!

Texas Arcane said...

Just want to get it right this time. Had plenty of bad starts.

First demo in one week, guaranteed.

the Monstertruck in your closet said...

We're already knee-deep in faded assurances and broken guarantees, Mr Texas. Blow us off on this one and I'll see you by the clock tower at high noon.

Texas Arcane said...

I know how to do this now such that it will satisfy all requirements, run anywhere and on anything.

I will write the entire crude system so it runs on an XT x86 compatible (be it laptop, embedded SBC or whatever can be scrounged up) and make it work entirely off IPX and filesharing.

Then, in terms of expansion down the road, I can write powerful windows apps that connect over IPX protocols to the same networked system all the little machines are running on, even to function as a gateway to the outside and the Internet.

That way, people can add on as much computing power as they want without hampering the poorest and most cash-strapped who can build their network from junk. The Windows terminal add-ons can run in .NET or frankly, anything, as long as they use the IPX protocol to talk to the littler machines on the internal network.

Anonymous said...

Silence! tex is doin some good thinking about this. I was more interested in the low power version anyway. The second you get fancy something will break sooner or later. Id rather have the one century vault os running forever on my xt than your doodied up egg sucker win/lin/beesd versions anyhow. tex, say I - get the lo power version running on anything I don't care if it is text mode interface then like you said it can expand later. I also like ipx - I still use it to play doom on my home network. keep it up tex but quit yakking and start programming you got the right idea.

CadorBolin said...

The Vault-Co catchphrase "Cow Farting Treaties" can no longer be considered hyperbole:

Anonymous said...

What do you think of below?,2933,363498,00.html

Anonymous said...

Text mode has been quite enough for many centuries, thank you very much. Most graphic are superfluous, either "illustrations" in the medieval sense, or a throwback to the pictographic, the illiterate, and the prehistoric.

I have nothing against fancy graphics and pretty colors, but I much rather have a way to read surviving pre-collapse books (80 chars by 25 rows, monochrome) on whatever hardware I can scavenge, than to weep about the "pretty pictures" I can find nothing to show me.

That said, GNU/Linux (or other free Unix) sounds like a much better computing solution for general use and for developing new programs we may need or find use for.