مجموعه دستورهای هایس

مجموعه دستورهای هایس یک زبان فرمان خاص است که ابتداً برای مودم باد (یکا) ۳۰۰، توسط محصولات ریزکامپیوتری هایِس و در سال ۱۹۸۱ توسعه یافته‌است. این مجموعه دستور شامل یک سری رشته متن کوتاه است که در ترکیب با یکدیگر، دستورهای کاملی را برای انجام عملیاتی از قبیل شماره گیری، قطع تلفن و تغییر مشخصات اتصال است. بسیاری از مودم‌های امروزی از این مجموعه دستوری هایِس پیروی می‌کنند.

تاریخچه

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

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

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

راه‌حل هایِس 
شرکت ارتباطات هایِس در سال ۱۹۸۱ مودم هوشمند خود را با بازتعریف کاربرد سوزن‌های موجود در استاندارد RS-۲۳۲ و بدون تغییر در تعداد و بدون تغییر در این استاندارد راهی بازار کرد. این مودم برخلاف مودم‌های پیشین در دو حالت کار می‌کرد:
 حالت داده: در این حالت مودم داده‌های را به مودم دوردست می‌فرستد. مودم در این حالت هر چیزی را که از رایانه به آن برسد به صورت داده تلقی کرده و آن را از طریق خط تلفن منتقل می‌کند.
 حالت دستور: در این حالت مودم داده‌های رسیده از رایانه را دستور تلقی کرده و در درون مودم محلی آن را اجرا می‌کند.
به منظور تغییر کاربری مودم از حالت داده به حالت دستوری، باید یک رشته "توالی فرار" که شامل سه علامت مثبت است ("+++") را به مودم ارسال کنیم که همراه یک مکس ۱۰۰۰ میلی ثانیه‌ای است (به منظور در نظر گرفتن زمان تغییر حالت مودم از یک حالت به حالت دیگر). برای تغییر حالت معکوس، یعنی تغییر از حالت دستوری به داده، از دستور برخط (O) استفاده می‌شود. در عمل، پس از اجرای بسیاری از دستورها مودم به‌طور خودکار به حالت برخط می‌رود.

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

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

با پیشرفت مودم‌ها به مودم‌های ۱۲۰۰ baud و ۲۴۰۰ baud، نیاز به دستورهای جدید احساس می‌شد. برخی از پسوند اتصالِ "&" استفاده می‌کردند که نشان دهنده یک دستور جدید برای مودم است. شرکت هایِس خود را متعهد به ساخت مودم‌های ۲۴۰۰ baud کرد.
یک سال بعد از این کار
TIA/EIA
مجموعه دستورهای ۲۴۰۰-baud را به شکل استاندارد درآورد و تحت عنوان ادوات و سیستم‌های انتقال داده – کنترل و شماره‌گیری خودکار غیرهمزمان سریال، TIA/EIA-۶۰۲ منتشر کرد.

پس از آن شرکت ارتباطات هایِس به دنبال افزایش سرعت و فشرده سازی رفت، در حالی که سه شرکت دبگر در آن زمان (یعنی
Microcom
,
U.S. Robotics
، و
Telebit) در همین‌جا توافق کرده بودند هرکدام از این شرکت‌ها به جای پیروی از شرکت هایِس (که پدر این تکنیک بود)، به توسعه مجموعه دستورهای خود پرداختند. در اوایل دهه ۹۰، چهار مجموعه دستور مودم به‌طور جامع مورد استفاده قرار می‌گرفت. با ارائه مودم‌های ۴/۱۴ و ۸/۲۸ کلیو بیت بر ثانیه در اوایل دهه ۹۰، مسائل ساده‌تر شدند. کم‌کم مجموعه دستورهای تولید شده توسط هایِس که با استفاده از واژه & گسترش یافته بودند محبوبیت یافتند و جهانی شدند. تنها مجموعه دستورهای یک شرکت دیگر محبوب ماند و آن هم شرکت US Robotics بود. دلیل این امر هم گستردگی محصولات این شرکت بود.

توصیفات 
در فهرست زیر، قسمتی از مجموعه دستورهای هایِس آورده شده‌است (این دستورها، دستور AT هم خوانده می‌شوند؛ از آن جهت که ابتداً برای انجام هر دستوری در مودم، باید مودم را آگاه
می‌ساختند)
 مجموعه دستورهای پایه – یک واژه بزرگ همراه با یک عدد. مثل M1.
 مجموعه دستورهای توسعه یافته – یک واژه & و یک واژه بزرگ همراه با یک عدد. با این کار دستورهای پایه گسترده‌تر می‌شدند. مثلاً دستور &M۱ که با دستور M۱ متفاوت بود.
 مجموعه دستورهای اختصاصی – معمولاً با یک واژه برش-برعکس “\”و یا علامت درصد “%” شروع می‌شوند. این دستورها به طور گسترده توسط سازندگان مودم استفاده می‌شوند.
 دستورهای ثبات – مثل Sr=n که r شماره حافظه‌ای است که قرار است تغییر کند، و n مقداری است که باید بگیرد.

یک ثبات یک خانه فیزیکی در حافظه را نمایش می‌دهد. مودم‌ها حافظه کوچکی در خود دارند. این ثبات‌ها می‌توانند محتویات خاصی داشته باشند که شامل عدد و حروف باشد. این حافظه می‌تواند توسط نرم‌افزارهای ارتباط مورد استفاده قرار بگیرند. برای مثال دستور S7=۶۰ به رایانه داخلی می‌گوید که مقدار ثبات شماره ۷ را برابر با ۶۰ قرار بده. بسیاری از دستورها در این مجموعه دستورها با ترکیب حرف-عدد به نمایش در می‌آیند. استفاده از ۰ اختیاری است. برای مثال دستور L۰ همان دستور L است.

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

تعریف دستوری 
در این مجموعه دستوری از قواعد دستوری زیر استفاده می‌شود:
 <CR>. کاراکتر انتقال-برگشت، کاراکتر اتمام دهنده دستورها است. پس از ارسال این کد، مودم به بررسی کاراکترهای فرستاده شده تا پیش از این کاراکتر می‌پردازد. مقدار این کاراکتر در کد اسکی برابر با ۱۳ است که در ثبات S۳ ذخیره می‌شود. به جای این کاراکتر می‌توان مقدار دیگری را بین ۰ تا ۲۵۵ در ثبات مذکور قرار داد.
 <LF>. این کاراکتر تحت عنوان کاراکتر اتمام خط شناخته می‌شود. مقدار این کاراکتر در کد اسکی برابر با ۱۰ است که در ثبات S۴ ذخیره می‌شود. به جای این کاراکتر می‌توان مقدار دیگری را بین ۰ تا ۲۵۵ در ثبات مذکور قرار داد. اگر در حالت پرجانه باشیم (که با پارامتر V۱ مشخص می‌شود و هر اتفاقی که بیفتد کاملاً و مفصل گزارش می‌شود). آنگاه پس از هر کاراکتر <CR>، یک کاراکتر <LF> در خروجی مودم ظاهر خواهد شد. در غیر این صورت باید در حالت پاسخ عددی باشیم (که با پارامتر V۰ مشخص می‌شود) که پس از کاراکتر <CR>، چیزی ظاهر نمی‌شود.
 <…>.
 […]. زیر-پارامترهای اختیاری یک دستور در این علامت‌ها قرار داده می‌شوند. این کروشه‌ها در دستور ظاهر نمی‌شوند.

آماده‌سازی مودم 
یک رشته می‌تواند شامل چندین دستور هایِس باشد. این امر به منظور بهینه کردن عمل شماره‌گیری یا پاسخ دهی مودم آنجا م می‌گیرد. مثلاً دستور AT&F&D2&C1S0=۰X4 را در نظر بگیرید که رشته آماده‌سازی نام دارد.
قوانین V.۲۵۰ تمام DCEها را ملزم می‌کند که پس از "AT" حداقل ۴۰ واژه را به صورت دستورهای متصل به هم بپذیرند.

مثال 
در ادامه دو رایانه A و B را که با مودم به هم متصل هستند را در نظر گرفته‌ایم، که یک کاربر قصد دارد با یک نرم‌افزار شبیه‌ساز ترمینال آن دو را کنترل کند. اصولاً نرم‌افزار شبیه‌ساز ترمینال به کاربر این اجازه را می‌دهد که دستورهای هایِس را مستقیماً به مودم ارسال کند و پاسخ‌های آن را مشاهده کند. در این مثال کاربر رایانه A مودم را مجبور می‌کند که شماره رایانه B را بگیرد. دقت کنید که پس از هر ارسال یا دریافت، یک انتقال-برگشت برای تکمیل پیام ارسال می‌شود.

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

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

مجمعه دستورهای ابتدایی هایِس

GSM 
استاندارد ETSI GSM 07.۰7 (3GPP TS 27.007) برای کنترل و تنظیم گوشی یا مودم GSM دستورهای AT خاصی را تعریف کرده‌است.
در کنار این استاندارد که تنها برای گوشی یا مودم است، استاندارد دیگر با شماره ETSI GSM 07.۰5 (3GPP TS 27.005) وجود دارد که دستورهای لازم جهت مدیریت پیام کوتاه در شبکه GSM را تعریف می‌کند. مثال‌هایی از این دستورها در زیر آمده‌اند

مودم‌های GSM/3G معمولاً مجموعه دستورهای ETSI GSM 07.۰7 (3GPP TS 27.007) و دستورهای توسعه یافته پس از آن را نیز پشتیبانی می‌کنند. بسیاری از تولیدکنندگان مودم USB مثل Huawei, Sierra Wireless، و Option نیز دستورهایی را برای استفاده در حالت رادیویی (GSM/3G) توسعه داده‌اند.

منابع 

مودم‌ها