A2osX/BIN/EDIT.S.FILE.txt
2020-01-23 15:48:22 +01:00

288 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 4096
>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
jsr FILE.GetBuffer
bcs .99
>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
.99 bcs .9
sta TmpIndex
.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
cmp #16
bcs .1
lda #13 Min = 3k
.1 adc #3 1K more
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