PDA

View Full Version : فارسی نویسی در C تحت داس



30yavash
سه شنبه 12 اسفند 1382, 10:43 صبح
آقا من یادمه اون زمانا یه برنامه تحت داس بود که می یومدیم باهاش کاراکترها رو طراحی می کردیم مثلا کاراکترهای فارسی رو طراحی می کردیم و بعد اون رو توی جدول اسکی قرار می دادیم ( البته جزئیاتش رو دیگه یادم نیست).
حالا از اون موقع سالها می گذره که من مجبور شدم برای پروژه دانشگاه یه همچین چیزی تحویل بدم.کسی اون برنامه رو داره؟

Yunas Farhadnia
سه شنبه 12 اسفند 1382, 22:24 عصر
برای فارسی نویس در داس و زبان های تحت داس می تونی از نرم افزار سپند استفاده کنی البته فکر کنم سایه هم می تونه به شما کمک کنه کافی ترتیبی بدی که هر بار که وارد داس شدی این نرم افزار به صورت خود کار اجرا بشه :)

30yavash
یک شنبه 17 اسفند 1382, 15:22 عصر
برای فارسی نویس در داس و زبان های تحت داس می تونی از نرم افزار سپند استفاده کنی البته فکر کنم سایه هم می تونه به شما کمک کنه کافی ترتیبی بدی که هر بار که وارد داس شدی این نرم افزار به صورت خود کار اجرا بشه :)
نه منظورم سپند نبود.اون بدرد مار من نمی خوره.این روشی که من دنبالشم جدول اسکی رو دستکاری می کنه البته به دلخواه خودت و خوبی که داره اینه که دیگه نیازی به برنامه جانبی مثل سپند نداری.(آخه اون جوری که خیلی ضایست حسابش رو بکن بری به استاد برنامه بدی بعد بهش بگی قبلش سپند رو اجرا کن :wink: )

arshia_
سه شنبه 19 اسفند 1382, 15:16 عصر
گمون کنم بتونی با نرم افزار pc tool یا nu بتونی روی کاراکترها کمی کار کنی ولی موضوع به این راحتی نیست بهتره یه کد اسمبلی گیر بیاری یا اینکه یه برنامه بنویسی که مقادیر فارسی رو توی یه فایل ذخیره کنه و توی خود برنامه از اون استفاده کنه

Hossein Bazyan
چهارشنبه 27 اسفند 1382, 23:41 عصر
دوست عزیز سلام
برای نوشتن فونت فارسی در سی ++ باید اول فونت را طراحی نمایی و یک فایل اجرایی از آن بسازی سپس قبل از اجرای برنامه ات آن فایل اجرایی را اجر کنی که مونیتورت فارسی شود . بعد از این میتوانی فارسی ببینی و برای نوشتن فیلدها به شکل فارسی باید از یکسری توابع استفاده کنی .
برنامه ای که مورد نظر شماست برای طراحی فونت بنام FontEdit میباشد که یک نسخه از آنرا من دارم و حجم خیلی کمی در حدود 20 کیلو بایت دارد اما متاسفانه من الان در موقعیتی نیستم که بتوانم آنرا برات ارسال نمایم یعنی در ماموریت خارج از محل کار و منزل بسر میبرم تا یک ماه دیگر . اگر توانستی پیدا کنی که الحمدالله در غیر اینصورت پیغام بده که من به محض اتمام ماموریت برات ارسال نمایم . موفق باشی

Spoofed
پنج شنبه 28 اسفند 1382, 10:46 صبح
ایجاد کاراکترهای فارسی مستقر در حافظه تحت داس:


//#include <stdio.h>
//#include <conio.h>
//#include <stdlib.h>
#include <dos.h>

void farsi(void)
{
unsigned int font;
struct REGPACK reg;
union REGS regs1;
char ex_array[1457] ;
char font_def[91][14]={
/* 128 - 175 */
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x8 ,0x1c,0x8 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x20,0x30,0x38,0x18,0xc ,0xc ,0x4 ,0x4 ,0x4 ,0x4 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x42,0x7e,0x7c,0x30,0x18,0x18,0x8 ,0x8 ,0x8 ,0x8 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x49,0x7f,0x76,0x30,0x18,0x18,0x8 ,0x8 ,0x8 ,0x8 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x8 ,0x10,0x20,0x18,0x8 ,0x10,0x20,0x21,0x3e,0x1c,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x8 ,0x8 ,0xc ,0x16,0x23,0x41,0x49,0x7f,0x36,0x0 ,0x0 },
{0x0 ,0x0 ,0x42,0x7e,0x3e,0x4 ,0x4 ,0x4 ,0x6 ,0x3 ,0x3 ,0x1 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x41,0x41,0x63,0x36,0x1c,0x1c,0x8 ,0x8 ,0x8 ,0x8 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x8 ,0x8 ,0x8 ,0x8 ,0x1c,0x1c,0x36,0x63,0x41,0x41,0x0 ,0x0 },
{0x0 ,0x0 ,0x18,0x3c,0x44,0x44,0x3c,0x4 ,0x6 ,0x3 ,0x3 ,0x1 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0xc ,0x18,0x18,0x18,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0xff,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x3c,0x42,0x40,0x60,0x10,0xc ,0xc ,0x0 ,0xc ,0xc ,0x0 ,0x0 },
{0x0 ,0x1 ,0x3e,0x40,0x8 ,0x8 ,0x8 ,0x8 ,0x8 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0xc ,0x10,0x3c,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0xc ,0x10,0x1c,0x20,0xc ,0x10,0x0 ,0x0 ,0x0 },
{0x0 ,0x8 ,0xc ,0x8 ,0x8 ,0x8 ,0x8 ,0x8 ,0x8 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x4 ,0x4 ,0x4 ,0x4 ,0x4 ,0x4 ,0x4 ,0x3 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x40,0x81,0x81,0x7e,0x0 ,0x0 ,0x10,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x20,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x40,0x81,0x81,0x7e,0x0 ,0x0 ,0x28,0x10,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x28,0x10,0x0 },
{0x0 ,0x0 ,0x0 ,0x14,0x0 ,0x40,0x81,0x81,0x7e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x14,0x0 ,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x8 ,0x14,0x0 ,0x40,0x81,0x81,0x7e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x8 ,0x14,0x0 ,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x18,0x24,0x2 ,0x3f,0x40,0x80,0x88,0x80,0x41,0x3e},
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x18,0x24,0x3 ,0xfc,0x0 ,0x0 ,0x8 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x18,0x24,0x2 ,0x3f,0x40,0x80,0x94,0x88,0x41,0x3e},
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x18,0x24,0x3 ,0xfc,0x0 ,0x0 ,0x28,0x10,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x18,0x24,0x2 ,0x3f,0x40,0x80,0x80,0x80,0x41,0x3e},
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x18,0x24,0x3 ,0xfc,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x10,0x0 ,0x18,0x24,0x2 ,0x3f,0x40,0x80,0x80,0x80,0x41,0x3e},
{0x0 ,0x0 ,0x8 ,0x0 ,0x0 ,0x18,0x24,0x3 ,0xfc,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x4 ,0x2 ,0x1 ,0x21,0x3e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x8 ,0x0 ,0x0 ,0x4 ,0x2 ,0x1 ,0x21,0x3e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0x1 ,0x2 ,0x24,0x18,0x0 },
{0x0 ,0x0 ,0x0 ,0x2 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0x1 ,0x2 ,0x24,0x18,0x0 },
{0x0 ,0x0 ,0x2 ,0x5 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0x1 ,0x2 ,0x24,0x18,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x15,0x15,0x9a,0x88,0x88,0x88,0x70,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x15,0x15,0xea,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x4 ,0xa ,0x0 ,0x0 ,0x15,0x15,0x9a,0x88,0x88,0x88,0x70,0x0 },
{0x0 ,0x4 ,0xa ,0x0 ,0x0 ,0x0 ,0x15,0x15,0xea,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x2 ,0x5 ,0x29,0x1e,0x88,0x88,0x88,0x70,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x6 ,0x29,0x31,0xde,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x2 ,0x0 ,0x0 ,0x2 ,0x5 ,0x29,0x1e,0x88,0x88,0x88,0x70,0x0 },
{0x0 ,0x4 ,0x0 ,0x0 ,0x0 ,0x6 ,0x29,0x31,0xde,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x20,0x30,0x20,0x20,0x26,0x29,0x31,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
/* 225 - 255 */
{0x0 ,0x20,0x34,0x20,0x20,0x26,0x29,0x31,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0xc ,0x12,0x10,0x3e,0x40,0x80,0x80,0x80,0x42,0x3c},
{0x0 ,0x0 ,0x0 ,0x0 ,0xc ,0x1e,0xc ,0x12,0x21,0x40,0x40,0x40,0x21,0x1e},
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1c,0x3c,0x18,0xe7,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x6 ,0x9 ,0x8 ,0xff,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x8 ,0x0 ,0x0 ,0xc ,0x12,0x10,0x3e,0x40,0x80,0x80,0x80,0x42,0x3c},
{0x0 ,0x4 ,0x0 ,0x0 ,0xe ,0x1e,0xc ,0x12,0x21,0x40,0x40,0x40,0x21,0x1e},
{0x0 ,0x0 ,0x8 ,0x0 ,0x0 ,0x1c,0x3c,0x18,0xe7,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x4 ,0x0 ,0x0 ,0x0 ,0x6 ,0x9 ,0x8 ,0xff,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x4 ,0x0 ,0x0 ,0x6 ,0x49,0x89,0x87,0x7e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x4 ,0x0 ,0x0 ,0x6 ,0x9 ,0x9 ,0x7 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0xa ,0x0 ,0x0 ,0x2 ,0x5 ,0x45,0x83,0x81,0x81,0x42,0x3c,0x0 },
{0x0 ,0xa ,0x0 ,0x0 ,0x6 ,0x9 ,0x9 ,0x7 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x2 ,0x4 ,0x8 ,0x8 ,0x4 ,0x2 ,0x41,0x81,0x7e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x3 ,0x4 ,0x8 ,0x8 ,0x6 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x12,0x24,0x8 ,0x8 ,0x4 ,0x2 ,0x41,0x81,0x7e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x13,0x24,0x8 ,0x8 ,0x6 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x1 ,0x3 ,0x1 ,0x1 ,0x1 ,0x1 ,0x41,0x81,0x81,0x81,0x42,0x3c,0x0 },
{0x0 ,0x21,0x21,0x11,0x11,0x9 ,0x9 ,0x7 ,0x1e,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x1 ,0x3 ,0x1 ,0x1 ,0x1 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x6 ,0x9 ,0x3e,0x40,0x40,0x40,0x40,0x40},
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x6 ,0x9 ,0x9 ,0xf6,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x8 ,0x0 ,0x41,0x81,0x81,0x81,0x42,0x3c,0x0 },
{0x0 ,0x0 ,0x0 ,0x8 ,0x0 ,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x6 ,0x9 ,0x9 ,0x7 ,0x1 ,0x2 ,0x44,0x38,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0xc ,0x12,0x11,0x11,0xe ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1c,0x24,0x28,0xf3,0x24,0x14,0xc ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x8 ,0x1c,0x26,0x25,0x19,0xee,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x7 ,0x48,0x8c,0x82,0x82,0x7c},
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x3 ,0x44,0x88,0x8e,0x81,0x81,0x7e,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x1 ,0x1 ,0xfe,0x0 ,0x0 ,0x28,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 ,0x0 },

/***** latin number patterns */

{0x0 ,0x0 ,0x0 ,0x7c,0xc6,0xce,0xde,0xf6,0xe6,0xc6,0xc6,0x7c,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x18,0x38,0x78,0x18,0x18,0x18,0x18,0x18,0x7e,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x7c,0xc6,0x6 ,0xc ,0x18,0x30,0x60,0xc6,0xfe,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x7c,0xc6,0x6 ,0x6 ,0x3c,0x6 ,0x6 ,0xc6,0x7c,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0xc ,0x1c,0x3c,0x6c,0xcc,0xfe,0xc ,0xc ,0x1e,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0xfe,0xc0,0xc0,0xc0,0xfc,0x6 ,0x6 ,0xc6,0x7c,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x38,0x60,0xc0,0xc0,0xfc,0xc6,0xc6,0xc6,0x7c,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0xfe,0xc6,0x6 ,0xc ,0x18,0x30,0x30,0x30,0x30,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x7c,0xc6,0xc6,0xc6,0x7c,0xc6,0xc6,0xc6,0x7c,0x0 ,0x0 },
{0x0 ,0x0 ,0x0 ,0x7c,0xc6,0xc6,0xc6,0x7e,0x6 ,0x6 ,0xc ,0x78,0x0 ,0x0 }

};

regs1.h.ah = 0x12;
regs1.h.bl = 0x10;
int86(0x10,&regs1,&regs1);
font = regs1.h.bl;
if(font==0x10) font=0; /* neither EGA nor VGA */
else
{
regs1.x.ax = 0x1130 ;
regs1.h.bh = 6 ;
int86(0x10,&regs1,&regs1);
font = regs1.x.cx;
/* download graphic chr.s here */
}
/*********** Make Font Data ************************************/
if((char )font) /* EGA or VGA */
{
register unsigned int j ;
char i ;
for (j=0 ; j<91 ; j++ )
{
for (i=0 ; i< 14 ; i++ )
ex_array[i+ j * font]=font_def[j][i];
if(font==16) ex_array[14+j*16]=ex_array[15+j*16]=0;
}
/* download */
reg.r_bx=font<<8;
reg.r_cx=48;
reg.r_dx=128;
reg.r_es=FP_SEG(ex_array);
reg.r_bp=FP_OFF(ex_array);
reg.r_ax=0x1110;
intr(0x10,&reg);
reg.r_bx=font<<8;
reg.r_cx=32;
reg.r_dx=224;
reg.r_es=FP_SEG(ex_array+48*font);
reg.r_bp=FP_OFF(ex_array+48*font);
reg.r_ax=0x1110;
intr(0x10,&reg);
}

}
void main(void)
{
farsi();
}

سیدهانی
جمعه 14 فروردین 1383, 12:58 عصر
سلام
میشه درمورد این آرایه ای که تعریف کردید توضیح بدید ؟ یعنی میخوام بدونم که دقیقا چند عضو آرایه مخصوص به یک حرف هستش و چطور ما اون حرف رو می سازیم ؟