![]() |
Routines |
| Prev: 60600 | Up: Map | Next: 61974 |
|
Used by the routine at 62102.
|
||||
|
Called from 62194 after code generated and message printed on screen.
Picks out the relevant code from the code table at 60600 that the player needs to type in. The 2-byte code is returned in the DE registers.
|
||||
| 61946 | LD A,(62048) | Second part of code from code sheet (number) - value = 0-41 | ||
| 61949 | LD L,A | |||
| 61950 | LD H,0 | Store value in HL register pair | ||
|
Each set (0-41) in the code table at 60600 is 32 bytes long, so need to multiply this by 32 bytes to get to the right set
|
||||
| 61952 | ADD HL,HL | x2 | ||
| 61953 | ADD HL,HL | x4 | ||
| 61954 | ADD HL,HL | x8 | ||
| 61955 | ADD HL,HL | x16 | ||
| 61956 | ADD HL,HL | x32 | ||
|
Next use the first part of the code to find the value within the set:
|
||||
| 61957 | LD A,(62049) | First part of code from code sheet (letter) - value = 0-16 (A-P) | ||
| 61960 | ADD A,A | x2 (as each 4-digit code is 2 bytes long) | ||
| 61961 | LD C,A | |||
| 61962 | LD B,0 | Store value in BC register pair | ||
| 61964 | ADD HL,BC | Add to HL value | ||
| 61965 | LD BC,60600 | |||
| 61968 | ADD HL,BC | ...and then add the start of the code sheet address location to get to the right place. | ||
|
The HL register pair is now pointing to relevant code (2 bytes) in table at 60600.
Now put the 2 code bytes into the D & E registers
|
||||
| 61969 | INC HL | |||
| 61970 | LD D,(HL) | Second (high) byte stored in D register | ||
| 61971 | DEC HL | |||
| 61972 | LD E,(HL) | First (low) byte stored in E register | ||
| 61973 | RET | |||
| Prev: 60600 | Up: Map | Next: 61974 |