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 >LDYAI 256 >SYSCALL GetMem bcs .9 >STYA ZPPTR1 stx TmpByte >LDA.G STATBUF+S.STAT.P.TYPE cmp #S.FI.T.TXT bne .2 jsr FILE.Load.TXT bra .8 .2 cmp #$FA S-C/ASM? beq .3 lda #MLI.E.INCFF sec rts .3 jsr FILE.Load.ASM .8 php pha lda TmpByte >SYSCALL freemem pla plp .9 rts *-------------------------------------- FILE.Load.TXT stz FileLen stz FileLen+1 jsr SCRN.Home stz TmpIndex hFile >STZ.G FileType ldx #S.FI.T.TXT jsr FILE.OpenTypeX 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 stz FileLen stz FileLen+1 lda #4 >STA.G FileType lda #8 jsr FILE.GetBufferA 2k buffer bcs .9 ldx #$FA jsr FILE.OpenTypeX bcs .99 sta TmpIndex .1 >PUSHWI 3 >PUSHW ZPPTR1 lda TmpIndex >SYSCALL fread bcs .7 lda #0 >PUSHA lda (ZPPTR1) dec dec dec >PUSHA >PUSHW ZPPTR1 lda TmpIndex >SYSCALL fread bcs .7 jsr FILE.Load.ASM.Decode bcc .1 .7 cmp #MLI.E.EOF bne .9 lda #0 sta (BufPtr) clc .HS B0 BCS .9 sec jmp FILE.Close .99 rts *-------------------------------------- FILE.Load.ASM.Decode ldy #0 .1 lda (ZPPtr1),y beq .8 iny tax bmi .2 jsr FILE.Load.ASM.2Buf bcc .1 .9 rts .2 cmp #$C0 REPEAT char? bne .5 lda (ZPPtr1),y Get Repeat Count iny tax lda (ZPPtr1),y Get Repeat Char iny .4 jsr FILE.Load.ASM.2Buf bcs .9 dex bne .4 bra .1 .5 and #$3F Compute blank count tax lda #C.SPACE .6 jsr FILE.Load.ASM.2Buf bcs .9 dex bne .6 bra .1 .8 lda #C.CR *-------------------------------------- FILE.Load.ASM.2Buf phy phx sta (BufPtr) inc BufPtr bne .1 inc BufPtr+1 .1 inc FileLen bne .8 inc FileLen+1 lda FileLen+1 cmp BufLen+1 bne .8 jsr BUF.BufPtr.Realloc bcs .9 >LDA.G BufBase * clc adc FileLen sta BufPtr iny lda (pData),y adc FileLen+1 sta BufPtr+1 .8 clc .9 plx ply rts *-------------------------------------- FILE.OpenTypeX >PUSHWZ Aux type txa >PUSHA >PUSHBI O.RDONLY >LDA.G hFileName >SYSCALL GetMemPtr >SYSCALL fopen 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 FILE.GetBuffer.9 dey lda (pData),y Size HI inc inc FILE.GetBufferA ldy #0 Size LO >STYA BufLen >SYSCALL GetMem bcs .99 >STYA BufPtr >STYA.G BufBase txa >STA.G hBuf .99 rts FILE.GetBuffer.9 lda #E.FTB sec rts *-------------------------------------- MAN SAVE USR/SRC/BIN/EDIT.S.FILE LOAD USR/SRC/BIN/EDIT.S ASM