***Proyek ini masih dalam proses penyelesaian. Saat ini terdapat bug dan belum semua fitur telah diuji!
Modul saat ini dirancang agar sesuai dengan backplane RC2014 Pro yang sedikit dimodifikasi. Dalam teks di bawah ini saya akan menjelaskan status proyek saat ini, solusi yang diperlukan untuk menjalankannya, dan detail dasar pembangunan. Karena status proyek yang sedang berjalan, dokumen ini sengaja dibuat singkat.
Proyek ini menggunakan pin header/socket untuk menghubungkan modul dalam subsistem (subsistem video-RAM dan subsistem suara IO). Ini membutuhkan pin header yang lebih panjang dari biasanya.
Ini adalah backplane RC2014 Pro yang sedikit dimodifikasi. Modular CPC menggunakan jalur D8 hingga D15 baik dalam subsistem video-RAM dan subsistem IO-Sound untuk bus data lokal. Karena itu:
Anda perlu memutuskan garis D8 hingga D15 di antara bagian-bagian ini.
Ini adalah "Modul CPU Z80" RC2014 yang sedikit dimodifikasi. Modifikasi:
Resistor di papan perlu diganti dengan nilai yang berbeda. 2.2k ohm seharusnya bekerja dengan baik.
Papan ini berisi NORFLASH 512Kb. Ini termasuk sirkuit untuk memungkinkan flash dibakar di tempat (belum teruji). Konfigurasi:
Jumper perlu dipasang menjembatani pin 2 LK4 dan pin 2 LK5.
Untuk mengaktifkan flashburning, instal link LK1, LK2 dan LK3. Jika tidak, biarkan terbuka.
Catatan saya untuk menulis ke Flash (diambil dari file skema) adalah:
!!! Tidak ada cara untuk menonaktifkan penulisan memori pada sistem CPC standar. Oleh karena itu, SETIAP penulisan memori yang kita lakukan ke ROM ketika WRITE_EN aktif juga akan menulis ke RAM.
Namun, karena ROM dipetakan ke semua bank memori, hal ini menambah sejumlah fleksibilitas. Perhatikan juga bahwa membaca dari ROM dinonaktifkan sementara menulis diaktifkan. Artinya kita bisa membaca dari RAM 'di bawah' ROM saat ROM aktif.
Prosedur pemrograman yang saya rekomendasikan adalah menulis ke ROM menggunakan alamat RAM video, namun ROM dapat menulis menggunakan alamat di bank 1 (&4000-&7fff) jika rentang memori tersebut tidak berisi data yang berarti. (Jika data yang akan ditulis sudah berada dalam kisaran alamat ini maka pemrogram cukup membaca data (RAM) dan kemudian menulis (ROM) pada alamat yang sama. Namun perlu berhati-hati dengan perintah yang dikirim ke ROM, karena ini masih akan membuang data di bawahnya).
Baca byte RAM pada alamat yang akan diprogram.
Aktifkan aktifkan tulis untuk ROM
Tulis data yang diperlukan ke ROM.
Matikan aktifkan tulis untuk ROM
Tulis data asli kembali ke ROM.
ROM (NORFLASH) dapat menampung hingga 31 ROM ditambah ROM firmware. Saat memprogram chip, Firmware harus masuk ke slot 31 (mulai dari alamat &7c000). BASIC (jika terpasang) perlu masuk ke slot 0 (alamat &00000). Slot ROM terletak setiap &4000 byte, yaitu &00000, &04000, &08000, &0C000, &10000 dll.
Jika membakar ROM dengan perangkat lunak XGPro:
Gunakan Select IC untuk memilih IC yang digunakan (SST39FS040).
Klik tombol bilah alat BEBAN.
Pilih file yang akan dimuat.
Format File: Biner (untuk file .ROM)
Ke Wilayah: Default
Mode beban: Normal
Dari File Mulai Addr: 0000
Untuk Buffer Start Addr: Alamat awal slot ROM (&7C000 untuk firmware, &00000 untuk BASIC)
Hapus buffer saat memuat file: Opsi 'Hapus buffer dengan default' akan menimpa data yang dimuat sebelumnya! Gunakan ini untuk ROM pertama yang dimuat ke XGPro (yang akan menginisialisasi seluruh ROM). Untuk semua ROM lainnya pilih 'Disable' (yang akan memuat data hanya ke dalam slot yang dipilih).
Klik Oke dan verifikasi bahwa file Anda telah dimuat ke alamat yang benar dan belum ditimpa.
Klik PROG (bilah alat)
Klik Program.
Papan ini menampung susunan gerbang dan keluaran video.
Pada JP901, sinyal DISPEN dan HSYNC ditukar dibandingkan dengan sinyal pada header setara pada papan Kontrol RAM. Ini paling baik diperbaiki pada papan Kontrol RAM (lihat di bawah).
Rangkaian video out berasal dari CPC464 tetapi, entah bagaimana, saya telah menggunakan nilai komponen dari CPC6128 tetapi dikurangi kapasitor pada '6128. Ini mungkin tidak memberikan perbedaan yang signifikan.
Dalam pengujian saya, saya menggunakan adaptor SCART ke HDMI yang biasa saya gunakan untuk Amstrads tetapi di sini ia menampilkan gambar hitam putih, atau tidak ada gambar sama sekali. Tampaknya ini merupakan masalah antara PSU yang digunakan oleh kabel dan adaptor. Hal ini dapat diperbaiki dengan memasukkan daya 5V ke kabel dari papan Modular CPC.
Papan tersebut menyertakan jejak kaki untuk susunan gerbang 40007 dan 40010 (dan 40008 juga dapat berfungsi). Jejak kaki tumpang tindih untuk menghemat ruang. Anda seharusnya dapat menyertakan soket untuk keduanya dengan memisahkan dua baris pin dan melepaskan anyaman di antara keduanya, namun, tapaknya agak terlalu berdekatan untuk dapat melakukannya dengan mudah.
Lubang pada tapak soket DIN agak terlalu kecil.
Papan ini menampung hubungan antara bus data video dan bus data CPU, memijat sinyal agar sesuai untuk memori SRAM dan menampung komponen opsional yang diperlukan untuk memori yang lebih besar dari 64k (belum teruji).
Penggerak sirkuit /RAMOE salah. Untuk memperbaikinya:
Potong jejak antara pin U192 1 dan 13
Potong jejak antara pin U192 11 dan pin 1 U193
Pasang kabel antara U192 pin 1 dan U195 pin 9
Pasang kabel antara U195 pin 8 dan U193 pin 1
Seperti yang dicatat pada papan video, pin DISPEN dan HSYNC ditukar pada konektor antar papan. Untuk memperbaikinya:
Potong jejak antara J1 pin 2 dan J2 pin 2
Potong jejak antara J1 pin 3 dan J2 pin 3
Pasang kabel antara J1 pin 2 dan J2 pin 3
Pasang kabel antara J1 pin 3 dan J2 pin 2
Untuk menggunakan <= 64k RAM, instal tautan LK5, LK6 dan LK7. Jika demikian JANGAN masukkan IC118 dan U194
Untuk menggunakan > 64k RAM biarkan LK5, LK6, LK7 terbuka dan instal IC118 dan U194. IC118 adalah standar Amstrad HAL/PAL.
Sirkuit yang benar untuk menggerakkan /RAMOE adalah:
XCPU_AD-----| |-- /XCPU_AD-- AND---/ROMOE OR--- /RAMRD----
Dalam bentuk teks: /ROMOE := XCPU_AD AND (/XCPU_AD OR /RAMRD)
XCPU_AD dapat bersumber dari pin 8 U195.
Papan ini menampung 6845 CRTC, multiplexer alamat, dan SRAM 512Kb. Tidak ada masalah di sini, dan tidak diperlukan konfigurasi.
Header dapat dipasang untuk CURSOR dan LPEN jika diperlukan. Mungkin tidak.
Papan ini menampung 8255 PIO dan antarmuka tape. Tautan solder dan jumper dipasang agar alamat I/O dapat dikonfigurasi:
Papan ini dirancang sedemikian rupa sehingga papan IO dapat dipasang 'di atas/di depannya' tetapi relai terlalu tinggi untuk memungkinkannya. Jadi: Saya sarankan Anda memasang J902 di bagian belakang papan (ini adalah konektor ke papan Suara).
Di bagian belakang papan temukan tautan solder tepat di atas pin alamat. Pada setiap tautan Anda perlu menyolder papan alamat 'tinggi' (berlabel A7(sic) hingga A15) ke papan tengah. Bantalan alamat 'rendah' (A0..A7) TIDAK boleh dihubungkan ke bantalan tengah.
Di bagian depan papan temukan tautan yang terletak antara U1 dan D302. Anda perlu melakukan jumper pada link 'rendah' (ke pin tengah) untuk link berlabel A3, dan link tinggi (ke pin tengah) untuk yang lain (A2, A4, A5, A6, A7).
Temukan tautan yang terletak antara C315 dan J901. Konfigurasikan sinyal mana yang diarahkan ke soket jack dan mana yang diarahkan ke backplane. Pengaturan yang disarankan adalah:
Pasang link antara INT(ernal) dan pin tengah untuk TO, TI dan /MO (Tape Out, Tape In dan Motor).
Biarkan tautan /EXP terbuka.
J901 memungkinkan akses ke berbagai sinyal input 8255. Secara default, semua baris ini memiliki pull-up dan dapat diabaikan.
RG0, RG1, RG2 adalah pengaturan wilayah.
VHz adalah pengaturan 50Hz/60Hz untuk output video.
/EXP adalah sinyal /EXP.
PBSY adalah sinyal Printer Sibuk. Modular CPC tidak menyertakan port paralel. Sinyal ini dapat digunakan untuk ekspansi jika diinginkan.
J1, J2 dan J3 adalah jack tape I/O. J3 (Motor) harusnya soket jack 2,5 mm tetapi tapaknya untuk soket 3,5 mm.
Papan ini menampung generator suara AY-3-8910 dan output terkait, ditambah konektor keyboard dan joystick.
Sebagaimana dicatat untuk papan IO: Anda harus memasang konektor antar papan (J902) di bagian atas papan ini, bukan di bagian belakang seperti yang ditunjukkan pada layar silkscreen.
Dewan memiliki kemampuan untuk menggunakan osilator on-board untuk input jam AY. Dalam Modular CPC: Hilangkan X1 dan pasang jumper di ujung CLK2 JP3 (yang mengonfigurasi papan untuk menggunakan sinyal jam dari susunan gerbang yang dikirim melalui bidang belakang).
Jumper di atas J103 (jack audio out) memungkinkan berbagai sinyal audio dikirim ke berbagai pin backplane. Dalam kebanyakan kasus, ini dapat dibiarkan terbuka. Perhatikan bahwa beberapa pengaturan mungkin bertentangan dengan sinyal pita yang disalurkan melalui bidang belakang pada papan IO.
Jika jack audio dipasang, sinyal KIRI dan KANAN TIDAK akan dikirim ke backplane (jika dikonfigurasi untuk melakukannya - lihat item sebelumnya). Namun audio MIX akan tetap dikirim (jika dikonfigurasi demikian).
CP2 adalah konektor keyboard. Ini menggunakan pinout yang sama dengan Amstrad CPC464 (keyboard PCB) asli.
J102 adalah konektor joystick. Konektor di sini dipasang agak terlalu 'inboard' dan dapat menyebabkan korsleting pada PCB di soket berikutnya.
HAL/SAHABAT:
Kode asli: https://www.cpcwiki.eu/index.php/PAL16L8
Penggantian WiP: https://github.com/Bread80/GreenHAL
Penggantian WiP: https://www.cpcwiki.eu/forum/index.php?msg=231084
Array Gerbang:
Penggantian berbasis WiP FPGA: https://github.com/codedchip/AMSGateArray
Gambar ROM: https://www.cpcwiki.eu/index.php/ROM_List
Lisensi: CERN-OHL-P
Hak Cipta © Mike Sutton, 2023
Situs web: https://bread80.com
Media sosial (Mastodon): https://mstdn.social/@bread80
Tidak ada yang berguna selain di sini. Namun jika Anda sudah sampai sejauh ini, Anda mungkin akan tetap melanjutkannya.
TX/RX=Suara (Kiri, kanan) **Jumper (opsional) USR1=ROMDIS USR2=/ROMEN USR3=VSYNC (Video ke IO) USR4=
/WAIT=SIAP (sudah!) CLOCK2=/CPU_ADDR (papan RAM; jam 1MHz untuk suara) RX2=Tape masuk **Jumpered (opsional) TX2=Tape out **Jumpered (opsional) USR5=RAMDIS PINDAH USR6=/ RAMRD MOVED USR7=Motor **Jumper (opsional)
D8-D15=Bus video
D8-D15=Bus IO ???Sinyal kontrol???
Posisi=Barisan lubang teratas @ 45.72mm di atas bagian tengah pin header dasar RC2014, Pin paling kiri = titik tengah antara A9 dan A8 Pin 1 ke kanan 1 GND 2 HSYNC (in) 3 DISPEN (in) 4 GND 5 /RAS ( keluar) 6 /CAS (keluar) 7 /MWE (keluar) 8 /CCLK (keluar) 9 /244EN (keluar) 10 GND
Posisi=Barisan lubang teratas @ 43,18mm di atas bagian tengah pin header yang diperpanjang, Pin paling kiri = titik tengah antara pin D2 dan D3 Pin 1 ke kiri, semuanya berada di baris paling atas. 1=GND 2=HSYNC (masuk) 3=DISPEN (masuk) 4=/CCLK (keluar) 5=/XCPU_ADDR (keluar) 6=/RAMCS (keluar) 7=GND 8=/RAMOE (keluar) 9=GND 10 =/RAMWE (keluar) 11=RAMA14 (keluar) 12=RAMA15 (keluar) 13=RAMA16 (keluar) 14=RAMA17 (keluar) 15=GND 16=RAMA18 (keluar)
1=GND 2=BC1 3=BDIR 4=PC0 5=PC1 6=PC2 7=PC3 8=GND
Pinout Amstrad/MX4
SUARA GND Y A15 Y Y Y A14 Y Y Y A13 Y A12 Y A11 Y Y A10 Y Y A9 Y Y A8 Y Y Y A7 Y Y A6 Y A5 Y A4 Y A3 Y A2 Y A1 Y A0 Y Y
D7 Y Y Y D6 Y Y Y D5 Y Y Y D4 Y Y Y D3 Y Y Y D2 Y Y Y D1 Y Y Y D0 Y Y Y (CRTC) VCC MREQ Y M1 Y Y RFSH IORQ Y Y Y Y RD Y Y Y Y WR Y Y Y Y HALT INT Y NMI BUSRQ BUSAK READY Y Y BRST RSET Y? kamu? kamu? kamu? kamu? ROMEN Y ROMDIS Y RAMRD Y Y RAMDIS KURSOR Y LPEN Y EXP Y Y GND CLK4 Y Y
Ekstra (Video-RAM): RD7..RD0 Y Y Y RAS Y Y CAS Y Y MWE Y Y 244EN Y Y XCPU_AD(?) Y Y RAMCS Y Y RAMOE Y Y RAMWE Y Y RAMA18..RAMA14 Y Y HSYNC Y Y DISPEN Y Y CCLK Y Y (24 baris)
Ekstra (Video-RAM dan IO-Sound): CPU_ADDR(1MHz) Y Y Y VSYNC Y Y Y (2 baris)
Ekstra (IO-Sound): PA7..PA0 Y Y MOTOR Y CASRD Y CASWR Y PRINTBUSY (Y) BC1 Y Y BDIR Y Y PC3..PC0 Y Y LEFT Y RIGHT Y (20 baris)
Disk: Sekitar 14 baris diperlukan secara internal
Video/RAM: 50 + 24 + 2 = 76 baris! total. Kurang yang tidak diperlukan: total 69 (70 ditambah satu cadangan!) IO/Suara: 50 + 20 + 2 = total 72 baris. Kurang yang tidak diperlukan: total 50 (termasuk beberapa suku cadang) Disk: 50 + 14 = total 64 baris
Catatan: Konektor tepi 76 pin: lebar papan = 99,06 mm
Papan: Bagian MX4: Cadangan CPU ROM Konektor RC2014 Edge
Bagian video (array gerbang): Kontrol RAM Video RAM
Bagian video (RP2040): Pemancar RAM Sinyal Video
Bagian Disk: Konektor/Buffer Pengontrol
Bagian Suara IO: PPI AY Tape Audio amp/mixer