Tattam’s Great Escape – departure

Ok folks. I’m not a great fan of travel blogs, but Joy and I have been asked to post some stuff, so here goes.

I’m not a happy traveller these days,  having done a fair bit of commuting to Los Angeles from Tasmania in the Trumpet days. But it was time – this trip being non-negotiable due to Joy’s long service leave was planned, booked and paid for and so we headed off.

Last minute preparations were tricky as it decided to rain pretty much non stop just before we left with lots of clothes to wash, dry and pack for the trip. Add to this my occasional panic and nerves in the preceding weeks (probably PTSD from scary trips in the past around the time of 9/11, but that is another story) made the time leading up to it a bit excruciating. Also making sure all the pets were looked after, the house was ready for the house sitters and making sure I had every eventuality covered for any software maintenance for my clients while on extended break. But eventually the time arrived and we turned the lock for the last time on the house and we we driven down to the airport by my wonderful parents-in-law.

A long trip. Melbourne… Singapore… Zurich… and finally Zermatt. Around 30 hrs by our estimation. And so it began….  it was clear that our travel agent and two of us had completely different ideas about what was an acceptable itinerary. In retrospect, after 20+ hours of flying without not much break in the flight to Zurich, perhaps a short break to rest our heads might have been appropriate. Certainly some wires crossed as our itinerary had Zermatt as a short trip from Zurich – how wrong… 3-4 hours later we finally got there (without having grabbed any food or drinks as we we told to move quickly to get the next available train). It was an experience hopefully never to be repeated.

I must add a short note that I hadn’t had time to look review the itinerary in detail as I had a rough bout of the ‘flu 3 weeks before we flew. Joy got it too a week or so later which didn’t help.  I say this because on the day we collected the tickets, I was really fuzzy in the head and we had a really tight schedule that day and it was the travel agent’s last day with the company. A comedy of errors – total planetary misalignment. He had rattled off a whole ton of detail at the time (in about 15 mins) which I vaguely remember nodding to but in retrospect it was probably going into my internal bit bucket. I had gotten behind on my work as I had lost a week due to my illness so everything was conspiring against me double checking the itinerary. Two days before flying out and our agent has moved on a week or so before (handed us on to another agent by then) and it’s the middle of the weekend and we discover one leg of the trip has missing train bookings, and no detail or explanation – eek! Rattled off email on the day we left and made desparate phone calls to a busy switchboard in the vain hope that this was “resolvable”. No reply but we had to fly anyway so I had to trust that the email had made it and some explanation would be forthcoming. It did come – in the middle of a jet lagged night at Zermatt. Turned out the bookings had to be done regionally at the time – just a little more stress to add to the trip. Oh, and that last leg to Zermatt – we think it was booked, but through a really poor explanation of what happened when we got to Zurich it was a total stuff up. Should have been smooth sailing from the airport but yet another comedy of errors. We thought we had to get a short regional trip somewhere from the airport, but we think it may have been included in the package – and the ticket officer gave us conflicting advice – ended up paying for rather pricey tickets to do the final leg. The things you do when you’re jet lagged and exhausted in a strange place.  Sound familiar?

So that’s the preamble – we got away – finally. We made it to our first sleepover – finally – after 30 hours!  I could have throttled the agent! The start of this trip was not without its hiccups. This is why I hate travelling. And this is also why I now do not trust other peoples’ advice on travel agents! Be assured the trip does improve…  stay tuned for the next instalment!  :)


Thanks for donations

A hearty thank you to all those who have donated recently (http://news.ycombinator.com/item?id=2282875) as compensation for their unpaid use of Trumpet Winsock in the past. I will put the money to good use – it will enable me to work on projects that up till now I’ve had to fund out of my limited personal income as a sub-contracting software developer. Hopefully it will spur me on to produce something equally as useful as Trumpet Winsock was.

Update:  to date more than 300 donations have been received.  Also I have updated the front page on tattsoft.com to the most recent news.  And….  we’ve been slashdotted.  see http://tech.slashdot.org/story/11/03/09/015212/Trumpet-Winsock-Creator-Made-Little-Money


Australian IPv6 Summit

I’m heading off to the Australian IPv6 summit next week. See http://www.ipv6.org.au/summit/index.php

I spent quite a bit of time in the past 10 years working with the IPv6 people worldwide. I ran the 6BONE IPv6 testing backbone for the Australian region, did work on IPv6 tunneling on demand gateways, designed protocols for TCP connection survivability on network topology changes, and developed bump-in-the-stack designs for IPv6 TCP/IP protocol stacks in Trumpet Winsock.

I gave it a rest over the past 5 years or so as it seemed that the developed world has a rather short sighted attitude to IPv6. I’m heading off to this conference so that I can again touch base with people and catch up with the latest developments. Finally the IPv4 addresses are running out (predicted around 2010 +/- 1 year) so it would seem that now the pressure is on.


Windows Device Driver in Delphi (Ring 0 Windows programming)

Just recently I thought I’d work on a project I had shelved a few years back. It’s a by-product of the recent Classios work I’ve done. Since I used Delphi (D2006) to build the classios kernel, it seemed logical to see if I could build a windows device driver directly with delphi without the use of C/C++ stubs. It turns out that you can!!

It basically relies on skeleton system.dcu’s etc where the win32 api has been factored out. That combined with some important glue code to make sure that the DeviceMain() function in C is emulated correctly results in a workable .SYS executable. Once that is done, the only thing remaining is to prepare the .SYS file by modifying the win32 PE header slightly so that windows will recognize it as a device driver.

This is a rather powerful way to do kernel mode programming in windows. I’ve been able to build a couple of device drivers so far. The first was a proof of concept. I was able to get the driver to run at ring 0, and then dump the page tables and GDT/IDT. The next useful driver I made was one to directly access the LAN driver. This was able to port some of the code I did for Trumpet Winsock directly to delphi and now have roughly the same functionality as Winpcap.

Delphi now rules the ring 0 world of windows!!


Nice tech…

NVidia has made a nice little unit here called the Tegra.


In the past I have considered doing work on ARM devices. I would need to get my Opascal compiler (currently i386 which I don’t use right now) to run on the ARM.


ClassiOS alpha release 0.001

For those patient folks who want to kick the tyres on classios, it’s finally here. Note this is a 0.001 release, just to prove that it exists and boot a kernel. For more details go to the forums http://forums.tattsoft.com/viewtopic.php?t=4.

Continue reading ‘ClassiOS alpha release 0.001’ »

Good things come to those who wait….

Well, it’s finally happened!!!

After more than 5 years, I finally have PetrOS and the other Trumpet products solely in my own name along with the rest of the IP of the Trumpet Software company. This has major implications for the future of PetrOS and ClassiOS. I’m not sure what else to say except it’s been so long, I felt like I was in a straight jacket not being able to code with any great freedom and having to use clean room techniques. Sadly, the reason it has taken so long is that my divorce settlement has taken that long to sort out, the IP being one of the last items to be finally be resolved.

The impact hasn’t fully hit me yet, but I can feel my wings again. Look forward to some new releases.


Update on Classios and embedded work

It’s been a while but it has been moving on slowly. I have got to the stage of running some win32 code finally. I have a small shell (which doesn’t do much yet), but the shell is 100% win32 code (written in Delphi). Basically, I have enough of the win32 api to read/write to the console, read from files, list directory contents and change the current directory. Next on the list will be to fire up another application. I’ve got tcp/ip built into the kernel on this incarnation rather than loading via dll/device driver, so heading down the monolithic kernel path for now which suits embedded type apps.

The beastAlso, of interest, I got myself a small test system (wafer-lx) for embedded work -see pic. It has an AMD LX-800 CPU, 1 gig of ram, and a 4 gig hi speed Flash drive. This little beauty packs quite a punch – more details are below. I’ve got Classios to boot up on it with full TCP/IP networking. I can even boot it via DHCP/TFTP using the PXE protocols. P!

Continue reading ‘Update on Classios and embedded work’ »

Classios – one more step in the evolution of Petros

In the past couple of years, I’ve been tinkering on & off with the new version of PetrOS. This is a total rewrite for a few reasons, but mainly that I was unhappy with the current code base in Petros. The original one was started at a time when Delphi wasn’t around – we’re talking the early 90’s.

What triggered the original development of Petros was the release of the Win32 specification and I felt that this was certainly a step forward in the DOS/Windows PC world. Win3.x was pretty rough as an OS and there was a need to go native instead of on top of DOS. I wanted to do it in pascal, but there wasn’t a 32 bit pascal compiler around at the time so I started writing my own. It was pretty much a spare time project over the years I ran Trumpet and I started with virtually nothing. Also, I’d always wanted to write my own pascal compiler and it didn’t seem too hard a job. Initially I stuck to plain pascal, but it was clear that I would need objects to be at least relevant to the modern world. All said & done, the compiler was a simple one spitting out assembler code, not a full language. Eventually in 2002 I did an amd64 version of the compiler but at that stage I felt it had reached the end of its useful life – it needed a rebuild too. Continue reading ‘Classios – one more step in the evolution of Petros’ »

Internet Drought coming soon (or why aren’t we using IPv6 yet)

While Global Warming is certainly something to be concerned about, with icecaps on Greenland melting and all that, it’s probably a little known fact that the Internet is heading for its own meltdown of sorts. If you don’t believe me, take a look at this… http://www.tndh.net/~tony/ietf/IPv4%20Address%20Fractal%20Map.pdf From what we are led to believe, the availablility of IPv4 internet addresses is rapidly drying up. Latest predictions show that sometime around 2010, there aren’t going to be any more IPv4 addresses – well, certainly not as freely available as they currently are.

Just as an aside… I’ve been aware that things might break in the past 10 years or so when I built IPv6 into Trumpet Winsock 5.0. My latest TCP stack for DOS (nothing to do with Trumpet) also has IPv6 and as far as I’m aware, it’s one of the few IPv6 DOS TCP implementations around. Ok, ok. it doesn’t do full IPsec and so forth (remember it’s only 640K in DOS), but it has the basic connectivity required to get going. Anyone who wants to try out a beta, let me know…