Prev: 84B9 Up: Map Next: 855A
84CC: SAVE: four blocks to tape, then verified
Four headerless blocks through the ROM's SA-BYTES: the variables at SAVED_STATE, the objects at PLAYER, the timers and the characters at TIMERS, and the rooms at ROOM0 -- the same four START keeps a copy of. Then the tape is rewound and each block checked with the ROM's LD-BYTES in verify mode; an error says so and goes back to the game.
Three bytes of a character script at BARD_ORDER_STEP, which the game rewrites as it runs (BARD_SETS_STEP), are carried in the first three of the variables block; DO_LOAD puts them back.
DO_SAVE 84CC PUSH IX
84CE PUSH DE
84CF LD DE,SAVED_STATE The script bytes into the variables block
84D2 LD HL,BARD_ORDER_STEP
84D5 CALL COPY_THREE
84D8 LD A,$01 "start TAPE then PRESS ANY key."
84DA LD (INPUT_STYLE),A
84DD LD HL,MSG_START_T_A_P
84E0 CALL RUN_MESSAGE_HL
84E3 CALL NEW_KEYPRESS Wait for the key
84E6 LD A,$FF Save the four blocks
84E8 LD IX,SAVED_STATE
84EC LD DE,$001D
84EF CALL $04C2
84F2 LD A,$FF
84F4 LD IX,PLAYER
84F8 LD DE,$0615
84FB CALL $04C2
84FE LD A,$FF
8500 LD IX,TIMERS
8504 LD DE,$00BF
8507 CALL $04C2
850A LD A,$FF
850C LD IX,ROOM0
8510 LD DE,$05D9
8513 CALL $04C2
8516 LD HL,MSG_R_E_W_I "REWIND and PREPARE TAPE for VERIFICATION -- then hit ANY key."
8519 CALL RUN_MESSAGE_HL
851C CALL NEW_KEYPRESS
851F LD A,$FF Verify them
8521 AND A
8522 LD IX,SAVED_STATE
8526 LD DE,$001D
8529 CALL VERIFY_BLOCK
852C LD A,$FF
852E AND A
852F LD IX,PLAYER
8533 LD DE,$0615
8536 CALL VERIFY_BLOCK
8539 LD A,$FF
853B AND A
853C LD IX,TIMERS
8540 LD DE,$00BF
8543 CALL VERIFY_BLOCK
8546 LD A,$FF
8548 AND A
8549 LD IX,ROOM0
854D LD DE,$05D9
8550 CALL VERIFY_BLOCK
This entry point is used by the routine at VERIFY_BLOCK.
TAPE_DONE 8553 DI
8554 POP DE
8555 POP IX
8557 JP SPECIAL_WORD_DONE
Prev: 84B9 Up: Map Next: 855A