NEW AUTO 3,1 .LIST OFF *-------------------------------------- FILE.New jsr BUF.ResetSel jsr SCRN.UpdateStatusBar >LDYA L.MSG.NEWFILE FILE.New.1 >SYSCALL RealPath bcs .9 txa >STA.G hFileName >LDYAI 1024 >STYA BufLen >SYSCALL GetMem bcs .9 >STYA BufPtr >STYA.G BufBase txa >STA.G hBuf FileLen already set to 0 lda #0 sta (BufPtr) stz FileLen stz FileLen+1 jsr SCRN.Home clc .9 rts *-------------------------------------- FILE.Load jsr BUF.ResetSel jsr SCRN.UpdateStatusBar >PUSHEA.G STATBUF >LDA.G hFileName >SYSCALL GetMemPtr >SYSCALL stat bcc .1 >LDA.G hFileName >SYSCALL GetMemPtr bra FILE.New.1 .1 >LDA.G STATBUF+S.STAT.P.TYPE cmp #S.FI.T.TXT beq FILE.Load.TXT cmp #$FA S-C/ASM? bne .9 jmp FILE.Load.ASM .9 lda #MLI.E.INCFF sec rts *-------------------------------------- FILE.Load.TXT stz FileLen stz FileLen+1 jsr SCRN.Home stz TmpByte hLineBuffer stz TmpIndex hFile >STZ.G FileType >LDYAI 256 >SYSCALL GetMem bcs .99 >STYA ZPPTR1 stx TmpByte >PUSHWZ Aux type >PUSHBI S.FI.T.TXT >PUSHBI O.RDONLY+O.TEXT >LDA.G hFileName >SYSCALL GetMemPtr >SYSCALL fopen bcs .99 sta TmpIndex >PUSHEA.G STATBUF lda TmpIndex >SYSCALL fstat bcs .99 jsr FILE.GetBuffer .99 bcs .9 .1 >PUSHWI 254 >PUSHW ZPPTR1 lda TmpIndex >SYSCALL fread bcs .7 lda #0 sta (ZPPTR1),y Y = line len ldx #0 ldy #0 lda (ZPPTR1) beq .8 eor #C.LF bne .2 phy lda #2 >STA.G FileType ply iny .2 lda (ZPPTR1),y beq .4 sta (BufPtr) inc BufPtr bne .3 inc BufPtr+1 .3 inx iny bra .2 .4 txa clc adc FileLen sta FileLen bcc .1 inc FileLen+1 bra .1 .7 cmp #MLI.E.EOF bne .9 .8 lda #0 sta (BufPtr) clc .HS B0 BCS .9 sec jmp FILE.Close *-------------------------------------- FILE.Load.ASM lda #MLI.E.INCFF sec rts *-------------------------------------- FILE.Save >LDYAI 256 >SYSCALL GetMem bcs FILE.Save.9 >STYA ZPPTR1 stx TmpByte >LDA.G FileType tax jmp (J.SAVE,x) FILE.Save.9 rts *-------------------------------------- FILE.Save.CR clc .HS B0 BCS FILE.Save.CRLF sec ror TmpIndex+1 stz TmpIndex hFile >PUSHWZ Aux type >PUSHBI S.FI.T.TXT >PUSHBI O.CREATE+O.WRONLY >LDA.G hFileName >SYSCALL GetMemPtr >SYSCALL FOpen bcs FILE.Save.9 sta TmpIndex >LDYA.G BufBase >STYA BufPtr .1 lda (BufPtr) beq .8 ldy #$ff .2 iny lda (BufPtr),y sta (ZPPTR1),y beq .3 cmp #C.CR bne .2 iny bit TmpIndex+1 bpl .3 iny lda #C.LF sta (ZPPTR1),y .3 tya beq .8 clc adc BufPtr sta BufPtr bcc .4 inc BufPtr+1 .4 lda #0 >PUSHYA >PUSHW ZPPTR1 lda TmpIndex >SYSCALL FWrite bcs FILE.Close bra .1 .8 >STZ.G bUnSaved *-------------------------------------- FILE.Close php pha lda TmpByte beq .1 >SYSCALL freemem .1 lda TmpIndex beq .2 >SYSCALL fclose .2 pla plp rts *-------------------------------------- FILE.Save.ASM clc rts *-------------------------------------- FILE.GetBuffer >LDA.G STATBUF+S.STAT.SIZE+3 dey ora (pData),y bne .9 dey lda (pData),y Size HI inc inc ldy #0 Size LO >STYA BufLen >SYSCALL GetMem bcs .99 >STYA BufPtr >STYA.G BufBase txa >STA.G hBuf lda #0 sta (BufPtr) rts .9 lda #E.FTB sec .99 rts *-------------------------------------- MAN SAVE USR/SRC/BIN/EDIT.S.FILE LOAD USR/SRC/BIN/EDIT.S ASM