Work In Progress

This commit is contained in:
Rémy GIBERT 2015-09-16 17:58:06 +02:00
parent 7c787a2c6c
commit cbfa59e2af

View File

@ -15,10 +15,12 @@ AUTO 6
*--------------------------------------- *---------------------------------------
SYM.BLOCK.SIZE .EQ 4096 SYM.BLOCK.SIZE .EQ 4096
SYM.BLOCK.MAX .EQ 8 SYM.BLOCK.MAX .EQ 8
SRC.IN.DEPTH.MAX .EQ 7
*--------------------------------------- *---------------------------------------
ERR.INV.ARGS .EQ 1 ERR.INV.ARGS .EQ 1
ERR.SRC.INV.TYPE .EQ 2 ERR.SRC.INV.TYPE .EQ 2
ERR.SRC.TOO.LONG .EQ 3 ERR.SRC.TOO.LONG .EQ 3
ERR.SRC.TOO.MANY.IN .EQ 4
ERR.SYM.TOO.LARGE .EQ 10 ERR.SYM.TOO.LARGE .EQ 10
*-------------------------------------- *--------------------------------------
* File Header (16 Bytes) * File Header (16 Bytes)
@ -50,13 +52,6 @@ CS.INIT >LDYA L.LIBSTR
>LOADLIBYA >LOADLIBYA
sta hLIBSTR sta hLIBSTR
ldy #VAR.INIT
lda #0
.1 sta (pData),y
iny
cpy #VAR.INIT.END
bne .1
ldy #S.PS.hARGS ldy #S.PS.hARGS
lda (pPs),y lda (pPs),y
bne CS.INIT.ARGS bne CS.INIT.ARGS
@ -156,29 +151,29 @@ CS.DOEVENT ldy #S.EVT.hDEV is Event from active IN device?
.9 sec .9 sec
rts rts
*-------------------------------------- *--------------------------------------
CS.QUIT ldy SRC.INDEX CS.QUIT ldy SRC.COUNT
lda (pData),y lda (pData),y
bmi .8 beq .8
.1 clc .1 clc
adc #SRC.hREFNUMS adc #SRC.hREFNUMS-1
tay tay
lda (pData),y lda (pData),y
>SYSCALL SYS.MLICloseA >SYSCALL SYS.MLICloseA
ldy SRC.INDEX ldy SRC.COUNT
lda (pData),y lda (pData),y
clc clc
adc #SRC.hBUFFERS adc #SRC.hBUFFERS-1
tay tay
lda (pData),y lda (pData),y
>SYSCALL SYS.FreeMemA >SYSCALL SYS.FreeMemA
ldy SRC.INDEX ldy SRC.COUNT
lda (pData),y lda (pData),y
dec dec
sta (pData),y sta (pData),y
bpl .1 bne .1
.8 lda hLIBSTR .8 lda hLIBSTR
>SYSCALL SYS.UnloadLibA >SYSCALL SYS.UnloadLibA
@ -190,21 +185,33 @@ LOAD.ASM.T
rts rts
*--------------------------------------- *---------------------------------------
SRC.OPEN sta hFileName SRC.OPEN sta hFileName
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 >SYSCALL SYS.MLIOpenA
bcs .99 bcs .99
pha pha
ldy #SRC.INDEX ldy #SRC.COUNT
lda (pData),y lda (pData),y
clc clc
adc #SRC.hREFNUMS adc #SRC.hREFNUMS-1
tay tay
pla pla
sta (pData),y sta (pData),y
ldy #SRC.INDEX
ldy #SRC.COUNT
lda (pData),y lda (pData),y
clc clc
adc #SRC.hBUFFERS adc #SRC.hBUFFERS-1
tay tay
txa txa
sta (pData),y sta (pData),y
@ -214,16 +221,14 @@ SRC.OPEN sta hFileName
bcs .99 bcs .99
>STYA ZPQuickPtr1 >STYA ZPQuickPtr1
ldy #1 ldy #SRC.COUNT
lda (ZPQuickPtr1),y
pha
ldy #SRC.INDEX
lda (pData),y lda (pData),y
clc clc
adc #SRC.hFILETYPES adc #SRC.hFILETYPES-1
tay tay
pla
ldy #1
lda (ZPQuickPtr1),y
sta (pData),y sta (pData),y
cmp #$04 TXT? cmp #$04 TXT?
@ -231,14 +236,15 @@ SRC.OPEN sta hFileName
>PUSHBI $0D >PUSHBI $0D
>PUSHBI $FF >PUSHBI $FF
>PUSHB SRC.hREFNUMS >PUSHB hFileName
>SYSCALL SYS.MLINewLine >SYSCALL SYS.MLINewLine
bcs .99 bcs .99
bra .8
.1 cmp #$FA BAS? .1 cmp #$FA BAS?
bne .98 bne .98
ldy #SRC.INDEX .8 ldy #SRC.COUNT
lda (pData),y lda (pData),y
inc inc
sta (pData),y sta (pData),y
@ -250,10 +256,10 @@ SRC.OPEN sta hFileName
.99 sec .99 sec
rts rts
*--------------------------------------- *---------------------------------------
SRC.ReadLine ldy #SRC.INDEX SRC.ReadLine ldy #SRC.COUNT
lda (pData),y lda (pData),y
clc clc
adc #SRC.hFILETYPES adc #SRC.hFILETYPES-1
tay tay
lda (pData),y lda (pData),y
bmi SRC.ReadLine.BIN bmi SRC.ReadLine.BIN
@ -336,10 +342,10 @@ SRC.ReadLine.TXT
*-------------------------------------- *--------------------------------------
SRC.ReadLine.YA >PUSHYA SRC.ReadLine.YA >PUSHYA
>PUSHW L.READ.BUFFER >PUSHW L.READ.BUFFER
ldy #SRC.INDEX ldy #SRC.COUNT
lda (pData),y lda (pData),y
clc clc
adc #SRC.hREFNUMS adc #SRC.hREFNUMS-1
tay tay
lda (pData),y lda (pData),y
>PUSHA >PUSHA
@ -414,14 +420,12 @@ READ.BUFFER .BS 256
.DUMMY .DUMMY
.OR 0 .OR 0
DS.START DS.START
*---------------------------------------
VAR.INIT
bSTOP .BS 1 bSTOP .BS 1
bCANCEL .BS 1 bCANCEL .BS 1
SRC.INDEX .BS 1 SRC.COUNT .BS 1
SRC.hREFNUMS .BS 8 Store ref_num of opened files (Main, .INs & .INBs) SRC.hREFNUMS .BS SRC.IN.DEPTH.MAX Store ref_num of opened files (Main, .INs & .INBs)
SRC.hBUFFERS .BS 8 Store hMem to allocated buffers SRC.hBUFFERS .BS SRC.IN.DEPTH.MAX Store hMem to allocated buffers
SRC.hFILETYPES .BS 8 Store file type of opened SRC files SRC.hFILETYPES .BS SRC.IN.DEPTH.MAX Store file type of opened SRC files
SRC.LINENUM .BS 2 SRC.LINENUM .BS 2
ASM.T.hFILENAME .BS 1 ASM.T.hFILENAME .BS 1
@ -429,7 +433,6 @@ ASM.T.hFILE .BS 1 handle to loaded ASM.T.xxxxx
DST.hFILENAME .BS 1 DST.hFILENAME .BS 1
DST.hREFNUM .BS 1 DST.hREFNUM .BS 1
DST.hBUFFER .BS 1 DST.hBUFFER .BS 1
VAR.INIT.END
*--------------------------------------- *---------------------------------------
ASM.T.FILENAME .BS 65 PStr ProDOS Max Path Len +1 ASM.T.FILENAME .BS 65 PStr ProDOS Max Path Len +1
TARGET.FILENAME .BS 65 PStr ProDOS Max Path Len +1 TARGET.FILENAME .BS 65 PStr ProDOS Max Path Len +1