Você nunca sabe onde, quando e em que momento você aprende sobre um computador desconhecido.Desta vez, ficou mais fácil.Comecei a procurar uma lista de computadores baseados no MOS 6502 e me deparei com a menção de C64Dx (ou C65) baseado em 65CE02 - um protótipo de um computador criado no Commodore Business Machines em 1990-1991. Esta é uma versão aprimorada do Commodore 64 e deveria ser compatível com versões anteriores de um computador antigo, além de fornecer vários recursos avançados próximos ao Amiga. O número de modelos lançados não é tão grande, mas a lista de preços anunciados na compra do C65 é impressionante.Também li sobre o MEGA65 - um computador compatível com C64 / C65. É isso, estou madura para um conhecido.Modo de vídeo
O novo chip VIC III oferece os seguintes recursos:- modo de texto 40/80 x25
- 320x200x256
- 640 × 200 × 16
- 1280 × 200 × 4
- 320 × 400 × 256
- 640 × 400 × 16
- 1280 × 400 × 4
Modos de vídeo disponíveis compatíveis com ocontrolador VIC II DMA128K ROM128K RAM, expansível até 1MDois chips de som SIDNova versão do BASIC 10.0Agora um emulador.O Hi65 não funcionou, deixou apenas exemplos do BASIC para se familiarizar com os gráficos.Eu peguei outro . Você também precisa baixar o arquivo e renomeá-lo para c65-system.romExecute o emulador:xc65.exe -8 diskimage.d81
Por conveniência, comecei a procurar ferramentas cruzadas:- Assembler 64tass desde suporta 65CE02- cc1541 V3.1 - o utilitário cria imagens .d81 e adiciona arquivos. Portanto, é mais conveniente
descrever o DirMaster v3.1.5 / Style ao criar . MustHave.O primeiro objetivo foi escrever um programa que exibisse "Olá, mundo!" A leitura de tópicos nos fóruns sugeriu uma solução:*=$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 deu errado? Apenas a codificação é diferente:
portanto, o texto foi alterado para:hworld .byte 8,5,$0C,$0C,$0F,$20,$17,$0F,$12,$0C,4,$21,0
Em seguida, encontrei a documentação do Commodore 64 Programmers Reference Guide e outro arquivo que encontrou muitas vantagens.A leitura do encaixe c64-programmers_reference_guide-03-programming_graphics.pdf sugeriu a idéia de um único efeito. por exemplo lda #$62
sta $D018
Coloque a memória de vídeo em US $ 1800 e os dados dos caracteres em US $ 800. Ao ler c65manual.txt , encontrei informações sobre as cores:$ D100, $ D200, D300 $ - R, G, Cama e valores de cores (0-15)$ D800- $ DBFFF - atributos de texto de cores (ou melhor, todas as cores são armazenadas nos endereços $ 1F800- $ 1FFFF).Algumas amostras do código, eu tenho um conjunto de caracteres prontos e cores simples. Eu só queria usar o chip DMAgic para transferir duas seções da memória.Comecei a ler as docas .O controlador opera em 4 modos:COPY - copiando uma seção da memóriaSWAP - trocando dados por seçõesFILL - preenchendo uma seção da memória com dadosMIX - executa um mix Minterm booleano na fonte e no receptor (mata-me, não sei escrever)E então fiquei completamente confuso, entendi apenas o princípio do trabalho. Por conveniência, são usadas tabelas DMAT, a gravação de dados nos registradores executará a operação: 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
Ao mesmo tempo, no banco dos réus, li que você pode usar o DMA. Eu escrevi um programa sem conhecer o idioma:
agora o backbone está pronto, conheço os dados necessários e é hora de escrever o código ainda mais. Mas, no dia seguinte, eu estava esperando por uma chatice completa - não encontrei memória livre e não entendi como as operações de memória funcionam. O fórum sugeriu que o motivo estava no emulador do kemu e sugeriu vários procedimentos. Além disso, algumas informações são incompreensíveis para mim. E, no entanto, espero que um dia eu tenha acesso à vida real e descubra tudo o que é interessante, e eu possa escrever programas. Bem, não é uma alegria?pouet