ParsX.com
پذیرش پروژه از دانشجویی ... تا سازمانی 09376225339
 
   ProfileProfile   Log in to check your private messagesLog in to check your private messages  |  FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups Log inLog in   RegisterRegister 

Using Page in text mode

 
Post new topic   Reply to topic    ParsX.com Forum Index -> C/C++ Programming
View previous topic :: View next topic  
Author Message
su-30mk
مهمون يكي دو روزه


Joined: 16 Dec 2006
Posts: 12

PostPosted: Mon Jan 22, 2007 10:55 am    Post subject: Using Page in text mode Reply with quote

سلام...
من در C میخواهم با صفحات کار کنم که یک کار را در صفحه شماره مثلا 2 انجام بدهم
و بعد آن را نمایش بدهم با IRQ اسمبلی عوض میشود اما تمام دستورات printf,puts و...
انگار با صفحه شماره 0 یا default کار میکنن.
حالا اگر میشه بگویید که من چطوری این کار را انجام بدهم و اگر روش دیگری را بلدید
من مشتاق یاد گیرفتن هستم...
تشکر

شماره irg
ah =05h
al=01 که شماره صفحه است
int 10h
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Mon Jan 22, 2007 7:45 pm    Post subject: Reply with quote

من فكر كنم كنترل صفحات دست سيستم عامل هست .
Back to top
su-30mk
مهمون يكي دو روزه


Joined: 16 Dec 2006
Posts: 12

PostPosted: Tue Jan 23, 2007 9:36 pm    Post subject: Reply with quote

سلام...
فکرکنم بهتر بیشتر توضیح بدهم....متاسفم که طولانی است...
################################################
منظورمن این صفحات گرافیکی که من وشما روزانه با آنها سروکله میزنیم نیست که بزرگ میشوند و همچنین میشود آنها را بست یا به task bar انتقال داد نیست...
منظور من آن صفحاتی که میشه به دور از دید کار بر روی آن محاسباتی کرد و بعد آن را نمایش داد تا باعث سرعت کارایی شود...
ذکر مثل همیشه کار ساز است :
(درحالتtextmode )

فرض کنید که من یه صفحه با کلی فرمان gotoxy دادن و چاپ کردن یه سری چیزا آماده کردم
و فعلا کاربر داره آن را میبیند .حالا من میخواهم که صفحه ای که قرار بعدا
نمایش داده شود که پر از gotoxy و printf و به طور کلی یه پردازش تصویر دارم
چطوری صرفه جویی کنم و کار خود را کم کنم یا سرعت برنامه را زیاد کنم
حالا دو تا راه دارم:

1:پاک کردن صفحه جاری و نوشتن تمام چیزهای که قرار بود نشان کاربر بدم.
با این کار مشکل من حل میشود ولی با پاک کردن و نوشتن چیزهای مورد نیازم
باعث میشود صفحه یه چشمک بزنه و اگر دوباره به این صفحه نیاز داشتم باید دوباره
آن را درست کنم یعنی کار اضافه (کار اضافه هم سرعت را پایین کشیده)

2:بطور خلاصه استفاده از صفحات که اگر اشتباه نکنم در هر حالت تعداد آن فرق میکند.
ولی در حالت معمول 4 صفحه داریم (0-3) و در هر زمان یکی از آنها دیده میشود
ومیشه با تمام آنها کار کرد. در این روش مطابق مثل من میتوانم چیزهایی راکه میخواهم
برای بار اول نمایش بدهم در صفحه شماره -0- قرار دهم و آن را نمایش دهم و
صفحهشماره -1- را چیزهای دیگر که قرار هست نمایش بدهم...
با این کار من فقط یک بار صفحات را درست کردم و به هر کدام که احتیاج داشته باشم
فقط لازمه با این IRQ که بالا گفتم بین صفحاتم جابجا شوم...

در ضمن کار بردهای بسیار زیادی دارد تا آنجایی که من میدانم
-در OpenGL که در بازی ها استفاده میشود از این صفحات استفاده میشود البته فکر کنم
تعداد آنها متفاوت است.
-اگر یه بازی مسخره 2Dبخواهید ساخت این صفحات به شما کمک میکنند.
-من این را سر ساخت یک منوی میخواهم در text mode تازه هنوز میخواهم یه سوال دیگر هم بپرسم وقتی انشا ا.. جواب اینروگرفتم Wink

#################################################
دیگر از این واضح تر نمیتوانم بگم.
حالا با توجه به post قبلی میشه کمک کنید من مشکلم حل شود.
#################################################
اگر جایی اشتباه کردم لطف کنید من را روشن کنید..
تشکر Wink
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Wed Jan 24, 2007 2:00 pm    Post subject: Reply with quote

من فکر کردم منظورت صفحه های حافظه هستش .
یه مقدار از کدی که برای تغییر صفحات گذاشتی رو بزار ...
Back to top
su-30mk
مهمون يكي دو روزه


Joined: 16 Dec 2006
Posts: 12

PostPosted: Wed Jan 24, 2007 8:36 pm    Post subject: Reply with quote

سلام..
#include <stdio.h>
#include <conio.h>
void  main()
{
   //page number in bh
   asm {        mov ah,05h
            mov al,1
            int 10h
          }
   printf("page 1");
   asm {   mov ah,05h
         mov al,2
         int 10h
       }
   printf("page 2");
   asm {   mov ah,05h
         mov al,0
         int 10h
       }
   printf("Whic one 1/2:");   //it write in page 0
   char ch=getch();
   //here i switch between  pagies
   if( ch=='1')
      asm {   mov ah,05h
            mov al,1
            int 10h
          }
   else if(ch=='2')
      asm {   mov ah,05h
            mov al,2
            int 10h
          }
   getch();
}
ببین من مشکلم حل شد.این کدهم کار میکند.
###################################################
اگر در کد نگاه کنید می بیند که اول صفحه به نمایش داده میشود و دستور printf در آن اجرا شده و سپس صفحه بعدی نمایش داده میشود بعد دستور printf باز اجرا شده و در آخر روی آنها سویچ میکنه (با گذاشتن getch() قبل از عوض شدن صفحه)
حالا من میخواهم بدونم میشه کاری کرد که بدون نمایش داده شدن صفحه روی آن نوشت
مثل اسمبلی که برای چاپ یک کارکتر بدون نمایش صفحه. کارکتر را در صفحه مورد نظر نوشته
وسپس مامیتوانیم این کار را با همین IRQ صفحه را نمایش دهیم.
این کار را میشه کرد یا نه Question Exclamation
تشکر.
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Sat Jan 27, 2007 9:38 am    Post subject: Reply with quote

كد شما اجرا نشد ؟ بالاخره سي يا اسمبلي ؟
Back to top
su-30mk
مهمون يكي دو روزه


Joined: 16 Dec 2006
Posts: 12

PostPosted: Sat Jan 27, 2007 2:39 pm    Post subject: Reply with quote

ولی برای من کار کرد همین الان compile کردم...
در C
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Sat Jan 27, 2007 9:26 pm    Post subject: Reply with quote

كامپايلرت چيه ؟
Back to top
su-30mk
مهمون يكي دو روزه


Joined: 16 Dec 2006
Posts: 12

PostPosted: Mon Jan 29, 2007 10:36 am    Post subject: Reply with quote

TC ver 3.0
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Thu Feb 01, 2007 9:14 am    Post subject: Reply with quote

من اين توربو سي رو پيدا كردم و دانلود كردم .
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Thu Feb 01, 2007 10:14 am    Post subject: Reply with quote

ميتوني به جاي اينكار از تابع sprintf استفاده كني :

char buff[100]
sprintf(buff,"salam mamad %d",i);
printf("%s",buff);
Back to top
su-30mk
مهمون يكي دو روزه


Joined: 16 Dec 2006
Posts: 12

PostPosted: Sun Feb 25, 2007 10:08 pm    Post subject: Reply with quote

سلام آقا وحید گل...تشکر...
اما این کار برای موقعی بکار میرود که فقط یک رشته در آن ذخیره کنی اگر شما قرار باشد یه
واسط گرافیکی برای برنامه تا بنویسید بکار نمی آید چون نه رنگی و نه موقعیتی در کار است
..در ابتدای کار می خواستم یه struct برای کارم بنویسم ولی بخاطر over head زیادی این کار را نکردم....
در آخر بهترین کار اگر قرار باشه این جوری رفتار کنم یه راه بهتر که نوشتن در آدرس صفحه نمایش است دارم سعی میکنم که درستش کنم چون هم شماره صفحه در وجود دارد وهم اینکه صفات یک کارکتر.
سعی خودم دارم میکنم....
به هر حال تشکر... Wink
Back to top
vahid
بي تو هرگز


Joined: 26 Nov 2004
Posts: 2973
Location: Tehran

PostPosted: Mon Feb 26, 2007 8:06 am    Post subject: Reply with quote

حلش كردي خبرش رو بده .
Back to top
Display posts from previous:   
Post new topic   Reply to topic    ParsX.com Forum Index -> C/C++ Programming All times are GMT + 3.5 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum