Prev: BAC3 Up: Map Next: BB2F
BAE1: Print Room Graphic
Used by the routine at Print_RoomImage.
Input
IX Pointer to room image data
Print_RoomGraphic BAE1 CALL SwitchNormalScreenOutput Call SwitchNormalScreenOutput.
BAE4 LD BC,$1821 BC=1821.
BAE7 CALL $0DD9 Call CL_SET.
Reset graphic display area.
BAEA LD HL,$5C8F Point HL at ATTR-T which holds the current attribute value.
BAED LD A,(HL) Fetch the attribute byte.
BAEE AND %00111000 Keep only the PAPER bits 3-5.
BAF0 RRA Move the PAPER bits into the INK bits.
BAF1 RRA
BAF2 RRA
BAF3 LD B,A Store the result in B.
BAF4 LD A,(HL) Fetch the attribute byte again.
BAF5 AND %11111000 Keep everything except the INK bits.
BAF7 OR B Combine the two values.
BAF8 LD (HL),A Write the result back to *ATTR-T.
BAF9 LD BC,$0200 Set a byte counter in BC of 0200.
Print_RoomGraphic_Loop BAFC PUSH BC Stash the byte counter on the stack.
BAFD LD HL,$BD75 HL=BD75.
BB00 LD B,$08 B=08.
BB02 LD C,(IX+$00) C=*IX+00.
BB05 INC IX Increment IX by one.
BB07 JR Print_RoomGraphic_1 Jump to Print_RoomGraphic_1.
Print_RoomGraphic_0 BB09 INC HL Increment HL by one.
Print_RoomGraphic_1 BB0A SRL C Shift C right.
BB0C JR NC,Print_RoomGraphic_2 Jump to Print_RoomGraphic_2 if HL is greater than or equal to B.
BB0E LD A,(IX+$00) A=*IX+00.
BB11 INC IX Increment IX by one.
BB13 JR Print_RoomGraphic_3 Jump to Print_RoomGraphic_3.
Print_RoomGraphic_2 BB15 XOR A A=00.
Print_RoomGraphic_3 BB16 LD (HL),A Write A to *HL.
BB17 DJNZ Print_RoomGraphic_0 Decrease counter by one and loop back to Print_RoomGraphic_0 until counter is zero.
BB19 LD DE,$BD75 DE=BD75.
BB1C CALL $0B03 Call PO_FETCH.
BB1F CALL $0B7F Call PR_ALL.
BB22 CALL $0ADC Call PO_STORE.
BB25 POP BC Restore the byte counter from the stack.
BB26 DEC BC Decrease the byte counter by one.
BB27 LD A,C Jump back to Print_RoomGraphic_Loop until the byte counter is zero.
BB28 OR B
BB29 JR NZ,Print_RoomGraphic_Loop
BB2B CALL $0D4D Call TEMPS.
BB2E RET Return.
Prev: BAC3 Up: Map Next: BB2F