X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=libsrc%2Flynx%2Fopen.s;h=c48b8eb95b5b5f79b92b549a1ebe4d4546be06e0;hb=6a92d8b987ef98b97fced19533573c9e74b208a9;hp=04ef2b68ecd77bbd5492b4468fefac9c4bd0a305;hpb=2222df9143368a2005507ff3c91ad478ee5bcb27;p=cc65 diff --git a/libsrc/lynx/open.s b/libsrc/lynx/open.s index 04ef2b68e..c48b8eb95 100644 --- a/libsrc/lynx/open.s +++ b/libsrc/lynx/open.s @@ -15,67 +15,67 @@ ; As helper functions we also provide. ; void openn(int fileno) ; - .importzp sreg, tmp3 - .macpack longbranch - .import _atoi - .import _read - .import _lseek - .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 - .importzp _FileBlockOffset - .import __STARTOFDIRECTORY__ - .export _open - .export _openn - - .include "errno.inc" - .include "fcntl.inc" - -.segment "DATA" + .importzp sreg, tmp3 + .macpack longbranch + .import _atoi + .import _read + .import _lseek + .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 + .importzp _FileBlockOffset + .import __STARTOFDIRECTORY__ + .export _open + .export _openn + + .include "errno.inc" + .include "fcntl.inc" + +.segment "DATA" _startofdirectory: - .dword __STARTOFDIRECTORY__ + .dword __STARTOFDIRECTORY__ ; --------------------------------------------------------------- ; int __near__ open (__near__ const unsigned char*, int) ; --------------------------------------------------------------- -.segment "CODE" +.segment "CODE" -.proc _open +.proc _open -.segment "CODE" +.segment "CODE" - dey - dey - dey - dey - beq parmok - jsr addysp + dey + dey + dey + dey + beq parmok + jsr addysp -parmok: jsr popax - sta tmp3 - and #(O_RDWR | O_CREAT) - cmp #O_RDONLY - beq flagsok - cmp #(O_WRONLY | O_CREAT) - beq flagsok - jsr popax - lda #EINVAL - jmp __directerrno +parmok: jsr popax + sta tmp3 + and #(O_RDWR | O_CREAT) + cmp #O_RDONLY + beq flagsok + cmp #(O_WRONLY | O_CREAT) + beq flagsok + jsr popax + lda #EINVAL + jmp __directerrno flagsok: - jsr popax - jsr _atoi - jsr _openn - ldx #$00 - lda #$01 - stx __oserror - rts + jsr popax + jsr _atoi + jsr _openn + ldx #$00 + lda #$01 + stx __oserror + rts .endproc @@ -83,54 +83,54 @@ flagsok: ; void __near__ __fastcall__ openn (int) ; --------------------------------------------------------------- -.segment "CODE" - -.proc _openn: near - -.segment "CODE" - - jsr pushax - jsr decsp6 - lda #$01 - jsr pusha0 - lda _startofdirectory+3 - sta sreg+1 - lda _startofdirectory+2 - sta sreg - ldx _startofdirectory+1 - lda _startofdirectory - jsr pusheax - ldy #$0D - jsr ldaxysp - jsr aslax3 - jsr axlong - jsr tosaddeax - jsr pusheax - ldx #$00 - txa - jsr _lseek - ldy #$02 - jsr steaxysp - lda #$01 - jsr pusha0 - lda #<_FileEntry - ldx #>_FileEntry - jsr pushax - ldx #$00 - lda #$08 - jsr _read - lda _FileStartBlock - sta _FileCurrBlock - jsr lynxblock - lda _FileBlockOffset+1 - eor #$FF - tay - lda _FileBlockOffset - eor #$FF - tax - jsr lynxskip0 - jsr stax0sp - jmp incsp8 +.segment "CODE" + +.proc _openn: near + +.segment "CODE" + + jsr pushax + jsr decsp6 + lda #$01 + jsr pusha0 + lda _startofdirectory+3 + sta sreg+1 + lda _startofdirectory+2 + sta sreg + ldx _startofdirectory+1 + lda _startofdirectory + jsr pusheax + ldy #$0D + jsr ldaxysp + jsr aslax3 + jsr axlong + jsr tosaddeax + jsr pusheax + ldx #$00 + txa + jsr _lseek + ldy #$02 + jsr steaxysp + lda #$01 + jsr pusha0 + lda #<_FileEntry + ldx #>_FileEntry + jsr pushax + ldx #$00 + lda #$08 + jsr _read + lda _FileStartBlock + sta _FileCurrBlock + jsr lynxblock + lda _FileBlockOffset+1 + eor #$FF + tay + lda _FileBlockOffset + eor #$FF + tax + jsr lynxskip0 + jsr stax0sp + jmp incsp8 .endproc