index

(Copied from old typewritten and handwritten notes from 1984, formatted to HTML, with minor editorial changes and typo fixing.)

Review of a Defunct Project. "Magellan" was an attempt to burn a new ROM for the Ohio Scientific Challenger IP with basics of an operating system (which isn't much for the 8-bit cassette tape & TV microcomputers of that time) and an interpreter for the NCS language. It didn't work out. The Galaxy Project followed next. While Magellan was already dead after 1983, I wrote notes by hand and typewriter in 1984, for my achives.

Read a fuller story about the history

.

Project Magellan

Purpose

To produce a new operating system for the Ohio Scientific Challenger IP.

Detail

A Forth-like language then called "Darwil" [note: same as NCS, just an older name] is to be used. The language is implemented with treaded code. Most words compile to subroutine calls to primitive modules or to other modules which may call other modules, eventually executing primitive modules. Usually each word in the language has one module to define its action, which is two-fold: there is its compile-time action, and then its run-time action.

All modules are strung together in a linked list called the Dictionary. This includes a compiler which reads Darwil source text and produces machine code or a special Monobyte Code. The latter is interpreted by an interpreter, the "Monobyte Needle" or MBN.

Programming in this environment involves defining word after word, until a word is defined which performs the whole desired job. The word "DEF" creates an entry in the Dictionary, and stores in it the rest of the source code line. With only the rarest exception, the rest of the line begins with either : or :F or :m (or maybe other variations of ':' followed by something), which invokes the compiler. The compiler may be the regular MBC compiler, the Longhand compiler, or maybe others to be invented. Factorizing the problem has been a difficult point - we'd like DEF and : to be independent, but how is DEF to know to run : rather than store it? Magellan has not succeeded in finding an elegant solution.

Only one data type is allowed: 16-bit integer. Arithmetic operations take it to be signed, though both C and V flags are available for testing in NCS. Words using items on the stack as pointers, to read or write memory or to execute, take it to be an unsigned address.

Magellan must be compatible with the Microsoft BASIC supplied by Ohio Scientific, in that BASIC could still be used. However, it is impossible to have NCS with its modules, Dictionary and everything and BASIC to be active simultaneously. NCS would have to supply the I/O functions formerly handled by Ohio Scientific's "65V" operating system.

Accounting

[This image of handwritten notes shows an attempt to count up code bytes, or clock cycles, I'm not sure exactly what, to find where I should do more trimming down of the work-in-progress Magellan system.]

Conclusion (Magellan)

Despite an amazing about of space-optimization, and stripping anything non-essential, it would not all fit into 2K. I would have to toss out: 1) keyboard debounce; 2) any kind of output; 3) all arithmetic primitives. Even if it had fit, or the ROM could have been enlarged another 20%, it would be painfully slow to run. I think at one point I found a way to make it smaller, by inventing a way of subtracting which was slower than multiplying! But it saved a couple bytes over having a genuine subtraction operator. Clearly, that's not a good sign. I joked with my roommate about how many days it would take to multiply five times four.

The conclusion is that any kind of usable language, even if limited to 16-bit integers as its only data type plus only the most primitive text handling and the most basic extension capability in the style of Forth, needs 3K or 4K of ROM. Even with that, it would be of limited use in physics, math and instrumentation control.

Magellan was an educational failed project. The successor: Project Galaxy.

Daren Scot Wilson's personal site
linkedin