- 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 у меня бы одного бут-сектора не хватило.
Анонимус 24.06.2010 23:57 # 0
inkanus-gray 25.06.2010 00:01 # +1
Анонимус 25.06.2010 00:13 # 0
Может быть она стартует из винды, просто лежит в бут-секторе))
Потому что если представить, что биос стартует это из MBR, то непонято ни про GSetPixel ни про use32.
Как она вообще работает? через прерывания биоса?
Webkill 25.06.2010 01:28 # −5
допустим, бутится виртуалная машина)
Ivan0x32 25.06.2010 02:25 # 0
162 строки, вот они :
http://pastebin.org/357178
Да грузится она из виртуалки, а работает так:
Сначала устанавливается режим 320 на 240(уже и не помню) с 8-битным цветом кажись, ну а дальше прямая запись в DMA-память адаптера. Это был собственно первый опыт программирования чистой графики.
PS: Был еще вариант где использовался SSE для тех же операций, но он как то потерялся где то.
Говногость 06.07.2010 13:34 # 0
Да всё норм. Там, просто, в бут секторе защищённый режим процессора устанавливают.
inkanus-gray 25.06.2010 21:31 # +2
Анонимус 25.06.2010 23:10 # 0
inkanus-gray 25.06.2010 23:38 # +3
Приведённый код использует обычный растровый шрифт, к тому же неупакованный. В принципе, у этого кода есть плюс перед биосовским шрифтом: можно использовать цветной шрифт, но в данном коде эта возможность не использована.
В своё время была коллекция демок 4К (ограничение на размер кода 4 килобайта; если надо, могу поискать), так там в графическом режиме на причудливые фигуры натягивали буквы, а шрифт генерировали на основе вынутого из сегмента биоса, то есть в программе шрифт не хранился.
Анонимус 26.06.2010 00:56 # +1
А вот откуда (и зачем) они в обычном биосе -- я не понимаю)
И как их оттуда достать универсальным (не videcard-specific) методом тоже не очень ясно.
Видимо я что-то прогулял.
koodeer 26.06.2010 02:23 # 0
Wеbkill 25.06.2010 23:35 # −7
inkanus-gray 25.06.2010 23:57 # +3
Анонимус 26.06.2010 00:58 # 0
Webkill 26.06.2010 01:12 # −2
Анонимус 26.06.2010 01:15 # +2
Кстати паскаль куда меньше ведет к дебилизму, чем php)
Webkill 26.06.2010 01:16 # +1
Да почнму... Сидит фрилансер со знанием единственного дельфи, у заказчика предложенияе - сделать небольшую утилиту для какой-то приклоадной задачи, заказчику пофиг на чём реализуется, лишь бы имелся эксе и было куда щёлкать... и тут-то хопа, фрилансер-дельфятник делает её за двадцать долларов... Вполне частое явление...
> Кстати паскаль куда меньше ведет к дебилизму, чем php)
Ну да, там ООП в принципе неплохой.
Анонимус 26.06.2010 01:17 # 0
Его туда борланд присунул
Webkill 26.06.2010 01:20 # 0
Его туда борланд присунул
Читаю паскаль - вижу дельфи %) Надо читалку откалибрировать
Анонимус 26.06.2010 01:24 # −2
Suor 26.06.2010 17:20 # 0
Анонимус 26.06.2010 18:08 # 0
Suor 26.06.2010 18:15 # 0
Анонимус 26.06.2010 18:19 # 0
сливаюсь
Ivan0x32 26.06.2010 19:02 # −1
Анонимус 26.06.2010 19:05 # 0
Насколько я помню -- С++ "строже" в некоторых вопросах.
И потому совершенно извращенческие хаки, который вызовут ворнинг в С не скомпилируются в С++.
cfdev 26.06.2010 19:17 # +1
Ivan0x32 26.06.2010 20:43 # 0
Wеbkill 26.06.2010 21:40 # −4
Да ну? А встроенные в язык массивы port[index] и mem[index]?
Говногость 06.07.2010 13:38 # 0
В дельфи они хоть и остались (кроме Interrupt), но уже не выполняют свою функцию.
Wеbkill 26.06.2010 21:41 # −4
Например?
Ivan0x32 26.06.2010 23:02 # +3
struct { int x, y, z; } point = { .y=10, .z=20, .x=30 };
Примеры в Википедии есть. Посмотрите что стандарт С99 привнес нового - в википедии хотя бы.
Wеbkill 27.06.2010 17:32 # −4
Ты лучше послушай человека с мировым именем и справкой "прослушал курс средней школы".
Ivan0x32 28.06.2010 01:48 # 0
Wеbkill 28.06.2010 08:55 # +1
Говногость 06.07.2010 13:39 # 0
mac-t 08.08.2010 23:33 # +1
guest 28.12.2012 20:24 # 0
mac-t 29.12.2012 19:33 # +1
guest 20.04.2011 14:52 # 0