Indeks | English version |
[kliknij na zdjęcie żeby powiększyć]
W kalkulatorze FX-700P został użyty mikroprocesor HD61913A01 z wewnętrzną pamięcią programu oraz zintegrowanym sterownikiem wyświetlacza LCD i klawiatury. Może się on komunikować z zewnętrzną pamięcią danych i peryferiami przez 4-bitową magistralę.
Zwykle końcówki portu klawiatury są podzielone na dwie grupy: wiersze skonfigurowane jako wyjścia i kolumny skonfigurowane jako wejścia.
Wciśnięty klawisz łączy wybrany wiersz z wybraną kolumną.
Kalkulator Casio FX-700P nie zachowuje tej konwencji.
Klawisze mogą być podłączone między dwie dowolne końcówki portu klawiatury, bez żadnego podziału na wiersze i kolumny.
Zaletą takiego rozwiązania jest mniejsza potrzebna ilość końcówek portu dla obsługi określonej liczby klawiszy, wadą jest bardziej skomplikowany algorytm obsługi klawiatury.
Linie danych (Data) są dwukierunkowe z opornikami polaryzującymi o dużej oporności wymuszającymi wysoki poziom.
Na liniach danych obowiązuje zanegowana logika, tzn. jako zero logiczne przyjęty został wysoki poziom, jako jedynka logiczna niski poziom.
CE (Chip Enable) - aktywny niski poziom.
OP - gdy poziom niski (OP=0) następuje przesyłanie danych do rejestru komend (Command Register, tylko do zapisu), gdy wysoki to do rejestru danych (Data Register, możliwy zapis lub odczyt).
Ten sygnał nie powinien się zmieniać, gdy linia CE jest w stanie niskim.
Wszystkie linie magistrali systemowej mogą być ustawione w stan wysokiej impedancji, co umożliwia dostęp z zewnątrz do pamięci RAM.
Częstotliwość impulsów CK1 i CK2 wynosi ok. 200kHz.
Kalkulator FX-700P zawiera dwa układy scalone pamięci RAM typu HD61914A, zajmujące przestrzeń adresową odpowiednio $0000-$07FF i $0800-$0FFF. Podobny model PB-100 ma wlutowany tylko jeden układ scalony pamięci, przy czym można dodać drugi znajdujący się wewnątrz opcjonalnego modułu rozszerzenia OR-1. Interpreter języka BASIC nie obsługuje dalszego powiększania ilości pamięci RAM.
Końcówka | Funkcja |
---|---|
D4-D1 | dwukierunkowa szyna danych |
OP | wybór rejestru |
CK1, CK2 | dwufazowy zegar |
CE | Chip Enable, aktywny poziom niski |
V1 | wybór dekodowanego bitu adresu A11 |
GND | masa (plus napięcia zasilającego) |
VDD2 | -5V gdy stan aktywny, 0V gdy stan nieaktywny (tylko przechowywanie danych) |
VDD1 | podtrzymanie zawartości pamięci, podłączone do -5V przez opornik 390ohm |
Końcówki 24-27 i 29-33 są w kalkulatorze podłączone GND. Niektóre z nich (tzn. V2-V4) przypuszczalnie mogłyby funkcjonować jako dodatkowe linie wyboru dekodowanego adresu (A12-A14), ale nie testowałem tego. Wszystkie pozostałe końcówki są nie podłączone.
Kod | Funkcja | Opis |
---|---|---|
$4 | Zapis | Komenda zapisu (OP=0) składa się z 4-bitowego słowa $4, po którym następują trzy 4-bitowe słowa zawierające 11-bitowy adres wewnątrz pamięci (najpierw słowo najmniej znaczące) oraz 4-bitowe słowo zawierające adres pamięci. Najbardziej znaczący bit adresu wewnątrz pamięci jest ignorowany. Po wysłaniu tej komendy można do pamięci zapisać dowolną ilość danych w następnym cyklu OP=1. Licznik adresu zwiększany jest automatycznie po każdym przesłanym 4-bitowym słowie. |
$0 | Odczyt | Komenda odczytu jest podobna do komendy zapisu, z tym że pierwsze przesyłane 4-bitowe słowo jest równe $0 a nie $4.
Po wysłaniu tej komendy można z pamięci odczytać dowolną ilość danych w następnym cyklu OP=1.
Licznik adresu zwiększany jest automatycznie po każdym przesłanym 4-bitowym słowie. Pojedyncze 4-bitowe słowo $0 pojawia się regularnie na magistrali gdy kalkulator jest bezczynny. Nie znam jego dokładnego przeznaczenia, prawdopodobnie coś w rodzaju reset. |
OP=0 40C71 ;zapis pod adres $0FC0 OP=1 12A ;zapisywane dane: $0FC0<-$1, $0FC1<-$2, $0FC2<-$A OP=0 04630 ;odczyt z addresu $0364 OP=1 7C ;odczytywane dane: $0364->$7, $0365->$C OP=0 0 ;reset
Końcówka złącza |
Końcówka procesora |
Symbol | Funkcja |
---|---|---|---|
1 | 4 | D4 | linia danych, bit 4 |
2 | 3 | D3 | linia danych, bit 3 |
3 | 2 | D2 | linia danych, bit 2 |
4 | 1 | D1 | linia danych, bit 1 |
5 | 80 | OP | wybór rejestru |
6 | 79 | CK2 | dwufazowy zegar |
7 | 78 | CK1 | dwufazowy zegar |
8 | 77* | VDD3 | -5V gdy kalkulator włączony, 0V gdy wyłączony |
9 | 75 | CE1 | RAM Chip Enable, aktywny niski poziom |
10 | 74 | CE2 | Chip Enable interfejsu magnetofonu kasetowego, aktywny niski poziom |
11 | 76 | VDD1 | minus zasilania |
12 | 73 | GND | masa (plus zasilania) |
Gwiazdka przy numerze oznacza, że końcówka procesora jest połączona z magistralą nie bezpośrednio, ale przez dodatkowy układ.
Z kalkulatora można pobierać prąd najwyżej kilka mA do zasilania dodatkowych urządzeń. Większy pobór prądu spowodowałby zbyt duży spadek napięcia, ponieważ wewnętrzny regulator obniżający napięcie baterii do ok. 5V składa się tylko z diody krzemowej i opornika 100ohm połączonych szeregowo.
W okolicach procesora jest zamontowana dodatkowa płytka drukowana, której schemat jest przedstawiony na poniższym rysunku. Celem tego układu jest prawdopodobnie zapobieganie utraty danych w pamięci RAM w momencie włączania i wyłączania kalkulatora. Zmiana sygnału on/stby generuje krótki impuls na wyjściu bramki XOR, który na chwilę blokuje sygnał CK2 pamięci RAM.
Interfejs jest wybrany przy niskim poziomie linii CE2. Dane są przesyłane tylko przez linię Data4 (obowiązuje zanegowana logika).
Kod | Funkcja | Opis |
---|---|---|
101000 | Otwarcie do zapisu | Komenda otwiera kanał komunikacyjny do zapisu. |
011000 | Otwarcie do odczytu | Komenda otwiera kanał komunikacyjny do odczytu. |
000100 | Odczyt stanu interfejsu | Kalkulator wysyła tę komendę w cyklu OP=0, po czym w cyklu OP=1 odczytuje jeden bit danych. Odczytany bit=0 oznacza że interfejs magnetofonu jest zajęty lub nie podłączony, bit=1 oznacza że jest gotowy do odebrania/wysłania danej. Błąd ERR9 gdy przekroczony limit czasu. |
010010 | Transfer danej | Kalkulator wysyła tę komendę w cyklu OP=0, po czym w cyklu OP=1 przesyła bajt danej szeregowo w następującej kolejności:
Przed wysłaniem na taśmę właściwych danych konieczne jest zapisanie sygnału wprowadzającego składającej się z ok. 160 słów równych 111111111111xxxx (w celu ustalenia się prędkości przesuwu taśmy, poziomu zapisu itp.). |
100100 | Wykryta częstotliwość nośna | Kalkulator wysyła tę komendę w trybie LOAD po odebraniu pierwszych 12 słów sygnału wprowadzającego. Od tego momentu dane przesyłane przez interfejs do kalkulatora będą synchronizowane bitem startu. |
000000 | Reset | Ta komenda zamyka kanał komunikacyjny. |
111100 | Zamknięcie kanału | Zwykle kalkulator kończy transmisję wysyłając komendę Reset. Wyjątkiem jest transmisja zainicjowana przez LOAD, która kończona jest tą komendą. Przy odczycie z taśmy za pomocą GET nadal występuje w tym miejscu komenda Reset. |
Zapis na taśmę ============== 1. OP=0 101000 ;otwarcie kanału do zapisu 2. OP=0 000100 ;powtarzaj tę sekwencję, aż interfejs OP=1 0 lub 1 ;zwróci jedynkę OP=0 010010 ;wyślij słowo sygnału wprowadzającego OP=1 1111111111111111 3. powrót do punktu 2, aż zostanie wysłane ok. 160 słów 4. OP=0 000100 ;powtarzaj tę sekwencję, aż interfejs OP=1 0 lub 1 ;zwróci jedynkę OP=0 010010 ;wyślij bajt do zapisu ($63 w tym przykładzie) OP=1 0110001100111111 5. powrót do punktu 4, aż wszystkie dane zostaną zapisane 6. OP=0 000000 ;zamknięcie kanału komunikacyjnego Odczyt z taśmy ============== 1. OP=0 011000 ;otwarcie kanału do odczytu 2. OP=0 000100 ;powtarzaj tę sekwencję, aż interfejs OP=1 0 lub 1 ;zwróci jedynkę OP=0 010010 ;odczytaj słowo sygnału wprowadzającego OP=1 1111111111111111 3. powrót do 2, aż zostanie odebrane 12 słów 4. OP=0 100100 ;wyślij do interfejsu komendę "Wykryto częstotliwość nośną" 5. OP=0 000100 ;powtarzaj tę sekwencję, aż interfejs OP=1 0 lub 1 ;zwróci jedynkę OP=0 010010 ;odczytaj daną OP=1 1111010010011011 ;przykładowa odczytana dana $C9 6. powrót do punktu 5, aż wszystkie dane zostaną odebrane 7. OP=0 000000 ;zamknięcie kanału komunikacyjnego
Kalkulator zapisuje drukowane dane do pamięci RAM pod adres $0132-$0133.
Do sterowania przepływem informacji wykorzystane są komendy sterujące skladające się z 4-bitowego słowa wysyłanego przy OP=0 oraz tego samego słowa wysyłanego przy OP=1.
Oba słowa przesyłane są przy CE1=1 i CE2=1.
Kod | Funkcja |
---|---|
$80 | wstawiany między obliczane wyrażenie a wynik obliczeń (w trybie pracy jako kalkulator), drukowane jako spacja |
$F0 | wstawiany na koniec każdej linii listingu programu BASIC, chyba ignorowany przez drukarkę |
$FD | kod wysyłany przez kalkulator po wciśnięciu klawisza AC, przerywa drukowanie i czyści bufor drukarki |
$FE | kod rozdzielający drukowane znaki |
$FF | powrót karetki/nowa linia |