mirror of
https://github.com/DutchMaker/Apple-1-Mini.git
synced 2024-06-06 09:29:31 +00:00
Code in working order. The Apple 1 has come to life!
This commit is contained in:
parent
c116cff069
commit
0361b11559
|
@ -7,6 +7,14 @@
|
||||||
#define PB4 A4
|
#define PB4 A4
|
||||||
#define PB5 A3
|
#define PB5 A3
|
||||||
#define PB6 A2
|
#define PB6 A2
|
||||||
|
#define PA0 5
|
||||||
|
#define PA1 6
|
||||||
|
#define PA2 7
|
||||||
|
#define PA3 8
|
||||||
|
#define PA4 9
|
||||||
|
#define PA5 10
|
||||||
|
#define PA6 11
|
||||||
|
#define STROBE 12
|
||||||
|
|
||||||
uint8_t video_data = 0;
|
uint8_t video_data = 0;
|
||||||
uint8_t video_data_pins[] = { PB0, PB1, PB2, PB3, PB4, PB5, PB6 };
|
uint8_t video_data_pins[] = { PB0, PB1, PB2, PB3, PB4, PB5, PB6 };
|
||||||
|
@ -14,8 +22,9 @@ uint8_t serial_data;
|
||||||
|
|
||||||
void setup()
|
void setup()
|
||||||
{
|
{
|
||||||
pinMode(DA, INPUT);
|
// Video data pins
|
||||||
pinMode(RDA, OUTPUT);
|
pinMode(RDA, OUTPUT);
|
||||||
|
pinMode(DA, INPUT);
|
||||||
pinMode(PB0, INPUT);
|
pinMode(PB0, INPUT);
|
||||||
pinMode(PB1, INPUT);
|
pinMode(PB1, INPUT);
|
||||||
pinMode(PB2, INPUT);
|
pinMode(PB2, INPUT);
|
||||||
|
@ -24,6 +33,16 @@ void setup()
|
||||||
pinMode(PB5, INPUT);
|
pinMode(PB5, INPUT);
|
||||||
pinMode(PB6, INPUT);
|
pinMode(PB6, INPUT);
|
||||||
|
|
||||||
|
// ASCII data pins
|
||||||
|
pinMode(STROBE, OUTPUT);
|
||||||
|
pinMode(PA0, OUTPUT);
|
||||||
|
pinMode(PA1, OUTPUT);
|
||||||
|
pinMode(PA2, OUTPUT);
|
||||||
|
pinMode(PA3, OUTPUT);
|
||||||
|
pinMode(PA4, OUTPUT);
|
||||||
|
pinMode(PA5, OUTPUT);
|
||||||
|
pinMode(PA6, OUTPUT);
|
||||||
|
|
||||||
Serial.begin(9600);
|
Serial.begin(9600);
|
||||||
Serial.println("Arduino ready...");
|
Serial.println("Arduino ready...");
|
||||||
}
|
}
|
||||||
|
@ -36,14 +55,14 @@ void loop()
|
||||||
|
|
||||||
void process_video_data()
|
void process_video_data()
|
||||||
{
|
{
|
||||||
digitalWrite(RDA, HIGH); // Tell PIA we are ready to receive data
|
digitalWrite(RDA, HIGH);
|
||||||
delayMicroseconds(20);
|
delayMicroseconds(20);
|
||||||
|
|
||||||
if (digitalRead(DA)) // Is there any data?
|
if (digitalRead(DA))
|
||||||
{
|
{
|
||||||
video_data = 0;
|
video_data = 0;
|
||||||
|
|
||||||
for (int i = 0; i < 7; i++) // Yes, get byte data
|
for (int i = 0; i < 7; i++)
|
||||||
{
|
{
|
||||||
if (digitalRead(video_data_pins[i]))
|
if (digitalRead(video_data_pins[i]))
|
||||||
{
|
{
|
||||||
|
@ -71,6 +90,32 @@ void process_serial_data()
|
||||||
{
|
{
|
||||||
serial_data = Serial.read();
|
serial_data = Serial.read();
|
||||||
|
|
||||||
|
if (serial_data == 203) // Uppercase ESC
|
||||||
|
{
|
||||||
|
serial_data = 27;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serial_data >= 97 && serial_data <= 122) // lower case a-z
|
||||||
|
{
|
||||||
|
serial_data -= 32;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serial_data < 96) // Is the character Apple 1 compatible?
|
||||||
|
{
|
||||||
|
digitalWrite(PA6, bitRead(serial_data, 6));
|
||||||
|
digitalWrite(PA5, bitRead(serial_data, 5));
|
||||||
|
digitalWrite(PA4, bitRead(serial_data, 4));
|
||||||
|
digitalWrite(PA3, bitRead(serial_data, 3));
|
||||||
|
digitalWrite(PA2, bitRead(serial_data, 2));
|
||||||
|
digitalWrite(PA1, bitRead(serial_data, 1));
|
||||||
|
digitalWrite(PA0, bitRead(serial_data, 0));
|
||||||
|
|
||||||
|
digitalWrite(STROBE, HIGH);
|
||||||
|
delayMicroseconds(20);
|
||||||
|
digitalWrite(STROBE, LOW);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
if (serial_data == 13)
|
if (serial_data == 13)
|
||||||
{
|
{
|
||||||
Serial.println();
|
Serial.println();
|
||||||
|
@ -79,5 +124,6 @@ void process_serial_data()
|
||||||
{
|
{
|
||||||
Serial.print((char)serial_data);
|
Serial.print((char)serial_data);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user