डब्ल्यूडीसी 65C02: Difference between revisions

From Vigyanwiki
No edit summary
Line 77: Line 77:
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 एक 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 कोर को एप्लिकेशन-विशिष्ट एकीकृत सर्किट (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> सीएमओएस में लागू नहीं किए गए विशिष्ट माइक्रोप्रक्रमकों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे।


{| class="infobox" style="font-size:88%;width:27em;"
{| class="infobox" style="font-size:88%;width:27em;"
Line 215: Line 215:
पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय जैसे<code>INC ''addr''</code>सभी एनएमओएस प्रकार Addr पर दोहरा लेखन करेंगे पहले Addr पर मिले वर्तमान मान को फिर से लिखेंगे और फिर संशोधित मान लिखेंगे। यदि Addr एक हार्डवेयर रजिस्टर है तो यह व्यवहार कठिन-से-समाधान बग में परिणाम कर सकता है। यह तब हो सकता है जब हार्डवेयर रजिस्टर में मूल्य में परिवर्तन के लिए देख रहा हो और फिर एक क्रिया करता है इस विषय में यह दो क्रियाएं करेगा एक मूल मूल्य के साथ और फिर नए मूल्य के साथ। 65C02 इसके अतिरिक्त  Addr का दोहरा रीड करता है उसके बाद एकल अधिकार करता है।
पढ़ने-संशोधित-लिखने (आर-एम-डब्ल्यू) निर्देश निष्पादित करते समय जैसे<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}}. फिर से यदि हार्डवेयर रजिस्टर पतों पर अनुक्रमण किया जाता है तो इस बग का परिणाम अपरिभाषित व्यवहार हो सकता है।
सूचकांक पता अभिगमन करते समय यदि सूचकांक एक पृष्ठ सीमा को पार कर जाती है तो सही पते तक पहुँचने से पहले सभी एनएमओएस प्रकार एक अमान्य पते से पढ़ेंगे। जैसा कि 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 227: Line 227:
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>
अप्रत्यक्ष संबोधन के लिए एक सामान्य उपयोग [[शाखा तालिका]]ओं का निर्माण करना है [[सबरूटीन]] के लिए प्रवेश बिंदुओं की एक सूची जिसे एक सूचकांक का उपयोग करके प्रवेश किया जा सकता है। उदाहरण के लिए एक [[डिवाइस ड्राइवर|उपकरण ड्राइवर]] {{mono|$A000}} पर तालिका में<code>OPEN,CLOSE</code>आदि के लिए प्रवेश बिंदुओं को सूचीबद्ध कर सकता है तीसरी प्रविष्टि है शून्य अनुक्रमित और प्रत्येक पते के लिए 16-बिट्स की आवश्यकता होती है इसलिए कॉल करने के लिए कुछ इसी तरह का उपयोग किया जाएगा। यदि ड्राइवर अपडेट किया गया है और सबरूटीन कोड स्मृति में चला जाता है तो कोई भी स्थित कोड तब तक काम करेगा जब तक पॉइंटर्स  {{mono|$A000}} की तालिका बनी रहती है।<code>READ READ READ JMP ($A004)</code>


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 ने नया अनुक्रमित पूर्ण अप्रत्यक्ष प्रणाली जोड़ी जिसने शाखा तालिकाओं के उपयोग को आसान बना दिया। इस प्रणाली ने एक्स रजिस्टर के मूल्य को पूर्ण पते में जोड़ा और परिणामी स्थान से 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>अनुक्रमित अप्रत्यक्ष प्रणाली का उपयोग करके एनएमओएस संस्करण में इसे प्राप्त किया जा सकता है लेकिन केवल तभी जब एक सीमित संसाधन तालिका शून्य पृष्ठ में हो। इन्हें शून्य पृष्ठ के बाहर बनाने की अनुमति देने से न केवल इस संसाधन की मांग कम हुई बल्कि रोम में तालिकाओं के निर्माण की भी अनुमति मिली।
Line 271: Line 271:
उपरोक्त नए आदेशों के अतिरिक्त डब्ल्यूडीसी ने भी जोड़ा<code>STP</code>और<code>WAI</code>कम-शक्ति प्रणाली  का समर्थन करने के निर्देश।
उपरोक्त नए आदेशों के अतिरिक्त डब्ल्यूडीसी ने भी जोड़ा<code>STP</code>और<code>WAI</code>कम-शक्ति प्रणाली  का समर्थन करने के निर्देश।


{{code|STP}}प्रक्रमक को STop करें हार्डवेयर रीसेट प्रचलित होने तक सभी प्रसंस्करण को रोक दें। इसका उपयोग किसी तंत्र को सुलाने के लिए किया जा सकता है और फिर इसे रीसेट के साथ तेजी से जगाया जा सकता है। प्राय: इसके लिए मुख्य स्मृति को बनाए रखने के लिए कुछ बाहरी तंत्र की आवश्यकता होती है और इसका व्यापक रूप से उपयोग नहीं किया जाता था।
{{code|STP}}प्रक्रमक को STop करें हार्डवेयर रीसेट प्रचलित होने तक सभी प्रसंस्करण को रोक दें। इसका उपयोग किसी तंत्र को सुलाने के लिए किया जा सकता है और फिर इसे रीसेट के साथ तेजी से जगाया जा सकता है। प्राय: इसके लिए मुख्य स्मृति को बनाए रखने के लिए कुछ बाहरी तंत्र की आवश्यकता होती है और इसका व्यापक रूप से उपयोग नहीं किया जाता था।


{{code|WAI}} का एक समान प्रभाव था कम-शक्ति प्रणाली में प्रवेश करना लेकिन इस निर्देश ने प्रक्रमक को एक अवरोध के स्वागत पर फिर से जगा दिया। पहले एक बाधा को संभालने में प्राय: एक लूप चलाने के लिए सम्मिलित होता था ताकि यह जांचा जा सके कि क्या कोई अवरोध प्राप्त है जिसे कभी-कभी "कताई" के रूप में जाना जाता है एक प्राप्त होने पर प्रकार की जांच करना और फिर प्रसंस्करण कोड पर कूदना। इसका तात्पर्य  यह था कि प्रक्रमक पूरी प्रक्रिया के दौरान चल रहा था तब भी जब कोई अवरोध नहीं आ रहा था।
{{code|WAI}} का एक समान प्रभाव था कम-शक्ति प्रणाली में प्रवेश करना लेकिन इस निर्देश ने प्रक्रमक को एक अवरोध के स्वागत पर फिर से जगा दिया। पहले एक बाधा को संभालने में प्राय: एक लूप चलाने के लिए सम्मिलित होता था ताकि यह जांचा जा सके कि क्या कोई अवरोध प्राप्त है जिसे कभी-कभी "कताई" के रूप में जाना जाता है एक प्राप्त होने पर प्रकार की जांच करना और फिर प्रसंस्करण कोड पर कूदना। इसका तात्पर्य  यह था कि प्रक्रमक पूरी प्रक्रिया के दौरान चल रहा था तब भी जब कोई अवरोध नहीं आ रहा था।


इसके विपरीत 65C02 में अवरोध कोड को a या संचालक द्वारा <code>WAI</code>तुरंत अनुसरण करके लिखा जा सकता है। जब सामना हुआ तो प्रसंस्करण बंद हो गया और प्रक्रमक कम-शक्ति प्रणाली में चला गया और जब व्यवधान प्राप्त हुआ तो इसने तुरंत अनुरोध को संसाधित किया गया। <code>JSRJMPWAIJSR</code>
इसके विपरीत 65C02 में अवरोध कोड को a या संचालक द्वारा <code>WAI</code>तुरंत अनुसरण करके लिखा जा सकता है। जब सामना हुआ तो प्रसंस्करण संवृत हो गया और प्रक्रमक कम-शक्ति प्रणाली में चला गया और जब व्यवधान प्राप्त हुआ तो इसने तुरंत अनुरोध को संसाधित किया गया। <code>JSRJMPWAIJSR</code>


प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में अवरोध लूप के निर्देशों में से एक के बीच में आ सकती है और संचालक से लौटने के बाद इसे फिर से प्रारम्भ करने की अनुमति देने के लिए प्रक्रमक अपने स्थान को बचाने के लिए एक चक्र खपत करता है। साथ {{code|WAI}}प्रक्रमक एक ज्ञात स्थान पर कम-शक्ति स्थिति में प्रवेश करता है जहां सभी निर्देशों को पूरा करने की आश्वासन दिया जाता है इसलिए जब व्यवधान आता है तो यह संभवतः एक निर्देश को बाधित नहीं कर सकता है और प्रक्रमक बिना चक्र बचत स्थिति खपत किए सुरक्षित रूप से प्रचलित रह सकता है।
प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में अवरोध लूप के निर्देशों में से एक के बीच में आ सकती है और संचालक से लौटने के बाद इसे फिर से प्रारम्भ करने की अनुमति देने के लिए प्रक्रमक अपने स्थान को बचाने के लिए एक चक्र खपत करता है। साथ {{code|WAI}}प्रक्रमक एक ज्ञात स्थान पर कम-शक्ति स्थिति में प्रवेश करता है जहां सभी निर्देशों को पूरा करने की आश्वासन दिया जाता है इसलिए जब व्यवधान आता है तो यह संभवतः एक निर्देश को बाधित नहीं कर सकता है और प्रक्रमक बिना चक्र बचत स्थिति खपत किए सुरक्षित रूप से प्रचलित रह सकता है।

Revision as of 11:48, 3 July 2023

W65c02s8p-14 lg.jpg
W65C02S microprocessor in a PDIP-40 package
General information
Launched1983; 41 years ago (1983)
Common manufacturer(s)
Performance
Max. CPU clock rate1 MHz to 14 MHz
History
PredecessorMOS Technology 6502

वेस्टर्न डिज़ाइन सेंटर (डब्ल्यूडीसी) 65C02 माइक्रो प्रक्रमक लोकप्रिय एनएमओएस - आधारित 8-बिट एमओएस तकनीकी 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] सीएमओएस में लागू नहीं किए गए विशिष्ट माइक्रोप्रक्रमकों में डायनेमिक कोर होते हैं और यदि वे कुछ न्यूनतम और अधिकतम निर्दिष्ट मानों के बीच लगातार क्लॉक नहीं किए जाते हैं तो वे अपनी आंतरिक रजिस्टर सामग्री (और इस प्रकार क्रैश) खो देंगे।

65C02 registers
15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 (बिट position)
Main registers
  A Accumulator
Index registers
  X X Index Register
  Y Y Index Register
0 0 0 0 0 0 0 1 SP Stack Pointer
Program counter
PC Program Counter
Status register
  N V - B D I Z C Status Register

सामान्य तर्क विशेषताएं

सिट्रोनिक्स ST2064B सूक्ष्म नियंत्रण का डाई फोटोग्राफ जो ऊपर दाईं ओर एम्बेडेड W65C02S कोर दिखा रहा है

तर्क सुविधाएँ

  • वेक्टर पुल (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 ($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 addrAddr में शून्य स्टोर करें। संचायक के मूल्य को बदलने की आवश्यकता नहीं है चूंकि यह कार्य अधिकांश कार्यक्रमों में आम है और कोड का आकार कम कर सकते हैं साथ ही संचायक के मूल्य को बचाने के लिए आवश्यक किसी भी कोड को समाप्त करके जोड़ा जाता है।[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 में बिट परीक्षण और घुमाव कार्यों में सुधार का योगदान दिया। डब्ल्यूडीसी ने बिट निर्देश में नए पता अभिगमन प्रणाली जोड़े जो 6502 में स्थित थे और साथ ही बिट फ़ील्ड के सुविधाजनक घुमाव के लिए दो नए निर्देश उपकरण वाहन चालक में एक सामान्य गतिविधि होती है।

BIT 65C02 में तुरन्त प्रणाली जोड़ता है और एक्स द्वारा अनुक्रमित शून्य पृष्ठ और एक्स पता अभिगमन द्वारा पूर्ण अनुक्रमित।[12] तुरन्त प्रणाली पता अभिगमन विशेष रूप से सुविधाजनक है क्योंकि यह पूरी तरह से गैर-विनाशकारी है। उदाहरण के लिए:

LDA $1234
बिट #%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बदल गया है। बिटटीआरबी और टीएसबी इस प्रकार निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं कम्प्यूटेशनल परिवर्तनों को बचाने के लिए अनिवार्य रूप से निर्देश को अतिरिक्त चरणों के साथ जोड़ते हैं लेकिन एक तरह से प्रभावित मूल्य की स्थिति को बदलने से पहले प्रतिवेदन करते हैं।

रॉकवेल के परिवर्तनों ने किसी भी बिट को सीधे सेट करने और परीक्षण करने के लिए और स्पष्ट शाखा को एक ही ऑपकोड में संयोजित करने के लिए अधिक बिट घुमाव निर्देश जोड़े। रॉकवेल के R65C00 परिवार में प्रारम्भ से ही नए निर्देश उपलब्ध थे[15] लेकिन मूल 65C02 विनिर्देश का हिस्सा नहीं था और डब्ल्यूडीसी या इसके अन्य लाइसेंसधारियों द्वारा बनाए गए संस्करणों में नहीं पाया गया। इन्हें बाद में आधारभूत डिज़ाइन में वापस कॉपी किया गया और बाद के डब्ल्यूडीसी संस्करणों में उपलब्ध कराया गया।

रॉकवेल-विशिष्ट निर्देश हैं:

  • एसएमबी बिट zp/आरएमबी बिट zpजीरो पेज बाइट zp में सेट या रीसेट (क्लियर) बिट नंबर बिट।
आरएमबी और एसएमबी का उपयोग बिट फ़ील्ड में अलग-अलग बिट्स (आरएमबी) या सेट (एसएमबी) को साफ़ करने के लिए किया जाता है प्रत्येक तीन निर्देशों के अनुक्रम को प्रतिस्थापित करता है। चूंकि आरएमबी और एसएमबी केवल जीरो पेज पता अभिगमन हैं तो ये निर्देश उपयोगिता में सीमित हैं और मुख्य रूप से उन प्रणालियों में महत्वपूर्ण हैं जिनमें उपकरण रजिस्टर शून्य पेज में स्थित हैं। निर्देश का बिट घटक हमेशा स्मरक के भाग के रूप में लिखा जाता है जैसे एसएमबी 1 $12जो बिट 1 को शून्य-पृष्ठ पते $12 में सेट करता है। कुछ असेंबलर बिट को निर्देश के ऑपरेंड के हिस्से के रूप में मानते हैं उदाहरण के लिएएसएमबी 1,$12जिसके पास इसे एक चर नाम या परिकलित संख्या द्वारा प्रतिस्थापित करने की अनुमति देने का लाभ है।[13]
  • बीबीआर बिट,offset,addrऔरBBS बिट#,offset,addr बिट सेट/रीसेट पर शाखा।
आरएमबी और एसएमबी के समान शून्य-पेज पता अभिगमन और सीमाएं लेकिन चयनित बिट स्पष्ट (बीबीआर) या सेट (बीबीएस) होने पर शाखाओं को जोड़ने के लिए। जैसा कि आरएमबी और एसएमबी के साथ होता है बीबीआर और बीबीएस तीन निर्देशों के अनुक्रम को प्रतिस्थापित करते हैं।[13]

कम-शक्ति प्रणाली

उपरोक्त नए आदेशों के अतिरिक्त डब्ल्यूडीसी ने भी जोड़ाSTPऔरWAIकम-शक्ति प्रणाली का समर्थन करने के निर्देश।

STPप्रक्रमक को STop करें हार्डवेयर रीसेट प्रचलित होने तक सभी प्रसंस्करण को रोक दें। इसका उपयोग किसी तंत्र को सुलाने के लिए किया जा सकता है और फिर इसे रीसेट के साथ तेजी से जगाया जा सकता है। प्राय: इसके लिए मुख्य स्मृति को बनाए रखने के लिए कुछ बाहरी तंत्र की आवश्यकता होती है और इसका व्यापक रूप से उपयोग नहीं किया जाता था।

WAI का एक समान प्रभाव था कम-शक्ति प्रणाली में प्रवेश करना लेकिन इस निर्देश ने प्रक्रमक को एक अवरोध के स्वागत पर फिर से जगा दिया। पहले एक बाधा को संभालने में प्राय: एक लूप चलाने के लिए सम्मिलित होता था ताकि यह जांचा जा सके कि क्या कोई अवरोध प्राप्त है जिसे कभी-कभी "कताई" के रूप में जाना जाता है एक प्राप्त होने पर प्रकार की जांच करना और फिर प्रसंस्करण कोड पर कूदना। इसका तात्पर्य यह था कि प्रक्रमक पूरी प्रक्रिया के दौरान चल रहा था तब भी जब कोई अवरोध नहीं आ रहा था।

इसके विपरीत 65C02 में अवरोध कोड को a या संचालक द्वारा WAIतुरंत अनुसरण करके लिखा जा सकता है। जब सामना हुआ तो प्रसंस्करण संवृत हो गया और प्रक्रमक कम-शक्ति प्रणाली में चला गया और जब व्यवधान प्राप्त हुआ तो इसने तुरंत अनुरोध को संसाधित किया गया। JSRJMPWAIJSR

प्रदर्शन में कुछ सुधार करने का यह अतिरिक्त लाभ था। कताई के विषय में अवरोध लूप के निर्देशों में से एक के बीच में आ सकती है और संचालक से लौटने के बाद इसे फिर से प्रारम्भ करने की अनुमति देने के लिए प्रक्रमक अपने स्थान को बचाने के लिए एक चक्र खपत करता है। साथ WAIप्रक्रमक एक ज्ञात स्थान पर कम-शक्ति स्थिति में प्रवेश करता है जहां सभी निर्देशों को पूरा करने की आश्वासन दिया जाता है इसलिए जब व्यवधान आता है तो यह संभवतः एक निर्देश को बाधित नहीं कर सकता है और प्रक्रमक बिना चक्र बचत स्थिति खपत किए सुरक्षित रूप से प्रचलित रह सकता है।

65SC02

65SC02 बिना किसी निर्देश के डब्ल्यूडीसी 65C02 का एक प्रकार है।[16]== 65C02 == के उल्लेखनीय उपयोग

एप्पल कंप्यूटर

वीडियो गेम कंसोल

अन्य उत्पाद

  • प्रणाली 64 होम कंप्यूटर के लिए टर्बोमास्टर प्रवेगक काडतूस (65C02 @ 4.09 मेगाहर्ट्ज)
  • एकोर्न बीबीसी माइक्रो होम कंप्यूटर के लिए ट्यूब से जुड़ा दूसरा प्रक्रमक (65C02 @ 3 मेगाहर्ट्ज)
  • कई समर्पित शतरंज कंप्यूटर यानी: मेफिस्टो एमएमवी, नोवाग सुपर नक्षत्र, निष्ठा अभिजात वर्ग और कई अन्य (4-20 मेगाहर्ट्ज

यह भी देखें

टिप्पणियाँ

  1. 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.
  2. 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.


संदर्भ

उद्धरण

  1. Koehn, Philipp (2 March 2018). "6502 Stack" (PDF).
  2. 2.0 2.1 2.2 2.3 2.4 Wagner 1983, p. 204.
  3. Taylor & Watford 1984, p. 174.
  4. "6502 CPU Projects in HDL (for FPGA)".
  5. "W65C02DB Developer Board".
  6. "W65C02S-14".
  7. Parker, Neil. "The 6502/65C02/65C816 Instruction Set Decoded". Neil Parker's Apple II page.
  8. Vardy, Adam (22 August 1995). "Extra Instructions Of The 65XX Series CPU".
  9. File:MCS650x Instruction Set.jpg
  10. 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. Clark, Bruce. "65C02 Opcodes".
  12. 12.0 12.1 12.2 Wagner 1983, p. 200.
  13. 13.0 13.1 13.2 13.3 Wagner 1983, p. 203.
  14. "W65C02S Datasheet" (PDF).
  15. Wagner 1983, p. 199.
  16. Zaks, Rodnay (1983). Programming the 6502. Sybex. p. 348. ISBN 0895881357.
  17. "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.


अग्रिम पठन


बाहरी संबंध