| Routines

09780: THE' SCANNING INKEY$' ROUTINE

The address of this routine is derived from an offset found in the scanning function table.
S_INKEY | 09780 | LD BC,4186 | Priority 16, operation code 90 for the 'read-in' subroutine.
| 09783 | RST 32
| 09784 | CP "#" | If next char. is '#', jump. There will be a numerical argument.
| 09786 | JP Z,S_PUSH_PO
| 09789 | LD HL,23611 | This is FLAGS.
| 09792 | RES 6,(HL) | Reset bit 6 for a string result.
| 09794 | BIT 7,(HL) | Test for syntax checking.
| 09796 | JR Z,S_INK_EN | Jump if required.
| 09798 | CALL KEY_SCAN | Fetch a key-value in DE.
| 09801 | LD C,0 | Prepare empty string; stack it if too many keys pressed.
| 09803 | JR NZ,S_IK_STK
| 09805 | CALL K_TEST | Test the key value; stack empty string if unsatisfactory.
| 09808 | JR NC,S_IK_STK
| 09810 | DEC D | 255 to D for 'L' mode (bit 3 set).
| 09811 | LD E,A | Key-value to E for decoding.
| 09812 | CALL K_DECODE | Decode the key-value.
| 09815 | PUSH AF | Save the ASCII value briefly.
| 09816 | LD BC,1 | One space is needed in the work space.
| 09819 | RST 48 | Make it now.
| 09820 | POP AF | Restore the ASCII value.
| 09821 | LD (DE),A | Prepare to stack it as a string.
| 09822 | LD C,1 | Its length is one.
S_IK_STK | 09824 | LD B,0 | Complete the length parameter.
| 09826 | CALL STK_STO | Stack the required string.
S_INK_EN | 09829 | JP S_CONT_2 | Jump forward.