www.cavefischer.at/Sharp Pocket Computer
// Rx von Sharp PC-1403 Displayspeicher
const int RxBdRate = 9600;
byte FinalArray[120]; // Speicherbereich für 24-stelliges Display (5x7 Matrix), 24x5=120
int Konfiguration[] = {1,2,3,4,5,6,10,11,12,7,8,9,0,0,0,0,-24,-23,-22,-21,-20,-19,-15,-14,-13,-18,-17,-16};
unsigned int Col5Cnt = 0;
unsigned int indexRx = 0;
unsigned int indexKonf = 0;
unsigned int indexFinal;
byte incomingByte;
int Zuordnung;
void setup() {
Serial.begin(RxBdRate,SERIAL_8N1);
Serial.print("Rx mit ");
Serial.print(RxBdRate);
Serial.println(" Bd");
}
void loop() {
if (Serial.available() > 0) {
incomingByte = Serial.read();
Zuordnung = Konfiguration[indexKonf];
// 5 Bytes in aufsteigender Reihenfolge anfügen:
if (Zuordnung > 0) {
indexFinal = ((Zuordnung-1)*5) + Col5Cnt;
AddFinalByte();
}
// 5 Bytes in absteigender Reihenfolge anfügen:
if (Zuordnung < 0) {
indexFinal = ((Zuordnung-1)*(-5)) - Col5Cnt - 6;
AddFinalByte();
}
// Nicht Display-Byte überspringen:
if (Zuordnung == 0) {
indexKonf++;
}
indexRx++;
}
else {
if (indexRx >= 124) {
indexRx = 0;
Col5Cnt = 0;
indexKonf = 0;
SerialTextGraphic();
}
}
}
void AddFinalByte() {
FinalArray[indexFinal] = incomingByte;
Col5Cnt++;
if (Col5Cnt == 5) {
Col5Cnt = 0;
indexKonf++;
}
}
void SerialTextGraphic() {
Serial.println();
for (int y=0; y<8; y++) {
for (int x=0; x<120; x++) {
if ((FinalArray[x] & (1<<y)) > 0) {
Serial.print("##");
}
else {
Serial.print(char(32));
Serial.print(char(32));
}
Col5Cnt++;
if (Col5Cnt == 5) {
Serial.print(char(32));
Serial.print(char(32));
Serial.print(char(32));
Col5Cnt = 0;
}
}
Serial.println();
}
Serial.println();
}
10:RESTORE
20:FOR X=0 TO 135
30:READ D
40:POKE &F000+X,D
50:NEXT X
60:END
100:"A"
110:WAIT 0
120:PRINT " HALLO Arduino Welt! "
125:POKE &3000,85,42,85,42,85,0,0,8
127:POKE &3040,8,28,42,8,8
130:CALL &F000
140:END
200:DATA &85,2,&2F,219,&84,2,&FF,219,2,123,52,&83,4,85,120,&F0,&14,47,7,55
210:DATA 2,1,18,94,97,4,95,77,&83,198,18,94,56,3,96,0,95
220:DATA 2,2,97,4,&83,198,18,94,56,3,96,0,95
230:DATA 2,4,97,4,&83,198,18,94,56,3,96,0,95
240:DATA 2,8,97,4,&83,198,18,94,56,3,96,0,95
250:DATA 2,16,97,4,&83,198,18,94,56,3,96,0,95
260:DATA 2,32,97,4,&83,198,18,94,56,3,96,0,95
270:DATA 2,64,97,4,&83,198,18,94,56,3,96,0,95
280:DATA 2,128,97,4,&83,198,18,94,56,3,96,0,95,78,8,96,0,95,78,9,55
| Assemblerdarstellung des Maschinenprogramms für PC-1403 | |||||||||||
| &F000: | &85 | LP05 | |||||||||
| &F001: | 002 | &2F | LIA | &2F | &2FFF (12287) = Startadresse (-1) des 24 stelligen Displays in das X-Reg laden | ||||||
| &F003: | 219 | EXAM | |||||||||
| &F004: | &84 | LP04 | |||||||||
| &F005: | 002 | &FF | LIA | &FF | |||||||
| &F007: | 219 | EXAM | |||||||||
| &F008: | 002 | 123 | LIA | 123 | |||||||
| &F00A: | 052 | PUSH | |||||||||
| &F00B: | &83 | LP03 | < | ┐ | Adresse des B-Reg (03) in das P-Reg laden | ||||||
| &F00C: | 004 | IX | │ | X-Reg inkrementieren und in DP-Reg laden | |||||||
| &F00D: | 085 | MVMD | │ | Inhalt der Adresse, die im DP-Reg steht in die Adresse, die im P-Reg steht laden | |||||||
| &F00E: | 120 | &F0 | &14 | CALL | &F014 | │ | |||||
| &F011: | 047 | 007 | LOOP | 7 | ─ | ┘ | |||||
| &F013: | 055 | RTN | |||||||||
| &F014: | 002 | 001 | LIA | 1 | |||||||
| &F016: | 018 | 094 | LIP | 94 | |||||||
| &F018: | 097 | 004 | ORIM | 4 | |||||||
| &F01A: | 095 | OUTF | 4 an Port F senden, entspricht High an Fo3 (Pin 4) = Startbit | ||||||||
| &F01B: | 77 | NOPT | |||||||||
| &F01C: | &83 | LP03 | |||||||||
| &F01D: | 198 | TSMA | |||||||||
| &F01E: | 018 | 094 | LIP | 94 | |||||||
| &F020: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F022: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F024: | 095 | OUTF | < | ┘ | Bit 1 an Port F senden (Fo3) | ||||||
| &F025: | 002 | 002 | LIA | 2 | |||||||
| &F027: | 097 | 004 | ORIM | 4 | |||||||
| &F029: | &83 | LP03 | |||||||||
| &F02A: | 198 | TSMA | |||||||||
| &F02B: | 018 | 094 | LIP | 94 | |||||||
| &F02D: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F02F: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F031: | 095 | OUTF | < | ┘ | Bit 2 an Port F senden (Fo3) | ||||||
| &F032: | 002 | 004 | LIA | 4 | |||||||
| &F034: | 097 | 004 | ORIM | 4 | |||||||
| &F036: | &83 | LP03 | |||||||||
| &F037: | 198 | TSMA | |||||||||
| &F038: | 018 | 094 | LIP | 94 | |||||||
| &F03A: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F03C: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F03E: | 095 | OUTF | < | ┘ | Bit 3 an Port F senden (Fo3) | ||||||
| &F03F: | 002 | 008 | LIA | 8 | |||||||
| &F041: | 097 | 004 | ORIM | 4 | |||||||
| &F043: | &83 | LP03 | |||||||||
| &F044: | 198 | TSMA | |||||||||
| &F045: | 018 | 094 | LIP | 94 | |||||||
| &F047: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F049: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F04B: | 095 | OUTF | < | ┘ | Bit 4 an Port F senden (Fo3) | ||||||
| &F04C: | 002 | 016 | LIA | 16 | |||||||
| &F04E: | 097 | 004 | ORIM | 4 | |||||||
| &F050: | &83 | LP03 | |||||||||
| &F051: | 198 | TSMA | |||||||||
| &F052: | 018 | 094 | LIP | 94 | |||||||
| &F054: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F056: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F058: | 095 | OUTF | < | ┘ | Bit 5 an Port F senden (Fo3) | ||||||
| &F059: | 002 | 032 | LIA | 32 | |||||||
| &F05B: | 097 | 004 | ORIM | 4 | |||||||
| &F05D: | &83 | LP03 | |||||||||
| &F05E: | 198 | TSMA | |||||||||
| &F05F: | 018 | 094 | LIP | 94 | |||||||
| &F061: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F063: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F065: | 095 | OUTF | < | ┘ | Bit 6 an Port F senden (Fo3) | ||||||
| &F066: | 002 | 064 | LIA | 64 | |||||||
| &F068: | 097 | 004 | ORIM | 4 | |||||||
| &F06A: | &83 | LP03 | |||||||||
| &F06B: | 198 | TSMA | |||||||||
| &F06C: | 018 | 094 | LIP | 94 | |||||||
| &F06E: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F070: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F072: | 095 | OUTF | < | ┘ | Bit 7 an Port F senden (Fo3) | ||||||
| &F073: | 002 | 128 | LIA | 128 | |||||||
| &F075: | 097 | 004 | ORIM | 4 | |||||||
| &F077: | &83 | LP03 | |||||||||
| &F078: | 198 | TSMA | |||||||||
| &F079: | 018 | 094 | LIP | 94 | |||||||
| &F07B: | 056 | 003 | JRZP | 3 | ─ | ┐ | |||||
| &F07D: | 096 | 000 | ANIM | 0 | │ | ||||||
| &F07F: | 095 | OUTF | < | ┘ | Bit 8 an Port F senden (Fo3) | ||||||
| &F080: | 078 | 008 | WAIT | 8 | |||||||
| &F082: | 096 | 000 | ANIM | 0 | |||||||
| &F084: | 095 | OUTF | 0 an Port F senden, entspricht Low an Fo3 (Pin 4) = Stoppbit | ||||||||
| &F085: | 078 | 009 | WAIT | 9 | |||||||
| &F087: | 055 | RTN | |||||||||
| Arduino UNO Pin | Name | Sharp PC 11-pol. Schnittstelle |
| GND | GND | Pin 3 |
| RX 0 (Input, über open-collector Transistorstufe) | Port Fo 3 | Pin 4 |