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