xx - nowy kod operacji: dopisz do pliku
Ten parametr funkcji OPEN decyduje tylko o kierunku przepływu danych, nie ma natomiast nic wspólnego z zagadnieniem, w którym miejscu pliku będziemy dopisywać (no, prawie - niektóre DOSy mają chyba tryb 9 - dopisywanie na końcu).
Oczywiście, składnia open z numerem xx przyjmuje, że pierwsze put (jeśli nie chcemy tworzć dodatkowych instrukcji) mówi nam o kolejnym bajcie (lub linii - trza by ustalić) w pliku.
Wymyśliłeś właśnie funkcję seek(). W Atari nazywa się ona POINT i pod SpartaDOS-em działa właśnie tak, że po otwarciu pliku przesuwasz "znacznik" wewnątrz pliku, od którego zacznie się następna operacja zapisu albo odczytu. Dzieje się to bez przesyłania danych. Poza tym definiowanie jakiegoś specjalnego PUT wprowadzałoby tylko bałagan - że nie wspomnę już o takim detalu, że argumentem PUT może być liczba z zakresu 0-255, średnio się ta funkcja więc nadaje do ustalania pozycji w pliku, bo pliki, jak wiadomo, mogą być dłuższe.
Aha, w tym momencie nadal pozostaje nam open z parametrem 12 na nadpisywanie bez przerzucania...
Hmm, jeszcze jedno mi wpadło do głowy - Draco, nie da rady zrobić skróconej wersji open, np w postaci:o.#1,xxDałoby to możliwość do operacji na pliku już otwartym, ale ze zmianą parametru? (np. otwieramy plik do zapisu, zapisuje się coś, trza zmodyfikować, więc zamiast ,8 dajemy ,12 i po sprawie)? xx oznacza tutaj standardowe kody open:
4 - otwarcie do odczytu
8 - do zapisu
12 - zmiana wewnątrz pliku...
Wszystko się da, ale obawiam się, że zmianę atrybutu dostępu do pliku już otwartego źle może znieść DOS. Poza tym nie można przeprowadzić OPEN na otwartym pliku, to wymagałoby zbyt dużych zmian w ROM-ie i chyba nie jest potrzebne. Ostatecznie, jeśli przewidujesz, że plik będzie i czytany i zapisywany, to od razu możesz go otworzyć w trybie 12, bez kombinacji.