Difference between revisions of "Microstyle RAMROM"

From CPCWiki - THE Amstrad CPC encyclopedia!
Jump to: navigation, search
(Replacing page with 'A RAM expansion board from Microstyle which behaves like ROM useful for ROM development<br> == Pictures<br> == <br> == Manual <br> == <br> <br> <br>')
Line 7: Line 7:
 
== Manual <br> ==
 
== Manual <br> ==
  
(with spelling mistakes as per original document)<br>
+
<br>
<pre>32k RAMROM - INSTRUCTIONS
+
The 32k RAMROM's main component is its 32k static ram chip which is capable of being loaded with
+
1 or 2 rom programs of up to 16k each. That's the maximum size that the CPC allows. When loaded,
+
the program(s) remain usable, surviving resets, as long as the computer is on. The RAMROM is
+
quite literally a 2 slot romboard that allows the rom programs to be written to it. What it is
+
not is a memory expansion like the 64k and 256k memory add-ons. However, it is ram and can be
+
used as such by imaginative programmers. Its main function, though, is to simulate roms for
+
whatever purpose is required - usually for rom development.
+
  
In developing the RAMROM we considered including many features such as battery backup but decided
+
<br>
against them in order to keep the price down.
+
  
The 464 and 664 can access up to 7 background roms (slots 1 to 7) and 6128, 15 (slots 1 to
+
<br>
15). If 2 or more roms occupy the same slot number then they won't work although nothing will be
+
harmed. To avoid such clashes, the RAMROM's slot numbers are flexible, to a degree.
+
 
+
Facilities are incorporated on the board to load 2 different rom programs which can each use a
+
different slot (serial) or can both use the same slot (parallel). In the latter case they cannot
+
both be initialised at the same time, of course.
+
 
+
SWITCHES &amp; LINKS
+
 
+
SWITCH ONE - left (write switch):- when set to its left position, the ram can be written to. When
+
set right, the ram cannot be written to.
+
 
+
SWITCH TWO - centre (parallel/serial select):- set to its left position = serial; set right =
+
parallel. Serial: two of rom slots 3 to 6 are selectable as shown in the diagrams. Only the four
+
configurations shown are possible. If a link is removed then its associated rom slot can neither
+
be written to nor read from. It is ok to leave the links on their pins when not using the RAMROM
+
but problems (not damage) could occur if an actual rom is occupying the same slot as a linked but
+
unused RAMROM slot. In serial mode the position of switch 3 doesn't matter. Parallel: only 2
+
slots can be used - 3 or 6. In this mode the high and low 16Ks of the total 32k can each hold a
+
different rom program in the same slot. Switch 3 is used to switch between the two.
+
 
+
SWITCH THREE - right (high/low):- see switch two. This switch must be set prior to loading a
+
program in the parallel mode and is then used to swap between the programs in the high half and
+
low half of the 32k. After switching from hi to lo, or vice versa, the computer must be reset
+
to initialise the new program.
+
 
+
USING THE RAMROM
+
 
+
We are grateful to ROMBO PRODUCTIONS for allowing us to use their loader program which has been
+
modified for our needs. It is used to load programs into the RAMROM but will be run only once.
+
After that, its machine code remains in memory (not in the RAMROM) surviving resets. Type it in
+
and save it.
+
 
+
With the computer turned OFF, push the RAMROM onto the CPC's expansion port (disc drive port on
+
the 464). It doesn't matter if other peripherals are closer to or further away from the computer.
+
 
+
LOADING A ROM PROGRAM: Set the links, switch 2 and, if wanting parallel mode, switch 3 according
+
to your choices. Run the typed-in program. Once run, the BASIC part is deleted but the machine
+
code remains ready for further uses. Type: memory &amp;3fff and press return. Enter your selected
+
slot number with the following command: poke &amp;be01,x (x = your slot number). Load your program
+
into memory area &amp;4000 to &amp;7fff with: load"yourprog.rom",&amp;4000
+
 
+
That's your program ready to be loaded into the RAMROM. Set switch 1 to write (left) and type:
+
call &amp;be00
+
 
+
The screen will fill very quickly. When it has done so, switch SWITCH 1 to the right. The Ready
+
prompt will appear after a few seconds and you can then reset the computer by pressing CNTRL,
+
SHIFT and ESC simultaneously. Assuming that your program is written correctly for rom use, it is
+
initialised and the computer is aware of its presence. To load a second rom, set the links and
+
switches again but don't alter the existing program's link. Poke the 2nd slot number into &amp;be01,
+
load the 2nd program into &amp;4000 and call &amp;be00.
+
 
+
SWITCH SUMMARY:- Once you've grasped their uses, it will be easy. SWITCH ONE selects write and
+
don't write (load or don't load). It has no other function. SWITCH TWO selects serial or parallel
+
mode. Serial = 2 different slot numbers; parallel = 2 programs in the same slot number. SWITCH
+
THREE selects the high or low 16k rom bank when in parallel mode only. It is used when loading
+
and also to decide which will be initialised.
+
 
+
ABOUT ROM PROGRAMS
+
 
+
Contrary to what is often thought, any old machine code program cannot be put into a rom and be
+
expected to run. The CPC has excellent background rom facilities and, in fact, it looks for and
+
initialises any that are present at every reset but in order for a rom to be recognised and work
+
properly, its contents must be layed out in a certain way. Only certain parts of the rom must be
+
layed out correctly and it is beyond the scope of these instructions to teach rom programming.
+
 
+
and finally...
+
 
+
A BASIC program can be put into a rom as long as a machine code program to download it to where
+
BASIC programs run is also included. Several separate programs can be included in one rom, each
+
accessible with a BAR command. The RAMROM does not need to be erased in any way before being
+
overwritten with new programs. It is probablt that somebody will attempt to use the RAMROM as a
+
standard romboard by piggybacking a rom chip onto the 32k ram chip. Alas, it won't work. The data
+
and address buses are not connected to the same pins as an eprom would need.
+
 
+
------------------------------------------------------------------------------------------------
+
 
+
TYPE-IN LOADER PROGRAM (the Os are zeroes and not letter Os)
+
 
+
10 FOR a=&amp;BE00 TO &amp;BE1F
+
20 READ b$
+
30 POKE a,VAL("&amp;"+b$)
+
40 NEXT
+
50 MODE 2
+
60 PRINT"POKE the ROM SLOT NUMBER into &amp;BE01
+
65 PRINT"Slot 6 is selected by default.
+
70 PRINT:PRINT"Disable the RAM after the screen has filled
+
80 PRINT"and before the Ready prompt.
+
90 PRINT"Reset to initialise the ROM.
+
100 NEW
+
200 DATA 0E,06,CD,0F,B9,F3,C5,21
+
210 DATA 00,40,11,00,C0,01,00,40
+
220 DATA ED,B0,06,10,1B,7A,B3,20
+
230 DATA FB,10,F9,C1,CD,18,B9,C9
+
 
+
 
+
------------- ------------- -------------
+
SWITCHES:- | 1 | | 2 | | 3 |
+
------------- ------------- -------------
+
READ/WRITE PARL/SERIAL BANK SELECT
+
 
+
 
+
------------- ------------- -------------
+
SWITCHES:- | 1 | | 2 | | 3 |
+
------------- ------------- -------------
+
READ/WRITE PARL/SERIAL BANK SELECT
+
 
+
o o o o o o o o
+
|6 5| 5| |6
+
o o o o o o o o
+
LINKS:- 3| |4 3| |4
+
o o o o o o o o
+
 
+
(SLOT NUMBERS) 3 4 3 6 5 4 5 6
+
 
+
 
+
------------------------------------------------------------------------------------------------
+
 
+
ROM LAYOUT AS EXPECTED BY THE CPC
+
 
+
C000 Rom type - Rom type (0 = foreground; 1 = background)
+
C001 Mark number ) for use of the programmer but
+
C002 Version number ) they aren't essential to the
+
C003 Modification number ) rom's operations
+
C004 COMMAND NAME TABLE address (low byte address)
+
C005 COMMAND NAME TABLE address (high byte address)
+
C006/7/8 Jump to INITIALISE ROM routine start address )
+
C009/A/B Jump to 1st command's program start address ) JUMP TABLE
+
C00C/D/E Jump to 2nd command's program start address )
+
etc. etc. etc.
+
 
+
 
+
When the CPC is turned on or reset, it enters the rom at C006/7/8 and runs the
+
INITIALISING ROUTINE that is jumped to from that address. Accessing roms is done via bar (|)
+
commands either at the keyboard or within BASIC programs and each command is listed in the
+
COMMAND NAME TABLE. C004/5 (low byte first) point to the start address of the COMMAND NAME
+
TABLE which can be anywhere in the rom. The last character of each command name must have bit
+
7 set to 1 and the table must be ended with a 0. When the computer encounters a bar (|)
+
command it searches the command name table for a match. If found, it uses the JUMP TABLE to
+
run the associated program. NAMES and JUMPS must therefore be in the same order. A name must
+
be included at the start of the table for the INITIALISING ROUTINE. Sorry I can't explain in
+
depth but, once grasped, it is easy to understand.
+
 
+
------------------------------------------------------------------------------------------------
+
 
+
MicroStyle 28 BELMONT AVENUE, LOW MOOR, BRADFORD, BD12 OPA
+
Telephone: 0274-602180
+
 
+
 
+
 
+
 
+
 
+
</pre>
+

Revision as of 09:13, 8 January 2008

A RAM expansion board from Microstyle which behaves like ROM useful for ROM development

Pictures


Manual