?

Log in

Previous Entry | Next Entry

Punix

The development of Punix is still hobbling along. It still needs a few things implemented before it can boot up completely; the three major things it needs are a memory allocator, a file system, and a Flash ROM block device driver. It already has most of the upper and middle layers of the file system written, but it lacks the low-level code to read and write an actual file system on a block device. The entire current source code can always be found in the Punix CVS repository on Sourceforge.net

In the last month I've been adding a lot of the support code for the file system, mostly taking code from UNIX V6 and V7 and re-writing it for Punix. I've been adding this and other low-level driver code (including a new and improved virtual terminal driver!) without testing each time. In fact, until last night it wouldn't completely link because it had some unresolved symbols.

Last night I resolved the symbols (either by implementing the missing functions or by commenting out each reference to them) and linked it all together. Then I ran it in TiEmu to test it. I could step through it instruction-by-instruction, but at one point it tries to write to an illegal address and goes to the "address error" exception. At this point I discovered that the vector table containing the "address error" and other vectors is partially corrupted! See http://p094.ezboard.com/ftichessteamhqfrm5.showMessage?topicID=3486.topic, starting at the third post. I tried moving symbols around, even inserting literal values in the vector table, but those incorrect values still appear there in the TIB file (even before it's loaded onto the calculator). Hmm. What I plan to do is get an older version of the source code—one that I released in the past (so it's known to compile, link, and run)—and compile and link it with the latest version of TIGCC. If I see the strange values there too, I'll know it's possibly a bug in TIGCC (the TIGCC project team has been working on its linker a lot since my last Punix release, so it's probably a bug there).

Last, I'd like to mention that someone has volunteered to help work on some of the missing components, so hopefully this means development will pick up pace.

Tags: