10 ! LONGOPEN.BAS 1005 INTEGER : EXTEND 10000 ! 10010 ! ***************************** 10020 ! * 10030 ! * Open long file name 10040 ! * 10050 ! * At exit: If error, exit T else exit LFT-number 10060 ! * 10070 DEF FNOpen(Fdp$,Luo) LOCAL Fpnt,Error,Opencode$=11,Fd$=256 10080 Fd$=FNCapstr$(Fdp$)+CHR$(13) 10090 IF LEN(Fd$)>4 THEN IF MID$(Fd$,LEN(Fd$)-4,4)='.UFD' THEN MID$(Fd$,LEN(Fd$)-4,4)='.Ufd' 10100 IF INSTR(1,Fd$,':')=0 THEN Devnr=255 ELSE IF FNDevnamenr(LEFT$(Fd$,INSTR(1,Fd$,':')-1)) THEN RETURN T ELSE Fd$=RIGHT$(Fd$,INSTR(1,Fd$,':')+1) 10110 OPEN 'DR0:' AS FILE Luo 10120 Fpnt=PEEK2(65344) 10130 WHILE PEEK(Fpnt+2)<>Luo 10140 Fpnt=PEEK2(Fpnt) 10150 WEND 10160 Opencode$=CHR$(1,Devnr,PEEK(Fpnt+21),205,24,96,208,192,46,21,201) ! LDI BC,Lft:Devnr/CALL OPEN./RNC/RNZ/LI L,21/RET 10170 Error=CALL(VARPTR(Opencode$),VARPTR(Fd$)) 10180 IF Error THEN CLOSE Luo : ; 'Error' Error 'during open of ''' Fdp$ '''' : RETURN T 10190 RETURN PEEK(Fpnt+21) 10200 FNEND 10210 ! ****************************************** 10220 ! * 10230 ! * Convert device name to number 10240 ! * 10250 DEF FNDevnamenr(Devname$) 10260 Devpnt=PEEK2(-133) 10270 WHILE FNGetdev=F 10280 IF Dev$=Devname$ THEN Devnr=Devnumber : RETURN F 10290 WEND 10300 ; 'Can''t find device ''' Devname$ '''' 10310 RETURN T 10320 FNEND 10330 ! ******************************** 10340 ! * 10350 ! * Get next device 10360 ! * 10370 DEF FNGetdev 10380 IF Devpnt=0 THEN RETURN T 10390 Dev$=CHR$(PEEK(Devpnt+2),PEEK(Devpnt+3),PEEK(Devpnt+4)) 10400 Devhandler=PEEK2(Devpnt+5) 10410 Devnumber=PEEK(Devpnt+7) 10420 Devpnt=PEEK2(Devpnt) 10430 RETURN F 10440 FNEND 10450 ! 10460 ! *********************************** 10470 ! * 10480 ! * Long directory open. See FNOpen for details 10490 ! * 10500 DEF FNOpendir(Fdp$,Luo)=FNOpen(Fdp$+'/',Luo)