możesz mieć relatywną, jeżeli ustawisz ten "working dir", a potem będziesz się odwoływał we wszystkich open do "d:plik.dat". Warunkiem jest iż musisz mieć "D:" a nie "D1:", za chwilę przykład na szybko z BASIC-em.
UPDATE #1:
Oto BASIC-owy przykład, zakładam iż masz skonfigurowanego MyDOS-a z ramdyskiem na D8:, bo na tym będzie bazował ten przykład ;)
10 XIO 34,#1,8,0,"D8:FOO" : REM tworzy katalog FOO na D8:
20 XIO 34,#1,8,0,"D8:FOO:BAR" : REM tworzy katalog BAR w katalogu FOO na D8:
30 XIO 41,#1,0,0,"D8:FOO:BAR" : REM ustawia working directory na "D8:FOO:BAR"
40 OPEN #1,8,0,"D:DUMMY.DAT" : REM otwiera dummy.dat do zapisu (odwołanie do D: spowoduje iż MyDOS odwoła się do "working dir" więc stworzy plik w katalogu D8:FOO:BAR)
50 PRINT #1;"BLA, BLA, BLA..."
60 CLOSE #1
po wywołaniu tego kodu w katalogu "D8:FOO:BAR" pojawi się plik o nazwie "dummy.dat". Jego zawartość to "BLA, BLA, BLA...",$9B
Teraz przykład jak się do niego dobrać stosując "working DIR"
10 XIO 41,#1,0,0,"D8:FOO:BAR": REM ustal working DIR na "D8:FOO:BAR"
20 OPEN #1,4,0,"D:DUMMY.DAT": REM otwórz DUMMY.DAT do odczytu (MyDOS odwoła się do lokacji: D8:FOO:BAR:DUMMY.DAT"
30 DIM A$(100): REM deklarujemy zmienną tekstową (string)
40 INPUT #1,A$: REM zasysamy z pliku wiersz do A$
50 PRINT A$: REM wypisujemy na ekranie
60 CLOSE #1: REM zamykamy kanał
BASIC-owe przykłady są tylko po to aby wyjaśnić działanie mechanizmu working dir (default directory). Wywołanie XIO z poziomu ASM to po prostu normalny skok do CIO z odpowiednim kodem operacji (np. jak w przypadku OPEN). Jak będzie potrzeby real ASM kod, daj znać.
Seban