- 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
#include <dos.h>
#include <conio.h>
#include <graphics.h>
void pix(unsigned int x, unsigned int y, unsigned char c){
unsigned char nb, ms, bt; //nomerbit maska bite
unsigned int ofs; //sdvig
unsigned char *pb; //ukazatel na bit
ofs= x/8 + y*80;
nb=7-(x % 8);
pb=(unsigned char *)MK_FP(0xA000, ofs);
bt=*pb;
ms=1<<nb;
if( c !=0 ){
bt=bt | ms;
}else{
bt=bt&(~ms);
};
*pb=bt;
};
void main(){
int drDriver, grMode;
drDriver=VGA;
grMode=VGAHI;
initgraph(&drDriver, &grMode, "C:\\BORLANDC\\BGI");
pix(60,30,15);
getch();
};
ТурбоЦ / БорландЦ точ также графику инициализировали.
ммм... мусье знает толк в извращениях
То был мой любимый компилятор Паскаля. Большей частью написан на асме.
P.S. Целиком писать что-либо на ассемблере у меня тоже кишка тонка.
screen: array [0..199,0..319] of byte absolute $A000:$0000
и всё, "работа с памятью напрямую" (с) становится лёгкой и приятной, и никаких новых трудностей турбопас по сревнения с сишкой или асмом не вызывает.
сишный драйвер, епт ты наверное вообще под дос никогда не писал
/* ... */
};
Зачем точка с запятой в конце?
В этом случае лишняя точка с запятой располагается вне тела функции. Такая точка с запятой уже никак не может представлять пустой statement. Она может представлять лишь пустую декларацию. Однако формально ни С++, ни C не разрешают использование пустых деклараций. Несмотря на то, что большинство компиляторов "смотрят сквозь пальцы" на пустые декларации (даже Comeau ограничивается лишь предупреждением), вышеприведенный код - ошибочен.
Последнее время шли разговоры о возможной легализации пустых деклараций, но навскидку не скажу, чем все это закончилось.
Это шутка такая?
Про "паскалевский драйвер" то же довольно интересное умозаключение.
Но это тут действительно ни при чём, просто автор школьник.
А код вменяемый, разве что древнющих времен, когда компьютеры были тупые и тормозные с процами так на 5 МГц.