Updated 2002 September

# Download

You can download colorForth [originally] thanks to UltraTechnology.

- COLOR.COM Jul31
- boot.asm, floppy source
- gen.asm, generic graphics source
- color.asm, kernel source

This is the exact version I'm using, limited only in the amount of source code provided. It's a 63KB .COM program. You're welcome to use it as you please. But it's a powerful tool, so please be careful.

Current version has these improvements:

- A new floppy driver:
  - Does not use DMA, which cannot cross a 64K boundary.
  - Uses implied seek, which restricts it to newer controllers.
  - Uses Terry Loveall's e1 strobe, which seems to ease bus timing. Geof Bishop counted only 2/100 successful boots without it.
- PCI graphics address
  - Search for device class 3
  - Search for prefetchable memory space
- Bulletproof look-back optimization
  - Pointer to last optimizable instruction
  - Tail recursion, ; changes call to jump
  - Literals
    - @, !, +! with literal address
    - !, +! literal to literal address
    - +, or, and with literal
  - When one macro ends with 'drop' and the next starts with 'dup' both may be eliminated
  - Optimization is blocked by red word, then, begin (for) which imply a jump destination
- Icons start at block 12, source at block 18.
- Words from kernel to source: +, or, and, nip, reads, writes, save
- PNG screen dump, documentation soon

This version runs on a PC with: 32MB RAM, PCI or AGP graphics, VESA 117 display (1024x768, rgb 565). A floppy is needed for anything but a demo. There may be graphics it won't run with. And floppies it doesn't like.

You must start COLOR.COM under DOS. It is an operating system, and takes over the computer. You can then write a bootable floppy. Alternatively, Unix can copy COLOR.COM to a bootable floppy with cp or dd.

# Disclaimer

This is a reliable program.

- I've used it for years
- It does not access the hard drive
- It has no backdoors
- It does nothing unless you tell it to
- But don't risk more than you can afford to lose

# By downloading, you agree that

I am not responsible for the consequences

- Keep backups!
  - Keep a stack of at least 7 floppies (they're cheap)
  - Start each day with 'save' to the oldest
- Undebugged code can and will crash

# First time

- Run COLOR.COM
- Screen shows logo with keypad at lower right.
- Mount a formatted floppy. Contents irrelevant.
- Type 'save ' to write 162 blocks. This floppy cannot be read by DOS, no directory.

# Thereafter

- Power-up, reset or restart computer with colorForth floppy mounted (BIOS set for bootable floppy)
- Screen shows logo. 162 blocks available.

# In case of difficulty

# User guide

List of included applications, with brief instructions.

# Programmer guide

Programming tips.

# Platforms

I've gotten feedback from a number of people. ColorForth runs on some platforms and doesn't run on others. I haven't discerned any pattern. You pretty much have to download and try it on yours.

I'd like to recommend a current desktop PC that can run colorForth as a dedicated platform. It should have a low price, minimal memory and no software. Gateway? Dell? Likewise a laptop. Any candidates?

# How colorForth boots

- Boot sector loaded into low memory at 7c00
- Turn off interrupts
- Call BIOS to set graphics mode: 1024x768, rgb: 565
- Copy itself (1 sector) to location 0
- Establish 32-bit address space WITH NO PROTECTION! All segment registers are 0, forget them.
- Read 9 cylinders (162 blocks) from floppy starting at 0
- Locate frame buffer
  - Look at AGP device: bus 1, device 0, function 0
  - Use an address in registers 9-5 if it's prefetchable
  - Otherwise use the one in 4
  - Comments?
- Start background task building frames at 3e80000 (top of 32MB RAM).
- Read block 24 to compile compiler
- Await keystroke

# How COLOR.COM works

- Loaded into a segment in low memory, .COM programs are limited to 65,280 bytes (63 blocks)
- Turn off interrupts
- Call BIOS to set graphics mode. Only BIOS call.
- Copy itself (63 blocks) to location 0
- As above