Routines |
Prev: 84B9 | Up: Map | Next: 8576 |
|
||||
SaveGame | 84CC | PUSH IX | Stash IX and DE on the stack. | |
84CE | PUSH DE | |||
84CF | LD DE,$B6EB | Call ThreeByteCopy with DE=B6EB and HL=$C9E2. | ||
84D2 | LD HL,$C9E2 | |||
84D5 | CALL ThreeByteCopy | |||
84D8 | LD A,$01 | Write $01 to WaitCoutdown. | ||
84DA | LD ($B701),A | |||
84DD | LD HL,$B342 | HL="start tape then press any key" | ||
84E0 | CALL PrintMsg | Call PrintMsg. | ||
84E3 | CALL DebounceAnyKey | Call DebounceAnyKey. | ||
Save "flags".
|
||||
84E6 | LD A,$FF | Set the save as a "data block". | ||
84E8 | LD IX,$B6EB | Set the start address to; B6EB. | ||
84EC | LD DE,$001D | Set the block length to; $001D bytes. | ||
84EF | CALL $04C2 | Call SA_BYTES. | ||
Save "objects".
|
||||
84F2 | LD A,$FF | Set the save as a "data block". | ||
84F4 | LD IX,$C11B | Set the start address to; Objects. | ||
84F8 | LD DE,$0615 | Set the block length to; $0615 bytes. | ||
84FB | CALL $04C2 | Call SA_BYTES. | ||
Save ...
|
||||
84FE | LD A,$FF | Set the save as a "data block". | ||
8500 | LD IX,$CA84 | Set the start address to; $CA84. | ||
8504 | LD DE,$00BF | Set the block length to; $00BF bytes. | ||
8507 | CALL $04C2 | Call SA_BYTES. | ||
Save "locations".
|
||||
850A | LD A,$FF | Set the save as a "data block". | ||
850C | LD IX,$BA8A | Set the start address to; Locations. | ||
8510 | LD DE,$05D9 | Set the block length to; $05D9 bytes. | ||
8513 | CALL $04C2 | Call SA_BYTES. | ||
Begin verification.
|
||||
8516 | LD HL,$B3A4 | HL="rewind and prepare tape for verification -- then hit any key" | ||
8519 | CALL PrintMsg | Call PrintMsg. | ||
851C | CALL DebounceAnyKey | Call DebounceAnyKey. | ||
Verify "flags".
|
||||
851F | LD A,$FF | Set the load as a "data block". | ||
8521 | AND A | Reset the carry flag. | ||
8522 | LD IX,$B6EB | Set the start address to; B6EB. | ||
8526 | LD DE,$001D | Set the block length to; $001D bytes. | ||
8529 | CALL VerifyBlock | Call VerifyBlock. | ||
Verify "objects".
|
||||
852C | LD A,$FF | Set the load as a "data block". | ||
852E | AND A | Reset the carry flag. | ||
852F | LD IX,$C11B | Set the start address to; Objects. | ||
8533 | LD DE,$0615 | Set the block length to; $0615 bytes. | ||
8536 | CALL VerifyBlock | Call VerifyBlock. | ||
Verify ...
|
||||
8539 | LD A,$FF | Set the load as a "data block". | ||
853B | AND A | Reset the carry flag. | ||
853C | LD IX,$CA84 | Set the start address to; $CA84. | ||
8540 | LD DE,$00BF | Set the block length to; $00BF bytes. | ||
8543 | CALL VerifyBlock | Call VerifyBlock. | ||
Verify "locations".
|
||||
8546 | LD A,$FF | Set the load as a "data block". | ||
8548 | AND A | Reset the carry flag. | ||
8549 | LD IX,$BA8A | Set the start address to; Locations. | ||
854D | LD DE,$05D9 | Set the block length to; $05D9 bytes. | ||
8550 | CALL VerifyBlock | Call VerifyBlock. | ||
Success!
|
||||
SaveGame_Done | 8553 | DI | Disable interrupts. | |
8554 | POP DE | Restore DE and IX from the stack. | ||
8555 | POP IX | |||
8557 | JP $82B3 | Jump to 82B3. | ||
Verify block.
|
||||
VerifyBlock | 855A | CALL $0556 | Call LD_BYTES. | |
855D | RET C | Return if the carry flag is set. | ||
855E | LD A,$01 | Write $01 to WaitCoutdown. | ||
8560 | LD ($B701),A | |||
8563 | LD HL,$B381 | HL="tape error - hit any key to continue[0x15]" | ||
8566 | CALL PrintMsg | Call PrintMsg. | ||
This is almost a carbon copy of WaitForKey.
|
||||
VerifyBlock_WaitForKey | 8569 | XOR A | Read from the keyboard port. | |
856A | IN A,($FE) | |||
856C | 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. | ||
856E | CP $1F | Loop back to VerifyBlock_WaitForKey until any key has been pressed. | ||
8570 | JR Z,VerifyBlock_WaitForKey | |||
8572 | POP DE | Restore DE from the stack. | ||
8573 | JP SaveGame_Done | Jump to SaveGame_Done. |
Prev: 84B9 | Up: Map | Next: 8576 |