Prev: C29C Up: Map Next: C306
C2BA: Process Screen Character
Used by the routine at CheckTVFlagAndProcess.
Input
A Character code
ProcessScreenCharacter C2BA PUSH HL Stash HL, BC and AF on the stack.
C2BB PUSH BC
C2BC PUSH AF
C2BD LD HL,($C1F8) HL=*C1F8.
C2C0 LD A,($C1FA) C=*C1FA.
C2C3 LD C,A
C2C4 POP AF Restore AF from the stack.
C2C5 PUSH AF Stash AF on the stack.
C2C6 CP $0D Jump to ProcessScreenCharacter_2 if A is not equal to 0D.
C2C8 JR NZ,ProcessScreenCharacter_2
ProcessScreenCharacter_0 C2CA LD A,($A019) A=*A019.
C2CD CP $0F Jump to ProcessScreenCharacter_1 if A is not equal to 0F.
C2CF JR NZ,ProcessScreenCharacter_1
C2D1 CALL ScrollScreenAndResetDisplay Call ScrollScreenAndResetDisplay.
C2D4 LD A,$FF A=FF.
ProcessScreenCharacter_1 C2D6 INC A Increment A by one.
C2D7 LD ($A019),A Write A to *A019.
C2DA LD HL,$5020 HL=5020 (screen buffer location).
C2DD LD C,$02 C=02.
C2DF CALL UpdateScreenDisplay Call UpdateScreenDisplay.
C2E2 LD A,($C128) A=*C128.
C2E5 AND A Set flags.
C2E6 LD A,$24 A=24.
C2E8 JR Z,ProcessScreenCharacter_3 Jump to ProcessScreenCharacter_3 if A is equal to A.
C2EA LD A,$12 A=12.
C2EC JR ProcessScreenCharacter_3 Jump to ProcessScreenCharacter_3.
ProcessScreenCharacter_2 C2EE CALL PrintCharacter Call PrintCharacter.
C2F1 LD A,($C1F5) A=*ScreenWidth.
C2F4 DEC A Decrease A by one.
C2F5 JP Z,ProcessScreenCharacter_0 Jump to ProcessScreenCharacter_0 if A is zero.
ProcessScreenCharacter_3 C2F8 LD ($C1F5),A Write A to *ScreenWidth.
C2FB LD ($C1F8),HL Write HL to *C1F8.
C2FE LD A,C Write C to *C1FA.
C2FF LD ($C1FA),A
C302 POP AF Restore AF, BC and HL from the stack.
C303 POP BC
C304 POP HL
C305 RET Return.
Prev: C29C Up: Map Next: C306