Subversion Repositories Kolibri OS

Rev

Rev 5984 | Rev 6240 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5984 Rev 6078
Line 127... Line 127...
127
    * если A=1 и в edi (ненулевой) указатель на строку заголовка,
127
    * если A=1 и в edi (ненулевой) указатель на строку заголовка,
128
      то она выводится в заголовке в месте, определяемом скином
128
      то она выводится в заголовке в месте, определяемом скином
129
    * Значение переменной _skinh доступно как результат вызова
129
    * Значение переменной _skinh доступно как результат вызова
130
      подфункции 4 функции 48
130
      подфункции 4 функции 48
Line -... Line 131...
-
 
131
 
-
 
132
---------------------- Константы для регистров: ----------------------
131
 
133
  eax - SF_CREATE_WINDOW (0)
132
======================================================================
134
======================================================================
133
================= Функция 1 - поставить точку в окне. ================
135
================= Функция 1 - поставить точку в окне. ================
134
======================================================================
136
======================================================================
135
Параметры:
137
Параметры:
Line 140... Line 142...
140
    edx = 0x01xxxxxx - инвертировать цвет точки
142
    edx = 0x01xxxxxx - инвертировать цвет точки
141
          (младшие 24 бита игнорируются)
143
          (младшие 24 бита игнорируются)
142
Возвращаемое значение:
144
Возвращаемое значение:
143
  * функция не возвращает значения
145
  * функция не возвращает значения
Line -... Line 146...
-
 
146
 
-
 
147
---------------------- Константы для регистров: ----------------------
144
 
148
  eax - SF_PUT_PIXEL (1)
145
======================================================================
149
======================================================================
146
============== Функция 2 - получить код нажатой клавиши. =============
150
============== Функция 2 - получить код нажатой клавиши. =============
147
======================================================================
151
======================================================================
148
Забирает код нажатой клавиши из буфера.
152
Забирает код нажатой клавиши из буфера.
Line 176... Line 180...
176
  * Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры
180
  * Как следствие, ASCII-коды учитывают текущую раскладку клавиатуры
177
    (rus/en) в отличие от сканкодов.
181
    (rus/en) в отличие от сканкодов.
178
  * Поступает информация только о тех горячих клавишах, которые были
182
  * Поступает информация только о тех горячих клавишах, которые были
179
    определены этим потоком подфункцией 4 функции 66.
183
    определены этим потоком подфункцией 4 функции 66.
Line -... Line 184...
-
 
184
 
-
 
185
---------------------- Константы для регистров: ----------------------
180
 
186
  eax - SF_GET_KEY (2)
181
======================================================================
187
======================================================================
182
================ Функция 3 - получить системное время. ===============
188
================ Функция 3 - получить системное время. ===============
183
======================================================================
189
======================================================================
184
Параметры:
190
Параметры:
Line 191... Line 197...
191
  * Смотри также подфункцию 9 функции 26 - получение времени
197
  * Смотри также подфункцию 9 функции 26 - получение времени
192
    с момента запуска системы; она во многих случаях удобнее,
198
    с момента запуска системы; она во многих случаях удобнее,
193
    поскольку возвращает просто DWORD-значение счетчика времени.
199
    поскольку возвращает просто DWORD-значение счетчика времени.
194
  * Системное время можно установить функцией 22.
200
  * Системное время можно установить функцией 22.
Line -... Line 201...
-
 
201
 
-
 
202
---------------------- Константы для регистров: ----------------------
195
 
203
  eax - SF_GET_SYS_TIME (3)
196
======================================================================
204
======================================================================
197
================ Функция 4 - нарисовать строку текста. ===============
205
================ Функция 4 - нарисовать строку текста. ===============
198
======================================================================
206
======================================================================
199
Параметры:
207
Параметры:
Line 227... Line 235...
227
  * Структура буфера:
235
  * Структура буфера:
228
Xsize       dd
236
Xsize       dd
229
Ysize       dd
237
Ysize       dd
230
picture     rb  Xsize*Ysize*4  ; 32 бита
238
picture     rb  Xsize*Ysize*4  ; 32 бита
Line -... Line 239...
-
 
239
 
-
 
240
---------------------- Константы для регистров: ----------------------
231
 
241
  eax - SF_DRAW_TEXT (4)
232
======================================================================
242
======================================================================
233
========================= Функция 5 - пауза. =========================
243
========================= Функция 5 - пауза. =========================
234
======================================================================
244
======================================================================
235
Задерживает выполнение программы на заданное время.
245
Задерживает выполнение программы на заданное время.
Line 243... Line 253...
243
    вообще не производит никаких действий. Если действительно
253
    вообще не производит никаких действий. Если действительно
244
    требуется передать управление следующему процессу
254
    требуется передать управление следующему процессу
245
    (закончить текущий квант времени), используйте подфункцию 1
255
    (закончить текущий квант времени), используйте подфункцию 1
246
    функции 68.
256
    функции 68.
Line -... Line 257...
-
 
257
 
-
 
258
---------------------- Константы для регистров: ----------------------
247
 
259
  eax - SF_SLEEP (5)
248
======================================================================
260
======================================================================
249
=============== Функция 7 - вывести изображение в окно. ==============
261
=============== Функция 7 - вывести изображение в окно. ==============
250
======================================================================
262
======================================================================
251
Параметры:
263
Параметры:
Line 258... Line 270...
258
Замечания:
270
Замечания:
259
  * Координаты изображения - это координаты верхнего левого угла
271
  * Координаты изображения - это координаты верхнего левого угла
260
    изображения относительно окна.
272
    изображения относительно окна.
261
  * Размер изображения в байтах есть 3*xsize*ysize.
273
  * Размер изображения в байтах есть 3*xsize*ysize.
Line -... Line 274...
-
 
274
 
-
 
275
---------------------- Константы для регистров: ----------------------
262
 
276
  eax - SF_PUT_IMAGE (7)
263
======================================================================
277
======================================================================
264
=============== Функция 8 - определить/удалить кнопку. ===============
278
=============== Функция 8 - определить/удалить кнопку. ===============
265
======================================================================
279
======================================================================
266
Параметры для определения кнопки:
280
Параметры для определения кнопки:
Line 291... Line 305...
291
    нажатие самостоятельно, не обращаясь к приложению.
305
    нажатие самостоятельно, не обращаясь к приложению.
292
    В остальном это обычная кнопка.
306
    В остальном это обычная кнопка.
293
  * Общее количество кнопок для всех приложений ограничено
307
  * Общее количество кнопок для всех приложений ограничено
294
    числом 4095.
308
    числом 4095.
Line -... Line 309...
-
 
309
 
-
 
310
---------------------- Константы для регистров: ----------------------
295
 
311
  eax - SF_DEFINE_BUTTON (8)
296
======================================================================
312
======================================================================
297
============= Функция 9 - информация о потоке выполнения. ============
313
============= Функция 9 - информация о потоке выполнения. ============
298
======================================================================
314
======================================================================
299
Параметры:
315
Параметры:
Line 391... Line 407...
391
  * В данный момент используется только часть буфера размером
407
  * В данный момент используется только часть буфера размером
392
    76 = 0x4C байта. Тем не менее рекомендуется использовать буфер
408
    76 = 0x4C байта. Тем не менее рекомендуется использовать буфер
393
    размером 1 Кб для будущей совместимости, в будущем могут быть
409
    размером 1 Кб для будущей совместимости, в будущем могут быть
394
    добавлены некоторые поля.
410
    добавлены некоторые поля.
Line -... Line 411...
-
 
411
 
-
 
412
---------------------- Константы для регистров: ----------------------
395
 
413
  eax - SF_THREAD_INFO (9)
396
======================================================================
414
======================================================================
397
==================== Функция 10 - ожидать события. ===================
415
==================== Функция 10 - ожидать события. ===================
398
======================================================================
416
======================================================================
399
Если очередь сообщений пуста, то ждет появления сообщения в очереди.
417
Если очередь сообщений пуста, то ждет появления сообщения в очереди.
Line 410... Line 428...
410
    перерисовки, нажатия на клавиши и на кнопки.
428
    перерисовки, нажатия на клавиши и на кнопки.
411
  * Для проверки, есть ли сообщение в очереди, используйте функцию 11.
429
  * Для проверки, есть ли сообщение в очереди, используйте функцию 11.
412
    Чтобы ждать не более определенного времени, используйте
430
    Чтобы ждать не более определенного времени, используйте
413
    функцию 23.
431
    функцию 23.
Line -... Line 432...
-
 
432
 
-
 
433
---------------------- Константы для регистров: ----------------------
414
 
434
  eax - SF_WAIT_EVENT (10)
415
======================================================================
435
======================================================================
416
======= Функция 11 - проверить, есть ли событие, без ожидания. =======
436
======= Функция 11 - проверить, есть ли событие, без ожидания. =======
417
======================================================================
437
======================================================================
418
Если в очереди сообщений есть какое-то событие, то считывает и
438
Если в очереди сообщений есть какое-то событие, то считывает и
Line 428... Line 448...
428
    перерисовки, нажатия на клавиши и на кнопки.
448
    перерисовки, нажатия на клавиши и на кнопки.
429
  * Для ожидания появления события в очереди, используйте функцию 10.
449
  * Для ожидания появления события в очереди, используйте функцию 10.
430
    Чтобы ждать не более определенного времени, используйте
450
    Чтобы ждать не более определенного времени, используйте
431
    функцию 23.
451
    функцию 23.
Line -... Line 452...
-
 
452
 
-
 
453
---------------------- Константы для регистров: ----------------------
432
 
454
  eax - SF_CHECK_EVENT (11)
433
======================================================================
455
======================================================================
434
=========== Функция 12 - начать/закончить перерисовку окна. ==========
456
=========== Функция 12 - начать/закончить перерисовку окна. ==========
Line 435... Line 457...
435
======================================================================
457
======================================================================
Line 449... Line 471...
449
  * функция не возвращает значения
471
  * функция не возвращает значения
450
Замечания:
472
Замечания:
451
  * Функция начала перерисовки удаляет все определённые
473
  * Функция начала перерисовки удаляет все определённые
452
    функцией 8 кнопки, их следует определить повторно.
474
    функцией 8 кнопки, их следует определить повторно.
Line -... Line 475...
-
 
475
 
-
 
476
---------------------- Константы для регистров: ----------------------
-
 
477
  eax - SF_REDRAW (12)
453
 
478
  ebx - SSF_BEGIN_DRAW (1), SSF_END_DRAW (2)
454
======================================================================
479
======================================================================
455
============ Функция 13 - нарисовать прямоугольник в окне. ===========
480
============ Функция 13 - нарисовать прямоугольник в окне. ===========
456
======================================================================
481
======================================================================
457
Параметры:
482
Параметры:
Line 463... Line 488...
463
  * функция не возвращает значения
488
  * функция не возвращает значения
464
Замечания:
489
Замечания:
465
  * Под координатами понимаются координаты левого верхнего угла
490
  * Под координатами понимаются координаты левого верхнего угла
466
    прямоугольника относительно окна.
491
    прямоугольника относительно окна.
Line -... Line 492...
-
 
492
 
-
 
493
---------------------- Константы для регистров: ----------------------
467
 
494
  eax - SF_DRAW_RECT (13)
468
======================================================================
495
======================================================================
469
================ Функция 14 - получить размеры экрана. ===============
496
================ Функция 14 - получить размеры экрана. ===============
470
======================================================================
497
======================================================================
471
Параметры:
498
Параметры:
Line 478... Line 505...
478
            размер по вертикали - 1
505
            размер по вертикали - 1
479
Замечания:
506
Замечания:
480
  * Смотри также подфункцию 5 функции 48 - получить размеры рабочей
507
  * Смотри также подфункцию 5 функции 48 - получить размеры рабочей
481
    области экрана.
508
    области экрана.
Line -... Line 509...
-
 
509
 
-
 
510
---------------------- Константы для регистров: ----------------------
482
 
511
  eax - SF_GET_SCREEN_SIZE (14)
483
======================================================================
512
======================================================================
484
= Функция 15, подфункция 1 - установить размер фонового изображения. =
513
= Функция 15, подфункция 1 - установить размер фонового изображения. =
485
======================================================================
514
======================================================================
486
Параметры:
515
Параметры:
Line 495... Line 524...
495
  * Для обновления экрана (после завершения серии команд, работающих с
524
  * Для обновления экрана (после завершения серии команд, работающих с
496
    фоном) вызывайте подфункцию 3 перерисовки фона.
525
    фоном) вызывайте подфункцию 3 перерисовки фона.
497
  * Есть парная функция получения размеров фонового изображения -
526
  * Есть парная функция получения размеров фонового изображения -
498
    подфункция 1 функции 39.
527
    подфункция 1 функции 39.
Line -... Line 528...
-
 
528
 
-
 
529
---------------------- Константы для регистров: ----------------------
-
 
530
  eax - SF_BACKGROUND_SET (15)
499
 
531
  ebx - SSF_SIZE_BG (1)
500
======================================================================
532
======================================================================
501
= Функция 15, подфункция 2 - поставить точку на фоновом изображении. =
533
= Функция 15, подфункция 2 - поставить точку на фоновом изображении. =
502
======================================================================
534
======================================================================
503
Параметры:
535
Параметры:
Line 515... Line 547...
515
  * Для обновления экрана (после завершения серии команд, работающих с
547
  * Для обновления экрана (после завершения серии команд, работающих с
516
    фоном) вызывайте подфункцию 3 перерисовки фона.
548
    фоном) вызывайте подфункцию 3 перерисовки фона.
517
  * Есть парная функция получения точки с фонового изображения -
549
  * Есть парная функция получения точки с фонового изображения -
518
    подфункция 2 функции 39.
550
    подфункция 2 функции 39.
Line -... Line 551...
-
 
551
 
-
 
552
---------------------- Константы для регистров: ----------------------
-
 
553
  eax - SF_BACKGROUND_SET (15)
519
 
554
  ebx - SSF_PIXEL_BG (2)
520
======================================================================
555
======================================================================
521
============ Функция 15, подфункция 3 - перерисовать фон. ============
556
============ Функция 15, подфункция 3 - перерисовать фон. ============
522
======================================================================
557
======================================================================
523
Параметры:
558
Параметры:
524
  * eax = 15 - номер функции
559
  * eax = 15 - номер функции
525
  * ebx = 3 - номер подфункции
560
  * ebx = 3 - номер подфункции
526
Возвращаемое значение:
561
Возвращаемое значение:
Line -... Line 562...
-
 
562
  * функция не возвращает значения
-
 
563
 
-
 
564
---------------------- Константы для регистров: ----------------------
527
  * функция не возвращает значения
565
  eax - SF_BACKGROUND_SET (15)
528
 
566
  ebx - SSF_REDRAW_BG (3)
529
======================================================================
567
======================================================================
530
===== Функция 15, подфункция 4 - установить режим отрисовки фона. ====
568
===== Функция 15, подфункция 4 - установить режим отрисовки фона. ====
531
======================================================================
569
======================================================================
Line 541... Line 579...
541
  * Для обновления экрана (после завершения серии команд, работающих с
579
  * Для обновления экрана (после завершения серии команд, работающих с
542
    фоном) вызывайте подфункцию 3 перерисовки фона.
580
    фоном) вызывайте подфункцию 3 перерисовки фона.
543
  * Есть парная команда получения режима отрисовки фона -
581
  * Есть парная команда получения режима отрисовки фона -
544
    подфункция 4 функции 39.
582
    подфункция 4 функции 39.
Line -... Line 583...
-
 
583
 
-
 
584
---------------------- Константы для регистров: ----------------------
-
 
585
  eax - SF_BACKGROUND_SET (15)
545
 
586
  ebx - SSF_MODE_BG (4)
546
======================================================================
587
======================================================================
547
===== Функция 15, подфункция 5 - поместить блок пикселей на фон. =====
588
===== Функция 15, подфункция 5 - поместить блок пикселей на фон. =====
548
======================================================================
589
======================================================================
549
Параметры:
590
Параметры:
Line 561... Line 602...
561
    слева направо, сверху вниз.
602
    слева направо, сверху вниз.
562
  * Смещение пикселя с координатами (x,y) есть (x+y*xsize)*3.
603
  * Смещение пикселя с координатами (x,y) есть (x+y*xsize)*3.
563
  * Для обновления экрана (после завершения серии команд, работающих с
604
  * Для обновления экрана (после завершения серии команд, работающих с
564
    фоном) вызывайте подфункцию 3 перерисовки фона.
605
    фоном) вызывайте подфункцию 3 перерисовки фона.
Line -... Line 606...
-
 
606
 
-
 
607
---------------------- Константы для регистров: ----------------------
-
 
608
  eax - SF_BACKGROUND_SET (15)
565
 
609
  ebx - SSF_IMAGE_BG (5)
566
======================================================================
610
======================================================================
567
====================== Функция 15, подфункция 6 ======================
611
====================== Функция 15, подфункция 6 ======================
568
==== Спроецировать данные фона на адресное пространство процесса. ====
612
==== Спроецировать данные фона на адресное пространство процесса. ====
569
======================================================================
613
======================================================================
Line 578... Line 622...
578
    блокируется на время работы с спроецированными данными.
622
    блокируется на время работы с спроецированными данными.
579
  * Цвет каждого пикселя хранится как 3-байтовая величина BBGGRR.
623
  * Цвет каждого пикселя хранится как 3-байтовая величина BBGGRR.
580
  * Пиксели фонового изображения записываются последовательно
624
  * Пиксели фонового изображения записываются последовательно
581
    слева направо, сверху вниз.
625
    слева направо, сверху вниз.
Line -... Line 626...
-
 
626
 
-
 
627
---------------------- Константы для регистров: ----------------------
-
 
628
  eax - SF_BACKGROUND_SET (15)
582
 
629
  ebx - SSF_MAP_BG (6)
583
======================================================================
630
======================================================================
584
====================== Функция 15, подфункция 7 ======================
631
====================== Функция 15, подфункция 7 ======================
585
=== Закрыть проекцию данных фона на адресное пространство процесса. ==
632
=== Закрыть проекцию данных фона на адресное пространство процесса. ==
586
======================================================================
633
======================================================================
Line 589... Line 636...
589
  * ebx = 7 - номер подфункции
636
  * ebx = 7 - номер подфункции
590
  * ecx = указатель на данные фона
637
  * ecx = указатель на данные фона
591
Возвращаемое значение:
638
Возвращаемое значение:
592
  * eax = 1 при успехе, 0 при ошибке
639
  * eax = 1 при успехе, 0 при ошибке
Line -... Line 640...
-
 
640
 
-
 
641
---------------------- Константы для регистров: ----------------------
-
 
642
  eax - SF_BACKGROUND_SET (15)
593
 
643
  ebx - SSF_UNMAP_BG (7)
594
======================================================================
644
======================================================================
595
====================== Функция 15, подфункция 8 ======================
645
====================== Функция 15, подфункция 8 ======================
596
=========== Получить координаты последней отрисовки фона. ============
646
=========== Получить координаты последней отрисовки фона. ============
597
======================================================================
647
======================================================================
Line 606... Line 656...
606
    (right,bottom) - координаты правого нижнего.
656
    (right,bottom) - координаты правого нижнего.
607
  * Для получения более достоверных сведений, необходимо вызвать
657
  * Для получения более достоверных сведений, необходимо вызвать
608
    функцию сразу после получения события:
658
    функцию сразу после получения события:
609
             5 = завершилась перерисовка фона рабочего стола
659
             5 = завершилась перерисовка фона рабочего стола
Line -... Line 660...
-
 
660
 
-
 
661
---------------------- Константы для регистров: ----------------------
-
 
662
  eax - SF_BACKGROUND_SET (15)
610
 
663
  ebx - SSF_LAST_DRAW (8)
611
======================================================================
664
======================================================================
612
====================== Функция 15, подфункция 9 ======================
665
====================== Функция 15, подфункция 9 ======================
613
=============== Перерисовать прямоугольную часть фона. ===============
666
=============== Перерисовать прямоугольную часть фона. ===============
614
======================================================================
667
======================================================================
Line 622... Line 675...
622
Замечания:
675
Замечания:
623
  * (left,top) - координаты левого верхнего угла,
676
  * (left,top) - координаты левого верхнего угла,
624
    (right,bottom) - координаты правого нижнего.
677
    (right,bottom) - координаты правого нижнего.
625
  * Если параметры установлены некорректно - фон не перерисовывается.
678
  * Если параметры установлены некорректно - фон не перерисовывается.
Line -... Line 679...
-
 
679
 
-
 
680
---------------------- Константы для регистров: ----------------------
-
 
681
  eax - SF_BACKGROUND_SET (15)
626
 
682
  ebx - SSF_REDRAW_RECT (9)
627
======================================================================
683
======================================================================
628
============= Функция 16 - сохранить рамдиск на дискету. =============
684
============= Функция 16 - сохранить рамдиск на дискету. =============
629
======================================================================
685
======================================================================
630
Параметры:
686
Параметры:
631
  * eax = 16 - номер функции
687
  * eax = 16 - номер функции
632
  * ebx = 1 или ebx = 2 - на какую дискету сохранять
688
  * ebx = 1 или ebx = 2 - на какую дискету сохранять
633
Возвращаемое значение:
689
Возвращаемое значение:
634
  * eax = 0 - успешно
690
  * eax = 0 - успешно
Line -... Line 691...
-
 
691
  * eax = 1 - ошибка
-
 
692
 
635
  * eax = 1 - ошибка
693
---------------------- Константы для регистров: ----------------------
636
 
694
  eax - SF_RD_TO_FLOPPY (16)
637
======================================================================
695
======================================================================
638
============== Функция 17 - получить код нажатой кнопки. =============
696
============== Функция 17 - получить код нажатой кнопки. =============
639
======================================================================
697
======================================================================
Line 656... Line 714...
656
    возвращается ответ "буфер пуст".
714
    возвращается ответ "буфер пуст".
657
  * Возвращаемое значение al соответствует состоянию кнопок мыши
715
  * Возвращаемое значение al соответствует состоянию кнопок мыши
658
    в формате подфункции 2 функции 37 в момент начала нажатия
716
    в формате подфункции 2 функции 37 в момент начала нажатия
659
    на кнопку, за исключением младшего бита (соответствующего левой
717
    на кнопку, за исключением младшего бита (соответствующего левой
660
    кнопке мыши), который сбрасывается.
718
    кнопке мыши), который сбрасывается.
-
 
719
 
-
 
720
---------------------- Константы для регистров: ----------------------
-
 
721
  eax - SF_GET_BUTTON (17)
661
======================================================================
722
======================================================================
662
= Функция 18, подфункция 1 - сделать самым нижним окно потока. =======
723
= Функция 18, подфункция 1 - сделать самым нижним окно потока. =======
663
======================================================================
724
======================================================================
664
Параметры:
725
Параметры:
665
  * eax = 18 - номер функции
726
  * eax = 18 - номер функции
666
  * ebx = 1 - номер подфункции
727
  * ebx = 1 - номер подфункции
667
  * ecx = номер слота потока
728
  * ecx = номер слота потока
668
Возвращаемое значение:
729
Возвращаемое значение:
669
  * функция не возвращает значения
730
  * функция не возвращает значения
Line -... Line 731...
-
 
731
 
-
 
732
---------------------- Константы для регистров: ----------------------
-
 
733
  eax - SF_SYSTEM (18)
670
 
734
  ebx - SSF_UNFOCUS_WINDOW (1)
671
======================================================================
735
======================================================================
672
==== Функция 18, подфункция 2 - завершить процесс/поток по слоту. ====
736
==== Функция 18, подфункция 2 - завершить процесс/поток по слоту. ====
673
======================================================================
737
======================================================================
674
Параметры:
738
Параметры:
Line 681... Line 745...
681
  * Нельзя завершить поток операционной системы OS/IDLE (номер слота
745
  * Нельзя завершить поток операционной системы OS/IDLE (номер слота
682
    1), можно завершить любой обычный поток/процесс.
746
    1), можно завершить любой обычный поток/процесс.
683
  * Смотри также подфункцию 18 - завершение
747
  * Смотри также подфункцию 18 - завершение
684
    процесса/потока с заданным идентификатором.
748
    процесса/потока с заданным идентификатором.
Line -... Line 749...
-
 
749
 
-
 
750
---------------------- Константы для регистров: ----------------------
-
 
751
  eax - SF_SYSTEM (18)
685
 
752
  ebx - SSF_TERMINATE_THREAD (2)
686
======================================================================
753
======================================================================
687
= Функция 18, подфункция 3 - сделать активным окно заданного потока. =
754
= Функция 18, подфункция 3 - сделать активным окно заданного потока. =
688
======================================================================
755
======================================================================
689
Параметры:
756
Параметры:
Line 695... Line 762...
695
Замечания:
762
Замечания:
696
  * При указании корректного, но несуществующего слота активизируется
763
  * При указании корректного, но несуществующего слота активизируется
697
    какое-то окно.
764
    какое-то окно.
698
  * Узнать, какое окно является активным, можно вызовом подфункции 7.
765
  * Узнать, какое окно является активным, можно вызовом подфункции 7.
Line -... Line 766...
-
 
766
 
-
 
767
---------------------- Константы для регистров: ----------------------
-
 
768
  eax - SF_SYSTEM (18)
699
 
769
  ebx - SSF_FOCUS_WINDOW (3)
700
======================================================================
770
======================================================================
701
 Функция 18, подфункция 4 - получить счётчик пустых тактов в секунду.
771
 Функция 18, подфункция 4 - получить счётчик пустых тактов в секунду.
702
======================================================================
772
======================================================================
703
Под пустыми тактами понимается время, в которое процессор простаивает
773
Под пустыми тактами понимается время, в которое процессор простаивает
Line 707... Line 777...
707
  * eax = 18 - номер функции
777
  * eax = 18 - номер функции
708
  * ebx = 4 - номер подфункции
778
  * ebx = 4 - номер подфункции
709
Возвращаемое значение:
779
Возвращаемое значение:
710
  * eax = значение счётчика пустых тактов в секунду
780
  * eax = значение счётчика пустых тактов в секунду
Line -... Line 781...
-
 
781
 
-
 
782
---------------------- Константы для регистров: ----------------------
-
 
783
  eax - SF_SYSTEM (18)
711
 
784
  ebx - SSF_GET_IDLE_COUNT (4)
712
======================================================================
785
======================================================================
713
======== Функция 18, подфункция 5 - получить тактовую частоту. =======
786
======== Функция 18, подфункция 5 - получить тактовую частоту. =======
714
======================================================================
787
======================================================================
715
Параметры:
788
Параметры:
716
  * eax = 18 - номер функции
789
  * eax = 18 - номер функции
717
  * ebx = 5 - номер подфункции
790
  * ebx = 5 - номер подфункции
718
Возвращаемое значение:
791
Возвращаемое значение:
Line -... Line 792...
-
 
792
  * eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
-
 
793
 
-
 
794
---------------------- Константы для регистров: ----------------------
719
  * eax = тактовая частота (по модулю 2^32 тактов = 4ГГц)
795
  eax - SF_SYSTEM (18)
720
 
796
  ebx - SSF_GET_CPU_REQUENCY (5)
721
======================================================================
797
======================================================================
722
 Функция 18, подфункция 6 - сохранить рамдиск в файл на жёстком диске.
798
 Функция 18, подфункция 6 - сохранить рамдиск в файл на жёстком диске.
723
======================================================================
799
======================================================================
Line 731... Line 807...
731
  * иначе eax = код ошибки файловой системы
807
  * иначе eax = код ошибки файловой системы
732
Замечания:
808
Замечания:
733
  * Все папки в указанном пути должны существовать, иначе вернётся
809
  * Все папки в указанном пути должны существовать, иначе вернётся
734
    значение 5, "файл не найден".
810
    значение 5, "файл не найден".
Line -... Line 811...
-
 
811
 
-
 
812
---------------------- Константы для регистров: ----------------------
-
 
813
  eax - SF_SYSTEM (18)
735
 
814
  ebx - SSF_RD_TO_HDD (6)
736
======================================================================
815
======================================================================
737
====== Функция 18, подфункция 7 - получить номер активного окна. =====
816
====== Функция 18, подфункция 7 - получить номер активного окна. =====
738
======================================================================
817
======================================================================
739
Параметры:
818
Параметры:
Line 745... Line 824...
745
Замечания:
824
Замечания:
746
  * Активное окно находится вверху оконного стэка и получает
825
  * Активное окно находится вверху оконного стэка и получает
747
    сообщения обо всём вводе с клавиатуры.
826
    сообщения обо всём вводе с клавиатуры.
748
  * Сделать окно активным можно вызовом подфункции 3.
827
  * Сделать окно активным можно вызовом подфункции 3.
Line -... Line 828...
-
 
828
 
-
 
829
---------------------- Константы для регистров: ----------------------
-
 
830
  eax - SF_SYSTEM (18)
749
 
831
  ebx - SSF_GET_ACTIVE_WINDOW (7)
750
======================================================================
832
======================================================================
751
==== Функция 18, подфункция 8 - отключить/разрешить звук спикера. ====
833
==== Функция 18, подфункция 8 - отключить/разрешить звук спикера. ====
752
======================================================================
834
======================================================================
753
При отключённом звуке вызовы подфункции 55 функции 55 игнорируются.
835
При отключённом звуке вызовы подфункции 55 функции 55 игнорируются.
Line 768... Line 850...
768
  * ebx = 8 - номер подфункции
850
  * ebx = 8 - номер подфункции
769
  * ecx = 2 - номер подподфункции
851
  * ecx = 2 - номер подподфункции
770
Возвращаемое значение:
852
Возвращаемое значение:
771
  * функция не возвращает значения
853
  * функция не возвращает значения
Line -... Line 854...
-
 
854
 
-
 
855
---------------------- Константы для регистров: ----------------------
-
 
856
  eax - SF_SYSTEM (18)
-
 
857
  ebx - SSF_SPEAKER (8)
772
 
858
  ecx - SSSF_GET_STATE (1), SSSF_TOGGLE (2)
773
======================================================================
859
======================================================================
774
= Функция 18, подфункция 9 - завершение работы системы с параметром. =
860
= Функция 18, подфункция 9 - завершение работы системы с параметром. =
775
======================================================================
861
======================================================================
776
Параметры:
862
Параметры:
Line 785... Line 871...
785
  * при правильном вызове всегда возвращается признак успеха eax=0
871
  * при правильном вызове всегда возвращается признак успеха eax=0
786
Замечания:
872
Замечания:
787
  * Не следует полагаться на возвращаемое значение при неверном
873
  * Не следует полагаться на возвращаемое значение при неверном
788
    вызове, оно может измениться в последующих версиях ядра.
874
    вызове, оно может измениться в последующих версиях ядра.
Line -... Line 875...
-
 
875
 
-
 
876
---------------------- Константы для регистров: ----------------------
-
 
877
  eax - SF_SYSTEM (18)
789
 
878
  ebx - SSF_SHUTDOWN (9)
790
======================================================================
879
======================================================================
791
========= Функция 18, подфункция 10 - свернуть активное окно. ========
880
========= Функция 18, подфункция 10 - свернуть активное окно. ========
792
======================================================================
881
======================================================================
793
Сворачивает активное окно.
882
Сворачивает активное окно.
Line 805... Line 894...
805
    сворачивание окна осуществляется системой при нажатии на кнопку
894
    сворачивание окна осуществляется системой при нажатии на кнопку
806
    минимизации (которая для окон со скином определяется автоматически
895
    минимизации (которая для окон со скином определяется автоматически
807
    функцией 0, для окон без скина её можно определить функцией 8),
896
    функцией 0, для окон без скина её можно определить функцией 8),
808
    восстановление - приложением @taskbar.
897
    восстановление - приложением @taskbar.
Line -... Line 898...
-
 
898
 
-
 
899
---------------------- Константы для регистров: ----------------------
-
 
900
  eax - SF_SYSTEM (18)
809
 
901
  ebx - SSF_MINIMIZE_WINDOW (10)
810
======================================================================
902
======================================================================
811
====================== Функция 18, подфункция 11 =====================
903
====================== Функция 18, подфункция 11 =====================
812
============= Получить информацию о дисковой подсистеме. =============
904
============= Получить информацию о дисковой подсистеме. =============
813
======================================================================
905
======================================================================
Line 872... Line 964...
872
 
964
 
873
Замечания:
965
Замечания:
874
  * Таблица может быть использована для получения информации
966
  * Таблица может быть использована для получения информации
Line -... Line 967...
-
 
967
    об имеющихся устройствах.
-
 
968
 
-
 
969
---------------------- Константы для регистров: ----------------------
875
    об имеющихся устройствах.
970
  eax - SF_SYSTEM (18)
876
 
971
  ebx - SSF_INFO_DISC_SYS (11)
877
======================================================================
972
======================================================================
878
========== Функция 18, подфункция 13 - получить версию ядра. =========
973
========== Функция 18, подфункция 13 - получить версию ядра. =========
879
======================================================================
974
======================================================================
Line 891... Line 986...
891
Для ядра Kolibri 0.7.7.0+:
986
Для ядра Kolibri 0.7.7.0+:
892
db 0,7,7,0
987
db 0,7,7,0
893
db 0
988
db 0
894
dd 1675
989
dd 1675
Line -... Line 990...
-
 
990
 
-
 
991
---------------------- Константы для регистров: ----------------------
-
 
992
  eax - SF_SYSTEM (18)
895
 
993
  ebx - SSF_KERNEL_VERSION (13)
896
======================================================================
994
======================================================================
897
====================== Функция 18, подфункция 14 =====================
995
====================== Функция 18, подфункция 14 =====================
898
======= Ожидать начала обратного хода луча развёртки монитора. =======
996
======= Ожидать начала обратного хода луча развёртки монитора. =======
899
======================================================================
997
======================================================================
Line 905... Line 1003...
905
Замечания:
1003
Замечания:
906
  * Функция предназначена исключительно для активных
1004
  * Функция предназначена исключительно для активных
907
    высокопроизводительных графических приложений; используется для
1005
    высокопроизводительных графических приложений; используется для
908
    плавного вывода графики.
1006
    плавного вывода графики.
Line -... Line 1007...
-
 
1007
 
-
 
1008
---------------------- Константы для регистров: ----------------------
-
 
1009
  eax - SF_SYSTEM (18)
909
 
1010
  ebx - SSF_WAIT_RETRACE (14)
910
======================================================================
1011
======================================================================
911
== Функция 18, подфункция 15 - поместить курсор мыши в центр экрана. =
1012
== Функция 18, подфункция 15 - поместить курсор мыши в центр экрана. =
912
======================================================================
1013
======================================================================
913
Параметры:
1014
Параметры:
914
  * eax = 18 - номер функции
1015
  * eax = 18 - номер функции
915
  * ebx = 15 - номер подфункции
1016
  * ebx = 15 - номер подфункции
916
Возвращаемое значение:
1017
Возвращаемое значение:
Line -... Line 1018...
-
 
1018
  * eax = 0 как признак успеха
-
 
1019
 
-
 
1020
---------------------- Константы для регистров: ----------------------
917
  * eax = 0 как признак успеха
1021
  eax - SF_SYSTEM (18)
918
 
1022
  ebx - SSF_CURSOR_CENTER (15)
919
======================================================================
1023
======================================================================
920
====================== Функция 18, подфункция 16 =====================
1024
====================== Функция 18, подфункция 16 =====================
921
============ Получить размер свободной оперативной памяти. ===========
1025
============ Получить размер свободной оперативной памяти. ===========
922
======================================================================
1026
======================================================================
923
Параметры:
1027
Параметры:
924
  * eax = 18 - номер функции
1028
  * eax = 18 - номер функции
925
  * ebx = 16 - номер подфункции
1029
  * ebx = 16 - номер подфункции
Line -... Line 1030...
-
 
1030
Возвращаемое значение:
-
 
1031
  * eax = размер свободной памяти в килобайтах
-
 
1032
 
926
Возвращаемое значение:
1033
---------------------- Константы для регистров: ----------------------
927
  * eax = размер свободной памяти в килобайтах
1034
  eax - SF_SYSTEM (18)
928
 
1035
  ebx - SSF_GET_FREE_RAM (16)
929
======================================================================
1036
======================================================================
930
====================== Функция 18, подфункция 17 =====================
1037
====================== Функция 18, подфункция 17 =====================
931
============ Получить размер имеющейся оперативной памяти. ===========
1038
============ Получить размер имеющейся оперативной памяти. ===========
932
======================================================================
1039
======================================================================
933
Параметры:
1040
Параметры:
934
  * eax = 18 - номер функции
1041
  * eax = 18 - номер функции
Line -... Line 1042...
-
 
1042
  * ebx = 17 - номер подфункции
-
 
1043
Возвращаемое значение:
-
 
1044
  * eax = общий размер имеющейся памяти в килобайтах
935
  * ebx = 17 - номер подфункции
1045
 
936
Возвращаемое значение:
1046
---------------------- Константы для регистров: ----------------------
937
  * eax = общий размер имеющейся памяти в килобайтах
1047
  eax - SF_SYSTEM (18)
938
 
1048
  ebx - SSF_GET_TOTAL_RAM (17)
939
======================================================================
1049
======================================================================
Line 951... Line 1061...
951
  * Нельзя завершить поток операционной системы OS/IDLE (номер слота
1061
  * Нельзя завершить поток операционной системы OS/IDLE (номер слота
952
    1), можно завершить любой обычный поток/процесс.
1062
    1), можно завершить любой обычный поток/процесс.
953
  * Смотри также подфункцию 2 - завершение
1063
  * Смотри также подфункцию 2 - завершение
954
    процесса/потока по заданному слоту.
1064
    процесса/потока по заданному слоту.
Line -... Line 1065...
-
 
1065
 
-
 
1066
---------------------- Константы для регистров: ----------------------
-
 
1067
  eax - SF_SYSTEM (18)
955
 
1068
  ebx - SSF_TERMINATE_THREAD_ID (18)
956
======================================================================
1069
======================================================================
957
=== Функция 18, подфункция 19 - получить/установить настройки мыши. ==
1070
=== Функция 18, подфункция 19 - получить/установить настройки мыши. ==
Line 958... Line 1071...
958
======================================================================
1071
======================================================================
Line 1034... Line 1147...
1034
Возвращаемое значение:
1147
Возвращаемое значение:
1035
  * функция не возвращает значения
1148
  * функция не возвращает значения
Line 1036... Line 1149...
1036
 
1149
 
Line -... Line 1150...
-
 
1150
Замечание: настройки мыши можно регулировать в приложении mouse_cfg.
-
 
1151
 
-
 
1152
---------------------- Константы для регистров: ----------------------
-
 
1153
  eax - SF_SYSTEM (18)
-
 
1154
  ebx - SSF_MOUSE_SETTINGS (19)
-
 
1155
  ecx - SSSF_GET_SPEED (0), SSSF_SET_SPEED (1), SSSF_GET_SPEEDUP (2),
1037
Замечание: настройки мыши можно регулировать в приложении mouse_cfg.
1156
    SSSF_SET_SPEEDUP (3), SSSF_SET_POS (4), SSSF_SET_BUTTON (5),
1038
 
1157
    SSSF_GET_DOUBLE_CLICK_DELAY (6), SSSF_SET_DOUBLE_CLICK_DELAY (7)
1039
======================================================================
1158
======================================================================
1040
====================== Функция 18, подфункция 20 =====================
1159
====================== Функция 18, подфункция 20 =====================
1041
============= Получить информацию об оперативной памяти. =============
1160
============= Получить информацию об оперативной памяти. =============
Line 1059... Line 1178...
1059
    * +28: dword: размер наибольшего свободного блока в куче ядра
1178
    * +28: dword: размер наибольшего свободного блока в куче ядра
1060
                 (зарезервировано)
1179
                 (зарезервировано)
1061
    * +32: dword: размер наибольшего выделенного блока в куче ядра
1180
    * +32: dword: размер наибольшего выделенного блока в куче ядра
1062
                 (зарезервировано)
1181
                 (зарезервировано)
Line -... Line 1182...
-
 
1182
 
-
 
1183
---------------------- Константы для регистров: ----------------------
-
 
1184
  eax - SF_SYSTEM (18)
1063
 
1185
  ebx - SSF_GET_RAM_INFO (20)
1064
======================================================================
1186
======================================================================
1065
====================== Функция 18, подфункция 21 =====================
1187
====================== Функция 18, подфункция 21 =====================
1066
======= Получить номер слота процесса/потока по идентификатору. ======
1188
======= Получить номер слота процесса/потока по идентификатору. ======
1067
======================================================================
1189
======================================================================
Line 1071... Line 1193...
1071
  * ecx = идентификатор процесса/потока (PID/TID)
1193
  * ecx = идентификатор процесса/потока (PID/TID)
1072
Возвращаемое значение:
1194
Возвращаемое значение:
1073
  * eax = 0 - ошибка (неверный идентификатор)
1195
  * eax = 0 - ошибка (неверный идентификатор)
1074
  * иначе eax = номер слота
1196
  * иначе eax = номер слота
Line -... Line 1197...
-
 
1197
 
-
 
1198
---------------------- Константы для регистров: ----------------------
-
 
1199
  eax - SF_SYSTEM (18)
1075
 
1200
  ebx - SSF_GET_THREAD_SLOT (21)
1076
======================================================================
1201
======================================================================
1077
 Функция 18, подфункция 22 - операции с окном другого процесса/потока.
1202
 Функция 18, подфункция 22 - операции с окном другого процесса/потока.
1078
======================================================================
1203
======================================================================
1079
Параметры:
1204
Параметры:
Line 1091... Line 1216...
1091
Замечания:
1216
Замечания:
1092
  * Поток может свернуть своё окно вызовом подфункции 10.
1217
  * Поток может свернуть своё окно вызовом подфункции 10.
1093
  * Восстановление окна с одновременной активизацией осуществляется
1218
  * Восстановление окна с одновременной активизацией осуществляется
1094
    подфункции 3 (принимающей номер слота).
1219
    подфункции 3 (принимающей номер слота).
Line -... Line 1220...
-
 
1220
 
-
 
1221
---------------------- Константы для регистров: ----------------------
-
 
1222
  eax - SF_SYSTEM (18)
-
 
1223
  ebx - SSF_FOREIGN_WINDOW (22)
-
 
1224
  ecx - SSSF_MINIMIZE (0), SSSF_MINIMIZE_ID (1), SSSF_RESTORE (2),
1095
 
1225
    SSSF_RESTORE_ID (3)
1096
======================================================================
1226
======================================================================
1097
======= Функция 18, подфункция 23 - минимизировать все окна. =========
1227
======= Функция 18, подфункция 23 - минимизировать все окна. =========
1098
======================================================================
1228
======================================================================
1099
Параметры:
1229
Параметры:
Line 1103... Line 1233...
1103
  * eax = 0 - все окна были минимизированы до вызова функции
1233
  * eax = 0 - все окна были минимизированы до вызова функции
1104
  * eax = N - количество окон свернутых функцией
1234
  * eax = N - количество окон свернутых функцией
1105
Замечания:
1235
Замечания:
1106
  * Окна спец. потоков (имя начинается с символа @) не сворачиваются.
1236
  * Окна спец. потоков (имя начинается с символа @) не сворачиваются.
Line -... Line 1237...
-
 
1237
 
-
 
1238
---------------------- Константы для регистров: ----------------------
-
 
1239
  eax - SF_SYSTEM (18)
1107
 
1240
  ebx - SSF_MINIMIZE_ALL (23)
1108
======================================================================
1241
======================================================================
1109
===== Функция 18, подфункция 24 - установить пределы отрисовки. ======
1242
===== Функция 18, подфункция 24 - установить пределы отрисовки. ======
1110
======================================================================
1243
======================================================================
1111
Параметры:
1244
Параметры:
Line 1119... Line 1252...
1119
  * Функция не меняет физический размер видеорежима. Она предназначена
1252
  * Функция не меняет физический размер видеорежима. Она предназначена
1120
    для нестандартных дисплеев, отображающих изображение частично.
1253
    для нестандартных дисплеев, отображающих изображение частично.
1121
  * Размеры указываемые в функции не должны превышать размеры текущего
1254
  * Размеры указываемые в функции не должны превышать размеры текущего
1122
    видеорежима, иначе функция ничего не изменит.
1255
    видеорежима, иначе функция ничего не изменит.
Line -... Line 1256...
-
 
1256
 
-
 
1257
---------------------- Константы для регистров: ----------------------
-
 
1258
  eax - SF_SYSTEM (18)
1123
 
1259
  ebx - SSF_SET_SCREEN_LIMITS (24)
1124
======================================================================
1260
======================================================================
1125
===================== Функция 18, подфункция 25 ======================
1261
===================== Функция 18, подфункция 25 ======================
1126
======== Управление положением окна относительно других окон. ========
1262
======== Управление положением окна относительно других окон. ========
Line 1150... Line 1286...
1150
 ZPOS_DESKTOP     = -2 - на самом заднем плане 
1286
 ZPOS_DESKTOP     = -2 - на самом заднем плане 
1151
 ZPOS_ALWAYS_BACK = -1 - позади всех окон
1287
 ZPOS_ALWAYS_BACK = -1 - позади всех окон
1152
 ZPOS_NORMAL      = 0  - обычное
1288
 ZPOS_NORMAL      = 0  - обычное
1153
 ZPOS_ALWAYS_TOP  = 1  - поверх всех окон
1289
 ZPOS_ALWAYS_TOP  = 1  - поверх всех окон
Line -... Line 1290...
-
 
1290
 
-
 
1291
---------------------- Константы для регистров: ----------------------
-
 
1292
  eax - SF_SYSTEM (18)
-
 
1293
  ebx - SSF_WINDOW_BEHAVIOR (25)
1154
 
1294
  ecx - SSSF_GET_WB (1), SSSF_SET_WB (2)
1155
======================================================================
1295
======================================================================
1156
==================== Функция 20 - интерфейс MIDI. ====================
1296
==================== Функция 20 - интерфейс MIDI. ====================
Line 1157... Line 1297...
1157
======================================================================
1297
======================================================================
Line 1171... Line 1311...
1171
  * eax = 1 - не определён базовый порт
1311
  * eax = 1 - не определён базовый порт
1172
Замечания:
1312
Замечания:
1173
  * Предварительно должен быть определён базовый порт вызовом
1313
  * Предварительно должен быть определён базовый порт вызовом
1174
    подфункции 1 функции 21.
1314
    подфункции 1 функции 21.
Line -... Line 1315...
-
 
1315
 
-
 
1316
---------------------- Константы для регистров: ----------------------
-
 
1317
  eax - SF_MIDI (20)
1175
 
1318
  ebx - SSF_RESET (1), SSF_OUTPUT (2)
1176
======================================================================
1319
======================================================================
1177
==== Функция 21, подфункция 1 - установить базовый порт MPU MIDI. ====
1320
==== Функция 21, подфункция 1 - установить базовый порт MPU MIDI. ====
1178
======================================================================
1321
======================================================================
1179
Параметры:
1322
Параметры:
Line 1187... Line 1330...
1187
  * Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.
1330
  * Номер порта должен удовлетворять условиям 0x100<=ecx<=0xFFFF.
1188
  * Установка базы нужна для работы функции 20.
1331
  * Установка базы нужна для работы функции 20.
1189
  * Получить установленный базовый порт можно вызовом
1332
  * Получить установленный базовый порт можно вызовом
1190
    подфункции 1 функции 26.
1333
    подфункции 1 функции 26.
Line -... Line 1334...
-
 
1334
 
-
 
1335
---------------------- Константы для регистров: ----------------------
-
 
1336
  eax - SF_SYSTEM_SET (21)
1191
 
1337
  ebx - SSF_MPU_MIDI_BASE (1)
1192
======================================================================
1338
======================================================================
1193
===== Функция 21, подфункция 2 - установить раскладку клавиатуры. ====
1339
===== Функция 21, подфункция 2 - установить раскладку клавиатуры. ====
1194
======================================================================
1340
======================================================================
1195
Раскладка клавиатуры используется для преобразования сканкодов,
1341
Раскладка клавиатуры используется для преобразования сканкодов,
Line 1221... Line 1367...
1221
  * Идентификатор страны - глобальная системная переменная, которая
1367
  * Идентификатор страны - глобальная системная переменная, которая
1222
    самим ядром не используется; однако приложение @taskbar отображает
1368
    самим ядром не используется; однако приложение @taskbar отображает
1223
    соответствующую текущей стране иконку.
1369
    соответствующую текущей стране иконку.
1224
  * Приложение @taskbar переключает раскладки по запросу пользователя.
1370
  * Приложение @taskbar переключает раскладки по запросу пользователя.
Line -... Line 1371...
-
 
1371
 
-
 
1372
---------------------- Константы для регистров: ----------------------
-
 
1373
  eax - SF_SYSTEM_SET (21)
1225
 
1374
  ebx - SSF_KEYBOARD_LAYOUT (2)
1226
======================================================================
1375
======================================================================
1227
========= Функция 21, подфункция 5 - установить язык системы. ========
1376
========= Функция 21, подфункция 5 - установить язык системы. ========
1228
======================================================================
1377
======================================================================
1229
Параметры:
1378
Параметры:
Line 1238... Line 1387...
1238
    соответствующую иконку.
1387
    соответствующую иконку.
1239
  * Проверок на корректность не делается, поскольку ядро эту
1388
  * Проверок на корректность не делается, поскольку ядро эту
1240
    переменную не использует.
1389
    переменную не использует.
1241
  * Получить язык системы можно вызовом подфункции 5 функции 26.
1390
  * Получить язык системы можно вызовом подфункции 5 функции 26.
Line -... Line 1391...
-
 
1391
 
-
 
1392
---------------------- Константы для регистров: ----------------------
-
 
1393
  eax - SF_SYSTEM_SET (21)
1242
 
1394
  ebx - SSF_SYS_LANG (5)
1243
======================================================================
1395
======================================================================
1244
====================== Функция 21, подфункция 11 =====================
1396
====================== Функция 21, подфункция 11 =====================
1245
=========== Разрешить/запретить низкоуровневый доступ к HD. ==========
1397
=========== Разрешить/запретить низкоуровневый доступ к HD. ==========
1246
======================================================================
1398
======================================================================
Line 1253... Line 1405...
1253
Замечания:
1405
Замечания:
1254
  * Используется при LBA-чтении (подфункция 8 функции 58).
1406
  * Используется при LBA-чтении (подфункция 8 функции 58).
1255
  * Текущая реализация использует только младший бит ecx.
1407
  * Текущая реализация использует только младший бит ecx.
1256
  * Получить текущее состояние можно вызовом подфункции 11 функции 26.
1408
  * Получить текущее состояние можно вызовом подфункции 11 функции 26.
Line -... Line 1409...
-
 
1409
 
-
 
1410
---------------------- Константы для регистров: ----------------------
-
 
1411
  eax - SF_SYSTEM_SET (21)
1257
 
1412
  ebx - SSF_ACCESS_HD_LBA (11)
1258
======================================================================
1413
======================================================================
1259
====================== Функция 21, подфункция 12 =====================
1414
====================== Функция 21, подфункция 12 =====================
1260
========== Разрешить/запретить низкоуровневый доступ к PCI. ==========
1415
========== Разрешить/запретить низкоуровневый доступ к PCI. ==========
1261
======================================================================
1416
======================================================================
Line 1268... Line 1423...
1268
Замечания:
1423
Замечания:
1269
  * Используется при работе с шиной PCI (функция 62).
1424
  * Используется при работе с шиной PCI (функция 62).
1270
  * Текущая реализация использует только младший бит ecx.
1425
  * Текущая реализация использует только младший бит ecx.
1271
  * Получить текущее состояние можно вызовом подфункции 12 функции 26.
1426
  * Получить текущее состояние можно вызовом подфункции 12 функции 26.
Line -... Line 1427...
-
 
1427
 
-
 
1428
---------------------- Константы для регистров: ----------------------
-
 
1429
  eax - SF_SYSTEM_SET (21)
1272
 
1430
  ebx - SSF_ACCESS_PCI (12)
1273
======================================================================
1431
======================================================================
1274
============ Функция 22 - установить системную дату/время. ===========
1432
============ Функция 22 - установить системную дату/время. ===========
1275
======================================================================
1433
======================================================================
1276
Параметры:
1434
Параметры:
Line 1307... Line 1465...
1307
    это не пройдёт (вернётся значение 1).
1465
    это не пройдёт (вернётся значение 1).
1308
  * Будильник - глобальный системный ресурс; установка будильника
1466
  * Будильник - глобальный системный ресурс; установка будильника
1309
    автоматически отменяет предыдущую установку. Впрочем, на данный
1467
    автоматически отменяет предыдущую установку. Впрочем, на данный
1310
    момент ни одна программа его не использует.
1468
    момент ни одна программа его не использует.
Line -... Line 1469...
-
 
1469
 
-
 
1470
---------------------- Константы для регистров: ----------------------
1311
 
1471
  eax - SF_SET_TIME_DATE (22)
1312
======================================================================
1472
======================================================================
1313
============== Функция 23 - ожидать события с таймаутом. =============
1473
============== Функция 23 - ожидать события с таймаутом. =============
1314
======================================================================
1474
======================================================================
1315
Если очередь сообщений пуста, ждёт появления сообщения в очереди,
1475
Если очередь сообщений пуста, ждёт появления сообщения в очереди,
Line 1330... Line 1490...
1330
  * Передача ebx=0 приводит к моментальному возвращению eax=0.
1490
  * Передача ebx=0 приводит к моментальному возвращению eax=0.
1331
  * При текущей реализации произойдёт немедленный возврат из функции
1491
  * При текущей реализации произойдёт немедленный возврат из функции
1332
    с eax=0, если сложение ebx с текущим значением счётчика времени
1492
    с eax=0, если сложение ebx с текущим значением счётчика времени
1333
    вызовет 32-битное переполнение.
1493
    вызовет 32-битное переполнение.
Line -... Line 1494...
-
 
1494
 
-
 
1495
---------------------- Константы для регистров: ----------------------
1334
 
1496
  eax - SF_WAIT_EVENT_TIMEOUT (23)
1335
======================================================================
1497
======================================================================
1336
======= Функция 24, подфункция 4 - извлечь лоток привода диска. ======
1498
======= Функция 24, подфункция 4 - извлечь лоток привода диска. ======
1337
======================================================================
1499
======================================================================
1338
Параметры:
1500
Параметры:
Line 1350... Line 1512...
1350
    механизмом лотка.
1512
    механизмом лотка.
1351
  * При извлечении лотка код производит очистку кэша соответствующего
1513
  * При извлечении лотка код производит очистку кэша соответствующего
1352
    устройства.
1514
    устройства.
1353
  * Примером использования функции является приложение CD_tray.
1515
  * Примером использования функции является приложение CD_tray.
Line -... Line 1516...
-
 
1516
 
-
 
1517
---------------------- Константы для регистров: ----------------------
-
 
1518
  eax - SF_CD (24)
1354
 
1519
  ebx - SSF_EJECT_TRAY (4), SSF_INSERT_TRAY (5)
1355
======================================================================
1520
======================================================================
1356
====== Функция 24, подфункция 5 - загрузить лоток привода диска. =====
1521
====== Функция 24, подфункция 5 - загрузить лоток привода диска. =====
1357
======================================================================
1522
======================================================================
1358
Параметры:
1523
Параметры:
Line 1366... Line 1531...
1366
  * функция не возвращает значения
1531
  * функция не возвращает значения
1367
Замечания:
1532
Замечания:
1368
  * Функция поддерживается только для ATAPI-устройств (CD и DVD).
1533
  * Функция поддерживается только для ATAPI-устройств (CD и DVD).
1369
  * Примером использования функции является приложение CD_tray.
1534
  * Примером использования функции является приложение CD_tray.
Line -... Line 1535...
-
 
1535
 
-
 
1536
---------------------- Константы для регистров: ----------------------
-
 
1537
  eax - SF_CD (24)
1370
 
1538
  ebx - SSF_EJECT_TRAY (4), SSF_INSERT_TRAY (5)
1371
======================================================================
1539
======================================================================
1372
========== Функция 25 - записать область на слой фона. ===============
1540
========== Функция 25 - записать область на слой фона. ===============
1373
======================================================================
1541
======================================================================
1374
Параметры:
1542
Параметры:
Line 1386... Line 1554...
1386
  * TT - байт указатель прозрачности, в настоящее время:
1554
  * TT - байт указатель прозрачности, в настоящее время:
1387
         от 1 до FF - непрозрачно, от 0 - прозрачно.
1555
         от 1 до FF - непрозрачно, от 0 - прозрачно.
1388
  * Функция размещает изображение не на фоновое изображение (ф.15),
1556
  * Функция размещает изображение не на фоновое изображение (ф.15),
1389
    а напрямую в LFB. Опции ф.15 для ф. 25 не имеют смысла.
1557
    а напрямую в LFB. Опции ф.15 для ф. 25 не имеют смысла.
Line -... Line 1558...
-
 
1558
 
-
 
1559
---------------------- Константы для регистров: ----------------------
1390
 
1560
  eax - SF_SCREEN_PUT_IMAGE (25)
1391
======================================================================
1561
======================================================================
1392
===== Функция 26, подфункция 1 - получить базовый порт MPU MIDI. =====
1562
===== Функция 26, подфункция 1 - получить базовый порт MPU MIDI. =====
1393
======================================================================
1563
======================================================================
1394
Параметры:
1564
Параметры:
Line 1398... Line 1568...
1398
  * eax = номер порта
1568
  * eax = номер порта
1399
Замечания:
1569
Замечания:
1400
  * Установить базовый порт можно вызовом
1570
  * Установить базовый порт можно вызовом
1401
    подфункции 1 функции 21.
1571
    подфункции 1 функции 21.
Line -... Line 1572...
-
 
1572
 
-
 
1573
---------------------- Константы для регистров: ----------------------
-
 
1574
  eax - SF_SYSTEM_GET (26)
1402
 
1575
  ebx - SSF_MPU_MIDI_BASE (1)
1403
======================================================================
1576
======================================================================
1404
====== Функция 26, подфункция 2 - получить раскладку клавиатуры. =====
1577
====== Функция 26, подфункция 2 - получить раскладку клавиатуры. =====
1405
======================================================================
1578
======================================================================
1406
Раскладка клавиатуры используется для преобразования сканкодов,
1579
Раскладка клавиатуры используется для преобразования сканкодов,
Line 1436... Line 1609...
1436
    самим ядром не используется; однако приложение @taskbar отображает
1609
    самим ядром не используется; однако приложение @taskbar отображает
1437
    соответствующую текущей стране иконку
1610
    соответствующую текущей стране иконку
1438
    (используя описываемую функцию).
1611
    (используя описываемую функцию).
1439
  * Приложение @taskbar переключает раскладки по запросу пользователя.
1612
  * Приложение @taskbar переключает раскладки по запросу пользователя.
Line -... Line 1613...
-
 
1613
 
-
 
1614
---------------------- Константы для регистров: ----------------------
-
 
1615
  eax - SF_SYSTEM_GET (26)
1440
 
1616
  ebx - SSF_KEYBOARD_LAYOUT (2)
1441
======================================================================
1617
======================================================================
1442
========== Функция 26, подфункция 5 - получить язык системы. =========
1618
========== Функция 26, подфункция 5 - получить язык системы. =========
1443
======================================================================
1619
======================================================================
1444
Параметры:
1620
Параметры:
Line 1450... Line 1626...
1450
  * Язык системы - глобальная системная переменная, никак
1626
  * Язык системы - глобальная системная переменная, никак
1451
    не используемая самим ядром, однако приложение @taskbar рисует
1627
    не используемая самим ядром, однако приложение @taskbar рисует
1452
    соответствующую иконку (используя описываемую функцию).
1628
    соответствующую иконку (используя описываемую функцию).
1453
  * Установить язык системы можно вызовом подфункции 5 функции 21.
1629
  * Установить язык системы можно вызовом подфункции 5 функции 21.
Line -... Line 1630...
-
 
1630
 
-
 
1631
---------------------- Константы для регистров: ----------------------
-
 
1632
  eax - SF_SYSTEM_GET (26)
1454
 
1633
  ebx - SSF_SYS_LANG (5)
1455
======================================================================
1634
======================================================================
1456
=== Функция 26, подфункция 9 - получить значение счётчика времени. ===
1635
=== Функция 26, подфункция 9 - получить значение счётчика времени. ===
1457
======================================================================
1636
======================================================================
1458
Параметры:
1637
Параметры:
Line 1464... Line 1643...
1464
Замечания:
1643
Замечания:
1465
  * Счётчик берётся по модулю 2^32, что соответствует немногим более
1644
  * Счётчик берётся по модулю 2^32, что соответствует немногим более
1466
    497 суток.
1645
    497 суток.
1467
  * Системное время можно получить функцией 3.
1646
  * Системное время можно получить функцией 3.
Line -... Line 1647...
-
 
1647
 
-
 
1648
---------------------- Константы для регистров: ----------------------
-
 
1649
  eax - SF_SYSTEM_GET (26)
1468
 
1650
  ebx - SSF_TIME_COUNT (9)
1469
======================================================================
1651
======================================================================
1470
===================== Функция 26, подфункция 10 ======================
1652
===================== Функция 26, подфункция 10 ======================
1471
========== Получить значение высокоточного счётчика времени. =========
1653
========== Получить значение высокоточного счётчика времени. =========
1472
======================================================================
1654
======================================================================
Line 1480... Line 1662...
1480
Remarks:
1662
Remarks:
1481
  * функция использует счётчик HPET, если HPET не доступен используется
1663
  * функция использует счётчик HPET, если HPET не доступен используется
1482
    счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
1664
    счётчик PIT. В этом случае точность будет уменьшена до 10 000 000
1483
    наносекунд.
1665
    наносекунд.
Line -... Line 1666...
-
 
1666
 
-
 
1667
---------------------- Константы для регистров: ----------------------
-
 
1668
  eax - SF_SYSTEM_GET (26)
1484
 
1669
  ebx - SSF_TIME_COUNT_PRO (10)
1485
======================================================================
1670
======================================================================
1486
====================== Функция 26, подфункция 11 =====================
1671
====================== Функция 26, подфункция 11 =====================
1487
=========== Узнать, разрешён ли низкоуровневый доступ к HD. ==========
1672
=========== Узнать, разрешён ли низкоуровневый доступ к HD. ==========
1488
======================================================================
1673
======================================================================
Line 1494... Line 1679...
1494
Замечания:
1679
Замечания:
1495
  * Используется при LBA-чтении (подфункция 8 функции 58).
1680
  * Используется при LBA-чтении (подфункция 8 функции 58).
1496
  * Установить текущее состояние можно вызовом
1681
  * Установить текущее состояние можно вызовом
1497
    подфункции 11 функции 21.
1682
    подфункции 11 функции 21.
Line -... Line 1683...
-
 
1683
 
-
 
1684
---------------------- Константы для регистров: ----------------------
-
 
1685
  eax - SF_SYSTEM_GET (26)
1498
 
1686
  ebx - SSF_ACCESS_HD_LBA (11)
1499
======================================================================
1687
======================================================================
1500
====================== Функция 26, подфункция 12 =====================
1688
====================== Функция 26, подфункция 12 =====================
1501
========== Узнать, разрешён ли низкоуровневый доступ к PCI. ==========
1689
========== Узнать, разрешён ли низкоуровневый доступ к PCI. ==========
1502
======================================================================
1690
======================================================================
Line 1509... Line 1697...
1509
  * Используется при работе с шиной PCI (функция 62).
1697
  * Используется при работе с шиной PCI (функция 62).
1510
  * Текущая реализация использует только младший бит ecx.
1698
  * Текущая реализация использует только младший бит ecx.
1511
  * Установить текущее состояние можно вызовом
1699
  * Установить текущее состояние можно вызовом
1512
    подфункции 12 функции 21.
1700
    подфункции 12 функции 21.
Line -... Line 1701...
-
 
1701
 
-
 
1702
---------------------- Константы для регистров: ----------------------
-
 
1703
  eax - SF_SYSTEM_GET (26)
1513
 
1704
  ebx - SSF_ACCESS_PCI (12)
1514
======================================================================
1705
======================================================================
1515
================ Функция 29 - получить системную дату. ===============
1706
================ Функция 29 - получить системную дату. ===============
1516
======================================================================
1707
======================================================================
1517
Параметры:
1708
Параметры:
Line 1523... Line 1714...
1523
  * MM = месяц (01..12)
1714
  * MM = месяц (01..12)
1524
  * DD = день (01..31)
1715
  * DD = день (01..31)
1525
Замечания:
1716
Замечания:
1526
  * Системную дату можно установить функцией 22.
1717
  * Системную дату можно установить функцией 22.
Line -... Line 1718...
-
 
1718
 
-
 
1719
---------------------- Константы для регистров: ----------------------
1527
 
1720
  eax - SF_GET_SYS_DATE (29)
1528
======================================================================
1721
======================================================================
1529
================ Функция 30 - работа с текущей папкой. ===============
1722
================ Функция 30 - работа с текущей папкой. ===============
Line 1530... Line 1723...
1530
======================================================================
1723
======================================================================
Line 1568... Line 1761...
1568
Возвращаемое значение:
1761
Возвращаемое значение:
1569
  * функция не возвращает значения
1762
  * функция не возвращает значения
1570
Замечания:
1763
Замечания:
1571
  * Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
1764
  * Функция может быть вызвана только 1 раз за 1 сессию работы ОС.
Line -... Line 1765...
-
 
1765
 
-
 
1766
---------------------- Константы для регистров: ----------------------
-
 
1767
  eax - SF_CURRENT_FOLDER (30)
1572
 
1768
  ebx - SSF_SET_CF (1), SSF_GET_CF (2), SSF_ADD_SYS_FOLDER (3)
1573
======================================================================
1769
======================================================================
1574
========= Функция 34 - узнать кому принадлежит точка экрана. =========
1770
========= Функция 34 - узнать кому принадлежит точка экрана. =========
1575
======================================================================
1771
======================================================================
1576
Параметры:
1772
Параметры:
Line 1581... Line 1777...
1581
Возвращаемое значение:
1777
Возвращаемое значение:
1582
  * eax = 0x000000XX - точка принадлежит слоту окна N
1778
  * eax = 0x000000XX - точка принадлежит слоту окна N
1583
    При некорректных значениях ebx и ecx функция возвращает 0
1779
    При некорректных значениях ebx и ecx функция возвращает 0
1584
  * Функция берет значения из области [_WinMapAddress]
1780
  * Функция берет значения из области [_WinMapAddress]
Line -... Line 1781...
-
 
1781
 
-
 
1782
---------------------- Константы для регистров: ----------------------
1585
 
1783
  eax - SF_GET_PIXEL_OWNER (34)
1586
======================================================================
1784
======================================================================
1587
============ Функция 35 - прочитать цвет точки на экране. ============
1785
============ Функция 35 - прочитать цвет точки на экране. ============
1588
======================================================================
1786
======================================================================
1589
Параметры:
1787
Параметры:
Line 1598... Line 1796...
1598
    что она вычитает 1 из обоих размеров.
1796
    что она вычитает 1 из обоих размеров.
1599
  * К видеопамяти есть также прямой доступ (без вызовов системных
1797
  * К видеопамяти есть также прямой доступ (без вызовов системных
1600
    функций) через селектор gs. Параметры текущего видеорежима
1798
    функций) через селектор gs. Параметры текущего видеорежима
1601
    можно получить функцией 61.
1799
    можно получить функцией 61.
Line -... Line 1800...
-
 
1800
 
-
 
1801
---------------------- Константы для регистров: ----------------------
1602
 
1802
  eax - SF_GET_PIXEL (35)
1603
======================================================================
1803
======================================================================
1604
=============== Функция 36 - прочитать область экрана. ===============
1804
=============== Функция 36 - прочитать область экрана. ===============
1605
======================================================================
1805
======================================================================
1606
Параметры:
1806
Параметры:
Line 1614... Line 1814...
1614
Замечания:
1814
Замечания:
1615
  * Координаты области - это координаты верхнего левого угла
1815
  * Координаты области - это координаты верхнего левого угла
1616
    области относительно экрана.
1816
    области относительно экрана.
1617
  * Размер изображения в байтах есть 3*xsize*ysize.
1817
  * Размер изображения в байтах есть 3*xsize*ysize.
Line -... Line 1818...
-
 
1818
 
-
 
1819
---------------------- Константы для регистров: ----------------------
1618
 
1820
  eax - SF_GET_IMAGE (36)
1619
======================================================================
1821
======================================================================
1620
==================== Функция 37 - работа с мышью. ====================
1822
==================== Функция 37 - работа с мышью. ====================
Line 1621... Line 1823...
1621
======================================================================
1823
======================================================================
Line 1736... Line 1938...
1736
Замечания:
1938
Замечания:
1737
  * Данные доступны только активному окну.
1939
  * Данные доступны только активному окну.
1738
  * После прочтения значения обнуляются.
1940
  * После прочтения значения обнуляются.
1739
  * Данные имеют знаковые значения.
1941
  * Данные имеют знаковые значения.
Line -... Line 1942...
-
 
1942
 
-
 
1943
---------------------- Константы для регистров: ----------------------
-
 
1944
  eax - SF_MOUSE_GET (37)
-
 
1945
  ebx - SSF_SCREEN_POSITION (0), SSF_WINDOW_POSITION (1),
-
 
1946
    SSF_BUTTON (2), SSF_BUTTON_EXT (3), SSF_LOAD_CURSOR (4),
1740
 
1947
    SSF_SET_CURSOR (5), SSF_DEL_CURSOR (6), SSF_SCROLL_DATA (7)
1741
======================================================================
1948
======================================================================
1742
================== Функция 38 - нарисовать отрезок. ==================
1949
================== Функция 38 - нарисовать отрезок. ==================
1743
======================================================================
1950
======================================================================
1744
Параметры:
1951
Параметры:
Line 1754... Line 1961...
1754
  * функция не возвращает значения
1961
  * функция не возвращает значения
1755
Замечания:
1962
Замечания:
1756
  * Координаты берутся относительно окна.
1963
  * Координаты берутся относительно окна.
1757
  * Конечная точка также рисуется.
1964
  * Конечная точка также рисуется.
Line -... Line 1965...
-
 
1965
 
-
 
1966
---------------------- Константы для регистров: ----------------------
1758
 
1967
  eax - SF_DRAW_LINE (38)
1759
======================================================================
1968
======================================================================
1760
== Функция 39, подфункция 1 - получить размер фонового изображения. ==
1969
== Функция 39, подфункция 1 - получить размер фонового изображения. ==
1761
======================================================================
1970
======================================================================
1762
Параметры:
1971
Параметры:
Line 1767... Line 1976...
1767
Замечания:
1976
Замечания:
1768
  * Есть парная команда установки размеров фонового изображения -
1977
  * Есть парная команда установки размеров фонового изображения -
1769
    подфункция 1 функции 15. После которой, разумеется, следует
1978
    подфункция 1 функции 15. После которой, разумеется, следует
1770
    заново определить само изображение.
1979
    заново определить само изображение.
Line -... Line 1980...
-
 
1980
 
-
 
1981
---------------------- Константы для регистров: ----------------------
1771
 
1982
  eax - SF_BACKGROUND_GET (39)
1772
======================================================================
1983
======================================================================
1773
= Функция 39, подфункция 2 - прочитать точку с фонового изображения. =
1984
= Функция 39, подфункция 2 - прочитать точку с фонового изображения. =
1774
======================================================================
1985
======================================================================
1775
Параметры:
1986
Параметры:
Line 1785... Line 1996...
1785
    смещения, оно может измениться в следующих версиях ядра.
1996
    смещения, оно может измениться в следующих версиях ядра.
1786
  * Смещение точки с координатами (x,y) вычисляется как (x+y*xsize)*3.
1997
  * Смещение точки с координатами (x,y) вычисляется как (x+y*xsize)*3.
1787
  * Есть парная функция установки точки на фоновом изображении -
1998
  * Есть парная функция установки точки на фоновом изображении -
1788
    подфункция 2 функции 15.
1999
    подфункция 2 функции 15.
Line -... Line 2000...
-
 
2000
 
-
 
2001
---------------------- Константы для регистров: ----------------------
1789
 
2002
  eax - SF_BACKGROUND_GET (39)
1790
======================================================================
2003
======================================================================
1791
====== Функция 39, подфункция 4 - получить режим отрисовки фона. =====
2004
====== Функция 39, подфункция 4 - получить режим отрисовки фона. =====
1792
======================================================================
2005
======================================================================
1793
Параметры:
2006
Параметры:
Line 1798... Line 2011...
1798
  * eax = 2 - растянуть
2011
  * eax = 2 - растянуть
1799
Замечания:
2012
Замечания:
1800
  * Есть парная функция установки режима отрисовки фона -
2013
  * Есть парная функция установки режима отрисовки фона -
1801
    подфункция 4 функции 15.
2014
    подфункция 4 функции 15.
Line -... Line 2015...
-
 
2015
 
-
 
2016
---------------------- Константы для регистров: ----------------------
1802
 
2017
  eax - SF_BACKGROUND_GET (39)
1803
======================================================================
2018
======================================================================
1804
======== Функция 40 - установить маску для ожидаемых событий. ========
2019
======== Функция 40 - установить маску для ожидаемых событий. ========
1805
======================================================================
2020
======================================================================
1806
Маска для ожидаемых событий влияет на функции работы с событиями 10,
2021
Маска для ожидаемых событий влияет на функции работы с событиями 10,
Line 1826... Line 2041...
1826
  * События, запрещённые в маске, всё равно сохраняются, если
2041
  * События, запрещённые в маске, всё равно сохраняются, если
1827
    приходят; о них просто не извещают функции работы с событиями.
2042
    приходят; о них просто не извещают функции работы с событиями.
1828
  * Функции работы с событиями учитывают маску на момент
2043
  * Функции работы с событиями учитывают маску на момент
1829
    вызова функции, а не на момент поступления сообщения.
2044
    вызова функции, а не на момент поступления сообщения.
Line 1830... Line -...
1830
 
-
 
-
 
2045
 
-
 
2046
---------------------- Константы для регистров: ----------------------
1831
 
2047
  eax - SF_SET_EVENTS_MASK (40)
1832
======================================================================
2048
======================================================================
1833
=================== Функция 43 - ввод/вывод в порт. ==================
2049
=================== Функция 43 - ввод/вывод в порт. ==================
Line 1834... Line 2050...
1834
======================================================================
2050
======================================================================
Line 1856... Line 2072...
1856
  * Для зарезервированных портов вместо вызова этих функций
2072
  * Для зарезервированных портов вместо вызова этих функций
1857
    лучше использовать команды процессора in/out - это значительно
2073
    лучше использовать команды процессора in/out - это значительно
1858
    быстрее и несколько короче и проще. Из незарезервированных
2074
    быстрее и несколько короче и проще. Из незарезервированных
1859
    портов читать всё равно нельзя.
2075
    портов читать всё равно нельзя.
Line 1860... Line -...
1860
 
-
 
-
 
2076
 
-
 
2077
---------------------- Константы для регистров: ----------------------
1861
 
2078
  eax - SF_PORT_IN_OUT (43)
1862
======================================================================
2079
======================================================================
1863
= Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
2080
= Функция 46 - зарезервировать/освободить группу портов ввода/вывода.
1864
======================================================================
2081
======================================================================
1865
К зарезервированным портам можно обращаться напрямую из приложения
2082
К зарезервированным портам можно обращаться напрямую из приложения
Line 1891... Line 2108...
1891
  * При загрузке система резервирует за собой порты
2108
  * При загрузке система резервирует за собой порты
1892
    0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно).
2109
    0..0x2d, 0x30..0x4d, 0x50..0xdf, 0xe5..0xff (включительно).
1893
  * При завершении потока автоматически освобождаются все
2110
  * При завершении потока автоматически освобождаются все
1894
    зарезервированные им порты.
2111
    зарезервированные им порты.
Line -... Line 2112...
-
 
2112
 
-
 
2113
---------------------- Константы для регистров: ----------------------
1895
 
2114
  eax - SF_SET_PORTS (46)
1896
======================================================================
2115
======================================================================
1897
================= Функция 47 - вывести число в окно. =================
2116
================= Функция 47 - вывести число в окно. =================
1898
======================================================================
2117
======================================================================
1899
Параметры:
2118
Параметры:
Line 1925... Line 2144...
1925
    может быть записано меньшим количеством цифр, оно дополняется
2144
    может быть записано меньшим количеством цифр, оно дополняется
1926
    ведущими нулями; если число велико и не может быть записано
2145
    ведущими нулями; если число велико и не может быть записано
1927
    таким количеством цифр, "лишние" ведущие цифры обрезаются.
2146
    таким количеством цифр, "лишние" ведущие цифры обрезаются.
1928
  * Параметры шрифтов указаны в описании функции 4 (вывода текста).
2147
  * Параметры шрифтов указаны в описании функции 4 (вывода текста).
Line -... Line 2148...
-
 
2148
 
-
 
2149
---------------------- Константы для регистров: ----------------------
1929
 
2150
  eax - SF_DRAW_NUMBER (47)
1930
======================================================================
2151
======================================================================
1931
======= Функция 48, подфункция 0 - применить настройки экрана. =======
2152
======= Функция 48, подфункция 0 - применить настройки экрана. =======
1932
======================================================================
2153
======================================================================
1933
Параметры:
2154
Параметры:
Line 1941... Line 2162...
1941
    подфункциями 1 и 2.
2162
    подфункциями 1 и 2.
1942
  * Вызов функции без предшествующих вызовов указанных подфункций
2163
  * Вызов функции без предшествующих вызовов указанных подфункций
1943
    игнорируется.
2164
    игнорируется.
1944
  * Вызов функции с ненулевым ecx игнорируется.
2165
  * Вызов функции с ненулевым ecx игнорируется.
Line -... Line 2166...
-
 
2166
 
-
 
2167
---------------------- Константы для регистров: ----------------------
-
 
2168
  eax - SF_STYLE_SETTINGS (48)
1945
 
2169
  ebx - SSF_APPLY (0)
1946
======================================================================
2170
======================================================================
1947
========= Функция 48, подфункция 1 - установить стиль кнопок. ========
2171
========= Функция 48, подфункция 1 - установить стиль кнопок. ========
1948
======================================================================
2172
======================================================================
1949
Параметры:
2173
Параметры:
Line 1957... Line 2181...
1957
Замечания:
2181
Замечания:
1958
  * После вызова описываемой функции следует перерисовать экран
2182
  * После вызова описываемой функции следует перерисовать экран
1959
    подфункцией 0.
2183
    подфункцией 0.
1960
  * Тип кнопок влияет только на их прорисовку функцией 8.
2184
  * Тип кнопок влияет только на их прорисовку функцией 8.
Line -... Line 2185...
-
 
2185
 
-
 
2186
---------------------- Константы для регистров: ----------------------
-
 
2187
  eax - SF_STYLE_SETTINGS (48)
1961
 
2188
  ebx - SSF_SET_BUTTON_STYLE (1)
1962
======================================================================
2189
======================================================================
1963
==== Функция 48, подфункция 2 - установить стандартные цвета окон. ===
2190
==== Функция 48, подфункция 2 - установить стандартные цвета окон. ===
1964
======================================================================
2191
======================================================================
1965
Параметры:
2192
Параметры:
Line 1980... Line 2207...
1980
  * Таблица стандартных цветов входит в скин и устанавливается заново
2207
  * Таблица стандартных цветов входит в скин и устанавливается заново
1981
    при установке скина (подфункции 8).
2208
    при установке скина (подфункции 8).
1982
  * Таблицу цветов можно просматривать/изменять интерактивно с помощью
2209
  * Таблицу цветов можно просматривать/изменять интерактивно с помощью
1983
    приложения desktop.
2210
    приложения desktop.
Line -... Line 2211...
-
 
2211
 
-
 
2212
---------------------- Константы для регистров: ----------------------
-
 
2213
  eax - SF_STYLE_SETTINGS (48)
1984
 
2214
  ebx - SSF_SET_COLORS (2)
1985
======================================================================
2215
======================================================================
1986
===== Функция 48, подфункция 3 - получить стандартные цвета окон. ====
2216
===== Функция 48, подфункция 3 - получить стандартные цвета окон. ====
1987
======================================================================
2217
======================================================================
1988
Параметры:
2218
Параметры:
Line 2024... Line 2254...
2024
    при установке скина подфункцией 8) всем окнам посылается сообщение
2254
    при установке скина подфункцией 8) всем окнам посылается сообщение
2025
    о необходимости перерисовки (событие с кодом 1).
2255
    о необходимости перерисовки (событие с кодом 1).
2026
  * Стандартные цвета можно просматривать/изменять интерактивно
2256
  * Стандартные цвета можно просматривать/изменять интерактивно
2027
    с помощью приложения desktop.
2257
    с помощью приложения desktop.
Line -... Line 2258...
-
 
2258
 
-
 
2259
---------------------- Константы для регистров: ----------------------
-
 
2260
  eax - SF_STYLE_SETTINGS (48)
2028
 
2261
  ebx - SSF_GET_COLORS (3)
2029
======================================================================
2262
======================================================================
2030
========== Функция 48, подфункция 4 - получить высоту скина. =========
2263
========== Функция 48, подфункция 4 - получить высоту скина. =========
2031
======================================================================
2264
======================================================================
2032
Параметры:
2265
Параметры:
Line 2037... Line 2270...
2037
Замечания:
2270
Замечания:
2038
  * Высотой скина по определению считается высота заголовка окон,
2271
  * Высотой скина по определению считается высота заголовка окон,
2039
    использующих скин.
2272
    использующих скин.
2040
  * Смотри также общую структуру окна в описании функции 0.
2273
  * Смотри также общую структуру окна в описании функции 0.
Line -... Line 2274...
-
 
2274
 
-
 
2275
---------------------- Константы для регистров: ----------------------
-
 
2276
  eax - SF_STYLE_SETTINGS (48)
2041
 
2277
  ebx - SSF_GET_SKIN_HEIGHT (4)
2042
======================================================================
2278
======================================================================
2043
===== Функция 48, подфункция 5 - получить рабочую область экрана. ====
2279
===== Функция 48, подфункция 5 - получить рабочую область экрана. ====
2044
======================================================================
2280
======================================================================
2045
Параметры:
2281
Параметры:
Line 2059... Line 2295...
2059
    формулой right-left+1, по оси y - формулой bottom-right+1.
2295
    формулой right-left+1, по оси y - формулой bottom-right+1.
2060
  * Смотри также функцию 14,
2296
  * Смотри также функцию 14,
2061
    позволяющую определить размеры всего экрана.
2297
    позволяющую определить размеры всего экрана.
2062
  * Есть парная функция установки рабочей области - подфункция 6.
2298
  * Есть парная функция установки рабочей области - подфункция 6.
Line -... Line 2299...
-
 
2299
 
-
 
2300
---------------------- Константы для регистров: ----------------------
-
 
2301
  eax - SF_STYLE_SETTINGS (48)
2063
 
2302
  ebx - SSF_GET_SCREEN_AREA (5)
2064
======================================================================
2303
======================================================================
2065
==== Функция 48, подфункция 6 - установить рабочую область экрана. ===
2304
==== Функция 48, подфункция 6 - установить рабочую область экрана. ===
2066
======================================================================
2305
======================================================================
2067
Параметры:
2306
Параметры:
Line 2090... Line 2329...
2090
    подфункция 5.
2329
    подфункция 5.
2091
  * Эта функция автоматически перерисовывает экран, по ходу дела
2330
  * Эта функция автоматически перерисовывает экран, по ходу дела
2092
    обновляет координаты и размеры максимизированных окон.
2331
    обновляет координаты и размеры максимизированных окон.
2093
    Все окна извещаются о необходимости перерисовки (событие 1).
2332
    Все окна извещаются о необходимости перерисовки (событие 1).
Line -... Line 2333...
-
 
2333
 
-
 
2334
---------------------- Константы для регистров: ----------------------
-
 
2335
  eax - SF_STYLE_SETTINGS (48)
2094
 
2336
  ebx - SSF_SET_SCREEN_AREA (6)
2095
======================================================================
2337
======================================================================
2096
====================== Функция 48, подфункция 7 ======================
2338
====================== Функция 48, подфункция 7 ======================
2097
============ Получить область скина для текста заголовка. ============
2339
============ Получить область скина для текста заголовка. ============
2098
======================================================================
2340
======================================================================
Line 2110... Line 2352...
2110
  * Рекомендуется учитывать значения, возвращаемые этой функцией,
2352
  * Рекомендуется учитывать значения, возвращаемые этой функцией,
2111
    при выборе места для рисования текста заголовка (функцией 4) или
2353
    при выборе места для рисования текста заголовка (функцией 4) или
2112
    какого-нибудь заменителя текста заголовка
2354
    какого-нибудь заменителя текста заголовка
2113
    (по усмотрению приложения).
2355
    (по усмотрению приложения).
Line -... Line 2356...
-
 
2356
 
-
 
2357
---------------------- Константы для регистров: ----------------------
-
 
2358
  eax - SF_STYLE_SETTINGS (48)
2114
 
2359
  ebx - SSF_GET_SKIN_MARGINS (7)
2115
======================================================================
2360
======================================================================
2116
==== Функция 48, подфункция 8 - установить используемый скин окон. ===
2361
==== Функция 48, подфункция 8 - установить используемый скин окон. ===
2117
======================================================================
2362
======================================================================
2118
Параметры:
2363
Параметры:
Line 2129... Line 2374...
2129
  * При загрузке система считывает скин из файла default.skn
2374
  * При загрузке система считывает скин из файла default.skn
2130
    на рамдиске.
2375
    на рамдиске.
2131
  * Пользователь может изменять скин статически, создав свой
2376
  * Пользователь может изменять скин статически, создав свой
2132
    default.skn, или динамически с помощью приложения desktop.
2377
    default.skn, или динамически с помощью приложения desktop.
Line -... Line 2378...
-
 
2378
 
-
 
2379
---------------------- Константы для регистров: ----------------------
-
 
2380
  eax - SF_STYLE_SETTINGS (48)
2133
 
2381
  ebx - SSF_SET_SKIN (8)
2134
======================================================================
2382
======================================================================
2135
= Функция 48, подфункция 9 - получить настройку сглаживания шрифтов. =
2383
= Функция 48, подфункция 9 - получить настройку сглаживания шрифтов. =
2136
======================================================================
2384
======================================================================
2137
Параметры:
2385
Параметры:
2138
  * eax = 48 - номер функции
2386
  * eax = 48 - номер функции
2139
  * ebx = 9 - номер подфункции
2387
  * ebx = 9 - номер подфункции
2140
Возвращаемое значение:
2388
Возвращаемое значение:
Line -... Line 2389...
-
 
2389
  * eax = 2 - субпиксельное, 1 - обычное, 0 - выключить
-
 
2390
 
-
 
2391
---------------------- Константы для регистров: ----------------------
2141
  * eax = 2 - субпиксельное, 1 - обычное, 0 - выключить
2392
  eax - SF_STYLE_SETTINGS (48)
2142
 
2393
  ebx - SSF_GET_FONT_SMOOTH (9)
2143
======================================================================
2394
======================================================================
2144
===== Функция 48, подфункция 10 - настроить сглаживание шрифтов. =====
2395
===== Функция 48, подфункция 10 - настроить сглаживание шрифтов. =====
2145
======================================================================
2396
======================================================================
2146
Параметры:
2397
Параметры:
2147
  * eax = 48 - номер функции
2398
  * eax = 48 - номер функции
Line -... Line 2399...
-
 
2399
  * ebx = 10 - номер подфункции
-
 
2400
  * cl  = 2 - субпиксельное, 1 - обычное, 0 - выключить
-
 
2401
 
2148
  * ebx = 10 - номер подфункции
2402
---------------------- Константы для регистров: ----------------------
2149
  * cl  = 2 - субпиксельное, 1 - обычное, 0 - выключить
2403
  eax - SF_STYLE_SETTINGS (48)
2150
 
2404
  ebx - SSF_SET_FONT_SMOOTH (10)
2151
======================================================================
2405
======================================================================
2152
======== Функция 48, подфункция 11 - получить размер шрифтов. ========
2406
======== Функция 48, подфункция 11 - получить размер шрифтов. ========
2153
======================================================================
2407
======================================================================
2154
Параметры:
2408
Параметры:
2155
  * eax = 48 - номер функции
2409
  * eax = 48 - номер функции
Line -... Line 2410...
-
 
2410
  * ebx = 9 - номер подфункции
-
 
2411
Возвращаемое значение:
-
 
2412
  * eax = текущая высота шрифта в пикселях
2156
  * ebx = 9 - номер подфункции
2413
 
2157
Возвращаемое значение:
2414
---------------------- Константы для регистров: ----------------------
2158
  * eax = текущая высота шрифта в пикселях
2415
  eax - SF_STYLE_SETTINGS (48)
2159
 
2416
  ebx - SSF_GET_FONT_SIZE (11)
2160
======================================================================
2417
======================================================================
2161
======= Функция 48, подфункция 12 - установить размер шрифтов. =======
2418
======= Функция 48, подфункция 12 - установить размер шрифтов. =======
2162
======================================================================
2419
======================================================================
Line -... Line 2420...
-
 
2420
Параметры:
-
 
2421
  * eax = 48 - номер функции
-
 
2422
  * ebx = 10 - номер подфункции
2163
Параметры:
2423
  * cl  = новая высота шрифта в пикселях
2164
  * eax = 48 - номер функции
2424
 
2165
  * ebx = 10 - номер подфункции
2425
---------------------- Константы для регистров: ----------------------
2166
  * cl  = новая высота шрифта в пикселях
2426
  eax - SF_STYLE_SETTINGS (48)
2167
 
2427
  ebx - SSF_SET_FONT_SIZE (12)
Line 2184... Line 2444...
2184
    http://www.microsoft.com/whdc/archive/amp_12.mspx;
2444
    http://www.microsoft.com/whdc/archive/amp_12.mspx;
2185
    кроме того, она включена в известный Interrupt List by Ralf Brown
2445
    кроме того, она включена в известный Interrupt List by Ralf Brown
2186
    (http://www.pobox.com/~ralf/files.html,
2446
    (http://www.pobox.com/~ralf/files.html,
2187
    ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/).
2447
    ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/).
Line -... Line 2448...
-
 
2448
 
-
 
2449
---------------------- Константы для регистров: ----------------------
2188
 
2450
  eax - SF_APM (49)
2189
======================================================================
2451
======================================================================
2190
================= Функция 50 - установка формы окна. =================
2452
================= Функция 50 - установка формы окна. =================
2191
======================================================================
2453
======================================================================
2192
Обычные окна представляют собой прямоугольники. С помощью этой функции
2454
Обычные окна представляют собой прямоугольники. С помощью этой функции
Line 2229... Line 2491...
2229
  * Система просматривает данные о форме при каждой перерисовке окна
2491
  * Система просматривает данные о форме при каждой перерисовке окна
2230
    функцией 0.
2492
    функцией 0.
2231
  * Вызов подфункции 0 с нулевым указателем приводит к возврату
2493
  * Вызов подфункции 0 с нулевым указателем приводит к возврату
2232
    к прямоугольной форме.
2494
    к прямоугольной форме.
Line -... Line 2495...
-
 
2495
 
-
 
2496
---------------------- Константы для регистров: ----------------------
2233
 
2497
  eax - SF_SET_WINDOW_SHAPE (50)
2234
======================================================================
2498
======================================================================
2235
===================== Функция 51 - создать поток. ====================
2499
===================== Функция 51 - создать поток. ====================
2236
======================================================================
2500
======================================================================
2237
Параметры:
2501
Параметры:
Line 2241... Line 2505...
2241
  * edx = указатель стэка потока (начальный esp)
2505
  * edx = указатель стэка потока (начальный esp)
2242
Возвращаемое значение:
2506
Возвращаемое значение:
2243
  * eax = -1 - ошибка (в системе слишком много потоков)
2507
  * eax = -1 - ошибка (в системе слишком много потоков)
2244
  * иначе eax = TID - идентификатор потока
2508
  * иначе eax = TID - идентификатор потока
Line -... Line 2509...
-
 
2509
 
-
 
2510
---------------------- Константы для регистров: ----------------------
2245
 
2511
  eax - SF_CREATE_THREAD (51)
2246
======================================================================
2512
======================================================================
2247
====================== Функция 54, подфункция 0 ======================
2513
====================== Функция 54, подфункция 0 ======================
2248
============== Узнать количество слотов в буфере обмена. =============
2514
============== Узнать количество слотов в буфере обмена. =============
2249
======================================================================
2515
======================================================================
Line 2252... Line 2518...
2252
  * ebx = 0 - номер подфункции
2518
  * ebx = 0 - номер подфункции
2253
Возвращаемое значение:
2519
Возвращаемое значение:
2254
  * eax = количество слотов в буфере 
2520
  * eax = количество слотов в буфере 
2255
  * eax = -1 - отсутствует область главного списка
2521
  * eax = -1 - отсутствует область главного списка
Line -... Line 2522...
-
 
2522
 
-
 
2523
---------------------- Константы для регистров: ----------------------
-
 
2524
  eax - SF_CLIPBOARD (54)
2256
 
2525
  ebx - SSF_GET_SLOT_COUNT (0)
2257
======================================================================
2526
======================================================================
2258
====================== Функция 54, подфункция 1 ======================
2527
====================== Функция 54, подфункция 1 ======================
2259
================== Считать данные из буфера обмена. ==================
2528
================== Считать данные из буфера обмена. ==================
2260
======================================================================
2529
======================================================================
Line 2265... Line 2534...
2265
Возвращаемое значение:
2534
Возвращаемое значение:
2266
  * eax = если успешно - указатель на область памяти с данными
2535
  * eax = если успешно - указатель на область памяти с данными
2267
  * eax = 1 - ошибка
2536
  * eax = 1 - ошибка
2268
  * eax = -1 - отсутствует область главного списка
2537
  * eax = -1 - отсутствует область главного списка
Line -... Line 2538...
-
 
2538
 
-
 
2539
---------------------- Константы для регистров: ----------------------
-
 
2540
  eax - SF_CLIPBOARD (54)
2269
 
2541
  ebx - SSF_READ_CB (1)
2270
======================================================================
2542
======================================================================
2271
====================== Функция 54, подфункция 2 ======================
2543
====================== Функция 54, подфункция 2 ======================
2272
================== Записать данные в буфер обмена. ===================
2544
================== Записать данные в буфер обмена. ===================
2273
======================================================================
2545
======================================================================
Line 2279... Line 2551...
2279
Возвращаемое значение:
2551
Возвращаемое значение:
2280
  * eax = 0 - успешно
2552
  * eax = 0 - успешно
2281
  * eax = 1 - ошибка
2553
  * eax = 1 - ошибка
2282
  * eax = -1 - отсутствует область главного списка
2554
  * eax = -1 - отсутствует область главного списка
Line -... Line 2555...
-
 
2555
 
-
 
2556
---------------------- Константы для регистров: ----------------------
-
 
2557
  eax - SF_CLIPBOARD (54)
2283
 
2558
  ebx - SSF_WRITE_CB (2)
2284
======================================================================
2559
======================================================================
2285
====================== Функция 54, подфункция 3 ======================
2560
====================== Функция 54, подфункция 3 ======================
2286
========= Удалить последний слот с данными в буфере обмена ===========
2561
========= Удалить последний слот с данными в буфере обмена ===========
2287
======================================================================
2562
======================================================================
Line 2291... Line 2566...
2291
Возвращаемое значение:
2566
Возвращаемое значение:
2292
  * eax = 0 - успешно
2567
  * eax = 0 - успешно
2293
  * eax = 1 - ошибка
2568
  * eax = 1 - ошибка
2294
  * eax = -1 - отсутствует область главного списка
2569
  * eax = -1 - отсутствует область главного списка
Line -... Line 2570...
-
 
2570
 
-
 
2571
---------------------- Константы для регистров: ----------------------
-
 
2572
  eax - SF_CLIPBOARD (54)
2295
 
2573
  ebx - SSF_DEL_SLOT (3)
2296
======================================================================
2574
======================================================================
2297
====================== Функция 54, подфункция 4 ======================
2575
====================== Функция 54, подфункция 4 ======================
2298
=================== Аварийный сброс блокировки буфера ================
2576
=================== Аварийный сброс блокировки буфера ================
2299
======================================================================
2577
======================================================================
Line 2305... Line 2583...
2305
  * eax = -1 - отсутствует область главного списка или нет блокировки
2583
  * eax = -1 - отсутствует область главного списка или нет блокировки
2306
Замечания:
2584
Замечания:
2307
  * Используется в исключительных случаях, когда зависшее или убитое
2585
  * Используется в исключительных случаях, когда зависшее или убитое
2308
    приложение заблокировало работу с буфером обмена.
2586
    приложение заблокировало работу с буфером обмена.
Line -... Line 2587...
-
 
2587
 
-
 
2588
---------------------- Константы для регистров: ----------------------
-
 
2589
  eax - SF_CLIPBOARD (54)
2309
 
2590
  ebx - SSF_UNLOCK_BUFFER (4)
2310
======================================================================
2591
======================================================================
2311
====================== Функция 55, подфункция 55 =====================
2592
====================== Функция 55, подфункция 55 =====================
2312
========== Начать проигрывать данные на встроенном спикере. ==========
2593
========== Начать проигрывать данные на встроенном спикере. ==========
2313
======================================================================
2594
======================================================================
Line 2338... Line 2619...
2338
  * Функция возвращает управление, сообщив куда следует информацию
2619
  * Функция возвращает управление, сообщив куда следует информацию
2339
    о запросе. Само проигрывание идёт независимо от программы.
2620
    о запросе. Само проигрывание идёт независимо от программы.
2340
  * Данные должны сохраняться в памяти по крайней мере
2621
  * Данные должны сохраняться в памяти по крайней мере
2341
    до конца проигрывания.
2622
    до конца проигрывания.
Line -... Line 2623...
-
 
2623
 
-
 
2624
---------------------- Константы для регистров: ----------------------
2342
 
2625
  eax - SF_SPEAKER_PLAY (55)
2343
======================================================================
2626
======================================================================
2344
======================= Функция 57 - PCI BIOS. =======================
2627
======================= Функция 57 - PCI BIOS. =======================
2345
======================================================================
2628
======================================================================
2346
Параметры:
2629
Параметры:
Line 2356... Line 2639...
2356
  * Функция вызывает расширение PCI32 BIOS, документированное,
2639
  * Функция вызывает расширение PCI32 BIOS, документированное,
2357
    например, в http://alpha1.dyns.net/files/PCI/bios21.pdf.
2640
    например, в http://alpha1.dyns.net/files/PCI/bios21.pdf.
2358
  * Если BIOS не поддерживает это расширение, поведение функции
2641
  * Если BIOS не поддерживает это расширение, поведение функции
2359
    эмулируется (через аналоги подфункций функции 62 режима ядра).
2642
    эмулируется (через аналоги подфункций функции 62 режима ядра).
Line -... Line 2643...
-
 
2643
 
-
 
2644
---------------------- Константы для регистров: ----------------------
2360
 
2645
  eax - SF_PCI_BIOS (57)
2361
======================================================================
2646
======================================================================
2362
=========== Функция 60 - Inter Process Communication (IPC). ==========
2647
=========== Функция 60 - Inter Process Communication (IPC). ==========
2363
======================================================================
2648
======================================================================
2364
IPC применяется для посылок сообщений от одного процесса/потока
2649
IPC применяется для посылок сообщений от одного процесса/потока
Line 2407... Line 2692...
2407
  * eax = 4 - процесса/потока с таким PID не существует
2692
  * eax = 4 - процесса/потока с таким PID не существует
2408
Замечания:
2693
Замечания:
2409
  * Система сразу после записи IPC-сообщения в буфер посылает
2694
  * Система сразу после записи IPC-сообщения в буфер посылает
2410
    потоку-приёмнику событие с кодом 7 (см. коды событий).
2695
    потоку-приёмнику событие с кодом 7 (см. коды событий).
Line -... Line 2696...
-
 
2696
 
-
 
2697
---------------------- Константы для регистров: ----------------------
-
 
2698
  eax - SF_IPC (60)
2411
 
2699
  ebx - SSF_SET_AREA (1), SSF_SEND_MESSAGE (2)
2412
======================================================================
2700
======================================================================
2413
=== Функция 61 - получить параметры для прямого доступа к графике. ===
2701
=== Функция 61 - получить параметры для прямого доступа к графике. ===
2414
======================================================================
2702
======================================================================
2415
Программе доступны данные графического экрана (область памяти, которая
2703
Программе доступны данные графического экрана (область памяти, которая
Line 2469... Line 2757...
2469
  * ebx = 3 - номер подфункции
2757
  * ebx = 3 - номер подфункции
2470
Возвращаемое значение:
2758
Возвращаемое значение:
2471
  * eax = число байт, которое занимает одна строка развёртки
2759
  * eax = число байт, которое занимает одна строка развёртки
2472
    (горизонтальная линия на экране)
2760
    (горизонтальная линия на экране)
Line -... Line 2761...
-
 
2761
 
-
 
2762
---------------------- Константы для регистров: ----------------------
-
 
2763
  eax - SF_GET_GRAPHICAL_PARAMS (61)
-
 
2764
  ebx - SSF_SCREEN_SIZE (1), SSF_BITS_PER_PIXEL (2),
2473
 
2765
    SSF_BYTES_PER_LINE (3)
2474
======================================================================
2766
======================================================================
2475
===== Функция 62, подфункция 0 - получить версию PCI-интерфейса. =====
2767
===== Функция 62, подфункция 0 - получить версию PCI-интерфейса. =====
2476
======================================================================
2768
======================================================================
2477
Параметры:
2769
Параметры:
Line 2484... Line 2776...
2484
Замечания:
2776
Замечания:
2485
  * Предварительно должен быть разрешён низкоуровневый доступ к PCI
2777
  * Предварительно должен быть разрешён низкоуровневый доступ к PCI
2486
    для приложений подфункцией 12 функции 21.
2778
    для приложений подфункцией 12 функции 21.
2487
  * Если PCI BIOS не поддерживается, то значение ax неопределено.
2779
  * Если PCI BIOS не поддерживается, то значение ax неопределено.
Line -... Line 2780...
-
 
2780
 
-
 
2781
---------------------- Константы для регистров: ----------------------
-
 
2782
  eax - SF_PCI (62)
2488
 
2783
  ebx - SSF_GET_VERSION (0)
2489
======================================================================
2784
======================================================================
2490
==== Функция 62, подфункция 1 - получить номер последней PCI-шины. ===
2785
==== Функция 62, подфункция 1 - получить номер последней PCI-шины. ===
2491
======================================================================
2786
======================================================================
2492
Параметры:
2787
Параметры:
Line 2498... Line 2793...
2498
Замечания:
2793
Замечания:
2499
  * Предварительно должен быть разрешён низкоуровневый доступ к PCI
2794
  * Предварительно должен быть разрешён низкоуровневый доступ к PCI
2500
    для приложений подфункцией 12 функции 21.
2795
    для приложений подфункцией 12 функции 21.
2501
  * Если PCI BIOS не поддерживается, то значение al неопределено.
2796
  * Если PCI BIOS не поддерживается, то значение al неопределено.
Line -... Line 2797...
-
 
2797
 
-
 
2798
---------------------- Константы для регистров: ----------------------
-
 
2799
  eax - SF_PCI (62)
2502
 
2800
  ebx - SSF_GET_LAST_BUS (1)
2503
======================================================================
2801
======================================================================
2504
====================== Функция 62, подфункция 2 ======================
2802
====================== Функция 62, подфункция 2 ======================
2505
== Получить механизм обращения к конфигурационному пространству PCI. =
2803
== Получить механизм обращения к конфигурационному пространству PCI. =
2506
======================================================================
2804
======================================================================
Line 2516... Line 2814...
2516
  * Механизм обращения выбирается в соответствии
2814
  * Механизм обращения выбирается в соответствии
2517
    с характеристиками оборудования.
2815
    с характеристиками оборудования.
2518
  * Подфункции чтения и записи автоматически работают
2816
  * Подфункции чтения и записи автоматически работают
2519
    с выбранным механизмом.
2817
    с выбранным механизмом.
Line -... Line 2818...
-
 
2818
 
-
 
2819
---------------------- Константы для регистров: ----------------------
-
 
2820
  eax - SF_PCI (62)
2520
 
2821
  ebx - SSF_GET_ADRR_MODE (2)
2521
======================================================================
2822
======================================================================
2522
======== Функция 62, подфункции 4,5,6 - прочитать PCI-регистр. =======
2823
======== Функция 62, подфункции 4,5,6 - прочитать PCI-регистр. =======
2523
======================================================================
2824
======================================================================
2524
Параметры:
2825
Параметры:
Line 2547... Line 2848...
2547
    входит, например, в известный Interrupt List by Ralf Brown
2848
    входит, например, в известный Interrupt List by Ralf Brown
2548
    (http://www.pobox.com/~ralf/files.html,
2849
    (http://www.pobox.com/~ralf/files.html,
2549
    ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/);
2850
    ftp://ftp.cs.cmu.edu/afs/cs/user/ralf/pub/);
2550
    список вторых должен быть указан в документации по устройству.
2851
    список вторых должен быть указан в документации по устройству.
Line -... Line 2852...
-
 
2852
 
-
 
2853
---------------------- Константы для регистров: ----------------------
-
 
2854
  eax - SF_PCI (62)
2551
 
2855
  ebx - SSF_READ_BYTE (4), SSF_READ_WORD (5), SSF_READ_DWORD (6)
2552
======================================================================
2856
======================================================================
2553
======= Функция 62, подфункции 8,9,10 - записать в PCI-регистр. ======
2857
======= Функция 62, подфункции 8,9,10 - записать в PCI-регистр. ======
2554
======================================================================
2858
======================================================================
2555
Параметры:
2859
Параметры:
Line 2577... Line 2881...
2577
  * Некоторые регистры стандартны и существуют для всех устройств,
2881
  * Некоторые регистры стандартны и существуют для всех устройств,
2578
    некоторые определяются конкретным устройством. Список первых
2882
    некоторые определяются конкретным устройством. Список первых
2579
    входит, например, в известный Interrupt List by Ralf Brown;
2883
    входит, например, в известный Interrupt List by Ralf Brown;
2580
    список вторых должен быть указан в документации по устройству.
2884
    список вторых должен быть указан в документации по устройству.
Line -... Line 2885...
-
 
2885
 
-
 
2886
---------------------- Константы для регистров: ----------------------
-
 
2887
  eax - SF_PCI (62)
2581
 
2888
  ebx - SSF_WRITE_BYTE (8), SSF_WRITE_WORD (9), SSF_WRITE_DWORD (10)
2582
======================================================================
2889
======================================================================
2583
================ Функция 63 - работа с доской отладки. ===============
2890
================ Функция 63 - работа с доской отладки. ===============
2584
======================================================================
2891
======================================================================
2585
Доска отладки представляет собой системный буфер (на 4096 байт),
2892
Доска отладки представляет собой системный буфер (на 4096 байт),
Line 2623... Line 2930...
2623
  * ebx = 2 - номер подфункции
2930
  * ebx = 2 - номер подфункции
2624
Возвращаемое значение:
2931
Возвращаемое значение:
2625
  * eax = ebx = 0 - буфер пуст
2932
  * eax = ebx = 0 - буфер пуст
2626
  * eax = байт, ebx = 1 - байт успешно прочитан
2933
  * eax = байт, ebx = 1 - байт успешно прочитан
Line -... Line 2934...
-
 
2934
 
-
 
2935
---------------------- Константы для регистров: ----------------------
-
 
2936
  eax - SF_BOARD (63)
2627
 
2937
  ebx - SSF_DEBUG_WRITE (1), SSF_DEBUG_READ (2)
2628
======================================================================
2938
======================================================================
2629
========== Функция 64 - перераспределить память приложения. ==========
2939
========== Функция 64 - перераспределить память приложения. ==========
2630
======================================================================
2940
======================================================================
2631
Параметры:
2941
Параметры:
Line 2640... Line 2950...
2640
    подфункции 11, 12, 13 функции 68.
2950
    подфункции 11, 12, 13 функции 68.
2641
  * Функция не может использоваться совместно с 68.11, 68.12, 68.13.
2951
  * Функция не может использоваться совместно с 68.11, 68.12, 68.13.
2642
    Вызов функции будет игнорироваться, если приложение создаст
2952
    Вызов функции будет игнорироваться, если приложение создаст
2643
    локальную кучу вызовом 68.11.
2953
    локальную кучу вызовом 68.11.
Line -... Line 2954...
-
 
2954
 
-
 
2955
---------------------- Константы для регистров: ----------------------
2644
 
2956
  eax - SF_MEMORY_RESIZE (64)
2645
======================================================================
2957
======================================================================
2646
========= Функция 65 - вывести изображение с палитрой в окно. ========
2958
========= Функция 65 - вывести изображение с палитрой в окно. ========
2647
======================================================================
2959
======================================================================
2648
Параметры:
2960
Параметры:
Line 2688... Line 3000...
2688
  * Формат изображения с 32 битами на пиксель: аналогично 24, только
3000
  * Формат изображения с 32 битами на пиксель: аналогично 24, только
2689
    есть ещё игнорируемый четвёртый байт.
3001
    есть ещё игнорируемый четвёртый байт.
2690
  * Вызов функции 7 эквивалентен вызову этой функции с параметрами
3002
  * Вызов функции 7 эквивалентен вызову этой функции с параметрами
2691
    esi=24, ebp=0.
3003
    esi=24, ebp=0.
Line -... Line 3004...
-
 
3004
 
-
 
3005
---------------------- Константы для регистров: ----------------------
2692
 
3006
  eax - SF_PUT_IMAGE_EXT (65)
2693
======================================================================
3007
======================================================================
2694
================= Функция 66 - работа с клавиатурой. =================
3008
================= Функция 66 - работа с клавиатурой. =================
2695
======================================================================
3009
======================================================================
2696
Режим ввода влияет на результаты чтения клавиш функцией 2.
3010
Режим ввода влияет на результаты чтения клавиш функцией 2.
Line 2797... Line 3111...
2797
  * функция не возвращает значения
3111
  * функция не возвращает значения
2798
Замечания:
3112
Замечания:
2799
  * Разблокирование результатов ф. 66.6
3113
  * Разблокирование результатов ф. 66.6
2800
  * Для эмуляции мыши через клавиатуру, приложение MOUSEMUL
3114
  * Для эмуляции мыши через клавиатуру, приложение MOUSEMUL
Line -... Line 3115...
-
 
3115
 
-
 
3116
---------------------- Константы для регистров: ----------------------
-
 
3117
  eax - SF_KEYBOARD (66)
-
 
3118
  ebx - SSF_SET_INPUT_MODE (1), SSF_GET_INPUT_MODE (2),
-
 
3119
    SSF_GET_CONTROL_KEYS (3), SSF_SET_SYS_HOTKEY (4),
2801
 
3120
    SSF_DEL_SYS_HOTKEY (5),  SSF_LOCK_INPUT (6), SSF_UNLOCK_INPUT (7)
2802
======================================================================
3121
======================================================================
2803
============ Функция 67 - изменить положение/размеры окна. ===========
3122
============ Функция 67 - изменить положение/размеры окна. ===========
2804
======================================================================
3123
======================================================================
2805
Параметры:
3124
Параметры:
Line 2821... Line 3140...
2821
  * Для окон соответствующих стилей положение и/или размеры могут быть
3140
  * Для окон соответствующих стилей положение и/или размеры могут быть
2822
    изменены пользователем; текущие положение и размеры могут быть
3141
    изменены пользователем; текущие положение и размеры могут быть
2823
    получены вызовом функции 9.
3142
    получены вызовом функции 9.
2824
  * Функция посылает окну событие перерисовки (с кодом 1).
3143
  * Функция посылает окну событие перерисовки (с кодом 1).
Line -... Line 3144...
-
 
3144
 
-
 
3145
---------------------- Константы для регистров: ----------------------
2825
 
3146
  eax - SF_CHANGE_WINDOW (67)
2826
======================================================================
3147
======================================================================
2827
=== Функция 68, подфункция 0 - получить счётчик переключений задач. ==
3148
=== Функция 68, подфункция 0 - получить счётчик переключений задач. ==
2828
======================================================================
3149
======================================================================
2829
Параметры:
3150
Параметры:
2830
  * eax = 68 - номер функции
3151
  * eax = 68 - номер функции
2831
  * ebx = 0 - номер подфункции
3152
  * ebx = 0 - номер подфункции
2832
Возвращаемое значение:
3153
Возвращаемое значение:
2833
  * eax = число переключений задач с момента загрузки системы
3154
  * eax = число переключений задач с момента загрузки системы
Line -... Line 3155...
-
 
3155
    (по модулю 2^32)
-
 
3156
 
-
 
3157
---------------------- Константы для регистров: ----------------------
2834
    (по модулю 2^32)
3158
  eax - SF_SYS_MISC (68)
2835
 
3159
  ebx - SSF_GET_TASK_SWITCH_COUNT (0)
2836
======================================================================
3160
======================================================================
2837
====================== Функция 68, подфункция 1 ======================
3161
====================== Функция 68, подфункция 1 ======================
2838
============ Переключиться на следующий поток выполнения. ============
3162
============ Переключиться на следующий поток выполнения. ============
Line 2846... Line 3170...
2846
  * eax = 68 - номер функции
3170
  * eax = 68 - номер функции
2847
  * ebx = 1 - номер подфункции
3171
  * ebx = 1 - номер подфункции
2848
Возвращаемое значение:
3172
Возвращаемое значение:
2849
  * функция не возвращает значения
3173
  * функция не возвращает значения
Line -... Line 3174...
-
 
3174
 
-
 
3175
---------------------- Константы для регистров: ----------------------
-
 
3176
  eax - SF_SYS_MISC (68)
2850
 
3177
  ebx - SSF_SWITCH_TASK (1)
2851
======================================================================
3178
======================================================================
2852
=============== Функция 68, подфункция 2 - кэш + rdpmc. ==============
3179
=============== Функция 68, подфункция 2 - кэш + rdpmc. ==============
2853
======================================================================
3180
======================================================================
2854
Параметры:
3181
Параметры:
Line 2868... Line 3195...
2868
    * eax = 0 - кэш включён
3195
    * eax = 0 - кэш включён
2869
    * eax <> 0 - кэш выключен
3196
    * eax <> 0 - кэш выключен
2870
  * для ecx=2 и ecx=3:
3197
  * для ecx=2 и ecx=3:
2871
    * функция не возвращает значения
3198
    * функция не возвращает значения
Line -... Line 3199...
-
 
3199
 
-
 
3200
---------------------- Константы для регистров: ----------------------
-
 
3201
  eax - SF_SYS_MISC (68)
-
 
3202
  ebx - SSF_PERFORMANCE (2)
-
 
3203
  ecx - SSSF_ALLOW_RDPMC (0), SSSF_CACHE_STATUS (1),
2872
 
3204
    SSSF_CACHE_ON (2), SSSF_CACHE_OFF (3)
2873
======================================================================
3205
======================================================================
2874
========== Функция 68, подфункция 3 - прочитать MSR-регистр. =========
3206
========== Функция 68, подфункция 3 - прочитать MSR-регистр. =========
2875
======================================================================
3207
======================================================================
2876
MSR = Model Specific Register; полный список MSR-регистров процессора
3208
MSR = Model Specific Register; полный список MSR-регистров процессора
Line 2889... Line 3221...
2889
    процессора MSR повлечёт исключение в ядре, которое прибьёт поток.
3221
    процессора MSR повлечёт исключение в ядре, которое прибьёт поток.
2890
  * Предварительно следует определить, поддерживаются ли MSR в целом,
3222
  * Предварительно следует определить, поддерживаются ли MSR в целом,
2891
    командой cpuid. Иначе возникнет уже другое исключение в ядре,
3223
    командой cpuid. Иначе возникнет уже другое исключение в ядре,
2892
    которое всё равно прибьёт поток.
3224
    которое всё равно прибьёт поток.
Line -... Line 3225...
-
 
3225
 
-
 
3226
---------------------- Константы для регистров: ----------------------
-
 
3227
  eax - SF_SYS_MISC (68)
2893
 
3228
  ebx - SSF_READ_MSR (3)
2894
======================================================================
3229
======================================================================
2895
========= Функция 68, подфункция 4 - записать в MSR-регистр. =========
3230
========= Функция 68, подфункция 4 - записать в MSR-регистр. =========
2896
======================================================================
3231
======================================================================
2897
MSR = Model Specific Register; полный список MSR-регистров процессора
3232
MSR = Model Specific Register; полный список MSR-регистров процессора
Line 2911... Line 3246...
2911
    процессора MSR повлечёт исключение в ядре, которое прибьёт поток.
3246
    процессора MSR повлечёт исключение в ядре, которое прибьёт поток.
2912
  * Предварительно следует определить, поддерживаются ли MSR в целом,
3247
  * Предварительно следует определить, поддерживаются ли MSR в целом,
2913
    командой cpuid. Иначе возникнет уже другое исключение в ядре,
3248
    командой cpuid. Иначе возникнет уже другое исключение в ядре,
2914
    которое всё равно прибьёт поток.
3249
    которое всё равно прибьёт поток.
Line -... Line 3250...
-
 
3250
 
-
 
3251
---------------------- Константы для регистров: ----------------------
-
 
3252
  eax - SF_SYS_MISC (68)
2915
 
3253
  ebx - SSF_WRITE_MSR (4)
2916
======================================================================
3254
======================================================================
2917
===== Функция 68, подфункция 11 - инициализировать кучу процесса. ====
3255
===== Функция 68, подфункция 11 - инициализировать кучу процесса. ====
2918
======================================================================
3256
======================================================================
2919
Параметры:
3257
Параметры:
Line 2928... Line 3266...
2928
    Размер кучи равен размеру всей свободной памяти приложения.
3266
    Размер кучи равен размеру всей свободной памяти приложения.
2929
  * При повторном вызове функции тем же процессом функция вернёт
3267
  * При повторном вызове функции тем же процессом функция вернёт
2930
    размер существующей кучи.
3268
    размер существующей кучи.
2931
  * После создания кучи вызовы функции 64 игнорируются.
3269
  * После создания кучи вызовы функции 64 игнорируются.
Line -... Line 3270...
-
 
3270
 
-
 
3271
---------------------- Константы для регистров: ----------------------
-
 
3272
  eax - SF_SYS_MISC (68)
2932
 
3273
  ebx - SSF_HEAP_INIT (11)
2933
======================================================================
3274
======================================================================
2934
========== Функция 68, подфункция 12 - выделить блок памяти. =========
3275
========== Функция 68, подфункция 12 - выделить блок памяти. =========
2935
======================================================================
3276
======================================================================
2936
Параметры:
3277
Параметры:
Line 2943... Line 3284...
2943
  * Предварительно следует инициализировать кучу процесса вызовом
3284
  * Предварительно следует инициализировать кучу процесса вызовом
2944
    подфункции 11.
3285
    подфункции 11.
2945
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
3286
  * Функция выделяет целое число страниц (4 Кб) так, что фактический
2946
    размер выделенного блока больше или равен запрошенному.
3287
    размер выделенного блока больше или равен запрошенному.
Line -... Line 3288...
-
 
3288
 
-
 
3289
---------------------- Константы для регистров: ----------------------
-
 
3290
  eax - SF_SYS_MISC (68)
2947
 
3291
  ebx - SSF_MEM_ALLOC (12)
2948
======================================================================
3292
======================================================================
2949
========= Функция 68, подфункция 13 - освободить блок памяти. ========
3293
========= Функция 68, подфункция 13 - освободить блок памяти. ========
2950
======================================================================
3294
======================================================================
2951
Параметры:
3295
Параметры:
Line 2957... Line 3301...
2957
  * eax = 0 - неудача
3301
  * eax = 0 - неудача
2958
Замечания:
3302
Замечания:
2959
  * Блок памяти должен быть ранее выделен подфункцией 12
3303
  * Блок памяти должен быть ранее выделен подфункцией 12
2960
    или подфункцией 20.
3304
    или подфункцией 20.
Line -... Line 3305...
-
 
3305
 
-
 
3306
---------------------- Константы для регистров: ----------------------
-
 
3307
  eax - SF_SYS_MISC (68)
2961
 
3308
  ebx - SSF_MEM_FREE (13)
2962
======================================================================
3309
======================================================================
2963
====================== Функция 68, подфункция 14 =====================
3310
====================== Функция 68, подфункция 14 =====================
2964
====== Ожидать получения сигнала от других приложений/драйверов. =====
3311
====== Ожидать получения сигнала от других приложений/драйверов. =====
2965
======================================================================
3312
======================================================================
Line 2972... Line 3319...
2972
  * буфер, на который указывает ecx, содержит следующую информацию:
3319
  * буфер, на который указывает ecx, содержит следующую информацию:
2973
    * +0: dword: идентификатор последующих данных сигнала
3320
    * +0: dword: идентификатор последующих данных сигнала
2974
    * +4: данные принятого сигнала (20 байт), формат которых
3321
    * +4: данные принятого сигнала (20 байт), формат которых
2975
          определяется первым dword-ом
3322
          определяется первым dword-ом
Line -... Line 3323...
-
 
3323
 
-
 
3324
---------------------- Константы для регистров: ----------------------
-
 
3325
  eax - SF_SYS_MISC (68)
2976
 
3326
  ebx - SSF_WAIT_SIGNAL (14)
2977
======================================================================
3327
======================================================================
2978
=========== Функция 68, подфункция 16 - загрузить драйвер. ===========
3328
=========== Функция 68, подфункция 16 - загрузить драйвер. ===========
2979
======================================================================
3329
======================================================================
2980
Параметры:
3330
Параметры:
Line 2990... Line 3340...
2990
  * Имя драйвера чувствительно к регистру символов.
3340
  * Имя драйвера чувствительно к регистру символов.
2991
    Максимальная длина имени - 16 символов, включая завершающий
3341
    Максимальная длина имени - 16 символов, включая завершающий
2992
    нулевой символ, остальные символы игнорируются.
3342
    нулевой символ, остальные символы игнорируются.
2993
  * Драйвер с именем ABC загружается из файла /rd/1/drivers/ABC.obj.
3343
  * Драйвер с именем ABC загружается из файла /rd/1/drivers/ABC.obj.
Line -... Line 3344...
-
 
3344
 
-
 
3345
---------------------- Константы для регистров: ----------------------
-
 
3346
  eax - SF_SYS_MISC (68)
2994
 
3347
  ebx - SSF_LOAD_DRIVER (16)
2995
======================================================================
3348
======================================================================
2996
========== Функция 68, подфункция 17 - управление драйвером. =========
3349
========== Функция 68, подфункция 17 - управление драйвером. =========
2997
======================================================================
3350
======================================================================
2998
Параметры:
3351
Параметры:
Line 3010... Line 3363...
3010
Замечания:
3363
Замечания:
3011
  * Коды функций и структура входных/выходных данных
3364
  * Коды функций и структура входных/выходных данных
3012
    определяются драйвером.
3365
    определяются драйвером.
3013
  * Предварительно должен быть получен хэндл драйвера подфункцией 16.
3366
  * Предварительно должен быть получен хэндл драйвера подфункцией 16.
Line -... Line 3367...
-
 
3367
 
-
 
3368
---------------------- Константы для регистров: ----------------------
-
 
3369
  eax - SF_SYS_MISC (68)
3014
 
3370
  ebx - SSF_CONTROL_DRIVER (17)
3015
======================================================================
3371
======================================================================
3016
============= Функция 68, подфункция 19 - загрузить DLL. =============
3372
============= Функция 68, подфункция 19 - загрузить DLL. =============
3017
======================================================================
3373
======================================================================
3018
Параметры:
3374
Параметры:
Line 3025... Line 3381...
3025
Замечания:
3381
Замечания:
3026
  * Таблица экспорта представляет собой массив структур по 2 dword'а,
3382
  * Таблица экспорта представляет собой массив структур по 2 dword'а,
3027
    заканчивающийся нулём. Первый dword в структуре является
3383
    заканчивающийся нулём. Первый dword в структуре является
3028
    указателем на имя функции, второй содержит адрес функции.
3384
    указателем на имя функции, второй содержит адрес функции.
Line -... Line 3385...
-
 
3385
 
-
 
3386
---------------------- Константы для регистров: ----------------------
-
 
3387
  eax - SF_SYS_MISC (68)
3029
 
3388
  ebx - SSF_LOAD_DLL (19)
3030
======================================================================
3389
======================================================================
3031
====== Функция 68, подфункция 20 - перераспределить блок памяти. =====
3390
====== Функция 68, подфункция 20 - перераспределить блок памяти. =====
3032
======================================================================
3391
======================================================================
3033
Параметры:
3392
Параметры:
Line 3049... Line 3408...
3049
  * Если ecx=0, то функция освобождает блок памяти по адресу edx и
3408
  * Если ecx=0, то функция освобождает блок памяти по адресу edx и
3050
    возвращает 0.
3409
    возвращает 0.
3051
  * Содержимое памяти вплоть до наименьшего из старого и нового
3410
  * Содержимое памяти вплоть до наименьшего из старого и нового
3052
    размеров сохраняется.
3411
    размеров сохраняется.
Line -... Line 3412...
-
 
3412
 
-
 
3413
---------------------- Константы для регистров: ----------------------
-
 
3414
  eax - SF_SYS_MISC (68)
3053
 
3415
  ebx - SSF_MEM_REALLOC (20)
3054
======================================================================
3416
======================================================================
3055
========= Функция 68, подфункция 21 - загрузить драйвер PE. ==========
3417
========= Функция 68, подфункция 21 - загрузить драйвер PE. ==========
3056
======================================================================
3418
======================================================================
3057
Параметры:
3419
Параметры:
Line 3064... Line 3426...
3064
  * иначе eax = хэндл драйвера
3426
  * иначе eax = хэндл драйвера
3065
Замечания:
3427
Замечания:
3066
  * Если драйвер ещё не загружен, он загружается;
3428
  * Если драйвер ещё не загружен, он загружается;
3067
    если драйвер уже загружен, ничего не меняется.
3429
    если драйвер уже загружен, ничего не меняется.
Line -... Line 3430...
-
 
3430
 
-
 
3431
---------------------- Константы для регистров: ----------------------
-
 
3432
  eax - SF_SYS_MISC (68)
3068
 
3433
  ebx - SSF_LOAD_DRIVER_PE (21)
3069
======================================================================
3434
======================================================================
3070
=== Функция 68, подфункция 22 - открыть именованную область памяти. ==
3435
=== Функция 68, подфункция 22 - открыть именованную область памяти. ==
3071
======================================================================
3436
======================================================================
3072
Параметры:
3437
Параметры:
Line 3103... Line 3468...
3103
    максимальные права доступа для остальных процессов. Попытка
3468
    максимальные права доступа для остальных процессов. Попытка
3104
    открытия другим потоком с неразрешёнными правами провалится
3469
    открытия другим потоком с неразрешёнными правами провалится
3105
    с кодом ошибки E_ACCESS.
3470
    с кодом ошибки E_ACCESS.
3106
  * Процесс, создавший область, всегда имеет доступ на запись.
3471
  * Процесс, создавший область, всегда имеет доступ на запись.
Line -... Line 3472...
-
 
3472
 
-
 
3473
---------------------- Константы для регистров: ----------------------
-
 
3474
  eax - SF_SYS_MISC (68)
3107
 
3475
  ebx - SSF_MEM_OPEN (22)
3108
======================================================================
3476
======================================================================
3109
=== Функция 68, подфункция 23 - закрыть именованную область памяти. ==
3477
=== Функция 68, подфункция 23 - закрыть именованную область памяти. ==
3110
======================================================================
3478
======================================================================
3111
Параметры:
3479
Параметры:
Line 3119... Line 3487...
3119
    и высвобождением физической памяти), когда её закроют
3487
    и высвобождением физической памяти), когда её закроют
3120
    все открывшие потоки.
3488
    все открывшие потоки.
3121
  * При завершении потока освобождаются все открытые им
3489
  * При завершении потока освобождаются все открытые им
3122
    области памяти.
3490
    области памяти.
Line -... Line 3491...
-
 
3491
 
-
 
3492
---------------------- Константы для регистров: ----------------------
-
 
3493
  eax - SF_SYS_MISC (68)
3123
 
3494
  ebx - SSF_MEM_CLOSE (23)
3124
======================================================================
3495
======================================================================
3125
==== Функция 68, подфункция 24 - установить обработчик исключений. ===
3496
==== Функция 68, подфункция 24 - установить обработчик исключений. ===
3126
======================================================================
3497
======================================================================
3127
Параметры:
3498
Параметры:
Line 3149... Line 3520...
3149
  * После завершения критических действий в обработчике пользователя
3520
  * После завершения критических действий в обработчике пользователя
3150
    восстановление бита маски данного исключения можно сделать
3521
    восстановление бита маски данного исключения можно сделать
3151
    подфункцией 25. Сброс флагов исключений в модулях FPU и XMM также
3522
    подфункцией 25. Сброс флагов исключений в модулях FPU и XMM также
3152
    возлагается на обработчик пользователя.
3523
    возлагается на обработчик пользователя.
Line -... Line 3524...
-
 
3524
 
-
 
3525
---------------------- Константы для регистров: ----------------------
-
 
3526
  eax - SF_SYS_MISC (68)
3153
 
3527
  ebx - SSF_SET_EXCEPTION_HANDLER (24)
3154
======================================================================
3528
======================================================================
3155
= Функция 68, подфункция 25 - изменить состояние активности сигнала. =
3529
= Функция 68, подфункция 25 - изменить состояние активности сигнала. =
3156
======================================================================
3530
======================================================================
3157
Параметры:
3531
Параметры:
Line 3165... Line 3539...
3165
Замечания:
3539
Замечания:
3166
  * В текущей реализации изменяется только маска пользовательского
3540
  * В текущей реализации изменяется только маска пользовательского
3167
    обработчика исключений, установленного подфункцией 24. При этом
3541
    обработчика исключений, установленного подфункцией 24. При этом
3168
    номер сигнала соответствует номеру исключения.
3542
    номер сигнала соответствует номеру исключения.
Line -... Line 3543...
-
 
3543
 
-
 
3544
---------------------- Константы для регистров: ----------------------
-
 
3545
  eax - SF_SYS_MISC (68)
3169
 
3546
  ebx - SSF_SET_EXCEPTION_STATE (25)
3170
======================================================================
3547
======================================================================
3171
= Функция 68, подфункция 26 - освободить страницы памяти ============
3548
= Функция 68, подфункция 26 - освободить страницы памяти ============
3172
======================================================================
3549
======================================================================
3173
Параметры:
3550
Параметры:
Line 3178... Line 3555...
3178
  * esi = размер высвобождаемого блока памяти, в байтах
3555
  * esi = размер высвобождаемого блока памяти, в байтах
3179
Примечания:
3556
Примечания:
3180
  * функция освобождает страницы с ecx+edx по ecx+edx+esi
3557
  * функция освобождает страницы с ecx+edx по ecx+edx+esi
3181
    и устанавливает виртуальную память в зарезервированное состояние.
3558
    и устанавливает виртуальную память в зарезервированное состояние.
Line -... Line 3559...
-
 
3559
 
-
 
3560
---------------------- Константы для регистров: ----------------------
-
 
3561
  eax - SF_SYS_MISC (68)
3182
 
3562
  ebx - SSF_MEM_FREE_EXT (26)
3183
======================================================================
3563
======================================================================
3184
= Функция 68, подфункция 27 - загрузить файл ===================
3564
= Функция 68, подфункция 27 - загрузить файл ===================
3185
======================================================================
3565
======================================================================
3186
Параметры:
3566
Параметры:
Line 3191... Line 3571...
3191
  * eax = указатель на загруженный файл или 0
3571
  * eax = указатель на загруженный файл или 0
3192
  * edx = размер загруженного файла или 0
3572
  * edx = размер загруженного файла или 0
3193
Примечания:
3573
Примечания:
3194
  * функция загружает и, при необходимости, распаковывает файл (kunpack)
3574
  * функция загружает и, при необходимости, распаковывает файл (kunpack)
Line -... Line 3575...
-
 
3575
 
-
 
3576
---------------------- Константы для регистров: ----------------------
-
 
3577
  eax - SF_SYS_MISC (68)
3195
 
3578
  ebx - SSF_LOAD_FILE (27)
3196
======================================================================
3579
======================================================================
3197
======================== Функция 69 - отладка. =======================
3580
======================== Функция 69 - отладка. =======================
3198
======================================================================
3581
======================================================================
3199
Процесс может загрузить другой процесс как отлаживаемый установкой
3582
Процесс может загрузить другой процесс как отлаживаемый установкой
Line 3239... Line 3622...
3239
  * подфункция 6 - прочитать из памяти отлаживаемого процесса
3622
  * подфункция 6 - прочитать из памяти отлаживаемого процесса
3240
  * подфункция 7 - записать в память отлаживаемого процесса
3623
  * подфункция 7 - записать в память отлаживаемого процесса
3241
  * подфункция 8 - завершить отлаживаемый поток
3624
  * подфункция 8 - завершить отлаживаемый поток
3242
  * подфункция 9 - установить/снять аппаратную точку останова
3625
  * подфункция 9 - установить/снять аппаратную точку останова
Line -... Line 3626...
-
 
3626
 
-
 
3627
---------------------- Константы для регистров: ----------------------
-
 
3628
  eax - SF_DEBUG (69)
-
 
3629
  ebx - SSF_SET_MESSAGE_AREA (0), SSF_GET_REGISTERS (1),
-
 
3630
    SSF_SET_REGISTERS (2), SSF_DETACH (3), SSF_SUSPEND (4),
-
 
3631
    SSF_RESUME (5), SSF_READ_MEMORY (6), SSF_WRITE_MEMORY (7),
3243
 
3632
    SSF_TERMINATE (8), SSF_DEFINE_BREAKPOINT (9)
3244
======================================================================
3633
======================================================================
3245
====================== Функция 69, подфункция 0 ======================
3634
====================== Функция 69, подфункция 0 ======================
3246
========= Определить область данных для отладочных сообщений. ========
3635
========= Определить область данных для отладочных сообщений. ========
3247
======================================================================
3636
======================================================================
Line 3262... Line 3651...
3262
    блокировки/разблокировки
3651
    блокировки/разблокировки
3263
    	neg	[bufsize]
3652
    	neg	[bufsize]
3264
  * Данные в буфере трактуются как массив элементов переменной длины -
3653
  * Данные в буфере трактуются как массив элементов переменной длины -
3265
    сообщений. Формат сообщения указан в общем описании.
3654
    сообщений. Формат сообщения указан в общем описании.
Line -... Line 3655...
-
 
3655
 
-
 
3656
---------------------- Константы для регистров: ----------------------
-
 
3657
  eax - SF_DEBUG (69)
3266
 
3658
  ebx - SSF_SET_MESSAGE_AREA (0)
3267
======================================================================
3659
======================================================================
3268
====================== Функция 69, подфункция 1 ======================
3660
====================== Функция 69, подфункция 1 ======================
3269
========= Получить состояние регистров отлаживаемого потока. =========
3661
========= Получить состояние регистров отлаживаемого потока. =========
3270
======================================================================
3662
======================================================================
Line 3291... Line 3683...
3291
  * Если поток выполняет код 0-кольца, возвращается
3683
  * Если поток выполняет код 0-кольца, возвращается
3292
    состояние регистров 3-кольца.
3684
    состояние регистров 3-кольца.
3293
  * Процесс должен быть загружен для отладки (как указано в
3685
  * Процесс должен быть загружен для отладки (как указано в
3294
    общем описании).
3686
    общем описании).
Line -... Line 3687...
-
 
3687
 
-
 
3688
---------------------- Константы для регистров: ----------------------
-
 
3689
  eax - SF_DEBUG (69)
3295
 
3690
  ebx - SSF_GET_REGISTERS (1)
3296
======================================================================
3691
======================================================================
3297
====================== Функция 69, подфункция 2 ======================
3692
====================== Функция 69, подфункция 2 ======================
3298
======== Установить состояние регистров отлаживаемого потока. ========
3693
======== Установить состояние регистров отлаживаемого потока. ========
3299
======================================================================
3694
======================================================================
Line 3310... Line 3705...
3310
  * Если поток выполняет код 0-кольца, устанавливается
3705
  * Если поток выполняет код 0-кольца, устанавливается
3311
    состояние регистров 3-кольца.
3706
    состояние регистров 3-кольца.
3312
  * Процесс должен быть загружен для отладки (как указано в
3707
  * Процесс должен быть загружен для отладки (как указано в
3313
    общем описании).
3708
    общем описании).
Line -... Line 3709...
-
 
3709
 
-
 
3710
---------------------- Константы для регистров: ----------------------
-
 
3711
  eax - SF_DEBUG (69)
3314
 
3712
  ebx - SSF_SET_REGISTERS (2)
3315
======================================================================
3713
======================================================================
3316
== Функция 69, подфункция 3 - отключиться от отлаживаемого процесса. =
3714
== Функция 69, подфункция 3 - отключиться от отлаживаемого процесса. =
3317
======================================================================
3715
======================================================================
3318
Параметры:
3716
Параметры:
Line 3322... Line 3720...
3322
Возвращаемое значение:
3720
Возвращаемое значение:
3323
  * функция не возвращает значения
3721
  * функция не возвращает значения
3324
Замечания:
3722
Замечания:
3325
  * Если процесс был приостановлен, он возобновляет выполнение.
3723
  * Если процесс был приостановлен, он возобновляет выполнение.
Line -... Line 3724...
-
 
3724
 
-
 
3725
---------------------- Константы для регистров: ----------------------
-
 
3726
  eax - SF_DEBUG (69)
3326
 
3727
  ebx - SSF_DETACH (3)
3327
======================================================================
3728
======================================================================
3328
==== Функция 69, подфункция 4 - приостановить отлаживаемый поток. ====
3729
==== Функция 69, подфункция 4 - приостановить отлаживаемый поток. ====
3329
======================================================================
3730
======================================================================
3330
Параметры:
3731
Параметры:
Line 3335... Line 3736...
3335
  * функция не возвращает значения
3736
  * функция не возвращает значения
3336
Замечания:
3737
Замечания:
3337
  * Процесс должен быть загружен для отладки (как указано в
3738
  * Процесс должен быть загружен для отладки (как указано в
3338
    общем описании).
3739
    общем описании).
Line -... Line 3740...
-
 
3740
 
-
 
3741
---------------------- Константы для регистров: ----------------------
-
 
3742
  eax - SF_DEBUG (69)
3339
 
3743
  ebx - SSF_SUSPEND (4)
3340
======================================================================
3744
======================================================================
3341
====================== Функция 69, подфункция 5 ======================
3745
====================== Функция 69, подфункция 5 ======================
3342
============ Возобновить выполнение отлаживаемого потока. ============
3746
============ Возобновить выполнение отлаживаемого потока. ============
3343
======================================================================
3747
======================================================================
Line 3349... Line 3753...
3349
  * функция не возвращает значения
3753
  * функция не возвращает значения
3350
Замечания:
3754
Замечания:
3351
  * Процесс должен быть загружен для отладки (как указано в
3755
  * Процесс должен быть загружен для отладки (как указано в
3352
    общем описании).
3756
    общем описании).
Line -... Line 3757...
-
 
3757
 
-
 
3758
---------------------- Константы для регистров: ----------------------
-
 
3759
  eax - SF_DEBUG (69)
3353
 
3760
  ebx - SSF_RESUME (5)
3354
======================================================================
3761
======================================================================
3355
====================== Функция 69, подфункция 6 ======================
3762
====================== Функция 69, подфункция 6 ======================
3356
============= Прочитать из памяти отлаживаемого процесса. ============
3763
============= Прочитать из памяти отлаживаемого процесса. ============
3357
======================================================================
3764
======================================================================
Line 3368... Line 3775...
3368
    если в esi слишком большое значение)
3775
    если в esi слишком большое значение)
3369
Замечания:
3776
Замечания:
3370
  * Процесс должен быть загружен для отладки (как указано в
3777
  * Процесс должен быть загружен для отладки (как указано в
3371
    общем описании).
3778
    общем описании).
Line -... Line 3779...
-
 
3779
 
-
 
3780
---------------------- Константы для регистров: ----------------------
-
 
3781
  eax - SF_DEBUG (69)
3372
 
3782
  ebx - SSF_READ_MEMORY (6)
3373
======================================================================
3783
======================================================================
3374
 Функция 69, подфункция 7 - записать в память отлаживаемого процесса.
3784
 Функция 69, подфункция 7 - записать в память отлаживаемого процесса.
3375
======================================================================
3785
======================================================================
3376
Параметры:
3786
Параметры:
Line 3386... Line 3796...
3386
    если в esi слишком большое значение)
3796
    если в esi слишком большое значение)
3387
Замечания:
3797
Замечания:
3388
  * Процесс должен быть загружен для отладки (как указано в
3798
  * Процесс должен быть загружен для отладки (как указано в
3389
    общем описании).
3799
    общем описании).
Line -... Line 3800...
-
 
3800
 
-
 
3801
---------------------- Константы для регистров: ----------------------
-
 
3802
  eax - SF_DEBUG (69)
3390
 
3803
  ebx - SSF_WRITE_MEMORY (7)
3391
======================================================================
3804
======================================================================
3392
====== Функция 69, подфункция 8 - завершить отлаживаемый поток. ======
3805
====== Функция 69, подфункция 8 - завершить отлаживаемый поток. ======
3393
======================================================================
3806
======================================================================
3394
Параметры:
3807
Параметры:
Line 3402... Line 3815...
3402
    общем описании).
3815
    общем описании).
3403
  * Функция аналогична подфункции 2 функции 18 с двумя отличиями:
3816
  * Функция аналогична подфункции 2 функции 18 с двумя отличиями:
3404
    требуется выполнение первого замечания и принимается PID,
3817
    требуется выполнение первого замечания и принимается PID,
3405
    а не номер слота.
3818
    а не номер слота.
Line -... Line 3819...
-
 
3819
 
-
 
3820
---------------------- Константы для регистров: ----------------------
-
 
3821
  eax - SF_DEBUG (69)
3406
 
3822
  ebx - SSF_TERMINATE (8)
3407
======================================================================
3823
======================================================================
3408
====================== Функция 69, подфункция 9 ======================
3824
====================== Функция 69, подфункция 9 ======================
3409
============= Установить/снять аппаратную точку останова. ============
3825
============= Установить/снять аппаратную точку останова. ============
3410
======================================================================
3826
======================================================================
Line 3445... Line 3861...
3445
  * Срабатывание точки останова заключается в генерировании
3861
  * Срабатывание точки останова заключается в генерировании
3446
    отладочного исключения #DB, о котором система сообщает отладчику.
3862
    отладочного исключения #DB, о котором система сообщает отладчику.
3447
  * Точка останова на запись и чтение/запись срабатывает после
3863
  * Точка останова на запись и чтение/запись срабатывает после
3448
    выполнения вызвавшей её инструкции.
3864
    выполнения вызвавшей её инструкции.
Line -... Line 3865...
-
 
3865
 
-
 
3866
---------------------- Константы для регистров: ----------------------
-
 
3867
  eax - SF_DEBUG (69)
3449
 
3868
  ebx - SSF_DEFINE_BREAKPOINT (9)
3450
======================================================================
3869
======================================================================
3451
= Функция 70 - работа с файловой системой с поддержкой длинных имён. =
3870
= Функция 70 - работа с файловой системой с поддержкой длинных имён. =
3452
======================================================================
3871
======================================================================
3453
Параметры:
3872
Параметры:
Line 3515... Line 3934...
3515
(CD и DVD) производится блокировка ручного управления механизмом
3934
(CD и DVD) производится блокировка ручного управления механизмом
3516
лотка. Это связано с кэшированием данных, полученных от привода.
3935
лотка. Это связано с кэшированием данных, полученных от привода.
3517
Разблокировка осуществляется при обращении подфункции 4 функции 24
3936
Разблокировка осуществляется при обращении подфункции 4 функции 24
3518
к соответствующему устройству.
3937
к соответствующему устройству.
Line -... Line 3938...
-
 
3938
 
-
 
3939
---------------------- Константы для регистров: ----------------------
-
 
3940
  eax - SF_FILE (70)
-
 
3941
 [ebx] - SSF_READ_FILE (0), SSF_READ_FOLDER (1), SSF_CREATE_FILE (2),
-
 
3942
    SSF_WRITE_FILE (3), SSF_SET_END (4), SSF_GET_INFO (5),
-
 
3943
    SSF_SET_INFO (6), SSF_START_APP (7), SSF_DELETE (8),
3519
 
3944
    SSF_CREATE_FOLDER (9)
3520
======================================================================
3945
======================================================================
3521
= Функция 70, подфункция 0 - чтение файла с поддержкой длинных имён. =
3946
= Функция 70, подфункция 0 - чтение файла с поддержкой длинных имён. =
3522
======================================================================
3947
======================================================================
3523
Параметры:
3948
Параметры:
Line 3543... Line 3968...
3543
    блок, то функция прочитает, сколько сможет, после чего вернёт
3968
    блок, то функция прочитает, сколько сможет, после чего вернёт
3544
    eax=6 (EOF).
3969
    eax=6 (EOF).
3545
  * Функция не позволяет читать папки
3970
  * Функция не позволяет читать папки
3546
    (вернётся eax=10, access denied).
3971
    (вернётся eax=10, access denied).
Line -... Line 3972...
-
 
3972
 
-
 
3973
---------------------- Константы для регистров: ----------------------
-
 
3974
  eax - SF_FILE (70)
3547
 
3975
 [ebx] - SSF_READ_FILE (0)
3548
======================================================================
3976
======================================================================
3549
= Функция 70, подфункция 1 - чтение папки с поддержкой длинных имён. =
3977
= Функция 70, подфункция 1 - чтение папки с поддержкой длинных имён. =
3550
======================================================================
3978
======================================================================
3551
Параметры:
3979
Параметры:
Line 3642... Line 4070...
3642
  * Функция позволяет также читать виртуальные папки "/", "/rd",
4070
  * Функция позволяет также читать виртуальные папки "/", "/rd",
3643
    "/fd", "/hd[n]", при этом атрибуты подпапок полагаются равными
4071
    "/fd", "/hd[n]", при этом атрибуты подпапок полагаются равными
3644
    0x10, а времена и даты обнулены. Альтернативный способ получения
4072
    0x10, а времена и даты обнулены. Альтернативный способ получения
3645
    информации об оборудовании - подфункция 11 функции 18.
4073
    информации об оборудовании - подфункция 11 функции 18.
Line -... Line 4074...
-
 
4074
 
-
 
4075
---------------------- Константы для регистров: ----------------------
-
 
4076
  eax - SF_FILE (70)
3646
 
4077
 [ebx] - SSF_READ_FOLDER (1)
3647
======================================================================
4078
======================================================================
3648
====================== Функция 70, подфункция 2 ======================
4079
====================== Функция 70, подфункция 2 ======================
3649
======== Создание/перезапись файла с поддержкой длинных имён. ========
4080
======== Создание/перезапись файла с поддержкой длинных имён. ========
3650
======================================================================
4081
======================================================================
Line 3670... Line 4101...
3670
    существовал, то перезаписывается.
4101
    существовал, то перезаписывается.
3671
  * Если свободного места на диске недостаточно, то функция запишет,
4102
  * Если свободного места на диске недостаточно, то функция запишет,
3672
    сколько сможет, после чего вернёт код ошибки 8.
4103
    сколько сможет, после чего вернёт код ошибки 8.
3673
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4104
  * Функция не поддерживается для CD (вернётся код ошибки 2).
Line -... Line 4105...
-
 
4105
 
-
 
4106
---------------------- Константы для регистров: ----------------------
-
 
4107
  eax - SF_FILE (70)
3674
 
4108
 [ebx] - SSF_CREATE_FILE (2)
3675
======================================================================
4109
======================================================================
3676
====================== Функция 70, подфункция 3 ======================
4110
====================== Функция 70, подфункция 3 ======================
3677
======== Запись в существующий файл с поддержкой длинных имён. =======
4111
======== Запись в существующий файл с поддержкой длинных имён. =======
3678
======================================================================
4112
======================================================================
Line 3700... Line 4134...
3700
  * Если начальная и/или конечная позиция выходит за пределы файла
4134
  * Если начальная и/или конечная позиция выходит за пределы файла
3701
    (за исключением предыдущего случая), файл расширяется до
4135
    (за исключением предыдущего случая), файл расширяется до
3702
    необходимого размера нулевыми символами.
4136
    необходимого размера нулевыми символами.
3703
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4137
  * Функция не поддерживается для CD (вернётся код ошибки 2).
Line -... Line 4138...
-
 
4138
 
-
 
4139
---------------------- Константы для регистров: ----------------------
-
 
4140
  eax - SF_FILE (70)
3704
 
4141
 [ebx] - SSF_WRITE_FILE (3)
3705
======================================================================
4142
======================================================================
3706
========= Функция 70, подфункция 4 - установка размера файла. ========
4143
========= Функция 70, подфункция 4 - установка размера файла. ========
3707
======================================================================
4144
======================================================================
3708
Параметры:
4145
Параметры:
Line 3731... Line 4168...
3731
  * Если свободного места на диске недостаточно для расширения файла,
4168
  * Если свободного места на диске недостаточно для расширения файла,
3732
    то функция расширит насколько возможно, после чего вернёт
4169
    то функция расширит насколько возможно, после чего вернёт
3733
    код ошибки 8.
4170
    код ошибки 8.
3734
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4171
  * Функция не поддерживается для CD (вернётся код ошибки 2).
Line -... Line 4172...
-
 
4172
 
-
 
4173
---------------------- Константы для регистров: ----------------------
-
 
4174
  eax - SF_FILE (70)
3735
 
4175
 [ebx] - SSF_SET_END (4)
3736
======================================================================
4176
======================================================================
3737
=== Функция 70, подфункция 5 - получение информации о файле/папке. ===
4177
=== Функция 70, подфункция 5 - получение информации о файле/папке. ===
3738
======================================================================
4178
======================================================================
3739
Параметры:
4179
Параметры:
Line 3760... Line 4200...
3760
(то есть первые 40 = 0x28 байт).
4200
(то есть первые 40 = 0x28 байт).
3761
Замечания:
4201
Замечания:
3762
  * Функция не поддерживает виртуальные папки типа /, /rd и
4202
  * Функция не поддерживает виртуальные папки типа /, /rd и
3763
    корневые папки типа /rd/1.
4203
    корневые папки типа /rd/1.
Line -... Line 4204...
-
 
4204
 
-
 
4205
---------------------- Константы для регистров: ----------------------
-
 
4206
  eax - SF_FILE (70)
3764
 
4207
 [ebx] - SSF_GET_INFO (5)
3765
======================================================================
4208
======================================================================
3766
===== Функция 70, подфункция 6 - установка атрибутов файла/папки. ====
4209
===== Функция 70, подфункция 6 - установка атрибутов файла/папки. ====
3767
======================================================================
4210
======================================================================
3768
Параметры:
4211
Параметры:
Line 3790... Line 4233...
3790
Замечания:
4233
Замечания:
3791
  * Функция не поддерживает виртуальные папки типа /, /rd и
4234
  * Функция не поддерживает виртуальные папки типа /, /rd и
3792
    корневые папки типа /rd/1.
4235
    корневые папки типа /rd/1.
3793
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4236
  * Функция не поддерживается для CD (вернётся код ошибки 2).
Line -... Line 4237...
-
 
4237
 
-
 
4238
---------------------- Константы для регистров: ----------------------
-
 
4239
  eax - SF_FILE (70)
3794
 
4240
 [ebx] - SSF_SET_INFO (6)
3795
======================================================================
4241
======================================================================
3796
============ Функция 70, подфункция 7 - запуск программы. ============
4242
============ Функция 70, подфункция 7 - запуск программы. ============
3797
======================================================================
4243
======================================================================
3798
Параметры:
4244
Параметры:
Line 3823... Line 4269...
3823
    что меньше.
4269
    что меньше.
3824
  * Если процесс запускается как отлаживаемый, он создаётся
4270
  * Если процесс запускается как отлаживаемый, он создаётся
3825
    в замороженном состоянии; для запуска используйте
4271
    в замороженном состоянии; для запуска используйте
3826
    подфункцию 5 функции 69.
4272
    подфункцию 5 функции 69.
Line -... Line 4273...
-
 
4273
 
-
 
4274
---------------------- Константы для регистров: ----------------------
-
 
4275
  eax - SF_FILE (70)
3827
 
4276
 [ebx] - SSF_START_APP (7)
3828
======================================================================
4277
======================================================================
3829
========== Функция 70, подфункция 8 - удаление файла/папки. ==========
4278
========== Функция 70, подфункция 8 - удаление файла/папки. ==========
3830
======================================================================
4279
======================================================================
3831
Параметры:
4280
Параметры:
Line 3848... Line 4297...
3848
Замечания:
4297
Замечания:
3849
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4298
  * Функция не поддерживается для CD (вернётся код ошибки 2).
3850
  * Можно удалять только пустые папки (попытка удаления непустой папки
4299
  * Можно удалять только пустые папки (попытка удаления непустой папки
3851
    приведёт к ошибке с кодом 10, "доступ запрещён").
4300
    приведёт к ошибке с кодом 10, "доступ запрещён").
Line -... Line 4301...
-
 
4301
 
-
 
4302
---------------------- Константы для регистров: ----------------------
-
 
4303
  eax - SF_FILE (70)
3852
 
4304
 [ebx] - SSF_DELETE (8)
3853
======================================================================
4305
======================================================================
3854
============= Функция 70, подфункция 9 - создание папки. =============
4306
============= Функция 70, подфункция 9 - создание папки. =============
3855
======================================================================
4307
======================================================================
3856
Параметры:
4308
Параметры:
Line 3873... Line 4325...
3873
Замечания:
4325
Замечания:
3874
  * Функция не поддерживается для CD (вернётся код ошибки 2).
4326
  * Функция не поддерживается для CD (вернётся код ошибки 2).
3875
  * Родительская папка должна уже существовать.
4327
  * Родительская папка должна уже существовать.
3876
  * Если папка уже существует, функция завершится успешно (eax=0).
4328
  * Если папка уже существует, функция завершится успешно (eax=0).
Line -... Line 4329...
-
 
4329
 
-
 
4330
---------------------- Константы для регистров: ----------------------
-
 
4331
  eax - SF_FILE (70)
3877
 
4332
 [ebx] - SSF_CREATE_FOLDER (9)
3878
======================================================================
4333
======================================================================
3879
=== Функция 71, подфункция 1 - установить заголовок окна программы. ==
4334
=== Функция 71, подфункция 1 - установить заголовок окна программы. ==
3880
======================================================================
4335
======================================================================
3881
Параметры:
4336
Параметры:
Line 3892... Line 4347...
3892
    2 = UTF-16LE
4347
    2 = UTF-16LE
3893
    3 = UTF-8
4348
    3 = UTF-8
3894
    иначе будет использоваться cp866.
4349
    иначе будет использоваться cp866.
3895
  * Чтобы убрать заголовок, передайте NULL в ecx.
4350
  * Чтобы убрать заголовок, передайте NULL в ecx.
Line -... Line 4351...
-
 
4351
 
-
 
4352
---------------------- Константы для регистров: ----------------------
3896
 
4353
  eax - SF_SET_CAPTION (71)
3897
======================================================================
4354
======================================================================
3898
================ Функция 72 - послать сообщение окну. ================
4355
================ Функция 72 - послать сообщение окну. ================
Line 3899... Line 4356...
3899
======================================================================
4356
======================================================================
Line 3906... Line 4363...
3906
  * edx = код клавиши для ecx=2, идентификатор кнопки для ecx=3
4363
  * edx = код клавиши для ecx=2, идентификатор кнопки для ecx=3
3907
Возвращаемое значение:
4364
Возвращаемое значение:
3908
  * eax = 0 - успешно
4365
  * eax = 0 - успешно
3909
  * eax = 1 - буфер заполнен
4366
  * eax = 1 - буфер заполнен
Line -... Line 4367...
-
 
4367
 
-
 
4368
---------------------- Константы для регистров: ----------------------
3910
 
4369
  eax - SF_SEND_MESSAGE (72)
3911
======================================================================
4370
======================================================================
3912
===================== Функция 73 - blit bitmap  =====================
4371
===================== Функция 73 - blit bitmap  =====================
3913
======================================================================
4372
======================================================================
Line 3946... Line 4405...
3946
    +36: dword: размер строки bitmap в байтах
4405
    +36: dword: размер строки bitmap в байтах
Line 3947... Line 4406...
3947
 
4406
 
3948
Возвращаемое значение:
4407
Возвращаемое значение:
Line -... Line 4408...
-
 
4408
  * функция не возвращает значения
-
 
4409
 
3949
  * функция не возвращает значения
4410
---------------------- Константы для регистров: ----------------------
3950
 
4411
  eax - SF_BLITTER (73)
3951
======================================================================
4412
======================================================================
3952
=================== Функция 74, подфункция -1 ========================
4413
=================== Функция 74, подфункция -1 ========================
3953
=========== Получить количество активных сетевых устройств. ==========
4414
=========== Получить количество активных сетевых устройств. ==========
3954
======================================================================
4415
======================================================================
3955
Параметры:
4416
Параметры:
3956
  * eax = 74 - номер функции
4417
  * eax = 74 - номер функции
3957
  * bl = -1 - номер подфункции
4418
  * bl = -1 - номер подфункции
Line -... Line 4419...
-
 
4419
Возвращаемое значение:
-
 
4420
  * eax = количество активных сетевых устройств
-
 
4421
 
3958
Возвращаемое значение:
4422
---------------------- Константы для регистров: ----------------------
3959
  * eax = количество активных сетевых устройств
4423
  eax - SF_NETWORK_GET (74)
3960
 
4424
   bl - SSF_DEVICE_COUNT (255)
3961
======================================================================
4425
======================================================================
3962
==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
4426
==== Функция 74, подфункция 0, Получить тип сетевого устройства. =====
3963
======================================================================
4427
======================================================================
3964
Параметры:
4428
Параметры:
3965
  * eax = 74 - номер функции
4429
  * eax = 74 - номер функции
3966
  * bl = 0 - номер подфункции
4430
  * bl = 0 - номер подфункции
Line -... Line 4431...
-
 
4431
  * bh = номер устройства
-
 
4432
Возвращаемое значение:
-
 
4433
  * eax = тип устройства
3967
  * bh = номер устройства
4434
 
3968
Возвращаемое значение:
4435
---------------------- Константы для регистров: ----------------------
3969
  * eax = тип устройства
4436
  eax - SF_NETWORK_GET (74)
3970
 
4437
   bl - SSF_DEVICE_TYPE (0)
3971
======================================================================
4438
======================================================================
Line 3978... Line 4445...
3978
  * ecx = указатель на буфера - 64 байт 
4445
  * ecx = указатель на буфера - 64 байт 
3979
Возвращаемое значение:
4446
Возвращаемое значение:
3980
  * eax = -1 для ошибки
4447
  * eax = -1 для ошибки
3981
  * В случае успеха в буфер записывается имя сетевого устройства
4448
  * В случае успеха в буфер записывается имя сетевого устройства
Line -... Line 4449...
-
 
4449
 
-
 
4450
---------------------- Константы для регистров: ----------------------
-
 
4451
  eax - SF_NETWORK_GET (74)
3982
 
4452
   bl - SSF_DEVICE_NAME (1)
3983
======================================================================
4453
======================================================================
3984
======= Функция 74, подфункция 2, Сброс сетевого устройства. =========
4454
======= Функция 74, подфункция 2, Сброс сетевого устройства. =========
3985
======================================================================
4455
======================================================================
3986
Параметры:
4456
Параметры:
3987
  * eax = 74 - номер функции
4457
  * eax = 74 - номер функции
3988
  * bl = 2 - номер подфункции
4458
  * bl = 2 - номер подфункции
3989
  * bh = номер устройства
4459
  * bh = номер устройства
3990
Возвращаемое значение:
4460
Возвращаемое значение:
Line -... Line 4461...
-
 
4461
  * eax = -1 для ошибки
-
 
4462
 
-
 
4463
---------------------- Константы для регистров: ----------------------
3991
  * eax = -1 для ошибки
4464
  eax - SF_NETWORK_GET (74)
3992
 
4465
   bl - SSF_RESET_DEVICE (2)
3993
======================================================================
4466
======================================================================
3994
====== Функция 74, подфункция 3, Остановить сетевое устройство. ======
4467
====== Функция 74, подфункция 3, Остановить сетевое устройство. ======
3995
======================================================================
4468
======================================================================
3996
Параметры:
4469
Параметры:
3997
  * eax = 74 - номер функции
4470
  * eax = 74 - номер функции
3998
  * bl = 3 - номер подфункции
4471
  * bl = 3 - номер подфункции
3999
  * bh = номер устройства
4472
  * bh = номер устройства
Line -... Line 4473...
-
 
4473
Возвращаемое значение:
-
 
4474
  * eax = -1 для ошибки
-
 
4475
 
4000
Возвращаемое значение:
4476
---------------------- Константы для регистров: ----------------------
4001
  * eax = -1 для ошибки
4477
  eax - SF_NETWORK_GET (74)
4002
 
4478
   bl - SSF_STOP_DEVICE (3)
4003
======================================================================
4479
======================================================================
4004
===== Функция 74, подфункция 4, Получить указатель на устройство =====
4480
===== Функция 74, подфункция 4, Получить указатель на устройство =====
4005
======================================================================
4481
======================================================================
4006
Параметры:
4482
Параметры:
4007
  * eax = 74 - номер функции
4483
  * eax = 74 - номер функции
4008
  * bl = 4 - номер подфункции
4484
  * bl = 4 - номер подфункции
Line -... Line 4485...
-
 
4485
  * bh = номер устройства
-
 
4486
Возвращаемое значение:
-
 
4487
  * eax = указатель, -1 для ошибки
4009
  * bh = номер устройства
4488
 
4010
Возвращаемое значение:
4489
---------------------- Константы для регистров: ----------------------
4011
  * eax = указатель, -1 для ошибки
4490
  eax - SF_NETWORK_GET (74)
4012
 
4491
   bl - SSF_DEVICE_POINER (4)
4013
======================================================================
4492
======================================================================
4014
=== Функция 74, подфункция 6, Получить количество посланых пакетов ===
4493
=== Функция 74, подфункция 6, Получить количество посланых пакетов ===
4015
======================================================================
4494
======================================================================
4016
Параметры:
4495
Параметры:
4017
  * eax = 74 - номер функции
4496
  * eax = 74 - номер функции
Line -... Line 4497...
-
 
4497
  * bl = 6 - номер подфункции
-
 
4498
  * bh = номер устройства
-
 
4499
Возвращаемое значение:
4018
  * bl = 6 - номер подфункции
4500
  * eax = количество с момента старта устройства, -1 для ошибки
4019
  * bh = номер устройства
4501
 
4020
Возвращаемое значение:
4502
---------------------- Константы для регистров: ----------------------
4021
  * eax = количество с момента старта устройства, -1 для ошибки
4503
  eax - SF_NETWORK_GET (74)
4022
 
4504
   bl - SSF_TX_PACKET_COUNT (6)
4023
======================================================================
4505
======================================================================
4024
=== Функция 74, подфункция 7, Получить количество принятых пакетов ===
4506
=== Функция 74, подфункция 7, Получить количество принятых пакетов ===
4025
======================================================================
4507
======================================================================
4026
Параметры:
4508
Параметры:
Line -... Line 4509...
-
 
4509
  * eax = 74 - номер функции
-
 
4510
  * bl = 7 - номер подфункции
-
 
4511
  * bh = номер устройства
4027
  * eax = 74 - номер функции
4512
Возвращаемое значение:
4028
  * bl = 7 - номер подфункции
4513
  * eax = количество с момента старта устройства, -1 для ошибки
4029
  * bh = номер устройства
4514
 
4030
Возвращаемое значение:
4515
---------------------- Константы для регистров: ----------------------
4031
  * eax = количество с момента старта устройства, -1 для ошибки
4516
  eax - SF_NETWORK_GET (74)
Line 4039... Line 4524...
4039
  * bh = номер устройства
4524
  * bh = номер устройства
4040
Возвращаемое значение:
4525
Возвращаемое значение:
4041
  * eax = количество с момента старта устройства, -1 для ошибки
4526
  * eax = количество с момента старта устройства, -1 для ошибки
4042
  * ebx = старшая часть
4527
  * ebx = старшая часть
Line -... Line 4528...
-
 
4528
 
-
 
4529
---------------------- Константы для регистров: ----------------------
-
 
4530
  eax - SF_NETWORK_GET (74)
4043
 
4531
   bl - SSF_TX_BYTE_COUNT (8)
4044
======================================================================
4532
======================================================================
4045
==== Функция 74, подфункция 9, Получить количество принятых байт. ====
4533
==== Функция 74, подфункция 9, Получить количество принятых байт. ====
4046
======================================================================
4534
======================================================================
4047
Параметры:
4535
Параметры:
Line 4050... Line 4538...
4050
  * bh = номер устройства
4538
  * bh = номер устройства
4051
Возвращаемое значение:
4539
Возвращаемое значение:
4052
  * eax = количество с момента старта устройства, -1 для ошибки
4540
  * eax = количество с момента старта устройства, -1 для ошибки
4053
  * ebx = старшая часть
4541
  * ebx = старшая часть
Line -... Line 4542...
-
 
4542
 
-
 
4543
---------------------- Константы для регистров: ----------------------
-
 
4544
  eax - SF_NETWORK_GET (74)
4054
 
4545
   bl - SSF_RX_BYTE_COUNT (9)
4055
======================================================================
4546
======================================================================
4056
======= Функция 74, подфункция 10, Получить статус соединения. =======
4547
======= Функция 74, подфункция 10, Получить статус соединения. =======
4057
======================================================================
4548
======================================================================
4058
Параметры:
4549
Параметры:
Line 4068... Line 4559...
4068
  4 = 10 Мбит
4559
  4 = 10 Мбит
4069
  8 = 100 Мбит
4560
  8 = 100 Мбит
4070
  12 = 1 Гбит
4561
  12 = 1 Гбит
4071
  10b = флаг полного дуплекса
4562
  10b = флаг полного дуплекса
Line -... Line 4563...
-
 
4563
 
-
 
4564
---------------------- Константы для регистров: ----------------------
-
 
4565
  eax - SF_NETWORK_GET (74)
4072
 
4566
   bl - SSF_LINK_STATUS (10)
4073
======================================================================
4567
======================================================================
4074
======= Функция 75, подфункция 0, Open socket (Открыть сокет). =======
4568
======= Функция 75, подфункция 0, Open socket (Открыть сокет). =======
4075
======================================================================
4569
======================================================================
4076
Параметры:
4570
Параметры:
Line 4081... Line 4575...
4081
  * esi = протокол
4575
  * esi = протокол
4082
Возвращаемое значение:
4576
Возвращаемое значение:
4083
  * eax = номер сокета, -1 для ошибки
4577
  * eax = номер сокета, -1 для ошибки
4084
  * ebx = код ошибки
4578
  * ebx = код ошибки
Line -... Line 4579...
-
 
4579
 
-
 
4580
---------------------- Константы для регистров: ----------------------
-
 
4581
  eax - SF_NETWORK_SOCKET (75)
4085
 
4582
   bl - SSF_OPEN (0)
4086
======================================================================
4583
======================================================================
4087
======= Функция 75, подфункция 1, Close socket (Закрыть сокет). ======
4584
======= Функция 75, подфункция 1, Close socket (Закрыть сокет). ======
4088
======================================================================
4585
======================================================================
4089
Параметры:
4586
Параметры:
Line 4092... Line 4589...
4092
  * ecx = номер сокета
4589
  * ecx = номер сокета
4093
Возвращаемое значение:
4590
Возвращаемое значение:
4094
  * eax = -1 для ошибки
4591
  * eax = -1 для ошибки
4095
  * ebx = код ошибки
4592
  * ebx = код ошибки
Line -... Line 4593...
-
 
4593
 
-
 
4594
---------------------- Константы для регистров: ----------------------
-
 
4595
  eax - SF_NETWORK_SOCKET (75)
4096
 
4596
   bl - SSF_CLOSE (1)
4097
======================================================================
4597
======================================================================
4098
============= Функция 75, подфункция 2, Bind (Привязка). =============
4598
============= Функция 75, подфункция 2, Bind (Привязка). =============
4099
======================================================================
4599
======================================================================
4100
Параметры:
4600
Параметры:
Line 4105... Line 4605...
4105
  * esi = длина структуры sockaddr
4605
  * esi = длина структуры sockaddr
4106
Возвращаемое значение:
4606
Возвращаемое значение:
4107
  * eax = -1 для ошибки
4607
  * eax = -1 для ошибки
4108
  * ebx = код ошибки
4608
  * ebx = код ошибки
Line -... Line 4609...
-
 
4609
 
-
 
4610
---------------------- Константы для регистров: ----------------------
-
 
4611
  eax - SF_NETWORK_SOCKET (75)
4109
 
4612
   bl - SSF_BIND (2)
4110
======================================================================
4613
======================================================================
4111
============ Функция 75, подфункция 3, Listen (Слушать). =============
4614
============ Функция 75, подфункция 3, Listen (Слушать). =============
4112
======================================================================
4615
======================================================================
4113
Параметры:
4616
Параметры:
Line 4117... Line 4620...
4117
  * edx = backlog (возвращаемый лог)
4620
  * edx = backlog (возвращаемый лог)
4118
Возвращаемое значение:
4621
Возвращаемое значение:
4119
  * eax = -1 для ошибки
4622
  * eax = -1 для ошибки
4120
  * ebx = код ошибки
4623
  * ebx = код ошибки
Line -... Line 4624...
-
 
4624
 
-
 
4625
---------------------- Константы для регистров: ----------------------
-
 
4626
  eax - SF_NETWORK_SOCKET (75)
4121
 
4627
   bl - SSF_LISTEN (3)
4122
======================================================================
4628
======================================================================
4123
========== Функция 75, подфункция 4, Connect (Соединение). ===========
4629
========== Функция 75, подфункция 4, Connect (Соединение). ===========
4124
======================================================================
4630
======================================================================
4125
Параметры:
4631
Параметры:
Line 4130... Line 4636...
4130
  * esi = длина структуры sockaddr
4636
  * esi = длина структуры sockaddr
4131
Возвращаемое значение:
4637
Возвращаемое значение:
4132
  * eax = -1 для ошибки
4638
  * eax = -1 для ошибки
4133
  * ebx = код ошибки
4639
  * ebx = код ошибки
Line -... Line 4640...
-
 
4640
 
-
 
4641
---------------------- Константы для регистров: ----------------------
-
 
4642
  eax - SF_NETWORK_SOCKET (75)
4134
 
4643
   bl - SSF_CONNECT (4)
4135
======================================================================
4644
======================================================================
4136
=========== Функция 75, подфункция 5, Accept (Соглашение). ===========
4645
=========== Функция 75, подфункция 5, Accept (Соглашение). ===========
4137
======================================================================
4646
======================================================================
4138
Параметры:
4647
Параметры:
Line 4143... Line 4652...
4143
  * esi = длина структуры sockaddr
4652
  * esi = длина структуры sockaddr
4144
Возвращаемое значение:
4653
Возвращаемое значение:
4145
  * eax = номер сокета из принятого сокета, -1 для ошибки
4654
  * eax = номер сокета из принятого сокета, -1 для ошибки
4146
  * ebx = код ошибки
4655
  * ebx = код ошибки
Line -... Line 4656...
-
 
4656
 
-
 
4657
---------------------- Константы для регистров: ----------------------
-
 
4658
  eax - SF_NETWORK_SOCKET (75)
4147
 
4659
   bl - SSF_ACCEPT (5)
4148
======================================================================
4660
======================================================================
4149
============= Функция 75, подфункция 6, Send (Послать). ==============
4661
============= Функция 75, подфункция 6, Send (Послать). ==============
4150
======================================================================
4662
======================================================================
4151
Параметры:
4663
Параметры:
Line 4157... Line 4669...
4157
  * edi = флаги
4669
  * edi = флаги
4158
Возвращаемое значение:
4670
Возвращаемое значение:
4159
  * eax = количество скопированных байтов, -1 для ошибки
4671
  * eax = количество скопированных байтов, -1 для ошибки
4160
  * ebx = код ошибки
4672
  * ebx = код ошибки
Line -... Line 4673...
-
 
4673
 
-
 
4674
---------------------- Константы для регистров: ----------------------
-
 
4675
  eax - SF_NETWORK_SOCKET (75)
4161
 
4676
   bl - SSF_SEND (6)
4162
======================================================================
4677
======================================================================
4163
============ Функция 75, подфункция 7, Receive (Получить). ===========
4678
============ Функция 75, подфункция 7, Receive (Получить). ===========
4164
======================================================================
4679
======================================================================
4165
Параметры:
4680
Параметры:
Line 4171... Line 4686...
4171
  * edi = флаги
4686
  * edi = флаги
4172
Возвращаемое значение:
4687
Возвращаемое значение:
4173
  * eax = количество скопированных байтов, -1 для ошибки
4688
  * eax = количество скопированных байтов, -1 для ошибки
4174
  * ebx = код ошибки
4689
  * ebx = код ошибки
Line -... Line 4690...
-
 
4690
 
-
 
4691
---------------------- Константы для регистров: ----------------------
-
 
4692
  eax - SF_NETWORK_SOCKET (75)
4175
 
4693
   bl - SSF_RECEIVE (7)
4176
======================================================================
4694
======================================================================
4177
= Функция 75, подфункция 8, Set socket options (Задать опции сокета) = 
4695
= Функция 75, подфункция 8, Set socket options (Задать опции сокета) = 
4178
======================================================================
4696
======================================================================
4179
Параметры:
4697
Параметры:
Line 4189... Line 4707...
4189
  Optstruct: dd level
4707
  Optstruct: dd level
4190
             dd optionname
4708
             dd optionname
4191
             dd optlength
4709
             dd optlength
4192
             db options...
4710
             db options...
Line -... Line 4711...
-
 
4711
 
-
 
4712
---------------------- Константы для регистров: ----------------------
-
 
4713
  eax - SF_NETWORK_SOCKET (75)
4193
 
4714
   bl - SSF_SET_OPTIONS (8)
4194
======================================================================
4715
======================================================================
4195
= Функция 75, подфункция 9, Get socket options(Получить опции сокета) 
4716
= Функция 75, подфункция 9, Get socket options(Получить опции сокета) 
4196
======================================================================
4717
======================================================================
4197
Параметры:
4718
Параметры:
Line 4207... Line 4728...
4207
  Optstruct: dd level
4728
  Optstruct: dd level
4208
             dd optionname
4729
             dd optionname
4209
             dd optlength
4730
             dd optlength
4210
             db options...
4731
             db options...
Line -... Line 4732...
-
 
4732
 
-
 
4733
---------------------- Константы для регистров: ----------------------
-
 
4734
  eax - SF_NETWORK_SOCKET (75)
4211
 
4735
   bl - SSF_GET_OPTIONS (9)
4212
======================================================================
4736
======================================================================
4213
= Функция 75, подфункция 10, Get socketpair (Получить парный сокет). =
4737
= Функция 75, подфункция 10, Get socketpair (Получить парный сокет). =
4214
======================================================================
4738
======================================================================
4215
Параметры:
4739
Параметры:
4216
  * eax = 75 - номер функции
4740
  * eax = 75 - номер функции
4217
  * bl = 10 - номер подфункции
4741
  * bl = 10 - номер подфункции
4218
Возвращаемое значение:
4742
Возвращаемое значение:
4219
  * eax = socketnum1, -1 для ошибки
4743
  * eax = socketnum1, -1 для ошибки
Line -... Line 4744...
-
 
4744
  * ebx = socketnum2, код ошибки в случае ошибки
-
 
4745
 
-
 
4746
---------------------- Константы для регистров: ----------------------
-
 
4747
  eax - SF_NETWORK_SOCKET (75)
-
 
4748
   bl - SSF_GET_PAIR (10)
-
 
4749
======================================================================
-
 
4750
=============== Функция 76, Сетевые опции и статистика. ==============
-
 
4751
======================================================================
-
 
4752
Параметры:
-
 
4753
  * eax = 76 - номер функции
-
 
4754
  * верхняя часть ebx = номер протокола
-
 
4755
  * bh = номер устройства
-
 
4756
  * bl = номер подфункции
-
 
4757
 
-
 
4758
Ethernet (0)
-
 
4759
        0 - Read MAC
-
 
4760
        
-
 
4761
IPv4 (1)
-
 
4762
        0 - Read # IP packets sent
-
 
4763
        1 - Read # IP packets received
-
 
4764
        2 - Read IP
-
 
4765
        3 - Write IP
-
 
4766
        4 - Read DNS
-
 
4767
        5 - Write DNS
-
 
4768
        6 - Read subnet
-
 
4769
        7 - Write subnet
-
 
4770
        8 - Read gateway
-
 
4771
        9 - Write gateway
-
 
4772
        
-
 
4773
ICMP (2)
-
 
4774
        0 - Read # ICMP packets sent
-
 
4775
        1 - Read # ICMP packets received
-
 
4776
        3 - enable/disable ICMP echo reply
-
 
4777
 
-
 
4778
UDP (3)
-
 
4779
        0 - Read # UDP packets sent
-
 
4780
        1 - Read # UDP packets received
-
 
4781
 
-
 
4782
TCP (4)
-
 
4783
        0 - Read # TCP packets sent
-
 
4784
        1 - Read # TCP packets received 
-
 
4785
        
-
 
4786
ARP (5)
-
 
4787
        0 - Read # ARP packets sent
-
 
4788
        1 - Read # ARP packets received
-
 
4789
        2 - Read # ARP entry's
-
 
4790
        3 - Read ARP entry
-
 
4791
        4 - Add static ARP entry
-
 
4792
        5 - Remove ARP entry (-1 = remove all)
-
 
4793
        6 - Send ARP announce on specified interface
-
 
4794
        7 - Read # ARP conflicts (IP address conflicts)
-
 
4795
 
4220
  * ebx = socketnum2, код ошибки в случае ошибки
4796
---------------------- Константы для регистров: ----------------------
4221
 
4797
  eax - SF_NETWORK_PROTOCOL (76)
4222
======================================================================
4798
======================================================================
4223
========== Функция -1 - завершить выполнение потока/процесса =========
4799
========== Функция -1 - завершить выполнение потока/процесса =========
4224
======================================================================
4800
======================================================================
Line 4232... Line 4808...
4232
  * Если текущий поток - последний в процессе, то его завершение
4808
  * Если текущий поток - последний в процессе, то его завершение
4233
    также приводит к завершению процесса.
4809
    также приводит к завершению процесса.
4234
  * Эта функция завершает текущий поток. Другой поток можно прибить
4810
  * Эта функция завершает текущий поток. Другой поток можно прибить
4235
    вызовом подфункции 2 функции 18.
4811
    вызовом подфункции 2 функции 18.
Line -... Line 4812...
-
 
4812
 
-
 
4813
---------------------- Константы для регистров: ----------------------
4236
 
4814
  eax - SF_TERMINATE_PROCESS (-1)
4237
======================================================================
4815
======================================================================
4238
=========================== Список событий ===========================
4816
=========================== Список событий ===========================
4239
======================================================================
4817
======================================================================
4240
Очередное событие можно получить вызовом одной из функций 10
4818
Очередное событие можно получить вызовом одной из функций 10