IPB
ЛогинПароль:

> 

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

 
 Ответить  Открыть новую тему 
> Reboot, Power Off и т.д., TMT Pascal, target: dos
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  0  +


Доброго времени суток!
Хочу вот процедуры для TMT Pascal для:
- перезагрузки компьютера (желательно холодную и теплую)
- выключения компьютера (это где есть поддержка APM)
- и другие, вроде остановки компа (Hang Mashine)
есть исходник модуля для TP со всеми этими делами, кроме вырубления компа, но там ассемблер 16-битный и в TMT не пашет sad.gif Скажите: возможно ли вообще перезагрузиться вырубить комп и др. под защищенным режимом?
дело в том что как-то я смотрел одну операционку "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 -


--------------------
на этом все и заканчивается
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Бывалый
***

Группа: Пользователи
Сообщений: 179
Пол: Мужской

Репутация: -  1  +


А в чем проблемы? Есть же встроенный асм... Попробуй, внедри.


--------------------
Доброго времени суток.
:nnn:
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Знаток
****

Группа: Пользователи
Сообщений: 303
Пол: Мужской
Реальное имя: Роман

Репутация: -  2  +


To: Probel
Я тебе же говорил, что нужен 32-битный асм!
Исправь все
ax->eax
dx->edx
и т.д.


--------------------
Romiras HomeLab- материалы и статьи по разработке ПО, моделирование алгоритмов, обработка и анализ информации, нейронные сети, машинное зрение и прочее.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 25
Пол: Мужской

Репутация: -  0  +


спасиб, просто я не очень то селен в асме, думал что у кого-нить завалялись исходники по сабжу...
а вырубать камп я как-то странно умудрился %) просто поменял все цыфорки(там где 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(если похоже wacko.gif )
Код

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 sad.gif
такая же фигня, когда мне посоветовали на другом форуме:
Код
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 -


--------------------
на этом все и заканчивается
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 2.05.2024 18:19
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name