BigEd wrote:
Quite an interesting idea to put I/O at the bottom of page 1 - so long as there's not too much I/O, that's practical, and it does leave pretty much all of memory space clear.
I think the floppy controller is only a few bytes, so with sufficient address decode you probably wouldn't miss that. These older Rockwell microcontrollers used to cram a lot into limited address space. The on-chip I/O is in Page 0, and on the 6500/1 the stack was also moved to Page 0. This had the advantage that with a masked ROM system you could get away with only one chip in total, and no external bus required (if the on-board RAM was sufficient).
At the other end of the scale, I put a 39SF040 512k x 8 FLASH chip into the ZIF socket last night and successfully programmed it, that's an extreme amount of storage. I have the banking set up to bank the upper 8k address range only, as the on-chip RAM and I/O does not get banked, so if you use the lower 8k for banking you lose a small amount in each bank. That would have been a problem with the FLASH as you need particular addresses for programming. This makes the address translation a little complicated.
To program $CA into address 0000 I used these FORTH commands:
Code:
AA 3555 2 BANKC! OK
55 2AAA 1 BANKC! OK
A0 3555 2 BANKC! OK
CA 2000 0 BANKC! OK
BANKC! is a banked version of ! (write byte to memory), the C means byte rather than word. The addresses need to be translated into the bank window, so 3555 in bank 2 is address 5555 and 2AAA in bank 1 is 2AAA (which looks strange but is actually correct because of the bank window starting at 2000).
Next step is learning to create my own FORTH words for programming the FLASH.