صفحات

۱۳۹۴ آذر ۲۲, یکشنبه

مثل گریه در باران

We’re here to put a dent in the universe. Otherwise why else even be here?

 

I've seen things you people wouldn't believe. Attack ships on fire off the shoulder of Orion. I watched C-beams glitter in the dark near the Tannhäuser Gate. All those moments will be lost in time, like tears...in...rain. Time to die.

۱۳۹۴ آبان ۳, یکشنبه

ماجرای من و مسعود منسون و آقا عج-قسمت اول

پسر:مامان، چرا چند ساله که ما را به هیچ مسافرتی، جایی، نمی بری؟
مادر: مگه نمی ببینی پدرت صبح تا شب جون می کنه اما باز به سختی میتونه پول کرایه خونه، خورد و  خوراک و شهریه دانشگاه ات را جور کنه، مگه یک بزازی محلی چقدر درآمد داره؟ تو فکر میکنی من دلم  مسافرت نمی خواهد؟، دلم لک زده برای دیدن دهاتمون تو سولوقون. باز اگه دایی بود(بغض می کند)...  این شهریور که بیاد سه سال میشه که دایی ات را خاکش کردیم، شب و روزی نیست که سر نماز علی را  نفرین نکنم. تو توی شبانه-روزی بودی که یکروز دایی جوادت از اوین زنگ زد که آره خواهر بدبخت شدم و هر  طوری هست علی را پیدایش کنید.... من تا آنموقع اسم این مرتیکه را نشنیده بودم. علی کنار مغازه دایی  توی پاساژ ایرانیان یک غرفه کوچیک داشته...نشسته زیر پایش که، آره تو وزارت خونه پارتی دارم و چی،  بیا شریکی جنس از چین وارد کنیم، اون هم خام میشه و دار و ندار خودش و چندتا از دوستهایش را میده  دست اون ملعون...چه کاری میتوانستیم بکنیم؟ صحبت 800-900 میلیون چک و سفته بود که دایی به  مردم داده بود، من هم با این درد زانوهایم چندباری بلند شدم و با زن دایی و داداش منصورش، رفتیم پی علی. هیچکی خبری ازش نداشت حتی ظاهرا زن و بچه اش...، تا اینکه یک روزی منصور با یک ظرف  بنزین بلند میشه میره در خونۀ علی و داد و فریاد راه می اندازه که، اگه حقیقت را نگین خودم و این خونه را  به آتیش می کشم، خلاصه باخبر شدیم که علی با یه زنی فرار کرده رفته یک گورستونی، مونده بودیم چجوری  این موضوع را به دایی بگیم که خبر آوردند دایی تو زندون فوت کرده. این زن و شوهر بعد از این همه  سال از زندگی، محال بود که بدون هم غذا بخورند، دایی جز دست پخت زن دایی لب به هیچ غذایی نمی  زد، آخرین باری که به ملاقاتش رفته بودیم شده بود پوست و استخوان، سر ماجرای طلاق پریسا و شوهر الدنگش دایی از غصه و ناراحتی قند گرفت، نمی دونی روزی دو  بار سوزن رو فرو کنی تو بدنت یعنی چه؟! هر آدمی یک توانی داره، همین بابات را اگر بخواهم یک کمی سر به سرش بگذارم یا خودش را میکشه یا سر به بیابان می گذاره. دایی جواد هم، یه غروب که رفته بود بهداری، از فرصت استفاده میکنه و کل شیشه انسولین را تزریق می کنه به خودش و میره به کما...(مادر درحالی که اشک می ریزد، ساکت می شود)
پسر: باز من یه چیزی گفتم، رفتی سراغ قصۀ کلثوم ننه، باید بگم غلط کردم، گه خوردم که چیزی خواستم، تا راضی شی؟...(با عصبانیت و ناراحتی دور می شود)
سرم را روی بالش فشار می دهم و دستهایم را می گذارم روی صورتم، سعی میکنم به مشاجره ای که بین من و مادر پیش آمده فکر نکنم اما مگر می شود، خیلی بد با مادر صحبت کرده بودم، با خودم میگویم، فردا صبح که بلند شدم حتما می بوسمش و از دلش در می آورم، بگذار حالا که خوابم نمی بره یک چیزی گوش بدم، امیدوارم برادر روح الله کلوبی سر کوچه یک چیز باحال برایم ریخته باشه. آیپادم را روشن می کنم و میروم توی پوشۀ دهۀ 60->گاراژ بند، اولین آهنگ که عنوان وسوسه انگیزی دارد، نظرم را جلب می کند، دکمۀ پخش را میزنم: Look At Your Game Girl

خوانندۀ بسیار بد صدایی مشغول خواندن هست، تنها صدای ساز گیتار آکوستیک، که ظاهرا ماهها بوده سیمش هم عوض نشده، به گوش می رسد، سریع تو ذوقم می خورد، به سختی تا آخر ترانه را گوش می دهم، برمیگردم به پوشۀ قدیمی،کراس رود2013->کلاپتون، میگذارم روی ترانۀ gotta get better in a little while

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

-+-+-+-ناکجاآباد، اواخر دهۀ 60 میلادی-+-+-+-
شب است، اما نور مهتاب قدری زمین را روشن کرده بطوریکه می تونم اطرافم را ببینم، از کاکتوس های بزرگی که دور و برم هست حدس میزنم که توی آریزونا و یا آن اطرف باشم، بی هدف به این سو و آنسو میدوم، خیلی ترسیده ام آخه سابقه نداشته من تو تاریکی بیرون بروم، الا آبریزگاه که با خانه یک 20-30 متری فاصله داشت. اگر همینطور پیش بره به صبح نرسیده خوراک یک گرگی، جانوری میشوم، آخه خدا چکار کنم، راه و چاه رو نشونم بده، با تمام قوایم از ته دل چندباری فریاد می زنم...از خستگی می افتم زمین، سرم را رو میکنم به آسمان و به ستاره ها نگاه میکنم، تو دلم می گویم عجب گهی خوردم که آرزو کردم به سفر دور و دراز بروم... دیگه کار از اینچیزها گذشته بود باید مینشستم یک فکری میکردم که یکهو دیدم یک شهاب سنگ با سرعت خیلی زیادی به فاصلۀ یکی-دو کیلومتریم خورد زمین، خدایا شکرت!... به سرعت شروع کردم به دویدن به سمت نور، نزدیکش که شدم فهمیدم شی نورانی یک سفینۀ فضایی هست که از قسمت سمت چپش داره آتش و دود بیرون می آید، از توی سفینه صدای بسیار بلند موزیک هیوی متال شبیه آهنگ Bat Out of Hell به گوش می رسد خلاصه فضای وحشتناکی ایجاد شده... منتظرم که در سفینه باز بشود و چنین هم می شود. از سفینه یک پیرمرد با ریش خیلی بلند که یک حلقۀ نورانی هم بالای سرش دارد، پیاده می شود. به خاطر ریش بلندی که همش لای دست و پایش میرود، هر چند قدم یکبار می افتد زمین. فرصت می شود خوب براندازش کنم: یک پیرمرد 60-70 ساله که داشیکی(dashiki) پوشیده و نعلین زرد به پا دارد و یک عینک دودی هم روی چشمش گذاشته، با یک گیتار آکوستیک روی دوشش! و یک گردنبند خرمهره مانند توی گردنش، با این ظاهر سخت بهش می آید که امامی، پیغمیری، چیزی باشه.
صدای موزیک قطع می شود، پیرمرد می رسد به کنارم...
پیرمرد: امت مسلمان من
با مایی؟!
پیرمرد: شما اینجا چکار می کنید؟
خواستم بگم آقا ما گم شدیم که دیدم ضایع هست، گفتم آقا آمدیم جنگ با دشمن کافر امپریالیستی!
پیرمرد: پس بقیۀ لشکر جان برکف کجا هستند؟
آقا ما فرماندهشون بودیم، نصفشون از ترس ترک پست کردند بقیه شان هم از گشنگی
پیرمرد: مرحبا پسرم، اگر من 312 تا سرباز جان برکف مثل تو داشتم کل دنیا را با شمشیر پر از عدل و داد میکردم!...لاکن نباشه با عجله، نزدیکتر بیا فرزندم!
 باورم نمی شد آقا عج بود، افتادم به خاک، گفتم آقا جان ما سالها دنبال شما توی جمکران و آن سمتها می گشتیم، یکبار هم تا سامره آمدیم اما اینجا تو بیابان های آمریکا شما را زیارت کردیم، بگذارید پایتان را ببوسم، دستم را گرفت و بلند کرد...
آقا عج: پسرم لازم به این کارها نیست... اما حالا که اصرار میکنی بیا دستم را ببوس!
جلو رفتم تا دست آقا را ببوسم... چه انگشتهای نرم و لطیفی...توی دلم میگم من هم اگر هزار سال برایم خودم ول میگشتم و کار نمی کردم دستم به همین شکل می شد، سریع تو دلم میگم استغفرالله. توی همه انگشتهای آقا یک انگشتر با نقوش مختلف هست ، چند تاشون را سریع تشخیص می دهم: پنتاگرام،سوآستیکا،...
آقا یک تخته سنگی آن اطراف گیر می آورد و می نشیند رویش، من هم می نشینم کنارش
می پرسم: بی ادبی نباشه، آقا ما شما را با این سر وضع نشناخیتم، استتار کردین از ترس سربازان خلیفه؟
آقا با عصبانیت حرفم را قطع می کند و می گوید: من و ترس!... چند روزی مهمان هیپی های کومون New Buffalo توی همین حوالی های نیومکزیکو بودیم. آنها این خنزر و پنزر را به من دادند، نمی دانی چه آدمهای ماهی بوند...اصلا ول کنیم این حرفها را...بیا یه نخ از این سیگارها که به من دادند بکشیم نمی دونی چه حالی می ده...
سیگار را میده به دستم، خوب براندازش میکنم نمیخوره سیگار معمولی باشد، یک خورده چاق و چله هست، فکر میکنم حتما حشیشی، چیزی داخلش ریختند...
آقا که می بیند دودل هستم می گوید، چیزی شده فرزندم؟
میگویم آقا حتما شنیدید که می گویند:
soft drugs lead to hard ones...
آقا نمی گذارد که جمله ام را به پایان برسانم، می پرد توی حرفم:
اینها همه حرفهای امپریالیستهای جنایتکار و رسانه های وابسته هست، چرا توی این چند هزار ساله مواد ممنوع نبوده؟ اینها که همشون تو قدیم هم بودند: حشیش، تریاک،کوکائین، قارچ سیلوسایبین، کاکتوس پیوتی،رز چوبین هاوایی،... چرا این زهرماری، الکل، که باعث و بانی همه جور جنایت و فساد تو جامعه هست را بر نمی چینند؟ پسرم امپریالیستها نمی خواهند ذهن توده ها با استفاده از این مواد روشن و باز شود، اینها همه را برده می خواهند، آن هم بردۀ اندیشه، مگه نشنیدی یار وفادارمان تیموتی چی میگه:
 In the future it's not going to be what book you read, but what chemical do you use to open your mind to accelerate learning.
همین لیندون جانسون که توی مجلس داد سخن میده که، آی الهیا الناس:
The time has come to stop the sale of slavery to the young
دستور داده روزانه صدها تن بمب سر ویت کونگ ها بریزند و آنها را می خواهد برده کند. همانطوریکه جانشین برحقم روح الله در آینده نه چندان دور، در ديدار با دانشجويان خط امام پس از گروگانگيری اعضای سفارت آمريكا، در جماران خواهد گفت:
"اين موضوع مربوط به امروز و ديروز نيست. دو هزار سال است که آمريكا ما را استعمار کرده است"
اینها همان کسانی هستند که آب را بر جدم حسین بستند و شهیدش کردند، همانهایی که در آینده در یک توطئه و معاملۀ کثیف و ننگین با حکومت آخوندی بهترین فرزندانم در اشرف، یعنی نسل فدا را بمباران می کنند و جریان آب و مواد سوختی را بر رزمگاه لیبرتی می بندند...(آقا شروع می کند به اشک ریختن)
با حرفهای آقا دلم نرم می شود و میگم:
آقا چه دل نازکه!، آقا میکشم، خوب هم میکشم، آتیش هست خدمتتون؟
آقا با زدن انگشتانش به هم به حالت بشکن، بوتۀ خشکی را به آتش می کشد و یه خورده اش را میده به دستم و میگه:
فرزندم از همۀ موادهای سوزنی برحذر باش، تنها ماده مخدری که ارزش تزریق کردن را دارد، ریچارد نیکسون هست.
Avoid all needle drugs.The only dope worth shooting is Richard Nixon
خواستم بگویم آقا  shooting اینجا ایهام دارد و به معنی تزریق کردن نیست بلکه معنی شلیک کردن و شکار کردن را می دهد که ترسیدم آقا جوشی شود،پس چیزی نگفتم. فکر میکنم آقا جدیدا کتاب های ترجمه شدۀ شعبۀ ایدئولوژیک حزب توده را می خواند و به آنها استناد می کند!.
چند باری دود سیگار را می دهم به ریه هام، لذت خاصی به من دست میده. بعد از چند تا پک عمیق حس میکنم نشئه شدم، چند مدتی تو این حال سیر میکنم که از سوختن انگشتم به خودم میام، سیگار به انتها رسیده بود و خاکستر شده بود، کل نئشگی ام پرید!
دیگه از سفینۀ فضایی هیچ دود و آتشی بیرون نمی آید، ظاهر قسمت های آسیب دیده هم تعمیر شده، با حالت متعجب رو کردم به آقا و گفتم:
نگفتین چه اتفاقی برای سفینه تان افتاده بوده؟
آقا هم که انگاری مثل من 8-7 مایلی به آسمان پرتاب شده بود به خودش آمد و گفت: چیز مهمی نیست فرزندم، این بساط همیشگی ماست، ملائکه که به قصد دور کردن شیطان از عرش خدا سنگ پرت می کنند به علت کهولت سن، بیشتر مواقع تیرشان به خطا می رود...مثلا همین چند سال دیگه قراره یکی از این سنگ ها اشتباهی بخوره به فضاپیمای کلمبیای آمریکا...آخ نباید اسرار الهی را فاش می کردم... مثل اینکه دارم پیر می شوم!
دیگه صبح شده، آقا شروع میکند به بالا رفتن از پله های سفینه، همین که به بالای پله ها می رسد برمی گردد به طرفم و دست تکان می دهد و با انگشتان دست راستش علامت V درست می کند و وارد سفینه می شود و در را پشت سرش می بندد. مثل اینکه واقعا آقا داره میره! حالا تک و تنها توی این بیابان چه کنم؟ با تمام قدرت چندباری فریاد می زنم، دیگه دارم ناامید می شوم که یهویی می بینم در باز شد و آقا شروع کرد به پایین آمدن از پله ها، آخ چه آقای خوب و دل رحمی! همینکه داشت از پله ها پایین می آمد ریشش دوباره گیر کرد زیر پاهایش و با سر از بالای پله سقوط کرد به زمین.
آقا: فرزندم، سریع بگو چه خواسته ای داری چون خیلی کار دارم، امروز باید چند جا بروم، روزآخر فستیوال ماردی گرا(mardi gras) هم هست اگه ممه دوست داری، ببخشید رقص و آواز دوست داری میتونم تو را هم با سفینه ام ببرم. بعد دست میکند داخل جیبش و یک کارت ویزیت در می آورد و نشانم می دهد.عکس یک دختر نیمه عریان رویش هست، پایینشم نوشته سونا و ماساژ مادام شانل، نیواورلئان
لبخند می زنم و میگویم آقا زن چه کار من می آید توی این بیابان، دو تا درخواست دارم از شما:
اول، من را با سفینه تان به اولین جایی که بشود یک چیزی خورد برسانید، دارم از گرسنگی هلاک میشوم انگار که یک ماه هست چیزی نخوردم
دوم، از شما میخواهم که کورد گشمده را به من یاد دهید، بشر سالها است که دنبال آن می گردد، بودایی ها اعتقاد دارند که آواز اوم راهبان به همراه صداهای کیهانی تشکیل دهندۀ این کورد هست و یا اینکه داوود پیغمبر این کورد را برای خشنودی خدا میزده... نمی گذارد جمله ام را به پایان برسانم و می گوید:
اینها همه اش حرف مفته! تو تا حالا از نزدیک جیمی هندریکس و جیمی پیج و جری گارسیا را دیدی؟ اینها همه شان یک خصوصیت مشترک دارند
با تکان دادن سر می فهمانم که آنها را ندیده ام، و در جواب می گویم چه خصوصیتی؟ نکند اینکه حرف اول همه شان ج هست را می گویید؟ با صدای بلندی می خندد و در ادامه می گویید همه شان شاگرد من بوده اند! توی یادگیری یک ساز، داشتن یک استاد متبحر و توانا نقش بسیار مهمی دارد، چه کسی بهتر از من! هزار و چهارصد ساله که ته چاه نشسته ام و برای دل خودم ساز زده ام، توی این مدت تمامی تکنیک های اصلی و فرعی انواع سازها ازجمله گیتار اکوستیک و این اواخر الکتریک را یادگرفته ام. نقطه مشترک دیگر هم اینکه همه شان پیکی دارند که آنرا از قسمتی از دندان شیطان که در مبارزه با من از دست داده، ساخته ام. با استفاده از این پیک می توانی سوئیپ آرپژ های برق آسایی را اجرا کنی. چون این اواخر حال و حوصلۀ درس دادن به کسی را ندارم تنها پیک باقیمانده را می دهم به تو.
با خوشحالی پیش  میروم و پیک را از دست آقا می گیرم و برای ادای احترام دستش را میبوسم. یک لحظه تو خیالاتم، خودم را بالای یک سن بزرگ که هزاران نفر تماشاچی داره حس می کنم، شروع میکنم به زدن آهنگ eruption ادی ون هیلن... اما نه، این پیک که اینجا بدرد نمی خوره. عمدۀ آهنگ با تکنیک تپینگ دو دست اجرا میشه. رو میکنم به آقا و می گویم:
 تکنیک های لگاتو مثل hammer on/pull off و یا تپینگ ها را چکارشون کنم؟
آقا لحظه ای مکث می کند و میگوید: دو راه بیشتر وجود ندارد، یک راه راحت و دیگری مشکل. راه راحت که من اون را پیشنهاد نمی کنم این است که روحت را به شیطان بفروشی. اینطوری تمامی تکنیک ها را در عرض چند جلسه یاد می گیری اما ممکن است جای شهرت و اقبال، زندان یا اعدام فرجام کارت باشد، بهتره از سرنوشت رابرت جانسون درس بگیری. و راه دوم چیزی نیست جز تمرین و تمرین و تمرین... مگه تو ویکی پدیا نخوندی، جو ستریانی برای یادگیری برخی از تکنیک های گیتار چهار سال وقت صرف کرده تا به تبحر لازم برسه. آخ این را هم نباید میگفتم، پیری و هزار دردسر.
بعد مکثی می کند و گیتارش را از روی دوشش بر می دارد و در دست می گیرد و می گوید: دیگر با گیتار آکوستیک حال نمی کنم، این تقدیم به تو. خیلی خوشحال میشوم، گیتار را از دست آقا می گیرم و تشکر میکنم. خوب به آن نظاره میکنم، گیتار ساخت شرکت گیبسون هست، روی قسمت میانی آن، نزدیک جایی که فرت-بورد به بدنه اصلی متصل شده، جمله ای نقش بسته است: This machine kills fascists
به پشت آن هم نگاهی می اندازم،رویش چند تا امضا شده: وودی گاتری،پیت سیگر، باب دیلن،... باورم نمیشه این گیتار اصلی وودی هست که تصور می شد در کنسرتی که در منهتن داشته دزدیده شده! رو به آقا میکنم:
سری تکان می دهد و می گوید: اینها همه از مقربین هستند!
تا به حال هدیۀ چنین باارزشی از کسی نگرفته بودم،(دقیقتر بخواهم بگویم، اصلا آخرین باری که از کسی هدیه ای گرفتم بر می گردد به تولد 8 سالگی ام. عمه کتی برایم یک جوجه رنگی آورده بود که خیلی دوستش داشتم و همه جا همراهم بود. یک بار که گذاشته بودمش تو سبد جلوی دوچرخه، توی حرکت پرید بیرون و ناخودآگاه زیرش گرفتم). بی اختیار اشک توی چشمانم جمع می شود. با خودم می گویم از این بیابان که خلاص شوم حتما به همگی خواهم گفت که چه آقای خوب و نازنینی داریم، رو میکنم به آقا که چیزی بگویم، مثل اینکه دستم را خونده باشد به آهستگی، زیر لب می گوید:
کسی دیگه به این چیزها اعتقادی نداره، اگر حرفی بزنی تو را دروغگو خطاب می کنند یا به جرم به خطر انداختن کاسبی ملاها می اندازنت حبس یا بالای دار. از عالم غیب برایم خبر آمده که با ظهور اینترنت همین تعداد طرفدارهایم را هم از دست خواهم داد. کاش جای امامت حقوق قانونی آثار بیتل ها را به ارث می بردم، طرفدارهای آنها سال به...حرفش را میخورد و با لحنی محزون می گوید سوار شو دیرمان می شود....
وارد سفینه میشویم و در را پشت سر خود می بندیم. در حالیکه قدم بر می دارم به فضای اطراف نگاه می اندازم. دیوارهای راهرو با پوسترهای ستاره های راک پوشیده شده، جیم موریسون، جنیس جاپلین،جیمی هندریکس، اوتیس ردینگ،دوین آلمن..وارد فضای اصلی سفینه می شویم. چشمم می افتد به بار مشروبات کوچکی که در یک کنج قرار دارد، در سمت دیگر چند کاناپه و یک میز هست که رویش چند مجلۀ کمیک استریپ و بزرگسال مثل زپ کومیکس و پلی بوی پخش شده، در کنار میز یک قلیان وجود دارد و یک طرف دیگر دستگاههای کنترل و ناوبری سفینه وجود دارد. آقا در حالی که به سمت دستگاهها می رود می گوید، نگفتی تصمیم داری کجا بروی؟
با پررویی میگم، آقا اگر اجازه بدهید همینجا با هم یک چیزی بخوریم، یک تک پا هم برویم شهر سنفرانسیسکوی کالیفرنیا. من عاشق آنورها هستم میبرم همه جا را به شما نشان می دهم، پل گولدن گیت، پارک پن هندل،تقاطع هایت اشبری، سالن موسیقی آوالون و فیلمور که گروههای مطرح راک همیشه تویش برنامه دارند، آقا دیگه چی میخواهید ماردی گرا را بی خیال شید، اینجا که نزدیکتر هست. دیگه نایستادم ببینم چی میگه، رفتم سراغ بار و برای خودم از توی یخچال یک شیشه آبجو برداشتم و یک مقدار کالباس هم گذاشتم لای نون و رفتم روی کاناپه لم دادم، خیلی خسته هستم، دیشبو که نخوابیدم بزار ببینم می تونم با این همه سر وصدای موتورها یک چرتی بزنم؟
نمی دانم چقدر خوابیدم، اما با تکان های دستی که روی شانه ام هست بیدار می شوم، به حال مضطرب می پرسم چه خبره؟ آقا می گه رادار سفینه دو تا فانتوم اف-4 گارد ملی را توی فاصلۀ 350 کیلومتری شناسایی کرده، که مستقیما از روبرو دارند به طرف ما می آیند. اگر بخواهیم ادامه مسیر دهیم چاره ای جز درگیری با آنها نداریم، نمی دانم آیا سفینه توان تحمل مانورها را دارد یا نه؟ آنموقعی که ملائکه داشتند سفینه را تعمیر می کردند من که بالا سرشون نبودم، تو فضا بودم! خدا چقدر از جنس تعمیری و چینی بدم می آید!. از آقا می خواهم مرا همین دور و اطراف پیاده کند، آقا به سمت دستگاههای کنترل سفینه می رود و بعد از چند لحظه می گوید خب، تو را اول این جاده پیاده می کنم.
میپرسم اینجا کجاست؟ اطراف لوس آنجلس، Santa Susana
سفینه کنار جادۀ خاکی در یک محوطۀ پوشیده از چمن فرود می آید، در سفینه باز می شود، زمان خداحافظی است: دست در گردن آقا می اندازم و میبوسمش. در حالیکه اشک توی چشمهایم حدقه زده، میگم:
آقا جان، ما یک روز هم نمی تونیم دور از شما زندگی کنیم، ما همیشه دوست داشتیم در رکاب شما شمشیر بزنیم، اما، از شما پنهان نیست، از بچگی از جنگ و دعوا و خونریزی می ترسیدیم، اما بزرگتر که شدیم با تاسیس چند وبلاگ کار فرهنگی کردیم و توشون بر علیه بهایی ها، که می گویند شما وجود ندارید، مطلب نوشتیم و همه جوره، بد و بیراه نثارشان کردیم. آقا اشکهای من را با دستهایش پاک می کند و می گوید:
فرزندم، اینی که می بینی روز خوشی من هست: نبودی که ببینی توی این 1400 سال ته چاه چه کشیده ام؟!، آنجا همش منتظرم، یک بنده خدایی دعای خیری در حق ما کند و خدا دلش به رحم بیاید و این سفینه را فقط برای چند ساعت در اختیارما بگذارد. الان دیگه مثل سابق نمی توانم توی جمعیت بروم، وقتی توی خیابان راه میروم باید همۀ حواسم را جمع کنم تا زنی ریشدار آن اطرف نباشد، بارها پیش آمده که افتادم توی جوب یا ماشین های عبوری به من زده اند... با دیدن کوچکترین مویی رو لب و چانه زنان هم باید پا به فرار بگذارم، از عالم غیب برایم خبر آورده اند که در آینده اوضاع بدتر هم خواهد شد، با ظهور فاطی کماندوها، ریش و سبیل زینت زنان می شود و یا اینکه به زنی ریشو توی مسابقات یوروویژن جایزه اول را می دهند...
آقا از داخل جیبش یه کاغذ جوهر خشکن که رویش عکس الویس پریسلی هست، در می آورد و می گوید: فرزندم ناراحت نباش، هر موقعی که خواستی مستقیما با من صحبت کنی، نیاز به راز و نیاز نیست، یه تیکه از این را جدا کن و بگذار روی زبانت، 30 تا 45 دقیقه بعدش می آیی پیش خودم، این خالص ترین ال.اس.دی بود که تونستم از بازار گیر بیاورم، کار مشترکی از لابراتوار اوزلی استنلی و تیم اسکالی! فقط برای پرهیز از سفر بد، توصیه میکنم که توی زمان ومکانی که راحت و آسوده نیستی اینو مصرف نکنی. ال.اس.دی را از آقا می گیرم و میگذارم توی جیبم و از پله ها می آیم پایین. برای آقا دست تکان می دهم و با انگشتهایم حرف V درست می کنم و سپس با مشتهای گره کرده چند بار فریاد می زنم:we shall overcome!
در سفینه بسته می شود و موتورهایش روشن می شوند، به سرعت سفینه در آسمان اوج می گیرد و به سمتی که آفتاب در آنجا غروب می کند، حرکت می کند، چند لحظه نمی گذرد که سر و کلۀ فانتوم ها پیدا می شد. فانتوم ها در حالیکه موتورهایشان در حالت پس-سوز کار می کند با غرش و سرعت زیاد در ارتفاع پایین از بالای سرم رد می شوند. خوشبختانه مسیر حرکتشان خلاف جهت حرکت سفینۀ آقاست و به خیر می گذرد....
گیتار را از بند می گیرم و میگذارم روی دوشم و در مسیر جادۀ خاکی شروع میکنم به راه رفتن، با خودم می گویم این راه را اگر ادامه بدهم حتما به جایی خواهم رسید....
چند ساعتی است که دارم راه میروم اما توی مسیر نه هیچ جنبنده ای دیده ام و نه هیچ خانه ای یا چیزی، تا چشم کار می کند دوطرف جاده فقط انبوده درختان کاج و گیاه سرخس، دیده می شود. هم خسته ام و پاهایم درد می کند و هم حوصله ام سررفته. کنار جاده یک جایی پیدا می کنم و روی زمین ولو میشوم. از زیر پیراهنم مجله های پلی بوی که از سفینۀ آقا کش رفتم را در می آورم و شروع می کنم به ورق زدن. به همبازی-ماه، همه شان یک نگاه سرسری می اندازم، میخواهم ببینم معیارهای زیبایی از دهۀ 60-70 تا امروز هیچ تغییری کرده یا نه؟ با خودم میگویم برخلاف شاههای بی سلیقۀ قاجار، هیو هفنر هیچ انتخاب بدی نداشته،هیچکدامشان نه چاق بودند و نه سبیل داشتد. مرحبا پسر...
بعد از رفع خستگی بلند می شوم و به راه می افتم، این قسمت از مسیر روی یک تپۀ نه چندان مرتفع قرار گرفته، بعد از حدود یک ربع راه رفتن میرسم به بالای تپه. چه منظرۀ زیبایی،خورشید آن دورها در حال غروب کردن است و در پایین تپه چند تا مزرعه و کلبه وجود دارد. با خوشحالی به طرف پایین حرکت می کنم. بعد از گذشتن از کنار مزارع به یک کافه کوچک میرسم که روی آن نوشته کلوچۀ خانگی، آبجوی سرد...
داخل کافه می شوم، با ورودم همه سرها به طرف در بر می گردد، سرم را پایین می اندازم و میروم انتهای میز بار روی یک صندلی پایه بلند می نشینم، به متصدی بار که یک خانم چاق است میگویم که دو سه تایی آبجو میخواهم، بدون اینکه جلب توجه کنم به دور و اطراف نگاه می اندازم تا ببینم چه کسانی داخل کافه هستند. سه تا پیرمرد رد-نک می بینم که با کلاه های یکرنگ کابویی آن سر میز بار نشسته اند و در کنارشان یک مردمیانسال با لباس یکدست سبز هست که از آرم روی بازویش حدس میزنم دیده بان آتش در جنگل باشد و یک خانم جوان، که در کنج کافه پشت یکی از میزها کز کرده. خیلی تشنمه، یکجا یکی از آبجوها را سر میکشم، آخ، سینوس های پیشانی ام شروع کردند به درد کردن. از خانم متصدی بار میخواهم که یک آسپرین برایم بیاورد. پیشانی ام را میگذارم روی پشت دستم، روی میز، تا کمی دردش کم شود.... صدای برخورد چیزی روی میز چرتم را پاره می کند، سرم را بلند می کنم ،می بینم که متصدی بار برایم یک لیوان آب و یک قرص آسپرین آورده. قرص را بر می دارم و با کمی آب میخورم. ایندفعه خانم جوان را می بینم که کنارم نشسته، با گوشۀ چشمم نظاره اش میکنم، زنی است با چهره ای بسیار غمگین و شکسته و موهای آشفته. لباسی کهنه و پاره بر تن دارد، که تنها نیمی از سینه اش را پوشانده. برای اینکه در صحبت را باز کنم به او آبجو تعارف می کنم، بی معطلی بر می دارد. یک نگاه عمیق به زن می اندازم، یک چیز عجیب و غیرعادی در ظاهرش نظرم را جلب می کند: پلاک بزرگ طلایی که به گردن دارد. می پرسم نامت چیست و چندسال داری؟
اسمم ویکتوریا است و خیلی بیشتر از اونی که فکر میکنی سن دارم، میدونی، مادر هفت تا بچه ام
الان که اینجا هستید، چه کسی از آنها مراقبت می کند؟
ویکتوریا: پیش برادر و خواهرها، جایشان امن است
پدر این بچه ها کجاست، اصلا به شما هیچ کمکی میکنه؟
در مورد اینکه، آنها کجا هستند چیزی به ذهنم خطور نمی کند، آنها همیشه من را پیدا می کردند و به سراغم می آمدند.
هیچ کمکی از دست من بر می آید؟
نه نیازی به همراه ندارم، از روزی که خودم را شناختم یک دنیا بار را روی شانه هایم حمل می کردم، اما این دنیایی که من دیدم هیچوقت با من منصف نبود...
زمان جدا شدن است، حسابم را پرداخت میکنم و از ویکتوریا خداحافظی می کنم و به سوی بیرون قدم برمی دارم، در حالیکه حرفهایش تمام ذهنم را مشغول کرده.


۱۳۹۴ مهر ۱۹, یکشنبه

این زندگی خودمه، فراموش که نکردی؟ یا حملۀ زامبی ها به اشرف

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

 از روزی که مرا به پاریس و بخش مالی-اجتماعی سازمان منتقل کرده اند به این فلاکت افتاده ام. سابقا که در اشرف بودم یک غذای بخور و نمیری به ما می دادند اما اینجا بعد از بیدارباش در ساعت یک ربع به چهار و خوردن صبحانه مختصر تا شام خبری از غذا نیست  باید برویم توی خیابان و با نشان دادن آلبوم عکس بچه های بی سرپرست از مردم  گدایی کنیم. اگر با پول هم برنگردیم ما را اصلا به پایگاه راه نمی دهند درست مثل شنبه هفته پیش که تمام شب را در یک مترو مثل سگ لرزیدم. دیروز از خواهر ژینوس خواستم که برایم یک کاپشن و چتر بخرد(آخه توی این فصل سال هر آن امکان دارد هوا  بارانی شود) اما جواب داد که "بودجه نداریم برو بیرون بدزد" حسابی جا خورم، آخه من معصوم تر از این بودم که چنین کاری بکنم اگر بخواهم صادقانه بگویم از موقعی که به مادر طلعت قول دادم که بچه خوبی باشم دیگر دزدی نکرده ام.
پدرم یک قمارباز بود و  برای بازی به شهرهای مختلف می رفت، ما هم همیشه همراهش بودیم، آخرین سفر زندگیش به رشت بود. درآنجا با نیش چاقوی یک آدم مست جان سپرد. ما هم به اجبار در آنجا ساکن شدیم، مردم خیر محل برای ما یک آلونک محقر درست کردند. توی همسایگی ما  یک خانواده زندگی میکرد که مردم آنها را به اسم خانم خانواده یعنی طلعت می شناختند. مادر طلعت زن بسیار خوبی بود و کارش کمک به خانواده های بی سرپرست بود، او  دو فرزند داشت: تقی و فرنگیس. تقی توده ای بود او به من یاد داد فکر انتقام از آن بی ناموس که پدرم را کشته بود و راحت در خیابان ول می گشت را از سرم بیرون کنم و بجایش تمام تنفر و انزجارم را معطوف به باعث و بانی بدبختی جامعه یعنی پولدارها و شاه کنم. چونکه من سواد زیادی نداشتم از خواندن کتابهای سخت و پیچیده درباره  اقتصاد و فلسفه معاف شده بودم و تنها وظیفه ام جاسازی جزوات و اعلامیه ها و گوش فرا دادن به داستانهای انقلابی مانند ماهی سیاه کوچولو از زبان فرنگیس بود. فرنگیس که چند سالی از من بزرگتر بود غیر از خواندن کتاب های قصه به من زبان انگلیسی  هم یاد می داد، چشمهای فریبنده اش از چشمان بت دیویس(2) هم زیباتر بودند، با اینکه تنها عکسی که از او داشتم را در عملیات فروغ از دستم دادم اما هنوز برق چشمش هایش پس از سالها به طور واضح در خاطرم هست. بعدها که بزرگ شدم تصمیم گرفتم  عشق و علاقه فراوانم را به او بگویم اما فرنگیس گفت که من را مثل برادرش تقی دوست دارد و تا به حال به زندگی مشترک با من فکر نکرده، جواب قاطع و صریح فرنگیس موجب شد که دنیا روی سرم خراب شود .من آن شب برای همیشه خانواده ام را ترک  کردم و به تهران آمدم و به سازمان پیوستم. سالها بعد که در اشرف بودم شنیدم که  تقی اعدام شده و مادر طلعت هم که هر پنجشنبه به سر مزار فرزندش در خاوران میرفته در یک حادثه رانندگی کشته شده.
غرق در افکار خودم بودم که دیدم پیشخدمت برایم قهوه(به جای چای) و نان خامه ای آورده، شروع کردم به خوردن، اما یادآوری خاطرات گذشته کامم را به شدت تلخ کرده بود به طوری با هیچ شیرینی یی قابل جبران نبود. فرصت کردم جزوه ای که خواهر زهره چند روز پیش به من داده بود را نگاهی  بیندازم، عنوان جزوه این بود: "تکنیک های جنس بلند کردن از مغازه" از ابی هافمن. نوشتۀ به غایت افتضاح و غیر قابل درکی بود. یکبار که من و جواد مخفی محفل زده بودیم، ازش شنیدم که این ترجمه ها کار ماشینی است به نام گوگل، ولی خواهر زهره  برای ترجمۀ هر صفحه کلی پول از سازمان می گیرد تا بدهد به شوهر مفنگی اش. توی نوشته هیچ صحبتی از دوربین مدار بسته نشده بود (آخه اوایل دهۀ هفتاد میلادی این چیزها رایج نبود) برای همین، تکنیک هایش اصلا توی این دوره زمانه عملی نبود. هفتۀ پیش تو  نشست عملیات جاری عنوان کردم که حاضر نیستم از این به بعد با آلبوم های کهنه و پاره بروم گدایی(آخه یک بار به تور یک خارجی خورده بودم که ادعا می کرد تو بچگیش این عکس ها را دیده و به جای پول دادن کلی به من خندید)، کم مونده بود که بچه های پایگاه بریزند سرم اما خدا را شکر، تنها به چند تا فحش و بد و بیراه قناعت کردند.
حالا باید یک فکری هم برای جلسۀ غسل هفتگی ام میکردم دیگه هر دروغی بود تا به حال روی کاغد آورده بودم از لحظۀ جیم داشتن با خاطرۀ دختر همسایه که دست و پاهایش پشمالو بود تا سنفرانسیسکو رفتن با پرنسس دایانا، دیگه دستم داشت رو می شد. با خودم فکر کردم خواب چند شب پیشم را تعریف میکنم، باداباد!

پردۀ 1: هدیۀ غافلگیر کنندۀ مسعود،
توی سالن آمفی تئاتر اشرف بودیم خواهرها یک طرف و برادرها هم یک طرف، همگی خوشحال و خندان مشغول رقص و پایکوبی بودند، صدای ساکسیفون و گیتار برقی کل فضا را پر کرده بود، به نظرم اومد که این آهنگ را قبلا جایی شنیده بودم...آه درسته یادم آمد مملی پسر پولداری که من و مادرم کارهای خونه شان را انجام می دادیم عاشق اینجور آهنگ ها بود، شروع کردم به زمرمه کردن شعر زیر لبم،
....
La-da da da da da da da
La-da da da da da de
Talking 'bout you and me
And the games people play

Oh we make one another cry
Break a heart then we say goodbye
Cross our hearts and we hope to die
That the other was to blame
....
People walking up to you
Singing glory hallelulia
And they're tryin to sock it to you
In the name of the Lord

They're gonna teach you how to meditate
Read your horoscope, cheat your faith
And further more to hell with hate
Come on and get on board
....

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

پردۀ 2: خونخواهی مریم،
بچه ها در ضلع شمالی اشرف جمع شده بودند، تنها آنهایی که در سالن حضور نداشتند از حملۀ زامبی ها جان به در برده بودند، باید کاری می کردیم اما هیچکداممان حتی آدرس اسلحه خانه را نمی دانستیم چون بیشتر نجات یافته ها، نانوا و یا آشپز و یا کارگران خدماتی بودند. یکی از بچه ها ظاهر متفاوتی با بقیه داشت، یک دیلم هم دستش بود!. سالها بود که در گردهمایی های ویلپنت در پاریس، چهره های تازه می دیدم، مجاهد سرخپوست، سیاه و اسکیمو و... اما هیچکدامشان را در اشرف  ندیده بودم، از این خوشحال شدم که سازمان در جذب افراد جدید موفق بوده!
از بچه ها پرسیدم این چشم آبی کی هست؟ کسی چیز درستی درباره اش نمی دانست، قدم پیش گذاشتم و به انگلیسی از او پرسیدم که "چه کسی هستی"؟
چندباری سعی کرد که چیزی بگوید ولی نتواسنت، انگار چیزی/کسی قدرت تکلم را از او گرفته بود(4)، یک کاغذ از جیبش درآورد و به دستم داد، در بالای آن نوشته شده بود، "نیمه جان"(5).
نامش گوردون فریمن(6) بود و دکترای فیزیک نظری از ام.آی.تی داشت. سابقۀ زیادی هم در مبارزه با موجودات فرازمینی و همکار زمینی شان(آیزاک کلینر) داشت. در کاغذ نوشته شده بود که قصد داشته به روش تله پورت به "بلک میسای شرقی" برود اما به خاطر اشکالی که در سیستم به وجود آمده بود، سر از اشرف درآورده...
با استفاده از ابزارهای جنگی که دکتر با خود آورده بود و طراحی یک نقشۀ جنگی بی نقص به سالن اشرف هجوم بردیم و کار زامبی ها را یکسره کردیم،به تمامی اتاق ها و زیر زمین ها و چاه های فاضلاب اشرف نگاه انداختیم اما خبری از مسعود و مریم نبود. می شد یاس و ناامیدی را در چهرۀ تک تک افراد تشخیص داد، بعضی ها به سر و صورت خود می زدند و گریه می کردند و بعضی ها هم تصمیم به خودکشی داشتند، چون زندگی بدون مسعود و مریم یعنی هیچ! دکتر هم بی سر و صدا و بی خداحافظی از دیده ها غیب شد، شاید او هم رفت پیش مسعود و مریم و شاید روزی با "نیمه جان 3" برگشت، کسی چه می داند.

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

تو حال و هوای خودم بودم که حس کردم دست یک نفر روی شانه ام هست سرم را برگرداندم و دیدم که یک پیرمرد که ظاهرا صاحب کافه بود، به من گفت که "موسیو دیر وقته می خواهیم کافه را ببندیم"...
از کافه بیرون زدم در حالیکه داشتم  پیاده به سوی پایگاه پیش می رفتم، صدای ترانه ای شاد از آن دورها به گوش می رسید خواننده با حرارتی وصف ناشدنی می خواند:
....
It's my life
Don't you forget
It's my life
It never ends
(It never ends)
....
Funny how I find myself
In love with you
If I could buy my reasoning
I'd pay to lose
....
I'd tell myself
What good you do
Convince myself
......

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

مهر 1394 استکهلم
1-Jim Morrison/Grace Slick

2-Bette Davis











3-Headcrab+Zombie














4-دکتر فریمن در بازی هیچوقت حرف نمی زند

5-Half-Life


6-Dr. Gordon Freeman

۱۳۹۴ مرداد ۶, سه‌شنبه

آقای طبیعی



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

۱۳۹۴ مرداد ۲, جمعه

برادران معتاد پشمالوی افسانه ای

The Fabulous Furry Freak Brothers

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

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


دانلود مجموعۀ کامل داستان های مصور The Fabulous Furry Freak Brothers از سایت TPB (در قالب PDF)

۱۳۹۴ تیر ۳۰, سه‌شنبه

جوشکار زیر آب



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

لینک دانلود مستقیم از سایت دراپ باکس
لینک دانلود تورنت از سایت TPB
کمک: نسخۀ کم حجم و مجانی برنامه utorrent، را از سایتش دانلود کنید، روی لینک تورنت کلیک کنید، در صفحه بعدی روی جملۀ GET THIS TORRENT که در کنارش یک علامت آهنربای نعلی شکل وجود دارد، کلیک کنید، وقتی مرورگر اینترنت از شما سوال کرد که این فایل را با چه برنامه ای باز کند، utorrent را انتخاب کنید، یک پوشه انتخاب کنید که فایل رمان در آن دانلود شود و دکمه OK را بزنید.
برای بازکردن و نمایش رمان های گرافیکی یا کمیک استریپ ها نیاز به یک برنامه خاص دارید که با سرچ کلمات comic book reader در گوگل آدرس چندین نرم افزار برایتان نمایش داده می شود، بهترین آنها CDisplay است، که من سالها از آن استفاده می کنم(چند مورد دیگر را اخیرا امتحان کرده ام، پس از نصبشان به اجبار برنامه های بی مصرف و تبلیغاتی دیگری نیز در رایانه تان نصب و اجرا می کند). فایل setup.zip را از سایت CDisplay دانلود و سپس نصب کنید. به محلی در رایانه تان که فایل رمان در آن دانلود شده بروید و با دو بار کلیک روی فایل آن را روی مانیتورتان به نمایش بگذارید.





۱۳۹۴ خرداد ۸, جمعه

حفاظت از فایل ها و پوشه ها به کمک نرم افزار MultiPar

درود به همه دوستان
مدتی بود که تصمیم داشتم یک برنامه فشرده ساز برای کمودور 64 بنویسم، ولی به خاطر تنبلی، نوشتن برنامه را به آینده موکول می کردم. این هفته تصمیم گرفتم کار نوشتن برنامه را آغاز کنم، از بین الگوریتم های LZW و Huffman اولی را برای نوشتن برنامه انتخاب کردم. پیاده سازی الگوریتم LZW در زبان اسمبلی کار آسانی است چون تنها به ساختمان داده، آرایه نیاز دارد، ولی هافمن محتاج به مجموعه و درخت است. بعلاوه در عمل کدگزاری LZW یا حسابی(Arithmetic coding) قابلیت فشرده سازی بهتری را نسبت به هافمن ارائه می دهند. پس از تکمیل برنامه کد آن را در این وبلاگ و C64 Scene Database قرار خواهم داد.
چند سال پیش کل شماره های مجله BYTE را (که مطالب بسیار خوبی در زمینه الکترونیک و کامپیوتر داشت)، از طریق تورنت دانلود کردم و روی دی وی دی قرار دادم. امروز هوس کردم نگاهی به شماره های دهه 80 آن بیاندازم. متاسفانه قسمت عمده ای از آنها قابل خواندن نبودند. بدلیل اینکه مجله حجم زیادی داشت(حدود 32 گیگابایت)، و آن موقع هم تمهید خاصی برای این موارد نیاندیشیده بودم مجبور شدم فایل های ناقص را تک تک دوباره دانلود کنم. این کار مرا به فکر انداخت که این پست را به جای ادامه آموزش زبان اسمبلی به روشهای حفاظت از فایل ها و پوشه ها در برابر نقص سخت افزار، خطای نرم افزار،آلودگی و تخریب توسط ویروس و برنامه های بدجنس و نحوه بازیابی و ترمیم آن ها توسط نرم افزار MultiPar، اختصاص بدهم.

بهتر است فایل ها و پوشه ها را در یک پوشه اصلی قرار دهیم و سپس به کمک نرم افزار WinRAR آن را در یک فایل با پسوند RAR قرار دهیم.(روی پوشه با ماوس راست-کلیک می کنید و گزینه Add to archive را انتخاب کنید).


 * Solid compression: در علم محاسبات به روشی برای فشرده کردن دادۀ چندین فایل اطلاق می گردد، که درآن کلیۀ فایل های فشرده نشده به شکل یک زنجیر به هم متصل شده اند و با آن مانند یک بلوک داده رفتار می شود.
قالب های فایل فشرده، اغلب دو جنبه فشرده سازی(ذخیره داده در یک فضای کوچک) و آرشیو کردن(ذخیره چند فایل و ابرداده(metadata) در یک فایل تکی) را به نمایش می گذارند، شخص می تواند اینها را به دو روش متعارف ترکیب کند.
* فایل ها را به طور جداگانه فشرده کند، و سپس آنها را در فایل تکی آرشیو کند.
* آنها را در یک بلوک داده(جریان داده به هم پیوسته) قرار دهد، و سپس فشرده کند.
ترتیب مهم است(این عملیات خاصیت جابجایی ندارند) و دومی فشرده سازی یکپارچه(solid compression) نامیده می شود. زمانی که فایل ها مشابه اند(یا در اغلب موارد، قالب فایل شان یکجور باشد)، solid compression، فشرده سازی با نرخ خیلی بیشتری را ممکن می سازد. همچنین برای آرشیو کردن تعداد زیادی فایل با اندازه کم هم موثر است
 نکته مهم: از این روش  نباید، برای آرشیوهایی که به جهت پشتیبان گیری ساخته میشوند، استفاده کرد. اما برای کارهای روزه اشکالی ندارد(در صورت نیاز چک-باکس Create solid archive را تیک بزنید).

 نکته:
اگر فایلهای شما از قبل فشرده است و نیاز به فشرده سازی بیشتری ندارد از لیست کشویی Compression method، گزینه Store را انتخاب کنید.(بهینه ترین گزینه برای پشتیبانی گیری روزانه استفاده از گزینه Fastest است).
 سپس چک-باکس Add recovery record را انتخاب کنید، در ادامه تب Advanced را کلیک کنید. در قسمت Recovery record یک عدد را انتخاب کنید(در قالب درصد). در اینجا باید نکته ای را در مورد انتخاب این عدد بگویم.

قالب آرشیو RAR برای محافظت از داده ها در مقابل خطرات احتمالی از نوع مخصوصی از داده های مازاد(redundant data) به نام رکورد بازیابی استفاده می کند. وجود این رکورد موجب می شود آرشیو بزرگتر شود اما امکان تعمیر آرشیو صدمه دیده را در صورت خرابی قسمتی از دیسک و یا عوامل دیگر فراهم می کند(به شرطی که این آسیب ها خیلی شدید نباشند).می توانیم طول رکورد بازیافت را به شکل درصدی از اندازه آرشیو، در برنامه مشخص کنیم، رکورد بازیابی با طول بیشتر امکان تعمیر مناطق آسیب دیده بیشتر را به ما می دهد، اما بر اندازه آرشیو می افزاید و پردازش آنرا هم کند می کند، 3 تا 10 درصد اندازه آرشیو اصلی، معمولا یک انتخاب معقولانه ای است. به خاطر به خدمت گرفتن داده سربار،اندازه رکورد بازیافت نتیجه، به طور تقریبی با درصدی که کاربر معین کرده مطابقت می کند( برای فایل های آرشیو کوچکتر، تفاوت زیادتر است).
نکته:
رکورد بازیابی RAR نسخه 4، برپایه الگوریتم ساده XOR است، رکورد بازیابی RAR نسخه 4 متشکل از سکتورهای 512 بایتی است و حداکثر می تواند حاوی 524288 سکتور باشد پس اندازه مفید و توانایی بازیافت داده اش به 256 مگابایت محدود می شود. اگر منطقه آسیب دیده پیوسته باشد، هر سکتور به بازیابی 512 بایت از اطلاعات آسیب دیده کمک میکند. در مواردی که چندین آسیب وجود داشته باشد این مقدار ممکن است کمتر شود.

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

* در برنامه WinRAR سه گزینه برای انتخاب قالب آرشیو دارید، بهترینش همانطور که در بالا توضیح دادم RAR5 است. برای انتخاب به تصویر سمت چپ نگاهی بیاندازید، محل انتخاب قالب آرشیو با رنگ آبی مشخص شده.


نکته:
هر دو رکورد نسخۀ 4و5 در صورتی خیلی موثر خواهند بود که موقعیت داده ها در آرشیو صدمه دیده جابجا نشود، اگر شما با استفاده از یک نرم افزار مخصوص، آرشیو را از یک رسانه آسیب دیده(مثلا دی وی دی خش دار یا هارد دارای سکتورهای بد) کپی می کنید و شما قدرت انتخاب داشته باشید که، منطقۀ آسیب دیده را با صفر پرکنید و یا آن را از فایل کپی بردارید، اولی را برگزینید، به دلیل اینکه مواضع داده اصلی، حفظ خواهند شد. اگر چه این دلخواه ترین حالت نیست اما رکورد نسخه 4و5 تلاش خواهند کرد که داده ها را تعمیر کنند حتی در مواردی که مقدار قابل قبولی داده در آرشیو درج(insert) و یا از آن پاک(cut) شده باشد(موقعیت داده ها تغییر کند). رکورد بازیابی نسخۀ 5 به طور خیلی موثرتری نسبت به نسخه 4، می تواند به آسیب های درج و برش رسیدگی کند.

 مثال:
به ترتیبی که در بالا توضیح دادم یک آرشیو از فایل ها و پوشه های دلخواه درست کنید(قالب آرشیو را RAR5 انتخاب کنید)، Recovery Record را هم روی 10 درصد تنظیم کنید. با یک Hex editor ساده فایل آرشیو را باز کنید، قسمت هایی از آرشیو از جمله Header ،آن را دستکاری و برش(cut) نمائید و در نهایت آن را ذخیره کنید.

Header: در تکنولوژی اطلاعات به داده های مکملی گفته می شود که در ابتدای بلوک داده ای که ذخیره یا مخابره خواهند شد، قرار می گیرد. برای ساخت Header ضروری است که از یک سری مشخصات یا قالب که به طور واضح و غیر مبهم بیان شده اند، پیروی کنیم تا امکان تجزیه(Parsing) وجود داشته باشد. هدر فایل در قالب های فایل آرشیو، به عنوان اثرانگشت یا امضاء برای شناسایی قالب فایل و نرم افزار کاری، همخوان با آن، به خدمت گرفته می شود.


به علت اینکه قسمت ابتدایی آرشیو یا Header آسیب دیده است نرم افزار WinRAR قادر به شناسایی نوع آرشیو نیست و با دو بار کلیک روی نام فایل خطای the archive either unknown or damaged(آرشیو ناشناخته یا آسیب دیده است) را به ما یادآوری میکند.
*نحوه تعمیر فایل آسیب دیده:
برنامه WinRAR را اجرا کنید، با استفاده از لیست کشویی مسیر پوشه ای که فایل آرشیو آسیب دیده در آن قرار دارد، را به برنامه بدهید، سپس نام آرشیو را انتخاب کنید و در آخر دکمۀ تعمیر(Repair)، روی میله ابزار برنامه را کلیک کنید. در دیالوگی که باز می شود با استفاده از دکمه Browse یک مسیری تعیین کنید تا فایل تعمیر شده در آن قرار گیرد. چون هدر آرشیو آسیب دیده است برنامه قادر به شناسایی قالب فایل نیست. با استفاده از دکمه های رادیویی تعیین می کنیم که برنامه چه جوری با آرشیو آسیب دیده رفتار کند، به عنوان فایل RAR یا ZIP ؟. اولین گزینه را انتخاب می کنیم و دکمه OK را می زنیم. پس از بازیابی بلوک های آسیب دیده، یک فایل هم نام آرشیو آسیب دیده و با پیشوند .fixed  ایجاد می گردد که آرشیو تعمیر شده است.

نکته:اگر آرشیو آسیب دیده حاوی رکورد بازیابی نباشد و یا اگر آرشیو به خاطر آسیب های عمده قابل بازیابی نباشد مرحلۀ دوم اجرا می شود، در طول این مرحله فقط ساختار آرشیو دوباره سازی خواهد شد و فایل هایی که صحت جمع کنترلی(checksum) شان رد شده است قابل بازیابی نیستند، اما هنوز هم امکان بازیابی فایلهای آسیب ندیده ای که به واسطۀ خرابی ساختار آرشیو قابل دسترس نیستند، وجود دارد(این غالبا برای آرشیوهایی از نوع غیر-یکپارچه مفید خواهد بود). وقتی مرحلۀ دوم تکمیل شد، آرشیو احیا شده، در فایلی هم نام با آرشیو صدمه دیده و پیشوند .rebuilt ذخیره خواهد شد.




Volumes(قسمت کردن به چندین مجلد):
برنامه WinRAR می تواند آرشیوی ایجاد کند که از چندین فایل(یا حجم) تشکیل شده است، برای اینکار کافی است که در مرحله ساخت آرشیو از لیست کشویی زیر عبارت Split to volumes ،یک مقدار انتخاب کنید، تا آرشیو به چندین فایل به آن اندازه تقسیم شود. امکان استفاده از اعداد دلبخواه هم وجود دارد اما دقت کنید که پس از ویرایش عدد، واحد آن را هم به درستی از لیست جلویی(size) انتخاب کنید. برای باز کردن آرشیوهای چند قسمتی باید روی اولین حجم (که نامش به رشته part1.rar ختم می شود)، دو بار کلیک کنید.
 اگر آرشیو را به چند قسمت تقسیم کنیم نگهداری و یا انتقال آن آسانتر می شود. دیگر نیازی به دیسک یا حافظه فلش با حجم بالا نداریم. همچنین آپلود کردن چند فایل با حجم کم خیلی آسانتر از یک آرشیو یک تکه با حجم زیاد است و نیز بیشتر سایت های میزبان فایل، برای حجم فایلها محدودیت می گذارند .و مهمتر از همه اگر به یک آرشیو آسیب وارد شود و مقدار صدمه بیش از درصد تعیین شده برای رکورد بازیابی باشد، دیگر فایل به طور کامل قابل تعمیر نیست و باید با نسخه پشتیبانش تعویض شود.

اجازه دهید با یک مثال توضیح دهم، فرضا فایل آرشیو ما 4GB است پس به راحتی آنرا می توانیم در دو دیسک دی.وی.دی معمولی(4.7GB) جای دهیم، یکی به عنوان دیسک اصلی و دیگری به عنوان پشتیبان. اگر به واسطۀ خط و خش بخش هایی از دیسک اصلی قابل خواندن نباشد و آسیب به آرشیو بیش از مقدار خاص تعیین شده باشد، فایل قابل تعمیر نیست و باید از  آرشیوی که در دیسک پشتیبان قرار داده ایم استفاده کنیم. اگر بر حسب اتفاق دیسک پشتیبان هم دارای مشکل خط و خش باشد، فایل آرشیو از دست رفته است، اما اگر آرشیومان را به حجم های 700 مگابایتی تقسیم کنیم(6 قطعه) و یک و یا چند تا از این حجم ها قابل استفاده نباشند می توانیم با حجم معادلشان در دیسک پشتیبان تعویض کنیم. اما اگر بر حسب تصادف مثلا حجم های 1 و 6 از دیسک اصلی و 3و6 از دیسک پشتیبان قابل خواندن نباشند چون حجم 6 در هر دو دیسک قابل خواندن نیست پس تنها قسمت های 1 تا 5 آرشیو قابل استخراج(extract) است نه کل آن.
  • برنامه MultiPar آرشیو ما را که به چند حجم تقسیم شده به عنوان ورودی می گیرد و به همان تعداد فایل، که حاوی بلوک بازیابی اند، بعلاوه یک فایل اندیس(index) کم حجم به عنوان خروجی تحویل می دهد. فایل اندیس حاوی بلوک بازیابی نیست بلکه حاوی هش فایل های ورودی است که می تواند بعدا، به سرعت برای تعیین هویت(identify) فایلهای ورودی و تایید(verify) بی نقصی( integrity) آنها به کار رود. این فایل های خروجی(با پسوند PAR یا PAR2) را می توانیم برای دوباره ساختن حجم های گمشده یا خراب آرشیو اصلی بکار ببریم.
نکته مهم: اگر در برنامه MultiPar، درصد افزونگی(Redundancy) را 100 انتخاب کنیم هر کدام از فایلهای خروجی(غیر از اندیس) این قابلیت را دارند که یکی از حجم های آرشیو اصلی را دوباره سازی کنند و این جالبترین ویژگی این برنامه است. مثلا اگر آرشیو 6 قسمتی تحویل این برنامه بدهیم خروجی برنامه 6 فایل حاوی بلوک بازیابی و یک اندیس است، این فایلها به عنوان پشتیبان آرشیو اصلی تلقی می شوند و باید جدا از آرشیو اصلی در جایی نگهداری شوند. اگر مانند مثال گذشته در دیسک اصلی مان حجم های 1و6 قابل خواندن نباشند کافی است دو فایل حاوی بلوک بازیابی(مهم نیست کدامشان) را از دیسک پشتیبان انتخاب کنیم و به همراه 4 حجم باقیمانده در دیسک اصلی تحویل نرم افزار MultiPar دهیم تا حجم های 1و6 را برایمان دوباره سازی کند و در نتیجه کل آرشیو قابل استخراج است!

ادامه دارد...

۱۳۹۴ فروردین ۳۰, یکشنبه

آموزش برنامه نویسی اسمبلی برای کمودور 64، قسمت اول

21 سال از تولید آخرین کمودور 64 می گذرد با این حال این کامپیوتر در بین نسل جدید هواداران فراوانی دارد. هم اینک می توانید ده ها فروم و صدها سایت را که منحصرا به بازیها و برنامه ها و مجلات این کامپیوتر اختصاص داده شده اند، در سطح اینترنت مشاهده کنید. در سالهای اخیر چندین کلون از این کامپیوتر دوست داشتنی ساخته شده. کمودور 64 یکی از بخش های همیشه پرطرفدار مسابقه های ساخت دمو و بازی  است(مانند Assembly demo party).
با استناد به گفته کتاب رکوردهای گینس کمودور64 پرفروش ترین مدل کامپیوتر در طول تاریخ می باشد. ارزیابی های مستقل انجام گرفته، تعداد کامپیوترهای فروش رفته را چیزی بین 10 تا 17 میلیون عدد می دانند.
در اوایل دهه 80، C64 با قیمت کمتر(595$) و سخت افزار قابل انعطاف بیشتر در مقایسه با رقبایی مثل Apple II وAtari 800، به سرعت توانست  در فروش از آنها پیشی بگیرد و به عنوان یک کامپیوتر خانگی و دستگاه بازی خود را در دل خانواده ها و حتی  خوره های کامپیوتر و هکرها(همچون گروه FairLight) جا دهد. با این حال قیمتش به حدی نبود که خانواده من یا Linus Torvalds (خالق هسته لینوکس) از پس تهیه آن بر بیایند، و ما دسته ای دیگر از طرفداران کمودور64 بودیم که حسرت داشتنش فقط نصیب ما شده بود (: (مصاحبه لینوس). من برای رسیدن به آرزوی خود تا اوایل دهه 90 صبرکردم، زمانی که قیمت دیسک درایو 1/4و5 اینچی خارجی آن(کمودور 1541) از خود دستگاه بیشتر بود! و با وجود تقاضا، تولید C64 برای شرکت کمودور صرف نمی کرد(قیمت دستگاه چیزی حدود 50 پوند)

کمودور128 آخرین مدل کامپیوتر 8-بیتی تولید شده از طرف شرکت کمودور، به نوعی گسترش یافته C64 بود که با داشتن دو سی.پی.یو MOS 8502 و Zilog Z80A و سه مد کاری C64 و C128 و CP/M با سلف خود، کمودور64، نزدیک به %100 سازگاری داشت. C128 میتوانست سیستم عامل CP/M را از طریق دیسکت بوت کند برخلاف C64 که سیستم عامل اش داخل ROM بود.
کمودور 65 یا C64DX یک پیش نمونه از طرف شرکت کمودور بود. نسخه بهبود یافته C64، که در حین سازگاری کامل با پیشینیان خود دارای خصیصه های پیشرفته ای هم بود که در کامپیوترهای آمیگا دیده می شد. تعداد انگشت شماری از این کامپیوتر تولید شده.

اجزای سخت افزاری و نرم افزاری تشکیل دهنده C64

MOS Technology 6510 یک ریزپردازنده 8 بیتی که توسط شرکت MOS Technology, Inc طراحی شده بود و یک شکل کمی اصلاح شده از ریزپردازنده بسیار موفق 6502 می باشد. اضافه کردن یک پورت ورودی/خروجی 8 بیتی همه منظوره(در رایج ترین نسخه 6510 تنها 6 پورت ورودی/خروجی در دسترس است) یک تغییر اساسی نسبت به 6502 بود. به علاوه آدرس باس می توانست منطق سه حالته ایجاد کند.
وظیفه این ریزتراشه (که دو نسخه PAL و NTSC آن ساخته شده بود)، تولید پیام های ویدئویی Y/C و پیام های تازه سازی حافظه با دسترسی تصادفی پویا(DRAM) است.
چیپ 6581/8580 که در C64 تعبیه شده، تولید کننده قابل برنامه ریزی صدا است. یکی از اولین چیپ های صدا است که پیش از انقلاب صدای دیجیتال در یک کامپیوترهای خانگی گنجانده شده بود.

مدار مجتمعی که بوسیله MOS Technology ساخته شده بود برای پردازشگرهای خانواده  6502 به عنوان کنترلر درگاه ورودی/خروجی، قابلیت های ورودی/خروجی موازی و سریال را فراهم میکرد. همچنین دارای دو تایمر قابل برنامه ریزی و یک ساعت است،(که زمان و روز را نشان می دهد). در داخل کمودور64، دو عدد از این آی سی وجود دارد.
  • حافظه: 64KB RAM+20KB ROM
16KB از فضای حافظه RAM می تواند مورد استفاده چیپ گرافیک VIC-II قرار گیرد، این حافظه برای ذخیره محتوای صفحه نمایش، کاراکترها و اسپرایت ها قرار می گیرد.
سیستم عامل کمودور64،KERNAL به همراه مفسر بیسیک نسخه 2.0 در داخل ROM جای گرفته است.

  • BASIC
 درست مثل بیشتر کامپیوترهای خانگی اوایل دهه 80، زبان برنامه نویسی بیسک ضمیمه کمودور64 بود و در ROM قرار داشت. سیستم عامل به شکل امروزی نبود. KERNAL با استفاده از دستورات بیسیک در دسترس بود. دیسک درایو کمودور 64  مانند آتاری 800 خودش دارای پردازشگر مستقلی بود، این بدین معنی است که هیچ فضایی از حافظه کمودور64 برای اجرای سیستم عامل دیسک (DOS) اشغال نشده است.
بدیل اینکه شرکت کمودور تصور نمی کرد خیلی ها دیسک درایو بخرند(همراه کمودور64 یک دستگاه اختصاصی نوار مغناطیسی ذخیره داده به نام Commodore 1530 Datasette وجود داشت)، به جای استفاده از بیسیک خیلی پیشرفته نسخه 4.0 که در کامپیوترهای خانواده PET وجود داشت و برای عملیات دیسک بهینه شده بود، از بیسیک نسخه 2.0 استفاده کرد. در نتیجه آن روزها شما برای مدیریت دیسک باید از روشهای تقریبا دشواری استفاده می کردید.



بیسیک نسخه 2.0 محدود شده بود و دستورات ویژه دستکاری صدا و تصویر را در بر نداشت به جای آن کاربران را ملزم می کرد از دستورات PEEK & POKE برای دسترسی مستقیم به ثبات های تراشه استفاده کنند(معمولا برنامه نویسان آدرس این ثبات ها را به خاطر می سپردند تا نیاز به مراجعه همیشگی به کتابچه راهنما نداشته باشند). شرکت کمودور دو ضمیمه مختلف در قالب کارتریج‬‎ تولید کرد که دستورات توسعه یافته(شامل صدا و تصویر) را به بیسیک نسخه 2.0 می افزود:
جالب است بدانید که Simons' BASIC توسط یک پسر 16 ساله بریتانیایی به نام David Simons نوشته شده. او اولین کامپیوترش را سه سال قبل تر(13 سالگی) از پدر هدیه گرفته بود.Simons' BASIC، صدو چهارده دستور مفید را به بیسیک نسخه 2.0 اضافه می کند. نویسنده برنامه، به درخواست کاربران انجمن lemon64، اطلاعات جالب و دست اولی را در مورد ساخت و فروش آن کاتریج پس از سالها ، بیان میکند.
  • Commodore DOS

  •  ابزارهای جانبی

رایج ترین کاتریج های که از آنها به عنوان ابزار توسعه و سرگرمی استفاده می شده، اینها هستند :
 Datel "Action Replay", Evesham Micros "Freeze Frame MK III B", Trilogic "Expert", "The Final Cartridge III", and Super Snapshot


تمامی این کارتریج ها دارای امکانات زیر هستند:
  1. RESET:  بدلیل اینکه کمودور 64 فاقد دکه ریست بود، با استفاده از این دکمه که روی کارتریج قرار داشت می توانستید کمودور64 خود را ریست کنید.
  2. Freezer: کارکرد این دکمه که روی کاتریج قرار داشت، این بود که شما با استفاده از آن می توانستید برنامه های در حال اجرا را متوقف کنید و محتویات حافظه را در دیسکت یا نوار ذخیره کنید یا اینکه محتوای صفحه نمایش را به چاپگر بفرستید و سپس .
  3. Monitor Program(برنامه ناظر): این ویژگی نرم افزاری به ما این اجازه را می داد که بتوانیم کد اسمبلی را مستقیما در مکان دلخواه مان در حافظه قرار دهیم و قسمتی از حافظه را به دیسکت/نوار انتقال دهیم یا از آن بار کنیم و یا محتویات  ثبات ها و حافظه را دستکاری کنیم. این مورد آخری امکان تقلب در بازی ها را به ما می داد، بدین شکل که، فرضا با دانستن آدرسی از حافظه که تعداد جان های ما در آن قرار داشت می توانستیم آن را به حداکثر برسانبم و یا از جانهای دشمنانمان کم کنیم! یا بازی را به مرحله دلخواه مان ببریم.. دهه 60 و اوایل دهه 70 مجلات کامپیوتری در ایران پر بود از این آدرس ها و مقادیری که باید در آن ریخته می شدند (به آن کد نسوز هم می گفتند).
  4. Fast loader: سرعت بار کردن و ذخیره را از/به دیسک و نوار شتاب می بخشند. استفاده از این امکان (که بر پایه نرم افزار است)، سرعت بار کردن را بین 5 تا 15 برابر بیشتر می کند.
     
  • زبانهای برنامه نویسی
 غیر از بیسیک زبانهای دیگری برای کمودور64 موجود است از جمله: Pascal و C و Logo و Forth و Fortran(لیست کلی زبانهای قابل استفاده برای کمودور). نسخه کامپایلری از زبان بیسیک هم تولید شده بود، مانند: Petspeed 2 از شرکت کمودور و Turbo Lightning از Ocean Software. در حالیکه نسل اول برنامه های نوشته شده برای کمودور 64 ممکن است از زبانهای بالا و یا حتی بیسیک استاندارد استفاده کرده باشند، اما از سال 1983 به بعد، غالب برنامه های حرفه ای تولید شده برای کمودور 64 به زبان اسمبلی نوشته شده اند( یا روی یک کامپیوتر بزرگتر با استفاده از یک Cross_compiler نوشته و تولید شده اند و یا مستقیما روی خود کمودور با استفاده از ابزارهای machine code monitor و assembler). به حداکثر رساندن سرعت اجرای برنامه و به حداقل رساندن استفاده از حافظه، دو دلیل عمده بکارگیری زبان اسمبلی در نوشتن برنامه ها است.
نکته: پیشنهاد می کنم به جای نوشتن مستقیم برنامه روی کمودور64، از یک همگردان دوگانه(Cross_compiler) که روی کامپیوتر شخصی تان اجرا می شود، استفاده کنید، با ذکر یک مثال، دلیلش را توضیح می دهم:  
زبان C یک زبان همه منظوره دستوری و ساخت یافته است که میتوان مفاهیم و ساختارهایش را به طور کارآمدی به دستورات ماشین تبدبل کرد. بنابراین برای نوشتن همه نوع برنامه از جمله سیستم عامل که سابقا با زبان ماشین نوشته می شده، قابل استفاده است. کامپایلر آن هم  برای انواع سیستم ها موجود است، از سامانه نهفته(embedded system) گرفته  تا ابررایانه. برای کمودور 64؛ چهار کامپایلر وجود دارد: C Power و Better Working-Power C و Small C Compiler و Super C. همه این کامپایلرها زیرمجموعه محدودی از نسخه K&C زبان C هستند نه نسخه استاندار آن(ANSI C). به همین دلیل برنامه های نوشته شده روی دیگر کامپایلرها، قابلیت انتقال به اینها را ندارند. از طرفی ویرایشگر این کامپایلرها نسبت به نمونه های مشابه امروزی شان بسیار ابتدایی به نظر می رسند و در عمل نیز کارهای مهمی مثل یافتن خطا و غلطگیری و... در آنها مشکل است (به جای اینها می توانید از کامپایلر مدرن CC65  روی کامپیوتر شخصی تان استفاده کنید). از طرفی ساخت یک دمو یا بازی به روزها و شاید ماهها وقت نیاز دارد و استفاده از سیستمی که سالها از عمرش می گذرد، آن هم برای برنامه نویسی اصلا توصیه نمی شود.
در صورتی که به کمودور64 دسترسی ندارید می توانید از برابرساز، VICE برای اجرای برنامه هایتان استفاده کنید. به صفحه رسمی برنامه VICE  در sourceforge.net مراجعه کنید و با توجه به نوع سیستم عامل و معماری پردازشگر دستگاه تان(32 بیت یا 64 بیت ویا ایتانیوم) یکی از لینک ها را انتخاب کرده و آن را دانلود کنید. فایل برنامه را از حالت فشرده خارج کرده و به یک پوشه مشخص انتقال دهید(بعدا به آدرس این پوشه نیاز داریم)
برنامه VICE کلیه کامپیوترهای 8-بیتی شرکت کمودور را که شامل C64 و C128 و VIC-20 وC64 Direct-to-TV و   Plus/4 و همه مدل های PET را (از جمله CBM-II)، تقلید می کند. البته از خصیصه های غیر استاندارد SuperPET 9000 چشم پوشی کرده است.
در این وبلاگ بیشتر به کمودور 64 و 128 می پردازم (چون تجربه کار و برنامه نویسی با این دو کامپیوتر را دارم). برای شبیه سازی کمودور 64 در ویندوز کافیست به پوشه ای که برنامه VICE را در آن ریخته ایم مراجعه کرده و فایل X64.exe را اجرا کنیم. به همین راحتی صاحب یک کمودور 64 می شویم (: .
برای  استفاده از دیسکت و نوار و کارتریج، باید رونوشت هایی (Image) که از این رسانه ها تهیه شده است را به برنامه متصل (Attach) کنیم.
نحوه استفاده از فایل های با پسوند D64 (رونوشت فلاپی دیسک 1541 کمودور) در برنامه VICE:
فایل C64assembly.d64، که رونوشتی از یک دیسکت کمودور 64 است، را دانلود کنید. داخل این دیسکت من دو Machine Code Monitor به نام های Supermon+64(نوشته Jim Butterfield) و MLM64 Plus قرار داده ام. برنامه VICE را اجرا کنید، از منوی فایل File، زیرمنوهای Attach disk Image=>Drive 8 را انتخاب کنید، به پنجره دیالوگی که ظاهر می شود، مسیر و نام فایلی را که دانلود کرده اید، بدهید و سپس دکمه Attach را بزنید.
در ویرایشگر بیسیک با دستور زیر می توانید، لیست فایلهای موجود در دیسکت را بدست آورید:
LOAD "$",8
LIST
 نکته: بعد از پایان هر خط در ویرایشگر بیسیک کلید Return (در امولاتور کلید Enter ) را بزنید
نکته فلاپی دیسک های کمودور 1541 می توانند حاوی حداکثر 144 فایل( در یک فضای مسطح و بدون زیر دایرکتوری)، باشند. دایرکتوری در track رزرو 18ام یعنی درست در شیار وسطی یک دیسکت 35 شیارۀ تک لبه، ذخیره می شود.
نکته: اگر از قبل برنامه ای به زبان بیسیک نوشته اید بهتر است با دستور SAVE "filename",8 آن را در دیسکت ذخیره کنید در غیر اینصورا برنامه بیسیک تان را از دست خواهید داد، چون سیستم عامل لیست فایل های موجود در دیسکت را درست جایی از حافظه که برنامه بیسک در آن وجود دارد، قرار می دهد. برای رفع این مشکل می توانید از دستورات ویژه ای که کاتریج های Epyx FastLoad و Action Replay و The Final Cartridge III ضمیمه بیسیک 2.0 می کنند، استفاده کنید. این دستورات  بدون اینکه برنامه بیسک موجود در حافظه را تخریب کنند، اجازه می دهند که directory دیسکت در حافظه نمایش بار شود (بیسیک نسخه 7.0 در کمودور 128 شامل دستورات DIRECTORY و CATALOG است که همین وظیفه را انجام می دهند).
پس از مشاهده دایرکتوری می توانیم، با دستور LOAD "filename",8,1 برنامه ای را در مکان مشخص در حافظه  بار می کنیم و با دستور RUN آن را اجرا می کنیم.
مثال:
LOAD "supermon+64",8,1
RUN
با وارد کردن این دستورات برنامه مانیتور supermon+64 اجرا خواهد شد. برای خروج از برنامه کلید X و سپس Return را می زنیم.

نکته: بایت اول و دوم یک فایل از نوع PRG، نشان دهنده یک آدرس 16 بیتی به شکل Little-endian است(بایت کم ارزش در ابتدا و بایت پرارزش در ادامه). این جفت بایت محل بار شدن برنامه در حافظه  را نشان می دهد. وقتی در ویرایشگر بیسیک با دستور SAVE برنامه مان را ذخیره می کنیم، مقدار بایت اول و دوم در فایل مورد اشاره، اعداد به ترتیب 01$ و 08$ می باشد. این دو بایت آدرس 0801$ یعنی محل بار شدن برنامه بیسیک در حافظه را نشان می دهند.
دستور LOAD "filename",8,0 یا LOAD "filename",8 برنامه را در مکان ابتدای حافظۀ بیسیک 0801$(2049) بار می کند اما دستور LOAD "filename",8,1 فایل را در آدرس مشخص شده(بایت اول و دوم فایل باینری) بار می کند. برنامه های زبان ماشین که توسط اسمبلر یا مانیتور تولید شده اند را باید با این دستور در حافظه بار کرد.
نکته: با وارد کردن دستور LOAD "*",8,1، سیستم عامل اولین فایل از نوع PRG (بیسیک یا زبان ماشین) را که در فلاپی دیسک پیدا کند، به حافظه انتقال می دهد.
نکته: در کمودور 64 وارد کردن دستور LOAD "$",8,1 موجب سرازیر شدن سیلی از آشغال به صفحه نمایش می شود به جای اینکه، دایرکتوری را به حافظه بیسیک بفرستد. این بدین خاطر است که دیسک درایو آدرس 0401$(1025) را برای بار کردن دایرکتوری در حافظه تعیین می کند که معادل شروع بیسیک در کامپیوترهای PET است اما در کمودور 64 مطابق با حافظه پیش فرض صفحه نمایش است(آدرس کاراکتر دوم بر روی خط اول صفحه نمایش).

  • Assembler: اسمبلر زبانی است که دستورات رمزماشین محلی CPU را در یک شکل "قابل خواندن توسط انسان"، ارائه می دهد. این زبان به اسمبلی یا اسمبلر معروف است، و برنامه کامپایلری که دستورات "قابل خواندن توسط انسان" را به یک فایل برنامۀ قابل اجرا ترجمه می کند، اسمبلر نامیده می شود. کامپایل کردن متن مبدأ(source code) به یک زبان ماشین قابل اجرا "اسمبلی" نامیده می شود. معکوس این رویه (تبدیل کد ماشین به یک کد کم و بیش قابل خواندن)  را "disassembly" می نامند.
معماری هر پردازشگری(به طور مثال x86وMIPSو6502و68000) مجموعه دستورات و نحو(syntax) مال خودش را دارد، بنابراین یک زبان اسمبلی متفاوت. بیشتر زبان های اسمبلی شباهت هایی را نشان می دهند اما هنوز هم تنها منحصر به یک معماری CPU خاص هستند. به همین دلیل مردم صحبت از "زبان اسمبلی 6502" یا "اسمبلر 68000" می کنند تا رفع ابهام کرده باشند. دستورات ماشین به وسیله اعدادی نمایندگی می شود که به شکل کد باینری در حافظه کامپیوتر ذخیره شده اند.
کدهای برنامه در زبان ماشین یک لیست از ساختارهای بیتی(صفر و یک) است که از دو قسمت کد دستورات(Opcodes) و عملوندها(operands) تشکیل شده.
در علم کامپیوتر Opcode به قسمتی از دستور زبان ماشین گفته می شود که عمل مورد اجرا توسط سی.پی.یو را مشخص می کند. معمولا دستورات زبان ماشین علاوه بر Opcode داده هایی را هم جهت پردازش مشخص می کنند که به آنها operands یا عملوند(ها) می گوییم.
Mnemonic: همانطوری که به نظر می رسد، به یاد آوردن ساختارهای بیتی برای همه دستورات کار بسیار مشکلی است. زبان اسمبلر، میانبرهایی به نام یادافزا(mnemonic) را که به یاد آوردن آن ها بسیار آسان است به کار می برد. یک اسمبلر(کامپایلر) این یادافزاها را به متناظرشان(Opcode و Data) ترجمه می کند.
برای مثال:
*=$033c                                                        
lda #$06                               ;بار کن عدد 6 را در ثبات انباره
sta $d020                             ;ذخیره کن محتوای ثبات انباره را در ثبات مربوط به رنگ حاشیه
...
داخل RAM کمودور 64 به این شکل ارائه داده می شود:
Address            Opcode+Operand(s)
033c                 A9 06                     ;"033c"=Memory Address, "A9"=Opcode, "06"=Operand
033e                 8D 20 D0               ;"033e"=Memory Address, "8D"=Opcode, "20","D0"=Operand
...
و به شکل کد باینری از آدرس 033c$
 1010100100000110100011010010000011010000

  • pseudo-opcode یا assembler directive: به دستوراتی گفته می شود که اسمبلر را در انجام عملیات(به غیر از اسمبل کردن) راهنمایی می کنند.
  • Cross Assembler به ما این امکان را می دهد که برنامه های اسمبلی را در محیط دلخواه خود بنویسیم و نتیجه را که برنامه ای به زبان ماشین است، به کمودور 64 یا امولاتور انتقال دهیم. به عقیده من ساخت برنامه در ادیتورهای ویندوز بسیار راحت تر از ویرایشگرهای کمودور 64 است.
کراس اسمبلرهای تحت ویندوز فراوانی برای کمودور 64 وجود دارند مانند: DASM و ACME و CCC65 Assembler و... .اما رابط کاربری بیشتر آنها مبتنی بر خط فرمان است نه گرافیک. C64Studio یک محیط یکپارچۀ ساخت و تولید بازی برای کمودور و آتاری است که شامل ابزارهای،AssemblerوDisAssemblerوDebugو ویراشگرهای کاراکتر، اسپرایت و نقشه می شود.
  • نصب و راه اندازی C64Studio
 برنامه C64Studio را ازسایت سازنده اش دانلود کرده و سپس آن را از حالت فشرده خارج کنید. برای اجرای برنامه نیاز به داشتن آخرین نسخه چارچوب دات نت(NET Framework.) دارید، که می توانید آنرا از سایت مایکروسافت دانلود کنید.
به پوشه برنامه رفته و فایل C64Studio.exe را اجرا کنید، قبل از نوشتن برنامه اسمبلی استفاده باید تنظیمی در برنامه انجام دهیم.
منوی File و سپس زیرمنوی Setup Wizard را کلیک کنید. با کیک روی دکمه (...) پنجرۀ دیگری باز می شود که در آن مسیر امولاتور VICE (برای کمودور 64 فایل x64.exe ) را به برنامه می دهیم. بعد از انتخاب فایل و زدن کلید Open دوباره به پنجره قبل باز می گردیم، در آخر دکمه OK را می زنیم.

حال آماده ایم که اولین برنامه مان را به زبان اسمبلی بنویسیم، منوهای File=>New=>Solution را انتخاب کنید. برای راهکارتان یک نام و یک پوشه برای ذخیره شدن برگزینید. از منوی Solution، زیرمنوی Save را انتخاب کنید. از منوی File، زیرمنوهای New=>Project را انتخاب کنید. یک نام  یک پوشه برای ذخیره پروژه تان برگزینید(هر راهکاری می تواند شامل چندین پروژه مجزا باشد). از منوی Project زیرمنوی Save را بزنید. حالا به پروژه مان یک فایل اسمبلی اضافه می کنیم، منوهای File=>New=>ASM File را به ترتیب انتخاب کنید، از جعبه پیام ظاهر شده دکمه Yes را انتخاب کنید تا فایل اسمبلی به پروژه مان اضافه شود. سپس در پنجره ظاهر شده یک نام و مسیر برای ذخیره فایل اسمبلی تان برگزینید و در پایان دکمه Open را بزنید. از منوی Project زیرمنوی Save را بزنید.
به عنوان شروع بیایید با هم نگاهی بیاندازیم به یک برنامه ساده که هدفش تغییر دادن رنگ زمینۀ صفحه نمایش و حاشیه است.

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

پنجره داخلی را Screen و آن بیرونی را حاشیه یا Border می گویند. کاربر به جز عوض کردن رنگ زمینه یا Background قدرت دستکاری دیگری را در قسمت Border ندارد. تنها با استفاده از تکنیک وقفه Raster می توانیم روی حاشیه اعمالی را انجام دهیم.کمودور 64 از چیپ گرافیک VIC-II برای تولید سیگنال های تصویری بهره می برد. این چیپ دارای آدرس باس 14 بیتی است که می تواند یکی از چهار قطعۀ 16 کیلو بایتی فضای حافظه کمودور 64 را برای داده های ویدئویی مورد استفاده قرار دهد. همچنین قدرت تفکیک تصویر حداکثر 200*320 پیکسل(200*160 در حالت چند رنگ) را داراست. از یک پالت رنگ 16 تایی ثابت استفاده می کند. داری 47 ثبات خواندنی/نوشتی است که با دستورات بیسیک یا ماشین به سهولت می توان به آنها دسترسی داشت. در پست های آتی جزئیات مفصلی در مورد چیپ VIC-II و نحوه استفاده از آن خواهم گفت.

لیست برنامه:
;change border & screen color
!to "main.prg",cbm
*=$033c
lda #$03
sta $d020; border color=3
lda #$02
sta $d021; screen color=2
rts
شرح برنامه:
 ;change border & screen color
در این اسمبلر توضیحات با پیشوند ; بیان می گردند. در برخی اسمبرها استفاده از علامات // و /* */ برای دادن توضیح مجاز است.
!to "main.prg",cbm
to! یک راهنمای اسمبلر است. به کمک این دستور می توانیم نام فایل خروجی و نوع آن را تعیین کنیم. در این مثال چون نوع فایل خروجی را CBM تعیین کرده ایم، یک آدرس دو بایتی low endian، که مکان بار شدن برنامه در حافظه را نشان می دهد، به ابتدای فایل ضمیمه خواهد شد.
*=$033c
 با استفاده از راهنمای اسمبلر =*، مکان بار شدن برنامه در حافظه را مشخص می کنیم. در این مثال 033c$ (آدرس شروع بافر نوارخوان کمودور 64) را انتخاب کرده ایم.
هشدار: در صورت استفاده از نوارخوان، برای  ذخیره و بازیابی اطلاعات، محتویات بافر تغییر خواهد کرد و در نتیجه برنامه نابود خواهد شد. بافر نوارخوان در محدوده آدرس 033C$ تا 03FB$ قرار دارد(192 بایت). تنها برای آزمایش برنامه های کوچک ، می توانیم از این آدرس استفاده کنیم.
نکته: کامپایلرهای KickAssembler و DASM، به ترتیب PC. و org را به جای حکم =* بکار می برند.

عدد 3 در رجیستر انباره (A) بار شود.
نکته: علامت $ به معنای استفاده ازعدد در مبنای 16 است.
برای اعداد در واحد دو از علامت % استفاده می کنیم، مانند:
 lda #000011
و اگر عدد پیشوند نداشت، به معنای استفاده از مبنای طبیعی(10) است.
نکته: علامت هشتک(#) در متن دستور به معنای استفاده از آدرس دهی فوری است یعنی اینکه عدد داده شده مستقیما در اجرای دستور بکار می رود. در صورتیکه اگر از علامت هشتک استفاده نکنیم(lda $03) مد آدرس دهی دستور، صفحه صفر خواهد بود، که بدین شکل اجرا می گردد: محتوای خانه سوم حافظه (که در صفحه صفر قرار دارد)، در رجیستر A، بار شود. انواع روش های آدرسی دهی را در این لینک با مثال شرح داده ام.
sta $d020
محتوای رجیستر A (عدد 3) را در حافظه به آدرس 53280(d020 $) ذخیره می کند. این مکان حافظه متعلق به یکی از رجیسترهای تراشه VIC-II است که مقدار رنگ حاشیه در آن نگهداری می شود. رنگ حاشیه می تواند یک عدد بین 0 تا 15 باشد.با اجرای این دستور حاشیه به رنگ یشمی در می آید.
lda #$02
عدد 3 در رجیستر انباره (A) بار شود.

sta $d021
محتوای رجیستر A (عدد 3) را در حافظه به آدرس 53281(d021 $) ذخیره می کند. این مکان حافظه متعلق به یکی از رجیسترهای تراشه VIC-II است که مقدار رنگ زمینه صفحه نمایش(پنجره وسطی) در آن نگه داشته می شود. رنگ زمینه صفحه نمایش می تواند یک عدد بین 0 تا 15 باشد.با اجرای این دستورصفحه نمایش به رنگ قرمز در می آید.

rts

این دستور به معنای بازگشت از زیرروال(Subroutine) است. زیر روال ها با دستور jsr فراخوانی می شوند. زمانی که واحد کنترل پردازشگر حین واکشی(Fetch) دستورات از حافظه به دستور jsr رسید، اول به رجیستر شمارنده برنامه(Program Counter) دو واحد اضافه می کند و نتیجه(آدرس دستور بعد از jsr منهای 1) را به داخل stack، وارد می کند(push)(اول بایت پر ارزش، بعد بایت کم ارزش). سپس کنترل برنامه به زیر روال منتقل می شود. پس از اینکه زیرروال کار خود را انجام داد در پایان از دستور rts برای بازگشت به برنامه اصلی استفاده می کنیم. وقتی که پردازشگر به این دستور رسید یک آدرس دو بایتی را از بالای پشته بیرون می کشد(pull)(اول بایت کم ارزش)، بعد یک واحد به این آدرس اضافه می کند. درحقیقت کنترل برنامه به آدرس دستور بعد از jsr(فراخواننده زیرروال) منتقل می شود. غیر از زیرروال هایی که خودمان می نویسیم، همچنین می توانیم از زیرروال های KERNAL(سیستم عامل کمودور 64 در داخل ROM)، که در مواردی بسیار مفید هستند استفاده کنیم.
Program Counter: ثباتی 16 بیتی در پردازشگر است که آدرس حافظه دستور فعلی در حال اجرا را در خود دارد. تعدادی دستور چه به طور مستقیم یا غیر مستقیم شمارنده برنامه را دستکاری می کنند. انشعاب(branching)، پرش(jumping) و کارکرد وقفه(interrupt) با تغییر شمارنده برنامه در CPU ممکن می شود.

پس از وارد کردن برنامه در ویرایشگر C64Studio از منوی File گزینه Save را انتخاب کنید، سپس برای اجرای برنامه، دکمه Build & Run را که روی میله ابزار است، کلیک کنید. اگر همۀ کارها را به درستی انجام داده باشید اسمبلر بعد از کامپایل کردن برنامه و تولید فایل اجرایی(PRG) آن را تحویل امولاتور VICE می دهد. در صورتی که اسمبلر در هنگام کامپایل کردن برنامه با خطایی مواجه شود، در پنجره Output، تب Compiler Messages نوع خطا و مکان(Line) آن را به اطلاع ما خواهد رساند.

امولاتور VICE به طور اتوماتیک دو دستور بیسیک LOAD و RUN را اجرا می کند. همانطوری که پیش تر گفتم دستور LOAD از سیستم عامل می خواهد که برنامه بیسیک یا ماشین مشخص شده را، در حافظه RAM به آدرسی که به ابتدای فایل اصلی ضمیمه شده، بار کند.(با یک HEX Editor می توانید این آدرس دو بایتی(لیتل اندیان) را مشاهده کنید). دستور RUN فقط در مورد برنامه هایی که به زبان بیسیک نوشته شده اند کاربرد دارد و در مورد برنامه های زبان ماشین باید از دستور SYS استفاده کنیم.
در محیط بیسیک به کمک  دستور SYS به سادگی می توان برنامه زبان ماشین را که در جای مشخصی از حافظه قرار دارد اجرا کرد، برای بازگشت به محیط بیسیک آخرین خط برنامه باید دستور RTS باشد. آدرس شروع این برنامه در حافظه، 033c$ یا 828 است، پس با وارد کردن دستور SYS 828 می توانیم برنامه را اجرا کنیم.
نکته: دستور SYS، قبل از فراخوانی برنامه(با آدرس مشخص شده)، ثبات انباره(A)، ثبات های اندیس X و Y و ثبات وضعیت(SR) را با مقادیری که در آدرس 780–783/$030C–030F وجود دارد، پر می کند، پس از پایان برنامه و تحویل کنترل به بیسیک، دستور SYS فورا محتویات ثبات های گفته شده را در آدرس 780–783 قرار می دهد، که این مقادیر می تواند در آینده مورد استفاده قرار گیرد.
نکته:
در بیسیک با توابع PEEK و POKE، می توانید محتویات هر آدرسی از حافظه را (در محدوده 0 تا 65535) به ترتیب مشاهده و تغییر دهید.
مثال:
POKE 53280,0
این دستور رنگ حاشیه تصویر را به مشکی تغییر می دهد.
POKE 53281, PEEK(53280)
با اجرای این دستور زمینه صفحه نمایش به رنگ حاشیه می شود.


  • Microprocessor Registers
در داخل هر چیپ 650X چندین مکان ذخیره وجود دارد که به آنها register یا ثبات می گوییم. با وجود اینکه ثبات ها اطلاعات را در خود نگهداری می کنند اما اینها را نمی توان به عنوان حافظه(memory) به حساب آورد، چون دارای آدرس نیستند. شش تا از این ثبات ها برای ما خیلی مهم هستند که به طور خلاصه به آن می پردازم:
PC: شمارنده برنامه(program counter) یک رجیستر 16 بیتی است که آدرس حافظه دستور فعلی در حال اجرا را در خود دارد. همان وقت که دستور و عملوند از حافظه واکشی می شود، به مقدار شمارنده برنامه هم افزوده می شود تا نشان دهنده دستور بعدی باشد. تعدادی دستور چه به طور مستقیم یا غیر مستقیم شمارنده برنامه را دستکاری می کنند. انشعاب(branching)، پرش(jumping) و کارکرد وقفه(interrupt) با تغییر شمارنده برنامه در CPU ممکن می شود.
A: انباره(accumulator) یک ثبات 8 بیتی است که اساسا برای عملیات حسابی و منطقی به خدمت گرفته می شود.
X: اندیس(index) یک ثبات 8 بیتی است که عمدتا به عنوان اندیس در بعضی مدهای آدرسی دهی بکار می رود.
Y: اندیس(index) یک ثبات 8 بیتی است که عمدتا به عنوان اندیس در بعضی مدهای آدرسی دهی بکار می رود. همچنین در محاسبات ممیز-شناور به همراه ثبات A می تواند نشان دهنده یک آدرس در حافظه (A/Y) یا یک عدد صحیح علامت دار 16 بیتی(A/Y) باشد.
نکته: از رجیسترهای A و X و Y، می توان برای نگهداری داده استفاده کرد.
SR: ثبات وضعیت پردازشگر(Processor Status Register) یک رجیستر 8 بیتی است که حالت پردازشگر مرکزی را در نتیجۀ عملیات حسابی و منطقی و دستورات ضبط می کند. هدف این رجیستر نگهداری اطلاعات درباره تازه ترین عملیات محاسبه و منطق(ALU) است که انجام گرفته، همچنین کنترل کردن حالت فعال و غیرفعال وقفه ها و تنظیم کردن شیوه عملکرد پردازشگر از وظایف دیگر این ثبات است. حالت پردازشگر مرکزی در هفت پرچم(flag) پردازشگر و کنترل ذخیره می گردد(همگی در یک بایت). هر پرچم مطابق با یک بیت تکی از ثبات حالت پردازشگر است که به طور صریح یا ضمنی قابل خواندن/نوشتن هستند. پرچم ها دو حالت نگاشته(set) و پاک شده(cleared) دارند که در موقع نوشتن باید به ترتیب یک (true) و صفر(false) در بیت ها قرار دهیم. پرچم های N,V,Z,C توسط دستورات انشعاب(branch) قابل خواندن و آزمایش هستند.
7   6   5   4   3   2   1   0    <=BIT
N  V  -   B   D   I   Z   C   <=FLAG
در نوشته های بعد در مورد پرچم ها و کاربردشان بیشتر صحبت خواهم کرد.
SP: اشاره گر پشته(Stack Pointer) یک ثبات داده هشت بیتی در پردازشگرهای 65XX است که به مکان در دسترس بعدی روی پشته اشاره می کند.
در کمودور 64، stack یا پشته یک قطعه ثابت 256 بایتی(یک page) از حافظه است که در آدرس (0100$ تا 01FF$)، رم قرار دارد. پشته یک ساختمان داده LIFO (آخرین ورودی، اولین خروجی) است که مستقیما توسط پردازشگر 6502/6510 برای ذخیره و بازیابی کلمات پردازشگر(بایت ها) بکار گرفته می شود. این ناحیه  از حافظه با رجیستر 8 بیتی SP(اشاره گر پشته) به طور همکار عمل می کنند. اشاره گر پشته همیشه به مکان در دسترس بعدی روی پشته اشاره می کند. مانند بیشتر کامپیوترهای امروزی در کمودور 64، پشته رو به پایین رشد می کند. این بدین معناست که اولین ورودی پشته در آدرس 01FF$ و آخرین ورودی در 0100$ قرار می گیرد. دو کار روی پشته کمودور 64 قابل انجام است، آنها وارد کردن(push) و بیرون کشیدن(pop یا pull) هستند. وقتی یک کلمه/بایت به داخل پشته وارد می شود(push) یعنی مقدارش در مکان حافظه به آدرس SP + $0100 ذخیره شده و از SP کاسته می شود. وقتی که یک مقدار از پشته بیرون کشیده می شود(pop) یعنی به SP افزوده شده و محتوای خانه حافظه به آدرس SP + $0100، خوانده یا بازیابی می شود.
کمودور 64 در چندین عمل و وضعیت، از پشته و اشاره گر پشته استفاده می کند. اصلی ترین استفاده از پشته برای ذخیره(push) "آدرس برگشت" است. زمان بازگشت از یک زیر روال یا رسیدگی کننده وقفه این آدرس مورد استفاده(pop) قرار می گیرد.
 به طور مثال زمانی که یک پیام وقفه دریافت می شود، پردازشگر دستورالعمل فعلی را به طور کامل اجرا می کند، سپس دو چیز را وارد(push) پشته می کند: اول، پردازشگر آدرس دستورالعمل بعدی را وارد پشته می کند(اول بایت پر ارزش بعد کم ارزش). دوم، پردازشگر محتوای ثبات وضعیت را در داخل پشته می ریزد. سرانجام، پردازشگر با توجه به نوع وقفه، یک پرش غیر مستقیم(indirect JMP) با استفاده از یکی از این سه بردار(vector) (که در 6 بایت انتهایی KERNAL ROM، ذخیره شده اند)،  انجام می دهد.
* بردارهای وقفه
$FFFA,$FFFB   <====NMI
$FFFC–$FFFD <===RESET
$FFFE–$FFFF  <===IRQ/BRK
رسیدگی کننده وقفه، پس از به پایان بردن کار، دستور RTI را اجرا می کند. RTI مقدار بالای پشته را برداشته(pop) و در داخل ثبات وضعیت می ریزد، سپس دو بایت بالایی پشته را برداشته(pop) و در داخل ثبات شمارنده برنامه می ریزد.(درحقیقت اجرای برنامه را به آدرسی که از پشته برداشته برمی گرداند).
زمانی که یک زیرروال توسط دستور JSR فراخوانی می شود، پردازشگر از مقدار آدرس دستور العمل بعدی یکی کم می کند و نتیجه را در پشته قرار می دهد(push)(اول بایت پرارزش بعد کم ارزش)، سپس مقدار ثبات وضعیت را به داخل پشته می ریزد(push)، سرانجام کنترل برنامه به زیر روال منتقل می شود. در پایان زیرروال، دستور RTS را قرار می دهیم. دستور RTS مقدار بالای پشته را برداشته(pop) و در داخل ثبات وضعیت می ریزد، سپس دو بایت بالایی پشته را برداشته(pop) و به مقدار آن یکی افزوده و نتیجه را در داخل ثبات شمارنده برنامه می ریزد. در حقیقت اجرای برنامه به آدرس دستور بعد از jsr(فراخواننده زیرروال) منتقل می شود.
دستور PHA مقدار ثبات انباره را وارد پشته می کند(push) و PLA مقدار بالای پشته را به داخل ثبات A می ریزد(pop). و به همین شکل دستور PHP، مقدار ثبات وضعیت را وارد پشته می کند(push) و PLA مقدار بالای پشته را به داخل ثبات وضعیت می ریزد(pop).
نکته: در پردازشگر 6502 دستوری برای وارد کردن مقدار ثابت های X و Y به پشته(push) و یا برداشتن مقدار بالای پشته(pop) و انتقال آن به ثبات های X و Y وجود ندارد. تنها رجیستر انباره(A) می توانید در عملیات push و pop شرکت کند. باید از دستورات انتقال(Transfer) بین ثباتی استفاده کنیم.
مثال: مقدار ثبات X را به داخل پشته منتقل کنید(push)
txa
pha
دستور اول مقدار ثبات X را به A منتقل می کند و دستور دوم مقدار ثبات A را به داخل پشته می ریزد(push).

تمرین: برنامه ای بنویسید که محتویات خانه حافظه های 0380$ و 0381$ را تعویض(Exchange) کند.

راه حل: در پردازشگر 6510 دستوری برای تعویض مقدار دو آدرس از حافظه، وجود ندارد؛ پس ما باید طرحی بریزیم که بتوان محتویات این دو مکان از حافظه را با هم تعویض کرد، در این راه می توانیم از ثبات ها کمک بگیریم. مقدار خانه حافظه 0380$ را در ثبات  X و دومی را در Y بار(LOAD) می کنیم. حال مقدار ثبات  X را در خانه حافظه به آدرس 0381$ و مقدار ثبات Y را در 0380$ ذخیره(STORE) می کنیم. لیست برنامه در زیر می آید:

;Exchange contents of two address
!to "xchg.prg",cbm
*=$033c
ldx $0380
ldy $0381
stx $0381
sty $0380
rts
نکته: می توانیم از ثبات A هم در عملیات تعویض استفاده کنیم.
برنامه را داخل کراس-اسمبلر نوشته و کامپایل کنید سپس فایل اجرایی را با استفاده از دکمه Build & Run روی میله ابزار، بسازید و داخل امولاتور بار کنید. قبل اجرای برنامه زبان ماشین بوسیله دستور SYS، بهتر است خانه حافظه های 380$ و 381$ داری مقدار باشند تا درستی برنامه را به راحتی مشاهده کنید. به وسیله دستور بیسیک POKE یک مقدار بین 0 تا 255 در این آدرس ها قرار دهید. توجه داشته باشید که پارامترهای دستور POKE، بر مبنای 10 هستند نه شانزده.
POKE 896,11: REM 896=$380
POKE 897,66:REM 897=$381
 نکته1: برای جدا کردن دستورات در بیسک از کاراکتر :(Colon) استفاده میکنیم.
 نکته2: عباراتی که بعد از دستور REM قرار میگرند بوسیله مفسر بیسیک نادیده گرفته می شوند و به جهت یادآوری و توضیح برای برنامه نویس کاربرد دارد.
حال با دستور SYS 828، برنامه زبان ماشین را فراخوانی و اجرا کنید. پس از پایان برنامه و بازگشت به محیط بیسک با نگاه(PEEK) به آدرس های  896 و897 می توانید مشاهده کنید که محتویات این دو خانه حافظه تعویض شده است.
PRINT PEEK(896)
66





























(1)
(2)
(3)
(4)