![]() |
Routines |
| Prev: 53825 | Up: Map | Next: 53968 |
| 53887 | CALL 53825 | Copy room dimension data entry for current character's current room to temporary store location (34230) | ||
| 53890 | PUSH IX | Store IX | ||
| 53892 | CALL 53635 | Clear display buffers 1 & 2 | ||
| 53895 | EXX | Switch registers | ||
| 53896 | LD HL,61312 | Point HL at display buffer 1 | ||
| 53899 | LD DE,63424 | Point DE at display buffer 2 | ||
| 53902 | EXX | Switch registers | ||
| 53903 | LD HL,(34231) | For current character's current room, set H = room's right edge position and L = room's left edge position (chars) | ||
| 53906 | LD DE,(34233) | For current character's current room, set D = room's bottom edge position and E = room's top edge position (chars) | ||
| 53910 | LD IX,22528 | Point IX at first byte of attribute file | ||
| 53914 | LD B,0 | Set initial y-coordinate (characters) to zero | ||
| 53916 | LD A,B | Load A with current y-coordinate | ||
| 53917 | CP E | If y-coordinate of top of room is greater than current y-coordinate... | ||
| 53918 | JR C,53950 | ...then skip ahead to 53950 | ||
| 53920 | LD A,D | Load A with y-coordinate of bottom of room | ||
| 53921 | CP B | If y-coordinate of bottom of room is less than current y-coordinate... | ||
| 53922 | JR C,53950 | ...then skip ahead to 53950 | ||
| 53924 | LD C,0 | Set initial x-coordinate to zero | ||
| 53926 | LD A,C | Load A with current x-coordinate | ||
| 53927 | CP L | If x-coordinate of left of room is greater than current x-coordinate... | ||
| 53928 | JR C,53940 | ...then skip ahead to 53940 | ||
| 53930 | LD A,H | Load A with x-coordinate of right of room | ||
| 53931 | CP C | If x-coordinate of right of room is less than current x-coordinate... | ||
| 53932 | JR C,53940 | ...then skip ahead to 53940 | ||
| 53934 | EXX | Switch registers | ||
| 53935 | CALL 53977 | Advance pointers in display buffers and attribute file address to next character | ||
| 53938 | JR 53943 | Skip ahead to 53943 | ||
|
Current x-coordinate, C, is outside range of x-coordinates spanned by room
|
||||
| 53940 | CALL 53968 | Print red cell to current attribute file position (outside play area) and mark as unused in display buffers | ||
| 53943 | INC C | Advance C by one (move right one character) | ||
| 53944 | BIT 5,C | If bit 5 is not set (x-coordinate has not reached 32)... | ||
| 53946 | JR Z,53926 | ...then loop back to 53926 | ||
| 53948 | JR 53959 | Skip ahead to 53959 | ||
|
Current y-coordinate, B, is outside range of y-coordinates spanned by room
|
||||
| 53950 | PUSH BC | Store BC (B = current y-coordinate, C = current x-coordinate) | ||
| 53951 | LD B,32 | Load counter with 32 (as there are 32 characters per row) | ||
| 53953 | CALL 53968 | Print red cell to current attribute file position (outside play area) and mark as unused in display buffers | ||
| 53956 | DJNZ 53953 | Loop back to 53953 for next character block | ||
| 53958 | POP BC | Restore BC (B = current y-coordinate, C = current x-coordinate) | ||
| 53959 | INC B | Increase current y-coordinate by one | ||
| 53960 | LD A,B | If y-coordinate has not reached 22... | ||
| 53961 | CP 22 | ... | ||
| 53963 | JR NZ,53916 | ...then loop back to 53916 | ||
| 53965 | POP IX | Restore IX | ||
| 53967 | RET | Return | ||
| Prev: 53825 | Up: Map | Next: 53968 |