home *** CD-ROM | disk | FTP | other *** search
-
- - SpeedRamsey.asm - A fifteen minutes hack - © 1993 by Holger Lubitz -
-
- *** Sets the skip bit in the Rev G Ramsey ***
-
- Intro
-
- Well, I had played around with the skip bit earlier - but it took some
- posts to comp.sys.amiga.hardware by people eagerly waiting for this to
- convince me to release it. Isn't Usenet great ? :)
-
- The reason I didn't release it immediately is that the fastest RAM I
- could get had only 70 ns. The skip mode needs 60 ns or faster RAM for
- proper function. I have only been able to test this by removing all
- banks but one from my Amiga. If I have all four banks installed, this
- doesn't work. Probably the additional capacitive load is enough to
- slow down a signal by 1 ns, causing this to break. I don't know.
-
- However, if you got 60 ns DRAM, you should be fine even with all four
- banks populated. In my Amiga, running SpeedRamsey reduces the memory
- latency as measured by AIBB 6.1 from 8.1 to 7.1, for a speed increase
- of roughly 10%.
-
-
- How to use it
-
- Just start it. From Version 1.2 upwards, you can either start it from
- WB or from the CLI (no interesting icon yet, sorry). You get version
- information, an author notice and a short message telling you what
- SpeedRamsey did, if anything. If you don't have a Rev G ramsey, it
- will complain about that and do nothing.
-
-
- How it works
-
- This tiny little program is a very simple tiny little program.
- However, you need to know about Ramsey to understand what it does.
- Ramsey appears only in the supervisor data space. It has two
- byte-wide registers, one at $DE0003 and one at $DE0043. The first one
- is read-write, and this is where you configure Ramsey. The second one
- is read-only, it offers version information.
-
- Currently there are only two versions of Ramsey. The Rev G Ramsey,
- which is the revision you find in all Amiga 4000s, allows you to
- select a mode called skip mode. More on this later.
-
- The older Rev D Ramsey used in the A3000 doesn't support the skip mode
- this program is setting. It uses the very same bit to select memory
- width. But because nobody ever used 1Mx1 DRAM in the A3000, and
- probably also because bits in the only configuration register are
- somewhat precious, the bit got reassigned for the skip mode in Rev G.
- This makes it important to check for the right Rev of Ramsey. I don't
- even want to think about the crash you'd get by setting this bit on a
- Rev D Ramsey. Trying it out is certainly not recommended.
-
- So, after we checked for Rev G by comparing with $0F (a $0D in the
- version register signals a Rev D Ramsey, by the way), we fiddle with
- the bit and return from the supervisor mode, having set a return code
- for the rest of the program, which puts out an appropriate message
- and, if started from the CLI, sets the return code (to 0 for bit set,
- 5 for bit reset, 15 for no Rev G Ramsey found).
-
-
- Why it works and what skip mode really means
-
- The skip mode speeds up RAM access from five clocks each to four
- clocks each by skipping the last cycle. Some people call this
- 60-ns-mode because you need 60 ns DRAM or faster to ensure that this
- works and doesn't crash your Amiga.
-
-
- My own experience
-
- You might succeed in running this with slower DRAM, depending on how
- many banks you've populated and who manufactured the SIMMs you're
- using. Some seem to have higher safety margins than others. In my
- machine, setting the skip bit with only one bank populated (I am using
- Micron 1Mx32 SIMMs with 70 ns access time) works. Setting it with all
- four banks populated crashes my machine (see Intro).
-
- You can't damage your Amiga, but be prepared for a cold reboot if it
- doesn't work. Just try it - but don't have anything important in the
- background when you do so. You have been warned.
-
-
- Frequently asked questions
-
- * Is the Ramsey setting permanent ?
-
- (here was a slightly incorrect answer in earlier doc revisions because
- it wasn't really thought out. Sorry for that)
-
- No, the setting survives a reset, but has to be set manually after
- each power on. You might want to put it in your User-Startup once
- you're sure that your memory is fast enough. Since SpeedRamsey was
- designed to toggle the bit and doesn't support parameters to set or
- reset it (yet), you have to trick around a bit. Here's how:
-
- speedramsey >nil: ; toggles the bit, sets warn if reset
- if warn
- speedramsey >nil: ; if reset, toggles it again
- endif
-
- I agree that this is not nice, but it works for now.
-
- It isn't really possible to make the setting permanent (in other
- words, survive a cold reboot). However, the functionality of
- SpeedRamsey might get included in the OS one day, who knows (I could
- imagine setting the bit, testing if the RAM still works, and resetting
- it if it doesn't, but you can probably only do that from ROM or
- Chipram - ah, wait, now THEREs an idea - maybe for a future version of
- SpeedRamsey, right now I'm very busy updating the docs :)
-
- * Can I damage my machine by using SpeedRamsey ?
-
- No. At least not as far as I know. If it crashes, just switch it off
- and on again.
-
- * Does this work on my (insert specific A4000 model) ?
-
- This should work on any A4000 with 60 ns DRAM. It doesn't matter if
- you have a 030 or 040 model. Only one person with 4 banks and 60 ns
- DRAM reported a crash. I'd really like to find out why.
-
- * I have only slower DRAM - should I try it anyway ?
-
- See question 2. Just try it out, you can't damage your machine by
- doing so. If it works, fine (use a RAM test program just to be sure),
- if it doesn't switch it off and archive SpeedRamsey for later use when
- you've gotten faster DRAM.
-
-
- Distribution
-
- Permission for non-commercial distribution of the unmodified archive
- is hereby granted. It must contain SpeedRamsey itself, its source
- code SpeedRamsey.asm, this doc file SpeedRamsey.doc, the icon
- SpeedRamsey.info and the questionnaire SpeedRamsey.survey, and _only_
- those (_no_ stupid .displaymes in archives with my software!) Fred
- Fish is explicitly allowed to include this in his library.
-
- If you release anything based on this source, please give credit.
-
-
- Bugs, Suggestions, etc.
-
- You can contact me electronically by using my eMail-Address
- hal@caty.north.de. If you don't have eMail yet, get access to it or
- lose. After all, we are in the nineties now, aren't we ?
-
-
- History
-
- 1.0 (12-Aug-1993) First Usenet release
-
- The original SpeedRamsey. Size of program: 72 bytes.
-
- 1.1 (13-Aug-1993) Second Usenet release
-
- Mainly updated docs because of questions I got by eMail.
-
- Also made program slightly shorter, SpeedRamsey now checks for Rev G
- and only sets the bit on Rev G. It used to do so on any Non-Rev-D
- Ramsey, but who knows what this bit will do in the future ? Optimised
- code slightly when changing this.
-
- The bit is now flipped instead of set. Running SpeedRamsey again
- resets the system to the old state. However, you still have no
- indication what happened other than checking by running AIBB or
- similar. I really need to put in messages soon :)
-
- Size of program: 68 bytes. (Isn't assembler great ?)
-
- (14-Aug-1993) Not released
-
- Well, I just _had_ to include the messages. Now SpeedRamsey tells you
- what it did. It even tells you if you haven't got a Rev G Ramsey.
- Also added WB startup code that opens an own window to write into.
-
- Size of program with text and startup stuff: Still only 396 bytes,
- but pretty large compared to 1.1 - additional comfort has its price :)
-
- (15-Aug-1993) Not released
-
- Slight changes to the documentation
-
- 1.2 (16-Aug-1993) Third (and last) Usenet Release
-
- Updated FAQ list. Some more doc changes. Added questionnaire because
- one person reported a crash with 60 ns DRAM. Please fill it out and
- return it, regardless if SpeedRamsey worked for you or not. I need
- that information to find out under which conditions SpeedRamsey is
- safe and under which it is not.
-
- 1.2a (17-Aug-1993) First Aminet Release
-
- Corrected FAQ list. The first answer was not totally correct and
- could be misunderstood, too. Also offers a workaround for putting
- SpeedRamsey into the User-Startup now.
-
- SpeedRamsey now contains version information, which increased its size
- slightly. Size of program: 408 bytes.
-
-
- To do list
-
- Parameters for explicit setting/resetting of the skip mode bit
- function check if possible (I'll have to look into this)
- maybe setting/resetting the other Ramsey bits.
-