Prev: E686 Up: Map Next: E6E6
E691: Process Character Attribute
Used by the routine at CharacterAction_Watson.
Follows the character link for this attribute, and stops when the link runs out.
ProcessCharacterAttribute E691 CALL RejectLowCharacterAttribute Return if the character attribute is below 32.
E694 RET Z
Get character attribute.
E695 CALL GetCharacterAttribute Call GetCharacterAttribute to read the character's attribute.
E698 LD B,A Use the get character attribute result as the count.
ProcessCharacterAttribute_Loop E699 LD IX,$9FF6 Point at the object display link.
ProcessCharacterAttribute_CountCharacterRepeat E69D DJNZ ProcessCharacterAttribute_Next Count the next character and repeat from ProcessCharacterAttribute_Next.
E69F CALL FetchObjectPointerFromStack Jump back to ProcessCharacterAttribute_Loop while the object pointer is zero.
E6A2 JR Z,ProcessCharacterAttribute_Loop
E6A4 JR ProcessCharacterAttribute_CountCharacterRepeat Try the next object from ProcessCharacterAttribute_CountCharacterRepeat.
Compare this object pointer with the list head.
ProcessCharacterAttribute_Next E6A6 PUSH IX Point HL at the object display link and DE at 9FF0+06 and clear the carry.
E6A8 POP HL
E6A9 LD DE,$9FF6
E6AC AND A
E6AD SBC HL,DE See whether this object pointer is 9FF0+06.
E6AF JR Z,ProcessCharacterAttribute_TestActionSucceeded Jump ahead to ProcessCharacterAttribute_TestActionSucceeded if the two pointers meet.
E6B1 PUSH IX Take the police message, then call PrintTextAndHandleControlCharacters to print the police message.
E6B3 LD HL,$6F80
E6B6 CALL PrintTextAndHandleControlCharacters
ProcessCharacterAttribute_TestActionSucceeded E6B9 OR %00000001 Reset the zero flag.
E6BB RET Return.
Named from the script commands at F326 and F3BC.
Individual script handlers. Each one ends by returning success or by bailing out through ParseInputNumber_ReturnZero.
E6BC DEFB $0D,$0C Display record read by ProcessDisplayRecord: flags 0D value 0C.
Run by CA64 after the display record at E6BC.
ProcessCharacterAttribute_TestCount E6BE LD A,($A035) Go to ProcessCharacterAttribute_Succeeded if no object carries this id.
E6C1 CALL ScanObjects
E6C4 JR Z,ProcessCharacterAttribute_Succeeded
E6C6 LD E,(IX+$09) Read the low byte of the text pointer and read the high byte of the text pointer.
E6C9 LD D,(IX+$0A)
E6CC LD HL,$6BB7 Take the character busy message.
Print text and handle control characters.
E6CF CALL PrintTextAndHandleControlCharacters Call PrintTextAndHandleControlCharacters to print this message.
E6D2 LD HL,$0000 Call ShiftTextPointer to handle the picture for this message.
E6D5 AND A
E6D6 SBC HL,DE
E6D8 CALL ShiftTextPointer
E6DB LD A,$22 Print a quotation mark and start a new line.
E6DD CALL Print_Character
E6E0 CALL PrintNewline
ProcessCharacterAttribute_Succeeded E6E3 OR %00000001 Reset the zero flag.
E6E5 RET Return.
Prev: E686 Up: Map Next: E6E6