Acorn System BASIC
অ্যাকোর্ন সিস্টেম বেসিক এবং অ্যাটম বেসিক হল অ্যাকোর্ন কম্পিউটার দ্বারা তাদের প্রাথমিক মাইক্রোকম্পিউটার যেমন অ্যাকোর্ন সিস্টেম 3 এবং অ্যাকোর্ন অ্যাটমের জন্য বিকশিত বেসিক প্রোগ্রামিং ভাষার দুটি ঘনিষ্ঠভাবে সম্পর্কিত উপভাষা। অভ্যন্তরীণভাবে বিকশিত, এগুলির হোম কম্পিউটার যুগের বেশিরভাগ বেসিক উপভাষার তুলনায় বেশ কয়েকটি উল্লেখযোগ্য বৈশিষ্ট রয়েছে। বিশেষত, এই ভাষায় মেশিনের অনেক অভ্যন্তরীণ ক্রিয়াকলাপের জন্য বিবৃতির অভাব ছিল এবং পিইকেই এবং পিওকেই-এর পরিবর্তে ইনডাইরেকশন অপারেটর ব্যবহার করে মেমরি অবস্থানগুলির সরাসরি অ্যাক্সেস এবং ম্যানিপুলেশন ব্যবহার করে এটি সরবরাহ করা হয়েছিল। উভয়েরই ভাসমান-বিন্দু সমর্থনের অভাব ছিল, যদিও এটি একটি ঐচ্ছিক রমের সাথে যুক্ত করা যেতে পারে যা আরও স্বতন্ত্রতা প্রবর্তন করে। সিস্টেম এবং অ্যাটম বেসিকের মধ্যে প্রাথমিকভাবে পার্থক্য রয়েছে যে অ্যাটম প্রাথমিক স্ট্রিং ম্যানিপুলেশন প্রদানের জন্য একই ইনডাইরেকশন সিস্টেম ব্যবহার করেছিল, যা স্ট্যান্ডার্ডের অভাব ছিল এবং কম্পিউটার গ্রাফিক্সের জন্য অল্প সংখ্যক নতুন বিবৃতি যুক্ত করেছিল। এই অদ্ভুততাগুলির বেশিরভাগই সরানো হয়েছিল যখন অন্তর্নিহিত ব্যবস্থাটি পরমাণুর উত্তরসূরি বিবিসি মাইক্রোতে বিবিসি বেসিক তৈরি করার জন্য ব্যাপকভাবে প্রসারিত হয়েছিল। বিবিসি বেসিক রমগুলি পরে পরমাণু ব্যবহারকারীদের জন্য দেওয়া হয়েছিল। অ্যাকোর্ন কম্পিউটার 1978 সালে গঠিত হয় এবং 1979 সালে অ্যাকোর্ন সিস্টেম 1 দিয়ে শুরু করে কিট-নির্মিত এবং ইউরোকার্ড-ভিত্তিক সিস্টেমগুলির একটি সিরিজ তৈরি করা শুরু করে। তারা এই যন্ত্রগুলির জন্য অ্যাক্রন সিস্টেম বেসিক তৈরি করেছিল, একটি পূর্ণসংখ্যা-শুধুমাত্র উপভাষা যার জন্য মোট 4 কেবি মেমরির প্রয়োজন ছিল। ভাষাটির বেশ কয়েকটি বাস্তবায়নের বিবরণ ছিল যা এটিকে "অত্যন্ত অ-মানক" করে তুলেছিল। 1980 সালে প্রবর্তিত অ্যাটমটি একটি একক বোর্ডে প্যাকেজ করা সিস্টেম 3-এর অংশগুলি থেকে নির্মিত হয়েছিল। সিস্টেমগুলি 2 কেবি র্যাম এবং 8 কেবি রম সহ স্ট্যান্ডার্ড প্রেরণ করে, যার মধ্যে বেসিক এবং বেশ কয়েকটি ডিভাইস ড্রাইভার অন্তর্ভুক্ত ছিল। অ্যাটম বেসিক সিস্টেম সংস্করণ থেকে মাত্র কয়েকটি পরিবর্তন করেছে, স্ট্রিং ম্যানিপুলেশন এবং অল্প সংখ্যক গ্রাফিক্স কমান্ডের জন্য সমর্থন যোগ করেছে। মোট 12 কেবি পর্যন্ত র্যাম এবং অতিরিক্ত 4 কেবি রম যা ভাসমান-বিন্দু সমর্থন যোগ করে, পরমাণুটি উন্নতযোগ্য ছিল। এটি পৃথক ফাংশন এবং ক্রিয়াকলাপ ব্যবহার করে যা তাদের উপর কাজ করে, যা% চিহ্ন দ্বারা নির্দেশিত। প্রতীকের এই পছন্দটি দুর্ভাগ্যজনক ছিল, কারণ মাইক্রোসফ্ট বেসিক শতকরা চিহ্নটি পূর্ণসংখ্যা নির্দেশ করতে ব্যবহার করেছিল, ভাসমান বিন্দু নয়। অ্যাকম তার উত্তরসূরি প্রোটনের বিকাশ শুরু করার আগে মাত্র অল্প সময়ের জন্য বাজারে ছিল। প্রাথমিকভাবে এটি একটি দ্বি-প্রসেসর ইউনিট হওয়ার কথা ছিল। নকশাটি তখনও তার প্রাথমিক পর্যায়ে ছিল যখন একাধিক ঘটনার ফলে এটি একক-সিপিইউ বিবিসি মাইক্রো-এর ভিত্তি হিসাবে নির্বাচিত হয়েছিল। সেই সময়ে, মন্তব্য করা হয়েছিল যে এটি অবশ্যই অ্যাকর্নের বিভিন্ন ধরনের বেসিক ব্যবহার করা উচিত নয়, যা "কার্যত অন্য কোনও মাইক্রো কম্পিউটার বুঝতে পারে না" এবং "নতুন ভাষাটি যদি অ্যাটমের বেসিকের উপর ভিত্তি করে হয়, তবে এটি একটি বিপর্যয় হবে"। শেষ পর্যন্ত, বিবিসি সিস্টেম একটি অ্যাকোর্ন-লিখিত বেসিক ব্যবহার করেছিল, তবে ব্যাপকভাবে পরিবর্তিত হয়েছিল। ফলস্বরূপ বিবিসি বেসিক মাইক্রোসফ্ট বেসিকের সাথে অনেক বেশি মিল ছিল এবং পরে এটমের আপগ্রেড হিসাবে দেওয়া হয়েছিল। বিবরণ যেহেতু দুটি উপভাষা খুব মিল, তাই নিম্নলিখিতগুলি প্রাথমিকভাবে অ্যাটম বেসিককে বোঝাবে এবং যেখানে তাদের অস্তিত্ব রয়েছে সেখানে পার্থক্য নির্দেশ করবে। প্রোগ্রাম সম্পাদনা সেই যুগের বেশিরভাগ বেসিকের মতো, অ্যাটম বেসিক প্রত্যক্ষ (তাৎক্ষণিক) এবং পরোক্ষ মোড সহ একটি লাইন-ভিত্তিক সম্পাদক ব্যবহার করত। লাইন নম্বর ছাড়াই একটি বিবৃতি টাইপ করা অবিলম্বে অপারেশনটি সম্পাদন করে। পরিবর্তে একটি লাইন নম্বর যোগ করে সেই বিবৃতিগুলি সংরক্ষিত প্রোগ্রামে স্থাপন করা হয়। একটি স্বকীয়তা ছিল যে এটি একটি লাইনে একাধিক বিবৃতির অনুমতি দিলেও, বিবৃতির মধ্যে বিভাজক ছিল সাধারণভাবে ব্যবহৃত কোলনের পরিবর্তে অর্ধ-কোলন, এইভাবে ব্যবহারকারীকে অন্যান্য কম্পিউটারের জন্য প্রোগ্রাম টাইপ করার সময় সেই অক্ষরটি রূপান্তর করতে হয়। কম্পিউটার টার্মিনালের সাথে ব্যবহারের উদ্দেশ্যে, অ্যাক্রন বেসিক একটি পূর্ণ-পর্দা সম্পাদনা মোড সমর্থন করে না। বিপরীতে, কমোডোর বেসিক (এবং অন্যান্য অনেক মাইক্রো কম্পিউটার উপভাষায়), একজন কার্সার কী ব্যবহার করে প্রোগ্রামের তালিকায় উপরের দিকে যেতে পারেন, পর্দায় পরিবর্তন করতে পারেন এবং তারপরে সেই পরিবর্তনগুলি প্রবেশ করতে টিপতে পারেন। অ্যাটম-এ, একজন কার্সার কী ব্যবহার করে একটি তালিকাতে উপরের দিকে যেতে পারে, কিন্তু সেই পাঠ্যটি সম্পাদনা করার জন্য, ইনপুট এলাকায় এটি অনুলিপি করার জন্য কী টিপে দেওয়া হয়েছিল যেখানে এটি সম্পাদনা করা যেতে পারে। অ্যাটমের আরেকটি পার্থক্য ছিল কী, যা একটি সিস্টেম রিসেট সম্পাদন করে, সম্ভাব্যভাবে মেমরি থেকে প্রোগ্রামটি সরিয়ে দেয়। যদি কীটি ভুল করে চেপে রাখা হয় তবে এটি পুনরায় সেট করার জন্য, অ্যাটম বেসিক কমান্ডটি যোগ করেছে, যা দুর্ঘটনাক্রমে পুনরায় সেট করতেও ব্যবহার করা যেতে পারে। আরও একটি ছোট পরিবর্তন ছিল যে বিয়োগ চিহ্নের পরিবর্তে লাইন নম্বর থেকে এবং লাইন নম্বর থেকে কমা-বিচ্ছিন্ন ব্যবহার করা হয়, 20 থেকে 40 লাইন মুদ্রণ করে। শাখা-প্রশাখার জন্য সংখ্যার পরিবর্তে লাইন লেবেল ব্যবহার করার ক্ষমতাও ছিল এই ভাষার। লেবেলগুলিতে লাইন নম্বরের ঠিক পরে টাইপ করা একটি ছোট হাতের চিঠি ছিল। উদাহরণস্বরূপঃ 10s প্রিন্ট "*" 20 জি. ও. টি. ও এই পদ্ধতির সুবিধা হল যে বিবৃতির মেমরি ঠিকানাটি এস-এ সংরক্ষণ করা হয়, যার অর্থ হল শাখা, একটি জি. ও. টি. ও, মিলে যাওয়া লাইন নম্বর খুঁজতে প্রোগ্রামের প্রতিটি লাইনের মধ্য দিয়ে অনুসন্ধান না করেই সরাসরি সেই লাইনে যেতে পারে। অ্যাক্রন শাখা লক্ষ্যগুলির জন্য লাইন নম্বর তৈরি করতে যে কোনও অভিব্যক্তি ব্যবহার করার অনুমতি দেয়, যেমন। বিবৃতি অ্যাকর্নের আদিমগুলি সেই যুগের অন্যান্য বেসিকগুলির মতো ছিল এবং বেশিরভাগ প্রাথমিক বিবৃতিগুলিকে সমর্থন করেছিল। বেশ কয়েকটি সাধারণ বিবৃতি অনুপস্থিত রয়েছে, যা উল্লেখযোগ্যভাবে একটি প্রোগ্রামে তথ্য সংরক্ষণ, গণনা করা শাখা এবং ব্যবহারকারী-সংজ্ঞায়িত ফাংশনের জন্য ব্যবহৃত হয়। এই মৌলিক বিষয়গুলিতে, অ্যাক্রন নীচে-পরীক্ষিত, অভিব্যক্তি-ভিত্তিক লুপ নির্মাণের জন্য যোগ করা হয়েছে। এফওআর লুপগুলি তাদের সূচক পরিবর্তনশীল এবং একটি ধ্রুবক মানের মধ্যে সরাসরি তুলনা ব্যবহার করে অত্যন্ত অনুকূলিত করা হয় যা লুপে প্রবেশের পরে কেবল একবার সেট করা হয়। আরেকটি অপ্টিমাইজেশন হল যে FOR-এর ঠিকানা সংরক্ষণ করা হয়, লাইন নম্বর নয়, তাই যখন ম্যাচিং NEXT-এর মুখোমুখি হয় তখন প্রোগ্রামটি অবিলম্বে FOR-এ ফিরে যেতে পারে। যদিও এফওআর অনেক লুপের জন্য উপযুক্ত, যখন আরও নিয়ন্ত্রণের প্রয়োজন হয়, উদাহরণস্বরূপ আরও জটিল মানদণ্ডের সাথে তুলনা করার সময়, আইএফ বিবৃতিটি ব্যবহার করা যেতে পারেঃ 500 এ = এ + 1 510 আরইএম অতিরিক্ত বিবৃতি এখানে 600 আইএফ এ> 10 এবং বি> 100 টি 500 লুপের এই শৈলীর নেতিবাচক দিকটি হল যে শাখাটির জন্য 500 লাইনের জন্য প্রোগ্রামটি অনুসন্ধান করা প্রয়োজন, যা সাধারণত একটি লুপে অনেকবার ঘটে। বড় প্রোগ্রামগুলিতে, এটি উল্লেখযোগ্য ওভারহেড প্রবর্তন করতে পারে। এই উদ্দেশ্যে একটি ডিও ব্যবহার করা উচ্চতর কর্মক্ষমতা প্রদান করেঃ 500 ডিও এ = এ + 1 510 আরইএম অতিরিক্ত বিবৃতি এখানে 600 ইউ. এন. টি. আই. এল এ> 10 এবং বি> 100 এই ক্ষেত্রে, এফ. ও. আর লুপের মতো, ডিও-এর ঠিকানা সংরক্ষণ করা হয় যখন লুপটি প্রবেশ করানো হয়, যা ইউ. এন. টি. আই. এল-কে প্রোগ্রামের মাধ্যমে স্ক্যান না করে অবিলম্বে লুপের শীর্ষে ফিরে আসার অনুমতি দেয়। বিশেষ ক্ষেত্রে লক্ষ্য করুন যে ডিও-কে সরাসরি অন্য বিবৃতি দ্বারা অনুসরণ করা যেতে পারে সেমিকোলন বিভাজকের প্রয়োজন ছাড়াই-এটি এর অংশ নয়, এটি একটি পৃথক বিবৃতি। আরও ছোটখাটো সংযোজনগুলির মধ্যে রয়েছে বিবৃতি, যা প্রতি সেকেন্ডে পরবর্তী ঘড়ির টিক পর্যন্ত কার্যকর করা বন্ধ করে দেয়। এটি একটি সম্পূর্ণ টিকের জন্য অপেক্ষা করে না, ঠিক পরবর্তী টিক পর্যন্ত, যা অবিলম্বে ঘটতে পারে। এটি একটি যান্ত্রিক ভাষার রুটিন, যা বেশিরভাগ উপভাষার সমতুল্য। গণিত, অপারেটর এবং ফাংশন অ্যাক্রন সমস্ত গণিতের জন্য 32-বিট স্বাক্ষরিত পূর্ণসংখ্যা ব্যবহার করে, কোনও স্ট্যান্ডার্ড ফ্লোটিং-পয়েন্ট সমর্থন ছাড়াই। বিভাজন পরিচালনা করার জন্য, যা প্রায়শই একটি ভগ্নাংশ অংশ ফেরত দেয়, তারা অবশিষ্টাংশ ফেরত দেওয়ার জন্য অপারেটরকে যুক্ত করে। উদাহরণস্বরূপ, 2 রিটার্ন করবে, এবং 1 রিটার্ন করবে। পরিবর্তনশীল নামগুলি শুধুমাত্র একটি অক্ষর নিয়ে গঠিত হতে পারে, এ থেকে জেড। সমস্ত দ্বি-অক্ষরের সংমিশ্রণগুলি অ্যারে হিসাবে সংরক্ষিত থাকে, তাই E একটি একক মান ছিল, যখন EE একটি অ্যারে ছিল। সমস্ত অ্যারেগুলির জন্য একটি ডিআইএম বিবৃতি প্রয়োজন ছিল, এটি মাইক্রোসফ্ট বেসিকের মতো 10 এর মাত্রা ধরে নেয়নি। রানটাইমে, একটি অ্যারেতে সঞ্চালিত একমাত্র চেক ছিল যে পাস করা সূচকটি একটি ধনাত্মক মান ছিল, তাই কেউ মাত্রার চেয়ে বড় মানগুলি পাস করে মেমরিতে পড়তে পারে। এটি বহুমাত্রিক অ্যারে সমর্থন করে না। মৌলিক গণিত ক্রিয়াকলাপ অন্তর্ভুক্ত। এটি বিটওয়াইজ লজিক অপারেটরদেরও সমর্থন করে, যা যথাক্রমে AND, OR এবং XOR-এর জন্য ব্যবহৃত হয়। এই অপারেটররা তুলনা করে, তাই 0 প্রদান করে। OR-এর জন্য কোলনের ব্যবহার হল কেন বিবৃতি বিভাজককে অর্ধ-কোলন ব্যবহার করতে হয়েছিল। লক্ষ্য করুন যে এগুলি আইএফ স্টেটমেন্টে পাওয়া যৌক্তিক সংযোগগুলি থেকে পৃথক, যেমন, যা সমর্থিত। মাত্র দুটি গণিত ফাংশন ছিল, এবং। এবিএস অন্যান্য বেসিকের মতো কাজ করে, একটি প্রদত্ত ইনপুটের পরম মান প্রদান করে। আরএনডি তা করে না, এটি-ভে এবং + ভে সর্বাধিক পূর্ণসংখ্যার মানগুলির মধ্যে একটি মান প্রদান করে। 0 এবং প্রদত্ত ধনাত্মক মানের মধ্যে একটি মান ফেরত দেওয়ার জন্য প্রচলিত আকারে এটি ব্যবহার করার জন্য, উদাহরণস্বরূপ 0 এবং 10 এর মধ্যে, একটি ব্যবহার করা হয়েছে। ভেক্টর সেই যুগের বেশিরভাগ মৌলিক যন্ত্রগুলি নির্দিষ্ট কার্যকারিতা অ্যাক্সেস করতে পিক এবং পোক ব্যবহার করত যা ভাষায় নিজেই নির্মিত ছিল না। অ্যাকর্নের পি. ই. কে এবং পি. ও. কে ছিল না এবং সহজে ব্যবহারযোগ্য ব্যবস্থায় এই কার্যকারিতা প্রদানের জন্য নতুন অপারেটর ব্যবহার করেছিল। অপারেটররা ছিল এবং, পূর্ববর্তী সেটিং বা একটি নির্দিষ্ট স্থানে বাইট ফেরত দেওয়া, এবং পরের সেটিং বা একটি 4-বাইট "শব্দ" ফেরত দেওয়া। উদাহরণস্বরূপ, বেশিরভাগ উপভাষায় পি. ই. কে-এর সাধারণ উদাহরণ, যেমন, দিয়ে সম্পন্ন করা যেতে পারে। বেশিরভাগ উপভাষায়!-এর সমতুল্য ভাষার অভাব ছিল। উপরন্তু, একই বাক্য গঠন মেমরি মান সেট করতে ব্যবহার করা যেতে পারে, যেমন একটি পিওকেই, উদাহরণস্বরূপ। সংখ্যার অ্যারেগুলির মতো স্মৃতিতে অবিচ্ছিন্ন আকারে সাজানো ডেটা অ্যাক্সেস করতে সহায়তা করার জন্য, অপারেটরগুলি একটি পরিবর্তনশীলের ডানদিকে প্রয়োগ করা যেতে পারে। যখন এইভাবে ব্যবহার করা হয়, যেমন, সিস্টেমটি স্মৃতিতে পরিবর্তনশীলের অবস্থানে মেমরি অ্যাক্সেস করে। অপারেটরকে অনুসরণ করা যে কোনও সংখ্যা অফসেট হিসাবে প্রয়োগ করা হত, তাই উদাহরণস্বরূপ, স্মৃতিতে এ-এর অবস্থানের পরে 100টি অবস্থানের মূল্য ফেরত দেবে। এটি প্রায়শই আরেকটি অ্যাক্রন-শুধুমাত্র ধারণার সাথে ব্যবহৃত হত, "ভেক্টর"। বিভ্রান্তিকরভাবে, এগুলি একটি অ্যারে হিসাবে একই ডিআইএম কমান্ড ব্যবহার করে তৈরি করা হয়েছিল, তবে একক-অক্ষরের ভেরিয়েবলগুলিতে প্রয়োগ করা হয়েছিল। ডি. আই. এম-এর মুখোমুখি হলে সিস্টেমটি মেমরির শীর্ষে অনেকগুলি অবস্থান আলাদা করে রাখবে এবং তারপরে মেমরি পয়েন্টারটি উপরে নিয়ে যাবে। এটি মেমরির একটি ব্লক রেখে গেছে যা তখন ইনডাইরেকশন অপারেটরদের সাথে অ্যাক্সেস করা যেতে পারে। উদাহরণস্বরূপঃ 10 ডিআইএম এ (100) 20 প্রিন্ট এ? 10 যা এ-তে 11তম স্থানে বাইটের মান মুদ্রণ করবে (সমস্ত অ্যাক্সেস শূন্য-সূচকযুক্ত)। একইভাবে, পরিবর্তনশীল নামের আগে প্রয়োগ করা একই অপারেটর ব্যবহার করে মেমরিতে মান সংরক্ষণ করা যেতে পারেঃ! এ = 123456 এটি এ. এস. সি. আই. আই থেকে দশমিক মান 123456 কে একটি পূর্ণসংখ্যায় রূপান্তরিত করবে এবং এ-এর মূল অবস্থান থেকে শুরু করে মেমরির অবস্থানগুলিতে সংরক্ষণ করবে। ভেক্টরগুলির সাথে ক্রিয়াকলাপে সহায়তা করার জন্য, অ্যাক্রন ছদ্ম-পরিবর্তনশীল যোগ করেছে। যখন সিস্টেমটি প্রথম শুরু হয়েছিল, তখন এটি প্রোগ্রামের শেষের প্রথম অবস্থানের দিকে ইঙ্গিত করেছিল। যে কোনও ডিআইএম তখন টিওপি-র বর্তমান মূল্যে তৈরি করা হয়েছিল এবং টিওপি তখন নতুন বস্তুর শেষে আপডেট করা হয়েছিল। সরাসরি টিওপি পরিচালনা করে গতিশীল ভেক্টর তৈরি করা সম্ভব ছিল। স্ট্রিংস অ্যাটম বেসিক স্ট্রিং সমর্থন যোগ করেছে কিন্তু স্ট্রিং ভেরিয়েবল সমর্থন করে না বা এটির পারমাণবিক প্রকার হিসাবে স্ট্রিংয়ের ধারণাও ছিল না। পরিবর্তে, ভেক্টর সিস্টেমটি এ. এস. সি. আই. আই মান হিসাবে স্মৃতিতে স্ট্রিং ডেটা পরিচালনা করতে ব্যবহৃত হয়েছিল। এই ব্যবহারকে সহায়তা করার জন্য, অপারেটর ইন-মেমরি মানগুলিকে তাদের এ. এস. সি. আই. আই মানগুলিতে রূপান্তরিত করে। এই অপারেটর মেমরি থেকে ডেটা পড়া চালিয়ে যায় যতক্ষণ না এটি একটি রিটার্নের মুখোমুখি হয় এবং মেমরিতে ডেটা লেখার সময় সর্বদা শেষে একটি রিটার্ন যোগ করে। সুতরাং যখন একটি সংখ্যা হিসাবে স্মৃতিতে এ-এর অবস্থানে বাইটের একক মানটি মুদ্রণ করবে, তখন সেই অবস্থান থেকে শুরু হওয়া মানগুলি পড়বে এবং এটি একটি স্ট্রিং হিসাবে মুদ্রণ করবে। উদাহরণস্বরূপঃ 10 ডিআইএম এ (12) এ = "হ্যালো, ওয়ার্ল্ড" 30 প্রিন্ট $এ এই কোডটি অন্যান্য উপভাষায় স্ট্রিং ব্যবহারের সাথে খুব মিল বলে মনে হতে পারে, যদিও পরিবর্তনশীল নামের সাপেক্ষে $-এর অবস্থান পরিবর্তিত হয়। এটি বিশেষত সেই উপভাষাগুলির অনুরূপ যা এইচপি টাইম-শেয়ার্ড বেসিক বা আটারি বেসিকের মতো সমস্ত স্ট্রিংয়ে একটি ডিআইএম প্রয়োজন। অভ্যন্তরীণভাবে, অপারেশনটি খুব আলাদা। এই উপভাষাগুলিতে, এ এবং এ $দুটি ভিন্ন পরিবর্তনশীল এবং $, কার্যত, নামের অংশ। অ্যাকোর্ন, এ এবং $এ-তে তারা একই পরিবর্তনশীল, এবং $সেই পরিবর্তনশীলের জন্য একটি ইউনারি অপারেশন প্রয়োগ করছে। এর অর্থ হল স্ট্রিংয়ের জন্য অ্যারে ব্যবহার করা যেতে পারে, যেমন, যা এএ (10)-এর মানকে একটি স্ট্রিং-এ রূপান্তরিত করে। এই ধারণাটি ভেক্টর নোটেশন ব্যবহার করে পৃথক অক্ষরগুলিকে অ্যাক্সেস করার অনুমতি দেয়। উদাহরণস্বরূপ, 5ম অক্ষরের এ. এস. সি. আই. আই মান ফেরত দেবে, এই ক্ষেত্রে ও-এর জন্য 79, এবং আউটপুট হবে "ও"। একটি একক অপারেশনে একটি সাবস্ট্রিং বের করার কোনও উপায় নেই, একজনকে অক্ষরগুলির উপর দিয়ে লুপ করতে হবে এবং সেগুলি একের পর এক সরাতে হবে। উদাহরণস্বরূপ, একটি পরিবর্তনশীলকে অন্যটির শেষে বরাদ্দ করার মাধ্যমে সংযোগ সম্ভব, উদাহরণস্বরূপ, স্ট্রিং বি-কে এ-এর শেষে অনুলিপি করা। ভাষাটিতে শুধুমাত্র দুটি স্ট্রিং ফাংশন রয়েছে, যা পিছনের রিটার্ন অক্ষরের সন্ধান করে এবং দৈর্ঘ্য ফেরত দেয় এবং একটি অক্ষরের ASCII মান ফেরত দেয়। সিএইচ-এর একটি বিজোড় বিন্যাস রয়েছে যার কোনও প্যারেন্ট নেই, তাই এটি 65 ফেরত দেবে। এটি অন্যথায় অন্যান্য উপভাষায় দেখা যায়। আরেকটি নতুন অপারেটর ছিল, যা একটি সংখ্যাসূচক মানকে একটি হেক্সাডেসিমাল স্ট্রিংয়ে রূপান্তরিত করে। $-এর মতো, এটি রূপান্তরটি সম্পাদনের জন্য যে কোনও জায়গায় ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, A-এর মান দশমিক মান 16384-এ সেট করুন, যা স্ক্রিন মেমরির অবস্থান। এটি প্রায়শই $অপারেটরের সাথে মিলিত হত যাতে স্ট্রিংগুলিতে "কার্সার আপ" অক্ষরের মতো অপ্রকাশিত অক্ষর থাকতে পারে। অতিরিক্ত 4 কেবি রম সম্প্রসারণের সাথে ফ্লোটিং পয়েন্ট ফ্লোটিং পয়েন্ট সমর্থন যোগ করা যেতে পারে। এটি একটি সম্প্রসারিত 40-বিট শব্দের আকার, 32 বিট স্বাক্ষরিত মান্টিসা এবং তারপরে একটি 8-বিট সূচক ব্যবহার করে। এর অর্থ হল মেমরি থেকে ডেটা পড়ার এবং লেখার সময় পার্থক্য করার জন্য সিস্টেমের কিছু উপায়ের প্রয়োজন ছিল, যা স্ট্রিং অপারেটরের মতো একটি ফ্যাশনে পরিচালনা করা হয়েছিল, উপসর্গ ব্যবহার করেঃ% A = 123.45 যেহেতু কোডটি একটি পৃথক 4 কেবি রমের মধ্যে ছিল, এটি প্রিন্টের মতো বিদ্যমান বিবৃতিগুলি সংশোধন করেনি। পরিবর্তে, বিবৃতিগুলির একটি সম্পূর্ণ নতুন সেট চালু করা হয়েছিল, যার মধ্যে রয়েছে। এর অর্থ, উদাহরণস্বরূপ, যদি মানগুলি ভাসমান বিন্দু হয়, তবে তার পরিবর্তে একজনকে অবশ্যই তা করতে হবে। একটি পূর্ণসংখ্যার মান ফ্লোট অপারেটর,% ব্যবহার করে ফ্লোট এবং ফ্লোট ব্যবহার করে পূর্ণসংখ্যায় রূপান্তরিত করা যেতে পারে। রম-এ আরও অনেক বেশি সংখ্যক গণিতের ফাংশন অন্তর্ভুক্ত ছিল, যার মধ্যে রয়েছেঃ অন্যান্য উপভাষার মতো একটি ভাসমান-বিন্দু সংখ্যাকে একটি স্ট্রিং-এ রূপান্তরিত করা হয়েছিল, তবে এই ক্ষেত্রে, স্ট্রিংটি স্মৃতিতে লেখা হয়েছিল এবং ফাংশনটি যেখানে সংরক্ষণ করা হয়েছিল সেই ঠিকানাটি ফিরিয়ে দিয়েছিল। যেহেতু স্ট্রিংটি ধরে রাখার জন্য যথেষ্ট দীর্ঘ স্টোরেজ প্রয়োজন ছিল, এটি প্রায়শই টিওপি ব্যবহার করে সম্পন্ন করা হত। উদাহরণস্বরূপঃ এস. টি. আর. পি. আই, টপ প্রিন্ট $টপ টপ = টপ-লেন (টপ) এটি সিউডো-ভেরিয়েবল পি. আই-এর মানকে মেমরির অবস্থান টি. ও. পি থেকে শুরু করে একটি স্ট্রিং-এ রূপান্তরিত করে, $টপ ব্যবহার করে স্ট্রিংটি প্রিন্ট করে এবং তারপর সেই মেমোরিটি পরিত্যাগ করে। ইনপুট/আউটপুট এবং বেশিরভাগই অন্যান্য উপভাষার মতো কাজ করে। একটি অদ্ভুততা ঘটেছিল কারণ কোলন এবং সেমিকোলন ইতিমধ্যে অন্যান্য উদ্দেশ্যে ব্যবহৃত হয়েছিল, কেবলমাত্র কমা পৃথক ক্ষেত্রের জন্য রেখে দেওয়া হয়েছিল। তাদের মধ্যে কোনও স্থান না থাকা মানগুলি মুদ্রণ করার জন্য, মানগুলি তাদের মধ্যে একটি স্থান অক্ষরের সাথে তালিকাভুক্ত করা হয়েছিল, যেমন, এমন একটি বিন্যাস যা অন্যান্য অনেক উপভাষায় অনুমোদিত ছিল যদিও খুব কমই ব্যবহৃত হত। এটি একা সংখ্যাগুলিকে সংক্ষিপ্ত বিন্যাসে মুদ্রণের কারণ হবে না, কারণ এগুলি সাধারণত ডানদিকে ফাঁকা স্থান দিয়ে মুদ্রিত হয় যাতে প্রতিটি 8 অক্ষর প্রশস্ত হয় এটি ছদ্ম-পরিবর্তনশীলের মান পরিবর্তন করে সামঞ্জস্য করা যেতে পারে। একটি নতুন লাইন একটি একক উদ্ধৃতি সহ মুদ্রিত হয়েছিল। বেশিরভাগ উপভাষার মতো কার্সার কলামটি ফেরত দেয়। অ্যাটমের ডিফল্ট স্টোরেজ ডিভাইসটি ছিল একটি কমপ্যাক্ট ক্যাসেট সিস্টেম। প্রতিটি ফাইল ব্লকের একটি সিরিজ হিসাবে সংরক্ষণ করা হয়েছিল, যার প্রত্যেকটিতে ফাইলের নাম সহ একটি হেডার ছিল। ক্যাসেটে ফাইলগুলির নামগুলি তালিকাভুক্ত করার সময় তাদের হেডারগুলি অতিক্রম করার সময় সংরক্ষণ করা ফাইলগুলি সহ পুনরায় পড়া যেতে পারে। ব্যবহার বা লেখার জন্য নির্বিচারে ডেটা খোলা যেতে পারে, যা উভয়ই একটি সংখ্যাসূচক ফাইল হ্যান্ডেল ফেরত দেয়। ফাইলগুলি বন্ধ করে দেওয়া হয়েছিল। তথ্যগুলি সংখ্যাসূচক বিন্যাসে পড়া বা লেখা হত, একক বাইট হিসাবে এবং স্ট্রিং হিসাবে ব্যবহার করা হত। ফাইলের বর্তমান পয়েন্টারটি ফেরত দেওয়া বা সেট করার সময় ফাইলের দৈর্ঘ্য, এখনও পর্যন্ত পড়া বা লেখা বাইটের সংখ্যা ফেরত দেয়। যদি ভাসমান-বিন্দু রম উপস্থিত থাকে, এটি যোগ করা হয়েছে। উদাহরণস্বরূপঃ এ = এফওইউটি "এএফআইএলই" বিপিইউটি এ, 88; অপেক্ষা করুন; অপেক্ষা করুন; অপেক্ষা করুন; যতক্ষণ না ব্যবহারকারী প্রোগ্রামটি বন্ধ করার জন্য চাপ দেয়, ততক্ষণ পর্যন্ত এটি 88-এর একটি সিরিজ লিখতে ব্যবহার করবে। তারপরে এগুলি আবার পড়া যেতে পারে (ম্যানুয়ালি টেপটি রিওয়াইন্ড করার পরে) ব্যবহার করেঃ এ = ফিন "এএফআইএলই" ডু প্রিন্ট $বিজিইটি এ; যতক্ষণ না 0 ডলার সাইন সিস্টেমকে ইনকামিং বাইনারি ডেটা স্ট্রিং ফর্ম্যাটে রূপান্তর করতে বলে, তাই এই ক্ষেত্রে, আউটপুটটি এক্স-এর একটি সিরিজ হবে, 88-এর নয়। মনে হতে পারে যে বিজিইটির পরিবর্তে এসজিইটি ব্যবহার করা যেতে পারে, তবে এটি ফাইল থেকে পড়া চালিয়ে যাওয়ার চেষ্টা করবে যতক্ষণ না এটি একটি রিটার্ন অক্ষর দেখে, যা এই উদাহরণে লেখা হয়নি। গ্রাফিক্স সমর্থন অ্যাটমের প্রাথমিক বিটম্যাপ গ্রাফিক্স ছিল এবং অ্যাটম বেসিক এটিকে সমর্থন করার জন্য বেশ কয়েকটি কমান্ড যুক্ত করেছিল। স্ক্রিনটি পরিষ্কার করে, গ্রাফিকাল কার্সারটিকে প্রদত্ত এক্স, ওয়াই অবস্থানে স্থানান্তরিত করে এবং বর্তমান অবস্থান থেকে প্রদত্ত এক্স, ওয়াই-তে একটি রেখা আঁকে। ভাসমান-বিন্দু রমটিতে বিবৃতির সংযোজন সহ রঙিন গ্রাফিক্সের জন্য সমর্থনও অন্তর্ভুক্ত ছিল। 0 থেকে 3 প্যারামিটার সহ কালার কল করা, পরবর্তী আউটপুটকে সেই রঙে সেট করে। একটি কালো-সাদা ডিসপ্লেতে, রঙগুলি ধূসর রঙের ছায়াছবি হিসাবে দেখানো হয়েছিল। উদ্ধৃতি গ্রন্থপঞ্জি অ্যাকোর্ন কম্পিউটার বেসিক দোভাষী বেসিক প্রোগ্রামিং ভাষা পরিবার