بيسكوئيت پي سي خوردين؟

دسته بندي (روزمره, كامپيوتر) نويسنده imei در ۱۷-۱۱-۱۳۸۶

برچسب‌ها :

بيسكوئيت پي‌سي خوردين تا حالا؟ ( + + + ) نمي‌خوام دلتون رو بسوزونم كه من خوردم و چقدم خوشمزه بود و اين حرفا. چون بيسكوئيت پي‌سي يه مدل از كامپيوترهايي هست كه در ابعاد بيسكوئيت و با قابليت‌هاي محدود و براي كاربردهاي خاص توليد مي‌شه.

گفته‌بودم كه چطور پروتكل PPP رو براي اسمبل كردن روي يه دستگاه پياده سازي كردم… تا ديروز قرار بود كه اين دستگاه يه بيل‌بيلكي باشه كه معلوم نيست سر و تهش چيه و يه اسمبلي خاص خودش داره و ۸ بيتي هم هست و كلاً چيز وحشتناكي از آب در مي‌آد. ديروز يه دفعه متوجه شدم آقاي فتحي پلت‌فورم پروژه رو عوض كرده و قرار هست كه از اين به بعد پروژه‌ي نهايي روي يه بيسكوئيت پي‌سي -كه از بس خلاصه هست، بيشتر به از اين بيسكوئيت باغ وحش‌ها مي‌خوره تا بيسكوئيت عادي- پياده سازي و اجرا بشه. يه سيستم ۴۸۶ اينتل كه Lan و Keyboard و ۵۱۲K هارد فلشي و ۶۴۰K رم داره و از باقي امكاناتش بي‌خبرم و قرار هست كه قيمت خودش حدود ۶۰ تومن در بياد. دقت دارين كه هاردش كمتر از رمش هست! پايين، عكس يكي از اين بيسكوئيت پي‌سي‌هايي كه امروز توي شركت بود رو مي‌ذارم. اين، سه تا RS۲۳۲ و دوتا USB و كارت گرافيك و يه دونه ISA و كي‌بورد و موس و سي پي يوي ۲۳۳ و خلاصه كلي چيز ميز داشت ديگه! همه‌ش هم تو همون بيل‌بيلك كه عكس‌ش هست بود!

پروژه‌ي نهايي قراره يه چيزي بشه مثل اون چيزي كه شراگيم ازش به عنوان شوهرياب آنلاين ياد مي‌كنه :D با اين تفاوت كه اين يه دستگاه هست كه يه جي‌پي‌اس توش به يه بيسكوئيت پي‌سي متصل مي‌شه و از طريق يه سيم كارت به اينترنت يا گيرنده‌ي اس‌ام‌اس متصل مي‌شه و به اين شكل اطلاعات موقعيت رو در فواصل منظم زماني، به سرور اينترنتي ارسال مي‌كنه. من اصلاً نمي‌تونم بفهمم براي چي بايد به همچين دم و دستگاهي احتياج باشه براي اين كارها. وقتي راهكارهاي ساده‌تري براي اين مسئله هست چرا بايد همچين هزينه‌هايي رو به‌جون خريد، ولي خوب اين طرح يه مناقصه بوده كه شركت گرفته‌تش و دليل تاكيد كارفرما بر استفاده از جي‌پي‌اس و سيم كارت و قابليت GPRS و SMS براي اتصال و گزارش‌گيري از سرور اينترنتي ديگه به ما ربطي نداره!!

توي اون پست PPP گفتم كه تونستم يه بسته پيدا كنم كه يه Packet Driver Class ۱ براي PPP روي مودم يا RS۲۳۲ يا اتصالات اين‌جوري تحت DOS ، پياده سازي كنه و الحق و الانصاف كار بزرگي بوده كه جناب David Lindauer انجام دادن و سورس‌باز گذاشتنش. [LSppp] اين برنامه كد اجرايي و كد اسمبلي‌ش باهاشه. چون كد اجرايي‌ش باهاش بود نيازي نبود كه تحت DOS كامپايلش كنيم و نوشتم كه چطور تستش كرديم. اين مدت به شدت دنبال اين بودم كه بفهمم Vectorي كه اين برنامه برمي‌گردونه به چه كار مي‌آد و چطور مي‌شه بسته‌هاي IP رو بهش داد تا مثل هويج آب گرفتن، از اينور بسته بديم و از اونور رد كنه.

بعد از يكي دو بار ممايله (رد و بدل كردن ميل:D ) با جناب David Lindauer متوجه معني دقيق Packet Driver شدم. زمان داس، درايورها به شكل Interrupt هاي استانداردي نوشته مي‌شدن و از اونها توقع مي‌رفته كه به Function Codeهاي خاصي، جواب‌هاي خاصي بدن. DOSنويس‌ها مي‌دونن كه اين‌جور مواقع در اسمبلي، كد تابع توي رجيستر AH گذاشته مي‌شه و بعد Int فراخواني مي‌شه. از اونجايي كه اينتراپتي كه پكت درايورهاي اتصال به شبكه پياده‌سازي مي‌كنن طبق عرف شماره ۰×۶۰ هست اين بسته هم وكتور ۶۰ برمي‌گردوند كه من اون‌وقتا برام عجيب بود كه چرا همه‌ش اين شماره؟!

يه مدت هم ور رفتم به اينكه بدونم اين حرفا واقعاً همونيه كه من استنباط مي‌كنم؟ براي اينكار بايد از آدرس ۰۰۰۰:۰۰۰۰ كه معروف به وكتور اينتراپت‌ها هست بخونين. اين وكتور تيبل، آدرس‌هاي Farي كه اينتراپت‌ها موقع كال شدن از اونجا شروع به اجرا مي‌كنن رو نگه مي‌داره. براي اين‌كه بدونيم اينتراپت ۰×۶۰ به كجا اشاره مي‌كنه بايد آدرس ۰۰۰۰:۰۱۸۰ رو بخونين و ببينين چهار بايت اشاره‌گر دور رو به كجاست؟ اشتباه نكردم، اين ۱۸۰ ضرب مبناي ۱۶ عدد ۶۰ در چهار هست كه تعداد بايتهاي لازم براي يه جامپ فار هست. بعد اين چهار بايت رو برعكس به شيوه‌ي اينتل بايد بخونين و ردگيري كنين. سه بايت اول اين جايي كه بهش اشاره مي‌شه، يه جامپ مطلق به كد واقعي اينتراپت هست و اگر اين جامپ تونست يه جامپ نزديك باشه -كه دوبايتي هست- بايد كد بعدي‌ش NOP باشه تا سه بايت پر بشه. بعد بايد رشته ي “PKT DRIVER” و بعد يك كاراكتر صفر بياد. اگر اين مشخصات وجود داشته باشه اين يعني واقعاً اينتراپت اينستال شده. من بررسي كردم و ديدم شده بود! (يعني من اينا رو بلد بودما!!)

اينا رو كه داشتين؟ همه بعد از اون روز بود كه Lsppp رو پيدا كردم و براتون تعريف كردم. آخ وقتي اون پرومپت Dialing… Carrier Detected…Negotiating … Authentication… Connected رو ديدم چقدر خوشحال شدم. ولي قدم بزرگ بعدي، بعد از اون رو، امروز برداشتم. مدتي بود يه سري لايبرري C پيدا كرده بودم كه توانايي ارتباط اينترنتي رو تحت داس فراهم مي‌كرد. لايبرري WATTCP، يه كتابخونه‌ي مفصل هست كه برنامه‌هاي زيادي ( + + + ) تحت داس توانايي ارتباط با اينترنت خودشون رو، وامدار اين لايبرري هستن. فكرش رو بكنين كه براي داس SSH و FTP و مرورگر گرافيكي و حتي وب سرور هم نوشته‌شده…

من هميشه با اينكه ادعاي سي نداشتم ولي خوب، دوستش داشتم و فكر مي‌كردم كه لااقل سي داس رو نسبتاً واردم بهش. منتها اين روزا يه عالمه خط كد سي و اسمبلي دستم بود كه مي‌گفت از من استفاده كن و من نمي‌تونستم! اگر خيال مي‌كنين كه بايد راحت يه فايل رو باز كنين و CTRL+F۹ بزنين و اجرا بشه اشتباه مي‌كنين. بخاطر اينكه اين كدها اول بايد به يه لايبرري تبديل مي‌شدن. اين جور پكيج‌ها يه فايل makefile دارن كه به صورت دسته‌اي تمام كارهايي كه بايد با اون فايل‌ها بشه رو انجام مي‌ده. من به اين فايل‌ها وارد نبودم و با يكي دو تا اروري كه دستور Make.exe روي اين فايل‌ها داد متوقف شدم. بعد دست بكار شدم كه فايلهاي .asm رو با tasm.exe و فايلهاي .c رو با tcc.exe به فايل .obj تبديل كنم. اين‌هم خودش باز كلي ريزه‌كاري داشت و كلي سوئيچ رو مجبور شدم ياد بگيرم. مثلاً براي مورد ما بايد فايل‌ها با مدل حافظه‌ي small كامپايل مي‌شدن. انتخاب مدل حافظه هم يه سري آمادگي‌ها مي‌خواد كه بايد داشته باشين. مثلاً مدل tiny براي كسايي هست كه مي‌خوان فايل .com بسازن. به‌هرروي اين فايل‌هاي .obj رو كنار هم نگه داشتيم. بعد با دستور tlib.exe دونه‌دونه اين فايل‌ها رو به لايبرري‌هايي كه بايد استفاده مي‌شدن اضافه مي‌كرديم. بعدتر وقتي فايل‌هاي makefile رو مي‌خوندم متوجه شدم كه اونها هم سعي داشتن كاري شبيه به همين كار رو بكنن. خلاصه تونستم سه تا لايبرري كه اين پروژه مي‌خواست رو توليد كنم. بعد اين سه تا لايبرري رو توي شاخه ي Lib و هدرهاشون رو هم به شاخه‌ي Include كپي كردم و به IDE توربو سي رفتم. يكي از سمپل‌هاي اين پروژه كه پياده‌سازي عمل Ping بود رو باز كردم و پروژه رو كامپايل كردم. ران شد؟ كور خوندين! نشد.

من تا امروز خيال مي‌كردم كه IDE توربوسي يه قدري از هوش انسان‌دادي(!) بهره برده و فقط لايبرري‌هايي كه لازم هست رو به پروژه اضافه مي‌كنه و از طرفي هر چيزي كه توي فولدر lib هست رو در صورت لزوم به پروژه اضافه مي‌كنه. در حالي كه اين برنامه از هوش انسان‌دادي هيچ بهره‌اي نبرده و فقط مثل احمق‌ها يه سري لايبرري پيشفرض كه بهش گفتن رو به برنامه لينك مي‌كنه كه شايد حتي احتياج هم نباشن! اين يعني اينكه بايد برنامه‌ي من توسط كامپايلر خط فرمان كامپايل بشه و بعد توسط لينكر خط فرمان لينك بشه. گند بزنن به اين همه مراحل. وقتي برنامه هيچ مشكلي نداشته باشه بدون ارور كامپايل مي‌شه و فايل obj رو مي‌ده منتها لينك كردن زياد برو تو گلو نيست. ضمن اينكه بايد توجه مي‌كردم كه آيا توابع اسمبلي‌م با Underscore پيشفرضي كه سي براي معادل قرار دادن توابع extern دنبالش مي‌گرده سازگاره يا نه وگرنه بايد با يه آپشن خاصي لينك بشه. همين‌طور بايد با توجه به مدل حافظه، يكي از فايل‌هاي توي شاخه‌ي Lib رو بعلاوه‌ي يكي از لايبرري‌هايي كه حاصل دست خودم بود، به obj پروژه‌ي پينگ‌مون لينك مي‌كردم. خلاصه اين‌كه اين‌همه كار كه كرديم همه توي خط فرمان بود و همگي يادآور خاطرات دوران راهنمايي و دبيرستان بود كه همه جور پشتك و آفتاب‌مهتابي با خط فرمان مي‌زديم.

لحظه‌ي موعود فرا رسيد و فايل exe ساخته شد. توي خط فرمان جداگونه‌اي زدم Ping yahoo.com تا آي پي ياهو رو بدست بيارم. سه جواب با TTL هاي ۵۱و ۵۰و ۴۹ اومد كه نمونه‌ي بارزي از “امكان طي مسيرهاي مختلف براي رسيدن به يه سيستم ديگه در پروتكل IP” هست و نشون مي‌داد كه آي‌پي ياهو (البته يكيشون) ۲۱۶.۱۰۹.۱۱۲.۱۳۵ هست. برنامه‌ي پينگ ما قدرت resolve كردن دامنه‌ها رو نداره و فقط آي‌پي دريافت مي‌كنه. بعد توي خط فرمان اصلي‌مون كه lsppp هم اينستال شده بود، پينگ رو با آي‌پي بالا براي ۵ بسته (تعداد بسته‌ها رو بعنوان پارامتر مي‌گرفت) تنظيم كردم و Enter رو زدم.

Ping Statistics

Sent ۱

Sent ۲

Sent ۳

Sent ۴

Sent ۵

^C

واي از خوشحالي يه ضربه‌ي تاي چي حواله فضاي بين خودم و مانيتور كردم. (نترسين تاي چي ضربه‌هاش هم بر پايه‌ي تنفس و آرامش هست اصلاً كسي اسمش رو ضربه نمي‌ذاره!) دقت كردين چي شد؟ ۵ بسته‌ي پينگ ارسال شد. فقط ارسال. برنامه‌ي ما بخاطر اين‌كه از آي‌پي خودش خبر نداشت نمي‌دونست كه آدرس برگشت رو چي بذاره و فقط بسته‌هاي پينگ رو ارسال كرد و طبعاًَ قادر به دريافتش نبود. ولي تا همين‌جا هم يعني پروژه به نقطه‌ي مطلوب رسيده و Mile Stone حساسي رو گذرونده. اين اتفاق اينقدر خوشحالم كرد و اينقدر زور زده بودم و خسته بودم كه بعد از اين اصلاً نموندم كه ببينم مي‌تونم recive ش رو هم انجام بدم يا نه و گفتم “من كار خود را كردم” و ديگه داشت ديروقت مي‌شد كه خداحافظي كردم و اومدم خونه.

اضافه:

Biscuit PC ْGSM Modem Working PC

توضيح عكسها:

۱- اين همون بيسكوئيت پي‌سي‌اي هست كه گفتم تو شركت بود. پورت COM به وضوح مشخصه. سيم دو رشته‌اي، سيم برقش هست و سيمي هم كه خارج شده Lan هست. اون دايره هم باتري CMOS هست و بوردي هم كه جدا از اصل پي‌سي، بالاي عكس ديده مي‌شه، هارد فلشي هست. قسمت سياه كنار انگشت هم ISA كارد هست.

۲- اين هم مودم GSM هست كه به پورت RS۲۳۲وصل شده. اون فيش هم كه مي‌بينين تو هوا هست مال برقشه. آنتن مودم هم كه معرف حضور هستن! يه برآمدگي سياه كنار پايه‌ي آنتن، پشت برد ديده مي‌شه كه توش يه باريكه ي زرد پيداست. اين مفلوك هم سيم كارت ايرانسل هست.

۳- پي سي شلوغ پلوغ! واي عشق منه. با يه حركت از تو دل و روده‌ي آويزونش مي‌توني جامپر آپانديسيتش رو دستكاري كني و چرخش قلبش رو ببيني. البته بعيد نيست وقتي مشغول پارتيشن بندي هستي مامانت بياد و هارد رو مجبور به سكته‌ي كامل كنه. خدا رو شكر هنوز گارانتي‌ش مونده بود وگرنه هيچ ماساژي نمي‌تونست ريكاورش كنه! اون كاغذ زردا هم دستور كارهايي هست كه آقاي فتحي مي‌ده. فردا ساعت ده فلان كار؛ فلان روز ساعت فلان جلسه‌ي فلاني… كاغذ مي‌ده، ولي من به اضافه كردن Appointment و Event به Calendar موبايلم بيشتر اعتماد دارم تا اين كاغذا! Reminder ست مي‌كني از غم دنيا فارغ مي‌شي!

نكته‌ي نهايي اينكه كپي رايت انگشت‌ها اكيداً مال خودمه!!

آجر انداختن به طبقه‌ي آخر از روي شانه‌هاي بزرگان

دسته بندي (كامپيوتر) نويسنده imei در ۰۷-۱۱-۱۳۸۶

برچسب‌ها :

يعني يه كامپيوتري بايد تر و فرز و با حوصله و با پشتكار باشه؟ اونم وقتي با اين صفات مي‌خوان تحريكت كنن يه كار غول آسا رو انجام بدي اونم چه كاري؛ يه كاري كه نه اختراع هست و نه نوآوري! يه كامپيوتري ياد مي‌گيره كه *”روي شونه‌هاي بزرگان بايسته” و كاري انجام بده، نه اين‌كه كار اونا رو تكرار كنه.
شايد توي جريان باشين كه يه جا براي يه پروژه، ازم پياده‌سازي چند تا پروتكل رو مي‌خواستن. زيرلايه‌اي‌ترين‌شون، پروتكل PPP بود كه قرار بود از روي RS۲۳۲ به مودم GSM وصل بشيم تا با يه ماجولي كه من نمي‌دونم چيش به چيه و چه‌جوري، كار يه موبايل رو مي‌كرد بعلاوه‌ي يه سيم‌كارت ايرانسل به اكسس‌پوينت GPRS وصل بشيم. حالا بايد دستگاهي كه به اين مودم وصل مي‌شه رو طوري برنامه‌ريزي كرد كه بتونه از روي ناقل GPRS يه سري كارها تو اينترنت بكنه كه اصلي‌ترين كارش ارسال گزارش عملكرد اون دستگاه به سرور اينترنتيه. به‌هر‌روي، مسئله اين بود كه ما بايد به اين دستگاه خنگ PPP و IP و UDP رو ياد مي‌داديم. باز خدا رو شكر تونستم اثبات كنم كه از خيرTCP بگذرن كه حجم پياده سازي‌ش خلق‌الله رو معطل خودش كرده.

صاحب كار، آقاي فتحي، يه مرد سخت افزاره. سخت كوش و خوش قلب. بنده‌ي خدا مرتب مي‌گفت يه فريمي مي‌خوام كه اطلاعات رو بذارم روش تا برسه به سرور. اين در حاليه كه اين كار با فريم قابل پياده سازي نيست. حتي اگر از UDP كه مي‌تونه Connectionless باشه و Session Management نداره هم استفاده كنيم، بايد يه Session manager مختصر در نظر بگيريم كه لااقل بدونيم كدوم گزارش‌ها رسيده و كدوم‌ها Retry نياز داره. در كل Agent ما بايد Delivery Report داشته باشه. از اين هم كه بگذريم سختي كار توي لايه‌ي IP و PPP كم نيست. ما تقريباً به هيچ عنوان نمي‌تونيم يه IP هندلر كامل بنويسيم. نمي‌خوايم كل پروژه رو بذاريم رو اين بخش كه!! فقط يه *”خرك رو بديم لنگان برسونه به منزل” كافيه…. ولي براي PPP واقعا نمي‌شد Session Manager ننوشت. PPP از يه پروتكل كمكي به اسم LCP استفاده ميكنه تا به گزينه‌هاي ماشين حالت خودش مقداردهي بكنه. فكرش رو بكنيد وقتي به اينترنت كانكت مي‌شيد باز كردن پورت مودم، دايالينگ، دريافت Carrier و بعد Negotiate اوليه، توافق سر عدد جادويي، توافق سر گزينه‌ي Compression (دو جور توافق هم هست خير سرش) ، توافق سر شكل انتقال رمز (چاپ و پاپ و شيوا پاپ) كه با اينكه بدرد ما نمي‌خورد ولي بايد اجباراً توافق مي‌كرديم سرش و هزار جور رقص و Hand Shaking ديگه بايد انجام بشه تا ماشين PPP به State آماده به انتقال (Network State) برسه. در غير اين‌صورت، لينك مرده بود و بايد به لايه‌ي بالا گزارش ايست داد تا داده‌ها رو كش كنه. يعني كار از فريم كاري و به سر و ته اطلاعات گل و سنبل چسبوندن گذشته بود و بايد واسه هر بيل بيلكي كه مي‌خواستي بفرستي يه پرونده تشكيل مي‌دادي!!

آقا دردسرتون ندم اين وسط كار ما شده بود كه اين پروتكل رو پياده سازي كنيم. يعني آقاي فتحي فقط مي‌خواست الگو رو بگيره و رو سخت افزار پياده سازي كنه ولي خوب من كه مي‌دونستم كار از اين قضيه‌ها گذشته بايد بشينه برنامه‌ي نوشته شده رو Cross Compile كنه وگرنه هيچ شانسي نيست كه كدي كه با سي بزور نوشته شده رو ببره به اسمبلي ۸ بيتي يه دستگاه زبون نفهم! من بيچاره نشستم روزهاي متمادي كار كردم… اول با اسنيف كردن RS۲۳۲ شروع شد. مودم رو وصل كرديم به ويندوز و با شماره‌گيري GPRS به اينترنت وصل شديم (مي‌دونستيد شماره‌ش چيه؟ اينه *۹۹***۱# كه اگر موبايلتون قابليت مودم شدن داره بايد باهاش شماره‌گيري كنين البته فعلاً فقط با سيم كارت ايرانسل) اين وسط براي يه اتصال و يه پينگ فسقلي كلي شر و ور اسنيف شد. فريم PPP دو كاراكتر خاص داره ۰×۷F و ۰×۷e كه يكي دليميتر هست و يكي ديگه اسكيپر. اين اسكيپر هست كه كمك مي‌كنه اطلاعات شما به شكل دستورات مودم در نيان وگرنه ممكن بود متن‌تون حاوي دستورات مودم بود (مي‌دونستين مودم هم دستور داره واسه خودش؟) و وسط ارسال اطلاعات يه دفعه دستور ديسكانكت (ATH) رو مي‌فرستادين و…

خوب ديگه زيادي آب و تاب ندم، كلي زور زديم تا تونستيم اطلاعات اسنيف شده رو پارز كنيم و حاليمون بشه كه كي چي گفته و يعني چي؟! بعد ديديم بابا اينا از يه جا به بعد دارن كمپرس حرف مي‌زنن هر چي هم بهشون گفتيم كه بي خيال كمپرس شدن شين حساب نبردن ازمون! گفتيم بالاخره كه چي؟ ما بايد خودمون وارد عمل بشيم و بسته بسازيم و در قبال توافقات كمپرشن، بگيم “نه كمپرس كردن بلد نيستيم عين آدم حرف بزن”، تا طرف مقابل هم بي خيال كمپرشن بشه و از اون به بعدش رو ادامه بديم. ولي گير بزرگ بعدي خودش رو نشون داد. هر فريم PPP يه Checksum داره كه با CRC حساب مي‌شه. ما فقط مي‌دونستيم كه CRC يه چيزي هست! ولي نمي‌دونستيم چطوري حساب مي‌شه. اطلاعات بيشتر رو از اينور و اونور در آورديم و فهميديم كه CRC۱۶ CCITT اسم شيوه‌ي CRC گرفتنش هست و با چند جمله‌اي x۱۶+x۱۲+x۵+۱ تقسيم‌ها انجام مي‌شه و آخرش هم Not مي‌شه و اگر لازم بود Scape مي‌شه با اسكيپر، و تازه ممكنه از طريق يكي از اين آپشن‌هاي توافقي، CRC۳۲ گرفته بشه. من حداقل چهار تا سورس CRC Calculator گير آوردم. رشته‌هاي اسنيف شده و خام رو، وقتي مي‌ذاشتم توش بايد بهم كد چكسام انتهايي اسنبف شده رو مي‌داد ولي نمي‌داد. با Online Calculatorها محاسبه كردم نشد پارامترها رو چپ و راست كردم نشد به نذر و نياز متوسل شدم نشد و در نهايت الطاف الهي دستشون رو از آستين كفار بيرون آورد و سوالي كه توي يكي از فرومهاي عالي مربوط به يكي از همين Online Calculatorها پرسيده بودم كمي بعد پاسخ داده شد.

ولي من حتي وقت نكردم كه صحت اون پاسخ رو كه به نظر مي‌رسيد كاملا درست و اثبات شده باشه بررسي كنم و حتي نشد كه شعورم رو نشون بدم و تشكري هرچند خشك و خالي در قبال خوش آمد و پاسخ سوالم به طرف كه اسم جالبي هم داشت و منو ياد رگولار اكسپرشن مي‌نداخت تحويل بدم. واقعاً متاسفم كه اينقدر بي فرهنگ شده‌بودم ولي خوشحالي چيز بهتري كه پيدا كرده بودم اجازه نداد متين بازي در بيارم!

قضيه از اين قرار بود كه يه بسته پيدا كردم كه پروتكل PPP رو به زبان اسمبلي و براي داس پياده سازي كرده بود. پرتاب آجر به طبقه آخر آسمانخراش از اين كار راحت تر بود ولي واقعيت داشت و كار مي‌كرد… يعني گذاشتيمش توي WOW (توضيح اينكه اين ويندوز در ويندوز يه امكان بالاي هسته هست كه توي ويندوزهاي سري NT قادره تا حد زيادي محيط سازگار براي برنامه‌هاي DOS فراهم كنه) و ديديم كه يه TSR هست ( توي داس برنامه‌هايي كه پشت صحنه كارشون رو انجام مي‌دادن رو مي‌گفتن. داس از اين شعورا نداشت كه مالتي تسك باشه ولي چون برنامه نويسا باشعورتر بودن بهش حالي كرده بودن اين تريپ رو!) كه وقتي ران مي‌شه يه Vector برمي‌گردونه كه مي‌توني با دنبال كردن اون وكتور هويج هاي IP رو بدي دست اين آب ميوه‌گيري تا ضمن ارسالشون توي اينترنت به نور چشم فتحي هم تبديل بشي…

خلاصه اينكه فتحي مي‌خواست يه برنامه بنويسم كه با تست هزاران حالت ممكن بالاخره به پارامترهاي CRC دست پيدا كنم. ضمن اينكه براي همون يه كار راه ساده‌تري پيدا شد، براي كل پروژه هم سلوشن *انساني‌تري يافت شد كه شيخ زياد گردش نگشته بود.


در اين باره

The Point-to-Point Protocol (PPP) RFC

Point To Point Protocol

PPP Design, Implementation, and Debugging (۲nd Edition)

A painless Guid to CRC error detection algorithms

پي نوشت:

*اگر من فراتر را نگريستم، با ايستادن بر شانه‌هاي غولهاست .(نيوتون)

*آنكس كه نداند و بداند كه نداند، لنگان خرك خويش به منزل برساند (منسوب به امام فخر رازي)

*دي شيخ با چراغ همي گشت گرد شهر، كز ديو و دد ملولم و انسانم آرزوست

گفتيم يافت مي‌نشود گشته‌ايم ما، گفت آن‌چه يافت مي‌نشود آنم آرزوست (مولانا)