2 ;; requires: WinStick, WinMouse, WinArrow
11 stickAccelPtr: dw stickAccel
19 ; joycount is the "stick repeat counter"
20 ; (used to acceleration)
24 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
25 ;; ÓÍÏÔÒÉÍ, Ä£ÒÇÁÌÉ ÌÉ ËÌÁ×Õ ÉÌÉ ÄÖÏÊÓÔÉËÉ,
26 ;; ×ÙÞÉÓÌÑÅÍ ÎÏ×ÙÅ ËÏÏÒÄÉÎÁÔÙ ÓÔÒÅÌËÉ
83 jr nc,$+3 ; skip next instr.
92 jr nc,$+4 ; skip next instr.
101 jr nc,$+3 ; skip next instr.
111 jr c,$+4 ; skip next instr.
115 ld (WinArrow.newX),hl
119 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
120 ;; ÐÒÏ×ÅÒÑ£Í ËÌÁ×Õ É ÄÖÏÊÓÔÉËÉ
123 ;; f,b,de,hl: destroyed
125 call WinStick.ReadMoves
127 ld a,(WinStick.kempston_here)
135 ld hl,WinStick.keystick_kempston
137 call WinStick.ReadStick
145 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
146 ;; test for kempston joystick & kempston mouse presence
152 ld hl,WinStick.kempston_here
153 call WinStick.TestKempstonJ
155 call WinMouse.TestKempstonM
162 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
163 ;; return when any key pressed
176 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
177 ;; return when no keys are pressed
190 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
191 ;; test for CS and SS
218 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
219 ;; don't wait for keypress; return char or carry reset
221 ;; carry: don't react to shifts, if set
223 ;; a: key number (1-40) or 0
225 ;; carry: set if key was decoded
232 jr c,.noshiftreaction
256 ; check for CS and SS
285 ;.keytab: DEFM ' ',31,'MNB',13,'LKJHPOIUY0987612345QWERTASDFG',30,'ZXCV'
287 keytabEL: db ' ',0,'mnb',13,'lkjhpoiuy0987612345qwertasdfg',0,'zxcv'
288 keytabEC: db ' ',0,'MNB',13,'LKJHPOIUY0987612345QWERTASDFG',0,'ZXCV'
289 keytabEU: db ' ',0,'MNB',13,'LKJHPOIUY',12,9,8,7,6,27,2,3,4,5,'QWERTASDFG',0,'ZXCV'
290 keytabES: db ' ',0,'.,*',13,'=+-^',34,59,127,'][_)(',39,'&!@#$%',0,0,0,'<>~|',92,'{}',0,':`?/'
293 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
294 ;; don't wait for keypress; return char or carry reset
298 ;; carry: set if key was decoded
328 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
329 ;; wait for keypress; return char
345 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
348 ;; hl: destination buffer (must be strz)
352 ;; carry: set if esc was pressed
358 ld hl,(WinSys.printxy)
410 ; no key, reset counters
431 call strzlen ; hl points to 0
450 call strzlen ; hl points to 0
478 ; a: 179(cur) or 180(space)
483 ld (WinSys.printxy),hl
486 call WinPrint.PrintStrZ
488 call WinPrint.PrintChar