PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF *--------------------------------------- FIO.Init ldy #S.PS.hCMDLINE lda (pPS),y >SYSCALL GetMemPtrA bcs .99 >STYA ZPPtr1 lda (ZPPtr1) tay adc #3 len of ".T." sta ASM.T.FILENAMELEN adc #4 len of "6502" sta ASM.T.FILENAME tax .2 lda (ZPPtr1),y sta ASM.T.FILENAME,y dey bne .2 ldy #6 .3 lda ASM.T.DEFAULT,y sta ASM.T.FILENAME,x dex dey bpl .3 jmp FIO.LOAD.ASM.T .99 rts *--------------------------------------- FIO.OpenFileA sta FIO.hFileName >SYSCALL GetMemPtrA >STYA ZPPtr1 stz FIO.hFullPath ldy #1 lda (ZPPtr1),y cmp #'/' beq .1 >PUSHB FIO.hFileName ldy #S.PS.hPREFIX lda (pPs),y >PUSHA >SYSCALL PStrCat sta FIO.hFullPath sta FIO.hFileName >SYSCALL GetMemPtrA >STYA ZPPtr1 .1 >PUSHW ZPPtr1 >LDYA L.MSG.SRC.FILE >SYSCALL PrintFYA ldy #SRC.COUNT lda (pData),y cmp #SRC.IN.MAXDEPTH bne .10 lda #ERR.SRC.TOO.MANY.IN sec bra FIO.OpenFileA.Exit .10 >PUSHWI 0 >PUSHBI 4 >PUSHBI SYS.FOPEN.R+SYS.FOPEN.T lda FIO.hFileName >SYSCALL GetMemPtrA >PUSHYA >SYSCALL MLIOpenYA bcs .99 pha ldy #SRC.COUNT lda (pData),y clc adc #SRC.hFILES tay pla sta (pData),y ldy #SRC.COUNT lda (pData),y clc adc #SRC.hFILETYPES tay txa sta (pData),y * cmp #$FA S-C/BAS? * beq .8 * cmp #$04 TXT ? * bne .98 .8 ldy #SRC.COUNT lda (pData),y inc sta (pData),y clc bra FIO.OpenFileA.Exit .98 lda #ERR.SRC.INV.TYPE .99 sec FIO.OpenFileA.Exit php pha lda FIO.hFullPath beq .1 >SYSCALL FreeMemA .1 pla plp rts *--------------------------------------- FIO.ReadLine stz SRC.BufPtr ldy #SRC.COUNT lda (pData),y clc adc #SRC.hFILETYPES-1 tay lda (pData),y bmi .10 >PUSHWI 256 >PUSHWI UsrBuf256 jsr FIO.ReadFromFile bcs .19 lda #0 replace ending $0D with $00 sta UsrBuf256,y .19 rts .10 >PUSHWI 3 >PUSHW L.SRC.Buffer jsr FIO.ReadFromFile bcs .9 lda SRC.Buffer+1 sta SRC.LINENUM lda SRC.Buffer+2 sta SRC.LINENUM+1 lda SRC.Buffer LEN sec sbc #3 bcc .9 LEN should be at least 3 tay lda #0 >PUSHYA >PUSHW L.SRC.BUFFER jsr FIO.ReadFromFile ldy #0 ldx #0 .1 lda SRC.Buffer,y bmi .2 sta UsrBuf256,x beq .8 Ending 00 inx beq .99 iny bne .1 bra .99 .2 cmp #$C0 REPEAT char? bne .5 iny beq .99 lda SRC.Buffer,y iny beq .99 .3 pha lda SRC.Buffer,y sta UsrBuf256,x pla inx beq .99 dec bne .3 iny bne .1 bra .99 .5 and #$3F Compute blank count .6 pha lda #$20 sta UsrBuf256,x pla inx beq .99 dec bne .6 iny bne .1 bra .99 .8 clc .9 rts .99 lda #ERR.LINE.TOO.LONG sec rts *-------------------------------------- FIO.ReadFromFile ldy #SRC.COUNT lda (pData),y clc adc #SRC.hREFNUMS-1 tay lda (pData),y >PUSHA >SYSCALL MLIRead bcs .9 tax $100 byte transfered ? beq .9 lda #ERR.LINE.TOO.LONG sec .9 rts *--------------------------------------- FIO.FileClose ldy #SRC.COUNT lda (pData),y beq .8 clc adc #SRC.hREFNUMS-1 tay lda (pData),y >SYSCALL MLICloseA ldy #SRC.COUNT lda (pData),y clc adc #SRC.hBUFFERS-1 tay lda (pData),y >SYSCALL FreeMemA ldy #SRC.COUNT lda (pData),y dec sta (pData),y .8 clc rts *--------------------------------------- FIO.LOAD.ASM.T ldy #ASM.T.hMem lda (pData),y beq .1 >SYSCALL FreeMemA ldy #ASM.T.hMem lda #0 sta (pData),y .1 >PUSHW L.ASM.T.FILENAME >LDYA L.MSG.T.FILE >SYSCALL PrintFYA >PUSHWI 0 Aux type >PUSHBI 6 S.FILEINFO.TYPE.BIN >PUSHBI SYS.FOPEN.R >PUSHW L.ASM.T.FILENAME >SYSCALL LoadFile bcs .9 txa ldy #ASM.T.hMem sta (pData),y .9 rts *--------------------------------------- FIO.EmitByte clc rts *--------------------------------------- MAN SAVE BIN/ASM.S.FIO LOAD BIN/ASM.S ASM