Prev: 83EF Up: Map Next: 84B3
8451: Load Game
LoadGame 8451 PUSH IX Stash IX and DE on the stack.
8453 PUSH DE
Load "flags".
8454 LD A,$FF Set the load as a "data block".
8456 SCF Set the carry flag.
8457 LD IX,$B6EB Set the start address to; B6EB.
845B LD DE,$001D Set the block length to; $001D bytes.
845E CALL LoadBlock Call LoadBlock.
Load "objects".
8461 LD A,$FF Set the load as a "data block".
8463 SCF Set the carry flag.
8464 LD IX,$C11B Set the start address to; Objects.
8468 LD DE,$0615 Set the block length to; $0615 bytes.
846B CALL LoadBlock Call LoadBlock.
Load...
846E LD A,$FF Set the load as a "data block".
8470 SCF Set the carry flag.
8471 LD IX,$CA84 Set the start address to; CA84.
8475 LD DE,$00BF Set the block length to; $00BF bytes.
8478 CALL LoadBlock Call LoadBlock.
Load "locations".
847B LD A,$FF Set the load as a "data block".
847D SCF Set the carry flag.
847E LD IX,$BA8A Set the start address to; Locations.
8482 LD DE,$05D9 Set the block length to; $05D9 bytes.
8485 CALL LoadBlock Call LoadBlock.
Success!
8488 DI Disable interrupts.
8489 LD HL,$B6EB Call ThreeByteCopy using HL=B6EB and DE=$C9E2.
848C LD DE,$C9E2
848F CALL ThreeByteCopy
8492 POP DE Restore DE and IX from the stack.
8493 POP IX
8495 JP $82B3 Jump to 82B3.
Load Block
LoadBlock 8498 CALL $0556 Call LD_BYTES.
849B RET C Return if the carry flag is set.
849C LD A,$01 Write $01 to WaitCoutdown.
849E LD ($B701),A
84A1 LD HL,$B357 HL="tape error - hit any key to restart program[0x15]"
84A4 CALL PrintMsg Call PrintMsg.
LoadBlock_Loop 84A7 XOR A Read from the keyboard port.
84A8 IN A,($FE)
84AA AND %00011111 A pressed key from any line will set its respective bit; bit 0 (outer key) to bit 4 (inner key). Hence keep only bits 0-4 for the check.
84AC CP $1F Loop back to LoadBlock_Loop until any key has been pressed.
84AE JR Z,LoadBlock_Loop
84B0 JP ReStart Jump to ReStart.
Prev: 83EF Up: Map Next: 84B3