ام بیسیک

بندانگشتی|کامپیوتر قدیمی در حال اجرای ام بیسیک
**MBASIC** همان مایکروسافت بیسیک در واقع اجرای بیسیک برای CP/M سیستم عامل بیسیک است.MBASIC از نوادگان اصلی مترجم آلتیربیسیک که ازتولیدات اولیه ما یکروسافت بودند است. MBASIC یکی از دو ورژن‌های بیسیک همراه با کامپیوترosborne۱بود. نام بیسیک از نام فایل دیسک مترجم بیسیک مشتق شده‌است.

## محیط زیست
**MBASIC **ورژن ۵ نیاز به یک سیستم با حداقل kb۲۶حافظه RAM (دستیابی تصادفی به حافظه) و حداقل یک درایو دیسکت دارد.
بر خلاف نسخه‌های مایکروسافت بیسیک - ۸۰ که توسط سازندگان کامپیوتر خانگی که برای استفاده از ویژگی‌های سخت‌افزاری خاصی از کامپیوترسفارشی بودند، MBASIC فقط درCP/M خواستار سیستم عامل برای تمام ورودی و خروجی بود. فقط CP/M کنسول (روی صفحه نمایش و صفحه کلید)، چاپگر خط، و دستگاه‌های دیسک در دسترس بود.
MBASIC در فرم un customized هیچ تابع گرافیکی ندارد مثل رنگ، joysticks، موش‌ها، سریال‌های ارتباطی، شبکه، صدا، یا حتی در زمان واقعی تابع ساعت. MBASIC به‌طور کامل از ویژگی‌های سیستم عامل CP/M پشتیبانی نمی‌کند، به عنوان مثال، این کار را کاربر CP/M برای سازماندهی فایل‌ها بر روی دیسکت پشتیبانی نمی‌کند. از آنجا که CP/M به‌طور معمول برای سیستم‌های تک کاربره و به تنهایی بود هیچ گونه پیش‌بینی برای فایل‌ها یا قفل کردن رکورد، یا هر فرم از عملکرد چند تکلیفی ندارد. جدای از این محدودیت‌ها، MBASIC در آن زمان برای اجرای قدرتمند و مفید از بیسیک در نظر گرفته شده بود.

## ویژگی
**زبان سیستم**
**MBASIC **مترجم است. منبع متن برنامه که به صورت tokenized در حافظه ذخیره می‌شود، با کلمات کلیدی بیسیک با یک بایت تعویض می‌شود که این کار فضای حافظه را ذخیره می‌کند.
پیشوند هر خط بایک شماره خط به متن برنامه اضافه می‌شود؛ جملات اساسی نه پیشوند با یک شماره خط بلافاصله به عنوان دستورها اجرا شدند. برنامه‌ها می‌توانند بر روی صفحه نمایش برای ویرایش لیست شوند یا بر روی دیسک سخت فشرده شوند ویا در هردو فرمت باینری ومتن ساده اسکی قرار بگیرند. هرخط منبع بایک عدد شناخته می‌شود که می‌تواند به عنوان هدف رفتن یا انتقال مورد استفاده قرار گیرد. فقط خط دستورها ویرایش فراهم شده بود.[۱] این بود که اغلب مفید است برای ذخیره یک برنامه به عنوان متن ساده و ویرایش آن با یک ویرایشگر کامل برجسته.
متن برنامه‌ها، متغیرها، دیسک بافر سیستم عامل CP/M خود ۶۴ کیلوبایت از فضای آدرس پردازنده ۸۰۸۰ به اشتراک گذاشت. به‌طور معمول هنگامی که برای اولین بار درMBASIC حافظه کمتر از ۳۲ کیلوبایت در دسترس وجود دارد برای برنامه‌ها و داده‌ها، حتی در یک ماشین مجهز به ۶۴ کیلوبایت کامل ازRAM نیاز است.
توضیحات خطوط، پیشوند با کلمات کلیدی رم یا علامت می‌تواند در متن برنامه قرار داده شود اما در زمان فضای باارزش حافظه کاربران بیسیک رابه‌طور کامل از کد مستندسازی دلسرد کرد. برای اجازه دادن به برنامه‌های بزرگتر و پیچیده‌تر اجرا می‌شود، بعد از نسخه پشتیبانی از توابع MBASIC که اجازه دادن بخش‌هایی از متن برنامه خوانده تحت کنترل برنامه واجراشود هیچ پشتیبانی برای اعدام فرمان «پوسته»، ارائه نشده بود هر چند این قابلیت می‌توانست توسط یک برنامه‌نویس مشخص تکرارشود.
مزیت خاصی از MBASIC این است که متن کامل پیغام خطا برای ترکیب نحوی و خطاهای زمان اجرا فراهم شده‌است. MBASIC نیز یک تابع «ردیابی» دارد که شماره خط را نمایش می‌دهد که به عنوان خط آن‌ها اعدام شدند. در حالی که این فضابر روی صفحه نمایش همان را به عنوان خروجی برنامه نرمال نشان می‌دهد، آن برای چنین شرایطی برای تشخیص حلقه بی پایان مفیداست.

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

## متغیرهاو انواع داده
**MBASIC**از انواع دادهای زیر پشتیبانی می‌کند:
* داده کاراکتری ۸بیتی، در طول رشته از ۰–۲۵۵ کاراکتر؛
# بیت اعداد صحیح؛
# بیتی با ممیز شناور (دقت یگانه)، معادل رقم در مبنای شش، با توان دو رقمی؛
# بیتی با ممیز شناور (دقت)، معادل رقم در مبنای شانزده، با توان دو رقمی.
عملگرهای رشته‌ای شامل زیر رشته انتخاب، الحاق، مأموریت، و آزمایش برای برابری است.

آرایه از نوع فوق تا ابعاد ۷ اجازه دارد، اما هیچ تابعی وجود ندارد که برای عمل روی آرایه (به عنوان مثال، مقدار دهی به آرایه) ایجاد شده باشد. بر خلاف برخی از پیاده‌سازی بیسیک آن زمان، MBASIC برای عملیات ماتریس، اعداد مختلط، یا دهدهی (BCD) نوع داده برای محاسبات مالی هیچ پشتیبانی ارائه نمی‌دهد. تمام عملیات ممیز شناور درعلوم نرم‌افزارانجام می‌شود و سیستمCP/Mسخت‌افزاری برای عملیات ممیز شناورنداشت.
توابع ساخته شده در ریاضیات (سینوس، کسینوس، تانژانت، ورود به سیستم طبیعی، نمایی، ریشه مربع) تنها نتایج با دقت یگانه را می‌دهند. نرم‌افزار شبه تصادفی ژنراتور شماره ارائه شده بود، این نرم‌افزاربا تکیه به کاربر دربدست آوردن دنباله‌ای از اعداد مفید برای بازی‌ها و برخی شبیه‌سازی‌ها بود. MBASIC این اجازه را می‌دهد اما برای کلید واژه جملات انتساب نیاز ندارد.
ورژن‌های اولیه از کامپیوترهای شخصی بیسیک بدنام شد برای یک یا دوکاراکتر که نام‌های متغیربا معانی متغیر مشکل در برنامه‌های پیچیده برای فراخواندن ساخته بود. نسخه ۵ MBASIC شناسه‌های مجاز از متغیرهاتاطول ۴۰ کاراکترداد، که به برنامه‌نویس اجازه می‌دهد نام‌های قابل خواندن بگیرد.

## برنامه تحت کنترل
برنامه تحت کنترل در MBASIC توسط if…then…else کنترل شده بود… تست‌های شرطی از جمله while... پیمودن حلقه‌ها، و go to دستورالعمل GOSUB. هیچ جمله دیگری در دسترس نبود اگر چه یک go toچند شاخه به وجود می‌آورد، زیر برنامه‌ها پارامتری نداشتند و همه متغیرها globalبودند. mbasic ساختار اجباری برای برنامه نویسان به وجود نمی‌آورد و برای همین نوشتن کد اسپاگتی با آن آسان بود.

## PEEKs, POKEs و توابع کاربر
 **اصول اولیه** در کامپیوتر ۸بیتی بین ۷۰ تا ۸۰ ثانیه بدون بحث و اشاره به اهمیت توابع pokes وpeeks برای خواندن و نوشتن مستقیم در حافظه  کامل می‌شد. از آنجا که این سیستم‌ها به‌طور معمول حفاظت از حافظه ندارند این به برنامه‌نویس اجازه می‌دهد که به بخش‌هایی از سیستم عامل یا توابعی که در غیر اینصورت در دسترس نیستند دسترسی یابد. این همچنین فرصت‌های نامحدودی رابرای استفاده‌کنندگان برنامه برای قطع سیستم فراهم می‌کند.. به عنوان مثال یک برنامه‌نویس cp/M ممکن است از تابعpokeبرای تعویض دستگاه کنسول به پورت سریال استفاده کندوbasicاجازه این کار را بدهد اگر سیستم بایاس آن را پشتیبانی کند. برای ماشین‌های با زمان واقعی از دستورالعملpeeks ممکن است برای دسترسی به زمان استفاده شود. برای عملیات‌های پیچیده‌تر، MBASIC به کاربر اجازه تعریف تابع‌هایی را می‌دهدکه یک برنامه پایه را صدا بزنند، این هابه‌طور معمول در یک قسمت از قرار گرفته یا به وسیله POKEd ثابت رشته، به عنوان مجموعه‌ای از کدهای دستگاه قرار می‌گیرند.MBASIC همچنین سخت افزاردستورها داخلی و خارجی که به‌طور مستقیم در سخت‌افزار داخلی و خارجی۸۰۸۰ خوانده و نوشته می‌شوند را فراهم می‌کند. این ممکن است برای کنترل دستگاه‌های جانبی، هر چند درسیستمcp/M، وهمه دستورها وروردی خروجی که قبلاً برای استفاده سیستم بود مورد استفاده قرارگیرد. هر برنامه MBASIC که ساخته شدبرای استفادهpeek, pok وکدهای ماشین توابع کاربر، قابل حمل بین ماشین‌ها نبود.

## جانشینان MBASIC
**مایکروسافت **یک کامپایلر بیسیکcp/M (معروف به BASCOM) که با زبان منبع MBASICمشابه بود فروخت. برنامه تحت MBASIC, debugged می‌شد ومی‌توانست با BASCOMکامپایل شود. از آنجا که متن برنامه در حافظه بزرگ نبودوالمان‌های زمان اجرا از مترجم کوچکتر بودند بیشتر حافظه برای داده‌های کاربر در دسترس بودو سرعت اجرای برنامه ۸–۱۰ برابرافزایش یافته بود.
کلیه توابع CP/MMBASIC درکامپیوتر آی بی ام، اساس BASICA یا GWBASIC که برنامه‌ها را از سیستم cp/Mبه کامپیوتر شخصی برده بود را سازگارکردو در دسترس قرار داد. به‌طور معمول قالب بندی صفحه نمایش دنباله فراری را در ورژن‌های cp/Mقرار داد که با دستورها موقعیت مکان نما در ورژن‌های basicپیدا شد که در غیر این صورت کمی نیاز به کمی بازنویسی خواهد بود.

## اهمیت MBASIC
**MBASIC **یک ابزار مهم درعصر کامپیوتر ۸بیتی cp/M بود. کاربران ماهرمی‌توانستند کارهای روزمره را در MBASICبنویسند وبه‌طور خودکار انجام دهند که در سیستم‌های مدرن روز به وسیله دستورها برنامه‌های قدرتمند یا زبان‌های برنامه‌نویسی انجام می‌شود. تبادل برنامه‌های مفید MBASIC یک تابع مشترک از گروه‌های کاربران کامپیوترداشت. کلید زنی در بیسیک فهرست طولانی از مقاله مجلات بود. یکی از راه‌های نرم‌افزار «بوتاسترپینگ» سیستم جدیدcp/M بود. حداقل یک کامپایلر برای زبان سطح بالا در MBASIC نوشته شده بود، و برای بسیاری از بازی‌های کوچک و برنامه‌های ابزار گرفته از چند خط به چند هزار خط کد نوشته شده بود.

## دیگر استفاده‌ها
**MBASIC **همچنین نام یکی از کامپایلرهای تجاری BASICبرای ریزتراشه فناوری میکروکنترلر ازخانواده پیشرفته توسط پایه میکرواست ونامرتبط با مترجم CP/M...

## منابع

* ویکی‌پدیای انگلیسی. 

رده:خانواده‌های زبان‌های برنامه‌نویسی بیسیک
رده:نرم‌افزارهای سی‌پی/ام