diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 7ab7d4e2..d6770b4f 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/CC.S.CODE.txt b/BIN/CC.S.CODE.txt index e050c51f..08c3a134 100644 --- a/BIN/CC.S.CODE.txt +++ b/BIN/CC.S.CODE.txt @@ -1,10 +1,7 @@ NEW AUTO 3,1 *-------------------------------------- -CODE.Init stz ZPCCConst - stz ZPCCConst+1 - - >STZ.G CC.bInitCode +CODE.Init >STZ.G CC.bInitCode >STA.G CC.ScopeID iny @@ -13,9 +10,6 @@ CODE.Init stz ZPCCConst >LDYAI PCC.FH.CS >STYA ZPCCCode - >LDYAI 20 char *ARGV[10] - >STYA ZPCCData - ldy #SCOPE-1 lda #0 @@ -23,6 +17,52 @@ CODE.Init stz ZPCCConst dey bpl .1 + stz ZPCCConst + stz ZPCCConst+1 + + jsr CODE.DSSelect + bcs .99 + + stz ArgIndex + +.2 lda ArgIndex + >CMP.G LibCount + beq .8 + + clc + adc #hLibNs + tay + lda (pData),y + >SYSCALL ArgV + >STYA ZPPtr1 + + ldy #0 + +.3 lda (ZPPtr1),y + beq .4 + + jsr CODE.EmitDATA + bcs .99 + + iny + bne .3 + +.4 jsr CODE.EmitDATA \0 + bcs .99 + + inc ArgIndex + bra .2 + +.8 lda #0 + jsr CODE.EmitDATA \0 + bcs .99 + + jsr CODE.CSSelect + bcs .99 + + >LDYAI 20 char *ARGV[10] + >STYA ZPCCData + clc .99 rts *-------------------------------------- @@ -287,47 +327,13 @@ CODE.EmitDATA clc .8 rts CC/CS from fputc *-------------------------------------- -CODE.EmitTail jsr CODE.DSSelect - bcs .99 - - stz ArgIndex - -.1 lda ArgIndex - >CMP.G LibCount - beq .8 - - clc - adc #hLibNs - tay - lda (pData),y - pha - - >PUSHB.G CC.hOutFile - pla - >SYSCALL ArgV - >PUSHYA - >SYSCALL fputs - bcs .99 - - jsr .8 - bcs .99 - - inc ArgIndex - bra .1 - -.8 >PUSHB.G CC.hOutFile - lda #0 - >PUSHA - >SYSCALL fputc - -.99 rts -*-------------------------------------- CODE.CSSelect clc bit bPass2 bpl .8 >PUSHB.G CC.hOutFile >PUSHWZ + >DEBUG lda ZPCCCode+1 sec sbc #$20 @@ -345,12 +351,14 @@ CODE.DSSelect clc >PUSHB.G CC.hOutFile >PUSHWZ - lda ZPCCConst + >DEBUG + lda PCC.FH+PCC.FH.CONST clc - adc PCC.FH+PCC.FH.CONST + adc ZPCCConst tay - lda ZPCCConst+1 - adc PCC.FH+PCC.FH.CONST+1 + + lda PCC.FH+PCC.FH.CONST+1 + adc ZPCCConst+1 sec sbc #$20 diff --git a/BIN/CC.S.FIO.txt b/BIN/CC.S.FIO.txt index 36c65a7e..67fd8ee5 100644 --- a/BIN/CC.S.FIO.txt +++ b/BIN/CC.S.FIO.txt @@ -158,23 +158,16 @@ FIO.FClose >LDA.G hFilePtr .8 rts *-------------------------------------- -FIO.FCreate lda ZPCCCode+1 +FIO.FCreate lda ZPCCCode + sta PCC.FH+PCC.FH.CONST + sta PCC.FH+PCC.FH.CSSIZE + + lda ZPCCCode+1 sta PCC.FH+PCC.FH.CONST+1 sec sbc #$20 sta PCC.FH+PCC.FH.CSSIZE+1 - lda ZPCCCode - sta PCC.FH+PCC.FH.CSSIZE - sta PCC.FH+PCC.FH.CONST - clc - adc ZPCCConst - sta PCC.FH+PCC.FH.LIBS - - lda ZPCCCode+1 - adc ZPCCConst+1 - sta PCC.FH+PCC.FH.LIBS+1 - lda ZPCCData sta PCC.FH+PCC.FH.DSSIZE diff --git a/BIN/CC.S.KW.txt b/BIN/CC.S.KW.txt index 4e918752..5edb3ad5 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -634,7 +634,13 @@ KW.CONTINUE lda #'C' sec .99 rts *-------------------------------------- -KW.RETURN lda #'R' +KW.RETURN jsr CC.GetCharNB + bcs .9 + + cmp #';' + beq .1 + + lda #'R' jsr SYM.LookupLabelA Y,A=T/Q bcs .99 @@ -647,13 +653,15 @@ KW.RETURN lda #'R' jsr CODE.SetRetValue bcs .99 - lda #'X' +.1 lda #'X' jsr SYM.LookupLabelA bcs .99 lda #$4C emit JMP exit jmp CODE.TOABSYX +.9 lda #E.CSYN + sec .99 rts *-------------------------------------- KW.SIZEOF diff --git a/BIN/CC.S.PCC.txt b/BIN/CC.S.PCC.txt index 180902f7..93076309 100644 --- a/BIN/CC.S.PCC.txt +++ b/BIN/CC.S.PCC.txt @@ -27,13 +27,11 @@ PCC.FH.JMP .DA PCC.FH.INIT .DA PCC.FH.QUIT PCC.FH.CONST .EQ *-PCC.FH.ORG .DA $FFFF -PCC.FH.LIBS .EQ *-PCC.FH.ORG - .DA $FFFF .DA 0 -PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.LIBS +PCC.FH.INIT >LDYA PCC.FH.ORG+PCC.FH.CONST >STYA ZS.RT.Ptr1 - + >DEBUG ldx #0 .1 lda (ZS.RT.Ptr1) @@ -131,7 +129,6 @@ PCC.FH.RUN lda #0 bra .1 .2 pla - jsr PCC.FH.CS Execute INIT code lda #0 diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index c7180223..d0baa2ea 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -420,9 +420,6 @@ CS.RUN.CLOOP jsr CORE.CompileFile jsr FIO.FClose bne .2 - - jsr CODE.EmitTail - bcs .9 *-------------------------------------- >LDYA L.MSG.ALLDONE >SYSCALL PutS diff --git a/ROOT/ctest/testargs.c.txt b/ROOT/ctest/testargs.c.txt index 240f6302..c978cc53 100644 --- a/ROOT/ctest/testargs.c.txt +++ b/ROOT/ctest/testargs.c.txt @@ -19,6 +19,7 @@ int testf2() { void testf3(char *msg) { puts(msg); + return; } int testf4(int arg1, int arg2) {