Komodor 128

Komodor 128
Commodore-128.jpg
Producent Commodore Business Machines (CBM)
Typ Komputer domowy
Data wydania 1985 ; 38 lat temu ( 1985 )
Przerwane 1989 ; 34 lata temu ( 1989 )
Jednostki sprzedane 5,7 miliona na całym świecie
System operacyjny

Commodore BASIC 7.0 Digital Research CP/M 3.0 GEOS
procesor
MOS 8502 @ 1–2 MHz Zilog Z80 A lub Zilog Z80 B @ 4 MHz
Pamięć 128 KB (standardowo), 640 KB (z rozszerzeniem RAM 512 KB REU)
Grafika VIC-II E (320×200, 16 kolorów, sprite'y , przerwanie rastrowe ), MOS 8563 (RGBI 640×200, 16 kolorów, blitter )
Dźwięk SID 6581/8580 (3× Osc , 4× fala , filtr , ADSR , pierścień )
Poprzednik Komodor 64

Commodore 128 , znany również jako C128 , C-128 , C= 128 , to ostatni 8-bitowy komputer domowy , który został wydany komercyjnie przez Commodore Business Machines (CBM). Zaprezentowany w styczniu 1985 roku na targach CES w Las Vegas , pojawił się trzy lata po swoim poprzedniku, najlepiej sprzedającym się komputerze lat 80-tych Commodore 64 .

C128 to znacznie rozszerzony następca C64, z prawie pełną kompatybilnością. Nowsza maszyna ma 128 KB pamięci RAM w dwóch bankach po 64 KB i 80-kolumnowe kolorowe wyjście wideo. Ma przeprojektowaną obudowę i klawiaturę . Dołączony jest również Zilog Z80 , który umożliwia C128 uruchomienie CP / M jako alternatywę dla zwykłego środowiska Commodore BASIC . Obecność Z80 i ogromnej biblioteki oprogramowania CP/M, którą zapewnia, w połączeniu z biblioteką oprogramowania C64, dała C128 jedną z najszerszych gam dostępnego oprogramowania wśród konkurentów.

Głównym projektantem sprzętu C128 był Bil Herd , który pracował nad Plus/4 . Innymi inżynierami sprzętowymi byli Dave Haynie i Frank Palaia, podczas gdy prace projektowe układu scalonego wykonał Dave DiOrio. Główne oprogramowanie systemu Commodore zostało opracowane przez Freda Bowena i Terry'ego Ryana, podczas gdy podsystem CP/M został opracowany przez Von Ertwine.

Przegląd techniczny

BASIC Monit dla Commodore 128 w trybie 40-kolumnowym, z uruchomionym Commodore BASIC V7.0

Klawiatura C128 zawiera cztery klawisze kursora, klawisz Alt , klawisz Help , klawisz Esc , klawisz Tab i klawiaturę numeryczną . Żaden z nich nie był obecny na C64, który miał tylko dwa klawisze kursora, co wymagało użycia klawisza Shift, aby przesunąć kursor w górę lub w lewo. Ten alternatywny układ został zachowany w 128, do użytku w trybie C64. Brak klawiatury numerycznej, klawisza Alt i klawisza Esc w C64 był problemem z niektórymi programami zwiększającymi produktywność CP / M , gdy były używane z kasetą Z80 C64. Wielu właścicieli C64 prosiło o klawiaturę, którzy spędzali długie godziny na wprowadzaniu programów do pisania w języku maszynowym . Wiele z dodanych klawiszy pasowało do odpowiedników obecnych na IBM PC i sprawiło, że nowy komputer stał się bardziej atrakcyjny dla twórców oprogramowania biznesowego. Podczas gdy 40-kolumnowy tryb 128 jest bardzo podobny do trybu C64, programista ma do dyspozycji dodatkowy 1 KB kolorowej pamięci RAM, ponieważ jest on multipleksowany przez adres pamięci 1. Zasilanie C128 jest ulepszone w porównaniu z zawodną konstrukcją C64, będąc znacznie większe i wyposażone w otwory chłodzące oraz wymienny bezpiecznik. C128 nie wykonuje testu systemowej pamięci RAM po włączeniu zasilania, jak poprzednie maszyny Commodore. Zamiast pojedynczego mikroprocesora 6510 w C64, C128 zawiera konstrukcję z dwoma procesorami. Podstawowy procesor, 8502 , jest nieco ulepszoną wersją 6510, która może być taktowana z częstotliwością 2 MHz . Drugi procesor to Zilog Z80 , który służy do uruchamiania oprogramowania CP/M , a także do inicjowania wyboru trybu pracy podczas uruchamiania. Dwa procesory nie mogą działać jednocześnie, dlatego C128 nie jest wieloprocesorowym .

Złożona architektura C128 obejmuje cztery różne rodzaje pamięci RAM (główna pamięć RAM 128 KB, pamięć wideo VDC 16–64 KB, 2 kNibbles VIC-II Color RAM, 2-kilobajtowa pamięć RAM napędu dyskietek w C128D, 0, 128 lub 512 KB REU RAM), dwa lub trzy procesory (główny: 8502, Z80 dla CP/M; 128D zawiera również 6502 w napędzie dysków) oraz dwa różne układy wideo (VIC-IIe i VDC) dla różnych trybów operacyjnych.

Wczesne wersje C128 czasami napotykają problemy z niezawodnością związane z temperaturą ze względu na użycie ekranu elektromagnetycznego na głównej płytce drukowanej. Tarcza była wyposażona w palce, które stykały się z wierzchołkami głównych układów scalonych, rzekomo powodując, że tarcza działała jak duży radiator . Połączenie słabego kontaktu między ekranem a chipami, z natury ograniczonej przewodności cieplnej plastikowych opakowań chipów, a także stosunkowo słabej przewodności cieplnej samego ekranu, w niektórych przypadkach powodowało przegrzanie i awarię. Układ SID jest pod tym względem szczególnie wrażliwy. Najczęstszym środkiem zaradczym jest usunięcie osłony, którą Commodore dodał późno w fazie rozwoju, aby zachować zgodność z przepisami FCC dotyczącymi częstotliwości radiowych.

C128 ma trzy tryby pracy . Tryb C128 ( tryb natywny ) działa z częstotliwością 1 lub 2 MHz z procesorem 8502 i ma dostępne zarówno 40-, jak i 80-kolumnowe tryby tekstowe . Tryb CP/M wykorzystuje zarówno Z80, jak i 8502 i może działać zarówno w 40-, jak i 80-kolumnowym trybie tekstowym. Tryb C64 jest prawie w 100 procentach kompatybilny z wcześniejszym komputerem. Wybór tych trybów jest realizowany przez układ Z80. Z80 kontroluje magistralę podczas pierwszego rozruchu i sprawdza, czy w napędzie znajduje się dysk CP/M, czy są obecne jakieś kasety C64/C128 lub czy klawisz Commodore (który służy jako selektor trybu C64 ) jest wciśnięty podczas uruchamiania. Na podstawie tych warunków przełączy się na odpowiedni tryb pracy.

Tryby

C128

Płyta główna C128

W 1984 roku, rok przed wydaniem Commodore 128, Commodore wypuściło Plus/4 . Chociaż był skierowany do rynku biznesowego z niższej półki, który nie mógł sobie pozwolić na stosunkowo wysokie koszty i wymagania szkoleniowe dotyczące wczesnych komputerów kompatybilnych z IBM PC , był postrzegany przez prasę Commodore jako kontynuacja 64 i oczekuje się, że poprawi ten model możliwości. Podczas gdy możliwości graficzne i dźwiękowe C64 były ogólnie uważane za doskonałe, reakcja na Plus / 4 była rozczarowaniem. Po wprowadzeniu Plus/4 w prasie Commodore pojawiły się powtarzające się zalecenia dotyczące nowego komputera o nazwie „C-128” ze zwiększoną pojemnością pamięci RAM, 80-kolumnowym wyświetlaczem, który był standardem w komputerach biznesowych, nowym językiem programowania BASIC, który programistom łatwo jest korzystać z grafiki i dźwięku komputera bez uciekania się do PEEK i POKE , nowego dysku, który poprawił fatalną szybkość transferu 1541 , a także całkowitą kompatybilność z C64.

Projektantom C128 udało się rozwiązać większość z tych problemów. Nowy chip, VDC , zapewnia C128 80-kolumnowy kolorowy wyświetlacz zgodny z CGA (zwany także RGBI dla czerwono-zielono-niebieskiego plus intensywność ). Nowy wówczas 8502 jest całkowicie kompatybilny wstecz z 6510 C64 , ale w razie potrzeby może działać z podwójną prędkością. BASIC 2.0 w C64 został zastąpiony przez BASIC 7.0, który zawiera programowania strukturalnego z BASIC 3.5 Plus / 4, a także słowa kluczowe zaprojektowane specjalnie w celu wykorzystania możliwości maszyny. Dodano edytor sprite'ów i monitor języka maszynowego . Część jądra zawierająca edytor ekranu została dodatkowo ulepszona, aby obsługiwać tryb wstawiania i inne funkcje dostępne za pomocą kombinacji klawiszy ESC, a także podstawową funkcję okienkowania, i została przeniesiona do oddzielnej pamięci ROM . Chip VIC-II, który kontroluje 40-kolumnowy wyświetlacz, może działać tylko z częstotliwością 1 MHz, więc 40-kolumnowy wyświetlacz wydaje się być pomieszany w SZYBKIM . W trybie 80-kolumnowym edytor wykorzystuje funkcje VDC, aby wyświetlać migający i podkreślony tekst, aktywowany za pomocą kodów ucieczki , oprócz standardowego odwróconego tekstu Commodore. Tryb 80-kolumnowy C128 może wyświetlać małe litery wraz ze znakami graficznymi PETSCII ; Tryb 40-kolumnowy podlega tym samym ograniczeniom dotyczącym „wielkich i małych liter” lub „wielkich liter plus grafika”, co wcześniejsze Commodores. Tryby 40- i 80-kolumnowe są niezależne i oba mogą być aktywne w tym samym czasie. Programista z wyświetlaczem kompozytowym i RGB może używać jednego z ekranów jako „brudnopisu” lub do podstawowej obsługi wielu buforów. Aktywny wyświetlacz można przełączać za pomocą ESC-X. Do systemu dodano przycisk resetowania sprzętowego. Klawiatura nie została jednak przełączona na Selectric , który stał się standardem, zamiast tego zachował ten sam projekt wywodzący się z ADM-3A , co we wcześniejszych modelach Commodore.

Tył Commodore 128

Układ VDC jest w dużej mierze bezużyteczny w grach, ponieważ nie ma sprite'ów ani przerwań rastrowych. NTSC C128 będzie działać z każdym monitorem typu CGA (TTL RGB @ 15 kHz/60 Hz), takim jak IBM 5153. Jednak modele PAL C128 działają z częstotliwością 50 Hz i nie są kompatybilne z większością monitorów CGA, które wymagają Częstotliwość odświeżania 60 Hz. Pin 7 wyjścia VDC (zwykle nieużywany w monitorach CGA) wytwarza monochromatyczny sygnał NTSC/PAL, ale nie dostarczono do niego kabla i zainteresowani użytkownicy musieli zrobić własny lub kupić na rynku wtórnym.

W połączeniu z C128 wprowadzono dwa nowe dyski: krótkotrwały jednostronny 1570 i dwustronny 1571 . Ogłoszono model 1572 z dwoma dyskami, ale nigdy go nie wyprodukowano. Później wprowadzono 3,5-calowy 1581 . Wszystkie te dyski są bardziej niezawodne niż 1541 i obiecują znacznie lepszą wydajność dzięki nowej funkcji „trybu seryjnego”. Dysk 1581 ma również więcej wbudowanej pamięci RAM niż jego poprzednicy, co umożliwia otwieranie większej liczby plików jednocześnie. BASIC 7.0 zawiera polecenia DLOAD i DSAVE do obsługi ładowania i zapisywania na dysku bez użycia numeru urządzenia ,8 lub innego, a także polecenie DIRECTORY , które odczytuje informacje z katalogu dysku bezpośrednio do pamięci ekranu bez nadpisywania pamięci BASIC, jak w BASIC 2.0. Ponadto C128 wprowadza automatyczne uruchamianie oprogramowania dyskowego, standard funkcji w większości komputerów osobistych, ale nieobecny do tej pory w maszynach Commodore. Użytkownicy nie muszą już wpisywać LOAD"*",8,1 . BASIC dodał również polecenie COLLECT do usuwania plików „splat” (plików, które nie zostały poprawnie zamknięte i obcięte do zerowej długości).

Wszystkie dyski 1571 normalnie uruchamiają się w trybie natywnym na C128. Jeśli użytkownik przełączy się do trybu C64, wpisując „GO 64”, dysk pozostanie w trybie natywnym. Ale jeśli tryb C64 zostanie aktywowany przez przytrzymanie klawisza Commodore podczas włączania zasilania, 1571 przechodzi następnie w tryb 1541. Ta procedura jest niezbędna w przypadku oprogramowania wykonującego dostęp do dysku niskiego poziomu.

C128 ma dwa razy więcej pamięci RAM niż C64, z czego znacznie większa część jest dostępna dla programowania w języku BASIC, dzięki nowemu układowi przełączania banków MMU . Pozwala to na przechowywanie kodu programu w języku BASIC oddzielnie od zmiennych, znacznie zwiększając zdolność maszyny do obsługi złożonych programów, przyspieszając wyrzucanie elementów bezużytecznych i ułatwiając programiście debugowanie. Wykonujący program można zatrzymać , edytować jego kod, sprawdzać lub zmieniać wartości zmiennych w trybie bezpośrednim , a wykonywanie programu można wznowić z nienaruszoną tablicą zmiennych za pomocą polecenia GOTO języka BASIC . Chociaż inne języki BASIC obsługują CONT w celu ponownego uruchomienia wykonywania bez kasowania zmiennych, edycja dowolnego kodu powoduje ich wyczyszczenie. Różne konfiguracje pamięci można ładować za pomocą BANK języka BASIC .

BASIC 7.0 ma pełny zestaw poleceń graficznych i dźwiękowych, a także polecenia dyskowe BASIC 4.0 i ulepszone czyszczenie śmieci oraz obsługę programowania strukturalnego za pośrednictwem IF…THEN…ELSE, DO…WHILE, i WHILE...WEND pętle. Programowalne znaki nadal jednak nie są obsługiwane, więc programista będzie musiał manipulować nimi za pomocą PEEK i POKE, tak jak w VIC-20 i C64.

Z drugiej strony BASIC 7.0 działał znacznie wolniej niż BASIC 2.0, chyba że użyto trybu 2 MHz ze względu na jego rozmiar 28 KB (wzrost o 250% w stosunku do BASIC 2.0) i konieczność przełączania banków w celu uzyskania dostępu do zmiennych programu i tekstu programu BASIC (jeśli jest większy niż 16k długości).

ROM 128 zawiera jajko wielkanocne : Wpisanie polecenia SYS 32800,123,45,6 w trybie natywnym powoduje wyświetlenie ekranu z listą głównych programistów maszyny, po której następuje komunikat Połącz ramiona, nie twórz ich . słowa kluczowe QUIT lub OFF spowodują błąd NIEZREALIZOWANEGO POLECENIA Polecenia te są pozostałością po interpreterze języka BASIC przeznaczonym dla planowanego, ale nigdy nie produkowanego przenośnego komputera LCD i miały wychodzić z interpretera języka BASIC i ignorować wprowadzanie z klawiatury podczas wrażliwego programu wykonanie, odpowiednio.

Większe możliwości sprzętowe C128, zwłaszcza zwiększona pamięć RAM, rozdzielczość ekranu i szybkość magistrali szeregowej, sprawiły, że była to platforma bardziej wydajna niż C64 do obsługi graficznego systemu operacyjnego GEOS .

CP/M

Korzystanie z trybu CP/M wymaga użycia dyskietki rozruchowej. Dyskietka była dołączona do komputera, który nie zawierał stacji dysków.

Drugim z dwóch procesorów C128 jest Zilog Z80 , który umożliwia C128 uruchamianie CP/M . C128 był dostarczany z CP/M 3.0 (aka CP/M Plus, który jest wstecznie kompatybilny z CP/M 2.2) i emulacją terminala ADM31/3A. Kaseta CP / M była dostępna dla C64, ale była droga i miała ograniczone zastosowanie, ponieważ dysk 1541 nie może odczytywać dysków sformatowanych w formacie MFM, na których rozpowszechniano oprogramowanie CP / M. Oprogramowanie musiało być udostępniane na dyskach specyficznych dla Commodore sformatowanych przy użyciu GCR . Commodore udostępnił wersje PerfectCalc i EMACS PerfectWriter, a grupy użytkowników Commodore czasami miały wybór dyskietek CP/M, ale ograniczona dostępność oprogramowania negowała jedną z głównych atrakcji CP/M — ogromną bibliotekę oprogramowania. Ponadto wkłady działają tylko na wczesnych modelach C64 z 1982 roku i są niekompatybilne z późniejszymi jednostkami. Ponieważ były one również niekompatybilne z C128, zespół projektowy zdecydował się wesprzeć CP / M, umieszczając Z80 na głównej płycie systemowej.

C128 działa z CP/M zauważalnie wolniej niż większość dedykowanych systemów CP/M, ponieważ procesor Z80 działa z efektywną szybkością zaledwie 2 MHz . Stało się tak, ponieważ magistrala systemowa C128 została zaprojektowana wokół procesorów 65xx. Te procesory obsługują adresowanie danych i pamięci zupełnie inaczej niż Z80. CP/M działał również wolniej z powodów wymienionych poniżej, takich jak konieczność przekazania kontroli do 8502 dla dowolnego przetwarzania we/wy lub przerwań. Z tych powodów niewielu użytkowników faktycznie uruchamiało oprogramowanie CP/M na C128.

Kiedy C128 jest włączony, Z80 jest aktywny jako pierwszy i wykonuje mały program ładujący ROM przy $0-$FFF, aby sprawdzić obecność dysku CP/M. Jeśli nie zostanie wykryty, sterowanie jest przekazywane do 8502 i uruchamiany jest tryb macierzysty C128.

Tryb CP / M w praktyce wymaga napędu 1571 lub 1581, ponieważ 1541 nie może odczytywać dysków MFM i będzie działał znacznie wolniej z powodu braku obsługi trybu burst C128. Niemniej jednak dyski rozruchowe CP/M muszą być w natywnym formacie dysku GCR; Dyski MFM nie mogą być uruchamiane, odczytywane tylko wtedy, gdy użytkownik jest już w CP/M. Dzieje się tak, ponieważ kod niezbędny do obsługi dysku w trybie MFM jest ładowany jako część procesu rozruchu. Poza tym zazwyczaj wymagany jest tryb 80-kolumnowy, ponieważ większość oprogramowania CP/M oczekuje ekranu z 80-kolumnowym ekranem. C128 emuluje terminal ADM-3A [ potrzebne źródło ] w trybie CP/M, więc trzeba będzie skonfigurować do tego oprogramowanie. Oprócz standardowych poleceń terminala ADM-3A, dostępnych jest wiele dodatkowych poleceń, które umożliwiają korzystanie z funkcji VIC-II i VDC, w tym ustawianie tekstu i koloru tła. Interpreter poleceń CP/M (choć nie oprogramowanie aplikacyjne) zawiera zabezpieczenie uniemożliwiające użytkownikowi wydanie kodu kontrolnego w celu wyrównania koloru tekstu i tła, co spowodowałoby, że tekst byłby niewidoczny i zmusiłby użytkownika do zresetowania komputera. Jeśli tak się stanie, domyślnie zostanie wyświetlone szare tło z brązowym tekstem.

W trybie CP/M można uruchomić MBASIC, wydanie BASIC-80 firmy Microsoft dla CP/M. W porównaniu z natywnym trybem BASIC 7.0, MBASIC jest zwięzły i ograniczony w swoich możliwościach, wymagając użycia kombinacji klawiszy w stylu terminala do edycji linii programu lub przesuwania kursora tekstowego i pozbawiony jakichkolwiek funkcji dźwiękowych lub graficznych. Chociaż MBASIC ma funkcje matematyczne i obliczeniowe, których brakuje w BASIC 7.0, takie jak obsługa zmiennych całkowitych i podwójnej precyzji, jakakolwiek przewaga prędkości uzyskana dzięki użyciu zmiennych całkowitych jest dyskusyjna z powodu wyjątkowo niskiej wydajności komputera w trybie CP / M. Co więcej, Commodore BASIC ma 40-bitowe zmiennoprzecinkowe, które służą jako środek między 32-bitowymi zmiennoprzecinkowymi MBASIC a 64-bitowymi zmiennymi podwójnej precyzji. MBASIC oferuje również tylko 34 000 wolnego miejsca na programy w porównaniu z około 90 000 w BASIC 7.0.

Inne oprogramowanie CP/M, takie jak Wordstar i Supercalc, również będzie znacznie lepsze od odpowiedników C128 w trybie natywnym, takich jak PaperClip , które również mają łatwiejszy w obsłudze interfejs.

CP/M CBIOS (część CP/M, która łączy się ze sprzętem) nie łączy się bezpośrednio ze sprzętem, jak w przypadku większości implementacji CP/M, raczej wywołuje procedury jądra do obsługi przerwań i wejścia/wyjścia — kiedy jądro musi być użyty, Z80 używa procedur w $FFD0 - $FFEF do przekazania danych parametrów do 8502, który jest następnie aktywowany, a Z80 dezaktywowany. Po zakończeniu wykonywania procedury jądra kontrola jest przekazywana z powrotem do Z80. Doniesiono, że programista odpowiedzialny za przeniesienie CP / M na C128 zamierzał mieć interfejs CBIOS ze sprzętem bezpośrednio w języku maszynowym Z80, ale miał duże trudności z układami VDU, ponieważ były one podatne na przegrzanie i samozniszczenie . VDU również przeszedł liczne zmiany sprzętowe, gdy C128 był w fazie rozwoju, a programista CP / M nie był w stanie sprawić, by jego kod działał poprawnie, więc zespół inżynierów C128 zażądał zamiast tego, aby po prostu przepisał CBIOS, aby przekazywać wywołania funkcji do 8502.

Tryb CP/M bardzo różni się od środowisk operacyjnych znanych użytkownikom Commodore. Podczas gdy Commodore DOS jest wbudowany w pamięć ROM dysków Commodore i jest zwykle dostępny przez BASIC, CP / M wymaga użycia dyskietki rozruchowej i wymaga wprowadzenia zwięzłych poleceń odziedziczonych z platform minikomputerów . Programom CP/M brakuje przyjaznego dla użytkownika charakteru większości aplikacji Commodore. Mając na celu zapewnienie nowemu komputerowi dużej biblioteki profesjonalnego oprogramowania biznesowego, którego brakowało Commodore, CP / M już dawno minął swój szczyt w połowie lat 80., więc rzadko był używany na C128.

C64

Zdjęcie z lat 80. przedstawiające konfigurację C128 z dwoma dyskami i dwoma monitorami wyświetlającymi niezależne 40- i 80-kolumnowe ekrany. Wielu użytkowników nadal używało 1541 odziedziczonego po systemie C64 jako drugiego dysku.

Dzięki włączeniu oryginalnych ROMów C64 BASIC i Kernal w całości (łącznie 16 KB), C128 osiąga prawie 100-procentową kompatybilność z Commodore 64. Dostęp do trybu C64 można uzyskać na trzy sposoby:

  1. Przytrzymanie klawisza z logo Commodore podczas uruchamiania.
  2. Wprowadzenie polecenia GO 64 , a następnie udzielenie odpowiedzi Y na pytanie ARE YOU SURE? monit, w BASIC 7.0.
  3. Uruchamianie z podłączoną kasetą C64.

Uziemienie linii /EXROM i/lub /GAME portu kartridża spowoduje automatyczne uruchomienie komputera w trybie C64. Ta funkcja wiernie powiela zachowanie C64, gdy kartridż (taki jak BASIC Simonsa ) jest podłączony do portu i potwierdza którąkolwiek z tych linii, ale w przeciwieństwie do rzeczywistego C64, gdzie działanie tych linii zmieniające mapę pamięci jest realizowane bezpośrednio w sprzęt, kod startowy oprogramowania układowego C128 Z80 odpytuje te linie po włączeniu zasilania, a następnie przełącza tryby w razie potrzeby. Kasety C128 w trybie natywnym są rozpoznawane i uruchamiane przez odpytywanie jądra zdefiniowane lokalizacje na mapie pamięci.

Tryb C64 prawie dokładnie powiela funkcje sprzętowego C64. Tryby MMU, Z80 i IEC są wyłączone w trybie C64, jednak wszystkie inne funkcje sprzętowe C128, w tym tryb VDU i 2 MHz, są nadal dostępne. Rozszerzone klawisze klawiatury C128 można odczytać z języka maszynowego, chociaż procedury jądra rozpoznają tylko klawisze istniejące na C64. Kilka gier jest w stanie wykryć, czy C128 działa i przełączyć się na tryb 2 MHz podczas powrotu w pionie, aby uzyskać wyższą wydajność.

W północnoamerykańskich C128, w trybie C64, nawet pamięć ROM znaków (czcionek) zmienia się w porównaniu z trybem C128. Wczesne prototypy C128 miały pojedynczą pamięć ROM z nieco ulepszonym zestawem znaków w porównaniu z C64. Ale niektóre programy C64 odczytują pamięć ROM ze znakami jako dane i na C128 będą na różne sposoby zawodzić. W ten sposób C128 otrzymał dwuwymiarową pamięć ROM ze znakami, która zapewnia czcionkę C128 w trybie C128 i czcionkę C64 w trybie C64. Międzynarodowe modele C128 używają niezmodyfikowanej czcionki C64 w obu trybach, ponieważ druga połowa pamięci ROM ze znakami jest zamiast tego poświęcona czcionce międzynarodowej (zawierającej takie elementy, jak znaki akcentowane lub niemieckie umlauty ) .

Niektóre z nielicznych programów C64, które nie działają na C128, będą działały poprawnie po naciśnięciu klawisza Caps Lock (lub klawisza ASCII/National w międzynarodowych modelach C128). Ma to związek z większym wbudowanym portem we/wy procesora C128. Podczas gdy SHIFT LOCK znajdujący się zarówno w C64, jak i C128 jest po prostu mechanicznym zatrzaskiem dla lewego klawisza SHIFT , klawisz CAPS LOCK w C128 można odczytać za pośrednictwem wbudowanego portu I/O 8502 . Kilka programów C64 jest zdezorientowanych przez ten dodatkowy bit we/wy; trzymanie CAPS LOCK w dolnym położeniu wymusi niski poziom linii I/O, dopasowując konfigurację C64 i rozwiązując problem.

Kilka programów C64 zapisuje do $ D030 (53296) , często jako część pętli inicjującej rejestry układu VIC-II . Ten rejestr mapowany w pamięci, nieużywany w C64, określa częstotliwość zegara systemowego. Ponieważ ten rejestr jest w pełni funkcjonalny w trybie C64, nieumyślny zapis może spowodować zaszyfrowanie 40-kolumnowego wyświetlacza poprzez przełączenie procesora na 2 MHz, przy której procesor wideo VIC-II nie może wytworzyć spójnego obrazu. Na szczęście niewiele programów ma tę wadę. W lipcu 1986 roku COMPUTE!'s Gazette opublikował program do wpisywania , który wykorzystał tę różnicę, używając przerwania rastrowego , aby włączyć tryb szybki po osiągnięciu dolnej części widocznego ekranu, a następnie wyłączyć go, gdy renderowanie ekranu rozpoczęło się ponownie u góry . Dzięki zastosowaniu wyższej częstotliwości taktowania podczas przerwy w pionie , standardowe wyświetlanie wideo jest utrzymywane przy jednoczesnym zwiększeniu ogólnej szybkości wykonywania o około 20 procent.

Łatwym sposobem na rozróżnienie między sprzętowym C64 a C128 działającym w trybie C64, zwykle używanym z uruchomionego programu, jest wpisanie wartości różnej od $FF (255) do adresu pamięci $D02F (53295) , rejestru, który jest służy do dekodowania dodatkowych klawiszy C128 (klawiatura numeryczna i kilka innych klawiszy). Na C64 ta komórka pamięci zawsze będzie zawierała wartość $FF bez względu na to, co zostanie do niej zapisane, ale na C128 w trybie C64 wartość tej lokacji — rejestr odwzorowany w pamięci — można zmienić. Zatem sprawdzenie wartości lokalizacji po zapisaniu do niej ujawni rzeczywistą platformę sprzętową.

Konfiguracja pamięci RAM

Aby obsłużyć stosunkowo duże ilości pamięci ROM i RAM (dziesięciokrotnie większe niż 64 KB przestrzeni adresowej 8502), C128 wykorzystuje układ 8722 MMU do tworzenia różnych map pamięci, w których pojawiałyby się różne kombinacje pamięci RAM i ROM zgodnie z wzorcami bitowymi zapisanymi w rejestr konfiguracyjny MMU pod adresem pamięci $FF00 . Kolejną cechą jednostki zarządzania pamięcią jest umożliwienie przeniesienia strony zerowej i stosu .

Chociaż C128 może teoretycznie obsługiwać 256 KB pamięci RAM w czterech blokach, płytka drukowana nie ma możliwości dodania tej dodatkowej pamięci RAM, ani też MMU nie może faktycznie uzyskać dostępu do więcej niż 128 KB. Dlatego, jeśli MMU jest zaprogramowane na dostęp do bloków 2 lub 3, wszystko, co skutkuje, jest lustrzanym odbiciem pamięci RAM w blokach 0 i 1.

Ponieważ rejestry I/O i systemowe ROMy mogą być dowolnie wyłączane lub włączane, a także można je zlokalizować w dowolnym banku RAM, a VIC-II może używać dowolnego banku dla swojej przestrzeni pamięci, możliwych jest do 256 konfiguracji pamięci, chociaż zdecydowana większość z nich jest bezużyteczna (na przykład możliwe są niewykonalne kombinacje, takie jak jądro ROM w banku 0 i rejestry I/O w banku 1). Z tego powodu instrukcja BASIC BANK pozwala użytkownikowi wybrać 15 najbardziej użytecznych ustawień, przy czym domyślnym ustawieniem po włączeniu zasilania jest Bank 15. To ustawienie domyślne umieszcza systemową pamięć ROM, rejestry we / wy i tekst programu BASIC w bloku 0, z blok 1 używany przez zmienne programu BASIC. Tekst programu BASIC i zmienne mogą rozciągać się aż do $FFEF . Ale ponieważ blok 0 zawiera ROM i rejestry I/O od 4000 $ wzwyż, BASIC używa wewnętrznej procedury przełączania do odczytu tekstu programu wyższego niż 3FFF $ .

Górny i dolny 1k pamięci RAM ( $0 $3FF i $FF00 - $FFFF ) to „wspólna” pamięć RAM, widoczna z obu bloków. MMU pozwala na rozbudowę w krokach do 16 tys. Zakres $0 $3FF zawiera stronę zerową i stos, podczas gdy $FF00 - $FFFF zawiera rejestry MMU i wektory resetowania. Obszary te są zawsze współdzielone i nie można ich przełączyć na niewspółdzieloną pamięć RAM. Współdzielona pamięć RAM to zawsze bank przeciwny do aktualnie używanego przez procesor, więc jeśli wybrany zostanie bank 0, każdy odczyt lub zapis do współdzielonej pamięci RAM będzie odnosił się do odpowiednich lokalizacji w banku 1 i odwrotnie. VIC-II można ustawić tak, aby używał dowolnego banku pamięci RAM, a stamtąd jego normalne okno 16k. Podczas gdy na C64, VIC-II widzi pamięć ROM znaków tylko w bankach 2 i 4 swojej przestrzeni pamięci, z drugiej strony C128 umożliwia włączenie lub wyłączenie pamięci ROM znaków dla dowolnego banku VIC-II poprzez rejestr za 1 $ . Istnieją również dwa zestawy kolorowych pamięci RAM - jeden widoczny dla procesora, drugi dla VIC-II, a użytkownik może wybrać, który układ widzi co.

W trybie CP/M prefiks segmentu programu i obszar programu przejściowego znajdują się w banku 1, a rejestry we/wy i kod systemu CP/M w banku 0.

Pamięć RAM C128 można rozszerzyć ze standardowych 128 KB do 256, 512 lub nawet 1024 KB, albo za pomocą komercyjnych modułów rozszerzających pamięć, albo poprzez udostępnienie takiego modułu na podstawie schematów w Internecie.

Jednostki rozszerzające RAM firmy Commodore wykorzystują zewnętrzny kontroler 8726 DMA do przesyłania danych między pamięcią RAM C128 a pamięcią RAM w jednostce rozszerzającej.

C128D

Commodore 128D na wystawie w Musée Bolo , EPFL , Lozanna
Zasilacz impulsowy Commodore 128DCR , wyposażony w wentylator chłodzący 60 mm

Pod koniec 1985 roku Commodore wypuściło na rynek europejski nową wersję C128 z przeprojektowaną obudową przypominającą Amigę 1000 . Ten nowy europejski model, nazwany Commodore 128D , miał plastikową obudowę z uchwytem do przenoszenia z boku, wbudowany napęd dysków 1571 w główną obudowę, zastąpił wbudowaną klawiaturę odłączaną klawiaturą i dodał wentylator chłodzący . Klawiatura posiadała również dwie składane nóżki do zmiany kąta pisania.

C128 wydany w Wielkiej Brytanii w dniu 25 lipca 1985 roku, w Ameryce Północnej w listopadzie 1985 roku.

Według Bila Herda , szefa zespołu sprzętowego (znanego również jako „C128 Animals”), C128D był gotowy do produkcji w tym samym czasie, co zwykła wersja. Praca nad wypuszczeniem dwóch modeli w tym samym czasie zwiększyła ryzyko terminowej dostawy i była widoczna w tym, że główna płytka drukowana ma duże otwory w krytycznych sekcjach, aby wspierać obudowę C128D i normalną obudowę jednocześnie.

W drugiej połowie 1986 roku Commodore wypuściło wersję C128D w Ameryce Północnej i niektórych częściach Europy, określaną jako C128DCR, CR oznacza „o obniżonych kosztach”. Model DCR ma obudowę z wytłaczanej stali zamiast plastikowej wersji C128D (bez uchwytu do przenoszenia), modułowy zasilacz impulsowy podobny do tego z C128D, zachowujący odłączaną klawiaturę tego modelu i wewnętrzny napęd dyskietek 1571. Szereg komponentów na płycie głównej zostało skonsolidowanych w celu obniżenia kosztów produkcji, a jako dodatkowy środek redukcji kosztów usunięto wentylator chłodzący , który był zamontowany w zasilaczu modelu D. Zachowano jednak elementy montażowe na podwoziu zasilacza, a także dwa punkty podłączenia 12 V prądu stałego na płytce drukowanej zasilacza do zasilania wentylatora. Miejsce montażu C128DCR jest przeznaczone dla wentylatora 60 mm.

Znaczącym ulepszeniem wprowadzonym w modelu DCR była wymiana kontrolera wyświetlania wideo 8563 (VDC) na bardziej zaawansowany technicznie 8568 VDC i wyposażenie go w 64 kilobajty pamięci wideo RAM - maksymalna ilość adresowana przez urządzenie. Czterokrotny wzrost pamięci RAM wideo w stosunku do zainstalowanej w „płaskim” C128 umożliwił między innymi utrzymanie wielu ekranów tekstowych w celu obsługi prawdziwego systemu okienkowego lub generowanie grafiki o wyższej rozdzielczości z bardziej elastyczną paletą kolorów . Małe oprogramowanie komercyjne korzystało z tych możliwości.

C128DCR jest wyposażony w nowe pamięci ROM nazwane „1986 ROM”, nazwane tak od daty praw autorskich wyświetlanej na ekranie banera włączania zasilania. Nowe ROMy rozwiązują szereg błędów obecnych w oryginalnych ROMach, w tym niesławny błąd off-by-one w tabeli dekodowania klawiatury, w którym znak „Q” pozostawał małymi literami, gdy CAPS LOCK był aktywny. Niektóre programy będą działać tylko na DCR, ze względu na zależności od ulepszonych funkcji sprzętowych komputera i poprawionych ROM-ów.

Pomimo ulepszonych możliwości wideo RGB DCR, Commodore nie rozszerzył BASIC 7.0 o możliwość manipulowania grafiką RGB. Sterowanie VDC w trybie graficznym nadal wymaga użycia wywołań prymitywów ROM edytora ekranu lub ich odpowiedników w języku asemblera lub użycia rozszerzeń języka BASIC innych firm, takich jak „ BASIC 8 ” Free Spirit Software, który dodaje wysoką rozdzielczość Polecenia graficzne VDC do BASIC 7.0 .

Wyniki rynkowe

W styczniu 1987 r. Info poinformowało, że „Wszystkie te plotki o rychłej śmierci C128 mogą mieć pewne podstawy w rzeczywistości”. Stwierdzając, że Commodore chce skierować zasoby na zwiększenie produkcji 64C i jego klonów na komputery PC, magazyn stwierdził, że „Najnowsza wiadomość w Internecie mówi, że ostatni C128 zjedzie z linii w grudniu 1987 roku”. Obliczać! stwierdził w 1989 roku: „Jeśli kupiłeś swój 128 z wrażeniem, że oprogramowania specyficznego dla 128 będzie dużo i szybko dotrze, prawdopodobnie byłeś dość rozczarowany. Jednym z głównych punktów sprzedaży 128 jest jego całkowita kompatybilność z 64, a punkt, który zadziałał bardziej przeciwko 128 niż dla niego. ” Ponieważ na 128 można było uruchomić praktycznie całe oprogramowanie 64, a 32/ 16-bitowe komputery domowe nowej generacji — przede wszystkim Commodore Amiga i Atari ST — reprezentowały najnowszą technologię, pojawiło się stosunkowo niewiele oprogramowania dla trybu natywnego C128 (prawdopodobnie na rzędu 100–200 tytułów komercyjnych, plus zwykły udział programów do pisania w domenie publicznej i czasopism ), co powoduje, że niektórzy użytkownicy żałują zakupu. Podczas gdy C128 sprzedał się w łącznej liczbie 4 milionów sztuk w latach 1985-1989, jego popularność zbladła w porównaniu z poprzednikiem. Jednym z wyjaśnień tych niższych wyników sprzedaży może być fakt, że C64 był sprzedawany osobom zainteresowanym głównie grami wideo, w przypadku których droższy C128 nie wniósł większej wartości do poprawy.

Niektóre programy C64, takie jak Bard's Tale III i Kid Niki, działały w trybie 128 bez podania tego w dokumentacji, korzystając z automatycznego uruchamiania i szybszego dostępu do dysku 1571. Niektóre Infocom wykorzystywały 80-kolumnowy ekran i zwiększoną pojemność pamięci. Niektóre gry na C64 zostały przeniesione do trybu natywnego, takie jak Kikstart 2 i The Last V8 firmy Mastertronic , które miały oddzielne wersje C128, oraz Ultima V: Warriors of Destiny firmy Origin Systems , które wykorzystywały dodatkową pamięć RAM do odtwarzania muzyki, jeśli działały na C128. Gwiezdna Flota I: Wojna zaczyna się od Interstel miała oddzielne wersje i wykorzystywała 80-kolumnowy wyświetlacz na C128. Zdecydowana większość gier po prostu działała w trybie C64.

Dla kontrastu, wiele tytułów oprogramowania C64 zostało przeniesionych na C128, w tym popularne serie PaperClip i Paperback Writer. To oprogramowanie wykorzystywało dodatkową pamięć, 80-kolumnowy ekran, ulepszoną klawiaturę i dyski o dużej pojemności, aby zapewnić funkcje, które uznano za niezbędne do użytku biznesowego. Dzięki zaawansowanemu językowi programowania BASIC, z CP/M i „ przyjaznym dla użytkownika ” natywnym pakietom oprogramowania, takim jak Jane , Commodore podjął próbę stworzenia rynku biznesowego z niższej półki dla C128, podobnego do swojej strategii z Plus/4 , dystansując się nawet od siebie z etykiety komputera domowego, oznaczając C128 jako „komputer osobisty” na obudowie. Co istotne, C128 był pierwszym komputerem Commodore, który reklamował użycie Microsoft BASIC , gdzie nazwa Microsoft byłaby atutem konkurencyjnym.

C128 był z pewnością lepszą maszyną biznesową niż C64, ale nie lepszą maszyną do gier. Ludzie, którzy chcieli maszyn biznesowych, kupowali klony IBM PC prawie wyłącznie do czasu wypuszczenia C128. Dostępność tanich produktów kompatybilnych z IBM, takich jak Leading Edge Model D i Tandy 1000 , które w niektórych przypadkach były sprzedawane za mniej niż kompletny system C128, wykoleiła strategię komputerową Commodore dla małych firm . Istniał profesjonalny program CAD , Home Designer firmy BRiWALL, ale znowu większość tej pracy została wykonana na komputerach PC w epoce C128. Głównym powodem, dla którego C128 nadal sprzedawał się dość dobrze, było prawdopodobnie to, że była to znacznie lepsza maszyna do programowania hobbystów niż C64, a także była naturalnym następcą modelu dla właścicieli ze znacznymi inwestycjami w urządzenia peryferyjne i oprogramowanie C64.

Ale ostatecznie C128 nie mógł konkurować z nowymi systemami 16/32-bitowymi, które przewyższały go i resztę 8-bitowej generacji pod niemal każdym względem. Kiedy C128(D/DCR) został wycofany z produkcji w 1989 roku, jego produkcja kosztowała prawie tyle samo, co Amiga 500 , mimo że C128D musiał być sprzedawany za kilkaset dolarów mniej, aby zachować nienaruszony marketingowy wizerunek Amigi z najwyższej półki .

Bil Herd stwierdził, że cele projektowe C128 początkowo nie obejmowały 100% zgodności z C64. Pewna forma kompatybilności była zawsze zamierzona po tym, jak podczas prezentacji Plus / 4 zwróciła się do Herd kobieta, która była rozczarowana, że ​​​​pakiet oprogramowania edukacyjnego, który napisała dla C64, nie działałby na nowym komputerze Commodore, ale kiedy dowiedział się o tym dział marketingu Commodore , niezależnie ogłosili całkowitą kompatybilność. Herd podał powód włączenia procesora Z80 do 128 jako zapewniającego twierdzenie o „100% kompatybilności”, ponieważ obsługa kasety Z80 w C64 oznaczałaby, że C128 dostarczałby dodatkowe zasilanie do portu kasety. Stwierdził również, że układ wideo VDC i Z80 były źródłem problemów podczas projektowania maszyny. Herd dodał, że „spodziewałem się, że C128 będzie sprzedawany tylko przez około rok, pomyśleliśmy, że kilka milionów byłoby niezłych i oczywiście nie podcięłoby to Amigi ani nawet C64”. Po tym, jak Commodore po raz pierwszy podniósł cenę 64C, wprowadzając przeprojektowany 64C w 1986 roku, jego zysk z każdego sprzedanego 64C był podobno znacznie większy niż z C128.

Specyfikacje

  • procesory:
  • MMU: MOS Technology 8722 Memory Management Unit kontroluje wybór procesora 8502/Z80; Bankowość ROM/RAM; wspólne obszary pamięci RAM; przeniesienie strony zerowej i stosu
  • RAM: 128 KB systemowej pamięci RAM, 2 KB 4-bitowej dedykowanej kolorowej pamięci RAM (dla VIC-II E), 16 KB lub 64 KB dedykowanej pamięci RAM wideo (dla VDC), do 512 KB dodatkowej pamięci RAM REU
  • ROM: 72KB
    • 28KB BASIC 7.0
    • 4KB MLM
    • 8KB KERNAŁU C128
    • Edytor ekranu 4 KB
    • BIOS Z80 4KB
    • 16 KB C64 ROM: ≈9 KB C64 BASIC 2.0 + ≈7 KB C64 KERNAL
    • 4 KB C64 (lub międzynarodowy) generator znaków
    • 4 KB C128 (lub krajowy) generator znaków
    • 32 KB wewnętrznej pamięci ROM funkcji (opcjonalnie: do umieszczenia w gnieździe płyty głównej)
    • Zewnętrzna pamięć ROM funkcji 32 KB (opcjonalnie: do umieszczenia w gnieździe REU)
  • Wideo:
    • MOS 8564/8566 VIC-II E (NTSC / PAL) dla 40-kolumnowego kompozytowego wideo ( w razie potrzeby zamiast monitora można użyć telewizora )
      • Bezpośredni dostęp do rejestru przez mapowane w pamięci wejścia/wyjścia
      • Tryb tekstowy: 40×25, 16 kolorów
      • Tryby graficzne: 160×200, 320×200
      • 8 sprite'ów sprzętowych
      • 2 KB dedykowanej 4-bitowej kolorowej pamięci RAM, poza tym używa pamięci głównej jako pamięci RAM wideo
    • MOS 8563 VDC (lub, w C128DCR, 8568 ) dla 80-kolumnowego cyfrowego komponentowego wideo RGB I, kompatybilnego z monitorami IBM PC CGA , wyświetlanie monochromatyczne jest również możliwe na monitorach kompozytowych wideo; nadaje się do użytku z telewizorami tylko wtedy, gdy oprócz złącza antenowego telewizor posiada gniazda wejścia wideo SCART i/lub pasma podstawowego. Kolor jest możliwy przez SCART, tylko monochromatyczny przez wejście wideo pasma podstawowego.
      • Pośredni dostęp do rejestru (rejestr adresowy, rejestr danych w pamięci odwzorowanej)
      • Tryb tekstowy: w pełni programowalny, zwykle 80 × 25 lub 80x50, 16 kolorów RGBI (nie ta sama paleta co VIC-II)
      • Tryby graficzne: W pełni programowalne, typowe tryby to 320x200, 640x200 i 640x400 (z przeplotem).
      • 16 KB dedykowanej pamięci RAM wideo (standardowo 64 KB w C128DCR, C128/C128D można rozbudować do 64 KB), dostępnej dla procesora tylko metodą podwójnie pośrednią (rejestr adresowy, rejestr danych na VDC, które z kolei są adresowane przez rejestr adresowy , rejestr danych w pamięci mapowanej)
      • Ograniczona funkcjonalność blittera
  • Dźwięk:
  • Porty we/wy:
    • Wszystkie porty Commodore 64 ze 100-procentową kompatybilnością, a ponadto:
    • Wyższa prędkość „trybu seryjnego” możliwa na magistrali szeregowej
    • Port rozszerzeń bardziej elastycznie programowalny
    • Wyjście wideo RGBI ( złącze DE9 ) logicznie podobne do złącza IBM PC CGA , ale z dodanym monochromatycznym sygnałem kompozytowym. Ten dodatkowy sygnał powoduje niewielką niezgodność z niektórymi monitorami CGA, którą można naprawić, usuwając styk 7 z wtyczki na jednym końcu kabla połączeniowego.
    • Wejście klawiatury zewnętrznej ( złącze DB25 ) (tylko C128D(CR))

Zobacz też

Notatki

Bibliografia

Linki zewnętrzne