Prev: 793D Up: Map Next: 79A9
7960: Carry out the parsed command, and let the world take its turn
Used by the routine at START.
OBEY 7960 XOR A From the first frame
7961 LD (ALL_ACTION),A
7964 LD IY,COMMAND_FRAME
7968 LD HL,QUESTION_WAITING A reply was just fitted into an unfinished command: clear that, and go on from the next frame
796B CP (HL)
796C LD (HL),A
796D JP NZ,FRAME_DONE
OBEY_0 7970 CALL PARSE_ACTION Work out this frame's command; nothing left, and the line is done
7973 JR NZ,OBEY_1
7975 XOR A No more commands on this line
7976 LD (MORE_COMMANDS),A
7979 RET
OBEY_1 797A CALL TRY_IT Check it; SAY_WHY_NOT when it will not do
797D JP Z,SAY_WHY_NOT
7980 LD A,$01 Really do it
7982 LD (DOING_IT),A
7985 CALL NARRATE_ACTION Tell the player what was done (NARRATE_ACTION)
7988 CALL DO_ACTION Carry it out -- the player's MOVE was reached from here
This entry point is used by the routine at MATCH_PATTERN.
TURN_OVER 798B CALL END_OF_TURN The world's turn (END_OF_TURN)
This entry point is used by the routine at TARGET_TROUBLE.
OBEY_NEXT 798E LD A,(ALL_ACTION) Asked to go round the same frame again?
7991 AND A
7992 JR NZ,OBEY_0
This entry point is used by the routine at TARGET_TROUBLE.
FRAME_DONE 7994 LD A,(COMMAND_FRAMES) Count the frame off; none left, done
7997 DEC A
7998 LD (COMMAND_FRAMES),A
799B RET Z
799C LD BC,$FFE8 On to the next frame down, passing over ALL EXCEPT's exception frames
OBEY_2 799F ADD IY,BC
79A1 BIT 6,(IY+$01)
79A5 JR NZ,OBEY_2
79A7 JR OBEY_0
Prev: 793D Up: Map Next: 79A9