Q. What exactly is on the board?
  1. EPROM with the driver for ProDOS and DOS 3.3 boot code
  2. CPLD to interface AVR to Apple bus
  3. An ATMEL AVR microcontroller that does most of the work
  4. .
Q. Can I reprogram any of the above?
A. Yes. All the chips are socketed. You *can* re-program the CPLD if you really know what you are doing but it is most likely that you'll want to improve on the AVR firmware.

Q. How can the AVR be programmed?
A. The Atmel AVR Studio - the development environment is free.
So is the GNU compiler that I used to program in "C".
The chip can be programmed with just a few resistors attached to the printer port of a PC, but the best tool is the AVR-JTAG. It allows you to single step the code inside the chip and set breakpoints. The "real" Atmel's AVR-JTAG is about $200, but you can buy a clone (for example from Olimex) for $49. Better still the genuine Atmel $49 "AVR-Dragon" can be used for ATMEGA88/48.

If you never programmed AVR microcontrollers before, this may NOT be a good project to start.

Q. How much is the board?
A. $100 for the board and $15 for an optional SD card. It cost much more to produce very small runs. I did the development for fun. If I had payed myself what I charge customers for my "real" design projects, each board would cost... you don't want to know:)

Q. What exactly does the board do with the current firmware?
A. In ProDOS mode an image of a ProDOS volume written to the SD card acts like a (very fast) hard disk up to 32 MB (ProDOS limitation). A trivial change to the firmware can enable several partitions to act as multiple volumes. In nibble mode each (one of hundreds) of the ".nib" images pretends to be a 140K floppy. It can be read at about the same speed as a real DISK ][.

Q How big an SD card can I use?
A Any size AFAIK, but only 32 MB are usable under ProDOS. This limit does not affect the nibble mode.

Q How is a nibble image selected?
A At boot time the image is selected from the keyboard. There is also a DIP switch on the board that switches images.

Q How do I put an image on the SD card?
A You will need a (USB) card reader. I have a (command line) program for Windows. "dd" works great under Linux.

Q How is an image selected?
A At power-up the board is in ProDOS mode. The firmware at $C0X0 loads the first block from the first partition on the SD/MMC card at $800 and jumps to address $801. The cards I shipped with the first few prototypes have an image of a ProDOS volume 228 KB in size to fit into the first image's space. ProDOS is loaded and a very simple BASIC program is executed. It prompts for a number, sets the offset to 455 times this number blocks, switches the board into nibble mode and reboots.

Q What should my own program do to control the board?
A Glad you asked. Loading a BASIC program after booting full ProDOS is not the most efficient way to switch the images. I did it only for illustration.
The board is controlled by writes to address $C08D,x. Here are the commands:
    0x80: set nibble mode
    0x81: set ProDOS mode
    0x82: read a block (512 bytes)
          After this command is issued, read $C080,x till high bit is set - ready flag.
	  Then read 512 data bytes.
    0xA2: write a block from the buffer to the card
    0x02 [high byte] [low byte] - 3 byte command to set the block.
    0x04 [512 bytes of data] - write to the buffer

Q What is the DIP switch for?
A If SW1 is OFF, the card boots in nibble mode. Switches SW2-SW6 select the nibble image (in binary code). For example SW5 and SW6 "ON" select image #3.

to contact me add "alex@" to this page's domain