]> git.sur5r.net Git - cc65/blobdiff - libsrc/lynx/open.s
Don't set errno when the regular end of directory is reached. Plus minor code
[cc65] / libsrc / lynx / open.s
index f4d0471b000a3bebedc39ea9b5b9a43d8d52d9ff..88c8b8c8f9f5901d2569b2a183876d374290bbe1 100644 (file)
@@ -23,6 +23,7 @@
        .import         addysp,popax,pushax,decsp6,pusha0,pusheax,ldaxysp
        .import         aslax3,axlong,tosaddeax,steaxysp,stax0sp,incsp8
        .import         ldax0sp
+       .import         lynxskip0, lynxblock
        .importzp       _FileEntry
        .importzp       _FileStartBlock
        .importzp       _FileCurrBlock
@@ -112,12 +113,30 @@ flagsok:
        jsr     steaxysp
        lda     #$01
        jsr     pusha0
-       lda     _FileEntry
-       ldx     _FileEntry+1
+       lda     #<_FileEntry
+       ldx     #>_FileEntry
        jsr     pushax
        ldx     #$00
        lda     #$08
        jsr     _read
+       lda     _FileStartBlock
+       sta     _FileCurrBlock
+       jsr     lynxblock
+       lda     _FileBlockOffset
+       ldx     _FileBlockOffset+1
+       phx                             ; The BLL kit uses negative offsets
+       plx                             ; while tha basic Lynx uses positive
+       bmi     @1                      ; Make all offsets negative
+        eor    #$FF
+       pha
+       txa
+        eor    #$FF
+       bra     @2
+@1:    pha
+       txa
+@2:    tay
+       plx
+       jsr     lynxskip0
        jsr     stax0sp
        jmp     incsp8