एमबेसिक: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 1: Line 1:
{{Short description|Dialect of the BASIC programming language}}
{{Short description|Dialect of the BASIC programming language}}
{{Infobox programming language
{{Infobox programming language
| name                      = MBASIC
| name                      = एमबेसिक
| year                      =  
| year                      =  
| designer                  = [[Microsoft]]
| designer                  = [[माइक्रोसॉफ्ट]]
| developer                  = [[Microsoft]]
| developer                  = [[माइक्रोसॉफ्ट]]
| latest release version    =  
| latest release version    =  
| latest release date        =  
| latest release date        =  
| implementations            =
| implementations            =
| influenced_by              = [[BASIC]]
| influenced_by              = [[बेसिक]]
| influenced                =
| influenced                =
| typing                    =
| typing                    =
| dialects                  =
| dialects                  =
| paradigm                  = [[imperative programming|imperative]]
| paradigm                  = [[अनिवार्य प्रोग्रामिंग|अनिवार्य]]
| logo                      =
| logo                      =
| operating_system          = [[CP/M]]
| operating_system          = [[CP/M]]
Line 19: Line 19:
| file_ext                  =
| file_ext                  =
}}
}}
एमबीएएसआईसी सीपी/एम ऑपरेटिंग सिस्टम के लिए [[ बुनियादी |बुनियादी]] का माइक्रोसॉफ्ट बेसिक कार्यान्वयन है। एमबीएएसआईसी मूल [[अल्टेयर बेसिक]] दुभाषियों का वंशज है जो माइक्रोसॉफ्ट के पहले उत्पादों में से थे। एमबीएएसआईसी [[ओसबोर्न 1]] कंप्यूटर के साथ बंडल किए गए बेसिक के दो संस्करणों में से था। एमबीएएसआईसी नाम बेसिक दुभाषिया के डिस्क फ़ाइल नाम एमबीएएसआईसी.कॉम से लिया गया है।
 
'''एमबेसिक''' CP/M ऑपरेटिंग सिस्टम के लिए [[ बुनियादी |बेसिक]] का माइक्रोसॉफ्ट बेसिक कार्यान्वयन है। एमबेसिक बेसिक [[अल्टेयर बेसिक]] दुभाषियों का अवरोही है जो माइक्रोसॉफ्ट के पहले उत्पादों में से थे। एमबेसिक [[ओसबोर्न 1]] कंप्यूटर के साथ बंडल किए गए बेसिक के दो वर्जनों में से था। एमबेसिक नाम बेसिक दुभाषिया के डिस्क फ़ाइल नाम एमबेसिक.कॉम से लिया गया है।


== पर्यावरण ==
== पर्यावरण ==
[[File:MBasic 5.21.jpg|thumb|एमबीएसिक 5.21 उस समय के विशिष्ट मोनोक्रोम मॉनिटर पर प्रदर्शित Z80 CP/M सिस्टम पर चल रहा है।]]एमबीएएसआईसी संस्करण 5 में कम से कम 28 केबी [[रैंडम एक्सेस मेमोरी]] (रैम) और कम से कम डिस्केट ड्राइव के साथ सीपी/एम सिस्टम की आवश्यकता होती है।
[[File:MBasic 5.21.jpg|thumb|एमबीएसिक 5.21 उस समय के विशिष्ट मोनोक्रोम मॉनिटर पर प्रदर्शित Z80 CP/M सिस्टम पर चल रहा है।]]एमबेसिक वर्जन 5 में कम से कम 28 केबी [[रैंडम एक्सेस मेमोरी]] (रैम) और कम से कम डिस्केट ड्राइव के साथ CP/M सिस्टम की आवश्यकता होती है।


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


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


== विशेषताएँ ==
== विशेषताएँ ==


=== भाषा प्रणाली ===
=== लैंग्वेज सिस्टम ===
एमबीएएसआईसी बेसिक दुभाषिया है। प्रोग्राम स्रोत पाठ को मेमोरी में टोकनयुक्त रूप में संग्रहीत किया गया था, जिसमें बेसिक कीवर्ड को एक-बाइट टोकन द्वारा प्रतिस्थापित किया गया था, जिससे मेमोरी स्थान की बचत हुई और निष्पादन में तेजी आई। किसी पंक्ति संख्या के साथ उपसर्ग लगी किसी भी पंक्ति को प्रोग्राम टेक्स्ट के रूप में संग्रहीत किया गया था; बिना किसी लाइन नंबर के बेसिक स्टेटमेंट को तुरंत कमांड के रूप में निष्पादित किया गया। प्रोग्राम को संपादन के लिए स्क्रीन पर सूचीबद्ध किया जा सकता है, या संपीड़ित बाइनरी प्रारूप में या सादे [[ASCII]] पाठ के रूप में डिस्क पर सहेजा जा सकता है। प्रत्येक स्रोत पंक्ति की पहचान संख्या से की गई थी, जिसका उपयोग [[GOTO]] या [[GOSUB]] स्थानांतरण के लक्ष्य के रूप में किया जा सकता था। केवल लाइन संपादन आदेश प्रदान किए गए थे।<ref>CP/M products providing full-screen editing support required their own installation routines to customize the software for the specific [[computer terminal]] used as the system console. No support was provided within CP/M to standardize terminal capabilities.</ref> किसी प्रोग्राम को सादे पाठ के रूप में सहेजना और उसे पूर्ण विशेषताओं वाले संपादक के साथ संपादित करना अक्सर फायदेमंद होता था।
एमबेसिक बेसिक दुभाषिया है। इस प्रकार प्रोग्राम स्रोत टेक्स्ट को मेमोरी में टोकनयुक्त रूप में संग्रहीत किया गया था, जिसमें बेसिक कीवर्ड को एक-बाइट टोकन द्वारा प्रतिस्थापित किया गया था, जिससे मेमोरी स्पेस की बचत हुई और निष्पादन में तेजी आई थी। किसी पंक्ति संख्या के साथ उपसर्ग लगी किसी भी पंक्ति को प्रोग्राम टेक्स्ट के रूप में संग्रहीत किया गया था; बिना किसी लाइन नंबर के बेसिक स्टेटमेंट को तुरंत कमांड के रूप में निष्पादित किया गया था। प्रोग्राम को संपादन के लिए स्क्रीन पर सूचीबद्ध किया जा सकता है, या संपीड़ित बाइनरी प्रारूप में या साधारण [[ASCII]] टेक्स्ट के रूप में डिस्क पर सुरक्षित किया  जा सकता है। प्रत्येक स्रोत पंक्ति की पहचान संख्या से की गई थी, जिसका उपयोग [[GOTO]] या [[GOSUB]] स्पेसांतरण के लक्ष्य के रूप में किया जा सकता था। केवल लाइन संपादन आदेश प्रदान किए गए थे।<ref>CP/M products providing full-screen editing support required their own installation routines to customize the software for the specific [[computer terminal]] used as the system console. No support was provided within CP/M to standardize terminal capabilities.</ref> किसी प्रोग्राम को साधारण टेक्स्ट के रूप में सुरक्षित और उसे पूर्ण विशेषताओं वाले संपादक के साथ संपादित करना अधिकांशतः लाभदायक होता था।


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


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


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


=== चर और डेटा प्रकार ===
=== वेरिएबल और डेटा प्रकार ===
एमबीएएसआईसी ने निम्नलिखित डेटा प्रकारों का समर्थन किया:
एमबेसिक ने निम्नलिखित डेटा प्रकारों का समर्थन किया था:
* 8-बिट वर्ण डेटा, लंबाई 0 से 255 वर्णों की स्ट्रिंग में;
* 8-बिट कैरेक्टर डेटा, लंबाई 0 से 255 कैरेक्टर की स्ट्रिंग में;
* 16-बिट पूर्णांक;
* 16-बिट पूर्णांक;
* 32-बिट फ़्लोटिंग पॉइंट (एकल परिशुद्धता), छह दशमलव अंकों के बराबर, दो अंकों के घातांक के साथ;
* 32-बिट फ़्लोटिंग पॉइंट (एकल परिशुद्धता), छह दशमलव अंकों के समान, दो अंकों के घातांक के साथ;
* 64-बिट फ़्लोटिंग पॉइंट (डबल प्रिसिजन), सोलह दशमलव अंकों के बराबर, दो अंकों के घातांक के साथ।
* 64-बिट फ़्लोटिंग पॉइंट (डबल प्रिसिजन), सोलह दशमलव अंकों के समान, दो अंकों के घातांक के साथ।
 
स्ट्रिंग ऑपरेटरों में सबस्ट्रिंग चयन, संयोजन, असाइनमेंट और समानता के लिए परीक्षण सम्मिलित थे।
 
उपरोक्त प्रकार के ऐरे को 7 आयामों तक की अनुमति थी, किन्तु ऐरे पर कोई फ़ंक्शन या ऑपरेटर काम नहीं करता था; उदाहरण के लिए, सरणियों का कोई असाइनमेंट नहीं था। उस समय के कुछ अन्य बेसिक कार्यान्वयनों के विपरीत, एमबेसिक ने वित्तीय गणना के लिए [[मैट्रिक्स (गणित)]] संचालन, [[जटिल संख्या|काम्प्लेक्स संख्या]]ओं या [[बाइनरी-कोडित दशमलव]] या  दशमलव (बीसीडी) डेटा प्रकार के लिए समर्थन प्रदान नहीं किया था। सभी फ़्लोटिंग पॉइंट ऑपरेशन सॉफ़्टवेयर में किए गए थे क्योंकि सामान्य CP/M सिस्टम में [[फ़्लोटिंग-पॉइंट इकाई|फ़्लोटिंग-पॉइंट यूनिट]] नहीं होती थी। अंतर्निहित गणित फ़ंक्शन (साइन, कोसाइन, स्पर्शरेखा, प्राकृतिक लॉग, घातांक, वर्गमूल) ने केवल एकल स्पष्ट परिणाम दिए थे। सॉफ्टवेयर [[छद्म यादृच्छिक संख्या जनरेटर]] प्रदान किया गया था; यह गेम और कुछ सिमुलेशन के लिए उपयोगी संख्याओं का अनुक्रम प्राप्त करने के लिए उपयोगकर्ता पर बीज संख्या में कुंजी लगाने पर निर्भर करता था। एमबेसिक ने  <code>LET</code> असाइनमेंट स्टेटमेंट के लिए कीवर्ड अनुमति दी किन्तु इसकी आवश्यकता नहीं थी।


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


उपरोक्त प्रकार के ऐरे को 7 आयामों तक की अनुमति थी, लेकिन ऐरे पर कोई फ़ंक्शन या ऑपरेटर काम नहीं करता था; उदाहरण के लिए, सरणियों का कोई असाइनमेंट नहीं था। उस समय के कुछ अन्य बेसिक कार्यान्वयनों के विपरीत, एमबीएएसआईसी ने वित्तीय गणना के लिए [[मैट्रिक्स (गणित)]] संचालन, [[जटिल संख्या]]ओं या [[बाइनरी-कोडित दशमलव]] | दशमलव (बीसीडी) डेटा प्रकार के लिए समर्थन प्रदान नहीं किया। सभी फ़्लोटिंग पॉइंट ऑपरेशन सॉफ़्टवेयर में किए गए थे क्योंकि सामान्य सीपी/एम सिस्टम में [[फ़्लोटिंग-पॉइंट इकाई]] नहीं होती थी। अंतर्निहित गणित फ़ंक्शन (साइन, कोसाइन, स्पर्शरेखा, प्राकृतिक लॉग, घातांक, वर्गमूल) ने केवल एकल सटीक परिणाम दिए। सॉफ्टवेयर [[छद्म यादृच्छिक संख्या जनरेटर]] प्रदान किया गया था; यह गेम और कुछ सिमुलेशन के लिए उपयोगी संख्याओं का अनुक्रम प्राप्त करने के लिए उपयोगकर्ता पर बीज संख्या में कुंजी लगाने पर निर्भर करता था। एमबीएएसआईसी ने अनुमति दी लेकिन इसकी आवश्यकता नहीं थी <code>LET</code> असाइनमेंट स्टेटमेंट के लिए कीवर्ड।
=== प्रोग्राम प्रवाह नियंत्रण ===
एमबेसिक में प्रोग्राम प्रवाह नियंत्रण को <code>IF...THEN...ELSE...</code> नियमबद्ध परीक्षण, <code>WHILE...WEND</code> लूप और <code>GOTO</code> और <code>GOSUB</code> निर्देशों द्वारा नियंत्रित किया गया था। कोई <code>CASE</code> विवरण उपलब्ध नहीं था, चूँकि एक <code>ON...GOTO... </code> (गणना की गई GOTO) ने बहु-मार्गीय शाखाएँ प्रदान कीं थी। सबरूटीन्स में कोई मापदंड नहीं था और सभी वेरिएबल वैश्विक थे। एमबेसिक ने प्रोग्रामर के लिए [[संरचित प्रोग्रामिंग|स्ट्रक्चर्ड प्रोग्रामिंग]] को अनिवार्य नहीं बनाया और [[स्पेगेटी कोड]] लिखना आसान था।


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


=== कार्यक्रम प्रवाह नियंत्रण ===
अधिक काम्प्लेक्स परिचालनों के लिए, एमबेसिक ने उपयोगकर्ता-परिभाषित कार्यों की अनुमति दी थी जिन्हें बेसिक प्रोग्राम से बुलाया जा सकता है। इन्हें सामान्यतः मेमोरी के आरक्षित क्षेत्र में रखा जाता था, या [[मशीन भाषा|मशीन लैंग्वेज]] (ऑप कोड) की श्रृंखला के रूप में स्ट्रिंग स्थिरांक में पोक किया जाता था। एमबेसिक ने हार्डवेयर <code>INP</code> और <code>OUT</code> निर्देश भी प्रदान किया था जो सीधे 8080 हार्डवेयर इनपुट/आउटपुट पोर्ट पर पढ़ते और लिखते हैं। यदि सिस्टम हार्डवेयर अनुमति देता है तो इसका उपयोग बेसिक प्रोग्राम से परिधीय उपकरणों को नियंत्रित करने के लिए किया जा सकता है।
एमबीएएसआईसी में प्रोग्राम प्रवाह नियंत्रण किसके द्वारा नियंत्रित किया जाता था? <code>IF...THEN...ELSE...</code> सशर्त परीक्षण, <code>WHILE...WEND</code> लूप, और <code>GOTO</code> और <code>GOSUB</code> निर्देश। नहीं <code>CASE</code> बयान उपलब्ध था, हालांकि <code>ON...GOTO... </code>(गणना की गई GOTO) ने मल्टी-वे शाखाएँ प्रदान कीं। सबरूटीन्स में कोई पैरामीटर नहीं था और सभी चर वैश्विक थे। एमबीएएसआईसी ने प्रोग्रामर के लिए [[संरचित प्रोग्रामिंग]] को अनिवार्य नहीं बनाया और [[स्पेगेटी कोड]] लिखना आसान था।


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


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


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


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


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


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


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


डेवलपर्स ने लोकप्रिय लेकिन धीमी और अनाड़ी CBASIC के विकल्प के रूप में BASCOM का स्वागत किया। [[सीबीएएसआईसी]] के विपरीत, बासकॉम को एमबीएएसआईसी स्रोत कोड के लिए [[ preprocessor |preprocessor]] की आवश्यकता नहीं थी, इसलिए इसे इंटरैक्टिव तरीके से डीबग किया जा सकता था।<ref name="iw19800818">{{Cite magazine |date=1980-08-18 |title=संपादकीय|url=https://books.google.com/books?id=az4EAAAAMBAJ&pg=PT47 |magazine=InfoWorld |page=8}}</ref> नुकसान यह था कि माइक्रोसॉफ्ट द्वारा प्रोग्राम की प्रत्येक संकलित प्रति के लिए 9% रॉयल्टी की आवश्यकता थी<ref name="pournelle198012">{{cite news | url=https://archive.org/stream/byte-magazine-1980-12/1980_12_BYTE_05-12_Adventure#page/n223/mode/2up | title=बेसिक, कंप्यूटर भाषाएँ, और कंप्यूटर एडवेंचर्स| work=BYTE | date=December 1980 | access-date=18 October 2013 | author=Pournelle, Jerry | pages=222}}</ref> और हार्डवेयर-सॉफ़्टवेयर संयोजन के लिए $40। कंपनी ने डेवलपर्स के वित्तीय रिकॉर्ड का ऑडिट करने का अधिकार भी सुरक्षित रखा है। क्योंकि सॉफ़्टवेयर के लिए लेखकों की विशिष्ट रॉयल्टी दरें 10-25% थीं, [[इन्फोवर्ल्ड]] ने 1980 में कहा था कि BASCOM की अतिरिक्त 9% रॉयल्टी दर सॉफ़्टवेयर विकास को पूरी तरह से अलाभकारी बना सकती है, जिससे यह निष्कर्ष निकलता है कि Microsoft के पास तकनीकी समाधान है [CBASIC की खामियों के लिए], लेकिन आर्थिक नहीं।<ref name="iw19800818"/>
डेवलपर्स ने लोकप्रिय किन्तु धीमी और अनाड़ी सीबेसिक के विकल्प के रूप में बासकॉम का स्वागत किया था। [[सीबीएएसआईसी]] के विपरीत, बासकॉम को एमबेसिक स्रोत कोड के लिए [[ preprocessor |प्रीप्रोसेसर]] की आवश्यकता नहीं थी, इसलिए इसे इंटरैक्टिव विधि से डीबग किया जा सकता था।<ref name="iw19800818">{{Cite magazine |date=1980-08-18 |title=संपादकीय|url=https://books.google.com/books?id=az4EAAAAMBAJ&pg=PT47 |magazine=InfoWorld |page=8}}</ref> हानि यह थी कि माइक्रोसॉफ्ट द्वारा प्रोग्राम की प्रत्येक संकलित प्रति के लिए 9% रॉयल्टी की आवश्यकता थी <ref name="pournelle198012">{{cite news | url=https://archive.org/stream/byte-magazine-1980-12/1980_12_BYTE_05-12_Adventure#page/n223/mode/2up | title=बेसिक, कंप्यूटर भाषाएँ, और कंप्यूटर एडवेंचर्स| work=BYTE | date=December 1980 | access-date=18 October 2013 | author=Pournelle, Jerry | pages=222}}</ref> और हार्डवेयर-सॉफ़्टवेयर संयोजन के लिए $40 कंपनी ने डेवलपर्स के वित्तीय रिकॉर्ड का ऑडिट करने का अधिकार भी सुरक्षित रखा है। क्योंकि सॉफ़्टवेयर के लिए लेखकों की विशिष्ट रॉयल्टी दरें 10-25% थीं, [[इन्फोवर्ल्ड]] ने 1980 में कहा था कि बासकॉम की अतिरिक्त 9% रॉयल्टी दर सॉफ़्टवेयर विकास को पूरी तरह से व्यर्थ बना सकती है, जिससे यह निष्कर्ष निकलता है कि माइक्रोसॉफ्ट के पास तकनीकी समाधान है '''[सीबेसिक की खामियों के लिए], किन्तु आर्थिक नहीं।'''<ref name="iw19800818"/>




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


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


== संदर्भ ==
== संदर्भ                                                                                                                                           ==
{{Reflist}}
{{Reflist}}
{{Refbegin}}
{{Refbegin}}

Revision as of 10:27, 30 July 2023

एमबेसिक
Paradigmअनिवार्य
द्वारा डिज़ाइन किया गयामाइक्रोसॉफ्ट
Developerमाइक्रोसॉफ्ट
ओएसCP/M
वेबसाइटwww.microsoft.com
Influenced by
बेसिक

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

पर्यावरण

एमबीएसिक 5.21 उस समय के विशिष्ट मोनोक्रोम मॉनिटर पर प्रदर्शित Z80 CP/M सिस्टम पर चल रहा है।

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

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

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

विशेषताएँ

लैंग्वेज सिस्टम

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

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

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

फ़ाइलें और इनपुट/आउटपुट

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

वेरिएबल और डेटा प्रकार

एमबेसिक ने निम्नलिखित डेटा प्रकारों का समर्थन किया था:

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

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

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

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

प्रोग्राम प्रवाह नियंत्रण

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

PEEKs, POKEs, और उपयोगकर्ता फ़ंक्शन

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

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


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

एमबेसिक के उत्तराधिकारी

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

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

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

बासकॉम

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

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


एमबेसिक का महत्व

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

अन्य उपयोग

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

संदर्भ

  1. CP/M products providing full-screen editing support required their own installation routines to customize the software for the specific computer terminal used as the system console. No support was provided within CP/M to standardize terminal capabilities.
  2. 2.0 2.1 "संपादकीय". InfoWorld. 1980-08-18. p. 8.
  3. Pournelle, Jerry (December 1980). "बेसिक, कंप्यूटर भाषाएँ, और कंप्यूटर एडवेंचर्स". BYTE. p. 222. Retrieved 18 October 2013.
  • 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