25 نوامبر 2020
توالی گریز و خاطرات ساختگی رباتها
دقیقا ۱۴ سال پیش، زمانی که در تبریز و در شرکتی به عنوان برنامهنویس مشغول به کار بودم، برای نخستین بار با «توالی گریز» یا Escape Sequence آشنا شدم و در یک سیستم نرمافزاری-سختافزاری از آن استفاده کردم. اگر سریال «وست ورلد» را دیده باشید، با نمونهای از توالی گریز آشنایید.
در سریال «وست ورلد»، روباتها برخی فرمانهای صوتی را دریافت و اجرا میکنند. مثل Analysis یا Bring Yourself Back Online. این فرمانهای صوتی، روبات را در وضعیتی متفاوت از حالت عادی قرار میدهد که میتوان از آنها اطلاعات دقیق و جزئیتری را دریافت کرد و یا عملکرد متفاوتی دید.
این نوع فرمانها در اصطلاح فنی با عنوان Escape Sequence یا توالی گریز شناخته میشوند. یعنی عبارات و دستورهایی که سیستم را از حالت عادی خارج و به یک حالت جدید میبرند. مشابه این را، در زبانهای برنامهنویسی همخانواده با C داریم که با کاراکتر \ (بک اسلش) این کار انجام میشود. برای آشنایی بیشتر با مفهوم توالی گریز میتوانید به مدخل این موضوع در ویکیپدیا [+] مراجعه نمایید.
در آن زمان (سال ۸۳) مشغول توسعه یک سیستم نرمافزاری بودم که با سختافزار هم مرتبط بود. نوعی چاپگر سوزنی هم در این پروژه استفاده میشد. آن موقع، ما از پرینترهای اپسون LQ-300 استفاده میکردیم که تصویرش در ادامه آمده است.
قرار بود با حروف فارسی، گزارشهایی را توسط این پرینترها چاپ کنیم. درایوری هم که قبلا توسط یک شرکت دیگر نوشته شده بود، اشکالات زیادی داشت. به همین دلیل، مجبور شدم که دفترچه فنی و کدهای عملیاتی پرینتر را بخوانم و خودم برای این سیستم، فارسیساز بنویسم.
جالب بود که برای دستور دادن به این پرینتر، باید در ابتدا یک کاراکتر Escape (با کد ۲۷) ارسال میشد. پس از آن، پرینتر منتظر شنیدن فرمانهای بعدی بود و کاری با چاپ نداشت. تقریبا به همه جای پرینتر دسترسی وجود داشت و میتوانستم هر کاری انجام دهم. جالب بود.
این مشابه همان حالتی است که برای روباتهای وست ورلد ایجاد میشود. برای فارسیسازی پرینتر سوزنی، تک تک کاراکترهای فارسی را (مثلا همه حالات ﻉ، ﻊ، ﻋ و ﻌ را برای حرف عین) طراحی کردم و با کدهای اسکیپ، در حافظه موقت پرینتر گذاشتم. حتی جدولها نیز با همین روش طراحی و چاپ میشدند.
متن ورودی را هم، کامپیوتر به یک زبان میانی ترجمه میکرد و خودش متوجه میشد که یک حرف عین، در کدام یک از ۴ حالت باید برای پرینتر ارسال شود. نتیجه شد یک فایل چند کیلوبایتی که در لحظه شروع چاپ، به پرینتر ارسال میشد و آن را در وضعیت فارسی قرار میداد.
تجربه جالبی بود. به خصوص زمانی که فیلم «وست ورلد» را برای اولین بار دیدم، یاد حرف شنوی و مظلومیت آن پرینترهای سوزنی افتادم. بعضی وقتها یاد صداهای عجیب و غریب پرینترها میافتم، که گویا شبیه به ناله و «دست از سرم بردار» بودند. به خصوص که خاطرات ساختگی در ذهنشان مینوشتم.