Prev: B77E Up: Map Next: B91F
B77F: Process Text Token Stream
Used by the routine at ProcessLocationDisplay.
Output
F Zero flag set if end of stream reached
ProcessTextTokenStream B77F LD A,($B77E) Jump to ProcessTextTokenStream_1 if *B77E is not equal to FF.
B782 CP $FF
B784 JR NZ,ProcessTextTokenStream_1
ProcessTextTokenStream_0 B786 LD HL,($B6D6) HL=*B6D6.
B789 LD A,L Return if HL is zero.
B78A OR H
B78B RET Z
B78C XOR A Write 00 to *B77E.
B78D LD ($B77E),A
B790 PUSH HL IX=HL (using the stack).
B791 POP IX
B793 LD L,(IX-$02) L=*IX-02.
B796 LD H,(IX-$01) H=*IX-01.
B799 LD ($B6D6),HL Write HL to *B6D6.
B79C LD L,(IX+$00) L=*IX+00.
B79F LD H,(IX+$01) H=*IX+01.
B7A2 CALL ProcessMemoryEntry Call ProcessMemoryEntry.
B7A5 INC HL Increment HL by two.
B7A6 INC HL
B7A7 PUSH HL IX=HL (using the stack).
B7A8 POP IX
ProcessTextTokenStream_1 B7AA LD A,(IX+$00) A=*IX+00.
B7AD INC IX Increment IX by one.
B7AF BIT 7,A Jump to ProcessTextTokenStream_3 if bit 7 of A is not set.
B7B1 JR Z,ProcessTextTokenStream_3
B7B3 LD D,A D=A.
B7B4 LD E,(IX+$00) E=*IX+00.
B7B7 INC IX Increment IX by one.
B7B9 AND %01110000 Keep only bits 4-6.
B7BB CP $60 Jump to ProcessTextTokenStream_2 if A is equal to 60.
B7BD JR Z,ProcessTextTokenStream_2
B7BF CP $30 Jump to ProcessTextTokenStream_2 if A is equal to 30.
B7C1 JR Z,ProcessTextTokenStream_2
B7C3 CP $20 Return if A is not equal to 20.
B7C5 RET NZ
ProcessTextTokenStream_2 B7C6 LD A,$FF Write FF to *B77E.
B7C8 LD ($B77E),A
B7CB AND A Set flags.
B7CC RET Return.
ProcessTextTokenStream_3 B7CD CP $20 Jump to ProcessTextTokenStream_6 if A is less than 20.
B7CF JR C,ProcessTextTokenStream_6
B7D1 CP $60 Jump to ProcessTextTokenStream_4 if A is less than 60.
B7D3 JR C,ProcessTextTokenStream_4
B7D5 CALL GetCommonWord Call GetCommonWord.
B7D8 OR %00000001 Set bit 0.
B7DA LD A,$00 A=00.
B7DC RET Return.
ProcessTextTokenStream_4 B7DD AND %00011111 Keep only bits 0-4.
B7DF INC A Increment A by one.
B7E0 LD B,A B=A.
B7E1 PUSH IX HL=IX (using the stack).
B7E3 POP HL
B7E4 INC HL Increment HL by one.
B7E5 LD C,$00 C=00.
ProcessTextTokenStream_5 B7E7 CALL RotateAndExtractCharacterCode Call RotateAndExtractCharacterCode.
B7EA DJNZ ProcessTextTokenStream_5 Decrease counter by one and loop back to ProcessTextTokenStream_5 until counter is zero.
B7EC PUSH HL IX=HL (using the stack).
B7ED POP IX
B7EF LD A,C A=C.
B7F0 AND A Jump to ProcessTextTokenStream_1 if HL is not equal to A.
B7F1 JR NZ,ProcessTextTokenStream_1
B7F3 DEC IX Decrease IX by one.
B7F5 JR ProcessTextTokenStream_1 Jump to ProcessTextTokenStream_1.
ProcessTextTokenStream_6 B7F7 CP $02
B7F9 JR NZ,ProcessTextTokenStream_8
B7FB LD E,(IX+$00)
B7FE LD D,(IX+$01)
B801 ADD IX,DE
ProcessTextTokenStream_7 B803 DEC IX
B805 JR ProcessTextTokenStream_1
ProcessTextTokenStream_8 B807 CP $0B
B809 JR NZ,ProcessTextTokenStream_9
B80B LD E,(IX+$00)
B80E LD D,(IX+$01)
B811 PUSH IX
B813 POP HL
B814 LD A,$02
B816 CALL AllocateMemory
B819 LD (IX+$00),L
B81C LD (IX+$01),H
B81F PUSH HL
B820 LD HL,($B6D6)
B823 LD ($B6D6),IX
B827 LD (IX-$02),L
B82A LD (IX-$01),H
B82D POP HL
B82E ADD HL,DE
B82F PUSH HL
B830 POP IX
B832 JR ProcessTextTokenStream_7
ProcessTextTokenStream_9 B834 CP $1D
B836 JP C,ProcessTextTokenStream_1
B839 JP ProcessTextTokenStream_0
This entry point is used by the routines at CheckFlagAndSetDisplayParameter, ProcessDisplayEntry and ProcessDisplayEntryAlternate.
ProcessTextTokenStream_10 B83C POP IX
B83E LD B,$03
ProcessTextTokenStream_11 B840 LD E,(HL)
B841 INC HL
B842 LD D,(HL)
B843 INC HL
B844 PUSH DE
B845 DJNZ ProcessTextTokenStream_11
B847 POP HL
B848 EX (SP),HL
B849 PUSH HL
B84A JP (IX)
B84C LD HL,($B18A)
B84F PUSH HL
B850 LD HL,($B188)
B853 PUSH HL
B854 LD HL,($B186)
B857 PUSH HL
B858 LD HL,($B18C)
B85B PUSH HL
B85C LD HL,$686A
B85F CALL PrintTextAndHandleControlCharacters
B862 RET
B863 JP ProcessObjectDisplayLogic
B866 NOP
B867 NOP
B868 NOP
B869 NOP
This entry point is used by the routine at DD35.
ProcessTextTokenStream_12 B86A PUSH AF
B86B LD IX,$9FEE
B86F CALL FetchObjectPointerFromStack
B872 JR Z,ProcessTextTokenStream_15
B874 LD C,(IX+$00)
B877 LD B,(IX+$01)
B87A LD ($B868),BC
B87E LD L,(IX-$02)
B881 LD H,(IX-$01)
B884 LD ($9FEC),HL
B887 CALL ProcessMemoryEntry
B88A POP AF
B88B PUSH AF
B88C AND A
B88D JR Z,ProcessTextTokenStream_13
B88F CALL ProcessTextTokenStream_16
B892 JR Z,ProcessTextTokenStream_15
ProcessTextTokenStream_13 B894 LD BC,($B868)
B898 LD ($A02B),BC
ProcessTextTokenStream_14 B89C CALL $AE7F
B89F CP $C0
B8A1 JR NZ,ProcessTextTokenStream_14
B8A3 LD HL,($A029)
B8A6 LD (HL),$90
ProcessTextTokenStream_15 B8A8 POP AF
B8A9 RET
ProcessTextTokenStream_16 B8AA LD HL,($B868)
B8AD LD ($A02B),HL
B8B0 XOR A
B8B1 LD ($A024),A
B8B4 LD HL,($9FF0)
B8B7 PUSH HL
B8B8 LD HL,$0000
B8BB LD ($9FF0),HL
ProcessTextTokenStream_17 B8BE CALL $AAB2
B8C1 JR Z,ProcessTextTokenStream_18
B8C3 CP $02
B8C5 JR NZ,ProcessTextTokenStream_19
ProcessTextTokenStream_18 B8C7 LD HL,($A02B)
B8CA LD A,(HL)
B8CB AND $F0
B8CD CP $C0
B8CF JR NZ,ProcessTextTokenStream_17
B8D1 LD (HL),$90
B8D3 LD A,$08
B8D5 CALL AllocateMemory
B8D8 LD HL,($9FEE)
B8DB LD ($9FEE),IX
B8DF LD (IX-$02),L
B8E2 LD (IX-$01),H
B8E5 LD HL,($9FF0)
B8E8 LD (IX+$05),L
B8EB LD (IX+$06),H
B8EE POP HL
B8EF LD ($9FF0),HL
B8F2 XOR A
B8F3 LD (IX+$01),A
B8F6 LD A,($A034)
B8F9 LD (IX+$00),A
B8FC LD A,($A024)
B8FF LD (IX+$07),A
B902 XOR A
B903 RET
ProcessTextTokenStream_19 B904 PUSH AF
B905 CALL $D87D
B908 POP AF
B909 POP HL
B90A LD ($9FF0),HL
B90D RET
This entry point is used by the routine at ProcessScriptDisplay.
ProcessTextTokenStream_20 B90E CALL CheckObjectInA036
B911 LD ($B866),IX
B915 LD E,(IX+$05)
B918 LD D,(IX+$06)
B91B PUSH DE
B91C POP IY
B91E RET
Prev: B77E Up: Map Next: B91F