![]() |
Routines |
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 |
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 |
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 |