mirror of
https://github.com/A2osX/A2osX.git
synced 2024-10-09 14:55:05 +00:00
271 lines
4.5 KiB
Plaintext
271 lines
4.5 KiB
Plaintext
|
PR#3
|
|||
|
PREFIX /A2OSX.SRC
|
|||
|
NEW
|
|||
|
INC 1
|
|||
|
AUTO 6
|
|||
|
.LIST OFF
|
|||
|
*---------------------------------------
|
|||
|
FIO.OpenFileA sta hFileName
|
|||
|
>SYSCALL SYS.GetMemPtrA
|
|||
|
>STYA ZPPtr1
|
|||
|
|
|||
|
ldy #1
|
|||
|
lda (ZPPtr1),y
|
|||
|
cmp #'/'
|
|||
|
beq .1
|
|||
|
|
|||
|
>PUSHB hFileName
|
|||
|
ldy #S.PS.hPREFIX
|
|||
|
lda (pPs),y
|
|||
|
>PUSHA
|
|||
|
>SYSCALL SYS.PStrCat
|
|||
|
sta hFileName
|
|||
|
>SYSCALL SYS.GetMemPtrA
|
|||
|
>STYA ZPPtr1
|
|||
|
|
|||
|
.1 >PUSHW ZPPtr1
|
|||
|
>PUSHW L.MSG.SRC.FILE
|
|||
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
cmp #SRC.IN.DEPTH.MAX
|
|||
|
bne .10
|
|||
|
|
|||
|
lda #ERR.SRC.TOO.MANY.IN
|
|||
|
sec
|
|||
|
rts
|
|||
|
|
|||
|
.10 lda hFileName
|
|||
|
>SYSCALL SYS.MLIOpenA
|
|||
|
bcs .99
|
|||
|
|
|||
|
pha
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hREFNUMS
|
|||
|
tay
|
|||
|
pla
|
|||
|
sta (pData),y
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hBUFFERS
|
|||
|
tay
|
|||
|
txa
|
|||
|
sta (pData),y
|
|||
|
|
|||
|
lda hFileName
|
|||
|
>SYSCALL SYS.MLIGetFileInfoA
|
|||
|
bcs .99
|
|||
|
|
|||
|
>STYA ZPQuickPtr1
|
|||
|
ldy #1
|
|||
|
lda (ZPQuickPtr1),y
|
|||
|
tax
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hFILETYPES
|
|||
|
tay
|
|||
|
|
|||
|
txa
|
|||
|
sta (pData),y
|
|||
|
|
|||
|
cmp #$FA S-C/BAS?
|
|||
|
beq .8
|
|||
|
|
|||
|
cmp #$04 TXT ?
|
|||
|
|
|||
|
bne .98
|
|||
|
|
|||
|
>PUSHBI $0D Line separator for TXT file
|
|||
|
>PUSHBI $FF
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hREFNUMS
|
|||
|
tay
|
|||
|
lda (pData),y
|
|||
|
>PUSHA
|
|||
|
>SYSCALL SYS.MLINewLine
|
|||
|
bcs .99
|
|||
|
|
|||
|
.8 ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
inc
|
|||
|
sta (pData),y
|
|||
|
clc
|
|||
|
rts
|
|||
|
|
|||
|
.98 lda #ERR.SRC.INV.TYPE
|
|||
|
|
|||
|
.99 sec
|
|||
|
rts
|
|||
|
*---------------------------------------
|
|||
|
FIO.ReadLine stz SRC.Label.Flags
|
|||
|
stz SRC.BufPtr
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hFILETYPES-1
|
|||
|
tay
|
|||
|
lda (pData),y
|
|||
|
bmi .10
|
|||
|
|
|||
|
>PUSHWI 256
|
|||
|
>PUSHWI TmpBuffer256
|
|||
|
jsr FIO.ReadFromFile
|
|||
|
bcs .19
|
|||
|
|
|||
|
lda #0 replace ending $0D with $00
|
|||
|
sta TmpBuffer256,y
|
|||
|
.19 rts
|
|||
|
|
|||
|
.10 >PUSHWI 3
|
|||
|
>PUSHW L.SRC.Buffer
|
|||
|
jsr FIO.ReadFromFile
|
|||
|
bcs .9
|
|||
|
|
|||
|
lda SRC.Buffer+1
|
|||
|
sta SRC.LINENUM
|
|||
|
lda SRC.Buffer+2
|
|||
|
sta SRC.LINENUM+1
|
|||
|
|
|||
|
lda SRC.Buffer LEN
|
|||
|
sec
|
|||
|
sbc #3
|
|||
|
bcc .9 LEN should be at least 3
|
|||
|
|
|||
|
tay
|
|||
|
lda #0
|
|||
|
>PUSHYA
|
|||
|
>PUSHW L.SRC.BUFFER
|
|||
|
jsr FIO.ReadFromFile
|
|||
|
|
|||
|
ldy #0
|
|||
|
ldx #0
|
|||
|
|
|||
|
.1 lda SRC.Buffer,y
|
|||
|
bmi .2
|
|||
|
|
|||
|
sta TmpBuffer256,x
|
|||
|
beq .8 Ending 00
|
|||
|
inx
|
|||
|
beq .99
|
|||
|
iny
|
|||
|
bne .1
|
|||
|
bra .99
|
|||
|
|
|||
|
.2 cmp #$C0 REPEAT char?
|
|||
|
bne .5
|
|||
|
iny
|
|||
|
beq .99
|
|||
|
lda SRC.Buffer,y
|
|||
|
iny
|
|||
|
beq .99
|
|||
|
.3 pha
|
|||
|
lda SRC.Buffer,y
|
|||
|
sta TmpBuffer256,x
|
|||
|
pla
|
|||
|
inx
|
|||
|
beq .99
|
|||
|
dec
|
|||
|
bne .3
|
|||
|
iny
|
|||
|
bne .1
|
|||
|
bra .99
|
|||
|
|
|||
|
.5 and #$3F Compute blank count
|
|||
|
.6 pha
|
|||
|
lda #$20
|
|||
|
sta TmpBuffer256,x
|
|||
|
pla
|
|||
|
inx
|
|||
|
beq .99
|
|||
|
dec
|
|||
|
bne .6
|
|||
|
iny
|
|||
|
bne .1
|
|||
|
bra .99
|
|||
|
|
|||
|
.8 clc
|
|||
|
.9 rts
|
|||
|
|
|||
|
.99 lda #ERR.LINE.TOO.LONG
|
|||
|
sec
|
|||
|
rts
|
|||
|
*--------------------------------------
|
|||
|
FIO.ReadFromFile ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hREFNUMS-1
|
|||
|
tay
|
|||
|
lda (pData),y
|
|||
|
>PUSHA
|
|||
|
>SYSCALL SYS.MLIRead
|
|||
|
bcs .9
|
|||
|
tax $100 byte transfered ?
|
|||
|
beq .9
|
|||
|
lda #ERR.LINE.TOO.LONG
|
|||
|
sec
|
|||
|
.9 rts
|
|||
|
*---------------------------------------
|
|||
|
FIO.FileClose ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
beq .8
|
|||
|
|
|||
|
clc
|
|||
|
adc #SRC.hREFNUMS-1
|
|||
|
tay
|
|||
|
lda (pData),y
|
|||
|
>SYSCALL SYS.MLICloseA
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
clc
|
|||
|
adc #SRC.hBUFFERS-1
|
|||
|
tay
|
|||
|
lda (pData),y
|
|||
|
>SYSCALL SYS.FreeMemA
|
|||
|
|
|||
|
ldy #SRC.COUNT
|
|||
|
lda (pData),y
|
|||
|
dec
|
|||
|
sta (pData),y
|
|||
|
|
|||
|
.8 clc
|
|||
|
rts
|
|||
|
*---------------------------------------
|
|||
|
LOAD.ASM.T ldy #ASM.T.hMem
|
|||
|
lda (pData),y
|
|||
|
beq .1
|
|||
|
>SYSCALL SYS.FreeMemA
|
|||
|
ldy #ASM.T.hMem
|
|||
|
lda #0
|
|||
|
sta (pData),y
|
|||
|
|
|||
|
.1 >PUSHW L.ASM.T.FILENAME
|
|||
|
>PUSHW L.MSG.T.FILE
|
|||
|
>LIBCALL hLIBSTR,LIBSTR.PRINTF
|
|||
|
|
|||
|
>LDYA L.ASM.T.FILENAME
|
|||
|
>SYSCALL SYS.LoadFileYA
|
|||
|
bcs .9
|
|||
|
|
|||
|
txa
|
|||
|
ldy #ASM.T.hMem
|
|||
|
sta (pData),y
|
|||
|
|
|||
|
.9 rts
|
|||
|
*---------------------------------------
|
|||
|
MAN
|
|||
|
SAVE BIN/ASM.S.FIO
|
|||
|
LOAD BIN/ASM.S
|
|||
|
ASM
|