Routines |
Prev: 34463 | Up: Map | Next: 34620 |
Used by the routine at 34463. Displays the code entry screen and waits for a code to be entered. Returns with the zero flag set if the code entered is correct.
|
||||||||
34499 | LD DE,18432 | Print the message pointed to by IX at (8,0) | ||||||
34502 | LD C,32 | |||||||
34504 | CALL 38528 | |||||||
34507 | LD HL,18498 | Print the graphic for the '1' key at (10,2) | ||||||
34510 | LD DE,39680 | |||||||
34513 | LD C,0 | |||||||
34515 | CALL 37974 | |||||||
34518 | LD HL,18501 | Print the graphic for the '2' key at (10,5) | ||||||
34521 | CALL 37974 | |||||||
34524 | LD HL,18504 | Print the graphic for the '3' key at (10,8) | ||||||
34527 | CALL 37974 | |||||||
34530 | LD HL,18507 | Print the graphic for the '4' key at (10,11) | ||||||
34533 | CALL 37974 | |||||||
34536 | LD HL,39808 | Copy the 128 attribute bytes from 39808 to the screen (lines 8, 9, 10 and 11) | ||||||
34539 | LD DE,22784 | |||||||
34542 | LD BC,128 | |||||||
34545 | LDIR | |||||||
34547 | LD A,(23672) | Collect the LSB of the system variable FRAMES | ||||||
34550 | ADD A,37 | Add 37 to this value and replace it; this ensures that the value collected on the second pass through this routine is different from the value collected on the first pass | ||||||
34552 | LD (23672),A | |||||||
34555 | CP 179 | Is the value between 0 and 178? | ||||||
34557 | JR C,34561 | Jump if so | ||||||
34559 | SUB 180 | Otherwise subtract 180; note that if the original value of the LSB of the system variable FRAMES was 142, this leaves A holding 255, which is a bug | ||||||
34561 | LD L,A | Now L holds either 255 or some number between 0 and 178 | ||||||
34562 | LD H,158 | Point HL at one of the entries in the table at 40448 (or at 40703 if L=255) | ||||||
34564 | LD A,(HL) | Pick up the table entry | ||||||
34565 | ADD A,L | Add L to obtain the actual code | ||||||
34566 | LD (34276),A | Store the code at 34276 | ||||||
34569 | LD C,L | Copy the code index to C; this will be used to compute the grid location | ||||||
34570 | LD E,47 | Calculate the ASCII code of the grid location number (0-9) in E | ||||||
34572 | INC E | |||||||
34573 | LD A,C | |||||||
34574 | CP 18 | |||||||
34576 | JR C,34583 | |||||||
34578 | SUB 18 | |||||||
34580 | LD C,A | |||||||
34581 | JR 34572 | |||||||
34583 | LD A,E | Print the grid location number at (8,30) | ||||||
34584 | LD DE,18462 | |||||||
34587 | CALL 38545 | |||||||
34590 | LD A,C | Calculate the ASCII code of the grid location letter (A-R) in A | ||||||
34591 | ADD A,65 | |||||||
34593 | LD DE,18461 | Print the grid location letter at (8,29) | ||||||
34596 | CALL 38545 | |||||||
Here we enter a loop that prints a 2x2 coloured block at (10,16), (10,19), (10,22) or (10,25) whenever '1', '2', '3' or '4' is pressed, or returns to the calling routine at 34463 if ENTER is pressed.
|
||||||||
34599 | LD IX,22864 | Point IX at the attribute file location of the first coloured block at (10,16) | ||||||
34603 | CALL 34620 | Print a coloured block when '1', '2', '3' or '4' is pressed, or return to 34463 if ENTER is pressed | ||||||
34606 | INC IX | Move IX along to the location of the next coloured block | ||||||
34608 | INC IX | |||||||
34610 | INC IX | |||||||
34612 | LD A,IXl | Have we just printed the fourth coloured block at (10,25)? | ||||||
34614 | CP 92 | |||||||
34616 | JR NZ,34603 | If not, jump back to print the next one | ||||||
34618 | JR 34599 | Otherwise rewind IX to the location of the first coloured block |
Prev: 34463 | Up: Map | Next: 34620 |