к оглавлению

КЛАРИОH. Справочное руководство

ПРИЛОЖЕНИЯ

Приложение A

================================================================

		    КОДЫ КЛАВИШ В КЛАРИОНЕ

----------------------------------------------------------------
		Формат кода клавиши в Кларионе
================================================================

Каждой клавише клавиатуры соответствует код клавиши в  Кларионе.
Коды от 0  до 255 -  это стандартные ASCII  коды, от 256  и выше
специфичны для языка Кларион. Коды клавиш Клариона  возвращаются
функцией KEYCODE() и имеют следующий формат:

        ----T---T---T---T------------¬
        ¦ F ¦ A ¦ C ¦ N ¦    КОД     ¦
        L---+---+---+---+-------------
    Биты  11 10   9   8   7         0

Значения битов:
    F=1       - Код функционально клавиши (коды 1-10 для Fl-F10)
    A=1       - Клавиша нажата вместе с Alt
    C=1       - Клавиша нажата вместе с Ctrl
    A и C=1   - Клавиша нажата вместе с Shift
    N=1       - Код не выводится на экран

----------------------------------------------------------------
  Таблицы кодов клавиш


 -----------------T--------T--------T--------T--------¬
 ¦    Клавиша     ¦  Код   ¦ +Shift ¦  +Ctrl ¦  +Alt  ¦
 +----------------+--------+--------+--------+--------+
 ¦ пробел         ¦    32  ¦   289  ¦   290  ¦        ¦
 ¦ 0      )       ¦    48  ¦    41  ¦        ¦  1072  ¦
 ¦ 1      !       ¦    49  ¦    33  ¦        ¦  1073  ¦
 ¦ 2      @       ¦    50  ¦    64  ¦   562  ¦  1074  ¦
 ¦ 3      #       ¦    51  ¦    35  ¦        ¦  1075  ¦
 ¦ 4      $       ¦    52  ¦     6  ¦        ¦  1076  ¦
 ¦ 5      %       ¦    53  ¦     7  ¦        ¦  1077  ¦
 ¦ 6      ^       ¦    54  ¦    94  ¦   566  ¦  1078  ¦
 ¦ 7      &       ¦    55  ¦    38  ¦        ¦  1079  ¦
 ¦ 8      *       ¦    56  ¦    42  ¦        ¦  1080  ¦
 ¦ 9      (       ¦    57  ¦    40  ¦        ¦  1081  ¦
 ¦ a      A       ¦    97  ¦    65  ¦   577  ¦  1089  ¦
 ¦ b      B       ¦    98  ¦    66  ¦   578  ¦  1090  ¦
 ¦ c      C       ¦    99  ¦    67  ¦   579  ¦  1091  ¦
 ¦ d      D       ¦   100  ¦    68  ¦   580  ¦  1092  ¦
 ¦ e      E       ¦   101  ¦    69  ¦   581  ¦  1093  ¦
 ¦ f      F       ¦   102  ¦    70  ¦   582  ¦  1094  ¦
 ¦ g      G       ¦   103  ¦    71  ¦   583  ¦  1095  ¦
 ¦ h      H       ¦   104  ¦    72  ¦   584  ¦  1096  ¦
 ¦ i      I       ¦   105  ¦    73  ¦   585  ¦  1097  ¦
 ¦ j      J       ¦   106  ¦    74  ¦   586  ¦  1098  ¦
 ¦ k      K       ¦   107  ¦    75  ¦   587  ¦  1099  ¦
 ¦ l      L       ¦   108  ¦    76  ¦   588  ¦  1100  ¦
 ¦ m      M       ¦   109  ¦    77  ¦   589  ¦  1101  ¦
 ¦ n      N       ¦   110  ¦    78  ¦   590  ¦  1102  ¦
 ¦ o      O       ¦   111  ¦    79  ¦   591  ¦  1103  ¦
 ¦ p      P       ¦   112  ¦    80  ¦   592  ¦  1104  ¦
 ¦ q      Q       ¦   113  ¦    81  ¦   593  ¦  1105  ¦
 ¦ r      R       ¦   114  ¦    82  ¦   594  ¦  1106  ¦
 ¦ s      S       ¦   115  ¦    83  ¦   595  ¦  1107  ¦
 ¦ t      T       ¦   116  ¦    84  ¦   596  ¦  1108  ¦
 ¦ u      U       ¦   117  ¦    85  ¦   597  ¦  1109  ¦
 ¦ v      V       ¦   118  ¦    86  ¦   598  ¦  1110  ¦
 ¦ w      W       ¦   119  ¦    87  ¦   599  ¦  1111  ¦
 ¦ x      X       ¦   120  ¦    88  ¦   600  ¦  1112  ¦
 ¦ y      Y       ¦   121  ¦    89  ¦   601  ¦  1113  ¦
 ¦ z      Z       ¦   122  ¦    90  ¦   602  ¦  1114  ¦
 ¦ -      _       ¦    45  ¦    95  ¦   557  ¦  1169  ¦
 ¦ =      +       ¦    61  ¦    43  ¦        ¦  1185  ¦
 ¦ [      {       ¦    91  ¦   123  ¦   603  ¦        ¦
 ¦ ]      }       ¦    93  ¦   125  ¦   605  ¦        ¦
 ¦ ;      :       ¦    59  ¦    58  ¦        ¦        ¦
 ¦ '      "       ¦    39  ¦    34  ¦        ¦        ¦
 ¦ `      ~       ¦    96  ¦   126  ¦        ¦        ¦
 ¦ \      |       ¦    92  ¦   124  ¦        ¦        ¦
 ¦ ,      <       ¦    44  ¦    60  ¦        ¦        ¦
 ¦ .      >       ¦    46  ¦    62  ¦        ¦        ¦
 ¦ /      ?       ¦    47  ¦    63  ¦        ¦        ¦
 ¦ Esc            ¦   256  ¦   273  ¦   279  ¦        ¦
 ¦ Enter          ¦   257  ¦   274  ¦   280  ¦        ¦
 ¦ Backspace      ¦   258  ¦   275  ¦   281  ¦        ¦
 ¦ Tab            ¦   259  ¦   276  ¦        ¦        ¦
 ¦ Gray *         ¦   260  ¦        ¦   282  ¦        ¦
 ¦ Home           ¦   261  ¦        ¦   283  ¦        ¦
 ¦ Стрелка вверх  ¦   262  ¦        ¦        ¦        ¦
 ¦ Page Up        ¦   263  ¦        ¦   284  ¦        ¦
 ¦ Gray -         ¦   264  ¦   277  ¦        ¦        ¦
 ¦ Стрелка влево  ¦   265  ¦        ¦   285  ¦        ¦
 ¦ Стрелка вправо ¦   266  ¦        ¦   286  ¦        ¦
 ¦ Gray +         ¦   267  ¦   278  ¦        ¦        ¦
 ¦ End            ¦   268  ¦        ¦   287  ¦        ¦
 ¦ Стрелка вниз   ¦   269  ¦        ¦        ¦        ¦
 ¦ Page Down      ¦   270  ¦        ¦   288  ¦        ¦
 ¦ Insert         ¦   271  ¦        ¦        ¦        ¦
 ¦ Delete         ¦   272  ¦        ¦        ¦        ¦
 ¦ F1             ¦  2049  ¦  3585  ¦  2561  ¦  3073  ¦
 ¦ F2             ¦  2050  ¦  3586  ¦  2562  ¦  3074  ¦
 ¦ F3             ¦  2051  ¦  3587  ¦  2563  ¦  3075  ¦
 ¦ F4             ¦  2052  ¦  3588  ¦  2564  ¦  3076  ¦
 ¦ F5             ¦  2053  ¦  3589  ¦  2565  ¦  3077  ¦
 ¦ F6             ¦  2054  ¦  3590  ¦  2566  ¦  3078  ¦
 ¦ F7             ¦  2055  ¦  3591  ¦  2567  ¦  3079  ¦
 ¦ F8             ¦  2056  ¦  3592  ¦  2568  ¦  3080  ¦
 ¦ F9             ¦  2057  ¦  3593  ¦  2569  ¦  3081  ¦
 ¦ F10            ¦  2058  ¦  3594  ¦  2570  ¦  3082  ¦
 ¦ F11            ¦  2059  ¦  3595  ¦  2571  ¦  3083  ¦
 ¦ F12            ¦  2060  ¦  3596  ¦  2572  ¦  3084  ¦
 L----------------+--------+--------+--------+---------


  KEYCODES.EQU

  Мнемонические EQUATE-метки кодов клавиш хранятся в файле KEYCODES.EQU.
Это файл в формате CLARION SOURCE, который содержит оператор EQUATE для
каждого кода клавиши. Изначально этот файл находится в том каталоге, в
который был установлен CDD. Этот файл можно включить в исходный текст
программы оператором: INCLUDE('KEYCODES.EQU').

  Коды клавиш в этом файле перечислены в алфавитном порядке присвоенных им
меток.

 Alt0         EQUATE(1072)  !Alt-0
 Alt1         EQUATE(1073)  !Alt-1
 Alt2         EQUATE(1074)  !Alt-2
 Alt3         EQUATE(1075)  !Alt-3
 Alt4         EQUATE(1076)  !Alt-4
 Alt5         EQUATE(1077)  !Alt-5
 Alt6         EQUATE(1078)  !Alt-6
 Alt7         EQUATE(1079)  !Alt-7
 Alt8         EQUATE(1080)  !Alt-8
 Alt9         EQUATE(1081)  !Alt-9
 AltA         EQUATE(1089)  !Alt-A
 AltB         EQUATE(1090)  !Alt-B
 AltC         EQUATE(1091)  !Alt-C
 AltD         EQUATE(1092)  !Alt-D
 AltE         EQUATE(1093)  !Alt-E
 AltEqual     EQUATE(1085)  !Alt-РАВНО
 AltF         EQUATE(1094)  !Alt-F
 AltF1        EQUATE(3073)  !Alt-F1
 AltF10       EQUATE(3082)  !Alt-F10
 AltF11       EQUATE(3083)  !Alt-F11
 AltF12       EQUATE(3084)  !Alt-F12
 AltF2        EQUATE(3074)  !Alt-F2
 AltF3        EQUATE(3075)  !Alt-F3
 AltF4        EQUATE(3076)  !Alt-F4
 AltF5        EQUATE(3077)  !Alt-F5
 AltF6        EQUATE(3078)  !Alt-F6
 AltF7        EQUATE(3079)  !Alt-F7
 AltF8        EQUATE(3080)  !Alt-F8
 AltF9        EQUATE(3081)  !Alt-F9
 AltG         EQUATE(1095)  !Alt-G
 AltH         EQUATE(1096)  !Alt-H
 AltI         EQUATE(1097)  !Alt-I
 AltJ         EQUATE(1098)  !Alt-J
 AltK         EQUATE(1099)  !Alt-K
 AltL         EQUATE(1100)  !Alt-L
 AltM         EQUATE(1101)  !Alt-M
 AltMinus     EQUATE(1069)  !Alt-Minus
 AltN         EQUATE(1102)  !Alt-N
 AltO         EQUATE(1103)  !Alt-O
 AltP         EQUATE(1104)  !Alt-P
 AltQ         EQUATE(1105)  !Alt-Q
 AltR         EQUATE(1106)  !Alt-R
 AltS         EQUATE(1107)  !Alt-S
 AltT         EQUATE(1108)  !Alt-T
 AltU         EQUATE(1109)  !Alt-U
 AltV         EQUATE(1110)  !Alt-V
 AltW         EQUATE(1111)  !Alt-W
 AltX         EQUATE(1112)  !Alt-X
 AltY         EQUATE(1113)  !Alt-Y
 AltZ         EQUATE(1114)  !Alt-Z
 BSKey        EQUATE(258)   !Backspace
 Ctrl2        EQUATE(562)   !Ctrl-2
 Ctrl6        EQUATE(566)   !Ctrl-6
 CtrlA        EQUATE(577)   !Ctrl-A
 CtrlB        EQUATE(578)   !Ctrl-B
 CtrlBS       EQUATE(281)   !Ctrl-Backspace
 CtrlC        EQUATE(579)   !Ctrl-C
 CtrlD        EQUATE(580)   !Ctrl-D
 CtrlE        EQUATE(581)   !Ctrl-E
 CtrlEnd      EQUATE(287)   !Ctrl-End
 CtrlEnter    EQUATE(280)   !Ctrl-Enter
 CtrlEsc      EQUATE(279)   !Ctrl-Esc
 CtrlF        EQUATE(582)   !Ctrl-F
 CtrlF1       EQUATE(2561)  !Ctrl-F1
 CtrlF10      EQUATE(2570)  !Ctrl-F10
 CtrlF11      EQUATE(2571)  !Ctrl-F11
 CtrlF12      EQUATE(2572)  !Ctrl-F12
 CtrlF2       EQUATE(2562)  !Ctrl-F2
 CtrlF3       EQUATE(2563)  !Ctrl-F3
 CtrlF4       EQUATE(2564)  !Ctrl-F4
 CtrlF5       EQUATE(2565)  !Ctrl-F5
 CtrlF6       EQUATE(2566)  !Ctrl-F6
 CtrlF7       EQUATE(2567)  !Ctrl-F7
 CtrlF8       EQUATE(2568)  !Ctrl-F8
 CtrlF9       EQUATE(2569)  !Ctrl-F9
 CtrlG        EQUATE(583)   !Ctrl-G
 CtrlGAst     EQUATE(282)   !Ctrl-Gray *
 CtrlH        EQUATE(584)   !Ctrl-H
 CtrlHome     EQUATE(283)   !Ctrl-Home
 CtrlI        EQUATE(585)   !Ctrl-I
 CtrlJ        EQUATE(586)   !Ctrl-J
 CtrlK        EQUATE(587)   !Ctrl-K
 CtrlL        EQUATE(588)   !Ctrl-L
 CtrlLBrk     EQUATE(603)   !Ctrl-[
 CtrlLeft     EQUATE(285)   !Ctrl-Курсор влево
 CtrlM        EQUATE(589)   !Ctrl-M
 CtrlMinus    EQUATE(557)   !Ctrl-Minus
 CtrlN        EQUATE(590)   !Ctrl-N
 CtrlO        EQUATE(591)   !Ctrl-O
 CtrlP        EQUATE(592)   !Ctrl-P
 CtrlPgDn     EQUATE(288)   !Ctrl-PgDn
 CtrlPgUp     EQUATE(284)   !Ctrl-PgUp
 CtrlQ        EQUATE(593)   !Ctrl-Q
 CtrlR        EQUATE(594)   !Ctrl-R
 CtrlRBrk     EQUATE(605)   !Ctrl-]
 CtrlRight    EQUATE(286)   !Ctrl-Курсор вправо
 CtrlS        EQUATE(595)   !Ctrl-S
 CtrlSlash    EQUATE(604)   !Ctrl-Слэш (/)
 CtrlSpace    EQUATE(290)   !Ctrl-пробел
 CtrlT        EQUATE(596)   !Ctrl-T
 CtrlU        EQUATE(597)   !Ctrl-U
 CtrlV        EQUATE(598)   !Ctrl-V
 CtrlW        EQUATE(599)   !Ctrl-W
 CtrlX        EQUATE(600)   !Ctrl-X
 CtrlY        EQUATE(601)   !Ctrl-Y
 CtrlZ        EQUATE(602)   !Ctrl-Z
 DelKey       EQUATE(272)   !Del
 DownKey      EQUATE(269)   !Курсор вниз
 EndKey       EQUATE(268)   !End
 EnterKey     EQUATE(257)   !Enter
 EscKey       EQUATE(256)   !Esc
 F10Key       EQUATE(2058)  !F10
 F11Key       EQUATE(2059)  !F11
 F12Key       EQUATE(2060)  !F12
 F1Key        EQUATE(2049)  !F1
 F2Key        EQUATE(2050)  !F2
 F3Key        EQUATE(2051)  !F3
 F4Key        EQUATE(2052)  !F4
 F5Key        EQUATE(2053)  !F5
 F6Key        EQUATE(2054)  !F6
 F7Key        EQUATE(2055)  !F7
 F8Key        EQUATE(2056)  !F8
 F9Key        EQUATE(2057)  !F9
 GAstKey      EQUATE(260)   !Gray *
 GMinusKey    EQUATE(264)   !Gray -
 GPlusKey     EQUATE(267)   !Gray +
 HomeKey      EQUATE(261)   !Home
 InsKey       EQUATE(271)   !Ins
 MouseLeft    EQUATE(4000)  !Левая кнопка мышки
 MouseLeft2   EQUATE(4002)  !Двойной щелчок левой кнопкой мышки
 MouseRight   EQUATE(4001)  !правая кнопка мышки
 LeftKey      EQUATE(265)   !Курсор влево
 PgDnKey      EQUATE(270)   !PgDn
 PgUpKey      EQUATE(263)   !PgUp
 RighTKey     EQUATE(266)   !Курсор вправо
 ShftBS       EQUATE(275)   !Shft-Backspace
 ShftEnter    EQUATE(274)   !Shft-Enter
 ShftEsc      EQUATE(273)   !Shft-Esc
 ShftF1       EQUATE(3585)  !Shft-F1
 ShftF10      EQUATE(3594)  !Shft-F10
 ShftF11      EQUATE(3595)  !Shft-F11
 ShftF12      EQUATE(3596)  !Shft-F12
 ShftF2       EQUATE(3586)  !Shft-F2
 ShftF3       EQUATE(3587)  !Shft-F3
 ShftF4       EQUATE(3588)  !Shft-F4
 ShftF5       EQUATE(3589)  !Shft-F5
 ShftF6       EQUATE(3590)  !Shft-F6
 ShftF7       EQUATE(3591)  !Shft-F7
 ShftF8       EQUATE(3592)  !Shft-F8
 ShftF9       EQUATE(3593)  !Shft-F9
 ShftGMinus   EQUATE(277)   !Shft-Gray -
 ShftGPlus    EQUATE(278)   !Shft-Gray +
 ShftSpace    EQUATE(289)   !Shft-пробел
 ShftTab      EQUATE(276)   !Shft-Tab
 TabKey       EQUATE(259)   !Tab
 UpKey        EQUATE(262)   !Курсор вверх

  Перевод всей документации выполнил Сергей АгАрков. Если возникли
какие-либо вопросы или предложения по качеству перевода, обращайтесь:

  Jew Smile MO Station 2:5040/22.3 Serg Agarkoff +7-(421)-626-8486 время
работы станции с 15:00 до 23:30 по московскому времени в будние дни и
круглосуточно в выходные и праздники. По этому же телефону меня можно
застать с 3:00 до 12:00 по московскому времени. Спросить капитана Агаркова.

Домашний телефон +7-(421)-626-8486 ўс 13:00 до 0:30 по москве.

                                                    Приложение B


			  КОДЫ ОШИБОК


ERRORS.EQU


  EQUATE-метки кодов ошибок присваивают мнемонические метки кодам,
возвращаемым функцией ERRORCODE(). Файл EQUATE-меток кодов ошибок
(ERRORS.EQU) это файл в формате CLARION SOURCE, содержащий оператор EQUATE
для каждого кода ошибки, который можно перехватить на уровне Клариона. Есть
уйма всяческих ошибок, которые, в принципе, могут привести к состоянию
"ОСТАНОВ ВО ВРЕМЯ ИСПОЛНЕНИЯ" (Run-time Halt). Это означает, что программа
немедленно обламывается, выводится сообщение об ошибке и юзер вылетает в
ДОС.
  ERRORS.EQU изначально находится там, куда был устанолен CDD. Этот файл
можно подключить к исходному тексту программы оператором:
INCLUDE('ERRORS.EQU').

!                ERRORS.EQU  -- ERRORCODE EQUATES

!                Значение,      Значение,
!		 возвращаемое   возвращаемое
!                ERRORCODE()    ERROR()

NoError          EQUATE(0)     !''

NoFileErr        EQUATE(02)    !'File Not Found'
			       !Файл не найден

NoPathErr        EQUATE(03)    !'Path Not Found'
			       !Путь не найден

TooManyErr       EQUATE(04)    !'Too Many Open Files'
			       !Слишком много открытых файлов

NoAccessErr      EQUATE(05)    !'Access Denied'
			       !Доступ запрещен

BadMemErr        EQUATE(07)    !'Memory Corrupted'
			       !Неисправность памяти

NoMemErr         EQUATE(08)    !'Insufficient Memory'
			       !Недостаточно памяти

BadDriveErr      EQUATE(15)    !'Invalid Drive'
			       !Неправильно указан диск

NoEntryErr       EQUATE(30)    !'Entry Not Found'
			       !Элемент не найден

IsLockedErr      EQUATE(32)    !'File Is Already Locked'
			       !Файл уже заблокирован

BadRecErr        EQUATE(33)    !'Record Not Available'
			       !Запись недоступна

NoRecErr         EQUATE(35)    !'Record Not Found'
			       !Запись не найдена

BadFileErr       EQUATE(36)    !'Invalid Data File'
			       !Ошибка в файле данных

NotOpenErr       EQUATE(37)    !'File Not Open'
			       !Файл не открыт

DupKeyErr        EQUATE(40)    !'Creates Duplicate Key'
			       !Запись с таким ключом уже есть

IsHeldErr        EQUATE(43)    !'Record Is Already Held'
			       !Запись уже захвачена

BadNameErr       EQUATE(45)    !'Invalid Filename'
                               !Неправильное имя файла (А.С.П - Так он
ругается на попытку создать файл с русским именем, например АГАРКОВ.С_П,
несмотря на то, что ДОС это вполне  позволяет.)

BadKeyErr        EQUATE(46)    !'Key Files must be Rebuilt'
			       !Надо перестроить ключевые файлы

InvalidFileErr   EQUATE(47)    !'Invalid File Declaration'
			       !Неправильное описание файла

BadTranErr       EQUATE(48)    !'Unable to log transaction'
			      !Не могу вести протокол транзакции

IsOpenErr        EQUATE(52)    !'File Already Open'
			       !Файл уже открыт

NoCreateErr      EQUATE(54)    !'No Create Attribute'
			       !У файла нет атрибута CREATE

NoShareErr       EQUATE(55)    !'File Must Be Shared'
		          !Файл надо открыть в совместном режиме

BadMemoErr       EQUATE(57)    !'Invalid Memo File'
			       !Ошибка в файле примечаний

ExclReqErr       EQUATE(63)    !'Exclusive Access Required'
			       !Требуется монопольный доступ

ShareVioErr      EQUATE(64)    !'Sharing Violation'
			       !Нарушение совместного режима

CantRollErr      EQUATE(65)    !'Unable to rollback transaction'
			       !Не могу отменить транзакцию

TypeDescErr      EQUATE(75)    !'Invalid Field Type Descriptor'
			       !Неверный описательтипа поля

BadIndexErr      EQUATE(76)    !'Invalid Index String'
			     !Неправильная строка для индексации

IndexAccessErr   EQUATE(77)    !'Unable To Access Index'
			      !Не могу получить доступ к индексу

BadParmErr       EQUATE(78)    !'Invalid Number Of Parameters'
			       !Параметров или мало или много

NoDriverSupport  EQUATE(80)    !'Function not supported'
			       !Эта функция не поддерживается

  Перевод всей документации выполнил Сергей АгАрков. Если возникли
какие-либо вопросы или предложения по качеству перевода, обращайтесь:

  Jew Smile MO Station 2:5040/22.3 Serg Agarkoff +7-(421)-626-8486 время
работы станции с 15:00 до 23:30 по московскому времени в будние дни и
круглосуточно в выходные и праздники. По этому же телефону меня можно
застать с 3:00 до 12:00 по московскому времени. Спросить капитана Агаркова.

 Домашний телефон +7-(421)-626-8486 ўс 13:00 до 0:30 по москве.

                                                    Приложение C


		УПРАВЛЕНИЕ ВИРТУАЛЬНОЙ ПАМЯТЬЮ

  Система управления памятью, включает в себя технологию Менеджера
Виртуальной Памяти (VMM). VMM автоматически управляет EMS и XMS (если,
конечно, таковые имеются на складе :) а также виртуальной памятью на диске.
  Стандартная (conventional) память, это память, в которой иногда можно
запускать программы, в диапазоне от 0K до 640K.
  EMS (expanded, добавочная) - это память выше 640K, обслуживаемая
системным менеджером добавочной памяти типа QEMM или EMM386. Добавочная
память не занимает какого-то определенного диапазона адресов, она
использует отображение для выделения блоков памяти по 64Kг. EMS
используется для хранения и подкачки данных, но не может использоваться для
запуска программ.
  XMS (extended, расширенная) - это память выше 1Mb. Она не использует
"переключение страниц" как EMS, а просто копирует блоки данных туда-сюда
между стандартной памятью и областью выше 1 Mb.
  Виртуальная память - это EMS (в стандарте LIM EMS 3.2 или выше), XMS и
место на диске. Дисковая виртуальная память может быть выделена на любом
устройстве, к которому ДОС может обратиться по букве диска и
(необязательно) пути. Виртуальные диски (RAM-диски) или быстрые винчестеры
дают большую производительность дисковой виртуальной памяти.
  (Далее по тексту термин "добавочная память" будет означать как EMS так и
XMS, кроме тех случаев, где указано что-то конкретное) (А.С.П. - Там, где
написано ...ВСЮ ХХХ..., следует читать как ...всю ДОСТУПНУЮ ххх...)
  Прикладыне программы на Кларионе используют виртуальную память для
хранения ОЧЕРЕДЕЙ, ЭКРАНОВ и ГРАФИЧЕСКИХ ОБРАЗОВ. VMM Клариона
самостоятельно занимается перемещением даннх между памятью (стандартной и
добавочной) и диском. Используя "верхние области памяти" и место на диске,
приклдные программы на Кларионе могут обращаться к 64 МЕГАбайтам виртульной
памяти.
  При запуске программы на Кларионе, VMM автоматически определяет, сколько
имеется в наличии добавочной памяти (если вообще имеется). По умолчанию,
VMM использует всю добавочную память кроме 64K (до 4М). Если в наличии
меньше 4М добавочной памяти, VMM использует диск для получения 4М
виртуальной памяти. Виртуальная дисковая память выделяется в текущем
каталоге. Параметры виртуальной памяти, задаваемые по умолчанию, могут быть
изменены переменной окружения CLAVM.


CLAVM                          (конфигурация виртуальной памяти)

  CLAVM= ¦EMS Kбайт¦[,путь][,размер блока][,блоков одновременно]
         ¦XMS Kбайт¦                                 [,мегабайт]
         ¦  NOEMS  ¦
         ¦   OFF   ¦
         ¦         ¦


  EMS Kбайт - Этот параметр сообщает VMM, сколько Kb EMS использовать.
Субпараметр КБАЙТ нужен обязательно. Если он отрицателен, это значит, что
использовать всю доступную EMS, кроме указанного количества. Минимальный
размер выделяемой памяти - 64К. Установка по умолчанию - EMS-64 (всю EMS
кроме 64K).

XMS Kбайт - Этот параметр сообщает VMM, сколько Kb XMS использовать. Он
аналогичен параметру EMS во всем кроме типа используемой памяти. По
умолчанию установка XMS-64 (всю XMS кроме 64K).

NOEMS - Приказывает VMM использовать под виртуальную память только диск.

  OFF - Отключает VMM, вынуждая бедную программу обходиться только
стандартной памятью.

  путь - Задает диск (необязательно) и путь, для выделения виртуальной
дисковой памяти. VMM создает дисковую память после того, как забьет всю
добавочную. Если нету никакой добавочной памяти, то вся виртуальная память
размещается на диске. Этот параметр может содержать любую разрешенную в ДОС
спецификацию. VMM проверяет существование пути. Если путь задан
неправильно, то диск не используется вообще. По умолчанию ПУТЬ=. (точка),
что вынуждает VMM ипользовать текущие диск и каталог. ПУТЬ=* означает, что
для виртуальной памяти диск использовать не разрешается.

  размер блока - Должен быть от 8 до 64 включительно. Этим задается размер (в
килобайтах) максимального блока памяти, который можно подкачивать из/в
виртуальной памяти. Если для блока заданного размера не хватает памяти, то
выделяется блок меньшего размера. Этот параметр не проверяется системой
виртуальной памяти. По умолчанию РАЗМЕР БЛОКА равен 32K.

  блоков одновременно - Число виртуальных блоков, одновременно содержащихся
в стандартной памяти прежде чем происходит выгрузка. Число БЛОКОВ
ОДНОВРЕМЕННО должно быть 3 или больше. По умолчанию - 3.

  мегабайт - Максимальный размер виртуальной памяти для VMM. Это общее
количество памяти, которое может быть выгружено в добавочную память, на
диск, или и туда и туда. Эта настройка не должна быть больша параметра
РАЗМЕР БЛОКА. Значение по умолчанию - 4 мегабайта. (А.С.П. - т.е. размер
виртуалки в МЕГах не больше размера блока в КИЛОграммах)

  Для управления виртуальной памятью, VMM использует выгружаемые блоки
данных, размер которых задается параметром РАЗМЕР БЛОКА. Если используется
EMS а не XMS, то первый виртуальный блок данных (весом до 64K) создается в
Кадре Страницы EMS (см. рис. 1). VMM не использует стандартную память до
тех пор, пока не заполнится виртуальный блок в Кадре Страницы EMS. Когда
потребуются еще виртуальные блоки, VMM разместит до БЛОКОВ ОДНОВРЕМЕННО
виртуальных блоков данных в стандартной памяти.

 ---------------------------------------------------------------¬
 ¦          32Meg------------------------------------------¬    ¦
 ¦                  |           Добавочная память          |    ¦
 ¦                  ¦-----------¬ -----------¬ -----------¬¦    ¦
 ¦                  ¦¦::::::::::¦ ¦::::::::::¦ ¦::::::::::¦¦    ¦
 ¦                  ¦¦::::::::::¦ ¦::::::::::¦ ¦::::::::::¦¦    ¦
 ¦                  ¦¦::::::::::¦ ¦::::::::::¦ ¦::::::::::¦¦    ¦
 ¦                  ¦L----------- L----------- L-----------¦    ¦
 ¦           1Meg---+--------------------------------------+    ¦
 ¦                  ¦######################################¦--¬ ¦
 ¦                  ¦######### Кадр страницы EMS ##########¦ 64K¦
 ¦                  ¦######################################¦--- ¦
 ¦          E000H---+--------------------------------------+    ¦
 ¦                  ¦          Периферийная BIOS           ¦    ¦
 ¦                  +--------------------------------------+    ¦
 ¦                  ¦            Видеопамять               ¦    ¦
 ¦   -------A000H---+--------------------------------------+--¬ ¦
 ¦   ¦              ¦-----------¬ -----------¬ -----------¬¦  ¦ ¦
 ¦   ¦              ¦¦::::::::::¦ ¦::::::::::¦ ¦::::::::::¦¦  ¦ ¦
 ¦   ¦              ¦¦::::::::::¦ ¦::::::::::¦ ¦::::::::::¦¦  ¦ ¦
 ¦ Стандартная      ¦¦::::::::::¦ ¦::::::::::¦ ¦::::::::::¦¦640K¦
 ¦ Память           ¦L----------- L----------- L-----------¦  ¦ ¦
 ¦   ¦              ¦        -----------------------¬      ¦  ¦ ¦
 ¦   ¦              ¦        ¦ Таблица отслеживания ¦      ¦  ¦ ¦
 ¦   ¦              ¦        L-----------------------      ¦  ¦ ¦
 ¦   ¦              ¦             Данные программы         ¦  ¦ ¦
 ¦   ¦              +--------------------------------------+  ¦ ¦
 ¦   ¦              ¦             Код программы            ¦  ¦ ¦
 ¦   ¦              +--------------------------------------+  ¦ ¦
 ¦   ¦              ¦                 DOS                  ¦  ¦ ¦
 ¦   L------0000H---L------------------------------------------ ¦
 ¦        -----------¬                                          ¦
 ¦        ¦::::::::::¦                                          ¦
 ¦        ¦:::32 K:::¦  =     Выгружаемый блок данных           ¦
 ¦        ¦::::::::::¦    [Образы экранов, очереди и т.д.]      ¦
 ¦        L-----------                                          ¦
 L---------------------------------------------------------------

 Рисунок 1. Распределение памяти по умолчанию

  Когда все возможные выгружаемые блоки в стандартной памяти заполнены,
самый редко используемый блок выгружается в EMS. Когда EMS исчерпана,
выгружаемые блоки данных создаются на диске в файле с расширением SWP.
  Настройки VMM, принимаемые по умолчанию, можн изменит, используя CLAVM из
командной строки ДОС, из файла конфигурации или из переменной окружения.
Командная строка имеет высший приоритет и перекрывает все прочие методы. У
файла конфигурации второй приоритете, и у переменной окружения - самый
низкий.
  Это важно: НИКОГДА не ставьте пробелов между словом CLAVM и знаком
равенства, поскольку ДОС рассматривает CLAVM= and CLAVM = как две разные
переменные - "CLAVM" и "CLAVM ". Программы на Кларионе распознают только
CLAVM=.

  Настройка из командной строки

  Установки Системы Виртуальной Памяти,сделанные по умолчанию, могут быть
перекрыты из командной строки вводом CLAVM=, за которой идут желаемые
параметры. Параметры должны быть заключены в двойные кавычки (скажем,
CLAVM="EMS-64,.,32,3,4") если используется инициализация командной строки.
НЕЛЬЗЯ использовать SETCOMMAND для установки параметров CLAVM (слишком
много времени уйдет на выполнение SETCOMMAND).

  Настройка из файла конфигурации

  Во время исполнения, программа ищет в текущем каталоге файл, под именем
program.INI (где program - это имя .EXE-файла программы). Скажем, программа
FUCK'EM!.EXE может использовать файл конфигурации под именем FUCK'EM!.INI.
Это обычный текстовый файл, в котором могут содержаться параметры
программы, в том числе и настройки для CLAVM. Каждый параметр программы в
этом файле должен занимать отдельную строку.
  Настройка из переменной окружения
  VMM, также, можно подстроить, установив CLAVM как переменную окружения, с
помощью досовской команды SET. Это может быть сделано в пакетном файле
(типа AUTOEXEC.BAT) или из командной строки ДОС.

Оптимизируем производительность

  На производительность программы влияет как количество добавочной памяти,
так и скорость устройства, используемого для дисковой виртуальной памяти.
Для получения оптимальной производительности может понадобиться подстроить
параметры РАЗМЕР БЛОКА, БЛОКОВ ОДНОВРЕМЕННО и МЕГАБАЙТ.
  Оптимальный РАЗМЕР БЛОКА зависит от программы. Наиболее подходящий РАЗМЕР
блока определяется размером самой большой ОЧЕРЕДИ в программе, размером
наибольшего сохраненного ЭКРАНА и размером графических образов. В общем,
РАЗМЕР БЛОКА не должен превышать максимально выделяемого участка памяти,
выделенного, скажем под сохраненный ЭКРАН или под ОЧЕРЕДЬ, и не стоит его
делать меньше 16K. Для большинства программ, оптимумом является стандартный
размер в 32К.
  Увеличение количества БЛОКОВ ОДНОВРЕМЕННО приводит, с одной стороны к
большему расходу стандартной памяти, а с другой - к меньшей перекачке
данных между стандартной и виртуальной памятью. Если стандартной памяти
достаточно, то можно увеличить этот параметр для повышения
производительности. РАЗМЕР БЛОКА и БЛОКОВ ОДНОВРЕМЕННО тесно связаны между
собой. Уменьшение РАЗМЕРА БЛОКА позволяет хранить в стандартной памяти
больше БЛОКОВ ОДНОВРЕМЕННО.
  VMM создает в стандартной памяти "таблицу отслеживания", которая содержит
указатели на данные, хранящиеся в виртуальной памяти. Для вычисления
размера это таблицы можно использовать формулу:

 РАЗМЕР_ТАБЛИЦЫ = (1024 / (РАЗМЕР_БЛОКА / МЕГАБАЙТ)) * 22

  По умолчанию, VMM создает "таблицу отслеживания" длиной 2816 байт в
стандартной памяти (2816=(1024/(32/4))*22).
 Параметр МЕГАБАЙТ влияет на размер этой "таблицы отслеживания". Чрезмерное
завышение этого параметра приводит к напрасному расходу стандартной памяти
и к увеличению времени доступа к виртуальным данным. Добавочное время,
требуемое для поиска указателя в большей таблице, снижает
производительность.

 Возвращаемые ошибки:

	8 Недостаточно памяти
       68 Ошибка виртуальной памяти

  Если VMM отключен (CLAVM=OFF), то испольуется только стандартная память.
Когда стандартная память исчерпывается, программа вылетает по ошибке
"Недостаточно памяти".
  При исчерпании виртуальной памяти, программа вылетает по "Ошибке
виртуальной памяти", а в информационном окне выводится расширенное описание
ошибки:

  (А.С.П. - Поскольку еще нет локализованной для России версии Клариона, то
расширенные описания ошибок я оставляю в том виде, в котором они могут
появиться, хотя стандартные сообщения об ошибках я, иногда, перевожу.)

  Расширенное описание           Возможная причина
 -------------------------------T-------------------------------¬
 ¦Oversized allocation or memory¦ Слишком мал РАЗМЕР БЛОКА      ¦
 ¦corrupt                       ¦                               ¦
 ¦                              ¦                               ¦
 ¦Попытка выделить памяти боль- ¦                               ¦
 ¦ше, чем есть или память не в  ¦                               ¦
 ¦порядке                       ¦                               ¦
 +------------------------------+-------------------------------+
 ¦ No memory to save VM mapping ¦ Исчерпана стандартная память  ¦
 ¦                              ¦                               ¦
 ¦Не хватает памяти для сохране-¦                               ¦
 ¦ния "таблицы отслеживания"    ¦                               ¦
 +------------------------------+-------------------------------+
 ¦ Attempt to exceed tracking   ¦ Исчерпана виртуальная память  ¦
 ¦ tables                       ¦                               ¦
 ¦                              ¦                               ¦
 ¦Попытка выйти за пределы "таб-¦                               ¦
 ¦лицы отслеживания"            ¦                               ¦
 +------------------------------+-------------------------------+
 ¦ Write failure saving data    ¦ Аппаратная проблема либо с    ¦
 ¦                              ¦ ОЗУ либо с диском             ¦
 ¦Сбой при записи данных        ¦                               ¦
 +------------------------------+-------------------------------+
 ¦ Attempt to exceed tracking   ¦ Слишком мал параметр МЕГАБАЙТ ¦
 ¦ tables, increase Meg         ¦                               ¦
 ¦                              ¦                               ¦
 ¦Попытка выйти за пределы "таб-¦                               ¦
 ¦лицы отслеживания", попробуй  ¦                               ¦
 ¦увеличить параметр МЕГАБАЙТ   ¦                               ¦
 L------------------------------+--------------------------------

Пример:

 Перекрытие настроек VMM из файла конфигурации:

  CLAVM=EMS-64,C:\SWAP,32,3,4 (используем всю EMS кроме 64K, а на диске
выделяем место в подкаталоге C:\SWAP)

  CLAVM=XMS-64,C:\SWAP,32,3,4 (используем всю XMS кроме 64K, а на диске
выделяем место в подкаталоге C:\SWAP)

  CLAVM=NOEMS,C:\SWAP,32,3,4 (забудем про EMS и XMS и все будем сбрасывать
на диск в подкаталог C:\SWAP)

  CLAVM=EMS-64,*,32,3,4 (запрещаем свопинг на диск)

Перекрытие настроек VMM из командной строки:

C> Program.exe CLAVM="EMS-64.*,32.3,4" (из командной строки запрещаем
свопинг на диск)

C> Program.exe CLAVM=OFF (вообще отключаем VMM из командной строки)

Перекрытие настроек VMM из пакетного файла или командной строки ДОС:

C> SET CLAVM=EMS-64,C:\SWAP.32,3,4 (сохраняем стандартные настройки, только
свопинг на диск будет в каталог C:\SWAP)

C> SET CLAVM=XMS-64,C:\SWAP.32.3,4 (сохраняем стандартные настройки, только
свопинг на диск будет в каталог C:\SWAP)

C> SET CLAVM=OFF (запрещаем VMM переменной окружения)

к оглавлению

Знаете ли Вы, что декомпозиция программы - это создание модулей, которые в свою очередь представляют собой небольшие программы, взаимодействующие друг с другом по хорошо определенным и простым правилам.

НОВОСТИ ФОРУМА

Форум Рыцари теории эфира


Рыцари теории эфира
 10.11.2021 - 12:37: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
10.11.2021 - 12:36: СОВЕСТЬ - Conscience -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
10.11.2021 - 12:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от д.м.н. Александра Алексеевича Редько - Карим_Хайдаров.
10.11.2021 - 12:35: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
10.11.2021 - 12:34: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ПРАВОСУДИЯ.НЕТ - Карим_Хайдаров.
10.11.2021 - 12:34: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вадима Глогера, США - Карим_Хайдаров.
10.11.2021 - 09:18: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> Волновая генетика Петра Гаряева, 5G-контроль и управление - Карим_Хайдаров.
10.11.2021 - 09:18: ЭКОЛОГИЯ - Ecology -> ЭКОЛОГИЯ ДЛЯ ВСЕХ - Карим_Хайдаров.
10.11.2021 - 09:16: ЭКОЛОГИЯ - Ecology -> ПРОБЛЕМЫ МЕДИЦИНЫ - Карим_Хайдаров.
10.11.2021 - 09:15: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Екатерины Коваленко - Карим_Хайдаров.
10.11.2021 - 09:13: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вильгельма Варкентина - Карим_Хайдаров.
Bourabai Research - Технологии XXI века Bourabai Research Institution