Emulator Commodore 65

imagen

Nunca se sabe dónde, cuándo y en qué momento se entera de una computadora desconocida.

Esta vez resultó más fácil.

Comencé a buscar una lista de computadoras basadas en MOS 6502 y encontré la mención de C64Dx (o C65) basada en 65CE02, una computadora prototipo creada en Commodore Business Machines en 1990-1991. Esta es una versión mejorada de Commodore 64, y se suponía que era compatible con versiones anteriores de una computadora antigua, a la vez que proporcionaba una serie de características avanzadas cercanas a Amiga. El número de modelos lanzados no es tanto, pero la lista de precios anunciados con la compra del C65 es impresionante.

También leí sobre MEGA65, una computadora compatible con C64 / C65. Eso es todo, estoy maduro para un conocido.

Modo de vídeo


El nuevo chip VIC III ofrece las siguientes características:

  • modo texto 40/80 x25
  • 320x200x256
  • 640 × 200 × 16
  • 1280 × 200 × 4
  • 320 × 400 × 256
  • 640 × 400 × 16
  • 1280 × 400 × 4

Modos de video disponibles compatibles con el

controlador VIC II DMA
128K ROM
128K RAM, ampliable hasta 1M
Dos chips de sonido SID
Nueva versión de BASIC 10.0

Ahora un emulador.

Hi65 no funcionó, dejó solo ejemplos BÁSICOS para familiarizarse con los gráficos.

Tomé otro . También debe descargar el archivo y cambiarle el nombre a c65-system.rom

Ejecute el emulador:

xc65.exe -8 diskimage.d81

Por conveniencia, comencé a buscar herramientas cruzadas:

- Ensamblador 64tass desde admite 65CE02
- cc1541 V3.1 - la utilidad crea imágenes .d81 y agrega archivos. Por lo tanto, es más conveniente

imagen

describir DirMaster v3.1.5 / Style al compilar . Debe tener.

El primer objetivo era escribir un programa que mostrara "¡Hola, mundo!" La lectura de temas en los foros sugirió una solución:

*=$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

imagen

¿Algo salió mal? Solo la codificación es diferente: por lo

imagen

tanto, el texto ha cambiado a:

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

imagen

Luego, encontré la documentación de la Guía de referencia de programadores de Commodore 64 y otro archivo que encontró muchas cosas buenas.

La lectura del dock c64-programmers_reference_guide-03-Programming_graphics.pdf sugirió la idea de un solo efecto. por ejemplo

	lda #$62
	sta $D018

Coloque la memoria de video a $ 1800 y los datos del personaje a $ 800. Leyendo c65manual.txt , encontré información sobre los colores:

$ D100, $ D200, D300 $ - los valores R, G, Bed y color (0-15)
$ D800- $ DBFFF - atributos de texto de color (o más bien, todos los colores se almacenan en las direcciones $ 1F800- $ 1FFFF).

Algunas muestras del código, obtuve un conjunto de caracteres listo y colores simples. Solo quería usar el chip DMAgic para transferir dos secciones de memoria.

Empecé a leer los muelles .

El controlador funciona en 4 modos:

COPIAR - copiar una sección de la memoria
SWAP - intercambiar datos por secciones de
LLENADO - llenar una sección de memoria con datos
MIX: realiza una mezcla booleana de Minterm en la fuente y el receptor (mátame, no sé cómo escribir)

Y luego me confundí por completo, entendí solo el principio del trabajo. Por conveniencia, se utilizan tablas DMAT, la escritura de datos en los registros realizará la operación:

		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

Al mismo tiempo, en el muelle, leí que puedes usar DMA. Escribí un programa sin conocer el idioma:

imagen

ahora la columna vertebral está lista, conozco los datos necesarios y es hora de escribir más el código. Pero, al día siguiente, estaba esperando un fastidio completo: no encontré memoria libre y no entendí cómo funcionan las operaciones de memoria. El foro sugirió que la razón estaba en el emulador kemu y sugirió varios procedimientos. Además, parte de la información es incomprensible para mí. Y sin embargo, espero que algún día tenga acceso a la vida real y descubra todo lo que sea interesante, y pueda escribir programas. Bueno, ¿no es una alegría?

Pouet

All Articles