mirror of
https://github.com/equant/apple2idiot.git
synced 2024-06-28 09:53:34 +00:00
Cleaned up rot13 example, and misc catchup from laptop
This commit is contained in:
parent
492d1c8e54
commit
a93d5e7ef2
@ -24,7 +24,8 @@ blah blah blah
|
||||
#define D5R 17
|
||||
#define D6R 18
|
||||
#define D7R 19
|
||||
byte data_pins[] = {D0R, D1R, D2R, D3R, D4R, D5R, D6R, D7R};
|
||||
//byte data_pins[] = {D0R, D1R, D2R, D3R, D4R, D5R, D6R, D7R};
|
||||
byte data_pins[] = {D7R, D6R, D5R, D4R, D3R, D2R, D1R, D0R}; // That's the way the Apple II likes it.
|
||||
#define DATA_BUS_SIZE 8
|
||||
|
||||
/* Address Bus */
|
||||
@ -48,7 +49,7 @@ byte address_pins[] = {A0R, A1R, A2R, A3R, A4R, A5R, A6R, A7R};
|
||||
#define INPUT_35 35
|
||||
#define INPUT_34 34
|
||||
|
||||
unsigned int data_byte = 0;
|
||||
//unsigned int data_byte = 0;
|
||||
// fisrt bit is a flag for if the data is from Apple or from ESP32.
|
||||
// /
|
||||
// / last bit is a flag for "more data waiting to be sent".
|
||||
@ -79,9 +80,8 @@ volatile uint16_t raw_register1_read;
|
||||
/**********************/
|
||||
|
||||
// Replace with your network credentials
|
||||
//const char* wifi_ssid = "GSO";
|
||||
//const char* wifi_password = "xerxes27";
|
||||
const char* wifi_ssid = "Pixel_8985";
|
||||
const char* wifi_ssid = "GSO";
|
||||
//const char* wifi_ssid = "Pixel_8985";
|
||||
const char* wifi_password = "xerxes27";
|
||||
AsyncWebServer web_server(80);
|
||||
//WebServer web_server(80);
|
||||
@ -134,8 +134,8 @@ boolean set_address(int address) {
|
||||
for (byte i=0; i<ADDRESS_BUS_SIZE; i++) {
|
||||
//for (byte i=ADDRESS_BUS_SIZE; i>0; i--) {
|
||||
byte state = bitRead(address, i);
|
||||
digitalWrite(address_pins[i], !state);
|
||||
Serial.print(!state);
|
||||
digitalWrite(address_pins[i], state);
|
||||
Serial.print(state);
|
||||
}
|
||||
Serial.println();
|
||||
return true;
|
||||
|
@ -1,898 +0,0 @@
|
||||
EESchema Schematic File Version 4
|
||||
EELAYER 30 0
|
||||
EELAYER END
|
||||
$Descr B 17000 11000
|
||||
encoding utf-8
|
||||
Sheet 1 1
|
||||
Title "Apple2Idiot"
|
||||
Date "2021-08-06"
|
||||
Rev "1"
|
||||
Comp ""
|
||||
Comment1 ""
|
||||
Comment2 ""
|
||||
Comment3 ""
|
||||
Comment4 "Nathanial Hendler"
|
||||
$EndDescr
|
||||
$Comp
|
||||
L apple2idiot_new-rescue:AppleIIBus-kicad-library J1
|
||||
U 1 1 61291E51
|
||||
P 3400 6800
|
||||
F 0 "J1" H 3950 8300 50 0000 C CNN
|
||||
F 1 "AppleIIBus" H 3800 5300 50 0000 C CNN
|
||||
F 2 "kicad-library:AppleIIBus" H 3400 6800 50 0001 C CNN
|
||||
F 3 "" H 3400 6800 50 0001 C CNN
|
||||
1 3400 6800
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L apple2idiot_new-rescue:ESP32-DEVKITC-32D-ESP32-DEV_KIT U2
|
||||
U 1 1 612B5485
|
||||
P 13000 5550
|
||||
F 0 "U2" H 13500 6600 50 0000 C CNN
|
||||
F 1 "ESP32-DEVKITC-32D" H 13200 4500 50 0000 C CNN
|
||||
F 2 "MODULE_ESP32-DEVKITC-32D" H 13000 5550 50 0001 L BNN
|
||||
F 3 "" H 13000 5550 50 0001 L BNN
|
||||
F 4 "4" H 13000 5550 50 0001 L BNN "PARTREV"
|
||||
F 5 "Espressif Systems" H 13000 5550 50 0001 L BNN "MANUFACTURER"
|
||||
1 13000 5550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Text GLabel 11950 6450 0 50 Input ~ 0
|
||||
VCC
|
||||
Text GLabel 3250 5200 1 50 Input ~ 0
|
||||
VCC
|
||||
Wire Wire Line
|
||||
11950 6450 12200 6450
|
||||
Text GLabel 14050 4650 2 50 Input ~ 0
|
||||
GND
|
||||
Text GLabel 14050 5250 2 50 Input ~ 0
|
||||
GND
|
||||
Text GLabel 3400 8500 3 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
3400 8350 3400 8500
|
||||
Wire Wire Line
|
||||
13800 4650 14050 4650
|
||||
Wire Wire Line
|
||||
13800 5250 14050 5250
|
||||
Entry Wire Line
|
||||
2500 6300 2400 6200
|
||||
Entry Wire Line
|
||||
2400 6100 2500 6200
|
||||
Entry Wire Line
|
||||
2400 6000 2500 6100
|
||||
Entry Wire Line
|
||||
2400 5900 2500 6000
|
||||
Entry Wire Line
|
||||
2400 5800 2500 5900
|
||||
Entry Wire Line
|
||||
2400 5700 2500 5800
|
||||
Entry Wire Line
|
||||
2400 5600 2500 5700
|
||||
Entry Wire Line
|
||||
2400 5500 2500 5600
|
||||
Entry Wire Line
|
||||
2400 5400 2500 5500
|
||||
Wire Wire Line
|
||||
2500 5500 2700 5500
|
||||
Wire Wire Line
|
||||
2500 5600 2700 5600
|
||||
Wire Wire Line
|
||||
2500 5700 2700 5700
|
||||
Wire Wire Line
|
||||
2500 5800 2700 5800
|
||||
Wire Wire Line
|
||||
2500 5900 2700 5900
|
||||
Wire Wire Line
|
||||
2500 6000 2700 6000
|
||||
Wire Wire Line
|
||||
2500 6100 2700 6100
|
||||
Wire Wire Line
|
||||
2500 6200 2700 6200
|
||||
Wire Wire Line
|
||||
2500 6300 2700 6300
|
||||
Entry Wire Line
|
||||
7400 6050 7300 5950
|
||||
Entry Wire Line
|
||||
7300 5850 7400 5950
|
||||
Entry Wire Line
|
||||
7300 5750 7400 5850
|
||||
Entry Wire Line
|
||||
7300 5650 7400 5750
|
||||
Entry Wire Line
|
||||
7300 5550 7400 5650
|
||||
Entry Wire Line
|
||||
7300 5450 7400 5550
|
||||
Entry Wire Line
|
||||
7300 5350 7400 5450
|
||||
Entry Wire Line
|
||||
7300 5250 7400 5350
|
||||
Entry Wire Line
|
||||
7300 5150 7400 5250
|
||||
Wire Wire Line
|
||||
7400 5250 7600 5250
|
||||
Wire Wire Line
|
||||
7400 5350 7600 5350
|
||||
Wire Wire Line
|
||||
7400 5450 7600 5450
|
||||
Wire Wire Line
|
||||
7400 5550 7600 5550
|
||||
Wire Wire Line
|
||||
7400 5650 7600 5650
|
||||
Wire Wire Line
|
||||
7400 5750 7600 5750
|
||||
Wire Wire Line
|
||||
7400 5850 7600 5850
|
||||
Wire Wire Line
|
||||
7400 5950 7600 5950
|
||||
Wire Wire Line
|
||||
7400 6050 7600 6050
|
||||
Entry Wire Line
|
||||
4250 6250 4350 6350
|
||||
Entry Wire Line
|
||||
4250 6150 4350 6250
|
||||
Entry Wire Line
|
||||
4250 6050 4350 6150
|
||||
Entry Wire Line
|
||||
4250 5950 4350 6050
|
||||
Entry Wire Line
|
||||
4250 5850 4350 5950
|
||||
Entry Wire Line
|
||||
4250 5750 4350 5850
|
||||
Entry Wire Line
|
||||
4250 5650 4350 5750
|
||||
Entry Wire Line
|
||||
4250 5550 4350 5650
|
||||
Entry Wire Line
|
||||
7400 6150 7300 6050
|
||||
Wire Wire Line
|
||||
7400 6150 7600 6150
|
||||
Entry Wire Line
|
||||
2500 6500 2400 6400
|
||||
Entry Wire Line
|
||||
2400 6300 2500 6400
|
||||
Wire Wire Line
|
||||
2500 6400 2700 6400
|
||||
Wire Wire Line
|
||||
2500 6500 2700 6500
|
||||
Entry Wire Line
|
||||
9600 5350 9700 5450
|
||||
Entry Wire Line
|
||||
9600 5450 9700 5550
|
||||
Entry Wire Line
|
||||
9600 5250 9700 5350
|
||||
Entry Wire Line
|
||||
11200 5750 11300 5850
|
||||
Entry Wire Line
|
||||
11200 5950 11300 6050
|
||||
Entry Wire Line
|
||||
11200 5650 11300 5750
|
||||
Wire Wire Line
|
||||
9600 5250 9400 5250
|
||||
Wire Wire Line
|
||||
9600 5350 9400 5350
|
||||
Wire Wire Line
|
||||
9600 5450 9400 5450
|
||||
Text GLabel 11950 5950 0 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
11950 5950 12200 5950
|
||||
Wire Wire Line
|
||||
11300 6050 12200 6050
|
||||
Wire Wire Line
|
||||
11300 5850 12200 5850
|
||||
Entry Wire Line
|
||||
9600 5550 9700 5650
|
||||
Wire Wire Line
|
||||
9600 5550 9400 5550
|
||||
Entry Wire Line
|
||||
14550 6150 14650 6250
|
||||
Entry Wire Line
|
||||
14550 5750 14650 5850
|
||||
Entry Wire Line
|
||||
14550 5650 14650 5750
|
||||
Entry Wire Line
|
||||
14550 5450 14650 5550
|
||||
Entry Wire Line
|
||||
14550 5350 14650 5450
|
||||
Wire Wire Line
|
||||
13800 6150 14550 6150
|
||||
Wire Wire Line
|
||||
13800 5750 14550 5750
|
||||
Wire Wire Line
|
||||
13800 5650 14550 5650
|
||||
Wire Wire Line
|
||||
13800 5450 14550 5450
|
||||
Wire Wire Line
|
||||
13800 5350 14550 5350
|
||||
Entry Wire Line
|
||||
9600 6550 9700 6650
|
||||
Entry Wire Line
|
||||
9600 6650 9700 6750
|
||||
Wire Wire Line
|
||||
9600 6550 9400 6550
|
||||
Wire Wire Line
|
||||
9600 6650 9400 6650
|
||||
Entry Wire Line
|
||||
9600 6850 9700 6950
|
||||
Entry Wire Line
|
||||
9600 6950 9700 7050
|
||||
Entry Wire Line
|
||||
9600 6750 9700 6850
|
||||
Wire Wire Line
|
||||
9600 6750 9400 6750
|
||||
Wire Wire Line
|
||||
9600 6850 9400 6850
|
||||
Wire Wire Line
|
||||
9600 6950 9400 6950
|
||||
Entry Wire Line
|
||||
9600 7150 9700 7250
|
||||
Entry Wire Line
|
||||
9600 7050 9700 7150
|
||||
Wire Wire Line
|
||||
9600 7050 9400 7050
|
||||
Wire Wire Line
|
||||
9600 7150 9400 7150
|
||||
Entry Wire Line
|
||||
7400 6950 7300 6850
|
||||
Entry Wire Line
|
||||
7300 6750 7400 6850
|
||||
Entry Wire Line
|
||||
7300 6650 7400 6750
|
||||
Entry Wire Line
|
||||
7300 6550 7400 6650
|
||||
Wire Wire Line
|
||||
7400 6550 7600 6550
|
||||
Wire Wire Line
|
||||
7400 6650 7600 6650
|
||||
Wire Wire Line
|
||||
7400 6750 7600 6750
|
||||
Wire Wire Line
|
||||
7400 6850 7600 6850
|
||||
Wire Wire Line
|
||||
7400 6950 7600 6950
|
||||
Entry Wire Line
|
||||
7400 7050 7300 6950
|
||||
Wire Wire Line
|
||||
7400 7050 7600 7050
|
||||
Entry Wire Line
|
||||
7400 7150 7300 7050
|
||||
Wire Wire Line
|
||||
7400 7150 7600 7150
|
||||
Wire Bus Line
|
||||
11200 7550 9700 7550
|
||||
Wire Bus Line
|
||||
11200 7550 14650 7550
|
||||
Connection ~ 11200 7550
|
||||
Text GLabel 9650 4750 2 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
9400 4750 9650 4750
|
||||
Text GLabel 9650 4850 2 50 Input ~ 0
|
||||
RWR
|
||||
Wire Wire Line
|
||||
9400 4850 9650 4850
|
||||
Text GLabel 14050 5550 2 50 Input ~ 0
|
||||
RWR
|
||||
Wire Wire Line
|
||||
13800 5550 14050 5550
|
||||
Entry Wire Line
|
||||
14550 5150 14650 5250
|
||||
Wire Wire Line
|
||||
13800 5150 14550 5150
|
||||
Entry Wire Line
|
||||
14550 4850 14650 4950
|
||||
Wire Wire Line
|
||||
13800 4850 14550 4850
|
||||
Entry Wire Line
|
||||
14550 4750 14650 4850
|
||||
Wire Wire Line
|
||||
13800 4750 14550 4750
|
||||
Wire Wire Line
|
||||
11300 5750 12200 5750
|
||||
Entry Wire Line
|
||||
11200 5350 11300 5450
|
||||
Wire Wire Line
|
||||
11300 5450 12200 5450
|
||||
Wire Bus Line
|
||||
9700 5350 11200 5350
|
||||
Wire Bus Line
|
||||
11200 5350 11200 4100
|
||||
Wire Bus Line
|
||||
11200 4100 14650 4100
|
||||
Wire Wire Line
|
||||
3250 5250 3250 5200
|
||||
Wire Wire Line
|
||||
4100 5550 4250 5550
|
||||
Wire Wire Line
|
||||
4100 5650 4250 5650
|
||||
Wire Wire Line
|
||||
4100 5750 4250 5750
|
||||
Wire Wire Line
|
||||
4100 5850 4250 5850
|
||||
Wire Wire Line
|
||||
4100 5950 4250 5950
|
||||
Wire Wire Line
|
||||
4100 6050 4250 6050
|
||||
Wire Wire Line
|
||||
4100 6150 4250 6150
|
||||
Wire Wire Line
|
||||
4100 6250 4250 6250
|
||||
Wire Wire Line
|
||||
2700 7200 2100 7200
|
||||
Wire Wire Line
|
||||
2100 7200 2100 3700
|
||||
Wire Wire Line
|
||||
7600 4950 7450 4950
|
||||
Wire Wire Line
|
||||
8050 4200 9900 4200
|
||||
Wire Wire Line
|
||||
9900 4200 9900 4950
|
||||
Wire Wire Line
|
||||
9900 4950 9400 4950
|
||||
Wire Wire Line
|
||||
12200 5150 11950 5150
|
||||
Wire Wire Line
|
||||
2700 7500 1950 7500
|
||||
Wire Wire Line
|
||||
1950 7500 1950 4850
|
||||
Wire Wire Line
|
||||
2100 3700 2750 3700
|
||||
Text Label 2500 5500 0 50 ~ 0
|
||||
A0
|
||||
Text Label 2500 5600 0 50 ~ 0
|
||||
A1
|
||||
Text Label 2500 5700 0 50 ~ 0
|
||||
A2
|
||||
Text Label 2500 5800 0 50 ~ 0
|
||||
A3
|
||||
Text Label 2500 5900 0 50 ~ 0
|
||||
A4
|
||||
Text Label 2500 6000 0 50 ~ 0
|
||||
A5
|
||||
Text Label 2500 6100 0 50 ~ 0
|
||||
A6
|
||||
Text Label 2500 6200 0 50 ~ 0
|
||||
A7
|
||||
Text Label 2500 6300 0 50 ~ 0
|
||||
A8
|
||||
Text Label 2500 6400 0 50 ~ 0
|
||||
A9
|
||||
Text Label 2500 6500 0 50 ~ 0
|
||||
A10
|
||||
Text Label 4150 5550 0 50 ~ 0
|
||||
D0
|
||||
Text Label 4150 5650 0 50 ~ 0
|
||||
D1
|
||||
Text Label 4150 5750 0 50 ~ 0
|
||||
D2
|
||||
Text Label 4150 5850 0 50 ~ 0
|
||||
D3
|
||||
Text Label 4150 5950 0 50 ~ 0
|
||||
D4
|
||||
Text Label 4150 6050 0 50 ~ 0
|
||||
D5
|
||||
Text Label 4150 6150 0 50 ~ 0
|
||||
D6
|
||||
Text Label 4150 6250 0 50 ~ 0
|
||||
D7
|
||||
Text Label 7400 6550 0 50 ~ 0
|
||||
D1
|
||||
Text Label 7400 6650 0 50 ~ 0
|
||||
D2
|
||||
Text Label 7400 6750 0 50 ~ 0
|
||||
D3
|
||||
Text Label 7400 6850 0 50 ~ 0
|
||||
D4
|
||||
Text Label 7400 6950 0 50 ~ 0
|
||||
D5
|
||||
Text Label 7400 7050 0 50 ~ 0
|
||||
D6
|
||||
Text Label 7400 7150 0 50 ~ 0
|
||||
D7
|
||||
Text Label 7400 5250 0 50 ~ 0
|
||||
A0
|
||||
Text Label 7400 5350 0 50 ~ 0
|
||||
A1
|
||||
Text Label 7400 5450 0 50 ~ 0
|
||||
A2
|
||||
Text Label 7400 5550 0 50 ~ 0
|
||||
A3
|
||||
Text Label 7400 5650 0 50 ~ 0
|
||||
A4
|
||||
Text Label 7400 5750 0 50 ~ 0
|
||||
A5
|
||||
Text Label 7400 5850 0 50 ~ 0
|
||||
A6
|
||||
Text Label 7400 5950 0 50 ~ 0
|
||||
A7
|
||||
Text Label 7400 6050 0 50 ~ 0
|
||||
A8
|
||||
Text Label 7400 6150 0 50 ~ 0
|
||||
A9
|
||||
Text Label 9450 5250 0 50 ~ 0
|
||||
AR0
|
||||
Text Label 9450 5350 0 50 ~ 0
|
||||
AR1
|
||||
Text Label 9450 5450 0 50 ~ 0
|
||||
AR2
|
||||
Text Label 9450 5550 0 50 ~ 0
|
||||
AR3
|
||||
Text Label 14350 5150 0 50 ~ 0
|
||||
AR0
|
||||
Text Label 14350 4850 0 50 ~ 0
|
||||
AR1
|
||||
Text Label 14350 4750 0 50 ~ 0
|
||||
AR2
|
||||
Text Label 11400 5450 0 50 ~ 0
|
||||
AR3
|
||||
Text Label 9400 6550 0 50 ~ 0
|
||||
DR1
|
||||
Text Label 9400 6650 0 50 ~ 0
|
||||
DR2
|
||||
Text Label 9400 6750 0 50 ~ 0
|
||||
DR3
|
||||
Text Label 9400 6850 0 50 ~ 0
|
||||
DR4
|
||||
Text Label 9400 6950 0 50 ~ 0
|
||||
DR5
|
||||
Text Label 9400 7050 0 50 ~ 0
|
||||
DR6
|
||||
Text Label 9400 7150 0 50 ~ 0
|
||||
DR7
|
||||
Text Label 11350 5850 0 50 ~ 0
|
||||
DR0
|
||||
Text Label 11350 6050 0 50 ~ 0
|
||||
DR1
|
||||
Text Label 11350 5750 0 50 ~ 0
|
||||
DR2
|
||||
Text Label 14350 6150 0 50 ~ 0
|
||||
DR3
|
||||
Text Label 14350 5750 0 50 ~ 0
|
||||
DR4
|
||||
Text Label 14350 5650 0 50 ~ 0
|
||||
DR5
|
||||
Text Label 14350 5450 0 50 ~ 0
|
||||
DR6
|
||||
Text Label 14350 5350 0 50 ~ 0
|
||||
DR7
|
||||
$Comp
|
||||
L Connector_Generic:Conn_02x02_Odd_Even J2
|
||||
U 1 1 615F9C72
|
||||
P 2950 3700
|
||||
F 0 "J2" H 3000 3917 50 0000 C CNN
|
||||
F 1 "Conn_02x02_Odd_Even" H 3000 3826 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_Vertical" H 2950 3700 50 0001 C CNN
|
||||
F 3 "~" H 2950 3700 50 0001 C CNN
|
||||
1 2950 3700
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
1850 3800 2750 3800
|
||||
Wire Wire Line
|
||||
1850 7400 2700 7400
|
||||
Wire Wire Line
|
||||
3250 3700 3250 3800
|
||||
Wire Wire Line
|
||||
1950 4850 7600 4850
|
||||
Wire Wire Line
|
||||
3250 3800 7200 3800
|
||||
Wire Wire Line
|
||||
7200 3800 7200 4750
|
||||
Connection ~ 3250 3800
|
||||
Wire Wire Line
|
||||
7200 4750 7600 4750
|
||||
$Comp
|
||||
L Connector_Generic:Conn_02x04_Odd_Even J5
|
||||
U 1 1 61627517
|
||||
P 10300 5750
|
||||
F 0 "J5" H 10350 6067 50 0000 C CNN
|
||||
F 1 "Conn_02x02_Odd_Even" H 10350 5976 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_2x04_P2.54mm_Vertical" H 10300 5750 50 0001 C CNN
|
||||
F 3 "~" H 10300 5750 50 0001 C CNN
|
||||
1 10300 5750
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
9650 5650 9650 5700
|
||||
Wire Wire Line
|
||||
9650 5700 9750 5700
|
||||
Wire Wire Line
|
||||
9750 5700 9750 5650
|
||||
Wire Wire Line
|
||||
9750 5650 10100 5650
|
||||
Wire Wire Line
|
||||
9400 5650 9650 5650
|
||||
Wire Wire Line
|
||||
9400 5750 10100 5750
|
||||
Wire Wire Line
|
||||
10600 5650 10800 5650
|
||||
Wire Wire Line
|
||||
10800 5650 10800 5550
|
||||
Wire Wire Line
|
||||
10800 5550 12200 5550
|
||||
Wire Wire Line
|
||||
10600 5750 10650 5750
|
||||
Wire Wire Line
|
||||
10850 5750 10850 5600
|
||||
Wire Wire Line
|
||||
10850 5600 12000 5600
|
||||
Wire Wire Line
|
||||
12000 5600 12000 5650
|
||||
Wire Wire Line
|
||||
12000 5650 12200 5650
|
||||
Wire Wire Line
|
||||
9400 5850 10100 5850
|
||||
Wire Wire Line
|
||||
9400 5950 10100 5950
|
||||
Wire Wire Line
|
||||
10600 5850 10700 5850
|
||||
Wire Wire Line
|
||||
10900 5850 10900 5250
|
||||
Wire Wire Line
|
||||
10900 5250 12200 5250
|
||||
Wire Wire Line
|
||||
10600 5950 10750 5950
|
||||
Wire Wire Line
|
||||
11000 5950 11000 5300
|
||||
Wire Wire Line
|
||||
11000 5300 12050 5300
|
||||
Wire Wire Line
|
||||
12050 5300 12050 5350
|
||||
Wire Wire Line
|
||||
12050 5350 12200 5350
|
||||
$Comp
|
||||
L Connector_Generic:Conn_02x07_Odd_Even J6
|
||||
U 1 1 6166C407
|
||||
P 12450 2400
|
||||
F 0 "J6" H 12500 2917 50 0000 C CNN
|
||||
F 1 "Conn_02x07_Odd_Even" H 12500 2826 50 0000 C CNN
|
||||
F 2 "Connector_PinSocket_2.54mm:PinSocket_2x07_P2.54mm_Vertical" H 12450 2400 50 0001 C CNN
|
||||
F 3 "~" H 12450 2400 50 0001 C CNN
|
||||
1 12450 2400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Connection ~ 10600 5650
|
||||
Connection ~ 10650 5750
|
||||
Wire Wire Line
|
||||
10650 5750 10850 5750
|
||||
Connection ~ 10700 5850
|
||||
Wire Wire Line
|
||||
10700 5850 10900 5850
|
||||
Connection ~ 10750 5950
|
||||
Wire Wire Line
|
||||
10750 5950 11000 5950
|
||||
Wire Wire Line
|
||||
12250 2100 10600 2100
|
||||
Wire Wire Line
|
||||
10600 2100 10600 5650
|
||||
Wire Wire Line
|
||||
12250 2200 10650 2200
|
||||
Wire Wire Line
|
||||
10650 2200 10650 5750
|
||||
Wire Wire Line
|
||||
12250 2300 10700 2300
|
||||
Wire Wire Line
|
||||
10700 2300 10700 5850
|
||||
Wire Wire Line
|
||||
12250 2400 10750 2400
|
||||
Wire Wire Line
|
||||
10750 2400 10750 5950
|
||||
Wire Wire Line
|
||||
12000 5050 12000 2500
|
||||
Wire Wire Line
|
||||
12000 2500 12250 2500
|
||||
Wire Wire Line
|
||||
12000 5050 12200 5050
|
||||
Wire Wire Line
|
||||
11950 5150 11950 2600
|
||||
Wire Wire Line
|
||||
11950 2600 12250 2600
|
||||
Wire Wire Line
|
||||
12200 4850 12100 4850
|
||||
Wire Wire Line
|
||||
12100 4850 12100 2850
|
||||
Wire Wire Line
|
||||
12100 2850 12850 2850
|
||||
Wire Wire Line
|
||||
12850 2850 12850 2700
|
||||
Wire Wire Line
|
||||
12850 2700 12750 2700
|
||||
Wire Wire Line
|
||||
12200 4950 12050 4950
|
||||
Wire Wire Line
|
||||
12050 4950 12050 2700
|
||||
Wire Wire Line
|
||||
12050 2700 12250 2700
|
||||
Wire Wire Line
|
||||
13800 6050 16050 6050
|
||||
Wire Wire Line
|
||||
16050 6050 16050 2100
|
||||
Wire Wire Line
|
||||
16050 2100 12750 2100
|
||||
Wire Wire Line
|
||||
13800 5950 15950 5950
|
||||
Wire Wire Line
|
||||
15950 5950 15950 2200
|
||||
Wire Wire Line
|
||||
15950 2200 12750 2200
|
||||
Wire Wire Line
|
||||
14550 5850 14550 5900
|
||||
Wire Wire Line
|
||||
14800 5900 14800 5850
|
||||
Wire Wire Line
|
||||
14800 5850 15850 5850
|
||||
Wire Wire Line
|
||||
15850 5850 15850 2300
|
||||
Wire Wire Line
|
||||
15850 2300 12750 2300
|
||||
Wire Wire Line
|
||||
13800 5850 14550 5850
|
||||
Wire Wire Line
|
||||
14550 5900 14800 5900
|
||||
Wire Wire Line
|
||||
13800 5050 14550 5050
|
||||
Wire Wire Line
|
||||
14550 5050 14550 5100
|
||||
Wire Wire Line
|
||||
14550 5100 15750 5100
|
||||
Wire Wire Line
|
||||
15750 2400 12750 2400
|
||||
Wire Wire Line
|
||||
15750 2400 15750 5100
|
||||
Wire Wire Line
|
||||
13800 4950 14550 4950
|
||||
Wire Wire Line
|
||||
14550 4950 14550 5000
|
||||
Wire Wire Line
|
||||
14550 5000 15650 5000
|
||||
Wire Wire Line
|
||||
15650 2500 12750 2500
|
||||
Wire Wire Line
|
||||
15650 2500 15650 5000
|
||||
$Comp
|
||||
L Connector_Generic:Conn_02x02_Odd_Even J4
|
||||
U 1 1 61709865
|
||||
P 8400 2800
|
||||
F 0 "J4" H 8450 3017 50 0000 C CNN
|
||||
F 1 "Conn_02x02_Odd_Even" H 8450 2926 50 0000 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_2x02_P2.54mm_Vertical" H 8400 2800 50 0001 C CNN
|
||||
F 3 "~" H 8400 2800 50 0001 C CNN
|
||||
1 8400 2800
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
7450 4950 7450 2800
|
||||
Wire Wire Line
|
||||
7450 2800 8200 2800
|
||||
Wire Wire Line
|
||||
8050 2900 8200 2900
|
||||
Wire Wire Line
|
||||
8050 2900 8050 4200
|
||||
Wire Wire Line
|
||||
8700 2800 11600 2800
|
||||
Wire Wire Line
|
||||
11600 2800 11600 5050
|
||||
Wire Wire Line
|
||||
11600 5050 12000 5050
|
||||
Connection ~ 12000 5050
|
||||
Wire Wire Line
|
||||
8700 2900 11500 2900
|
||||
Wire Wire Line
|
||||
11500 2900 11500 5150
|
||||
Wire Wire Line
|
||||
11500 5150 11950 5150
|
||||
Connection ~ 11950 5150
|
||||
$Comp
|
||||
L Device:C C1
|
||||
U 1 1 6174221E
|
||||
P 5250 8150
|
||||
F 0 "C1" H 5365 8196 50 0000 L CNN
|
||||
F 1 "C" H 5365 8105 50 0000 L CNN
|
||||
F 2 "Capacitor_THT:C_Disc_D10.5mm_W5.0mm_P10.00mm" H 5288 8000 50 0001 C CNN
|
||||
F 3 "~" H 5250 8150 50 0001 C CNN
|
||||
1 5250 8150
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
Text GLabel 5250 8400 3 50 Input ~ 0
|
||||
GND
|
||||
Text GLabel 5250 7900 1 50 Input ~ 0
|
||||
VCC
|
||||
Wire Wire Line
|
||||
5250 7900 5250 8000
|
||||
Wire Wire Line
|
||||
5250 8300 5250 8400
|
||||
Wire Bus Line
|
||||
2400 4950 7300 4950
|
||||
Wire Wire Line
|
||||
1850 2200 5000 2200
|
||||
Wire Wire Line
|
||||
5000 2200 5000 1850
|
||||
Wire Wire Line
|
||||
1850 2200 1850 3800
|
||||
Connection ~ 1850 3800
|
||||
Wire Wire Line
|
||||
1850 3800 1850 7400
|
||||
Wire Wire Line
|
||||
2100 3700 2100 2300
|
||||
Wire Wire Line
|
||||
2100 2300 5100 2300
|
||||
Wire Wire Line
|
||||
5100 2300 5100 1850
|
||||
Connection ~ 2100 3700
|
||||
Wire Wire Line
|
||||
8050 2900 5300 2900
|
||||
Wire Wire Line
|
||||
5300 2900 5300 1850
|
||||
Connection ~ 8050 2900
|
||||
Wire Wire Line
|
||||
7450 2800 5200 2800
|
||||
Wire Wire Line
|
||||
5200 2800 5200 1850
|
||||
Connection ~ 7450 2800
|
||||
Text GLabel 7550 5050 0 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
7550 5050 7600 5050
|
||||
Text GLabel 9450 5050 2 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
9450 5050 9400 5050
|
||||
Text GLabel 9450 6050 2 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
9450 6050 9400 6050
|
||||
Text GLabel 9450 6150 2 50 Input ~ 0
|
||||
GND
|
||||
Wire Wire Line
|
||||
9450 6150 9400 6150
|
||||
$Comp
|
||||
L Connector_Generic:Conn_01x04 J3
|
||||
U 1 1 618300D7
|
||||
P 5100 1650
|
||||
F 0 "J3" V 5064 1362 50 0000 R CNN
|
||||
F 1 "Conn_01x04" V 4973 1362 50 0000 R CNN
|
||||
F 2 "Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical" H 5100 1650 50 0001 C CNN
|
||||
F 3 "~" H 5100 1650 50 0001 C CNN
|
||||
1 5100 1650
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
Wire Wire Line
|
||||
9450 6250 9400 6250
|
||||
Text GLabel 9450 6250 2 50 Input ~ 0
|
||||
GND
|
||||
Text Label 9400 6450 0 50 ~ 0
|
||||
DR0
|
||||
Text Label 7400 6250 0 50 ~ 0
|
||||
A10
|
||||
Text Label 7400 6450 0 50 ~ 0
|
||||
D0
|
||||
Wire Bus Line
|
||||
4350 6350 7300 6350
|
||||
Wire Wire Line
|
||||
7400 6450 7600 6450
|
||||
Entry Wire Line
|
||||
7300 6350 7400 6450
|
||||
Entry Wire Line
|
||||
7300 6450 7400 6550
|
||||
Wire Wire Line
|
||||
9600 6450 9400 6450
|
||||
Entry Wire Line
|
||||
9600 6450 9700 6550
|
||||
Wire Wire Line
|
||||
7400 6250 7600 6250
|
||||
Entry Wire Line
|
||||
7400 6250 7300 6150
|
||||
$Comp
|
||||
L Memory_RAM:IDT7132 U1
|
||||
U 1 1 61296796
|
||||
P 8500 5950
|
||||
F 0 "U1" H 9050 7400 50 0000 C CNN
|
||||
F 1 "IDT7132" H 8950 4500 50 0000 C CNN
|
||||
F 2 "Package_DIP:DIP-48_W15.24mm_LongPads" H 8500 5950 50 0001 C CNN
|
||||
F 3 "" H 8500 5950 50 0001 C CNN
|
||||
1 8500 5950
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
NoConn ~ 12750 2600
|
||||
NoConn ~ 4100 6450
|
||||
NoConn ~ 4100 6550
|
||||
NoConn ~ 4100 6650
|
||||
NoConn ~ 4100 6750
|
||||
NoConn ~ 4100 6950
|
||||
NoConn ~ 4100 7050
|
||||
NoConn ~ 4100 7150
|
||||
NoConn ~ 4100 7350
|
||||
NoConn ~ 4100 7450
|
||||
NoConn ~ 4100 7550
|
||||
NoConn ~ 4100 7650
|
||||
NoConn ~ 4100 7850
|
||||
NoConn ~ 4100 8050
|
||||
NoConn ~ 2700 8100
|
||||
NoConn ~ 2700 7900
|
||||
NoConn ~ 2700 7800
|
||||
NoConn ~ 2700 7700
|
||||
NoConn ~ 2700 6600
|
||||
NoConn ~ 2700 6700
|
||||
NoConn ~ 2700 6800
|
||||
NoConn ~ 2700 6900
|
||||
NoConn ~ 2700 7000
|
||||
NoConn ~ 2700 7300
|
||||
NoConn ~ 3350 5250
|
||||
NoConn ~ 3450 5250
|
||||
NoConn ~ 3550 5250
|
||||
NoConn ~ 12200 6150
|
||||
NoConn ~ 12200 6250
|
||||
NoConn ~ 12200 6350
|
||||
NoConn ~ 13800 6250
|
||||
NoConn ~ 13800 6350
|
||||
NoConn ~ 13800 6450
|
||||
NoConn ~ 12200 4650
|
||||
NoConn ~ 12200 4750
|
||||
Text Label 12050 5550 0 50 ~ 0
|
||||
IO26
|
||||
Text Label 12050 5650 0 50 ~ 0
|
||||
IO27
|
||||
Text Label 12050 5350 0 50 ~ 0
|
||||
IO33
|
||||
Text Label 12050 5450 0 50 ~ 0
|
||||
IO25
|
||||
Text Label 12050 5050 0 50 ~ 0
|
||||
IO34
|
||||
Text Label 12050 5150 0 50 ~ 0
|
||||
IO35
|
||||
Text Label 12050 5250 0 50 ~ 0
|
||||
IO32
|
||||
Text Label 12100 4850 0 50 ~ 0
|
||||
SENVP
|
||||
Text Label 12100 4950 0 50 ~ 0
|
||||
SENVN
|
||||
Text Label 13800 4950 0 50 ~ 0
|
||||
TX
|
||||
Text Label 13800 5050 0 50 ~ 0
|
||||
RX
|
||||
Text Label 13850 5850 0 50 ~ 0
|
||||
IO4
|
||||
Text Label 13850 5950 0 50 ~ 0
|
||||
IO0
|
||||
Text Label 13850 6050 0 50 ~ 0
|
||||
IO2
|
||||
Text Label 9400 5650 0 50 ~ 0
|
||||
AR4
|
||||
Text Label 9400 5750 0 50 ~ 0
|
||||
AR5
|
||||
Text Label 9400 5850 0 50 ~ 0
|
||||
AR6
|
||||
Text Label 9400 5950 0 50 ~ 0
|
||||
AR7
|
||||
Text Label 7500 4950 0 50 ~ 0
|
||||
BSYL
|
||||
Text Label 9350 4950 0 50 ~ 0
|
||||
BSYR
|
||||
Text Label 2250 7200 0 50 ~ 0
|
||||
IOSEL
|
||||
Text Label 2250 7400 0 50 ~ 0
|
||||
DEVSEL
|
||||
Text Label 2250 7500 0 50 ~ 0
|
||||
RW
|
||||
Text Label 3450 3800 0 50 ~ 0
|
||||
CEL
|
||||
Wire Bus Line
|
||||
9700 5350 9700 5650
|
||||
Wire Bus Line
|
||||
11200 5650 11200 7550
|
||||
Wire Bus Line
|
||||
14650 4100 14650 5250
|
||||
Wire Bus Line
|
||||
4350 5650 4350 6350
|
||||
Wire Bus Line
|
||||
14650 5450 14650 7550
|
||||
Wire Bus Line
|
||||
7300 6350 7300 7050
|
||||
Wire Bus Line
|
||||
9700 6550 9700 7550
|
||||
Wire Bus Line
|
||||
7300 4950 7300 6150
|
||||
Wire Bus Line
|
||||
2400 4950 2400 6400
|
||||
$EndSCHEMATC
|
@ -14,7 +14,7 @@ Comment3 ""
|
||||
Comment4 "Nathanial Hendler"
|
||||
$EndDescr
|
||||
$Comp
|
||||
L kicad-library:AppleIIBus J1
|
||||
L apple2idiot_new-rescue:AppleIIBus-kicad-library J1
|
||||
U 1 1 61291E51
|
||||
P 3400 6800
|
||||
F 0 "J1" H 3950 8300 50 0000 C CNN
|
||||
@ -25,7 +25,7 @@ F 3 "" H 3400 6800 50 0001 C CNN
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
$Comp
|
||||
L ESP32-DEV_KIT:ESP32-DEVKITC-32D U2
|
||||
L apple2idiot_new-rescue:ESP32-DEVKITC-32D-ESP32-DEV_KIT U2
|
||||
U 1 1 612B5485
|
||||
P 13000 5550
|
||||
F 0 "U2" H 13500 6600 50 0000 C CNN
|
||||
@ -865,6 +865,18 @@ Text Label 9400 5850 0 50 ~ 0
|
||||
AR6
|
||||
Text Label 9400 5950 0 50 ~ 0
|
||||
AR7
|
||||
Text Label 7500 4950 0 50 ~ 0
|
||||
BSYL
|
||||
Text Label 9350 4950 0 50 ~ 0
|
||||
BSYR
|
||||
Text Label 2250 7200 0 50 ~ 0
|
||||
IOSEL
|
||||
Text Label 2250 7400 0 50 ~ 0
|
||||
DEVSEL
|
||||
Text Label 2250 7500 0 50 ~ 0
|
||||
RW
|
||||
Text Label 3450 3800 0 50 ~ 0
|
||||
CEL
|
||||
Wire Bus Line
|
||||
9700 5350 9700 5650
|
||||
Wire Bus Line
|
||||
@ -883,16 +895,4 @@ Wire Bus Line
|
||||
7300 4950 7300 6150
|
||||
Wire Bus Line
|
||||
2400 4950 2400 6400
|
||||
Text Label 7500 4950 0 50 ~ 0
|
||||
BSYL
|
||||
Text Label 9350 4950 0 50 ~ 0
|
||||
BSYR
|
||||
Text Label 2250 7200 0 50 ~ 0
|
||||
IOSEL
|
||||
Text Label 2250 7400 0 50 ~ 0
|
||||
DEVSEL
|
||||
Text Label 2250 7500 0 50 ~ 0
|
||||
RW
|
||||
Text Label 3450 3800 0 50 ~ 0
|
||||
CEL
|
||||
$EndSCHEMATC
|
||||
|
@ -689,7 +689,7 @@ U 1 1 6174221E
|
||||
P 5250 8150
|
||||
F 0 "C1" H 5365 8196 50 0000 L CNN
|
||||
F 1 "C" H 5365 8105 50 0000 L CNN
|
||||
F 2 "" H 5288 8000 50 0001 C CNN
|
||||
F 2 "Capacitor_THT:C_Disc_D10.5mm_W5.0mm_P10.00mm" H 5288 8000 50 0001 C CNN
|
||||
F 3 "~" H 5250 8150 50 0001 C CNN
|
||||
1 5250 8150
|
||||
1 0 0 -1
|
||||
@ -752,7 +752,7 @@ U 1 1 618300D7
|
||||
P 5100 1650
|
||||
F 0 "J3" V 5064 1362 50 0000 R CNN
|
||||
F 1 "Conn_01x04" V 4973 1362 50 0000 R CNN
|
||||
F 2 "" H 5100 1650 50 0001 C CNN
|
||||
F 2 "Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical" H 5100 1650 50 0001 C CNN
|
||||
F 3 "~" H 5100 1650 50 0001 C CNN
|
||||
1 5100 1650
|
||||
0 -1 -1 0
|
||||
@ -829,6 +829,42 @@ NoConn ~ 13800 6350
|
||||
NoConn ~ 13800 6450
|
||||
NoConn ~ 12200 4650
|
||||
NoConn ~ 12200 4750
|
||||
Text Label 12050 5550 0 50 ~ 0
|
||||
IO26
|
||||
Text Label 12050 5650 0 50 ~ 0
|
||||
IO27
|
||||
Text Label 12050 5350 0 50 ~ 0
|
||||
IO33
|
||||
Text Label 12050 5450 0 50 ~ 0
|
||||
IO25
|
||||
Text Label 12050 5050 0 50 ~ 0
|
||||
IO34
|
||||
Text Label 12050 5150 0 50 ~ 0
|
||||
IO35
|
||||
Text Label 12050 5250 0 50 ~ 0
|
||||
IO32
|
||||
Text Label 12100 4850 0 50 ~ 0
|
||||
SENVP
|
||||
Text Label 12100 4950 0 50 ~ 0
|
||||
SENVN
|
||||
Text Label 13800 4950 0 50 ~ 0
|
||||
TX
|
||||
Text Label 13800 5050 0 50 ~ 0
|
||||
RX
|
||||
Text Label 13850 5850 0 50 ~ 0
|
||||
IO4
|
||||
Text Label 13850 5950 0 50 ~ 0
|
||||
IO0
|
||||
Text Label 13850 6050 0 50 ~ 0
|
||||
IO2
|
||||
Text Label 9400 5650 0 50 ~ 0
|
||||
AR4
|
||||
Text Label 9400 5750 0 50 ~ 0
|
||||
AR5
|
||||
Text Label 9400 5850 0 50 ~ 0
|
||||
AR6
|
||||
Text Label 9400 5950 0 50 ~ 0
|
||||
AR7
|
||||
Wire Bus Line
|
||||
9700 5350 9700 5650
|
||||
Wire Bus Line
|
||||
@ -847,4 +883,16 @@ Wire Bus Line
|
||||
7300 4950 7300 6150
|
||||
Wire Bus Line
|
||||
2400 4950 2400 6400
|
||||
Text Label 7500 4950 0 50 ~ 0
|
||||
BSYL
|
||||
Text Label 9350 4950 0 50 ~ 0
|
||||
BSYR
|
||||
Text Label 2250 7200 0 50 ~ 0
|
||||
IOSEL
|
||||
Text Label 2250 7400 0 50 ~ 0
|
||||
DEVSEL
|
||||
Text Label 2250 7500 0 50 ~ 0
|
||||
RW
|
||||
Text Label 3450 3800 0 50 ~ 0
|
||||
CEL
|
||||
$EndSCHEMATC
|
||||
|
@ -1,5 +1,8 @@
|
||||
/*
|
||||
blah blah blah
|
||||
|
||||
Use this program with the Apple2idIOT card and the basic programs RRAM, WRAM and CMDROT to read/write and rot13
|
||||
a single string contained within the dual port ram on the card.
|
||||
|
||||
*/
|
||||
|
||||
#define DEBUG true
|
||||
@ -34,7 +37,7 @@ byte data_pins[] = {D7R, D6R, D5R, D4R, D3R, D2R, D1R, D0R};
|
||||
#define A7R 33
|
||||
byte address_pins[] = {A0R, A1R, A2R, A3R, A4R, A5R, A6R, A7R};
|
||||
#define ADDRESS_BUS_SIZE 8
|
||||
#define ESP_COMMAND_ADDRESS 0 // This is a hack see function unbusy_ram() for details
|
||||
#define ESP_COMMAND_ADDRESS 0
|
||||
#define APPLE_COMMAND_ADDRESS 1
|
||||
#define SHARED_RAM_START_ADDRESS 2
|
||||
#define RAM_BUSY 666
|
||||
@ -58,7 +61,7 @@ byte address_pins[] = {A0R, A1R, A2R, A3R, A4R, A5R, A6R, A7R};
|
||||
/* Misc. */
|
||||
/*********/
|
||||
|
||||
const long readLoopInterval = 1000; // millis
|
||||
const long readLoopInterval = 100; // millis
|
||||
unsigned long lastReadLoopTime = 0;
|
||||
byte ram[256];
|
||||
volatile byte ram_busy=0;
|
||||
@ -80,29 +83,21 @@ boolean set_address(int address) {
|
||||
return false;
|
||||
}
|
||||
ram_busy = true;
|
||||
//Serial.print(" A:");
|
||||
for (byte i=0; i<ADDRESS_BUS_SIZE; i++) {
|
||||
byte state = bitRead(address, i);
|
||||
digitalWrite(address_pins[i], state);
|
||||
//Serial.print(state);
|
||||
}
|
||||
//Serial.println();
|
||||
return true;
|
||||
}
|
||||
|
||||
byte read_data(int address) {
|
||||
//Serial.print("READ: ");
|
||||
//Serial.println(address);
|
||||
byte data_bus_read = 0;
|
||||
if (set_address(address)) {
|
||||
digitalWrite(RW_PIN, RW_READ); // Should already be set to RW_READ, but just in case.
|
||||
//Serial.print(" D:");
|
||||
for (byte i=0; i<DATA_BUS_SIZE; i++) {
|
||||
byte pin_state = digitalRead(data_pins[i]);
|
||||
data_bus_read += pin_state * pow(2,i);
|
||||
//Serial.print(pin_state);
|
||||
}
|
||||
//Serial.println();
|
||||
ram_busy = false;
|
||||
unbusy_ram();
|
||||
return data_bus_read;
|
||||
@ -111,9 +106,6 @@ byte read_data(int address) {
|
||||
}
|
||||
}
|
||||
|
||||
//signed int convert_to_signed_byte(byte byte_to_convert) {
|
||||
//if (abs(requested_byte_to_write) > 127) {
|
||||
//if (requested_byte_to_write < 0) {
|
||||
|
||||
boolean write_data(byte address, byte byte_to_write) {
|
||||
Serial.print("WRITE: ");
|
||||
@ -186,25 +178,6 @@ void read_ram(int size_to_read) {
|
||||
}
|
||||
|
||||
|
||||
void prefill_ram_with_pattern_data() {
|
||||
write_data(15, 0); // notify Apple IIe we are done processing command byte
|
||||
write_data(14, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(13, 1); // notify Apple IIe we are done processing command byte
|
||||
write_data(12, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(11, 2); // notify Apple IIe we are done processing command byte
|
||||
write_data(10, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(9, 3); // notify Apple IIe we are done processing command byte
|
||||
write_data(8, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(7, 4); // notify Apple IIe we are done processing command byte
|
||||
write_data(6, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(5, 5); // notify Apple IIe we are done processing command byte
|
||||
write_data(4, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(3, 6); // notify Apple IIe we are done processing command byte
|
||||
write_data(2, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(1, 7); // notify Apple IIe we are done processing command byte
|
||||
write_data(0, 123); // notify Apple IIe we are done processing command byte
|
||||
}
|
||||
|
||||
/*################################################
|
||||
# Setup #
|
||||
################################################*/
|
||||
@ -234,16 +207,10 @@ void setup() {
|
||||
pinMode(INPUT_34, INPUT);
|
||||
pinMode(INPUT_35, INPUT);
|
||||
|
||||
//prefill_ram_with_pattern_data();
|
||||
|
||||
Serial.println("-----------------------------------------");
|
||||
Serial.println("Sending string...");
|
||||
|
||||
//delay(10);
|
||||
|
||||
send_string_to_apple("Starting Up!", SHARED_RAM_START_ADDRESS);
|
||||
Serial.println("-----------------------------------------");
|
||||
Serial.println("String sent.");
|
||||
//read_ram(16);
|
||||
}
|
||||
|
||||
@ -277,6 +244,7 @@ void loop() {
|
||||
else if (command_byte != lastAppleCommand){
|
||||
switch(command_byte) {
|
||||
case COMMAND_GENERIC:
|
||||
write_data(ESP_COMMAND_ADDRESS, ACK); // notify Apple IIe we are processing command byte
|
||||
String read_string = read_string_from_ram(SHARED_RAM_START_ADDRESS);
|
||||
send_string_to_apple(rot13(read_string), SHARED_RAM_START_ADDRESS);
|
||||
write_data(APPLE_COMMAND_ADDRESS, ACK); // notify Apple IIe we are processing command byte
|
||||
@ -285,7 +253,6 @@ void loop() {
|
||||
lastAppleCommand = command_byte;
|
||||
Serial.print("Command Read: ");
|
||||
Serial.println(command_byte);
|
||||
write_data(ESP_COMMAND_ADDRESS, ACK); // notify Apple IIe we are processing command byte
|
||||
write_data(ESP_COMMAND_ADDRESS, EOT); // notify Apple IIe we are done processing command byte
|
||||
}
|
||||
lastReadLoopTime = millis();
|
||||
|
476
examples/weather/weather.ino
Normal file
476
examples/weather/weather.ino
Normal file
@ -0,0 +1,476 @@
|
||||
/*
|
||||
blah blah blah
|
||||
*/
|
||||
|
||||
#define DEBUG true
|
||||
|
||||
// Load Wi-Fi library
|
||||
#include <WiFi.h>
|
||||
#include <ArduinoJson.h>
|
||||
|
||||
/**************/
|
||||
/* ESP32 Pins */
|
||||
/**************/
|
||||
|
||||
/* DATA BUS (numbers mean GPIO port) */
|
||||
#define D0R 12
|
||||
#define D1R 13
|
||||
#define D2R 14
|
||||
#define D3R 15
|
||||
#define D4R 16
|
||||
#define D5R 17
|
||||
#define D6R 18
|
||||
#define D7R 19
|
||||
//byte data_pins[] = {D0R, D1R, D2R, D3R, D4R, D5R, D6R, D7R};
|
||||
byte data_pins[] = {D7R, D6R, D5R, D4R, D3R, D2R, D1R, D0R}; // That's the way the Apple II likes it.
|
||||
#define DATA_BUS_SIZE 8
|
||||
|
||||
/* Address Bus */
|
||||
#define A0R 21
|
||||
#define A1R 22
|
||||
#define A2R 23
|
||||
#define A3R 25
|
||||
#define A4R 26
|
||||
#define A5R 27
|
||||
#define A6R 32
|
||||
#define A7R 33
|
||||
byte address_pins[] = {A0R, A1R, A2R, A3R, A4R, A5R, A6R, A7R};
|
||||
#define ADDRESS_BUS_SIZE 8
|
||||
|
||||
/* IDT7132S dual port ram chip enable */
|
||||
#define RW_PIN 5
|
||||
#define RW_WRITE LOW
|
||||
#define RW_READ HIGH
|
||||
|
||||
#define INPUT_35 35
|
||||
#define INPUT_34 34
|
||||
|
||||
//unsigned int data_byte = 0;
|
||||
// fisrt bit is a flag for if the data is from Apple or from ESP32.
|
||||
// /
|
||||
// / last bit is a flag for "more data waiting to be sent".
|
||||
// / /
|
||||
#define COMMAND_FROM_APPLE 0 // 0_______
|
||||
#define COMMAND_FROM_ESP 128 // 1_______
|
||||
#define COMMAND_MORE_DATA_WAITING 1 // _0000001
|
||||
#define COMMAND_NO_DATA_WAITING 0 // _0000001
|
||||
|
||||
#define COMMAND_GENERIC_MESSAGE 2 // _000001_
|
||||
#define COMMAND_FETCH_WEATHER 4 // _000010_
|
||||
#define COMMAND_SEND_LONG_STRING 12 // _000110_
|
||||
#define COMMAND_FORMAT_RAM 126 // _111111_
|
||||
|
||||
#define ETX 3 // ASCII "End of Text" (ETX) character
|
||||
|
||||
/************/
|
||||
/* Interupt */
|
||||
/************/
|
||||
|
||||
/* Variables shared between ISR and main code need to be volatile */
|
||||
volatile bool isr_handled = false;
|
||||
volatile uint32_t raw_register_read;
|
||||
volatile uint16_t raw_register1_read;
|
||||
|
||||
/**********************/
|
||||
/* WiFi and Webserver */
|
||||
/**********************/
|
||||
|
||||
// Replace with your network credentials
|
||||
const char* wifi_ssid = "GSO";
|
||||
//const char* wifi_ssid = "Pixel_8985";
|
||||
const char* wifi_password = "xerxes27";
|
||||
AsyncWebServer web_server(80);
|
||||
//WebServer web_server(80);
|
||||
|
||||
/*******************/
|
||||
/* Weather Service */
|
||||
/*******************/
|
||||
|
||||
const String weather_service_api_key= "0ab97bbbea58592d7c9d64067a34d2d0";
|
||||
const String weather_url = "http://api.openweathermap.org/data/2.5/weather?";
|
||||
|
||||
/*********/
|
||||
/* Misc. */
|
||||
/*********/
|
||||
|
||||
const long readLoopInterval = 10000; // millis
|
||||
unsigned long lastReadLoopTime = 0;
|
||||
//byte ram[ADDRESS_BUS_SIZE];
|
||||
//byte ram[256];
|
||||
byte ram[256];
|
||||
volatile byte ram_busy=0;
|
||||
//const unsigned int RAM_BUSY=666;
|
||||
#define RAM_BUSY 666
|
||||
|
||||
/*################################################
|
||||
# ISR #
|
||||
################################################*/
|
||||
|
||||
void IRAM_ATTR isrDEVSEL(void) {
|
||||
raw_register_read = REG_READ(GPIO_IN_REG);
|
||||
raw_register1_read = REG_READ(GPIO_IN1_REG);
|
||||
isr_handled = true;
|
||||
}
|
||||
|
||||
/*################################################
|
||||
# Functions #
|
||||
################################################*/
|
||||
|
||||
boolean set_address(int address) {
|
||||
if (ram_busy) {
|
||||
Serial.println("BUSY");
|
||||
return false;
|
||||
}
|
||||
ram_busy = true;
|
||||
//Serial.print(" Setting address (");
|
||||
//Serial.print(address);
|
||||
//Serial.println(")");
|
||||
//delay(20);
|
||||
Serial.print(" A:");
|
||||
for (byte i=0; i<ADDRESS_BUS_SIZE; i++) {
|
||||
//for (byte i=ADDRESS_BUS_SIZE; i>0; i--) {
|
||||
byte state = bitRead(address, i);
|
||||
digitalWrite(address_pins[i], state);
|
||||
Serial.print(state);
|
||||
}
|
||||
Serial.println();
|
||||
return true;
|
||||
}
|
||||
|
||||
unsigned int read_data(int address) {
|
||||
Serial.print("READ: ");
|
||||
Serial.println(address);
|
||||
byte data_bus_read = 0;
|
||||
if (set_address(address)) {
|
||||
digitalWrite(RW_PIN, RW_READ); // Should already be set to RW_READ, but just in case.
|
||||
Serial.print(" D:");
|
||||
for (byte i=0; i<DATA_BUS_SIZE; i++) {
|
||||
byte pin_state = digitalRead(data_pins[i]);
|
||||
data_bus_read += pin_state * pow(2,i);
|
||||
Serial.print(pin_state);
|
||||
}
|
||||
Serial.println();
|
||||
ram_busy = false;
|
||||
return data_bus_read;
|
||||
} else {
|
||||
return RAM_BUSY;
|
||||
}
|
||||
}
|
||||
|
||||
//signed int convert_to_signed_byte(byte byte_to_convert) {
|
||||
//if (abs(requested_byte_to_write) > 127) {
|
||||
//if (requested_byte_to_write < 0) {
|
||||
|
||||
boolean write_data(byte address, byte byte_to_write) {
|
||||
Serial.print("WRITE: ");
|
||||
Serial.print(byte_to_write);
|
||||
Serial.print(" -> ");
|
||||
Serial.println(address);
|
||||
if (set_address(address)) {
|
||||
//set_address(address);
|
||||
Serial.print(" D:");
|
||||
for (byte i=0; i<DATA_BUS_SIZE; i++) {
|
||||
byte bit_to_write = (byte_to_write >> i) & 0b00000001;
|
||||
pinMode(data_pins[i], OUTPUT);
|
||||
digitalWrite(data_pins[i], bit_to_write);
|
||||
Serial.print(bit_to_write);
|
||||
}
|
||||
Serial.println();
|
||||
digitalWrite(RW_PIN, RW_WRITE);
|
||||
delay(1);
|
||||
digitalWrite(RW_PIN, RW_READ);
|
||||
for (byte i=0; i<DATA_BUS_SIZE; i++) {
|
||||
pinMode(data_pins[i], INPUT);
|
||||
}
|
||||
ram_busy = false;
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void store_ip_to_ram(byte offset) {
|
||||
IPAddress ip_address = WiFi.localIP();
|
||||
//for (int i=0; i < ADDRESS_BUS_SIZE; i++) {
|
||||
for (int i=0; i < 4; i++) {
|
||||
write_data(i+offset, ip_address[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void send_string_to_apple(String string_to_send, byte command_message) {
|
||||
if (string_to_send.length() > 15 - 1) { // - 1 because of null character at end of string.
|
||||
} else {
|
||||
int c=0;
|
||||
for (c=0; c < string_to_send.length(); c++) {
|
||||
write_data(c, string_to_send[c]);
|
||||
}
|
||||
write_data(c+1, ETX);
|
||||
write_data(15, COMMAND_FROM_ESP + command_message + COMMAND_NO_DATA_WAITING);
|
||||
}
|
||||
}
|
||||
|
||||
void fetch_weather(char* city_name) {
|
||||
HTTPClient http;
|
||||
//http.begin(String(weather_url) + "?q=Tucson,us&APPID=" + String(weather_service_api_key));
|
||||
const String request_url = weather_url + "q=Tucson,us&APPID=" + weather_service_api_key;
|
||||
Serial.println(request_url);
|
||||
http.begin(request_url);
|
||||
int httpCode = http.GET(); //Make the request
|
||||
delay(10);
|
||||
|
||||
if (httpCode > 0) { //Check for the returning code
|
||||
String payload = http.getString();
|
||||
//Serial.println(httpCode);
|
||||
Serial.println("++++++++++++++++++++++++");
|
||||
Serial.println(payload);
|
||||
Serial.println("++++++++++++++++++++++++");
|
||||
StaticJsonDocument<200> filter;
|
||||
filter["weather"][0]["main"] = true;
|
||||
filter["weather"][0]["description"] = true;
|
||||
filter["main"]["humidity"] = true;
|
||||
filter["main"]["temp"] = true;
|
||||
filter["wind"]["speed"] = true;
|
||||
filter["wind"]["deg"] = true;
|
||||
StaticJsonDocument<400> doc;
|
||||
DeserializationError error = deserializeJson(doc, payload, DeserializationOption::Filter(filter));
|
||||
//DeserializationError error = deserializeJson(doc, payload);
|
||||
if (error) {
|
||||
Serial.print(F("deserializeJson() failed: "));
|
||||
Serial.println(error.f_str());
|
||||
} else {
|
||||
//const char* main = doc["main"];
|
||||
Serial.println("----------------------");
|
||||
serializeJsonPretty(doc, Serial);
|
||||
Serial.println("----------------------");
|
||||
serializeJsonPretty(doc["wind"], Serial);
|
||||
Serial.println("----------------------");
|
||||
int temp = doc["main"]["humidity"];
|
||||
int humidity = doc["main"]["humidity"];
|
||||
float wind_speed = doc["wind"]["speed"];
|
||||
int wind_deg = doc["wind"]["speed"];
|
||||
String weather_description = doc["weather"][0]["description"];
|
||||
write_data(0, round(temp-273.15));
|
||||
write_data(1, round(humidity));
|
||||
write_data(2, round(wind_deg/10)); // divide by twn because 360 is too big for 8 bits
|
||||
write_data(3, round(wind_speed));
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
else {
|
||||
Serial.println("Error on HTTP request");
|
||||
}
|
||||
|
||||
http.end(); //Free the resources
|
||||
}
|
||||
|
||||
void read_ram() {
|
||||
//for (int i=0; i < 16; i++) {
|
||||
for (int i=0; i < 256; i++) {
|
||||
unsigned int foo = read_data(i);
|
||||
ram[i] = foo;
|
||||
}
|
||||
}
|
||||
|
||||
String html_template_processor(const String& var) {
|
||||
Serial.println("html_template_processor()");
|
||||
String return_string = "";
|
||||
if (var == "RAM_TABLE") {
|
||||
read_ram();
|
||||
//for (int i=0; i < 16; i++) {
|
||||
for (int i=0; i < 256; i++) {
|
||||
return_string += "<tr><td>"+String(i)+"</td><td>" + String(ram[i]) + "</td></tr>\n";
|
||||
}
|
||||
return return_string;
|
||||
}
|
||||
return var;
|
||||
}
|
||||
|
||||
|
||||
void www_weather(AsyncWebServerRequest *request) {
|
||||
fetch_weather("Tucson");
|
||||
request->send(SPIFFS, "/ram.htm", String(), false, html_template_processor);
|
||||
}
|
||||
void www_root(AsyncWebServerRequest *request) {
|
||||
request->send(SPIFFS, "/index.htm", String(), false, html_template_processor);
|
||||
}
|
||||
void www_ram(AsyncWebServerRequest *request) {
|
||||
request->send(SPIFFS, "/ram.htm", String(), false, html_template_processor);
|
||||
}
|
||||
void www_write_byte(AsyncWebServerRequest *request) {
|
||||
Serial.println("www_write_byte()");
|
||||
String address;
|
||||
String data_byte;
|
||||
if (request->hasParam("address")) {
|
||||
address = request->getParam("address")->value();
|
||||
//Serial.println("Found address: "+address);
|
||||
if (request->hasParam("data")) {
|
||||
data_byte = request->getParam("data")->value();
|
||||
//Serial.println("Found data: "+data_byte);
|
||||
write_data(address.toInt(), data_byte.toInt());
|
||||
}
|
||||
}
|
||||
request->send(SPIFFS, "/ram.htm", String(), false, html_template_processor);
|
||||
}
|
||||
void www_css(AsyncWebServerRequest *request) {
|
||||
request->send(SPIFFS, "/a2i.css", "text/css");
|
||||
}
|
||||
|
||||
void prefill_ram_with_pattern_data() {
|
||||
write_data(15, 0); // notify Apple IIe we are done processing command byte
|
||||
write_data(14, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(13, 1); // notify Apple IIe we are done processing command byte
|
||||
write_data(12, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(11, 2); // notify Apple IIe we are done processing command byte
|
||||
write_data(10, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(9, 3); // notify Apple IIe we are done processing command byte
|
||||
write_data(8, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(7, 4); // notify Apple IIe we are done processing command byte
|
||||
write_data(6, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(5, 5); // notify Apple IIe we are done processing command byte
|
||||
write_data(4, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(3, 6); // notify Apple IIe we are done processing command byte
|
||||
write_data(2, 123); // notify Apple IIe we are done processing command byte
|
||||
write_data(1, 7); // notify Apple IIe we are done processing command byte
|
||||
write_data(0, 123); // notify Apple IIe we are done processing command byte
|
||||
}
|
||||
|
||||
/*################################################
|
||||
# Setup #
|
||||
################################################*/
|
||||
|
||||
void setup() {
|
||||
|
||||
/* Configure ESP32 Pins */
|
||||
pinMode(A0R, OUTPUT); digitalWrite(A0R, LOW);
|
||||
pinMode(A1R, OUTPUT); digitalWrite(A1R, LOW);
|
||||
pinMode(A2R, OUTPUT); digitalWrite(A2R, LOW);
|
||||
pinMode(A3R, OUTPUT); digitalWrite(A3R, LOW);
|
||||
pinMode(A4R, OUTPUT); digitalWrite(A4R, LOW);
|
||||
pinMode(A5R, OUTPUT); digitalWrite(A5R, LOW);
|
||||
pinMode(A6R, OUTPUT); digitalWrite(A6R, LOW);
|
||||
pinMode(A7R, OUTPUT); digitalWrite(A7R, LOW);
|
||||
pinMode(D0R, INPUT);
|
||||
pinMode(D1R, INPUT);
|
||||
pinMode(D2R, INPUT);
|
||||
pinMode(D3R, INPUT);
|
||||
pinMode(D4R, INPUT);
|
||||
pinMode(D5R, INPUT);
|
||||
pinMode(D6R, INPUT);
|
||||
pinMode(D7R, INPUT);
|
||||
pinMode(RW_PIN, OUTPUT); digitalWrite(RW_PIN, RW_READ);
|
||||
|
||||
pinMode(INPUT_34, INPUT);
|
||||
pinMode(INPUT_35, INPUT);
|
||||
|
||||
delay(10);
|
||||
//wifi_scan();
|
||||
|
||||
/* Connect to wifi */
|
||||
Serial.begin(115200);
|
||||
Serial.println("");
|
||||
Serial.println("Starting wifi...");
|
||||
Serial.print(" connecting to: ");
|
||||
Serial.println(wifi_ssid);
|
||||
|
||||
WiFi.begin(wifi_ssid, wifi_password);
|
||||
while (WiFi.status() != WL_CONNECTED) {
|
||||
delay(900);
|
||||
Serial.print(".");
|
||||
}
|
||||
Serial.println("");
|
||||
Serial.println("WiFi connected successfully");
|
||||
Serial.print("Got IP: ");
|
||||
Serial.println(WiFi.localIP()); //Show ESP32 IP on serial
|
||||
prefill_ram_with_pattern_data();
|
||||
store_ip_to_ram(0);
|
||||
//store_ip_to_ram(4);
|
||||
|
||||
/* Start webserver */
|
||||
if(!SPIFFS.begin()){
|
||||
Serial.println("An Error has occurred while mounting SPIFFS");
|
||||
}
|
||||
web_server.on("/", HTTP_GET, www_root);
|
||||
web_server.on("/a2i.css", HTTP_GET, www_css);
|
||||
web_server.on("/ram", HTTP_GET, www_ram);
|
||||
web_server.on("/write_byte", HTTP_GET, www_write_byte);
|
||||
web_server.on("/weather", HTTP_GET, www_weather);
|
||||
web_server.on("/heap", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
request->send(200, "text/plain", "Free Heap: " + String(ESP.getFreeHeap()) + " bytes.");
|
||||
});
|
||||
|
||||
//web_server.on("/hello", HTTP_GET, [](AsyncWebServerRequest *request){
|
||||
//request->send(200, "text/plain", "Hello World");
|
||||
//});
|
||||
|
||||
//web_server.on("/", www_root);
|
||||
web_server.begin();
|
||||
Serial.println("HTTP server started");
|
||||
delay(10);
|
||||
|
||||
/* Display file system contents */
|
||||
Serial.println("-----------------------------------------");
|
||||
File root_filesystem = SPIFFS.open("/");
|
||||
File f = root_filesystem.openNextFile();
|
||||
while(f){
|
||||
Serial.print("FILE: ");
|
||||
Serial.println(f.name());
|
||||
f = root_filesystem.openNextFile();
|
||||
}
|
||||
Serial.println("-----------------------------------------");
|
||||
|
||||
//attachInterrupt(DEVSEL_PIN, isrDEVSEL, LOW);
|
||||
}
|
||||
|
||||
/*################################################
|
||||
# Main #
|
||||
################################################*/
|
||||
|
||||
void loop() {
|
||||
//if (isr_handled) {
|
||||
//data_byte = raw_register_read >> 12 & 0b00000000000011111111;
|
||||
//isr_handled = false;
|
||||
//}
|
||||
|
||||
if ((millis() - lastReadLoopTime) > readLoopInterval) {
|
||||
//Serial.println("+++");
|
||||
unsigned int command_byte = read_data(15);
|
||||
if (command_byte == RAM_BUSY) {
|
||||
Serial.println("Command Read: RAM BUSY");
|
||||
}
|
||||
else if (command_byte < COMMAND_FROM_ESP) {
|
||||
// command came from apple (or webform).
|
||||
Serial.print("Command Read: ");
|
||||
Serial.println(command_byte);
|
||||
//write_data(15, 1); // notify Apple IIe we are processing command byte
|
||||
switch(command_byte) {
|
||||
case COMMAND_FETCH_WEATHER:
|
||||
Serial.println("Fetch Weather");
|
||||
fetch_weather("Tucson");
|
||||
break;
|
||||
case COMMAND_SEND_LONG_STRING:
|
||||
//send_string_to_apple("This is a long string", COMMAND_GENERIC_MESSAGE);
|
||||
send_string_to_apple("ABCDE", COMMAND_GENERIC_MESSAGE);
|
||||
case COMMAND_FORMAT_RAM:
|
||||
Serial.println("Calling prefill_ram_with_pattern_data()");
|
||||
prefill_ram_with_pattern_data();
|
||||
write_data(15, 0); // notify Apple IIe we are done processing command byte
|
||||
break;
|
||||
}
|
||||
/*
|
||||
byte c = 0;
|
||||
while (ram_busy && (c < 10)) {
|
||||
delay(10);
|
||||
c = c+1;
|
||||
Serial.print("_");
|
||||
}
|
||||
Serial.println("^^^^");
|
||||
write_data(15, 0); // notify Apple IIe we are done processing command byte
|
||||
read_data(15); // notify Apple IIe we are done processing command byte
|
||||
*/
|
||||
}
|
||||
lastReadLoopTime = millis();
|
||||
}
|
||||
}
|
12
notes.md
12
notes.md
@ -1,3 +1,9 @@
|
||||
## Debugging board 08/28/2021
|
||||
|
||||
What the ESP thinks is address 0x00 (0xC200) is 0xC2FF,49919 to the Apple.
|
||||
AND the data from the ESP is 192 and the apple sees 3, so the endian is backwards
|
||||
for the data and logic levels for the address are flipped.
|
||||
|
||||
## Needed changes to board
|
||||
|
||||
DONE: Add a GND and +5V breakout.
|
||||
@ -6,6 +12,12 @@ DONE: Unconnect addresses above A7.
|
||||
DONE: Add diode to +5V.
|
||||
|
||||
|
||||
## Thanks
|
||||
|
||||
Renee
|
||||
flux
|
||||
c2t
|
||||
|
||||
## Ordered:
|
||||
|
||||
* 5PCS IDT7132SA100P IDT7132SA DIP-48 HIGH-SPEED 2K x 8 DUAL-PORT STATIC RAM
|
||||
|
Loading…
Reference in New Issue
Block a user