From c1441ca5846462d8f5156799412e225f6fee0233 Mon Sep 17 00:00:00 2001 From: b Date: Sun, 26 Feb 2012 19:51:00 +0100 Subject: [PATCH] =?utf8?q?-zmiana=20trybu=20CGA=20na=20VGA=20-dzia=C5=82a?= =?utf8?q?=20wysoko=C5=9B=C4=87=2014=20i=2016=20-wszystkie=20wysoko=C5=9Bc?= =?utf8?q?i=20s=C4=85=20widoczne=20na=20jednym=20ekranie=20-mo=C5=BCna=20z?= =?utf8?q?apisywa=C4=87=20pliki=20i=20za=C5=82adowa=C4=87=20stron=C4=99=20?= =?utf8?q?do=20systemu=20-mo=C5=BCna=20otworzy=C4=87=20poda=C4=87=20plik?= =?utf8?q?=20do=20otwarcia=20jako=20argument=20w=20wierszu=20polece=C5=84?= =?utf8?q?=20-wczytywane=20dane=20nie=20s=C4=85=20ju=C5=BC=20wypisywane=20?= =?utf8?q?na=20ekranie=20-Funkcje=20klawiszy=20F=20zgadzaj=C4=85=20si?= =?utf8?q?=C4=99=20z=20opisem=20na=20dole=20ekranu?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- EGAVGA.OBJ | Bin 0 -> 5658 bytes NAPISY.CPP | 1850 ++++++++++++++++++++++++++++++++++++++++++++++++++++ NAPISY.PRJ | Bin 0 -> 4540 bytes NAPISY.TXT | 231 +++++++ 4 files changed, 2081 insertions(+) create mode 100644 EGAVGA.OBJ create mode 100644 NAPISY.CPP create mode 100644 NAPISY.PRJ create mode 100644 NAPISY.TXT diff --git a/EGAVGA.OBJ b/EGAVGA.OBJ new file mode 100644 index 0000000000000000000000000000000000000000..909813292b025dbeebfcc59b3c5aa6c6f30acb6f GIT binary patch literal 5658 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 XnAiJ5M!&gA!8a(@X literal 0 HcmV?d00001 diff --git a/NAPISY.CPP b/NAPISY.CPP new file mode 100644 index 0000000..1dfc80a --- /dev/null +++ b/NAPISY.CPP @@ -0,0 +1,1850 @@ +#include +#include +#include +#include +#include +#include + +//#include + +struct FontFileHeader +{ + unsigned char id0; + unsigned char id[7]; + unsigned char reserved[8]; + short pnum; + unsigned char ptyp; + long fih_offset; +}; +struct FontInfoHeader +{ + short num_codepages; +}; +struct CodePageEntryHeader +{ + short cpeh_size; + long next_cpeh_offset; + short device_type; + unsigned char device_name[8]; + short codepage; + unsigned char reserved[6]; + long cpih_offset; +}; +struct CodePageInfoHeader +{ + short version; + short num_fonts; + short size; +}; +struct ScreenFontHeader +{ + unsigned char height; + unsigned char width; + unsigned char yaspect; + unsigned char xaspect; + short num_chars; +}; +struct char8 +{ + unsigned char lin[8]; +}; +struct char14 +{ + unsigned char lin[14]; +}; +struct char16 +{ + unsigned char lin[16]; +}; +struct ScreenFontBitmap16 +{ + char16 lit[256]; +}; + +struct ScreenFontBitmap14 +{ + char14 lit[256]; +}; + +struct ScreenFontBitmap8 +{ + char8 lit[256]; +}; + + + int status; + char nazwap[40]="Nie_wybrano_pliku"; + char err[40]; +// int kart8=CGA; +// int kart14=EGA; + int kart16=VGA; +// int tryb8=CGAC2; +// int tryb14=EGAHI; + int tryb16=VGAHI; + + FILE *CPI; + FontFileHeader FFH; + FontInfoHeader FIH; + CodePageEntryHeader CPEH[6]; + CodePageInfoHeader CPIH[6]; + ScreenFontHeader SFH[6][3]; + ScreenFontBitmap16 SFB16[6]; + ScreenFontBitmap14 SFB14[6]; + ScreenFontBitmap8 SFB8[6]; + + int byo8[6]; + int byo14[6]; + int byo16[6]; + int wys=8; + int cp=0; + int lit=0x42; + int curx=2; + int cury=2; + int key; + int tab=0; + char abc[16]="0123456789ABCDEF"; + + +int pot(int a,int n) +{ + int y=1; + for(int i=0;i0) + { + if((SFB14[cp].lit[l].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,GREEN); + else + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BLACK); + } + else + { + if((SFB14[cp].lit[l].lin[a]/0x80)==1) + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,GREEN); + else + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BLACK); + } + } + else + { + + if(b>0) + { + if((SFB14[cp].lit[l].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BROWN); + else + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BLACK); + } + else + { + if((SFB14[cp].lit[l].lin[a]/0x80)==1) + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BROWN); + else + putpixel(176+b+(l%16)*8,223+a+(l/16)*14,BLACK); + } + } + } + } + } +} +void lin8() +{ + char ab[2]="X"; + setcolor(RED); + outtextxy(176,24,"0123456789ABCDEF"); + outtextxy(168,32,"0"); + outtextxy(168,40,"1"); + outtextxy(168,48,"2"); + outtextxy(168,56,"3"); + outtextxy(168,64,"4"); + outtextxy(168,72,"5"); + outtextxy(168,80,"6"); + outtextxy(168,88,"7"); + outtextxy(168,96,"8"); + outtextxy(168,104,"9"); + outtextxy(168,112,"A"); + outtextxy(168,120,"B"); + outtextxy(168,128,"C"); + outtextxy(168,136,"D"); + outtextxy(168,144,"E"); + outtextxy(168,152,"F"); + + for(int l=0;l<256;++l) + { + for(int a=0;a<8;++a) + { + for(int b=0;b<8;++b) + { + if (l==lit&&wys==8) + { + setcolor(GREEN); + ab[0]=abc[lit%16]; + outtextxy(176+8*(lit%16),24,ab); + ab[0]=abc[lit/16]; + outtextxy(168,32+8*(lit/16),ab); + + if(b>0) + { + if((SFB8[cp].lit[l].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,GREEN); + else + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BLACK); + } + else + { + if((SFB8[cp].lit[l].lin[a]/0x80)==1) + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,GREEN); + else + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BLACK); + } + } + else + { + + if(b>0) + { + if((SFB8[cp].lit[l].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BROWN); + else + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BLACK); + } + else + { + if((SFB8[cp].lit[l].lin[a]/0x80)==1) + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BROWN); + else + putpixel(176+b+(l%16)*8,32+a+(l/16)*8,BLACK); + } + } + } + } + } +} +void lin16() +{ + char ab[2]="X"; + setcolor(RED); + outtextxy(496,103,"0123456789ABCDEF"); + outtextxy(488,115,"0"); + outtextxy(488,131,"1"); + outtextxy(488,147,"2"); + outtextxy(488,163,"3"); + outtextxy(488,179,"4"); + outtextxy(488,195,"5"); + outtextxy(488,211,"6"); + outtextxy(488,227,"7"); + outtextxy(488,243,"8"); + outtextxy(488,259,"9"); + outtextxy(488,275,"A"); + outtextxy(488,291,"B"); + outtextxy(488,307,"C"); + outtextxy(488,323,"D"); + outtextxy(488,339,"E"); + outtextxy(488,355,"F"); + + for(int l=0;l<256;++l) + { + for(int a=0;a<16;++a) + { + for(int b=0;b<8;++b) + { + if (l==lit&&wys==16) + { + setcolor(GREEN); + ab[0]=abc[lit%16]; + outtextxy(496+8*(lit%16),103,ab); + ab[0]=abc[lit/16]; + outtextxy(488,115+16*(lit/16),ab); + + if(b>0) + { + if((SFB16[cp].lit[l].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,GREEN); + else + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BLACK); + } + else + { + if((SFB16[cp].lit[l].lin[a]/0x80)==1) + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,GREEN); + else + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BLACK); + } + } + else + { + + if(b>0) + { + if((SFB16[cp].lit[l].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BROWN); + else + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BLACK); + } + else + { + if((SFB16[cp].lit[l].lin[a]/0x80)==1) + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,BROWN); + else + putpixel(496+b+(l%16)*8,111+a+(l/16)*16,EGA_BLACK); + } + } + } + } + } +} +void lit8() +{ + setcolor(BLACK); + for(int z=0;z<128;++z) + line(16,32+z,143,32+z); + setcolor(RED); + outtextxy(20,24,"0 1 2 3 4 5 6 7"); + outtextxy(8,36,"0"); + outtextxy(8,52,"1"); + outtextxy(8,68,"2"); + outtextxy(8,84,"3"); + outtextxy(8,100,"4"); + outtextxy(8,116,"5"); + outtextxy(8,132,"6"); + outtextxy(8,148,"7"); + + for(int a=0;a<8;++a) + { + char ab[2]="q"; + setfillstyle(SOLID_FILL,BROWN); + for(int b=0;b<8;++b) + { + + + if (curx==b&&cury==a&&wys==8) + { + setcolor(GREEN); + ab[0]=abc[curx]; + outtextxy(20+16*curx,24,ab); + ab[0]=abc[cury]; + outtextxy(8,36+16*cury,ab); + rectangle(0x10+b*0x10,0x20+a*0x10,0x1f+b*0x10,0x2f+a*0x10); + if(b>0) + { + if((SFB8[cp].lit[lit].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + floodfill(0x11+b*0x10,0x21+a*0x10,GREEN); + } + else + { + if((SFB8[cp].lit[lit].lin[a]/0x80)==1) + floodfill(0x11+b*0x10,0x21+a*0x10,GREEN); + } + setcolor(BLACK); + rectangle(0x11+b*0x10,0x21+a*0x10,0x1e+b*0x10,0x2e+a*0x10); + } + else + { + + setcolor(BROWN); + if(b>0) + { + if((SFB8[cp].lit[lit].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + { + rectangle(0x10+b*0x10,0x20+a*0x10,0x1f+b*0x10,0x2f+a*0x10); + floodfill(0x11+b*0x10,0x21+a*0x10,BROWN); + } + } + else + { + if((SFB8[cp].lit[lit].lin[a]/0x80)==1) + { + rectangle(0x10+b*0x10,0x20+a*0x10,0x1f+b*0x10,0x2f+a*0x10); + floodfill(0x11+b*0x10,0x21+a*0x10,BROWN); + } + } + } + } + } +} +void lit14() +{ + setcolor(BLACK); + for(int z=0;z<224;++z) + line(16,223+z,143,223+z); + setcolor(RED); + outtextxy(20,215,"0 1 2 3 4 5 6 7"); + outtextxy(8,227,"0"); + outtextxy(8,243,"1"); + outtextxy(8,259,"2"); + outtextxy(8,275,"3"); + outtextxy(8,291,"4"); + outtextxy(8,307,"5"); + outtextxy(8,323,"6"); + outtextxy(8,339,"7"); + outtextxy(8,355,"8"); + outtextxy(8,371,"9"); + outtextxy(8,387,"A"); + outtextxy(8,403,"B"); + outtextxy(8,419,"C"); + outtextxy(8,435,"D"); + + for(int a=0;a<14;++a) + { + char ab[2]="q"; + setfillstyle(SOLID_FILL,BROWN); + for(int b=0;b<8;++b) + { + + + if (curx==b&&cury==a&&wys==14) + { + setcolor(GREEN); + ab[0]=abc[curx]; + outtextxy(20+16*curx,215,ab); + ab[0]=abc[cury]; + outtextxy(8,227+16*cury,ab); + rectangle(16+b*16,223+a*16,31+b*16,238+a*16); + if(b>0) + { + if((SFB14[cp].lit[lit].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + floodfill(17+b*16,224+a*16,GREEN); + } + else + { + if((SFB14[cp].lit[lit].lin[a]/0x80)==1) + floodfill(17+b*16,224+a*16,GREEN); + } + setcolor(BLACK); + rectangle(17+b*16,224+a*16,30+b*16,237+a*16); + } + else + { + + setcolor(BROWN); + if(b>0) + { + if((SFB14[cp].lit[lit].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + { + rectangle(16+b*16,223+a*16,31+b*16,238+a*16); + floodfill(17+b*16,224+a*16,BROWN); + } + } + else + { + if((SFB14[cp].lit[lit].lin[a]/0x80)==1) + { + rectangle(16+b*16,223+a*16,31+b*16,238+a*16); + floodfill(17+b*16,224+a*16,BROWN); + } + } + } + } + } +} +void lit16() +{ + setcolor(BLACK); + for(int z=0;z<256;++z) + line(336,111+z,463,111+z); + setcolor(RED); + outtextxy(340,103,"0 1 2 3 4 5 6 7"); + outtextxy(328,115,"0"); + outtextxy(328,131,"1"); + outtextxy(328,147,"2"); + outtextxy(328,163,"3"); + outtextxy(328,179,"4"); + outtextxy(328,195,"5"); + outtextxy(328,211,"6"); + outtextxy(328,227,"7"); + outtextxy(328,243,"8"); + outtextxy(328,259,"9"); + outtextxy(328,275,"A"); + outtextxy(328,291,"B"); + outtextxy(328,307,"C"); + outtextxy(328,323,"D"); + outtextxy(328,339,"E"); + outtextxy(328,355,"F"); + + for(int a=0;a<16;++a) + { + char ab[2]="q"; + setfillstyle(SOLID_FILL,BROWN); + for(int b=0;b<8;++b) + { + + + if (curx==b&&cury==a&&wys==16) + { + setcolor(GREEN); + ab[0]=abc[curx]; + outtextxy(340+16*curx,103,ab); + ab[0]=abc[cury]; + outtextxy(328,115+16*cury,ab); + rectangle(336+b*16,111+a*16,351+b*16,126+a*16); + if(b>0) + { + if((SFB16[cp].lit[lit].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + floodfill(337+b*16,112+a*16,GREEN); + } + else + { + if((SFB16[cp].lit[lit].lin[a]/0x80)==1) + floodfill(337+b*16,112+a*16,GREEN); + } + setcolor(BLACK); + rectangle(337+b*16,112+a*16,350+b*16,125+a*16); + } + else + { + + setcolor(BROWN); + if(b>0) + { + if((SFB16[cp].lit[lit].lin[a]%(0x80/pot(2,b)*2))/(0x80/pot(2,b))==1) + { + rectangle(336+b*16,111+a*16,351+b*16,126+a*16); + floodfill(337+b*16,112+a*16,BROWN); + } + } + else + { + if((SFB16[cp].lit[lit].lin[a]/0x80)==1) + { + rectangle(336+b*16,111+a*16,351+b*16,126+a*16); + floodfill(337+b*16,112+a*16,BROWN); + + } + } + } + } + } +} + + +void spc8() +{ + if(SFB8[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))==1) + SFB8[cp].lit[lit].lin[cury]-=(0x80/pot(2,curx)); + else + SFB8[cp].lit[lit].lin[cury]+=(0x80/pot(2,curx)); +} +void bsp8() +{ + if(SFB8[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))==1) + SFB8[cp].lit[lit].lin[cury]-=(0x80/pot(2,curx)); +} +void ent8() +{ + if(SFB8[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))!=1) + SFB8[cp].lit[lit].lin[cury]+=(0x80/pot(2,curx)); +} +void spc14() +{ + if(SFB14[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))==1) + SFB14[cp].lit[lit].lin[cury]-=(0x80/pot(2,curx)); + else + SFB14[cp].lit[lit].lin[cury]+=(0x80/pot(2,curx)); +} +void bsp14() +{ + if(SFB14[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))==1) + SFB14[cp].lit[lit].lin[cury]-=(0x80/pot(2,curx)); +} +void ent14() +{ + if(SFB14[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))!=1) + SFB14[cp].lit[lit].lin[cury]+=(0x80/pot(2,curx)); +} +void spc16() +{ + if(SFB16[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))==1) + SFB16[cp].lit[lit].lin[cury]-=(0x80/pot(2,curx)); + else + SFB16[cp].lit[lit].lin[cury]+=(0x80/pot(2,curx)); +} +void bsp16() +{ + if(SFB16[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))==1) + SFB16[cp].lit[lit].lin[cury]-=(0x80/pot(2,curx)); +} +void ent16() +{ + if(SFB16[cp].lit[lit].lin[cury]%(0x100/pot(2,curx))/(0x80/pot(2,curx))!=1) + SFB16[cp].lit[lit].lin[cury]+=(0x80/pot(2,curx)); +} +int otw2() +{ + int a; + int b; + int c; + int d; + for(int z=0;z<6;++z) + { + byo8[z]=0; + byo14[z]=0; + byo16[z]=0; + } + CPI=fopen(nazwap,"rb"); + + if(CPI==NULL) + { + sprintf(err,"100: Bˆ¥d otwarcia pliku"); + return 1; + } + else + sprintf(err,"OK"); + fread(&FFH,0x19,1,CPI); +// printf("FFH:\n"); +// printf("id0=%2x\n",FFH.id0); +// printf("id=\"%c%c%c%c%c%c%c\"\n",FFH.id[0],FFH.id[1],FFH.id[2],FFH.id[3],FFH.id[4],FFH.id[5],FFH.id[6]); +// printf("reserved=%2x%2x%2x%2x%2x%2x%2x%2x\n",FFH.reserved[0],FFH.reserved[1],FFH.reserved[2],FFH.reserved[3],FFH.reserved[4],FFH.reserved[5],FFH.reserved[6],FFH.reserved[7]); +// printf("pnum=%d\n",FFH.pnum); +// printf("ptyp=%2x\n",FFH.ptyp); +// printf("fih_offset=%p\n\n",FFH.fih_offset); + + if(FFH.id0!=0xff) + { + sprintf(err,"101: FFH.id0!=0xff"); + fclose(CPI); + return 101; + } + if(FFH.id[0]!='F'||FFH.id[1]!='O'||FFH.id[2]!='N'||FFH.id[3]!='T'||FFH.id[4]!=' '||FFH.id[5]!=' '||FFH.id[6]!=' ') + { + sprintf(err,"102: FFH.id!=\"FONT \""); + fclose(CPI); + return 102; + } + if(FFH.pnum!=1) + { + sprintf(err,"103: FFH.pnum!=1\n"); + fclose(CPI); + return 103; + } + if(FFH.ptyp!=1) + { + sprintf(err,"104: FFH.ptyp!=1\n"); + fclose(CPI); + return 104; + } + fseek(CPI,FFH.fih_offset,0); + fread(&FIH,0x2,1,CPI); +// printf("FFI:\n\n"); +// printf("num_codepages=%d\n\n",FIH.num_codepages); + if(FIH.num_codepages>6) + { + //FIH.num_codepages=6; + sprintf(err,"105: FIH.num_codepages>6\n"); + fclose(CPI); + return 105; + } + + for(a=0; a3) + { + sprintf(err,"109: CPIH.numfonts>3\n"); + fclose(CPI); + return 109; + } + for(b=0;b0) + fseek(CPI,SFH[a][0].height*256+0x6,1); + if(b>1) + fseek(CPI,SFH[a][1].height*256+0x6,1); + + if(SFH[a][b].height==16) + { + for(c=0;c<256;++c) + fread(&SFB16[a].lit[c],0x10,1,CPI); + } + if(SFH[a][b].height==14) + { + for(c=0;c<256;++c) + fread(&SFB14[a].lit[c],0x0e,1,CPI); + } + if(SFH[a][b].height==8) + { + for(c=0;c<256;++c) + fread(&SFB8[a].lit[c],0x08,1,CPI); + } + } + } + + fclose(CPI); + return 0; +} +int zap2() +{ + int a; + int b; + int c; + int d; + + CPI=fopen(nazwap,"wb"); + + if(CPI==NULL) + { + sprintf(err,"200: Bˆ¥d utworzenia pliku:"); + return 200; + } + else + sprintf(err,"OK"); + fwrite(&FFH,0x19,1,CPI); +// printf("FFH:\n"); +// printf("id0=%2x\n",FFH.id0); +// printf("id=\"%c%c%c%c%c%c%c\"\n",FFH.id[0],FFH.id[1],FFH.id[2],FFH.id[3],FFH.id[4],FFH.id[5],FFH.id[6]); +// printf("reserved=%2x%2x%2x%2x%2x%2x%2x%2x\n",FFH.reserved[0],FFH.reserved[1],FFH.reserved[2],FFH.reserved[3],FFH.reserved[4],FFH.reserved[5],FFH.reserved[6],FFH.reserved[7]); +// printf("pnum=%d\n",FFH.pnum); +// printf("ptyp=%2x\n",FFH.ptyp); +// printf("fih_offset=%p\n\n",FFH.fih_offset); + + /*if(FFH.id0!=0xff) + { + sprintf(err,"101: FFH.id0!=0xff"); + fclose(CPI); + return 101; + } + if(FFH.id[0]!='F'||FFH.id[1]!='O'||FFH.id[2]!='N'||FFH.id[3]!='T'||FFH.id[4]!=' '||FFH.id[5]!=' '||FFH.id[6]!=' ') + { + sprintf(err,"102: FFH.id!=\"FONT \""); + fclose(CPI); + return 102; + } + if(FFH.pnum!=1) + { + sprintf(err,"103: FFH.pnum!=1\n"); + fclose(CPI); + return 103; + } + if(FFH.ptyp!=1) + { + sprintf(err,"104: FFH.ptyp!=1\n"); + fclose(CPI); + return 104; + }*/ + fseek(CPI,FFH.fih_offset,0); + fwrite(&FIH,0x2,1,CPI); +// printf("FFI:\n\n"); +// printf("num_codepages=%d\n\n",FIH.num_codepages); + /*if(FIH.num_codepages>6) + { + //FIH.num_codepages=6; + sprintf(err,"105: FIH.num_codepages>6\n"); + fclose(CPI); + return 105; + }*/ + + for(a=0; a3) + { + sprintf(err,"109: CPIH.numfonts>3\n"); + fclose(CPI); + return 109; + }*/ + for(b=0;b0) + fseek(CPI,SFH[a][0].height*256+0x6,1); + if(b>1) + fseek(CPI,SFH[a][1].height*256+0x6,1); + + if(SFH[a][b].height==16) + { + for(c=0;c<256;++c) + fwrite(&SFB16[a].lit[c],0x10,1,CPI); + } + if(SFH[a][b].height==14) + { + for(c=0;c<256;++c) + fwrite(&SFB14[a].lit[c],0x0e,1,CPI); + } + if(SFH[a][b].height==8) + { + for(c=0;c<256;++c) + fwrite(&SFB8[a].lit[c],0x08,1,CPI); + } + } + } + + fprintf(CPI,"\nTen plik zostaˆ wygenerowany za pomoc¥ Edytora napis¢w, wersja 1.0\n autor programu: Balthasar Szczepaäski%c",0x1a); + + fclose(CPI); + return 0; +} + +int otw() +{ + printf("\n\n\n\n\n\n\n\n\n\n\n\n "); + setcolor(BLACK); + + outtextxy(144,184," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,192," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,200," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,208," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + + setcolor(GREEN); + + outtextxy(144,184," ±Nazwa pliku:±±±±±±±±±±±±±±±±±±±±±±±±±±±±± "); + outtextxy(144,192," ± ± "); + outtextxy(144,200," ± ± "); + outtextxy(144,208," ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± "); + scanf("%s",nazwap); + + closegraph(); + initgraph(&kart16,&tryb16,""); + return otw2(); +} +int zap() +{ + printf("\n\n\n\n\n\n\n\n\n\n\n\n "); + setcolor(BLACK); + + outtextxy(144,184," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,192," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,200," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,208," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + + setcolor(GREEN); + + outtextxy(144,184," ±Nazwa pliku:±±±±±±±±±±±±±±±±±±±±±±±±±±±±± "); + outtextxy(144,192," ± ± "); + outtextxy(144,200," ± ± "); + outtextxy(144,208," ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± "); + scanf("%s",nazwap); + + closegraph(); + initgraph(&kart16,&tryb16,""); + return zap2(); +} +int zmn() +{ + printf("\n\n\n\n\n\n\n\n\n\n\n\n "); + setcolor(BLACK); + + outtextxy(144,184," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,192," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,200," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,208," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + + setcolor(GREEN); + + outtextxy(144,184," ±Numer strony kodowej:±±±±±±±±±±±±±±±±±±±± "); + outtextxy(144,192," ± ± "); + outtextxy(144,200," ± ± "); + outtextxy(144,208," ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±± "); + + scanf("%d",&CPEH[cp].codepage); + closegraph(); + initgraph(&kart16,&tryb16,""); + return CPEH[cp].codepage; +} +int bnd() +{ + printf("\n\n\n\n\n\n\n\n\n\n\n\n "); + setcolor(BLACK); + + outtextxy(144,184," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,192," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,200," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,208," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + + setcolor(BROWN); + + outtextxy(144,184," ±Nie wczytano pliku CPI±±±±±±±±±±±±±±±±±±± "); + outtextxy(144,192," ± ± "); + outtextxy(144,200," ± ± "); + outtextxy(144,208," ±±±±±±±±±±±±±±±±±±±±±±±±jeszcze raz?(t/n)± "); + + printf("%s",err); + int a; + for(;;) + { + a=bioskey(_KEYBRD_READ); + if(a/0x100==0x14) + { + closegraph(); + initgraph(&kart16,&tryb16,""); + return 0; + } + if(a/0x100==0x31) + { + closegraph(); + initgraph(&kart16,&tryb16,""); + return 1; + } + + } + + +} +int bnd2() +{ + printf("\n\n\n\n\n\n\n\n\n\n\n\n "); + setcolor(BLACK); + + outtextxy(144,184," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,192," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,200," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,208," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + + setcolor(BROWN); + + outtextxy(144,184," ±Nie zapisano pliku CPI±±±±±±±±±±±±±±±±±±± "); + outtextxy(144,192," ± ± "); + outtextxy(144,200," ± ± "); + outtextxy(144,208," ±±±±±±±±±±±±±±±±±±±±±±±±jeszcze raz?(t/n)± "); + + printf("%s",err); + int a; + for(;;) + { + a=bioskey(_KEYBRD_READ); + if(a/0x100==0x14) + { + closegraph(); + initgraph(&kart16,&tryb16,""); + return 0; + } + if(a/0x100==0x31) + { + closegraph(); + initgraph(&kart16,&tryb16,""); + return 1; + } + + } + + +} +int pmc() +{ + printf("\n\n\n\n\n\n\n\n\n\n\n\n "); + setcolor(BLACK); + + outtextxy(144,184," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,192," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,200," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + outtextxy(144,208," ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ "); + + setcolor(BROWN); + + outtextxy(144,184," ±Pomoc niedost©pna±±±±±±±±±±±±±±±±±±±±±±±± "); + outtextxy(144,192," ± ± "); + outtextxy(144,200," ± ± "); + outtextxy(144,208," ±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±anykey± "); + + printf("%s",err); + bioskey(_KEYBRD_READ); + closegraph(); + initgraph(&kart16,&tryb16,""); + return 0; + + + +} + + + +int main(int argc,char* argv[]) +{ + + + + + +// registerbgidriver(CGA_driver); + registerbgidriver(EGAVGA_driver); + initgraph(&kart16,&tryb16,""); + wys=8; + + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lit8(); + lit14(); + lit16(); + lin8(); + lin14(); + lin16(); + setcolor(RED); + outtextxy(184,472,"odczyt"); + + if(argc>1) + { + sprintf(nazwap,"%s",argv[1]); + status=otw2(); + } + else + status=otw(); + while(status!=0) + { + if (bnd()==0) + status=otw(); + else + return status; + } + + + + + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lit8(); + lit14(); + lit16(); + lin8(); + lin14(); + lin16(); + + for(;;) + { + key=bioskey(_KEYBRD_READ); + if(tab==0) + { + if(key/0x100==0x48) + { + //w g¢r© + if(cury==0) + cury=wys-1; + else + --cury; + if(wys==8) + lit8(); + if(wys==14) + lit14(); + if(wys==16) + lit16(); + } + if(key/0x100==0x50) + { + //w d¢ˆ + if(cury==wys-1) + cury=0; + else + ++cury; + if(wys==8) + lit8(); + if(wys==14) + lit14(); + if(wys==16) + lit16(); + + } + if(key/0x100==0x4b) + { + //w lewo + if(curx==0) + curx=7; + else + --curx; + if(wys==8) + lit8(); + if(wys==14) + lit14(); + if(wys==16) + lit16(); + } + if(key/0x100==0x4d) + { + //w prawo + if(curx==7) + curx=0; + else + ++curx; + if(wys==8) + lit8(); + if(wys==14) + lit14(); + if(wys==16) + lit16(); + } + if (key/0x100==0x39) + { + //spacja + if(wys==8) + { + spc8(); + lit8(); + lin8(); + } + if(wys==14) + { + spc14(); + lit14(); + lin14(); + } + if(wys==16) + { + spc16(); + lit16(); + lin16(); + } + } + if (key/0x100==0x0e) + { + //backspace + if(wys==8) + { + bsp8(); + lit8(); + lin8(); + } + if(wys==14) + { + bsp14(); + lit14(); + lin14(); + } + if(wys==16) + { + bsp16(); + lit16(); + lin16(); + } + } + if (key/0x100==0x1c) + { + //enter + if(wys==8) + { + ent8(); + lit8(); + lin8(); + } + if(wys==14) + { + ent14(); + lit14(); + lin14(); + } + if(wys==16) + { + ent16(); + lit16(); + lin16(); + } + } + + + } + else + { + if(key/0x100==0x48) + { + //w g¢r© l + if(lit<16) + lit=(0xf0+lit%16); + else + lit=((lit/16-1)*16+lit%16); + lit8(); + lit14(); + lit16(); + if (wys==8) + lin8(); + if (wys==14) + lin14(); + if (wys==16) + lin16(); + + } + if(key/0x100==0x50) + { + //w d¢ˆ l + if(lit>=0xf0) + lit=(0+lit%16); + else + lit=((lit/16+1)*16+lit%16); + lit8(); + lit14(); + lit16(); + if (wys==8) + lin8(); + if (wys==14) + lin14(); + if (wys==16) + lin16(); + } + if(key/0x100==0x4b) + { + //w lewo l + if(lit%16==0) + lit+=15; + else + --lit; + lit8(); + lit14(); + lit16(); + if (wys==8) + lin8(); + if (wys==14) + lin14(); + if (wys==16) + lin16(); + } + if(key/0x100==0x4d) + { + + //w prawo l + if(lit%16==15) + lit-=15; + else + ++lit; + lit8(); + lit14(); + lit16(); + if (wys==8) + lin8(); + if (wys==14) + lin14(); + if (wys==16) + lin16(); + } + } + if (key/0x100==0x0f) + { + //tab + if(tab==0) + tab=1; + else + tab=0; + ramka8(); + ramka14(); + ramka16(); + } + if (key/0x100==0x51) + { + //cp++ + if(cp==FIH.num_codepages-1) + cp=0; + else + ++cp; + cpwys(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + + } + if (key/0x100==0x49) + { + //cp-- + if(cp==0) + cp=FIH.num_codepages-1; + else + --cp; + cpwys(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + + } + if (key/0x100==0x52) + { + //wys-- + if(wys==8) + { + if (byo16[cp]!=0) + { + wys=16; + cury%=16; + } + else + { + if(byo14[cp]!=0) + { + wys=14; + cury%=14; + } + } + } + else + { + if(wys==14) + { + if (byo8[cp]!=0) + { + wys=8; + cury%=8; + } + else + { + if(byo16[cp]!=0) + { + wys=16; + cury%=16; + } + } + } + else + { + if(wys==16) + { + if (byo14[cp]!=0) + { + wys=14; + cury%=14; + } + else + { + if(byo8[cp]!=0) + { + wys=8; + cury%=8; + } + } + } + } + } + ramka8(); + ramka14(); + ramka16(); + cpwys(); + lit8(); + lit14(); + lit16(); + } + if (key/0x100==0x53) + { + //wys++ + if(wys==8) + { + if (byo14[cp]!=0) + { + wys=14; + cury%=14; + } + else + { + if(byo16[cp]!=0) + { + wys=16; + cury%=16; + } + } + } + else + { + if(wys==14) + { + if (byo16[cp]!=0) + { + wys=16; + cury%=16; + } + else + { + if(byo8[cp]!=0) + { + wys=8; + cury%=8; + } + } + } + else + { + if(wys==16) + { + if (byo8[cp]!=0) + { + wys=8; + cury%=8; + } + else + { + if(byo14[cp]!=0) + { + wys=14; + cury%=14; + } + } + } + } + } + ramka8(); + ramka14(); + ramka16(); + cpwys(); + lit8(); + lit14(); + lit16(); + } + if (key/0x100==0x3b) + { + //pomoc + setcolor(RED); + outtextxy(24,472,"pomoc"); + sprintf(err,"Przeczytaj plik \"napisy.txt\""); + pmc(); + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + cury%=8; + + + } + if (key/0x100==0x3c) + { + //zapisz + setcolor(RED); + outtextxy(104,472,"zapis"); + status=zap(); + while(status!=0) + { + if (bnd2()==0) + status=zap(); + else + break; + } + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + cury%=8; + + + } + + + if (key/0x100==0x3d) + { + //wczytaj + setcolor(RED); + outtextxy(184,472,"odczyt"); + status=otw(); + while(status!=0) + { + if (bnd()==0) + status=otw(); + else + return status; + } + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + cp=0; + cury%=8; + + + } + if(key/0x100==0x3e) + { + { + //zapisz+system + setcolor(RED); + outtextxy(104,472,"zapis u¾ycie w systemie"); + status=zap(); + while(status!=0) + { + if (bnd2()==0) + status=zap(); + else + break; + } + if(status==0) + { + sprintf(err,"mode con:cp prep=((%d) %s )",CPEH[cp].codepage,nazwap); + system(err); + sprintf(err,"mode con:cp sel=%d",CPEH[cp].codepage); + system(err); + + } + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + cury%=8; + + + } + + + + } + if (key/0x100==0x3f) + { + //zmiana numeru + setcolor(RED); + outtextxy(448,472,"zmiana numeru"); + zmn(); + + new8(); + menu8(); + cpwys(); + ramka8(); + ramka14(); + ramka16(); + lin8(); + lin14(); + lin16(); + lit8(); + lit14(); + lit16(); + cury%=8; + + + } + if (key/0x100==0x40) + { + //koniec + setcolor(RED); + outtextxy(592,472,"koniec"); + delay(1000); + break; + } + } + + + closegraph(); + return 0; +} \ No newline at end of file diff --git a/NAPISY.PRJ b/NAPISY.PRJ new file mode 100644 index 0000000000000000000000000000000000000000..7e450b1e16e06f92fbb5324b3563942beecf1b6c GIT binary patch literal 4540 zcmeI#TTmNS7zgn0KoSC!7VD*fwy>j7dzmhf7HILZEXk6llI%_rw3nbWK#Ik-sR8Pp zp!GI&biBO!;9cvrULQJMp0%Y9>ah^w0WhCe`mguOAk4YzG&2brj zSdG??q#sK^VFi6ITfdNg$(GXzwv$fEnp4srIFEh=KY`PX_!-eJ z?nTOB7hCo{VmeXH)hEFzIrmoxzvi%(zF}STC;Gj&g!zjj_unX<0X87PGx9;AoFNx* z0}tvdm^v>rSji|=3{`_gpav{v#1cfc-~#Xr&sO# z2p9wVQFj}n+Y#LX?gV#%yBT^6+=Jpc$bkuPFSrjJVCa5C4}b?zdsLRao!&$!g}ybA5oQMYt)@%3}sNXlZUHS}$_*Gez;EY!D5!CU5sv$BZ_|jCRM2 zjgA?c95Xr`Gp=&XxY{w}8pn)l9Wyk?j849A7y8f_{_+e7FW)=uZSA}k2FDv)Hu0TA z)V=Vh7Ua8F4O$k3<)gy3`FBD@MG7vNy^{>-jHWsN$Z6gL+Sppp`p1~ zkVXfKon-cYeq*Z<)1&9@Q9t`xlwLb|b_sa{v6J@>b6$irx{otTpYiMn|CJ>?ZsXhW z|D&W8Xr&PUx}Q3DJ>`Lt5!SB{>#Etch4?Fei*a3YTPmhok;JytjHc<11-w;JC3&$c zU=tI=vy8da6p>DQ6m zq_#sl)6u6*7V%OvOUr5*ZCFcd1KOz8MhC=Vp1*-cgeg=}BfjG;{~74 zUVZ$(^D6k_KDX2(lsQ<>85c=Ae*nB_w31fP Ua=Gxf?V~!XC*SnNf$xle04eBgTL1t6 literal 0 HcmV?d00001 diff --git a/NAPISY.TXT b/NAPISY.TXT new file mode 100644 index 0000000..c3e00a3 --- /dev/null +++ b/NAPISY.TXT @@ -0,0 +1,231 @@ + Edytor napis¢w. wersja 1.0 Balthasar Szczepaäski + + 1.opis programu + 2.sterowanie + 3.zmiany + 4.co nie dziaˆa + 5.wyja˜nienie bˆ©d¢w + 6.kontakt + 7.lista plik¢w + + ============================================================== + + 1.Opis programu + + Program "Edytor napis¢w" sˆu¾y do edycji plik¢w .cpi, w + kt¢rych s¥ zapisane informacje o stronach kodowych i ksztaˆcie + liter na ekranie w trybie tekstowym. Za pomoc¥ tego programu + mo¾na wczytywa† i zapisywa† pliki cpi, zmienia† ksztaˆt liter, + i numer strony kodowej, oraz zaˆadowa† czcionk© do systemu. + Program zostaˆ skompilowany za pomoc¥ Turbo C++ 3.0. + + Program potrafi obsˆu¾y† format "FONT " wyst©puj¥cy w + systemach MS-DOS, IBM PC-DOS, Microsoft Windows 1.x, 2.x, 3.x, + 9x, ME i innych. Nie potrafi obsˆu¾y† formatu "DRFONT " + wyst©puj¥cego w systemie DR-DOS, ani "FONT.NT" wyst©puj¥cego w + systemach Microsoft Windows NT, 2000, XP, Vista, 7. Natomiast + w tych systemach b©d¥ dziaˆaˆy pliki w formacie "FONT ", + tak¾e te utworzone za pomoc¥ tego programu. Liczba stron + kodowych w pliku nie mo¾e przekroczy† 6, szeroko˜† liter musi + wynosi† 8, wysoko˜† liter nie mo¾e mie† innych warto˜ci ni¾ + 8,14,albo 16,przy czym wysoko˜ci nie mog¥ si© powtarza† w + obr©bie jednej strony kodowej, liczba znak¢w musi wynosi† 256. + + Program powinien dziaˆa† w systemach DOS* i Windows** na + komputerze z kart¥ graficzn¥ VGA lub p¢«niejsz¥. Mo¾e dziaˆa† + na emulatorze.*** + + *Nie wiem, czy zadziaˆa w DOSie starszym ni¾ 3.3, zreszt¥ nie + ma sensu u¾ywa† Edytora napis¢w w starszych wersjach DOSa, + poniewa¾ nie obsˆuguj¥ stron kodowych. + + **W systemie Windows 98 i poprzednich nie byˆo ¾adnych + problem¢w. + + W systemie Windows XP, przy niekt¢rych kartach graficznych + program wyˆ¥czaˆ si© natychmiast po wˆ¥czeniu, ale to byˆo w + wersji beta w trybie CGA, w tej wersji powinno dziaˆa†. Je¾eli + nie dziaˆa trzeba uruchomi† system w trybie awaryjnym. + + W systemie Windows Vista program mo¾e zosta† zamkni©ty przez + system z komentarzem "Ten system nie obsˆuguje trybu + peˆnoekranowego.OK". W takim razie nale¾y zast¥pi† sterownik + karty graficzej na wersj© przeznaczon¥ dla Windowsa XP, albo + u¾ywa† programu przy systemie wˆ¥czonym w trybie awaryjnym. + Je¾eli system nie pozwala zainstalowa† sterownika, trzeba + wˆ¥czy† system w trybie awaryjnym i zalogowa† si© jako + Administraktor, a dopiero wtedy instalowa† sterownik. Czasami + system potrafi podmieni† sterownik spowrotem na poprzedni¥, + je˜li ta jest jeszcze na dysku. + + W systemie Windows 7 sytuacja jest identyczna jak w Windowsie + Vista. + + ***Jedynym emulatorem, w kt¢rym pr¢bowaˆem uruchomi† program, + jest DOSBox w wersji 0.63. Program zawiesza si© w nim chwil© + po uruchomieniu, przed narysowaniem ekranu. Nie wiem czy i jak + dziaˆa w innych wersjach DOSBoxa/innych emulatorach. + + ============================================================== + + 2.Sterowanie + + kursor w g¢re: strzaˆka w g¢r© + kursor w d¢ˆ: strzaˆka w d¢ˆ + kursor w lewo: strzaˆka w lewo + kursor w prawo: strzaˆka w prawo + przeˆ¥cznik rysowania i wybierania: tabulator + zamalowanie kratki: enter + zmazanie kratki: backspace + zmiana stanu kratki: spacja + przeˆ¥czanie stron kodowych: page up/page down + przeˆ¥czanie wysoko˜ci liter: insert/delete + + klawisze F: + + F1: pomoc, w tej wersji nie dziaˆa. + + F2: zapis pliku pod podan¥ nazw¥, w razie bˆ©du zapisu mo¾na + spr¢bowa† kolejny raz pod inn¥ nazw¥. + + F3: wczytanie pliku z podanej nazwy, w razie bˆ¥du odczyt + mo¾na spr¢bowa† odczyta† inny plik. Je¾eli ¾aden plik nie + b©dzie wszytany,program zostanie zamkni©ty. + + F4: zapis pliku tak, jak przy F2 i wczytanie do systemu przy + u¾yciu polecenia systemowego MODE. Je¾eli zostanie + nadpisany plik u¾uwany domy˜lnie przez system do ˆadowania + liter zmiany w systemie b©d¥ trwaˆe, nawet przy zapisie za + pomoc¥ F2. w przeciwnym razie zmiany b©d¥ chwilowe. Na + przykˆad je¾eli program jest uruchomiony w DOSie, zmiany + b©d¥ widoczne do ponownego uruchomienia systemu. Je˜l + program zostaˆ uruchomiony w Windowsie z wiersza poleceä, + zmiany b©d¥ widoczne a¾ do zamkni©cia tego wiersza poleceä + i tylko w trybie peˆnoekranowym. Je¾eli program zostaˆ + uruchomiony przez klikni©cie na jego ikon©, albo na ikon© + pliku CPI, zmiany w systemie b©d¥ widoczne tylko do + wyˆ¥czenia programu. W emulatorze najprawdopodobniej nie + b©dzie wida† ¾adnych zmian. + + F5: zmiana numeru aktualnie wybranej strony kodowej. Numery + wi©ksze ni¾ trzycyfrowe mog¥ nie dziaˆa† w niekt¢rych + systemach. + + F6: koniec programu. + + ============================================================== + + 3. Zmiany + + beta: + To jest pierwsza dziaˆ¥j¥ca wersja. + 1.0: + -zmiana trybu CGA na VGA + -dziaˆa wysoko˜† 14 i 16 + -wszystkie wysoko˜ci s¥ widoczne na jednym ekranie + -mo¾na zapisywa† pliki i zaˆadowa† stron© do systemu + -mo¾na otworzy† poda† plik do otwarcia jako argument w + wierszu poleceä + -wczytywane dane nie s¥ ju¾ wypisywane na ekranie + -Funkcje klawiszy F zgadzaj¥ si© z opisem na dole ekranu + + ============================================================== + + 4. Co nie dziaˆa + + -przy przeˆ¥czaniu rozmiaru czcionki okna z zestawem + znak¢w nie s¥ aktualizowane + -nie ma pomocy wewn¥trz programu + -po wyˆ¥czeniu z powodu bˆ©du otwarcia pliku nie jest + wyˆ¥czany tryb graficzny + + ============================================================== + + 5. Wyja˜nienie bˆ©d¢w + + 100: bˆ¥d otwarcia pliku: + Nie da si© otworzy† pliku o podanej nazwie. + + 101: FFH.id0!=0xff + Identyfikator id0 ma inn¥ warto˜† ni¾ 0xff. Plik jest w + formacie "DRFONT " lub nie jest plikiem cpi. + + 102: FFH.id !="FONT " + Plik jest w formacie "FONT.NT" lub "DRFONT ", albo innym, + nieznanym formacie. + + 103: FFH.pnum!=1 + Jest wi©cej wska«nik¢w na FontInfoHeader - plik jest w + nowym, nieznanym formacie lub nie ma ¾adnego wska«nika - + plik nie zawiera danych. + + 104: FFH.ptyp!=1 + FontInfoHeader jest w nieznanym formacie. + + 105: FIH.num_codepages>6 + Plik zawiera wi©cej ni¾ 6 stron kodowych. + + 106: CPEH.cpeh_size!=0x1c + CodePageEntryHeader ma nieprawidˆow¥ dˆugo˜†. + + 107: CPEH.cpeh_device_type!=1 + Czcionka nie jest czcionk¥ ekranow¥, jest przeznaczona na + drukark© lub inne urz¥dzenie. + + 108: CPIH.version!=1 + W pliku w formacie "FONT " umieszczono czcionk© w + formacie "FONT.NT", "DRFONT ", albo innym, nieznanym + formacie. + + 109: CPIH.num_fonts>3 + Strona kodowa zawiera wi©cej ni¾ 3 czczionki. + + 110: SFH.height!=(8 || 14 || 16) + Czcionka ma nieodpowiedni¥ wysoko˜† znak¢w. + + 111: SFH.width!=8 + Czcionka ma nieodpowiedni¥ szeroko˜† znak¢w. + + 112: SFH.num_chars!=256 + Czcionka ma nieodpowiedni¥ ilo˜† znak¢w. + + 113: SFH.height==8 ju¾ byˆo + Wysoko˜† znak¢w==8 wyst©puje w tej stronie kodowej wi©cej + ni¾ raz + + 114: SFH.height==14 ju¾ byˆo + Wysoko˜† znak¢w==14 wyst©puje w tej stronie kodowej wi©cej + ni¾ raz. + + 115: SFH.height==16 ju¾ byˆo + Wysoko˜† znak¢w==16 wyst©puje w tej stronie kodowej wi©cej + ni¾ raz. + + 200: Bˆ¥d utworzenia pliku: + Nie da si© utworzy†/zmodyfikowa† pliku o podanej nazwie. + + Przeczytaj plik "napisy.txt" + Pomoc wewn¥trz programu nie dziaˆa, nale¾y przeczyta† ten + plik. + + ============================================================== + + 6. Kontakt + + e-mali: balthasar_s@interia.pl + telefon: +48664641394 + www: http://www.baltixy.w.interia.pl + + ============================================================== + + 7. Lista plik¢w + + nazwa |rozmiar + ----------+------- + EGAVGA.OBJ| 5658 + NAPISY.TXT| 9388 + NAPISY.EXE| 137623 + NAPISY.CPP| 37801 + NAPISY.PRJ| 4540 + + ============================================================== -- 2.30.2