لاو جان من می خوام اگه اشکالی نداشته باشه اون قسمت اول که مال نت جان هست هم من تر جمه کنم تا رشتهی مطلب از دستم خارج نشه .(ترجمه روتین تر بشه ) و نت جان دنبال مقاله ی جدیدی باشن و برای تر جمه بذارن که اونم ما 3 نفری تر جمه کنیم .
لاو جان من می خوام اگه اشکالی نداشته باشه اون قسمت اول که مال نت جان هست هم من تر جمه کنم تا رشتهی مطلب از دستم خارج نشه .(ترجمه روتین تر بشه ) و نت جان دنبال مقاله ی جدیدی باشن و برای تر جمه بذارن که اونم ما 3 نفری تر جمه کنیم .
سلام دوستان ...
من این تاپیک رو منتقل کردم به انجمن برنامه نویسی
امیدوارم تو کارتون موفق باشید
ممـنــون
مـیـثــم
ممنونسلام دوستان ...
من این تاپیک رو منتقل کردم به انجمن برنامه نویسی
امیدوارم تو کارتون موفق باشید
من براي نت پيغام فرستادم كه اگر ترجمه رو شروع نكرده دست نگه داره و اين كار رو به تو بديم و براي نت يكي ديگه ارسال كنيملاو جان من می خوام اگه اشکالی نداشته باشه اون قسمت اول که مال نت جان هست هم من تر جمه کنم تا رشتهی مطلب از دستم خارج نشه .(ترجمه روتین تر بشه ) و نت جان دنبال مقاله ی جدیدی باشن و برای تر جمه بذارن که اونم ما 3 نفری تر جمه کنیم .
مستر جان بنا به صحبتي كه ديشب با نت كردم قرار شد ما از اين به بعد هر كدوممون هفته اي يك مقاله ارسال كنيم كه مي شود جمعا هفته اي 3 مقاله با اين كار هم شما و هم نت فرصت پيدا مي كنيد كد ها رو مطالعه كنيد و هم امتحانشون كنيد هم در زندگي شخصي ما مشكلي پيش نياد
اگر دوستان در همون روز اول هم ترجمه كنند باز هم ديگه تو اون يك هفته براي كسي مقاله فرستاده نميشه تا هفته بعدش
نظرت در اين مورد چيه مستر جان ؟
خوبه من مشکلی ندارم .فقط منابعش با تو ؟ راستی اسمتو نگفتی ؟ من حسینم .
برنامه ریزی/معین کردن اهداف
افرین .شما تز خیلی از مردم دیگه ای که ساخت یه سیستم عامل رو شروع کردن جلو افتادین .خوب حالا که چی؟ الان قراره که نتایج کار سخت خودتونو ببینین.کرنل رو بار گزاری کنین.دارم می شنوم که می گین .واااااااایی , (ساخت سیستم عامل) این قدر ها هم سخت نیستا . خوب هم اره ,هم نه .اگه شما از زبان C استفاده کنین مثل یه لیوان اب خوردن اسونه .اما اگه از زبان ++Cاستفاده کنین , اوه اوه ,میشه عین خود جهنم (خیلی سخت میشه ) الان وقتشه که دسته رو بار گذاری کنین .تا زه , و پشتیبانی رو هم پاک کنید . چند تا یی هم اسم گذاری کنین ., جایی که تو c شما این کارو نمی کنین . چون همه چیز بدون اینکه لازم باشه پشتیبانی رو به اون اضافه کنیم ,میتونه به asm تبدیل بشه .
من خودم افرادی رو میشناسم که از ++C استفاده می کنن ,خیلی هم با هاش حال می کنن . این دیگه به عهدیه خودتونه که برین در مورد ساختن کرنل با ++Cتحقیق کنین . از این جا دیگه کار شروع میشه .
اول از همه ما یه چند تا کد لازم داریم تا بوسیله ی Bootloader ما بار گذاری بشن . یه چیزی تو این مایه ها :
void k_ main()
{
int num;
char ch;
char *str=" Kernel Loaded";
return;
}
تمام کاری که اینا میکنن ,شناسوندن 3 تا متغییره و بعدشم برگشت . الان خوب و شیک شد . خوب اینجا هم یه سری کار هایه دیگه هست که ما می تونیم انجامشون بدیم :
1- output "Hello, World"
2- clear the screen
3- output colored text to the screen
هدف اول (نمایش متن )
هیچ خروجی تصویری که وجود نداره !!! هی مشکلش چیه؟ چرا این اینجوریه ؟ راستش هیچی .هیچیش نیست .چیزی که ما لازم داریم یه صفحه ی ورودی و خرو جیه .(I/O) این دیگه اسونترین چیز واسه نوشتن کدش تو کرنله .(خوراکه ,انتقده کد نوشتن واسه این اسونه ) که فقط باید کاراکتر asii ساده رو با رنگ کاراکتر تو حافظه بنویسین . همین.
کاری که شما باید اینجا انجام بدین اینه که , بایت asii رو که نشانش (مشخصاتش ) دنبالشه (یعنی بهش چسبیده پشت سرشه ) رو تو 0XB8000 قرار بدین .لازم نیست که شما همیشه اینو اونجا قرار بدین , چون هر دفعه که یه کاراکتر رو چاپ می کنین , شما باید نشانگر متن رو 2 بار تو سعه بدین .(بایت کاراکتر+ بایت نشانش(مشخصاتش)).پس داریم :
void _k_ main()
{
int num;
char ch;
char *text_ video = (char*) 0xB8000;
char attrib = 0x07;
char *str=" Kernel Loaded";
while(* str!= 0)
{
*text_ video = *str;
*text_ video++;
*text_ video = attrib;
*text_ video++;
*str++;
}
return;
}
پاک کردن صفحه :
پاک کردن صفحه نمایش هم یکی دیگه هز اون کارایه خیلی اسونه (خوراکه) که با نمایشگر متن کار داره . برای هر کدوم از کاراکتر های asii در متون تصویری , فقط رو صفر تنظیمش کنین و بایت نشانش رو (مشخصه شو ) رویه نشان متداول (مشخصه ی متداول ) تنظیم کنین .داریم :
void clear_ screen( char clear_ to, char attrib)
{
char *text_ video = (char*) 0xB8000;
int pos= 0;
while( pos<( 80* 25* 2))
{
*text_ video = clear_ to;
*text_ video++;
*text_ video = attrib;
*str++;
pos++;
}
}
الن ,شما فقط تونستین کاراکتر رو رویه صفر تنظیم کنین و نشان اونو (مشخصه ی اونو ) به 0X07 .(سفید رو سیاه) .اما من پیچیده ترین قسمت رو براتون قبلا انجام دادم .(چه کنیم دیگه اند مرامیم ) . حالا در مورد نشان ها ( مشخصه ها) !! . اینا دیگه چین ؟(چی هستن)
خوب بذارین با دادن تمامی رنگ ها ی مربوط به متن و نشان ها (مشخصه ها) کارمونو شروع کنیم :
FG AND BG
0 = black
1 = blue
2 = green
3 = cyan
4 = red
5 = magenta
6 = brown
7 = white (standard text color)
FG ONLY
8 = dark grey
9 = bright blue
10 = bright green
11 = bright cyan
12 = pink
13 = bright magenta
14 = yellow
15 = bright white
[IBBBFFFF] binary
I = Intensity (blink)
B = Background
F = Foreground
خیلی خوب , خیلی با حاله نه . چند تا عدد اجق وجق ! الان قراره که ما با اینا چیکار کنیم مثلا ؟ بذارین تا با مثال زدن روشنتون کنم .
0X07 سفید رو سیاهه , ایبن یعنی اینکه متن ما الان سفید رنگه و پس زمینه ی ما سیاه .خوب در مورد اونای دیگه چی ؟ اون عددا با رنگ های سمت راست لیت ما یکی هستن . خیلی خوب , بذارین بگم که مثلا ما متن قرمز و پس زمینه ی سفید می خواییم . چی کار باید بکنیم ؟ چه عددی می تونه باشه ؟ خوب قرمز که چهاره (Red=4) و سفید هم که هفته (White =7) پس میشه 0X74 .
چند تا چیز هستش که ممکنه الان مخ شما رو بد جوری کار گرفته باشه و شما بشدت مشغول فسفر سوزوندن هستین تا بفهمین که مو ضو ع از چه قراره .مثلا اینکه چرا رنگ 15-8 ,فقط می تونه تو پیش نما (foreground) , باشه ؟ اگه شما کل لیستو خونده باشی بایه یه نکته ی خیلی مهم رو هم دیده باشی . متن (شما ) می تونه چشمک هم بزنه . حالا چجوری چشمک می زنه ؟؟ همه ی اینا به این بستگی داره که ایا این بیت (Bit) تنظیم شده یا نه؟ اومدو این بیت تو کلمه ی پس زمینه قرار گرفت ببینین : اینجوری :
blink bg fg
\ _/ _/_
IBBBFFFF
I = Intensity (blink)
B = Background
F = Foreground
111 تو این فقط هفت هست . این یعنی اینکه برای ایجا فضا(ی مورد نیاز) برای بیت چشمک زن - شما فقط می تونین از 7 رنگ لیستمون استفاده کنین , فهمیدنش خیلی سخته ؟ امید وارم که نباشه , اگه هست خیلی به خودتون فشار نیارین که ممکنه کار دست خودتون بدین (به فسفور سوزی مبرم می افتین )
سر هم بندی کرنل :
اه ه ه ه , اره .سرهم بندی بوت لودر که اسون بود مگه نه ؟ فصل اولم که خوندین مگه نه؟ خوب , تنها کاری که اینجا باید انجام بدیم اینه که کد منبه C رو سر هم بندی کنیم . همه رو به هم وصل کنین . بعدش بوت لودر رو تو کرنل کپی کنین )Kernel Object) این یه تصویر از کرنل به شما می ده که و سیله ی اون شما می تونید رو یه یه وسیله ی قابل بوت مثل فلاپی دیسک بنویسین . بذارین این کارم من براتون اسونتر کنم :
(گام به گام):
1- compile all *. c files
>gcc *. c
2- compile all asm files into a format like aout (not bin, C doesn't
output to bin by default)
>nasm *. asm -f aout
3- link all C files and asm files together into a file( ie: kernel. o)
>ld -T linkscript. ld -o kernel. o a. o b. o c. o
4- compile & copy the bootloader to the front of the kernel object
file( ie: kernel. img)
>nasm boot. asm
>copy /b boot. bin+ kernel. o kernel. img
5- write the image file to a bootable device( ie: floppy disk)
>floppyout kernel. img a: -sector 0 -head 0 -track 0
خوب حالا قدم 6 وسیله ی قابل بوت خودتونو در بیارین و تویه (داخل ) یه اجاق مایکروویو گذاشته 30 ثانیه صبر کنین تا اب بشه .حلا می تونید سرو کنید. (هوی بابا شو خی کردم یه وقت نرین این کار و بکنین کار دست خودتون بدینا خلا صه از ما گفتن بود . نرین شر بپا نکنین )
خیلی خوب . هی هنوز بیدارین ؟ امیدوارم که بی خیال قدم ششم شده باشین (اگه نشدین , لطفا بهم بگین که بازم شرمندتون کنم ) . حالا بدون شوخی امید وارم که این مقدار براتون کافی بوده باشه .اگه به کمک بیشتری نیاز داشتین به کد هایی که برای مثال تو این فصل اووردم تو جه کنید.
لاو جان و نت جان من نمی رسم اون مقاله قسمت اولشو تا 5 شنبه تموم کنم .چون 4 شنبه امتحان فاینالم دارم ( سه شنبه هم کلاس عربی ) قوض بالا قوض شد . سعی می کنم تا پنج شنبه کارشو برسم .ببخشید.
سلام مستر جان
من الان مقاله ديدم ولي هنوز نخوندمش
در ضمن من هم اصغر هست
من و نت كلي با هم صحبت كرديم اسمش رو بهم گفت ولي يادم رفت
مثل اينكه تو قسمت دوم رو تموم كردي باشه قسمت اول رو هم شما ترجمه كن با نت صحبت كردم گفت مشكلي نداره
منابع هم با من
موفق باشيم
نت جان براي شما هم يك مقاله فرستادم
اين مقاله در مورد مد محافظت شده هست
در ضمن ترجمه اين مقاله مهم چون حتما بعدا در برنامه نويسي بايد ازش استفاده كنيم
[ برای مشاهده لینک ، با نام کاربری خود وارد شوید یا ثبت نام کنید ]
سلام به همه ببخشيد امروز خيلي سرم شلوغ بود
نتونستم سر بزنم
دستت درد نكنه مستر فقط يه چيزي منابع مقالات رو هم بگيم كه اگر احياَ مشكلي داشت بشه حل كرد
بعد مستر جان اينتقدر سخت نگير ما هيچكدوم نميخواهيم كه هيچكس از كار و زندگيش بيفته همونطور كه همه ما كاروزندگي داره پس مطمئن باش عجله ما فقط به اين خاطر هست كه حداقل بتونيم 10 الي 20 تا مقاله فارسي تو سايتمون داشته باشيم و اينكه كار سرد نشه والا اينكه حتماَ شما بايد سر موعد مقرر كاري رو انجام بدي نيست فقط مهم اينه كه سرد نشي انشاالله اگر بتونيم يه سري منابع درست حسابي رو ترجمه كنيم و يه كارايي رو انجام بديم به قول لاو حتماَ كساي ديگه اي هم ميان من بازم ميگم دوستان دانشجو دوره كامپيوتر مخصوصاَ نرم افزار خيلي ميتونن به ما كمك كنن حداقل انتقاد كنن اگه ميخوان خيلي حال بدن جزوات شون رو هم براي ما بفرستن(در مورد سيستم عامل) مخصوصاً قسمت كدينگهاشو رو كه خيلي كمك ميكنه
در ضمن يه طرح ساده براي فضاي اختصاص داده شده به اين كار دارم ميزنم اميدوارم خوشتون بياد.
مستر جان سعي كن مقالات ترجمه شده رو به صورت اسناد ورد براي نت ارسال كني اينجوري بهتره و بهم ريختگي پيش نمياد و نت راحتر بتونه به PDF تبديلشون كنه
ممنون
نت جان من مقاله ام رو براتون فرستادم شما زحمت تبديلش رو به Pdf بكش
هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)