- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
use32
kernel:
mov ax,0x8
mov es,ax
mov ds,ax
mov ss,ax
mov esp,0x10000
macro SetPixel x,y
{
mov ebx,x
mov eax,y
call GSetPixel
}
mov esi,0xA0000
xor ecx,ecx
@@:
mov eax,dword[charH+ecx*4]
mov dword[esi],eax
add esi,320
inc ecx
cmp ecx,7
jb @b
mov esi,0xA0006
xor ecx,ecx
@@:
mov eax,dword[charE+ecx*4]
mov dword[esi],eax
add esi,320
inc ecx
cmp ecx,7
jb @b
mov esi,0xA000C
xor ecx,ecx
@@:
mov eax,dword[charL+ecx*4]
mov dword[esi],eax
add esi,320
inc ecx
cmp ecx,7
jb @b
mov esi,0xA0012
xor ecx,ecx
@@:
mov eax,dword[charL+ecx*4]
mov dword[esi],eax
add esi,320
inc ecx
cmp ecx,7
jb @b
mov esi,0xA0018
xor ecx,ecx
@@:
mov eax,dword[charO+ecx*4]
mov dword[esi],eax
add esi,320
inc ecx
cmp ecx,7
jb @b
jmp $
charH dd 0x0F00000F
dd 0x0F00000F
dd 0x0F00000F
dd 0x0F0F0F0F
dd 0x0F00000F
dd 0x0F00000F
dd 0x0F00000F
charE dd 0x0F0F0F0F
dd 0x0000000F
dd 0x0000000F
dd 0x0F0F0F0F
dd 0x0000000F
dd 0x0000000F
dd 0x0F0F0F0F
charL dd 0x0000000F
dd 0x0000000F
dd 0x0000000F
dd 0x0000000F
dd 0x0000000F
dd 0x0000000F
dd 0x0F0F0F0F
charO dd 0x000F0F00
dd 0x0F00000F
dd 0x0F00000F
dd 0x0F00000F
dd 0x0F00000F
dd 0x0F00000F
dd 0x000F0F00
Раскопал в старых файлах. Выводит на экран незамысловатое слово HELLO
На World у меня бы одного бут-сектора не хватило.
Может быть она стартует из винды, просто лежит в бут-секторе))
Потому что если представить, что биос стартует это из MBR, то непонято ни про GSetPixel ни про use32.
Как она вообще работает? через прерывания биоса?
допустим, бутится виртуалная машина)
162 строки, вот они :
http://pastebin.org/357178
Да грузится она из виртуалки, а работает так:
Сначала устанавливается режим 320 на 240(уже и не помню) с 8-битным цветом кажись, ну а дальше прямая запись в DMA-память адаптера. Это был собственно первый опыт программирования чистой графики.
PS: Был еще вариант где использовался SSE для тех же операций, но он как то потерялся где то.
Да всё норм. Там, просто, в бут секторе защищённый режим процессора устанавливают.
Приведённый код использует обычный растровый шрифт, к тому же неупакованный. В принципе, у этого кода есть плюс перед биосовским шрифтом: можно использовать цветной шрифт, но в данном коде эта возможность не использована.
В своё время была коллекция демок 4К (ограничение на размер кода 4 килобайта; если надо, могу поискать), так там в графическом режиме на причудливые фигуры натягивали буквы, а шрифт генерировали на основе вынутого из сегмента биоса, то есть в программе шрифт не хранился.
А вот откуда (и зачем) они в обычном биосе -- я не понимаю)
И как их оттуда достать универсальным (не videcard-specific) методом тоже не очень ясно.
Видимо я что-то прогулял.
Кстати паскаль куда меньше ведет к дебилизму, чем php)
Да почнму... Сидит фрилансер со знанием единственного дельфи, у заказчика предложенияе - сделать небольшую утилиту для какой-то приклоадной задачи, заказчику пофиг на чём реализуется, лишь бы имелся эксе и было куда щёлкать... и тут-то хопа, фрилансер-дельфятник делает её за двадцать долларов... Вполне частое явление...
> Кстати паскаль куда меньше ведет к дебилизму, чем php)
Ну да, там ООП в принципе неплохой.
Его туда борланд присунул
Его туда борланд присунул
Читаю паскаль - вижу дельфи %) Надо читалку откалибрировать
сливаюсь
Насколько я помню -- С++ "строже" в некоторых вопросах.
И потому совершенно извращенческие хаки, который вызовут ворнинг в С не скомпилируются в С++.
Да ну? А встроенные в язык массивы port[index] и mem[index]?
В дельфи они хоть и остались (кроме Interrupt), но уже не выполняют свою функцию.
Например?
struct { int x, y, z; } point = { .y=10, .z=20, .x=30 };
Примеры в Википедии есть. Посмотрите что стандарт С99 привнес нового - в википедии хотя бы.
Ты лучше послушай человека с мировым именем и справкой "прослушал курс средней школы".