diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d5faf67f..ee6b9501 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 0cee82b0..e050c51f 100644 --- a/BIN/CC.S.CODE.txt +++ b/BIN/CC.S.CODE.txt @@ -18,7 +18,7 @@ CODE.Init stz ZPCCConst ldy #SCOPE-1 lda #0 - + .1 sta (ScopeStk),y reset initial Scope ID, LocalPtr, FrameSize dey bpl .1 @@ -58,12 +58,12 @@ CODE.PUSHAXI pha txa jsr CODE.PUSHI bcs CODE.LDAXI.RTS - + pla *-------------------------------------- CODE.PUSHI jsr CODE.LDAI bcs CODE.LDAXI.RTS - + bra CODE.PUSHA *-------------------------------------- CODE.LDYAI pha @@ -71,15 +71,15 @@ CODE.LDYAI pha lda #$A0 LDY #imm jsr CODE.EmitByte bcs CODE.LDAXI.RTS - + tya jsr CODE.EmitByte bcs CODE.LDAXI.RTS - + lda #$A9 LDA #imm jsr CODE.EmitByte bcs CODE.LDAXI.RTS - + pla jmp CODE.EmitByte @@ -151,23 +151,23 @@ CODE.INCPSTACK lda #$E6 INC zp *-------------------------------------- CODE.SYSCALL jsr CODE.LDXI bcs .9 - + lda #$20 JSR ldx #A2osX.SYSCALL ldy /A2osX.SYSCALL bra CODE.TOABSYX - -.9 rts + +.9 rts *-------------------------------------- CODE.FPUCALL jsr CODE.LDXI bcs .9 - + lda #$20 JSR ldx #A2osX.FPUCALL ldy /A2osX.FPUCALL bra CODE.TOABSYX -.9 rts +.9 rts *-------------------------------------- CODE.LIBCALL jsr CODE.LDXI bcs .9 @@ -187,7 +187,7 @@ CODE.LIBCALL jsr CODE.LDXI lda #$20 JSR bra CODE.TOABSYX -.9 rts +.9 rts *-------------------------------------- CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR ..... bcs .9 @@ -199,7 +199,7 @@ CODE.TOABSYX jsr CODE.EmitByte A=opcode : JMP, JSR ..... tya bra CODE.EmitByte -.9 rts +.9 rts *-------------------------------------- CODE.DEBUG >LDYA L.PCC.DEBUG *-------------------------------------- @@ -208,7 +208,7 @@ CODE.EmitPCC >STYA ZPLookupPtr lda (ZPLookupPtr) tax dex - + ldy #1 .1 lda (ZPLookupPtr),y @@ -230,16 +230,16 @@ CODE.EmitByte clc if Pass 1... pha .DO _DBG_OUT=1 - + lda ZPCCCode and #$1F bne .11 - + >PUSHW L.MSG.DEBUG.CSOUT >PUSHW ZPCCCode >PUSHBI 2 >SYSCALL PrintF - + .11 >PUSHW L.MSG.DEBUG.OUT pla pha @@ -248,7 +248,7 @@ CODE.EmitByte clc if Pass 1... >SYSCALL PrintF .FIN - + >PUSHB.G CC.hOutFile pla @@ -289,37 +289,37 @@ CODE.EmitDATA clc *-------------------------------------- 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 diff --git a/BIN/CC.S.CORE.txt b/BIN/CC.S.CORE.txt index 06630239..d5eef598 100644 --- a/BIN/CC.S.CORE.txt +++ b/BIN/CC.S.CORE.txt @@ -18,7 +18,7 @@ CORE.Init lda #SL._ bcs .9 >STA.G CC.hSyms - + >LDYAI 256 >SYSCALL GetMem bcs .9 @@ -34,7 +34,7 @@ CORE.Init lda #SL._ >STYA ScopeStk txa >STA.G CC.hScopeStk - + >LDYAI 256 >SYSCALL GetMem bcs .9 @@ -82,7 +82,7 @@ CORE.Quit jsr FIO.FClose >LDA.G CC.hScopeStk jsr .7 - + >LDA.G CC.hStmtStk .7 beq .8 @@ -118,7 +118,7 @@ CORE.CompileFile *-------------------------------------- CORE.CompileLine jsr CC.GetCharNB - bcs .9 + bcs .99 cmp #C.CR EOL.... beq .8 @@ -132,37 +132,49 @@ CORE.CompileLine bne .2 comments ... jmp CORE.Comments - +*-------------------------------------- .2 cmp #'}' End of CPStmt ? + beq .5 + + jsr CORE.CompileStmt + bcs .99 + + jsr CC.GetCharNB + bcs .98 + + cmp #'{' bne .3 - jsr CORE.GetNCharNBNL Skip '}' - - jsr STMT.CPStmt.END - bcs .9 - - jsr CORE.GetCharNBNL + jsr CORE.GetNCharNBNL Skip '{' bcc CORE.CompileLine - - rts -*-------------------------------------- + .3 cmp #';' End of Stmt ? bne .4 jsr CORE.GetNCharNBNL Skip ';' jsr STMT.Stmt.END - bcs .9 + bcs .99 - bra CORE.CompileLine + jsr CC.GetCharNB -.4 jsr CORE.CompileStmt - bcs .9 +.4 cmp #'}' End of CPStmt ? + bne CORE.CompileLine - bra CORE.CompileLine +.5 jsr CORE.GetNCharNBNL Skip '}' + + jsr STMT.CPStmt.END + bcs .99 + + jsr CC.GetCharNB + bcc .3 + +.98 lda #E.CSYN + sec +.99 rts .8 clc -.9 rts + rts *-------------------------------------- * keyword : for, while .... *-------------------------------------- @@ -199,11 +211,26 @@ CORE.CompileStmt *-------------------------------------- CORE.Comments jsr CC.GetNextChar TODO : /* ... */ cmp #'/' - bne .90 + beq CORE.SkipLine // skip line..... + + cmp #'*' + bne .9 /* .... + +.1 jsr CORE.GetNCharNBNL + bcs .9 + + cmp #'*' ....*/ + bne .1 - jmp CORE.SkipLine skip line..... + jsr CC.GetNextChar + bcs .9 -.90 lda #E.CSYN + cmp #'/' + bne .1 + + jmp CC.GetNextChar + +.9 lda #E.CSYN sec rts *-------------------------------------- @@ -418,10 +445,16 @@ CORE.GetCharNBNL jsr FIO.FGetS bcc CORE.GetCharNBNL - + rts *-------------------------------------- CORE.GetNCharNBNL + jsr CC.GetChar + bcs .9 + + cmp #C.CR + beq .1 + jsr CORE.GetNCharNB bcs .9 @@ -429,7 +462,7 @@ CORE.GetNCharNBNL clc bne .9 - jsr FIO.FGetS +.1 jsr FIO.FGetS bcc CORE.GetCharNBNL .9 rts diff --git a/BIN/CC.S.DECL.txt b/BIN/CC.S.DECL.txt index 3736631c..ea6b6202 100644 --- a/BIN/CC.S.DECL.txt +++ b/BIN/CC.S.DECL.txt @@ -15,10 +15,10 @@ DECL.TYPEDEF jsr CORE.GetNCharNB >LDYA L.CC.TYPEQUAL jsr CC.LookupID bcs .98 - + cpx #4 no const nor volatile bcc .98 - + jsr TYPE.GetTQInYA bcs .99 @@ -26,15 +26,15 @@ DECL.TYPEDEF jsr CORE.GetNCharNB sec Reset Buffer jsr SYM.New Y,A=T/Q,storage class TYPEDEF bcs .99 - + jsr CC.GetCharNB bcs .98 - + cmp #';' bne .98 - + jsr CORE.GetNCharNB skip ';' - + jmp SYM.Store .98 lda #E.CSYN @@ -45,20 +45,20 @@ DECL.TYPEDEF jsr CORE.GetNCharNB *-------------------------------------- DECL.X jsr TYPE.GetTQInYA bcs .99 - + cpy #SYM.T.SU bne .7 tax save Q jsr CC.GetCharNB bcs .98 - + cmp #';' from a tag def beq .8 jsr CC.IsLetter bcs .98 - + .1 clc reuse buffer ldy #SYM.T.SU txa restore Q @@ -79,11 +79,11 @@ DECL.X jsr TYPE.GetTQInYA bne .98 .8 clc - rts + rts .98 lda #E.CSYN sec -.99 rts +.99 rts .7 sec Reset Buffer *-------------------------------------- @@ -99,14 +99,14 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual jsr SYM.GetTQInYA Y,A = T/Q bit #SYM.Q.FUNC - bne .8 + bne .8 jsr CC.GetCharNB bcs .98 cmp #';' no initializer...store SYM beq .28 - + cmp #'=' type var = value ? bne .98 @@ -119,7 +119,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual jsr SYM.GetAddr1 bcs .99 - + jsr SYM.GetTQInYA Y,A = T/Q jsr SYM.PopValue Set value to this var .29 bcs .99 @@ -130,7 +130,7 @@ DECL.YAC ldx #SYM.SC.STATIC Y,A = Type/Qual jsr CC.GetCharNB cmp #';' bne .98 - + .8 clc rts diff --git a/BIN/CC.S.DIR.txt b/BIN/CC.S.DIR.txt index 61ccc4da..306e5461 100644 --- a/BIN/CC.S.DIR.txt +++ b/BIN/CC.S.DIR.txt @@ -17,7 +17,7 @@ DIR jsr CORE.GetNCharNB DIR.DEFINE clc bit bPass2 bmi .8 - + jsr CC.CheckSpace bcs .99 @@ -84,7 +84,7 @@ DIR.INCLUDE lda #0 >STZ.G PathBuf >PUSHW pData >PUSHEA.G PathBuf >SYSCALL GetEnv bcs .90 - + lda #'>' .1 sta ArgIndex @@ -116,7 +116,7 @@ DIR.INCLUDE lda #0 >STZ.G PathBuf lda #0 sta (pData),y terminate string - + >LDYA pData jmp FIO.FOpen *-------------------------------------- diff --git a/BIN/CC.S.EXP.txt b/BIN/CC.S.EXP.txt index db150d66..ea79b56e 100644 --- a/BIN/CC.S.EXP.txt +++ b/BIN/CC.S.EXP.txt @@ -288,7 +288,7 @@ EXP.GetIntegral jsr CC.GetCharNB bne .9 jsr CORE.GetNCharNB skip ' - + lda #0 Y,A = integral clc diff --git a/BIN/CC.S.F.txt b/BIN/CC.S.F.txt index d1d2d705..24eb38f4 100644 --- a/BIN/CC.S.F.txt +++ b/BIN/CC.S.F.txt @@ -3,7 +3,7 @@ NEW *-------------------------------------- F.Decl jsr SCOPE.New bcs .99 - + lda (ZPSymBufPtr) #SYM.T pha @@ -14,7 +14,7 @@ F.Decl jsr SCOPE.New ply cpy #SYM.T.VOID bne .10 - + tax beq .11 function is void @@ -47,7 +47,7 @@ F.Decl jsr SCOPE.New jsr F.NewArg will update LocalPtr,FrameSize bcs .99 - + .2 jsr CC.GetCharNB bcs .9 @@ -66,7 +66,7 @@ F.Decl jsr SCOPE.New *-------------------------------------- .5 jsr CC.GetCharNB bcs .9 - + cmp #')' bne .9 @@ -85,7 +85,7 @@ F.Decl jsr SCOPE.New jsr SYM.Update Store this declaration & exit bcs .99 - jsr CORE.GetNCharNBNL Skip ';' +* jsr CORE.GetNCharNBNL Skip ';' clc no error even if EOF rts @@ -146,7 +146,7 @@ F.Def >LDA.G CC.bInitCode F.Def.END lda #'X' define EXIT Label jsr SYM.NewLabelA bcs .9 - + jsr STMT.Close bcs .9 @@ -156,7 +156,7 @@ F.Def.END lda #'X' define EXIT Label jsr SCOPE.Close bcs .9 - + .9 rts *-------------------------------------- F.DeclGetTQ lda (ZPLineBufPtr) @@ -253,12 +253,12 @@ F.CallRetV sec ror ZPPtr1+1 bRetV bpl .1 - + jsr EXP.GetYASizeOfInAX txa jsr CODE.AddLocal bcc .1 - + rts .1 jsr CORE.GetNCharNB skip '(' diff --git a/BIN/CC.S.FIO.txt b/BIN/CC.S.FIO.txt index c836492c..36c65a7e 100644 --- a/BIN/CC.S.FIO.txt +++ b/BIN/CC.S.FIO.txt @@ -4,7 +4,7 @@ NEW FIO.LoadLIB.o >LDA.G LibCount cmp #LIBS.MAX bne .1 - + lda #E.OOH sec .9 rts @@ -12,7 +12,7 @@ FIO.LoadLIB.o >LDA.G LibCount .1 clc adc #hLibNs tay - + lda ArgIndex sta (pData),y @@ -20,18 +20,18 @@ FIO.LoadLIB.o >LDA.G LibCount >PUSHW pData >PUSHEA.G PathBuf >SYSCALL GetEnv bcs .9 - + >PUSHW pData - + lda ArgIndex >SYSCALL ArgV >PUSHYA >SYSCALL strcat - + >PUSHW pData >PUSHW L.LIB.O >SYSCALL strcat - + >PUSHW L.MSG.READING >PUSHW pData >PUSHBI 2 @@ -43,14 +43,14 @@ FIO.LoadLIB.o >LDA.G LibCount >PUSHWZ Aux type >SYSCALL loadfile bcs .99 - + >LDA.G LibCount clc adc #hLibOs tay txa sta (pData),y - + >INC.G LibCount clc @@ -163,18 +163,18 @@ FIO.FCreate lda ZPCCCode+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 2852c9a0..ad4b29c2 100644 --- a/BIN/CC.S.KW.txt +++ b/BIN/CC.S.KW.txt @@ -3,7 +3,7 @@ NEW *-------------------------------------- * Built in Keywords *-------------------------------------- -KW.IF jsr SCOPE.New +KW.IF jsr SCOPE.New IF { bcs .99 jsr CC.GetCharNB @@ -54,7 +54,7 @@ KW.IF.END jsr STMT.Close jsr SYM.NewLabelA bcs .99 - jmp SCOPE.Close + jmp SCOPE.Close } IF *-------------------------------------- .2 lda #'X' jsr SYM.LookupLabelA @@ -91,7 +91,7 @@ KW.ELSE.END jsr STMT.Close jsr SYM.NewLabelA bcs .99 - jmp SCOPE.Close + jmp SCOPE.Close } IF .99 rts *-------------------------------------- @@ -168,6 +168,10 @@ KW.DO jsr SCOPE.New jsr SYM.NewLabelA bcs .99 + >LDYA L.PCC.SLEEP + jsr CODE.EmitPCC + bcs .99 + jsr STMT.New00 bcs .99 @@ -248,7 +252,7 @@ KW.FOR jsr CC.GetCharNB jsr CORE.GetNCharNB skip '(' bcs .29 - jsr SCOPE.New + jsr SCOPE.New for ( bcs .19 >LDYA L.CC.TYPEQUAL @@ -342,7 +346,11 @@ KW.FOR jsr CC.GetCharNB sec .99 rts *-------------------------------------- -KW.FOR.END lda #$60 +KW.FOR.END >LDYA L.PCC.SLEEP + jsr CODE.EmitPCC + bcs .99 + + lda #$60 jsr CODE.EmitByte set RTS for JSR code; bcs .99 @@ -354,7 +362,7 @@ KW.FOR.END lda #$60 jsr SYM.NewLabelA bcs .99 - jmp SCOPE.Close FOR () + jmp SCOPE.Close FOR ) .99 rts *-------------------------------------- diff --git a/BIN/CC.S.LINK.txt b/BIN/CC.S.LINK.txt index 349ddb98..0b953a95 100644 --- a/BIN/CC.S.LINK.txt +++ b/BIN/CC.S.LINK.txt @@ -55,9 +55,9 @@ CC.Link >LDYA L.MSG.LINKING .9 >LDA.G bVerbose bmi .90 - + jsr CC.Link.Dump - + .90 lda #E.FUNDEF sec .99 rts @@ -183,7 +183,7 @@ CC.Link.Dump ldy #$ff .1 iny lda (pData),y bne .1 - + iny lda (pData),y sta ZPPtr3 diff --git a/BIN/CC.S.SCOPE.txt b/BIN/CC.S.SCOPE.txt index bdc3950e..8e34ca77 100644 --- a/BIN/CC.S.SCOPE.txt +++ b/BIN/CC.S.SCOPE.txt @@ -10,7 +10,7 @@ SCOPE.New lda ScopePtr sta ScopePtr dec bLocalScope - + iny iny #SCOPE.LocalPtr lda (ScopeStk),y @@ -24,23 +24,23 @@ SCOPE.New lda ScopePtr iny lda (pData),y adc #0 - + ldy ScopePtr iny sta (ScopeStk),y #SCOPE.ID Hi txa dey sta (ScopeStk),y #SCOPE.ID Lo - + iny iny pla sta (ScopeStk),y #SCOPE.LocalPtr - + iny lda #0 sta (ScopeStk),y #SCOPE.FrameSize - + lda #'F' jsr SYM.LookupLabelA bcs .99 @@ -49,21 +49,21 @@ SCOPE.New lda ScopePtr jsr CODE.AddLocal bcs .99 - + .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SCIN jsr SCOPE.Push - + lda ScopePtr >PUSHA - + tay iny iny >PUSHB (ScopeStk),y iny >PUSHB (ScopeStk),y - + >PUSHBI 5 >SYSCALL PrintF * >DEBUG @@ -74,28 +74,28 @@ SCOPE.New lda ScopePtr .9 lda #E.OOH sec -.99 +.99 SCOPE.New.RTS rts *-------------------------------------- SCOPE.Close lda #'F' define FRAME SIZE jsr SYM.NewLabelA bcs SCOPE.New.RTS - + ldy ScopePtr iny iny iny lda (ScopeStk),y #SCOPE.FrameSize - + jsr CODE.RemLocal bcs SCOPE.New.RTS - + .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SCOUT jsr SCOPE.Push lda ScopePtr >PUSHA - + tay iny iny @@ -106,7 +106,7 @@ SCOPE.Close lda #'F' define FRAME SIZE >PUSHBI 5 >SYSCALL PrintF .FIN - + lda ScopePtr beq * @@ -119,10 +119,10 @@ SCOPE.Close lda #'F' define FRAME SIZE .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SC jsr SCOPE.Push - + lda ScopePtr >PUSHA - + tay iny iny @@ -134,7 +134,7 @@ SCOPE.Close lda #'F' define FRAME SIZE >SYSCALL PrintF * >DEBUG .FIN - + clc .99 rts diff --git a/BIN/CC.S.STMT.txt b/BIN/CC.S.STMT.txt index 790f19d7..fda36279 100644 --- a/BIN/CC.S.STMT.txt +++ b/BIN/CC.S.STMT.txt @@ -123,28 +123,33 @@ STMT.SetVar stz ExpState *-------------------------------------- STMT.Stmt.END ldy StmtPtr - beq STMT.POP.8 Global context + beq STMT.End.8 Global context lda (StmtStk),y - bmi STMT.POP.8 local F context + bmi STMT.End.8 local F context * in an instruction ... iny STMT.TERM lda (StmtStk),y cmp #'}' - beq STMT.POP.8 in a STMT... + beq STMT.End.8 in a STMT... cmp #';' must be ';' on stack.... - beq STMT.End + bne STMT.End.9 + + jsr STMT.End + bcc STMT.Stmt.END -STMT.POP.9 lda #E.STACKERROR + rts + +STMT.End.9 lda #E.STACKERROR sec rts -STMT.POP.8 clc -STMT.POP.99 rts +STMT.End.8 clc + rts *-------------------------------------- STMT.CPStmt.END ldy StmtPtr - beq STMT.POP.9 + beq STMT.End.9 lda (StmtStk),y bpl .1 @@ -155,7 +160,7 @@ STMT.CPStmt.END ldy StmtPtr lda (StmtStk),y STMT.TERM cmp #'}' must be '}' on stack.... - bne STMT.POP.9 + bne STMT.End.9 *-------------------------------------- STMT.End ldy StmtPtr STMT.KW lda (StmtStk),y @@ -187,10 +192,7 @@ STMT.SetType jsr CORE.GetNCharNBNL cmp #'{' bne STMT.SetType.1 -STMT.SetTypeCP jsr CORE.GetNCharNBNL skip '{' - bcs STMT.SetType.9 - - jsr SCOPE.New +STMT.SetTypeCP jsr SCOPE.New bcs STMT.New.RTS ldx #'}' @@ -215,7 +217,7 @@ STMT.Close lda StmtPtr beq .1 >SYSCALL FreeMem - + .1 ldy StmtPtr STMT.KW iny STMT.TERM lda (StmtStk),y diff --git a/BIN/CC.S.SYM.txt b/BIN/CC.S.SYM.txt index b9b23b86..a0d9a5c2 100644 --- a/BIN/CC.S.SYM.txt +++ b/BIN/CC.S.SYM.txt @@ -77,7 +77,7 @@ SYM.New.2 jsr CC.GetCharNB lda (ZPSymBufPtr),y ora #SYM.Q.FUNC sta (ZPSymBufPtr),y - + jsr SYM.Store Store this f() with no prototype... bcs .99 @@ -627,7 +627,7 @@ SYM.NewLabelA bit bPass2 bcs .98 >STYA.G CC.LabelID - + ldy #CC.LabelBuf+SYM.DefSize lda #SYM.Def sta (pData),y @@ -650,11 +650,11 @@ SYM.NewLabelA bit bPass2 lda #SYM.Q.POINTER iny sta (pData),y - + iny lda #SYM.SC.STATIC sta (pData),y - + ldy #CC.LabelBuf+SYM.Addr lda ZPCCCode sta (pData),y @@ -686,7 +686,7 @@ SYM.NewLabelF lda #SYM.T.UCHAR lda #0 iny sta (pData),y - + iny lda #SYM.SC.AUTO sta (pData),y @@ -696,7 +696,7 @@ SYM.NewLabelF lda #SYM.T.UCHAR iny iny lda (ScopeStk),y #SCOPE.FrameSize - + ldy #CC.LabelBuf+SYM.Addr sta (pData),y rts @@ -705,13 +705,13 @@ SYM.NewLabelR ldy #SYM.Q lda (ZPSymBufPtr),y and #$F8 strip off SYM.Q.FUNC... pha - + lda (ZPSymBufPtr) >STA.G CC.LabelBuf pla iny sta (pData),y - + iny lda #SYM.SC.AUTO sta (pData),y @@ -720,7 +720,7 @@ SYM.NewLabelR ldy #SYM.Q SYM.LookupLabelA cmp #'R' beq .1 - + bit bPass2 bmi .1 @@ -770,7 +770,7 @@ SYM.LookupLabelA bcs .99 phx - + txa >SYSCALL GetMemPtr >STYA ZPLookupPtr @@ -1024,14 +1024,14 @@ SYM.DEBUGU >PUSHW L.MSG.DEBUG.SYMU iny lda (ZPSymBufPtr),y >PUSHA - + ldy #SYM.Addr+1 lda (ZPSymBufPtr),y >PUSHA dey lda (ZPSymBufPtr),y >PUSHA - + >PUSHBI 7 >SYSCALL Printf rts @@ -1053,7 +1053,7 @@ SYM.DEBUGS >PUSHW L.MSG.DEBUG.SYMS dey lda (ZPSymBufPtr),y >PUSHA - + >PUSHBI 7 >SYSCALL Printf >DEBUG diff --git a/BIN/CC.S.TYPE.txt b/BIN/CC.S.TYPE.txt index cd218e59..418b04d6 100644 --- a/BIN/CC.S.TYPE.txt +++ b/BIN/CC.S.TYPE.txt @@ -27,10 +27,10 @@ TYPE.GetTQInYA >ENTER 2 TYPE.GetTQInYA2 >ENTER 2 lda (ZPLookupSymPtr) sta (pStack) Type - + ldy #SYM.Q lda (ZPLookupSymPtr),y - + * ldy #1 sta (pStack),y Qual @@ -49,7 +49,7 @@ TYPE.GetTQInYA2 >ENTER 2 clc .99 >LEAVE - rts + rts *-------------------------------------- * Type Declaration keywords *-------------------------------------- @@ -67,9 +67,9 @@ TYPE.VOLATILE.1 ldy #1 >LDYA L.CC.TYPESPEC jsr CC.LookupID bcs .9 - + jmp (J.CC.TYPESPEC,x) - + .9 lda #E.CSYN sec rts @@ -81,7 +81,7 @@ TYPE.UNION sec ror ZPPtr2+1 bStrucUnion stz ZPPtr2 bNewTagDef - + bit bPass2 bpl TYPE.SU.1 Pass 1: create def *-------------------------------------- @@ -131,7 +131,7 @@ TYPE.SU.1 ldy #SYM.T.SU jsr TYPE.NewTag bcs .99 - + sec ror ZPPtr2 bNewTagDef *-------------------------------------- @@ -140,7 +140,7 @@ TYPE.SU.1 ldy #SYM.T.SU cmp #'{' beq .30 - + bit ZPPtr2 bNewTagDef bmi .98 @@ -190,7 +190,7 @@ TYPE.SU.1 ldy #SYM.T.SU jsr TYPE.StoreTag bcs .99 -*-------------------------------------- +*-------------------------------------- .38 lda #SYM.T.SU jmp TYPE.GetQ @@ -210,34 +210,34 @@ TYPE.SU.AddYAX jsr SYM.AddWord add T/Q iny lda (ZPSymBufPtr),y ply - + jsr SYM.AddWord Add Y/A Offset bcs .99 - + txa - + ldy #SYM.SizeOf * clc adc (ZPSymBufPtr),y sta (ZPSymBufPtr),y bcc .99 - + iny lda #0 adc (ZPSymBufPtr),y sta (ZPSymBufPtr),y - -* clc - + +* clc + .99 rts .1 txa ldy #SYM.SizeOf cmp (ZPSymBufPtr),y bcs .2 - + sta (ZPSymBufPtr),y - + .2 jmp SYM.Add0000 Add Y/A Offset (always 0 for union) *-------------------------------------- TYPE.ENUM @@ -254,7 +254,7 @@ TYPE.NewTag >LDA.G CC.hTags jsr CC.SkipX -.9 rts +.9 rts *-------------------------------------- TYPE.GetTag >PUSHB.G CC.hTags >PUSHW ZPLineBufPtr @@ -304,7 +304,7 @@ TYPE.UNSIGNED clc cpx #SYM.T.UCHAR bcc .9 void - + cpx #SYM.T.SLONG+1 only char int long allowed bcs .9 @@ -323,18 +323,18 @@ TYPE.UNSIGNED clc *-------------------------------------- TYPE.SHORT jsr CC.CheckSpace bcs .9 - + >LDYA L.CC.TYPES jsr CC.LookupID bcs TYPE.UCHAR - + cpx #4 only int allowed beq TYPE.SCHAR - + .9 lda #E.CSYN sec - rts + rts *-------------------------------------- TYPE.VOID lda #SYM.T.VOID bra TYPE.GetQ @@ -377,10 +377,10 @@ TYPE.GetQ2 jsr CC.GetCharNB bcs .9 more than *** sta (pStack),y - + jsr CORE.GetNCharNB bcc .1 - + .9 lda #E.CSYN sec .99 rts @@ -391,7 +391,7 @@ TYPE.GetQ2 jsr CC.GetCharNB >LDYA L.CC.FTYPES int fastcall f() ? jsr CC.LookupID bcs .8 next char is an identifier - + ldy #1 lda (pStack),y ora #SYM.Q.FUNC+SYM.Q.FASTCALL @@ -399,9 +399,9 @@ TYPE.GetQ2 jsr CC.GetCharNB jsr CORE.GetNCharNB bcs .9 next char is an identifier, ",", "(",")" - + .8 clc - rts + rts *-------------------------------------- * in : Y,A = type/qual * out : X = size diff --git a/BIN/CC.S.txt b/BIN/CC.S.txt index dc3cdb47..e36d0d12 100644 --- a/BIN/CC.S.txt +++ b/BIN/CC.S.txt @@ -541,17 +541,17 @@ PrintVerboseMsg .DO _DBG_SCOPE=1 >PUSHW L.MSG.DEBUG.SC jsr SCOPE.Push - + lda ScopePtr >PUSHA - + tay iny iny >PUSHB (ScopeStk),y iny >PUSHB (ScopeStk),y - + >PUSHBI 5 >SYSCALL PrintF * >DEBUG @@ -670,12 +670,12 @@ MSG.DEBUG.SYMNL .CZ "New (%s) ID=%H[%H],T=%h,Q=%h,SC=%h " MSG.DEBUG.SYMSL .CZ "Sto ID=%H,T=%h,Q=%h,SC=%h\r\n" .FIN .DO _DBG_SCOPE=1 -MSG.DEBUG.SCIN .CZ "Scope { %H (%d:%h:%h)\r\n" -MSG.DEBUG.SC .CZ "Scope = %H (%d:%h:%h)\r\n" -MSG.DEBUG.SCOUT .CZ "Scope } %H (%d:%h:%h) -> " +MSG.DEBUG.SCIN .CZ "Scope { %H (%h:%h:%h)\r\n" +MSG.DEBUG.SC .CZ "Scope = %H (%h:%h:%h)\r\n" +MSG.DEBUG.SCOUT .CZ "Scope } %H (%h:%h:%h) -> " .FIN .DO _DBG_OUT=1 -MSG.DEBUG.CSOUT .CZ "\r\n%H-" +MSG.DEBUG.CSOUT .CZ "\r\n%H-" MSG.DEBUG.OUT .CZ "%h" .FIN MSG.VERBOSE .CZ "%5D> %s\r\n" diff --git a/DRV/DAN2ETH.DRV.S.txt b/DRV/DAN2ETH.DRV.S.txt index bf2e553f..1a747ca9 100644 --- a/DRV/DAN2ETH.DRV.S.txt +++ b/DRV/DAN2ETH.DRV.S.txt @@ -28,15 +28,15 @@ IO.8255.S.ByteRcvd .EQ %00100000 IO.8255.Mode .EQ $C083-$88 *-------------------------------------- .MA READBYTE - lda #IO.8255.S.ByteRcvd -:1 bit IO.8255.S,x +:1 lda IO.8255.S,x + and #IO.8255.S.ByteRcvd beq :1 lda IO.8255.Data,x .EM .MA WRITEBYTE sta IO.8255.Data,x -:1 bit IO.8255.S,x +:1 lda IO.8255.S,x bpl :1 .EM *-------------------------------------- @@ -435,11 +435,13 @@ WRITE php ldy #S.IOCTL.BYTECNT lda (ZPIOCTL),y >WRITEBYTE + lda (ZPIOCTL),y eor #$ff sta Counter iny lda (ZPIOCTL),y >WRITEBYTE + lda (ZPIOCTL),y eor #$ff sta Counter+1 diff --git a/ROOT/ctest/testargs.c.txt b/ROOT/ctest/testargs.c.txt index 09ff6fa9..240f6302 100644 --- a/ROOT/ctest/testargs.c.txt +++ b/ROOT/ctest/testargs.c.txt @@ -5,7 +5,7 @@ NEW int testf1() { puts("testf1 called!"); int r = 1029; - if (r == 1029) { + if (r == 1029) { printf("testf1 will return %D...\r\n", r); } return r; @@ -19,7 +19,7 @@ int testf2() { void testf3(char *msg) { puts(msg); - } + } int testf4(int arg1, int arg2) { printf("arg1=%D, arg2=%D\r\n", arg1, arg2); @@ -36,23 +36,23 @@ int main(int argc, char *argv[]) { int r=testf1(); printf("testf1() returned %D\r\n", r); - getchar(); + getchar(); r=testf2(); printf("testf2() returned %D\r\n", r); - getchar(); + getchar(); testf3("testf3() void function..."); - getchar(); + getchar(); i = testf4(34, 43); printf("testf4() returned %D\r\n", i); - getchar(); - printf("main() argc=%D\r\n", argc); - for(int i=0; i<=argc; i++) { - printf(" argv[%I] : %s\r\n", i, argv[i]); - } - - puts("set main() return code=0x73"); - return 115; // return E_INUM + printf("main() argc=%D\r\n", argc); + getchar(); + + for(int i=0; i<=argc; i++) printf(" argv[%D]=%s\r\n", i, argv[i]); + + printf("i = %D\r\n", i); + puts("set main() return code=0x73"); + return 115; // return E_INUM } MAN TEXT root/ctest/testargs.c diff --git a/ROOT/ctest/testif.c.txt b/ROOT/ctest/testif.c.txt index 4aba4067..2632f4a8 100644 --- a/ROOT/ctest/testif.c.txt +++ b/ROOT/ctest/testif.c.txt @@ -2,6 +2,9 @@ NEW AUTO 3,1 #include +/* C-style comments.... +...multi-lines */ + int main(int argc, char *argv[]) { puts("Press a key"); @@ -10,11 +13,16 @@ int main(int argc, char *argv[]) if (c == 13) { puts("ENTER"); +// C99 comments: skip LF + getchar(); } - else - { - puts("Not ENTER"); - } + else + if (c == 32) + { + puts("Not ENTER...but SPACE"); + } + else + puts("Some other key..."); int i=0; while (i++ < 10) { diff --git a/ROOT/ctest/testloop.c.txt b/ROOT/ctest/testloop.c.txt index a4b5b7d6..0041047e 100644 --- a/ROOT/ctest/testloop.c.txt +++ b/ROOT/ctest/testloop.c.txt @@ -8,8 +8,8 @@ void *pBuf = malloc(256); int main(int argc, char *argv[]) { - for (int i=0; i<=argc; i++) printf("argv[%I]=%s\r\n", i, argv[i]); - + for (int i=0; i<=argc; i++) printf("argv[%D]=%s\r\n", i, argv[i]); + getchar(); strcpy(pBuf, argv[0]); strcat(pBuf, ".c"); printf("Filename=%s\r\n", pBuf); diff --git a/SYS/KERNEL.S.TERMX.txt b/SYS/KERNEL.S.TERMX.txt index 508b5787..8cfac6cb 100644 --- a/SYS/KERNEL.S.TERMX.txt +++ b/SYS/KERNEL.S.TERMX.txt @@ -102,7 +102,7 @@ TERMX.OPEN jsr TERMX.ISOPENED tax * lda ZPhFD lda IO.hFD in ZPTMP - + sta CLRWRITEAUX sta A2osX.SCRNDEVS,x sta SETWRITEAUX @@ -124,7 +124,7 @@ TERMX.CONTROL lda (ZPDCBPtr) #S.DCB.TTY.DEVID sta CLRMIXED jsr TERMX.SCRCPY - + lda #0 ldy #S.DCB.TTY.bTITLE sta (ZPDCBPtr),y @@ -376,6 +376,7 @@ TERMX.OUT.DEL ldy #S.DCB.TTY.CH .1 ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y beq TERMX.OUT.BS.8 + dec sta (ZPDCBPtr),y @@ -536,7 +537,7 @@ TERMX.CSI.Exec stz CsiH .DA Csi.Home H *-------------------------------------- * CRLF : ESC [ 20 -* LINEWRAP : ESC [ ? 7 +* LINEWRAP : ESC [ ? 7 * CUR : ESC [ ? 25 *-------------------------------------- Csi.SetM sec @@ -569,7 +570,7 @@ Csi.ResetM clc ldy #S.DCB.TTY.bLINEWRAP bra .8 - + .2 cmp #25 bne .98 @@ -579,7 +580,7 @@ Csi.ResetM clc ror sta (ZPDCBPtr),y bmi .80 - + jsr TERMX.CUROFF clc @@ -588,7 +589,7 @@ Csi.ResetM clc .8 plp ror sta (ZPDCBPtr),y - + .80 clc rts @@ -597,22 +598,20 @@ Csi.ResetM clc rts *-------------------------------------- Csi.DispAttr ldx CsiPCnt - bne .10 + beq .10 - jmp RESETATTR - -.10 ldx #0 + ldx #0 .1 lda CsiP,x bne .2 - jsr RESETATTR + jsr .10 bra .7 .2 eor #7 bne .7 -.3 ldy #S.DCB.TTY.bNORMAL + ldy #S.DCB.TTY.bNORMAL sta (ZPDCBPtr),y .7 inx @@ -621,15 +620,23 @@ Csi.DispAttr ldx CsiPCnt .8 clc rts + +.10 lda #$80 + ldy #S.DCB.TTY.bNORMAL + sta (ZPDCBPtr),y + clc + rts *-------------------------------------- Csi.Query ldx CsiPCnt beq .8 + dex bne .8 lda CsiP cmp #6 bne .8 + lda #C.ESC jsr TERMX.COUT lda #'[' @@ -650,20 +657,29 @@ Csi.Query ldx CsiPCnt .8 clc rts *-------------------------------------- -Csi.Scroll ldy CsiPCnt - bne .1 - - lda #0 +Csi.Scroll lda #0 ldx #23 - bra .8 -.1 cpy #2 + ldy CsiPCnt + beq .8 + + cpy #2 bne .9 - lda CsiP - dec - ldx CsiP+1 - dex + ldy CsiP + dey + cpy #24 + bcs .9 + + tya + + ldy CsiP+1 + dey + cpy #24 + bcs .9 + + phy + plx .8 ldy #S.DCB.TTY.SCROLLTOP sta (ZPDCBPtr),y @@ -829,14 +845,19 @@ TERMX.IAC ldy #S.DCB.TTY.INBUF cmp #SE bne Csi.Home.8 wait for ending SE....keep bIACMode + bra COUT.IAC.SB + ldy #S.DCB.TTY.INBUF+1 lda (ZPDCBPtr),y get back CMD + .1 cmp #IAC beq COUT.IAC.SB.9 + sec sbc #WILL bcc COUT.IAC.SB.9 + asl tax @@ -855,11 +876,14 @@ COUT.IAC.SB ldy #S.DCB.TTY.INBUF+2 cmp #TN.O.TTYPE bne COUT.IAC.SB.9 + iny lda (ZPDCBPtr),y cmp #SB.SEND bne COUT.IAC.SB.9 + ldx #0 + .1 lda SB.IS.TTYPE,x jsr TERMX.COUT inx @@ -872,12 +896,15 @@ COUT.IAC.WILL ldx #WILLDO.CNT-1 .1 cmp WILLDO,x beq .7 + dex bpl .1 + ldx #WILLDONT.CNT-1 .2 cmp WILLDONT,x beq .8 + dex bpl .2 @@ -893,6 +920,7 @@ COUT.IAC.DO ldx #DOWILL.CNT-1 .1 cmp DOWILL,x beq .7 + dex bpl .1 @@ -900,6 +928,7 @@ COUT.IAC.DO ldx #DOWILL.CNT-1 .2 cmp DOWONT,x beq .8 + dex bpl .2 @@ -940,12 +969,6 @@ RESET ldy #S.DCB.TTY.M jmp TERMX.CLRSCR *-------------------------------------- -RESETATTR lda #$80 - ldy #S.DCB.TTY.bNORMAL - sta (ZPDCBPtr),y - clc - rts -*-------------------------------------- ENQ ldx #0 .1 lda ENQ.String,x @@ -968,7 +991,7 @@ TERMX.OUT.LF.1 ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y ldy #S.DCB.TTY.SCROLLBOT cmp (ZPDCBPtr),y - beq SCROLL.UP + bcs SCROLL.UP inc ldy #S.DCB.TTY.CV @@ -1087,7 +1110,7 @@ TERMX.CBLNK jsr TERMX.CCheck sta (ZPDCBPtr),y asl beq TERMX.CUROFF.1 - + jsr GetCharAtCurPos bcs TERMX.RTS Out of screen @@ -1100,26 +1123,26 @@ TERMX.CUROFF jsr TERMX.CCheck asl beq TERMX.RTS already off - + TERMX.CUROFF.1 jsr GetCharAtCurPos bcs TERMX.RTS Out of screen jmp SetCharAtY.SCR - -TERMX.RTS rts *-------------------------------------- TERMX.CCheck sec - + bit bActive bpl .9 ldy #S.DCB.TTY.bCURON lda (ZPDCBPtr),y bpl .9 - + clc - -.9 rts + +.9 + +TERMX.RTS rts *-------------------------------------- DecOut jsr MATH.A2STR10NP @@ -1537,7 +1560,7 @@ RESET.VALUES .DA #0 MODE .DA #S.DCB.TTY.OUTBUF OUTHEAD .DA #S.DCB.TTY.INBUF INBUFFER *-------------------------------------- -TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ +TERMX.DIB .DA #S.DIB.S.WRITE+S.DIB.S.READ .DA #0,#0,#0 .PS "A2osX VT100 term" .DA #S.DIB.T.CHAR