Routines |
Up: Map | Next: 23884 |
|
||||
First short block of data on the tape.
Start by copying the routine below, starting at 23834, to near the top of RAM (65000)
|
||||
23820 | LD HL,23834 | |||
23823 | LD DE,65000 | |||
23826 | LD BC,60 | 60 bytes of code to copy | ||
23829 | LDIR | Copy the code | ||
23831 | JP 65000 | ...now jump there and execute the code | ||
Start of code that is copied to 65000
|
||||
23834 | LD SP,65530 | Put the stack pointer (nearly) at the top of RAM | ||
23837 | LD IX,25001 | IX = address pointer at start of data block to LOAD | ||
23841 | LD DE,39000 | Data block length (code up to RAM address 64000) | ||
23844 | LD A,255 | Indicates a data block to load (rather than header) | ||
23846 | SCF | Sets the carry flag, which tells the ROM routine to perform a LOAD | ||
The next 4 instructions are part of the ROM loading routine just before 1377, executed here just before the jump there at 23854 (as it's loading data, not a header block).
|
||||
23847 | INC D | |||
23848 | EX AF,AF' | |||
23849 | DEC D | |||
23850 | DI | |||
23851 | LD HL,65023 | This is the address that the code in the following instructions (starting from 23857) will be at after the copy at the start of this routine. | ||
23854 | JP 1377 | Launch the ROM loading routine | ||
The following code is copied to 65023 and is executed from there once the game has loaded (see this address for disassembly).
|
||||
23857 | LD HL,25001 | |||
23860 | LD DE,39000 | |||
23863 | LD A,(HL) | |||
23864 | XOR 102 | |||
23866 | RRCA | |||
23867 | XOR L | |||
23868 | LD (HL),A | |||
23869 | INC HL | |||
23870 | DEC DE | |||
23871 | LD A,D | |||
23872 | OR E | |||
23873 | JR NZ,23863 | |||
23875 | LD A,2 | |||
23877 | LD (23659),A | |||
23880 | EI | |||
23881 | JP 62283 |
Up: Map | Next: 23884 |