#include <SD.h>
#include <SPI.h>
#include <stdio.h>
// 2400 para uma experiência mais autêntica, 9600 para algo mais agradável
#define BAUD 9600
#include <util/setbaud.h>
#include "cpu.hpp"
File myFile;
const int pinoSS = 53; // Pino 10 para o UNO
void setup() { // Executado uma vez quando o Arduino é ligado
Serial.begin(BAUD); // Define o BaudRate
pinMode(pinoSS, OUTPUT); // Declara o pinoSS como saída
if (SD.begin()) { // Inicializa o SD Card
Serial.println("SD Card pronto para uso"); // Imprime no monitor serial
}
else {
Serial.println("Falha na inicialização do SD Card.");
return;
}
myFile = SD.open("ROMS.txt", FILE_WRITE); // Cria ou abre arquivo ROM.txt
if (myFile) { // Se o arquivo abrir imprime:
Serial.println("Escrevendo no arquivo ROMS.txt"); // Imprime no monitor serial
myFile.println("Para executar o AppleSoft BASIC"); // Escreve no Arquivo
myFile.println("Digite: E000R"); // Escreve e quebra a linha
myFile.close(); // Fecha o Arquivo após escrever
Serial.println("Concluído!"); // Imprime no monitor serial
Serial.println(" ");
}
else { // Se o Arquivo não abrir
Serial.println("Erro ao abrir o arquivo ROMS.txt"); // Imprime no monitor serial
}
myFile = SD.open("ROMS.txt"); // Abre o Arquivo
if (myFile) {
Serial.println("Conteúdo do arquivo ROMS.txt:\n"); // Imprime no monitor serial
while (myFile.available()) { // Exibe o conteúdo do Arquivo
Serial.write(myFile.read());
}
myFile.close(); // Fecha o Arquivo após ler
}
else {
Serial.println("Erro ao abrir o arquivo ROMS.txt"); // Imprime no monitor serial
}
delay(100);
// Inicial Serial
UBRR0H = UBRRH_VALUE;
UBRR0L = UBRRL_VALUE;
#if USE_2X
UCSR0A |= _BV(U2X0);
#else
UCSR0A &= ~(_BV(U2X0));
#endif
UCSR0C = _BV(UCSZ01) | _BV(UCSZ00); // Dados de 8 bits
UCSR0B = _BV(RXEN0) | _BV(TXEN0); // Habilita o RX/TX
// Liga a CPU 6502
CPU::power();
}
void loop() {
CPU::run();
}