View previous topic :: View next topic |
Author |
Message |
su-30mk مهمون يكي دو روزه
Joined: 16 Dec 2006 Posts: 12
|
Posted: Mon Jan 22, 2007 10:55 am Post subject: Using Page in text mode |
|
|
سلام...
من در C میخواهم با صفحات کار کنم که یک کار را در صفحه شماره مثلا 2 انجام بدهم
و بعد آن را نمایش بدهم با IRQ اسمبلی عوض میشود اما تمام دستورات printf,puts و...
انگار با صفحه شماره 0 یا default کار میکنن.
حالا اگر میشه بگویید که من چطوری این کار را انجام بدهم و اگر روش دیگری را بلدید
من مشتاق یاد گیرفتن هستم...
تشکر
شماره irg
ah =05h
al=01 که شماره صفحه است
int 10h |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Mon Jan 22, 2007 7:45 pm Post subject: |
|
|
من فكر كنم كنترل صفحات دست سيستم عامل هست . |
|
Back to top |
|
|
su-30mk مهمون يكي دو روزه
Joined: 16 Dec 2006 Posts: 12
|
Posted: Tue Jan 23, 2007 9:36 pm Post subject: |
|
|
سلام...
فکرکنم بهتر بیشتر توضیح بدهم....متاسفم که طولانی است...
################################################
منظورمن این صفحات گرافیکی که من وشما روزانه با آنها سروکله میزنیم نیست که بزرگ میشوند و همچنین میشود آنها را بست یا به task bar انتقال داد نیست...
منظور من آن صفحاتی که میشه به دور از دید کار بر روی آن محاسباتی کرد و بعد آن را نمایش داد تا باعث سرعت کارایی شود...
ذکر مثل همیشه کار ساز است :
(درحالتtextmode )
فرض کنید که من یه صفحه با کلی فرمان gotoxy دادن و چاپ کردن یه سری چیزا آماده کردم
و فعلا کاربر داره آن را میبیند .حالا من میخواهم که صفحه ای که قرار بعدا
نمایش داده شود که پر از gotoxy و printf و به طور کلی یه پردازش تصویر دارم
چطوری صرفه جویی کنم و کار خود را کم کنم یا سرعت برنامه را زیاد کنم
حالا دو تا راه دارم:
1:پاک کردن صفحه جاری و نوشتن تمام چیزهای که قرار بود نشان کاربر بدم.
با این کار مشکل من حل میشود ولی با پاک کردن و نوشتن چیزهای مورد نیازم
باعث میشود صفحه یه چشمک بزنه و اگر دوباره به این صفحه نیاز داشتم باید دوباره
آن را درست کنم یعنی کار اضافه (کار اضافه هم سرعت را پایین کشیده)
2:بطور خلاصه استفاده از صفحات که اگر اشتباه نکنم در هر حالت تعداد آن فرق میکند.
ولی در حالت معمول 4 صفحه داریم (0-3) و در هر زمان یکی از آنها دیده میشود
ومیشه با تمام آنها کار کرد. در این روش مطابق مثل من میتوانم چیزهایی راکه میخواهم
برای بار اول نمایش بدهم در صفحه شماره -0- قرار دهم و آن را نمایش دهم و
صفحهشماره -1- را چیزهای دیگر که قرار هست نمایش بدهم...
با این کار من فقط یک بار صفحات را درست کردم و به هر کدام که احتیاج داشته باشم
فقط لازمه با این IRQ که بالا گفتم بین صفحاتم جابجا شوم...
در ضمن کار بردهای بسیار زیادی دارد تا آنجایی که من میدانم
-در OpenGL که در بازی ها استفاده میشود از این صفحات استفاده میشود البته فکر کنم
تعداد آنها متفاوت است.
-اگر یه بازی مسخره 2Dبخواهید ساخت این صفحات به شما کمک میکنند.
-من این را سر ساخت یک منوی میخواهم در text mode تازه هنوز میخواهم یه سوال دیگر هم بپرسم وقتی انشا ا.. جواب اینروگرفتم
#################################################
دیگر از این واضح تر نمیتوانم بگم.
حالا با توجه به post قبلی میشه کمک کنید من مشکلم حل شود.
#################################################
اگر جایی اشتباه کردم لطف کنید من را روشن کنید..
تشکر |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Wed Jan 24, 2007 2:00 pm Post subject: |
|
|
من فکر کردم منظورت صفحه های حافظه هستش .
یه مقدار از کدی که برای تغییر صفحات گذاشتی رو بزار ... |
|
Back to top |
|
|
su-30mk مهمون يكي دو روزه
Joined: 16 Dec 2006 Posts: 12
|
Posted: Wed Jan 24, 2007 8:36 pm Post subject: |
|
|
سلام..
| #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 صفحه را نمایش دهیم.
این کار را میشه کرد یا نه
تشکر. |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Sat Jan 27, 2007 9:38 am Post subject: |
|
|
كد شما اجرا نشد ؟ بالاخره سي يا اسمبلي ؟ |
|
Back to top |
|
|
su-30mk مهمون يكي دو روزه
Joined: 16 Dec 2006 Posts: 12
|
Posted: Sat Jan 27, 2007 2:39 pm Post subject: |
|
|
ولی برای من کار کرد همین الان compile کردم...
در C |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Sat Jan 27, 2007 9:26 pm Post subject: |
|
|
كامپايلرت چيه ؟ |
|
Back to top |
|
|
su-30mk مهمون يكي دو روزه
Joined: 16 Dec 2006 Posts: 12
|
Posted: Mon Jan 29, 2007 10:36 am Post subject: |
|
|
TC ver 3.0 |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Thu Feb 01, 2007 9:14 am Post subject: |
|
|
من اين توربو سي رو پيدا كردم و دانلود كردم . |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Thu Feb 01, 2007 10:14 am Post subject: |
|
|
ميتوني به جاي اينكار از تابع sprintf استفاده كني :
|
char buff[100]
sprintf(buff,"salam mamad %d",i);
printf("%s",buff);
|
|
|
Back to top |
|
|
su-30mk مهمون يكي دو روزه
Joined: 16 Dec 2006 Posts: 12
|
Posted: Sun Feb 25, 2007 10:08 pm Post subject: |
|
|
سلام آقا وحید گل...تشکر...
اما این کار برای موقعی بکار میرود که فقط یک رشته در آن ذخیره کنی اگر شما قرار باشد یه
واسط گرافیکی برای برنامه تا بنویسید بکار نمی آید چون نه رنگی و نه موقعیتی در کار است
..در ابتدای کار می خواستم یه struct برای کارم بنویسم ولی بخاطر over head زیادی این کار را نکردم....
در آخر بهترین کار اگر قرار باشه این جوری رفتار کنم یه راه بهتر که نوشتن در آدرس صفحه نمایش است دارم سعی میکنم که درستش کنم چون هم شماره صفحه در وجود دارد وهم اینکه صفات یک کارکتر.
سعی خودم دارم میکنم....
به هر حال تشکر... |
|
Back to top |
|
|
vahid بي تو هرگز
Joined: 26 Nov 2004 Posts: 3067 Location: Tehran
|
Posted: Mon Feb 26, 2007 8:06 am Post subject: |
|
|
حلش كردي خبرش رو بده . |
|
Back to top |
|
|
|