در باب وبلاگنویسی و وبلاگستان فارسی بسیار بیشتر و بهتر از من نوشتهاند. جالب اینکه امسال بسیاری از بلاگرهای قدیمی برخلاف سالهای قبل، انگار به پیشواز این روز رفتهاند و نوشتههایشان را یک هفته تا ۱۰ روز زودتر منتشر کردهاند که من اینجا تنها به دو مورد اشاره میکنم.
جادی عزیز در قسمتی از نوشتهاش وبلاگها را با شبکههای اجتماعی و انواع پیامرسانها مقایسه کرده و غیرقابل جستوجو بودن، غیرقابل ارجاع بودن و عدم انباشت دانش را مهمترین ضعف این پلتفرمها در مقایسه با وبلاگ میداند:
توی مسنجرها، ما دیگه چیزی رو انباشت نمی کنیم. هر بار چیزی رو می گیم و گم می شه، بدون امکان دسترسی مجدد عمومی بهش و بدون اینکه بشه سرچش کرد یا حتی بهش ریفرنس درست و درمون داد. حالا سوال ها دائما در گروه ها تکرار می شن و آدم ها بهشون جواب های تکراری می دن. توی چنین فضایی ما داریم خودمون رو تکرار می کنیم و چیزی رو انباشت نمی کنیم و در نتیجه جلو هم نمی ریم.
وبلاگ فقط دفترِ خاطراتِ روزانهی نسل ما نبود، دفترِ فکر کردنِ ما بود و نوشتنِ آنها، تا ببینیم از کجا به کجا رسیدهایم و میتوانیم رسید. جهانی پرارجاع که ما را از سیرِ باریبههرجهت دور نگه میداشت و میدارد. جهانی که نقطهی اصلی ما در مواجههی جدی با خود و دنیای پیرامون است، بهدور از واکنشهای آنی و تخلیههای هیجانی و مزه کردنِ انواع سالادِ فلسفه و تفکر. نقطهی توقف برای آنکه ببینیم چهها در چنته داریم و چهها نداریم و چهها میتوانیم به دیگران بخشید و چهها میتوانیم از دیگران گرفت. همهی اینها مبارزهی ما بوده است علیهِ فراموشی؛ مبارزهای که با وجودِ شبکههای مجازی هر روز سختتر هم میشود.
من هم پیش از این در باب روز وبلاگستان فارسی نوشتهام (+ و +) و شاید یکی از دلایلی که باعث میشود این روز و این موضوع برایم مهم و عزیز باشد این است که یکی از اولین مقالههایی که برای مجله شبکه ترجمه کردم، متنی مفصل درباره مایکل ارینگتون و وبلاگش Tech Crunch (که هنوز تا این اندازه مشهور و بزرگ نشده بود) و همینطور درباره کسب درآمد از طریق وبلاگنویسی بود (مقاله با فرمت pdf). اما اینبار خواستم از این روز و این موقعیت استفاده کنم و درباره چیزی مهمتر و کلیتر یعنی «نوشتن» صحبت کنم.
اما چیزهایی که نوشتن را برایم مهم و ارزشمند میکنند اینها هستند:
نوشتن همان فکر کردن است
یکی از چیزهایی که من هم مانند نویسنده این مطلب با آن موافقم این است که:
برخی تصور میکنند که اول فکر میکنند بعد مجموعهی فکری خویش را مینویسند، در صورتی که نوشتن از فکر کردن جلوتر است، ما با رقص قلم و صدای کیبورد است که فکر میکنیم، افکار جدید خلق میکنیم، نظام فکری خویش را منجسم کرده و سپس آنها را با کلمهها ثبت میکنیم
اگر فکر میکنید درباره موضوعی صاحبنظر هستید، اگر این تصور را دارید که موضوعی را در ذهنتان به خوبی حلاجی کردهاید، اگر احساس میکنید به درک متفاوتی از یک پدیده خاص رسیدهاید، سعی کنید یک صفحه درباره آن بنویسید. عدم توانایی در انجام این کار به این معنی است که باید در تصوراتتان تجدید نظر کنید. دوستانی که تجربه وبلاگنویسی دارند احتمالا بارها با این موضوع روبرو شدهاند که ایده و موضوعی برای نوشتن در سر دارند، اما زمانی که شروع به نوشتن میکنند خودِ متن آنها را به جاهایی میبرد و به نتیجههایی میرساند که پیش از شروع حتی تصورش را هم نمیکردند.
کوتاهنویسی سم است
من هیچگاه با کوتاهنویسی میانهای نداشتم و شاید به همین دلیل باشد که هیچگاه شبکههای اجتماعی و پیامرسانها آنطور که باید و شاید جذبام نکردهاند. اینجا البته از سرگرمی و اوقات فراغت حرف نمیزنم. تنها تصور اینکه بتوانم احساسات، وقایع یا هر چیز دیگری را در دو سه خط زیر یک عکس توضیح دهم تقریبا برایم ناممکن است. احتمال اینکه در یک گروه واتساپی یا تلگرامی آن هم در وقتهای آزاد کوتاه چند دقیقهای بتوان چیزی آموخت یا مباحثهای را به سرانجام رساند را قطعا نزدیک به صفر میدانم.
از دید من همین کوتاهنویسی و رسانههای «کپی/پیستی» که در آنها محتوا بدون نیاز به «نوشتن/فکر کردن» تولید میشود، یکی از دلایل عمده سطحینگری و ابتذال حاکم بر فضای مجازی است. همان جایی که همه فکر میکنند بحر طویل «مردم شهر هرچه دارید و ندارید بپوشید و …» از اشعار مولاناست!
تنها نوشته است که میماند
اما مهمترین چیزی که باید به آن اعتراف کنم این است که من از فراموش شدن به شدت میترسم. این که آمده باشی و مدتی مانده باشی و بعدِ رفتن، از همه بودنات هیچ اثری نمانده باشد بسیار هراسناک است.
شاید جمعا به دو سه نفر از نزدیکترین افراد دور و برم گفته باشم که با ارزشترین دارایی من (راجع به «چیزها» حرف میزنم نه آدمها، نه روابط و نه هر موضوع معنوی و احساسی دیگری) همین وبلاگ است و همه آن دفترهایی که از ۱۱ ازدیبهشتماه ۷۴ تا ۲۸ آذرماه ۸۹، هرچند پراکنده اما بسیار منظمتر از این وبلاگ در آنها مینوشتم. و البته یک وبلاگ وردپرسی کوچک آفلاین روی یک فلش، که خاطرات روزمره را گاهبهگاه در آن مینویسم.
از دید من اینها چیزهایی هستند که در نبود من میتوانند نشانهای باشند از بودنام، از کارهایی که کردهام، حرفهایی که زدهام و ایدهها و نظراتی که داشتهام.
آری من نه از مرگ که از فراموش شدن میترسم و هنوز گیلگمشوار امید دارم که نوشتن همان گیاه سحرآمیزی باشد که یاد مرا جاودان میکند.
به نوشتن روی بیاورید و روز وبلاگستان فارسی مبارک …
در بازار نیمه جان و رو به موت کتاب و کتابخوانی ایران، ادبیات علمی تخیلی از آن ژانرهایی است که رونق و اعتبار خودش را حسابی از دست داده است و جای خود را به سبکهای تخیلی صرف یا سادهتر بگوییم فانتزیها داده است. بار علمی داستانها و مجموعههای کنونی کمتر و کمتر شده و بار تخیلی آنها بیشتر و بیشتر. با اینکه سری داستانهایی مانند «هری پاتر» و «در جستوجوی دلتورا» را کامل خواندهام و از سری فیلمهایی نظیر «ارباب حلقهها» لذت فراوانی بردهام، اما هنوز این آثار نتوانستهاند مانند آثار علمی تخیلی ذهنم را درگیر کنند.
آشنایی من با ژانر علمی تخیلی به سالهای ۱۳۶۷ و ۱۳۶۸ و رمانهای ژول ورن برمیگردد، یعنی سالهای پایانی دوره راهنمایی. اما چیزی که من را بسیار بیشتر و شدیدتر درگیر داستانهای علمی تخیلی کرد (و حتی بانی علاقهام به حوزهای به نام علم شد) نوشتههای آسیموف بود. در چند مدت اخیر دوباره برای بازه زمانی کوتاهی درگیر داستانهای آسیموف شدم و لذت خواندن نوشتههایش را دوباره تجربه کردم. در واقع داستانی که خواندنش را ۲۵ سال پیش شروع کرده بودم، کامل کردم. داستانی که آغاز و پایانش را میدانستم، اما از اتفاقاتی که در میانه آن افتاده بود تا همین هفته پیش بیخبر بودم. تمام هدف این نوشته درواقع یادآوری خاطرات خوش گذشته برای من و وصف لذت کتابخوانی است و البته تلاش برای یاد کردن از نویسنده مورد علاقهام آسیموف فقید.
من کتاب غارهای پولادی را با ترجمه شهریار بهترین در حوالی سال ۱۳۶۹ تا ۱۳۷۰خریدم و برای اولین بار با نویسندهای عزیز به نام آسیموف آشنا شدم. این کتاب توسط انتشارات شقایق (امیدوارم از دیدن سایتش سرخورده نشوید!) منتشر شده بود و البته آن زمان نشر شقایق هنوز برای چاپ سری آثار آسیموف با آن جلدهای مشهور نقطهنقطه آبی اقدام نکرده بود. جلد خاکستری این کتاب (که همین امروز فهمیدم که اثری از آیدین آغداشلو است) همان سالها به نظر متفاوت و جذاب میآمد و در میان قفسههای فلزیِ راهروهایِ تنگ و تاریکِ کتابفروشی محمدی در خیابان داریوش شیراز، بدجور خودنمایی میکرد. کمی ورق زدن و بالا پایین کردن کتاب باعث شد فکر کنم که ارزش پرداخت ۷۵ تا تک تومانی را دارد. و این تصمیم را زمانی گرفتم که کرایه اتوبوسهای واحد (همان بنزهای لیلاند قدیمی) از میدان شهرداری شیراز تا انتهای کوی آزادگان که منزلمان بود تنها ۱۰ ریال میشد.
همانطور که گفتم، تجربه من در ژانر علمی-تخیلی تا آن زمان تنها محدود به کتابهایی بود که از ژول ورن خوانده بودم. اما همه آنها به دلیل گذشت زمان زیاد، دیگر جنبه تخیلیشان را از دست داده بودند و باید سعی میکردی خودت را در زمان ژول ورن تصور کنی تا بتوانی اهمیت و تاثیر آثار او را درک کنی. اما این کتاب جنسی متفاوت داشت. درباره آیندهای آنقدر دور صحبت میکرد، که واقعاً بدون تخیلات و توصیفات خود آسیموف نمیتوانستی هیچ ایدهای از آن داشته باشی: شهرهای سرپوشیده، انسانهایی که بواسطه تراکم جمعیت بسیار زیاد برای تامین غذاهای موردنیازشان باید با مخمر میساختند، موتورویهای خالی و تبدیل شدن تسمه نقالههای روان (استریپوی) به شیوه عمومی حمل و نقل و از همه آنها مهمتر رباتها! رباتهایی که به جای استفاده از سیستمهای پیچیده کامپیوتری، با انسانها حرف میزدند. دستورات گفتاری را میفهمیدند و همه رفتارهایشان با آن قوانین سه گانه ازلی و ابدی رباتها قابل درک و تفسیر بود. همه و همه چنان تاثیر شگفتانگیزی داشتند که هنوز هم نمیتوانم آن را به سادگی وصف کنم. تنها چیزی که یقین دارم این است که کتاب را در یک نشست یک روزه خواندهام. بیوقفه و از صبح تا شب یک روز تعطیل.
و برای من که هنوز نخستین کامپیوتر زندگیام را نخریده بودم، یا بهتر بگویم اصلاً در عمرم کامپیوتری ندیده بودم، تا مدتهای مدیدی کامپیوتر و ربات، مفهوم یکسانی داشتند. یک چیز بودند!!! هیچ تصوری از کامپیوتری که ربات نباشد نداشتم!
تا این کتاب را دوباره تمام کنم، احتمالا با دوستان در موردش حرف بزنم و یکی دو بار دیگر به سراغش بروم، انتشارات شقایق هم فهمیده بود که این ژانر و این نویسنده چیزی است که بازار کتاب ایران کم دارد و انتشار داستانهای مختلف این نویسنده را مسلسلوار شروع کرد.
کتاب بعدی که از این سری کتابها خریدم، «امپراتوری رباتها» بود. این کتاب را فقط به صرف دیدن اسم نویسنده و کلمه ربات در عنوانش خریدم. وقتی آن را شروع کردم، فهمیدم که وقایع آن سالها بعد از کتاب «غارهای پولادی» رخ میدهد و در عین حال به آن مربوط است. اما نمیدانستم که در این میان دو جلد کتاب را جا انداختهام و به همین دلیل هم برخی اشارهها و نقلقولها و ارجاعها را نمیفهمیدم.
سالها گذشت تا فهمیدم دو کتاب «خورشید عریان» و «روباتهای سپیدهدم» درواقع حد فاصل این دو کتابی هستند که خواندهام. اما آن زمان دیگر از انتشارات شقایق و سری کتابهای آسیموف خبری نبود.
بعد از خواندن امپراتوری رباتها خرید سری کتابهای آسیموف را شروع کردم. «الهه انتقام»، «آزمایش مرگ»، «باشگاه معما» و سه کتاب اصلی سری بنیاد که در ایران با نامها «ظهور امپراتوری کهکشانی»، «جنگ امپراتوری کهکشانی» و «سقوط امپراتوری کهکشانی» منتشر شدند، کتابهای بعدی کتابخانهام بودند. تمام اینها در دوران دانشگاه و بعد از آن کموبیش فراموش شده بودند تا اینکه در اواسط سال ۹۱ و زمانی که هنوز به صورت تماموقت با مجله شبکه کار میکردم، در راه برگشت از دفتر مجله به خانه در یکی از کتابفروشیهای دور میدان انقلاب تهران و در میان کتابهای دست دوم، چشمم به دو کتاب دیگر از سری کتابهای «بنیاد» افتاد و در کمال ناباوری هر دو را با هم با قیمت ۲۰۰۰ تومان خریدم. جالب اینکه نام انتشاراتی که کتابها را چاپ کرده بود هم بنیاد بود! (بماند که هنوز نرسیده ام آنها را بخوانم!)
اما بالاخره ۴ سال بعد از آخرین برخورد با کتابهای آسیموف و ۲۵ سال بعد از اولین آشنایی، دو سه هفته قبل از سر تفنن کتابهای قدیمی را بیرون آوردم و نگاهی به آنها انداختم و «امپراتوری روباتها» را سرسری دوباره خواندم. بعد کنجکاو شدم ببینم حالا به لطف اینترنت میتوانم آن حلقههای مفقوده را بیابم یا نه! که خوشبختانه موفق شدم پیدیاف اسکن شده هر دو کتاب «خورشید عریان» و «رباتهای سپیدهدم» را از سایت کتابخانه فانتزی پیدا کرده و دانلود کنم. کیفیت تقریباً پایین اسکن، وجود صفحات تکراری و بهم ریختن ترتیب بعضی صفحات و از همه بدتر مطالعه کتاب به صورت پیدیاف روی کامپیوتر، در برابر شوقی که برای خواندن این داستانها داشتم، اصولا هیچ به حساب میآمدند. خواندن هر کدام از پیدیافها با شرایط وقتی و کاری من حدود یک هفته زمان برد. اما برایم عجیب بود که خواندن آنها به رغم گذشت این همه سال، افزایش سن و سال من و تغییر سلیقهام باز هم همان حس و حال دوستداشتنی قدیمی را در من زنده کرده بود.
همانطور که پیشتر گفتم، لذت خواندن این دو کتاب عامل اصلی نوشتن این مطلب شد و در نهایت از اصل مطلبی که در ذهنم بود تنها یک چیز (البته پینوشتها را هم ببینید!!!) باقی میماند:
آسیموف عزیز، ۲۵ سال پس از اولین آشنایی با تو و دنیایی که خلق کردهای، باز هم از خواندن آثارت شاد میشوم. پس از گذشت این همه سال باز هم به خاطر آن دنیای جذاب و لحظات خوشی که میسازی از تو سپاسگزارم.
پینوشتها:
۱- جاهایی از داستان «خورشید عریان» احساس کردم که در بعضی پاراگرافها جملهها نیمهکارهاند. متن پرش دارد و انگار چیزی کم و کسر است. به یاد سانسورچی عزیز افتادم و در نتیجه تلاش کردم که نسخه انگلیسی کتابها را پیدا کنم که باز هم خوشبختانه اینترنت ناامیدم نکرد. با سایتی آشنا شدم که این کتابهای آسیموف و بسیاری کتابهای داستانی دیگر را به صورت متن ساده در قالب HTML ارایه میکند، هر فصل کتاب را به شکل یک صفحه وب. نتیجه مقایسه متنهای فارسی و انگلیسی حدس من را تایید کرد و در نتیجه بسیاری قسمتها را هم به فارسی و هم به انگلیسی خواندم و البته حدس زدن اینکه کدام قسمتها قیچی شدهاند چندان هم سخت نبود. ساده بگویم دور و بر گلادیا را بگردید!!
۲-همیشه در عجبم که چطور کسی میتواند یک دنیای کامل را با همه ارتباطات و داستانهایش، با همه فناوریهایش و از آن مهمتر روابط اجتماعی و رسومش در ذهن خود خلق کند. شاید کاملترین و جدیترین نمونههای این کارها را در آثار فانتزی و تخیلی (نه علمی-تخیلی) مانند سری «ارباب حلقهها» یا دنیای سریال «بازی تاج و تخت» ببینیم که حتی در آن برای برخی نژادها زبانهایی تازه از پایه نوشته شده و صرف و نحو آنها از صفر توسعه داده شد. اما در حوزه ادبیات علمی-تخیلی شاید نزدیکترین نمونه به دنیایی که آسیموف خلق کرده است دنیای «جنگ ستارگان» باشد. اما باز هم از دید من دنیایی که آسیموف خلق کرده است، بسیار عظیمتر، پیچیدهتر و فکرشدهتر است.
۳- دوست دارم فرصتی هم برای نوشتن مطلبی مفصل درباره گلادیا داشته باشم. نمیدانم چرا در میان این همه ربات و فناوری و فضا و دنیاهای مسکونی، او انسانیترین شخصیت کتاب است و به رغم فضایی بودنش بیش از همه شخصیتهای دیگر زمینی است و آسیبپذیر. به هنر علاقهمند است، هوای نفس دارد، اشتباه میکند، عاشق میشود، سرخوردگی را تجربه میکند و عمر چند قرنیاش را به زمینیترین شیوه ممکن سپری میکند.
۴- در وب فارسی اگر به دنبال نام ایزاک آسیموف بگردید، بیشتر از هر چیز با فهرست آثارش مواجه میشوید. اما درباره خود او مطالب فارسی اندک هستند. در کنار مدخل فارسی ویکیپدیا و مدخل فارسی ویکی سایت هنر و ادبیات گمانهزن، مطلبی با عنوان «مردی که رویاهایش را باور کردیم» از سایت وبنگین نیز به نظرم ارزش خواندن را داشت. البته جستوجو در سایت یکپزشک با کلماتی نظیر «آسیموف» یا «داستانهای علمی تخیلی» هم نتایج بسیار جالبی را برایتان به همراه خواهد داشت که میتواند خواندنیهای بسیار جذابی را به شما معرفی کند.
۵- بازخوانی دوباره کتابهای علمی-تخیلی این وسوسه را هم در من ایجاد کرده است که به سراغ نوشتههای «آرتور سی. کلارک» هم بروم. چیزی که تا کنون به درستی (به جز خواندن پراکنده ملاقات با راما) تجربهای از آن نداشتهام. فعلا تصورم این است که نوشتههای کلارک در بعد زمان چندان جلو نمیروند بلکه محدودههای علم و دنیای کنونی را گسترش میدهند، اما نوشتههای آسیموف آنچنان در زمان به پیش میروند که دنیایش را کاملا از دنیایی که میشناسیم جدا میکند.
۶- گرچه تکراری است و خستهکننده و احتمالا بیفایده، اما نمیتوانم از گفتن این موضوع خودداری کنم که هنوز مطالعه طولانی و عمیق و غرق شدن در داستانها و رمانها یکی از آن کارهایی است که میتواند لذتی سرشار نصیبتان کند. اگر فرصتی دارید دریغ نکنید!
و آخر از همه این که اگر کسی دو کتاب «خورشید عریان» و «روباتهای سپیدهدم» از انتشارات شقایق را در شرایط فیزیکی به نسبت مناسب داشته باشد و حاضر باشد به قیمت معقولی آن را بفروشد من حتماً خریدارش هستم.
حدود ۲ هفته پیش جادی در «لینکهای شاد آخرین دوشنبه خرداد ۱۳۹۴» سایتی به اسم زمانا را معرفی کرد که با رویکردی متفاوت از همه سایتهای خبری و وبلاگهایی که میشناسیم، به مقوله فناوری میپردازد. علاوه بر تفاوت رویکردی به مطالب پوشش داده شده، زمانا بر روی سرویس blog.ir میزبانی میشود و به سراغ دامین و هاست اختصاصی نرفته است. با اینکه غالب مطالبی که در زمانا دیدم به نظرم جذاب بودند (و البته طراحی ساده و شیکی که برای پوسته سایت انجام شده است را نیز به شدت میپسندم) مطلبی که روز اول تیرماه منتشر شده بود با عنوان «مولینیو: حس ناب خدا بودن» برایم بسیار عزیزتر بود و هم خاطراتی از یک دهه پیش را زنده کرد.
اگر حوصله خواندن مطلب اصلی را در زمانا ندارید باید خلاصه بگویم که این مطلب مروری مختصر است بر فعالیتهای حرفهای پیتر مولینیو، کارآفرین (مد این روزهاست دیگر!)، رویاپرداز و بازیساز مشهور انگلیسی که شرکت بازیسازیاش (Bullfrog) و بازیهای سری Populousاش بسیار محبوب شدند. جالبترین بخش این داستان هم نظر خود مولینیو درباره بازیها و دنیای درون آنها است. آنجایی که میگوید:
بازی باید طوری باشد که گیمر حداکثر آزادی را داشته باشد، به عقیده من گیمرها باید خدای بازی خودشان باشند و نتیجه بازی را طوری که دوست دارند تغییر دهند. هدف من از این کار ساختن دنیاست نه کسب درآمد.
اما خاطرهای که در ابتدای متن به آن اشاره کردم، به نمایشگاه بینالمللی کتاب در اواخر دهه ۷۰ مربوط بود. زمانی که هنوز با اشتیاق در این نمایشگاه شرکت میکردم و البته مجله محبوب «کامپیوتر» هنوز منتشر میشد. در نمایشگاه آن سال یکی از محصولاتی که در غرفه مجله کامپیوتر دیدم و تهیه کردم، CD بازی Populous: The beginning بود.
یک CD نقرهای در جلدهای شیشهای مرسوم آن زمان و یک صفحه A4 سیاهوسفید پرینت شده حاوی راهنمای چند مرحله اول بازی که با چهار بار تا شدن در داخل کاور CD جا شده بود. آن بازی برایم بسیار جالب بود و به قول مولینیو آن زمان خدای دنیای خودم بودم. در این بازی شما در نقش جادوگر-رییس یک قبیله وظیفه توسعه، مدیریت قبیله و همینطور رهبری افراد را برعهده دارید و باید به کمک نیروهایتان بر قبیلههای مجاور غلبه کنید.
گرچه شاید این بازی اکنون در برابر عناوینی مانند Clash of Clans یا نمونههای مشابه (چه به لحاظ گیمپلی، چه به لحاظ گرافیک یا سهولت بازی کردن) حرفی برای گفتن نداشته باشد، اما من به واسطه خاطرات خوشی که برایم زنده میکند دوستش دارم. به لطف تورنت به راحتی تهیهاش کردم و با سادگی غیرقابل باوری بدون داستان و دردسر روی ویندوز ۸.۱ کار کرد!
اگر مثل من از این بازی خاطرهای خوش دارید یا اندک وقت فراغتی برای بازی کردن، میتوانید آن را از این آدرس (با حجم حدود ۳۰۰ مگابایت) دانلود کنید (برای شروع دانلود باید حدود ۲۰ ثانیه صبر کنید) و لذت ببرید. و البته چون این بازی برای ویندوزهای ۹۵ و ۹۸ طراحی شده است، به سختافزار چندان قدرتمندی هم نیاز ندارد، پس خدای دنیای خودتان باشید.
پینوشت: ممکن است در بعضی سیستمها لانچری که روی دسکتاپ ظاهر میشود کار نکند. در این حالت به سراغ فولدر خود بازی در C:\Program Files (x86)\GOG بروید و مستقیما فایل popTB.exe را به صورت عادی یا با Run as Administrator اجرا کنید
در قسمت قبلی در مورد تجربههای برنامهنویسیام و سروکله زدن با گرافیکهای کمودور صحبت کردم. در این قسمت پایانی میخواهم در مورد زبان ماشین صحبت کنم و همچنین کتاب و ابزاری جانبی که کمک کردند تا درک بهتر و بیشتری از ماشینام داشته باشم. و در آخر از هکی صحبت خواهم کرد که آن را بیش از همه دوست دارم.
برنامهنویسی پیشرفته با Commodore 64 Programmers Reference Guide
در کلاسهای مدرسه و زمانی که با دوستان در مورد کامپیوترهایمان و بازیها و غیره حرف میزدیم، یکی از دوستان به کتاب «پیشرفتهای» اشاره کرده که به تازگی به دستش رسیده بود و دانش برنامهنویسی او را چندین پله ارتقا داده بود. با هزار خواهش و التماس توانستم آن را برای یکی دو روز امانت بگیرم. کتابی واقعی در کار نبود. کتاب واقعی را با فناوری فتوکپی (هنوز دستگاه به اصطلاح زیراکس که کیفیت بالاتری داشت همهگیر نشده بود و هزینه یک برگ زیراکس بیش از دو برابر فتوکپی بود!) تکثیر کرده بودند و در نبود صحافیهای سیمی و فنری، آن را با منگنه کتاب دوخته بودند. شما فقط باید تصور کنید که از جلدی که در تصویر زیر میبینید، چه اثر سیاه و سفیدی بر روی یک مقوای کرم رنگ نقش میبندد!
اما برخلاف ظاهر بدترکیب و مدت کوتاهی (کمتر از یک هفته) که آن را در اختیار داشتم، این کتاب تاثیر بسیار شدیدی روی دانش من از کامپیوتر (در مقیاس آن دوران) گذاشت. 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 و عوض کردن خانههای مناسب حافظه، خود کدهای برنامه در حال اجرا را عوض کرد به گونهای که در هر بار اجرا عملکردی متفاوت داشته باشد.
برنامهای برای این کار نوشتم و آنقدر با شماره خطها و علامتهای «:» اضافی (جدا کردن دستورات در یک خط) بازی کردم تا بالاخره تغییر محتویات آدرسها Syntax برنامه را خراب نمیکرد. حالا برنامهای داشتم که در یک بار اجرا عدد ۱ را چاپ میکرد و بار دوم عدد ۲ را و این کار را با متغیرها انجام نمیداد. سورس برنامه عوض میشد و اگر از آن LIST میگرفتم، هر بار لیستی جدید را به نمایش میگذاشت! البته هیچ کاربردی برای این برنامه متصور نبودم، اما همین الان با خواندن مطلب ویکیپدیا در مورد self-modifying code فهمیدم که چنین برنامههایی میتوانند کاربردهای جالبی داشته باشند!
احتمالا الان میتوانید حدس بزنید که ۲۰۶۱ از کجا آمده است. برنامه بیسیک تنها برای این نوشته شده بود که برنامه اصلی بازی به زبان ماشین را صدا بزند. برنامهنویسان هم برای حداکثر استفاده از حافظه، روالهای زبان ماشین را درست از اولین آدرس خالی بعد از کدهای بیسیک ذخیره کرده بودند.
به هر حال این کتاب و آشنایی با زبان اسمبلی و کدهای ماشین و خانههای حافظه باعث شد که به دنبال برنامه اسمبلر بگردم که البته پیشاپیش بگویم همانند بازیها و برنامههای خودتغییر، هیچگاه چیز خاصی از آن حاصل نشد! نخستین برنامههای اسمبلر را باید مثل همه برنامهها از روی کاست میخواندم، اما مشکل طولانی بودن بارگذاری و محدودیت امکانات باعث شد به سراغ ابزاری سریعتر و با قابلیتهای بیشتر بروم.
کارتریج ACTION-VI : دنیای جدید
در جستوجوی یک کارتریج اسمبلر به کارتریج اکشن ۶ برخورد کردم (که باز هم مطابق دید عموم مردم از کمودور ۶۴ به عنوان یک کنسول بازی) برای «نسوز کردن بازیها» مشهور شده بود. اما ابزاری بسیار قدرتمند بود و تواناییهایی بسیار بیشتر از اجرا کردن کدهای تقلب بازیها داشت.
این کارتریج یک برنامه اسمبلر سریع با خودش داشت. امکاناتی برای فرمت کردن و آمادهسازی دیسکتها، گرفتن نسخههای پشتیبان، دستکاری تنظیمات حافظه و نصب یک Fast Loader فراهم میکرد و از همه مهمتر سیستمی داشت که میتوانست محتوای حافظه RAM کمودور را به اصطلاح فریز کرده و بعد از ویرایش خانههای دلخواه دوباره کمودور را وادار به ادامه کارش کند. یکی از کلیدهایی که بالای کارتریج میبینید (معمولا سمت راستی) دکمه ریست است و دیگری دکمه فریز کردن حافظه. تصویر زیر صفحه آغازین کمودور را هنگام زدن کلید ریست این کارتریج نشان میدهد.
در این صفحه من هیچگاه از گزینه CONFIGURE MEMORY سر درنیاوردم و از آن استفاده نکردم. اما در قسمت UTILITIES یک اسمبلر سریع و راحت وجود داشت که با آن اسمبلی را هم کمی تجربه کردم.
بالن هوای گرم، با سرعت نور
اولین برنامه کاملی که با دستورهای اسمبلی نوشتم، اسپرایت بالن مشهور کمودور را در بالا سمت چپ صفحه نمایش میداد و سپس در یک حلقه هر بار یک واحد به x و y آن اضافه میکرد تا به سمت پایین سمت راست صفحه حرکت کند. البته اول اسپرایت را با برنامه اسپرایت ادیتوری که خودم نوشته بودم، ساختم و در خانههای حافظه گذاشتم و بعد با اسمبلر کارتریج مختصاتدهی آغازین و روال حلقه را پیاده کردم. بار اول با این که برنامه کامل و بیاشکال بود هیچ چیزی روی صفحه ظاهر نشد. بعد از چندین بار آزمایش و خطا فهمیدم که سرعت این برنامه به حدی زیاد است که بالن حرکت را انجام میدهد، اما من آن را نمیبینم.
برای کند کردن سرعت برنامه دو حلقه تو در توی ۲۵۶ تایی خالی را برای تلف کردن وقت داخل حلقه اصلی بازی گذاشتم تا موفق شدم بالن را ببینم. اما باز هم بالن با سرعت نور قطر صفحه را طی میکرد و برنامه تمام میشد. به این فکر افتادم که برنامه ۸ وزیر را برای سرعت بالا با اسمبلی بنویسم ولی سواد واقعی من در اسمبلی به چند دستور JMP و CMP و ADD محدود میشد که برای برنامهای پر از شرط و محاسبات مانند ۸ وزیر بسیار کم بود.
مالتی تسکینگ واقعی با IRQ
احتمالا میدانید که وقفهها یا IRQ (سرنام Interrupt ReQuest) روالهایی هستند که به صورت منظم و در فواصل زمانی مشخص توسط پردازنده کامپیوتر اجرا میشوند. دلیل این که وقفه نامیده میشوند این است که پردازنده در این فواصل زمانی برنامه در حال اجرا را متوقف کرده و روالهای IRQ را اجرا میکند و دوباره به سراغ برنامه اصلی باز میگردد. استفاده از وقفهها بیشتر به دردبرنامهنویسهای سیستم میخورد که توسط آنها تمام مدت ابزارهای جانبی را برای دریافت یا ارسال اطلاعات کنترل کنند یا در بازیها و برنامههای بیدرنگ (Real Time) شرطهای حیاتی را به صورت مداوم چک کنند. مثلا سیستم پیشفرض کمودور از یکی ازهمین وقفهها برای نمایش مکاننمای چشمکزن استفاده میکرد.
برای امتحان کردن این قابلیت عجیب هم تنها هنری که توانستم به خرج دهم این بود که روالی را به اسمبلی نوشتم که دایما بیتهای کنترلی کلیدهای SHIFT و CONTROL را تست میکرد و در صورت فشرده شدن این کلیدها به ترتیب رنگ زمینه متن و رنگ حاشیه آن را عوض میکرد. این چیزی بود که در جمع دوستان هم کسی به سراغش نرفته بود و برای همهمان جذاب بود که سیستم در عین حالی که وظایف معمولش را انجام میدهد، بدون هیچ کد مریی کار دیگری را هم به صورت همزمان در دست اجرا دارد.
هک آخر، بازی دوستداشتنی
و اما آخرین و از دید خودم جذابترین هکی که انجام دادم، به قابلیت فریز کردن حافظه کمودور توسط کارتریج اکشن ۶ مربوط بود و بازی Arkanoid که در قسمت اول از آن صحبت کردم. اندکی پس از شروع بازی، کلید فریز را میزدم و وارد منوهای اکشن ۶ میشدم. آنجا گزینهای برای نسوز کردن بازی وجود داشت. سیستم کار به این شکل بود که یک بار محتویات حافظه را بررسی (یا ذخیره) میکرد. بعد از شما میخواست به بازی برگردید و عمدا یک بار ببازید و دوباره حافظه را فریز کنید. وقتی این کار را میکردید دوباره حافظه را چک میکرد تا ببیند محتویات کدام خانهها عوض شده است. معمولا با همان یک بار و گهگاه با دوبار تکرار این فرآیند خانهای که اعداد مربوط به «جان» کاراکتر بازی در آن ذخیره شده بود پیدا میشد و کارتریج از آن به بعد محتویات آن خانه را ثابت نگه میداشت. یعنی بازی شما دیگر نسوز شده بود!
اما باز هم بازی کردن ۳۲ مرحله Arkanoid با احتساب هر مرحله ۲ یا ۳ دقیقه، آن هم بدون SAVE کلی زمان میبرد. هک اصلی این بود که من بعد از نسوز کردن بازی به سراغ محتویات حافظه تصویر میرفتم و آنها را پاک میکردم. اگر خاطرتان مانده باشد در قسمت قبلی گفتم که پسزمینهها و برخی اجزای بازیها با فونتها ساخته میشدند. من چیزی مانند دستور cls را اجرا میکردم و خلاص! همه آجرها از بین رفته بودند. فقط کافی بود در هر مرحله یک بار فریز کنم، حافظه تصویر را پاک کنم و بعد از برگشت به بازی عمدا بسوزم.
غول مرحله آخر
جانهایم که تمام نمیشد، اما بعد از سوختن و شروع مجدد مرحله، کامپیوتر متوجه میشد که تمام آجرها پاک شده و من به مرحله بعد میرفتم! تنها در برخی مراحل که حریفهای متحرک هم وجود داشتند، مجبور بودم نهایتا ۵ یا ۶ ضربه موفق (به آن اسپرایتها) بزنم تا آن مرحله هم تمام شود. فقط مرحله آخر بود که در ساخت غول آن از اسپرایت و آجر و غیره خبری نبود و این مرحله را باید حتما به صورت عادی رد میکردم. به این ترتیب من تقریبا در ۹۰ درصد اوقات بازی را تا آخر تمام میکردم و بلند میشدم! باید اعتراف کنم این کار به خصوص در جمعهای فامیلی، باعث میشد حس یک گیک تمام عیار را داشته باشم!
پایان داستان
شاید شما هم کنجکاو باشید که بر سر این ابزار عزیز چه آمد! واقعیت چندان هم جذاب نیست! حدود سال ۸۱ بود، ده سال از خرید کمودور میگذشت و در دوران پادشاهی پنتیوم ۲ و ۳ مدتها بود سراغش نرفته بودم. آن زمان هم هیچگاه فکر نمیکردم چنین حس نوستالژیکی نسبت به این اولین کامپیوترم پیدا کنم. به همین دلیل آن را با همه کارتریجها و نوارها و دستههای بازی در اصفهان به قیمت ۱۰۰۰۰ تومان فروختم. کاری که اکنون حس میکنم از انجامش به شدت پشیمانم!
بعید می دانم کسی از خوانندگان علاقهای به آزمودن سیستمی به این قدمت داشته باشد، اما اگر دوست داشتید کمی با پیرمردهای عصر کامپیوتر و نیای بزرگ پیسیها سروکله بزنید میتوانید یک امولاتور خوب را در این آدرس بیابید. بازیهای بسیاری در این آدرس موجود است و برنامهها را هم با کمی جستوجو در سایتهای طرفداران کمودور (مثل این) پیدا خواهید کرد.
به هر حال در این چهار پست، با پررنگترین خاطرات من از آن دوران خوش همراه بودید. حداقل در لحظهای که این مطالب را مینویسم فکر نمیکنم هیچ ابزار، سرگرمی، کامپیوتر یا چیز دیگری تا این اندازه برایم خاطرهانگیز بوده باشد یا از این به بعد هم بتواند باشد. اما از کجا معلوم، شاید ۲۰ سال دیگر خاطره نوشتن همین پست هم داستانی نوستالژیک باشد که برای نسلی کوچکتر تعریف میشود.
تا آن زمان، با ماشینهایتان خوش باشید و لذت ببرید!
بعد از دو بخشی که اشارهای داشتند به سختافزار و نرمافزار در آن دوران خوش گذشته، میخواهم از عمیقترین لذتها و یادگیریهای آن دوره حرف بزنم. از لذت برنامهنویسی و سر و کله زدن با ماشینها، چیزهایی که احتمالا بسیاری از گیکها موافق خواهند بود که تجربههای ناب هک به معنای واقعی (و نه مفهوم عام و هالیوودی آن) هستند. (اگر هنوز هم فکر میکنید هک یعنی به دست آوردن دسترسی غیرمجاز روی یک سیستم، بهتر است این مطلب را به صورت کامل بخوانید و اگر فرصت کردید به این پادکست هم گوش بدهید.)
بد نیست همین ابتدای کار هم بگویم که این دو مقاله طولانی آخر پر است از جزییات فنی و توضیحات یک سیستم کامپیوتری که الان دیگر باید در موزهها به دنبالش بگردید و اگر شما نمیدانید IRQ چیست، اسمبلی به چه دردی میخورد و یا اصلا برنامهنویسی را دوست ندارید، مطالب بسیار جذابتری را میتوانید روی اینترنت برای خواندن پیدا کنید.
پیش از همه باید اعتراف کنم که من هم مثل تمام هم سن و سالهایم در آن دوران، بیشتر از هر کار دیگری با کمودورم بازی کردهام. تجربههایی که قصد دارم اینجا شرحشان دهم، بیشتر مدیون کلاسهای کامپیوتری هستند که مدرسه ما از سوم راهنمایی به اجبار برای دانشآموزان برگزار میکرد و همینطور مدیون جمع کوچکی از دوستان که همهشان مثل من از سروکله زدن با سیستمهای کامپیوتری لذت میبردند.
به هر صورت اینها به یادماندنیترین تجربههایی هستند که من ۲۰ سال پیش با ابزار محاسباتی آن دوره داشتهام.
حلقههای تو در تو: هشت وزیر در یک بعدازظهر تابستانی
پیش از خریدن کمودور برنامهنویسی بیسیک را کموبیش بلد بودم. همانطور هم که پیشتر گفتم اولین برنامهای که روی کمودور نوشتم چاپ اعداد یک تا ده بود. اما نخستین تجربه جدی برنامهنویسیام به مساله ۸ وزیر شطرنج برمیگردد. این مساله را در یکی از روزهای تابستان از زبان یکی از آشنایان که در خارج از کشور کامپیوتر میخواند شنیدم.
همان روز دست به کار شدم و الگویتم حل مساله را به سادهترین و البته ابلهانهترین شکل ممکن نوشتم. ۸ حلقه تودرتوی FOR که به ترتیب موقعیت وزیرها را در هر سطر مشخص میکرد. در نهایت در دل داخلیترین حلقه کنترل میکردم که آیا این وزیرها یکدیگر را تهدید میکنند یا نه. با توجه به این که امتحان کردن این ۱۶ و خوردهای میلیون حالت برای کمودور با پردازنده ۴ مگاهرتزی و زبان BASIC V2 مدت مدیدی طول میکشید، برنامه را طوری نوشته بودم که با پیدا شدن اولین جواب تمام شود. به نتیجه رسیدن این برنامه یک ظهر تا شب تمام وقت گرفت و من بیش از هر چیز دیگری باید شکایتهای سایر اعضای خانواده از اشغال بودن تلویزیون را تحمل میکردم! البته جواب هم چیزی گرافیکی مانند تصویر بالایی نبود، بلکه ۸ عدد بود که در ۸ سطر روی صفحه تلویزیون چاپ شد و آنها را روی کاغذ یادداشت کردم.
هوش مصنوعی برای کمودور ۶۴؛ واقعا؟
هوش مصنوعی و کمودور ۶۴؟ این یکی دیگر برای خودم هم باور کردنی نبود. در آن سالها مرکز آموزش انفورماتیک شرکت داده پردازی ایران سری کتابهایی را در حوزه انفورماتیک منتشر میکرد. سه کتاب اول «انفورماتیک چیست؟»، «انفورماتیک در جهان» و «انفورماتیک از دیدگاه توسعه» نام داشتند. کتاب چهارم اما چیزی بسیار متفاوت بود.
کتاب «مبانی هوش مصنوعی برای کمودور ۶۴» ابتدا به تعریف هوش مصنوعی و صحبت از تورینگ و . . . میپرداخت و بعد به تدریج با جهتگیری به سمت بازیها، رفتارها و خودگردانها، پردازش زبان طبیعی، تشخیص الگوها و سیستمهای مکاشفهای برنامههای هوشمندتری را به نمایش در میآورد که همه با همان بیسیک بدوی کمودور ۶۴ نوشته شده بودند. معماهای کلاسیکی چون برجهای هانوی، گشت زدن اسب روی صفحه شطرنج و چیزی شبیه برنامه مشهور الیزا (که قبلا هم در مورد آن نوشتهام) از جمله نمونههایی هستند که خط به خط روی کمودور تایپ و اجرا کردم. هرچند از شیوه کار آن برنامه شبه لیزا نه آن زمان و نه حتی الان به درستی سر در نیاوردم. یکی از برنامههای دیگری که خاطره شفافی از آن دارم، برنامهای بود که مشخصات یک لابیرنت را به صورت پر و خالی بودن خانههای یک صفحه شطرنجی میگرفت و با وارونه کردن کار (حذف خانههای بنست به جای امتحان راههای باز) در نهایت مسیر درست را پیدا میکرد.
گرافیک: اشباح و کاراکترها
کمی بعد و البته در حین کار با برنامههایی که فقط منطق برنامهنویسیشان مهم بود، به گرافیک و رنگها هم علاقهمند شده بودم. دوست داشتم حالا که منطق کار این سیستم را میفهمم، بتوانم برنامههایم را با ظاهری جذابتر و با رنگ و لعاب بیشتر همراه کنم. به همین دلیل تصمیم گرفتم به سراغ نوشتن یک بازی بروم. در کمودور ۶۴ وقتی میخواستید به سراغ گرافیک بروید، به دو چیز مختلف نیاز داشتید. تصاویر متحرک (کاراکترها، گلولهها و . . . ) و تصویرهای ثابت یا همان پسزمینهها.
مساله اول به کمک اسپرایتها حل میشد. نقشهایی گرافیکی شبیه یک آیکن که میتوانستند هر کجای صفحه ظاهر شوند و با تغییر مختصاتشان حرکت کنند. البته خود کامپیوتر هم برخورد آنها با یکدیگر یا با قسمتهای مختلف پسزمینه را کنترل میکرد.
اسپرایتها که هنوز در سیستمعامل مدرنی مانند آخرین نسخه Mac OSX Mavericks هم حضور دارند، در کمودور ۶۴ مستطیلهایی با ابعاد ۲۴ در ۲۱ خانه بودند. ۳ بایت در هر ردیف که باید نقاط پر و خالی آن را با ۱ و ۰ جایگزین میکردیم و بعد عدد را به مبنای ۱۰ میبردیم و آن را با دستور POKE در خانه حافظه متناظر با آن مینشاندیم. یادم هست که هنوز هیچ داستانی برای بازی در ذهن نداشتم و حتی نمیدانستم چند اسپرایت و به چه شکلهایی لازم دارم، اما فکر اینکه هر بار این مستطیل شطرنجی را بکشم و خانهها را پر کنم و تبدیل مبنا و . . . اذیتم میکرد. اکنون برنامههای طراحی اسپرایت زیادی وجود دارند که این کار را به سادگی انجام میدهند اما همه به تازگی با زبانهای جدید و صرفا برای کنجکاوی و یادآوری خاطرات نوشته شدهاند.
اما من آن زمان با 180 خط برنامه بیسیک ادیتور اسپرایت خودم را نوشتم. این برنامه با جویاستیک کار میکرد و در سمت راست صفحه منویی برای انتخاب ابزار (نوشتن یا پاک کردن) و انتخاب رنگ داشت. البته به لحاظ گرافیکی از تصویر بالایی بسیار ضعیفتر بود! با حرکت جویاستیک نشانگر آن روی صفحه حرکت میکرد و با فشرده شدن تنها کلید جویاستیک خانه پر (یا خالی) میشد. بعد میتوانستم اطلاعات این اسپرایت را ذخیره کرده و در بازیام استفاده کنم. البته حتما باید اشاره کنم که بعد از تمام این کارها، هیچوقت به نوشتن بازی یا حتی داستان آن نرسیدم!
اما مساله دوم پسزمینهها بودند که به علت محدودیتهای حافظه و امکانات پردازشی نمیتوانستند تصاویر معمولی باشند. کمودور حالت گرافیکی و به اصطلاح بیتمپ هم داشت اما گرافیک بیشتر بازیها از طریق دستکاری فونتها و نوشتن متن روی صفحه نمایش بوجود میآمدند. چیزی شبیه به ASCII ART اما به شدت قدرتمندتر. برای درک بهتر، بد نیست اول نگاهی به PETSCII ها بیاندازید که معادل کدهای ASCII در کمودور بودند، بعد به این تصویر که کلیدهای کمودور را از نزدیک نشان میدهد دقت کنید.
با نشانههایی که کمودور به عنوان فونت و متن میشناخت، کافی بود اگر میخواهید دایرهای ترسیم کنید کلید کمودور را نگه دارید و در سطر اول U و I و در سطر دوم هم J و K را تایپ کنید تا با ترکیب چهار ربع دایره شکل شما کامل شود. حال اگر در نظر بگیرید که در کمودور ۶۴ میشد به سادگی علامتهای کلیدها را تغییر داد و جایگزین کرد به تصویر کلی دست پیدا میکنید. هر بازی در ابتدا مجموعهای فونت طراحی کرده و با آنها صحنه بازی را میساخت. مثلا یک کاراکتر را طوری تغییر میداد که با تکرار آن روی صفحه نمایش ظاهری شبیه آجر دیده شود و از آن برای ساخت یک دیوار استفاده میکرد. حال اگر قرار بود دیوار خراب شود کافی بود کاراکترها از روی صفحه نمایش پاک شوند! و البته اگر تا اینجای مطلب را خواندهاید میدانید که کار با متنها و کاراکترها برای کامپیوتر هزاران بار سادهتر از گرافیک است. کمی بعدتر میگویم که از این موضوع چطور برای تقلب در بازی Arkanoid استفاده میکردم.
از ابتدا قصد داشتم تمام داستانهای برنامهنویسی و . . . را در قالب یک پست بیاورم. اما به دلیل طولانی شدن مطلب، آن را به دو قسمت تقسیم کردهام. در قسمت بعدی از کارتریج اکشن ۶، زبان اسمبلی، برنامههایی که خودشان را تغییر میدادند و چیزهایی مشابه حرف خواهم زد.
در قسمت قبلی، سختافزاری را معرفی کردم که من را به دنیای کامپیوترها وارد کرد. در این قسمت میخواهم از نرمافزارها حرف بزنم و داستانهایی که برای استفاده از آنها داشتیم.
سطح پایینترین فناوری ذخیرهسازی که خورههای کامپیوتر امروزی (آن هم احتمالا) به یاد میآورند فلاپیهای 3.5 و 5.25 اینچی هستند. اما اگر هم سن و سال من باشید، خاطرتان هست که کمودور و البته بسیار پیشتر از آن اسپکتروم ZX از نوارهای کاست معمولی برای ذخیره دادهها استفاده میکردند. اسپکتروم که فناوری قدیمیتری داشت با یک فیش معمولی هدفون و میکروفون به ضبط صوتهای معمولی متصل میشد و دادهها را روی کاست ذخیره میکرد یا اطلاعات را از روی آن میخواند.
اما کمودور ۶۴ به احتمال به واسطه فشردهتر شدن اطلاعات ضبط شده و مناسب نبودن کیفیت صوتی ضبطهای معمولی، از یک کاستپلیر اختصاصی با کابل و رابط اختصاصی استفاده میکرد. البته کمودور هم دیسک درایو داشت و با فلاپیهای 5.25 اینچی (و ظرفیت حدود ۱۷۰ کیلوبایت) کار میکرد. اما قیمت این ابزار به اندازه قیمت خود دستگاه بود و معمولا به درد فروشندگان کامپیوتری میخورد که از آن درآمد کسب میکنند. به این ترتیب بود که هنوز عقده این دو سه دستور در دل من مانده است:
LOAD "$" , 8
LIST
LOAD "{PROGRAM}" , 8
دستور اول چیزی شبیه dir در DOS بود که نام کل فایلهای روی دیسک را میخواند و دستور دوم آنها را چاپ میکرد. بعد از دیدن و انتخاب اسم برنامه مورد نظر با دستور سوم برنامه بارگذاری میشد. این انتخاب، سرعت و سهولت دسترسی در آن زمان چیزی بسیار خواستنی بود.
راه دیگر ذخیرهسازی اطلاعات (البته برای شرکتها) و خواندنشان برای ما استفاده از کارتریجها بود. کارتریجها بسیار سریع و معمولا گرانقیمت بودند و مشکل اصلیشان (بعد از قیمت) این بود که تنها حاوی تعداد محدودی (یک تا نهایت سه یا چهار) برنامه یا بازی بودند و نمیتوانستیم چیزی را روی آنها ذخیره کنیم.
نوارهای کاست و دردسرهایشان
به این ترتیب آرشیو ارزشمند بازیها و برنامههای من در آن زمان به جای هاردهای اینترنال و اکسترنال یا فلشدیسکها، روی مجموعهای نوار کاست معمولی و در جعبهای مخصوص نگهداری میشدند که بچههای فامیل هنوز درباره وسواس من روی آنها داستانسرایی میکنند. البته کار با این نوارهای کاست به رغم ارزانی، فراوانی و فراگیر شدن باز هم دردسرهایی داشت.
دایرکتوری کاغذی، جستوجوی دستی
نخستین مشکل با کاستها این بود که بدون جلدهای کاغذیشان به هیچ دردی نمیخوردند، مگر این که شما وقت زیادی برای تلف کردن داشتید! داستان این بود که دسترسی اطلاعات روی کاستها ترتیبی بود و در غیاب سیستمعامل و دایرکتوری و جستوجوی فایلها شما باید میدانستید هر برنامه کجای نوار ذخیره شده است. وگرنه کامپیوتر شما باید از ابتدای نوار شروع میکرد و به ترتیب تمام فایلها را میخواند تا به برنامه موردنظر شما برسد. این مشکل همانطور که در قسمت قبل هم اشاره کردم، با یک شمارنده ساده که روی کاستپلیر نصب شده بود حل میشد.
به این ترتیب ما باید نام برنامه را به همراه (به اصطلاح آن زمان) کانتر شروع و کانتر پایان پشت جلد نوارها مینوشتیم. اگر برنامههای کوچکی را خودتان مینوشتید و تعداد زیادی از آنها را روی کاست Programs! خودتان ذخیره میکردید، مجبور بودید علاوه بر جلد کاغذی کاستها، نوارهای کاغذی طولانی را خطکشی کنید و بقیه دایرکتوریتان را روی آن بنویسید. به همین دلیل گفتم نوارها بدون جلدهای کاغذیشان به هیچ دردی نمیخوردند.
دقیقا کجای نوار مغناطیسی؟
مشکل دیگر کاستها این بود که هد نوشتن و خواندن دستگاههای مختلف و حتی یک دستگاه کاستپلیر در زمانهای مختلف، در یک نقطه دقیقا ثابت قرار نداشت. زمانی که شما با دادههای صوتی سروکار داشته باشید، تاثیر این جابهجایی نامحسوس خواهد بود و بعید است شما تغییر یا اشکالی در صدا احساس کنید. اما اگر شما با اطلاعات دیجیتال سروکار داشته باشید، تغییر تنها یک صفر یا یک کافی است تا کل دادههایتان را به هم بریزد. در کمودور بسیار پیش میآمد که مثلا ۵ دقیقه (بله ۵ دقیقه!) برای لود شدن یک برنامه از نوار صبر میکردید و در نهایت با پیغام LOAD ERROR روبرو میشدید!
البته تمام کاستپلیرها سوراخ کوچکی درست بالای هد خواندن و نوشتن داشتند که از طریق آن و به کمک یک پیچگوشتی کوچک میتوانستید هد را دقیقا در جای درستش تنظیم کنید. اما مشکل این بود که جای درست را چگونه تشخیص بدهیم؟ به عبارت دیگر از کجا بفهمیم که هد الان درست روی اطلاعات قرار گرفته یا نه؟
ما برای حل این مشکل معمولا سه راهحل مختلف پیش رو داشتیم.
راه اول: چسب!
عدهای با بستن پیچ تا آخرین حد و ریختن چسب مایع روی پیچ تنطیم هد، آن را در وضعیت ثابتی قفل میکردند. دردسر این روش این بود که هر زمان میخواستید برنامهای را از جایی غیر از سیستم خودتان ضبط کنید (مثلا از مغازهای بخرید یا بازی دوستی را کپی کنید)، باید کاستپلیر خودتان را هم به همراه میبردید تا ضبط اطلاعات توسط همان دستگاه و با همان وضعیت هد انجام شود.
راه دوم: برنامه تنظیم هد (متداولترین شیوه!)
راه دوم که بیشترین استفاده را داشت، این بود که درست همان روز خرید دستگاه و در همان مغازه کامپیوتری، هد دستگاهتان را تا ته ببندید و سپس یک برنامه تنظیم هد را از یک کاست دیگر یا از یک کارتریج با همان وضعیت هد بسته روی یک نوار نو ضبط کنید. به این ترتیب هر زمان که میخواستید برنامهای را با تنظیم هد جدید لود کنید باید مراحل زیر را به ترتیب طی میکردید:
۱– هد دستگاه را تا ته میبستید.
۲- نوار تنظیم هد را (که قبلا با هد بسته ضبط کرده بودید) در دستگاه قرار داده و برنامه را لود میکردید.
۳- بعد از لود شدن برنامه، نوار تنظیم هد را خارج میکردید.
۴- نوارحاوی برنامه موردنظر را داخل دستگاه قرار داده و آن را به کانتر ابتدای برنامه جدید میآوردید.
۵- برنامه تنظیم هد را اجرا کرده و با پیچگوشتی آنقدر هد را بالا و پایین میکردید تا برنامه تنظیم هد بهترین وضعیت (باریکترین خط) را بدون پراکندگی نقاط به شما نشان دهد.
۶- کاست را دوباره به کانتر ابتدایی برنامه باز میگرداندید و شانستان را برای لود کردن برنامه امتحان میکردید.
تازه با همه اینها باید خدا خدا میکردید که تنظیمتان تا حد امکان دقیق بوده باشد وگرنه با یک LOAD ERROR چندین دقیقه وقتتان تلف میشد و دوباره باید مراحل بالا را طی میکردید! جالبتر این که این پیغامهای خطا هیچگاه در حین لود اتفاق نمیافتاد. برنامه شما باید تا انتها لود میشد تا بعد پیغام به شما نشان داده شود. یا زمانی متوجه میشدید که هد درست تنظیم نشده که کاست چند ده شماره از کانتر پایانی هم جلوتر رفته بود اما متوقف نمیشد. نمیدانم کسی از بچههای آن زمان هست که بابت رفتن تا پشت کیس برای زدن یک فلش به پورت USB غر بزند؟
راه سوم: کارتریج تنظیم هد
این روش یک کم پولداری(!) به این ترتیب بود که شما یک کارتریج تنظیم هد بخرید و این شانسی بود که نصیب من شد. به این ترتیب میتوانستم با نصب کارتریج در محل مخصوص و روشن کردن کمودور یک ضرب کار را از مرحله ۴ شروع کنم که خودش صرفهجویی عظیمی بود.
به هر حال بعد از تنظیم هد روی نوار مورد نظر، دستور LOAD را تایپ میکردیم و با پیغام PRESS PLAY ON TAPE کلید پخش را فشار میدادیم. در حین لود شدن برنامه هم میتوانستیم از خطوط رنگی نمایش داده شده در پسزمینه تصویر لذت ببریم! اگر اشتباه نکنم دلیل نمایش این خطوط یک برنامه Fast loader بود که ابتدای برنامههای درست و حسابی لود میشد تا فرآیند لود شدن بقیه برنامه را تسریع کند.
به خاطر یک مشت بازی
اما همه این دردسرها برای چه نرمافزارهایی بود؟ تا آنجا که من خودم به خاطر دارم، جز بازیها هیچ نرمافزار دیگری برای کمودور ۶۴ در بازار موجود نبود. من سالها بعد از خریدن کمودورم و با دیدن یک مجله آلمانی کامپیوتر تازه متوجه شدم که کمودور چاپگر دارد، و البته انواع نرمافزار را هم دارد. انواع نرمافزارهای کاربردی از واژهپرداز و نرمافزار صفحه گسترده گرفته تا برنامههای حسابداری شخصی و موارد مشابه. نرمافزارهایی دارد که فایلهای اطلاعات تولید میکنند و میتوانند آن را روی دیسک یا نوار ذخیره کنند. بعدتر فهمیدم که این ماشین پرفروشترین کامپیوتر شخصی تمام دوران بوده است. بعدها مودمهای بادکشیاش را در فیلمها دیدم و فهمیدم میتوان از راه دور به دیگر کامپیوترها متصل شد.
البته این به دورانی مربوط است که هنوز از اینترنت (حداقل در مملکت ما) خبری نبود. به هر حال آن چه ما در دیتا کامپیوتر و الکترون کامپبوتر شیراز میدیدم، تنها بازی بود و بس و در نتیجه نرمافزارهایی که میتوانم از آنها نام ببرم برخی از بازیهایهایی هستند که هنوز از آن دوران به یاد دارم:
Opertation Wolf که نسخه بسیار زیباتر آن را روی پیسیهای XT مدرسه بازی میکردیم. کیفیت Head Shot را میتوانید در عکسهای زیر ببینید! (نمیدانم چرا وردپرس عکسها را به صورت عمودی کراپ میکند. بنابراین اگر روی این عکسها کلیک کردید و به جای تصویری Landscape یک تصویر Portrait دیدید، روی آن دوباره کلیک کنید تا تصویر اصلی را ببینید.)
گالری Operation Wolf
Last Ninja 3 که آخر سر نتوانستم از مرحله سوم آن پیشتر بروم. دقبق یادم هست که جایی دو قطعه چوب را با یک زنجیر ترکیب میکردم و به یک نانچیکو میرسیدم. بعد با کشتن حریف باید منتظر میماندم تا مرحله بعدی از روی نوار لود شود و بازی درست همینجا فریز میشد و مجبور میشدم سیستم را ریست کنم.
گالری The Last Ninja 3
Arkanoid که در قسمت بعدی مفصل درباره آن خواهم نوشت. فکر کنم هفتاد هشتاد درصد وقت بازی کردنم را به خودش اختصاص داده بود و به خاطر نداشتن امکان ذخیره بازی، همیشه باید ۳۲ مرحله را از اول بازی میکردم. داستان این بازی یکی از گیکیترین کارهایی است که تا حالا انجام دادهام!
گالری Arkanoid
و البته آن زمانها شاید یکی از پرطرفدارترین، خلافترین و س.ک.س.ی ترین بازیهای کمودور هم Stri p P oker بود که داشتنش درست مانند داشتن ویدیو و ماهواره ممنوع بود! من اما متاسفانه یا خوشبختانه به رغم داشتن این بازی به واسطه بلد نبودن پوکر هیچگاه به چیزهایی که دیگران رسیده بودند نرسیدم!!
گالری sp
در نهایت یک بازی رانندگی هم بود که ممکن است درست همین تصاویر زیر (بازی Chase HQ) نباشد، اما اولین بازی بود که از سیستم دو بعدی خطی خارج شده بود و فرمی شبه سهبعدی و پرسپکتیوی را ایجاد میکرد.
گالری Chase HQ
این بخشی از داستان نرمافزارها و شیوه سروکله زدن ما با آنها بود. به هر حالت در قسمت بعد به گیک بازیهای آن دوران خواهم پرداخت، چیزی که بیشتر از تمام آنچه تا کنون گفتم، برای خودم لذتبخش است!
احتمالا بعضی از شماها میدانید که عنوان این مطلب از یکی از نامههای لینوس توروالدز در میلینگ لیست مینیکس (comp.os.minix) برداشته شده است. در این ایمیل که در تاریخ 5 اکتبر 1991 (13 مهرماه 1370) ارسال شده، توروالدز این طور شروع میکند:
«آیا شما هم دلتان برای روزهای خوش مینیکس 1.1 تنگ شده است؟ زمانی که مردها هنوز مرد بودند و خودشان درایورهای ابزارهایشان را مینوشتند؟ آیا پروژه خوبی در دست ندارید و تشنه این هستید که با سیستمعاملی سروکله بزنید که بتوانید براساس نیازهایتان تغییرش دهید؟ و . . . »
مقدمه
من در زمان نوشته شدن این ایمیل تازه مقطع دبیرستان را شروع کرده بودم و هنوز یک سالی تا خرید اولین کامپیوترم فاصله داشتم. این اولین کامپیوتر هم البته یک کمودور 64 بود که خب نه سیستمعاملی داشت و نه ابزار جانبی چندانی به آن متصل میشد که بخواهم (و البته بتوانم) برای آن درایوری بنویسم.
اما نمیدانم چرا خواندن این جملات همواره حسی نوستالژیک را در من زنده میکند! انگار توروالدز مستقیما من را هدف گرفته است! همیشه حسی غریب نسبت به مفهوم «کامپیوتر» در آن دوران دارم. ابزاری که بسیاری آن را تنها کنسولی قدرتمندتر از آتاری و سگا برای بازی میدیدند. تنها معدودی از دوستان و آشنایان به آن دسترسی داشتند و حداقل در بازاری که من میشناختم (محدوده چهارراه سینما سعدی شیراز و پاساژ برق!) به جز بازیها هیچ برنامه کاربردی برای آن وجود نداشت. حتی فروشندگان این دستگاه هم آن را نوعی بازی کامپیوتری میدیدند!
گوشی هوشمند، اپ، رابط کاربری گرافیکی و ابزارهای محاسباتی که حتی کودکان هم میتوانند با آنها کار کنند، فکر کنم هنوز به ذهن سازندگانشان هم نرسیده بود.
به هر حال دراین مجموعه پستها که احتمالا بسیار هم طولانی خواهد شد، برای فرونشاندن آن حس نوستالژی، و شاید برای آشنا شدن کاربران تازه و متولدین دهه 60 و 70 با حال و هوای آن دوره و برای یادآوری خاطرات خوب گذشته یعنی همان زمانی که «مردها هنوز مرد بودند» میخواهم مروری کلی داشته باشم بر تجربههای اولیهای که در شروع روزهای همهگیری کامپیوترهای خانگی (و نه شخصی) از سر گذراندهام.
پیش از آنکه (اگر حوصله کردید) ادامه مطلب را بخوانید، بد نیست خواهش کنم که اگر تجربهای از این نوستالژیهای قدیمی دارید و حوصلهای برای نوشتن، حتما آنها را بنویسید و اطلاع بدهید تا همه را یکجا جمع کنیم. بویژه روی صحبتم با هم سن و سالهایی مثل جادی است که از طریق پادکستها و غیره میدانم از اسپکتروم و دوران BBSها هم خاطرات جذابی دارد. در ادامه با «صفحه آبی زندگی» مطلب اصلی را شروع میکنم.
صفحه آبی زندگی
برای بسیاری دیدن صفحهای آبی با متنهای سفید، به مفهوم مشکلی جدی (و غالبا سختافزاری) در سیستمهای ویندوزی و هنگ کردنی است که معمولا تنها علاجش ریاستارت کردن کامپیوتر است. این صفحه، «صفحه آبی مرگ» یا Blue Screen Of Death یا به اختصار BSOD نامیده میشود.
اما در آن زمانی که من کمودور را روشن میکردم، رنگ آبی صفحه و متنهایی که با آبی کمرنگ مایل به سفید نشان داده میشدند نه تنها هیچ نشانی از مرگ و خرابی نداشتند، بلکه نشانه راهاندازی بلااشکال سیستم بودند. تنها دو چیز این صفحه از همان ابتدای کار آزاردهنده بود. یکی فرم مربعی مکاننما بود و دیگری متنها که یا همیشه با حروف بزرگ نشان داده میشدند یا با حروف کوچک! حالتی برای ترکیب وجود نداشت! البته در همان زمان در پیسیهای XT مدرسه دیده بودم که مکاننمای داس یک زیر خط بود و فونتهایش هم بسیار زیباتر با قابلیت ترکیب حروف بزرگ و کوچک. به هر حال این صفحه آبی و آن عدد کذایی 38911 تا مدتها زندگی ما بود . . .
درست خاطرم هست که در آن تابستان سال ۱۳۷۱ بعد از خرید این دستگاه و برخی متعلقاتش (که آن زمان با قیمت ۲۴هزار تومان تقریبا حقوق یک ماه پدرم را مصرف کرد) به خانه داییام رفتیم و من در میان نگاههای کنجکاو فامیل بعد از روشن دستگاه، تنها هنری که توانستم نشان دهم این بود:
FOR I=1 TO 10:PRINT I:NEXT
و نتیجه چاپ شدن اعداد یک تا ده بود و ادامه نگاه متعجب حاضران که هنوز نمیدانم از شگفتی این محصول جادویی بود یا شگقتی این که چنین پولی خرج نمایش اعداد ۱ تا ۱۰ روی صفحه تلویزیون شده است. واقعیت این است که در آن دوران نه آنها و نه حتی خود من نمیدانستیم که از این ابزار چه انتظاری میتوان داشت!
این دسکتاپ من در آن دوران بود و در غیاب دکمهها و آیکونها و تصاویر، تنها شخصیسازی قابل انجام تغییر رنگ پسزمینه و پیشزمینه بود که تازه آن هم با نشاندن دستی شماره رنگها در خانههای خاصی از حافظه انجام میشد. حتی هنوز اعداد و دستورات را به یاد دارم:
POKE 53280,5
POKE 53281,11
اولی برای نشاندن رنگ سبز در مستطیل حاشیه و دومی برای پر کردن محل نوشتن متنها با رنگ خاکستری.
قطعات جانبی
اما متعلقاتی که از آنها حرف زدم چه بودند؟ برای داشتن یک تجربه کاربری نسبتا کامل علاوه بر آداپتوری که به واسطه سایز بزرگش به Brick یا آجر مشهور بود، به یک کاستپلیر مخصوص کمودور، و یک جویاستیک نیاز داشتم و البته توانستم یک کارتریج تنظیم هد را هم به این مجموعه اضافه کنم! عکس این قطعات را به همراه مختصری توضیحات در ادامه میبینید.
آداپتور
هنوز هم واقعا نمیدانم که چرا این آداپتور سایزی به این بزرگی داشت. آن زمان فکر میکردم که دلیلش باید سیمپیچها و هستههای آهنی باشد که مانند ترانسفورماتور عمل میکند! اما همان موقع هم امکان تبدیل برق AC به DC و تغییر ولتاژ با تجهیزات الکترونیک وجود داشت و بعید است این آداپتور هم به شیوهای غیر الکترونیکی این کار را میکرده است.
کاستپلیر
شاید در نگاه اول تفاوت چندانی با کاست پلیرهای معمولی نبینید. اما مهمترین بخش افزودهای که این دستگاه داشت، آن شمارندهای بود که در غیاب ابزارهای دخیرهسازی دارای دسترسی تصادفی، برای تعیین شروع و پایان فایلهای مختلف روی نوار کاست مورد استفاده قرار میگرفت.
جویاستیک
این همان جویاستیک آتاری است که همان زمان هم به واسطه خشکی، سادگی و امکانات کم (حتی در مقایسه با دستههایی که خلبانی نامیده میشدند) به آنها لقب «گوشتکوبی» داده بودیم.
کارتریج تنظیم هد
این قطعه سختافزاری یکی از دشوارترین فرآیندهای کار با برنامهها را برای من ساده میکرد و مایه حسرت بسیاری از کمودور داران دیگر بود. درباره کارکرد آن هنگام صحبت از نرمافزارها توضیح خواهم داد. کارتریجی که من داشتم مثل همین تصاویر بدون برچسب بود و رنگ صورتی دخترانهای داشت.
این مجموعه، کل چیزهایی بود که پای من را به دنیایی جدید و تاحدی ناشناخته باز کرد که آن زمان دنیای کامپیوتر، کمی بعدتر حوزه انفورماتیک، بعدها دنیای محاسبات و گاه عرصه فناوری اطلاعات نامیده شد.
در قسمت بعدی درباره نحوه تهیه، تکثیر و استفاده از نرمافزارها (میتوانید بخوانید بازیها!) صحبت خواهم کرد.