6502 এবং 6522 মিনিমাল কম্পিউটার (Arduino MEGA সহ) পার্ট 2: 4 ধাপ
6502 এবং 6522 মিনিমাল কম্পিউটার (Arduino MEGA সহ) পার্ট 2: 4 ধাপ
Anonim
6502 এবং 6522 মিনিমাল কম্পিউটার (আরডুইনো মেগা সহ) পার্ট 2
6502 এবং 6522 মিনিমাল কম্পিউটার (আরডুইনো মেগা সহ) পার্ট 2

আমার আগের নির্দেশাবলী থেকে অনুসরণ করে, আমি এখন 6502 একটি স্ট্রিপ বোর্ডে রেখেছি এবং 6522 ভার্সেটাইল ইন্টারফেস অ্যাডাপ্টার (ভিআইএ) যুক্ত করেছি। আবার, আমি 6522 এর একটি WDC সংস্করণ ব্যবহার করছি, কারণ এটি তাদের 6502 এর জন্য একটি নিখুঁত ম্যাচ। এই নতুন চিপগুলি কেবল মূল MOS সংস্করণের তুলনায় অনেক কম শক্তি ব্যবহার করে না, বরং সেগুলি ধীর গতিতে চালানো যেতে পারে বা এমনকি এর মধ্য দিয়ে যেতে পারে কোন সমস্যা ছাড়াই একটি প্রোগ্রাম।

আরডুইনো প্রোগ্রামটি মূলত বেন ইটার (যার ইউটিউবে অনেক ভিডিও রয়েছে) লিখেছিলেন এবং এই ফলাফলটি অর্জনের জন্য আমার দ্বারা সংশোধন করা হয়েছে।

সরবরাহ

1 x WDC W65C02 প্রসেসর

1 x WDC W65C22 বহুমুখী ইন্টারফেস অ্যাডাপ্টার

1 x 74HC00N IC (Quad 2-input NAND gate) বা অনুরূপ

1 x 10cm চওড়া (35 লাইন) স্ট্রিপ বোর্ড

2 x 40 পিন DIL সকেট

1 x 14 পিন DIL সকেট

পিসিবি হেডার পিন 2.54 মিমি

পিসিবি হেডার সকেট 2.54 মিমি

1 x 12mm মোমেন্টারি ট্যাকটাইল পুশ বোতাম সুইচ PCB মাউন্ট করা SPST বা অনুরূপ

1 x 1K প্রতিরোধক

1 x 3K3 প্রতিরোধক

2 x 0.1 uF সিরামিক ক্যাপাসিটার

1 x 8 ওয়ে ওয়াটার লাইট মার্কি 5 মিমি লাল LED

সংযোগের জন্য বিভিন্ন রঙের তার

8 পুরুষ - পুরুষ লিঙ্ক তারের

ধাপ 1: সার্কিট বোর্ড

সার্কিট বোর্ড
সার্কিট বোর্ড
সার্কিট বোর্ড
সার্কিট বোর্ড

সার্কিট বোর্ডটি বেশ কমপ্যাক্ট এবং নিচের দিকটি সরাসরি Arduino MEGA তে প্লাগ করে। এটি অর্জনের জন্য, বোর্ডের নীচে সোল্ডার করার আগে পিনগুলি প্লাস্টিকের ধারকদের মধ্যে যতটা সম্ভব ধাক্কা দেওয়া হয়। এর জন্য লম্বা পিন ব্যবহার করা যেত, কিন্তু স্ট্যান্ডার্ড পিনের মানে হল যে বোর্ডটি MEGA এর উপরে দৃ firm়ভাবে থাকে।

আমি 6502 এবং 6522 আইসিগুলিকে সারিবদ্ধ করেছি যাতে তারা মেগা সংযোগের জন্য স্ট্রিপ বোর্ড ট্র্যাক ব্যবহার করে। আইসির অধীনে লুকানো 6502 এর জন্য কিছু সংযোগ রয়েছে। বোর্ড তৈরির সময়, প্রথম কাজটি ছিল 16 টি স্ট্রিপ কাটা যা Arduino এর ডাবল সারি সকেটের সাথে সংযুক্ত হবে। বাইরের 2 টি কাটার দরকার নেই কারণ 5v এবং Gnd উভয় পাশে রয়েছে। নীচের দিকে 18 পিনের 2 সারিতে পরবর্তী সোল্ডার এবং উপরের দিকে 18 টি সকেটের 2 সারি।

তারপরে ডিআইএল সকেটগুলি জায়গায় বিক্রি করা হয়েছিল এবং তাদের মধ্যে ট্র্যাকগুলি কাটা হয়েছিল। আমি 74VC00 এর পিন 14 টি 5V এর মতো একই ট্র্যাকে রেখে একটি সংযোগ সংরক্ষণ করতে পারতাম। আমি কেবল তখনই ট্র্যাক কাটলাম যখন আমি নিশ্চিত ছিলাম যে আমি সংযোগকারী তারগুলি সোল্ডার করার সময় তাদের প্রয়োজন হবে। যাইহোক, জিনিসগুলি সর্বদা পরিকল্পনায় যায় না, আমি মূলত Arduino এর পিন 2, 3 এবং 7 ব্যবহার করে পূর্ববর্তী রুটি বোর্ড থেকে স্ট্রিপ বোর্ড ডিজাইন করেছি, কিন্তু এগুলি স্ট্রিপ বোর্ডের ছিদ্রগুলির সাথে সামঞ্জস্যপূর্ণ নয়, তাই ব্যবহার করতে হয়েছিল পিন 18, 31 এবং 37 বাধা, তাই 18, 19, 20 বা 21 পিন ব্যবহার করতে হবে যা করে। সৌভাগ্যবশত এই 4 টি পিন স্ট্রিপ বোর্ডের ছিদ্রগুলির সাথে লাইন করে এবং সবকিছু কম্প্যাক্ট রাখে। পিন 18 অন্যান্য সমস্ত তারের থেকেও দূরে।

আপনিও লক্ষ্য করতে পারেন যে আমার সম্পূর্ণ করা বোর্ডটি আমার চিত্রের মতো নয়। এর কারণ আমি অন্য কারো ডায়াগ্রাম ফলো করছিলাম। অতএব 74HC00 এর সাথে সংযোগ। আমি Gnd এবং 5v এর জন্য একটি পাওয়ার LED এবং অতিরিক্ত 2 সারি সকেটের পাশাপাশি আরও কয়েকটি ক্যাপাসিটার যুক্ত করেছি।

আমি 2 টি ডেটা সকেট সংযুক্ত করতে পারতাম, কিন্তু এর অর্থ বোর্ডকে অতিক্রম করে অনেক বেশি তারের। আমি একটি অস্থায়ী পরিমাপ হিসাবে এটি করার জন্য 8 টি লিঙ্ক তারের জন্য বেছে নিয়েছি।

6522 পোর্ট এ এবং বি তাদের ট্র্যাকগুলিতে সকেট বিক্রি করেছে যাতে LED মার্কগুলি সহজেই ertedোকানো যায়।

রুটি বোর্ডের সংস্করণের তুলনায় এখন অনেক কম তার রয়েছে।

ধাপ 2: প্রোগ্রামিং তত্ত্ব

প্রোগ্রামিং তত্ত্ব
প্রোগ্রামিং তত্ত্ব

6522 এর দুটি I/O পোর্ট এবং অন্যান্য অনেক বৈশিষ্ট্য রয়েছে, কিন্তু A এবং B পোর্টগুলি সহজেই অ্যাক্সেসযোগ্য। পোর্টে ডেটা আউটপুট করার জন্য, ডেটা ডাইরেকশন রেজিস্টার (ডিডিআর) সেই অনুযায়ী সেট করতে হবে এবং ডেটা নিজেই বন্দরে পাঠানো হবে।

উপরের সেট আপের সাথে, 6522 $ E000 এ অবস্থিত।

পোর্ট B তে ডেটা আউটপুট করার জন্য, $ E002 এ DDR $ FF (255 - সমস্ত আউটপুট) এ সেট করা হয় এবং ডেটা E000 ডলারে পাঠানো হয়।

পোর্ট A তে ডেটা আউটপুট করার জন্য, $ E003 এ DDR $ FF (255 - সমস্ত আউটপুট) এ সেট করা হয় এবং ডেটা $ E001 এ পাঠানো হয়।

নীচের কোডটি 6502 A রেজিস্টারে $ FF লোড করে এবং এটি $ E002 এ DDR B- এ লিখে। এটি তখন $ 55 লোড করে এবং এটি ORB- এ লিখে। কোডটি ঘোরানো হয় ($ AA প্রদান করে) এবং ORB- কে লেখা হয়। প্রোগ্রাম টিপি $ 1005 পিছনে লাফ দেয় এবং অবিরাম পুনরাবৃত্তি করে। দ্রষ্টব্য: ডিডিআর শুধুমাত্র একবার আরম্ভ করা প্রয়োজন।

ঠিকানা হেক্সডাম্প বিসর্জন

$ 1000 a9 ff LDA #$ ff $ 1002 8d 02 e0 STA $ e002 $ 1005 a9 55 LDA #$ 55 $ 1007 8d 00 e0 STA $ e000 $ 100a 6a ROR A $ 100b 8d 00 e0 STA $ e000 $ 100e 4c 05 10 JMP $ 1005

বাইনারিতে $ 55 হল 010101010 এবং $ AA হল 10101010 যা LEDs কে 4 বিকল্প, 4 বন্ধ করে দেয়।

দ্রুত এবং নোংরা সমাধান:

74HC00 (Quad 2 input NAND Gate) কে 74HC08 (Quad 2 input AND Gate) দিয়ে প্রতিস্থাপন করুন এবং 6522 এখন $ E000 এর পরিবর্তে $ 6000 এ অবস্থিত। এটি 32র্ধ্ব 32K থেকে 6502 এর ঠিকানাযোগ্য মেমরির নিম্ন 32K এ স্থানান্তরিত করে।

ধাপ 3: Arduino প্রোগ্রাম এবং আউটপুট

আরডুইনো প্রোগ্রাম এবং আউটপুট
আরডুইনো প্রোগ্রাম এবং আউটপুট

যেহেতু 6502 থেকে পড়ার জন্য কোন RAM নেই, Arduino এটি পড়ার জন্য প্রোগ্রাম সরবরাহ করছে। যখন পিন 18 এ একটি ঘড়ির পালস সনাক্ত করা হয়, তখন Arduino ডেটা বাসে প্রোগ্রাম ডেটা রাখে (Arduino পিন 39, 41, 43, 45, 47, 49, 51 এবং 53)। 6502 তার নিজস্ব ঠিকানা তৈরি করে যা শুধুমাত্র Arduino দ্বারা 22 থেকে 52 নম্বর পিনগুলিতে পর্যবেক্ষণ করা হয়। Arduino 37 নম্বর পিনে ঘড়ির পালসও সরবরাহ করছে। 6502 এর R/W লাইন পিন 31 এ পর্যবেক্ষণ করা হয়।

যেহেতু Arduino ডেটা সরবরাহ করছে, এখন পর্যন্ত VIA থেকে 6502 ডেটা ইনপুট করা সম্ভব হয়নি (যদি না আপনি ভাল জানেন)।

Arduino প্রোগ্রাম নিচে এবং সিরিয়াল মনিটর থেকে একটি নমুনা আউটপুট উপরে।

ধাপ 4: উপসংহার

আবার আমি দেখানোর চেষ্টা করেছি কিভাবে একটি ন্যূনতম "6502 কম্পিউটার" সেট আপ করা যায়।

এই পর্যায়ে 6502 এখনও এটি চালানোর জন্য একটি প্রোগ্রাম এবং একটি ঘড়ির পালস সরবরাহ করার জন্য Arduino এর উপর নির্ভর করছে।

এটি যখন আমি রুটি বোর্ডে সেট করেছি তার চেয়ে এটি এক ধাপ এগিয়ে।

আমি এই সময় 74HC373 ব্যবহার করিনি কিন্তু ডেটা আউটপুট ল্যাচ করার জন্য আরো জটিল 6522। এছাড়াও 6522 এর দুটি I/O পোর্ট রয়েছে।

আমি কিছু SRAM বা EEPROM ইনস্টল করে এই প্রকল্পটিকে আরও এগিয়ে নিয়ে যেতে চাই।

প্রস্তাবিত: