![]() |
Routines |
Prev: 7087 | Up: Map |
|
||||||||||
70D2 | LD L,$6E | Bytes 0x6D and 0x6E of the character's buffer hold the address of the next character in the submessage | ||||||||
70D4 | LD A,(HL) | |||||||||
70D5 | AND A | Are we in a submessage at the moment? | ||||||||
70D6 | JR Z,$70E8 | Jump if not | ||||||||
70D8 | LD D,A | DE=address of the next character in the submessage | ||||||||
70D9 | DEC L | |||||||||
70DA | LD E,(HL) | |||||||||
70DB | LD A,(DE) | Pick up this character in A | ||||||||
70DC | AND A | Has the submessage finished? | ||||||||
70DD | JR Z,$70E5 | Jump if so | ||||||||
70DF | NOP | |||||||||
70E0 | INC DE | Move to the next character in the submessage, and store its address in bytes 0x6D and 0x6E of the character's buffer | ||||||||
70E1 | LD (HL),E | |||||||||
70E2 | INC L | |||||||||
70E3 | LD (HL),D | |||||||||
70E4 | RET | |||||||||
The submessage has finished.
|
||||||||||
70E5 | LD (HL),A | Zero out bytes 0x6D and 0x6E of the character's buffer to indicate that the submessage is finished | ||||||||
70E6 | INC L | |||||||||
70E7 | LD (HL),A | |||||||||
We are dealing with the main message.
|
||||||||||
70E8 | LD L,$6C | DE=address of the next character in the main message (collected from bytes 0x6B and 0x6C of the character's buffer) | ||||||||
70EA | LD D,(HL) | |||||||||
70EB | DEC L | |||||||||
70EC | LD E,(HL) | |||||||||
70ED | LD A,(DE) | Pick up the next character of the message | ||||||||
70EE | INC DE | Move to the next character in the main message, and store its address in bytes 0x6B and 0x6C of the character's buffer | ||||||||
70EF | LD (HL),E | |||||||||
70F0 | INC L | |||||||||
70F1 | LD (HL),D | |||||||||
70F2 | INC L | L=0x6D | ||||||||
70F3 | BIT 7,A | Is the ASCII code of the next character < 0x80? | ||||||||
70F5 | JR Z,$710A | Jump if so | ||||||||
The ASCII code of the next character is >= 0x80, which refers to an entry in one of the symbol/element, capital city/country and date/battle question-and-answer pairs.
|
||||||||||
70F7 | AND $7F | Set DE to DF00+0x0C*(A-0x80) | ||||||||
70F9 | LD E,A | |||||||||
70FA | EX DE,HL | |||||||||
70FB | ADD A,A | |||||||||
70FC | ADD A,L | |||||||||
70FD | LD L,A | |||||||||
70FE | LD H,$38 | |||||||||
7100 | JR NC,$7103 | |||||||||
7102 | INC H | |||||||||
7103 | ADD HL,HL | |||||||||
7104 | ADD HL,HL | |||||||||
7105 | DEC H | |||||||||
7106 | EX DE,HL | |||||||||
7107 | LD A,(DE) | Pick up the first character of this submessage in A and store the next address in bytes 0x6D and 0x6E of the character's buffer | ||||||||
7108 | JR $70E0 | |||||||||
The ASCII code of the next character in the message is < 0x80.
|
||||||||||
710A | CP $20 | Return if the next character is a normal, printable character (ASCII code >= 0x20) | ||||||||
710C | RET NC | |||||||||
710D | CP $10 | Return if the ASCII code of the next character in the message is < 0x10 | ||||||||
710F | RET C | |||||||||
The ASCII code of the next character in the message is 0x10-0x18. We have a submessage to deal with, which will be one of the following:
|
||||||||||
7110 | SUB $10 | Point DE at the appropriate submessage from the table above | ||||||||
7112 | LD E,A | |||||||||
7113 | ADD A,A | |||||||||
7114 | ADD A,A | |||||||||
7115 | ADD A,A | |||||||||
7116 | SUB E | |||||||||
7117 | ADD A,A | |||||||||
7118 | ADD A,$80 | |||||||||
711A | LD E,A | |||||||||
711B | LD D,$D9 | |||||||||
711D | LD A,(DE) | Pick up the first character of the submessage in A | ||||||||
711E | JR $70E0 | Store the address of the next character in the submessage |
Prev: 7087 | Up: Map |