Dun Darach | Routines |
Prev: 9A7E | Up: Map |
Used by the routine at Draw_StringIntoOther.
|
|||||||||||
EXIT: ScratchPad Holds string.
A word index string holds a string of indices, each representing a string from the dictionary.
Resulting string [Len, "string"]
0x7B is used as a space.
|
|||||||||||
Str_Decode | 9AEE | LD DE,ScratchPad | Temp memory for storing expanded string. | ||||||||
9AF1 | XOR A | First byte holds the length, so clear. | |||||||||
Str_Decode_0 | 9AF2 | LD (DE),A | |||||||||
9AF3 | INC DE | Start of string content. | |||||||||
9AF4 | PUSH BC | ||||||||||
9AF5 | PUSH HL | Get next word index. | |||||||||
9AF6 | LD A,(HL) | ||||||||||
9AF7 | BIT 7,A | Bit 7 set means we use the index as an ascii code | |||||||||
9AF9 | JR Z,Str_Decode_1 | ||||||||||
9AFB | AND $7F | which is stored directly into the string. | |||||||||
9AFD | LD (DE),A | ||||||||||
9AFE | INC DE | ||||||||||
9AFF | LD HL,ScratchPad | Increase string length by one. | |||||||||
9B02 | INC (HL) | ||||||||||
9B03 | LD A,(HL) | ||||||||||
9B04 | JR Str_Decode_2 | ||||||||||
Str_Decode_1 | 9B06 | PUSH DE | Get address and length of word using the index. | ||||||||
9B07 | CALL Dict_GetWord | ||||||||||
9B0A | LD A,(ScratchPad) | Increase overall string count by the length of the current word. | |||||||||
9B0D | ADD A,C | ||||||||||
9B0E | LD (ScratchPad),A | ||||||||||
9B11 | POP DE | ||||||||||
9B12 | LDIR | Append word to string. | |||||||||
Str_Decode_2 | 9B14 | POP HL | |||||||||
9B15 | INC HL | ||||||||||
9B16 | POP BC | ||||||||||
9B17 | DEC B | Next word. | |||||||||
9B18 | RET Z | ||||||||||
9B19 | INC A | Insert a gap betweens words using 0x7b char. | |||||||||
9B1A | LD (ScratchPad),A | ||||||||||
9B1D | LD A,$7B | ||||||||||
9B1F | JR Str_Decode_0 |
Prev: 9A7E | Up: Map |