Emulation Commodore 65

gambar

Anda tidak pernah tahu di mana, kapan, dan pada titik apa Anda belajar tentang komputer yang tidak dikenal.

Kali ini ternyata lebih mudah.

Saya mulai mencari daftar komputer berdasarkan MOS 6502 dan menemukan penyebutan C64Dx (atau C65) berdasarkan 65CE02 - komputer prototipe yang dibuat di Commodore Business Machines pada 1990-1991. Ini adalah versi yang disempurnakan dari Commodore 64, dan itu seharusnya kompatibel dengan komputer lama, sambil tetap menyediakan sejumlah fitur canggih yang dekat dengan Amiga. Jumlah model yang dirilis tidak begitu banyak, tetapi daftar harga yang diumumkan pada saat pembelian C65 sangat mengesankan.

Saya juga membaca tentang MEGA65 - komputer yang kompatibel dengan C64 / C65. Itu dia, saya sudah siap untuk berkenalan.

Mode video


Chip VIC III yang baru menyediakan fitur-fitur berikut:

  • mode teks 40/80 x25
  • 320x200x256
  • 640 × 200 × 16
  • 1280 × 200 × 4
  • 320 × 400 × 256
  • 640 × 400 × 16
  • 1280 × 400 × 4

Mode video yang tersedia kompatibel dengan

pengontrol
VMA II DMA 128K ROM
128K RAM, dapat diperluas hingga 1M
Dua chip suara SID
Versi baru BASIC 10.0

Sekarang merupakan emulator.

Hi65 tidak berfungsi, hanya tersisa contoh BASIC untuk berkenalan dengan grafik.

Saya mengambil satu lagi . Anda juga perlu mengunduh file dan mengganti namanya menjadi c65-system.rom

Jalankan emulator:

xc65.exe -8 diskimage.d81

Untuk kenyamanan, saya mulai mencari alat silang:

- Assembler 64tass sejak mendukung 65CE02
- cc1541 V3.1 - utilitas membuat .d81 gambar dan menambahkan file. Jadi lebih mudah untuk

gambar

menggambarkan DirMaster v3.1.5 / Style saat membangun . MustHave.

Tujuan pertama adalah menulis program yang menampilkan "Halo, dunia!" Membaca topik di forum menyarankan solusi:

*=$0FFE
.byte $00, $10
  ldx #$0
cycle  lda hworld,x
       cmp #0
       beq exit
       sta $0800,x
; sta $D800,x
       inx
       jmp cycle
exit   rts
hworld .text 'hello world!',0

gambar

Ada yang salah? Hanya penyandian berbeda:

gambar

Oleh karena itu, teks telah berubah menjadi:

hworld .byte 8,5,$0C,$0C,$0F,$20,$17,$0F,$12,$0C,4,$21,0

gambar

Selanjutnya, saya menemukan dokumentasi Panduan Referensi Programmer Commodore 64 dan arsip lain yang menemukan banyak barang.

Membaca dock c64-programmers_reference_guide-03-programming_graphics.pdf menyarankan gagasan efek tunggal. contohnya

	lda #$62
	sta $D018

Tempatkan memori video pada $ 1800, dan data karakter pada $ 800. Membaca c65manual.txt , saya menemukan informasi tentang warna:

$ D100, $ D200, D300 $ - R, G, Bed dan nilai warna (0-15)
$ D800- $ DBFFF - atribut teks warna (atau lebih tepatnya, semua warna disimpan di alamat $ 1F800- $ 1FFFF).

Beberapa contoh kode, saya mendapat set karakter yang siap pakai dan warna sederhana. Saya hanya ingin menggunakan chip DMAgic untuk mentransfer dua bagian memori.

Saya mulai membaca dok .

Pengontrol beroperasi dalam 4 mode:

COPY - menyalin bagian memori
SWAP - bertukar data untuk bagian
FILL - mengisi bagian memori dengan data
MIX - melakukan campuran bermean Minterm pada sumber dan penerima (bunuh saya, saya tidak tahu bagaimana menulis)

Dan kemudian saya benar-benar bingung, saya hanya mengerti prinsip kerja. Untuk kenyamanan, tabel DMAT digunakan, menulis data ke register akan melakukan operasi:

		lda #0	;the bank (0-15) where the list is
		sta $d702
		lda #>address	;the high byte of the list address
		sta $d701
		lda #<address
		sta $d700	;the low byte of the list address
				;this also triggers the dma operation,
				;and the cpu is suspended

loop:	bit $d703	;check status (in case irq/nmi enabled)
		bmi loop	;	busy
		jmp doplas
; DMA 3, 2000, ASC("+"), 0, DEC("800"), 0        Fill screen with '+'
; DMA 0, 2000, DEC("800"), 0, DEC("8000"), 1     Copy screen to $18000
address:
	.byte 0 ;command
	.word 80*25; copy size
	.word $C000 ; 800+80 ; src adr
	.byte 1 ; bank
	.word $1800 ; dst adr
	.byte 0 ; bank
	.word 0 ; modulo n/u

Pada saat yang sama, di dermaga, saya membaca bahwa Anda dapat menggunakan DMA. Saya menulis sebuah program tanpa mengetahui bahasa:

gambar

Sekarang tulang punggung siap, saya tahu data yang diperlukan, dan sekarang saatnya untuk menulis kode lebih lanjut. Tapi, hari berikutnya saya menunggu mengecewakan - saya tidak menemukan memori bebas dan tidak mengerti bagaimana operasi memori bekerja. Forum menyarankan bahwa alasannya adalah di emulator kemu dan menyarankan beberapa prosedur. Selain itu, beberapa informasi tidak dapat saya mengerti. Namun, saya berharap bahwa suatu hari nanti saya akan mendapatkan akses ke kehidupan nyata dan mengetahui segala sesuatu yang menarik, dan saya dapat menulis program. Ya, bukankah itu menyenangkan?

pouet

All Articles