कमोडोर बेसिक: Difference between revisions
(text) |
|||
Line 55: | Line 55: | ||
=== प्रदर्शन === | === प्रदर्शन === | ||
मूल माइक्रोसॉफ्ट बेसिक [[दुभाषिया (प्रोग्रामिंग)]] की तरह, कमोडोर बेसिक [[मशीन कोड]] से धीमा है। परीक्षण के परिणामों से पता चला है कि रीड ओनली मेमरी से [[यादृच्छिक अभिगम स्मृति]] में 16 [[किलोबाइट]] की प्रतिलिपि बनाने में बेसिक में मिनट से अधिक की तुलना में मशीन कोड में सेकंड से भी कम समय लगता है।{{citation needed|date=March 2018}} दुभाषिया की तुलना में तेजी से निष्पादित करने के लिए, प्रोग्रामर ने निष्पादन को गति देने के लिए विभिन्न तकनीकों का उपयोग करना प्रारंभ कर दिया। एक शाब्दिक मूल्यों का उपयोग करने के अतिरिक्त चर में अधिकांशतः उपयोग किए जाने वाले | मूल माइक्रोसॉफ्ट बेसिक [[दुभाषिया (प्रोग्रामिंग)]] की तरह, कमोडोर बेसिक [[मशीन कोड]] से धीमा है। परीक्षण के परिणामों से पता चला है कि रीड ओनली मेमरी से [[यादृच्छिक अभिगम स्मृति]] में 16 [[किलोबाइट]] की प्रतिलिपि बनाने में बेसिक में मिनट से अधिक की तुलना में मशीन कोड में सेकंड से भी कम समय लगता है।{{citation needed|date=March 2018}} दुभाषिया की तुलना में तेजी से निष्पादित करने के लिए, प्रोग्रामर ने निष्पादन को गति देने के लिए विभिन्न तकनीकों का उपयोग करना प्रारंभ कर दिया। एक शाब्दिक मूल्यों का उपयोग करने के अतिरिक्त चर में अधिकांशतः उपयोग किए जाने वाले अस्थिर बिंदु मानों को संग्रहीत करना था, क्योंकि एक चर नाम की व्याख्या शाब्दिक संख्या की व्याख्या करने की तुलना में तेज़ थी। चूंकि अस्थिर बिंदु सभी निर्देश के लिए व्यतिक्रम प्रकार है, इसलिए पूर्णांक के अतिरिक्त अस्थिर बिंदु नंबरों को तर्क के रूप में उपयोग करना तेज़ है। जब गति महत्वपूर्ण थी, तो कुछ प्रोग्रामर ने बेसिक प्रोग्राम के अनुभागों को 6502 या [[एमओएस टेक्नोलॉजी 6510]] समुच्चय भाषा में परिवर्तित कर दिया, जिसे बेसिक प्रोग्राम के अंत में फ़ाइल से अलग से भारण किया गया था या तथ्य कथन से स्मृति में पोक एड किया गया था, और एसवाईएस निर्देश का उपयोग या तो डायरेक्ट मोड से या [[बेसिक लोडर|प्रोग्राम]] से ही करके बेसिक से निष्पादित किया गया था। जब मशीन भाषा की निष्पादन गति बहुत अधिक थी, जैसे किसी खेल के लिए या उपयोगकर्ता निविष्टि की प्रतीक्षा करते समय, प्रोग्रामर चयनित स्मृति स्थानों को पढ़कर मतदान कर सकते थे (जैसे {{code|$C6}}<ref name="map64">{{cite book|title=कमोडोर 64 और 64C का मानचित्रण|last=Leemon|first=Sheldon|publisher=COMPUTE! Publications|page=37|year=1987|isbn=9780874550825|url=https://archive.org/stream/Compute_s_Mapping_the_64_and_64C#page/n49/mode/2up|access-date=2018-03-25}}</ref> 64 के लिए, या{{code|$D0}}<ref name="map128">{{cite book|title=कमोडोर 128 का मानचित्रण|url=https://archive.org/details/Compute_s_Mapping_the_Commodore_128|last=Cowper|first=Ottis R.|publisher=COMPUTE! Publications|page=[https://archive.org/details/Compute_s_Mapping_the_Commodore_128/page/n70 66]|year=1986|isbn=9780874550603}}</ref> के लिए 128, कुंजीपटल कतार के आकार को दर्शाता है) निष्पादन में देरी या रोक के लिए। | ||
कमोडोर बेसिक की अनूठी विशेषता चित्रपट को साफ़ करने या किसी प्रोग्राम के भीतर कर्सर की स्थिति जैसे कार्यों को करने के लिए नियंत्रण कोड का उपयोग है, इन्हें या तो{{code|2=cbmbas|1=PRINT CHR$(X)}}निर्देश जारी करके लागू किया जा सकता है जहां X जारी किए जाने वाले नियंत्रण कोड के अनुरूप है (उदाहरण के लिए,{{code|2=cbmbas|1=PRINT CHR$(147)}}चित्रपट को साफ़ करने के लिए नियंत्रण कोड है) या कुंजी दबाकर उद्धरण चिह्नों के बीच प्रश्न, इस प्रकार उद्धरण चिह्न के बाद {{keypress|SHIFT|CLR HOME}} दबाने से बेसिक को नियंत्रण कोड (इस मामले में, उलटा दिल) के दृश्य प्रतिनिधित्व को प्रदर्शित करने का कारण बनेगा, जिसे तब प्रोग्राम निष्पादन पर कार्य किया जाता है (सीधे प्रिंट आउट नियंत्रण कोड कम स्मृति का उपयोग करता है और सीएचआर $ क्रिया को लागू करने से तेज़ी से निष्पादित करता है)। यह बेसिक के अन्य कार्यान्वयनों की तुलना में है जिसमें विशेष रूप से चित्रपट को साफ़ करने या कर्सर को स्थानांतरित करने के लिए समर्पित निर्देश होते हैं। | कमोडोर बेसिक की अनूठी विशेषता चित्रपट को साफ़ करने या किसी प्रोग्राम के भीतर कर्सर की स्थिति जैसे कार्यों को करने के लिए नियंत्रण कोड का उपयोग है, इन्हें या तो{{code|2=cbmbas|1=PRINT CHR$(X)}}निर्देश जारी करके लागू किया जा सकता है जहां X जारी किए जाने वाले नियंत्रण कोड के अनुरूप है (उदाहरण के लिए,{{code|2=cbmbas|1=PRINT CHR$(147)}}चित्रपट को साफ़ करने के लिए नियंत्रण कोड है) या कुंजी दबाकर उद्धरण चिह्नों के बीच प्रश्न, इस प्रकार उद्धरण चिह्न के बाद {{keypress|SHIFT|CLR HOME}} दबाने से बेसिक को नियंत्रण कोड (इस मामले में, उलटा दिल) के दृश्य प्रतिनिधित्व को प्रदर्शित करने का कारण बनेगा, जिसे तब प्रोग्राम निष्पादन पर कार्य किया जाता है (सीधे प्रिंट आउट नियंत्रण कोड कम स्मृति का उपयोग करता है और सीएचआर $ क्रिया को लागू करने से तेज़ी से निष्पादित करता है)। यह बेसिक के अन्य कार्यान्वयनों की तुलना में है जिसमें विशेष रूप से चित्रपट को साफ़ करने या कर्सर को स्थानांतरित करने के लिए समर्पित निर्देश होते हैं। | ||
Line 65: | Line 65: | ||
अधिकांश मशीनों पर प्रोग्राम लाइनें कुल 80 अक्षर हो सकती हैं, लेकिन 40 क्रमभंग टेक्स्ट वाली मशीनें लाइन को चित्रपट पर अगली पंक्ति के चारों ओर लपेटने का कारण बनेंगी, और वीआईसी-20 पर, जिसमें 22 क्रमभंग डिस्प्ले था, प्रोग्राम लाइन्स पर अधिकार चार के रूप में कर सकते हैं। कमोडोर 128 पर बेसिक 7.0 ने प्रोग्राम लाइन की सीमा को बढ़ाकर 160 अक्षर (चार 40-क्रमभंग लाइन या दो 80-क्रमभंग लाइन) कर दिया। जैसे संक्षिप्ताक्षरों का प्रयोग करके {{code|?}} {{code|PRINT}} के अतिरिक्त लाइन पर और भी उपयुक्त होना संभव है। बेसिक 7.0 एक{{samp|?STRING TOO LONG}} त्रुटि प्रदर्शित करता है यदि उपयोगकर्ता लंबाई में 160 वर्णों से अधिक प्रोग्राम लाइन में प्रवेश करता है। पहले के संस्करणों में कोई त्रुटि उत्पन्न नहीं होती है और यदि रेखा की लंबाई पार हो जाती है तो केवल तैयार संकेत दो पंक्तियों को प्रदर्शित करता है। लाइन नंबर को प्रोग्राम लाइन में वर्णों की संख्या में गिना जाता है, इसलिए पांच अंकों की लाइन संख्या के परिणामस्वरूप अंक संख्या की तुलना में चार कम वर्णों की अनुमति होगी। | अधिकांश मशीनों पर प्रोग्राम लाइनें कुल 80 अक्षर हो सकती हैं, लेकिन 40 क्रमभंग टेक्स्ट वाली मशीनें लाइन को चित्रपट पर अगली पंक्ति के चारों ओर लपेटने का कारण बनेंगी, और वीआईसी-20 पर, जिसमें 22 क्रमभंग डिस्प्ले था, प्रोग्राम लाइन्स पर अधिकार चार के रूप में कर सकते हैं। कमोडोर 128 पर बेसिक 7.0 ने प्रोग्राम लाइन की सीमा को बढ़ाकर 160 अक्षर (चार 40-क्रमभंग लाइन या दो 80-क्रमभंग लाइन) कर दिया। जैसे संक्षिप्ताक्षरों का प्रयोग करके {{code|?}} {{code|PRINT}} के अतिरिक्त लाइन पर और भी उपयुक्त होना संभव है। बेसिक 7.0 एक{{samp|?STRING TOO LONG}} त्रुटि प्रदर्शित करता है यदि उपयोगकर्ता लंबाई में 160 वर्णों से अधिक प्रोग्राम लाइन में प्रवेश करता है। पहले के संस्करणों में कोई त्रुटि उत्पन्न नहीं होती है और यदि रेखा की लंबाई पार हो जाती है तो केवल तैयार संकेत दो पंक्तियों को प्रदर्शित करता है। लाइन नंबर को प्रोग्राम लाइन में वर्णों की संख्या में गिना जाता है, इसलिए पांच अंकों की लाइन संख्या के परिणामस्वरूप अंक संख्या की तुलना में चार कम वर्णों की अनुमति होगी। | ||
कमोडोर बेसिक लाइनों के निष्पादन का क्रम लाइन नंबरिंग द्वारा निर्धारित नहीं किया गया था, इसके अतिरिक्त, यह उस क्रम का पालन करता है जिसमें स्मृति में लाइनें जुड़ी हुई थीं।<ref>{{cite web|url=http://www.unusedino.de/ec64/technical/project64/mapping_c64.html|title=कमोडोर का मानचित्रण 64}}</ref>प्रोग्राम लाइन्स को स्मृति में [[अकेले लिंक की गई सूची|एकल संबद्ध सूची]] के रूप में सूचक (जिसमें अगली प्रोग्राम लाइन की शुरुआत का पता होता है), लाइन नंबर और फिर लाइन के लिए टोकन कोड के रूप में संचय किया जाता है। जब प्रोग्राम में प्रवेश किया जा रहा था, बेसिक स्मृति में प्रोग्राम लाइनों को लगातार पुनर्व्यवस्थित करेगा ताकि लाइन नंबर और सूचक सभी आरोही क्रम में हों। | कमोडोर बेसिक लाइनों के निष्पादन का क्रम लाइन नंबरिंग द्वारा निर्धारित नहीं किया गया था, इसके अतिरिक्त, यह उस क्रम का पालन करता है जिसमें स्मृति में लाइनें जुड़ी हुई थीं।<ref>{{cite web|url=http://www.unusedino.de/ec64/technical/project64/mapping_c64.html|title=कमोडोर का मानचित्रण 64}}</ref>प्रोग्राम लाइन्स को स्मृति में [[अकेले लिंक की गई सूची|एकल संबद्ध सूची]] के रूप में सूचक (जिसमें अगली प्रोग्राम लाइन की शुरुआत का पता होता है), लाइन नंबर और फिर लाइन के लिए टोकन कोड के रूप में संचय किया जाता है। जब प्रोग्राम में प्रवेश किया जा रहा था, बेसिक स्मृति में प्रोग्राम लाइनों को लगातार पुनर्व्यवस्थित करेगा ताकि लाइन नंबर और सूचक सभी आरोही क्रम में हों। चूंकि, प्रोग्राम में प्रवेश करने के बाद, पोक निर्देश के साथ हस्तचालित रूप से लाइन नंबर और सूचक को बदलने से अव्यवस्थित निष्पादन की अनुमति मिल सकती है या प्रत्येक लाइन को समान लाइन नंबर भी दे सकता है। प्रारंभिक दिनों में, जब बेसिक का व्यावसायिक उपयोग किया गया था, यह क्रिया के आकस्मिक संशोधन को हतोत्साहित करने के लिए एक [[सॉफ्टवेयर सुरक्षा]] तकनीक थी। | ||
पंक्ति संख्या 0 से 65520 तक हो सकती है और पंक्ति संख्या में कितने अंक हैं, इसकी परवाह किए बिना संचय करने के लिए पांच बाइट्स ले सकते हैं, चूंकि निष्पादन तेजी से कम अंक हैं। | पंक्ति संख्या 0 से 65520 तक हो सकती है और पंक्ति संख्या में कितने अंक हैं, इसकी परवाह किए बिना संचय करने के लिए पांच बाइट्स ले सकते हैं, चूंकि निष्पादन तेजी से कम अंक हैं। लाइन पर कई कथन डालने से कम स्मृति का उपयोग होगा और तेजी से निष्पादित होगा। | ||
{{mono|GOTO}} तथा {{mono|GOSUB}} कथन | {{mono|GOTO}} तथा {{mono|GOSUB}} कथन लाइन नंबर खोजने के लिए वर्तमान लाइन से नीचे की ओर खोज करेंगे, यदि आगे की ओर छलांग लगाई जाती है, तो पीछे की ओर कूदने की स्थिति में, वे खोज प्रारंभ करने के लिए क्रिया की शुरुआत में वापस आ जाएंगे। यह बड़े प्रोग्राम को धीमा कर देगा, इसलिए सामान्यतः उपयोग किए जाने वाले उपचर्या को प्रोग्राम की शुरुआत के करीब रखना बेहतर होता है। | ||
चर नाम केवल 2 वर्णों के लिए महत्वपूर्ण हैं, इस प्रकार चर नाम <code>VARIABLE1</code>, <code>VARIABLE2</code>, तथा <code>VA</code> सभी एक ही चर का संदर्भ देते हैं। | |||
कमोडोर बेसिक बिटवाइज़ ऑपरेटरों - {{mono|AND, OR}}, तथा {{mono|XOR}},का भी समर्थन करता है, चूंकि यह सुविधा कोर माइक्रोसॉफ्ट 6502 बेसिक कोड का हिस्सा थी, इसे सामान्यतः एपलसॉफ्ट बेसिक जैसे अन्य कार्यान्वयनों में छोड़ दिया गया था। | कमोडोर बेसिक बिटवाइज़ ऑपरेटरों - {{mono|AND, OR}}, तथा {{mono|XOR}}, का भी समर्थन करता है, चूंकि यह सुविधा कोर माइक्रोसॉफ्ट 6502 बेसिक कोड का हिस्सा थी, इसे सामान्यतः एपलसॉफ्ट बेसिक जैसे अन्य कार्यान्वयनों में छोड़ दिया गया था। | ||
कमोडोर बेसिक का मूल संख्या प्रारूप, इसके | कमोडोर बेसिक का मूल संख्या प्रारूप, इसके मूल [[एमएस बेसिक]] की तरह, अस्थिर बिंदु था। अधिकांश समकालीन बेसिक कार्यान्वयन में बाइट विशेषता ([[प्रतिपादक|घातांक]] के लिए और तीन बाइट मंटिसा के लिए उपयोग किया जाता है। तीन-बाइट मंटिसा का उपयोग करके अस्थिर बिंदु नंबर की सटीकता केवल 6.5 दशमलव अंक है, और [[राउंड-ऑफ त्रुटि|पूर्णांक त्रुटि]] सामान्य है। माइक्रोसॉफ्ट बेसिक के 6502 कार्यान्वयन में 40-बिट अस्थिर बिंदु अंकगणित का उपयोग किया गया, जिसका अर्थ है कि बेसिक-80 में पाए गए 32-बिट अस्थिर बिंदु के विपरीत चर को संचय करने के लिए पाँच बाइट्स (चार बाइट मंटिसा और घातांक के लिए बाइट) लगे। | ||
जबकि माइक्रोसॉफ्ट बेसिक के 8080/Z80 कार्यान्वयन ने पूर्णांक और दोहरे सटीक चर का समर्थन किया, 6502 कार्यान्वयन केवल | जबकि माइक्रोसॉफ्ट बेसिक के 8080/Z80 कार्यान्वयन ने पूर्णांक और दोहरे सटीक चर का समर्थन किया, 6502 कार्यान्वयन केवल अस्थिर बिंदु थे। | ||
यद्यपि कमोडोर बेसिक -32768 से 32767 की सीमा में [[हस्ताक्षरित संख्या प्रतिनिधित्व|हस्ताक्षरित पूर्णांक चर]](प्रतिशत चिह्न के साथ चिह्नित) का समर्थन करता है, व्यवहार में वे केवल सरणी चर के लिए उपयोग किए जाते हैं और सरणी तत्वों को प्रत्येक दो बाइट्स तक सीमित करके स्मृति को संरक्षित करने का कार्य करते हैं ( | यद्यपि कमोडोर बेसिक -32768 से 32767 की सीमा में [[हस्ताक्षरित संख्या प्रतिनिधित्व|हस्ताक्षरित पूर्णांक चर]](प्रतिशत चिह्न के साथ चिह्नित) का समर्थन करता है, व्यवहार में वे केवल सरणी चर के लिए उपयोग किए जाते हैं और सरणी तत्वों को प्रत्येक दो बाइट्स तक सीमित करके स्मृति को संरक्षित करने का कार्य करते हैं (सरणी का अस्थिर बिंदु सरणी के रूप में घोषित किए जाने पर 2000 तत्व 10,000 बाइट्स पर अधिकार कर लेंगे, लेकिन केवल 4000 पूर्णांक सरणी के रूप में घोषित किए जाने पर)। किसी भी चर को पूर्णांक के रूप में नकारने से बेसिक को वापस अस्थिर बिंदु में बदलने का कारण बनता है, प्रोग्राम निष्पादन को धीमा कर देता है और स्मृति को बर्बाद कर देता है क्योंकि प्रत्येक प्रतिशत चिह्न संचय करने के लिए अतिरिक्त बाइट लेता है (चूंकि यह पूर्णांक सरणियों पर भी लागू होता है, प्रोग्रामर को उनका उपयोग करने से बचना चाहिए जब तक कि बहुत अधिक न हो बड़े सरणियों का उपयोग किया जाता है जो अस्थिर बिंदु के रूप में संग्रहीत होने पर उपलब्ध स्मृति से अधिक हो जाएगा)। साथ ही यह भी संभव नहीं है {{mono|POKE}} या {{mono|PEEK}} हस्ताक्षरित पूर्णांक के रूप में परिभाषित एड्रेस के साथ 32767 से ऊपर स्मृति स्थान अवधि (।) संख्या 0 के स्थान पर उपयोग किया जा सकता है (इस प्रकार {{code|2=cbmbas|1=10 A=.}} के अतिरिक्त {{code|2=cbmbas|1=10 A=0}} या {{code|2=cbmbas|1=10 FOR A=. TO 100}} के अतिरिक्त {{code|2=cbmbas|1=10 FOR A=0 to 100}})के लिए), यह थोड़ा तेज़ निष्पादित करेगा। | ||
{{mono|SYS}}<nowiki> }}कथन, मशीन भाषा प्रोग्राम प्रारंभ करने के लिए उपयोग किया जाता है, कमोडोर द्वारा जोड़ा गया था और मूल माइक्रोसॉफ्ट बेसिक कोड में नहीं था, जिसमें मशीन भाषा रूटीन को लागू करने के लिए केवल यूएसआर क्रिया सम्मलित था। यह स्वचालित रूप से सीपीयू के रजिस्टरों को </nowiki>{{code|$30C-$30F}}(सी 64, अन्य मशीनों पर भिन्न होता है) में मूल्यों के साथ भारण करता है - इसका उपयोग मशीन भाषा रूटीन में आँकड़े पास करने के लिए या बेसिक से कर्नेल क्रिया को कॉल करने के साधन के रूप में किया जा सकता है (उदाहरण के तौर पर) ,{{code|2=cbmbas|1=POKE 780,147:SYS 65490}} चित्रपट साफ़ करता है)। | |||
चूंकि सी128 के अतिरिक्त कमोडोर 8-बिट मशीनें स्वचालित रूप से डिस्क सॉफ़्टवेयर को बूट नहीं कर सकती हैं, सामान्य तकनीक प्रोग्राम निष्पादन प्रारंभ करने के लिए{{code|lang=cbmbas|1= 10 SYS 2048}} जैसे बेसिक स्टब को सम्मलित करना है। भारण होने के बाद सॉफ़्टवेयर को स्वचालित रूप से प्रारंभ करना संभव है और उपयोगकर्ता को रन कथन टाइप करने की आवश्यकता नहीं है, यह कोड का एक टुकड़ा है जो बेसिक "तैयार" वेक्टर को{{code|$0302}}पर हुक करता है। | |||
माइक्रोसॉफ्ट बेसिक के अधिकांश अन्य संस्करणों की तरह, यदि किसी सरणी को {{mono|DIM}} कथन, के साथ घोषित नहीं किया जाता है, तो यह स्वचालित रूप से दस तत्वों पर स्थापित हो जाता है (अभ्यास 11 में क्योंकि सरणी तत्वों की गणना 0 से की जाती है)। बड़ी सरणियों को घोषित किया जाना चाहिए या जब प्रोग्राम चलाया जाता है तो बेसिक त्रुटि प्रदर्शित करेगा और एक क्रिया में सरणी को फिर से आयाम नहीं दिया जा सकता है जब तक कि सभी चर CLR कथन के माध्यम से मिटा नहीं दिए जाते। संख्यात्मक सरणियाँ स्वचालित रूप से शून्य से भर जाती हैं जब वे बनाई जाती हैं, यदि बड़ी सरणी का आयाम है तो क्रिया के निष्पादन में क्षणिक विलंब हो सकता है। | |||
स्ट्रिंग चर को डॉलर चिह्न के साथ चर नाम जोड़ के दर्शाया जाता है। इस प्रकार, चर<code>AA$</code>, <code>AA</code>, तथा <code>AA%</code> प्रत्येक को अलग-अलग समझा जाएगा। ऐरे चर को साधारण चर से भी अलग माना जाता है, इस प्रकार {{mono|A}} तथा {{mono|A(1)}}एक ही चर को संदर्भित नहीं करते हैं। एक स्ट्रिंग सरणी का आकार केवल यह दर्शाता है कि सरणी में कितने तार संग्रहीत हैं, न कि प्रत्येक तत्व का आकार, जो गतिशील रूप से आवंटित किया गया है। माइक्रोसॉफ्ट बेसिक के कुछ अन्य कार्यान्वयनों के विपरीत, कमोडोर बेसिक को प्रोग्राम के प्रारंभ में आरक्षित होने के लिए स्ट्रिंग स्पेस की आवश्यकता नहीं होती है। | |||
विपरीत, कमोडोर की सभी मशीनों में अंतर्निहित घड़ी होती है, जो 0 पर प्रारंभ होती है और पीआईए/वाया/टेड/सीआईए टाइमर के प्रत्येक टिक के साथ आधुनिकीकरण की जाती है, इस प्रकार प्रति सेकंड 60 बार ,इसे बेसिक, {{mono|TI}} तथा {{mono|TI$}},में दो प्रणाली चर निर्धारित किए गए हैं, जिनमें दोनों में वर्तमान समय है। टीआई केवल पढ़ने के लिए है और इसे संशोधित नहीं किया जा सकता है, ऐसा करने से सिंटैक्स त्रुटि संदेश प्राप्त होगा। टीआई $ का उपयोग छह नंबर स्ट्रिंग के माध्यम से समय निर्धारित करने के लिए किया जा सकता है ( त्रुटि परिणाम छह नंबरों के अतिरिक्त स्ट्रिंग का उपयोग करने से होता है)। घड़ी समयनिर्धारक का बहुत विश्वसनीय तरीका नहीं है क्योंकि जब भी व्यवधान बंद हो जाता है (कुछ कर्नल रूटीन द्वारा किया जाता है) बंद हो जाता है और आईईसी (या पीईटी पर आईईईई पोर्ट) पोर्ट तक पहुँचने से कुछ टिकों द्वारा घड़ी के आधुनिकीकरण को धीमा कर दिया जाएगा। | |||
{{mono|RND}}<nowiki> कमोडोर बेसिक में }} क्रिया यादृच्छिक संख्या उत्पन्न करने के लिए घड़ी का उपयोग कर सकता है, यह </nowiki>{{code|RND(0)}} द्वारा पूरा किया जाता है, चूंकि यह अपेक्षाकृत सीमित उपयोग का है क्योंकि केवल 0 और 255 के बीच की संख्या ही वापस आती है। अन्यथा, {{mono|RND}} माइक्रोसॉफ्ट बेसिक के अन्य कार्यान्वयनों के समान ही काम करता है जिसमें सी 64 पर स्मृति स्थानों{{code|$8B-$8F}} पर पावर पर संग्रहीत एक निश्चित 5-बाइट बीज मूल्य के माध्यम से एक छद्म-यादृच्छिक अनुक्रम का उपयोग किया जाता है (स्थान अन्य पर भिन्न होता है) मशीनें)। {{mono|RND}} 0 से अधिक किसी भी संख्या के साथ {{mono|RND}} क्रिया और बीज मान के साथ सम्मलित मूल्य से समामेलित एक यादृच्छिक संख्या उत्पन्न करेगा, जिसे RND क्रिया निष्पादित होने पर हर बार 1 से आधुनिकीकरण किया जाता है। ऋणात्मक संख्या वाला {{mono|RND}} संख्या द्वारा निर्दिष्ट वर्तमान बीज मान के क्रम में एक बिंदु पर जाता है। | |||
{{mono|RND}}<nowiki> कमोडोर बेसिक में }}क्रिया यादृच्छिक संख्या उत्पन्न करने के लिए घड़ी का उपयोग कर सकता है, यह </nowiki>{{code|RND(0)}}द्वारा पूरा किया जाता है, चूंकि यह अपेक्षाकृत सीमित उपयोग का है क्योंकि केवल 0 और 255 के बीच की संख्या ही वापस आती है। अन्यथा, {{mono|RND}} माइक्रोसॉफ्ट बेसिक के अन्य कार्यान्वयनों के समान ही काम करता है जिसमें | |||
चूंकि {{mono|RND}} कथन के साथ वास्तविक यादृच्छिक संख्या पीढ़ी असंभव है, यह यादृच्छिक संख्या के लिए एसआईडी चिप के सफेद शोर चैनल का उपयोग करने के लिए सी 64 और सी 128 पर अधिक विशिष्ट है। | चूंकि {{mono|RND}} कथन के साथ वास्तविक यादृच्छिक संख्या पीढ़ी असंभव है, यह यादृच्छिक संख्या के लिए एसआईडी चिप के सफेद शोर चैनल का उपयोग करने के लिए सी 64 और सी 128 पर अधिक विशिष्ट है। | ||
Line 99: | Line 97: | ||
बेसिक 2.0 स्ट्रिंग्स के बेहद धीमे कूड़ा संग्रह से कुख्यात रूप से पीड़ित है। कचरा संग्रह स्वचालित रूप से किसी भी समय एक {{mono|FRE}} क्रिया निष्पादित किया जाता है और यदि कई स्ट्रिंग चर और सरणियाँ हैं जिन्हें किसी प्रोग्राम के दौरान हेरफेर किया गया है, तो उन्हें साफ़ करने में सबसे खराब परिस्थितियों में एक घंटे से अधिक समय लग सकता है। कचरा संग्रह को रोकना भी संभव नहीं है क्योंकि बेसिक इस रूटीन को निष्पादित करते समय रन/स्टॉप कुंजी को स्कैन नहीं करता है। बेसिक 4.0 ने बैक सूचक के साथ एक बेहतर कचरा संग्रह प्रणाली की शुरुआत की और कमोडोर बेसिक के बाद के सभी कार्यान्वयनों में भी यह है। | बेसिक 2.0 स्ट्रिंग्स के बेहद धीमे कूड़ा संग्रह से कुख्यात रूप से पीड़ित है। कचरा संग्रह स्वचालित रूप से किसी भी समय एक {{mono|FRE}} क्रिया निष्पादित किया जाता है और यदि कई स्ट्रिंग चर और सरणियाँ हैं जिन्हें किसी प्रोग्राम के दौरान हेरफेर किया गया है, तो उन्हें साफ़ करने में सबसे खराब परिस्थितियों में एक घंटे से अधिक समय लग सकता है। कचरा संग्रह को रोकना भी संभव नहीं है क्योंकि बेसिक इस रूटीन को निष्पादित करते समय रन/स्टॉप कुंजी को स्कैन नहीं करता है। बेसिक 4.0 ने बैक सूचक के साथ एक बेहतर कचरा संग्रह प्रणाली की शुरुआत की और कमोडोर बेसिक के बाद के सभी कार्यान्वयनों में भी यह है। | ||
बेसिक 2.0 में {{mono|FRE}}क्रिया एक और तकनीकी दोष से ग्रस्त है जिसमें यह 32768 से अधिक हस्ताक्षरित संख्याओं को संभाल नहीं सकता है, इस प्रकार यदि क्रिया को C64 (38k बेसिक स्मृति) पर लागू किया जाता है, तो मुफ्त बेसिक स्मृति की एक नकारात्मक मात्रा प्रदर्शित की जाएगी (65535 को जोड़कर) रिपोर्ट की गई संख्या सही मात्रा में मुफ्त स्मृति प्राप्त करेगी)। पीईटी और वीआईसी-20 के पास कभी भी बेसिक के लिए उपलब्ध कुल स्मृति का 32k से अधिक नहीं था, इसलिए C64 के विकसित होने तक यह सीमा स्पष्ट नहीं हुई। बेसिक 3.5 और 7.0 पर एफआरई क्रिया ने इस समस्या को ठीक किया और बेसिक 7.0 पर एफआरई को भी दो कार्यों में "विभाजित" किया गया, एक फ्री बेसिक प्रोग्राम टेक्स्ट स्मृति प्रदर्शित करने के लिए और दूसरा फ्री | बेसिक 2.0 में {{mono|FRE}}क्रिया एक और तकनीकी दोष से ग्रस्त है जिसमें यह 32768 से अधिक हस्ताक्षरित संख्याओं को संभाल नहीं सकता है, इस प्रकार यदि क्रिया को C64 (38k बेसिक स्मृति) पर लागू किया जाता है, तो मुफ्त बेसिक स्मृति की एक नकारात्मक मात्रा प्रदर्शित की जाएगी (65535 को जोड़कर) रिपोर्ट की गई संख्या सही मात्रा में मुफ्त स्मृति प्राप्त करेगी)। पीईटी और वीआईसी-20 के पास कभी भी बेसिक के लिए उपलब्ध कुल स्मृति का 32k से अधिक नहीं था, इसलिए C64 के विकसित होने तक यह सीमा स्पष्ट नहीं हुई। बेसिक 3.5 और 7.0 पर एफआरई क्रिया ने इस समस्या को ठीक किया और बेसिक 7.0 पर एफआरई को भी दो कार्यों में "विभाजित" किया गया, एक फ्री बेसिक प्रोग्राम टेक्स्ट स्मृति प्रदर्शित करने के लिए और दूसरा फ्री चर स्मृति प्रदर्शित करने के लिए। | ||
== वैकल्पिक == | == वैकल्पिक == | ||
Line 114: | Line 112: | ||
इसके अतिरिक्त, सभी चर को वैश्विक चर के रूप में माना जाता है। FOR...NEXT निर्माण से परे स्पष्ट रूप से परिभाषित लूप बनाना मुश्किल है, अधिकांशतः प्रोग्रामर को {{mono|[[GOTO]]}} निर्देश पर भरोसा करने का कारण बनता है (इसे बाद में {{mono|DO, LOOP, WHILE, UNTIL}}, तथा {{mono|EXIT}} निर्देश के साथ बेसिक 3.5 में सुधारा गया था) ). कुछ कार्यों को करने के लिए ध्वज चरों को अधिकांशतः बनाने की आवश्यकता होती है। | इसके अतिरिक्त, सभी चर को वैश्विक चर के रूप में माना जाता है। FOR...NEXT निर्माण से परे स्पष्ट रूप से परिभाषित लूप बनाना मुश्किल है, अधिकांशतः प्रोग्रामर को {{mono|[[GOTO]]}} निर्देश पर भरोसा करने का कारण बनता है (इसे बाद में {{mono|DO, LOOP, WHILE, UNTIL}}, तथा {{mono|EXIT}} निर्देश के साथ बेसिक 3.5 में सुधारा गया था) ). कुछ कार्यों को करने के लिए ध्वज चरों को अधिकांशतः बनाने की आवश्यकता होती है। | ||
बाद में कमोडोर और अन्य प्लेटफार्मों पर | बाद में कमोडोर और अन्य प्लेटफार्मों पर बेसिक संस्करणों में DELETE और RENUMBER निर्देश के साथ-साथ एक AUTO लाइन नंबरिंग निर्देश सम्मलित था जो एक चयनित वृद्धि के अनुसार स्वचालित रूप से लाइन नंबरों का चयन और सम्मिलित करेगा। पहले कमोडोर के बेसिक्स में डिबगिंग निर्देश की भी कमी थी, जिसका अर्थ है कि बग और अप्रयुक्त चर को फंसाना मुश्किल है। {{mono|IF...THEN...ELSE}} संरचनाएं, Z80 माइक्रोसॉफ्ट बेसिक का एक मानक हिस्सा, कमोडोर बेसिक के पिछले संस्करणों में अनुपलब्ध होने के बाद बेसिक 3.5 में जोड़ा गया था। | ||
== यूजर इंटरफेस के रूप में प्रयोग करें == | == यूजर इंटरफेस के रूप में प्रयोग करें == | ||
सामान्यतः अन्य घरेलू संगणक के साथ, कमोडोर की मशीनें सीधे बेसिक दुभाषिया में बूट होती हैं। सॉफ्टवेयर को भारण और निष्पादित करने के लिए बेसिक की फाइल और प्रोग्रामिंग निर्देश को सीधे मोड में अंकित किया जा सकता है। यदि RUN/STOP कुंजी का उपयोग करके प्रोग्राम निष्पादन को रोक दिया गया था, तो चर मानों को RAM में संरक्षित किया जाएगा और डिबगिंग के लिए प्रिंट किया जा सकता है। 128 ने अपने दूसरे 64k बैंक को | सामान्यतः अन्य घरेलू संगणक के साथ, कमोडोर की मशीनें सीधे बेसिक दुभाषिया में बूट होती हैं। सॉफ्टवेयर को भारण और निष्पादित करने के लिए बेसिक की फाइल और प्रोग्रामिंग निर्देश को सीधे मोड में अंकित किया जा सकता है। यदि RUN/STOP कुंजी का उपयोग करके प्रोग्राम निष्पादन को रोक दिया गया था, तो चर मानों को RAM में संरक्षित किया जाएगा और डिबगिंग के लिए प्रिंट किया जा सकता है। 128 ने अपने दूसरे 64k बैंक को चर भंडारण के लिए भी समर्पित किया, जिससे मूल्यों को एक तक बने रहने की अनुमति मिली <code>NEW</code> या <code>RUN</code> निर्देश जारी किया था। यह, कमोडोर बेसिक के साथ सम्मलित उन्नत [[स्क्रीन संपादक|चित्रपट संपादक]] के साथ प्रोग्रामिंग वातावरण को [[REPL]] जैसा अनुभव देता है, प्रोग्रामर किसी भी चित्रपट स्थान पर प्रोग्राम लाइनों को सम्मिलित और संपादित कर सकते हैं, अंतःक्रियात्मक रूप से प्रोग्राम का निर्माण कर सकते हैं।<ref>{{cite book|url=https://books.google.com/books?id=UbvzBwAAQBAJ&pg=PA9|title=कमोडोर 64 का एक परिचय: प्रोग्रामिंग में रोमांच|isbn=9781489967879 |last1=Scrimshaw |first1=N. B. |date=11 November 2013 }}</ref> यह CP/M या [[MS-DOS]] जैसे उस समय के व्यवसाय-उन्मुख ऑपरेटिंग प्रणाली के विपरीत है, जो सामान्यतः [[कमांड लाइन इंटरफेस|निर्देश लाइन इंटरफेस]] में बूट होता है। यदि इन प्लेटफॉर्म्स पर प्रोग्रामिंग लैंग्वेज की आवश्यकता होती थी, तो इसे अलग से भारण करना पड़ता था। | ||
जबकि कमोडोर बेसिक के कुछ संस्करणों में डिस्क-विशिष्ट सम्मलित थे <code>DLOAD</code> तथा <code>DSAVE</code> निर्देश, कमोडोर 64 में निर्मित संस्करण में इनकी कमी थी, जिसके लिए उपयोगकर्ता को डिस्क ड्राइव के उपकरण नंबर (सामान्यतः 8 या 9) को मानक के अनुसार निर्दिष्ट करने की आवश्यकता होती है। <code>LOAD</code> निर्देश, जो अन्यथा टेप के लिए व्यतिक्रम था। कमोडोर 64s बेसिक 2.0 से एक और चूक थी a <code>DIRECTORY</code> मुख्य स्मृति को साफ़ किए बिना डिस्क की सामग्री प्रदर्शित करने का निर्देश। 64 पर, डिस्क पर फ़ाइलों को देखने को एक प्रोग्राम भारण करने के रूप में कार्यान्वित किया गया था, जो सूचीबद्ध होने पर निर्देशिका को छद्म बेसिक प्रोग्राम के रूप में दिखाया गया था, फ़ाइल के ब्लॉक आकार को लाइन नंबर के रूप में दिखाया गया था। यह वर्तमान में भारण किए गए प्रोग्राम को अधिलेखित करने का प्रभाव था। डॉस वेज जैसे एडॉन्स ने डायरेक्ट्री सूची को सीधे चित्रपट स्मृति में रेंडर करके इस पर काबू पाया। | जबकि कमोडोर बेसिक के कुछ संस्करणों में डिस्क-विशिष्ट सम्मलित थे <code>DLOAD</code> तथा <code>DSAVE</code> निर्देश, कमोडोर 64 में निर्मित संस्करण में इनकी कमी थी, जिसके लिए उपयोगकर्ता को डिस्क ड्राइव के उपकरण नंबर (सामान्यतः 8 या 9) को मानक के अनुसार निर्दिष्ट करने की आवश्यकता होती है। <code>LOAD</code> निर्देश, जो अन्यथा टेप के लिए व्यतिक्रम था। कमोडोर 64s बेसिक 2.0 से एक और चूक थी a <code>DIRECTORY</code> मुख्य स्मृति को साफ़ किए बिना डिस्क की सामग्री प्रदर्शित करने का निर्देश। 64 पर, डिस्क पर फ़ाइलों को देखने को एक प्रोग्राम भारण करने के रूप में कार्यान्वित किया गया था, जो सूचीबद्ध होने पर निर्देशिका को छद्म बेसिक प्रोग्राम के रूप में दिखाया गया था, फ़ाइल के ब्लॉक आकार को लाइन नंबर के रूप में दिखाया गया था। यह वर्तमान में भारण किए गए प्रोग्राम को अधिलेखित करने का प्रभाव था। डॉस वेज जैसे एडॉन्स ने डायरेक्ट्री सूची को सीधे चित्रपट स्मृति में रेंडर करके इस पर काबू पाया। | ||
Line 127: | Line 125: | ||
* V1.0: पीईटी 2001 [[चिकलेट कीबोर्ड|चिकलेट कुंजीपटल]] और बिल्ट-इन [[कमोडोर डाटासेट]] (मूल पीईटी) के साथ | * V1.0: पीईटी 2001 [[चिकलेट कीबोर्ड|चिकलेट कुंजीपटल]] और बिल्ट-इन [[कमोडोर डाटासेट]] (मूल पीईटी) के साथ | ||
** सरणियाँ 256 तत्वों तक सीमित हैं | ** सरणियाँ 256 तत्वों तक सीमित हैं | ||
** PEEK और | ** PEEK और पोक निर्देश $ C000 से ऊपर के बेसिक आरओ एम स्थानों पर स्पष्ट रूप से अक्षम हैं | ||
* V2.0 (पहली रिलीज़): पीईटी 2001 फुल-ट्रैवल कुंजीपटल और सुधार रोम के साथ | * V2.0 (पहली रिलीज़): पीईटी 2001 फुल-ट्रैवल कुंजीपटल और सुधार रोम के साथ | ||
** [[IEEE-488]] समर्थन जोड़ें | ** [[IEEE-488|आईईईई-488]] समर्थन जोड़ें | ||
** कचरा संग्रह में सुधार हुआ<ref name="zimmers.net">http://www.zimmers.net/anonftp/pub/cbm/firmware/README.txt {{Bare URL plain text|date=March 2022}}</ref> | ** कचरा संग्रह में सुधार हुआ<ref name="zimmers.net">http://www.zimmers.net/anonftp/pub/cbm/firmware/README.txt {{Bare URL plain text|date=March 2022}}</ref> | ||
** सरणी बग ठीक करें | ** सरणी बग ठीक करें | ||
Line 167: | Line 165: | ||
** नियंत्रित समय विलंब: <code>SLEEP</code> | ** नियंत्रित समय विलंब: <code>SLEEP</code> | ||
** स्मृति प्रबंधन: <code>SWAP,FETCH,STASH,FRE(1)</code> | ** स्मृति प्रबंधन: <code>SWAP,FETCH,STASH,FRE(1)</code> | ||
** प्रोग्राम कोड को | ** प्रोग्राम कोड को चर से अलग संचय करने के लिए 128 के [[बैंक स्विचिंग]] का उपयोग किया। यदि प्रोग्राम GOTO निर्देश के साथ प्रारंभ किया गया था, तो प्रोग्राम निष्पादन में चर मान संरक्षित किए जाएंगे। | ||
** कमोडोर डॉस: <code>BOOT,DVERIFY</code> | ** कमोडोर डॉस: <code>BOOT,DVERIFY</code> | ||
** सीपीयू गति समायोजन: <code>FAST,SLOW</code> (2 बनाम 1 मेगाहर्ट्ज) | ** सीपीयू गति समायोजन: <code>FAST,SLOW</code> (2 बनाम 1 मेगाहर्ट्ज) | ||
Line 196: | Line 194: | ||
*साइमन्स बेसिक (C64, कार्ट्रिज) (कमोडोर) | *साइमन्स बेसिक (C64, कार्ट्रिज) (कमोडोर) | ||
*[[ग्राफिक्स बेसिक]] (C64, फ्लॉपी डिस्क) ([[हेसवेयर]]) | *[[ग्राफिक्स बेसिक]] (C64, फ्लॉपी डिस्क) ([[हेसवेयर]]) | ||
*[[बुनियादी 8]] (C128, फ्लॉपी डिस्क और वैकल्पिक आंतरिक आरओ एम चिप) ([[वालरूसॉफ्ट]]) | *[[बुनियादी 8|बेसिक 8]] (C128, फ्लॉपी डिस्क और वैकल्पिक आंतरिक आरओ एम चिप) ([[वालरूसॉफ्ट]]) | ||
==संदर्भ== | ==संदर्भ== |
Revision as of 10:12, 15 December 2022
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
(Learn how and when to remove this template message)
|
द्वारा डिज़ाइन किया गया | Microsoft |
---|---|
Developer | Microsoft |
पहली प्रस्तुति | 1977 |
Stable release | V7.0
/ 1985 |
Preview release | V10.0
/ 1991 |
प्लेटफॉर्म | PET to the C128 |
कमोडोर बेसिक, जिसे पीईटी बेसिक या सीबीएम-बेसिक के रूप में भी जाना जाता है, कमोडोर इंटरनेशनल की 8 बिट होम संगणक लाइन में प्रयुक्त बेसिक प्रोग्रामिंग भाषा की उपभाषा (कंप्यूटिंग) है, जो 1977 के कमोडोर पीईटी से 1985 के कमोडोर 128 तक फैली हुई है।
कोर 6502 माइक्रोसॉफ्ट बेसिक पर आधारित है, और इस तरह यह उस समय के अन्य 6502 बेसिक के साथ कई विशेषताओं को साझा करता है, जैसे कि एपलसॉफ्ट बेसिक। कमोडोर ने 1977 में "एक बार भुगतान करें, कोई रॉयल्टी नहीं" के आधार पर माइक्रोसॉफ्ट से बेसिक लाइसेंस प्राप्त किया, जब जैक ट्रामियल ने बिल गेट्स के $3 प्रति यूनिट शुल्क के प्रस्ताव को यह कहते हुए ठुकरा दिया, "मैं पहले से ही शादीशुदा हूं," और $25,000 से अधिक का भुगतान स्थायी लाइसेंस के लिए नहीं करूंगा।[1]
मूल पीईटी संस्करण कुछ संशोधनों के साथ मूल माइक्रोसॉफ्ट कार्यान्वयन के समान था। C64 पर बेसिक 2.0 भी समान था, और C128s (C64 मोड में) और अन्य मॉडलों पर भी देखा गया था। बाद में पीईटी में मूल के समान बेसिक 4.0, लेकिन फ्लॉपी डिस्क के साथ काम करने के लिए कई निर्देश जोड़े गए।
बेसिक 3.5 वास्तव में विचलित करने वाला पहला था, C16 और प्लस/4 पर ग्राफिक्स और साउंड सपोर्ट के लिए कई निर्देश जोड़े गए। बेसिक 7.0 को कमोडोर 128 के साथ सम्मलित किया गया था, और इसमें प्लस/4 के बेसिक 3.5 से संरचित प्रोग्रामिंग निर्देश सम्मलित थे, साथ ही मशीन की नई क्षमताओं का लाभ उठाने के लिए विशेष रूप से डिज़ाइन किए गए संकेतशब्द भी सम्मलित थे। स्प्राइट संपादक और मशीन भाषा मॉनिटर जोड़ा गया। अंतिम, बेसिक 10.0, अप्रकाशित कमोडोर 65 का हिस्सा था।
इतिहास
कमोडोर ने फ्लैट-फीस बेसिक का स्रोत कोड लिया और इसे अपने सभी अन्य 8-बिट होम संगणक के लिए आंतरिक रूप से विकसित किया। यह कमोडोर 128 (V7.0 के साथ) तक नहीं था कि माइक्रोसॉफ्ट कॉपीराइट नोटिस प्रदर्शित किया गया था। चूंकि, माइक्रोसॉफ्ट ने संस्करण 2 में ईस्टर एग का निर्माण किया था या कमोडोर बेसिक को "सुधार" किया था जो इसकी सिद्धता को सिद्ध करता है: (अस्पष्ट) निर्देश WAIT 6502, 1
टाइप करने पर, 1 का परिणामMicrosoft!
होगा! चित्रपट पर दिखाई दे रहा है। (ईस्टर एग को अच्छी तरह से अस्पष्ट किया गया था - दुभाषिया की किसी भी असावधानी संदेश दिखाई नहीं दिया।)[2]
लोकप्रिय कमोडोर 64 आरओएम में बेसिक v2.0 के साथ आया, भले ही संगणक को पीईटी/सीबीएम श्रृंखला के संस्करण 4.0 के बाद जारी किया गया था क्योंकि 64 का उद्देश्य घरेलू संगणक के रूप में था, जबकि पीईटी/सीबीएम श्रृंखला व्यवसाय और शैक्षिक उपयोग करें जहां उनकी अंतर्निहित प्रोग्रामिंग भाषा को अधिक भारी रूप से उपयोग करने के लिए माना जाता था पर लक्षित थी। इसने निर्माण लागत को बचाया, क्योंकि V2 छोटे रोम में उपयुक्त हो गया।
This section has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
(Learn how and when to remove this template message)
|
प्रोग्राम संपादन
कमोडोर के रीड ऑनली मैमोरी-रेजिडेंट बेसिक दुभाषिया और करनाल एक सुविधाजनक सुविधा दृश्य संपादक थी।[3][4] चूंकि कमोडोर कुंजीपटल में केवल दो कर्सर कुंजियाँ होती हैं, जो परिवर्तित कुंजी के आयोजित होने पर वैकल्पिक दिशा में होती हैं, चित्रपट संपादक ने उपयोगकर्ताओं को चित्रपट पर कहीं से भी सीधे निर्देश अंकित करने या प्रोग्राम लाइनों को निविष्टि करने और संपादित करने की अनुमति दी। यदि एक लाइन को एक लाइन नंबर के साथ उपसर्ग किया गया था, तो इसे प्रोग्राम स्मृति में टोकनऔर संचय किया गया था। जब भी कर्सर लाइन पर होता है, तो किसी संख्या से प्रारंभ नहीं होने वाली पंक्तियों को RETURN कुंजी दबाकर निष्पादित किया जाता है। इसने उस समय के अन्य सामान्य होम संगणक बेसिक्स की तुलना में प्रोग्राम प्रविष्टि इंटरफेस में महत्वपूर्ण सुधार को चिह्नित किया, जो सामान्यतः लाइन संपादकों का उपयोग करता था, जिसे एक अलगEDIT
निर्देश द्वारा लागू किया जाता था, या "कॉपी कर्सर" जो कर्सर की स्थिति में लाइन को काट देता था।
इसमें कॉम्पैक्ट कैसेट सहित किसी भी उपकरण में नामित फाइलों को सहेजने की क्षमता भी थी - पीईटी के दिनों में एक लोकप्रिय भंडारण उपकरण, और एक जो कि 8-बिट कमोडोर के पूरे जीवनकाल में बड़े पैमाने पर भंडारण के सस्ते रूप के रूप में उपयोग में रहा। अधिकांश प्रणाली केवल डिस्केट पर फ़ाइल नामों का समर्थन करते हैं, जिससे अन्य उपकरणों पर कई फाइलों को सहेजना अधिक कठिन हो जाता है। इन अन्य प्रणालियों में से एक के उपयोगकर्ता को फ़ाइल के स्थान पर अभिलेखी के काउंटर डिस्प्ले को नोट करना था, लेकिन यह गलत था और त्रुटि की संभावना थी। पीईटी (और बेसिक 2.0) के साथ, कैसेट की फाइलों को नाम से अनुरोध किया जा सकता है। उपकरण किसी भी गैर-मिलान वाले फ़ाइल नामों को अनदेखा करते हुए आँकड़े को क्रमिक रूप से पढ़कर फ़ाइल नाम की खोज करेगा। फाइल प्रणाली को प्रभावशाली भंडारण आलेख संरचना द्वारा भी समर्थित किया गया था जिसे फाइलों में भारण या सहेजा जा सकता था। अन्य उत्पादक द्वारा उपयोग किए जाने वाले कम खर्चीले (और कम विश्वसनीय) अनुरूप तरीकों के अतिरिक्त कमोडोर कैसेट आँकड़े को अंकीय रूप से आलेख किया गया था। इसलिए, मानक टेप अभिलेखी के अतिरिक्त विशेष डेटासेट की आवश्यकता थी। एडेप्टर (अनुकूलित्र) उपलब्ध थे जो मानक अभिलेखी के उपयोग की अनुमति देने के लिए अनुरूप से अंकीय परिवर्तक का उपयोग करते थे, लेकिन ये डेटासेट की तुलना में केवल थोड़ा कम खर्च करते थे।
LOAD }} निर्देश का उपयोग वैकल्पिक मापदण्ड, 1 के साथ किया जा सकता है, जो फ़ाइल के पहले दो बाइट्स में निहित स्मृति एड्रेस में प्रोग्राम को भारण करेगा (इन बाइट्स को छोड़ दिया जाता है और स्मृति में नहीं रखा जाता है)। यदि 1 मापदण्ड का उपयोग नहीं किया जाता है, तो प्रोग्राम बेसिक प्रोग्राम क्षेत्र की शुरुआत में भारण हो जाएगा, जो मशीनों के बीच व्यापक रूप से भिन्न होता है। कुछ कमोडोर बेसिक वेरिएंट्स नेBLOAD
तथा BSAVE
निर्देश की आपूर्ति की जो एपलसॉफ्ट बेसिक में उनके समकक्षों की तरह काम करते थे, निर्दिष्ट स्मृति स्थानों से बिटमैप्स को भारण या सुरक्षित करते थे।
पीईटी पुनर्निधारणीय प्रोग्रामों का समर्थन नहीं करता है और LOAD निर्देश हमेशा प्रोग्राम फ़ाइल में निहित पहले दो बाइट्स पर भारण होगा। अन्य कमोडोर मशीनों पर सहेजे गए बेसिक प्रोग्रामों को भारण करने का प्रयास करते समय इसने समस्या पैदा की क्योंकि वे पीईटी के बेसिक प्रोग्राम की अपेक्षा के मुकाबले उच्च एड्रेस पर भारण होंगे, प्रोग्राम को उचित स्थान पर "स्थानांतरित" करने के लिए वैकल्पिक हल थे। यदि कोई प्रोग्राम सीबीएम-II मशीन पर सहेजा गया था, तो उसे पीईटी पर भारण करने का एकमात्र तरीका डिस्क सेक्टर संपादक के साथ पहले दो बाइट्स को संशोधित करना था क्योंकि सीबीएम-II श्रृंखला में उनका बेसिक प्रोग्राम क्षेत्र $0 था, जिसका परिणाम पीईटी में शून्य पृष्ठ में भारण करने और लॉक करने का प्रयास किया जा रहा है।
कमोडोर बेसिक संकेतशब्द (संगणक प्रोग्रामिंग) को पहले अपरिवर्तित कीप्रेस अंकित करके और फिर अगले अक्षर के परिवर्तित किए गए कीप्रेस को अंकित करके संक्षिप्त किया जा सकता है। उच्च बिट स्थापित करता है, जिसके कारण दुभाषिया पढ़ना बंद कर देता है और लुकअप तालिका के अनुसार कथन को विश्लेषण करता है। इसका मतलब यह था कि जहां तक हाई बिट स्थापित किया गया था, वहां तक के कथन को पूरे निर्देश को टाइप करने के विकल्प के रूप में स्वीकार किया गया था। चूंकि, सभी बेसिक संकेतशब्द स्मृति में एकल बाइट टोकन के रूप में संग्रहीत किए गए थे, यह अनुकूलन के अतिरिक्त कथन प्रविष्टि के लिए सुविधा थी।
डिफॉल्ट बड़ा अक्षर-केवल अक्षर स्थापित में, परिवर्तित किए गए अक्षर ग्राफिक्स सिंबल के रूप में दिखाई देते हैं, उदाहरण निर्देश GOTO
संक्षिप्त रूप मेंG{Shift-O}
हो सकता है (जो चित्रपट पर GΓ
जैसा दिखता है)। ऐसे अधिकांश निर्देश दो अक्षर लंबे थे, लेकिन कुछ मामलों में वे लंबे थे। इस तरह के मामलों में, अस्पष्टता थी, इसलिए निर्देश के अधिक अपरिवर्तित अक्षरों की आवश्यकता थी, जैसे GO{Shift-S}
(GO♥
) को GOSUB
.के लिए आवश्यक होना। कुछ निर्देश का कोई संक्षिप्त रूप, या तो अन्य निर्देश के साथ संक्षिप्तता या अस्पष्टता के कारण नहीं था। उदाहरण के लिए, निर्देश,INPUT
का कोई संक्षिप्त नाम नहीं था क्योंकि इसकी वर्तनी अलग INPUT#
संकेतशब्द से टकराई थी, जो संकेतशब्द लुकअप तालिका की शुरुआत के करीब स्थित थी। अत्यधिक उपयोग किए जाने वालेPRINT
निर्देश में एक ही था ?
शॉर्टकट, जैसा कि अधिकांश माइक्रोसॉफ्ट बेसिक बोलियों में आम था। स्थानांतरित अक्षरों के साथ निर्देश को संक्षिप्त करना कमोडोर बेसिक के लिए अद्वितीय है।
इस टोकनिंग पद्धति में गड़बड़ थी जैसे कि यदि कोई REM
(कोड में टिप्पणी जोड़ने के लिए बेसिक कथन) के बाद{Shift-L}
सम्मलित करता है, तो प्रोग्राम सूची को देखने की कोशिश करते समय, बेसिक दुभाषिया तुरंत सूची को रद्द कर देगा ?SYNTAX ERROR
प्रदर्शित करें और READY. संकेत
पर वापस लौटें। इस गड़बड़ी का उपयोग उन प्रोग्रामरों द्वारा कुछ प्रभाव के लिए किया गया था जो अपने काम की कोशिश करना और उसकी रक्षा करना चाहते थे, चूंकि इसे दरकिनार करना काफी आसान था।
संकेतशब्द को संक्षिप्त करके, एकल प्रोग्राम लाइन पर अधिक कोड उपयुक्त करना संभव था (जो 40-क्रमभंग डिस्प्ले पर दो चित्रपट लाइन ले सकता है - अर्थात, C64 या पीईटी, या वीआईसी-20 के 22-क्रमभंग डिस्प्ले पर चार लाइन)। इसने उपरि पर थोड़ी बचत के लिए अन्यथा आवश्यक अतिरिक्त प्रोग्राम लाइनों को संचय करने की अनुमति दी, लेकिन इससे अधिक कुछ नहीं। सभी बेसिक निर्देश को टोकन किया गया था और स्मृति में 1 बाइट (या दो, बेसिक 7 या बेसिक 10 के कई निर्देश के मामले में) लिया गया था, चाहे वे किसी भी तरह से अंकित किए गए हों। इतनी लंबी लाइनें संपादित करने में परेशानी होती थीं।LIST
निर्देश ने पूरे निर्देश संकेतशब्द को प्रदर्शित किया - प्रोग्राम लाइन को 2 या 4 चित्रपट लाइनों से आगे बढ़ाकर प्रोग्राम स्मृति में प्रवेश किया जा सकता है।
प्रदर्शन
मूल माइक्रोसॉफ्ट बेसिक दुभाषिया (प्रोग्रामिंग) की तरह, कमोडोर बेसिक मशीन कोड से धीमा है। परीक्षण के परिणामों से पता चला है कि रीड ओनली मेमरी से यादृच्छिक अभिगम स्मृति में 16 किलोबाइट की प्रतिलिपि बनाने में बेसिक में मिनट से अधिक की तुलना में मशीन कोड में सेकंड से भी कम समय लगता है।[citation needed] दुभाषिया की तुलना में तेजी से निष्पादित करने के लिए, प्रोग्रामर ने निष्पादन को गति देने के लिए विभिन्न तकनीकों का उपयोग करना प्रारंभ कर दिया। एक शाब्दिक मूल्यों का उपयोग करने के अतिरिक्त चर में अधिकांशतः उपयोग किए जाने वाले अस्थिर बिंदु मानों को संग्रहीत करना था, क्योंकि एक चर नाम की व्याख्या शाब्दिक संख्या की व्याख्या करने की तुलना में तेज़ थी। चूंकि अस्थिर बिंदु सभी निर्देश के लिए व्यतिक्रम प्रकार है, इसलिए पूर्णांक के अतिरिक्त अस्थिर बिंदु नंबरों को तर्क के रूप में उपयोग करना तेज़ है। जब गति महत्वपूर्ण थी, तो कुछ प्रोग्रामर ने बेसिक प्रोग्राम के अनुभागों को 6502 या एमओएस टेक्नोलॉजी 6510 समुच्चय भाषा में परिवर्तित कर दिया, जिसे बेसिक प्रोग्राम के अंत में फ़ाइल से अलग से भारण किया गया था या तथ्य कथन से स्मृति में पोक एड किया गया था, और एसवाईएस निर्देश का उपयोग या तो डायरेक्ट मोड से या प्रोग्राम से ही करके बेसिक से निष्पादित किया गया था। जब मशीन भाषा की निष्पादन गति बहुत अधिक थी, जैसे किसी खेल के लिए या उपयोगकर्ता निविष्टि की प्रतीक्षा करते समय, प्रोग्रामर चयनित स्मृति स्थानों को पढ़कर मतदान कर सकते थे (जैसे $C6
[5] 64 के लिए, या$D0
[6] के लिए 128, कुंजीपटल कतार के आकार को दर्शाता है) निष्पादन में देरी या रोक के लिए।
कमोडोर बेसिक की अनूठी विशेषता चित्रपट को साफ़ करने या किसी प्रोग्राम के भीतर कर्सर की स्थिति जैसे कार्यों को करने के लिए नियंत्रण कोड का उपयोग है, इन्हें या तोPRINT CHR$(X)
निर्देश जारी करके लागू किया जा सकता है जहां X जारी किए जाने वाले नियंत्रण कोड के अनुरूप है (उदाहरण के लिए,PRINT CHR$(147)
चित्रपट को साफ़ करने के लिए नियंत्रण कोड है) या कुंजी दबाकर उद्धरण चिह्नों के बीच प्रश्न, इस प्रकार उद्धरण चिह्न के बाद ⇧ Shift+CLR HOME दबाने से बेसिक को नियंत्रण कोड (इस मामले में, उलटा दिल) के दृश्य प्रतिनिधित्व को प्रदर्शित करने का कारण बनेगा, जिसे तब प्रोग्राम निष्पादन पर कार्य किया जाता है (सीधे प्रिंट आउट नियंत्रण कोड कम स्मृति का उपयोग करता है और सीएचआर $ क्रिया को लागू करने से तेज़ी से निष्पादित करता है)। यह बेसिक के अन्य कार्यान्वयनों की तुलना में है जिसमें विशेष रूप से चित्रपट को साफ़ करने या कर्सर को स्थानांतरित करने के लिए समर्पित निर्देश होते हैं।
बेसिक 3.5 और ऊपर के पास चित्रपट को साफ करने और कर्सर को हिलाने के लिए उचित निर्देश हैं।
कमोडोर बेसिक में प्रोग्राम लाइनों को कहीं भी रिक्त स्थान की आवश्यकता नहीं है (लेकिन LIST निर्देश हमेशा लाइन नंबर और कथन के बीच प्रदर्शित करेगा), उदाहरण के लिए, 100 IFA=5THENPRINT"YES":GOTO160
,और बिना अंतरण वाले प्रोग्राम लिखना आम बात थी , इस सुविधा को स्मृति को संरक्षित करने के लिए जोड़ा गया था क्योंकि टोकन कभी भी संकेतशब्द के बीच डाले गए किसी भी स्थान को नहीं हटाता है: रिक्त स्थान की उपस्थिति के परिणामस्वरूप अतिरिक्त 0x20 बाइट्स टोकनयुक्त क्रिया में होते हैं जो केवल निष्पादन के दौरान छोड़ दिए जाते हैं। लाइन नंबर और प्रोग्राम कथन के बीच के स्पेस को टोकननाइज़र द्वारा हटा दिया जाता है।
अधिकांश मशीनों पर प्रोग्राम लाइनें कुल 80 अक्षर हो सकती हैं, लेकिन 40 क्रमभंग टेक्स्ट वाली मशीनें लाइन को चित्रपट पर अगली पंक्ति के चारों ओर लपेटने का कारण बनेंगी, और वीआईसी-20 पर, जिसमें 22 क्रमभंग डिस्प्ले था, प्रोग्राम लाइन्स पर अधिकार चार के रूप में कर सकते हैं। कमोडोर 128 पर बेसिक 7.0 ने प्रोग्राम लाइन की सीमा को बढ़ाकर 160 अक्षर (चार 40-क्रमभंग लाइन या दो 80-क्रमभंग लाइन) कर दिया। जैसे संक्षिप्ताक्षरों का प्रयोग करके ?
PRINT
के अतिरिक्त लाइन पर और भी उपयुक्त होना संभव है। बेसिक 7.0 एक?STRING TOO LONG त्रुटि प्रदर्शित करता है यदि उपयोगकर्ता लंबाई में 160 वर्णों से अधिक प्रोग्राम लाइन में प्रवेश करता है। पहले के संस्करणों में कोई त्रुटि उत्पन्न नहीं होती है और यदि रेखा की लंबाई पार हो जाती है तो केवल तैयार संकेत दो पंक्तियों को प्रदर्शित करता है। लाइन नंबर को प्रोग्राम लाइन में वर्णों की संख्या में गिना जाता है, इसलिए पांच अंकों की लाइन संख्या के परिणामस्वरूप अंक संख्या की तुलना में चार कम वर्णों की अनुमति होगी।
कमोडोर बेसिक लाइनों के निष्पादन का क्रम लाइन नंबरिंग द्वारा निर्धारित नहीं किया गया था, इसके अतिरिक्त, यह उस क्रम का पालन करता है जिसमें स्मृति में लाइनें जुड़ी हुई थीं।[7]प्रोग्राम लाइन्स को स्मृति में एकल संबद्ध सूची के रूप में सूचक (जिसमें अगली प्रोग्राम लाइन की शुरुआत का पता होता है), लाइन नंबर और फिर लाइन के लिए टोकन कोड के रूप में संचय किया जाता है। जब प्रोग्राम में प्रवेश किया जा रहा था, बेसिक स्मृति में प्रोग्राम लाइनों को लगातार पुनर्व्यवस्थित करेगा ताकि लाइन नंबर और सूचक सभी आरोही क्रम में हों। चूंकि, प्रोग्राम में प्रवेश करने के बाद, पोक निर्देश के साथ हस्तचालित रूप से लाइन नंबर और सूचक को बदलने से अव्यवस्थित निष्पादन की अनुमति मिल सकती है या प्रत्येक लाइन को समान लाइन नंबर भी दे सकता है। प्रारंभिक दिनों में, जब बेसिक का व्यावसायिक उपयोग किया गया था, यह क्रिया के आकस्मिक संशोधन को हतोत्साहित करने के लिए एक सॉफ्टवेयर सुरक्षा तकनीक थी।
पंक्ति संख्या 0 से 65520 तक हो सकती है और पंक्ति संख्या में कितने अंक हैं, इसकी परवाह किए बिना संचय करने के लिए पांच बाइट्स ले सकते हैं, चूंकि निष्पादन तेजी से कम अंक हैं। लाइन पर कई कथन डालने से कम स्मृति का उपयोग होगा और तेजी से निष्पादित होगा।
GOTO तथा GOSUB कथन लाइन नंबर खोजने के लिए वर्तमान लाइन से नीचे की ओर खोज करेंगे, यदि आगे की ओर छलांग लगाई जाती है, तो पीछे की ओर कूदने की स्थिति में, वे खोज प्रारंभ करने के लिए क्रिया की शुरुआत में वापस आ जाएंगे। यह बड़े प्रोग्राम को धीमा कर देगा, इसलिए सामान्यतः उपयोग किए जाने वाले उपचर्या को प्रोग्राम की शुरुआत के करीब रखना बेहतर होता है।
चर नाम केवल 2 वर्णों के लिए महत्वपूर्ण हैं, इस प्रकार चर नाम VARIABLE1
, VARIABLE2
, तथा VA
सभी एक ही चर का संदर्भ देते हैं।
कमोडोर बेसिक बिटवाइज़ ऑपरेटरों - AND, OR, तथा XOR, का भी समर्थन करता है, चूंकि यह सुविधा कोर माइक्रोसॉफ्ट 6502 बेसिक कोड का हिस्सा थी, इसे सामान्यतः एपलसॉफ्ट बेसिक जैसे अन्य कार्यान्वयनों में छोड़ दिया गया था।
कमोडोर बेसिक का मूल संख्या प्रारूप, इसके मूल एमएस बेसिक की तरह, अस्थिर बिंदु था। अधिकांश समकालीन बेसिक कार्यान्वयन में बाइट विशेषता (घातांक के लिए और तीन बाइट मंटिसा के लिए उपयोग किया जाता है। तीन-बाइट मंटिसा का उपयोग करके अस्थिर बिंदु नंबर की सटीकता केवल 6.5 दशमलव अंक है, और पूर्णांक त्रुटि सामान्य है। माइक्रोसॉफ्ट बेसिक के 6502 कार्यान्वयन में 40-बिट अस्थिर बिंदु अंकगणित का उपयोग किया गया, जिसका अर्थ है कि बेसिक-80 में पाए गए 32-बिट अस्थिर बिंदु के विपरीत चर को संचय करने के लिए पाँच बाइट्स (चार बाइट मंटिसा और घातांक के लिए बाइट) लगे।
जबकि माइक्रोसॉफ्ट बेसिक के 8080/Z80 कार्यान्वयन ने पूर्णांक और दोहरे सटीक चर का समर्थन किया, 6502 कार्यान्वयन केवल अस्थिर बिंदु थे।
यद्यपि कमोडोर बेसिक -32768 से 32767 की सीमा में हस्ताक्षरित पूर्णांक चर(प्रतिशत चिह्न के साथ चिह्नित) का समर्थन करता है, व्यवहार में वे केवल सरणी चर के लिए उपयोग किए जाते हैं और सरणी तत्वों को प्रत्येक दो बाइट्स तक सीमित करके स्मृति को संरक्षित करने का कार्य करते हैं (सरणी का अस्थिर बिंदु सरणी के रूप में घोषित किए जाने पर 2000 तत्व 10,000 बाइट्स पर अधिकार कर लेंगे, लेकिन केवल 4000 पूर्णांक सरणी के रूप में घोषित किए जाने पर)। किसी भी चर को पूर्णांक के रूप में नकारने से बेसिक को वापस अस्थिर बिंदु में बदलने का कारण बनता है, प्रोग्राम निष्पादन को धीमा कर देता है और स्मृति को बर्बाद कर देता है क्योंकि प्रत्येक प्रतिशत चिह्न संचय करने के लिए अतिरिक्त बाइट लेता है (चूंकि यह पूर्णांक सरणियों पर भी लागू होता है, प्रोग्रामर को उनका उपयोग करने से बचना चाहिए जब तक कि बहुत अधिक न हो बड़े सरणियों का उपयोग किया जाता है जो अस्थिर बिंदु के रूप में संग्रहीत होने पर उपलब्ध स्मृति से अधिक हो जाएगा)। साथ ही यह भी संभव नहीं है POKE या PEEK हस्ताक्षरित पूर्णांक के रूप में परिभाषित एड्रेस के साथ 32767 से ऊपर स्मृति स्थान अवधि (।) संख्या 0 के स्थान पर उपयोग किया जा सकता है (इस प्रकार 10 A=.
के अतिरिक्त 10 A=0
या 10 FOR A=. TO 100
के अतिरिक्त 10 FOR A=0 to 100
)के लिए), यह थोड़ा तेज़ निष्पादित करेगा।
SYS }}कथन, मशीन भाषा प्रोग्राम प्रारंभ करने के लिए उपयोग किया जाता है, कमोडोर द्वारा जोड़ा गया था और मूल माइक्रोसॉफ्ट बेसिक कोड में नहीं था, जिसमें मशीन भाषा रूटीन को लागू करने के लिए केवल यूएसआर क्रिया सम्मलित था। यह स्वचालित रूप से सीपीयू के रजिस्टरों को $30C-$30F
(सी 64, अन्य मशीनों पर भिन्न होता है) में मूल्यों के साथ भारण करता है - इसका उपयोग मशीन भाषा रूटीन में आँकड़े पास करने के लिए या बेसिक से कर्नेल क्रिया को कॉल करने के साधन के रूप में किया जा सकता है (उदाहरण के तौर पर) ,POKE 780,147:SYS 65490
चित्रपट साफ़ करता है)।
चूंकि सी128 के अतिरिक्त कमोडोर 8-बिट मशीनें स्वचालित रूप से डिस्क सॉफ़्टवेयर को बूट नहीं कर सकती हैं, सामान्य तकनीक प्रोग्राम निष्पादन प्रारंभ करने के लिए10 SYS 2048
जैसे बेसिक स्टब को सम्मलित करना है। भारण होने के बाद सॉफ़्टवेयर को स्वचालित रूप से प्रारंभ करना संभव है और उपयोगकर्ता को रन कथन टाइप करने की आवश्यकता नहीं है, यह कोड का एक टुकड़ा है जो बेसिक "तैयार" वेक्टर को$0302
पर हुक करता है।
माइक्रोसॉफ्ट बेसिक के अधिकांश अन्य संस्करणों की तरह, यदि किसी सरणी को DIM कथन, के साथ घोषित नहीं किया जाता है, तो यह स्वचालित रूप से दस तत्वों पर स्थापित हो जाता है (अभ्यास 11 में क्योंकि सरणी तत्वों की गणना 0 से की जाती है)। बड़ी सरणियों को घोषित किया जाना चाहिए या जब प्रोग्राम चलाया जाता है तो बेसिक त्रुटि प्रदर्शित करेगा और एक क्रिया में सरणी को फिर से आयाम नहीं दिया जा सकता है जब तक कि सभी चर CLR कथन के माध्यम से मिटा नहीं दिए जाते। संख्यात्मक सरणियाँ स्वचालित रूप से शून्य से भर जाती हैं जब वे बनाई जाती हैं, यदि बड़ी सरणी का आयाम है तो क्रिया के निष्पादन में क्षणिक विलंब हो सकता है।
स्ट्रिंग चर को डॉलर चिह्न के साथ चर नाम जोड़ के दर्शाया जाता है। इस प्रकार, चरAA$
, AA
, तथा AA%
प्रत्येक को अलग-अलग समझा जाएगा। ऐरे चर को साधारण चर से भी अलग माना जाता है, इस प्रकार A तथा A(1)एक ही चर को संदर्भित नहीं करते हैं। एक स्ट्रिंग सरणी का आकार केवल यह दर्शाता है कि सरणी में कितने तार संग्रहीत हैं, न कि प्रत्येक तत्व का आकार, जो गतिशील रूप से आवंटित किया गया है। माइक्रोसॉफ्ट बेसिक के कुछ अन्य कार्यान्वयनों के विपरीत, कमोडोर बेसिक को प्रोग्राम के प्रारंभ में आरक्षित होने के लिए स्ट्रिंग स्पेस की आवश्यकता नहीं होती है।
विपरीत, कमोडोर की सभी मशीनों में अंतर्निहित घड़ी होती है, जो 0 पर प्रारंभ होती है और पीआईए/वाया/टेड/सीआईए टाइमर के प्रत्येक टिक के साथ आधुनिकीकरण की जाती है, इस प्रकार प्रति सेकंड 60 बार ,इसे बेसिक, TI तथा TI$,में दो प्रणाली चर निर्धारित किए गए हैं, जिनमें दोनों में वर्तमान समय है। टीआई केवल पढ़ने के लिए है और इसे संशोधित नहीं किया जा सकता है, ऐसा करने से सिंटैक्स त्रुटि संदेश प्राप्त होगा। टीआई $ का उपयोग छह नंबर स्ट्रिंग के माध्यम से समय निर्धारित करने के लिए किया जा सकता है ( त्रुटि परिणाम छह नंबरों के अतिरिक्त स्ट्रिंग का उपयोग करने से होता है)। घड़ी समयनिर्धारक का बहुत विश्वसनीय तरीका नहीं है क्योंकि जब भी व्यवधान बंद हो जाता है (कुछ कर्नल रूटीन द्वारा किया जाता है) बंद हो जाता है और आईईसी (या पीईटी पर आईईईई पोर्ट) पोर्ट तक पहुँचने से कुछ टिकों द्वारा घड़ी के आधुनिकीकरण को धीमा कर दिया जाएगा।
RND कमोडोर बेसिक में }} क्रिया यादृच्छिक संख्या उत्पन्न करने के लिए घड़ी का उपयोग कर सकता है, यह RND(0)
द्वारा पूरा किया जाता है, चूंकि यह अपेक्षाकृत सीमित उपयोग का है क्योंकि केवल 0 और 255 के बीच की संख्या ही वापस आती है। अन्यथा, RND माइक्रोसॉफ्ट बेसिक के अन्य कार्यान्वयनों के समान ही काम करता है जिसमें सी 64 पर स्मृति स्थानों$8B-$8F
पर पावर पर संग्रहीत एक निश्चित 5-बाइट बीज मूल्य के माध्यम से एक छद्म-यादृच्छिक अनुक्रम का उपयोग किया जाता है (स्थान अन्य पर भिन्न होता है) मशीनें)। RND 0 से अधिक किसी भी संख्या के साथ RND क्रिया और बीज मान के साथ सम्मलित मूल्य से समामेलित एक यादृच्छिक संख्या उत्पन्न करेगा, जिसे RND क्रिया निष्पादित होने पर हर बार 1 से आधुनिकीकरण किया जाता है। ऋणात्मक संख्या वाला RND संख्या द्वारा निर्दिष्ट वर्तमान बीज मान के क्रम में एक बिंदु पर जाता है।
चूंकि RND कथन के साथ वास्तविक यादृच्छिक संख्या पीढ़ी असंभव है, यह यादृच्छिक संख्या के लिए एसआईडी चिप के सफेद शोर चैनल का उपयोग करने के लिए सी 64 और सी 128 पर अधिक विशिष्ट है।
बेसिक 2.0 स्ट्रिंग्स के बेहद धीमे कूड़ा संग्रह से कुख्यात रूप से पीड़ित है। कचरा संग्रह स्वचालित रूप से किसी भी समय एक FRE क्रिया निष्पादित किया जाता है और यदि कई स्ट्रिंग चर और सरणियाँ हैं जिन्हें किसी प्रोग्राम के दौरान हेरफेर किया गया है, तो उन्हें साफ़ करने में सबसे खराब परिस्थितियों में एक घंटे से अधिक समय लग सकता है। कचरा संग्रह को रोकना भी संभव नहीं है क्योंकि बेसिक इस रूटीन को निष्पादित करते समय रन/स्टॉप कुंजी को स्कैन नहीं करता है। बेसिक 4.0 ने बैक सूचक के साथ एक बेहतर कचरा संग्रह प्रणाली की शुरुआत की और कमोडोर बेसिक के बाद के सभी कार्यान्वयनों में भी यह है।
बेसिक 2.0 में FREक्रिया एक और तकनीकी दोष से ग्रस्त है जिसमें यह 32768 से अधिक हस्ताक्षरित संख्याओं को संभाल नहीं सकता है, इस प्रकार यदि क्रिया को C64 (38k बेसिक स्मृति) पर लागू किया जाता है, तो मुफ्त बेसिक स्मृति की एक नकारात्मक मात्रा प्रदर्शित की जाएगी (65535 को जोड़कर) रिपोर्ट की गई संख्या सही मात्रा में मुफ्त स्मृति प्राप्त करेगी)। पीईटी और वीआईसी-20 के पास कभी भी बेसिक के लिए उपलब्ध कुल स्मृति का 32k से अधिक नहीं था, इसलिए C64 के विकसित होने तक यह सीमा स्पष्ट नहीं हुई। बेसिक 3.5 और 7.0 पर एफआरई क्रिया ने इस समस्या को ठीक किया और बेसिक 7.0 पर एफआरई को भी दो कार्यों में "विभाजित" किया गया, एक फ्री बेसिक प्रोग्राम टेक्स्ट स्मृति प्रदर्शित करने के लिए और दूसरा फ्री चर स्मृति प्रदर्शित करने के लिए।
वैकल्पिक
इसके मूल बेसिक 2.0 की अपेक्षाकृत सीमित क्षमताओं के कारण कमोडोर 64 के लिए कई बेसिक एक्सटेंशन जारी किए गए थे। सबसे लोकप्रिय एक्सटेंशन में से एक डॉस वेजथा, जिसे कमोडोर 1541 टेस्ट/डेमो डिस्क में सम्मलित किया गया था। बेसिक में इस 1 KB एक्सटेंशन ने स्मृति में प्रोग्राम को नष्ट किए बिना डिस्क डायरेक्टरी को पढ़ने की क्षमता सहित कई डिस्क से संबंधित निर्देश जोड़े। इसकी विशेषताओं को बाद में विभिन्न तृतीय-पक्ष एक्सटेंशन में सम्मलित किया गया, जैसे कि लोकप्रियएपेक्स फास्टलोड कार्ट्रिज। अन्य बेसिक एक्सटेंशन ने कोड स्प्राइट्स, ध्वनि, और उच्च-रिज़ॉल्यूशन ग्राफ़िक्स जैसे सिमन्स बेसिक को आसान बनाने के लिए अतिरिक्त संकेतशब्द जोड़े।
चूंकि बेसिक 2.0 में ध्वनि या ग्राफिक्स सुविधाओं की कमी कई उपयोगकर्ताओं को निराश कर रही थी, कुछ आलोचकों ने तर्क दिया कि यह अंततः फायदेमंद था क्योंकि इसने उपयोगकर्ता को मशीन भाषा सीखने के लिए मजबूर किया।
C64 पर बेसिक 2.0 की सीमाओं के कारण बेसिक की अंतर्निहित आरओ एम मशीन भाषा का उपयोग हुआ। फ़ाइल को निर्दिष्ट स्मृति स्थान पर भारण करने के लिए, फ़ाइल नाम, ड्राइव और उपकरण नंबर को एक कॉल द्वारा पढ़ा जाएगा:SYS57812"filename",8
,[8] स्थान X और Y रजिस्टरों में निर्दिष्ट किया जाएगा:POKE780,0:POKE781,0:POKE782,192
,[9] और भारण रूटीन कोSYS65493
कहा जाएगा।[10]
C64 के लिए एक डिस्क पत्रिका, लोडस्टार (पत्रिका)शौक़ीन प्रोग्रामरों के लिए एक स्थान था, जिन्होंने बेसिक के लिए प्रोटो-निर्देश का संग्रह साझा किया, जिसेSYS address + offset
ऑफ़सेट निर्देश के साथ बुलाया गया।[citation needed]
आधुनिक प्रोग्रामिंग के दृष्टिकोण से, कमोडोर बेसिक के पुराने संस्करणों ने प्रोग्रामर के लिए कई खराब प्रोग्रामिंग जाल प्रस्तुत किए। चूंकि इनमें से अधिकांश मुद्दे माइक्रोसॉफ्ट बेसिक से प्राप्त हुए हैं, वस्तुतः युग का प्रत्येक घरेलू संगणक बेसिक इसी तरह की कमियों से ग्रस्त था।[11] माइक्रोसॉफ्ट बेसिक प्रोग्राम की प्रत्येक लाइन को प्रोग्रामर द्वारा एक लाइन नंबर दिया गया था। प्रोग्राम एडिटिंग या डिबगिंग के दौरान लाइनों को सम्मिलित करना आसान बनाने के लिए कुछ मान (5, 10 या 100) से संख्याओं को बढ़ाना आम बात थी, लेकिन खराब योजना का मतलब था कि एक प्रोग्राम में बड़े वर्गों को सम्मिलित करने के लिए अधिकांशतः पूरे कोड के पुनर्गठन की आवश्यकता होती है। एक सामान्य तकनीक एक ON...GOSUB जम्प टेबल के साथ कुछ लो लाइन नंबर पर एक प्रोग्राम प्रारंभ करना था, जिसमें प्रोग्राम की बॉडी को 1000, 2000 जैसे निर्दिष्ट लाइन नंबर से प्रारंभ होने वाले सेक्शन में संरचित किया गया था। यदि एक बड़े खंड को जोड़ने की आवश्यकता है, तो इसे केवल अगली उपलब्ध प्रमुख पंक्ति संख्या निर्दिष्ट की जा सकती है और जंप टेबल में डाला जा सकता है।
इसके अतिरिक्त, सभी चर को वैश्विक चर के रूप में माना जाता है। FOR...NEXT निर्माण से परे स्पष्ट रूप से परिभाषित लूप बनाना मुश्किल है, अधिकांशतः प्रोग्रामर को GOTO निर्देश पर भरोसा करने का कारण बनता है (इसे बाद में DO, LOOP, WHILE, UNTIL, तथा EXIT निर्देश के साथ बेसिक 3.5 में सुधारा गया था) ). कुछ कार्यों को करने के लिए ध्वज चरों को अधिकांशतः बनाने की आवश्यकता होती है।
बाद में कमोडोर और अन्य प्लेटफार्मों पर बेसिक संस्करणों में DELETE और RENUMBER निर्देश के साथ-साथ एक AUTO लाइन नंबरिंग निर्देश सम्मलित था जो एक चयनित वृद्धि के अनुसार स्वचालित रूप से लाइन नंबरों का चयन और सम्मिलित करेगा। पहले कमोडोर के बेसिक्स में डिबगिंग निर्देश की भी कमी थी, जिसका अर्थ है कि बग और अप्रयुक्त चर को फंसाना मुश्किल है। IF...THEN...ELSE संरचनाएं, Z80 माइक्रोसॉफ्ट बेसिक का एक मानक हिस्सा, कमोडोर बेसिक के पिछले संस्करणों में अनुपलब्ध होने के बाद बेसिक 3.5 में जोड़ा गया था।
यूजर इंटरफेस के रूप में प्रयोग करें
सामान्यतः अन्य घरेलू संगणक के साथ, कमोडोर की मशीनें सीधे बेसिक दुभाषिया में बूट होती हैं। सॉफ्टवेयर को भारण और निष्पादित करने के लिए बेसिक की फाइल और प्रोग्रामिंग निर्देश को सीधे मोड में अंकित किया जा सकता है। यदि RUN/STOP कुंजी का उपयोग करके प्रोग्राम निष्पादन को रोक दिया गया था, तो चर मानों को RAM में संरक्षित किया जाएगा और डिबगिंग के लिए प्रिंट किया जा सकता है। 128 ने अपने दूसरे 64k बैंक को चर भंडारण के लिए भी समर्पित किया, जिससे मूल्यों को एक तक बने रहने की अनुमति मिली NEW
या RUN
निर्देश जारी किया था। यह, कमोडोर बेसिक के साथ सम्मलित उन्नत चित्रपट संपादक के साथ प्रोग्रामिंग वातावरण को REPL जैसा अनुभव देता है, प्रोग्रामर किसी भी चित्रपट स्थान पर प्रोग्राम लाइनों को सम्मिलित और संपादित कर सकते हैं, अंतःक्रियात्मक रूप से प्रोग्राम का निर्माण कर सकते हैं।[12] यह CP/M या MS-DOS जैसे उस समय के व्यवसाय-उन्मुख ऑपरेटिंग प्रणाली के विपरीत है, जो सामान्यतः निर्देश लाइन इंटरफेस में बूट होता है। यदि इन प्लेटफॉर्म्स पर प्रोग्रामिंग लैंग्वेज की आवश्यकता होती थी, तो इसे अलग से भारण करना पड़ता था।
जबकि कमोडोर बेसिक के कुछ संस्करणों में डिस्क-विशिष्ट सम्मलित थे DLOAD
तथा DSAVE
निर्देश, कमोडोर 64 में निर्मित संस्करण में इनकी कमी थी, जिसके लिए उपयोगकर्ता को डिस्क ड्राइव के उपकरण नंबर (सामान्यतः 8 या 9) को मानक के अनुसार निर्दिष्ट करने की आवश्यकता होती है। LOAD
निर्देश, जो अन्यथा टेप के लिए व्यतिक्रम था। कमोडोर 64s बेसिक 2.0 से एक और चूक थी a DIRECTORY
मुख्य स्मृति को साफ़ किए बिना डिस्क की सामग्री प्रदर्शित करने का निर्देश। 64 पर, डिस्क पर फ़ाइलों को देखने को एक प्रोग्राम भारण करने के रूप में कार्यान्वित किया गया था, जो सूचीबद्ध होने पर निर्देशिका को छद्म बेसिक प्रोग्राम के रूप में दिखाया गया था, फ़ाइल के ब्लॉक आकार को लाइन नंबर के रूप में दिखाया गया था। यह वर्तमान में भारण किए गए प्रोग्राम को अधिलेखित करने का प्रभाव था। डॉस वेज जैसे एडॉन्स ने डायरेक्ट्री सूची को सीधे चित्रपट स्मृति में रेंडर करके इस पर काबू पाया।
संस्करण और सुविधाएँ
क्रमिक रूप से जोड़ी गई विशेषताओं के साथ कालानुक्रमिक क्रम में सीबीएम बेसिक संस्करणों की एक सूची:
जारी संस्करण
- V1.0: पीईटी 2001 चिकलेट कुंजीपटल और बिल्ट-इन कमोडोर डाटासेट (मूल पीईटी) के साथ
- सरणियाँ 256 तत्वों तक सीमित हैं
- PEEK और पोक निर्देश $ C000 से ऊपर के बेसिक आरओ एम स्थानों पर स्पष्ट रूप से अक्षम हैं
- V2.0 (पहली रिलीज़): पीईटी 2001 फुल-ट्रैवल कुंजीपटल और सुधार रोम के साथ
- V4.0: पीईटी/सीबीएम 4000/8000 श्रृंखला (और बाद का संस्करण पीईटी 2001s)
- कमोडोर डॉस:
DLOAD,DSAVE,COPY,SCRATCH,
आदि (कुल 15) - डिस्क त्रुटि-चैनल चर:
DS,DS$
- कचरा-संग्रह प्रदर्शन में काफी सुधार हुआ[13]* V2.0 (4.0 के बाद दूसरी रिलीज़): कमोडोर वीआईसी-20|वीआईसी-20, कमोडोर 64
- कमोडोर डॉस:
- V2.2 कमोडोर 64 गेम प्रणाली (1990)
- V4+ : कमोडोर सीबीएम-II|सीबीएम-II सीरीज (उर्फ बी, पी रेंज)
- वी3.5: कमोडोर 16|सी16/116, कमोडोर प्लस/4|प्लस/4
- ध्वनि और ग्राफिक्स निर्देश
- जोस्टिक निविष्टि:
JOY
- दशमलव ↔ हेक्साडेसिमल रूपांतरण:
DEC(),HEX$()
- संरचित लूपिंग:
DO,LOOP,WHILE,UNTIL,EXIT
- क्रिया कुंजी असाइनमेंट:
KEY
(डायरेक्ट मोड भी) - क्रिया प्रविष्टि/संपादन:
AUTO,DELETE,RENUMBER
- डिबगिंग (ट्रेसिंग):
TRON, TROFF
- मशीन कोड मॉनिटर प्रविष्टि निर्देश:
MONITOR
- सी (1) 16, प्लस / 4 ईस्टर एग - अंकित करें
एसवाईएस 52650
- V7.0: कमोडोर 128
- स्प्राइट (संगणक ग्राफिक्स) हैंडलिंग सहित अधिक ध्वनि और ग्राफिक्स निर्देश
- बिल्ट-इन स्प्राइट एडिटर:
SPRDEF
- मल्टी-कथन ब्लॉक के लिए
IF THEN ELSE
संरचनाएं:BEGIN,BEND
- चप्पू (खेल नियंत्रक), हल्की कलम निविष्टि:
POT,PEN
- अनन्य संयोजन समारोह:
XOR
- परिवर्तनशील पता प्राप्त करें:
POINTER
- टेक्स्ट मोड विंडोिंग:
WINDOW
- नियंत्रित समय विलंब:
SLEEP
- स्मृति प्रबंधन:
SWAP,FETCH,STASH,FRE(1)
- प्रोग्राम कोड को चर से अलग संचय करने के लिए 128 के बैंक स्विचिंग का उपयोग किया। यदि प्रोग्राम GOTO निर्देश के साथ प्रारंभ किया गया था, तो प्रोग्राम निष्पादन में चर मान संरक्षित किए जाएंगे।
- कमोडोर डॉस:
BOOT,DVERIFY
- सीपीयू गति समायोजन:
FAST,SLOW
(2 बनाम 1 मेगाहर्ट्ज) - C64 मोड अंकित करें:
GO64
- अनिर्दिष्ट, काम कर रहा है:
RREG
(एक के बाद सीपीयू रजिस्टर पढ़ेंएसवाईएस
) - अकार्यान्वित निर्देश:
OFF,QUIT
- C128 ईस्टर एग - एंटर करें
एसवाईएस 32800,123,45,6
अप्रकाशित संस्करण
- V3.6 : कमोडोर एलसीडी (अप्रकाशित प्रोटोटाइप)। निम्नलिखित अंतरों के साथ लगभग V7.0 के समान:[14]
VOLUME
के अतिरिक्तVOL
EXIT
के अतिरिक्तQUIT
FAST,SLOW
निर्देश सम्मलित नहीं है- अतिरिक्त निर्देश:
POPUPS
- V10 : कमोडोर 65 (अप्रकाशित प्रोटोटाइप)
- ग्राफिक्स/वीडियो निर्देश:
PALETTE,GENLOCK
- कम्प्यूटर का माउस निविष्टि:
MOUSE,RMOUSE
- पाठ फ़ाइल (
SEQ
) उपयोगिता:TYPE
- क्रिया संपादन:
FIND,CHANGE
- स्मृति प्रबंधन:
DMA,FRE(2)
- अकार्यान्वित निर्देश:
PAINT,LOCATE,SCALE,WIDTH,SET,VIEWPORT,PASTE,CUT
- ग्राफिक्स/वीडियो निर्देश:
उल्लेखनीय विस्तार पैकेज
- सुपर विस्तारक (वीआईसी-20, आरओ एम कार्ट्रिज पर दिया गया) (कमोडोर)
- सुपर विस्तारक 64 (C64रॉम कारतूस) (कमोडोर)
- साइमन्स बेसिक (C64, कार्ट्रिज) (कमोडोर)
- ग्राफिक्स बेसिक (C64, फ्लॉपी डिस्क) (हेसवेयर)
- बेसिक 8 (C128, फ्लॉपी डिस्क और वैकल्पिक आंतरिक आरओ एम चिप) (वालरूसॉफ्ट)
संदर्भ
- ↑ Stated by Jack Tramiel at the Commodore 64 25th Anniversary Celebration at the Computer History Museum December 10, 2007 [1] Archived 2008-12-11 at the Wayback Machine[2] Archived 2017-10-03 at the Wayback Machine[3].
- ↑ "8 बिट बेसिक में बिल गेट्स का व्यक्तिगत ईस्टर एग - pagetable.com". www.pagetable.com. Retrieved 8 August 2018.
- ↑ "कीबोर्डिंग और स्क्रीन एडिटर". July 1985.
- ↑ "बाइट जुलाई 1983" (PDF).
- ↑ Leemon, Sheldon (1987). कमोडोर 64 और 64C का मानचित्रण. COMPUTE! Publications. p. 37. ISBN 9780874550825. Retrieved 2018-03-25.
- ↑ Cowper, Ottis R. (1986). कमोडोर 128 का मानचित्रण. COMPUTE! Publications. p. 66. ISBN 9780874550603.
- ↑ "कमोडोर का मानचित्रण 64".
- ↑ Leemon, Sheldon (1987). कमोडोर 64 और 64C का मानचित्रण. COMPUTE! Publications. p. 209. ISBN 9780874550825. Retrieved 2018-03-25.
- ↑ Leemon, Sheldon (1987). कमोडोर 64 और 64C का मानचित्रण. COMPUTE! Publications. p. 71. ISBN 9780874550825. Retrieved 2018-03-25.
- ↑ Leemon, Sheldon (1987). कमोडोर 64 और 64C का मानचित्रण. COMPUTE! Publications. p. 231. ISBN 9780874550825. Retrieved 2018-03-25.
- ↑ "अटारी बेसिक और पीईटी माइक्रोसॉफ्ट बेसिक। एक बुनियादी तुलना।".
- ↑ Scrimshaw, N. B. (11 November 2013). कमोडोर 64 का एक परिचय: प्रोग्रामिंग में रोमांच. ISBN 9781489967879.
- ↑ 13.0 13.1 http://www.zimmers.net/anonftp/pub/cbm/firmware/README.txt[bare URL plain text file]
- ↑ "माइक नबेरेज़नी - कमोडोर एलसीडी फ़र्मवेयर". mikenaberezny.com. Retrieved 8 August 2018.
स्रोत
- कमोडोर/माइक्रोसॉफ्ट बेसिक वर्जन टाइमलाइन
- बिल गेट्स के 8 बिट बेसिक में व्यक्तिगत ईस्टर एग, pagetable.com
बेसिक 2.0:
- एंगरहाउज़ेन एट अल। (1983)। कमोडोर 64 की शारीरिक रचना (पूर्ण संदर्भ के लिए, कमोडोर 64#संदर्भ लेख देखें)।
बेसिक 3.5:
- जेरार्ड, पीटर; बर्गिन, केविन (1985)। पूरा COMMODORE 16 ROM डिसअसेंबली। जेराल्ड डकवर्थ एंड कंपनी लिमिटेड ISBN 0-7156-2004-5.
बेसिक 7.0:
- जार्विस, डेनिस; स्प्रिंगर, जिम डी. (1987). बेसिक 7.0 आंतरिक। ग्रैंड रैपिड्स, मिशिगन: अबैकस सॉफ्टवेयर, इंक। ISBN 0-916439-71-2.
बेसिक 10.0:
श्रेणी:सीबीएम सॉफ्टवेयर
श्रेणी:कमोडोर 64 सॉफ्टवेयर
श्रेणी:VIC-20 सॉफ्टवेयर
श्रेणी:बंद माइक्रोसॉफ्ट बेसिक्स
श्रेणी:बुनियादी दुभाषिए
श्रेणी:बेसिक प्रोग्रामिंग भाषा परिवार
श्रेणी:माइक्रोसॉफ्ट प्रोग्रामिंग भाषाएँ
श्रेणी:1977 में बनाई गई प्रोग्रामिंग लैंग्वेज