Hi all,
I am working on a project class where I have to design and build a 68k single board computer. I've gotten my hardware assembled and am trying to work out the kinks and verify function.
I've been provided with the test loop program below, intended to test RAM function. It's not working, though, and while I doubt it's a problem with the program, I am having a hard time troubleshooting the issue because I don't fully understand what the program is trying to do.
As I understand it, each time the program jumps into the do-nothing sub-routine, it has to push registers onto the stack first, and since the stack is a location in memory, this means the memory is getting used and working (if the program runs).
What is the address of the stack? Is it being assigned by the $8080 given on the first line? Is "SUPER_STACK" a sort of keyword used for that?
My system has 512 kb each of ROM and RAM. My decoding scheme uses address bits 16 and 17 to decide if a given address is RAM, ROM, or UART. So, I think valid memory address range should be:
$8000 - $FFFF
Code:
SUPER_STACK EQU $8080 ; MUST BE A VALID RAM LOCATION
START ORG $000000
DC.L SUPER_STACK
DC.L MAIN
ORG $000100
MAIN JSR RAM_TEST
JMP MAIN
RAM_TEST NOP
NOP
NOP
RTS
END MAIN
Thanks for any insight or pointers!
Scott