| Routines

2634: THE' SCANNING INKEY$' ROUTINE

The address of this routine is derived from an offset found in the scanning function table.
S_INKEY | 2634 | LD BC,$105A | Priority +10, operation code +5A for the 'read-in' subroutine.
| 2637 | RST $20
| 2638 | CP "#" | If next char. is '#', jump. There will be a numerical argument.
| 263A | JP Z,S_PUSH_PO
| 263D | LD HL,$5C3B | This is FLAGS.
| 2640 | RES 6,(HL) | Reset bit 6 for a string result.
| 2642 | BIT 7,(HL) | Test for syntax checking.
| 2644 | JR Z,S_INK_EN | Jump if required.
| 2646 | CALL KEY_SCAN | Fetch a key-value in DE.
| 2649 | LD C,$00 | Prepare empty string; stack it if too many keys pressed.
| 264B | JR NZ,S_IK_STK
| 264D | CALL K_TEST | Test the key value; stack empty string if unsatisfactory.
| 2650 | JR NC,S_IK_STK
| 2652 | DEC D | +FF to D for 'L' mode (bit 3 set).
| 2653 | LD E,A | Key-value to E for decoding.
| 2654 | CALL K_DECODE | Decode the key-value.
| 2657 | PUSH AF | Save the ASCII value briefly.
| 2658 | LD BC,$0001 | One space is needed in the work space.
| 265B | RST $30 | Make it now.
| 265C | POP AF | Restore the ASCII value.
| 265D | LD (DE),A | Prepare to stack it as a string.
| 265E | LD C,$01 | Its length is one.
S_IK_STK | 2660 | LD B,$00 | Complete the length parameter.
| 2662 | CALL STK_STO | Stack the required string.
S_INK_EN | 2665 | JP S_CONT_2 | Jump forward.