Special Feature: ColorForth Commentary ColorForth Overview NOTICE: This is a work in progress. Parts of my commentary are still very rough. However, I have it up on the web because even in this rough form it may be useful to ColorForth enthusiasts. Expect the contents of these files to change frequently. ColorForth has two parts: a kernel written in x86 assembly language, and a series of one-kilobyte blocks of pre-parsed words, which the compiler in the kernel can compile into machine language. -- boot sector switches to VESA video mode, turns off interrupts, moves itself to address 0, turns on protected mode (for the 32-bit code, NOT the memory protection), loads sectors -- [keep going up to point where tasks "god" and "main" are running] The ColorForth virtual machine -- data stack is separate from the return stack -- top item on stack (TOS) is cached in the EAX register, while ESI points to the location of the next item on the stack (NOS) -- stack grows downward in memory, meaning the address in ESI gets lower as the stack gets fuller -- so dup decrements ESI, while drop increments ESI -- stack commands are thus implemented with instructions that manipulate EAX and ESI -- [list ColorForth words that manipulate the data stack] -- ESP points to return stack as you might expect -- return stack is separate from data stack so that return addresses are not mixed with data shared among routines -- however the return stack is often used to store data temporarily -- [list ColorForth words that manipulate the return stack] -- EDX -- ColorForth has exactly two tasks — "god," which updates the graphic output display, and "main," which handles commands from the keyboard. The ColorForth keyboard is a variation on the Dvorak keyboard layout. It provides 27 keys — three keys for each of eight fingers and the right thumb.
NOTE: The left Alt key scan code (Set 2) is 0x11; the right Alt key scan code is 0xE0 followed by 0x11. Sorted by scan code:
Others have provided an overview of the software:
Check the index for other entries. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||