Kernel 0.9.1 : SHELL, CSH style scripting.....(wip)

This commit is contained in:
Rémy GIBERT 2017-10-23 17:39:19 +02:00
parent a4d5f42fda
commit b028f95781
8 changed files with 278 additions and 206 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -40,31 +40,18 @@ L.MSG.CTRLCHAR .DA MSG.CTRLCHAR
L.ASCII .DA ASCII L.ASCII .DA ASCII
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
CS.INIT ldy #S.PS.ARGC CS.INIT
lda (pPs),y .1 >INC.G ArgCount
beq .99
>STA.G ArgCount
.1 >LDA.G ArgCount
dec
bmi .5
sta (pData),y
>SYSCALL GetArg.A >SYSCALL GetArg.A
bcs .7
>STYA ZPPtr1 >STYA ZPPtr1
ldy #1 lda (ZPPtr1)
lda (ZPPtr1),y
cmp #'-' cmp #'-'
bne .4 bne .4
lda (ZPPtr1) ldy #1
cmp #2
bne .4
iny
lda (ZPPtr1),y lda (ZPPtr1),y
ldx OptionList ldx OptionList
@ -85,12 +72,10 @@ CS.INIT ldy #S.PS.ARGC
sta (pData),y sta (pData),y
bra .1 bra .1
.4 >LDA.G FileCount .4 >INC.G FileCount
inc
sta (pData),y
bra .1 scan for any other args bra .1 scan for any other args
.5 >LDA.G FileCount .7 >LDA.G FileCount
beq .99 beq .99
>LDYAI 256 >LDYAI 256
@ -128,16 +113,13 @@ CS.RUN >SYSCALL GetChar
>LDA.G hFILE >LDA.G hFILE
bne .2 bne .2
.1 >LDA.G ArgIndex .1 >INC.G ArgIndex
inc
sta (pData),y
>SYSCALL GetArg.A >SYSCALL GetArg.A
bcs .99 No more arg...the end! bcs .99 No more arg...the end!
>STYA ZPPtr1 >STYA ZPPtr1
ldy #1 lda (ZPPtr1)
lda (ZPPtr1),y
cmp #'-' cmp #'-'
beq .1 An option, skip... beq .1 An option, skip...

View File

@ -87,7 +87,8 @@ CS.RUN >SYSCALL Sleep
>SYSCALL GetChar >SYSCALL GetChar
bcs CS.RUN bcs CS.RUN
.11 jsr PRINTA2 .11
* jsr PRINTA2
>SYSCALL Sleep >SYSCALL Sleep
>SYSCALL GetChar >SYSCALL GetChar
@ -115,7 +116,7 @@ CS.RUN.LOOP
>SYSCALL GetChar >SYSCALL GetChar
bcs .4 bcs .4
jsr PRINTA * jsr PRINTA
cmp #IAC cmp #IAC
beq CS.RUN.IACMODE beq CS.RUN.IACMODE
@ -144,22 +145,22 @@ CS.RUN.IACMODE >SYSCALL Sleep Wait for IAC VERB (or SB)
bcs CS.RUN.IACMODE bcs CS.RUN.IACMODE
>STA.G IAC.VERB >STA.G IAC.VERB
jsr PRINTA * jsr PRINTA
.1 >SYSCALL Sleep Wait for IAC OPT .1 >SYSCALL Sleep Wait for IAC OPT
>SYSCALL GetChar >SYSCALL GetChar
bcs .1 bcs .1
>STA.G IAC.OPT >STA.G IAC.OPT
jsr PRINTA * jsr PRINTA
>LDA.G IAC.VERB >LDA.G IAC.VERB
cmp #SB cmp #SB
beq CS.RUN.IACSB beq CS.RUN.IACSB
*-------------------------------------- *--------------------------------------
CS.RUN.IACVERB CS.RUN.IACVERB
lda #'.' * lda #'.'
>SYSCALL PutChar.A * >SYSCALL PutChar.A
jmp CS.RUN.LOOP jmp CS.RUN.LOOP
*-------------------------------------- *--------------------------------------
CS.RUN.IACSB CS.RUN.IACSB
@ -169,7 +170,7 @@ CS.RUN.IACSB
>STA.G IAC.SB >STA.G IAC.SB
jsr PRINTA * jsr PRINTA
lda #0 lda #0
sta (pData) reset IAC.SB.DATA sta (pData) reset IAC.SB.DATA
@ -182,7 +183,7 @@ CS.RUN.IACSB
beq .4 end of DATA, go wait SE beq .4 end of DATA, go wait SE
pha pha
jsr PRINTA * jsr PRINTA
ldy #IAC.SB.DATA-1 ldy #IAC.SB.DATA-1
@ -216,8 +217,9 @@ CS.RUN.IACSB
>PUSHW L.ENV.TERM >PUSHW L.ENV.TERM
>SYSCALL SetEnv >SYSCALL SetEnv
.8 lda #':' .8
>SYSCALL PutChar.A * lda #':'
* >SYSCALL PutChar.A
jmp CS.RUN.LOOP jmp CS.RUN.LOOP
*-------------------------------------- *--------------------------------------
CS.DOEVENT lda (pEvent) CS.DOEVENT lda (pEvent)

View File

@ -69,7 +69,7 @@ CSH.Run lda #0
jsr CSH.Pop was expected, get stacked Cmd... jsr CSH.Pop was expected, get stacked Cmd...
tax tax
jmp (J.CSHCMDS.END,x) jmp (J.CSH.KEYWORDS.END,x)
.1 cmp #$0D .1 cmp #$0D
bne .2 bne .2
@ -87,14 +87,14 @@ CSH.Run lda #0
bra .9 error, todo : PREOPS ++ --..... bra .9 error, todo : PREOPS ++ --.....
.3 >LDYA L.CSHCMDS .3 >LDYA L.CSH.KEYWORDS
jsr CSH.IsKeyword jsr CSH.IsKeyword
bcs .4 not an internal CSH keyword.... bcs .4 not an internal CSH keyword....
txa txa
>STA.G CSH.CmdSave >STA.G CSH.CmdSave
jmp (J.CSHCMDS,x) jmp (J.CSH.KEYWORDS,x)
.4 jsr CSH.GetVar Y=Ptr To Value .4 jsr CSH.GetVar Y=Ptr To Value
bcs .5 bcs .5
@ -113,7 +113,7 @@ CSH.Run lda #0
ply ply
bcs .9 bcs .9
jsr CSH.SetVarValueAtY jsr CSH.SetVarValue
bcs .9 bcs .9
cmp #';' cmp #';'
bne .99 bne .99
@ -126,28 +126,31 @@ CSH.Run lda #0
.5 .5
jsr CSH.RestorePtr Restore ptr to get full cmd line to execute 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 beq .7
sta (ZPCMDBuf),y sta (ZPCMDBuf),y
iny iny
cpy #CmdLine.MAX cpy #CmdLine.MAX
beq .8 bne .6
bra .99 Line Too long !!!
jsr CSH.GetNextChar .7 tya
bcc .6 clc
bra .8 adc ZPCSHBufPtr
sta ZPCSHBufPtr
.7 jsr CSH.GetNextCharNB Skip CR bcc .8
inc ZPCSHBufPtr+1
.8 lda #0 .8 lda #0
sta (ZPCMDBuf),y sta (ZPCMDBuf),y
tya tya
>STA.G CmdBuflen >STA.G CmdBuflen
lda #$ff lda #$ff
@ -181,16 +184,12 @@ CSH.Quit >LDA.G CSH.hBuf
.8 rts .8 rts
*-------------------------------------- *--------------------------------------
CSH.SavePtr phy CSH.SavePtr >LDYA ZPCSHBufPtr
>LDYA ZPCSHBufPtr
>STYA.G CSH.BufPtrSave >STYA.G CSH.BufPtrSave
ply
rts rts
*-------------------------------------- *--------------------------------------
CSH.RestorePtr phy CSH.RestorePtr >LDYA.G CSH.BufPtrSave
>LDYA.G CSH.BufPtrSave
>STYA ZPCSHBufPtr >STYA ZPCSHBufPtr
ply
rts rts
*-------------------------------------- *--------------------------------------
CSH.IsKeyword >STYA ZPPtr1 CSH.IsKeyword >STYA ZPPtr1
@ -245,6 +244,69 @@ CSH.IsKeyword >STYA ZPPtr1
sec sec
rts 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.WHILE
CSH.IF jsr CSH.GetCharNB CSH.IF jsr CSH.GetCharNB
bcs .9 bcs .9
@ -333,78 +395,18 @@ CSH.WHILE.END jsr CSH.Pop
clc clc
rts rts
*-------------------------------------- *--------------------------------------
CSH.ELSE
CSH.DO
CSH.FOR
CSH.SWITCH
CSH.CASE
CSH.BREAK CSH.BREAK
*--------------------------------------
CSH.CONTINUE CSH.CONTINUE
lda #CSH.E.SYNTAX lda #CSH.E.SYNTAX
sec sec
rts 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 CSH.ExpEval jsr CSH.ZeroACC
jsr CSH.GetCharNB jsr CSH.GetCharNB
@ -449,7 +451,7 @@ CSH.GetNumInACC >LDA.G CSH.ACCT
>PUSHWI ZPCSHBufPtr >PUSHWI ZPCSHBufPtr
>PUSHW ZPCSHBufPtr >PUSHW ZPCSHBufPtr
>PUSHEA.G CSH.ACC >PUSHEA.G CSH.ACC
>DEBUG
>SYSCALL StrToL >SYSCALL StrToL
rts rts
*-------------------------------------- *--------------------------------------
@ -467,13 +469,14 @@ CSH.ZeroACC lda #0
* Vars... * Vars...
*-------------------------------------- *--------------------------------------
CSH.AddVar jsr CSH.GetIdentLen CSH.AddVar jsr CSH.GetIdentLen
sec sec
>ADC.G CSH.SymbolsPtr >ADC.G CSH.SymbolsPtr Enough room to store this symbol ?
bcs .99 bcs .99
adc #1 OFS adc #1 Add One Byte for storing Ptr to DATA
bcs .99 bcs .99 Out of Symbols space
>LDA.G CSH.DataPtr >LDA.G CSH.DataPtr
pha pha
@ -482,58 +485,44 @@ CSH.AddVar jsr CSH.GetIdentLen
tax tax
sec +1 for Type sec +1 for Type
adc CSH.TSIZE,x adc CSH.TSIZE,x
bcs .98 Out of memory bcs .98 Out of Data Space
>LDA.G CSH.SymbolsPtr >LDA.G CSH.SymbolsPtr
tay pha
jsr CSH.GetIdentLen
ply
sta (ZPCSHSymbols),y
iny
jsr CSH.GetChar jsr CSH.GetChar
.1 sta (ZPCSHSymbols),y .1 sta (ZPCSHSymbols),y Store this symbol....
iny iny
jsr CSH.GetNextChar jsr CSH.GetNextChar
jsr CSH.IsLetterOrDigit jsr CSH.IsLetterOrDigit
bcc .1 bcc .1
pla Get Back Data OFS pla Get Back Data Ptr
pha pha
sta (ZPCSHSymbols),y sta (ZPCSHSymbols),y
iny iny
tya tya
>STA.G CSH.SymbolsPtr >STA.G CSH.SymbolsPtr Mark new end of Symbols
>LEA.G CSH.ACCT pla Get again Data Ptr
>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
clc clc
adc ZPCSHData
sta ZPCSHValue
lda #0
adc ZPCSHData+1
sta ZPCSHValue+1
* clc
rts rts
.98 pla .98 pla
@ -541,8 +530,19 @@ CSH.AddVar jsr CSH.GetIdentLen
sec sec
rts 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 clc
rts rts
*-------------------------------------- *--------------------------------------
@ -550,8 +550,8 @@ CSH.GetVar >LDYA ZPCSHSymbols
>STYA ZPPtr1 >STYA ZPPtr1
jsr CSH.GetIdentLen jsr CSH.GetIdentLen
phy pha
.1 lda (ZPPtr1) .1 lda (ZPPtr1)
beq .9 beq .9
@ -570,16 +570,36 @@ CSH.GetVar >LDYA ZPCSHSymbols
tya tya
bne .2 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 pla
jsr CSH.VarSkipName clc
adc ZPCSHBufPtr
sta ZPCSHBufPtr
bcc .8
inc ZPCSHBufPtr+1
clc clc
.8 rts .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 bne .1
inc ZPPtr1+1 inc ZPPtr1+1
bra .1 bra .1
@ -588,14 +608,6 @@ CSH.GetVar >LDYA ZPCSHSymbols
sec sec
rts rts
*-------------------------------------- *--------------------------------------
CSH.VarSkipName lda (ZPPtr1)
sec
adc ZPPtr1
sta ZPPtr1
bcc .8
inc ZPPtr1+1
.8 rts
*--------------------------------------
* Stack * Stack
*-------------------------------------- *--------------------------------------
CSH.Push pha CSH.Push pha
@ -658,7 +670,9 @@ CSH.GetIdentLen ldy #0
jsr CSH.IsLetterOrDigit jsr CSH.IsLetterOrDigit
bcc .1 bcc .1
.8 rts
.8 tya
rts
*-------------------------------------- *--------------------------------------
CSH.GetCharNB jsr CSH.GetChar CSH.GetCharNB jsr CSH.GetChar
bcs CSH.GetNextCharNB.RTS bcs CSH.GetNextCharNB.RTS
@ -737,7 +751,7 @@ CSH.ErrorMsg >LDA.G CSH.hBuf
>STA.G CSH.LineNum >STA.G CSH.LineNum
iny iny
>STA.G CSH.LineNum+1 >STA.G CSH.LineNum+1
.1 >LDYA ZPPtr1 .1 >LDYA ZPPtr1
>STYA ZPPtr2 Save actual line start >STYA ZPPtr2 Save actual line start
@ -775,12 +789,14 @@ CSH.ErrorMsg >LDA.G CSH.hBuf
lda #$0A lda #$0A
>SYSCALL PutChar.A >SYSCALL PutChar.A
lda ZPCSHBufPtr lda ZPCSHBufPtr
sec sec
sbc ZPPtr2 sbc ZPPtr2
beq .8 beq .8
tay tay
.7 phy .7 phy
lda #'-' lda #'-'
>SYSCALL PutChar.A >SYSCALL PutChar.A

View File

@ -12,13 +12,13 @@ AUTO 6
.INB /A2OSX.BUILD/INC/A2OSX.I .INB /A2OSX.BUILD/INC/A2OSX.I
.INB /A2OSX.BUILD/INC/MLI.ERR.I .INB /A2OSX.BUILD/INC/MLI.ERR.I
*-------------------------------------- *--------------------------------------
ZPPTR1 .EQ ZPBIN ZPPtr1 .EQ ZPBIN
ZPPTR2 .EQ ZPBIN+2 ZPPtr2 .EQ ZPBIN+2
ZPCMDBuf .EQ ZPBIN+4 ZPCMDBuf .EQ ZPBIN+4
*ZPCSHBufBase .EQ ZPBIN+6 ZPCSHBufPtr .EQ ZPBIN+6
ZPCSHBufPtr .EQ ZPBIN+8 ZPCSHSymbols .EQ ZPBIN+8
ZPCSHSymbols .EQ ZPBIN+10 ZPCSHData .EQ ZPBIN+10
ZPCSHData .EQ ZPBIN+12 ZPCSHValue .EQ ZPBIN+12
ZPCSHStack .EQ ZPBIN+14 ZPCSHStack .EQ ZPBIN+14
*-------------------------------------- *--------------------------------------
CmdLine.MAX .EQ 255 CmdLine.MAX .EQ 255
@ -83,16 +83,22 @@ J.INTCMDS .DA Cmd.Exec.CD
.DA Cmd.Exec.SLEEP .DA Cmd.Exec.SLEEP
.DA Cmd.Exec.STARTPROC .DA Cmd.Exec.STARTPROC
.DA Cmd.Exec.TIME .DA Cmd.Exec.TIME
L.CSHCMDS .DA CSHCMDS L.CSH.KEYWORDS .DA CSH.KEYWORDS
J.CSHCMDS .DA CSH.IF J.CSH.KEYWORDS .DA CSH.CHAR
.DA CSH.WHILE
.DA CSH.BREAK
.DA CSH.CONTINUE
.DA CSH.CHAR
.DA CSH.INT .DA CSH.INT
.DA CSH.LONG .DA CSH.LONG
.DA CSH.FLOAT .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 .DA CSH.WHILE.END
L.ERR.Codes .DA ERR.Codes L.ERR.Codes .DA ERR.Codes
L.ERR.Messages .DA ERR.Messages L.ERR.Messages .DA ERR.Messages
@ -470,16 +476,81 @@ INTCMDS >CSTR "CD"
>CSTR "STARTPROC" >CSTR "STARTPROC"
>CSTR "TIME" >CSTR "TIME"
.HS 00 .HS 00
CSHCMDS >PSTR "IF" *--------------------------------------
>PSTR "WHILE" * Pre Operators: + - ! ~ ++ --
>PSTR "BREAK" *--------------------------------------
>PSTR "CONTINUE" CSH.PREOOPS >PSTR "+"
>PSTR "CHAR" >PSTR "-"
>PSTR "INT" >PSTR "!"
>PSTR "LONG" >PSTR "~"
>PSTR "FLOAT" *--------------------------------------
* 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 .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.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n"
MSG.PROMPT >CSTR "$ " MSG.PROMPT >CSTR "$ "
MSG.ECHO >CSTR ">%s\r\n" MSG.ECHO >CSTR ">%s\r\n"

View File

@ -62,9 +62,9 @@ K.StrToL sec Signed
K.StrToUL clc Unsigned K.StrToUL clc Unsigned
jsr PullPtr1Ptr2Ptr3 jsr PullPtr1Ptr2Ptr3
>PULLA Base >PULLA Base
jsr K.AToL.I jsr K.AToL.I
bcs K.StrToUL.rts bcs K.StrToUL.rts
* clc * clc
K.StrToUL.Exit adc ZPPtr2 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 K.AToL.I jsr STDLIB.Dec2Hex
bcs .9 bcs .9
phy Save Count processed phy Save Count processed
ldy #3 ldy #3
.3 lda STDLIB.32,y .3 lda STDLIB.32,y
@ -161,10 +162,10 @@ STDLIB.32.T10 ldx #3
dex dex
bpl .1 bpl .1
jsr STDLIB.32.ROL STDLIB.32 * 2 -> STDLIB.32 jsr STDLIB.32.ROL STDLIB.32 * 2 -> STDLIB.32
bcs .9 overflow!!! bcs .9 overflow!!!
jsr STDLIB.32.ROL STDLIB.32 * 4 -> STDLIB.32 jsr STDLIB.32.ROL STDLIB.32 * 4 -> STDLIB.32
bcs .9 overflow!!! bcs .9 overflow!!!
ldx #0 ldx #0
@ -181,8 +182,8 @@ STDLIB.32.T10 ldx #3
bcs .99 overflow!!! bcs .99 overflow!!!
jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32 jsr STDLIB.32.ROL STDLIB.32 * 10 -> STDLIB.32
bcs .99 overflow!!! rts if CS, overflow!!!
.9 pla discard saved STDLIB.32 .9 pla discard saved STDLIB.32
pla pla