Routines| H | Screen row number (0-20) |
| L | Screen column number (0-31) |
| 24684 | E5 | PUSH HL | |
| 24685 | 7C | LD A,H | A=screen row number (0-20) |
| 24686 | E618 | AND 24 | |
| 24688 | 57 | LD D,A | D=0, 8 or 16 |
| 24689 | 7C | LD A,H | |
| 24690 | 0F | RRCA | |
| 24691 | 0F | RRCA | |
| 24692 | 0F | RRCA | |
| 24693 | 67 | LD H,A | |
| 24694 | E6E0 | AND 224 | |
| 24696 | 85 | ADD A,L | |
| 24697 | 5F | LD E,A | |
| 24698 | 4F | LD C,A | |
| 24699 | 7C | LD A,H | |
| 24700 | E603 | AND 3 | |
| 24702 | C658 | ADD A,88 | |
| 24704 | 47 | LD B,A | Now BC=appropriate attribute file address |
| 24705 | CBF2 | SET 6,D | Now DE=appropriate display file address |
| 24707 | EB | EX DE,HL | |
| 24708 | E3 | EX (SP),HL | Place display file address on stack and get (row,col) back in HL |
| 24709 | 3AFF7F | LD A,(32767) | A=number of leftmost column of play area on screen (0-160) |
| 24712 | 85 | ADD A,L | A=column of play area corresponding to character square under consideration |
| 24713 | 6F | LD L,A | 0≤L≤191 |
| 24714 | E5 | PUSH HL | |
| 24715 | 7C | LD A,H | A=screen row number (0-20) |
| 24716 | 26B5 | LD H,181 | HL=anything from 46336 to 46527 |
| 24718 | 6E | LD L,(HL) | 0≤L≤143 |
| 24719 | C6A0 | ADD A,160 | |
| 24721 | 67 | LD H,A | 160≤H≤180 |
| 24722 | 5D | LD E,L | 0≤E≤143 |
| 24723 | 7D | LD A,L | 0≤L≤143 |
| 24724 | 1F | RRA | |
| 24725 | 381B | JR C,24754 | |
| 24727 | C6B4 | ADD A,180 | 180≤A≤251 |
| 24729 | 6F | LD L,A | |
| 24730 | 7E | LD A,(HL) | |
| 24731 | E6F0 | AND 240 | Retain bits 4-7 |
| 24733 | CB1F | RR A | |
| 24735 | 2025 | JR NZ,24774 | |
| 24737 | 24 | INC H | |
| 24738 | 7E | LD A,(HL) | |
| 24739 | E6F0 | AND 240 | Retain bits 4-7 |
| 24741 | 1F | RRA | |
| 24742 | 6F | LD L,A | L holds PAPER colour and BRIGHT status |
| 24743 | 7B | LD A,E | 0≤A≤143 |
| 24744 | E603 | AND 3 | |
| 24746 | 2002 | JR NZ,24750 | |
| 24748 | C602 | ADD A,2 | A=2: INK 2 |
| 24750 | B5 | OR L | OR on the PAPER colour and BRIGHT status |
| 24751 | 25 | DEC H | 160≤H≤180 |
| 24752 | 1814 | JR 24774 | Jump forward to transfer the attribute byte in A onto the screen |
| 24754 | C6B4 | ADD A,180 | 180≤A≤251 |
| 24756 | 6F | LD L,A | |
| 24757 | 7E | LD A,(HL) | |
| 24758 | E60F | AND 15 | |
| 24760 | 2009 | JR NZ,24771 | |
| 24762 | 24 | INC H | |
| 24763 | 7E | LD A,(HL) | |
| 24764 | E60F | AND 15 | |
| 24766 | 87 | ADD A,A | |
| 24767 | 87 | ADD A,A | |
| 24768 | 87 | ADD A,A | |
| 24769 | 18E3 | JR 24742 | |
| 24771 | 87 | ADD A,A | |
| 24772 | 87 | ADD A,A | |
| 24773 | 87 | ADD A,A |
| 24774 | 00 | NOP | No messing with the attributes during startup |
| 24774 | 02 | LD (BC),A | Poke the attribute byte onto the screen |
| 24775 | 6B | LD L,E | 0≤L≤143, 160≤H≤180 |
| 24776 | 5E | LD E,(HL) | E=UDG reference number |
| 24777 | 3E88 | LD A,136 | |
| 24779 | CB3D | SRL L | |
| 24781 | 3001 | JR NC,24784 | |
| 24783 | 0F | RRCA | |
| 24784 | CB3D | SRL L | |
| 24786 | 3002 | JR NC,24790 | |
| 24788 | 0F | RRCA | |
| 24789 | 0F | RRCA | |
| 24790 | 4F | LD C,A | C=17, 34, 68 or 136 |
| 24791 | 7D | LD A,L | 0≤A≤35 |
| 24792 | C690 | ADD A,144 | 144≤A≤179 |
| 24794 | 6F | LD L,A | 144≤L≤179 |
| 24795 | 79 | LD A,C | A=17, 34, 68 or 136 |
| 24796 | A6 | AND (HL) | |
| 24797 | 1680 | LD D,128 | |
| 24799 | FE10 | CP 16 | |
| 24801 | 3802 | JR C,24805 | |
| 24803 | 1690 | LD D,144 | |
| 24805 | E60F | AND 15 | |
| 24807 | 2802 | JR Z,24811 | |
| 24809 | CBDA | SET 3,D | D=128, 136, 144 or 152 |
| 24811 | 2170E1 | LD HL,57712 | |
| 24814 | 0608 | LD B,8 |
| 24816 | AF | XOR A | A=blank byte: there is no play area during startup! |
| 24816 | 1A | LD A,(DE) | A=byte of play area graphic data |
| 24817 | 14 | INC D | |
| 24818 | 77 | LD (HL),A | Store graphic byte in buffer |
| 24819 | 2C | INC L | |
| 24820 | 10FA | DJNZ 24816 | Get next graphic byte |
| 24822 | 26B7 | LD H,183 | 183=character number of little girl no. 1 |
| 24824 | D1 | POP DE | D=play area row (0-20), E=play area column (0-191) |
| 24825 | 3AFF7F | LD A,(32767) | A=number of leftmost column of play area on screen (0-160) |
| 24828 | FE78 | CP 120 | 120=roughly halfway between tree and gate |
| 24830 | 380B | JR C,24843 | Jump if columns 144 onwards (girls' skool + half girls' playground) are off-screen |
| 24832 | 0607 | LD B,7 | 7 little girls |
| 24834 | CD0060 | CALL 24576 | Superimpose graphic bytes for little girls if necessary |
| 24837 | 26C6 | LD H,198 | 198=character number of little boy no. 9 |
| 24839 | 0611 | LD B,17 | 2 little boys, 11 main characters, plus 211-214 |
| 24841 | 1813 | JR 24862 | |
| 24843 | FE50 | CP 80 | 80=assembly hall stage (or thereabouts) |
| 24845 | 380B | JR C,24858 | Jump if columns 104 onwards (everything to right of tree, roughly) are off-screen |
| 24847 | 0603 | LD B,3 | 3 little girls (183-185) |
| 24849 | CD0060 | CALL 24576 | Superimpose graphic bytes for these little girls if necessary |
| 24852 | 26C1 | LD H,193 | 193=character number of little boy no. 4 |
| 24854 | 0616 | LD B,22 | 7 little boys, 11 main characters, plus 211-214 |
| 24856 | 1804 | JR 24862 | |
| 24858 | 26BE | LD H,190 | 190=character number of little boy no. 1 |
| 24860 | 0619 | LD B,25 | All 10 little boys, 11 main characters, plus 211-214 |
| 24862 | CD0060 | CALL 24576 | Superimpose graphic bytes for these characters if necessary |
| 24865 | 2170E1 | LD HL,57712 | 8-byte buffer at 57712 now contains UDG to be transferred to screen |
| 24868 | D1 | POP DE | Retrieve appropriate display file address in DE |
| 24869 | 0608 | LD B,8 | 8 bytes per character square |
| 24871 | 7E | LD A,(HL) |
Transfer the graphic bytes to the screen |
| 24872 | 12 | LD (DE),A | |
| 24873 | 2C | INC L | |
| 24874 | 14 | INC D | |
| 24875 | 10FA | DJNZ 24871 | |
| 24877 | C9 | RET | Done |