GET DISK INFO

From Atariki

(Różnice między wersjami)
Jump to: navigation, search
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)
Personal tools