![]() |
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 |