![]() |
Routines |
| Prev: 29868 | Up: Map | Next: 29972 |
| DE | Coordinates of teacher |
| 29871 | LD A,(32512) | A=leftmost column of the skool on screen (0-64) |
| 29874 | LD B,A | Copy this to B |
| 29875 | LD A,E | A=teacher's x-coordinate |
| 29876 | AND 248 | |
| 29878 | SUB B | Is the teacher off-screen to the left? |
| 29879 | RET C | Return with the carry flag set if so |
| 29880 | CP 32 | Is the teacher off-screen to the right? |
| 29882 | CCF | |
| 29883 | RET C | Return with the carry flag set if so |
|
The teacher is on screen. First, save the attribute bytes of the area of the screen that will be overwritten by the lines bubble.
|
||
| 29884 | LD E,A | E=teacher's screen x-coordinate (0-31) |
| 29885 | LD A,D | A=teacher's y-coordinate (152-169) |
| 29886 | SUB 155 | A=teacher's screen y-coordinate (0-14) |
| 29888 | JR NC,29891 | |
| 29890 | XOR A | |
| 29891 | RRCA | Set DE to the attribute file address of the top left corner of the lines bubble |
| 29892 | RRCA | |
| 29893 | RRCA | |
| 29894 | LD D,A | |
| 29895 | AND 224 | |
| 29897 | ADD A,E | |
| 29898 | LD E,A | |
| 29899 | LD A,D | |
| 29900 | AND 3 | |
| 29902 | ADD A,88 | |
| 29904 | LD D,A | |
| 29905 | PUSH HL | |
| 29906 | PUSH DE | |
| 29907 | LD HL,59904 | The buffer at 59904 will store the area of the screen overwritten by the lines bubble |
| 29910 | EX DE,HL | DE=59904, HL=attribute file address |
| 29911 | LD BC,8 | Copy the 24 attribute bytes that will be overwritten by the lines bubble from the screen to 59904-59927 |
| 29914 | LDIR | |
| 29916 | LD C,24 | |
| 29918 | ADD HL,BC | |
| 29919 | LD C,8 | |
| 29921 | LDIR | |
| 29923 | LD C,24 | |
| 29925 | ADD HL,BC | |
| 29926 | LD C,8 | |
| 29928 | LDIR | |
|
Next, save the display file bytes of the area of the screen that will be overwritten by the lines bubble.
|
||
| 29930 | POP HL | Restore the attribute file address of the top-left corner of the lines bubble to HL |
| 29931 | PUSH HL | |
| 29932 | LD A,H | Get the display file address of the top-left corner of the lines bubble in HL |
| 29933 | SUB 80 | |
| 29935 | ADD A,A | |
| 29936 | ADD A,A | |
| 29937 | ADD A,A | |
| 29938 | LD H,A | |
| 29939 | LD BC,3 | A lines bubble has 3 rows... |
| 29942 | LD A,8 | ...and 8 columns; copy the 192 display file bytes that will be overwritten by the lines bubble from the screen to 59928-60119 |
| 29944 | PUSH BC | |
| 29945 | PUSH HL | |
| 29946 | LD C,8 | |
| 29948 | LDIR | |
| 29950 | POP HL | |
| 29951 | INC H | |
| 29952 | DEC A | |
| 29953 | JR NZ,29945 | |
| 29955 | LD A,L | |
| 29956 | ADD A,32 | |
| 29958 | LD L,A | |
| 29959 | JR C,29965 | |
| 29961 | LD A,H | |
| 29962 | SUB 8 | |
| 29964 | LD H,A | |
| 29965 | POP BC | |
| 29966 | DEC C | |
| 29967 | JR NZ,29942 | |
| 29969 | POP DE | Restore the attribute file address of the top-left corner of the lines bubble to DE |
| 29970 | POP HL | |
| 29971 | RET | Return with the carry flag reset |
| Prev: 29868 | Up: Map | Next: 29972 |