Prev: B4A3 Up: Map Next: B4FD
B4C1: Find The First Noun
Used by the routines at InitialiseDisplayBuffer and ReadDisplaySetupFlag.
Finds the first noun. A value of 05 at DisplayMode takes the noun already prepared in the flag bytes. Otherwise, when bit 7 of DisplayModeFlag is clear, it scans objects from ObjectTablePointer with the handler at ProcessObjectEntryAlternate or ProcessObjectEntry.
FindFirstNoun B4C1 LD A,($A00F) Jump to CheckFlagAndSetDisplay if the display mode is 05.
B4C4 CP $05
B4C6 JR Z,CheckFlagAndSetDisplay
B4C8 LD A,($B173) Read the display mode flag.
B4CB BIT 7,A Go to FindFirstNoun_ProcessObjects if bit 7 of the display mode flag is clear.
B4CD JR Z,FindFirstNoun_ProcessObjects
This entry point is used by the routine at CheckFlagAndSetDisplay.
FindFirstNoun_NoAction B4CF LD A,$FF Set the zero flag.
B4D1 CP $FF
B4D3 RET Return.
FindFirstNoun_ProcessObjects B4D4 PUSH IY Keep the schedule entry and read the object table pointer.
B4D6 LD IX,($B17E)
B4DA LD A,($A01D) Read the object attribute value.
B4DD AND %00000001 Keep only bit 0.
B4DF LD ($A038),A Store it in the object attribute flag.
B4E2 LD A,($A00F) Compare *DisplayMode with 05.
B4E5 CP $05
B4E7 LD IY,$D39B Go to FindFirstNoun_ProcessLoop, keeping the picture record at ProcessObjectEntryAlternate, if the display mode is below 05.
B4EB JR C,FindFirstNoun_ProcessLoop
B4ED LD IY,$D36A Point at the routine at ProcessObjectEntry.
FindFirstNoun_ProcessLoop B4F1 CALL CheckFlagAndSetDisplay_ProcessPointer Call CheckFlagAndSetDisplay_ProcessPointer to follow the display pointer.
B4F4 CP $FF See whether the entry is the end marker.
B4F6 LD ($B17E),IX Store the object pointer at ObjectTablePointer.
B4FA POP IY Restore the saved schedule entry from the stack.
B4FC RET Return.
View the equivalent code in;
Prev: B4A3 Up: Map Next: B4FD