Prev: 47811 Up: Map Next: 47919
47841: Print Room Graphic
Used by the routine at Print_RoomImage.
Input
IX Pointer to room image data
Print_RoomGraphic 47841 CALL SwitchNormalScreenOutput Call SwitchNormalScreenOutput.
47844 LD BC,6177 BC=6177.
47847 CALL 3545 Call CL_SET.
Reset graphic display area.
47850 LD HL,23695 Point HL at ATTR-T which holds the current attribute value.
47853 LD A,(HL) Fetch the attribute byte.
47854 AND %00111000 Keep only the PAPER bits 3-5.
47856 RRA Move the PAPER bits into the INK bits.
47857 RRA
47858 RRA
47859 LD B,A Store the result in B.
47860 LD A,(HL) Fetch the attribute byte again.
47861 AND %11111000 Keep everything except the INK bits.
47863 OR B Combine the two values.
47864 LD (HL),A Write the result back to *ATTR-T.
47865 LD BC,512 Set a byte counter in BC of 0512.
Print_RoomGraphic_Loop 47868 PUSH BC Stash the byte counter on the stack.
47869 LD HL,48501 HL=48501.
47872 LD B,8 B=8.
47874 LD C,(IX+0) C=*IX+0.
47877 INC IX Increment IX by one.
47879 JR Print_RoomGraphic_1 Jump to Print_RoomGraphic_1.
Print_RoomGraphic_0 47881 INC HL Increment HL by one.
Print_RoomGraphic_1 47882 SRL C Shift C right.
47884 JR NC,Print_RoomGraphic_2 Jump to Print_RoomGraphic_2 if HL is greater than or equal to B.
47886 LD A,(IX+0) A=*IX+0.
47889 INC IX Increment IX by one.
47891 JR Print_RoomGraphic_3 Jump to Print_RoomGraphic_3.
Print_RoomGraphic_2 47893 XOR A A=0.
Print_RoomGraphic_3 47894 LD (HL),A Write A to *HL.
47895 DJNZ Print_RoomGraphic_0 Decrease counter by one and loop back to Print_RoomGraphic_0 until counter is zero.
47897 LD DE,48501 DE=48501.
47900 CALL 2819 Call PO_FETCH.
47903 CALL 2943 Call PR_ALL.
47906 CALL 2780 Call PO_STORE.
47909 POP BC Restore the byte counter from the stack.
47910 DEC BC Decrease the byte counter by one.
47911 LD A,C Jump back to Print_RoomGraphic_Loop until the byte counter is zero.
47912 OR B
47913 JR NZ,Print_RoomGraphic_Loop
47915 CALL 3405 Call TEMPS.
47918 RET Return.
Prev: 47811 Up: Map Next: 47919