![]() |
![]() |
Probel |
![]()
Сообщение
#1
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
Доброго времени суток!
Хочу вот процедуры для TMT Pascal для: - перезагрузки компьютера (желательно холодную и теплую) - выключения компьютера (это где есть поддержка APM) - и другие, вроде остановки компа (Hang Mashine) есть исходник модуля для TP со всеми этими делами, кроме вырубления компа, но там ассемблер 16-битный и в TMT не пашет ![]() дело в том что как-то я смотрел одну операционку "MenuetOS"(может кто слыхал) она вся на асме написана, но главное что все эти процедуры там есть и на сколько я понял, они пашут в 32-битном PMode... вот к примеру я выдрал для выключения компа:
org 100h
use16 ; это я для проверки написал, на самом деле
; там все в 32-битном пашет...
call APM_PowerOff
APM_PowerOff:
mov ax,0x5300
xor bx,bx
int 0x15
push ax
mov ax,0x5301
xor bx,bx
int 0x15
mov ax,0x5308
mov bx,1
mov cx,bx
int 0x15
mov ax,0x530E
xor bx,bx
pop cx
int 0x15
mov ax,0x530D
mov bx,1
mov cx,bx
int 0x15
mov ax,0x530F
mov bx,1
mov cx,bx
int 0x15
mov ax,0x5307
mov bx,1
mov cx,3
int 0x15
написано на fasm. можно ли это как-нить внидрить в TMT Pascal?Сообщение отредактировано: volvo - 3.11.2006 0:47 -------------------- на этом все и заканчивается
|
![]() ![]() |
Дож |
![]()
Сообщение
#2
|
![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 179 Пол: Мужской Репутация: ![]() ![]() ![]() |
А в чем проблемы? Есть же встроенный асм... Попробуй, внедри.
-------------------- Доброго времени суток.
:nnn: |
Romtek |
![]()
Сообщение
#3
|
![]() Знаток ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 303 Пол: Мужской Реальное имя: Роман Репутация: ![]() ![]() ![]() |
To: Probel
Я тебе же говорил, что нужен 32-битный асм! Исправь все ax->eax dx->edx и т.д. -------------------- Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
|
Probel |
![]()
Сообщение
#4
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 25 Пол: Мужской Репутация: ![]() ![]() ![]() |
спасиб, просто я не очень то селен в асме, думал что у кого-нить завалялись исходники по сабжу...
а вырубать камп я как-то странно умудрился %) просто поменял все цыфорки(там где ax) из шестнацатиричной->десятичную систему счисления и камп стал вырубаться в TMT... хотелось бы перезагрузку как-нибудь сделать... вот была у меня для fasm: Код Org 100h mov ax, 40h mov es, ax mov di, 72h xor ax, ax db 0eah, 0, 0, 0ffh, 0ffh ret переделал в pascal 32bit(если похоже ![]() Код procedure Reboot; asm mov eax, 40h mov es, ax mov edi, 72h xor ax, ax db 0eah, 0, 0, 0ffh, 0ffh ret end; и получаю RunError 216 ![]() такая же фигня, когда мне посоветовали на другом форуме: Код type с чем это может быть связано?p_word = ^word; Var hook : p_word; Procedure Reboot(Cold : Boolean); begin hook := p_word(ptr($472)); if (Cold = True) then hook^ := $0000 else hook^ := $1234; ExitProc := pointer(ptr($FFFF0)); end; begin Reboot(False); Halt; end. Сообщение отредактировано: Probel - 7.12.2005 21:32 -------------------- на этом все и заканчивается
|
![]() ![]() |
![]() |
Текстовая версия | 26.07.2025 17:33 |