Prev: 49820 Up: Map Next: 49926
49850: Process Screen Character
Used by the routine at CheckTVFlagAndProcess.
Input
A Character code
ProcessScreenCharacter 49850 PUSH HL Stash HL, BC and AF on the stack.
49851 PUSH BC
49852 PUSH AF
49853 LD HL,(49656) HL=*49656.
49856 LD A,(49658) C=*49658.
49859 LD C,A
49860 POP AF Restore AF from the stack.
49861 PUSH AF Stash AF on the stack.
49862 CP 13 Jump to ProcessScreenCharacter_2 if A is not equal to 13.
49864 JR NZ,ProcessScreenCharacter_2
ProcessScreenCharacter_0 49866 LD A,(40985) A=*40985.
49869 CP 15 Jump to ProcessScreenCharacter_1 if A is not equal to 15.
49871 JR NZ,ProcessScreenCharacter_1
49873 CALL ScrollScreenAndResetDisplay Call ScrollScreenAndResetDisplay.
49876 LD A,255 A=255.
ProcessScreenCharacter_1 49878 INC A Increment A by one.
49879 LD (40985),A Write A to *40985.
49882 LD HL,20512 HL=20512 (screen buffer location).
49885 LD C,2 C=2.
49887 CALL UpdateScreenDisplay Call UpdateScreenDisplay.
49890 LD A,(49448) A=*49448.
49893 AND A Set flags.
49894 LD A,36 A=36.
49896 JR Z,ProcessScreenCharacter_3 Jump to ProcessScreenCharacter_3 if A is equal to A.
49898 LD A,18 A=18.
49900 JR ProcessScreenCharacter_3 Jump to ProcessScreenCharacter_3.
ProcessScreenCharacter_2 49902 CALL PrintCharacter Call PrintCharacter.
49905 LD A,(49653) A=*ScreenWidth.
49908 DEC A Decrease A by one.
49909 JP Z,ProcessScreenCharacter_0 Jump to ProcessScreenCharacter_0 if A is zero.
ProcessScreenCharacter_3 49912 LD (49653),A Write A to *ScreenWidth.
49915 LD (49656),HL Write HL to *49656.
49918 LD A,C Write C to *49658.
49919 LD (49658),A
49922 POP AF Restore AF, BC and HL from the stack.
49923 POP BC
49924 POP HL
49925 RET Return.
Prev: 49820 Up: Map Next: 49926