www.cavefischer.at/Sharp Pocket Computer
Mit Arduino UNO das (externe) ROM von Sharp Pocket Computern auslesen
Mit Arduino UNO das externe ROM des Sharp PC-1403 auslesen
Eine Anfrage aus Winterthur in der Schweiz hat mich inspiriert das folgende Programm zu entwickeln.
Es kann damit das (externe) ROM des Sharp Pocket Computers PC-1403 (PC-1403H, EL-5500III) ausgelesen und an einen Arduino UNO übertragen werden.
Das 64 kB große ROM ist in vier Bänke zu je 16384 Byte gegliedert und kann mit dem Basic Befehl PEEK nicht abgefragt werden.
Das Auslesen ist nur mit einem Programm in Maschinensprache, wie z.B. in nachfolgendem Beispiel, möglich. Siehe auch Schulze J. (1987).
Der Ausgang Fo3 (Pin 4) des Sharp Pocket Computers wird zusammen mit dem Eingang IN1 (Pin 9) für einen einfachen Handshake verwendet.
Die Daten werden über die Leitungen Ext1 bis Ext4 (Pins 11, 10, 5, 8) parallel zu je 4 bit übertragen.
Als Beschaltung sind lediglich pull-down Widerstände (z.B. 10kOhm) an den vier Datenleitungen und der Handshake Leitung Fo3 erforderlich.
Beim ersten Aufruf muß das Basic Programm im Sharp Pocket Computer mit RUN gestartet werden, um das Maschinenprogramm in den Speicher zu übertragen.
Dies dauert ca. 14 Sekunden.
Das eigentliche Programm zur Übertragung des externen ROMs an den Arduino wird in der Folge mit DEF A gestartet.
Die Übertragung der 64 kB und die Ausgabe am Serial Monitor der Arduino IDE dauert ca. 38 Sekunden und endet mit einem Piepton.
Steckbrett mit Arduino UNO:
Programm für Arduino:
// Externes 64kB ROM (Bank1, Bank2, Bank3, Bank4) vom Sharp PC-1403 auslesen
// Je Byte 2x4 bit parallel über EXT1-EXT4 übertragen, Handshake mit Fo3 und IN1
unsigned long RomAdr = 16384; // Beginn ext. ROM
int indexBk = 0;
byte ByteArray[4]; // Speicherbereich für 4 Bytes (Bank 1 - Bank 4)
const int IN_Ext1 = 2; // Pin D2, Ext1 Sharp PC-1403, pin 11 der 11-pol. Buchsenleiste
const int IN_Ext2 = 3; // Pin D3, Ext2 Sharp PC-1403, pin 10 der 11-pol. Buchsenleiste
const int IN_Ext3 = 4; // Pin D4, Ext3 Sharp PC-1403, pin 5 der 11-pol. Buchsenleiste
const int IN_Ext4 = 5; // Pin D5, Ext4 Sharp PC-1403, pin 8 der 11-pol. Buchsenleiste
const int IN_Fo3 = 6; // Pin D6, Fo3 Sharp PC-1403, pin 4 der 11-pol. Buchsenleiste
const int OUT_IN1 = 7; // Pin D7, IN1 Sharp PC-1403, pin 9 der 11-pol. Buchsenleiste
const int InfoLED = 13;
byte DataBit1;
byte DataBit2;
byte DataBit3;
byte DataBit4;
byte DataBit5;
byte DataBit6;
byte DataBit7;
byte DataBit8;
byte Nib1;
byte Nib2;
byte DataByte = 0;
int Vorher;
int Jetzt;
void setup() {
Serial.begin(115200);
pinMode(IN_Fo3, INPUT);
pinMode(IN_Ext1, INPUT);
pinMode(IN_Ext2, INPUT);
pinMode(IN_Ext3, INPUT);
pinMode(IN_Ext4, INPUT);
pinMode(OUT_IN1, OUTPUT);
pinMode(InfoLED, OUTPUT);
Serial.println("Ext. ROM PC-1403 64kB");
Serial.println("Adr. ;Bk1;Bk2;Bk3;Bk4");
Vorher = millis();
}
void loop() {
if (digitalRead(IN_Fo3)) { // Data available
digitalWrite(InfoLED, HIGH);
digitalWrite(OUT_IN1, LOW);
DataBit1 = digitalRead(IN_Ext1);
DataBit2 = digitalRead(IN_Ext2);
DataBit3 = digitalRead(IN_Ext3);
DataBit4 = digitalRead(IN_Ext4);
while (digitalRead(IN_Fo3));
while (!digitalRead(IN_Fo3));
DataBit5 = digitalRead(IN_Ext1);
DataBit6 = digitalRead(IN_Ext2);
DataBit7 = digitalRead(IN_Ext3);
DataBit8 = digitalRead(IN_Ext4);
while (digitalRead(IN_Fo3));
Nib1 = DataBit1 | (DataBit2 << 1) | (DataBit3 << 2) | (DataBit4 << 3);
Nib2 = (DataBit5 << 4) | (DataBit6 << 5) | (DataBit7 << 6) | (DataBit8 << 7);
DataByte = Nib1 | Nib2;
AddByte();
DataByte = 0;
digitalWrite(InfoLED, LOW);
digitalWrite(OUT_IN1, HIGH);
Vorher = millis();
}
Jetzt = millis();
if ((Jetzt - Vorher) > 5) {
RomAdr = 16384;
digitalWrite(OUT_IN1, LOW);
}
} // Ende loop
void AddByte() {
ByteArray[indexBk] = DataByte;
indexBk++;
if (indexBk == 4) {
indexBk = 0;
SerialPrintBytes();
RomAdr++;
}
}
void SerialPrintBytes() {
Serial.print(RomAdr);
Serial.print(';');
for (int y=0; y<4; y++) {
byte d = ByteArray[y];
if (d < 10) Serial.print(char(32));
if (d < 100) Serial.print(char(32));
Serial.print(d);
if (y < 3) Serial.print(';');
}
Serial.println();
}
BASIC Programm für Sharp PC-1403 (PC-1403H, EL-5500III):
10:RESTORE
20:FOR X=0 TO 97
30:READ D
40:POKE &F100+X,D
50:NEXT X
60:END
100:"A"
110:CALL &F100
120:BEEP 1
140:END
200:DATA &85,2,&3F,219,&84,2,&FF,219
210:DATA 16,&3C,&00,2,0,82,36,120,&F1,&4B
220:DATA 16,&3C,&00,2,1,82,4,37,120,&F1,&4B
230:DATA 16,&3C,&00,2,10,82,4,37,120,&F1,&4B
240:DATA 16,&3C,&00,2,11,82,4,37,120,&F1,&4B
250:DATA &85,99,&7F,58,7,&84,99,&FF,58,2,55
260:DATA 16,&3C,&00,214,128,57,3,107,8,126,&F1,&08,55
270:DATA 16,&3A,&00,82,18,&5E,97,4,95,206,96,0,95
280:DATA 88,82,97,4,95,206,96,0,95,55
| Assemblerdarstellung des Maschinenprogramms für PC-1403 |
| &F100: |
&85 |
|
|
LP05 |
|
|
|
|
|
|
|
| &F101: |
002 |
&3F |
|
LIA |
&3F |
|
|
|
|
|
&3FFF (16383) = Startadresse (-1) des externen ROMs in das X-Reg laden |
| &F103: |
219 |
|
|
EXAM |
|
|
|
|
|
|
|
| &F104: |
&84 |
|
|
LP04 |
|
|
|
|
|
|
|
| &F105: |
002 |
&FF |
|
LIA |
&FF |
|
|
|
|
|
|
| &F107: |
219 |
|
|
EXAM |
|
|
|
|
|
|
|
| &F108: |
016 |
&3C |
&00 |
LIDP |
&3C00 |
< |
─ |
─ |
┐ |
|
Zur Ansteuerung der ROM Bank 1 (LZ92K32 BNK2=0, LZ92K32 BNK1=0): |
| &F10B: |
002 |
000 |
|
LIA |
0 |
|
|
|
│ |
|
000 in das Bankregister &3C00 laden |
| &F10D: |
082 |
|
|
STD |
|
|
|
|
│ |
|
|
| &F10E: |
036 |
|
|
IXL |
|
|
|
|
│ |
|
|
| &F10F: |
120 |
&F1 |
&4B |
CALL |
&F14B |
|
|
|
│ |
|
Aufruf des Unterprogramms zur Datenausgabe |
| &F112: |
016 |
&3C |
&00 |
LIDP |
&3C00 |
|
|
|
│ |
|
Zur Ansteuerung der ROM Bank 2 (LZ92K32 BNK2=0, LZ92K32 BNK1=1): |
| &F115: |
002 |
001 |
|
LIA |
1 |
|
|
|
│ |
|
001 in das Bankregister &3C00 laden |
| &F117: |
082 |
|
|
STD |
|
|
|
|
│ |
|
|
| &F118: |
004 |
|
|
IX |
|
|
|
|
│ |
|
|
| &F119: |
037 |
|
|
DXL |
|
|
|
|
│ |
|
|
| &F11A: |
120 |
&F1 |
&4B |
CALL |
&F14B |
|
|
|
│ |
|
Aufruf des Unterprogramms zur Datenausgabe |
| &F11D: |
016 |
&3C |
&00 |
LIDP |
&3C00 |
|
|
|
│ |
|
Zur Ansteuerung der ROM Bank 3 (LZ92K32 BNK2=1, LZ92K32 BNK1=0): |
| &F120: |
002 |
010 |
|
LIA |
10 |
|
|
|
│ |
|
010 in das Bankregister &3C00 laden |
| &F122: |
082 |
|
|
STD |
|
|
|
|
│ |
|
|
| &F123: |
004 |
|
|
IX |
|
|
|
|
│ |
|
|
| &F124: |
037 |
|
|
DXL |
|
|
|
|
│ |
|
|
| &F125: |
120 |
&F1 |
&4B |
CALL |
&F14B |
|
|
|
│ |
|
Aufruf des Unterprogramms zur Datenausgabe |
| &F128: |
016 |
&3C |
&00 |
LIDP |
&3C00 |
|
|
|
│ |
|
Zur Ansteuerung der ROM Bank 4 (LZ92K32 BNK2=1, LZ92K32 BNK1=1): |
| &F12B: |
002 |
011 |
|
LIA |
11 |
|
|
|
│ |
|
011 in das Bankregister &3C00 laden |
| &F12D: |
082 |
|
|
STD |
|
|
|
|
│ |
|
|
| &F12E: |
004 |
|
|
IX |
|
|
|
|
│ |
|
|
| &F12F: |
037 |
|
|
DXL |
|
|
|
|
│ |
|
|
| &F130: |
120 |
&F1 |
&4B |
CALL |
&F14B |
|
|
|
│ |
|
Aufruf des Unterprogramms zur Datenausgabe |
| &F133: |
&85 |
|
|
LP05 |
|
|
|
|
│ |
|
|
| &F134: |
099 |
&7F |
|
CPIM |
&7F |
|
|
|
│ |
|
Das Programm am Ende des ROMs bei &7FFF verlassen |
| &F136: |
058 |
007 |
|
JRCP |
7 |
─ |
─ |
┐ |
│ |
|
|
| &F138: |
&84 |
|
|
LP04 |
|
|
|
│ |
│ |
|
|
| &F139: |
099 |
&FF |
|
CPIM |
&FF |
|
|
│ |
│ |
|
|
| &F13B: |
058 |
002 |
|
JRCP |
2 |
─ |
┐ |
│ |
│ |
|
|
| &F13D: |
055 |
|
|
RTN |
|
|
│ |
│ |
│ |
|
|
| &F13E: |
016 |
&3C |
&00 |
LIDP |
&3C00 |
< |
┴ |
┘ |
│ |
|
Port IN1 abfragen (Handshake) |
| &F141: |
214 |
128 |
|
TSID |
128 |
< |
┐ |
|
│ |
|
|
| &F143: |
057 |
003 |
|
JRZM |
3 |
─ |
┘ |
|
│ |
|
|
| &F145: |
107 |
008 |
|
TEST |
8 |
|
|
|
│ |
|
Abfrage der BRK Taste |
| &F147: |
126 |
&F1 |
&08 |
JPZ |
&F108 |
─ |
─ |
─ |
┘ |
|
|
| &F14A: |
055 |
|
|
RTN |
|
|
|
|
|
|
|
| &F14B: |
016 |
&3A |
&00 |
LIDP |
&3A00 |
|
|
|
|
|
Unterprogramm zur Ausgabe des Datenbytes über Ext1-Ext4 des Portregisters &3A00: |
| &F14E: |
082 |
|
|
STD |
|
|
|
|
|
|
Daten (Lower Nibble) an Ext1-Ext4 senden |
| &F14F: |
018 |
&5E |
|
LIP |
&5E |
|
|
|
|
|
|
| &F151: |
097 |
004 |
|
ORIM |
4 |
|
|
|
|
|
|
| &F153: |
095 |
|
|
OUTF |
|
|
|
|
|
|
High an Fo3 (Pin 4) senden (Handshake) |
| &F154: |
206 |
|
|
NOPT |
|
|
|
|
|
|
|
| &F155: |
096 |
000 |
|
ANIM |
0 |
|
|
|
|
|
|
| &F157: |
095 |
|
|
OUTF |
|
|
|
|
|
|
Low an Fo3 (Pin 4) senden (Handshake) |
| &F158: |
088 |
|
|
SWP |
|
|
|
|
|
|
|
| &F159: |
082 |
|
|
STD |
|
|
|
|
|
|
Daten (Upper Nibble) an Ext1-Ext4 senden |
| &F15A: |
097 |
004 |
|
ORIM |
4 |
|
|
|
|
|
|
| &F15C: |
095 |
|
|
OUTF |
|
|
|
|
|
|
High an Fo3 (Pin 4) senden (Handshake) |
| &F15D: |
206 |
|
|
NOPT |
|
|
|
|
|
|
|
| &F15E: |
096 |
000 |
|
ANIM |
0 |
|
|
|
|
|
|
| &F160: |
095 |
|
|
OUTF |
|
|
|
|
|
|
Low an Fo3 (Pin 4) senden (Handshake) |
| &F161: |
055 |
|
|
RTN |
|
|
|
|
|
|
|
Ausgabe am Serial Monitor:
...
bis 32767
Pinbelegung:
| Arduino UNO Pin |
Name |
Sharp PC 11-pol. Schnittstelle |
| GND |
GND |
Pin 3 |
| D7 |
Port IN 1 |
Pin 9 |
| D6 (mit pull-down Widerstand auf GND) |
Port Fo 3 |
Pin 4 |
| D5 (mit pull-down Widerstand auf GND) |
Port Ext 4 |
Pin 8 |
| D4 (mit pull-down Widerstand auf GND) |
Port Ext 3 |
Pin 5 |
| D3 (mit pull-down Widerstand auf GND) |
Port Ext 2 |
Pin 10 |
| D2 (mit pull-down Widerstand auf GND) |
Port Ext 1 |
Pin 11 |
Mit Arduino UNO das externe ROM des Sharp PC-1401 auslesen
Mit dem folgenden Programm kann das (externe) ROM des Sharp Pocket Computers PC-1401 (PC-1402, EL-5500, EL-5500II) ausgelesen und an einen Arduino UNO übertragen werden.
Es ist zwar möglich, das ROM mit dem Basic Befehl PEEK auszulesen, dies ist aber sehr langwierig.
Viel schneller geht es mit einem Programm in Maschinensprache, wie z.B. in nachfolgendem Beispiel.
Der Ausgang Xo (Pin 7) des Sharp Pocket Computers wird zusammen mit dem Eingang Xi (Pin 6) für einen einfachen Handshake verwendet.
Die Daten werden über die Leitungen Fo1, Fo2, IB7, IB8 (Pins 4, 5, 9, 8) parallel zu je 4 bit übertragen.
Als Beschaltung sind lediglich pull-down Widerstände (z.B. 10kOhm) an den vier Datenleitungen und der Handshake Leitung Xo erforderlich.
Beim ersten Aufruf muß das Basic Programm im Sharp Pocket Computer mit RUN gestartet werden, um das Maschinenprogramm in den Speicher zu übertragen.
Dies dauert ca. 10 Sekunden.
Das eigentliche Programm zur Übertragung des externen ROMs an den Arduino wird in der Folge mit DEF A gestartet.
Die Übertragung der 32 kB und die Ausgabe am Serial Monitor der Arduino IDE dauert ca. 33 Sekunden und endet mit einem Piepton.
Steckbrett mit Arduino UNO:
Programm für Arduino:
// Externes ROM vom Sharp PC-1401 auslesen
// 2x4 bit parallel ueber Fo1,Fo2,IB7,IB8 uebertragen, Handshake mit Xo und Xi
unsigned long RomAdr = 32768; // Beginn ext. ROM
const int IN_Fo1 = 2; // Pin D2, Fo1 Sharp PC-1401, pin 4 der 11-pol. Buchsenleiste
const int IN_Fo2 = 3; // Pin D3, Fo2 Sharp PC-1401, pin 5 der 11-pol. Buchsenleiste
const int IN_IB7 = 4; // Pin D4, IB7 Sharp PC-1401, pin 9 der 11-pol. Buchsenleiste
const int IN_IB8 = 5; // Pin D5, IB8 Sharp PC-1401, pin 8 der 11-pol. Buchsenleiste
const int IN_Xo = 6; // Pin D6, Xo Sharp PC-1401, pin 7 der 11-pol. Buchsenleiste
const int OUT_Xi = 7; // Pin D7, Xi Sharp PC-1401, pin 6 der 11-pol. Buchsenleiste
const int InfoLED = 13;
byte DataBit1;
byte DataBit2;
byte DataBit3;
byte DataBit4;
byte DataBit5;
byte DataBit6;
byte DataBit7;
byte DataBit8;
byte Nib1;
byte Nib2;
byte DataByte = -1;
unsigned long Vorher;
unsigned long Jetzt;
boolean StartTransmission = false;
void setup() {
Serial.begin(115200);
pinMode(IN_Xo, INPUT);
pinMode(IN_Fo1, INPUT);
pinMode(IN_Fo2, INPUT);
pinMode(IN_IB7, INPUT);
pinMode(IN_IB8, INPUT);
pinMode(OUT_Xi, OUTPUT);
pinMode(InfoLED, OUTPUT);
Serial.println("Ext.ROM;PC-1401 32kB");
Serial.println("Adresse;Inhalt");
Vorher = millis();
}
void loop() {
if (!StartTransmission) { // Trigger fuer Datenuebertragung
if (digitalRead(IN_Fo1)) StartTransmission = true;
}
if (digitalRead(IN_Xo) && StartTransmission) { // Data available
digitalWrite(InfoLED, HIGH);
digitalWrite(OUT_Xi, LOW);
DataBit1 = digitalRead(IN_Fo1);
DataBit2 = digitalRead(IN_Fo2);
DataBit3 = digitalRead(IN_IB7);
DataBit4 = digitalRead(IN_IB8);
while (digitalRead(IN_Xo));
while (!digitalRead(IN_Xo));
DataBit5 = digitalRead(IN_Fo1);
DataBit6 = digitalRead(IN_Fo2);
DataBit7 = digitalRead(IN_IB7);
DataBit8 = digitalRead(IN_IB8);
while (digitalRead(IN_Xo));
Nib1 = DataBit1 | (DataBit2 << 1) | (DataBit3 << 2) | (DataBit4 << 3);
Nib2 = (DataBit5 << 4) | (DataBit6 << 5) | (DataBit7 << 6) | (DataBit8 << 7);
DataByte = Nib1 | Nib2;
Serial.print(RomAdr);
Serial.print(';');
Serial.println(DataByte);
DataByte = -1;
RomAdr++;
digitalWrite(InfoLED, LOW);
digitalWrite(OUT_Xi, HIGH);
Vorher = millis();
}
Jetzt = millis();
if ((Jetzt - Vorher) > 5) {
StartTransmission = false;
RomAdr = 32768;
digitalWrite(OUT_Xi, LOW);
}
} // Ende loop
BASIC Programm für Sharp PC-1401 (PC-1402, EL-5500, EL-5500II):
10:RESTORE
20:FOR X=0 TO 68
30:READ D
40:POKE &4100+X,D
50:NEXT X
60:END
100:"A"
110:CALL &4100
120:BEEP 1
130:END
200:DATA &85,2,&7F,219,&84,2,&FF,219
210:DATA 36,18,&5E,219,95
220:DATA 219,52,81,88,219,221
230:DATA 18,&5F,2,16,219,223,77,2,0,219,223
240:DATA 91,81,88,219,95
250:DATA 219,88,81,219,221
260:DATA 18,&5F,2,16,219,223,206,2,64,219,223
270:DATA &85,99,&FF,58,7,&84,99,&FF,58,2,55
280:DATA 107,128,57,3,121,&41,&08
| Assemblerdarstellung des Maschinenprogramms für PC-1401 |
| &4100: |
&85 |
|
|
LP05 |
|
|
|
|
|
|
|
|
| &4101: |
002 |
&7F |
|
LIA |
&7F |
|
|
|
|
|
|
&7FFF (32767) = Startadresse (-1) des externen ROMs in das X-Reg laden |
| &4103: |
219 |
|
|
EXAM |
|
|
|
|
|
|
|
|
| &4104: |
&84 |
|
|
LP04 |
|
|
|
|
|
|
|
|
| &4105: |
002 |
&FF |
|
LIA |
&FF |
|
|
|
|
|
|
|
| &4107: |
219 |
|
|
EXAM |
|
|
|
|
|
|
|
|
| &4108: |
036 |
|
|
IXL |
|
< |
─ |
─ |
─ |
┐ |
|
|
| &4109: |
018 |
&5E |
|
LIP |
&5E |
|
|
|
|
│ |
|
|
| &410B: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &410C: |
095 |
|
|
OUTF |
|
|
|
|
|
│ |
|
Bit 1 an Fo1 senden, Bit 2 an Fo2 senden |
| &410D: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &410E: |
052 |
|
|
PUSH |
|
|
|
|
|
│ |
|
|
| &410F: |
081 |
|
|
DECP |
|
|
|
|
|
│ |
|
|
| &4110: |
088 |
|
|
SWP |
|
|
|
|
|
│ |
|
|
| &4111: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &4112: |
221 |
|
|
OUTB |
|
|
|
|
|
│ |
|
Bit 3 an IB7 senden, Bit 4 an IB8 senden |
| &4113: |
018 |
&5F |
|
LIP |
&5F |
|
|
|
|
│ |
|
|
| &4115: |
002 |
016 |
|
LIA |
16 |
|
|
|
|
│ |
|
|
| &4117: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &4118: |
223 |
|
|
OUTC |
|
|
|
|
|
│ |
|
Handshake Xo=High, Xi inaktiv |
| &4119: |
077 |
|
|
NOPW |
|
|
|
|
|
│ |
|
|
| &411A: |
002 |
000 |
|
LIA |
0 |
|
|
|
|
│ |
|
|
| &411C: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &411D: |
223 |
|
|
OUTC |
|
|
|
|
|
│ |
|
Handshake Xo=Low, Xi inaktiv |
| &411E: |
091 |
|
|
POP |
|
|
|
|
|
│ |
|
|
| &411F: |
081 |
|
|
DECP |
|
|
|
|
|
│ |
|
|
| &4120: |
088 |
|
|
SWP |
|
|
|
|
|
│ |
|
|
| &4121: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &4122: |
095 |
|
|
OUTF |
|
|
|
|
|
│ |
|
Bit 5 an Fo1 senden, Bit 6 an Fo2 senden |
| &4123: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &4124: |
088 |
|
|
SWP |
|
|
|
|
|
│ |
|
|
| &4125: |
081 |
|
|
DECP |
|
|
|
|
|
│ |
|
|
| &4126: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &4127: |
221 |
&FF |
|
OUTB |
|
|
|
|
|
│ |
|
Bit 7 an IB7 senden, Bit 8 an IB8 senden |
| &4128: |
018 |
&5F |
|
LIP |
&5F |
|
|
|
|
│ |
|
|
| &412A: |
002 |
016 |
|
LIA |
16 |
|
|
|
|
│ |
|
|
| &412C: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &412D: |
223 |
|
|
OUTC |
|
|
|
|
|
│ |
|
Handshake Xo=High, Xi inaktiv |
| &412E: |
206 |
|
|
NOPW |
|
|
|
|
|
│ |
|
|
| &412F: |
002 |
064 |
|
LIA |
64 |
|
|
|
|
│ |
|
|
| &4131: |
219 |
|
|
EXAM |
|
|
|
|
|
│ |
|
|
| &4132: |
223 |
|
|
OUTC |
|
|
|
|
|
│ |
|
Handshake Xo=Low, Xi aktiv |
| &4133: |
&85 |
|
|
LP05 |
|
|
|
|
|
│ |
|
|
| &4134: |
099 |
&FF |
|
CPIM |
&FF |
|
|
|
|
│ |
|
|
| &4136: |
058 |
007 |
|
JRCP |
7 |
─ |
─ |
─ |
┐ |
│ |
|
|
| &4138: |
&84 |
|
|
LP04 |
|
|
|
|
│ |
│ |
|
|
| &4139: |
099 |
&FF |
|
CPIM |
&FF |
|
|
|
│ |
│ |
|
|
| &413B: |
058 |
002 |
|
JRCP |
2 |
─ |
─ |
┐ |
│ |
│ |
|
|
| &413D: |
055 |
|
|
RTN |
|
|
|
│ |
│ |
│ |
|
Das Programm am Ende des ROMs bei &FFFF verlassen |
| &413E: |
107 |
128 |
|
TEST |
128 |
< |
┬ |
┴ |
┘ |
│ |
|
Port Xi abfragen (Handshake) |
| &4140: |
057 |
003 |
|
JRZM |
3 |
─ |
┘ |
|
|
│ |
|
|
| &4142: |
121 |
&41 |
&08 |
JP |
&4108 |
─ |
─ |
─ |
─ |
┘ |
|
|
Ausgabe am Serial Monitor:
...
bis 65535
Pinbelegung:
| Arduino UNO Pin |
Name |
Sharp PC 11-pol. Schnittstelle |
| GND |
GND |
Pin 3 |
| D7 |
Port Xi |
Pin 6 |
| D6 (mit pull-down Widerstand auf GND) |
Port Xo |
Pin 7 |
| D5 (mit pull-down Widerstand auf GND) |
Port IB8 |
Pin 8 |
| D4 (mit pull-down Widerstand auf GND) |
Port IB7 |
Pin 9 |
| D3 (mit pull-down Widerstand auf GND) |
Port Fo2 |
Pin 5 |
| D2 (mit pull-down Widerstand auf GND) |
Port Fo1 |
Pin 4 |
zum Seitenanfang
© 2026: Walter Fischer