- This program tests RAM on any apple II looking for stuck bits
- identifies host as ][, ][+, //e, //c, IIgs, clone
- looks for 16k Bank Switched RAM (BSR) compliant with a
Language
Card
- looks for 64k Auxiliary RAM compliant with
Enhanced
80-Column Card
- looks for
RamWorks
compliant RAM up to 4 MB
- It runs on all flavors of apple from ][ on up to IIgs;
although, not tested on //c nor clones.
- It identifies unique instances of BSR, AUX RAM and
RamWorks
pages
- by writing and reading back unique byte values
- that aren't necessarily consecutive
- It groups all instances of 64k memory into logical segments
used by Base memory
- ¼k - $00..$FF - zero page - used with indirect
addressing
- ¼k - $100..$1FF - stack - used by the 6502
accumulator and program counter
- ¼k - $200..$2FF - input buffer - used for buffering
keyboard input
- ¼k - $300..$3FF - vector space and small assembly
code space
- 1k - $400..$7FF - Text and LoRes Graphics page 1 (GR)
- 1k - $800-$BFF - Text and LoRes Graphics page 2 / start of
BASIC code
- 1k - $C00-$FFF - Text and LoRes Graphics page 3 (not
visible)
- 4k - $1000-$1FFF - code space
- 8k - $2000-$3FFF - High Res Page #1 (HGR)
- 8k - $4000-$5FFF - High Res Page #2 (HGR2)
- 8k - $6000-$7FFF - High Res Page #3 (not visible) / code
space
- 4k x 4 - $8000, $9000, $A000, $B000 - code space & DOS
3.3
- 4k - $C000-$CFFF - soft-switches & peripheral
space
- 12k - $D000-$FFFF - system ROM vs. 16k Bank Switched
RAM
- It is non-destructive
- When it tests RAM it saves the byte being tested, then
restores it
- When it has to relocate the test engine code into BSR, it
saves / restores that memory
- It has NOT been written to work with interrupts
- It is NOT setup to test RAM in native IIgs mode - just 8-bit
emulation
- It has help screens
- pressing the '?' key will bring up general help
- press-[OpenApple][Key] to get help for that [Key]
function
- on a ][+ press paddle-button-0[Key] get help for that
[Key]
- How the test engine works...
- It writes then reads a 00 value to test for bits stuck
high
- It writes then reads a FF value to test for bits stuck
low
- Because each bit is on a different DRAM chip on a ][, ][+,
//e it doesn't read/write bit patterns
- The test engine uses indexed addressing when testing zero
page
- The test engine uses indirect, indexed addressing for all
other tests
- The test engine relocates to BSR1 $D900 when testing AUX
&
RamWorks
48k RAM
- The test engine relocates to $300 when testing RAM in its
own code space
- As for all the other RAM cards...
|