UP2RS
–––––––––
Wersja 1, zawsze może ulec zmianie.

Ostrzeżenie!!! Wszystkie podłączenia należy wykonywać na wyłączonym C64. Autor nie odpowiada za lekkomyślne, nieprawidłowe podłączenie, brak zdolności manualnych, oraz wszystkie uszkodzenia, do których doszło w wyniku braku zdrowego rozsądku.
Podczas tworzenia tego artykułu nie ucierpiał żaden Commodore C64.




Do wykonania interfejsu będą potrzebne:
1. Niezbędnie:
–––––––––
a) Konwenter USB-UART PL2303HX do nabycia na znanym portalu aukcyjnym polskim, lub chińskim. U nas w kraju z przesyłką wychodzi ok 15 zł;
b) Złącze krawędziowe user port;
c) Sprawny c64 ze sprawnym User Portem;

2. Mogą być, ale bez nich też interfejs będzie działał.
–––––––––
a) pistolet na klej termo lub lutownica.
b) taśma izolacyjna
c) obudowa do user portu.
d) płyn wzmacniający, w przypadku osób pełnoletnich może być z zawartością alkoholu, ale w ilościach mniej, niż hurtowych.


              1. Wstęp

Jak sięgam pamięcia wstecz, zawsze poszukiwałem jakiegoś sensownego rozwiązania, pozwalającego przenosić szybko i skutecznie programy i dane pomiędzy C64 <--> PC. Począwszy poprzez własnie rozwiązania programowe pod DOS-em, up2sd, po rozwiązania typu PC64, 1541emu, sd2iec, a skończywszy na najnowszych 1541u. Wszystkie te interfejsy pozwalają przenosić dane, lecz nie rozwiązują problemu szybkiego transferu w momencie, kiedy chcemy korzystać z dobrodziejstwa programowania na komputerze PC, a efekty sprawdzać na C64 (jak np. w programowaniu stm32). Niestety, nie jestem genialnym programistą, który napisze program, bo mapę c64, rozkazy procesora 6502, w tym te niepublikowane, ma w pamięci, potem go przeniesie za pomocą karty SD do C64, uruchomi i będzie mu działał. Ew. do poprawki zostanie kolor ramki, albo liter. U mnie niestety proces programowania polega na wyłuskiwaniu robali z co drugiej linijki kodu. Co za tym idzie, często muszę kompilować i sprawdzać efekty w praktyce. Z pomocą na te bolączki przychodzi interfejs RS232, który pragnę Wam zaprezentować. Rozwiązanie to jest przeznaczone do wykonania dla każdego. Nawet dla tych, którzy słysząc słowo lutownica, z okrzykiem przerażenia wyskakują przez okno, uprzednio upewniwszy się, że znajdują się na parterze. Nawet dla tych, którzy nie mają juz złącz RS232 w swoim PeCecie, za to na pewno posiadają USB.

PL2303HX



             2. Wykonanie interfejsu jest banalnie proste.

Najpierw musimy zdobyć potrzebne komponenty. W przypadku konwentera USB-UART zanabywamy go na znanym polskim portalu aukcyjnym. W przypadku złącza krawędziowego user portu, jest już trochę trudniej. Ja swoje złącza zakupiłem na aliexpress.com, zapłaciłem 12$ za 5 sztuk. Cena nie zwala z nóg. Należy zwrócic uwagę, żeby złącze user portu posiadało piny, a nie pady do przyczepiania przewodów. Mając na uwadze, że złącza user portu będa szły z Chin jakiś czas, można też w Chinach zamówić sobie konwenter PL2303HX. Cenowo wyjdzie tyle, co w Polsce, ale jak dobrze poszukać, to przesłyka będzie darmowa. Na aliexpress.com można się zarejestrować, płatność odbywa się poprzez np. mTransfer (!!!), ochrona klienta działa lepiej niż na alledrogo (przetestowałem), sprzedawca pieniądze od nas otrzymuje dopiero, po potwierdzeniu, że odebraliśmy towar zgodny z zamówieniem.
Mając już oba składniki naszej potrawy, łączymy je ze sobą tak, jak poniżej:

A. Widok ogólny i opis wyprowadzeń konwentera PL2303HX.

PL2303HX
B. Złącze User Port.
userport
Warto sobie opisać, gdzie jest góra złącza, aby nie doszło do tragicznej w skutkach pomyłki przy podłączeniu interfejsu.

C. Łączymy wyprowadzenia konwentera PL2303HX z końcówkami user portu tak, jak na załączonym zdjęciu.
polaczenie

user port C64
PL2303HX
RS232
PB0 – Pin C
Zielony
(Green)
TXD Transmit Data
PA2 – Pin M
Biały
(White)
RXD Receive Data
GND – Pin N
Czarny (Black)
GND

UWAGA!

–––––––––
Czerwonego przewodu Vcc nie łączymy!!!
–––––––––

Złącza pasują z bolcami, jednak dla pewności połączenia można użyc kleju. Rodzaj kleju i technika klejenia dowolna, należy jedynie zwórcic uwagę, że końcówki konwentera USB-UART nie do końca wchodzą na bolce złącza user portu.
userportuserport

Ja użyłem termokleju (potrzebny pistolet).
pistolet termo
Należy nałożyć trochę więcej kleju, tak aby wszystko pewnie i stabilne trzymało się razem. Chroni nas ten zabieg przed niekontrolowanym wypadaniem końcówek, a przez co zrywaniem transmisji i pozwli zaoszczędzić nerwów.
userport


Kiedyś, na jakiejś aukcji, kupiłem obudowę do złącza user portu, więc mam w dostateczny sposób zabezpieczone pozostałe piny.

Gotowy przewód

Jeśli chcecie zaizolować resztę nie podłączonych wyprowadzeń (warto, bo zabezpieczymy w ten sposób układ CIA przed przypadkowym spaleniem), a nie macie obudowy (jest to towar bardzo deficytowy i jeżeli ktokolwiek widział, ktokolwiek wie, niech da znać, gdzie takie obudowy są) to można do tego wykorzystać też zwykłą taśmę izolacyjną.

I to już wszystko, mamy zmontowany, gotowy do działania interfejs. Przed podłączeniem do C64 dobrze radzę jeszcze raz sprawdzić prawidłowe podłączenie przewodów. Oczywiście interfejs PODPINAMY przy WYŁĄCZONYM Commodore C64.


Tak wygląda podłączony interfejs do C64.
Gotowy przewód

A tak wygląda podłączony interfejs z obudową.
Gotowy przewód

             3. Oprogramowanie, czyli ale po co.

Wiadomo, że najlepszy i najprostszy interfejs jest do niczego, gdy nie ma do niego oprogramowania. Ja znalazłem doskonałe do moich celów, a nazywa się Over5. Właściwie od tego powinienem zacząć, bo dzięki temu oprogramowaniu ma sens wykonanie interfejsu i wykorzystywanie go w procesie kompilowania programu na PC a testowania bezpośrednio na C64.

Do przesyłania potrzebujemy:
Z paczki over5-20021117.tar.gz program dla C64:
over5-20021117\bin-c64-pal\fastrs
Paczkę Over5_0_711_win32.zip z plikami over5.exe i Over5.cfg

Konfiguracja Over5 na PC.
Na początek, po pomyślnym zainstalowaniu sterowników do konwentera USB-UART PL2303HX, należy skonfigurować numer COMu i prędkość transmisji, oraz parametry przesyłu danych tak, jak to pokazałem na poniższym obrazku.

Konfiguracja com

Następnie w pliku Over5.cfg ustawiamy parametry:
Device=8 -tego nie zmieniałem
SERIALDEVICE=COM2 -COM2 to jest numer portu, na którym mamy zainstalowany nasz konwenter
Niestety, małe schody napotkamy, gdy chcemy przesłać program dla c64 FastRS. Jeśli nie znamy innej metody (a takowa jest, wystarczy poszukać instrukcję w plikach archiwum Over5), to pozostawałoby nam po prostu przepisać (jak za starych dobrych czasów, kiedy piwo było mocniejsze, a Cindy Crawford nieco młodsza) program do pamięci C64, lub... ale o tym to za chwilę.
Na razie załóżmy, że już mamy program FastRS w pamięci C64. Uruchamiamy go, wykonujemy sys700, ekran zostaje wygaszony, C64 oczekuje na odbiór danych. Po stronie PC z wiersza poleceń wpisujemy np.: over5.exe SIMPLEWRITE monsters.prg i wciskamy enter. Ekran C64 mruga kolorowymi paskami, dane przesyłają się, albo i nie (gdy coś pomieszalismy ;-).


Opis polecenia: over5.exe SIMPLEWRITE monsters.prg
over5.exe - program uruchamiany po stronie PC;
SIMPLEWRITE - parametr, z którym uruchamiamy program Over5;
monsters.prg - nazwa programu do przesłania do c64.

Słowo informacji, dla tych, którzy do tej pory nic nie słyszeli o Over5. Można oczywiście przesyłać pliki w drugą stronę, czyli z C64 do PC.
Najpierw uruchamiamy over5 na komputerze PC poleceniem:
over5.exe SIMPLEREAD C64data.prg
gdzie:
over5.exe - program uruchamiany po stronie PC;
SIMPLEREAD - parametr, z którym uruchamiamy program Over5;
C64data.prg - nazwa na dysku, pod jaką zapisze się przesłany program z c64.

Na Commodore C64, po uprzednim wywołaniu FastRS, wpisujemy SYS703 i gotowe.


Istnieje jeszcze jeden sposób wywołania programu over5: over5.exe server. Zaciekawionych tym tematem odsyłam do instrukcji zawartych w pliku over5-20021117.tar.gz


4. PL2303HX, Over5, Final 3 - czyli 3 naciśnięcia klawiszy.

To wszystko powyżej możemy traktować jako ciekawostkę i nie do końca wygodny sposób na przesyłanie danych. No bo co się stanie, gdy program FastRS zostanie przypadkowo skasowany? Trzeba wgrywać jeszcze raz, pół biedy, gdy ze stacji dyskietek, albo z 1541u, albo z sd2iec, ale bieda cała, jak z magnetofonu (ktoś go jeszcze używa?!). Szczególnie, gdy mamy 1541ultimate cała powyższa zabawa wydaje się zupełnie pozbawiona sensu, ale... czy aby na pewno?
Remedium na powyższe, co sprawi, że całość całkiem sprawnie można używać, jest umieszczenie programu FastRS w pamięci ROM, tak, aby po każdym resecie można go szybko przywołać. No tak, ale to trzeba by projektować jakiś cardrige, albo zmontować na płytce uniwersalnej, no a miało być bez lutownicy. I na to znalazła się rada.
Dzięki pewnemu Czechowi, a także inicjatywie na lemon64.com, oraz uprzejmości użytkownika forum c64power.com, który wykonał kilka płytek do TFC3++, ceny na cardrige Final3 spadły. Można go samemu wykonać (no ale to już dla ludzi posiadających lutownicę). Można kupić za niewielkie doprawdy pieniądze na znanym polskim portalu aukcyjnym. Widziałem gotowy, zmontowany Final3, bez obudowy już za 49 zł. Dodatkowy bonus w stosunku do oryginalnego Finala'a jest taki, że mozna użyć większą kostkę pamięci ROM (do 256kB).

Poniżej na zdjęciach:
Po lewej stronie Final 3 wykonany wg projektu płytki użytkownika lemon64.com e5frog'a, po prawej Final 3 wykonany na bazie płytki zaprojektowanej przez użytkownika c64power.com rs2322'a (Przypadek? Nie sądzę!).

Konfiguracja com

Skwapliwie skorzystałem z tej mozliwości i przerobiłem w kilku miejscach oryginalny ROM Finala tak, aby w pełni współpracował z interfejsem RS232, programem Over5, a przy okazji nie tracił nic ze swej funkcjonalności.

Zmiany w ROM TFC++ w stosunku do oryginału:
1. Final zawsze po reset uruchamia się w trybie BASIC. Przejście do DESKTOPU Finala jest mozliwe po wpisaniu komendy... DESKTOP. Zawsze uważałem, że uruchamianie się Finala 3 w trybie DESKTOP jest bez sensu, ze względu na to, że jak się zagapisz, to możesz skasować sobie efekty pracy. Przez to m.in. w dawnych, dobrych czasach zakupiłem polskiego klona Action Replaya.
2. Pod klawiszem F1 (w miejsce polecenia LIST) znajduje się SYS57238 - wywołanie procedury przepisującej program FastRS bezpośrednio do RAM C64, w miejsce do tego przeznaczone. Za pomocą triku zwanego "dynamiczną klawiaturą" od razu po wywołaniu klawiszem F1 programu FastFS możemy go uruchomić w trybie odbioru naciskając RETURN.
I to są te obiecane 3 nacisnięcia klawiszy Reset -> F1 -> Return.


Plik z ROM do wypalenia uzyskasz klikając TU.

Na koniec.
U mnie na komputerze PC aktualnie skrypt kompilacji wygląda tak:

set assfile=master.txt - definiujemy plik do kompilacji, tutaj jest to akurat kod źródłowy MasterMon'a Polonusa;
set outfile=program.prg - nazwa programu po kompilacji;
del %outfile% - kasujemy poprzednią wersję skompilowanego programu;
64tass.exe %assfile% -o %outfile% -L program_listing.txt - wywołujemy kompilację z parametrami;
if not exist %outfile% goto i - jeżeli wystąpiły błędy, to nic nie wysyłamy do c64;
over5.exe SIMPLEWRITE program.prg - przesyłamy skompilowany program do pamięci C64 pamiętając o uprzednim uruchomieniu FastRS na C64 (Mając TFC++ ze zmodyfikowanym ROM naciskamy kolejno: Reset -> F1 -> Return).
:i

O programowaniu Commodore C64 przy użyciu komputera PC więcej w tym numerze C&A
w artykule, który napisał Skull/Samar: "Współczesne środowisko programowania na Commodore 64". Paczka z oprogramowaniem dołączonym do tego numeru tutaj.

Pozdrawiam, Tomasz "Moneo" K.

PS. Zmiany w stosunku do oryginalnego ROM Finala 3:
$94c0 (offset $14c0 w ROM TFC++)
jest:
.byte $A0,$8D,$53,$79,$35,$37,$32,$33
.byte $38,$3A,$0D,$00,$8D,$52,$75,$3A
.byte $0D,$00,$44,$4C,$6F,$3A,$0D,$00
.byte $8D,$44,$6F,$22,$24,$3A,$0D,$00
było:
.byte $A0,$8D,$4C,$49,$53,$54,$3A,$0D
.byte $00,$8D,$52,$55,$4E,$3A,$0D,$00
.byte $44,$4C,$4F,$41,$44,$0D,$00,$8D
.byte $93,$44,$4F,$53,$22,$24,$0D,$00

dopisane:
$01F96
.byte $78,$A9,$44,$8D,$FF,$DF,$58,$60

.$10000 do $10650
program Over5 FastRS wraz z procedura instalującą go
w pamięci ram C64.

$11F99
.byte $8D,$FF,$DF,$4C,$00,$80

Tutaj można pobrać źródło procedury instalacyjnej w ram C64 programu FastRS umieszczone w zmodyfikowanym ROM TFC++.


Zawartość tego artykułu może ulec zmianie.

Tutaj na FORUM można podyskutować na temat interfejsu.

Tomasz K.
Ostatnia aktualizacja: 15.11.2015

Lista zmian w dokumencie.
15.11.2015 Publikacja pierwszej wersji dokumentu.