डब्ल्यूडीसी 65C02: Difference between revisions
No edit summary |
|||
Line 68: | Line 68: | ||
}} | }} | ||
वेस्टर्न डिज़ाइन सेंटर (डब्ल्यूडीसी) '''65C02''' माइक्रोप्रोसेसर लोकप्रिय एनएमओएस - आधारित 8-बिट MOS टेक्नोलॉजी 6502 का उन्नत सीएमओएस संस्करण है। 65C02 ने मूल 6502 में कई समस्याओं को ठीक किया और कुछ नए निर्देश जोड़े लेकिन इसकी मुख्य विशेषता समान गति से चलने वाले मूल 6502 की तुलना में 10 से 20 गुना कम विद्युत का उपयोग करना था। कम विद्युत की खपत ने 65C02 को औद्योगिक सेटिंग्स में पोर्टेबल कंप्यूटर भूमिकाओं और माइक्रोकंट्रोलर तंत्र में उपयोगी बना दिया। इसका उपयोग कुछ घरेलू कंप्यूटरों के साथ-साथ [[ अंतः स्थापित प्रणाली |अंतः स्थापित प्रणाली]] अनुप्रयोगों में किया गया है जिसमें | वेस्टर्न डिज़ाइन सेंटर (डब्ल्यूडीसी) '''65C02''' माइक्रोप्रोसेसर लोकप्रिय एनएमओएस - आधारित 8-बिट MOS टेक्नोलॉजी 6502 का उन्नत सीएमओएस संस्करण है। 65C02 ने मूल 6502 में कई समस्याओं को ठीक किया और कुछ नए निर्देश जोड़े लेकिन इसकी मुख्य विशेषता समान गति से चलने वाले मूल 6502 की तुलना में 10 से 20 गुना कम विद्युत का उपयोग करना था। कम विद्युत की खपत ने 65C02 को औद्योगिक सेटिंग्स में पोर्टेबल कंप्यूटर भूमिकाओं और माइक्रोकंट्रोलर तंत्र में उपयोगी बना दिया। इसका उपयोग कुछ घरेलू कंप्यूटरों के साथ-साथ [[ अंतः स्थापित प्रणाली |अंतः स्थापित प्रणाली]] अनुप्रयोगों में किया गया है जिसमें चिकित्सा-ग्रेड प्रत्यारोपित उपकरण सम्मिलित हैं। | ||
डब्ल्यूडीसी 65C02 का विकास 1981 में प्रारम्भ हुआ{{efn|Some sources, including prior versions of this article, claim 1978. This was the date that Bill Mensch, the primary designer, formed WDC. In a 1984 article, Mensch specifically states 1981 as the start date.}} 1983 की प्रारम्भ में प्रचलित किए गए नमूनों के साथ।{{efn|Wagner's June 1983 article mentions it being available for “several months”. Given typical publication delays at that point this may date it to as early as late 1982. Another source points to 1980, see talk page.}} 65C02 को अधिकतर कुछ समय बाद प्रचलित किया गया था। डब्ल्यूडीसी ने सिनरटेक, एनसीआर, जीटीई और रॉकवेल | डब्ल्यूडीसी 65C02 का विकास 1981 में प्रारम्भ हुआ{{efn|Some sources, including prior versions of this article, claim 1978. This was the date that Bill Mensch, the primary designer, formed WDC. In a 1984 article, Mensch specifically states 1981 as the start date.}} 1983 की प्रारम्भ में प्रचलित किए गए नमूनों के साथ।{{efn|Wagner's June 1983 article mentions it being available for “several months”. Given typical publication delays at that point this may date it to as early as late 1982. Another source points to 1980, see talk page.}} 65C02 को अधिकतर कुछ समय बाद प्रचलित किया गया था। डब्ल्यूडीसी ने सिनरटेक, एनसीआर, जीटीई और रॉकवेल अर्धचालक को डिजाइन का लाइसेंस दिया। रॉकवेल की प्राथमिक रुचि एम्बेडेड मार्केट में थी और इस भूमिका में सहायता के लिए कई नए कमांड जोड़े जाने के लिए कहा गया। इन्हें बाद में आधारभूत संस्करण में वापस कॉपी किया गया था और जिस बिंदु पर डब्ल्यूडीसी ने W65C02 बनाने के लिए अपने स्वयं के दो नए आदेश जोड़े। [[Sanyo|सान्यो]] ने बाद में डिजाइन को भी लाइसेंस दिया और [[Seiko Epson|सिएको एप्सन]] ने [[HuC6280]] के रूप में एक और संशोधित संस्करण का उत्पादन किया। | ||
प्रारम्भिक संस्करण 40-पिन डीआईपी पैकेजिंग का उपयोग करते थे और मूल एनएमओएस संस्करणों की गति से मेल खाते हुए 1, 2 और 4 मेगाहर्ट्ज संस्करणों में उपलब्ध थे। बाद के संस्करणों को पीएलसीसी और क्यूएफपी पैकेजों के साथ-साथ पीडीआईपी में और बहुत अधिक क्लॉक स्पीड रेटिंग के साथ तैयार किया गया था। डब्ल्यूडीसी के वर्तमान संस्करण W65C02S-14 में पूरी तरह से स्थिर कोर है और 5 वोल्ट पर संचालित होने पर अधिकतर 14 मेगाहर्ट्ज तक की गति से चलता है। | प्रारम्भिक संस्करण 40-पिन डीआईपी पैकेजिंग का उपयोग करते थे और मूल एनएमओएस संस्करणों की गति से मेल खाते हुए 1, 2 और 4 मेगाहर्ट्ज संस्करणों में उपलब्ध थे। बाद के संस्करणों को पीएलसीसी और क्यूएफपी पैकेजों के साथ-साथ पीडीआईपी में और बहुत अधिक क्लॉक स्पीड रेटिंग के साथ तैयार किया गया था। डब्ल्यूडीसी के वर्तमान संस्करण W65C02S-14 में पूरी तरह से स्थिर कोर है और 5 वोल्ट पर संचालित होने पर अधिकतर 14 मेगाहर्ट्ज तक की गति से चलता है। | ||
== परिचय और सुविधाएँ == | == परिचय और सुविधाएँ == | ||
65C02 एक 16-बिट प्रोग्राम काउंटर और एड्रेस बस के साथ कम लागत वाला सामान्य-उद्देश्य वाला 8-बिट माइक्रोप्रोसेसर (8-बिट रजिस्टर और डेटा बस) है। रजिस्टर सेट छोटा है जिसमें एक सिंगल 8-बिट [[संचायक (कंप्यूटिंग)]] (A) दो 8-बिट [[ सूचकांक रजिस्टर |सूचकांक रजिस्टर]] (X और Y) एक 8-बिट स्टेटस रजिस्टर (P) और एक 16-बिट प्रोग्राम काउंटर ( पीसी)। एकल संचायक के अतिरिक्त रैम के पहले 256 बाइट्स, शून्य पृष्ठ (<code>$0000</code> को <code>$00FF</code>) 16-बिट पते के अतिरिक्त | 65C02 एक 16-बिट प्रोग्राम काउंटर और एड्रेस बस के साथ कम लागत वाला सामान्य-उद्देश्य वाला 8-बिट माइक्रोप्रोसेसर (8-बिट रजिस्टर और डेटा बस) है। रजिस्टर सेट छोटा है जिसमें एक सिंगल 8-बिट [[संचायक (कंप्यूटिंग)]] (A) दो 8-बिट [[ सूचकांक रजिस्टर |सूचकांक रजिस्टर]] (X और Y) एक 8-बिट स्टेटस रजिस्टर (P) और एक 16-बिट प्रोग्राम काउंटर (पीसी)। एकल संचायक के अतिरिक्त रैम के पहले 256 बाइट्स, शून्य पृष्ठ (<code>$0000</code> को <code>$00FF</code>) 16-बिट पते के अतिरिक्त 8-बिट मेमोरी एड्रेस का उपयोग करने वाले एड्रेसिंग मोड के माध्यम से तेजी से पहुंच की अनुमति देता है। स्टैक (डेटा संरचना) अगले 256 बाइट्स पृष्ठ एक ($0100 से $01FF) में निहित है और इसे स्थानांतरित या विस्तारित नहीं किया जा सकता है। स्टैक $01FF से प्रारम्भ होने वाले [[स्टेक सूचक]] (S) के साथ पीछे की ओर बढ़ता है और जैसे-जैसे स्टैक बढ़ता या घटता जाता है।<ref>{{cite web |url=http://www.cs.jhu.edu/~phi/csf/slides/lecture-6502-stack.pdf |title=6502 Stack |first=Philipp |last=Koehn |date=2 March 2018}}</ref> इसमें एक चर-लंबाई निर्देश सेट है जो प्रति निर्देश एक और तीन बाइट्स के बीच भिन्न होता है।{{sfn|Wagner|1983|p=204}} | ||
65C02 का मूल आर्किटेक्चर मूल 6502 के समान है और इसे उस डिज़ाइन का कम-शक्ति कार्यान्वयन माना जा सकता है। 1 मेगाहर्ट्ज पर मूल 6502 के लिए सबसे लोकप्रिय गति 65C02 के लिए केवल 20 mW की आवश्यकता होती है जबकि मूल 450 mW का उपयोग करता है जो बीस गुना से अधिक की कमी है।{{sfn|Taylor|Watford|1984|p=174}} मैन्युअल रूप से अनुकूलित कोर और कम विद्युत के उपयोग का इरादा 65C02 को लो पावर तंत्र -ऑन-चिप (SoC) डिजाइनों के लिए उपयुक्त बनाना है।{{sfn|Wagner|1983|p=204}} | 65C02 का मूल आर्किटेक्चर मूल 6502 के समान है और इसे उस डिज़ाइन का कम-शक्ति कार्यान्वयन माना जा सकता है। 1 मेगाहर्ट्ज पर मूल 6502 के लिए सबसे लोकप्रिय गति 65C02 के लिए केवल 20 mW की आवश्यकता होती है जबकि मूल 450 mW का उपयोग करता है जो बीस गुना से अधिक की कमी है।{{sfn|Taylor|Watford|1984|p=174}} मैन्युअल रूप से अनुकूलित कोर और कम विद्युत के उपयोग का इरादा 65C02 को लो पावर तंत्र -ऑन-चिप (SoC) डिजाइनों के लिए उपयुक्त बनाना है।{{sfn|Wagner|1983|p=204}} | ||
वेरिलॉग हार्डवेयर डिस्क्रिप्शन | वेरिलॉग हार्डवेयर डिस्क्रिप्शन प्रतिरूप W65C02S कोर को एप्लिकेशन-स्पेसिफिक इंटीग्रेटेड सर्किट (ASIC) या फील्ड-प्रोग्रामेबल गेट ऐरे (FPGA) में डिजाइन करने के लिए उपलब्ध है।<ref>{{cite web |url=https://wdc65xx.com/6502-org-homebuilt-projects/ |title=6502 CPU Projects in HDL (for FPGA)}}</ref> जैसा कि अर्धचालक उद्योग में आम है डब्ल्यूडीसी एक विकास प्रणाली प्रदान करता है जिसमें एक डेवलपर बोर्ड एक इन-सर्किट एमुलेटर (आईसीई) और एक सॉफ्टवेयर विकास प्रणाली सम्मिलित है।<ref>{{cite web |url=https://www.westerndesigncenter.com/wdc/developer_board_65c02.cfm |title=W65C02DB Developer Board}}</ref> | ||
W65C02S '''–14''' 2023 तक उत्पादन संस्करण है और पीडीआईपी, पीएलसीसी और क्यूएफपी पैकेज में उपलब्ध है। अधिकतम अधिकतर समर्थित Ø2 (प्राथमिक) घड़ी की गति 5 वोल्ट पर संचालित होने पर 14 मेगाहर्ट्ज होती है जो -14 भाग संख्या प्रत्यय द्वारा इंगित की जाती है (शौकिया लोगों ने 65C02 होमब्रू तंत्र विकसित किए हैं जो आधिकारिक रेटिंग से तेज़ी से चलते हैं)। "एस" पदनाम इंगित करता है कि भाग में पूरी तरह से स्थिर कोर है और एक विशेषता जो Ø2 को धीमा करने या डेटा की कोई हानि के बिना उच्च या निम्न स्थिति में पूरी तरह से बंद करने की अनुमति देती है।<ref>{{cite web |url=http://www.westerndesigncenter.com/wdc/w65c02s-chip.cfm |title=W65C02S-14}}</ref> सीएमओएस में लागू नहीं किए गए विशिष्ट माइक्रोप्रोसेसरों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे। | W65C02S '''–14''' 2023 तक उत्पादन संस्करण है और पीडीआईपी, पीएलसीसी और क्यूएफपी पैकेज में उपलब्ध है। अधिकतम अधिकतर समर्थित Ø2 (प्राथमिक) घड़ी की गति 5 वोल्ट पर संचालित होने पर 14 मेगाहर्ट्ज होती है जो -14 भाग संख्या प्रत्यय द्वारा इंगित की जाती है (शौकिया लोगों ने 65C02 होमब्रू तंत्र विकसित किए हैं जो आधिकारिक रेटिंग से तेज़ी से चलते हैं)। "एस" पदनाम इंगित करता है कि भाग में पूरी तरह से स्थिर कोर है और एक विशेषता जो Ø2 को धीमा करने या डेटा की कोई हानि के बिना उच्च या निम्न स्थिति में पूरी तरह से बंद करने की अनुमति देती है।<ref>{{cite web |url=http://www.westerndesigncenter.com/wdc/w65c02s-chip.cfm |title=W65C02S-14}}</ref> सीएमओएस में लागू नहीं किए गए विशिष्ट माइक्रोप्रोसेसरों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे। | ||
Line 189: | Line 189: | ||
=== '''एनएमओएस 6502 के साथ तुलना''' === | === '''एनएमओएस 6502 के साथ तुलना''' === | ||
=== बुनियादी वास्तुकला === | === बुनियादी वास्तुकला === | ||
हालांकि 65C02 को अधिकतर कम-शक्ति 6502 के रूप में माना जा सकता है। यह मूल में पाए जाने वाले कई बगों को भी ठीक करता है और नए निर्देश जोड़ता है ऐसे मोड और सुविधाओं को संबोधित करता है जो प्रोग्रामर को छोटे और तेजी से निष्पादित प्रोग्राम लिखने में सहायता कर सकते हैं। यह अनुमान लगाया गया है कि औसत 6502 असेंबली लैंग्वेज प्रोग्राम को 65C02 पर 10 से 15 प्रतिशत छोटा बनाया जा सकता है और प्रदर्शन में समान सुधार देखा जा सकता है मोटे तौर पर किसी दिए गए कार्य को पूरा करने के लिए कम निर्देशों के उपयोग के माध्यम से मेमोरी | हालांकि 65C02 को अधिकतर कम-शक्ति 6502 के रूप में माना जा सकता है। यह मूल में पाए जाने वाले कई बगों को भी ठीक करता है और नए निर्देश जोड़ता है ऐसे मोड और सुविधाओं को संबोधित करता है जो प्रोग्रामर को छोटे और तेजी से निष्पादित प्रोग्राम लिखने में सहायता कर सकते हैं। यह अनुमान लगाया गया है कि औसत 6502 असेंबली लैंग्वेज प्रोग्राम को 65C02 पर 10 से 15 प्रतिशत छोटा बनाया जा सकता है और प्रदर्शन में समान सुधार देखा जा सकता है मोटे तौर पर किसी दिए गए कार्य को पूरा करने के लिए कम निर्देशों के उपयोग के माध्यम से मेमोरी प्रवेश से बचा जाता है।{{sfn|Wagner|1983|p=204}} | ||
=== गैर-दस्तावेजी निर्देश हटा दिए गए === | === गैर-दस्तावेजी निर्देश हटा दिए गए === | ||
Line 201: | Line 201: | ||
मूल 6502 में प्रारम्भ में लॉन्च होने पर कई इरेटा थे। प्रोसेसर के प्रारम्भिक संस्करणों में नहीं था <code>ROR</code>(दाईं ओर घुमाएं) निर्देश और एमओएस टेक्नोलॉजी मैनुअल ने भी इसका दस्तावेजीकरण नहीं किया।<code>ROR</code>उत्पादन चलाने में बहुत जल्दी लागू किया गया था और प्रोसेसर का उपयोग करने वाली अधिकांश मशीनें इस निर्देश का समर्थन करती हैं।<ref name="ROR">[[:File:MCS650x Instruction Set.jpg]]</ref> | मूल 6502 में प्रारम्भ में लॉन्च होने पर कई इरेटा थे। प्रोसेसर के प्रारम्भिक संस्करणों में नहीं था <code>ROR</code>(दाईं ओर घुमाएं) निर्देश और एमओएस टेक्नोलॉजी मैनुअल ने भी इसका दस्तावेजीकरण नहीं किया।<code>ROR</code>उत्पादन चलाने में बहुत जल्दी लागू किया गया था और प्रोसेसर का उपयोग करने वाली अधिकांश मशीनें इस निर्देश का समर्थन करती हैं।<ref name="ROR">[[:File:MCS650x Instruction Set.jpg]]</ref> | ||
एक बग जो 6502 के सभी एनएमओएस वेरिएंट में स्थित है एड्रेसिंग मोड | एक बग जो 6502 के सभी एनएमओएस वेरिएंट में स्थित है एड्रेसिंग मोड सूचकांक्ड एब्सोल्यूट का उपयोग करते समय जंप निर्देश सम्मिलित करता है। इस एड्रेसिंग मोड में, लक्ष्य का पता <code>JMP</code> निर्देश एक ऑपरेंड होने के अतिरिक्त मेमोरी जंप वेक्टर से प्राप्त किया जाता है <code>JMP</code> निर्देश। उदाहरण के लिए <code>JMP ($1234)</code> स्मृति स्थानों में मूल्य लाएगा {{mono|$1234}} (कम महत्वपूर्ण बाइट) और {{mono|$1235}} (सबसे महत्वपूर्ण बाइट) और उन मानों को प्रोग्राम काउंटर में लोड करें जो तब प्रोसेसर को वेक्टर में संग्रहीत पते पर निष्पादन प्रचलित रखने का कारण बनेगा। | ||
बग तब प्रकट होता है जब वेक्टर पता समाप्त होता है {{mono|$FF}} जो [[स्मृति पृष्ठ]] की सीमा है। इस विषय में<code>JMP</code>लक्ष्य पते का सबसे महत्वपूर्ण बाइट प्राप्त करेगा {{mono|$00}}<nowiki> मूल पृष्ठ के अतिरिक्त {{Mono|$00}नए पृष्ठ का }। इस तरह</nowiki><code>JMP($12FF)</code> पर लक्ष्य पते का कम से कम महत्वपूर्ण बाइट प्राप्त होगा {{mono|$12FF}} और लक्षित पते का सबसे महत्वपूर्ण बाइट {{mono|$1200}} इसके अतिरिक्त {{mono|$1300}}. 65C02 ने इस समस्या को ठीक किया।{{sfn|Wagner|1983|p=204}} | बग तब प्रकट होता है जब वेक्टर पता समाप्त होता है {{mono|$FF}} जो [[स्मृति पृष्ठ]] की सीमा है। इस विषय में<code>JMP</code>लक्ष्य पते का सबसे महत्वपूर्ण बाइट प्राप्त करेगा {{mono|$00}}<nowiki> मूल पृष्ठ के अतिरिक्त {{Mono|$00}नए पृष्ठ का }। इस तरह</nowiki><code>JMP($12FF)</code> पर लक्ष्य पते का कम से कम महत्वपूर्ण बाइट प्राप्त होगा {{mono|$12FF}} और लक्षित पते का सबसे महत्वपूर्ण बाइट {{mono|$1200}} इसके अतिरिक्त {{mono|$1300}}. 65C02 ने इस समस्या को ठीक किया।{{sfn|Wagner|1983|p=204}} | ||
एक बग की तुलना में अधिक निरीक्षण एनएमओएस 6502 के स्थिति रजिस्टर में (डी) ecimal ध्वज की स्थिति एक [[रीसेट (कंप्यूटिंग)]] या | एक बग की तुलना में अधिक निरीक्षण एनएमओएस 6502 के स्थिति रजिस्टर में (डी) ecimal ध्वज की स्थिति एक [[रीसेट (कंप्यूटिंग)]] या अवरोध के बाद अपरिभाषित है। इसका मतलब यह है कि अंकगणितीय परिचालनों से संबंधित किसी भी बग से बचने के लिए प्रोग्रामर को ध्वज को ज्ञात मान पर सेट करना होगा। नतीजतन एक<code>CLD</code>निर्देश (स्पष्ट दशमलव) लगभग सभी 6502 [[इंटरप्ट हैंडलर]] में साथ ही साथ रीसेट कोड में भी। 65C02 किसी भी बाधा या हार्डवेयर रीसेट के जवाब में स्टैक पर स्थिति रजिस्टर को धक्का देने के बाद स्वचालित रूप से इस ध्वज को साफ़ करता है इस प्रकार प्रोसेसर को बाइनरी अंकगणितीय मोड में वापस रखता है।<ref name=differences/> | ||
[[बाइनरी-कोडित दशमलव]] अंकगणितीय के दौरान एनएमओएस 6502 अंतर्निहित बाइनरी अंकगणित के परिणाम को प्रतिबिंबित करने के लिए (N)निष्क्रिय | [[बाइनरी-कोडित दशमलव]] अंकगणितीय के दौरान एनएमओएस 6502 अंतर्निहित बाइनरी अंकगणित के परिणाम को प्रतिबिंबित करने के लिए (N) निष्क्रिय o(V) erflow और (Z) ero फ़्लैग्स को अपडेट करेगा अर्थात फ़्लैग्स पहले की गणना किए गए परिणाम को दर्शा रहे हैं प्रोसेसर दशमलव सुधार कर रहा है। इसके विपरीत 65C02 अंकगणित निर्देश के अनुसार अतिरिक्त घड़ी चक्र की कीमत पर, दशमलव अंकगणित के परिणाम के अनुसार इन झंडों को सेट करता है।<ref name=differences>{{cite web|title=Differences between NMOS 6502 and CMOS 65c02|url=http://wilsonminesco.com/NMOS-CMOSdif/|access-date=27 February 2018|quote=N, V, and Z flags were incorrect after decimal operation (but C was ok).}}</ref> | ||
पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय जैसे<code>INC ''addr''</code>सभी एनएमओएस | पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय जैसे<code>INC ''addr''</code>सभी एनएमओएस वैरिएंट Addr पर दोहरा लेखन करेंगे पहले Addr पर मिले वर्तमान मान को फिर से लिखेंगे और फिर संशोधित मान लिखेंगे। यदि Addr एक हार्डवेयर रजिस्टर है तो यह व्यवहार कठिन-से-समाधान बग में परिणाम कर सकता है। यह तब हो सकता है जब हार्डवेयर रजिस्टर में मूल्य में परिवर्तन के लिए देख रहा हो और फिर एक क्रिया करता है इस विषय में यह दो क्रियाएं करेगा एक मूल मूल्य के साथ और फिर नए मूल्य के साथ। 65C02 इसके अतिरिक्त Addr का दोहरा रीड करता है उसके बाद सिंगल राइट करता है। | ||
सूचकांक एड्रेसिंग करते समय यदि सूचकांक एक पृष्ठ सीमा को पार कर जाती है तो सही पते तक पहुँचने से पहले सभी एनएमओएस वेरिएंट एक अमान्य पते से पढ़ेंगे। जैसा कि R-M-W निर्देश के साथ होता है अनुक्रमण के माध्यम से हार्डवेयर रजिस्टरों तक पहुँचने पर यह व्यवहार समस्याएँ पैदा कर सकता है। 65C02 ने इस समस्या को ठीक किया जब सूचकांकिंग एक पृष्ठ सीमा को पार कर जाती है तो निर्देश ओपकोड का एक डमी रीड प्रदर्शन करके। हालाँकि इस फिक्स ने एक नया बग प्रस्तुत किया{{cn|date=November 2022}} जो तब होता है जब आधार पता एक समान पृष्ठ सीमा पर होता है (जिसका अर्थ है कि अनुक्रमण अगले पृष्ठ पर कभी नहीं जाएगा)। नए बग के साथ अनुक्रमण से पहले आधार पते पर एक डमी रीड किया जाता है जैसे कि<code>LDA $1200,X</code>एक डमी पढ़ेगा {{mono|$1200}} X के मान को जोड़े जाने से पहले {{mono|$1200}}. फिर से यदि हार्डवेयर रजिस्टर पतों पर अनुक्रमण किया जाता है तो इस बग का परिणाम अपरिभाषित व्यवहार हो सकता है। | |||
यदि एक एनएमओएस 6502 एक BRK (सॉफ़्टवेयर इंटरप्ट) ऑपकोड ला रहा है उसी समय एक हार्डवेयर व्यवधान होता है तो BRK को अनदेखा कर दिया जाएगा क्योंकि प्रोसेसर हार्डवेयर इंटरप्ट पर प्रतिक्रिया करता है। 65C02 इंटरप्ट को सर्विस करके और फिर BRK को निष्पादित करके इस स्थिति को सही ढंग से हैंडल करता है। | यदि एक एनएमओएस 6502 एक BRK (सॉफ़्टवेयर इंटरप्ट) ऑपकोड ला रहा है उसी समय एक हार्डवेयर व्यवधान होता है तो BRK को अनदेखा कर दिया जाएगा क्योंकि प्रोसेसर हार्डवेयर इंटरप्ट पर प्रतिक्रिया करता है। 65C02 इंटरप्ट को सर्विस करके और फिर BRK को निष्पादित करके इस स्थिति को सही ढंग से हैंडल करता है। | ||
Line 219: | Line 219: | ||
* अनुक्रमित अप्रत्यक्ष, उदाहरण<code>LDA($10,X)</code>16-बिट वेक्टर को पढ़ने से पहले दिए गए पृष्ठ शून्य पते पर X रजिस्टर जोड़ता है। इस उदाहरण में यदि X 5 है तो यह स्थान $15/$16 से 16-बिट पता पढ़ता है। यह तब उपयोगी होता है जब पेज ज़ीरो में संकेत की एक सारणी होती है। | * अनुक्रमित अप्रत्यक्ष, उदाहरण<code>LDA($10,X)</code>16-बिट वेक्टर को पढ़ने से पहले दिए गए पृष्ठ शून्य पते पर X रजिस्टर जोड़ता है। इस उदाहरण में यदि X 5 है तो यह स्थान $15/$16 से 16-बिट पता पढ़ता है। यह तब उपयोगी होता है जब पेज ज़ीरो में संकेत की एक सारणी होती है। | ||
* अप्रत्यक्ष अनुक्रमित <code>LDA ($10),Y</code>रजिस्टर को दिए गए पृष्ठ शून्य पते से पढ़े गए 16-बिट वेक्टर में जोड़ता है। उदाहरण के लिए यदि Y 5 है और $10/$11 में वेक्टर $1000 है तो यह $1005 से मान पढ़ता है। यह पॉइंटर-ऑफ़सेट एड्रेसिंग करता है। | * अप्रत्यक्ष अनुक्रमित <code>LDA ($10),Y</code>रजिस्टर को दिए गए पृष्ठ शून्य पते से पढ़े गए 16-बिट वेक्टर में जोड़ता है। उदाहरण के लिए यदि Y 5 है और $10/$11 में वेक्टर $1000 है तो यह $1005 से मान पढ़ता है। यह पॉइंटर-ऑफ़सेट एड्रेसिंग करता है। | ||
इस | इस प्रतिरूप का निष्क्रिय पक्ष यह है कि यदि अनुक्रमण की आवश्यकता नहीं है लेकिन पता शून्य पृष्ठ में है तो सूचकांक रजिस्टरों में से एक को अभी भी शून्य पर सेट किया जाना चाहिए और इन निर्देशों में से एक में उपयोग किया जाना चाहिए। 65C02 ने<code>LDA ($10)</code>सूचकांक रजिस्टरों को मुक्त करते हुए सूचकांक किए गए अप्रत्यक्ष और प्रत्यक्ष सूचकांक किए गए मोड का उपयोग करने वाले सभी निर्देशों के लिए एक गैर-अनुक्रमित अप्रत्यक्ष एड्रेसिंग मोड जोड़ा। | ||
6502 का{{code|JMP}}निर्देश में एक अनूठा (6502 निर्देशों के बीच) एड्रेसिंग मोड था जिसे पूर्ण अप्रत्यक्ष के रूप में जाना जाता है जो किसी दिए गए मेमोरी पते से 16-बिट मान पढ़ता है और फिर उस 16-बिट मान में पते पर कूद जाता है। उदाहरण के लिए यदि स्मृति स्थान {{mono|$A000}} के पास $34 और {{mono|$A001}} के पास $12 है <code>JMP ($A000)</code>उन दो बाइट्स को पढ़ेगा और मूल्य का निर्माण करेगा {{mono|$1234}} और फिर उस स्थान पर जाएगा। | 6502 का{{code|JMP}}निर्देश में एक अनूठा (6502 निर्देशों के बीच) एड्रेसिंग मोड था जिसे पूर्ण अप्रत्यक्ष के रूप में जाना जाता है जो किसी दिए गए मेमोरी पते से 16-बिट मान पढ़ता है और फिर उस 16-बिट मान में पते पर कूद जाता है। उदाहरण के लिए यदि स्मृति स्थान {{mono|$A000}} के पास $34 और {{mono|$A001}} के पास $12 है <code>JMP ($A000)</code>उन दो बाइट्स को पढ़ेगा और मूल्य का निर्माण करेगा {{mono|$1234}} और फिर उस स्थान पर जाएगा। | ||
अप्रत्यक्ष संबोधन के लिए एक सामान्य उपयोग [[शाखा तालिका]]ओं का निर्माण करना है [[सबरूटीन]] के लिए प्रवेश बिंदुओं की एक सूची जिसे एक | अप्रत्यक्ष संबोधन के लिए एक सामान्य उपयोग [[शाखा तालिका]]ओं का निर्माण करना है [[सबरूटीन]] के लिए प्रवेश बिंदुओं की एक सूची जिसे एक सूचकांक का उपयोग करके प्रवेश किया जा सकता है। उदाहरण के लिए एक [[डिवाइस ड्राइवर]] {{mono|$A000}} पर तालिका में<code>OPEN,CLOSE</code>आदि के लिए प्रवेश बिंदुओं को सूचीबद्ध कर सकता है तीसरी प्रविष्टि है शून्य अनुक्रमित और प्रत्येक पते के लिए 16-बिट्स की आवश्यकता होती है इसलिए कॉल करने के लिए कुछ इसी तरह का उपयोग किया जाएगा। यदि ड्राइवर अपडेट किया गया है और सबरूटीन कोड मेमोरी में चला जाता है तो कोई भी स्थित कोड तब तक काम करेगा जब तक पॉइंटर्स {{mono|$A000}} की तालिका बनी रहती है।<code>READ READ READ JMP ($A004)</code> | ||
65C02 ने नया अनुक्रमित पूर्ण अप्रत्यक्ष मोड जोड़ा जिसने शाखा तालिकाओं के उपयोग को आसान बना दिया। इस मोड ने एक्स रजिस्टर के मूल्य को पूर्ण पते में जोड़ा और परिणामी स्थान से 16-बिट का पता लगा लिया। उदाहरण के लिए | 65C02 ने नया अनुक्रमित पूर्ण अप्रत्यक्ष मोड जोड़ा जिसने शाखा तालिकाओं के उपयोग को आसान बना दिया। इस मोड ने एक्स रजिस्टर के मूल्य को पूर्ण पते में जोड़ा और परिणामी स्थान से 16-बिट का पता लगा लिया। उदाहरण के लिए प्रवेश करने के लिए{{code|READ}}ऊपर दी गई तालिका से कार्य करता है तब कोई X में 4 संग्रहीत करेगा<code>JMP ($A000,X)</code>पहुँच की यह शैली शाखा तालिकाओं तक पहुँच को सरल बनाती है क्योंकि एकल आधार पते का उपयोग 8-बिट ऑफ़सेट के संयोजन में किया जाता है।<ref name="opcodes">{{cite web |url=http://6502.org/tutorials/65c02opcodes.html |title=65C02 Opcodes |first=Bruce |last=Clark }}</ref>अनुक्रमित अप्रत्यक्ष मोड का उपयोग करके एनएमओएस संस्करण में इसे प्राप्त किया जा सकता है लेकिन केवल तभी जब एक सीमित संसाधन तालिका शून्य पृष्ठ में हो। इन्हें शून्य पृष्ठ के बाहर बनाने की अनुमति देने से न केवल इस संसाधन की मांग कम हुई बल्कि रोम में तालिकाओं के निर्माण की भी अनुमति मिली। | ||
===नए और संशोधित निर्देश=== | ===नए और संशोधित निर्देश=== | ||
नए एड्रेसिंग मोड के अतिरिक्त बेस | नए एड्रेसिंग मोड के अतिरिक्त बेस प्रतिरूप 65C02 ने नए निर्देशों का एक सेट भी जोड़ा।{{sfn|Wagner|1983|p=200}} | ||
* <code>INC</code>और<code>DEC</code>बिना किसी पैरामीटर के अब संचायक को बढ़ाएँ या घटाएँ। मूल निर्देश सेट में यह एक अजीब निरीक्षण था जिसमें केवल<code>INX</code>/<code>DEX</code>,<code>INY</code>/<code>DEY</code>और<code>INC ''addr''</code>/<code>DEC ''addr''</code>सम्मिलित था और कुछ असेंबलर वैकल्पिक<code>INA</code>/<code>DEA</code> या <code>INC A</code>/<code>DEC A रूपों का उपयोग करते हैं।</code>{{sfn|Wagner|1983|p=200}} | * <code>INC</code>और<code>DEC</code>बिना किसी पैरामीटर के अब संचायक को बढ़ाएँ या घटाएँ। मूल निर्देश सेट में यह एक अजीब निरीक्षण था जिसमें केवल<code>INX</code>/<code>DEX</code>,<code>INY</code>/<code>DEY</code>और<code>INC ''addr''</code>/<code>DEC ''addr''</code>सम्मिलित था और कुछ असेंबलर वैकल्पिक<code>INA</code>/<code>DEA</code> या <code>INC A</code>/<code>DEC A रूपों का उपयोग करते हैं।</code>{{sfn|Wagner|1983|p=200}} | ||
* <code>STZ ''addr''</code> | * <code>STZ ''addr''</code>Addr में शून्य स्टोर करें। संचायक के मूल्य को बदलने की आवश्यकता नहीं है चूंकि यह कार्य अधिकांश कार्यक्रमों में आम है और कोड का आकार कम कर सकते हैं साथ ही संचायक के मूल्य को बचाने के लिए आवश्यक किसी भी कोड को समाप्त करके जोड़ा जाता है।{{sfn|Wagner|1983|p=203}}<code>LDA 0;STA ''addr''STZLDAPHA</code> <code>PLA</code> | ||
* <code>PHX</code>,<code>PLX</code>,<code>PHY</code>,<code>PLY</code>, X और Y रजिस्टरों को स्टैक में धकेलें और खींचें। पहले केवल संचायक और स्थिति रजिस्टर में पुश और पुल निर्देश होते थे। X और Y को पहले संचायक में ले जाकर ही ढेर किया जा सकता है<code>TXA</code>या<code>TYA</code>जिससे संचायक की सामग्री<code>PHA मे</code>बदली जाती है फिर उपयोग किया जाता है। | * <code>PHX</code>,<code>PLX</code>,<code>PHY</code>,<code>PLY</code>, X और Y रजिस्टरों को स्टैक में धकेलें और खींचें। पहले केवल संचायक और स्थिति रजिस्टर में पुश और पुल निर्देश होते थे। X और Y को पहले संचायक में ले जाकर ही ढेर किया जा सकता है<code>TXA</code>या<code>TYA</code>जिससे संचायक की सामग्री<code>PHA मे</code>बदली जाती है फिर उपयोग किया जाता है। | ||
* <code>BRA</code>शाखा हमेशा ए | * <code>BRA</code>शाखा हमेशा ए तरह संचालित होता है<code>JMP</code>लेकिन अन्य शाखाओं की तरह 1-बाइट सापेक्ष पते का उपयोग करता है और एक बाइट बचाता है। गति हमेशा 3 चक्र निरपेक्ष के समान होती है<code>JMP</code>जब तक कि एक पृष्ठ पार नहीं किया जाता है जो इसे बना देगा<code>BRA</code>संस्करण 1 चक्र लंबा (4 चक्र)।<ref>{{cite web |url=http://www.westerndesigncenter.com/wdc/documentation/w65c02s.pdf |title=W65C02S Datasheet }}</ref> जैसा कि पता सापेक्ष है यह पुनर्निधारणीय कोड लिखते समय भी उपयोगी होता है{{sfn|Wagner|1983|p=203}} स्मृति प्रबंधन इकाइयों से पहले युग में एक सामान्य कार्य। | ||
=== बिट हेरफेर निर्देश === | === बिट हेरफेर निर्देश === | ||
डब्ल्यूडीसी और रॉकवेल दोनों ने 65C02 में बिट परीक्षण और हेरफेर कार्यों में सुधार का योगदान दिया। डब्ल्यूडीसी ने BIT निर्देश में नए एड्रेसिंग मोड जोड़े जो 6502 में स्थित थे और साथ ही बिट फ़ील्ड के सुविधाजनक हेरफेर के लिए दो नए निर्देश डिवाइस ड्राइवरों में एक सामान्य गतिविधि। | डब्ल्यूडीसी और रॉकवेल दोनों ने 65C02 में बिट परीक्षण और हेरफेर कार्यों में सुधार का योगदान दिया। डब्ल्यूडीसी ने BIT निर्देश में नए एड्रेसिंग मोड जोड़े जो 6502 में स्थित थे और साथ ही बिट फ़ील्ड के सुविधाजनक हेरफेर के लिए दो नए निर्देश डिवाइस ड्राइवरों में एक सामान्य गतिविधि। | ||
{{code|BIT}} 65C02 में | {{code|BIT}} 65C02 में तुरन्त मोड जोड़ता है और एक्स द्वारा अनुक्रमित शून्य पृष्ठ और एक्स एड्रेसिंग द्वारा पूर्ण अनुक्रमित।{{sfn|Wagner|1983|p=200}} तुरन्त मोड एड्रेसिंग विशेष रूप से सुविधाजनक है क्योंकि यह पूरी तरह से गैर-विनाशकारी है। उदाहरण के लिए: | ||
:<code>LDA $1234</code> | :<code>LDA $1234</code> | ||
:<code>BIT #%00010000</code> | :<code>BIT #%00010000</code> | ||
के स्थान पर | के स्थान पर उपयोग किया जा सकता है: | ||
:<code>LDA $1234</code> | :<code>LDA $1234</code> | ||
Line 248: | Line 248: | ||
{{code|AND}ND}}ऑपरेशन संचायक में मान को बदल देता है इसलिए $1234 से लोड किया गया मूल मान खो जाता है। का उपयोग करते हुए {{code|BIT}} संचायक में मान को अपरिवर्तित छोड़ देता है इसलिए बाद का कोड मूल मान के विरुद्ध अतिरिक्त परीक्षण कर सकता है और स्मृति से मान को फिर से लोड करने से बच सकता है। | {{code|AND}ND}}ऑपरेशन संचायक में मान को बदल देता है इसलिए $1234 से लोड किया गया मूल मान खो जाता है। का उपयोग करते हुए {{code|BIT}} संचायक में मान को अपरिवर्तित छोड़ देता है इसलिए बाद का कोड मूल मान के विरुद्ध अतिरिक्त परीक्षण कर सकता है और स्मृति से मान को फिर से लोड करने से बच सकता है। | ||
के संवर्द्धन के अतिरिक्त | के संवर्द्धन के अतिरिक्त {{code|BIT}}निर्देश डब्ल्यूडीसी ने बिट फ़ील्ड्स को आसानी से हेरफेर करने के लिए डिज़ाइन किए गए दो निर्देश जोड़े: | ||
* <code>TSB ''addr''</code>और <code>TRB ''addr''</code>टेस्ट और सेट बिट्स और टेस्ट और रीसेट बिट्स। | * <code>TSB ''addr''</code>और <code>TRB ''addr''</code>टेस्ट और सेट बिट्स और टेस्ट और रीसेट बिट्स। | ||
: संचायक में एक मुखौटा (<code>A</code>) Addr पर मेमोरी के साथ तार्किक रूप से ANDed है कौन सा स्थान शून्य पृष्ठ या निरपेक्ष हो सकता है। स्थिति रजिस्टर में Z ध्वज तार्किक के परिणाम के अनुसार वातानुकूलित है और—कोई अन्य स्थिति रजिस्टर ध्वज प्रभावित नहीं होता है। इसके अतिरिक्त Addr में बिट्स को मास्क के अनुसार सेट (TSB) या क्लियर (TRB) किया जाता है संक्षेप में TSB तार्किक के बाद एक तार्किक प्रदर्शन करता है और तार्किक के परिणाम को ''Addr'' पर संग्रहीत करता है जबकि TRB तार्किक के परिणामों को ''Addr'' पर संग्रहीत करता है। दोनों ही स्थितियों में स्थिति रजिस्टर में Z ध्वज ''Addr'' की सामग्री से पहले के परिणाम को इंगित करता है<code>A OR AND OR AND.A AND ''addr''</code>बदल गया है। <code>BIT</code>टीआरबी और टीएसबी इस प्रकार निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं कम्प्यूटेशनल परिवर्तनों को बचाने के लिए अनिवार्य रूप से निर्देश को अतिरिक्त चरणों के साथ जोड़ते हैं लेकिन एक तरह से प्रभावित मूल्य की स्थिति को बदलने से पहले रिपोर्ट करते हैं। | : संचायक में एक मुखौटा (<code>A</code>) Addr पर मेमोरी के साथ तार्किक रूप से ANDed है कौन सा स्थान शून्य पृष्ठ या निरपेक्ष हो सकता है। स्थिति रजिस्टर में Z ध्वज तार्किक के परिणाम के अनुसार वातानुकूलित है और—कोई अन्य स्थिति रजिस्टर ध्वज प्रभावित नहीं होता है। इसके अतिरिक्त Addr में बिट्स को मास्क के अनुसार सेट (TSB) या क्लियर (TRB) किया जाता है संक्षेप में TSB तार्किक के बाद एक तार्किक प्रदर्शन करता है और तार्किक के परिणाम को ''Addr'' पर संग्रहीत करता है जबकि TRB तार्किक के परिणामों को ''Addr'' पर संग्रहीत करता है। दोनों ही स्थितियों में स्थिति रजिस्टर में Z ध्वज ''Addr'' की सामग्री से पहले के परिणाम को इंगित करता है<code>A OR AND OR AND.A AND ''addr''</code>बदल गया है। <code>BIT</code>टीआरबी और टीएसबी इस प्रकार निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं कम्प्यूटेशनल परिवर्तनों को बचाने के लिए अनिवार्य रूप से निर्देश को अतिरिक्त चरणों के साथ जोड़ते हैं लेकिन एक तरह से प्रभावित मूल्य की स्थिति को बदलने से पहले रिपोर्ट करते हैं। | ||
रॉकवेल के परिवर्तनों ने किसी भी बिट को सीधे सेट करने और परीक्षण करने के लिए और परीक्षण, स्पष्ट और शाखा को एक ही ऑपकोड में संयोजित करने के लिए अधिक बिट हेरफेर निर्देश जोड़े। रॉकवेल के R65C00 परिवार में प्रारम्भ से ही नए निर्देश उपलब्ध थे{{sfn|Wagner|1983|p=199}} लेकिन मूल 65C02 विनिर्देश का हिस्सा नहीं था और डब्ल्यूडीसी या इसके अन्य लाइसेंसधारियों द्वारा बनाए गए संस्करणों में नहीं पाया गया। इन्हें बाद में | रॉकवेल के परिवर्तनों ने किसी भी बिट को सीधे सेट करने और परीक्षण करने के लिए और परीक्षण, स्पष्ट और शाखा को एक ही ऑपकोड में संयोजित करने के लिए अधिक बिट हेरफेर निर्देश जोड़े। रॉकवेल के R65C00 परिवार में प्रारम्भ से ही नए निर्देश उपलब्ध थे{{sfn|Wagner|1983|p=199}} लेकिन मूल 65C02 विनिर्देश का हिस्सा नहीं था और डब्ल्यूडीसी या इसके अन्य लाइसेंसधारियों द्वारा बनाए गए संस्करणों में नहीं पाया गया। इन्हें बाद में आधारभूत डिज़ाइन में वापस कॉपी किया गया और बाद के डब्ल्यूडीसी संस्करणों में उपलब्ध थे। | ||
रॉकवेल-विशिष्ट निर्देश हैं: | रॉकवेल-विशिष्ट निर्देश हैं: | ||
* <code>एसएमबी ''bit | * <code>एसएमबी ''bit'' ''zp''</code>/<code>आरएमबी ''bit'' ''zp''</code>जीरो पेज बाइट zp में सेट या रीसेट (क्लियर) बिट नंबर बिट। | ||
: आरएमबी और एसएमबी का उपयोग बिट फ़ील्ड में अलग-अलग बिट्स (आरएमबी) या सेट (एसएमबी) को साफ़ करने के लिए किया जाता है प्रत्येक तीन निर्देशों के अनुक्रम को प्रतिस्थापित करता है। चूंकि आरएमबी और एसएमबी केवल जीरो पेज एड्रेसिंग हैं तो ये निर्देश उपयोगिता में सीमित हैं और मुख्य रूप से उन प्रणालियों में महत्वपूर्ण हैं जिनमें डिवाइस रजिस्टर शून्य पेज में स्थित हैं। निर्देश का बिट घटक हमेशा स्मरक के भाग के रूप में लिखा जाता है जैसे <code>एसएमबी 1 $12</code>जो बिट 1 को शून्य-पृष्ठ पते $12 में सेट करता है। कुछ असेंबलर बिट को निर्देश के ऑपरेंड के हिस्से के रूप में मानते हैं उदाहरण के लिए<code>एसएमबी '''1''',$12</code>जिसके पास इसे एक चर नाम या परिकलित संख्या द्वारा प्रतिस्थापित करने की अनुमति देने का लाभ है।{{sfn|Wagner|1983|p=203}} | : आरएमबी और एसएमबी का उपयोग बिट फ़ील्ड में अलग-अलग बिट्स (आरएमबी) या सेट (एसएमबी) को साफ़ करने के लिए किया जाता है प्रत्येक तीन निर्देशों के अनुक्रम को प्रतिस्थापित करता है। चूंकि आरएमबी और एसएमबी केवल जीरो पेज एड्रेसिंग हैं तो ये निर्देश उपयोगिता में सीमित हैं और मुख्य रूप से उन प्रणालियों में महत्वपूर्ण हैं जिनमें डिवाइस रजिस्टर शून्य पेज में स्थित हैं। निर्देश का बिट घटक हमेशा स्मरक के भाग के रूप में लिखा जाता है जैसे <code>एसएमबी 1 $12</code>जो बिट 1 को शून्य-पृष्ठ पते $12 में सेट करता है। कुछ असेंबलर बिट को निर्देश के ऑपरेंड के हिस्से के रूप में मानते हैं उदाहरण के लिए<code>एसएमबी '''1''',$12</code>जिसके पास इसे एक चर नाम या परिकलित संख्या द्वारा प्रतिस्थापित करने की अनुमति देने का लाभ है।{{sfn|Wagner|1983|p=203}} | ||
* <code>बीबीआर ''bit | * <code>बीबीआर ''bit'',''offset'',''addr''</code>और<code>BBS ''bit#'',''offset'',''addr''</code> बिट सेट/रीसेट पर शाखा। | ||
: आरएमबी और एसएमबी के समान शून्य-पेज एड्रेसिंग और सीमाएं लेकिन चयनित बिट स्पष्ट (बीबीआर) या सेट (बीबीएस) होने पर शाखाओं को जोड़ने के लिए। जैसा कि आरएमबी और एसएमबी के साथ होता है बीबीआर और बीबीएस तीन निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं।{{sfn|Wagner|1983|p=203}} | : आरएमबी और एसएमबी के समान शून्य-पेज एड्रेसिंग और सीमाएं लेकिन चयनित बिट स्पष्ट (बीबीआर) या सेट (बीबीएस) होने पर शाखाओं को जोड़ने के लिए। जैसा कि आरएमबी और एसएमबी के साथ होता है बीबीआर और बीबीएस तीन निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं।{{sfn|Wagner|1983|p=203}} | ||
Line 268: | Line 268: | ||
{{code|STP}}प्रोसेसर को STop करें हार्डवेयर रीसेट प्रचलित होने तक सभी प्रोसेसिंग को रोक दें। इसका उपयोग किसी तंत्र को सुलाने के लिए किया जा सकता है और फिर इसे रीसेट के साथ तेजी से जगाया जा सकता है। प्राय: इसके लिए मुख्य मेमोरी को बनाए रखने के लिए कुछ बाहरी तंत्र की आवश्यकता होती है और इसका व्यापक रूप से उपयोग नहीं किया जाता था। | {{code|STP}}प्रोसेसर को STop करें हार्डवेयर रीसेट प्रचलित होने तक सभी प्रोसेसिंग को रोक दें। इसका उपयोग किसी तंत्र को सुलाने के लिए किया जा सकता है और फिर इसे रीसेट के साथ तेजी से जगाया जा सकता है। प्राय: इसके लिए मुख्य मेमोरी को बनाए रखने के लिए कुछ बाहरी तंत्र की आवश्यकता होती है और इसका व्यापक रूप से उपयोग नहीं किया जाता था। | ||
{{code|WAI}} का एक समान प्रभाव था कम-शक्ति मोड में प्रवेश करना लेकिन इस निर्देश ने प्रोसेसर को एक | {{code|WAI}} का एक समान प्रभाव था कम-शक्ति मोड में प्रवेश करना लेकिन इस निर्देश ने प्रोसेसर को एक अवरोध के स्वागत पर फिर से जगा दिया। पहले एक बाधा को संभालने में प्राय: एक लूप चलाने के लिए सम्मिलित होता था ताकि यह जांचा जा सके कि क्या कोई अवरोध प्राप्त है जिसे कभी-कभी "स्पिनिंग" के रूप में जाना जाता है एक प्राप्त होने पर प्रकार की जांच करना और फिर प्रोसेसिंग कोड पर कूदना। इसका मतलब यह था कि प्रोसेसर पूरी प्रक्रिया के दौरान चल रहा था तब भी जब कोई अवरोध नहीं आ रहा था। | ||
इसके विपरीत 65C02 में इंटरप्ट कोड को | इसके विपरीत 65C02 में इंटरप्ट कोड को a या हैंडलर द्वारा <code>WAI</code>तुरंत अनुसरण करके लिखा जा सकता है।ब सामना हुआ तो प्रसंस्करण बंद हो गया और प्रोसेसर कम-शक्ति मोड में चला गया। जब व्यवधान प्राप्त हुआ तो इसने तुरंत अनुरोध को संसाधित किया। <code>JSRJMPWAIJSR</code> | ||
प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में | प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में अवरोध लूप के निर्देशों में से एक के बीच में आ सकती है और हैंडलर से लौटने के बाद इसे फिर से प्रारम्भ करने की अनुमति देने के लिए प्रोसेसर अपने स्थान को बचाने के लिए एक चक्र खर्च करता है। साथ {{code|WAI}}प्रोसेसर एक ज्ञात स्थान पर कम-शक्ति स्थिति में प्रवेश करता है जहां सभी निर्देशों को पूरा करने की गारंटी दी जाती है इसलिए जब व्यवधान आता है तो यह संभवतः एक निर्देश को बाधित नहीं कर सकता है और प्रोसेसर बिना चक्र बचत स्थिति खर्च किए सुरक्षित रूप से प्रचलित रह सकता है। | ||
== 65SC02 == | == 65SC02 == | ||
Line 296: | Line 296: | ||
== यह भी देखें == | == यह भी देखें == | ||
* [[65xx प्रोसेसर में रुकावट]] | * [[65xx प्रोसेसर में रुकावट|65xx प्रोसेसर में अवरोध]] | ||
* [[CSG 65CE02]], 65C02 का एक और उन्नत संस्करण | * [[CSG 65CE02]], 65C02 का एक और उन्नत संस्करण | ||
Revision as of 18:36, 13 June 2023
![]() W65C02S microprocessor in a PDIP-40 package | |
General information | |
---|---|
Launched | 1983 |
Common manufacturer(s) | |
Performance | |
Max. CPU clock rate | 1 MHz to 14 MHz |
History | |
Predecessor | MOS Technology 6502 |
वेस्टर्न डिज़ाइन सेंटर (डब्ल्यूडीसी) 65C02 माइक्रोप्रोसेसर लोकप्रिय एनएमओएस - आधारित 8-बिट MOS टेक्नोलॉजी 6502 का उन्नत सीएमओएस संस्करण है। 65C02 ने मूल 6502 में कई समस्याओं को ठीक किया और कुछ नए निर्देश जोड़े लेकिन इसकी मुख्य विशेषता समान गति से चलने वाले मूल 6502 की तुलना में 10 से 20 गुना कम विद्युत का उपयोग करना था। कम विद्युत की खपत ने 65C02 को औद्योगिक सेटिंग्स में पोर्टेबल कंप्यूटर भूमिकाओं और माइक्रोकंट्रोलर तंत्र में उपयोगी बना दिया। इसका उपयोग कुछ घरेलू कंप्यूटरों के साथ-साथ अंतः स्थापित प्रणाली अनुप्रयोगों में किया गया है जिसमें चिकित्सा-ग्रेड प्रत्यारोपित उपकरण सम्मिलित हैं।
डब्ल्यूडीसी 65C02 का विकास 1981 में प्रारम्भ हुआ[lower-alpha 1] 1983 की प्रारम्भ में प्रचलित किए गए नमूनों के साथ।[lower-alpha 2] 65C02 को अधिकतर कुछ समय बाद प्रचलित किया गया था। डब्ल्यूडीसी ने सिनरटेक, एनसीआर, जीटीई और रॉकवेल अर्धचालक को डिजाइन का लाइसेंस दिया। रॉकवेल की प्राथमिक रुचि एम्बेडेड मार्केट में थी और इस भूमिका में सहायता के लिए कई नए कमांड जोड़े जाने के लिए कहा गया। इन्हें बाद में आधारभूत संस्करण में वापस कॉपी किया गया था और जिस बिंदु पर डब्ल्यूडीसी ने W65C02 बनाने के लिए अपने स्वयं के दो नए आदेश जोड़े। सान्यो ने बाद में डिजाइन को भी लाइसेंस दिया और सिएको एप्सन ने HuC6280 के रूप में एक और संशोधित संस्करण का उत्पादन किया।
प्रारम्भिक संस्करण 40-पिन डीआईपी पैकेजिंग का उपयोग करते थे और मूल एनएमओएस संस्करणों की गति से मेल खाते हुए 1, 2 और 4 मेगाहर्ट्ज संस्करणों में उपलब्ध थे। बाद के संस्करणों को पीएलसीसी और क्यूएफपी पैकेजों के साथ-साथ पीडीआईपी में और बहुत अधिक क्लॉक स्पीड रेटिंग के साथ तैयार किया गया था। डब्ल्यूडीसी के वर्तमान संस्करण W65C02S-14 में पूरी तरह से स्थिर कोर है और 5 वोल्ट पर संचालित होने पर अधिकतर 14 मेगाहर्ट्ज तक की गति से चलता है।
परिचय और सुविधाएँ
65C02 एक 16-बिट प्रोग्राम काउंटर और एड्रेस बस के साथ कम लागत वाला सामान्य-उद्देश्य वाला 8-बिट माइक्रोप्रोसेसर (8-बिट रजिस्टर और डेटा बस) है। रजिस्टर सेट छोटा है जिसमें एक सिंगल 8-बिट संचायक (कंप्यूटिंग) (A) दो 8-बिट सूचकांक रजिस्टर (X और Y) एक 8-बिट स्टेटस रजिस्टर (P) और एक 16-बिट प्रोग्राम काउंटर (पीसी)। एकल संचायक के अतिरिक्त रैम के पहले 256 बाइट्स, शून्य पृष्ठ ($0000
को $00FF
) 16-बिट पते के अतिरिक्त 8-बिट मेमोरी एड्रेस का उपयोग करने वाले एड्रेसिंग मोड के माध्यम से तेजी से पहुंच की अनुमति देता है। स्टैक (डेटा संरचना) अगले 256 बाइट्स पृष्ठ एक ($0100 से $01FF) में निहित है और इसे स्थानांतरित या विस्तारित नहीं किया जा सकता है। स्टैक $01FF से प्रारम्भ होने वाले स्टेक सूचक (S) के साथ पीछे की ओर बढ़ता है और जैसे-जैसे स्टैक बढ़ता या घटता जाता है।[1] इसमें एक चर-लंबाई निर्देश सेट है जो प्रति निर्देश एक और तीन बाइट्स के बीच भिन्न होता है।[2]
65C02 का मूल आर्किटेक्चर मूल 6502 के समान है और इसे उस डिज़ाइन का कम-शक्ति कार्यान्वयन माना जा सकता है। 1 मेगाहर्ट्ज पर मूल 6502 के लिए सबसे लोकप्रिय गति 65C02 के लिए केवल 20 mW की आवश्यकता होती है जबकि मूल 450 mW का उपयोग करता है जो बीस गुना से अधिक की कमी है।[3] मैन्युअल रूप से अनुकूलित कोर और कम विद्युत के उपयोग का इरादा 65C02 को लो पावर तंत्र -ऑन-चिप (SoC) डिजाइनों के लिए उपयुक्त बनाना है।[2]
वेरिलॉग हार्डवेयर डिस्क्रिप्शन प्रतिरूप W65C02S कोर को एप्लिकेशन-स्पेसिफिक इंटीग्रेटेड सर्किट (ASIC) या फील्ड-प्रोग्रामेबल गेट ऐरे (FPGA) में डिजाइन करने के लिए उपलब्ध है।[4] जैसा कि अर्धचालक उद्योग में आम है डब्ल्यूडीसी एक विकास प्रणाली प्रदान करता है जिसमें एक डेवलपर बोर्ड एक इन-सर्किट एमुलेटर (आईसीई) और एक सॉफ्टवेयर विकास प्रणाली सम्मिलित है।[5]
W65C02S –14 2023 तक उत्पादन संस्करण है और पीडीआईपी, पीएलसीसी और क्यूएफपी पैकेज में उपलब्ध है। अधिकतम अधिकतर समर्थित Ø2 (प्राथमिक) घड़ी की गति 5 वोल्ट पर संचालित होने पर 14 मेगाहर्ट्ज होती है जो -14 भाग संख्या प्रत्यय द्वारा इंगित की जाती है (शौकिया लोगों ने 65C02 होमब्रू तंत्र विकसित किए हैं जो आधिकारिक रेटिंग से तेज़ी से चलते हैं)। "एस" पदनाम इंगित करता है कि भाग में पूरी तरह से स्थिर कोर है और एक विशेषता जो Ø2 को धीमा करने या डेटा की कोई हानि के बिना उच्च या निम्न स्थिति में पूरी तरह से बंद करने की अनुमति देती है।[6] सीएमओएस में लागू नहीं किए गए विशिष्ट माइक्रोप्रोसेसरों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे।
|
सामान्य तर्क विशेषताएं
- 8-बिट डेटा बस
- 16-बिट एड्रेस बस (64 KB का एड्रेस स्पेस प्रदान करता है)
- 8-बिट अंकगणितीय तर्क इकाई (एएलयू)
- 8-बिट प्रोसेसर रजिस्टर:
- विद्युत संचयक यंत्र
- स्टेक सूचक
- सूचकांक रजिस्टर
- स्थिति रजिस्टर
- 16-बिट प्रोग्राम काउंटर
- 69 निर्देश, 212 ऑपरेशन कोड द्वारा कार्यान्वित
- 16 एड्रेसिंग मोड,शून्य पृष्ठ एड्रेसिंग सहित
तर्क सुविधाएँ
- वेक्टर पुल (
VPB
) आउटपुट इंगित करता है कि कब व्यवधान वेक्टर को संबोधित किया जा रहा है - मेमोरी लॉक (
MLB
) आउटपुट अन्य बस मास्टर को इंगित करता है जब एक पठन-संशोधित-लेखन निर्देश संसाधित किया जा रहा है - व्यवधान के लिए प्रतीक्षा करें (
WAI
) और एसटीओपी (STP
) निर्देश विद्युत की खपत को कम करते हैं व्यवधान विलंबता को कम करते हैं और बाहरी घटनाओं के साथ सिंक्रोनाइज़ेशन को सक्षम करते हैं
विद्युत सुविधाएँ
- आपूर्ति वोल्टेज 1.71 V से 5.25 V पर निर्दिष्ट है
- क्रमशः 1.89 V और 5.25 V पर 0.15 और 1.5 मिलीमीटर प्रति मेगाहर्ट्ज़ की वर्तमान खपत (कोर)
- परिवर्तनीय लंबाई निर्देश सेट प्रोसेसर पर कोड आकार अनुकूलन को सक्षम करने से विद्युत की बचत होती है
- पूरी तरह से गतिशील तर्क शक्ति को बचाने के लिए घड़ी को रोकने की अनुमति देता है
घड़ी की विशेषताएं
W65C02S को 1.8 और 5 वोल्ट (±5%) के बीच किसी भी सुविधाजनक आपूर्ति वोल्टेज (VDD) पर संचालित किया जा सकता है। डेटा शीट एसी विशेषताओं की तालिका 5V पर 14 मेगाहर्ट्ज, 3.3 V या 3 V पर 8 मेगाहर्ट्ज 2.5 V पर 4 मेगाहर्ट्ज और 1.8 V पर 2 मेगाहर्ट्ज पर परिचालन विशेषताओं को सूचीबद्ध करती है। यह जानकारी पहले के डेटा शीट का एक आर्टिफैक्ट हो सकता है क्योंकि एक ग्राफ़ इंगित करता है कि सामान्य उपकरण एसी विशेषता तालिका द्वारा सुझाए गए उच्च गति पर संचालन करने में सक्षम हैं और 20 मेगाहर्ट्ज पर विश्वसनीय संचालन VDD के साथ आसानी से प्राप्य होना चाहिए और 5 वोल्ट पर यह मानते हुए कि सहायक हार्डवेयर इसे अनुमति देगा।
मनमानी घड़ी दरों के लिए W65C02S समर्थन इसे ऐसी घड़ी का उपयोग करने की अनुमति देता है जो तंत्र के किसी अन्य भाग के लिए आदर्श दर पर चलती है जैसे कि 13.5 मेगाहर्ट्ज (डिजिटल एसडीटीवी लूमा सैंपलिंग दर) 14.31818 मेगाहर्ट्ज (एनटीएससी रंग वाहक आवृत्ति × 4), 14.75 MHz (PAL वर्ग पिक्सेल), 14.7456 (बॉड रेट क्रिस्टल)आदि जब तक VDD आवृत्ति का समर्थन करने के लिए पर्याप्त है। डिजाइनर बिल मेन्श ने बताया है कि FMAX ऑफ-चिप कारकों से प्रभावित होता है जैसे माइक्रोप्रोसेसर के पिन पर कैपेसिटिव लोड। शॉर्ट सिग्नल ट्रैक्स और सबसे कम उपकरणों का उपयोग करके लोड को कम करने से FMAX को बढ़ाने में मदद मिलती है। पीएलसीसी और क्यूएफपी पैकेज में पीडीआईपी पैकेज की तुलना में कम पिन-टू-पिन कैपेसिटेंस होता है और मुद्रित सर्किट बोर्ड स्पेस के उपयोग में अधिक प्रभावकारी होता है।
डब्ल्यूडीसी ने बताया है कि W65C02S की FPGA प्राप्तियों को सफलतापूर्वक 200 मेगाहर्ट्ज पर संचालित किया गया है।
एनएमओएस 6502 के साथ तुलना
बुनियादी वास्तुकला
हालांकि 65C02 को अधिकतर कम-शक्ति 6502 के रूप में माना जा सकता है। यह मूल में पाए जाने वाले कई बगों को भी ठीक करता है और नए निर्देश जोड़ता है ऐसे मोड और सुविधाओं को संबोधित करता है जो प्रोग्रामर को छोटे और तेजी से निष्पादित प्रोग्राम लिखने में सहायता कर सकते हैं। यह अनुमान लगाया गया है कि औसत 6502 असेंबली लैंग्वेज प्रोग्राम को 65C02 पर 10 से 15 प्रतिशत छोटा बनाया जा सकता है और प्रदर्शन में समान सुधार देखा जा सकता है मोटे तौर पर किसी दिए गए कार्य को पूरा करने के लिए कम निर्देशों के उपयोग के माध्यम से मेमोरी प्रवेश से बचा जाता है।[2]
गैर-दस्तावेजी निर्देश हटा दिए गए
मूल 6502 में 56 निर्देश हैं जो अलग-अलग एड्रेसिंग मोड के साथ संयुक्त होने पर संभावित 256 8-बिट ऑपकोड पैटर्न के कुल 151 ऑपकोड उत्पन्न करते हैं। शेष 105 अप्रयुक्त ऑपकोड अपरिभाषित हैं और 3, 7 बी या एफ के साथ कम-ऑर्डर 4-बिट वाले कोड के सेट के साथ पूरी तरह से अप्रयुक्त छोड़ दिया गया है और कम-ऑर्डर 2 वाले कोड में केवल एक ही ऑपकोड है।[7]
6502 पर इनमें से कुछ बचे हुए कोड वास्तव में संगणना करते हैं। 6502 के निर्देश डिकोडर के काम करने के तरीके के कारण ओपकोड में कुछ बिट्स को सेट करने से निर्देश प्रसंस्करण के कुछ हिस्सों का कारण बनता है। इनमें से कुछ ऑपकोड तुरंत प्रोसेसर को क्रैश कर देते हैं जबकि अन्य उपयोगी कार्य करते हैं और यहां तक कि कुछ प्रोग्रामर द्वारा अनौपचारिक असेंबलर स्मृति चिन्ह भी दिए जाते हैं।[8]
65C02 नए ऑपकोड जोड़ता है जो इनमें से कुछ पहले से अप्रमाणित निर्देश स्लॉट का उपयोग करते हैं। उदाहरण के लिए $FF नए के लिए प्रयोग किया जाता हैBBS
निर्देश जो वास्तव में अनुपयोगी रह जाते हैं वे समतुल्य होते हैं NOP
एस उन ऑपकोड का उपयोग करने वाले 6502 प्रोग्राम 65C02 पर काम नहीं करेंगे।[2]
बग फिक्स
मूल 6502 में प्रारम्भ में लॉन्च होने पर कई इरेटा थे। प्रोसेसर के प्रारम्भिक संस्करणों में नहीं था ROR
(दाईं ओर घुमाएं) निर्देश और एमओएस टेक्नोलॉजी मैनुअल ने भी इसका दस्तावेजीकरण नहीं किया।ROR
उत्पादन चलाने में बहुत जल्दी लागू किया गया था और प्रोसेसर का उपयोग करने वाली अधिकांश मशीनें इस निर्देश का समर्थन करती हैं।[9]
एक बग जो 6502 के सभी एनएमओएस वेरिएंट में स्थित है एड्रेसिंग मोड सूचकांक्ड एब्सोल्यूट का उपयोग करते समय जंप निर्देश सम्मिलित करता है। इस एड्रेसिंग मोड में, लक्ष्य का पता JMP
निर्देश एक ऑपरेंड होने के अतिरिक्त मेमोरी जंप वेक्टर से प्राप्त किया जाता है JMP
निर्देश। उदाहरण के लिए JMP ($1234)
स्मृति स्थानों में मूल्य लाएगा $1234 (कम महत्वपूर्ण बाइट) और $1235 (सबसे महत्वपूर्ण बाइट) और उन मानों को प्रोग्राम काउंटर में लोड करें जो तब प्रोसेसर को वेक्टर में संग्रहीत पते पर निष्पादन प्रचलित रखने का कारण बनेगा।
बग तब प्रकट होता है जब वेक्टर पता समाप्त होता है $FF जो स्मृति पृष्ठ की सीमा है। इस विषय मेंJMP
लक्ष्य पते का सबसे महत्वपूर्ण बाइट प्राप्त करेगा $00 मूल पृष्ठ के अतिरिक्त {{Mono|$00}नए पृष्ठ का }। इस तरहJMP($12FF)
पर लक्ष्य पते का कम से कम महत्वपूर्ण बाइट प्राप्त होगा $12FF और लक्षित पते का सबसे महत्वपूर्ण बाइट $1200 इसके अतिरिक्त $1300. 65C02 ने इस समस्या को ठीक किया।[2]
एक बग की तुलना में अधिक निरीक्षण एनएमओएस 6502 के स्थिति रजिस्टर में (डी) ecimal ध्वज की स्थिति एक रीसेट (कंप्यूटिंग) या अवरोध के बाद अपरिभाषित है। इसका मतलब यह है कि अंकगणितीय परिचालनों से संबंधित किसी भी बग से बचने के लिए प्रोग्रामर को ध्वज को ज्ञात मान पर सेट करना होगा। नतीजतन एकCLD
निर्देश (स्पष्ट दशमलव) लगभग सभी 6502 इंटरप्ट हैंडलर में साथ ही साथ रीसेट कोड में भी। 65C02 किसी भी बाधा या हार्डवेयर रीसेट के जवाब में स्टैक पर स्थिति रजिस्टर को धक्का देने के बाद स्वचालित रूप से इस ध्वज को साफ़ करता है इस प्रकार प्रोसेसर को बाइनरी अंकगणितीय मोड में वापस रखता है।[10]
बाइनरी-कोडित दशमलव अंकगणितीय के दौरान एनएमओएस 6502 अंतर्निहित बाइनरी अंकगणित के परिणाम को प्रतिबिंबित करने के लिए (N) निष्क्रिय o(V) erflow और (Z) ero फ़्लैग्स को अपडेट करेगा अर्थात फ़्लैग्स पहले की गणना किए गए परिणाम को दर्शा रहे हैं प्रोसेसर दशमलव सुधार कर रहा है। इसके विपरीत 65C02 अंकगणित निर्देश के अनुसार अतिरिक्त घड़ी चक्र की कीमत पर, दशमलव अंकगणित के परिणाम के अनुसार इन झंडों को सेट करता है।[10]
पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय जैसेINC addr
सभी एनएमओएस वैरिएंट Addr पर दोहरा लेखन करेंगे पहले Addr पर मिले वर्तमान मान को फिर से लिखेंगे और फिर संशोधित मान लिखेंगे। यदि Addr एक हार्डवेयर रजिस्टर है तो यह व्यवहार कठिन-से-समाधान बग में परिणाम कर सकता है। यह तब हो सकता है जब हार्डवेयर रजिस्टर में मूल्य में परिवर्तन के लिए देख रहा हो और फिर एक क्रिया करता है इस विषय में यह दो क्रियाएं करेगा एक मूल मूल्य के साथ और फिर नए मूल्य के साथ। 65C02 इसके अतिरिक्त Addr का दोहरा रीड करता है उसके बाद सिंगल राइट करता है।
सूचकांक एड्रेसिंग करते समय यदि सूचकांक एक पृष्ठ सीमा को पार कर जाती है तो सही पते तक पहुँचने से पहले सभी एनएमओएस वेरिएंट एक अमान्य पते से पढ़ेंगे। जैसा कि R-M-W निर्देश के साथ होता है अनुक्रमण के माध्यम से हार्डवेयर रजिस्टरों तक पहुँचने पर यह व्यवहार समस्याएँ पैदा कर सकता है। 65C02 ने इस समस्या को ठीक किया जब सूचकांकिंग एक पृष्ठ सीमा को पार कर जाती है तो निर्देश ओपकोड का एक डमी रीड प्रदर्शन करके। हालाँकि इस फिक्स ने एक नया बग प्रस्तुत किया[citation needed] जो तब होता है जब आधार पता एक समान पृष्ठ सीमा पर होता है (जिसका अर्थ है कि अनुक्रमण अगले पृष्ठ पर कभी नहीं जाएगा)। नए बग के साथ अनुक्रमण से पहले आधार पते पर एक डमी रीड किया जाता है जैसे किLDA $1200,X
एक डमी पढ़ेगा $1200 X के मान को जोड़े जाने से पहले $1200. फिर से यदि हार्डवेयर रजिस्टर पतों पर अनुक्रमण किया जाता है तो इस बग का परिणाम अपरिभाषित व्यवहार हो सकता है।
यदि एक एनएमओएस 6502 एक BRK (सॉफ़्टवेयर इंटरप्ट) ऑपकोड ला रहा है उसी समय एक हार्डवेयर व्यवधान होता है तो BRK को अनदेखा कर दिया जाएगा क्योंकि प्रोसेसर हार्डवेयर इंटरप्ट पर प्रतिक्रिया करता है। 65C02 इंटरप्ट को सर्विस करके और फिर BRK को निष्पादित करके इस स्थिति को सही ढंग से हैंडल करता है।
नए एड्रेसिंग मोड
6502 में दो अप्रत्यक्ष एड्रेसिंग मोड हैं जो पृष्ठ शून्य में संग्रहीत 16-बिट पतों के माध्यम से विचलन करते हैं:
- अनुक्रमित अप्रत्यक्ष, उदाहरण
LDA($10,X)
16-बिट वेक्टर को पढ़ने से पहले दिए गए पृष्ठ शून्य पते पर X रजिस्टर जोड़ता है। इस उदाहरण में यदि X 5 है तो यह स्थान $15/$16 से 16-बिट पता पढ़ता है। यह तब उपयोगी होता है जब पेज ज़ीरो में संकेत की एक सारणी होती है। - अप्रत्यक्ष अनुक्रमित
LDA ($10),Y
रजिस्टर को दिए गए पृष्ठ शून्य पते से पढ़े गए 16-बिट वेक्टर में जोड़ता है। उदाहरण के लिए यदि Y 5 है और $10/$11 में वेक्टर $1000 है तो यह $1005 से मान पढ़ता है। यह पॉइंटर-ऑफ़सेट एड्रेसिंग करता है।
इस प्रतिरूप का निष्क्रिय पक्ष यह है कि यदि अनुक्रमण की आवश्यकता नहीं है लेकिन पता शून्य पृष्ठ में है तो सूचकांक रजिस्टरों में से एक को अभी भी शून्य पर सेट किया जाना चाहिए और इन निर्देशों में से एक में उपयोग किया जाना चाहिए। 65C02 नेLDA ($10)
सूचकांक रजिस्टरों को मुक्त करते हुए सूचकांक किए गए अप्रत्यक्ष और प्रत्यक्ष सूचकांक किए गए मोड का उपयोग करने वाले सभी निर्देशों के लिए एक गैर-अनुक्रमित अप्रत्यक्ष एड्रेसिंग मोड जोड़ा।
6502 काJMP
निर्देश में एक अनूठा (6502 निर्देशों के बीच) एड्रेसिंग मोड था जिसे पूर्ण अप्रत्यक्ष के रूप में जाना जाता है जो किसी दिए गए मेमोरी पते से 16-बिट मान पढ़ता है और फिर उस 16-बिट मान में पते पर कूद जाता है। उदाहरण के लिए यदि स्मृति स्थान $A000 के पास $34 और $A001 के पास $12 है JMP ($A000)
उन दो बाइट्स को पढ़ेगा और मूल्य का निर्माण करेगा $1234 और फिर उस स्थान पर जाएगा।
अप्रत्यक्ष संबोधन के लिए एक सामान्य उपयोग शाखा तालिकाओं का निर्माण करना है सबरूटीन के लिए प्रवेश बिंदुओं की एक सूची जिसे एक सूचकांक का उपयोग करके प्रवेश किया जा सकता है। उदाहरण के लिए एक डिवाइस ड्राइवर $A000 पर तालिका मेंOPEN,CLOSE
आदि के लिए प्रवेश बिंदुओं को सूचीबद्ध कर सकता है तीसरी प्रविष्टि है शून्य अनुक्रमित और प्रत्येक पते के लिए 16-बिट्स की आवश्यकता होती है इसलिए कॉल करने के लिए कुछ इसी तरह का उपयोग किया जाएगा। यदि ड्राइवर अपडेट किया गया है और सबरूटीन कोड मेमोरी में चला जाता है तो कोई भी स्थित कोड तब तक काम करेगा जब तक पॉइंटर्स $A000 की तालिका बनी रहती है।READ READ READ JMP ($A004)
65C02 ने नया अनुक्रमित पूर्ण अप्रत्यक्ष मोड जोड़ा जिसने शाखा तालिकाओं के उपयोग को आसान बना दिया। इस मोड ने एक्स रजिस्टर के मूल्य को पूर्ण पते में जोड़ा और परिणामी स्थान से 16-बिट का पता लगा लिया। उदाहरण के लिए प्रवेश करने के लिएREAD
ऊपर दी गई तालिका से कार्य करता है तब कोई X में 4 संग्रहीत करेगाJMP ($A000,X)
पहुँच की यह शैली शाखा तालिकाओं तक पहुँच को सरल बनाती है क्योंकि एकल आधार पते का उपयोग 8-बिट ऑफ़सेट के संयोजन में किया जाता है।[11]अनुक्रमित अप्रत्यक्ष मोड का उपयोग करके एनएमओएस संस्करण में इसे प्राप्त किया जा सकता है लेकिन केवल तभी जब एक सीमित संसाधन तालिका शून्य पृष्ठ में हो। इन्हें शून्य पृष्ठ के बाहर बनाने की अनुमति देने से न केवल इस संसाधन की मांग कम हुई बल्कि रोम में तालिकाओं के निर्माण की भी अनुमति मिली।
नए और संशोधित निर्देश
नए एड्रेसिंग मोड के अतिरिक्त बेस प्रतिरूप 65C02 ने नए निर्देशों का एक सेट भी जोड़ा।[12]
INC
औरDEC
बिना किसी पैरामीटर के अब संचायक को बढ़ाएँ या घटाएँ। मूल निर्देश सेट में यह एक अजीब निरीक्षण था जिसमें केवलINX
/DEX
,INY
/DEY
औरINC addr
/DEC addr
सम्मिलित था और कुछ असेंबलर वैकल्पिकINA
/DEA
याINC A
/DEC A रूपों का उपयोग करते हैं।
[12]STZ addr
Addr में शून्य स्टोर करें। संचायक के मूल्य को बदलने की आवश्यकता नहीं है चूंकि यह कार्य अधिकांश कार्यक्रमों में आम है और कोड का आकार कम कर सकते हैं साथ ही संचायक के मूल्य को बचाने के लिए आवश्यक किसी भी कोड को समाप्त करके जोड़ा जाता है।[13]LDA 0;STA addrSTZLDAPHA
PLA
PHX
,PLX
,PHY
,PLY
, X और Y रजिस्टरों को स्टैक में धकेलें और खींचें। पहले केवल संचायक और स्थिति रजिस्टर में पुश और पुल निर्देश होते थे। X और Y को पहले संचायक में ले जाकर ही ढेर किया जा सकता हैTXA
याTYA
जिससे संचायक की सामग्रीPHA मे
बदली जाती है फिर उपयोग किया जाता है।BRA
शाखा हमेशा ए तरह संचालित होता हैJMP
लेकिन अन्य शाखाओं की तरह 1-बाइट सापेक्ष पते का उपयोग करता है और एक बाइट बचाता है। गति हमेशा 3 चक्र निरपेक्ष के समान होती हैJMP
जब तक कि एक पृष्ठ पार नहीं किया जाता है जो इसे बना देगाBRA
संस्करण 1 चक्र लंबा (4 चक्र)।[14] जैसा कि पता सापेक्ष है यह पुनर्निधारणीय कोड लिखते समय भी उपयोगी होता है[13] स्मृति प्रबंधन इकाइयों से पहले युग में एक सामान्य कार्य।
बिट हेरफेर निर्देश
डब्ल्यूडीसी और रॉकवेल दोनों ने 65C02 में बिट परीक्षण और हेरफेर कार्यों में सुधार का योगदान दिया। डब्ल्यूडीसी ने BIT निर्देश में नए एड्रेसिंग मोड जोड़े जो 6502 में स्थित थे और साथ ही बिट फ़ील्ड के सुविधाजनक हेरफेर के लिए दो नए निर्देश डिवाइस ड्राइवरों में एक सामान्य गतिविधि।
BIT
65C02 में तुरन्त मोड जोड़ता है और एक्स द्वारा अनुक्रमित शून्य पृष्ठ और एक्स एड्रेसिंग द्वारा पूर्ण अनुक्रमित।[12] तुरन्त मोड एड्रेसिंग विशेष रूप से सुविधाजनक है क्योंकि यह पूरी तरह से गैर-विनाशकारी है। उदाहरण के लिए:
LDA $1234
BIT #%00010000
के स्थान पर उपयोग किया जा सकता है:
LDA $1234
AND #%00010000
AND}ND
ऑपरेशन संचायक में मान को बदल देता है इसलिए $1234 से लोड किया गया मूल मान खो जाता है। का उपयोग करते हुएBIT
संचायक में मान को अपरिवर्तित छोड़ देता है इसलिए बाद का कोड मूल मान के विरुद्ध अतिरिक्त परीक्षण कर सकता है और स्मृति से मान को फिर से लोड करने से बच सकता है।
के संवर्द्धन के अतिरिक्त BIT
निर्देश डब्ल्यूडीसी ने बिट फ़ील्ड्स को आसानी से हेरफेर करने के लिए डिज़ाइन किए गए दो निर्देश जोड़े:
TSB addr
औरTRB addr
टेस्ट और सेट बिट्स और टेस्ट और रीसेट बिट्स।
- संचायक में एक मुखौटा (
A
) Addr पर मेमोरी के साथ तार्किक रूप से ANDed है कौन सा स्थान शून्य पृष्ठ या निरपेक्ष हो सकता है। स्थिति रजिस्टर में Z ध्वज तार्किक के परिणाम के अनुसार वातानुकूलित है और—कोई अन्य स्थिति रजिस्टर ध्वज प्रभावित नहीं होता है। इसके अतिरिक्त Addr में बिट्स को मास्क के अनुसार सेट (TSB) या क्लियर (TRB) किया जाता है संक्षेप में TSB तार्किक के बाद एक तार्किक प्रदर्शन करता है और तार्किक के परिणाम को Addr पर संग्रहीत करता है जबकि TRB तार्किक के परिणामों को Addr पर संग्रहीत करता है। दोनों ही स्थितियों में स्थिति रजिस्टर में Z ध्वज Addr की सामग्री से पहले के परिणाम को इंगित करता हैA OR AND OR AND.A AND addr
बदल गया है।BIT
टीआरबी और टीएसबी इस प्रकार निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं कम्प्यूटेशनल परिवर्तनों को बचाने के लिए अनिवार्य रूप से निर्देश को अतिरिक्त चरणों के साथ जोड़ते हैं लेकिन एक तरह से प्रभावित मूल्य की स्थिति को बदलने से पहले रिपोर्ट करते हैं।
रॉकवेल के परिवर्तनों ने किसी भी बिट को सीधे सेट करने और परीक्षण करने के लिए और परीक्षण, स्पष्ट और शाखा को एक ही ऑपकोड में संयोजित करने के लिए अधिक बिट हेरफेर निर्देश जोड़े। रॉकवेल के R65C00 परिवार में प्रारम्भ से ही नए निर्देश उपलब्ध थे[15] लेकिन मूल 65C02 विनिर्देश का हिस्सा नहीं था और डब्ल्यूडीसी या इसके अन्य लाइसेंसधारियों द्वारा बनाए गए संस्करणों में नहीं पाया गया। इन्हें बाद में आधारभूत डिज़ाइन में वापस कॉपी किया गया और बाद के डब्ल्यूडीसी संस्करणों में उपलब्ध थे।
रॉकवेल-विशिष्ट निर्देश हैं:
एसएमबी bit zp
/आरएमबी bit zp
जीरो पेज बाइट zp में सेट या रीसेट (क्लियर) बिट नंबर बिट।
- आरएमबी और एसएमबी का उपयोग बिट फ़ील्ड में अलग-अलग बिट्स (आरएमबी) या सेट (एसएमबी) को साफ़ करने के लिए किया जाता है प्रत्येक तीन निर्देशों के अनुक्रम को प्रतिस्थापित करता है। चूंकि आरएमबी और एसएमबी केवल जीरो पेज एड्रेसिंग हैं तो ये निर्देश उपयोगिता में सीमित हैं और मुख्य रूप से उन प्रणालियों में महत्वपूर्ण हैं जिनमें डिवाइस रजिस्टर शून्य पेज में स्थित हैं। निर्देश का बिट घटक हमेशा स्मरक के भाग के रूप में लिखा जाता है जैसे
एसएमबी 1 $12
जो बिट 1 को शून्य-पृष्ठ पते $12 में सेट करता है। कुछ असेंबलर बिट को निर्देश के ऑपरेंड के हिस्से के रूप में मानते हैं उदाहरण के लिएएसएमबी 1,$12
जिसके पास इसे एक चर नाम या परिकलित संख्या द्वारा प्रतिस्थापित करने की अनुमति देने का लाभ है।[13]
बीबीआर bit,offset,addr
औरBBS bit#,offset,addr
बिट सेट/रीसेट पर शाखा।
- आरएमबी और एसएमबी के समान शून्य-पेज एड्रेसिंग और सीमाएं लेकिन चयनित बिट स्पष्ट (बीबीआर) या सेट (बीबीएस) होने पर शाखाओं को जोड़ने के लिए। जैसा कि आरएमबी और एसएमबी के साथ होता है बीबीआर और बीबीएस तीन निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं।[13]
कम-शक्ति मोड
उपरोक्त नए आदेशों के अतिरिक्त डब्ल्यूडीसी ने भी जोड़ाSTP
औरWAI
कम-शक्ति मोड का समर्थन करने के निर्देश।
STP
प्रोसेसर को STop करें हार्डवेयर रीसेट प्रचलित होने तक सभी प्रोसेसिंग को रोक दें। इसका उपयोग किसी तंत्र को सुलाने के लिए किया जा सकता है और फिर इसे रीसेट के साथ तेजी से जगाया जा सकता है। प्राय: इसके लिए मुख्य मेमोरी को बनाए रखने के लिए कुछ बाहरी तंत्र की आवश्यकता होती है और इसका व्यापक रूप से उपयोग नहीं किया जाता था।
WAI
का एक समान प्रभाव था कम-शक्ति मोड में प्रवेश करना लेकिन इस निर्देश ने प्रोसेसर को एक अवरोध के स्वागत पर फिर से जगा दिया। पहले एक बाधा को संभालने में प्राय: एक लूप चलाने के लिए सम्मिलित होता था ताकि यह जांचा जा सके कि क्या कोई अवरोध प्राप्त है जिसे कभी-कभी "स्पिनिंग" के रूप में जाना जाता है एक प्राप्त होने पर प्रकार की जांच करना और फिर प्रोसेसिंग कोड पर कूदना। इसका मतलब यह था कि प्रोसेसर पूरी प्रक्रिया के दौरान चल रहा था तब भी जब कोई अवरोध नहीं आ रहा था।
इसके विपरीत 65C02 में इंटरप्ट कोड को a या हैंडलर द्वारा WAI
तुरंत अनुसरण करके लिखा जा सकता है।ब सामना हुआ तो प्रसंस्करण बंद हो गया और प्रोसेसर कम-शक्ति मोड में चला गया। जब व्यवधान प्राप्त हुआ तो इसने तुरंत अनुरोध को संसाधित किया। JSRJMPWAIJSR
प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में अवरोध लूप के निर्देशों में से एक के बीच में आ सकती है और हैंडलर से लौटने के बाद इसे फिर से प्रारम्भ करने की अनुमति देने के लिए प्रोसेसर अपने स्थान को बचाने के लिए एक चक्र खर्च करता है। साथ WAI
प्रोसेसर एक ज्ञात स्थान पर कम-शक्ति स्थिति में प्रवेश करता है जहां सभी निर्देशों को पूरा करने की गारंटी दी जाती है इसलिए जब व्यवधान आता है तो यह संभवतः एक निर्देश को बाधित नहीं कर सकता है और प्रोसेसर बिना चक्र बचत स्थिति खर्च किए सुरक्षित रूप से प्रचलित रह सकता है।
65SC02
65SC02 बिना किसी निर्देश के डब्ल्यूडीसी 65C02 का एक प्रकार है।[16]== 65C02 == के उल्लेखनीय उपयोग
एप्पल कंप्यूटर
- एप्पल कंप्यूटर द्वारा [[[[एप्पल II]]c]] पोर्टेबल (NCR 1.023 MHz)
- एप्पल कंप्यूटर द्वारा एप्पल IIe (1.023 मेगाहर्ट्ज)
- बीबीसी मास्टर होम/एजुकेशनल कंप्यूटर, एकोर्न कम्प्यूटर्स लिमिटेड द्वारा (2 मेगाहर्ट्ज 65SC12 प्लस वैकल्पिक 4 मेगाहर्ट्ज 65C102 सेकंड प्रोसेसर)
- ब्रील कम्प्यूटर्स द्वारा प्रतिकृति 1, एप्पल I हॉबीस्ट कंप्यूटर (1 MHz) की प्रतिकृति
- एप्पल II की लेजर 128 श्रृंखला क्लोन
- ब्रील कंप्यूटिंग द्वारा KIM-1 MOS/CBM KIM-1 की आधुनिक प्रतिकृति
वीडियो गेम कंसोल
- लिंक्स नहीं हैंडहेल्ड (65SC02 @ ~4 मेगाहर्ट्ज)
- पीसी इंजन उर्फ TurboGrafx-16 (हडसन सॉफ्ट HuC6280 @ 7.16 मेगाहर्ट्ज)[17]
- टाइमटॉप द्वारा गेमकिंग हैंडहेल्ड (6 मेगाहर्ट्ज)
- पर्यवेक्षण के बारे में हैंडहेल्ड (65SC02 @ 4 मेगाहर्ट्ज)
अन्य उत्पाद
- कमोडोर 64 होम कंप्यूटर के लिए TurboMaster एक्सीलरेटर कार्ट्रिज (65C02 @ 4.09 मेगाहर्ट्ज)
- एकोर्न बीबीसी माइक्रो होम कंप्यूटर के लिए ट्यूब से जुड़ा दूसरा प्रोसेसर (65C02 @ 3 मेगाहर्ट्ज)
- कई समर्पित शतरंज कंप्यूटर यानी: मेफिस्टो एमएमवी, नोवाग सुपर कांस्टेलेशन, फिडेलिटी एलीट और कई अन्य (4-20 मेगाहर्ट्ज
यह भी देखें
- 65xx प्रोसेसर में अवरोध
- CSG 65CE02, 65C02 का एक और उन्नत संस्करण
टिप्पणियाँ
- ↑ Some sources, including prior versions of this article, claim 1978. This was the date that Bill Mensch, the primary designer, formed WDC. In a 1984 article, Mensch specifically states 1981 as the start date.
- ↑ Wagner's June 1983 article mentions it being available for “several months”. Given typical publication delays at that point this may date it to as early as late 1982. Another source points to 1980, see talk page.
संदर्भ
उद्धरण
- ↑ Koehn, Philipp (2 March 2018). "6502 Stack" (PDF).
- ↑ 2.0 2.1 2.2 2.3 2.4 Wagner 1983, p. 204.
- ↑ Taylor & Watford 1984, p. 174.
- ↑ "6502 CPU Projects in HDL (for FPGA)".
- ↑ "W65C02DB Developer Board".
- ↑ "W65C02S-14".
- ↑ Parker, Neil. "The 6502/65C02/65C816 Instruction Set Decoded". Neil Parker's Apple II page.
- ↑ Vardy, Adam (22 August 1995). "Extra Instructions Of The 65XX Series CPU".
- ↑ File:MCS650x Instruction Set.jpg
- ↑ 10.0 10.1 "Differences between NMOS 6502 and CMOS 65c02". Retrieved 27 February 2018.
N, V, and Z flags were incorrect after decimal operation (but C was ok).
- ↑ Clark, Bruce. "65C02 Opcodes".
- ↑ 12.0 12.1 12.2 Wagner 1983, p. 200.
- ↑ 13.0 13.1 13.2 13.3 Wagner 1983, p. 203.
- ↑ "W65C02S Datasheet" (PDF).
- ↑ Wagner 1983, p. 199.
- ↑ Zaks, Rodnay (1983). Programming the 6502. Sybex. p. 348. ISBN 0895881357.
- ↑ "HuC6280 - Archaic Pixels".
ग्रन्थसूची
- Wagner, Robert (June 1983). "Assembly Lines". Softtalk. pp. 199–204.
- Taylor, Simon; Watford, Bob (July 1984). "6502 revival". Personal Computer World. pp. 174–175.
अग्रिम पठन
- 65C02 Datasheet; Western Design Center; 32 pages; 2018.
- Programming the 65816 - including the 6502, 65C02, 65802; 1st Ed; David Eyes and Ron Lichty; Prentice Hall; 636 pages; 1986; ISBN 978-0893037895. (archive)
बाहरी संबंध
- 65C02 webpage - Western Design Center
- 65xx/65Cxx/65SCxx Differences - CPU World
- 6502/65C02/65C816 Instruction Set Decoded – From Neil Parker's एप्पल II page