A2osX/BIN/EDIT.S.FILE.txt
2019-11-12 17:39:22 +01:00

203 lines
3.1 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 >LDYAI 4096
>STYA BufLen
>SYSCALL GetMem
bcs .9
>STYA BufPtr
txa
>STA.G hBuffer FileLen already set to 0
lda #0
sta (BufPtr)
stz FileLen
stz FileLen+1
.9 rts
*--------------------------------------
FILE.Load jsr BUF.ResetSel
>PUSHEA.G STATBUF
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL stat
bcs FILE.New
>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
stz TmpByte hLineBuffer
stz TmpIndex hFile
>STZ.G FileType
jsr FILE.GetBuffer
bcs .99
>LDYA 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 .8
lda #0
sta (ZPPTR1),y Y = line len
lda (ZPPTR1)
clc
eor #C.LF
bne .2
lda #2
>STA.G FileType
sec
.2 lda ZPPTR1
adc #0
tay
lda ZPPTR1+1
adc #0
>PUSHYA
>LDYA BufPtr
>SYSCALL strcat
bra .1
.8 cmp #MLI.E.EOF
bne .9
>LDYA BufPtr
>SYSCALL strlen
>STYA FileLen
clc
.9 jmp FILE.Load.Cleanup
*--------------------------------------
FILE.Load.ASM
lda #MLI.E.INCFF
sec
rts
*--------------------------------------
FILE.Load.Cleanup
php
pha
lda TmpByte
beq .1
>SYSCALL freemem
.1 lda TmpIndex
beq .2
>SYSCALL fclose
.2 pla
plp
rts
*--------------------------------------
FILE.Save >PUSHWZ Aux type
>PUSHBI S.FI.T.TXT
>PUSHBI O.CREATE+O.WRONLY
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL FOpen
bcs .9
pha
>PUSHW FileLen
>LDA.G hBuffer
>SYSCALL GetMemPtr
>PUSHYA
pla
pha
>SYSCALL FWrite
bcc .1
tax
pla
phx
>SYSCALL FClose
pla
sec
rts
.1 pla
>SYSCALL FClose
lda #$80
>STA.G bSaved
jsr SCRN.UpdateTopBar
.9 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
txa
>STA.G hBuffer
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