RESET AND EARLY STARTUP OPERATION
When the Amiga is turned on or externally reset, the memory map is in a special state. An
additional copy of the system ROM responds starting at memory location $00000000. The
system RAM that would normally be located at this address is not available. On some
Amiga models, portions of the RAM still respond. On other models, no RAM responds.
Software must assume that memory is not available. The OVL bit in one of the 8520 Chips
disables the overlay (See Appendix F for the bit location).
The Amiga System ROM contains an ID code as the first word. The value of the ID code
may change in the future. The second word of the ROM contains a JMP instruction ($4ef9).
The next two words are used as the initial program counter by the 68000 processor.
The 68000 "RESET" instruction works much like external reset or power on. All memory
and AUTOCONFIGTM cards disappear, and the ROM image appears at location $00000000.
The difference is that the CPU continues execution with the next instruction. Since RAM
may not be available, special care is needed to write reboot code that will reliably reboot
all Amiga models.
Here is a source code listing of the only supported reboot code:
; ---- The *only* supported reboot code
CNOP
0,4
MagicResetCode:
lea.l
2,a0
RESET
jmp
(a0)
The RESET instruction must be executed when the CPU is at the Supervisor privilege level.
If running under Exec, the following code must be used:
_ColdReboot:
move.l
4,a6
lea.l
MagicResetCode(pc),a5 ;Location of code to trap to
jsr
_LVOSupervisor(a6)
;IMPORTANT: Must be longword aligned
;Point to JMP instruction at start of ROM
;all RAM goes away now!
;Rely on prefetch to execute this instruction
;Get a pointer to ExecBase
;start code (must use JSR)
- System Control Hardware 219 -
Need help?
Do you have a question about the Amiga A1000 and is the answer not in the manual?
Questions and answers