ЧИТАТЕЛЬ - ЧИТАТЕЛЮ Вариант подключения "мыши " ММ8031
© FREE Group, Украина.
В ZX РЕВЮ 95/1 была приведена схема подключения манипулятора типа "мышь" ММ8031 к "Спектруму".
Мы предлагаем свой вариант решения этой проблемы. Подключение к порту KEMPSTON -самое простое из всех известных, причём, наш вариант наиболее соответствует фирменной "мыши", в отличие от приведённого вами. Особо хотим отметить, что это именно "мышь", а не аналог джойстика, так как перемещение курсора на экране строго пропорционально перемещению "мыши", что плохо имитируется в схемах со сбросом триггеров "мыши" сигналом INT, кадровым синхроимпульсом или специальным генератором.
Вся переделка манипулятора ММ8031 сводится к перерезанию 11 вывода счётчиков К155ИЕ13 от контакта СИНХРО. Все функции KEMPSTON-MOUSE для ARTSTUDIO-128 реализуются при небольшой переделке инсталлятора: нужно изменить границы ввода scalling factor до 20.
Схема подключения (поддерживается и KEMPSTON-MOUSE и KEMPSTON-JOYSTICK на одном разъеме): _
Порт KEMPSTON |
Мышь |
D0 |
LEFT KEY |
Dl |
RIGHT KEY |
D2 |
не используется |
D3 |
--//-- |
D4 |
D0 |
D5 |
Dl |
D6 |
D2 |
D7 |
D3 |
A10 |
синхро (выбор X,Y) |
Примечания.
1. При неподключенной "мыши" порт 31 должен содержать 255, то есть все биты должны быть "единицами" (и не забудьте подвести питание). Для того, чтобы использовать "мышь" и KEMPSTON-джойстик, нужно сделать переключатель на состояние 0 -для джойстика и 255 - для манипулятора.
2. Если у Вашей "мыши" шесть шин данных, то подключайте их, начиная с D2 KEMPSTON-порта. А сейчас предлагаем Вам драйвер для "мыши". Он "вытянут" из графического редактора ART STUDIO-128 и дизассемблирован с помощью MONS4D. Его преимущество в том, что можно изменять в широком диапазоне масштабный фактор. Для "мыши" с четырьмя данными рекомендуется scaling factor 15-20 для точного перемещения.
01 SPOUSE LD HL,(XY) ; *
02 PUSH HL ; старые координаты
03 LD BC,(WORK)
04 CALL LBD02
05 LD (WORK) , A
06 SUB С
07 JR Z, LBC28
0 8 LD HL,WORK+1
0 9 CALL LBC5C
10 LD HL, XY
11 INC HL
12 LD A, (HL)
13 JP M,LBC2 0
ЧИТАТЕЛЬ - ЧИТАТЕЛЮ
A, B
NC,LBC1E A, #FE LBC2 5 С
NC,LBC25 A, 0 (HL),A (WORK+2) LBD12
(WORK+2) ,A C
Z,LBC54 HL,(WORK+3) LBC5C HL, XY A,(HL) P,LBC4E A, B
C,LBC4A #BE
C,LBC4C A,#BE LBC53 В
NC,LBC53 A, 0 (HL),A HL,(XY) DE A
HL, DE
пересчет данных в координаты
AF
P,LBC62
bc,(scale;
B, #FF В
С
NC,LBC68 A, C D, A AF AF
M,LBC7C A,(HL) A, D С
C,LBC82 С
В
14
15
16
17
18
19
20 21 22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 61 62
63
64
65
ADD
JR
LD
JR
SUB
JR
LD
LD
LD BC,
CALL
LD
SUB
JR
LD
CALL
LD
LD
JP
ADD
JR
CP
JR
LD
JR
SUB
JR
LD
LD
LD
POP
OR
SBC
RET
PUSH
JP
NEG
LD
LD
INC
SUB
JR
ADD
LD
POP
PUSH
JP
LD
ADD
CP
JR
SUB
INC
LBC1E LBC2 0
LBC2 5 LBC2 8
LBC4A LBC4C LBC4E
LBC53 LBC54
LBC5C
LBC62
LBC68
66 |
|
JR |
LBC82 |
|
67 |
LBC7C |
LD |
A,(HL) |
|
68 |
|
SUB |
D |
|
69 |
|
JR |
NC,LBC82 |
|
70 |
|
ADD |
A, C |
|
71 |
|
INC |
В |
|
72 |
LBC82 |
LD |
(HL),A |
|
73 |
|
POP |
AF |
|
74 |
|
RET |
|
|
75 |
LBD02 |
LD |
A,#FB |
; запрос данных в Х-координате |
76 |
|
IN |
A, (#DF) |
|
77 |
|
RET |
|
|
78 |
LBD12 |
LD |
A,#FF |
; запрос данных в Х-координате |
79 |
|
IN |
A, (#DF) |
|
80 |
|
RET |
|
|
81 |
SCALE |
DEFB |
20 |
; масштабный фактор (1-грубо, 20-точно) |
82 |
XY |
DEFW |
0 |
; "экранные" координаты Y,X |
83 |
WORK |
DEFS |
4 |
; байты, необходимые для работы программы |
В программе некоторые строки отмечены "*" - они необходимы для того, чтобы проверить, не изменялось ли положение "мыши". Если положение не изменилось, то флаг Z установлен.
И ещё: данный драйвер никак не реагирует на нажатие кнопок. Для этого в ART STUDIO-128 существует другой драйвер, который приводить не имеет смысла потому, что ему "всё равно", какую кнопку Вы нажали. Чтобы установить факт нажатия кнопок, можно поступить так:
CALL |
LBD12 |
(или LBD02) |
AND |
3 |
|
СР |
3 |
|
JR |
Z,LEFT&RIGHT |
; левая и правая одновременно |
BIT |
0, A |
|
JR |
Z,LEFT KEY |
; левая кнопка нажата |
BIT |
1,A |
|
JR |
Z,RIGHT KEY |
; правая кнопка нажата |
JR |
NO KEY |
; не нажата ни одна кнопка |
*************************************************************************************