Membaca data disket dari disk ZX Spectrum Swift
Kembali pada hari kami memiliki swiftdisk enam kata, kami berada di depan permainan pada spesifikasi kami yang memungkinkan kami untuk kami floppy disk 3,5 inci. Lihat:
- https://www.worthpoint.com/worthopedia/swift-disc-interface-zx-spectrum-540379389
- http://www.crashonline.org.uk/44/swiftdisk.htm
- https://spectrumcomputing.co.uk/index.php?cat=96&id=1000412
- https://hardware.speccy.org/hardware/Swift_Disc-Sixword-i.html
Saya melihat spesifikasi perangkat keras lengkap dan bahkan rom tersedia online di tautan hardware.speccy.org di atas yang cukup luar biasa.
Adakah yang tahu format disk apa yang digunakan (itu adalah snapshot dari seluruh memori) dan bagaimana disket lama kami dapat didigitalkan untuk dunia retro modern. Mungkinkah kita bisa mengubahnya menjadi format FDI ?
Motivasi:
Akan sangat menyenangkan untuk mencoba dan mengunggah game kami yang belum pernah dirilis Galactic Patrol seperti yang kami lakukan dengan StarBlade . Permintaan maaf karena membuat gelombang musuh terlalu jahat di sana! Bisa saja melakukan playtesting lagi tapi kami berdua masih sekolah.
Ini berjalan dalam warna 'penuh' menggunakan skema sakelar layar cepat yang dibuat saudara saya yang disebutkan di sini dalam kecelakaan .
Jawaban
Saya tidak dapat menemukan informasi teknis atau emulator yang ada, tetapi melalui tautan Anda, saya menemukan gambar papan antarmuka beresolusi tinggi ini .
Dari sana saya memperhatikan hal-hal berikut:
- pengontrol disk adalah WD1770, itu yang besar di sebelah kiri;
- dua chip besar di kanan kedua setengah di bawah konektor edge adalah RAM 8kb dan EPROM; dan
- segala sesuatu yang terlihat adalah logika 74-series.
Ini adalah taruhan yang aman berdasarkan arsitektur Spectrum bahwa tombol interupsi aktif di ROM on-board dan memicu NMI.
Gambar ROM yang ditautkan berukuran 32kb dan 16kb tetapi yang pertama sepertinya adalah data 16kb yang disalin dua kali, Anda juga dapat menyimpulkan bahwa EPROM adalah 16kb, dalam hal ini mungkin ada beberapa tebakan dalam mencari tahu kapan dan di mana RAM 8kb itu muncul. .
Saya menemukan sebutan lama di comp.sys.sinclair bahwa emulasi Microdrive yang ditambahkan ke versi yang lebih baru sebagian berbasis perangkat keras, tetapi tampaknya datang dengan revisi papan. Jadi pembuat emulator mungkin akan memulai dengan EPROM yang lebih lama dengan harapan perangkat keras tambahan belum ada.
Jika tidak, kabar baiknya adalah bahwa pengontrol disk adalah bagian yang sangat standar yang hanya melakukan pengkodean IBM vanilla, dan berdasarkan kapasitas floppy yang diiklankan dari "tiga belas permainan 48kb per disk", Anda dapat mengasumsikan format fisik data pada disk adalah MFM (yaitu PC biasa 'kepadatan ganda').
Jadi: Anda mungkin dapat mem-image disk Anda menggunakan drive disk USB biasa (kecuali jika Anda menemukan salah satu yang mendukung disket kepadatan tinggi saja) karena pada dasarnya MFM adalah satu-satunya hal yang mereka dukung - tetapi mereka sering dibatasi pada sektor 512-byte dengan penomoran tetap jadi ini tidak dijamin. Mungkin patut dicoba sebelum mencari solusi yang kurang umum. Halaman terkait MSX ini memberikan panduan untuk Linux dan macOS meskipun bagian Windows kosong. Beberapa penelitian lebih lanjut mungkin diperlukan di sana.
Jika gagal, carilah solusi yang dapat menggambarkan disket untuk mesin seperti BPK Amstrad, karena solusi tersebut harus menangani ukuran dan pengalamatan sektor yang berbeda, dan format file terkait BPK yang umum dapat menyimpan semua informasi itu. Jika Anda memiliki PC yang cukup tua untuk memiliki pengontrol dan drive floppy-disk pra-USB dan OS seperti DOS yang memberikan perangkat lunak akses tak terbatas ke pengontrol maka itu harus melakukan trik. Atau pengontrol disk tingkat rendah sekarang ada untuk masalah ini, seperti Greaseweazle yang disebutkan oleh scruss, Kryoflux, dan lainnya.
Memulai dari emulator Spectrum yang berfungsi, maka tidak perlu terlalu banyak perjalanan untuk menambahkan antarmuka disk Swift dan membaca floppy Anda.
Perangkat lunak apa yang harus menulis ke WD1770 sangat terkenal sehingga Anda dapat mengisolasi alamat tersebut dengan cukup mudah, dan cukup banyak hal pertama yang perlu dilakukan rutin NMI adalah membuat cadangan tampilan saat ini sehingga Anda mungkin dapat mengetahui Pertanyaan RAM tanpa terlalu banyak dilema. Pada titik itu mungkin semudah memasukkan gambar disk Anda.
Sering kali antarmuka yang sedikit lebih tidak jelas ini tidak dapat ditiru hanya karena tidak ada data pengujian yang tersedia; sangat mungkin Anda bisa membuat penulis yang sudah ada tertarik hanya dengan memiliki gambar disk. Jika tidak, emulator Spectrum mudah dibuat sehingga seseorang seperti saya yang memiliki jenis kode yang secara umum benar seharusnya dapat membantu.
Atau, karena pencarian saya tidak terlalu teliti, Anda mungkin menemukan bahwa hal itu sudah ditiru - dalam hal ini tolong beri tahu saya sehingga saya dapat mengubah 90% dari jawaban ini.
Sepertinya ini menggunakan WD1770. Saya tidak terbiasa dengannya, tetapi periksa dulu apakah WD1770 kompatibel dengan format IBM. Jika ya maka Anda dapat membaca disk langsung di PC ... Jika tidak, Anda memerlukan HW yang mampu membaca disk .
Jadi dalam kasus PC yang kompatibel Anda cukup menggambarnya menggunakan akses sektor langsung dalam C ++ (atau bahasa atau utilitas lain) daripada format file. Setelah Anda mendapatkan gambar biner dari disket (dengan satu atau lain cara) ada dua pilihan:
meniru FDC
jadi Anda perlu memiliki beberapa emulator yang mampu meniru antarmuka FDC Anda atau menambahkan fungsionalitas tersebut ke beberapa kode sumber terbuka.
Di tautan terakhir Anda ada gambar ROM dan juga sirkuit (tetapi yang itu tidak dapat dibaca) sehingga mungkin untuk meniru ini dengan membalikkan sirkuit ... Saya melakukan ini sebelumnya untuk emulator saya dan D40 / D80 FDC berdasarkan WD2797 . Namun ini mudah dilakukan hanya untuk emulator yang berjalan pada MC (siklus mesin) resolusi waktu (seperti milik saya) jika tidak FDC harus hanya diretas dengan menghubungkan ke kondisi HW dan SW melewati kode Z80 dan menyuntikkan kode / operasi FDC sebagai gantinya (itu adalah cara sebagian besar emulator melakukannya, namun ini tidak 100% kompatibel dan pemuat khusus serta hal-hal lain mungkin tidak berfungsi) yang tidak dapat dilakukan oleh siapa pun tanpa pengetahuan mendalam tentang cara kerja FDC yang ditargetkan.
ekstrak file
atau Anda melewati FDC sepenuhnya dan mengekstrak file yang tidak dikompresi dari gambar ke dalam format yang dapat dibaca oleh emulator seperti
*.tap
. Jika Anda berbagi beberapa gambar (paling baik dengan deskripsi file apa dan berapa lama di dalamnya) saya akan dengan senang hati mencoba membuat konverter win32 yang akan melakukan ini untuk Anda.karena file hanyalah snapshot, ini mungkin pilihan terbaik Anda. Idealnya jika Anda juga memiliki akses ke HW Anda dapat membuat pola memori tertentu dan menyimpannya ke floppy sehingga inffering filesystem lebih mudah ... misalnya mengisi 128K (bagian RAM) dengan alamat 32 bit (nilai tambahan) jadi kita dapat mengumpulkan sektor-sektor tersebut dalam urutan yang benar dan kemudian mencocokkannya dengan FAT jika digunakan ...