Odczyt długości pliku
Odczytanie informacji o długości pliku jest jedną z ciekawszych możliwości Sparta DOS X. Taka informacja może być wykorzystana np. do wstępnego sprawdzenia czy plik posiada żądaną długość albo np. określenia wielkości bufora dla danych z pliku.
W Sparta DOS X obsługę tej funkcji wykonuje operacja XIO 39. Przed jej wywołaniem należy otworzyć do odczytu kanał z właściwą nazwą pliku. Wartości parametrów AUX1 i AUX2 w poleceniu XIO powinny być takie same jak w poleceniu OPEN.
Dla zrozumienia określmy nazwy komórek pamięci oraz numer kanału IOCB:
10 IOCB=1 : ICAX3=844 : ICAX4=845 : ICAX5=846
11 OPEN #IOCB,4,0,”D:FNAME.EXT”
12 XIO 39,#IOCB,4,0,”D:”
13 CLOSE #IOCB
Wyliczenie właściwej długości wykonamy odczytując wartości z komórek ICAX3, ICAX4, ICAX5 otwartego kanału CIO. Z trzech kolejnych bajtów tworzących 24 bitowy licznik odczytamy długość pliku wedle wzoru:
14 PRINT PEEK(ICAX3+IOCB*16)+PEEK(ICAX4+IOCB*16)*256+PEEK(ICAX5+IOCB*16)*65536
W sytuacji w której numer IOCB jest znany i stały wyliczenia możemy zastąpić konkretnymi wartościami. W przykładzie kanał IOCB ma numer 1, możemy więc optymalnie wykonać tak:
10 OPEN #1,4,0,”D:FNAME.EXT” : XIO 39,#1,4,0,”D:” : CLOSE #1
11 PRINT DPEEK(860)+PEEK(862)*65536
W praktyce bardzo rzadko mamy do czynienia z plikami większymi niż 65535 bajtów, można więc dokonać uproszczenia:
10 OPEN #1,4,0,”D:FNAME.EXT” : XIO 39,#1,4,0,”D:” : CLOSE #1 : PRINT DPEEK(860)