From 07172d7359e75f67e5d5483348e2fe5a5e7cc17e Mon Sep 17 00:00:00 2001 From: burniouf Date: Sat, 21 Jan 2023 22:53:55 +0100 Subject: [PATCH] KERNEL:VT100 fixes CC:comment,scopes fixes DAN2ETH:fixes for IIgs --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/CC.S.CODE.txt | 52 ++++++++++---------- BIN/CC.S.CORE.txt | 83 ++++++++++++++++++++++---------- BIN/CC.S.DECL.txt | 30 ++++++------ BIN/CC.S.DIR.txt | 6 +-- BIN/CC.S.EXP.txt | 2 +- BIN/CC.S.F.txt | 18 +++---- BIN/CC.S.FIO.txt | 22 ++++----- BIN/CC.S.KW.txt | 20 +++++--- BIN/CC.S.LINK.txt | 6 +-- BIN/CC.S.SCOPE.txt | 36 +++++++------- BIN/CC.S.STMT.txt | 30 ++++++------ BIN/CC.S.SYM.txt | 26 +++++----- BIN/CC.S.TYPE.txt | 58 +++++++++++----------- BIN/CC.S.txt | 14 +++--- DRV/DAN2ETH.DRV.S.txt | 8 +-- ROOT/ctest/testargs.c.txt | 26 +++++----- ROOT/ctest/testif.c.txt | 16 ++++-- ROOT/ctest/testloop.c.txt | 4 +- SYS/KERNEL.S.TERMX.txt | 99 +++++++++++++++++++++++--------------- 20 files changed, 316 insertions(+), 240 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index d5faf67fcb74e70b4d6b61639b677c4d9df36523..ee6b9501171eb8cd8bad3161a9b84b099b11b657 100644 GIT binary patch delta 387561 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%0A=f4bWNb`#TD7h=Mbp?MiD(g&;SHMaf(=> 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 z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ z0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY** z5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0 z009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{ z1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009IL zKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**5I_I{1Q0*~ q0R#|0009ILKmY**5I_I{1Q0*~0R#|0009ILKmY**{=W#k?fE|lIsjS# delta 332836 zcma&O2|!d;_W*upV+LkeXJvn^1Bk;6ih?^ZgP?<~=F$f0C?qNYm6|n>KuTgzeO#@q zi9{WP8j3_p&HAbj?5n1|&#c@c)WoUWveN&#@4f-le*gbJ8{WI;-h0lu=bU@)cJ8bF z>xOSF{2W6@jjXaO>63^9F z(GBw7^*8-_xxA-8_tidqT$1Y{5h65?x6$nPxY>^fKYp*-PmuAJU+4t%Okz?1I(`Z< z<8*=Y-WQGt?(?-i9{&nL3_|xsR77+|z83j-&dwa+oZvYLb1ZY# l|m~(IrZ*J7w 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�!!KO(J=Rl4nA&FXfm=}WSRMJ#0?`m-4n=7FAmJs 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íO_<=p8dHx% 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 z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ vkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36Q}5-vqAO=O6rkrx+U( 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