
2023/05/01: złączka do pc pozwalająca na podłączenie cartridge od atari xl/xe
i współdziałanie z emulatorem

złączka jest wpinana przez usb jako zwykłe złącze szeregowe
może służyć do debugowania gotowego produktu na cartridge-u

protokół
--------
nadaje pc(emu):

a0-a12 + sel + rw

przy czym sel to:
00 = !cctl ($D5xx)
01 = !s4 ($8000-$9FFF)
10 = !s5 ($A000-$BFFF)
11 = nieużywany

a rw to:
0 = write
1 = read

przesłanie tych 16 bitów wyznacza narastające zbocze fi2
jeśli mamy zapis to nadajemy jeszcze 8 bitów danych

d0-d7

cartridge odpowiada do pc(emu):

rd4 + rd5

i jeśli mamy odczyt, to dodatkowo jeszcze

d0-d7

i to wyznacza opadające zbocze fi2

na jednym złączu usb jest jeden cartridge
może być przelotowy




2024/01/14: sprecyzowanie wymagań dla interfejsu

Atari 400/800/XL/XE/XEGS
----------------------------------
sygnały gniazda carta znaczenie od strony atari

 lewy                prawy
 S.  fi2 - out       S.  fi2 - out     
 R.  R/W - out       R.  R/W - out     
 P.  A10 - out       P.  A10 - out     
 N.  A11 - out       N.  A11 - out     
 M.   D7 - in/out    M.   D7 - in/out  
 L.   D3 - in/out    L.   D3 - in/out  
 K.  A12 - out       K.  A12 - out     
 J.   A9 - out       J.   A9 - out     
 H.   A8 - out       H.   A8 - out      
 F.   A7 - out       F.   A7 - out     
 E.   A6 - out       E.   A6 - out     
 D.   A5 - out       D.   A5 - out     
 C.   A4 - out       C.   A4 - out     
 B.  GND -           B.  GND -       
 A.  RD4 - in        A.  fi2 - out

15./CCTL - out     15./CCTL - out     
14.  RD5 - in      14.  RD4 - in      
13.  +5V -         13.  +5V -         
12.  /S5 - out     12.  /S4 - out     
11.   D6 - in/out  11.   D6 - in/out  
10.   D0 - in/out  10.   D0 - in/out  
 9.   D1 - in/out   9.   D1 - in/out  
 8.   D2 - in/out   8.   D2 - in/out  
 7.   D5 - in/out   7.   D5 - in/out  
 6.   D4 - in/out   6.   D4 - in/out  
 5.   A0 - out      5.   A0 - out     
 4.   A1 - out      4.   A1 - out     
 3.   A2 - out      3.   A2 - out     
 2.   A3 - out      2.   A3 - out     
 1.  /S4 - out      1.  R/W late - out     

sygnały gniazda eci od strony atari

 A. reserved - 
 B. /IRQ     - in
 C. /HALT    - out
 D. A13      - out
 E. A14      - out
 F. A15      - out
 H. GND      - 

 1. /EXTSEL  - in
 2. /RST     - out
 3. /D1XX    - out
 4. /MPD     - in
 5. AUDIO    - in (analog)
 6. /REF     - out
 7. +5V      - 

sygnały gniazda pbi od strony atari

 1. GND      - 
 3. A0       - out
 5. A2       - out
 7. A4       - out
 9. A6       - out
11. A7       - out
13. A9       - out
15. A11      - out
17. A13      - out
19. GND      - 
21. D0       - in/out
23. D2       - in/out
25. D4       - in/out
27. D6       - in/out
29. GND      - 
31. fi2      - out
33. n/c      - 
35. /IRQ     - in
37. n/c      - 
39. n/c      - 
41. /CAS     - out
43. /MPD     - in
45. GND      - 
47. reserved - 
49. AUDIO    - in (analog)

 2. /EXTSEL  - in
 4. A1       - out
 6. A3       - out
 8. A5       - out
10. GND      - 
12. A8       - out
14. A10      - out
16. A12      - out
18. A14      - out
20. A15      - out
22. D1       - in/out
24. D3       - in/out
26. D5       - in/out
28. D7       - in/out
30. GND      - 
32. GND      - 
34. /RST     - out
36. /RDY     - in
38. /CASINH  - out
40. /REF     - out
42. GND      - 
44. /RAS     - out
46. LATCHR/W - out
48. reserved - 
50. GND      - 

Atari 400/800/XL/XE/XEGS full PBI/CART+ECI
----------------------------------

rozkazy protokołu:
$00 . - reset (1/1)
$3F ? - info (1/8)
$52 R - read (5/3)
$57 W - write (6/2)
$53 S - signals (3/2)

. - reset
wysyłamy:
$00 .
odbieramy:
$00 .

? - info

wysyłamy:
$3F ?

odbieramy:
$56 V - Virtual to Real Hardware Interface
$52 R
$48 H
$49 I
$41 A - target device
$38 8
$01   - firmware version
$00   - firmware revision

R - read

wysyłamy:
$52 R
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:1RSsCLc2:
+--------+
fi2      - out
R/W      - out
R/W late - out     
/CCTL    - out
/S4      - out
/S5      - out
/REF     - out
/D1XX    - out
+--------+
:VvLRCIH0:
+--------+
/RST     - out
/HALT    - out
/CASINH  - out
/CAS     - out
/RAS     - out
LATCHR/W - out
5V600XL  - out
5V1064   - out

odbieramy:
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out
+--------+
:--YIMERr:
+--------+
RD4      - in
RD5      - in
/EXTSEL  - in
/MPD     - in
/IRQ     - in
/RDY     - in
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

W - write

wysyłamy:
$57 W
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:1RSsCLc2:
+--------+
fi2      - out
R/W      - out
R/W late - out     
/CCTL    - out
/S4      - out
/S5      - out
/REF     - out
/D1XX    - out
+--------+
:VvLRCIH0:
+--------+
/RST     - out
/HALT    - out
/CASINH  - out
/CAS     - out
/RAS     - out
LATCHR/W - out
5V600XL  - out
5V1064   - out
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out

odbieramy:
+--------+
:--YIMERr:
+--------+
RD4      - in
RD5      - in
/EXTSEL  - in
/MPD     - in
/IRQ     - in
/RDY     - in
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

S - signals

wysyłamy:
$53 S
+--------+
:1RSsCLc2:
+--------+
fi2      - out
R/W      - out
R/W late - out     
/CCTL    - out
/S4      - out
/S5      - out
/REF     - out
/D1XX    - out
+--------+
:VvLRCIH0:
+--------+
/RST     - out
/HALT    - out
/CASINH  - out
/CAS     - out
/RAS     - out
LATCHR/W - out
5V600XL  - out
5V1064   - out

odbieramy:
+--------+
:--YIMERr:
+--------+
RD4      - in
RD5      - in
/EXTSEL  - in
/MPD     - in
/IRQ     - in
/RDY     - in
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)


na początek startujemy z samym cartridgem - czyli protokół może operować krótszymi ramkami:

Atari 400/800/XL/XE/XEGS cartridge
----------------------------------

$00 . - reset (1/1)
$3F ? - info (1/8)
$52 R - read (4/2)
$57 W - write (5/1)
$53 S - signals (2/1)

. - reset
wysyłamy:
$00 .
odbieramy:
$00 .

? - info

wysyłamy:
$3F ?

odbieramy:
$56 V - Virtual to Real Hardware Interface
$52 R
$48 H
$49 I
$41 A - target device
$38 8
$01   - firmware version
$00   - firmware revision

R - read

wysyłamy:
$52 R
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
         - 
         - 
         - 
+--------+
:--SsC-c2:
+--------+
fi2      - out
R/W      - out
         - 
/CCTL    - out
/S4      - out
/S5      - out
         - 
         - 

odbieramy:
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out
+--------+
:------Rr:
+--------+
RD4      - in
RD5      - in
         - 
         - 
         - 
         - 
         - 
         - 

W - write

wysyłamy:
$57 W
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
         - 
         - 
         - 
+--------+
:--SsC-c2:
+--------+
fi2      - out
R/W      - out
         - 
/CCTL    - out
/S4      - out
/S5      - out
         - 
         - 
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out

odbieramy:
+--------+
:------Rr:
+--------+
RD4      - in
RD5      - in
         - 
         - 
         - 
         - 
         - 
         - 

S - signals

wysyłamy:
$53 S
+--------+
:--SsC-c2:
+--------+
fi2      - out
R/W      - out
         - 
/CCTL    - out
/S4      - out
/S5      - out
         - 
         - 

odbieramy:
+--------+
:------Rr:
+--------+
RD4      - in
RD5      - in
         - 
         - 
         - 
         - 
         - 
         - 



Atari 7800 ProSystem
----------------------------------

gniazdo cartridge w prosystem

 1. R/W      - out
 2. HALT     - in
 3. D3       - in/out
 4. D4       - in/out
 5. D5       - in/out
 6. D6       - in/out
 7. D7       - in/out
 8. A12      - out
 9. A10      - out
10. A11      - out
11. A9       - out
12. A8       - out
13. +5V      - 
14. GND      - 
15. A13      - out
16. A14      - out

17. A15      - out
18. EXTAUDIO - in (analog)
19. A7       - out
20. A6       - out
21. A5       - out
22. A4       - out
23. A3       - out
24. A2       - out
25. A1       - out
26. A0       - out
27. D0       - in/out
28. D1       - in/out
29. D2       - in/out
30. GND      - 
31. IRQ      - in
32. fi2      - out


Atari 7800 ProSystem cartridge
----------------------------------

$00 . - reset (1/1)
$3F ? - info (1/8)
$52 R - read (4/3)
$57 W - write (5/2)
$53 S - signals (2/2)

. - reset
wysyłamy:
$00 .
odbieramy:
$00 .

? - info

wysyłamy:
$3F ?

odbieramy:
$56 V - Virtual to Real Hardware Interface
$52 R
$48 H
$49 I
$37 7 - target device
$38 8
$01   - firmware version
$00   - firmware revision

R - read

wysyłamy:
$52 R
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:------c2:
+--------+
fi2      - out
R/W      - out
         - 
         - 
         - 
         - 
         - 
         - 

odbieramy:
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out
+--------+
:------IH:
+--------+
HALT     - in
IRQ      - in
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

W - write

wysyłamy:
$57 W
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:------c2:
+--------+
fi2      - out
R/W      - out
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out

odbieramy:
+--------+
:------IH:
+--------+
HALT     - in
IRQ      - in
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

S - signals

wysyłamy:
$53 S
+--------+
:------c2:
+--------+
fi2      - out
R/W      - out
         - 
         - 
         - 
         - 
         - 
         - 

odbieramy:
+--------+
:------IH:
+--------+
HALT     - in
IRQ      - in
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)



Commodore 64
----------------------------------

gniazdo cartridgea w c64

 1. GND      - 
 2. +5V      - 
 3. +5V      - 
 4. /IRQ     - in/out
 5. R/W      - in/out
 6. DOTCLK   - out
 7. /IO1     - out
 8. /GAME    - in
 9. /EXROM   - in
10. /IO2     - out
11. /ROML    - out
12. BA       - out
13. /DMA     - in
14. D7       - in/out
15. D6       - in/out
16. D5       - in/out
17. D4       - in/out
18. D3       - in/out
19. D2       - in/out
20. D1       - in/out
21. D0       - in/out
22. GND      - 

 A. GND      - 
 B. /ROMH    - out
 C. /RESET   - in
 D. /NMI     - in
 E. fi2      - out
 F. A15      - in/out
 H. A14      - in/out
 J. A13      - in/out
 K. A12      - in/out
 L. A11      - in/out
 M. A10      - in/out
 N. A9       - in/out
 P. A8       - in/out
 R. A7       - in/out
 S. A6       - in/out
 T. A5       - in/out
 U. A4       - in/out
 V. A3       - in/out
 W. A2       - in/out
 X. A1       - in/out
 Y. A0       - in/out
 Z. GND      - 


Commodore 64 cartridge
----------------------------------

$00 . - reset (1/1)
$3F ? - info (1/8)
$52 R - read (4/2)
$57 W - write (5/1)
$53 S - signals (2/1)

. - reset
wysyłamy:
$00 .
odbieramy:
$00 .

? - info

wysyłamy:
$3F ?

odbieramy:
$56 V - Virtual to Real Hardware Interface
$52 R
$48 H
$49 I
$36 6 - target device
$34 4
$01   - firmware version
$00   - firmware revision

R - read

wysyłamy:
$52 R
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:HL21BDc2:
+--------+
fi2      - out
R/W      - out
DOTCLK   - out
BA       - out
/IO1     - out
/IO2     - out
/ROML    - out
/ROMH    - out

odbieramy:
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out
+--------+
:--INREGD:
+--------+
/DMA     - in
/GAME    - in
/EXROM   - in
/RESET   - in
/NMI     - in
/IRQ     - in
         - 
         - 

W - write

wysyłamy:
$57 W
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:HL21BDc2:
+--------+
fi2      - out
R/W      - out
DOTCLK   - out
BA       - out
/IO1     - out
/IO2     - out
/ROML    - out
/ROMH    - out
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out

odbieramy:
+--------+
:--INREGD:
+--------+
/DMA     - in
/GAME    - in
/EXROM   - in
/RESET   - in
/NMI     - in
/IRQ     - in
         - 
         - 

S - signals

wysyłamy:
$53 S
+--------+
:HL21BDc2:
+--------+
fi2      - out
R/W      - out
DOTCLK   - out
BA       - out
/IO1     - out
/IO2     - out
/ROML    - out
/ROMH    - out

odbieramy:
+--------+
:--INREGD:
+--------+
/DMA     - in
/GAME    - in
/EXROM   - in
/RESET   - in
/NMI     - in
/IRQ     - in
         - 
         - 



Commodore Plus4
----------------------------------

gniazdo cartridgea w Plus4

 1. GND      - 
 2. +5V      - 
 3. +5V      - 
 4. /IRQ     - in
 5. R/W      - out
 6. /C1HI    - out
 7. C2LOW    - 
 8. C2HI     - 
 9. /CS1     - out
10. /CS0     - out
11. /CAS     - out
12. MUX      - out
13. BA       - out
14. D7       - in/out
15. D6       - in/out
16. D5       - in/out
17. D4       - in/out
18. D3       - in/out
19. D2       - in/out
20. D1       - in/out
21. D0       - in/out
22. AEC      - 
23. EXTAUDIO - in (analog)
24. fi2      - out
25. GND      - 

 A. GND      - 
 B. /C1LOW   - out
 C. /BRESET  - out
 D. /RAS     - out
 E. fi0      - out
 F. A15      - out
 H. A14      - out
 J. A13      - out
 K. A12      - out
 L. A11      - out
 M. A10      - out
 N. A9       - out
 P. A8       - out
 R. A7       - out
 S. A6       - out
 T. A5       - out
 U. A4       - out
 V. A3       - out
 W. A2       - out
 X. A1       - out
 Y. A0       - out
 Z. n/c      - 
AA. n/c      - 
BB. n/c      - 
CC. GND      - 

Commodore Plus4 cartridge
----------------------------------

$00 . - reset (1/1)
$3F ? - info (1/8)
$52 R - read (5/3)
$57 W - write (6/2)
$53 S - signals (3/2)

. - reset
wysyłamy:
$00 .
odbieramy:
$00 .

? - info

wysyłamy:
$3F ?

odbieramy:
$56 V - Virtual to Real Hardware Interface
$52 R
$48 H
$49 I
$50 P - target device
$34 4
$01   - firmware version
$00   - firmware revision

R - read

wysyłamy:
$52 R
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:-0HLhlc2:
+--------+
fi2      - out
R/W      - out
/C1LOW   - out
/C1HI    - out
C2LOW    - 
C2HI     - 
fi0      - out
         - 
+--------+
:ArBMRC10:
+--------+
/CS0     - out
/CS1     - out
/CAS     - out
/RAS     - out
MUX      - out
BA       - out
/BRESET  - out
AEC      - 

odbieramy:
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out
+--------+
:-------I:
+--------+
/IRQ     - in
         - 
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

W - write

wysyłamy:
$57 W
+--------+
:  ALx   :
+--------+
A0       - out
A1       - out
A2       - out
A3       - out
A4       - out
A5       - out
A6       - out
A7       - out
+--------+
:  AHx   :
+--------+
A8       - out
A9       - out
A10      - out
A11      - out
A12      - out
A13      - out
A14      - out
A15      - out
+--------+
:-0HLhlc2:
+--------+
fi2      - out
R/W      - out
/C1LOW   - out
/C1HI    - out
C2LOW    - 
C2HI     - 
fi0      - out
         - 
+--------+
:ArBMRC10:
+--------+
/CS0     - out
/CS1     - out
/CAS     - out
/RAS     - out
MUX      - out
BA       - out
/BRESET  - out
AEC      - 
+--------+
:   Dx   :
+--------+
D0       - in/out
D1       - in/out
D2       - in/out
D3       - in/out
D4       - in/out
D5       - in/out
D6       - in/out
D7       - in/out

odbieramy:
+--------+
:-------I:
+--------+
/IRQ     - in
         - 
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

S - signals

wysyłamy:
$53 S
+--------+
:-0HLhlc2:
+--------+
fi2      - out
R/W      - out
/C1LOW   - out
/C1HI    - out
C2LOW    - 
C2HI     - 
fi0      - out
         - 
+--------+
:ArBMRC10:
+--------+
/CS0     - out
/CS1     - out
/CAS     - out
/RAS     - out
MUX      - out
BA       - out
/BRESET  - out
AEC      - 

odbieramy:
+--------+
:-------I:
+--------+
/IRQ     - in
         - 
         - 
         - 
         - 
         - 
         - 
         - 
+--------+
: AUDIOx :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)



Famicom/NES/Dendy/Pegasus
----------------------------------

gniazdo cartridgea w famicom

 1. GND      - 
 2. CPUA11   - out
 3. CPUA10   - out
 4. CPUA9    - out
 5. CPUA8    - out
 6. CPUA7    - out
 7. CPUA6    - out
 8. CPUA5    - out
 9. CPUA4    - out
10. CPUA3    - out
11. CPUA2    - out
12. CPUA1    - out
13. CPUA0    - out
14. CPUR/W   - out
15. /IRQ     - in
16. GND      - 
17. PPU/RD   - out
18. CIRAMA10 - in
19. PPUA6    - out
20. PPUA5    - out
21. PPUA4    - out
22. PPUA3    - out
23. PPUA2    - out
24. PPUA1    - out
25. PPUA0    - out
26. PPUD0    - in/out
27. PPUD1    - in/out
28. PPUD2    - in/out
29. PPUD3    - in/out
30. +5V      - 

31. +5V      - 
32. M2       - out
33. CPUA12   - out
34. CPUA13   - out
35. CPUA14   - out
36. CPUD7    - in/out
37. CPUD6    - in/out
38. CPUD5    - in/out
39. CPUD4    - in/out
40. CPUD3    - in/out
41. CPUD2    - in/out
42. CPUD1    - in/out
43. CPUD0    - in/out
44. /ROMSEL  - out
45. AUDIOOUT - out
46. AUDIOIN  - in
47. PPU/WR   - out
48. CIRAM/CE - in
49. PPU/A13  - out
50. PPUA7    - out
51. PPUA8    - out
52. PPUA9    - out
53. PPUA10   - out
54. PPUA11   - out
55. PPUA12   - out
56. PPUA13   - out
57. PPUD7    - in/out
58. PPUD6    - in/out
59. PPUD5    - in/out
60. PPUD4    - in/out

gniazdo cartridgea w nes

 1. GND      - 
 2. CPUA11   - out
 3. CPUA10   - out
 4. CPUA9    - out
 5. CPUA8    - out
 6. CPUA7    - out
 7. CPUA6    - out
 8. CPUA5    - out
 9. CPUA4    - out
10. CPUA3    - out
11. CPUA2    - out
12. CPUA1    - out
13. CPUA0    - out
14. CPUR/W   - out
15. /IRQ     - in
16. EXP0     - 
17. EXP1     - 
18. EXP2     - 
19. EXP3     - 
20. EXP4     - 
21. PPU/RD   - out
22. CIRAMA10 - in
23. PPUA6    - out
24. PPUA5    - out
25. PPUA4    - out
26. PPUA3    - out
27. PPUA2    - out
28. PPUA1    - out
29. PPUA0    - out
30. PPUD0    - in/out
31. PPUD1    - in/out
32. PPUD2    - in/out
33. PPUD3    - in/out
34. CICTOPAK - out
35. CICTOMB  - in
36. +5V      - 

37. SYSCLK   - out
38. M2       - out
39. CPUA12   - out
40. CPUA13   - out
41. CPUA14   - out
42. CPUD7    - in/out
43. CPUD6    - in/out
44. CPUD5    - in/out
45. CPUD4    - in/out
46. CPUD3    - in/out
47. CPUD2    - in/out
48. CPUD1    - in/out
49. CPUD0    - in/out
50. /ROMSEL  - out
51. EXP9     - 
52. EXP8     - 
53. EXP7     - 
54. EXP6     - 
55. EXP5     - 
56. PPU/WR   - out
57. CIRAM/CE - in
58. PPU/A13  - out
59. PPUA7    - out
60. PPUA8    - out
61. PPUA9    - out
62. PPUA11   - out
63. PPUA10   - out
64. PPUA12   - out
65. PPUA13   - out
66. PPUD7    - in/out
67. PPUD6    - in/out
68. PPUD5    - in/out
69. PPUD4    - in/out
70. CICRST   - out
71. CICCLK   - out
72. GND      - 

sygnały:

+--------+
: CPUDx  :
+--------+
CPUD0    - in/out
CPUD1    - in/out
CPUD2    - in/out
CPUD3    - in/out
CPUD4    - in/out
CPUD5    - in/out
CPUD6    - in/out
CPUD7    - in/out
+--------+
: CPUALx :
+--------+
CPUA0    - out
CPUA1    - out
CPUA2    - out
CPUA3    - out
CPUA4    - out
CPUA5    - out
CPUA6    - out
CPUA7    - out
+--------+
: CPUAHx :
+--------+
CPUA8    - out
CPUA9    - out
CPUA10   - out
CPUA11   - out
CPUA12   - out
CPUA13   - out
CPUA14   - out
/ROMSEL  - out
+--------+
: PPUALx :
+--------+
PPUA0    - out
PPUA1    - out
PPUA2    - out
PPUA3    - out
PPUA4    - out
PPUA5    - out
PPUA6    - out
PPUA7    - out
+--------+
: PPUAHx :
+--------+
PPUA8    - out
PPUA9    - out
PPUA10   - out
PPUA11   - out
PPUA12   - out
PPUA13   - out
         - 
         - 
+--------+
: PPUDx  :
+--------+
PPUD0    - in/out
PPUD1    - in/out
PPUD2    - in/out
PPUD3    - in/out
PPUD4    - in/out
PPUD5    - in/out
PPUD6    - in/out
PPUD7    - in/out
+--------+
:----WRc2:
+--------+
M2       - out
CPUR/W   - out
PPU/RD   - out
PPU/WR   - out
         - 
         - 
         - 
         - 
+--------+
:10--SCRP:
+--------+
CICTOPAK - out
CICRST   - out
CICCLK   - out
SYSCLK   - out (21MHz-27MHz!)
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
:10--MCAI:
+--------+
/IRQ     - in
CIRAMA10 - in
CIRAM/CE - in
CICTOMB  - in
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)
+--------+
: AUDIO  :
+--------+
AUDIO0   - out (analog)
AUDIO1   - out (analog)
AUDIO2   - out (analog)
AUDIO3   - out (analog)
AUDIO4   - out (analog)
AUDIO5   - out (analog)
AUDIO6   - out (analog)
AUDIO7   - out (analog)

Famicom/NES/Dendy/Pegasus cartridge
----------------------------------

$00 . - reset (1/1)
$3F ? - info (1/8)
$52 R - read (9/5)
$57 W - write (11/3)
$53 S - signals (5/3)

. - reset
wysyłamy:
$00 .
odbieramy:
$00 .

? - info

wysyłamy:
$3F ?

odbieramy:
$56 V - Virtual to Real Hardware Interface
$52 R
$48 H
$49 I
$46 F - target device
$43 C
$01   - firmware version
$00   - firmware revision

R - read

wysyłamy:
$52 R
+--------+
: CPUALx :
+--------+
CPUA0    - out
CPUA1    - out
CPUA2    - out
CPUA3    - out
CPUA4    - out
CPUA5    - out
CPUA6    - out
CPUA7    - out
+--------+
: CPUAHx :
+--------+
CPUA8    - out
CPUA9    - out
CPUA10   - out
CPUA11   - out
CPUA12   - out
CPUA13   - out
CPUA14   - out
/ROMSEL  - out
+--------+
: PPUALx :
+--------+
PPUA0    - out
PPUA1    - out
PPUA2    - out
PPUA3    - out
PPUA4    - out
PPUA5    - out
PPUA6    - out
PPUA7    - out
+--------+
: PPUAHx :
+--------+
PPUA8    - out
PPUA9    - out
PPUA10   - out
PPUA11   - out
PPUA12   - out
PPUA13   - out
         - 
         - 
+--------+
:----WRc2:
+--------+
M2       - out
CPUR/W   - out
PPU/RD   - out
PPU/WR   - out
         - 
         - 
         - 
         - 
+--------+
:10--SCRP:
+--------+
CICTOPAK - out
CICRST   - out
CICCLK   - out
SYSCLK   - out
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - out (analog)
AUDIO1   - out (analog)
AUDIO2   - out (analog)
AUDIO3   - out (analog)
AUDIO4   - out (analog)
AUDIO5   - out (analog)
AUDIO6   - out (analog)
AUDIO7   - out (analog)

odbieramy:
+--------+
: CPUDx  :
+--------+
CPUD0    - in/out
CPUD1    - in/out
CPUD2    - in/out
CPUD3    - in/out
CPUD4    - in/out
CPUD5    - in/out
CPUD6    - in/out
CPUD7    - in/out
+--------+
: PPUDx  :
+--------+
PPUD0    - in/out
PPUD1    - in/out
PPUD2    - in/out
PPUD3    - in/out
PPUD4    - in/out
PPUD5    - in/out
PPUD6    - in/out
PPUD7    - in/out
+--------+
:10--MCAI:
+--------+
/IRQ     - in
CIRAMA10 - in
CIRAM/CE - in
CICTOMB  - in
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

W - write

wysyłamy:
$57 W
+--------+
: CPUALx :
+--------+
CPUA0    - out
CPUA1    - out
CPUA2    - out
CPUA3    - out
CPUA4    - out
CPUA5    - out
CPUA6    - out
CPUA7    - out
+--------+
: CPUAHx :
+--------+
CPUA8    - out
CPUA9    - out
CPUA10   - out
CPUA11   - out
CPUA12   - out
CPUA13   - out
CPUA14   - out
/ROMSEL  - out
+--------+
: PPUALx :
+--------+
PPUA0    - out
PPUA1    - out
PPUA2    - out
PPUA3    - out
PPUA4    - out
PPUA5    - out
PPUA6    - out
PPUA7    - out
+--------+
: PPUAHx :
+--------+
PPUA8    - out
PPUA9    - out
PPUA10   - out
PPUA11   - out
PPUA12   - out
PPUA13   - out
         - 
         - 
+--------+
:----WRc2:
+--------+
M2       - out
CPUR/W   - out
PPU/RD   - out
PPU/WR   - out
         - 
         - 
         - 
         - 
+--------+
:10--SCRP:
+--------+
CICTOPAK - out
CICRST   - out
CICCLK   - out
SYSCLK   - out
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
: CPUDx  :
+--------+
CPUD0    - in/out
CPUD1    - in/out
CPUD2    - in/out
CPUD3    - in/out
CPUD4    - in/out
CPUD5    - in/out
CPUD6    - in/out
CPUD7    - in/out
+--------+
: PPUDx  :
+--------+
PPUD0    - in/out
PPUD1    - in/out
PPUD2    - in/out
PPUD3    - in/out
PPUD4    - in/out
PPUD5    - in/out
PPUD6    - in/out
PPUD7    - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - out (analog)
AUDIO1   - out (analog)
AUDIO2   - out (analog)
AUDIO3   - out (analog)
AUDIO4   - out (analog)
AUDIO5   - out (analog)
AUDIO6   - out (analog)
AUDIO7   - out (analog)

odbieramy:
+--------+
:10--MCAI:
+--------+
/IRQ     - in
CIRAMA10 - in
CIRAM/CE - in
CICTOMB  - in
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)

S - signals

wysyłamy:
$53 S
+--------+
:----WRc2:
+--------+
M2       - out
CPUR/W   - out
PPU/RD   - out
PPU/WR   - out
         - 
         - 
         - 
         - 
+--------+
:10--SCRP:
+--------+
CICTOPAK - out
CICRST   - out
CICCLK   - out
SYSCLK   - out
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - out (analog)
AUDIO1   - out (analog)
AUDIO2   - out (analog)
AUDIO3   - out (analog)
AUDIO4   - out (analog)
AUDIO5   - out (analog)
AUDIO6   - out (analog)
AUDIO7   - out (analog)

odbieramy:
+--------+
:10--MCAI:
+--------+
/IRQ     - in
CIRAMA10 - in
CIRAM/CE - in
CICTOMB  - in
         - 
         - 
EXP0     - in/out
EXP1     - in/out
+--------+
:  EXP   :
+--------+
EXP2     - in/out
EXP3     - in/out
EXP4     - in/out
EXP5     - in/out
EXP6     - in/out
EXP7     - in/out
EXP8     - in/out
EXP9     - in/out
+--------+
: AUDIO  :
+--------+
AUDIO0   - in (analog)
AUDIO1   - in (analog)
AUDIO2   - in (analog)
AUDIO3   - in (analog)
AUDIO4   - in (analog)
AUDIO5   - in (analog)
AUDIO6   - in (analog)
AUDIO7   - in (analog)


wniosek nasuwający się jednak dopiero PO projekcie dla NESa, to że trzeba by wysyłać i odbierać tę samą ilość danych - kłopotliwe jednak są linie analogowe
i chyba lepiej będzie mieć dwa rozkazy - Read i Write

%00  - out RESET interface
data - in

%01  - out INFO
data - in

%10  - out WRITE out signals
data - out

%11  - out READ in signals
data - in

bo inaczej nie będzie można tylko odczytać stanu linii carta
a to byłoby potrzebne np przy próbkowaniu sygnału audio

ale to jest nierozszerzalne na przyszłość - może rzeczywiście poświęcić ten bajt na rozkaz?

być może nie ma sensu obsługiwać sygnałów CICxxx i SYSCLK a i może EXPx

pancio sugeruje użyć CH32V307 bo on obsługuje USB2 (480Mbps) i ma DAC i ADC do obsługi audio
w PC to urządzenie przedstawia się jako com

robocza nazwa urządzenia: VRHI - Virtual to Real Hardware Interface






