Prev: 5F29 Up: Map Next: 5F93
5F38: Main entry point (continued)
Used by the routine at 5F15.
5F38 LD HL,$5FAB Fill memory with hashes from 5FAB up to the top of RAM
5F3B LD BC,$A059
5F3E LD SP,$5C00 Put the stack somewhere safe
5F41 LD A,($5FA8) Get the next hash byte
5F44 LD D,A
5F45 LD E,$0B
5F47 LD A,D
5F48 ADD A,A Shift left 4 times
5F49 ADD A,A
5F4A ADD A,A
5F4B ADD A,A
5F4C ADD A,D Add the other values
5F4D ADD A,E
5F4E LD D,A Store for next iteration
5F4F LD (HL),A Store next hash byte
5F50 INC HL Onto the next address
5F51 DEC BC
5F52 LD A,B All done yet?
5F53 OR C
5F54 JR NZ,$5F47 No, loop back round again
5F56 CALL $5F93 Get another hash byte
5F59 CALL $5D80 Scroll the main game message across screen
5F5C LD A,($6066) Store an address from the memory hash in HL (8000)
5F5F LD L,A
5F60 LD A,($60E6)
5F63 LD H,A
5F64 PUSH HL Remember this
5F65 LD A,($FC4F) Store an address from the memory hash in DE (03C3)
5F68 LD E,A
5F69 LD A,($600F)
5F6C LD D,A
5F6D POP IX Restore $8000 into IX - start of memory block
5F6F SCF Set LOAD, not VERIFY
5F70 LD A,$FF Standard value for a headerless block
5F72 INC D Reset the zero flag and swap AF
5F73 EX AF,AF'
5F74 DEC D
5F75 LD A,($6366) Store an address from the memory hash in HL (8000)
5F78 LD L,A
5F79 LD A,($63E6)
5F7C LD H,A
5F7D PUSH HL Remember this - this is the entry point for the next bit of the loader
5F7E IN A,($FE) Read the EAR flag
5F80 RRA
5F81 AND $20
5F83 OR $01 Set the border colour to blue. This will create blue + yellow borders when loading
5F85 LD C,A
5F86 CP A Set the zero flag
5F87 PUSH AF Store an address from the memory hash in HL (056B)
5F88 LD A,($6587)
5F8B LD L,A
5F8C LD A,($6485)
5F8F LD H,A
5F90 POP AF
5F91 PUSH HL Jump to 056B - this is near the start of the ROM LD-BYTES routine, but past setting the initial border (which is done above). Control returns to 8000 when the first headerless block has loaded.
5F92 RET
Prev: 5F29 Up: Map Next: 5F93