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 elcontrolador VIC II DMA128K ROM128K RAM, ampliable hasta 1MDos chips de sonido SIDNueva versión de BASIC 10.0Ahora 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.romEjecute 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
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
¿Algo salió mal? Solo la codificación es diferente: por lo
tanto, el texto ha cambiado a:hworld .byte 8,5,$0C,$0C,$0F,$20,$17,$0F,$12,$0C,4,$21,0
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 memoriaSWAP - intercambiar datos por secciones deLLENADO - llenar una sección de memoria con datosMIX: 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:
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