City & Guilds Mnemonic Code
সিটি অ্যান্ড গিল্ডস নেমোনিক কোড এবং এর সাথে সম্পর্কিত সিটি অ্যান্ড গিল্ডস কম্পিউটার একটি অ্যাসেম্বলার ভাষা এবং একটি ভার্চুয়াল কম্পিউটার সিস্টেমের জন্য একটি নির্দিষ্টকরণ ছিল যা এটি পরিচালনা করত। এটি 1964 সালে সিটি অ্যান্ড গিল্ডস অফ লন্ডন ইনস্টিটিউট দ্বারা চালু করা হয়েছিল এবং বেশ কয়েকটি কম্পিউটার প্রোগ্রামিং এবং প্রশাসনিক কোর্সের ভিত্তি হিসাবে ব্যবহৃত হয়েছিল। কম্পিউটার মডেলটি ইচ্ছাকৃতভাবে খুব সহজ ছিল এবং আইসিএল 1900 সিরিজ এবং এলিয়ট 900 পরিবারের মতো বেশ কয়েকটি মেইনফ্রেম কম্পিউটারে ইন্টারপ্রেটার হিসাবে অপারেশনাল সিস্টেমগুলি প্রয়োগ করা হয়েছিল। 1968 সালে একটি হালনাগাদ সংস্করণ প্রকাশিত হয়। দ্য সিটি অ্যান্ড গিল্ডস অফ লন্ডন ইনস্টিটিউট (সিঅ্যান্ডজি) 19 শতকের শেষের দিক থেকে বিভিন্ন ধরনের বৃত্তিমূলক ও শিক্ষানবিশ কর্মসূচী প্রদান করে আসছে। 1960-এর দশকের গোড়ার দিকে, প্রথম কম্পিউটার সিস্টেমগুলি বড় সংস্থাগুলিতে দ্রুত প্রসারিত হতে শুরু করে এবং সিঅ্যান্ডজি কম্পিউটার অপারেশন এবং প্রোগ্রামিংয়ের উপর একাধিক প্রোগ্রাম চালু করার সিদ্ধান্ত নেয়। সিটি অ্যান্ড গিল্ডস নেমোনিক কোড একটি একক নতুন অ্যাসেম্বলার ভাষা প্রবর্তনের মাধ্যমে প্ল্যাটফর্ম জুড়ে ব্যাপক অসঙ্গতির সমস্যার সমাধান করে যা পরে যে কোনও যথেষ্ট শক্তিশালী প্ল্যাটফর্মে একটি ভার্চুয়াল মেশিনে ব্যাখ্যা করা যেতে পারে। যতটা সম্ভব বড় আকারে চালাতে পারে এমন যন্ত্রের সংখ্যা তৈরি করার জন্য এই ব্যবস্থাটিকে ইচ্ছাকৃতভাবে সরলীকৃত করা হয়েছিল। এটি এমন বেশ কয়েকটি বৈশিষ্ট্যও যুক্ত করেছে যা সাধারণত অ্যাসেম্বলারের সাথে যুক্ত হয় না, যার মধ্যে রয়েছে স্ট্যান্ডার্ড ডেটা ফর্ম্যাটটি ভাসমান বিন্দু এবং উন্নত গণিত এবং স্ট্রিং হ্যান্ডলিংয়ের জন্য বেশ কয়েকটি বৈশিষ্ট্য যা সাধারণত বেসিকের মতো উচ্চ স্তরের ভাষায় প্রত্যাশিত হয়। প্রথম প্রকাশ 1964 সালে হয়েছিল, এবং দুটি কোর্সে ব্যবহৃত হয়েছিল, কম্পিউটার কর্মীদের জন্য মৌলিক এবং উন্নত শংসাপত্র। সিস্টেমটি 1968 সালে সংশোধিত নিমোনিক কোড হিসাবে আপডেট করা হয়েছিল, সেই সময়ে বেসিক কোর্সটি কম্পিউটার প্রোগ্রামিং এবং তথ্য প্রক্রিয়াকরণের শংসাপত্রে পরিণত হয়েছিল। কম্পিউটারটি একটি অদ্ভুততা ছিল যে এর মৌলিক তথ্যের ধরন ছিল ভাসমান বিন্দু সংখ্যা, যা বাইনারি পূর্ণসংখ্যা ব্যবহার করে এমন বেশিরভাগ বাস্তব-বিশ্বের মেশিনের বিপরীতে, বা সেই যুগের ব্যবসা-ভিত্তিক মেশিনের জন্য, বাইনারি কোডেড দশমিক। বেশিরভাগ অ্যাসেম্বলারে পাওয়া নিম্ন-স্তরের কমান্ডগুলি ছাড়াও, যেমন মেমরি থেকে ডেটা লোড করা বা বিট স্থানান্তর, সিঅ্যান্ডজিতে গুণ এবং বিভাজন, পাশাপাশি সূচক এবং ত্রিকোণমিতি ফাংশনের মতো আরও বেশ কয়েকটি উন্নত বৈশিষ্ট্য অন্তর্ভুক্ত ছিল। একটি স্মৃতির অবস্থান পর্যায়ক্রমে একটি অক্ষর ধরে রাখতে পারে। কম্পিউটারকে 1000 শব্দের প্রধান মেমরি হিসাবে সংজ্ঞায়িত করা হয়েছিল। প্রথম দশটি ঠিকানা সূচক রেজিস্টার হিসাবে ব্যবহার করা যেতে পারে তবে এর বিশেষ অর্থও ছিল। অবস্থান শূন্য স্থায়ীভাবে শূন্যের মান নির্ধারণ করা হয়েছিল, যেখানে 1 ছিল সংগ্রহকারী। 4 সাব-রুটিন কলের সময় রিটার্ন অ্যাড্রেসটি ধরে রাখে। সংশোধিত সংস্করণে, নির্দেশের সাথে 5 ব্যবহার করা হয়েছিল এবং সিএনসি নির্দেশ ব্যবহার করে অক্ষর থেকে সংখ্যায় রূপান্তর করার সময় বিন্যাস নির্দিষ্ট করতে 6 এবং 7 ব্যবহার করা হয়েছিল। যন্ত্রটি একটি সঞ্চয়ী নকশা ছিল। বেশিরভাগ নির্দেশাবলী প্রধান স্মৃতিতে নির্দেশ করে দুটি অপারেন্ড নিয়েছিল, যা এন এবং এম হিসাবে উল্লেখ করা হয়. এন সাধারণত একটি 12-বিট মান 0 থেকে 999 ছিল, যখন এম রেজিস্টারগুলির মধ্যে একটি নির্বাচন করেছিল, 0 থেকে 9। একটি সম্পূর্ণ ঠিকানা তৈরি করতে সেই রেজিস্টারের মানটি এন-এর সাথে যোগ করা হয়েছিল। উদাহরণস্বরূপ, এডিডি নির্দেশটি দুটি অপারেন্ড পড়ে, নির্বাচিত রেজিস্টার m-এর মানকে ধ্রুবক মান n-এর সাথে যুক্ত করে, এবং তারপরে ফলস্বরূপ মেমরি অবস্থানে মানটি অ্যাক্সেস করে, যা সি হিসাবে উল্লেখ করা হয়। ডকুমেন্টেশনে, যদি প্রশ্নযুক্ত মানটি একটি মেমরি অবস্থান থেকে পড়া হয় তবে এটি প্যারেন্টে নির্দেশিত হয়েছিল, তাই বেশিরভাগ নির্দেশাবলী n + (m) ফর্মের ছিল, যার অর্থ রেজিস্টার/মেমরি অবস্থান m-এর মানটি ধ্রুবক মান n-এর সাথে যুক্ত করা হয়েছিল। সংযোজন অপারেশনটি সম্পাদন করে, যার অর্থ রেজিস্টার m-এর মানটি ধ্রুবক মান n-এর সাথে যুক্ত করা হয়েছিল এবং তারপরে ফলস্বরূপ মেমরি অবস্থানের মান, (n + (m)), ইতিমধ্যে সঞ্চয়ের মানটিতে যোগ করা হয়েছিল। এ. এস. সি. আই. আই-এর প্রমিতকরণের আগে এই ব্যবস্থাটি তৈরি করা হয়েছিল এবং সেই যুগের যন্ত্রগুলির মতো এটির নিজস্ব কাস্টম চরিত্র সেট ব্যবহার করা হয়েছিল। এটি 0 থেকে 9 অবস্থানে 0 থেকে 9,10 থেকে 35 অবস্থানে এ থেকে জেড এবং তারপর মোট 64টি অক্ষরের জন্য বেশ কয়েকটি প্রতীক ধারণ করে। এই ব্যবস্থায় কোড মন্তব্য অন্তর্ভুক্ত করার জন্য কোনও সুবিধার অভাব ছিল। এটিতে প্রতীকী লেবেলেরও অভাব ছিল, তাই প্রোগ্রামটি যদি লাইন যোগ করে বা সরিয়ে দেয়, তবে প্রোগ্রামারকে ম্যানুয়ালি শাখার অবস্থানগুলি আপডেট করতে হত। নির্দেশ নিমোনিক কোডের নির্দেশাবলীকে তিনটি বিস্তৃত বিভাগে বিভক্ত করা যেতে পারে, মৌলিক গণিত এবং লজিক অপারেশন যা বেশিরভাগ অ্যাসেম্বলার ভাষা, অতিরিক্ত গাণিতিক ক্রিয়াকলাপ এবং ইনপুট/আউটপুট ক্রিয়াকলাপকে ঘনিষ্ঠভাবে প্রতিফলিত করে। একটি কৌতূহলী সংযোজন হল "প্রশ্ন"-এর জন্য "কিউ", যা যে কোনও নির্দেশের সামনে যোগ করা যেতে পারে। যখন কিউ-এর মুখোমুখি হয়, তখন দোভাষী নির্দেশটি চালাতেন এবং তারপর প্রিন্টারের কাছে ডিবাগিং তথ্য আউটপুট করতেন। সংস্করণের উপর নির্ভর করে নির্দেশাবলী অভ্যন্তরীণভাবে এই বিন্যাসে সংরক্ষণ করা হয়েছিলঃ এফএফ [কিউ] এনএনএন এম এফএফ, "অর্ডার নম্বর" ছিল সংখ্যাসূচক নির্দেশ অপকোড। Q অনুসন্ধান ফাংশন নির্দেশ করে, এবং nnn এবং m ছিল তিন অঙ্কের এবং n এবং m এর জন্য এক অঙ্কের মান। সংখ্যাগুলি দশমিক বিন্যাসে প্রবেশ করানো হয়েছিল। মৌলিক ক্রিয়াকলাপ পদ্ধতিটি সাংগঠনিক উদ্দেশ্যে তার মৌলিক গাণিতিক এবং যৌক্তিক ক্রিয়াকলাপগুলিকে বিভিন্ন গোষ্ঠীতে বিভক্ত করে। অন্যথায় নির্দিষ্ট না করা হলে, তালিকাগুলি ইলিয়ট 903 ডকুমেন্টেশন থেকে নেওয়া হয়েছে। গ্রুপ 0, অ্যাকিউমিউলেটর/মেমরি অপারেশনঃ গ্রুপ 1, অ্যাকিউমিউলেটর/কনস্ট্যান্ট অপারেশন, একটি একক অপারেন্ড সহ একটি পূর্ণসংখ্যা মান ধারণ করে। মূল নির্দিষ্টকরণে শুধুমাত্র এন ব্যবহার করা হয়েছিল, 1968 সালের সংশোধনে, এম বিকল্পভাবে সরবরাহ করা যেতে পারে এবং এর মান এন-এর ধ্রুবকের সাথে যুক্ত করা যেতে পারে। গ্রুপ 2, স্টোর মানঃ গ্রুপ 3, পরীক্ষা এবং শাখাঃ সংশোধিত সংস্করণটি কিছু কোড পরিবর্তন করে এবং নতুন যোগ করে। এই বিভাগের তালিকাটি আইসিএল ডকুমেন্টেশন থেকেঃ এলওপি নির্দেশটি লুপগুলি বাস্তবায়নের জন্য ব্যবহৃত হয়; রেজিস্টার 5-এ পুনরাবৃত্তির সংখ্যা স্থাপন করে, এলওপি প্রতিবার মান হ্রাস করবে এবং তারপরে লুপের শীর্ষে ফিরে যাবে। বর্ধিত গণিত গ্রুপ 4 হল স্ট্যান্ডার্ড গণিত ফাংশনগুলির একটি সেটঃ ইনপুট/আউটপুট গ্রুপ 5,6 এবং 7 হল ইনপুট/আউটপুট নির্দেশাবলী। দুটি পরিচিত সংস্করণ, আইসিএল এবং এলিয়টের মধ্যে উল্লেখযোগ্য পার্থক্য রয়েছে, তবে এলিয়ট সংস্করণটি পূর্ববর্তী নির্দিষ্টকরণ হওয়ার কারণে এগুলি পার্থক্য কিনা, বা এটি মেশিনে টেপ এবং ডিস্ক সমর্থনের অভাব এবং এইভাবে কেবল সেই ডিভাইসগুলির সাথে সম্পর্কিত নির্দেশাবলী অপসারণের কারণে কিনা তা স্পষ্ট নয়। ফলস্বরূপ কার্যকারিতার একটি তুলনামূলকভাবে সীমিত সেটঃ বিপরীতে, আইসিএল সংস্করণ, যা 1968 নির্দিষ্টকরণের সাথে সামঞ্জস্যপূর্ণ, অনেক বেশি নমনীয়। এর কম্পিউটারে একটি একক ইনপুট এবং একক আউটপুট চ্যানেল ছিল যা বিভিন্ন ডিভাইসের সাথে সংযুক্ত হতে পারে। পাঁচটি সংজ্ঞায়িত যন্ত্র ছিল, 10টি ছিল কাগজের টেপ রিডার, 30টি ছিল কার্ড রিডার, 50টি ছিল চৌম্বকীয় টেপ, 60টি ছিল একটি ডিস্ক প্যাক এবং 80টি ছিল একটি প্রিন্টার। ডিভাইসগুলির মধ্যে একটি ব্যবহার করার জন্য, এআরডি এন, এম বা এডাব্লুডি এন, এম নির্দেশটি যথাক্রমে পড়া বা লেখার জন্য, পছন্দসই ডিভাইস নম্বর (এন + (এম)) সহ ডাকা হয়েছিল। একবার খোলা হলে, বিভিন্ন আই/ও নির্দেশাবলী ব্যবহার করে যন্ত্রগুলি পড়া এবং লেখা যেতে পারে। এর মধ্যে সংখ্যা এবং অক্ষরের জন্য পৃথক নির্দেশাবলী, দুটির মধ্যে রূপান্তর করার নির্দেশাবলী এবং একটি লাইন ফিড আউটপুট বা একটি টেপ রিওয়াইন্ড করার মতো নির্দিষ্ট ক্রিয়াকলাপের জন্য অন্যান্য বিভিন্ন নির্দেশাবলী অন্তর্ভুক্ত ছিল। একটি মূল বৈশিষ্ট্য ছিল একটি "ব্লক" ধারণা, সম্পর্কিত তথ্যের একটি গোষ্ঠী যা একবারে পড়া হত। এটি সাধারণত একটি নির্দেশে অক্ষরের স্ট্রিং পড়তে এবং লিখতে ব্যবহৃত হত। ব্লক চরিত্রটি দিয়ে ব্লকটি শেষ হয়, যা ব্লক চরিত্র হিসাবে পরিচিত। অন্যান্য নির্দেশাবলী নম্বর ফরম্যাটিং সিস্টেমের একটি প্রধান লক্ষ্য ছিল বিভিন্ন বাস্তব-বিশ্বের ডিভাইসে ডেটা পড়া এবং লেখা, কোডটিতে পাঠযোগ্য পাঠ্য আউটপুট করার কাজ সহজ করার জন্য প্রিন্টএফ ফরম্যাট স্ট্রিংয়ের মতো একটি ফরম্যাটিং সিস্টেম অন্তর্ভুক্ত ছিল। বিন্যাসটি স্মৃতিতে একটি মান হিসাবে, বেশিরভাগ নির্দেশাবলীর জন্য এন + (এম) এ, বা সিএনসি নির্দেশের জন্য 6 এবং 7 অবস্থানে সংরক্ষণ করা হয়, যা আউটপুট অবস্থান নির্ধারণ করতে এন + (এম) ব্যবহার করে। চারটি মৌলিক বিন্যাস রয়েছে, যার সবগুলিই একটি শীর্ষস্থানীয় স্থান এবং যোগ বা বিয়োগ চিহ্ন দিয়ে শুরু হয়ঃ সমাবেশকারী নির্দেশাবলী যন্ত্রের নির্দেশাবলী ছাড়াও, ভাষাটিতে অল্প সংখ্যক নির্দেশাবলীও অন্তর্ভুক্ত ছিলঃ (শিরোনাম) নিম্নলিখিত লাইনটি আউটপুট ডিভাইসে মুদ্রণ করে (স্টোর এন) নিম্নলিখিত কোডের প্রারম্ভিক অবস্থান নির্ধারণ করে। একটি একক প্রোগ্রামে বেশ কয়েকটি স্টোর ব্যবহার করা যেতে পারে (ওয়েট) এক্সিকিউশন বন্ধ করে এবং অপারেটরের কাছ থেকে একটি গো নির্দেশের জন্য অপেক্ষা করে (এক্সকিউট এন) প্রোগ্রাম কোডের শেষ নির্দেশ করে এবং প্রোগ্রামটি অপারেটিং এনভায়রনমেন্ট চালানোর সময় প্রাথমিক প্রোগ্রাম কাউন্টারের অবস্থান নির্ধারণ করে। এর মধ্যে অন্তর্ভুক্ত ছিল লোড এবং সেভ, ইনপুট বা আউটপুট ডিভাইসটি পুনঃনির্দেশিত করার জন্য চালু, এবং এক্সিকিউশন শুরু করার জন্য যান। উদাহরণ হারবার্টের এই উদাহরণটি পিআই গণনা এবং মুদ্রণ করে। ইলিয়ট 903-এর জন্য লেখা, এটি পূর্ববর্তী আই/ও কমান্ড ব্যবহার করে, যা পাঞ্চ টেপে মুদ্রণ করে। (শিরোনাম) সিম্পল টেস্ট (স্টোর 12) এল. ডি. এ. এন 1 এ. আর. সি 16 এম. এল. টি. এন 4 পি. এন. টি 1,6 জে. এস. টি (এক্স. ই. সি. ইউ. টি 12) যখন কমান্ডটি চালানো হবে, তখন এই প্রোগ্রামটি তৈরি করবেঃ সিম্পল টেস্ট <আই. ডি 1> নোটস আরও দেখুন পি-কোড মেশিন-একটি অনুরূপ শিক্ষামূলক ভার্চ্যুয়াল মেশিন। উদ্ধৃতি গ্রন্থপঞ্জি বাইরের লিঙ্ক একজন প্রোগ্রামারের স্মৃতি-হেলেন ইয়ং সিঅ্যান্ডজি ইন্টারপ্রেটার প্রোগ্রামিং ভাষা বাস্তবায়নের প্রাথমিক কাজটি বর্ণনা করেছেন