Quote:
You indicate that a variable "zero_page" should point to the start of the Loaded binary. Can this variable be anywere in memory?
If you search for zero_page in the source code you will find its definition
Code:
;configure memory - try to stay away from memory used by the system
;zero_page memory start address, $50 (80) consecutive Bytes required
; add 2 if I_flag = 2
zero_page = $a
and later the variable is used to organize the start of zero page locations used by the test
Code:
org zero_page
So it is not a variable to the test but a variable to the assembler to tell it where to start allocating bytes in zero page. The binary output of the assembler will be a continuous block of bytes from the lowest (zero page) to the highest byte (Reset/IRQ/NMI vector block) and unused or uninitialized areas are padded with $00 in this block.
Quote:
What does "org 0)" means?
org is an assembler directive and tells the assembler where to put things. In this case it simply means: start at location zero. So instead of org zero_page I used
Code:
; org zero_page
0000 = org 0 ;edited to provide binaries loading from 0
0000 : 00000000000000.. ds zero_page
so the binary output would actually start with location zero with padding up to where zero page addresses are actually allocated.
Quote:
How does setting PC to $0400 relate to the starting point of the binary?
This is where program execution starts and points the program counter to the first executable opcode in memory.
In general: For assembler directives and how they work please read the assembler manual. For how the test is configured refer to the source code which has quite a bit of explanation for each test parameter. The preferred assembler output of the test is Motorola or Intel Hex and not binary. The Hex formats carry all the information where things go and where to start while the binary does not.