جنگ ویرایشگرها

اریک ریموند کوانی تازه به مجموعه کوان‌های یونیکسی استاد Foo اضافه کرده است. ترجمه این کوان جدید با نام جنگ ویرایشگرها را می‌توانید از این‌جا بخوانید. این کارتون هم به نظرم جذاب و مربوط بود، ترجمه‌اش کردم.

emacs-vim-fa

حس ناب خدا بودن: سرآغاز

حدود ۲ هفته پیش جادی در «لینک‌های شاد آخرین دوشنبه خرداد ۱۳۹۴» سایتی به اسم زمانا را معرفی کرد که با رویکردی متفاوت از همه سایت‌های خبری و وبلاگ‌هایی که می‌شناسیم، به مقوله فناوری می‌پردازد. علاوه بر تفاوت رویکردی به مطالب پوشش داده شده، زمانا بر روی سرویس blog.ir میزبانی می‌شود و به سراغ دامین و هاست اختصاصی نرفته است. با این‌که غالب مطالبی که در زمانا دیدم به نظرم جذاب بودند (و البته طراحی ساده و شیکی که برای پوسته سایت انجام شده است را نیز به شدت می‌پسندم) مطلبی که روز اول تیرماه منتشر شده بود با عنوان «مولینیو: حس ناب خدا بودن» برایم بسیار عزیزتر بود و هم خاطراتی از یک دهه پیش را زنده کرد.

molyneux

اگر حوصله خواندن مطلب اصلی را در زمانا ندارید باید خلاصه بگویم که این مطلب مروری مختصر است بر فعالیت‌های حرفه‌ای پیتر مولینیو، کارآفرین (مد این روزهاست دیگر!)، رویاپرداز و بازی‌ساز مشهور انگلیسی که شرکت بازی‌سازی‌اش (Bullfrog) و بازی‌های سری Populousاش بسیار محبوب شدند. جالب‌ترین بخش این داستان هم نظر خود مولینیو درباره بازی‌ها و دنیای درون آن‌ها است. آن‌جایی که می‌گوید:

بازی باید طوری باشد که گیمر حداکثر آزادی را داشته باشد، به عقیده من گیمرها باید خدای بازی خودشان باشند و نتیجه بازی را طوری که دوست دارند تغییر دهند. هدف من از این کار ساختن دنیاست نه کسب درآمد.

اما خاطره‌ای که در ابتدای متن به آن اشاره کردم، به نمایشگاه بین‌المللی کتاب در اواخر دهه ۷۰ مربوط بود. زمانی که هنوز با اشتیاق در این نمایشگاه شرکت می‌کردم و البته مجله محبوب «کامپیوتر» هنوز منتشر می‌شد. در نمایشگاه آن سال یکی از محصولاتی که در غرفه مجله کامپیوتر دیدم و تهیه کردم، CD‌ بازی Populous: The beginning بود.

Populous-COVER

یک CD نقره‌ای در جلدهای شیشه‌ای مرسوم آن زمان و یک صفحه A4 سیاه‌وسفید پرینت شده حاوی راهنمای چند مرحله اول بازی که با چهار بار تا شدن در داخل کاور CD جا شده بود. آن بازی برایم بسیار جالب بود و به قول مولینیو آن زمان خدای دنیای خودم بودم. در این بازی شما در نقش جادوگر-رییس یک قبیله وظیفه توسعه، مدیریت قبیله و همین‌طور رهبری افراد را برعهده دارید و باید به کمک نیروهای‌تان بر قبیله‌های مجاور غلبه کنید.

Populous-2

گرچه شاید این بازی اکنون در برابر عناوینی مانند Clash of Clans یا نمونه‌های مشابه (چه به لحاظ گیم‌پلی، چه به لحاظ گرافیک یا سهولت بازی کردن) حرفی برای گفتن نداشته باشد، اما من به واسطه خاطرات خوشی که برایم زنده می‌کند دوستش دارم. به لطف تورنت به راحتی تهیه‌اش کردم و با سادگی غیرقابل باوری بدون داستان و دردسر روی ویندوز ۸.۱ کار کرد!

Populous-1

اگر مثل من از این بازی خاطره‌ای خوش دارید یا اندک وقت فراغتی برای بازی کردن، می‌توانید آن را از این آدرس (با حجم حدود ۳۰۰ مگابایت) دانلود کنید (برای شروع دانلود باید حدود ۲۰ ثانیه صبر کنید) و لذت ببرید. و البته چون این بازی برای ویندوزهای ۹۵ و ۹۸ طراحی شده است، به سخت‌افزار چندان قدرتمندی هم نیاز ندارد، پس خدای دنیای خودتان باشید.


پی‌نوشت: ممکن است در بعضی سیستم‌ها لانچری که روی دسک‌تاپ ظاهر می‌شود کار نکند. در این حالت به سراغ فولدر خود بازی در C:\Program Files (x86)\GOG بروید و مستقیما فایل popTB.exe را به صورت عادی یا با Run as Administrator اجرا کنید

این‌جا تهران است، سال ۱۳۹۴ خورشیدی

امروز ۲۳ اردیبهشت ماه سال ۱۳۹۴ است و این‌جا یکی از محله‌های قدیمی شهر تهران است. برای کاری که کمی بعدتر توضیح می‌دهم مجبور شدم به این محله سری بزنم و واقعا از دیدن چنین محیطی به شدت شوکه شدم. راستش حلبی‌آباد زیاد دیده‌ام، در شهرهای کوچک زندگی کرده‌ام و چنین صحنه‌هایی برایم بیگانه نیستند. اما دیدن این صحنه در قلب پایتخت و آن هم در میانه دهه نود خورشیدی برایم بسیار شگفت‌آور بود.

IMG_5246

این‌جا هیچ نشانه‌ای از زندگی مدرن نیست. از تهران «شهر مهربانی» هیچ اثری دیده نمی‌شود. از بهداشت و زیبایی هیچ خبری نیست. به دلایلی (از جمله ترس از دردسر) جرات نکردم از اهالی محل، معتادی در گوشه یک خرابه یا آن کودک معلولی که در میان آلودگی کوچه بازی می‌کرد عکس بگیرم. اما فقط کافی است رنگ همین تصاویر را بردارم تا واقعا حال و هوای شهری کوچک و توسعه‌نیافته را در دهه چهل یا سی احساس کنید.

IMG_5245

اما داستان از این قرار است که گروهی از اهالی بازار و خیرین محل قصد دارند مسجدی قدیمی را در این محله بازسازی کنند و درست به همین خاطر بود که مجبور شدم به این‌جا بیایم. این تصویر مسجدی است که قرار است به عمارتی نوساز و دو طبقه تبدیل شود.

IMG_5235

از دید من اما مردم این‌جا بیش از هر چیز «نان» می‌خواهند، «بهداشت» می‌خواهند، «مدرسه» می‌خواهند و بعد وقتی از دامنه‌های هرم مازلو بالاتر آمدند، می‌توان در مورد اعتقادات و مناسک مذهبی‌شان صحبت کرد و کار خیر انجام داد.


پی‌نوشت: دوستی می‌گفت تو نمی‌توانی تکلیف تعیین کنی! شاید اگر اختیار بودجه آن کار خیر در اختیار خود این مردم هم بود ساخت این مسجد را به ساخت یک مدرسه یا درمانگاه ترجیح می‌دادند. راستش پاسخی ندارم. در پی اثبات اهمیت چیزی در برابر بی‌اهمیتی چیز دیگری هم نیستم. من بیش از آن‌که خودم را جای آن مردم بگذارم که چه تصمیمی می‌گرفتند، خودم را جای آن  فرد خیر تصور کرده‌ام که اگر من بودم چه می‌کردم.

نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش پایانی- هک‌های عمیق‌تر)

در قسمت قبلی در مورد تجربه‌های برنامه‌نویسی‌ام و سروکله زدن با گرافیک‌های کمودور صحبت کردم. در این قسمت پایانی می‌خواهم در مورد زبان ماشین صحبت کنم و همچنین کتاب و ابزاری جانبی که کمک کردند تا درک بهتر و بیشتری از ماشین‌ام داشته باشم. و در آخر از هکی صحبت خواهم کرد که آن را بیش از همه دوست دارم.


برنامه‌نویسی پیشرفته با Commodore 64 Programmers Reference Guide

در کلاس‌های مدرسه و زمانی که با دوستان در مورد کامپیوترهای‌مان و بازی‌ها و غیره حرف می‌زدیم، یکی از دوستان به کتاب «پیشرفته‌ای» اشاره کرده که به تازگی به دستش رسیده بود و دانش برنامه‌نویسی او را چندین پله ارتقا داده بود. با هزار خواهش و التماس توانستم آن را برای یکی دو روز امانت بگیرم. کتابی واقعی در کار نبود. کتاب واقعی را با فناوری فتوکپی (هنوز دستگاه به اصطلاح زیراکس که کیفیت بالاتری داشت همه‌گیر نشده بود و هزینه یک برگ زیراکس بیش از دو برابر فتوکپی بود!) تکثیر کرده بودند و در نبود صحافی‌های سیمی و فنری، آن را با منگنه کتاب دوخته بودند. شما فقط باید تصور کنید که از جلدی که در تصویر زیر می‌بینید، چه اثر سیاه و سفیدی بر روی یک مقوای کرم رنگ نقش می‌بندد!

c64-ProgrammersReferenceGuide

اما برخلاف ظاهر بدترکیب و مدت کوتاهی (کمتر از یک هفته) که آن را در اختیار داشتم، این کتاب تاثیر بسیار شدیدی روی دانش من از کامپیوتر (در مقیاس آن دوران) گذاشت. Commodore 64 Programmers Reference Guide در واقع کتاب مقدس برنامه‌نویسان کمودور بود:

مرجعی کامل برای درک کامل یک کامپیوتر.

چیزی که بعید می‌دانم در دنیای کنونی ما برای یک گوشی کوچک موبایل هم وجود داشته باشد. با این کتاب تازه فهمیدم که چیزی به اسم زبان ماشین هم وجود دارد. مفهوم IRQ و عملکردهای بیتی AND و OR را فهمیدم و مفاهیم پوینتر و ذخیره آدرس دو بایتی و بسیاری چیزهای دیگر را درک کردم. بارهای اولی که بازی‌های کمودور را LOAD می‌کردم با تصور این‌که با خواندن کد برنامه می‌توانم آن را درک کنم و تغییر دهم، دستور LIST را اجرا می‌کردم تا برنامه بازی را ببینم و غالبا تنها با یک خط روبرو می‌شدم:

10 SYS 2061

بعد از خواندن کتاب تازه فهمیدم کل برنامه بازی به زبان ماشین در حافظه سیستم بار شده و این دستور تنها کنترل اجرا را به روالی در آدرس 2061 منتقل می‌کند. اما چرا 2061؟

صرفه‌جویی در حافظه، برنامه‌ای که خودش را تغییر می‌داد

در همین کتاب خواندم که کمودور باز هم برای صرفه‌جویی در حافظه، هیچ‌گاه مانند کامپیوترهای دیگر سورس برنامه را به صورت متن نگه‌داری نمی‌کند. بلکه هر یک از کلمات کلیدی و عملگرها و غیره را با یک کد عددی یک بایتی جایگزین می‌کند. فکر می‌کنم شروع این اطلاعات از آدرس ۲۰۴۹ حافظه بود. به این ترتیب هر خط دستور مانند

10 FOR I=1 TO 100

به جای این‌که با احتساب فضاهای خالی ۱۷ کاراکتر جا بگیرد، تبدیل می‌شد به ۹ بایت کد. دو بایت برای شماره خط، دو بایت برای آدرس شروع خط بعدی، یک بایت کد FOR، یک بایت I، یک بایت علامت مساوی، یک بایت عدد ۱، یک بایت کد TO و یک بایت هم ۱۰۰. وقتی این را فهمیدم به این فکر افتادم که احتمالا می‌شود با چند دستور POKE و عوض کردن خانه‌های مناسب حافظه، خود کدهای برنامه در حال اجرا را عوض کرد به گونه‌ای که در هر بار اجرا عملکردی متفاوت داشته باشد.

escher-hands

برنامه‌ای برای این کار نوشتم و آنقدر با شماره خط‌ها و علامت‌های «:» اضافی (جدا کردن دستورات در یک خط) بازی کردم تا بالاخره تغییر محتویات آدرس‌ها Syntax برنامه را خراب نمی‌کرد. حالا برنامه‌ای داشتم که در یک بار اجرا عدد ۱ را چاپ می‌کرد و بار دوم عدد ۲ را و این کار را با متغیرها انجام نمی‌داد. سورس برنامه عوض می‌شد و اگر از آن LIST می‌گرفتم، هر بار لیستی جدید را به نمایش می‌گذاشت! البته هیچ کاربردی برای این برنامه متصور نبودم، اما همین الان با خواندن مطلب ویکی‌پدیا در مورد self-modifying code فهمیدم که چنین برنامه‌هایی می‌توانند کاربردهای جالبی داشته باشند!

احتمالا الان می‌توانید حدس بزنید که ۲۰۶۱ از کجا آمده است. برنامه بیسیک تنها برای این نوشته شده بود که برنامه اصلی بازی به زبان ماشین را صدا بزند. برنامه‌نویسان هم برای حداکثر استفاده از حافظه، روال‌های زبان ماشین را درست از اولین آدرس خالی بعد از کدهای بیسیک ذخیره کرده بودند.

به هر حال این کتاب و آشنایی با زبان اسمبلی و کدهای ماشین و خانه‌های حافظه باعث شد که به دنبال برنامه اسمبلر بگردم که البته پیشاپیش بگویم همانند بازی‌ها و برنامه‌های خودتغییر، هیچ‌گاه چیز خاصی از آن حاصل نشد! نخستین برنامه‌های اسمبلر را باید مثل همه برنامه‌ها از روی کاست می‌خواندم، اما مشکل طولانی بودن بارگذاری و محدودیت امکانات باعث شد به سراغ ابزاری سریع‌تر و با قابلیت‌های بیشتر بروم.

کارتریج ACTION-VI : دنیای جدید

در جست‌وجوی یک کارتریج اسمبلر به کارتریج اکشن ۶ برخورد کردم (که باز هم مطابق دید عموم مردم از کمودور ۶۴ به عنوان یک کنسول بازی) برای «نسوز کردن بازی‌ها» مشهور شده بود. اما ابزاری بسیار قدرتمند بود و توانایی‌هایی بسیار بیشتر از اجرا کردن کدهای تقلب بازی‌ها داشت.

 

ActionReplay-6

این کارتریج یک برنامه اسمبلر سریع با خودش داشت. امکاناتی برای فرمت کردن و آماده‌سازی دیسکت‌ها، گرفتن نسخه‌های پشتیبان، دستکاری تنظیمات حافظه و نصب یک Fast Loader فراهم می‌کرد و از همه مهم‌تر سیستمی داشت که می‌توانست محتوای حافظه RAM کمودور را به اصطلاح فریز کرده و بعد از ویرایش خانه‌های دلخواه دوباره کمودور را وادار به ادامه کارش کند. یکی از کلیدهایی که بالای کارتریج می‌بینید (معمولا سمت راستی) دکمه ریست است و دیگری دکمه فریز کردن حافظه. تصویر زیر صفحه آغازین کمودور را هنگام زدن کلید ریست این کارتریج نشان می‌دهد.

ActionReplay6-ScreenShot

در این صفحه من هیچ‌گاه از گزینه CONFIGURE MEMORY سر درنیاوردم و از آن استفاده نکردم. اما در قسمت UTILITIES یک اسمبلر سریع و راحت وجود داشت که با آن اسمبلی را هم کمی تجربه کردم.

بالن هوای گرم، با سرعت نور

اولین برنامه کاملی که با دستورهای اسمبلی نوشتم، اسپرایت بالن مشهور کمودور را در بالا سمت چپ صفحه نمایش می‌داد و سپس در یک حلقه هر بار یک واحد به x و y آن اضافه می‌کرد تا به سمت پایین سمت راست صفحه حرکت کند. البته اول اسپرایت را با برنامه اسپرایت ادیتوری که خودم نوشته بودم، ساختم و در خانه‌های حافظه گذاشتم و بعد با اسمبلر کارتریج مختصات‌دهی آغازین و روال حلقه را پیاده کردم. بار اول با این که برنامه کامل و بی‌اشکال بود هیچ چیزی روی صفحه ظاهر نشد. بعد از چندین بار آزمایش و خطا فهمیدم که سرعت این برنامه به حدی زیاد است که بالن حرکت را انجام می‌دهد، اما من آن را نمی‌بینم.

balloon

برای کند کردن سرعت برنامه دو حلقه تو در توی ۲۵۶ تایی خالی را برای تلف کردن وقت داخل حلقه اصلی بازی گذاشتم تا موفق شدم بالن را ببینم. اما باز هم بالن با سرعت نور قطر صفحه را طی می‌کرد و برنامه تمام می‌شد. به این فکر افتادم که برنامه ۸ وزیر را برای سرعت بالا با اسمبلی بنویسم ولی سواد واقعی من در اسمبلی به چند دستور JMP و CMP و ADD محدود می‌شد که برای برنامه‌ای پر از شرط و محاسبات مانند ۸ وزیر بسیار کم بود.

مالتی تسکینگ واقعی با IRQ

احتمالا می‌دانید که وقفه‌ها یا IRQ (سرنام Interrupt ReQuest) روال‌هایی هستند که به صورت منظم و در فواصل زمانی مشخص توسط پردازنده کامپیوتر اجرا می‌شوند.  دلیل این که وقفه نامیده می‌شوند این است که پردازنده در این فواصل زمانی برنامه در حال اجرا را متوقف کرده و روال‌های IRQ را اجرا می‌کند و دوباره به سراغ برنامه اصلی باز می‌گردد. استفاده از وقفه‌ها بیشتر به دردبرنامه‌نویس‌های سیستم می‌خورد که توسط آن‌ها تمام مدت ابزارهای جانبی را برای دریافت یا ارسال اطلاعات کنترل کنند یا در بازی‌ها و برنامه‌های بی‌درنگ (Real Time) شرط‌های حیاتی را به صورت مداوم چک کنند. مثلا سیستم پیش‌فرض کمودور از یکی ازهمین وقفه‌ها برای نمایش مکان‌نمای چشمک‌زن استفاده می‌کرد.

IRQ

برای امتحان کردن این قابلیت عجیب هم تنها هنری که توانستم به خرج دهم این بود که روالی را به اسمبلی نوشتم که دایما بیت‌های کنترلی کلیدهای SHIFT و CONTROL را تست می‌کرد و در صورت فشرده شدن این کلیدها به ترتیب رنگ زمینه متن و رنگ حاشیه آن را عوض می‌کرد. این چیزی بود که در جمع دوستان هم کسی به سراغش نرفته بود و برای همه‌مان جذاب بود که سیستم در عین حالی که وظایف معمولش را انجام می‌دهد، بدون هیچ کد مریی کار دیگری را هم به صورت همزمان در دست اجرا دارد.

هک آخر، بازی دوست‌داشتنی

و اما آخرین و از دید خودم جذاب‌ترین هکی که انجام دادم، به قابلیت فریز کردن حافظه کمودور توسط کارتریج اکشن ۶ مربوط بود و بازی Arkanoid که در قسمت اول از آن صحبت کردم. اندکی پس از شروع بازی، کلید فریز را می‌زدم و وارد منوهای اکشن ۶ می‌شدم. آن‌جا گزینه‌ای برای نسوز کردن بازی وجود داشت. سیستم کار به این شکل بود که یک بار محتویات حافظه را بررسی (یا ذخیره) می‌کرد. بعد از شما می‌خواست به بازی برگردید و عمدا یک بار ببازید و دوباره حافظه را فریز کنید. وقتی این کار را می‌کردید دوباره حافظه را چک می‌کرد تا ببیند محتویات کدام خانه‌ها عوض شده است. معمولا با همان یک بار و گه‌گاه با دوبار تکرار این فرآیند خانه‌ای که اعداد مربوط به «جان» کاراکتر بازی در آن ذخیره شده بود پیدا می‌شد و کارتریج از آن به بعد محتویات آن خانه را ثابت نگه می‌داشت. یعنی بازی شما دیگر نسوز شده بود!

arkanoid_level_10

اما باز هم بازی کردن ۳۲ مرحله Arkanoid با احتساب هر مرحله ۲ یا ۳ دقیقه، آن هم بدون SAVE کلی زمان می‌برد. هک اصلی این بود که من بعد از نسوز کردن بازی به سراغ محتویات حافظه تصویر می‌رفتم و آن‌ها را پاک می‌کردم. اگر خاطرتان مانده باشد در قسمت قبلی گفتم که پس‌زمینه‌ها و برخی اجزای بازی‌ها با فونت‌ها ساخته می‌شدند. من چیزی مانند دستور cls را اجرا می‌کردم و خلاص! همه آجرها از بین رفته بودند. فقط کافی بود در هر مرحله یک بار فریز کنم، حافظه تصویر را پاک کنم و بعد از برگشت به بازی عمدا بسوزم.

arkanoid_last_level
غول مرحله آخر

جان‌هایم که تمام نمی‌شد، اما بعد از سوختن و شروع مجدد مرحله، کامپیوتر متوجه می‌شد که تمام آجرها پاک شده و من به مرحله بعد می‌رفتم! تنها در برخی مراحل که حریف‌های متحرک هم وجود داشتند، مجبور بودم نهایتا ۵ یا ۶ ضربه موفق (به آن اسپرایت‌ها) بزنم تا آن مرحله هم تمام شود. فقط مرحله آخر بود که در ساخت غول آن از اسپرایت و آجر و غیره خبری نبود و این مرحله را باید حتما به صورت عادی رد می‌کردم. به این ترتیب من تقریبا در ۹۰ درصد اوقات بازی را تا آخر تمام می‌کردم و بلند می‌شدم! باید اعتراف کنم این کار به خصوص در جمع‌های فامیلی، باعث می‌شد حس یک گیک تمام عیار را داشته باشم!

پایان داستان

شاید شما هم کنجکاو باشید که بر سر این ابزار عزیز چه آمد! واقعیت چندان هم جذاب نیست! حدود سال ۸۱ بود، ده سال از خرید کمودور می‌گذشت و در دوران پادشاهی پنتیوم ۲ و ۳ مدت‌ها بود سراغش نرفته بودم. آن زمان هم هیچ‌گاه فکر نمی‌کردم چنین حس نوستالژیکی نسبت به این اولین کامپیوترم پیدا کنم. به همین دلیل آن را با همه کارتریج‌ها و نوارها و دسته‌های بازی در اصفهان به قیمت ۱۰۰۰۰ تومان فروختم. کاری که اکنون حس می‌کنم از انجامش به شدت پشیمانم!

c64_Pack


بعید می دانم کسی از خوانندگان علاقه‌ای به آزمودن سیستمی به این قدمت داشته باشد، اما اگر دوست داشتید کمی با پیرمردهای عصر کامپیوتر و نیای بزرگ پی‌سی‌ها سروکله بزنید می‌توانید یک امولاتور خوب را در این آدرس بیابید. بازی‌های بسیاری در این آدرس موجود است و برنامه‌ها را هم با کمی جست‌وجو در سایت‌های طرفداران کمودور (مثل این) پیدا خواهید کرد.

به هر حال در این چهار پست، با پررنگ‌ترین خاطرات من از آن دوران خوش همراه بودید. حداقل در لحظه‌ای که این مطالب را می‌نویسم فکر نمی‌کنم هیچ ابزار، سرگرمی، کامپیوتر یا چیز دیگری تا این اندازه برایم خاطره‌انگیز بوده باشد یا از این به بعد هم بتواند باشد. اما از کجا معلوم، شاید ۲۰ سال دیگر خاطره نوشتن همین پست هم داستانی نوستالژیک باشد که برای نسلی کوچک‌تر تعریف می‌شود.

تا آن زمان، با ماشین‌های‌تان خوش باشید و لذت ببرید!

نوستالژی: زمانی که مردها هنوز مرد بودند! (بخش اول)

احتمالا بعضی از شماها می‌دانید که عنوان این مطلب از یکی از نامه‌های لینوس توروالدز در میلینگ لیست مینیکس (comp.os.minix) برداشته شده است. در این ایمیل که در تاریخ 5 اکتبر 1991 (13 مهرماه 1370) ارسال شده، توروالدز این طور شروع می‌کند:

«آیا شما هم دلتان برای روزهای خوش مینیکس 1.1 تنگ شده است؟ زمانی که مردها هنوز مرد بودند و خودشان درایورهای ابزارهای‌شان را می‌نوشتند؟ آیا پروژه خوبی در دست ندارید و تشنه این هستید که با سیستم‌عاملی سروکله بزنید که بتوانید براساس نیازهای‌تان تغییرش دهید؟ و . . . »

مقدمه

من در زمان نوشته شدن این ایمیل تازه مقطع دبیرستان را شروع کرده بودم و هنوز یک سالی تا خرید اولین کامپیوترم فاصله داشتم. این اولین کامپیوتر هم البته یک کمودور 64 بود که خب نه سیستم‌عاملی داشت و نه ابزار جانبی چندانی به آن متصل می‌شد که بخواهم (و البته بتوانم) برای آن درایوری بنویسم.

Commodore-64-White

اما نمی‌دانم چرا خواندن این جملات همواره حسی نوستالژیک را در من زنده می‌کند! انگار توروالدز مستقیما من را هدف گرفته است! همیشه حسی غریب نسبت به مفهوم «کامپیوتر» در آن دوران دارم. ابزاری که بسیاری آن را تنها کنسولی قدرتمندتر از آتاری و سگا برای بازی می‌دیدند. تنها معدودی از دوستان و آشنایان به آن دسترسی داشتند و حداقل در بازاری که من می‌شناختم (محدوده چهارراه سینما سعدی شیراز و پاساژ برق!) به جز بازی‌ها هیچ برنامه کاربردی برای آن وجود نداشت. حتی فروشندگان این دستگاه هم آن را نوعی بازی کامپیوتری می‌دیدند!

گوشی هوشمند، اپ، رابط کاربری گرافیکی و ابزارهای محاسباتی که حتی کودکان هم می‌توانند با آن‌ها کار کنند، فکر کنم هنوز به ذهن سازندگانشان هم نرسیده بود.

به هر حال دراین مجموعه پست‌ها که احتمالا بسیار هم طولانی خواهد شد، برای فرونشاندن آن حس نوستالژی، و شاید برای آشنا شدن کاربران تازه و متولدین دهه 60 و 70 با حال و هوای آن دوره و برای یادآوری خاطرات خوب گذشته یعنی همان زمانی که «مردها هنوز مرد بودند» می‌خواهم مروری کلی داشته باشم بر تجربه‌های اولیه‌ای که در شروع روزهای همه‌گیری کامپیوترهای خانگی (و نه شخصی) از سر گذرانده‌ام.

commodore

پیش از آن‌که (اگر حوصله کردید) ادامه مطلب را بخوانید، بد نیست خواهش کنم که اگر تجربه‌ای از این نوستالژی‌های قدیمی دارید و حوصله‌ای برای نوشتن، حتما آن‌ها را بنویسید و اطلاع بدهید تا همه را یک‌جا جمع کنیم. بویژه روی صحبتم با هم سن و سال‌هایی مثل جادی است که از طریق پادکست‌ها و غیره می‌دانم از اسپکتروم و دوران BBSها هم خاطرات جذابی دارد. در ادامه با «صفحه آبی زندگی» مطلب اصلی را شروع می‌کنم.

صفحه آبی زندگی

برای بسیاری دیدن صفحه‌ای آبی با متن‌های سفید، به مفهوم مشکلی جدی (و غالبا سخت‌افزاری) در سیستم‌های ویندوزی و هنگ کردنی است که معمولا تنها علاجش ری‌استارت کردن کامپیوتر است. این صفحه، «صفحه آبی مرگ» یا Blue Screen Of Death یا به اختصار BSOD نامیده می‌شود.

BSOD

اما در آن زمانی که من کمودور را روشن می‌کردم، رنگ آبی صفحه و متن‌هایی که با آبی کم‌رنگ مایل به سفید نشان داده می‌شدند نه تنها هیچ نشانی از مرگ و خرابی نداشتند، بلکه نشانه راه‌اندازی بلااشکال سیستم بودند. تنها دو چیز این صفحه از همان ابتدای کار آزاردهنده بود. یکی فرم مربعی مکان‌نما بود و دیگری متن‌ها که یا همیشه با حروف بزرگ نشان داده می‌شدند یا با حروف کوچک! حالتی برای ترکیب وجود نداشت! البته در همان زمان در پی‌سی‌های XT مدرسه دیده بودم که مکان‌نمای داس یک زیر خط بود و فونت‌هایش هم بسیار زیباتر با قابلیت ترکیب حروف بزرگ و کوچک. به هر حال این صفحه آبی و آن عدد کذایی 38911 تا مدت‌ها زندگی ما بود . . .

C64_startup_animiertدرست خاطرم هست که در آن تابستان سال ۱۳۷۱ بعد از خرید این دستگاه و برخی متعلقاتش (که آن زمان با قیمت ۲۴هزار تومان تقریبا حقوق یک ماه پدرم را مصرف کرد) به خانه دایی‌ام رفتیم و من در میان نگاه‌های کنجکاو فامیل بعد از روشن دستگاه، تنها هنری که توانستم نشان دهم این بود:

FOR I=1 TO 10:PRINT I:NEXT

و نتیجه چاپ شدن اعداد یک تا ده بود و ادامه نگاه متعجب حاضران که هنوز نمی‌دانم از شگفتی این محصول جادویی بود یا شگقتی این که چنین پولی خرج نمایش  اعداد ۱ تا ۱۰ روی صفحه تلویزیون شده است. واقعیت این است که در آن دوران نه آن‌ها و نه حتی خود من نمی‌دانستیم که از این ابزار چه انتظاری می‌توان داشت!

این دسک‌تاپ من در آن دوران بود و در غیاب دکمه‌ها و آیکون‌ها و تصاویر، تنها شخصی‌سازی قابل انجام تغییر رنگ پس‌زمینه و پیش‌زمینه بود که تازه آن هم با نشاندن دستی شماره رنگ‌ها در خانه‌های خاصی از حافظه انجام می‌شد. حتی هنوز اعداد و دستورات را به یاد دارم:

POKE 53280,5
POKE 53281,11

اولی برای نشاندن رنگ سبز در مستطیل حاشیه و دومی برای پر کردن محل نوشتن متن‌ها با رنگ خاکستری.

قطعات جانبی

اما متعلقاتی که از آن‌ها حرف زدم چه بودند؟ برای داشتن یک تجربه کاربری نسبتا کامل علاوه بر آداپتوری که به واسطه سایز بزرگش به Brick یا آجر مشهور بود، به یک کاست‌پلیر مخصوص کمودور، و یک جوی‌استیک نیاز داشتم و البته توانستم یک کارتریج تنظیم هد را هم به این مجموعه اضافه کنم! عکس این قطعات را به همراه مختصری توضیحات در ادامه می‌بینید.

آداپتور

هنوز هم واقعا نمی‌دانم که چرا این آداپتور سایزی به این بزرگی داشت. آن زمان فکر می‌کردم که دلیلش باید سیم‌پیچ‌ها و هسته‌های آهنی باشد که مانند ترانسفورماتور عمل می‌کند! اما همان موقع هم امکان تبدیل برق AC به DC و تغییر ولتاژ با تجهیزات الکترونیک وجود داشت و بعید است این آداپتور هم به شیوه‌ای غیر الکترونیکی این کار را می‌کرده است.

Brick

کاست‌پلیر

شاید در نگاه اول تفاوت چندانی با کاست پلیرهای معمولی نبینید. اما مهم‌ترین بخش افزوده‌ای که این دستگاه داشت، آن شمارنده‌ای بود که در غیاب ابزارهای دخیره‌سازی دارای دسترسی تصادفی، برای تعیین شروع و پایان فایل‌های مختلف روی نوار کاست مورد استفاده قرار می‌گرفت.

commodoreDatassette

جوی‌استیک

این همان جوی‌استیک آتاری است که همان زمان هم به واسطه خشکی، سادگی و امکانات کم (حتی در مقایسه با دسته‌هایی که خلبانی نامیده می‌شدند) به آن‌ها لقب «گوشت‌کوبی» داده بودیم.

Joystick

کارتریج تنظیم هد

این قطعه سخت‌افزاری یکی از دشوارترین فرآیندهای کار با برنامه‌ها را برای من ساده می‌کرد و مایه حسرت بسیاری از کمودور داران دیگر بود. درباره کارکرد آن هنگام صحبت از نرم‌افزارها توضیح خواهم داد. کارتریجی که من داشتم مثل همین تصاویر بدون برچسب بود و رنگ صورتی دخترانه‌ای داشت.

Cartridge


این مجموعه، کل چیزهایی بود که پای من را به دنیایی جدید و تاحدی ناشناخته باز کرد که آن زمان دنیای کامپیوتر، کمی بعدتر حوزه انفورماتیک، بعدها دنیای محاسبات و گاه عرصه فناوری اطلاعات نامیده شد.

در قسمت بعدی درباره نحوه تهیه، تکثیر و استفاده از نرم‌افزارها (می‌توانید بخوانید بازی‌ها!) صحبت خواهم کرد.

شب نوشت‌ها

مدت‌ها پیش از گسترش یافتن قلمرو امپراتوری عظیم وردپرس و درست در نخستین سال‌های شروع وبلاگ‌نویسی فارسی، در سایت پرشین بلاگ ثبت نام کردم و به این ترتیب اولین تجربه‌های آنلاین‌نویسی من در وبلاگی با نام شب‌نوشت‌ها رقم خوردند. در دی‌ماه 81 بنا به دلایلی مجبور شدم نوشته‌های قبلی‌ام را که البته تعدادشان اندک بود، پاک کنم و نوشتن را از نو شروع کنم. این نوشتن به صورت پراکنده تا سال 83 و بعدا به دفعات بسیار اندک تا سال 85 هم ادامه داشت. اما بعد از آن وبلاگ شب‌نوشت‌ها دیگر هرگز به‌روز نشد.

بعد از آن داستان وردپرس و بلاگر در پیش بود که این وبلاگ درواقع امتداد همان وبلاگی است که در وردپرس به راه انداختم. کمی بعدتر آن وبلاگ را به دلیل محدودیت‌های اعمال شده به سرویس وردپرس به هاست شخصی خودم منتقل کردم. در این بازه زمانی طولانی یکی دو بار سعی کردم با سیستم بلاگر هم کنار بیایم و تا راه‌انداختن وبلاگ و انتشار یکی دو پست هم پیش رفتم، اما هیچ‌وقت نتوانستم آن‌طور که باید و شاید با سیستم بلاگر ارتباط برقرار کنم. البته هیچ‌وقت هم پی‌جوی دلیلش نشدم. فقط این‌که در بلاگر راحت نبودم.

نوشتن در وبلاگ «جوانمرگ» شده‌ای که برای مجله شبکه به راه‌انداختم را هم باید به همه این تلاش‌های پاره پاره اضافه کنم.

به هر حال پس از مدت‌ها برای جمع کردن آرشیو نوشته‌هایم تصمیم گرفتم که تمام آن نوشته‌ها را به این وبلاگ منتقل کنم. مشکل این بود که متاسفانه پرشین‌بلاگ از فرمت‌های معمول انتقال اطلاعات میان وبلاگ‌ها پشتیبانی نمی‌کند. افزونه‌ای هم که برای انجام این کار روی فایرفاکس نوشته شده بود نتوانست همه اطلاعات را به راحتی استخراج کند. نتیجه این‌که با استفاده از سیستم درون‌ریزی مبتنی بر RSS وردپرس، مطالب را در گروه‌های 10 تایی به این‌جا منتقل کردم و در طی این فرآیند اطلاعات کامنت‌ها را هم از دست دادم.

مقایسه میان سبک نوشتن آن دوران با نوشته‌های کنونی برای خودم هم جالب بود. استفاده از خندانک‌ها و روزمره‌نویسی از ویژگی‌های بارز آن دوران است! البته نوشتن منظم‌تر و بیشتر را هم نباید فراموش کرد که با افزایش سن و کار و در پی آن کاهش حوصله و وقت، دیگر کم‌کم برایم غیرممکن شده است. به هر حال آن‌چه که در آرشیو این وبلاگ در سال‌های قبل از 86 می‌بینید، یادگار دوران پرشین بلاگ و نوشته‌های خام‌تر من است.

ایران پیما، محسن نامجو، تشکرهای الکی

 کسانی که من رو می‌شناسند، می‌دونن که خیلی اهل موسیقی گوش دادن نیستم و سلیقه‌ام خیلی توی این زمینه محدود هست و تازه همون موسیقی‌های مورد علاقه‌ام رو سالی یک بار گوش می‌کنم. اما دوشنبه شب (8 اسفند)، باید از یه سفر به شیراز برمی‌گشتم تهران. طبق معمول هم به خاطر ملاحظات مالی و جانی! به اتوبوس‌های ایران‎پیما رو آوردم. برای داشتن کمی تنوع و تفریح توی سفر تصمیم گرفتم یه چیزایی رو روی گوشی بریزم و در طول سفر گوش کنم.

در مورد رادیو کالج پارک توی وبلاگ جادی خونده بودم. سراغ سایتشون رفتم و حدود 15تا برنامه رو که فکر می‌کردم به موضوعشون علاقه دارم دانلود کردم. یک آلبوم جدید از محسن نامجو (+) رو هم به نام الکی، به صورت واقعا الکی و فقط به صرف جدید بودنش از برادرم گرفتم و روی گوشی کپی کردم. هیچ وقت فکر نمی‌کردم تا این حد از برنامه‌های اون رادیو و همینطور موسیقی لذت ببرم!

آلبوم الکی آلبوم بسیار خاص و از دید من جذابی بود. متاسفانه من با خود آهنگ الکی که اسم آلبوم از روش انتخاب شده، اصلا نتونستم ارتباط برقرار کنم. هم برام خسته کننده بود و هم بی‌مزه. اما از بقیه آهنگ‌ها واقعا لذت بردم. فکر نمی‌کردم که اشعار کهن و سنتی رو بشه به این خوبی با موسیقی غیر سنتی تلفیق کرد. به هر حال گوش دادن این آلبوم رو به همه پیشنهاد می‌کنم. متاسفانه راهی برای خریدش توی ایران نیست و باید نسخه دزدی رو دانلود کرد.

به هرحال ممنون از بر و بچه‌های رادیو کالج پارک، ممنون از محسن نامجو و ممنون از ایران پیما. البته نه تشکر الکی! و بیش از همه ممنون از دوستی که با امانت دادن هدفونش برای بار دوم! نگذاشت شب رو با نگاه کردن به آسمون و گوش دادن خرناس‌های مسافرین خسته تلف کنم.

ما می‏‌توانیم به تنهایی کافی نیست

هیلاری کلینتون، ساب‏‌سون و باقی قضایا

این مطلب را ابتدا برای وبلاگ اهالی شبکه نوشتم اما بد ندیدم آن را اینجا هم عنوان کنم:

چندی پیش وبلاگ یکی از خارج‏‌نشینان، به تحلیل خبری از رجانیوز پرداخته بود. پیشنهاد می‏‌کنم قبل از ادامه این مطلب خبر را از منبع اصلی تا انتها و با دقت مطالعه کنید. در این نوشته من بدون هیچ جهت‏‌گیری سیاسی و بدون توجه به مسایلی مانند تروریسم سایبری و یا روابط ایران و آمریکا، تنها از متن خبر و تصاویر مربوط به آن چند برداشت ساده دارم که بیشتر از هرچیز به عمل هک و به‌‏ویژه این هک خاص مربوط است.

1- با توجه به این عکس، هکر محترم در واقع یک سایت مبتنی بر وردپرس (درست مانند همین وبلاگ) را هک کرده‏‌اند که به هر حال به لحاظ امنیت چندان قدرتمند نیست. در چنین سایت‏‌هایی از Honey Pot و Intrusion Detection و غیره خبری نیست. بنابراین تنها زحمت هکر استفاده از روش‏های Brute Force و حتی از دید من ابزارهای متداولی مانند Sub7even های معروف خواهد بود.

2- صرف برپا شدن این سایت بر مبنای وردپرس، این امر را نشان می‌‏دهد که این سایت به هیچ‏وجه نمی‏‌تواند سایت رسمی یک مقام مسئول آن هم در کشوری نظیر آمریکا باشد. در بهترین حالت هکر محترم وبلاگ غیررسمی هیلاری کلینتون را هک کرده که شاید حتی توسط خود خانم کلینتون هم نوشته نمی‏‌شده است.

3- به تصویری که برای Deface کردن سایت استفاده شده نگاه کنید. مملو از غلط‏‌های نگارشی و دستوری انگلیسی است. آیا هکر محترم می‏‌توانند توضیح دهند “Will Help to Advance Our” به چه معنی است؟ آیا “Available From Crime” یعنی دست از جنایت بردارید؟ من به این هکر محترم پیشنهاد می‏‌کنم حتی اگر نفس عمل هک را اخلاقی می‏‌دانند برای انتقال پیام خود با مشورت دوستان از عباراتی استفاده کنند که حداقل خود هیلاری کلینتون منظور ایشان را درک کند.

4- همان‌طور که در عنوان پست اشاره کرده‌‏ام من می‏‌توانم به تنهایی کافی نیست. من می‌‏توانم بلایی بر سر یک مرسدس بنز آخرین مدل بیاورم که دیگر تا ابد قابل استفاده نباشد. اما این به هیچ‌‏وجه مهارت من در مکانیک، اتومبیل‏‌سازی یا هیچ دانش دیگری را نشان نمی‏‌دهد. با تمام وجود از هکر محترم، همفکرانش و حتی تمام دوستان و همکاران عزیز خواهش می‏‌کنم حداقل یک بار متن مقاله ارزشمند اریک ریموند با نام چگونه یک هکر بشویم یا ترجمه به نسبت مناسب آن در سایت تکنوتاکس (بخش اول و بخش دوم)  را مطالعه کنند. من هکر شدن با چنین توصیفی را ستایش خواهم کرد.

سر آغاز

زندگی از نوع دیجیتالش دارد آرام اما پیوسته و مدام به زندگی تک تک ما نفوذ می‌کند. از کامپیوتری که الان برای وب‌گردی از آن استفاده می‌کنید تا دوربین دیجیتال دوستی که لحظه‌های یک تفریح دسته جمعی را ثبت می‌کند یا پخش کننده‌ی MP3 که فرزندتان دائم به همراه دارد و یا حتی کارت الکترونیکی حساب بانکی‌تان همه و همه نشانه‌های این نفوذ همه جانبه هستند. گرچه سرعت نفوذ این شیوه جدید زندگی و وابستگی ما جماعت ایرانی به این نوع زندگی (با همه خوب و بدش) هنوز چندان شدید نیست اما به هر حال باید آماده بود و منتظر، وگرنه از قافله عقب خواهیم ماند و سهم ما تنها حمله سنگین جنبه‌های منفی آن خواهد بود.

این وبلاگ تنها تفکرات و دغدغه‌های شخصی کسی است که اتفاقا کامپیوتر و IT نه تحصیلات و زندگی حرفه‌ای اوست و نه دست اندر کار اموری از این قبیل است. اندیشه‌های کسی است که IT سرگرمی و تفریحش است. علاقه به آینده و دنیای دیجیتال را از رمان‌های ژول ورن و آسیموف آموخته است و برخی تخیلاتش تا حدی در دنیای جدید، به واقعیت نزدیک شده است و اکنون در انتظار سایر آنهاست.

نوشته‌های این وبلاگ معمولا جمع‌بندی مطالبی است که در منابع مختلف خوانده‌ام یا نتیجه تخیلاتی است که در اثر خواندن یکی از این مطالب در ذهن پرورانده ام. گاه بحثی است فلسفی و گاهی پیش‌بینی‌هایی نه چندان دور از واقع.

در هر حال تنها امید دارم که تلنگری باشد و اشاره‌ای تا شاید با دیدی متفاوت به این شیوه جدید زندگی بنگریم.