Routines |
Prev: 35704 | Up: Map | Next: 35915 |
|
||||||||||||||||||||
35713 | DEFB 1,0,0,13,2,0,0,2 | |||||||||||||||||||
35721 | DEFW 0 | |||||||||||||||||||
35723 | DEFB 0,0,0,0,0,0,0,0 | |||||||||||||||||||
This entry point is used by the routine at 28915.
|
||||||||||||||||||||
GetKey | 35731 | PUSH HL | Stash HL, IX and BC on the stack. | |||||||||||||||||
35732 | PUSH IX | |||||||||||||||||||
35734 | PUSH BC | |||||||||||||||||||
35735 | CALL Pause | Call Pause. | ||||||||||||||||||
35738 | LD (35721),BC | Write $0000 to 35721. | ||||||||||||||||||
35742 | LD HL,35723 | HL=$8B8B. | ||||||||||||||||||
35745 | LD IX,35713 | IX=35713. | ||||||||||||||||||
35749 | LD BC,65278 | BC=$FEFE. | ||||||||||||||||||
GetKey_Loop | 35752 | IN A,(C) | Read from the keyboard port. | |||||||||||||||||
35754 | AND %00011111 | Keep only bits 0-4. | ||||||||||||||||||
35756 | OR (IX+0) | OR against what IX is pointing to. | ||||||||||||||||||
35759 | PUSH AF | Stash AF on the stack. | ||||||||||||||||||
35760 | CPL | Invert the bits (1's complement on A). | ||||||||||||||||||
35761 | AND (HL) | Keep bits based on what HL is pointing to. | ||||||||||||||||||
35762 | CPL | Invert the bits back (1's complement on A). | ||||||||||||||||||
35763 | JR Z,GetKey_ | If it is zero, jump to GetKey_. | ||||||||||||||||||
35765 | LD (35721),BC | Stash BC at 35721. | ||||||||||||||||||
35769 | LD (35721),A | Stash A at 35721. | ||||||||||||||||||
GetKey_ | 35772 | POP AF | Restore AF from the stack. | |||||||||||||||||
35773 | LD (HL),A | Stash A at HL. | ||||||||||||||||||
35774 | INC HL | Increase HL by one. | ||||||||||||||||||
35775 | INC IX | Increase IX by one. | ||||||||||||||||||
35777 | RLC B | Rotate B left. | ||||||||||||||||||
35779 | JR C,GetKey_Loop | If there is carry then this is not a match, jump back to GetKey_Loop to try again. | ||||||||||||||||||
35781 | LD BC,(35721) | BC=35721. | ||||||||||||||||||
If no key match was found, end...
|
||||||||||||||||||||
35785 | LD A,B | If BC is $0000, jump to GetKey_Return. | ||||||||||||||||||
35786 | OR C | |||||||||||||||||||
35787 | JR Z,GetKey_Return | |||||||||||||||||||
35789 | LD A,251 | A=$FB. | ||||||||||||||||||
35791 | ADD A,5 | A=A + 5. | ||||||||||||||||||
35793 | RRC B | Rotate B right once. | ||||||||||||||||||
35795 | JR C,35791 | If there is any carry, jump to 35791. | ||||||||||||||||||
35797 | DEC A | Decrease A by one, ready for the following loop to begin in the same place. | ||||||||||||||||||
35798 | INC A | Increment A by one. | ||||||||||||||||||
35799 | RRC C | Rotate C right once. | ||||||||||||||||||
35801 | JR C,35798 | If there is any carry, jump to 35798. | ||||||||||||||||||
35803 | LD C,A | Create an offset in BC. | ||||||||||||||||||
35804 | LD B,0 | |||||||||||||||||||
35806 | LD HL,35835 | HL=KeyboardMap1. | ||||||||||||||||||
35809 | LD A,254 | Read from the keyboard port.
|
||||||||||||||||||
35811 | IN A,(254) | |||||||||||||||||||
35813 | AND %00000001 | Keep only bit 0 (SHIFT). | ||||||||||||||||||
35815 | JR Z,GetKey_UseMap2 | If it is zero, jump to GetKey_UseMap2. | ||||||||||||||||||
35817 | LD A,127 | Read from the keyboard port.
|
||||||||||||||||||
35819 | IN A,(254) | |||||||||||||||||||
35821 | AND %00000010 | Keep only bit 1 (FULL-STOP). | ||||||||||||||||||
35823 | JR NZ,GetKey_GetByte | If it is not zero, jump to GetKey_GetByte. | ||||||||||||||||||
GetKey_UseMap2 | 35825 | LD HL,35875 | HL=KeyboardMap2. | |||||||||||||||||
GetKey_GetByte | 35828 | ADD HL,BC | HL=HL + keyboard map offset. | |||||||||||||||||
35829 | LD A,(HL) | A=HL (fetched byte from keyboard map). | ||||||||||||||||||
GetKey_Return | 35830 | POP BC | Restore BC, IX and HL from the stack. | |||||||||||||||||
35831 | POP IX | |||||||||||||||||||
35833 | POP HL | |||||||||||||||||||
35834 | RET | Return. | ||||||||||||||||||
KeyboardMap1 | 35835 | DEFB 0,90,88,67,86 | --, Z, X, C, V | |||||||||||||||||
35840 | DEFB 65,83,68,70,71 | A, S, D, F, G | ||||||||||||||||||
35845 | DEFB 81,87,69,82,84 | Q, W, E, R, T | ||||||||||||||||||
35850 | DEFB 0,0,0,0,8 | --, --, --, --, | ||||||||||||||||||
35855 | DEFB 8,0,9,91,10 | , --, , [, | ||||||||||||||||||
35860 | DEFB 80,79,73,85,89 | P, O, I, U, Y | ||||||||||||||||||
35865 | DEFB 13,76,75,74,72 | , L, K, J, H | ||||||||||||||||||
35870 | DEFB 32,0,77,78,66 | , --, M, N, B | ||||||||||||||||||
KeyboardMap2 | 35875 | DEFB 0,90,88,67,86 | --, Z, X, C, V | |||||||||||||||||
35880 | DEFB 65,83,68,70,71 | A, S, D, F, G | ||||||||||||||||||
35885 | DEFB 81,87,69,82,84 | Q, W, E, R, T | ||||||||||||||||||
35890 | DEFB 0,64,0,0,8 | --, @, --, --, | ||||||||||||||||||
35895 | DEFB 24,0,9,91,10 | , --, , [, | ||||||||||||||||||
35900 | DEFB 34,79,73,85,89 | ", O, I, U, Y | ||||||||||||||||||
35905 | DEFB 13,76,75,74,72 | , L, K, J, H | ||||||||||||||||||
35910 | DEFB 2,0,46,44,66 | , --, ., ,, B |
Prev: 35704 | Up: Map | Next: 35915 |