SpartaDOS X - instrukcja (12-14) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Odczyt długości pliku
Zadanie: określa długość aktualnie otwartego pliku. Uwagi: Zwraca długość aktualnie otwartego pliku. IOCB, aux1 i aux2 powinny mieć takie same wartości, jak użyte przy otwieraniu pliku. Odczyt pliku binarnego (LOAD).
Zadanie: odczytuje i uruchamia plik binarny z innego programu. Uwagi: instrukcja ta odczytuje plik binarny i uruchamia go, korzystając z wektorów INIT i/lub RUN. IOCB powinien być zamknięty. Odczyt pliku binarnego z dyskietki Atari DOS trwa nieco dłużej niż odczyt tego samego pliku z dyskietki SpartaDOS. Tworzenie katalogu (MKDIR)
Zadanie: tworzy nowy podkatalog
Uwagi: Katalog "newdir" jest tworzonym podkatalogiem. Szlak podany przed nim musi być poprawny. Na przykład, jeżeli
użyjesz:
Kasowanie katalogu (RMDIR)
Zadanie: usuwa istniejący podkatalog. Uwagi: Podkatalog "olddir" jest kasowany. Aby wykonanie operacji było możliwe, to musi on być pusty. Zasady użycia szlaku i IOCB są podane w opisie XIO 42. Zmiana bieżącego katalogu (CHDIR)
Zadanie: Zmienia bieżący katalog na dyskietce. Uwagi: Zmienia to katalog, który jest stosowany, gdy określona została stacja dysków bez podania katalogu. Zasady użycia szlaku i IOCB są podane w opisie XIO 42. Ustalenie odczytu wstępnego (BOOT)
Zadanie: określa plik, który będzie odczytywany po włączeniu komputera bez SpartaDOS X. Uwagi: Powoduje to odczyt wskazanego pliku, gdy komputer jest włączany lub ponownie uruchamiany bez użycia modułu SpartaDOS X. We wcześniejszych wersjach SpartaDOS odczytywany był plik *.DOS. W SpartaDOS X instrukcja ta ma pewne ograniczenia. IOCB powinien być zamknięty, a dyskietka musi mieć format SpartaDOS. Uwaga: BOOT nie działa ze wszystkimi plikami binarnymi. Gdy odczytywany jest plik bez DOS'u, musi być spełnione kilka specjalnych warunków. Podstawowym zastosowaniem tej instrukcji jest odczyt pliku DOS. Ustawienie atrybutów (ATR)
Zadanie: ustala status zabezpieczenia, ukrycia i archiwizacji plików. Uwagi: Instrukcja ta służy do modyfikacji atrybutów pliku lub plików. W nazwie pliku dozwolone są jokery. Aux1 wskazuje zmieniane atrybuty i określa sposób ich zmiany. Aux2 wybiera pliki, których atrybuty będą zmieniane W celu dokonania żądanej modyfikacji atrybutów, należy do aux1 dodać następujące wartości, zakładając, że początkową wartością jest 0:
Na przykład, w celu ukrycia wszystkich plików z rozszerzeniem "BAK" w stacji nr.1 użyj: XIO 46,# 1,2,0,"D1:*.BAK" Aby zabezpieczyć i ustawić archiwalność wszystkich ukrytych plików w stacji 1, użyj: XIO 49,#1,1+4,2,"D1:*.*" zaś dla ujawnienia i odbezpieczenia wszystkich ukrytych plików z rozszerzeniem ".BAK" w stacji nr.1, użyj: XIO 49,#1,16+32,2,"D1:*.BAK" Dla tej operacji IOCB powinien być zamknięty. Formatowanie dyskietki (FORMAT)
Zadanie: inicjuje dyskietkę, ustalając odpowiednie dane dla ścieżek, sektorów i katalogu. Uwagi: Parametr "Dd:" jest ignorowany ponieważ instrukcja ta powoduje skok do menu formatera SpartaDOS X. Numer stacji format, gęstość i inne wartości mogą być wybrane z tego menu. Gdy formater jest opuszczany, przez naciśnięcie ESC, to sterowanie jest przekazywane ponownie do realizowanego programu. Wybrany IOCB powinien być zamknięty. UWAGA! Formatowanie dyskietki niszczy wszystkie zawarte na niej dane. Ukrycie i zabezpieczenie nie chroni pliku przed zniszczeniem podczas formatowania dyskietki. Następne dwie operacje nie są dostępne poprzez instrukcję XIO. Muszą one być wywołane bezpośrednio przez CIO. Po programie w Basic'u demonstrującym ich użycie zamieszczony jest wydruk procedury w języku maszynowym, która pozwala na wykorzystanie tych operacji. Odczyt danych dyskietkie (CHKDSK)
Zadanie: Odczytuje dane o dyskietce.
Wyniki:
Odczyt bieżącego katalogu (CHDIR)
Zadanie: Odczytuje szlak od katalogu głównego do bieżącego katalogu stacji.
Przykład:
Poniżej znajduje się krótki program w Basic'u demonstrujący użycie dwóch ostatnich wywołań CIO. Dalej umieszczony jest
wydruk w assemblerze procedury zawartej w instrukcjach DATA (a później w zmiennej tekstowej CIO$).
Liczne zmienne SpartaDOS są dostępne dla programisty, co pozwala na łatwe
korzystanie z nich przez programy użytkowe i aplikacyjne. Ta tablica danych jest określona jako COMTAB i jest wskazywana
przez zmienną DOSVEC systemu operacyjnego znajdującą się pod adresem 10 ($A). Sposób korzystania z niej jest pokazany w
zamieszczonym na końcu przykładzie napisanym w assemblerze. Tablica COMTAB jest jednakowa dla wszystkich wersji
SpartaDOS, a wyjątki są wskazane w opisie. Ponadto rejestry COMTAB, ZCRNAME, BUFOFF, COMFNAM i LBUF są wykorzystywane
przez OS/A+ i DOS XL.
Poniższy przykład w assemblerze demonstruje sposób odczytu wiersza poleceń SpartaDOS. Kopiuje on po prostu wiersz poleceń, w razie konieczności z dodaniem lub tłumaczeniem specyfikacji stacji. Ustawia on także BUFOFF na zero, więc nazwa polecenia jest wyświetlana.
* wartości CIO i IOCB
ciov equ $e456
iocom equ $342
icbal equ $344
icbah equ $345
icbll equ $348
icblh equ $349
write equ $9
* wartości SpartaDOS
comtab equ 10
zcrname equ 3
bufoff equ 10
comfnam equ 33
* Program
org $4000 lub gdziekolwiek
init equ * szlak twojej procedury
ldy #zcrname+2 jest taki jak COMTAB
ldx #2
loop1 equ *
lda (comtab),y
sta crunch,x
dey
dex
bpl loop1
* zerowanie BUFOFF
lda #0
ldy #bufoff
sta (comtab),y
mainloop equ *
jsr crunch odczyt następnego wpisu
beq exit koniec gdy nie ma.
* ustawienie danych w COMFNAM dla CIO
ldx #0 IOCB #0 (E:)
lda #63 max długość bufora
sta icbll,x
lda #0
sta icblh,x
lda comtab zapis comtab+33 w icba
clc
adc #comfnam
sta icbal,x
lda comtab+1
adc #0
sta icbah,x
lda #write rozkaz "print strig"
sta iccom,x
jsr ciov wświetlenie
jmp mainloop
exit equ *
rts
crunch equ *
jmp $ffff zmieniane przez INIT
org $2e0
dta a(init) wektor uruchomieniaPoniższe wektory są dostępne tylko w komputerach XL/XE. Znajdują się one pod ROM systemu operacyjnego i są niszczone przez każdy program wykorzystujący ten obszar, jak Tutbo Basic XL. Dobrą praktyką jest sprawdzenie _800FLG dla upewnienia się, czy jest to komputer XL/XE i sprawdzenie każdego wektora przed użyciem.
Ponieważ te wektory są pod ROM, to konieczne jest włączenie RAM zamiast ROM w tym
obszarze pamięci. Oto jeden z możliwych sposobów:
Liczne rejestry na stronie 7 umożliwiają dostęp do systemu operacyjnego SpartaDOS X.
Dokładne wyjaśnienia znaczenia wszystkich rejestrów wykracza poza ramy tej instrukcji, lecz poniżej podane jest kilka
najbardziej interesujących.
Procedury systemowe są wykonywane przez wykonanie skoku do procedury (JSR) pod adres $703 z kodem żądanego rozkazu w rejestrze Y 6502 i numerem żądanego urządzenia w device. Na przykład, z $10 w device wartość 100 w Y powoduje ustawienie aktualnego czasu i daty według wartości zawartych w zmiennych time i date.
kd_gettd 100 odczyt czasu i daty
Poniżej znajduje się wykaz poprawnych rozkazów wektora "misc". Muszą one być wpisane
do akumulatora 6502 przed wykonaniem JSR $0709. Rejstr Y jest używany jako index w COPYBUF dla operacji, które
korzystają z tego bufora.
cztery młodsze bity w liczbie device są numerem urządzenia, na przykład, 2 dla D2:. Cztery starsze bity mają następujące znaczenie:
0 blok SIO (SPARTA.SYS, ATARIDOS.SYS) Za każdym razem gdy otwierany jest plik czas i data dla pliku są umieszczane w time i date. Gdy plik jest otwierany tylko do zapisu i dataset jest równy 0, to bieżący czas i data są odczytywane do time i date oraz przypisywane do pliku. Jeżeli dataset jest $FF, to plik otrzymuje czas i datę, które były w rejestrach gdy plik został otwarty. Dataset, inaczej niż rejestr TDOVER we wcześniejszych wersjach SpartaDOS, jest automatycznie kasowany po użyciu. Przy kopiowaniu pliku pozostawia to orginalny czas i datę. Także w ten sposób programy (jak ARC) przypisuą zapamiętane o czasie i datcie do nowego pliku.
INFORMACJE TECHNICZNE Format dyskietki SpartaDOS Istnieją cztery wyróżniające się rodzaje sektorów na dyskietce w formacie SpartaDOS. Są to sektory odczytu wstępnego, mapy bitowej, mapy sektorów i danych. Sektory danych mogą zawierać zarówno dane katalogów jak i dane plików. Poniżej znajduje się szczegółowy opis sektorów każdego rodzaju. Sektory odczytu wstępnego Jak w większości innych DOS'ów dla 8 bitowych komputerów Atari, pierwsze trzy sektory dyskietki są sektorami odczytu wstępnego. Zawierają one program odczytujący wskazany plik przy uruchamianiu systemu oraz inne informacje konieczne do zapisu i odczytu danych z dyskietki. Sektory odczytu wstępnego są zawsze w pojedyńczej gęstości, niezależnie od gęstości pozostałej części dyskietki. Sektor 1 od bajtu $30 do $7f i całe sektory 2 i 3 zawierają program, który odczytuje plik pod SpartaDOS 2.x i 3.x, jeśli został określony (przez polecenie BOOT). Program ten nie jest wykorzystywany przez SpartaDOS x. Pierwszą częścią sektora 1 jest tablica danych zawierająca wartości opisane poniżej. Dyskietka może być dyskietką elastyczną ramdyskiem lub partycją twardego dysku, chyba że w opisie zostało podane inaczej. Wszystkie liczby dwu i trzybajtowe są zapisywane w standardowym formacie młodszy/starszy bajt.
Oto wartości sektora 1 , podane według położenia w sektorze (pierwszy bajt sektora ma numer 0):
Mapa bitowa Mapa bitowa jest stosowana do określenia przypisania każdego sektora dyskietki. Każdy bit w każdym bajcie mapy bitowej pokazuje, czy odpowiadający mu sektor jest zajęty, więc każdy bajt zawiera informację o stanie ośmiu sektorów. Bit 7 reprezentuje pierwszy sektor każdej grupy, a bit 0 ósmy sektor grupy. Bajt 0 pierwszego sektora mapy bitowej reprezentuje sektory od 0 do 7 (pomimo iż sektor 0 nie istnieje), bajt 1 reprezentuje sektory od 8 do 15 itd. Jeżeli bit reprezentujący sektor jest USTAWIONY (1), to sektor nie jest wykorzystany. Jeżeli bit jest SKASOWANY (0) to sektor jest zajęty (przypisany do pliku). Jeżeli potrzeba więcej niż jeden sektor mapy bitowej, to mapa zajmuje kolejno następujące sektory. Mapa sektorów
Mapa sektorów jest wykazem wszystkich sektorów zajętych przez plik. Pierwsze dwa
wpisy są numerami następnego i poprzedniego sektora mapy sektorów pliku. Reszta sektora zawiera listę numerów sektorów z
danymi pliku lub katalogu. Są one opisane poniżej według położenia w sektorze:
Struktura katalogu
Katalog jest specjalnym plikiem, który zawiera informacje o grupie plikow i
podkatalogów. Każdy wpis katalogu ma długość 23 bajtów i zawiera nazwę pliku, czas i datę, numer pierwszego sektora mapy
i status wpisu. Pierwszy wpis jest inny niż pozostałe, gdyż znajdują się w nim informacje o samym katalogu. Poniżej
podane są informację zawarte w pierwszym wpisie (licząc od jego początku):
Gdy katalog jest otwarty w trybie bezpośrednim (patrz "Programowanie ze SpartaDOS X"), to jego plik jest odczytywany od drugiego wpisu (więc od pierwszego wpisu pliku lub podkatalogu). Aby odczytać pierwszy wpis, należy instrukcją POINT wskazać początek pliku po jego otwarciu.
Pozostałe wpisy katalogu są takie same. Mają one długość 23 bajtów i zawierają następujące informacje (licząc od
początku wpisu):
Badanie dyskietek Najlepszym sposobem zapoznania się z formatem dyskietek SpartaDOS jest użycie edytora dyskowego i badanie testowej dyskietki. DISKRX, edytor dyskowy SpartaDOS znajdujący się w zestawie SpartaDOS ToolKit, jest doskonałym edytorem sektorów specjalnie przystosowanym do dyskietek SpartaDOS. Rozpoznaje on sektory odczytu wstępnego, mapy bitowej, mapy sektorów, katalogów i plików. Dobre zrozumienie struktury dyskietki SpartaDOS pozwala na odtwarzanie plików z dyskietek, które mają wadliwe sektory lub uszkodzone katalogi.
KONFIGURACJA SYSTEMU Ten rozdział zawiera wszystkie informacje niezbędne do skonfigurowania Twojego systemu w wybrany przez Ciebie sposób.Istnieje tu wiele procedur obsługi (drivers) różnych funkcji, które mogą być zainstalowane w systemie. Oczywiście jeżeli zainstalujesz wszystkie, to może zabraknąć pamięci dla uruchomienia programów. Gdy SpartaDOS X jest uruchamiany, to pewne rzeczy są ustalane - posiada on "plik" tekstowy z informacjami o konfiguracji. Możesz napisać własny plik konfiguracji, który zastąpi "plik" standardowy. Utworzony przez Cibie plik musi nazywać się "CONFIG.SYS" i musi być umieszczany jako plik tekstowy na dyskietce znajdującej się w stacji dysków nr.1 w chwili uruchomienia komputera. Musi on być zapisany na dyskietce w formacie SpartaDOS w katalogu głównym. Plik CONFIG.SYS Plik "CONFIG.SYS" składa się z poleceń. Aktualnie możliwe są trzy rodzaje poleceń. Są to:
Standardowym pseudo-plikiem CONFIG.SYS zapisanym w module SpartaDOS X jest:
DEVICE SPARTA
DEVICE SIO
DEVICE ATARIDOS
DEVICE INDUS
DEVICE CLOCK
DEVICE JIFFY
DEVICE RAMDISKJeżeli jednak Twój komputer ma 256 Kb pamięci lub więcej, to SpartaDOS X automatycznie wykorzystuje jeden z dodatkowych banków (USE BANKED) dla procedur DOS. Oznacza to jednocześnie zmniejszenie o jeden bank (16 kB) instalowanego ramdysku. Gdy niezbędny jest większy rozmiar ramdysku, musisz napisać własny plik CONFIG.SYS zawierający polecenie USE OSRAM. Normalne wykorzystanie pamięci RAM jest następujące:
Zwróć uwagę, że obszr pamięci określony przez OSRAM ma rozmiar 7 kB ($E400 $FFBF), a obszar pamięci BANKED ma 16 kB ($4000-$7FFF). Jeżeli masz komputer z rozszerzoną pamięcią, to zwykle najlepiej stosować "USE BANKED", chyba że komputer ma 128 kB i chcesz użyć Basic XE w trybie EXTEND (lub inny program, który wymaga dodatkowych 64 kB RAM). Jeżeli wybierzesz OSRAM, możesz wykorzystać 4 kB RAM z obszaru $C000-$CFFF jako bufory dla procedury SPARTA.SYS (opisanej dalej w rozdziale). Polecenie SET jest identyczne z poleceniem SET w Command Processor. Pozwala to na dowolne ustawienie wartości zmiennych systemowych jak "CAR", "BASIC" lub "BATCH". Polecenie DEVICE odczytuje i instaluje procedury jak SPARTA.SYS, CLOCK.SYS, itd. Każda z tych procedur jest opisana w tym rozdziale. Pamiętaj, że ich kolejność jest ważna (na przykłąd, procedura SPARTA.SYS musi być odczytana przed ATARIDOS.SYS). Jeżeli podczas uruchamiania komputera lub wykonywania polecenia COLD trzymasz wciśnięty klawisz <OPTION>, to znajdujący się na dyskietce plik CONFIG SYS jest ignorowany i realizowana jest standardowa konfiguracja systemu ustalona w module SpartaDOS X. Procedura SPARTA.SYS
Zadanie: Procedura obsługi dyskietek w formacie SpartaDOS. Musi ona być zainstalowana, gdyż w przeciwnym przypadku
system nie będzie realizował swoich zadań (tj. nie będzie możliwy zapis i odczyt dyskietek). Opis: Jest to największa ze wszystkich procedur obsługi i zawiera trzy podprogramy. Są to:
Parametr "nbufs" jest liczbą instalowanych buforów sektorów, z zakresu od 2 do 16 - standardowo jest 4. Każdy bufor zajmuje 256 bajtów RAM. Bufory są umieszczane w obszarze $C000 -$CFFF, jeżeli użyjesz USE OSRAM i parametru OSRAM, w dodatkowym banku, jeżeli użyjesz USE BANKED lub w dolnej części pamięci, jeżeli użyjesz USE NONE lub USE OSRAM bez parametru OSRAM w DEVICE SPARTA. Zbyt mała liczba buforów może spowodować wystąpienie błędu 161 ($A1), zaś zbyt duża nadmiernie zmniejsza pozostały dla innych programów obszar pamięci RAM. Parametr "nfiles" określa maksymalną liczbę plików, które mogą być równocześnie otwarte, z zakresu od 3 do 16 - standardowo jest 5. Każde zwiększenie tej liczby zajmuje dodatkowo 256 bajtów pamięci. Wykorzystanie pamięci jest takie jak przez bufory sektorów. Procedura SIO.SYS
Zadanie: Procedura obsługi szybkiej transmisji SIO i równoległego wejścia/wyjścia. Jest ona także niezbędna. Opis: Procedura ta musi być dołączona do pliku CONFIG.SYS. Zawiera ona program realizujący szybką transmisję SIO ze stacjami US Doubler 1050, Indus GT, LDW Super 2000, Happy 1050 i XF551. Obsługuje ona także standardową transmisję ze wszystkimi innymi stacjami oraz transmisję równoległą (PIO) z urządzeniami takimi jak Multi I/O. DEVICE SPARTA musi poprzedzać DEVICE SIO w pliku CONFIG.SYS. Procedura INDUS.SYS
Zadanie: Procedura szybkiej transmisji SIO dla stacji Indus. Jest ona niezbędna dla szybkich operacji ze stacjami
Indus, LDW 2000 i Happy. Opis: Procedura ta nie zajmuje miejsca w pamięci lecz przeprogramowuje stacje Indus GT i LDW Super 2000 do szybkiej transmisji (stacje te mają program szybkiej transmisji, lecz ma on błędy i nie działa). Gdy stacja jest już zaprogramowana, to taka pozostaje, aż do wyłączenia jej zasilania. Nie jest więc konieczne programowanie stacji przy każdym włączeniu komputera. Procedura ta jest wymagana dla stacji Happy, lecz nie działa z CA 2001. Procedura SIO.SYS musi być zainstalowana przed INDUS.SYS. Procedura ATARIDOS.SYS
Zadanie: zawiera program rozpoznający dyskietki w formacie Atari DOS 2. Rozpoznaje on ponadto różne odmiany DOS 2, w tym
MYDOS i DOS 2.5. Opis: Procedura ta wymaga wcześniejszego odczytania procedury "SPARTA.SYS" (jest ona rozszerzeniem SPARTA.SYS). Rozpoznaje ona wszystkie odmiany Atari DOS 2 włącznie z podkatalogami MYDOS. Sektory w rozszerzonej gęstości DOS 2.5 są tylko odczytywane i nie mogą być zapisywane. Ponadto nie jest możliwe tworzenie katalogów (MKDIR), kasowanie katalogów (RMDIR) i zmiana bieżącego katalogu (CHDIR) dla dyskietek MYDOS. ATARIDOS.SYS nie rozpoznaje dyskietek DOS 3, DOS XE i OSS DOS wersja 4. Procedura RAMDISK.SYS
Zadanie: jest to procedura obsługi ramdysku SpartaDOS X. Pozwala na wybranie numeru i wielkości każdego
instalowanego ramdysku. Opis: Standardowymi parametrami dla ramdysku są; stacja numer 9 i wszystkie dostępne banki RAM poza czterema bankami przeznaczonymi dla Basica XE (w atari 800 wszystkie banki). Można zainstalować kilka ramdysków przez użycie różnych numerów stacji i wybranie odpowiednich rozmiarów. Jeżeli wybierzesz więcej banków RAM niż jest do dyspozycji, to zostaną wykorzystane wszystkie dostępne banki. Każdy bank ma 16 kB. Liczbę dostępnych banków podaje polecenie MEM.
Po zainstalowaniu ramdysku procedura automatycznie zapisuje na nim strukturę katalogu. Jeżeli uprzednio został
zainstalowany ramdysk o tej samej wielkości i tym samym numerze, to wykonanie zimnego startu (COLD) bez wyłączania
zasilania układów pamięci nie powoduje utraty zawartości ramdysku. Tak więc wykonanie poniższych poleceń nie niszczy
zawartości ramdysku.
RAMDISK not instaled! RAMDISK.SYS nie ma wpływu na ramdyski w Multi I/O. Procedura CLOCK.SYS
Zadanie: Procedura obsługi modułu R-Time 8 dla SpartaDOS X. Bez zainstalowania jej (lub JIFFY.SYS) polecenia TIME i DATE
dają czas i datę rewizji modułu SpartaDOS X. Opis: Jeżeli zainstalowana jest już procedura obsługi zegara, lub jeżeli nie jest dołączony moduł R-Time 8, to procedura ta nie jest odczytywana. Procedura JIFFY.SYS
Zadanie: procedura obsługi systemowego zegara SpartaDOS X. Stosuje się ją, gdy nie ma modułu R-Time 8. Bez
zainstalowania tej procedury (lub CLOCK.SYS) polecenia TIME i DATE dają czas i datę rewizji modułu SpartaDOS X Typ: zewnętrzny na urządzeniu CAR: Opis: Jeżeli zainstalowana jest już procedura obsługi zegara (np.CLOCK.SYS) to procedura ta nie jest odczytywana. Procedura XEP80.SYS
Zadanie: pozwala na wykorzystanie 80 kolumnowego ekranu przy użyciu interfejsu Atari XEP80. Opis: Interfejs XEP80 musi być włączony do drugiego gniazda joysticka i musi mieć swój własny monitor. Po zainstalowaniu wszystko co jest wysyłane do urządzenia E: lub CON:, będzie wyświetlane na 80-kolumnowym monitorze poprzez XEP80. Normalne 40-kolumnowe wyjście nie działa. Wiele programów wykorzystuje pamięć obrazu bezpośrednio, omijając urządzenie E:. Tak pracują prawie wszystkie edytory tekstu. Programy takie nie działają przez XEP80, wyświetlając swój obraz na normalnym monitorze. Dobrymi przykładami mogą tu być MENU i FORMAT. Inne programy używają kombinacji dwóch sposobów, na przykład 850 Express! 3.0. Aktualnie część komunikacyjna Express! działa poprawnie na ekranie 80-kolumnowym, lecz wszystkie menu są wyświetlane na 40-kolumnowym. Z tych powodów zalecane jest równoczesne korzystanie z obu monitorów. |