Spectrum ROM | Routines |
Prev: 09767 | Up: Map |
The address of this routine is derived from an offset found in the scanning function table.
|
|||||||
S_INKEY | 09780 | LD BC,4186 | Priority +10 hex, operation code +5A 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 | +FF 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. |
Prev: 09767 | Up: Map |