diff --git a/src/toolsrc/codegen.pla b/src/toolsrc/codegen.pla index 229382e..2e297d2 100644 --- a/src/toolsrc/codegen.pla +++ b/src/toolsrc/codegen.pla @@ -565,8 +565,9 @@ def init_idglobal#0 dfd_num = DFDNUM/2 tag_num = TAGNUM/2 fixup_num = FIXUPNUM/2 - globalbufsz = IDGLOBALSZ + globalbufsz = IDGLOBALSZ/2 localbufsz = IDLOCALSZ/2 + inbuff_len = MAX_INPUT_LEN/2 fin // //Init free op sequence list diff --git a/src/toolsrc/lex.pla b/src/toolsrc/lex.pla index e6f9e60..877a631 100644 --- a/src/toolsrc/lex.pla +++ b/src/toolsrc/lex.pla @@ -340,14 +340,14 @@ def nextln fin if token == CNT_TKN inptr = scanptr - inlen = MAX_INPUT_LEN - (inptr - inbuff) + inlen = inbuff_len - (inptr - inbuff) if inlen <= 0 puts("Input "); exit_err(ERR_OVER) fin else scanptr = inbuff inptr = inbuff - inlen = MAX_INPUT_LEN + inlen = inbuff_len fin inlen = fileio:read(refnum, inptr, inlen) if inlen diff --git a/src/toolsrc/plasm.pla b/src/toolsrc/plasm.pla index 7257972..14e5e12 100755 --- a/src/toolsrc/plasm.pla +++ b/src/toolsrc/plasm.pla @@ -284,10 +284,10 @@ word srcline // Saved source line number // // Scanner variables // -const MAX_INPUT_LEN = 1024 -word inbuff +const MAX_INPUT_LEN = 1024 +word inbuff, inbuff_len = MAX_INPUT_LEN word scanptr -byte token = EOL_TKN +byte token = EOL_TKN byte scanchr, tknlen word tknptr, parserrln word constval @@ -582,7 +582,8 @@ if srcfile and relfile refnum = srcref parsefile = @srcfile strconstbuff = heapalloc(80) - inbuff = heapalloc(MAX_INPUT_LEN) + if isult(heapavail, $6000); inbuff_len = MAX_INPUT_LEN/2; fin + inbuff = heapalloc(inbuff_len) scanptr = inbuff ^inbuff = NULL exit = heapalloc(t_except)