Prev: A5C4 Up: Map Next: A63A
A5CD: Process Text Command
Used by the routines at ProcessTextStream and A6D3.
Input
IX Pointer to text data
ProcessTextCommand A5CD LD A,(IX+$00) A=*IX+00.
A5D0 BIT 7,A Jump to ProcessTextCommand_2 if bit 7 of A is not set.
A5D2 JR Z,ProcessTextCommand_2
A5D4 AND %01111111 Keep only bits 0-6.
A5D6 LD D,A D=A.
A5D7 LD E,(IX+$01) E=*IX+01.
A5DA INC IX Increment IX by one.
A5DC AND %11110000 Keep only bits 4-7.
A5DE CP $30 Jump to A647 if A is equal to 30.
A5E0 JR Z,$A647
A5E2 CP $20 Jump to A647 if A is equal to 20.
A5E4 JR Z,$A647
A5E6 CP $60 Jump to A647 if A is equal to 60.
A5E8 JR Z,$A647
This entry point is used by the routine at A83A.
ProcessTextCommand_0 A5EA CALL $A887 Call A887.
ProcessTextCommand_1 A5ED INC IX Increment IX by one.
A5EF OR %00000001 Set bit 0 to indicate there is further text to print.
A5F1 RET Return.
ProcessTextCommand_2 A5F2 CP $20 Jump to ProcessTextCommand_5 if A is less than 20.
A5F4 JR C,ProcessTextCommand_5
A5F6 CP $60 Jump to A83A if A is greater than 60.
A5F8 JP NC,$A83A
A5FB CP $40 Jump to ProcessTextCommand_4 if A is less than 40.
A5FD JR C,ProcessTextCommand_4
A5FF AND %00011111 Keep only bits 0-4.
A601 INC A Increment A by one.
A602 LD B,A B=A.
A603 PUSH IX HL=IX (using the stack).
A605 POP HL
A606 INC HL Increment HL by one.
A607 LD C,$00 C=00.
ProcessTextCommand_3 A609 CALL $A990 Call A990.
A60C CALL $A9B7 Call A9B7.
A60F DJNZ ProcessTextCommand_3 Decrease counter by one and loop back to ProcessTextCommand_3 until counter is zero.
A611 PUSH HL IX=HL (using the stack).
A612 POP IX
A614 LD A,C A=C.
A615 AND A Set flags.
A616 JR NZ,ProcessTextCommand_1 Jump to ProcessTextCommand_1 if HL is not equal to A.
A618 DEC IX Decrease IX by one.
A61A JR ProcessTextCommand_1 Jump to ProcessTextCommand_1.
ProcessTextCommand_4 A61C CALL $A9B7 Call A9B7.
A61F JR ProcessTextCommand_1 Jump to ProcessTextCommand_1.
ProcessTextCommand_5 A621 PUSH DE Stash DE on the stack.
A622 LD E,A E=A.
A623 LD D,$00 D=00.
A625 LD HL,$A55D HL=A55D+(DE*02).
A628 ADD HL,DE
A629 ADD HL,DE
A62A LD E,(HL) E=*HL.
A62B INC HL Increment HL by one.
A62C LD D,(HL) D=*HL.
A62D EX DE,HL Exchange the DE and HL registers.
A62E POP DE Restore DE from the stack.
A62F CP $1D Jump to IndirectJump if A is greater than or equal to 1D.
A631 JR NC,IndirectJump
A633 CALL IndirectJump Call IndirectJump.
A636 JR Z,ProcessTextCommand_1 Jump to ProcessTextCommand_1 if A is equal to 1D.
A638 JR ProcessTextCommand_0 Jump to ProcessTextCommand_0.
Prev: A5C4 Up: Map Next: A63A