File: PSX_HC05.txt - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

01: /*
02: PSX HC05 Dump program for Teensy >= 3.5
03: File "DUMPER.BIN" from no$cash must be present on the SD Card.
04: File "HC05.ROM" will be created on the SD Card.
05: Teensy Pin  ->  PSX Board
06:   GND       ->  GND
07: 0 RX1       ->  TX pin 50
08: 1 TX1       ->  RX pin 51
09:  */
10: #include <SD.h>
11: #include <SPI.h>
12: 
13: byte  hc05rom[0x4540];
14: byte  dumper[512];
15: 
16: void  LoadFile(char *file, void *buffer)
17: {
18:   uint8_t *ptr = (uint8_t *)buffer;
19:   File dataFile = SD.open(file);
20:   if (dataFile)
21:   {
22:     int n;
23:     while (n = dataFile.available())
24:       ptr += dataFile.read(ptr, n);
25:     dataFile.close();
26:   }
27:   else
28:     Serial.println("File not found !");
29: }
30: 
31: void  SaveFile(char *file, void *buffer, int size)
32: {
33:   uint8_t *ptr = (uint8_t *)buffer;
34:   File dataFile = SD.open(file, FILE_WRITE);
35:   if (dataFile)
36:   {
37:     while (size)
38:     {
39:       int n = dataFile.write(ptr, (size > 16*1024) ? 16*1024 : size);
40:       if (n <= 0)
41:         break;
42:       size -= n;
43:       ptr += n;
44:     }
45:     dataFile.close();
46:   }
47: }
48: 
49: void    setup()
50: {
51:   int   i;
52: 
53:   Serial.begin(9600);
54:   while (!Serial);    // Wait for Serial Console to Open on PC Side
55: 
56:   Serial.println("SD Card Init");
57:   if (!SD.begin(BUILTIN_SDCARD))
58:     return;
59:   if (SD.exists("HC05.ROM"))
60:     SD.remove("HC05.ROM");
61: 
62:   Serial.println("Reading DUMPER.BIN from SD Card");
63:   LoadFile("DUMPER.BIN", dumper);
64: 
65:   Serial.println("Hardware Serial Init");
66:   Serial1.begin(9600, SERIAL_8N1);  // 10000 if not PU-8
67: 
68:   Serial.println("Sending DUMPER.BIN program to PSX");
69:   for (i = 0; i < sizeof(dumper); i++)
70:     Serial1.write(dumper[i]);
71: 
72:   Serial.println("Retrieving HC05 ROM from PSX");
73:   for (i = 0; i < sizeof(hc05rom); i++)
74:   {
75:     while (!Serial1.available());
76:     Serial.println(i, HEX);
77:     hc05rom[i] = Serial1.read();
78:   }
79: 
80:   Serial.println("Saving HC05.ROM to SD Card");
81:   SaveFile("HC05.ROM", hc05rom, sizeof(hc05rom));
82: 
83:   Serial.println("done...");
84: }
85: 
86: void loop()
87: {
88: }
89: