From b028f95781ac38d83f1cc0a6ba2cddb3724c0520 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 23 Oct 2017 17:39:19 +0200 Subject: [PATCH] Kernel 0.9.1 : SHELL, CSH style scripting.....(wip) --- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/CAT.S.txt | 38 ++--- SBIN/GETTY.S.txt | 22 +-- SBIN/SHELL.S.CSH.txt | 300 +++++++++++++++++++++------------------ SBIN/SHELL.S.txt | 113 ++++++++++++--- SYS/KERNEL.S.STDLIB.txt | 11 +- 8 files changed, 278 insertions(+), 206 deletions(-) diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index 9e7ddd5a7e25ea917e63b6a1584a53dc52f69860..0e87dae3eae36048235a56a9ae59c949733dc6f2 100644 GIT binary patch delta 5896 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 QGl1}8TO2c`P0Pst4=y@rfdBvi delta 5675 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

1L0bp*1>W!$J-;jq5%%i$Av# zciE^nSM)3K+3%skKhXcB3S7x3E;9El2Dr`ML4(k#q=9H$VNWqF$A*23SQL_fMC!L$ zbcMZ3OBq=PE6}EAc0pp#Hj&YgQVG93jeKU=GG~-mmi7T;SwPDjfR+X8QE0Nx?_(ev zja7&YcrD=ZW_-L!!i@5pZ~yfjL=jHy1*}&5@2%VL@B}x7FdGxT`+xU-xc}hChd%-B zK5pv3LluvnJaw%fsc|JR-?-i!H46IBp~qOQE}hK`MhQxUIKq=E?m6xij?qQw2I~-# z3;b~cWEuhaG?T`dpj4ujB)xkC>>~k#lm~SiBV|Gc-#?qXJe%WZZNtfl3pq~>q^D1T zNdv`ijgMcfWHKFZ2Zl&7v?w-rIyKVEbR;dLb-0u*urj9%FPeK5ggY9wy9v3e6(%nr18q(}?Ir}p(uRbf*`N7Kw!v z3O#*GfwvCg-JlCcPm+@S9F%y2g+V^en0Gv29@HI37zEk4RV!9EZ{$rXCM|uV&d2RN zF($T=6fC8e>^-ru+&=q|(M7Z~>#T9d|-Y|a!>Zl}Kyt#28wW-j2S7)Hscq9{UBJfl*oV+IX|hsTGK vnY1YS(%q7t##~dV;t~>*hQP$5CM`1vR(WyD;!LIhE8oSnsHG{3S)lxXU7;Rz diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 99c7fdd78591a51e838d6ca01f29100c952d2cbf..ece36de70c85ec6f511e72f91b818d42a0507f25 100644 GIT binary patch delta 3525 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 delta 3532 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 CGF~+R diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 6150e5b3844d2757898b6c2152e394178f505c0f..a0b70cca9a908f0e96c45f7baa2e8a392b9143ac 100644 GIT binary patch delta 23256 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 delta 22336 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.G ArgCount - -.1 >LDA.G ArgCount - dec - bmi .5 - - sta (pData),y - +CS.INIT +.1 >INC.G ArgCount >SYSCALL GetArg.A + bcs .7 + >STYA ZPPtr1 - ldy #1 - lda (ZPPtr1),y + lda (ZPPtr1) cmp #'-' bne .4 - lda (ZPPtr1) - cmp #2 - bne .4 - - iny + ldy #1 lda (ZPPtr1),y ldx OptionList @@ -85,12 +72,10 @@ CS.INIT ldy #S.PS.ARGC sta (pData),y bra .1 -.4 >LDA.G FileCount - inc - sta (pData),y +.4 >INC.G FileCount bra .1 scan for any other args -.5 >LDA.G FileCount +.7 >LDA.G FileCount beq .99 >LDYAI 256 @@ -128,16 +113,13 @@ CS.RUN >SYSCALL GetChar >LDA.G hFILE bne .2 -.1 >LDA.G ArgIndex - inc - sta (pData),y +.1 >INC.G ArgIndex >SYSCALL GetArg.A bcs .99 No more arg...the end! >STYA ZPPtr1 - ldy #1 - lda (ZPPtr1),y + lda (ZPPtr1) cmp #'-' beq .1 An option, skip... diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 6c2410ce..f8823f8d 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -87,7 +87,8 @@ CS.RUN >SYSCALL Sleep >SYSCALL GetChar bcs CS.RUN -.11 jsr PRINTA2 +.11 +* jsr PRINTA2 >SYSCALL Sleep >SYSCALL GetChar @@ -115,7 +116,7 @@ CS.RUN.LOOP >SYSCALL GetChar bcs .4 - jsr PRINTA +* jsr PRINTA cmp #IAC beq CS.RUN.IACMODE @@ -144,22 +145,22 @@ CS.RUN.IACMODE >SYSCALL Sleep Wait for IAC VERB (or SB) bcs CS.RUN.IACMODE >STA.G IAC.VERB - jsr PRINTA +* jsr PRINTA .1 >SYSCALL Sleep Wait for IAC OPT >SYSCALL GetChar bcs .1 >STA.G IAC.OPT - jsr PRINTA +* jsr PRINTA >LDA.G IAC.VERB cmp #SB beq CS.RUN.IACSB *-------------------------------------- CS.RUN.IACVERB - lda #'.' - >SYSCALL PutChar.A +* lda #'.' +* >SYSCALL PutChar.A jmp CS.RUN.LOOP *-------------------------------------- CS.RUN.IACSB @@ -169,7 +170,7 @@ CS.RUN.IACSB >STA.G IAC.SB - jsr PRINTA +* jsr PRINTA lda #0 sta (pData) reset IAC.SB.DATA @@ -182,7 +183,7 @@ CS.RUN.IACSB beq .4 end of DATA, go wait SE pha - jsr PRINTA +* jsr PRINTA ldy #IAC.SB.DATA-1 @@ -216,8 +217,9 @@ CS.RUN.IACSB >PUSHW L.ENV.TERM >SYSCALL SetEnv -.8 lda #':' - >SYSCALL PutChar.A +.8 +* lda #':' +* >SYSCALL PutChar.A jmp CS.RUN.LOOP *-------------------------------------- CS.DOEVENT lda (pEvent) diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 2487cae7..b2050dc1 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -69,7 +69,7 @@ CSH.Run lda #0 jsr CSH.Pop was expected, get stacked Cmd... tax - jmp (J.CSHCMDS.END,x) + jmp (J.CSH.KEYWORDS.END,x) .1 cmp #$0D bne .2 @@ -87,14 +87,14 @@ CSH.Run lda #0 bra .9 error, todo : PREOPS ++ --..... -.3 >LDYA L.CSHCMDS +.3 >LDYA L.CSH.KEYWORDS jsr CSH.IsKeyword bcs .4 not an internal CSH keyword.... txa >STA.G CSH.CmdSave - jmp (J.CSHCMDS,x) + jmp (J.CSH.KEYWORDS,x) .4 jsr CSH.GetVar Y=Ptr To Value bcs .5 @@ -113,7 +113,7 @@ CSH.Run lda #0 ply bcs .9 - jsr CSH.SetVarValueAtY + jsr CSH.SetVarValue bcs .9 cmp #';' bne .99 @@ -126,28 +126,31 @@ CSH.Run lda #0 .5 - jsr CSH.RestorePtr Restore ptr to get full cmd line to execute - jsr CSH.GetCharNB + ldy #$0 - ldy #0 +.6 lda (ZPCSHBufPtr),y + beq .7 -.6 cmp #13 + cmp #13 beq .7 sta (ZPCMDBuf),y iny cpy #CmdLine.MAX - beq .8 + bne .6 + bra .99 Line Too long !!! - jsr CSH.GetNextChar - bcc .6 - bra .8 - -.7 jsr CSH.GetNextCharNB Skip CR +.7 tya + clc + adc ZPCSHBufPtr + sta ZPCSHBufPtr + bcc .8 + inc ZPCSHBufPtr+1 .8 lda #0 sta (ZPCMDBuf),y + tya >STA.G CmdBuflen lda #$ff @@ -181,16 +184,12 @@ CSH.Quit >LDA.G CSH.hBuf .8 rts *-------------------------------------- -CSH.SavePtr phy - >LDYA ZPCSHBufPtr +CSH.SavePtr >LDYA ZPCSHBufPtr >STYA.G CSH.BufPtrSave - ply rts *-------------------------------------- -CSH.RestorePtr phy - >LDYA.G CSH.BufPtrSave +CSH.RestorePtr >LDYA.G CSH.BufPtrSave >STYA ZPCSHBufPtr - ply rts *-------------------------------------- CSH.IsKeyword >STYA ZPPtr1 @@ -245,6 +244,69 @@ CSH.IsKeyword >STYA ZPPtr1 sec rts *-------------------------------------- +CSH.CHAR lda #CSH.TYPE.CHAR + bra CSH.TYPE +CSH.INT lda #CSH.TYPE.INT + bra CSH.TYPE +CSH.LONG lda #CSH.TYPE.LONG + bra CSH.TYPE +CSH.FLOAT lda #CSH.TYPE.FLOAT + +CSH.TYPE >STA.G CSH.ACCT + + jsr CSH.GetChar + bcs .9 + cmp #' ' + bne .9 + + jsr CSH.GetNextCharNB + bcs .9 + + jsr CSH.IsLetter + bcs .9 + + jsr CSH.GetVar Already exists ? + bcc .90 + + jsr CSH.AddVar No, add with undefined value... + bcs .99 + + jsr CSH.GetCharNB + bcs .9 + cmp #';' + beq .8 end of declaration, no value... + + cmp #'=' + bne .9 + + jsr CSH.GetNextCharNB + bcs .9 + + phy Save Ptr To Value + jsr CSH.ExpEval + ply + + bcs .9 + + jsr CSH.SetVarValue Update value to this var + + jsr CSH.GetChar + bcs .9 + cmp #';' + bne .9 + +.8 jsr CSH.GetNextCharNB Skip ; + clc + rts + +.90 lda #CSH.E.DUP + sec + rts + +.9 lda #CSH.E.SYNTAX + sec +.99 rts +*-------------------------------------- CSH.WHILE CSH.IF jsr CSH.GetCharNB bcs .9 @@ -333,78 +395,18 @@ CSH.WHILE.END jsr CSH.Pop clc rts *-------------------------------------- +CSH.ELSE +CSH.DO +CSH.FOR +CSH.SWITCH +CSH.CASE CSH.BREAK -*-------------------------------------- CSH.CONTINUE lda #CSH.E.SYNTAX sec rts *-------------------------------------- -CSH.CHAR lda #CSH.TYPE.CHAR - bra CSH.TYPE -CSH.INT lda #CSH.TYPE.INT - bra CSH.TYPE -CSH.LONG lda #CSH.TYPE.LONG - bra CSH.TYPE -CSH.FLOAT lda #CSH.TYPE.FLOAT - -CSH.TYPE >STA.G CSH.ACCT - - jsr CSH.GetChar - bcs .9 - cmp #' ' - bne .9 - - jsr CSH.GetNextCharNB - bcs .9 - - jsr CSH.IsLetter - bcs .9 - - jsr CSH.GetVar Already exists ? - bcc .90 - - jsr CSH.AddVar No, add with undefined value... - bcs .99 -* Y=Ptr in DATA to Value - - jsr CSH.GetCharNB - bcs .9 - cmp #';' - beq .8 end of declaration, no value... - - cmp #'=' - bne .9 - - jsr CSH.GetNextCharNB - bcs .9 - - phy Save Ptr To Value - jsr CSH.ExpEval - ply - - bcs .9 - - jsr CSH.SetVarValueAtY Update value to this var - - jsr CSH.GetChar - bcs .9 - cmp #';' - bne .9 - -.8 jsr CSH.GetNextCharNB Skip ; - clc - rts - -.90 lda #CSH.E.DUP - sec - rts - -.9 lda #CSH.E.SYNTAX - sec -.99 rts -*-------------------------------------- CSH.ExpEval jsr CSH.ZeroACC jsr CSH.GetCharNB @@ -449,7 +451,7 @@ CSH.GetNumInACC >LDA.G CSH.ACCT >PUSHWI ZPCSHBufPtr >PUSHW ZPCSHBufPtr >PUSHEA.G CSH.ACC - >DEBUG + >SYSCALL StrToL rts *-------------------------------------- @@ -467,13 +469,14 @@ CSH.ZeroACC lda #0 * Vars... *-------------------------------------- CSH.AddVar jsr CSH.GetIdentLen + sec - >ADC.G CSH.SymbolsPtr + >ADC.G CSH.SymbolsPtr Enough room to store this symbol ? bcs .99 - adc #1 OFS - bcs .99 + adc #1 Add One Byte for storing Ptr to DATA + bcs .99 Out of Symbols space >LDA.G CSH.DataPtr pha @@ -482,58 +485,44 @@ CSH.AddVar jsr CSH.GetIdentLen tax sec +1 for Type adc CSH.TSIZE,x - bcs .98 Out of memory + bcs .98 Out of Data Space >LDA.G CSH.SymbolsPtr - tay + pha + + jsr CSH.GetIdentLen + + ply + sta (ZPCSHSymbols),y + iny jsr CSH.GetChar -.1 sta (ZPCSHSymbols),y +.1 sta (ZPCSHSymbols),y Store this symbol.... iny jsr CSH.GetNextChar jsr CSH.IsLetterOrDigit bcc .1 - pla Get Back Data OFS + pla Get Back Data Ptr pha + sta (ZPCSHSymbols),y iny tya - >STA.G CSH.SymbolsPtr + >STA.G CSH.SymbolsPtr Mark new end of Symbols - >LEA.G CSH.ACCT - >STYA ZPPtr1 ACCT/ACC in ZPPtr1 - - ply Get Back Data OFS again - phy - - lda (ZPPtr1) - sta (ZPCSHSymbols),y Add Type to Data - iny - - tax - lda CSH.TSIZE,x A = byte count to store - - tax - -.2 inc ZPPtr1 - bne .3 - inc ZPPtr1+1 - -.3 lda (ZPPtr1) - sta (ZPCSHData),y - iny - dex - bne .2 - - tya - >STA.G CSH.DataPtr - - ply Exit with Y=Data Offset + pla Get again Data Ptr clc + adc ZPCSHData + sta ZPCSHValue + lda #0 + adc ZPCSHData+1 + sta ZPCSHValue+1 + +* clc rts .98 pla @@ -541,8 +530,19 @@ CSH.AddVar jsr CSH.GetIdentLen sec rts *-------------------------------------- -CSH.SetVarValueAtY +CSH.SetVarValue >LDA.G CSH.ACCT + tax + lda CSH.TSIZE,x + tax + + >LDA.G CSH.ACCT + tay +.1 lda (pData),y + sta (ZPCSHValue),y + iny + dex + bpl .1 +1 for ACCT clc rts *-------------------------------------- @@ -550,8 +550,8 @@ CSH.GetVar >LDYA ZPCSHSymbols >STYA ZPPtr1 jsr CSH.GetIdentLen - phy - + pha + .1 lda (ZPPtr1) beq .9 @@ -570,16 +570,36 @@ CSH.GetVar >LDYA ZPCSHSymbols tya bne .2 + lda (ZPPtr1) + inc + tay + lda (ZPPtr1),y Get Ptr to DATA + clc + adc ZPCSHData + sta ZPCSHValue + lda #0 + adc ZPCSHData+1 + sta ZPCSHValue+1 + pla - - jsr CSH.VarSkipName - + + clc + adc ZPCSHBufPtr + sta ZPCSHBufPtr + bcc .8 + inc ZPCSHBufPtr+1 + clc .8 rts -.3 jsr CSH.VarSkipName +.3 lda (ZPPtr1) + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .4 + inc ZPPtr1+1 -.5 inc ZPPtr1 Skip Pointer to TYPE/DATA +.4 inc ZPPtr1 Skip Pointer to TYPE/DATA bne .1 inc ZPPtr1+1 bra .1 @@ -588,14 +608,6 @@ CSH.GetVar >LDYA ZPCSHSymbols sec rts *-------------------------------------- -CSH.VarSkipName lda (ZPPtr1) - sec - adc ZPPtr1 - sta ZPPtr1 - bcc .8 - inc ZPPtr1+1 -.8 rts -*-------------------------------------- * Stack *-------------------------------------- CSH.Push pha @@ -658,7 +670,9 @@ CSH.GetIdentLen ldy #0 jsr CSH.IsLetterOrDigit bcc .1 -.8 rts + +.8 tya + rts *-------------------------------------- CSH.GetCharNB jsr CSH.GetChar bcs CSH.GetNextCharNB.RTS @@ -737,7 +751,7 @@ CSH.ErrorMsg >LDA.G CSH.hBuf >STA.G CSH.LineNum iny >STA.G CSH.LineNum+1 - + .1 >LDYA ZPPtr1 >STYA ZPPtr2 Save actual line start @@ -775,12 +789,14 @@ CSH.ErrorMsg >LDA.G CSH.hBuf lda #$0A >SYSCALL PutChar.A + + lda ZPCSHBufPtr sec sbc ZPPtr2 beq .8 tay - + .7 phy lda #'-' >SYSCALL PutChar.A diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 2db84bb3..5716ada0 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -12,13 +12,13 @@ AUTO 6 .INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/MLI.ERR.I *-------------------------------------- -ZPPTR1 .EQ ZPBIN -ZPPTR2 .EQ ZPBIN+2 +ZPPtr1 .EQ ZPBIN +ZPPtr2 .EQ ZPBIN+2 ZPCMDBuf .EQ ZPBIN+4 -*ZPCSHBufBase .EQ ZPBIN+6 -ZPCSHBufPtr .EQ ZPBIN+8 -ZPCSHSymbols .EQ ZPBIN+10 -ZPCSHData .EQ ZPBIN+12 +ZPCSHBufPtr .EQ ZPBIN+6 +ZPCSHSymbols .EQ ZPBIN+8 +ZPCSHData .EQ ZPBIN+10 +ZPCSHValue .EQ ZPBIN+12 ZPCSHStack .EQ ZPBIN+14 *-------------------------------------- CmdLine.MAX .EQ 255 @@ -83,16 +83,22 @@ J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.SLEEP .DA Cmd.Exec.STARTPROC .DA Cmd.Exec.TIME -L.CSHCMDS .DA CSHCMDS -J.CSHCMDS .DA CSH.IF - .DA CSH.WHILE - .DA CSH.BREAK - .DA CSH.CONTINUE - .DA CSH.CHAR +L.CSH.KEYWORDS .DA CSH.KEYWORDS +J.CSH.KEYWORDS .DA CSH.CHAR .DA CSH.INT .DA CSH.LONG .DA CSH.FLOAT -J.CSHCMDS.END .DA CSH.IF.END + .DA CSH.IF + .DA CSH.WHILE + .DA CSH.ELSE + .DA CSH.DO + .DA CSH.FOR + .DA CSH.SWITCH + .DA CSH.CASE + .DA CSH.BREAK + .DA CSH.CONTINUE +J.CSH.KEYWORDS.END + .DA CSH.IF.END .DA CSH.WHILE.END L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages @@ -470,16 +476,81 @@ INTCMDS >CSTR "CD" >CSTR "STARTPROC" >CSTR "TIME" .HS 00 -CSHCMDS >PSTR "IF" - >PSTR "WHILE" - >PSTR "BREAK" - >PSTR "CONTINUE" - >PSTR "CHAR" - >PSTR "INT" - >PSTR "LONG" - >PSTR "FLOAT" +*-------------------------------------- +* Pre Operators: + - ! ~ ++ -- +*-------------------------------------- +CSH.PREOOPS >PSTR "+" + >PSTR "-" + >PSTR "!" + >PSTR "~" +*-------------------------------------- +* Post Operators: ++ -- +*-------------------------------------- +CSH.POSTOPS >PSTR "++" + >PSTR "--" + .HS 00 +*-- Binary ---- H to L prececence ----- +* Arithmetic Operators: * / % +* Arithmetic Operators: + - +* Shift Operators: << >> +* Relational Operators: < > >= < >= == != +* Bitwise Operators: & | ^ ~ +* Logical Operators: && || +*-------------------------------------- +CSH.BOPS >PSTR "+" + >PSTR "-" + >PSTR "*" + >PSTR "/" + >PSTR "%" + >PSTR "<<" + >PSTR ">>" + >PSTR "<" + >PSTR ">" + >PSTR ">=" + >PSTR "<" + >PSTR ">=" + >PSTR "==" + >PSTR "!=" + >PSTR "&" + >PSTR "|" + >PSTR "^" + >PSTR "~" + >PSTR "&&" + >PSTR "||" .HS 00 *-------------------------------------- +* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |= +*-------------------------------------- +CSH.AOPS >PSTR "=" + >PSTR "+=" + >PSTR "-=" + >PSTR "*=" + >PSTR "/=" + >PSTR "%=" + >PSTR "<<=" + >PSTR ">>=" + >PSTR "&=" + >PSTR "^=" + >PSTR "!=" + .HS 00 +*-------------------------------------- +* Reserved Keywords: +*-------------------------------------- +CSH.KEYWORDS >PSTR "char" + >PSTR "int" + >PSTR "long" + >PSTR "float" + >PSTR "if" + >PSTR "while" + >PSTR "else" + >PSTR "do" + >PSTR "for" + >PSTR "switch" + >PSTR "case" + .HS 00 +*-------------------------------------- +CSH.OPChars >PSTR "!~+-*/%=&|^&<>" +*-------------------------------------- MSG.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n" MSG.PROMPT >CSTR "$ " MSG.ECHO >CSTR ">%s\r\n" diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index cb67010f..a178ab0c 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -62,9 +62,9 @@ K.StrToL sec Signed K.StrToUL clc Unsigned jsr PullPtr1Ptr2Ptr3 >PULLA Base + jsr K.AToL.I bcs K.StrToUL.rts - * clc K.StrToUL.Exit adc ZPPtr2 @@ -91,6 +91,7 @@ K.AToL jsr PullPtr1Ptr2 C-String in Ptr2, Dst buffer in Ptr1 K.AToL.I jsr STDLIB.Dec2Hex bcs .9 phy Save Count processed + ldy #3 .3 lda STDLIB.32,y @@ -161,10 +162,10 @@ STDLIB.32.T10 ldx #3 dex bpl .1 - jsr STDLIB.32.ROL STDLIB.32 * 2 -> STDLIB.32 + jsr STDLIB.32.ROL STDLIB.32 * 2 -> STDLIB.32 bcs .9 overflow!!! - jsr STDLIB.32.ROL STDLIB.32 * 4 -> STDLIB.32 + jsr STDLIB.32.ROL STDLIB.32 * 4 -> STDLIB.32 bcs .9 overflow!!! ldx #0 @@ -181,8 +182,8 @@ STDLIB.32.T10 ldx #3 bcs .99 overflow!!! - jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32 - bcs .99 overflow!!! + jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32 + rts if CS, overflow!!! .9 pla discard saved STDLIB.32 pla