![]() |
Routines |
| Prev: 84B9 | Up: Map | Next: 855A |
|
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 |