quill | Routines |
Prev: 26908 | Up: Map | Next: 27013 |
|
||||
KEYBOARD_HANDLER | 26921 | LD HL,27200 | HL=prompt symbol | |
26924 | CALL PRINT_TO_SCREEN_2 | Display prompt symbol | ||
26927 | LD (IY+7),0 | Cursor = C,K or L | ||
26931 | SET 3,(IY+1) | Set keyboard mode to 'L' | ||
26935 | SET 3,(IY+48) | Set CAPS lock on | ||
26939 | BIT 0,(IY+8) | Should we dump flags? | ||
26943 | CALL NZ,DUMP_FLAGS | If so, call dump flag routine | ||
26946 | CALL OPEN_SCREEN_CHANNEL | Open screen channel | ||
26949 | LD HL,25000 | HL=user keypress buffer | ||
26952 | LD D,L | D=start of keypress buffer | ||
26953 | LD A,L | A=start of keypress buffer | ||
26954 | ADD A,30 | A=end of keypress buffer | ||
26956 | LD E,A | E=end of keypress buffer | ||
26957 | RES 5,(IY+1) | Reset 'key pressed' flag | ||
This entry point is used by the routine at DELETE_PRESSED.
|
||||
KEYBOARD_HANDLER_0 | 26961 | CALL WAIT_FOR_KEY | Wait for keypress | |
26964 | CP 12 | Is it delete? | ||
26966 | JR Z,DELETE_PRESSED | If so, handle delete | ||
26968 | LD B,A | B=key pressed | ||
26969 | LD A,D | |||
26970 | CP L | Are we still at start of buffer? | ||
26971 | LD A,B | A=key pressed | ||
26972 | JR Z,KEYBOARD_HANDLER_1 | If at start of buffer, skip newline check | ||
26974 | CP 13 | Is it newline? | ||
26976 | JR Z,ENTER_PRESSED | If so handle newline | ||
KEYBOARD_HANDLER_1 | 26978 | LD A,E | A=end of buffer | |
26979 | CP L | Are we at end of buffer? | ||
26980 | LD A,B | |||
26981 | JR Z,KEYBOARD_HANDLER_0 | If at end of buffer, don't process more characters | ||
26983 | CP 32 | Has space been pressed? | ||
26985 | JR Z,KEYBOARD_HANDLER_2 | If so, process this keypress | ||
26987 | CALL 11547 | Has a number key been pressed? | ||
26990 | JR NC,KEYBOARD_HANDLER_2 | If so, process this keypress | ||
26992 | CP 91 | Is key pressed > 91 'Z'? | ||
26994 | JR NC,KEYBOARD_HANDLER_0 | If so, ignore it | ||
26996 | CP 65 | Is key pressed < 65 'A'? | ||
26998 | JR C,KEYBOARD_HANDLER_0 | If so, ignore it | ||
KEYBOARD_HANDLER_2 | 27000 | CALL STORE_CHAR_ENTERED | Store character in buffer | |
27003 | PUSH HL | |||
27004 | LD HL,27193 | HL points to flashing cursor control characters | ||
This entry point is used by the routine at DELETE_PRESSED.
|
||||
KEYBOARD_HANDLER_3 | 27007 | CALL PRINT_TO_SCREEN_2 | Display flashing cursor | |
27010 | POP HL | |||
27011 | JR KEYBOARD_HANDLER_0 | Get another character |
Prev: 26908 | Up: Map | Next: 27013 |