PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF *--------------------------------------- FIO.OpenFileA sta hFileName >SYSCALL SYS.GetMemPtrA >STYA ZPPtr1 ldy #1 lda (ZPPtr1),y cmp #'/' beq .1 >PUSHB hFileName ldy #S.PS.hPREFIX lda (pPs),y >PUSHA >SYSCALL SYS.PStrCat sta hFileName >SYSCALL SYS.GetMemPtrA >STYA ZPPtr1 .1 >PUSHW ZPPtr1 >PUSHW L.MSG.SRC.FILE >LIBCALL hLIBSTR,LIBSTR.PRINTF ldy #SRC.COUNT lda (pData),y cmp #SRC.IN.MAXDEPTH bne .10 lda #ERR.SRC.TOO.MANY.IN sec rts .10 lda hFileName >SYSCALL SYS.MLIOpenA bcs .99 pha ldy #SRC.COUNT lda (pData),y clc adc #SRC.hREFNUMS tay pla sta (pData),y ldy #SRC.COUNT lda (pData),y clc adc #SRC.hBUFFERS tay txa sta (pData),y lda hFileName >SYSCALL SYS.MLIGetFileInfoA bcs .99 >STYA ZPQuickPtr1 ldy #1 lda (ZPQuickPtr1),y tax 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 >PUSHBI $0D Line separator for TXT file >PUSHBI $FF ldy #SRC.COUNT lda (pData),y clc adc #SRC.hREFNUMS tay lda (pData),y >PUSHA >SYSCALL SYS.MLINewLine bcs .99 .8 ldy #SRC.COUNT lda (pData),y inc sta (pData),y clc rts .98 lda #ERR.SRC.INV.TYPE .99 sec 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 TmpBuffer256 jsr FIO.ReadFromFile bcs .19 lda #0 replace ending $0D with $00 sta TmpBuffer256,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 TmpBuffer256,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 TmpBuffer256,x pla inx beq .99 dec bne .3 iny bne .1 bra .99 .5 and #$3F Compute blank count .6 pha lda #$20 sta TmpBuffer256,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 SYS.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 SYS.MLICloseA ldy #SRC.COUNT lda (pData),y clc adc #SRC.hBUFFERS-1 tay lda (pData),y >SYSCALL SYS.FreeMemA ldy #SRC.COUNT lda (pData),y dec sta (pData),y .8 clc rts *--------------------------------------- LOAD.ASM.T ldy #ASM.T.hMem lda (pData),y beq .1 >SYSCALL SYS.FreeMemA ldy #ASM.T.hMem lda #0 sta (pData),y .1 >PUSHW L.ASM.T.FILENAME >PUSHW L.MSG.T.FILE >LIBCALL hLIBSTR,LIBSTR.PRINTF >LDYA L.ASM.T.FILENAME >SYSCALL SYS.LoadFileYA bcs .9 txa ldy #ASM.T.hMem sta (pData),y .9 rts *--------------------------------------- MAN SAVE BIN/ASM.S.FIO LOAD BIN/ASM.S ASM