GET DISK INFO
From Atariki
(Różnice między wersjami)
Wersja z dnia 13:05, 30 sie 2009 KMK (Dyskusja | wkład) ← Previous diff |
Aktualna wersja KMK (Dyskusja | wkład) |
||
Linia 1: | Linia 1: | ||
'''Przeznaczenie:''' Funkcja [[DOS]]-u pozwalająca programowi odczytać podstawowe parametry dyskietki. | '''Przeznaczenie:''' Funkcja [[DOS]]-u pozwalająca programowi odczytać podstawowe parametry dyskietki. | ||
- | '''Dostępność:''' [[SpartaDOS]] ([[Real.DOS]]), [[SpartaDOS X]] | + | '''Dostępność:''' [[SpartaDOS]], [[Real.DOS]], [[BW-DOS]], [[SpartaDOS X]] |
'''Składnia [[BASIC]]-a:''' ''(brak, funkcja niedostępna z BASIC-a)'' | '''Składnia [[BASIC]]-a:''' ''(brak, funkcja niedostępna z BASIC-a)'' | ||
Linia 31: | Linia 31: | ||
* +$00 - numer wersji formatu dyskietki, $xy = x.y (1 bajt) | * +$00 - numer wersji formatu dyskietki, $xy = x.y (1 bajt) | ||
- | * +$01 - zakodowana wielkość sektora: $00 - 256 bajtów, $01 - 512 bajtów, $80 - 128 bajtów (1 bajt) | + | * +$01 - zakodowana wielkość sektora logicznego: $00 - 256 bajtów, $01 - 512 bajtów, $80 - 128 bajtów (1 bajt) |
- | * +$02 - całkowita liczba sektorów dyskietki (2 bajty) | + | * +$02 - całkowita liczba sektorów logicznych dyskietki (2 bajty) |
- | * +$04 - bieżąca liczba wolnych sektorów dyskietki (2 bajty) | + | * +$04 - bieżąca liczba wolnych sektorów logicznych dyskietki (2 bajty) |
* +$06 - nazwa dyskietki (8 znaków ASCII) | * +$06 - nazwa dyskietki (8 znaków ASCII) | ||
* +$0e - numer sekwencyjny dyskietki (1 bajt) | * +$0e - numer sekwencyjny dyskietki (1 bajt) |
Aktualna wersja
Przeznaczenie: Funkcja DOS-u pozwalająca programowi odczytać podstawowe parametry dyskietki.
Dostępność: SpartaDOS, Real.DOS, BW-DOS, SpartaDOS X
Składnia BASIC-a: (brak, funkcja niedostępna z BASIC-a)
Kod w asemblerze:
ldx #iocb*16 lda #47 sta iccmd,x lda #<fname sta icbufa,x lda #>fname sta icbufa+1,x lda #<buf sta icbufl,x lda #>buf sta icbufl+1,x jsr jciomain
gdzie:
- iocb - numer kanału IOCB z zakresu od 1 do 7. Kanał musi być zamknięty w chwili wywołania.
- fname - adres specyfikacji dysku. Całość ciągu znaków trzeba zakończyć znakiem EOL (ASCII $9B).
- buf - adres bufora danych. Musi mieć co najmniej 17 bajtów.
Zwracana wartość: Procedura zwraca w rejestrze Y ujemny kod błędu albo wartość $01 w przypadku powodzenia, oraz odpowiednio do tego ustawia znacznik N rejestru znaczników.
W przypadku powodzenia, bufor będzie zawierał następujące wartości:
- +$00 - numer wersji formatu dyskietki, $xy = x.y (1 bajt)
- +$01 - zakodowana wielkość sektora logicznego: $00 - 256 bajtów, $01 - 512 bajtów, $80 - 128 bajtów (1 bajt)
- +$02 - całkowita liczba sektorów logicznych dyskietki (2 bajty)
- +$04 - bieżąca liczba wolnych sektorów logicznych dyskietki (2 bajty)
- +$06 - nazwa dyskietki (8 znaków ASCII)
- +$0e - numer sekwencyjny dyskietki (1 bajt)
- +$0f - numer losowy dyskietki (1 bajt)
- +$10 - status zabezpieczenia dyskietki funkcją LOCK DISK, pod SpartaDOS X nieużywany, zawsze $00 (1 bajt)