Цитата:
У меня сектор читается откуда угодно но не с флешки
У меня есть загрузочная флешка. Ей пользуюсь не так давно пару лет, но на тех машинах что пробовал грузилась без проблем. Код не мой. Свой я ещё массово не тестировал, но на виртуалке он работал.
Так вот на флешке mbr используется int 13h функция ah=02
Так что почему у вас не работает я не знаю. По пробуйте на другом компьютере.
Флешка может быть от форматирована под мягкую дискету или под жесткий диск. Но обычно под жёсткий.
Так что загрузка с флешки не отличается от загрузки с жёсткого. В интернете полно статей по этому поводу.
Цитата:
В паскале есть многое Там могу делать все, что угодно, но почемуто регистры edx, eax не работают.
Это по тому что DOS создавался, когда процессор был 16 битным. И паскаль поэтому был 16 битным. Поэтому тут нет ничего удивительного. Но можно поступить так на tasm можно использовать 32 битные регистры. можно скомпилировать obj файл и подключить к паскалю. Директива {$L LOADER.OBJ} .
Цитата:
В дельфи тоже могу всё делать, но как компилировать в нем бинарники(чистый код?)
При помощи замены системных библиотек на пустые. В интернете описано.
Код:
unit SysInit;
interface
var
TlsIndex: Integer;
TlsLast: Byte;
PtrToNil: Pointer = nil;
procedure _InitExe;
implementation
procedure _InitExe;
asm
end;
end.
Код:
unit System;
{$H-,I-,S-,L-}
interface
type
PGUID = ^TGUID;
TGUID = record
D1: Cardinal;
D2: Word;
D3: Word;
D4: array[0..7] of Byte;
end;
PWideString = ^WideString;
var IsConsole : Boolean;
RandSeed:integer;
procedure _Halt0;
procedure _HandleFinally;
implementation
uses sysinit;
procedure _Halt0;
asm
end;
procedure _HandleFinally;
asm
end;
end.
А да из system выкинуто много нужного, но вернуть легко.
Сборка идёт так.
Код:
..\tool\delphi\DCC32.EXE -Y -B .\system\system.pas
..\tool\delphi\DCC32.EXE -GD -W- -$H- -U".\system" kernel.dpr
Первая строчка компилирует системную библиотеку, вторая ядро с новой системной библиотекой.
В паскале я тоже системные библиотеки заменяю.
Нужен SYSTEM.TPS
Код:
unit System;
{ This is a dummy system unit, which does almost nothing. }
{$R-,S-,Q-,I-,N-,E-}
interface
var { TP needs a public var & const block }
static_var : byte;
const
const_var : byte = 0;
implementation
{ These routines must be declared in the right order (the compiler calls
them by number, not by name) and must be far. In the TP 6.0 SYSTEM.TPU there
are 137 of them; buy the RTL source if you want to know what they do. Coding
the other 134 stubs would be a good idea, but I couldn't be bothered. }
procedure InitTurbo; far; assembler;
asm
push dx
mov dx, seg(const_var)
mov ds,dx { Load DS }
pop dx
mov al,const_var { We have to be sure the var's & const's get linked in }
mov static_var,al
end;
procedure HaltError; far; assembler;
asm
end;
procedure HaltTurbo; far; assembler;
asm
end;
end.
Компилируется вмести с подключенными системными символами символы автоматом подключаются.
В TURBO.TPL заменяется system.TPU при помощи TPUMOVER.EXE
Код:
bpc system.pas
TPUMOVER.EXE TURBO.TPL -SYSTEM
TPUMOVER.EXE TURBO.TPL +SYSTEM