डब्ल्यूडीसी 65C02: Difference between revisions
No edit summary |
No edit summary |
||
Line 68: | Line 68: | ||
}} | }} | ||
वेस्टर्न डिज़ाइन सेंटर (डब्ल्यूडीसी) '''65C02''' माइक्रोप्रोसेसर लोकप्रिय nMOS- आधारित 8-बिट MOS टेक्नोलॉजी 6502 का उन्नत CMOS संस्करण है। 65C02 ने मूल 6502 में कई समस्याओं को ठीक किया और कुछ नए निर्देश जोड़े | वेस्टर्न डिज़ाइन सेंटर (डब्ल्यूडीसी) '''65C02''' माइक्रोप्रोसेसर लोकप्रिय nMOS- आधारित 8-बिट MOS टेक्नोलॉजी 6502 का उन्नत CMOS संस्करण है। 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 मेगाहर्ट्ज संस्करणों में उपलब्ध थे। बाद के संस्करणों को PLCC और QFP पैकेजों के साथ-साथ PDIP में और बहुत अधिक क्लॉक स्पीड रेटिंग के साथ तैयार किया गया था। डब्ल्यूडीसी के वर्तमान संस्करण W65C02S-14 में पूरी तरह से स्थिर कोर है और 5 वोल्ट पर संचालित होने पर आधिकारिक तौर पर 14 मेगाहर्ट्ज तक की गति से चलता है। | |||
== परिचय और सुविधाएँ == | == परिचय और सुविधाएँ == | ||
65C02 एक | 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 के समान है | 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 तक उत्पादन संस्करण है , और PDIP , PLCC और QFP पैकेज में उपलब्ध है। अधिकतम आधिकारिक तौर पर समर्थित Ø2 (प्राथमिक) घड़ी की गति 5 वोल्ट पर संचालित होने पर 14 मेगाहर्ट्ज होती है, जो -14 भाग संख्या प्रत्यय द्वारा इंगित की जाती है (शौकिया लोगों ने 65C02 होमब्रू सिस्टम विकसित किए हैं जो आधिकारिक रेटिंग से तेज़ी से चलते हैं)। "एस" पदनाम इंगित करता है कि भाग में पूरी तरह से स्थिर कोर है और एक विशेषता जो Ø2 को धीमा करने या डेटा की कोई हानि के बिना उच्च या निम्न स्थिति में पूरी तरह से बंद करने की अनुमति देती है।<ref>{{cite web |url=http://www.westerndesigncenter.com/wdc/w65c02s-chip.cfm |title=W65C02S-14}}</ref> CMOS में लागू नहीं किए गए विशिष्ट माइक्रोप्रोसेसरों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे। | |||
{| class="infobox" style="font-size:88%;width:27em;" | {| class="infobox" style="font-size:88%;width:27em;" | ||
Line 154: | Line 155: | ||
|} | |} | ||
=== सामान्य तर्क | === सामान्य तर्क विशेषताएं === | ||
* 8-बिट बस | *8-बिट डेटा बस | ||
* 16-बिट एड्रेस बस (64 KB का एड्रेस स्पेस प्रदान करता है) | * 16-बिट एड्रेस बस (64 KB का एड्रेस स्पेस प्रदान करता है) | ||
* 8-बिट [[अंकगणितीय तर्क इकाई]] (एएलयू) | * 8-बिट [[अंकगणितीय तर्क इकाई]] (एएलयू) | ||
* 8-बिट प्रोसेसर रजिस्टर: | * 8-बिट प्रोसेसर रजिस्टर: | ||
** | **विद्युत संचयक यंत्र | ||
** [[स्टेक सूचक]] | ** [[स्टेक सूचक]] | ||
** | **सूचकांक रजिस्टर | ||
** [[स्थिति रजिस्टर]] | ** [[स्थिति रजिस्टर]] | ||
* 16-बिट प्रोग्राम काउंटर | * 16-बिट प्रोग्राम काउंटर | ||
* 69 निर्देश | *69 निर्देश , 212 ऑपरेशन कोड द्वारा कार्यान्वित | ||
* 16 [[एड्रेसिंग मोड]], [[ शून्य पृष्ठ ]] एड्रेसिंग सहित | * 16 [[एड्रेसिंग मोड]],[[ शून्य पृष्ठ ]]एड्रेसिंग सहित | ||
[[Image:Sitronix ST2064B silicon die.jpg|thumb|सिट्रोनिक्स ST2064B माइक्रोकंट्रोलर का डाई फोटोग्राफ जो ऊपर दाईं ओर एम्बेडेड W65C02S कोर दिखा रहा है]] | [[Image:Sitronix ST2064B silicon die.jpg|thumb|सिट्रोनिक्स ST2064B माइक्रोकंट्रोलर का डाई फोटोग्राफ जो ऊपर दाईं ओर एम्बेडेड W65C02S कोर दिखा रहा है]] | ||
=== तर्क सुविधाएँ === | === तर्क सुविधाएँ === | ||
* वेक्टर पुल (<code>VPB</code>) आउटपुट इंगित करता है कि कब [[व्यवधान वेक्टर]] को संबोधित किया जा रहा है | * वेक्टर पुल (<code>VPB</code>) आउटपुट इंगित करता है कि कब [[व्यवधान वेक्टर]] को संबोधित किया जा रहा है | ||
* मेमोरी लॉक (<code>MLB</code>) आउटपुट अन्य [[बस मास्टर]] | * मेमोरी लॉक (<code>MLB</code>) आउटपुट अन्य [[बस मास्टर]] को इंगित करता है जब एक पठन-संशोधित-लेखन निर्देश संसाधित किया जा रहा है | ||
* व्यवधान के लिए प्रतीक्षा करें (<code>WAI</code>) और एसटीओपी (<code>STP</code>) निर्देश | * व्यवधान के लिए प्रतीक्षा करें (<code>WAI</code>) और एसटीओपी (<code>STP</code>) निर्देश विद्युत की खपत को कम करते हैं [[ व्यवधान विलंबता ]]को कम करते हैं और बाहरी घटनाओं के साथ सिंक्रोनाइज़ेशन को सक्षम करते हैं | ||
=== विद्युत सुविधाएँ === | === विद्युत सुविधाएँ === | ||
* आपूर्ति [[वोल्टेज]] 1.71 V से 5.25 V पर निर्दिष्ट है | * आपूर्ति [[वोल्टेज]] 1.71 V से 5.25 V पर निर्दिष्ट है | ||
* क्रमशः 1.89 V और 5.25 V पर 0.15 और 1.5 मिलीमीटर प्रति [[मेगाहर्ट्ज़]] की वर्तमान खपत (कोर) | * क्रमशः 1.89 V और 5.25 V पर 0.15 और 1.5 मिलीमीटर प्रति [[मेगाहर्ट्ज़]] की वर्तमान खपत (कोर) | ||
* परिवर्तनीय लंबाई निर्देश सेट | * परिवर्तनीय लंबाई निर्देश सेट निश्चित लंबाई निर्देश सेट प्रोसेसर पर कोड आकार अनुकूलन को सक्षम करने से विद्युत की बचत होती है | ||
* पूरी तरह से | * पूरी तरह से गतिशील तर्क शक्ति को बचाने के लिए घड़ी को रोकने की अनुमति देता है | ||
=== घड़ी की विशेषताएं === | === घड़ी की विशेषताएं === | ||
W65C02S को किसी भी सुविधाजनक | W65C02S को 1.8 और 5 वोल्ट (±5%) के बीच किसी भी सुविधाजनक आपूर्ति वोल्टेज (V<sub>DD</sub>) पर संचालित किया जा सकता है। [[डेटा शीट]] एसी विशेषताओं की तालिका 5V पर 14 मेगाहर्ट्ज, 3.3 V या 3 V पर 8 मेगाहर्ट्ज, 2.5 V पर 4 मेगाहर्ट्ज और 1.8 V पर 2 मेगाहर्ट्ज पर परिचालन विशेषताओं को सूचीबद्ध करती है। यह जानकारी पहले के डेटा शीट का एक आर्टिफैक्ट हो सकता है क्योंकि एक ग्राफ़ इंगित करता है कि सामान्य उपकरण एसी विशेषता तालिका द्वारा सुझाए गए उच्च गति पर संचालन करने में सक्षम हैं और 20 मेगाहर्ट्ज पर विश्वसनीय संचालन V<sub>DD</sub> के साथ आसानी से प्राप्य होना चाहिए और 5 वोल्ट पर यह मानते हुए कि सहायक हार्डवेयर इसे अनुमति देगा। | ||
मनमानी घड़ी दरों के लिए W65C02S समर्थन इसे ऐसी घड़ी का उपयोग करने की अनुमति देता है जो सिस्टम के किसी अन्य भाग के लिए आदर्श दर पर चलती है | मनमानी घड़ी दरों के लिए W65C02S समर्थन इसे ऐसी घड़ी का उपयोग करने की अनुमति देता है जो सिस्टम के किसी अन्य भाग के लिए आदर्श दर पर चलती है जैसे कि 13.5 मेगाहर्ट्ज (डिजिटल एसडीटीवी लूमा सैंपलिंग दर) 14.31818 मेगाहर्ट्ज (एनटीएससी रंग वाहक आवृत्ति × 4), 14.75 MHz (PAL वर्ग पिक्सेल), 14.7456 (बॉड रेट क्रिस्टल)आदि जब तक V<sub>DD</sub> आवृत्ति का समर्थन करने के लिए पर्याप्त है। डिजाइनर बिल मेन्श ने बताया है कि F<sub>MAX</sub> ऑफ-चिप कारकों से प्रभावित होता है जैसे माइक्रोप्रोसेसर के पिन पर कैपेसिटिव लोड। शॉर्ट सिग्नल ट्रैक्स और सबसे कम उपकरणों का उपयोग करके लोड को कम करने से F<sub>MAX</sub> को बढ़ाने में मदद मिलती है। पीएलसीसी और क्यूएफपी पैकेज में पीडीआईपी पैकेज की तुलना में कम पिन-टू-पिन कैपेसिटेंस होता है और [[मुद्रित सर्किट बोर्ड]] स्पेस के उपयोग में अधिक प्रभावकारी होता है। | ||
डब्ल्यूडीसी ने बताया है कि W65C02S की FPGA प्राप्तियों को सफलतापूर्वक 200 मेगाहर्ट्ज पर संचालित किया गया है। | डब्ल्यूडीसी ने बताया है कि W65C02S की FPGA प्राप्तियों को सफलतापूर्वक 200 मेगाहर्ट्ज पर संचालित किया गया है। | ||
== | === '''NMOS 6502 के साथ तुलना''' === | ||
=== बुनियादी वास्तुकला === | === बुनियादी वास्तुकला === | ||
हालांकि 65C02 को | हालांकि 65C02 को अधिकतर कम-शक्ति 6502 के रूप में माना जा सकता ह, यह मूल में पाए जाने वाले कई बगों को भी ठीक करता है और नए निर्देश जोड़ता है ऐसे मोड और सुविधाओं को संबोधित करता है जो प्रोग्रामर को छोटे और तेजी से निष्पादित प्रोग्राम लिखने में सहायता कर सकते हैं। यह अनुमान लगाया गया है कि औसत 6502 असेंबली लैंग्वेज प्रोग्राम को 65C02 पर 10 से 15 प्रतिशत छोटा बनाया जा सकता है और प्रदर्शन में समान सुधार देखा जा सकता है मोटे तौर पर किसी दिए गए कार्य को पूरा करने के लिए कम निर्देशों के उपयोग के माध्यम से मेमोरी एक्सेस से बचा जाता है।{{sfn|Wagner|1983|p=204}} | ||
=== गैर-दस्तावेजी निर्देश हटा दिए गए === | === गैर-दस्तावेजी निर्देश हटा दिए गए === | ||
Line 198: | Line 198: | ||
=== बग फिक्स === | === बग फिक्स === | ||
मूल 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 के सभी NMOS वेरिएंट में मौजूद है, एड्रेसिंग मोड#इंडेक्स्ड एब्सोल्यूट का उपयोग करते समय जंप निर्देश सम्मिलित करता है। इस एड्रेसिंग मोड में, लक्ष्य का पता <code>JMP</code> निर्देश एक ऑपरेंड होने के | एक बग जो 6502 के सभी NMOS वेरिएंट में मौजूद है, एड्रेसिंग मोड#इंडेक्स्ड एब्सोल्यूट का उपयोग करते समय जंप निर्देश सम्मिलित करता है। इस एड्रेसिंग मोड में, लक्ष्य का पता <code>JMP</code> निर्देश एक ऑपरेंड होने के अतिरिक्त मेमोरी, जंप वेक्टर से प्राप्त किया जाता है <code>JMP</code> निर्देश। उदाहरण के लिए, <code>JMP ($1234)</code> स्मृति स्थानों में मूल्य लाएगा {{mono|$1234}} (कम महत्वपूर्ण बाइट) और {{mono|$1235}} (सबसे महत्वपूर्ण बाइट) और उन मानों को प्रोग्राम काउंटर में लोड करें, जो तब प्रोसेसर को वेक्टर में संग्रहीत पते पर निष्पादन प्रचलित रखने का कारण बनेगा। | ||
बग तब प्रकट होता है जब वेक्टर पता समाप्त होता है {{mono|$FF}}, जो [[स्मृति पृष्ठ]] की सीमा है। इस विषय में, <code>JMP</code> लक्ष्य पते का सबसे महत्वपूर्ण बाइट प्राप्त करेगा {{mono|$00}} मूल पृष्ठ के | बग तब प्रकट होता है जब वेक्टर पता समाप्त होता है {{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}} | ||
एक बग की तुलना में अधिक निरीक्षण, NMOS 6502 के स्थिति रजिस्टर में (डी) ecimal ध्वज की स्थिति एक [[रीसेट (कंप्यूटिंग)]] या रुकावट के बाद अपरिभाषित है। इसका मतलब यह है कि अंकगणितीय परिचालनों से संबंधित किसी भी बग से बचने के लिए प्रोग्रामर को ध्वज को ज्ञात मान पर सेट करना होगा। नतीजतन, एक पाता है <code>CLD</code> निर्देश (स्पष्ट दशमलव) लगभग सभी 6502 [[इंटरप्ट हैंडलर]] में, साथ ही साथ रीसेट कोड में भी। 65C02 किसी भी बाधा या हार्डवेयर रीसेट के जवाब में स्टैक पर स्थिति रजिस्टर को धक्का देने के बाद स्वचालित रूप से इस ध्वज को साफ़ करता है, इस प्रकार प्रोसेसर को बाइनरी अंकगणितीय मोड में वापस रखता है।<ref name=differences/> | एक बग की तुलना में अधिक निरीक्षण, NMOS 6502 के स्थिति रजिस्टर में (डी) ecimal ध्वज की स्थिति एक [[रीसेट (कंप्यूटिंग)]] या रुकावट के बाद अपरिभाषित है। इसका मतलब यह है कि अंकगणितीय परिचालनों से संबंधित किसी भी बग से बचने के लिए प्रोग्रामर को ध्वज को ज्ञात मान पर सेट करना होगा। नतीजतन, एक पाता है <code>CLD</code> निर्देश (स्पष्ट दशमलव) लगभग सभी 6502 [[इंटरप्ट हैंडलर]] में, साथ ही साथ रीसेट कोड में भी। 65C02 किसी भी बाधा या हार्डवेयर रीसेट के जवाब में स्टैक पर स्थिति रजिस्टर को धक्का देने के बाद स्वचालित रूप से इस ध्वज को साफ़ करता है, इस प्रकार प्रोसेसर को बाइनरी अंकगणितीय मोड में वापस रखता है।<ref name=differences/> | ||
[[बाइनरी-कोडित दशमलव]] अंकगणितीय के दौरान, NMOS 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> | [[बाइनरी-कोडित दशमलव]] अंकगणितीय के दौरान, NMOS 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>, सभी NMOS वैरिएंट Addr पर दोहरा लेखन करेंगे, पहले Addr पर मिले वर्तमान मान को फिर से लिखेंगे और फिर संशोधित मान लिखेंगे। यदि Addr एक हार्डवेयर रजिस्टर है, तो यह व्यवहार कठिन-से-समाधान बग में परिणाम कर सकता है। यह तब हो सकता है जब हार्डवेयर रजिस्टर में मूल्य में परिवर्तन के लिए देख रहा हो और फिर एक क्रिया करता है, इस विषय में, यह दो क्रियाएं करेगा, एक मूल मूल्य के साथ और फिर नए मूल्य के साथ। 65C02 इसके | पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय, जैसे <code>INC ''addr''</code>, सभी NMOS वैरिएंट Addr पर दोहरा लेखन करेंगे, पहले Addr पर मिले वर्तमान मान को फिर से लिखेंगे और फिर संशोधित मान लिखेंगे। यदि Addr एक हार्डवेयर रजिस्टर है, तो यह व्यवहार कठिन-से-समाधान बग में परिणाम कर सकता है। यह तब हो सकता है जब हार्डवेयर रजिस्टर में मूल्य में परिवर्तन के लिए देख रहा हो और फिर एक क्रिया करता है, इस विषय में, यह दो क्रियाएं करेगा, एक मूल मूल्य के साथ और फिर नए मूल्य के साथ। 65C02 इसके अतिरिक्त Addr का दोहरा रीड करता है, उसके बाद सिंगल राइट करता है। | ||
इंडेक्सिंग एड्रेसिंग करते समय, यदि इंडेक्सिंग एक पृष्ठ सीमा को पार कर जाती है, तो सही पते तक पहुँचने से पहले सभी NMOS वेरिएंट एक अमान्य पते से पढ़ेंगे। जैसा कि R-M-W निर्देश के साथ होता है, अनुक्रमण के माध्यम से हार्डवेयर रजिस्टरों तक पहुँचने पर यह व्यवहार समस्याएँ पैदा कर सकता है। 65C02 ने इस समस्या को ठीक किया जब इंडेक्सिंग एक पृष्ठ सीमा को पार कर जाती है तो निर्देश ओपकोड का एक डमी रीड प्रदर्शन करके। हालाँकि, इस फिक्स ने एक नया बग पेश किया{{cn|date=November 2022}} जो तब होता है जब आधार पता एक समान पृष्ठ सीमा पर होता है (जिसका अर्थ है कि अनुक्रमण अगले पृष्ठ पर कभी नहीं जाएगा)। नए बग के साथ, अनुक्रमण से पहले आधार पते पर एक डमी रीड किया जाता है, जैसे कि <code>LDA $1200,X</code> एक डमी पढ़ेगा {{mono|$1200}} X के मान को जोड़े जाने से पहले {{mono|$1200}}. फिर से, यदि हार्डवेयर रजिस्टर पतों पर अनुक्रमण किया जाता है, तो इस बग का परिणाम अपरिभाषित व्यवहार हो सकता है। | इंडेक्सिंग एड्रेसिंग करते समय, यदि इंडेक्सिंग एक पृष्ठ सीमा को पार कर जाती है, तो सही पते तक पहुँचने से पहले सभी NMOS वेरिएंट एक अमान्य पते से पढ़ेंगे। जैसा कि R-M-W निर्देश के साथ होता है, अनुक्रमण के माध्यम से हार्डवेयर रजिस्टरों तक पहुँचने पर यह व्यवहार समस्याएँ पैदा कर सकता है। 65C02 ने इस समस्या को ठीक किया जब इंडेक्सिंग एक पृष्ठ सीमा को पार कर जाती है तो निर्देश ओपकोड का एक डमी रीड प्रदर्शन करके। हालाँकि, इस फिक्स ने एक नया बग पेश किया{{cn|date=November 2022}} जो तब होता है जब आधार पता एक समान पृष्ठ सीमा पर होता है (जिसका अर्थ है कि अनुक्रमण अगले पृष्ठ पर कभी नहीं जाएगा)। नए बग के साथ, अनुक्रमण से पहले आधार पते पर एक डमी रीड किया जाता है, जैसे कि <code>LDA $1200,X</code> एक डमी पढ़ेगा {{mono|$1200}} X के मान को जोड़े जाने से पहले {{mono|$1200}}. फिर से, यदि हार्डवेयर रजिस्टर पतों पर अनुक्रमण किया जाता है, तो इस बग का परिणाम अपरिभाषित व्यवहार हो सकता है। |
Revision as of 12:24, 8 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 माइक्रोप्रोसेसर लोकप्रिय nMOS- आधारित 8-बिट MOS टेक्नोलॉजी 6502 का उन्नत CMOS संस्करण है। 65C02 ने मूल 6502 में कई समस्याओं को ठीक किया और कुछ नए निर्देश जोड़े लेकिन इसकी मुख्य विशेषता समान गति से चलने वाले मूल 6502 की तुलना में 10 से 20 गुना कम विद्युत का उपयोग करना था। कम विद्युत की खपत ने 65C02 को औद्योगिक सेटिंग्स में पोर्टेबल कंप्यूटर भूमिकाओं और माइक्रोकंट्रोलर सिस्टम में उपयोगी बना दिया। इसका उपयोग कुछ घरेलू कंप्यूटरों के साथ-साथ अंतः स्थापित प्रणाली अनुप्रयोगों में किया गया है जिसमें मेडिकल-ग्रेड इम्प्लांटेड डिवाइस सम्मिलित हैं।
डब्ल्यूडीसी 65C02 का विकास 1981 में प्रारम्भ हुआ[lower-alpha 1] 1983 की प्रारम्भ में प्रचलित किए गए नमूनों के साथ।[lower-alpha 2] 65C02 को आधिकारिक तौर पर कुछ समय बाद प्रचलित किया गया था। डब्ल्यूडीसी ने सिनरटेक, एनसीआर, जीटीई और रॉकवेल सेमीकंडक्टर को डिजाइन का लाइसेंस दिया। रॉकवेल की प्राथमिक रुचि एम्बेडेड मार्केट में थी और इस भूमिका में सहायता के लिए कई नए कमांड जोड़े जाने के लिए कहा। इन्हें बाद में बेसलाइन संस्करण में वापस कॉपी किया गया था और जिस बिंदु पर डब्ल्यूडीसी ने W65C02 बनाने के लिए अपने स्वयं के दो नए आदेश जोड़े। सान्यो ने बाद में डिजाइन को भी लाइसेंस दिया और सिएको एप्सन ने HuC6280 के रूप में एक और संशोधित संस्करण का उत्पादन किया।
प्रारम्भिक संस्करण 40-पिन डीआईपी पैकेजिंग का उपयोग करते थे और मूल एनएमओएस संस्करणों की गति से मेल खाते हुए 1, 2 और 4 मेगाहर्ट्ज संस्करणों में उपलब्ध थे। बाद के संस्करणों को PLCC और QFP पैकेजों के साथ-साथ PDIP में और बहुत अधिक क्लॉक स्पीड रेटिंग के साथ तैयार किया गया था। डब्ल्यूडीसी के वर्तमान संस्करण 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 तक उत्पादन संस्करण है , और PDIP , PLCC और QFP पैकेज में उपलब्ध है। अधिकतम आधिकारिक तौर पर समर्थित Ø2 (प्राथमिक) घड़ी की गति 5 वोल्ट पर संचालित होने पर 14 मेगाहर्ट्ज होती है, जो -14 भाग संख्या प्रत्यय द्वारा इंगित की जाती है (शौकिया लोगों ने 65C02 होमब्रू सिस्टम विकसित किए हैं जो आधिकारिक रेटिंग से तेज़ी से चलते हैं)। "एस" पदनाम इंगित करता है कि भाग में पूरी तरह से स्थिर कोर है और एक विशेषता जो Ø2 को धीमा करने या डेटा की कोई हानि के बिना उच्च या निम्न स्थिति में पूरी तरह से बंद करने की अनुमति देती है।[6] CMOS में लागू नहीं किए गए विशिष्ट माइक्रोप्रोसेसरों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे।
|
सामान्य तर्क विशेषताएं
- 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 मेगाहर्ट्ज पर संचालित किया गया है।
NMOS 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 के सभी NMOS वेरिएंट में मौजूद है, एड्रेसिंग मोड#इंडेक्स्ड एब्सोल्यूट का उपयोग करते समय जंप निर्देश सम्मिलित करता है। इस एड्रेसिंग मोड में, लक्ष्य का पता JMP
निर्देश एक ऑपरेंड होने के अतिरिक्त मेमोरी, जंप वेक्टर से प्राप्त किया जाता है JMP
निर्देश। उदाहरण के लिए, JMP ($1234)
स्मृति स्थानों में मूल्य लाएगा $1234 (कम महत्वपूर्ण बाइट) और $1235 (सबसे महत्वपूर्ण बाइट) और उन मानों को प्रोग्राम काउंटर में लोड करें, जो तब प्रोसेसर को वेक्टर में संग्रहीत पते पर निष्पादन प्रचलित रखने का कारण बनेगा।
बग तब प्रकट होता है जब वेक्टर पता समाप्त होता है $FF, जो स्मृति पृष्ठ की सीमा है। इस विषय में, JMP
लक्ष्य पते का सबसे महत्वपूर्ण बाइट प्राप्त करेगा $00 मूल पृष्ठ के अतिरिक्त {{Mono|$00}नए पृष्ठ का }। इस तरह JMP ($12FF)
पर लक्ष्य पते का कम से कम महत्वपूर्ण बाइट प्राप्त होगा $12FF और लक्षित पते का सबसे महत्वपूर्ण बाइट $1200 इसके अतिरिक्त $1300. 65C02 ने इस समस्या को ठीक किया।[2]
एक बग की तुलना में अधिक निरीक्षण, NMOS 6502 के स्थिति रजिस्टर में (डी) ecimal ध्वज की स्थिति एक रीसेट (कंप्यूटिंग) या रुकावट के बाद अपरिभाषित है। इसका मतलब यह है कि अंकगणितीय परिचालनों से संबंधित किसी भी बग से बचने के लिए प्रोग्रामर को ध्वज को ज्ञात मान पर सेट करना होगा। नतीजतन, एक पाता है CLD
निर्देश (स्पष्ट दशमलव) लगभग सभी 6502 इंटरप्ट हैंडलर में, साथ ही साथ रीसेट कोड में भी। 65C02 किसी भी बाधा या हार्डवेयर रीसेट के जवाब में स्टैक पर स्थिति रजिस्टर को धक्का देने के बाद स्वचालित रूप से इस ध्वज को साफ़ करता है, इस प्रकार प्रोसेसर को बाइनरी अंकगणितीय मोड में वापस रखता है।[10]
बाइनरी-कोडित दशमलव अंकगणितीय के दौरान, NMOS 6502 अंतर्निहित बाइनरी अंकगणित के परिणाम को प्रतिबिंबित करने के लिए (N) नकारात्मक, o(V) erflow और (Z) ero फ़्लैग्स को अपडेट करेगा, अर्थात, फ़्लैग्स पहले की गणना किए गए परिणाम को दर्शा रहे हैं प्रोसेसर दशमलव सुधार कर रहा है। इसके विपरीत, 65C02 अंकगणित निर्देश के अनुसार अतिरिक्त घड़ी चक्र की कीमत पर, दशमलव अंकगणित के परिणाम के अनुसार इन झंडों को सेट करता है।[10]
पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय, जैसे INC addr
, सभी NMOS वैरिएंट Addr पर दोहरा लेखन करेंगे, पहले Addr पर मिले वर्तमान मान को फिर से लिखेंगे और फिर संशोधित मान लिखेंगे। यदि Addr एक हार्डवेयर रजिस्टर है, तो यह व्यवहार कठिन-से-समाधान बग में परिणाम कर सकता है। यह तब हो सकता है जब हार्डवेयर रजिस्टर में मूल्य में परिवर्तन के लिए देख रहा हो और फिर एक क्रिया करता है, इस विषय में, यह दो क्रियाएं करेगा, एक मूल मूल्य के साथ और फिर नए मूल्य के साथ। 65C02 इसके अतिरिक्त Addr का दोहरा रीड करता है, उसके बाद सिंगल राइट करता है।
इंडेक्सिंग एड्रेसिंग करते समय, यदि इंडेक्सिंग एक पृष्ठ सीमा को पार कर जाती है, तो सही पते तक पहुँचने से पहले सभी NMOS वेरिएंट एक अमान्य पते से पढ़ेंगे। जैसा कि R-M-W निर्देश के साथ होता है, अनुक्रमण के माध्यम से हार्डवेयर रजिस्टरों तक पहुँचने पर यह व्यवहार समस्याएँ पैदा कर सकता है। 65C02 ने इस समस्या को ठीक किया जब इंडेक्सिंग एक पृष्ठ सीमा को पार कर जाती है तो निर्देश ओपकोड का एक डमी रीड प्रदर्शन करके। हालाँकि, इस फिक्स ने एक नया बग पेश किया[citation needed] जो तब होता है जब आधार पता एक समान पृष्ठ सीमा पर होता है (जिसका अर्थ है कि अनुक्रमण अगले पृष्ठ पर कभी नहीं जाएगा)। नए बग के साथ, अनुक्रमण से पहले आधार पते पर एक डमी रीड किया जाता है, जैसे कि LDA $1200,X
एक डमी पढ़ेगा $1200 X के मान को जोड़े जाने से पहले $1200. फिर से, यदि हार्डवेयर रजिस्टर पतों पर अनुक्रमण किया जाता है, तो इस बग का परिणाम अपरिभाषित व्यवहार हो सकता है।
यदि एक NMOS 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)
उन सभी निर्देशों के लिए जो अनुक्रमित अप्रत्यक्ष और अप्रत्यक्ष अनुक्रमित मोड का उपयोग करते थे, सूचकांक रजिस्टरों को मुक्त करते थे।[11]
6502 का JMP
निर्देश में एक अनूठा (6502 निर्देशों के बीच) एड्रेसिंग मोड था जिसे पूर्ण अप्रत्यक्ष के रूप में जाना जाता है जो किसी दिए गए मेमोरी पते से 16-बिट मान पढ़ता है और फिर उस 16-बिट मान में पते पर कूद जाता है। उदाहरण के लिए, यदि स्मृति स्थान $A000 के पास $34 और $A001 के पास $12 है, JMP ($A000)
उन दो बाइट्स को पढ़ेगा, मूल्य का निर्माण करेगा $1234, और फिर उस स्थान पर जाएं।
अप्रत्यक्ष संबोधन के लिए एक सामान्य उपयोग शाखा तालिकाओं का निर्माण करना है, सबरूटीन्स के लिए प्रवेश बिंदुओं की एक सूची जिसे एक इंडेक्स का उपयोग करके एक्सेस किया जा सकता है। उदाहरण के लिए, एक डिवाइस ड्राइवर प्रवेश बिंदुओं को सूचीबद्ध कर सकता है OPEN
, CLOSE
, READ
, आदि एक टेबल में $A000. READ
तीसरी प्रविष्टि है, शून्य अनुक्रमित है, और प्रत्येक पते को कॉल करने के लिए 16-बिट्स की आवश्यकता होती है READ
कोई कुछ इसी तरह का उपयोग करेगा JMP ($A004)
. यदि ड्राइवर अपडेट किया गया है और सबरूटीन कोड मेमोरी में चलता है, तो कोई भी मौजूदा कोड तब तक काम करेगा जब तक पॉइंटर्स की तालिका बनी रहती है $A000.
65C02 ने नया अनुक्रमित पूर्ण अप्रत्यक्ष मोड जोड़ा जिसने शाखा तालिकाओं के उपयोग को आसान बना दिया। इस मोड ने एक्स रजिस्टर के मूल्य को पूर्ण पते में जोड़ा और परिणामी स्थान से 16-बिट पता लिया। उदाहरण के लिए, एक्सेस करने के लिए READ
ऊपर दी गई तालिका से कार्य करता है, तब कोई X में 4 संग्रहीत करेगा JMP ($A000,X)
. पहुँच की यह शैली शाखा तालिकाओं तक पहुँच को सरल बनाती है क्योंकि एकल आधार पते का उपयोग 8-बिट ऑफ़सेट के संयोजन में किया जाता है।[11]अनुक्रमित अप्रत्यक्ष मोड का उपयोग करके NMOS संस्करण में इसे प्राप्त किया जा सकता है, लेकिन केवल तभी जब तालिका शून्य पृष्ठ में हो, एक सीमित संसाधन। इन्हें शून्य पृष्ठ के बाहर बनाने की अनुमति देने से न केवल इस संसाधन की मांग कम हुई, बल्कि रोम में तालिकाओं के निर्माण की भी अनुमति मिली।
नए और संशोधित निर्देश
नए एड्रेसिंग मोड के अतिरिक्त , बेस मॉडल 65C02 ने नए निर्देशों का एक सेट भी जोड़ा।[12]
INC
औरDEC
बिना किसी पैरामीटर के अब संचायक को बढ़ाएँ या घटाएँ। मूल निर्देश सेट में यह एक अजीब निरीक्षण था, जिसमें केवल सम्मिलित थाINX
/DEX
,INY
/DEY
औरINC addr
/DEC addr
. कुछ असेंबलर वैकल्पिक रूपों का उपयोग करते हैंINA
/DEA
याINC A
/DEC A
.[12]STZ addr
, Addr में शून्य स्टोर करें। की आवश्यकता को प्रतिस्थापित करता हैLDA 0;STA addr
और संचायक के मान को बदलने की आवश्यकता नहीं है। जैसा कि अधिकांश कार्यक्रमों में यह कार्य सामान्य है, का उपयोग करनाSTZ
कोड आकार को कम कर सकते हैं, दोनों को समाप्त करकेLDA
के साथ-साथ संचायक के मूल्य को बचाने के लिए आवश्यक कोई भी कोड, आमतौर पर aPHA
PLA
जोड़ा।[13]PHX
,PLX
,PHY
,PLY
, X और Y रजिस्टरों को स्टैक से/में धकेलें और खींचें। पहले, केवल संचायक और स्थिति रजिस्टर में पुश और पुल निर्देश होते थे। X और Y को पहले संचायक में ले जाकर ही ढेर किया जा सकता हैTXA
याTYA
जिससे संचायक की सामग्री बदली जाती है, फिर उपयोग किया जाता हैPHA
.[14]BRA
, शाखा हमेशा। ए की तरह काम करता हैJMP
लेकिन अन्य शाखाओं की तरह 1-बाइट सापेक्ष पते का उपयोग करता है, एक बाइट बचाता है। गति अक्सर 3 चक्र निरपेक्ष के समान होती हैJMP
जब तक कि एक पृष्ठ पार नहीं किया जाता है जो इसे बना देगाBRA
संस्करण 1 चक्र लंबा (4 चक्र)।[15] जैसा कि पता सापेक्ष है, यह पुनर्निधारणीय कोड लिखते समय भी उपयोगी होता है,[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) किया जाता है.A
. संक्षेप में TSB तार्किक प्रदर्शन करता हैOR
तार्किक के बादAND
और तार्किक परिणाम संग्रहीत करता हैOR
Addr पर जबकि TRB तार्किक परिणामों को संग्रहीत करता हैAND
Addr पर। दोनों ही स्थितियों में स्थिति रजिस्टर में Z फ़्लैग का परिणाम दर्शाता है.A AND addr
Addr की सामग्री बदलने से पहले। टीआरबी और टीएसबी इस प्रकार निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं, अनिवार्य रूप से संयोजन करते हैंBIT
कम्प्यूटेशनल परिवर्तनों को बचाने के लिए अतिरिक्त चरणों के साथ निर्देश लेकिन एक तरह से जो प्रभावित मूल्य की स्थिति को बदलने से पहले रिपोर्ट करता है।[2]
रॉकवेल के परिवर्तनों ने किसी भी बिट को सीधे सेट करने और परीक्षण करने के लिए और परीक्षण, स्पष्ट और शाखा को एक ही ऑपकोड में संयोजित करने के लिए अधिक बिट हेरफेर निर्देश जोड़े। रॉकवेल के R65C00 परिवार में प्रारम्भ से ही नए निर्देश उपलब्ध थे[16] लेकिन मूल 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 में इंटरप्ट कोड को लिख कर लिखा जा सकता है WAI
के तुरंत बाद a JSR
या JMP
हैंडलर को। जब WAI
का सामना करना पड़ा प्रोसेसिंग बंद हो गई और प्रोसेसर लो-पावर मोड में चला गया। जब व्यवधान प्राप्त हुआ तो उसने तुरंत प्रक्रिया की JSR
और अनुरोध को संभाला।
प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में रुकावट लूप के निर्देशों में से एक के बीच में आ सकती है और हैंडलर से लौटने के बाद इसे फिर से प्रारम्भ करने की अनुमति देने के लिए प्रोसेसर अपने स्थान को बचाने के लिए एक चक्र खर्च करता है। साथ WAI
प्रोसेसर एक ज्ञात स्थान पर कम-शक्ति स्थिति में प्रवेश करता है जहां सभी निर्देशों को पूरा करने की गारंटी दी जाती है इसलिए जब व्यवधान आता है तो यह संभवतः एक निर्देश को बाधित नहीं कर सकता है और प्रोसेसर बिना चक्र बचत स्थिति खर्च किए सुरक्षित रूप से प्रचलित रह सकता है।
65SC02
65SC02 बिना किसी निर्देश के डब्ल्यूडीसी 65C02 का एक प्रकार है।[17]== 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 मेगाहर्ट्ज)[18]
- टाइमटॉप द्वारा गेमकिंग हैंडहेल्ड (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 2.5 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).
- ↑ 11.0 11.1 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.
- ↑ Wagner 1983, pp. 200–201.
- ↑ "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