2021-03-13 20:32:58 +00:00
|
|
|
.386
|
|
|
|
.model large SHARED_
|
|
|
|
locals
|
|
|
|
|
2021-01-11 16:40:18 +00:00
|
|
|
include pc98kbd.inc
|
2021-03-13 20:32:58 +00:00
|
|
|
include twobyte.inc
|
|
|
|
include th04/hardware/input.inc
|
|
|
|
|
|
|
|
extrn _key_det:word
|
|
|
|
extrn _shiftkey:byte
|
|
|
|
extrn js_stat:word
|
|
|
|
extrn js_bexist:word
|
|
|
|
|
|
|
|
extrn JS_SENSE:proc
|
|
|
|
|
|
|
|
SHARED_ segment word public 'CODE' use16
|
|
|
|
assume cs:SHARED_
|
2021-01-11 16:40:18 +00:00
|
|
|
|
2018-09-11 17:34:19 +00:00
|
|
|
; TH05 insists on only updating the affected byte, so...
|
|
|
|
if GAME eq 4
|
|
|
|
OR_INPUT_LOW macro value
|
2019-11-30 15:15:03 +00:00
|
|
|
or _key_det, value
|
2018-09-11 17:34:19 +00:00
|
|
|
endm
|
|
|
|
OR_INPUT_HIGH macro value
|
2019-11-30 15:15:03 +00:00
|
|
|
or _key_det, value
|
2018-09-11 17:34:19 +00:00
|
|
|
endm
|
|
|
|
else
|
|
|
|
OR_INPUT_LOW macro value
|
2019-11-30 15:15:03 +00:00
|
|
|
or _key_det.lo, low value
|
2018-09-11 17:34:19 +00:00
|
|
|
endm
|
|
|
|
OR_INPUT_HIGH macro value
|
2019-11-30 15:15:03 +00:00
|
|
|
or _key_det.hi, high value
|
2018-09-11 17:34:19 +00:00
|
|
|
endm
|
|
|
|
endif
|
|
|
|
|
2019-11-30 14:48:36 +00:00
|
|
|
public _input_reset_sense
|
2021-01-18 19:47:07 +00:00
|
|
|
_input_reset_sense label proc
|
2018-09-11 17:34:19 +00:00
|
|
|
xor ax, ax
|
2019-11-30 15:15:03 +00:00
|
|
|
mov _key_det, ax
|
2018-09-11 17:34:19 +00:00
|
|
|
mov js_stat, ax
|
|
|
|
|
2019-11-30 14:48:36 +00:00
|
|
|
public _input_sense
|
2021-01-18 19:47:07 +00:00
|
|
|
_input_sense proc far
|
2018-09-11 17:34:19 +00:00
|
|
|
xor ax, ax
|
|
|
|
mov es, ax
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_7]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K7_ARROW_UP
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@down?
|
|
|
|
OR_INPUT_LOW INPUT_UP
|
|
|
|
|
|
|
|
@@down?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K7_ARROW_DOWN
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@left?
|
|
|
|
OR_INPUT_LOW INPUT_DOWN
|
|
|
|
|
|
|
|
@@left?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K7_ARROW_LEFT
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@right?
|
|
|
|
OR_INPUT_LOW INPUT_LEFT
|
|
|
|
|
|
|
|
@@right?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K7_ARROW_RIGHT
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num6?
|
|
|
|
OR_INPUT_LOW INPUT_RIGHT
|
|
|
|
|
|
|
|
@@num6?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_9]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K9_NUM_6
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num1?
|
|
|
|
OR_INPUT_LOW INPUT_RIGHT
|
|
|
|
|
|
|
|
@@num1?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K9_NUM_1
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num2?
|
|
|
|
OR_INPUT_HIGH INPUT_DOWN_LEFT
|
|
|
|
|
|
|
|
@@num2?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K9_NUM_2
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num3?
|
|
|
|
OR_INPUT_LOW INPUT_DOWN
|
|
|
|
|
|
|
|
@@num3?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K9_NUM_3
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num4?
|
|
|
|
OR_INPUT_HIGH INPUT_DOWN_RIGHT
|
|
|
|
|
|
|
|
@@num4?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_8]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K8_NUM_4
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num7?
|
|
|
|
OR_INPUT_LOW INPUT_LEFT
|
|
|
|
|
|
|
|
@@num7?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K8_NUM_7
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num8?
|
|
|
|
OR_INPUT_HIGH INPUT_UP_LEFT
|
|
|
|
|
|
|
|
@@num8?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K8_NUM_8
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@num9?
|
|
|
|
OR_INPUT_LOW INPUT_UP
|
|
|
|
|
|
|
|
@@num9?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K8_NUM_9
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@z?
|
|
|
|
OR_INPUT_HIGH INPUT_UP_RIGHT
|
|
|
|
|
|
|
|
@@z?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_5]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K5_Z
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@x?
|
|
|
|
OR_INPUT_LOW INPUT_SHOT
|
|
|
|
|
|
|
|
@@x?:
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K5_X
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@q?
|
|
|
|
OR_INPUT_LOW INPUT_BOMB
|
|
|
|
|
|
|
|
@@q?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_2]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K2_Q
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@esc?
|
|
|
|
OR_INPUT_HIGH INPUT_Q
|
|
|
|
|
|
|
|
@@esc?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_0]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K0_ESC
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@return?
|
|
|
|
OR_INPUT_HIGH INPUT_CANCEL
|
|
|
|
|
|
|
|
@@return?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_3]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K3_RETURN
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@space?
|
|
|
|
OR_INPUT_HIGH INPUT_OK
|
|
|
|
|
|
|
|
@@space?:
|
2021-01-11 16:40:18 +00:00
|
|
|
mov ah, byte ptr es:[KEYGROUP_6]
|
2021-01-18 19:47:07 +00:00
|
|
|
test ah, K6_SPACE
|
2018-09-11 17:34:19 +00:00
|
|
|
jz short @@shift?
|
|
|
|
OR_INPUT_LOW INPUT_SHOT
|
|
|
|
|
|
|
|
@@shift?:
|
|
|
|
mov ah, 2
|
|
|
|
int 18h
|
|
|
|
and al, 1
|
2019-11-30 15:15:03 +00:00
|
|
|
mov _shiftkey, al
|
2018-09-11 17:34:19 +00:00
|
|
|
cmp js_bexist, 0
|
|
|
|
jz short @@ret
|
|
|
|
call js_sense
|
2019-11-30 15:15:03 +00:00
|
|
|
or _key_det, ax
|
2018-09-11 17:34:19 +00:00
|
|
|
|
|
|
|
@@ret:
|
|
|
|
if GAME eq 5
|
2019-11-30 15:15:03 +00:00
|
|
|
mov ax, _key_det
|
2018-09-11 17:34:19 +00:00
|
|
|
endif
|
|
|
|
retf
|
2021-01-18 19:47:07 +00:00
|
|
|
_input_sense endp
|
2018-09-11 17:34:19 +00:00
|
|
|
even
|
2021-03-13 20:32:58 +00:00
|
|
|
SHARED_ ends
|
|
|
|
|
|
|
|
end
|