एमबेसिक

एमबीएएसआईसी सीपी/एम ऑपरेटिंग सिस्टम के लिए बुनियादी  का माइक्रोसॉफ्ट बेसिक कार्यान्वयन है। एमबीएएसआईसी मूल अल्टेयर बेसिक दुभाषियों का वंशज है जो माइक्रोसॉफ्ट के पहले उत्पादों में से थे। एमबीएएसआईसी ओसबोर्न 1 कंप्यूटर के साथ बंडल किए गए बेसिक के दो संस्करणों में से एक था। एमबीएएसआईसी नाम बेसिक दुभाषिया के डिस्क फ़ाइल नाम एमबीएएसआईसी.कॉम से लिया गया है।

पर्यावरण
एमबीएएसआईसी संस्करण 5 में कम से कम 28 केबी रैंडम एक्सेस मेमोरी (रैम) और कम से कम एक डिस्केट ड्राइव के साथ सीपी/एम सिस्टम की आवश्यकता होती है।

Microsoft BASIC-80 के संस्करणों के विपरीत, जिन्हें घरेलू कंप्यूटर निर्माताओं द्वारा कंप्यूटर की विशेष हार्डवेयर सुविधाओं का उपयोग करने के लिए अनुकूलित किया गया था, MBASIC सभी इनपुट और आउटपुट के लिए केवल CP/M ऑपरेटिंग सिस्टम कॉल पर निर्भर था। केवल सीपी/एम कंसोल (स्क्रीन और कीबोर्ड), लाइन प्रिंटर और डिस्क डिवाइस उपलब्ध थे।

अनकस्टमाइज्ड रूप में एमबीएएसआईसी में कंप्यूटर चित्रलेख, रंग, जॉयस्टिक, चूहों,  आनुक्रमिक द्वार , ईथरनेट, ध्वनि या यहां तक ​​कि वास्तविक समय घड़ी फ़ंक्शन के लिए कोई फ़ंक्शन नहीं था। एमबीएएसआईसी होस्ट सीपी/एम ऑपरेटिंग सिस्टम की सुविधाओं का पूरी तरह से समर्थन नहीं करता है, उदाहरण के लिए, यह डिस्केट पर फ़ाइलों को व्यवस्थित करने के लिए सीपी/एम के उपयोगकर्ता क्षेत्रों का समर्थन नहीं करता है। चूंकि सीपी/एम सिस्टम आम तौर पर एकल-उपयोगकर्ता होते थे और अकेले होते थे, इसलिए फ़ाइल या रिकॉर्ड लॉकिंग, या किसी भी प्रकार गृह कम्प्यूटर मल्टीटास्किंग का कोई प्रावधान नहीं था। इन सीमाओं के अलावा, एमबीएएसआईसी को उस समय बेसिक का एक शक्तिशाली और उपयोगी कार्यान्वयन माना जाता था।

भाषा प्रणाली
एमबीएएसआईसी एक बेसिक दुभाषिया है। प्रोग्राम स्रोत पाठ को मेमोरी में टोकनयुक्त रूप में संग्रहीत किया गया था, जिसमें बेसिक कीवर्ड को एक-बाइट टोकन द्वारा प्रतिस्थापित किया गया था, जिससे मेमोरी स्थान की बचत हुई और निष्पादन में तेजी आई। किसी पंक्ति संख्या के साथ उपसर्ग लगी किसी भी पंक्ति को प्रोग्राम टेक्स्ट के रूप में संग्रहीत किया गया था; बिना किसी लाइन नंबर के बेसिक स्टेटमेंट को तुरंत कमांड के रूप में निष्पादित किया गया। प्रोग्राम को संपादन के लिए स्क्रीन पर सूचीबद्ध किया जा सकता है, या संपीड़ित बाइनरी प्रारूप में या सादे ASCII पाठ के रूप में डिस्क पर सहेजा जा सकता है। प्रत्येक स्रोत पंक्ति की पहचान एक संख्या से की गई थी, जिसका उपयोग GOTO या GOSUB स्थानांतरण के लक्ष्य के रूप में किया जा सकता था। केवल लाइन संपादन आदेश प्रदान किए गए थे। किसी प्रोग्राम को सादे पाठ के रूप में सहेजना और उसे पूर्ण विशेषताओं वाले संपादक के साथ संपादित करना अक्सर फायदेमंद होता था।

प्रोग्राम टेक्स्ट, वेरिएबल्स, डिस्क बफ़र्स और सीपी/एम ऑपरेटिंग सिस्टम सभी को 8080 प्रोसेसर के 64 किलोबाइट एड्रेस स्पेस को साझा करना था। आमतौर पर पहली बार एमबीएएसआईसी शुरू करने पर प्रोग्राम और डेटा के लिए 32 केबी से कम मेमोरी उपलब्ध होगी, यहां तक ​​कि पूरी 64 किलोबाइट रैम से लैस मशीन पर भी। टिप्पणी पंक्तियाँ, उपसर्ग के साथ  कीवर्ड या एपॉस्ट्रॉफ़ी, प्रोग्राम टेक्स्ट में रखा जा सकता था, लेकिन मूल्यवान मेमोरी स्थान ले लेता था, जिससे BASIC उपयोगकर्ताओं को अपने कोड को पूरी तरह से प्रलेखित करने से हतोत्साहित किया जाता था। बड़े और अधिक जटिल कार्यक्रमों को चलाने की अनुमति देने के लिए, एमबीएएसआईसी के बाद के संस्करणों ने फ़ंक्शंस का समर्थन किया जो प्रोग्राम टेक्स्ट के हिस्सों को प्रोग्राम नियंत्रण (चेन लोडिंग) के तहत पढ़ने और निष्पादित करने की अनुमति देता है। और   कथन)। शेल कमांड निष्पादन के लिए कोई समर्थन प्रदान नहीं किया गया था, हालांकि इस कार्यक्षमता को एक निर्धारित प्रोग्रामर द्वारा दोहराया जा सकता था।

एमबीएएसआईसी का एक विशेष लाभ सिंटैक्स और रन-टाइम त्रुटियों के लिए प्रदान किए गए पूर्ण-पाठ त्रुटि संदेश थे। एमबीएएसआईसी में एक ट्रेस फ़ंक्शन भी था जो निष्पादित होते ही लाइन नंबर प्रदर्शित करता था। हालाँकि इसने सामान्य प्रोग्राम आउटपुट के समान स्क्रीन स्थान पर कब्जा कर लिया था, यह अंतहीन लूप जैसी स्थितियों का पता लगाने के लिए उपयोगी था।

फ़ाइलें और इनपुट/आउटपुट
डेटा को या तो अनुक्रमिक फ़ाइलों (प्रत्येक पंक्ति के अंत में सीआर/एलएफ के सीपी/एम सम्मेलन द्वारा सीमांकित) के रूप में पढ़ा और संग्रहीत किया जा सकता है या फिर निश्चित-रिकॉर्ड-लंबाई यादृच्छिक एक्सेस फ़ाइलों के रूप में, जो पर्याप्त रूप से निर्धारित प्रोग्रामर को देखते हुए, डेटाबेस-प्रकार रिकॉर्ड हेरफेर करने के लिए उपयोग किया जा सकता है। तैरनेवाला स्थल नंबरों के लिए Microsoft बाइनरी प्रारूप कार्यान्वयन के स्वामित्व में था, जिसका अर्थ था कि डेटा को केवल ASCII पाठ प्रतिनिधित्व का उपयोग करके अन्य प्रोग्रामों के साथ इंटरचेंज किया जा सकता था या फिर बाइनरी प्रारूप को परिवर्तित करने के लिए व्यापक प्रोग्रामिंग के साथ।

चर और डेटा प्रकार
एमबीएएसआईसी ने निम्नलिखित डेटा प्रकारों का समर्थन किया:
 * 8-बिट वर्ण डेटा, लंबाई 0 से 255 वर्णों की स्ट्रिंग में;
 * 16-बिट पूर्णांक;
 * 32-बिट फ़्लोटिंग पॉइंट (एकल परिशुद्धता), छह दशमलव अंकों के बराबर, दो अंकों के घातांक के साथ;
 * 64-बिट फ़्लोटिंग पॉइंट (डबल प्रिसिजन), सोलह दशमलव अंकों के बराबर, दो अंकों के घातांक के साथ।

स्ट्रिंग ऑपरेटरों में सबस्ट्रिंग चयन, संयोजन, असाइनमेंट और समानता के लिए परीक्षण शामिल थे।

उपरोक्त प्रकार के ऐरे को 7 आयामों तक की अनुमति थी, लेकिन ऐरे पर कोई फ़ंक्शन या ऑपरेटर काम नहीं करता था; उदाहरण के लिए, सरणियों का कोई असाइनमेंट नहीं था। उस समय के कुछ अन्य बेसिक कार्यान्वयनों के विपरीत, एमबीएएसआईसी ने वित्तीय गणना के लिए मैट्रिक्स (गणित) संचालन, जटिल संख्याओं या बाइनरी-कोडित दशमलव | दशमलव (बीसीडी) डेटा प्रकार के लिए समर्थन प्रदान नहीं किया। सभी फ़्लोटिंग पॉइंट ऑपरेशन सॉफ़्टवेयर में किए गए थे क्योंकि सामान्य सीपी/एम सिस्टम में फ़्लोटिंग-पॉइंट इकाई नहीं होती थी। अंतर्निहित गणित फ़ंक्शन (साइन, कोसाइन, स्पर्शरेखा, प्राकृतिक लॉग, घातांक, वर्गमूल) ने केवल एकल सटीक परिणाम दिए। एक सॉफ्टवेयर छद्म यादृच्छिक संख्या जनरेटर प्रदान किया गया था; यह गेम और कुछ सिमुलेशन के लिए उपयोगी संख्याओं का अनुक्रम प्राप्त करने के लिए उपयोगकर्ता पर बीज संख्या में कुंजी लगाने पर निर्भर करता था। एमबीएएसआईसी ने अनुमति दी लेकिन इसकी आवश्यकता नहीं थी  असाइनमेंट स्टेटमेंट के लिए कीवर्ड।

माइक्रो कंप्यूटर पर बेसिक के शुरुआती संस्करण एक या दो-अक्षर वाले वेरिएबल नामों के लिए बदनाम थे, जिससे जटिल कार्यक्रमों में वेरिएबल्स के अर्थ को याद रखना मुश्किल हो जाता था। एमबीएएसआईसी संस्करण 5 ने 40 वर्णों तक लंबे पहचानकर्ताओं की अनुमति दी, जिससे प्रोग्रामर को चर को पढ़ने योग्य नाम देने की अनुमति मिली।

कार्यक्रम प्रवाह नियंत्रण
एमबीएएसआईसी में प्रोग्राम प्रवाह नियंत्रण किसके द्वारा नियंत्रित किया जाता था? सशर्त परीक्षण,  लूप, और   और   निर्देश। नहीं   बयान उपलब्ध था, हालांकि एक  (गणना की गई GOTO) ने मल्टी-वे शाखाएँ प्रदान कीं। सबरूटीन्स में कोई पैरामीटर नहीं था और सभी चर वैश्विक थे। एमबीएएसआईसी ने प्रोग्रामर के लिए संरचित प्रोग्रामिंग को अनिवार्य नहीं बनाया और स्पेगेटी कोड लिखना आसान था।

तिरछी नज़रें, POKEs, और उपयोगकर्ता फ़ंक्शन
70 के दशक के अंत और 80 के दशक की शुरुआत के 8-बिट कंप्यूटरों पर बेसिक्स की कोई भी चर्चा मेमोरी में सीधे पढ़ने और लिखने के लिए PEEK और POKE कार्यों के महत्व का उल्लेख किए बिना पूरी नहीं होगी। चूँकि इन प्रणालियों में आम तौर पर कोई मेमोरी सुरक्षा नहीं होती थी, इससे प्रोग्रामर को ऑपरेटिंग सिस्टम के कुछ हिस्सों, या फ़ंक्शंस तक पहुँचने की अनुमति मिल जाती थी जो अन्यथा उपलब्ध नहीं होते। इसने उपयोगकर्ता प्रोग्रामों को सिस्टम को हैंग करने के अवसर भी प्रदान किए (आमतौर पर दुर्घटनावश)। उदाहरण के लिए, एक सीपी/एम प्रोग्रामर इसका उपयोग कर सकता है  यदि सिस्टम BIOS इसका समर्थन करता है, तो BASIC को कंसोल डिवाइस को सीरियल पोर्ट पर स्विच करने की अनुमति देने के लिए फ़ंक्शन। वास्तविक समय घड़ियों वाली मशीनों के लिए, का एक सेट   समय तक पहुँचने के लिए निर्देशों का उपयोग किया गया होगा।

अधिक जटिल परिचालनों के लिए, एमबीएएसआईसी ने उपयोगकर्ता-परिभाषित कार्यों की अनुमति दी जिन्हें बेसिक प्रोग्राम से बुलाया जा सकता है। इन्हें आमतौर पर मेमोरी के एक आरक्षित क्षेत्र में रखा जाता था, या मशीन भाषा (ऑप कोड) की एक श्रृंखला के रूप में स्ट्रिंग स्थिरांक में पोक किया जाता था। एमबीएएसआईसी ने हार्डवेयर भी प्रदान किया  और   निर्देश जो सीधे 8080 हार्डवेयर इनपुट/आउटपुट पोर्ट पर पढ़ते और लिखते हैं। यदि सिस्टम हार्डवेयर अनुमति देता है तो इसका उपयोग बेसिक प्रोग्राम से परिधीय उपकरणों को नियंत्रित करने के लिए किया जा सकता है।

कोई भी एमबीएएसआईसी कार्यक्रम जिसका उपयोग किया गया हो  और , और मशीन कोड उपयोगकर्ता फ़ंक्शन, संशोधनों के बिना मशीनों के बीच पोर्टेबल नहीं थे।

एमबीएएसआईसी के उत्तराधिकारी
सीपी/एम के लिए माइक्रोसॉफ्ट के बेसिक-80 के अलावा, इंटेल आईएसआईएस-द्वितीय|आईएसआईएस-II ऑपरेटिंग सिस्टम के लिए एमबीएएसआईसी का एक संस्करण भी उपलब्ध था।

[[एमएसएक्स बेसिक]]|एमएसएक्स-बेसिक भी एमबीएएसआईसी का एक प्रसिद्ध उत्तराधिकारी है, जिसमें एमएसएक्स मशीनों के लिए विशिष्ट कई एक्सटेंशन शामिल हैं।

CP/M MBASIC के सभी कार्य IBM PC डिस्क-आधारित BASICA या GWBASIC में उपलब्ध थे, जिससे CP/M सिस्टम से PC-संगत में प्रोग्राम का माइग्रेशन संभव हो गया। कीवर्ड का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले टोकन अलग-अलग थे, इसलिए सीपी/एम प्रोग्राम को ASCII स्रोत फॉर्म में सहेजना पड़ा। आमतौर पर सीपी/एम संस्करण में डाले गए स्क्रीन फ़ॉर्मेटिंग एस्केप अनुक्रमों को बेसिक के पीसी संस्करणों में पाए जाने वाले कर्सर पोजिशनिंग कमांड से बदल दिया जाएगा, अन्यथा बहुत कम पुनर्लेखन की आवश्यकता होगी।

बासकॉम
Microsoft ने एक CP/M BASIC संकलक  (जिसे BASCOM के नाम से जाना जाता है) बेचा, जो MBASIC के समान स्रोत भाषा का उपयोग करता था। एमबीएएसआईसी के तहत डिबग किए गए प्रोग्राम को बासकॉम के साथ संकलित किया जा सकता है। चूँकि प्रोग्राम टेक्स्ट अब मेमोरी में नहीं था और कंपाइलर के रन-टाइम तत्व दुभाषिया से छोटे थे, उपयोगकर्ता डेटा के लिए अधिक मेमोरी उपलब्ध थी। वास्तविक प्रोग्राम निष्पादन की गति लगभग 3 गुना बढ़ गई।

डेवलपर्स ने लोकप्रिय लेकिन धीमी और अनाड़ी CBASIC के विकल्प के रूप में BASCOM का स्वागत किया। सीबीएएसआईसी के विपरीत, बासकॉम को एमबीएएसआईसी स्रोत कोड के लिए preprocessor  की आवश्यकता नहीं थी, इसलिए इसे इंटरैक्टिव तरीके से डीबग किया जा सकता था। एक नुकसान यह था कि माइक्रोसॉफ्ट द्वारा प्रोग्राम की प्रत्येक संकलित प्रति के लिए 9% रॉयल्टी की आवश्यकता थी और हार्डवेयर-सॉफ़्टवेयर संयोजन के लिए $40। कंपनी ने डेवलपर्स के वित्तीय रिकॉर्ड का ऑडिट करने का अधिकार भी सुरक्षित रखा है। क्योंकि सॉफ़्टवेयर के लिए लेखकों की विशिष्ट रॉयल्टी दरें 10-25% थीं, इन्फोवर्ल्ड ने 1980 में कहा था कि BASCOM की अतिरिक्त 9% रॉयल्टी दर सॉफ़्टवेयर विकास को पूरी तरह से अलाभकारी बना सकती है, जिससे यह निष्कर्ष निकलता है कि Microsoft के पास तकनीकी समाधान है [CBASIC की खामियों के लिए], लेकिन आर्थिक नहीं।

MBASIC का महत्व
8-बिट सीपी/एम कंप्यूटर के युग के दौरान एमबीएएसआईसी एक महत्वपूर्ण उपकरण था। कुशल उपयोगकर्ता कार्यों को स्वचालित करने के लिए एमबीएएसआईसी में रूटीन लिख सकते हैं जो आधुनिक सिस्टम में शक्तिशाली एप्लिकेशन प्रोग्राम कमांड या स्क्रिप्टिंग भाषाओं द्वारा किए जाएंगे। उपयोगी एमबीएएसआईसी कार्यक्रमों का आदान-प्रदान कंप्यूटर उपयोगकर्ताओं के समूहों का एक सामान्य कार्य था। एक पत्रिका लेख से टाइप-इन प्रोग्राम एक नए सीपी/एम सिस्टम में सॉफ़्टवेयर बूटस्ट्रैपिंग का एक तरीका था। उच्च स्तरीय भाषा के लिए कम से कम एक कंपाइलर एमबीएएसआईसी में लिखा गया था, और कुछ पंक्तियों से लेकर कोड की कुछ हजार लाइनों तक के कई छोटे गेम और उपयोगिता कार्यक्रम लिखे गए थे।

अन्य उपयोग
एमबीएएसआईसी बेसिक माइक्रो, इंक. द्वारा विकसित माइक्रोचिप प्रौद्योगिकी  पीआईसी माइक्रोकंट्रोलर परिवार के लिए एक वाणिज्यिक बेसिक कंपाइलर का नाम भी है, जो सीपी/एम दुभाषिया से असंबंधित है।

संदर्भ

 * Thom Hogan and Mike Iannamico, Osborne 1 User's Reference Guide,(1982) Osborne Computer Corporation
 * David A. Lien, The BASIC Handbook, 2nd Edition Encyclopedia of the BASIC Computer Language",(1981), Compusoft Publishing
 * BASIC 80 Reference Manual, Microsoft Corporation, no date