Acorn System BASIC
एकोर्न सिस्टम बेसिक और एटम बेसिक, एकोर्न कंप्यूटर द्वारा उनके शुरुआती माइक्रोकंप्यूटर जैसे एकोर्न सिस्टम 3 और एकोर्न एटम के लिए विकसित बेसिक प्रोग्रामिंग भाषा की दो निकटता से संबंधित बोलियाँ हैं। इन-हाउस विकसित, उनके पास घरेलू कंप्यूटर युग की अधिकांश बेसिक बोलियों की तुलना में कई महत्वपूर्ण विशिष्टताएँ हैं। विशेष रूप से, भाषा में मशीन के कई आंतरिक कार्यों के लिए बयानों की कमी थी और पी. ई. ई. के. और पी. ओ. के. ई. के बजाय इंडिरेक्शन ऑपरेटरों का उपयोग करके मेमोरी स्थानों की सीधी पहुंच और हेरफेर का उपयोग करके इसे प्रदान किया गया था। दोनों में फ्लोटिंग-पॉइंट सपोर्ट की भी कमी थी, हालांकि इसे एक वैकल्पिक रॉम के साथ जोड़ा जा सकता था जिसने आगे की विशिष्टताओं को पेश किया। सिस्टम और एटम बेसिक मुख्य रूप से इस बात में भिन्न हैं कि एटम ने प्राथमिक स्ट्रिंग हेरफेर प्रदान करने के लिए एक ही अप्रत्यक्ष प्रणाली का उपयोग किया, जिसकी मानक में कमी थी, और कंप्यूटर ग्राफिक्स के लिए कम संख्या में नए बयान जोड़े। इनमें से अधिकांश विषमताओं को हटा दिया गया था जब परमाणु के उत्तराधिकारी, बीबीसी माइक्रो पर बीबीसी बेसिक का उत्पादन करने के लिए अंतर्निहित प्रणाली का बहुत विस्तार किया गया था। बीबीसी बेसिक रॉम को बाद में परमाणु उपयोगकर्ताओं के लिए पेश किया गया। एकोर्न कंप्यूटर का गठन 1978 में किया गया था और 1979 में एकोर्न सिस्टम 1 के साथ शुरू होने वाली किट-निर्मित और यूरोकार्ड-आधारित प्रणालियों की एक श्रृंखला बनाने की शुरुआत हुई। उन्होंने इन मशीनों के लिए एकोर्न सिस्टम बेसिक विकसित किया, जो एक पूर्णांक-मात्र बोली है जिसके लिए कुल मिलाकर केवल 4 KB मेमोरी की आवश्यकता होती है। भाषा में कई कार्यान्वयन विवरण थे जो इसे "अत्यधिक गैर-मानक" बना देते थे। परमाणु, जिसे 1980 में पेश किया गया था, सिस्टम 3 के कुछ हिस्सों से बनाया गया था, जिसे एक ही बोर्ड पर पैक किया गया था। सिस्टम 2 के. बी. रैम और 8 के. बी. रॉम के साथ मानक भेजे गए, जिसमें बेसिक और कई डिवाइस ड्राइवर शामिल थे। एटम बेसिक ने सिस्टम संस्करण से केवल कुछ ही बदलाव किए थे, जिसमें स्ट्रिंग हेरफेर और ग्राफिक्स कमांड की एक छोटी संख्या के लिए समर्थन जोड़ा गया था। परमाणु को उन्नत किया जा सकता था, जिसमें कुल 12 के. बी. तक की रैम और अतिरिक्त 4 के. बी. रोम थी जो फ्लोटिंग-पॉइंट सपोर्ट को जोड़ती थी। इसने अलग-अलग कार्यों और संचालनों का उपयोग किया जो उन पर काम करते थे, जो% प्रतीक द्वारा इंगित किए गए थे। प्रतीक का यह चयन दुर्भाग्यपूर्ण था, क्योंकि माइक्रोसॉफ्ट बेसिक ने पूर्णांक को इंगित करने के लिए प्रतिशत चिह्न का उपयोग किया, न कि फ्लोटिंग पॉइंट का। एकॉर्न द्वारा अपने उत्तराधिकारी, प्रोटॉन का विकास शुरू करने से पहले परमाणु केवल एक छोटी अवधि के लिए बाजार में था। यह शुरू में एक दो-प्रोसेसर इकाई होनी थी। डिजाइन अभी भी अपने शुरुआती चरण में था जब घटनाओं की एक श्रृंखला के कारण इसे एकल-सीपीयू बीबीसी माइक्रो के आधार के रूप में चुना गया। उस समय, ऐसी टिप्पणियां थीं कि इसे निश्चित रूप से एकोर्न के विभिन्न प्रकार के बेसिक का उपयोग नहीं करना चाहिए, जिसे "वस्तुतः कोई अन्य सूक्ष्म कंप्यूटर समझ नहीं सकता है" और "यदि नई भाषा परमाणु के बेसिक के रूप पर आधारित होती, तो यह एक आपदा होती।" अंततः, बी. बी. सी. प्रणाली ने एकॉर्न-लिखित बेसिक का उपयोग किया, लेकिन इसमें भारी संशोधन किया गया। परिणामस्वरूप बीबीसी बेसिक माइक्रोसॉफ्ट बेसिक के समान था और बाद में इसे एटम के उन्नयन के रूप में पेश किया गया था। वर्णन चूंकि दोनों बोलियाँ बहुत समान हैं, निम्नलिखित मुख्य रूप से एटम बेसिक को संदर्भित करेंगी और अंतर को इंगित करेंगी जहां वे मौजूद हैं। उस युग के अधिकांश बुनियादी कार्यक्रमों की तरह, एटम बेसिक ने प्रत्यक्ष (तत्काल) और अप्रत्यक्ष तरीकों के साथ एक लाइन-उन्मुख संपादक का उपयोग किया। बिना लाइन नंबर के स्टेटमेंट टाइप करने पर तुरंत ऑपरेशन किया गया। इसके बजाय एक पंक्ति संख्या जोड़ने से उन कथनों को संग्रहीत कार्यक्रम में रखा जाता है। एक विशिष्टता यह थी कि जब यह एक ही पंक्ति पर कई बयानों की अनुमति देता था, तो बयानों के बीच विभाजक आमतौर पर उपयोग किए जाने वाले कोलन के बजाय अर्धविराम था, इस प्रकार उपयोगकर्ता को अन्य कंप्यूटरों के लिए प्रोग्राम टाइप करते समय उस चरित्र को परिवर्तित करने की आवश्यकता होती थी। कंप्यूटर टर्मिनलों के साथ उपयोग के लिए, एकोर्न बेसिक एक पूर्ण-स्क्रीन संपादन मोड का समर्थन नहीं करता था। इसके विपरीत, कमोडोर बेसिक (और कई अन्य सूक्ष्म कंप्यूटर बोलियों) में, कोई भी प्रोग्राम सूची में ऊपर की ओर जाने के लिए कर्सर कुंजी का उपयोग कर सकता है, स्क्रीन पर परिवर्तन कर सकता है, और फिर उन परिवर्तनों को दर्ज करने के लिए दबा सकता है। एटम पर, कोई भी कर्सर कुंजियों का उपयोग करके सूची में ऊपर की ओर जा सकता था, लेकिन उस पाठ को संपादित करने के लिए, कुंजी को इनपुट क्षेत्र में प्रतिलिपि बनाने के लिए दबाया गया था जहां इसे संपादित किया जा सकता था। परमाणु पर एक और अंतर कुंजी थी, जिसने एक प्रणाली रीसेट का प्रदर्शन किया, संभावित रूप से स्मृति से कार्यक्रम को साफ़ कर दिया। इसे रीसेट करने के लिए यदि कुंजी को गलती से दबाया गया था, तो एटम बेसिक ने कमांड जोड़ा, जिसका उपयोग आकस्मिक रीसेट करने के लिए भी किया जा सकता है। एक और मामूली बदलाव यह था कि माइनस साइन के बजाय लाइन नंबरों से अलग किए गए अल्पविराम का उपयोग किया जाता है, जो 20 से 40 लाइनों को प्रिंट करता है। भाषा में शाखाओं के लिए संख्याओं के बजाय लाइन लेबल का उपयोग करने की क्षमता भी थी। लेबल में पंक्ति संख्या के तुरंत बाद टाइप किया गया एक छोटा अक्षर शामिल था। उदाहरण के लिएः 10s प्रिंट "*" 20 जी. ओ. टी. ओ. इस विधि का लाभ यह है कि कथन का स्मृति पता एस में संग्रहीत किया जाता है, जिसका अर्थ है कि शाखा, एक जी. ओ. टी. ओ., मिलान रेखा संख्या की तलाश में कार्यक्रम में हर पंक्ति के माध्यम से खोज किए बिना सीधे उस रेखा पर जा सकता है। एकोर्न ने शाखा लक्ष्यों के लिए रेखा संख्या का उत्पादन करने के लिए किसी भी अभिव्यक्ति का उपयोग करने की अनुमति दी, जैसे। एकॉर्न के प्रारंभिक कथन उस युग के अन्य बुनियादी कथनों के समान थे, और अधिकांश प्राथमिक कथनों का समर्थन करते थे। कई सामान्य कथन हैं जो गायब हैं, विशेष रूप से एक प्रोग्राम में डेटा को संग्रहीत करने के लिए, संगणित शाखाओं और उपयोगकर्ता-परिभाषित कार्यों के लिए उपयोग किया जाता है। इन मूल बातों के लिए, एकोर्न ने नीचे-परीक्षण, अभिव्यक्ति-आधारित लूप के निर्माण के लिए जोड़ा। एफ. ओ. आर. लूप को उनके सूचकांक चर और एक स्थिर मूल्य के बीच एक सीधी तुलना का उपयोग करके अत्यधिक अनुकूलित किया जाता है जो लूप में प्रवेश करने पर केवल एक बार सेट किया जाता है। एक अन्य अनुकूलन यह है कि FOR का पता संग्रहीत किया जाता है, न कि पंक्ति संख्या, इसलिए जब मिलान करने वाला NEXT सामने आता है तो प्रोग्राम तुरंत FOR पर वापस शाखा कर सकता है। जबकि FOR कई लूपों के लिए उपयुक्त है, जब अधिक नियंत्रण की आवश्यकता होती है, उदाहरण के लिए जब अधिक जटिल मानदंड के खिलाफ तुलना की जाती है, तो IF कथन का उपयोग किया जा सकता हैः 500 A = A + 1 510 REM अतिरिक्त कथन यहाँ 600 IF A> 10 और B> 100 TEN 500 लूप की इस शैली का नकारात्मक पक्ष यह है कि शाखा को लाइन 500 के लिए प्रोग्राम को खोजने की आवश्यकता होती है, जो आमतौर पर एक लूप में कई बार होता है। बड़े कार्यक्रमों में, यह महत्वपूर्ण ओवरहेड पेश कर सकता है। इस उद्देश्य के लिए डी. ओ. का उपयोग उच्च प्रदर्शन प्रदान करता हैः 500 डी. ओ. ए. = ए + 1 510 आर. ई. एम. अतिरिक्त कथन यहाँ 600 यू. एन. टी. आई. एल. ए> 10 और बी> 100 इस मामले में, एफ. ओ. आर. लूप की तरह, डी. ओ. का पता तब संग्रहीत किया जाता है जब लूप दर्ज किया जाता है, जिससे यू. एन. टी. आई. एल. को प्रोग्राम के माध्यम से स्कैन किए बिना तुरंत लूप के शीर्ष पर लौटने की अनुमति मिलती है। विशेष मामले पर ध्यान दें कि अर्धविराम विभाजक की आवश्यकता के बिना डीओ का सीधे एक और कथन द्वारा पालन किया जा सकता है-यह इसका हिस्सा नहीं है, यह एक अलग कथन है। अधिक मामूली परिवर्धनों में कथन है, जो प्रत्येक सेकंड में अगली घड़ी के टिक तक निष्पादन को रोकता है। यह एक पूरे टिक का इंतजार नहीं करता है, बस अगले टिक तक, जो तुरंत हो सकता है। एक मशीन भाषा दिनचर्या को कॉल करता है, या अधिकांश बोलियों में एनालॉग। मैथ, ऑपरेटर्स और फ़ंक्शंस एकोर्न ने सभी गणित के लिए 32-बिट हस्ताक्षरित पूर्णांकों का उपयोग किया, जिसमें कोई मानक फ्लोटिंग-पॉइंट समर्थन नहीं था। विभाजन को संभालने के लिए, जो अक्सर एक आंशिक भाग देता है, उन्होंने शेष को वापस करने के लिए प्रचालक को जोड़ा। उदाहरण के लिए, 2 वापस आएगा, जबकि 1 वापस आएगा। परिवर्तनीय नामों में केवल एक अक्षर हो सकता है, ए से जेड। सभी दोहरे अक्षर के संयोजन सरणी के रूप में आरक्षित हैं, इसलिए E एक एकल मान था, जबकि EE एक सरणी था। सभी सरणियों के लिए एक डी. आई. एम. कथन की आवश्यकता होती है, यह माइक्रोसॉफ्ट बेसिक की तरह 10 का आयाम नहीं मानता है। रनटाइम में, एक सरणी पर किया जाने वाला एकमात्र परीक्षण यह था कि जिस सूचकांक को पारित किया जा रहा था वह एक सकारात्मक मूल्य था, इसलिए कोई भी आयाम से बड़े मूल्यों को पारित करके स्मृति में पढ़ सकता था। यह बहु-आयामी सरणियों का समर्थन नहीं करता था। बुनियादी गणित संचालन शामिल हैं। यह बिटवाइज लॉजिक ऑपरेटरों का भी समर्थन करता है, जिनका उपयोग क्रमशः AND, OR और XOR के लिए किया जाता है। ये प्रचालक तुलना करते हैं, इसलिए 0 लौटाते हैं। OR के लिए बृहदान्त्र का उपयोग यही कारण है कि कथन विभाजक को अर्धविराम का उपयोग करना पड़ा। ध्यान दें कि ये IF कथनों में पाए जाने वाले तार्किक कनेक्शनों से अलग हैं, जैसे, जो भी समर्थित हैं। केवल दो गणित कार्य थे, और। एबीएस अन्य बेसिक की तरह काम करता है, जो दिए गए इनपुट के पूर्ण मूल्य को लौटाता है। आर. एन. डी. ऐसा नहीं करता है, यह-वे और + वे अधिकतम पूर्णांक मानों के बीच एक मान देता है। इसे पारंपरिक रूप में उपयोग करने के लिए 0 और दिए गए सकारात्मक मूल्य के बीच एक मान वापस करने के लिए, उदाहरण के लिए 0 और 10 के बीच, एक का उपयोग किया जाता है। वेक्टर उस युग के अधिकांश बेसिक ने मशीन विशिष्ट कार्यक्षमता तक पहुँचने के लिए पी. ई. के. और पी. ओ. के. ई. का उपयोग किया जो भाषा में ही निर्मित नहीं था। एकोर्न में पी. ई. के. और पी. ओ. के. ई. नहीं थे, और उपयोग में आसान प्रणाली में इस कार्यक्षमता को प्रदान करने के लिए नए ऑपरेटरों का उपयोग किया। प्रचालक थे और, पहले की सेटिंग या किसी दिए गए स्थान पर बाईट को लौटाना, और बाद की सेटिंग या 4-बाईट "शब्द" लौटाना। उदाहरण के लिए, अधिकांश बोलियों में पी. ई. के. के सामान्य उदाहरण, जैसे, के साथ पूरा किया जा सकता है। अधिकांश बोलियों में! के समतुल्य का अभाव था। इसके अलावा, उसी वाक्यविन्यास का उपयोग स्मृति में मान निर्धारित करने के लिए किया जा सकता है, उदाहरण के लिए, एक पी. ओ. के. ई. की तरह। मेमोरी में निरंतर रूप में व्यवस्थित डेटा तक पहुँचने में सहायता के लिए, जैसे संख्याओं की सरणी, ऑपरेटरों को एक चर के दाहिने हाथ की ओर लागू किया जा सकता है। जब इस तरह से उपयोग किया जाता है, जैसे, सिस्टम मेमोरी में चर के स्थान पर मेमोरी तक पहुँचता है। प्रचालक के बाद आने वाली किसी भी संख्या को ऑफसेट के रूप में लागू किया जाता था, इसलिए उदाहरण के लिए, स्मृति में ए के स्थान के बाद 100 स्थानों का मूल्य वापस कर देगा। इसका उपयोग अक्सर एक अन्य एकोर्न-केवल अवधारणा, "वेक्टर" के साथ किया जाता था। भ्रमित करने वाली बात यह है कि इन्हें एक सरणी के रूप में समान डी. आई. एम. आदेशों का उपयोग करके बनाया गया था, लेकिन एकल-अक्षर चर पर लागू किया गया था। जब डी. आई. एम. का सामना किया जाता था तो सिस्टम मेमोरी के शीर्ष पर कई स्थानों को अलग कर देता था, और फिर मेमोरी पॉइंटर को ऊपर ले जाता था। इसने मेमोरी का एक ब्लॉक छोड़ दिया जिसे तब इंडिरेक्शन ऑपरेटरों के साथ एक्सेस किया जा सकता था। उदाहरण के लिएः 10 डीआईएम ए (100) 20 प्रिंट ए? 10 जो ए में 11वें स्थान पर बाइट मान प्रिंट करेगा (सभी अभिगम शून्य-अनुक्रमित हैं)। इसी तरह, कोई भी चर नाम से पहले लागू किए गए उसी प्रचालक का उपयोग करके स्मृति में मानों को संग्रहीत कर सकता हैः! ए = 123456 यह ए. एस. सी. आई. आई. से दशमलव मान 123456 को एक पूर्णांक में बदल देगा और इसे ए के लिए आधार स्थान से शुरू होने वाले स्मृति स्थानों में संग्रहीत करेगा। वैक्टर के साथ संचालन में सहायता के लिए, एकोर्न ने छद्म-चर जोड़ा। जब प्रणाली पहली बार शुरू हुई, तो यह कार्यक्रम के अंत से पहले के स्थान की ओर इशारा करती है। इसके बाद किसी भी डी. आई. एम. को टी. ओ. पी. के वर्तमान मूल्य पर बनाया जाता था, और टी. ओ. पी. को फिर नई वस्तु के अंत में अद्यतन किया जाता था। टी. ओ. पी. में सीधे हेरफेर करके गतिशील वैक्टर बनाना संभव था। स्ट्रिंग्स एटम बेसिक ने स्ट्रिंग समर्थन जोड़ा लेकिन स्ट्रिंग चर का समर्थन नहीं किया और न ही इसमें परमाणु प्रकार के रूप में स्ट्रिंग की अवधारणा थी। इसके बजाय, वेक्टर प्रणाली का उपयोग मेमोरी में स्ट्रिंग डेटा को एएससीआईआई मानों के रूप में हेरफेर करने के लिए किया गया था। इस उपयोग में सहायता के लिए, प्रचालक ने स्मृति मूल्यों को अपने एएससीआईआई मूल्यों में परिवर्तित कर दिया। इस प्रचालक ने स्मृति से डेटा को पढ़ना तब तक जारी रखा जब तक कि उसे वापसी का सामना नहीं करना पड़ा, और स्मृति में डेटा लिखते समय, हमेशा अंत में एक रिटर्न जोड़ा जाता था। तो जबकि एक संख्या के रूप में स्मृति में ए के स्थान पर बाइट के एकल मूल्य को प्रिंट करेगा, उस स्थान से शुरू होने वाले मूल्यों को पढ़ेगा और इसे एक स्ट्रिंग के रूप में प्रिंट करेगा। उदाहरण के लिएः 10 डिम ए (12) ए = "हैलो, वर्ल्ड" 30 प्रिंट $ए यह कोड अन्य बोलियों में स्ट्रिंग्स के उपयोग के समान दिखाई दे सकता है, हालांकि चर नाम के सापेक्ष $का स्थान बदल जाता है। यह विशेष रूप से उन बोलियों के समान है जिनके लिए सभी तारों पर डी. आई. एम. की आवश्यकता होती है, जैसे एच. पी. टाइम-शेयर्ड बेसिक या अटारी बेसिक। आंतरिक रूप से ऑपरेशन बहुत अलग होता है। उन बोलियों में, ए और ए $दो अलग-अलग चर हैं और $, वास्तव में, नाम का हिस्सा है। एकोर्न, ए और $ए में वे एक ही चर हैं, और $उस चर के लिए एक यूनरी ऑपरेशन लागू कर रहा है। इसका मतलब यह भी है कि कोई स्ट्रिंग के लिए सरणी का उपयोग कर सकता है, जैसे, जो एए (10) में मान को स्ट्रिंग में बदल देता है। यह अवधारणा वेक्टर संकेतन का उपयोग करके अलग-अलग वर्णों तक पहुंचने की अनुमति देती है। उदाहरण के लिए, 5वें वर्ण का ASCII मान वापस करेगा, इस मामले में O के लिए 79, जबकि आउटपुट "O" होगा। एकल ऑपरेशन में एक सबस्ट्रिंग निकालने का कोई तरीका नहीं है, किसी को वर्णों पर लूप करना पड़ता है और उन्हें एक-एक करके स्थानांतरित करना पड़ता है। एक चर को दूसरे के अंत में निर्दिष्ट करके संयोजन संभव है, उदाहरण के लिए, स्ट्रिंग बी को ए के अंत में कॉपी करें। भाषा में केवल दो स्ट्रिंग कार्य हैं, जो पीछे की ओर लौटने वाले वर्ण की तलाश करते हैं और लंबाई वापस करते हैं, और एक वर्ण के एएससीआईआई मूल्य को वापस करते हैं। सीएच का एक विषम प्रारूप है जिसमें कोई अभिभावक नहीं है, इसलिए 65 वापस करेगा। यह अन्यथा अन्य बोलियों में देखी जाने वाली अधिक आम बोलियों के समान है। एक अन्य नया प्रचालक था, जिसने एक संख्यात्मक मान को हेक्साडेसिमल स्ट्रिंग में परिवर्तित कर दिया। $की तरह, इसका उपयोग रूपांतरण करने के लिए कहीं भी किया जा सकता है। उदाहरण के लिए, ए का मान दशमलव मान 16384 पर सेट करता है, जो स्क्रीन मेमोरी का स्थान है। इसे अक्सर $ऑपरेटर के साथ जोड़ा जाता था ताकि स्ट्रिंग्स में अप्रकाशित वर्ण हों, जैसे "कर्सर अप" वर्ण। फ्लोटिंग पॉइंट फ्लोटिंग-पॉइंट सपोर्ट को अतिरिक्त 4 KB ROM विस्तार के साथ जोड़ा जा सकता है। इसमें एक विस्तारित 40-बिट शब्द आकार, हस्ताक्षरित मंटिसा के 32 बिट के बाद एक 8-बिट प्रतिपादक का उपयोग किया गया। इसका मतलब था कि सिस्टम को मेमोरी से पढ़ने और लिखने के दौरान डेटा को अलग करने के लिए किसी तरीके की आवश्यकता थी, जिसे स्ट्रिंग ऑपरेटर के समान ही उपसर्गः% A = 123.45 का उपयोग करके संभाला गया था क्योंकि कोड एक अलग 4 KB ROM में निहित था, इसने PRINT जैसे मौजूदा कथनों को संशोधित नहीं किया था। इसके बजाय, बयानों का एक पूरी तरह से नया सेट पेश किया गया था, जिसमें शामिल थे। इसका मतलब है, उदाहरण के लिए, कि यदि मान तैरते बिंदु हैं, तो इसके बजाय कोई नहीं कर सकता है। एक पूर्णांक मान का उपयोग करके फ्लोट में परिवर्तित किया जा सकता है, और फ्लोट ऑपरेटर,% का उपयोग करके पूर्णांक में फ्लोट किया जा सकता है। रॉम में गणित कार्यों की एक बहुत बड़ी विविधता भी शामिल थी, जिसमें शामिल हैं। एक फ़्लोटिंग-पॉइंट संख्या को एक स्ट्रिंग में परिवर्तित किया गया, जैसा कि अन्य बोलियों में हुआ था, लेकिन इस मामले में, स्ट्रिंग को मेमोरी में लिखा गया था और फ़ंक्शन ने उस पते को वापस कर दिया जहां इसे संग्रहीत किया गया था। चूंकि स्ट्रिंग को पकड़ने के लिए पर्याप्त लंबे समय तक भंडारण की आवश्यकता होती है, इसलिए इसे अक्सर टॉप का उपयोग करके पूरा किया जाता था। उदाहरण के लिएः एसटीआर पाई, टॉप प्रिंट $टॉप टॉप = टॉप-लेन (टॉप) यह छद्म-चर पाई के मूल्य को मेमोरी स्थान टॉप से शुरू होने वाली स्ट्रिंग में बदल देता है, स्ट्रिंग को $टॉप का उपयोग करके प्रिंट करता है, और फिर उस मेमोरी को छोड़ देता है। इनपुट/आउटपुट और ज्यादातर अन्य बोलियों की तरह काम किया। एक विषमता इसलिए आई क्योंकि बृहदान्त्र और अर्धविराम का उपयोग पहले से ही अन्य उद्देश्यों के लिए किया जाता था, जिससे केवल अल्पविराम को अलग-अलग क्षेत्रों के लिए छोड़ दिया जाता था। उन मूल्यों को छापने के लिए जिनके बीच कोई स्थान नहीं था, मूल्यों को उनके बीच एक स्थान वर्ण के साथ सूचीबद्ध किया गया था, जैसे, एक प्रारूप जिसे कई अन्य बोलियों पर भी अनुमति दी गई थी, हालांकि शायद ही कभी उपयोग किया जाता था। यह अकेले संख्याओं को कॉम्पैक्ट प्रारूप में मुद्रित करने का कारण नहीं होगा, क्योंकि वे आम तौर पर प्रत्येक को 8 वर्ण चौड़ा बनाने के लिए दाईं ओर रिक्त स्थान के साथ मुद्रित होते हैं इसे छद्म-चर में मूल्य बदलकर समायोजित किया जा सकता है। एक ही उद्धरण के साथ एक नई पंक्ति छापी गई थी। अधिकांश बोलियों के समान कर्सर कॉलम लौटाता है। परमाणु के लिए डिफ़ॉल्ट भंडारण उपकरण एक कॉम्पैक्ट कैसेट प्रणाली थी। प्रत्येक फ़ाइल को ब्लॉकों की एक श्रृंखला के रूप में संग्रहीत किया गया था, जिनमें से प्रत्येक में फ़ाइल नाम के साथ एक शीर्षलेख था। कैसेट पर फ़ाइलों के नाम सूचीबद्ध किए जाने के साथ-साथ सहेजी गई फ़ाइलों को उनके शीर्षकों के आगे पढ़ा जा सकता है। मनमाना डेटा को पढ़ने या लिखने के लिए खोला जा सकता था, दोनों ने एक संख्यात्मक फ़ाइल हैंडल वापस किया। फाइलों को बंद कर दिया गया था। डेटा को संख्यात्मक प्रारूप में पढ़ा या लिखा जाता था, एकल बाइट्स के रूप में, और स्ट्रिंग्स के रूप में उपयोग किया जाता था। फ़ाइल की लंबाई वापस की गई, जबकि फ़ाइल में वर्तमान सूचक को वापस या सेट किया गया, अब तक पढ़े गए या लिखे गए बाइट्स की संख्या। यदि फ्लोटिंग-पॉइंट रॉम मौजूद था, तो यह जोड़ा गया। उदाहरण के लिएः ए = एफ. ओ. यू. टी. "ए. एफ. आई. एल. ई". डो बी. पी. यू. टी. ए, 88; वेट; वेट; वेट; वेट; यू. एन. टी. एल. 0 का उपयोग बाइट्स की एक श्रृंखला लिखने के लिए करेगा, 88s, जब तक कि उपयोगकर्ता प्रोग्राम को रोकने के लिए नहीं दबाता। फिर उन्हें वापस पढ़ा जा सकता है (मैन्युअल रूप से टेप को रिवाइंड करने के बाद) इसका उपयोग करकेः ए = एफ. आई. एन. "ए. एफ. आई. एल. ई". डी. ओ. प्रिंट $बी. जी. ई. टी. ए.; जब तक कि डॉलर का चिह्न सिस्टम को आने वाले द्विआधारी डेटा को स्ट्रिंग प्रारूप में बदलने के लिए कहता है, इसलिए इस मामले में, आउटपुट एक्स की एक श्रृंखला होगी, 88 की नहीं। ऐसा लग सकता है कि BGET के बजाय SGET का उपयोग किया जा सकता है, लेकिन यह फ़ाइल से पढ़ना जारी रखने का प्रयास करेगा जब तक कि यह एक वापसी वर्ण नहीं देखता, जो इस उदाहरण में नहीं लिखा गया था। ग्राफिक्स समर्थन द एटम में अल्पविकसित बिटमैप ग्राफिक्स थे और एटम बेसिक ने इसका समर्थन करने के लिए कई कमांड जोड़े। स्क्रीन को साफ़ किया, ग्राफिकल कर्सर को दिए गए X, Y स्थान पर स्थानांतरित किया, और वर्तमान स्थान से प्रदान किए गए X, Y तक एक रेखा खींची। फ्लोटिंग-पॉइंट रॉम में स्टेटमेंट को जोड़ने के साथ रंगीन ग्राफिक्स के लिए भी समर्थन शामिल था। एक पैरामीटर 0 से 3 के साथ रंग को कॉल करना, बाद के आउटपुट को उस रंग पर सेट करता है। एक काले और सफेद प्रदर्शन पर, रंगों को भूरे रंग के रंगों के रूप में दिखाया गया था। टिप्पणियाँ संदर्भ ग्रंथ सूची एकोर्न कंप्यूटर बेसिक दुभाषिया बेसिक प्रोग्रामिंग भाषा परिवार