एमबेसिक

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

संदर्भ

 * 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