Subversion Repositories pentevo

Rev

Rev 964 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 964 Rev 1120
Line 1... Line 1...
1
 
1
 
2
;LAST UPDATE: 07.10.2021 savelij
2
; LAST UPDATE: 18.10.2023 savelij
3
 
3
 
4
RCALL           MACRO ADDR
4
RCALL           MACRO ADDR
5
                LD SP,RADDR
5
                LD SP,RADDR
6
                JP ADDR
6
                JP ADDR
7
        IF MOMPASS > 1
7
;       IF MOMPASS > 1
8
RADDR           DW $+2
8
RADDR           DW $+2
9
        ELSE
9
;       ELSE
10
RADDR := $+2
10
;RADDR := $+2
11
        ENDIF
11
;       ENDIF
12
                ENDM
12
                ENDM
13
 
13
 
14
ENT_DEF         MACRO V1,V2,V3,V4
14
ENT_DEF         MACRO V1,V2,V3,V4
15
                DB V1+V2*4+V3*16+V4*64
15
                DB V1 + V2 * 4 + V3 * 16 + V4 * 64
16
                ENDM
16
                ENDM
17
 
17
 
18
_KS_SHFT        EQU 0
18
 BITMASK KS_RUS,        7
19
_KS_CTRL        EQU 1
19
 BITMASK KS_SCROLL,     6
20
_KS_ALT         EQU 2
20
 BITMASK KS_NUM,        5
21
_KS_SHFT2       EQU 3
21
 BITMASK KS_CAPS,       4
22
_KS_CAPS        EQU 4
22
 BITMASK KS_SHFT2,      3
23
_KS_NUM         EQU 5
23
 BITMASK KS_ALT,        2
24
_KS_SCROLL      EQU 6
24
 BITMASK KS_CTRL,       1
25
_KS_RUS         EQU 7
25
 BITMASK KS_SHFT,       0
26
 
26
 
27
ED_PROC         EQU 0
27
ED_PROC         EQU 0
28
ED_CHAR         EQU 1
28
ED_CHAR         EQU 1
29
ED_SCAN         EQU 2
29
ED_SCAN         EQU 2
30
 
30
 
Line 94... Line 94...
94
IX_BAS          EQU 0X5F40
94
IX_BAS          EQU 0X5F40
95
IX_SHIFT        EQU 0X7F
95
IX_SHIFT        EQU 0X7F
96
IX_BASE         EQU IX_BAS+IX_SHIFT
96
IX_BASE         EQU IX_BAS+IX_SHIFT
97
 
97
 
98
; VARIABLES IX RELATIVE
98
; VARIABLES IX RELATIVE
-
 
99
 INIT_VAR IX_BAS
99
FLAG            EQU IX_BAS      ;DB 0           ;       DM     FLAG   1      <DEFB 0         >
100
 SETVAR FLAG,           BYTE            ;EQU IX_BAS     ;DB 0           ;       DM     FLAG   1      <DEFB 0         >
100
FLAG1           EQU FLAG+1      ;DB 0           ;       DM     FLAG1  1      <DEFB 0         >
101
 SETVAR FLAG1,          BYTE            ;EQU FLAG+1     ;DB 0           ;       DM     FLAG1  1      <DEFB 0         >
101
 
102
 
102
CUR_X           EQU FLAG1+1     ;DB 0           ;       DM     CUR_X  1      <DEFB 0         >
103
 SETVAR CUR_X,          BYTE            ;EQU FLAG1+1    ;DB 0           ;       DM     CUR_X  1      <DEFB 0         >
103
CUR_Y           EQU CUR_X+1     ;DB 0           ;       DM     CUR_Y  1      <DEFB 0         >
104
 SETVAR CUR_Y,          BYTE            ;EQU CUR_X+1    ;DB 0           ;       DM     CUR_Y  1      <DEFB 0         >
104
W_X1            EQU CUR_Y+1     ;DB 0           ;       DM     W_X1   1      <DEFB 0         >
105
 SETVAR W_X1,           BYTE            ;EQU CUR_Y+1    ;DB 0           ;       DM     W_X1   1      <DEFB 0         >
105
W_Y1            EQU W_X1+1      ;DB 0           ;       DM     W_Y1   1      <DEFB 0         >
106
 SETVAR W_Y1,           BYTE            ;EQU W_X1+1     ;DB 0           ;       DM     W_Y1   1      <DEFB 0         >
106
W_X2            EQU W_Y1+1      ;DB 50          ;       DM     W_X2   1      <DEFB 50        >
107
 SETVAR W_X2,           BYTE            ;EQU W_Y1+1     ;DB 50          ;       DM     W_X2   1      <DEFB 50        >
107
W_Y2            EQU W_X2+1      ;DB 24          ;       DM     W_Y2   1      <DEFB 24        >
108
 SETVAR W_Y2,           BYTE            ;EQU W_X2+1     ;DB 24          ;       DM     W_Y2   1      <DEFB 24        >
108
COLOR_P         EQU W_Y2+1      ;DB 0           ;       DM     COLOR_P 1     <DEFB 0         >
109
 SETVAR COLOR_P,        BYTE            ;EQU W_Y2+1     ;DB 0           ;       DM     COLOR_P 1     <DEFB 0         >
109
COLOR_I         EQU COLOR_P+1   ;DB 7           ;       DM     COLOR_I 1     <DEFB 7         >
110
 SETVAR COLOR_I,        BYTE            ;EQU COLOR_P+1  ;DB 7           ;       DM     COLOR_I 1     <DEFB 7         >
110
C_STAT          EQU COLOR_I+1   ;DB 0           ;       DM     C_STAT 1      <DEFB 0         >
111
 SETVAR C_STAT,         BYTE            ;EQU COLOR_I+1  ;DB 0           ;       DM     C_STAT 1      <DEFB 0         >
111
T_FLAG          EQU C_STAT+1    ;DB 0           ;       DM     T_FLAG 1      <DEFB 0         >
112
 SETVAR T_FLAG,         BYTE            ;EQU C_STAT+1   ;DB 0           ;       DM     T_FLAG 1      <DEFB 0         >
112
CUR_VAL         EQU T_FLAG+1    ;DB 0           ;       DM     CUR_VAL 1     <DEFB 0         >
113
 SETVAR CUR_VAL,        BYTE            ;EQU T_FLAG+1   ;DB 0           ;       DM     CUR_VAL 1     <DEFB 0         >
113
SCR_ADR         EQU CUR_VAL+1   ;DW 0           ;       DM     SCR_ADR 2     <DEFW 0         >
114
 SETVAR SCR_ADR,        WORD            ;EQU CUR_VAL+1  ;DW 0           ;       DM     SCR_ADR 2     <DEFW 0         >
114
COLOR_M         EQU SCR_ADR+2   ;DB 7           ;       DM     COLOR_M 1     <DEFB 7         >
115
 SETVAR COLOR_M,        BYTE            ;EQU SCR_ADR+2  ;DB 7           ;       DM     COLOR_M 1     <DEFB 7         >
115
SAV_CUR         EQU COLOR_M+1   ;DB 0           ;       DM     SAV_CUR 1     <DEFB 0         >
116
 SETVAR SAV_CUR,        BYTE            ;EQU COLOR_M+1  ;DB 0           ;       DM     SAV_CUR 1     <DEFB 0         >
116
 
117
 
117
MEMDSP          EQU SAV_CUR+1   ;DB 0X11        ;       DM     MEMDSP 1      <DEFB 11H       >
118
 SETVAR MEMDSP,         BYTE            ;EQU SAV_CUR+1  ;DB 0X11        ;       DM     MEMDSP 1      <DEFB 11H       >
118
C_CNT           EQU MEMDSP+1    ;DB 1           ;       DM     C_CNT  1      <DEFB 1         >
119
 SETVAR C_CNT,          BYTE            ;EQU MEMDSP+1   ;DB 1           ;       DM     C_CNT  1      <DEFB 1         >
119
C_MAX           EQU C_CNT+1     ;DB 10          ;       DM     C_MAX  1      <DEFB 10        >
120
 SETVAR C_MAX,          BYTE            ;EQU C_CNT+1    ;DB 10          ;       DM     C_MAX  1      <DEFB 10        >
120
C_BEG           EQU C_MAX+1     ;DB 7           ;       DM     C_BEG  1      <DEFB 7         >
121
 SETVAR C_BEG,          BYTE            ;EQU C_MAX+1    ;DB 7           ;       DM     C_BEG  1      <DEFB 7         >
121
C_END           EQU C_BEG+1     ;DB 8           ;       DM     C_END  1      <DEFB 8         >
122
 SETVAR C_END,          BYTE            ;EQU C_BEG+1    ;DB 8           ;       DM     C_END  1      <DEFB 8         >
122
TMP_W           EQU C_END+1     ;DW 0           ;       DM     TMP_W  2      <DEFS 2         >
123
 SETVAR TMP_W,          WORD            ;EQU C_END+1    ;DW 0           ;       DM     TMP_W  2      <DEFS 2         >
123
C_ACT           EQU TMP_W+2     ;DB 1           ;       DM     C_ACT  1      <DEFB 1         >
124
 SETVAR C_ACT,          BYTE            ;EQU TMP_W+2    ;DB 1           ;       DM     C_ACT  1      <DEFB 1         >
124
BEEP_D          EQU C_ACT+1     ;DW 0X3F10      ;       DM     BEEP_D 2      <DEFW 3F10H     >
125
 SETVAR BEEP_D,         WORD            ;EQU C_ACT+1    ;DW 0X3F10      ;       DM     BEEP_D 2      <DEFW 3F10H     >
125
FE_IMG          EQU BEEP_D+2    ;DB 0XBE        ;       DM     FE_IMG 1      <DEFB 0BEH      >
126
 SETVAR FE_IMG,         BYTE            ;EQU BEEP_D+2   ;DB 0XBE        ;       DM     FE_IMG 1      <DEFB 0BEH      >
126
BORDER          EQU FE_IMG+1    ;DB 0           ;       DM     BORDER 1      <DEFB 0         >
127
 SETVAR BORDER,         BYTE            ;EQU FE_IMG+1   ;DB 0           ;       DM     BORDER 1      <DEFB 0         >
127
SYS_P           EQU BORDER+1    ;DB 0           ;       DM     SYS_P  1      <DEFB 0         >
128
 SETVAR SYS_P,          BYTE            ;EQU BORDER+1   ;DB 0           ;       DM     SYS_P  1      <DEFB 0         >
128
FUNC            EQU SYS_P+1     ;DB 0           ;       DM     FUNC   1      <DEFS 1         >
129
 SETVAR FUNC,           BYTE            ;EQU SYS_P+1    ;DB 0           ;       DM     FUNC   1      <DEFS 1         >
129
FCNT            EQU FUNC+1      ;DB 0           ;       DM     FCNT   1      <DEFS 1         >
130
 SETVAR FCNT,           BYTE            ;EQU FUNC+1     ;DB 0           ;       DM     FCNT   1      <DEFS 1         >
130
PAR_PT          EQU FCNT+1      ;DW 0           ;       DM     PAR_PT 2      <DEFS 2         >
131
 SETVAR PAR_PT,         WORD            ;EQU FCNT+1     ;DW 0           ;       DM     PAR_PT 2      <DEFS 2         >
131
BCOL            EQU PAR_PT+2    ;DB 0           ;       DM     BCOL   1      <DEFB 0         >
132
 SETVAR BCOL,           BYTE            ;EQU PAR_PT+2   ;DB 0           ;       DM     BCOL   1      <DEFB 0         >
132
TIME_C          EQU BCOL+1      ;DUPL 4,0       ;       DM     TIME_C 4      <DEFB 0,0,0,0   >
133
 SETVAR TIME_C,         DWORD           ;EQU BCOL+1     ;DUPL 4,0       ;       DM     TIME_C 4      <DEFB 0,0,0,0   >
133
;  FOR KEYBOARD
134
;  FOR KEYBOARD
134
K_5CNT          EQU TIME_C+4    ;DB 0           ;       DM     K_5CNT 1      <DB 0           >
135
 SETVAR K_5CNT,         BYTE            ;EQU TIME_C+4   ;DB 0           ;       DM     K_5CNT 1      <DB 0           >
135
K_LAST          EQU K_5CNT+1    ;DB 0           ;       DM     K_LAST 1      <DB 0           >
136
 SETVAR K_LAST,         BYTE            ;EQU K_5CNT+1   ;DB 0           ;       DM     K_LAST 1      <DB 0           >
136
K_CNT           EQU K_LAST+1    ;DB 0           ;       DM     K_CNT  1      <DB 0           >
137
 SETVAR K_CNT,          BYTE            ;EQU K_LAST+1   ;DB 0           ;       DM     K_CNT  1      <DB 0           >
137
K_BUF           EQU K_CNT+1     ;DB -1          ;       DM     K_BUF  1      <DB -1          >
138
 SETVAR K_BUF,          BYTE            ;EQU K_CNT+1    ;DB -1          ;       DM     K_BUF  1      <DB -1          >
138
KEY_DEL         EQU K_BUF+1     ;DB 15          ;       DM     KEY_DEL 1     <DB 15          >
139
 SETVAR KEY_DEL,        BYTE            ;EQU K_BUF+1    ;DB 15          ;       DM     KEY_DEL 1     <DB 15          >
139
KEY_REP         EQU KEY_DEL+1   ;DB 5           ;       DM     KEY_REP 1     <DB 5           >
140
 SETVAR KEY_REP,        BYTE            ;EQU KEY_DEL+1  ;DB 5           ;       DM     KEY_REP 1     <DB 5           >
140
TAIL            EQU KEY_REP+1   ;DB 0           ;       DM     TAIL   1      <DEFB 0         >
141
 SETVAR TAIL,           BYTE            ;EQU KEY_REP+1  ;DB 0           ;       DM     TAIL   1      <DEFB 0         >
141
BEEP_T          EQU TAIL+1      ;DW 0X6008      ;       DM     BEEP_T 2      <DEFW 6008H     >
142
 SETVAR BEEP_T,         WORD            ;EQU TAIL+1     ;DW 0X6008      ;       DM     BEEP_T 2      <DEFW 6008H     >
142
BEEP_K          EQU BEEP_T+2    ;DW 0X3F04      ;       DM     BEEP_K 2      <DEFW 3F04H     >
143
 SETVAR BEEP_K,         WORD            ;EQU BEEP_T+2   ;DW 0X3F04      ;       DM     BEEP_K 2      <DEFW 3F04H     >
143
; KB SWITCH
144
; KB SWITCH
144
KEYBOARD        EQU BEEP_K+2    ;DB 0XC9,0,0    ;       DM     KEYBOARD  3    <DB 0C9H,0,0    >
145
 SETVAR KEYBOARD,       3               ;EQU BEEP_K+2   ;DB 0XC9,0,0    ;       DM     KEYBOARD  3    <DB 0C9H,0,0    >
145
READ_K          EQU KEYBOARD+3  ;DUPL 3,0       ;       DM     READ_K    3
146
 SETVAR READ_K,         3               ;EQU KEYBOARD+3 ;DUPL 3,0       ;       DM     READ_K    3
146
STAT_K          EQU READ_K+3    ;DUPL 3,0       ;       DM     STAT_K    3
147
 SETVAR STAT_K,         3               ;EQU READ_K+3   ;DUPL 3,0       ;       DM     STAT_K    3
147
READA_KNW       EQU STAT_K+3    ;DUPL 3,0       ;       DM     READA_KNW 3
148
 SETVAR READA_KNW,      3               ;EQU STAT_K+3   ;DUPL 3,0       ;       DM     READA_KNW 3
148
KB_TYP          EQU READA_KNW+3 ;DUPL 3,0       ;       DM     KB_TYP    3
149
 SETVAR KB_TYP,         3               ;EQU READA_KNW+3        ;DUPL 3,0       ;       DM     KB_TYP    3
149
K_INIT          EQU KB_TYP+3    ;DUPL 3,0       ;       DM     K_INIT    3
150
 SETVAR K_INIT,         3               ;EQU KB_TYP+3   ;DUPL 3,0       ;       DM     K_INIT    3
150
 
151
 
151
KS_ASH          EQU K_INIT+3    ;DB 0           ;       DM     KS_ASH    1
152
 SETVAR KS_ASH,         BYTE            ;EQU K_INIT+3   ;DB 0           ;       DM     KS_ASH    1
152
KS_SHIFTS       EQU KS_ASH+1    ;DB 0           ;       DM     KS_SHIFTS 1
153
 SETVAR KS_SHIFTS,      BYTE            ;EQU KS_ASH+1   ;DB 0           ;       DM     KS_SHIFTS 1
153
KS_UND          EQU KS_SHIFTS+1 ;DW 0           ;       DM     KS_UND    2
154
 SETVAR KS_UND,         WORD            ;EQU KS_SHIFTS+1        ;DW 0           ;       DM     KS_UND    2
154
KS_UNDS         EQU KS_UND+2    ;DB 0           ;       DM     KS_UNDS   1
155
 SETVAR KS_UNDS,        BYTE            ;EQU KS_UND+2   ;DB 0           ;       DM     KS_UNDS   1
155
KS_UNDS1        EQU KS_UNDS+1   ;DB 0           ;       DM     KS_UNDS1  1
156
 SETVAR KS_UNDS1,       BYTE            ;EQU KS_UNDS+1  ;DB 0           ;       DM     KS_UNDS1  1
156
I_MAX           EQU KS_UNDS1+1  ;DB 0           ;       DM     I_MAX  1
157
 SETVAR I_MAX,          BYTE            ;EQU KS_UNDS1+1 ;DB 0           ;       DM     I_MAX  1
157
I_MIN           EQU I_MAX+1     ;DB 0           ;       DM     I_MIN  1
158
 SETVAR I_MIN,          BYTE            ;EQU I_MAX+1    ;DB 0           ;       DM     I_MIN  1
158
I_AVR           EQU I_MIN+1     ;DB 0           ;       DM     I_AVR  1
159
 SETVAR I_AVR,          BYTE            ;EQU I_MIN+1    ;DB 0           ;       DM     I_AVR  1
159
;  EDISK WORK VALUE
160
;  EDISK WORK VALUE
160
ED_CYL          EQU I_AVR+1     ;DB 0           ;       DM     ED_CYL 1
161
 SETVAR ED_CYL,         BYTE            ;EQU I_AVR+1    ;DB 0           ;       DM     ED_CYL 1
161
;  FDISK WORK VALUE
162
;  FDISK WORK VALUE
162
SV_SP           EQU ED_CYL+1    ;DW 0           ;       DM     SV_SP  2
163
 SETVAR SV_SP,          WORD            ;EQU ED_CYL+1   ;DW 0           ;       DM     SV_SP  2
163
;  PROTECT VALUE
164
;  PROTECT VALUE
164
RTIME           EQU SV_SP+2     ;DW 0           ;       DM     RTIME  2
165
 SETVAR RTIME,          WORD            ;EQU SV_SP+2    ;DW 0           ;       DM     RTIME  2
165
;  INTERPAGE LDIR'S PARAMETERS
166
;  INTERPAGE LDIR'S PARAMETERS
166
R8_FR           EQU RTIME;+2    ;DB 0           ;       DM     R8_FR  1
167
R8_FR           EQU RTIME;+2    ;DB 0           ;       DM     R8_FR  1
167
R8_TO           EQU RTIME+1;2   ;DB 0           ;       DM     R8_TO  1
168
R8_TO           EQU RTIME+1;2   ;DB 0           ;       DM     R8_TO  1
168
;  ESC SEQUENCE PARAMS
169
;  ESC SEQUENCE PARAMS
169
PAR1            EQU RTIME+2     ;DB 0           ;       DM     PAR1   1
170
 SETVAR PAR1,           BYTE            ;EQU RTIME+2    ;DB 0           ;       DM     PAR1   1
170
PAR2            EQU PAR1+1      ;DB 0           ;       DM     PAR2   1
171
 SETVAR PAR2,           BYTE            ;EQU PAR1+1     ;DB 0           ;       DM     PAR2   1
171
PAR3            EQU PAR2+1      ;DB 0           ;       DM     PAR3   1
172
 SETVAR PAR3,           BYTE            ;EQU PAR2+1     ;DB 0           ;       DM     PAR3   1
172
PAR4            EQU PAR3+1      ;DB 0           ;       DM     PAR4   1
173
 SETVAR PAR4,           BYTE            ;EQU PAR3+1     ;DB 0           ;       DM     PAR4   1
173
PARR            EQU PAR4+1      ;DUPL 13,0      ;       DM     PARR   13
174
 SETVAR PARR,           13              ;EQU PAR4+1     ;DUPL 13,0      ;       DM     PARR   13
174
BUF             EQU PAR1
175
BUF             EQU PAR1
175
;  POWER ON DETECTOR
176
;  POWER ON DETECTOR
176
TST_1RUN        EQU PARR+13     ;DW 0           ;       DM     TST_1RUN 2
177
 SETVAR TST_1RUN,       WORD            ;EQU PARR+13    ;DW 0           ;       DM     TST_1RUN 2
177
TST_IS1         EQU TST_1RUN+2  ;DB 0           ;       DM     TST_IS1  1
178
 SETVAR TST_IS1,        BYTE            ;EQU TST_1RUN+2 ;DB 0           ;       DM     TST_IS1  1
-
 
179
 
-
 
180
;          IN VALUE
-
 
181
 SETVAR RQCHAN,         BYTE            ;EQU TST_IS1+1  ;DB 0           ;       DM      RQCHAN   1       ;НОМЕР КАНАЛА
-
 
182
 SETVAR RQCOM,          BYTE            ;EQU RQCHAN+1   ;DB 0           ;       DM      RQCOM    1       ;КОМАНДА
-
 
183
 SETVAR RQBLN,          BYTE            ;EQU RQCOM+1    ;DB 0           ;       DM      RQBLN    1       ;ЧИСЛО БЛОКОВ
-
 
184
 SETVAR RQTRACK,        WORD            ;EQU RQBLN+1    ;DW 0           ;       DM      RQTRACK  2       ;НОМЕР ДОРОЖКИ
-
 
185
 SETVAR RQBLOCK,        WORD            ;EQU RQTRACK+2  ;DW 0X4F00      ;       DM      RQBLOCK  2       ;НОМЕР БЛОКА
-
 
186
 SETVAR RQBADR,         WORD            ;EQU RQBLOCK+2  ;DW 0X18        ;       DM      RQBADR   2       ;БУФЕР ПОЛЬЗОВАТЕЛЯ
-
 
187
 
-
 
188
;          WORK VALUE
-
 
189
 SETVAR RQHEAD,         BYTE            ;EQU RQBADR+2   ;DB 7           ;       DM      RQHEAD   1       ;НОМЕР ГОЛОВКИ
-
 
190
 SETVAR RQCYL,          WORD            ;EQU RQHEAD+1   ;DW 0           ;       DM      RQCYL    2       ;НОМЕР ЦИЛИНДРА
-
 
191
 SETVAR LOCBUF,         WORD            ;EQU RQCYL+2    ;DW 0           ;       DM      LOCBUF   2       ;АДРЕС БЛОКА В БУФЕРЕ
-
 
192
 SETVAR RQSECT,         BYTE            ;EQU LOCBUF+2   ;DB 7           ;       DM      RQSECT   1       ;НОМЕР СЕКТОРА
-
 
193
 SETVAR DCBUF,          WORD            ;EQU RQSECT+1   ;DW 0X300       ;       DM      DCBUF    2       ;АДРЕС БУФЕРА
-
 
194
 SETVAR REP,            BYTE            ;EQU DCBUF+2    ;DB 1           ;       DM      REP      1       ;СЧЕТЧИК ЧИСЛА ПОВТОРОВ
-
 
195
 
-
 
196
;ПЕРЕМЕННЫЕ КОНТРОЛЕРА ФЛОПОВ
-
 
197
 SETVAR FD_TRKS,        WORD            ;EQU REP+1      ;DB 0X0A,7;,8,0 ;       DM      FD_TRKS  4       ;НОМЕРА ТЕКУЩИХ ДОРОЖЕК
-
 
198
 
-
 
199
;БЛОК СОСТОЯНИЯ БУФЕРА
-
 
200
 SETVAR BUFT,           BYTE            ;EQU FD_TRKS+2  ;DB 0           ;       DM      BUFT     1               ;НОМЕР КАНАЛА
-
 
201
 SETVAR BUFTRK,         WORD            ;EQU BUFT+1     ;DW 0X1001      ;       DM      BUFTRK   2               ;НОМЕР ДОРОЖКИ
-
 
202
 SETVAR BUFSEC,         BYTE            ;EQU BUFTRK+2   ;DB 0X3F        ;       DM      BUFSEC   1               ;НОМЕР СЕКТОРА
-
 
203
 
-
 
204
;-----------------------
-
 
205
 INIT_VAR
-
 
206
 SETVAR DVALID,         BYTE            ;EQU 0          ;:      DS      1       ;+ ПРИЗНАК ДЕЙСТВИТЕЛЬНОСТИ
-
 
207
 SETVAR _DTYP,          BYTE            ;EQU DVALID+1   ;:      DS      1       ;+ КОД УСТРОЙСТВА
-
 
208
 SETVAR _DUS,           BYTE            ;EQU _DTYP+1    ;:      DS      1       ;+ НОМЕР ПРИВОДА
-
 
209
 SETVAR _DDTYP,         BYTE            ;EQU _DUS+1     ;:      DS      1       ;- КОД ПРИВОДА  (Hi bit - unbuferized)
-
 
210
 SETVAR _DHEADF,        BYTE            ;EQU _DDTYP+1   ;:      DS      1       ;+ ЧИСЛО ФИКСИРОВАННЫХ ГОЛОВОК
-
 
211
 SETVAR _DHEADR,        BYTE            ;EQU _DHEADF+1  ;:      DS      1       ;+ ЧИСЛО СМЕННЫХ ГОЛОВОК
-
 
212
 SETVAR _DCYLN,         WORD            ;EQU _DHEADR+1  ;:      DS      2       ;+ ЧИСЛО ЦИЛИНДРОВ НА ДИСКЕ
-
 
213
 SETVAR _DSECTT,        BYTE            ;EQU _DCYLN+2   ;:      DS      1       ;+ ЧИСЛО СЕКТОРОВ НА ДОРОЖКЕ
-
 
214
 SETVAR _DBYTES,        WORD            ;EQU _DSECTT+1  ;:      DS      2       ;+ ЧИСЛО БАЙТОВ В СЕКТОРЕ
-
 
215
 SETVAR _DALTCYL,       BYTE            ;EQU _DBYTES+2  ;:      DS      1       ;+ ЧИСЛО СИСТЕМНЫХ ДОРОЖЕК
-
 
216
 SETVAR _DBEGCYL,       WORD            ;EQU _DALTCYL+1 ;:      DS      2       ;+ НОМЕР НАЧАЛЬНОГО ЦИЛИНДРА
-
 
217
 SETVAR _DBLDR,         WORD            ;EQU _DBEGCYL+2 ;:      DS      2       ;+ ЧИСЛО БЛОКОВ НА ДИСКЕ
-
 
218
 SETVAR _DBLTR,         WORD            ;EQU _DBLDR+2   ;:      DS      2       ;+ ЧИСЛО БЛОКОВ НА ДОРОЖКЕ
-
 
219
 SETVAR _DTRACK,        WORD            ;EQU _DBLTR+2   ;:      DS      2       ;+ ЧИСЛО ДОРОЖЕК НА ДИСКЕ
-
 
220
 SETVAR _DSEKTL,        BYTE            ;EQU _DTRACK+2  ;:      DS      1       ;+ ДЛИНА НОМЕРА БЛОКА В СЕКТОРЕ
-
 
221
 SETVAR _DDIRENT,       WORD            ;EQU _DSEKTL+1  ;:      DS      2       ;+ ЧИСЛО ЗАПИСЕЙ В ДИРЕКТОРИИ
-
 
222
 SETVAR _DIF0,          BYTE            ;EQU _DDIRENT+2 ;:      DS      1       ;+ РАЗМЕТКА ПЕРВОЙ ДОРОЖКИ
-
 
223
 SETVAR _DIF1,          BYTE            ;EQU _DIF0+1    ;:      DS      1       ;+ РАЗМЕТКА ВТОРОЙ ДОРОЖКИ
-
 
224
 SETVAR _DIF2,          BYTE            ;EQU _DIF1+1    ;:      DS      1       ;+ РАЗМЕТКА ВСЕХ ОСТАВШИХСЯ ДОРОЖЕК
-
 
225
 SETVAR _DTIF,          BYTE            ;EQU _DIF2+1    ;:      DS      1       ;? СМЕЩЕНИЕ ПЕРВОГО СЕКТОРА
-
 
226
 SETVAR _DF8,           BYTE            ;EQU _DTIF+1    ;       DS      1       ;+ ПРИЗНАК 8-ДЮЙМОВОГО ДИСКА
-
 
227
;  ИЛИ НОМЕР НАЧАЛЬНОЙ ГОЛОВКИ
-
 
228
 SETVAR _DFMFM,         BYTE            ;EQU _DF8+1     ;:      DS      1       ;+ ПЛОТНОСТЬ ЗАПИСИ
-
 
229
 SETVAR _DFN,           BYTE            ;EQU _DFMFM+1   ;:      DS      1       ;+ РАЗМЕР СЕКТОРА
-
 
230
 SETVAR _DFGPL,         BYTE            ;EQU _DFN+1     ;:      DS      1       ;+ GAP3 ДЛЯ ЧТЕНИЯ/ЗАПИСИ
-
 
231
 SETVAR _DFGPF,         BYTE            ;EQU _DFGPL+1   ;:      DS      1       ;+ GAP3 ДЛЯ ФОРМАТА
-
 
232
 SETVAR _DFSRHUT,       BYTE            ;EQU _DFGPF+1   ;:      DS      1       ;+ ВРЕМЯ ШАГА
-
 
233
;  ИЛИ ВРЕМЯ ШАГА ПРИ SEEK
-
 
234
 SETVAR _DFHLT,         BYTE            ;EQU _DFSRHUT+1 ;       DS      1:                      ;+ ВРЕМЯ ОПУСКАНИЯ ГОЛОВКИ
-
 
235
;  ИЛИ ВРЕМЯ ШАГА ПРИ RECALIBRATE
-
 
236
 SETVAR _DFMOTOR,       BYTE            ;EQU _DFHLT+1   ;:      DS      1       ;+ ПРИЗНАК ВКЛЮЧЕНИЯ МОТОРА
178
 
237
 
179
;СМЕЩЕНИЯ ОТ IX
238
;СМЕЩЕНИЯ ОТ IX
180
_FLAG           EQU LOW (IX_BASE-FLAG)
239
_FLAG           EQU LOW (IX_BASE - FLAG)
181
_FLAG1          EQU LOW (IX_BASE-FLAG1)
240
_FLAG1          EQU LOW (IX_BASE - FLAG1)
182
_W_X1           EQU LOW (IX_BASE-W_X1)
241
_W_X1           EQU LOW (IX_BASE - W_X1)
Line 224... Line 283...
224
_REP            EQU LOW (IX_BASE-REP)
283
_REP            EQU LOW (IX_BASE - REP)
225
_BUFT           EQU LOW (IX_BASE-BUFT)
284
_BUFT           EQU LOW (IX_BASE - BUFT)
226
_BUFSEC         EQU LOW (IX_BASE-BUFSEC)
285
_BUFSEC         EQU LOW (IX_BASE - BUFSEC)
227
 
286
 
228
; REST OF SWITCH AREA
287
; REST OF SWITCH AREA
-
 
288
 INIT_VAR 0xDF40
229
CL_SW           EQU 0XDF40
289
 SETVAR CL_SW,          3               ;EQU 0XDF40
230
SW_DO           EQU CL_SW+3
290
 SETVAR SW_DO,          0               ;EQU CL_SW+3
231
OUT_SW          EQU CL_SW+3
291
 SETVAR OUT_SW,         0               ;EQU CL_SW+3
232
SW_CLR          EQU OUT_SW
292
 SETVAR SW_CLR,         0               ;EQU OUT_SW
233
 
293
 
234
; SOME DATA AREAS
294
; SOME DATA AREAS
235
SV_ARE          EQU SW_CLR
295
 SETVAR SV_ARE,         WORD            ;EQU SW_CLR
236
ARR_CO          EQU SV_ARE+2
296
 SETVAR ARR_CO,         16 + 3          ;EQU SV_ARE+2
237
SG_ENC          EQU ARR_CO+16+3
297
 SETVAR SG_ENC,         DWORD           ;EQU ARR_CO+16+3
238
ENC_SI          EQU SG_ENC+4
298
 SETVAR ENC_SI,         DWORD           ;EQU SG_ENC+4
239
ENC_SO          EQU ENC_SI+4
299
 SETVAR ENC_SO,         DWORD           ;EQU ENC_SI+4
240
PAL_BUF         EQU ENC_SO+4
300
 SETVAR PAL_BUF,        0               ;EQU ENC_SO+4
241
 
301
 
242
; FILLED SWITCH AREA
302
; FILLED SWITCH AREA
243
SW_C            EQU CL_SW
303
 INIT_VAR CL_SW
244
SW_PUT          EQU CL_SW
304
 SETVAR SW_C,           0               ;EQU CL_SW
245
SW_CLL          EQU CL_SW
305
 SETVAR SW_PUT,         0               ;EQU CL_SW
246
SW_SCO          EQU CL_SW
306
 SETVAR SW_CLL,         0               ;EQU CL_SW
247
SW_RRL          EQU CL_SW
307
 SETVAR SW_SCO,         0               ;EQU CL_SW
248
SW_SIZ          EQU CL_SW
308
 SETVAR SW_RRL,         0               ;EQU CL_SW
249
 
-
 
250
;          IN VALUE
-
 
251
RQCHAN          EQU TST_IS1+1   ;DB 0           ;       DM      RQCHAN   1       ;НОМЕР КАНАЛА
-
 
252
RQCOM           EQU RQCHAN+1    ;DB 0           ;       DM      RQCOM    1       ;КОМАНДА
-
 
253
RQBLN           EQU RQCOM+1     ;DB 0           ;       DM      RQBLN    1       ;ЧИСЛО БЛОКОВ
-
 
254
RQTRACK         EQU RQBLN+1     ;DW 0           ;       DM      RQTRACK  2       ;НОМЕР ДОРОЖКИ
-
 
255
RQBLOCK         EQU RQTRACK+2   ;DW 0X4F00      ;       DM      RQBLOCK  2       ;НОМЕР БЛОКА
-
 
256
RQBADR          EQU RQBLOCK+2   ;DW 0X18        ;       DM      RQBADR   2       ;БУФЕР ПОЛЬЗОВАТЕЛЯ
-
 
257
 
-
 
258
;          WORK VALUE
309
 SETVAR SW_SIZ,         0               ;EQU CL_SW
259
RQHEAD          EQU RQBADR+2    ;DB 7           ;       DM      RQHEAD   1       ;НОМЕР ГОЛОВКИ
-
 
260
RQCYL           EQU RQHEAD+1    ;DW 0           ;       DM      RQCYL    2       ;НОМЕР ЦИЛИНДРА
-
 
261
LOCBUF          EQU RQCYL+2     ;DW 0           ;       DM      LOCBUF   2       ;АДРЕС БЛОКА В БУФЕРЕ
-
 
262
RQSECT          EQU LOCBUF+2    ;DB 7           ;       DM      RQSECT   1       ;НОМЕР СЕКТОРА
-
 
263
DCBUF           EQU RQSECT+1    ;DW 0X300       ;       DM      DCBUF    2       ;АДРЕС БУФЕРА
-
 
264
REP             EQU DCBUF+2     ;DB 1           ;       DM      REP      1       ;СЧЕТЧИК ЧИСЛА ПОВТОРОВ
-
 
265
 
-
 
266
;ПЕРЕМЕННЫЕ КОНТРОЛЕРА ФЛОПОВ
-
 
267
FD_TRKS         EQU REP+1       ;DB 0X0A,7;,8,0 ;       DM      FD_TRKS  4       ;НОМЕРА ТЕКУЩИХ ДОРОЖЕК
-
 
268
 
310
 
269
;БЛОК СОСТОЯНИЯ БУФЕРА
-
 
270
BUFT            EQU FD_TRKS+2   ;DB 0           ;       DM      BUFT     1               ;НОМЕР КАНАЛА
-
 
271
BUFTRK          EQU BUFT+1      ;DW 0X1001      ;       DM      BUFTRK   2               ;НОМЕР ДОРОЖКИ
-
 
272
BUFSEC          EQU BUFTRK+2    ;DB 0X3F        ;       DM      BUFSEC   1               ;НОМЕР СЕКТОРА
-
 
273
 
-
 
274
;-----------------------
-
 
275
DVALID          EQU 0           ;:      DS      1       ;+ ПРИЗНАК ДЕЙСТВИТЕЛЬНОСТИ
-
 
276
_DTYP           EQU DVALID+1    ;:      DS      1       ;+ КОД УСТРОЙСТВА
-
 
277
_DUS            EQU _DTYP+1     ;:      DS      1       ;+ НОМЕР ПРИВОДА
-
 
278
_DDTYP          EQU _DUS+1      ;:      DS      1       ;- КОД ПРИВОДА  (Hi bit - unbuferized)
-
 
279
_DHEADF         EQU _DDTYP+1    ;:      DS      1       ;+ ЧИСЛО ФИКСИРОВАННЫХ ГОЛОВОК
-
 
280
_DHEADR         EQU _DHEADF+1   ;:      DS      1       ;+ ЧИСЛО СМЕННЫХ ГОЛОВОК
-
 
281
_DCYLN          EQU _DHEADR+1   ;:      DS      2       ;+ ЧИСЛО ЦИЛИНДРОВ НА ДИСКЕ
-
 
282
_DSECTT         EQU _DCYLN+2    ;:      DS      1       ;+ ЧИСЛО СЕКТОРОВ НА ДОРОЖКЕ
-
 
283
_DBYTES         EQU _DSECTT+1   ;:      DS      2       ;+ ЧИСЛО БАЙТОВ В СЕКТОРЕ
-
 
284
_DALTCYL        EQU _DBYTES+2   ;:      DS      1       ;+ ЧИСЛО СИСТЕМНЫХ ДОРОЖЕК
-
 
285
_DBEGCYL        EQU _DALTCYL+1  ;:      DS      2       ;+ НОМЕР НАЧАЛЬНОГО ЦИЛИНДРА
-
 
286
_DBLDR          EQU _DBEGCYL+2  ;:      DS      2       ;+ ЧИСЛО БЛОКОВ НА ДИСКЕ
-
 
287
_DBLTR          EQU _DBLDR+2    ;:      DS      2       ;+ ЧИСЛО БЛОКОВ НА ДОРОЖКЕ
-
 
288
_DTRACK         EQU _DBLTR+2    ;:      DS      2       ;+ ЧИСЛО ДОРОЖЕК НА ДИСКЕ
-
 
289
_DSEKTL         EQU _DTRACK+2   ;:      DS      1       ;+ ДЛИНА НОМЕРА БЛОКА В СЕКТОРЕ
-
 
290
_DDIRENT        EQU _DSEKTL+1   ;:      DS      2       ;+ ЧИСЛО ЗАПИСЕЙ В ДИРЕКТОРИИ
-
 
291
_DIF0           EQU _DDIRENT+2  ;:      DS      1       ;+ РАЗМЕТКА ПЕРВОЙ ДОРОЖКИ
-
 
292
_DIF1           EQU _DIF0+1     ;:      DS      1       ;+ РАЗМЕТКА ВТОРОЙ ДОРОЖКИ
-
 
293
_DIF2           EQU _DIF1+1     ;:      DS      1       ;+ РАЗМЕТКА ВСЕХ ОСТАВШИХСЯ ДОРОЖЕК
-
 
294
_DTIF           EQU _DIF2+1     ;:      DS      1       ;? СМЕЩЕНИЕ ПЕРВОГО СЕКТОРА
-
 
295
_DF8            EQU _DTIF+1     ;       DS      1       ;+ ПРИЗНАК 8-ДЮЙМОВОГО ДИСКА
-
 
296
;  ИЛИ НОМЕР НАЧАЛЬНОЙ ГОЛОВКИ
-
 
297
_DFMFM          EQU _DF8+1      ;:      DS      1       ;+ ПЛОТНОСТЬ ЗАПИСИ
-
 
298
_DFN            EQU _DFMFM+1    ;:      DS      1       ;+ РАЗМЕР СЕКТОРА
-
 
299
_DFGPL          EQU _DFN+1      ;:      DS      1       ;+ GAP3 ДЛЯ ЧТЕНИЯ/ЗАПИСИ
-
 
300
_DFGPF          EQU _DFGPL+1    ;:      DS      1       ;+ GAP3 ДЛЯ ФОРМАТА
-
 
301
_DFSRHUT        EQU _DFGPF+1    ;:      DS      1       ;+ ВРЕМЯ ШАГА
-
 
302
;  ИЛИ ВРЕМЯ ШАГА ПРИ SEEK
-
 
303
_DFHLT          EQU _DFSRHUT+1  ;       DS      1:                      ;+ ВРЕМЯ ОПУСКАНИЯ ГОЛОВКИ
-
 
304
;  ИЛИ ВРЕМЯ ШАГА ПРИ RECALIBRATE
-
 
305
_DFMOTOR        EQU _DFHLT+1    ;:      DS      1       ;+ ПРИЗНАК ВКЛЮЧЕНИЯ МОТОРА
-
 
306
;-----------------------
311
;-----------------------