A2osX/BIN/EDIT.S.FILE.txt

203 lines
3.1 KiB
Plaintext
Raw Normal View History

2019-11-06 13:14:42 +00:00
NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
2019-11-12 16:39:22 +00:00
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
2019-11-06 13:14:42 +00:00
stz FileLen+1
2019-11-12 16:39:22 +00:00
.9 rts
2019-11-06 13:14:42 +00:00
*--------------------------------------
2019-11-12 16:39:22 +00:00
FILE.Load jsr BUF.ResetSel
>PUSHEA.G STATBUF
2019-11-06 13:14:42 +00:00
>LDA.G hFileName
>SYSCALL GetMemPtr
2019-11-06 16:25:00 +00:00
>SYSCALL stat
2019-11-12 16:39:22 +00:00
bcs FILE.New
2019-11-06 13:14:42 +00:00
>LDA.G STATBUF+S.STAT.P.TYPE
cmp #S.FI.T.TXT
2019-11-12 16:39:22 +00:00
beq FILE.Load.TXT
2019-11-06 13:14:42 +00:00
cmp #$FA S-C/ASM?
2019-11-12 16:39:22 +00:00
bne .9
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
jmp FILE.Load.ASM
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
.9 lda #MLI.E.INCFF
2019-11-06 13:14:42 +00:00
sec
rts
2019-11-12 16:39:22 +00:00
*--------------------------------------
FILE.Load.TXT stz FileLen
stz FileLen+1
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
stz TmpByte hLineBuffer
stz TmpIndex hFile
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
>STZ.G FileType
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
jsr FILE.GetBuffer
bcs .99
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
>LDYA 256
>SYSCALL GetMem
bcs .99
2019-11-06 13:14:42 +00:00
2019-11-12 16:39:22 +00:00
>STYA ZPPTR1
stx TmpByte
2019-11-06 16:25:00 +00:00
2019-11-12 16:39:22 +00:00
>PUSHWZ Aux type
2019-11-06 16:25:00 +00:00
>PUSHBI S.FI.T.TXT
>PUSHBI O.RDONLY+O.TEXT
>LDA.G hFileName
>SYSCALL GetMemPtr
>SYSCALL fopen
2019-11-12 16:39:22 +00:00
.99 bcs .9
2019-11-06 16:25:00 +00:00
2019-11-12 16:39:22 +00:00
sta TmpIndex
.1 >PUSHWI 254
>PUSHW ZPPTR1
lda TmpIndex
>SYSCALL fread
bcs .8
lda #0
sta (ZPPTR1),y Y = line len
2019-11-06 16:25:00 +00:00
2019-11-12 16:39:22 +00:00
lda (ZPPTR1)
clc
eor #C.LF
bne .2
2019-11-06 16:25:00 +00:00
2019-11-12 16:39:22 +00:00
lda #2
>STA.G FileType
sec
2019-11-06 16:25:00 +00:00
2019-11-12 16:39:22 +00:00
.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
2019-11-06 13:14:42 +00:00
*--------------------------------------
2019-11-12 16:39:22 +00:00
FILE.Load.ASM
2019-11-06 13:14:42 +00:00
lda #MLI.E.INCFF
sec
rts
*--------------------------------------
2019-11-12 16:39:22 +00:00
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
2019-11-06 13:14:42 +00:00
>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
*--------------------------------------
2019-11-12 16:39:22 +00:00
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
2019-11-06 13:14:42 +00:00
*--------------------------------------
MAN
SAVE USR/SRC/BIN/EDIT.S.FILE
LOAD USR/SRC/BIN/EDIT.S
ASM