- 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 привнес нового - в википедии хотя бы.
Ты лучше послушай человека с мировым именем и справкой "прослушал курс средней школы".
Ну я не стал мешать, развернулся и ушёл
Безымянный поёт петух.