www.jupiter-ace.co.uk

Hardware articles index > ACF Version 4


ACF Version 4


The ACF Version 4 is a 96kB RAMpack and a Compact Flash mass storage device. We have also included a reset button. This is only part 1 of the project to get a mass storage solution for the Ace. The extension to the Aces ROM to save and load tape files to the CF card are next to be worked on. A new ROM board has been designed by Edwin to house the EPROM more on that in the next few months we hope.

Now for some AceForth words for the RAM pack paging. The 96K RAMpack operates as two 48kB pages, page0 is the default start up page. One LED will be bright when this RAM page is the memory locations 16384 - 65535.

On power up you can use the RAM as any normal 48K extension with the Aces Forth.

Paging Memory bank AceForth words. First clear the RAMTOP to below 16384: 16383 15384 !
Then type in the following three words of Forth.

DEFINER CODE DOES> CALL ;

CODE PAGE0 175 C, 237 C, 79 C, 253 C, 233 C,

CODE PAGE1 62 C, 128 C, 237 C, 79 C, 253 C, 233 C,


Now you will have two new AceForth words PAGE0 and PAGE1. Which will swap the two 48K pages, the LED will be bright to show which page is currently in use.

Just a note that when you swap pages you also swap the return stack that's why we lowered the RAMTOP to below 16384. You could make a Forth word to move the return stack to the PAD swap pages then copy the return stack to the new memory page. One other thing! if you have an AceForth word definition which crosses over the 16384 page boundary you will have a crash then swapping pages. A possible solution is the reserve a few bytes of RAM which crosses the page boundaries. We will be looking at these words soon.


LEDs showing that Page 0 occupies locations 16384 - 65535


LEDs showing that Page 1 occupies locations 16384 - 65535
So, How do we page the extra RAM pages in and out? With a few bytes of Z80 code, you can do this from a mc program or put the code into a AceFORTH word which is what I'm going to do here. First we define the word code in a way we can place the paging mc into the code field of the forth word.