Moje pytania dotyczą komputera C-128D.
1. Czy stację dysków VIC-1541 można podłączyć do komputera C-128D w celu np. skopiowaniaprogramu w trybie 64?
2. W czasie współpracy C-128D z Neptunem 156 czy będzie możliwe uzyskanie 80-cio znakowego wiersza?
(nazwisko i adres do wiadomości Redakcji)
1. Komputery C-128 i C-128D w trybie pracy C-64 akceptują wszystkie peryferia jakie były dotąd stosowane przez C-64, Oznacza to, że po przejściu w tryb pracy C-64 wbudowana stacja 1571 automatycznie zamienia się na wolniejszą stację 1541. Podobnie sprawa się ma z komputerem C-128 z dołączoną zewnętrzną stacją 1571 lub 1570. Podłączanie dodatkowych stacji np. 1541 jest możliwe i to nie tylko do pracy w trybie C-64, ale również w trybach C-128 i CP/M. W tych dwóch ostatnich trybach stacja 1541 jest nieznośnie wolna i traci się całkowicie przyjemność pracy z tak wartościowym oprogramowaniem jak dBase, Turbo Pascal, Multiplan itp. Stacja bowiem powinna być, ale nie powinno się odczuwać jej obecności.
2. Wiele osób podłącza Neptuna 156 do komputerów C-128, a również do IBM i kompatybilnych, i z tej współpracy są zadowolone twierdząc, że uzyskiwana jakość obrazu jest wyśmienita. Ja tę jakość uznaję za wystarczającą, jeżeli nie ma nic lepszego pod ręką (jest to całkowicie subiektywne odczucie). Osobiście uważam, że ze wszystkich urządzeń podłączanych do komputera monitor powinna cechować najwyższa jakość, gdyż w grę wchodzą nasze oczy. W związku z tym uważam, że warto zainteresować się monitorem z prawdziwego zdarzenia firm zachodnich. Praca z takim monitorem jest nieporównywalnie przyjemniejsza..
Posiadam komputer ATARI 800XL. Interesuję się programowaniem w kodzie maszynowym. Proszę o odpowiedź na pytanie jak rozkazem BNE wykonać skok o np. 4 adresy do przodu.
Jarosław Kucuz
ul. Żylewicza 5/60
80-287 Gdańsk-Morena.
Procesory 6502, jak i inne z tej rodziny oprócz instrukcji rozgałęzienia BNE posiadają całą serię instrukcji tego typu. Są to BCC, BCS, BEQ, BMI, BPL, BVC, BVS. Każda z tych instrukcji po spełnieniu określonego warunku powoduje przerwanie sekwencyjnie wykonywanego programu i przekazuje wykonywanie programu do instrukcji innej niż ta bezpośrednio po instrukcji typu Bxx. I tak np. BNE $DF25 w wypadku gdy znacznik Z w rejestrze słowa stanu ustawiony jest na zero (dla wyjaśnienia tych pojęć patrz Klan Commodore,cykl wykładów o monitorach poczynając od numeru 12/87) spowoduje wykonanie programu od adresu SDF25, w przeciwnym razie wykonana będzie kolejna instrukcja po BNE. Tak więc chcąc dokonać skoku do dowolnej komórki należy podać jej adres w instrukcji Bxx.
Co jednak oznaczają poszczególne instrukcje:
BCC adres .................. rozgałęzienie, gdy znacznik
C(przeniesienia) ustawiony jest na 0
BCC adres .................. jak wyżej z tym, że znacznik
ustawiony jest na 1
BEQ adres-.................. rozgałęzienie, gdy wynik równa się zero
BNE adres .................. rozgałęzienie, gdy wynik jest różny od zera
BMI adres .................. rozgałęzienie, gdy wynik jest ujemny (znacznik ujemności ustawiony na 1) BPL adres-rozgałęzienie, gdy wynik jest dodatni (znacznik ujemności ustawiony na 0)
BVC adres .................. rozgałęzienie, gdy znacznik
V(przepełnienia) ustawiony jest na 0
BVS adres .................. rozgałęzienie, gdy znacznik V ustawiony jest na 1.
Od dawna zafascynowany jestem Turbo Pascalem 3.0 i w mojej pracy na IBM PC/A T staram się korzystać wyłącznie z tego języka. W trakcie pracy nasunęło mi się jedno pytanie. Jaka instrukcja w Turbo-Pascalu drukuje program na drukarce.
(nazwisko i adres do wiadomości Redakcji)
Bezpośredniej instrukcji w Turbo-Pascalu nie ma. W celu wydrukowania zbioru proponuję posłużyć się niżej przedstawionym programem, program druk;
var
Textfile:Text;
Scratch:String[128];
begin
write(‚Podaj nazwę zbioru’);
readln(Scratch);
assign(Textfile,Scratch); {otwórz zbiór}
{$I-}
reset(Textfile);
{$I+}
if IO result <> 0 then
writeln(‚Zbiór’,Scratch,’ nie został znaleziony’
else {drukuj zbiór}
begin
while not eof(Textfile) do
begin
readln(Textfile,Scratch);
writeln(Lst.Scratch);
end;
writeln(Lst) {opróżnia bufor drukarki}
end
end.
„Jakie języki programowania są dostępne dla komputerów Commodore (interesują mnie przede wszystkim C-64 i C-128)?“?
Commodore 64 i 128 doczekały się bardzo wielu rozszerzeń oryginalnego interpretera BASIC oraz licznych interpreterów bądź kompilatorów innych języków. Do najważniejszych należą:
a) grupa rozszerzeń BASIC:
EXBASIC LEVEL II, SIMON’S BASIC, METABASIC, OMICRON BASIC, GRAPHIC BASIC, ULTRA BASIC, ACCESS BASIC, BASIC V4.0, BASIC V4.2, WARSAW BASIC;
b) kompilatory/interpretery:
USCO PASCAL, OXFORD PASCAL (ten ostatni ma kilka różnych wersji również taśmowych), PROFI PASCAL, F.I.G. FORTH, FORTH DATATRONIC, SUPER- FORTH, LISP, VANILLA PILOT, PROLOG, PROMAL, COMAL, LOGO, FORTRAN 64, C, SUPER-C, COBOL W wypadku C-128 oprócz wymienionych powyżej języków programowania oferta rozszerza się o języki dostępne pod kontrolą systemu CP/M, a więc TURBO- PASCAL V2.0 i V3.0, NEVADA FORTRAN, BASIC 80, PL/I, MICROPROLOG, FORTRAN 80, COBOL itp. w samym trybie pracy C-128 dostępny jest również kompilator języka C..
„Moje Atari 65 XE zostało zatarte niechcący wodą sodową i natychmiast odmówiło posłuszeństwa... [...]. Gdzie mogę naprawić mój komputer?“ „[...] Udało mi się kupić wyjątkowo tanio C-16 na giełdzie jak się potem okazało głównie dlatego, że był on zepsuty. Redakcjo pomóż mi znaleźć warsztat gdzie mógłbym naprawić C-16 [...]“ „ Wystarczyło jedno zahaczenie o przewód zasilania i moje Spectrum „padło“. Czy jest taki punkt w Warszawie gdzie można by go naprawić [...]“.
Takich listów dostajemy coraz więcej i dlatego też postaramy się pomóc naszym Czytelnikom. A oto adresy zakładów naprawiających komputery:
COMMODORE:
- Warszawa, ul. Instalatorów 9 (tylko serwis gwarancyjny komputerów zakupionych w przedsiębiorstwie „PEWEX“!),
- Firma Andrzeja Raczkiewicza, Warszawa, ul. Andersena 3 m. 103,
ATARI:
- PZ „KAREN“, Warszawa ul. Obrońców 23, tel. 17-84-10
ZX SPECTRUM:
- Warsztat prywatny, Warszawa, ul. Mokotowska 39.
Listę tą będę sukcesywnie uzupełniał o dalsze adresy o ile otrzymam odnośne informacje od Czytelników lub zainteresowanych placówek.
"“Czy możliwe jest rozszerzenie pamięci komputera 8 bitowego w taki sposób abym mógł mieć do dyspozycji 640 KB RAM?“
I tak i nie. Samo rozszerzenie pamięci jest oczywiście możliwe z tym, że nie pozwala ono na rozszerzenie np. samej pamięci operacyjnej do 640 KB. Mikroprocesor 8-bitowy pracujący zwykle w oparciu o 16-bitową szynę adresową jest w stanie zaadresować jednocześnie maksymalnie 65536 komórek pamięci (2ˆ16=65536). Wynika więc z tego, że bez względu na to ile pamięci dodamy do naszego komputera to nadal podstawowym obszarem adresowym będzie 64 KB RAM.
Z drugiej strony są w sprzedaży takie moduły — np. do komputera C-64 opracowano kartę zawierającą 1 MB RAM pamięci dodatkowej. Jej wykorzystanie jest jednak ograniczone — można w tej pamięci zapisać np. szereg obrazów graficznych wykorzystując ją przy tym jako RAM-DISK lecz nie daje to ani bajta więcej dla interpretera BASIC. Winę za to ponosi jednak przede wszystkim procesor.
„Jaka jest różnica pomiędzy przerwaniami IRQ i NMI? Do czego właściwie służą przerwania w komputerze?“
Przerwania typu IRQ (Interrupt ReOuest) są przerwaniami maskowalnymi tzn. takimi, które w sposób programowy można wyłączyć (np. za pomocą rozkazu SEI). Z kolei przerwań typu NMI (Non Maskable Interrupt) wyłączyć już nie można, gdyż mają one najwyższy możliwy priorytet. To jest główna różnica pomiędzy obydwoma typami przerwań.
Przerwania w komputerze służą do wykonywania wielu operacji niezbędnych dla funkcjonowania samego komputera. Najlepszym przykładem takiej procedury może być np. testowanie klawiatury, czy nie został wciśnięty jakiś klawisz. Jeśli tak się stało, to komputer automatycznie podejmuje dalsze działanie mające na celu zasygnalizowanie błędu, wykonanie danej operacji, wpisanie linii programu do pamięci czy wyświetlenie danego znaku na ekranie. Aby taki test i działanie było możliwe, komputer musi sprawdzać bardzo często, czy operator nie wcisnął jakiegoś klawisza; zwykle test taki jest wykonywany 50 razy na sekundę. Oczywiście jest to z konieczności najprostszy przykład, gdyż dokładne omówienie tematu znacznie wykracza poza łamy tej rubryki.
1. W żadnym z numerów „Bajtka“ nie znalazłem informacji na temat różnych wersji komputerów ST. Co kryją skróty STF, STM i STFM?
2. Czy w komputerach Atari ST można uzyskać tryb wysokiej rozdzielczości na monitorze kolorowym?
3. Czy na Zachodzie zabronione jest kopiowanie programów wyłącznie na własny użytek?
4. Czy powstał już emulator IBM na Atari ST?
Piotr Lenarczyk
Rzeszów
1. Dodatkowe litery w nazwie komputerów ST są symbolami wbudowanych do komputera dodatkowych urządzeń. Litera M oznacza modulator TV, który umożliwia wykorzystanie zwykłego telewizora kolorowego jako monitora, natomiast litera F oznacza stację dysków 3,5 cala.
2. Z trzech trybów pracy monitora ST (niska, średnia i wysoka rozdzielczość) dwa pierwsze są przeznaczone wyłącznie do pracy z monitorem kolorowym, a trzeci wyłącznie z monitorem monochromatycznym. Zamiast monitora kolorowego do pracy z komputerami wyposażonymi w modulator można wykorzystać odbiornik telewizyjny. Rodzaj monitora jest rozpoznawany przez komputer automatycznie i nie można go „zmusić“ do pracy w niedozwolonej dla danego monitora rozdzielczości. Jedynym sposobem uzyskania na monitorze kolorowym trybu wysokiej rozdzielczości jest zastosowanie specjalnego programu o nazwie „Monoware“. Efekt takiej operacji jest jednak mało interesujący.
3. W krajach rozwiniętych programy komputerowe są chronione na równi z każdym innym rodzajem twórczości. Zabronione jest więc także ich powielanie w dowolnej formie. Jedynym wyjątkiem jest możliwość wykonania zapasowej kopii posiadanego legalnie (zakupionego) programu wyłącznie dla własnych potrzeb. Odstępowanie tej kopii innym osobom jest zabronione (nawet nieodpłatnie).
4. Na komputery ST powstał doskonały emulator IBM o nazwie „PC Ditto“. Ma on dwie wersje przeznaczone dla różnych monitorów. Pracuje z każdym modelem ST, lecz pełna zgodność z IBM wymaga 1 MB pamięci RAM. Na 520ST emulator nie daje pełnej zgodności z IBM, gdyż pozostały obszar pamięci jest mniejszy niż w najmniejszej konfiguracji IBM. W takiej sytuacji niektóre duże programy nie mogą pracować.
Czy możecie napisać coś o przerwaniach w Spectrum? Na temat przerwań w innych komputerach jest coś w każdym prawie numerze Bajtka, tylko Spectrum jest poszkodowane. Podobno przerwań jest kilka rodzajów, ale czym się różnią i czy można z nich korzystać — tego nie wiem.
M. Bąk, Warszawa
Rzeczywiście, mikroprocesor Z80 dysponuje kilkoma trybami przerwań, jednak w Spectrum ich wykorzystanie napotyka na spore trudności. Przerwania programowe, mimo ich istnienia, są mało użyteczne, gdyż w większości są wykorzystywane przez interpreter BASIC-a do własnych, specyficznych celów, toteż z punktu widzenia użytkownika Spectrum do wykorzystania nadają się tylko przerwania zewnętrzne polegające na tym, że na sygnał z zewnątrz (generowany w Spectrum 50 razy na sekundę) mikroprocesor porzuca program i zaczyna wykonywać odpowiedni podprogram. W pierwszym trybie przerwań jest to podprogram zaczynający się pod adresem #0038. Jest on zapisany w ROM-ie, obsługuje klawiaturę i zwiększa o jeden zmienną systemową FRAMES. W drugim trybie adres procedury obsługującej przerwanie musi być zapisany w odpowiednim miejscu pamięci. Po przyjęciu sygnału przerwania mikroprocesor konstruuje adres pod którym będzie szukać adresu procedury obsługi przerwania z dwóch bajtów — starszy to zawartość rejestru I, młodszy jest odczytywany z magistrali danych. Dzięki temu różne urządzenia zewnętrzne mogą wywoływać „swoje“ procedury obsługi. Niestety, konstruktorzy Spectrum nie przewidywali możliwości zastosowania drugiego trybu przerwań w programach, toteż ich użycie wymaga zastosowania odpowiednich trików, i bez ingerowania w sprzęt pozwala tylko na zastąpienie procedury spod adresu #0038 inną. Postaramy się zająć tym problemem na naszych łamach.
Oprócz wymienionych istnieją jeszcze inne rodzaje przerwań, których ze względu na konstrukcję Spectrum nie daje się wykorzystać. Radzę poszukać informacji na ich temat w książce o mikroprocesorze Z80.
Jak to jest z uruchamianiem na Spectrum programów w kodzie maszynowym? Nigdzie nie znalazłem informacji o tym, że można to zrobić inaczej, niż przy pomocy instrukcji RANDOMIZE USR, tymczasem niektóre gry wczytuje się przy pomocy LOAD „“CODE, i uruchamiają się same. Czy to znaczy, że istnieje jeszcze jakaś możliwość wywołania kodu maszynowego?
Marek Borzuchowski, Kielce
Niestety, w Spectrum wywoływać programy napisane w kodzie maszynowym można tylko przy pomocy funkcji USR (niekoniecznie jako RANDOMIZE USR, może to być również LET a=USR adres, lub PRINT USR adres). Programy uruchamiane w opisany przez Pana sposób, również korzystają z funkcji USR, o ile są napisane w kodzie maszynowym. Wczytywany blok bajtów zawiera obszar zmiennych systemowych i programu napisanego w BASIC-u. Interpreter po wczytaniu z taśmy dowolnej informacji zaczyna działać zgodnie z tym, co jest zapisane w zmiennych systemowych. Jeżeli wynika z nich, że powinien wykonać konkretną instrukcję z konkretnej linii robi to. Radzę zrobić następujący eksperyment: wpisać dowolny program w BASIC-u, dodać do niego linię
1 SAVE „Przykład“CODE 23552,256*PEEK 23642 + PEEK 23641-23522
uruchomić i nagrać kod na taśmę (adres i długość bloku kodu są tak dobrane przy pomocy zmiennych systemowych, by na taśmę zostało nagrane wszystko to co jest potrzebne). Potem po wyzerowaniu komputera wystarczy napisać LOAD „“CODE i uruchomić magnetofon. Myślę że po tej próbie wszystko będzie jasne.
Teoretycznie można się pokusić o uruchomienie programu korzystając ze zmiennej systemowej ERR SP, informującej gdzie szukać adresu procedury obsługującej błędy. Byłby to jednak sposób bardzo trudny, wymagający sporej wiedzy na temat Spectrum i organizacji jego interpretera. Takie chwyty mają sens tylko wtedy, gdy staramy się zabezpieczyć program przed analizą niepowołanych osób.
Dominik Falkowski
