Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-06-15 17:15:48 +02:00
parent 10b4f9de2f
commit 091a515f4d
8 changed files with 91 additions and 59 deletions

View File

@ -617,7 +617,7 @@ Convert String to 32 bits (unsigned) int
# C # C
`long strtol (const char* str, char** endptr, int base);` `long strtol (const char* str, char** endptr, int base);`
`unsigned long strtol (const char* str, char** endptr, int base);` `unsigned long strtoul (const char* str, char** endptr, int base);`
# ASM # ASM
**In:** **In:**
@ -629,15 +629,24 @@ On stack (long)
# AToL # AToL
Convert String to 32 bits int Convert String to 32 bits int
# C
`long atol ( const char * str );`
# ASM
**In:** **In:**
+ PUSHW Source String (C-Sring) `>LDYA str`
+ PUSHW PTR to target buffer DWORD
**Out:** **Out:**
On stack (long)
# AToI.YA # AToI.YA
Convert String to 16 bits int
# C
`long atol ( const char * str );`
# ASM
**In:** **In:**
+ Y,A = Source String (C-String) `>LDYA str`
**Out:** **Out:**
+ Y,A = Int + Y,A = Int

Binary file not shown.

Binary file not shown.

View File

@ -19,9 +19,9 @@ CS.START cld
.DA #$61 6502,Level 1 (65c02) .DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1 .DA #1 BIN Layout Version 1
.DA 0 .DA 0
.DA CS.END-CS.START Code Length To Relocate .DA CS.END-CS.START CS
.DA 0 Data Segment to Allocate .DA DS.END-DS.START DS
.DA #16 SS .DA #64 SS
.DA #2 ZP .DA #2 ZP
.DA 0 .DA 0
*-------------------------------------- *--------------------------------------
@ -66,7 +66,7 @@ CS.RUN >LDYA L.MSG0
>STYA ZPPTR1 >STYA ZPPTR1
lda #K.SKTTABLE.SIZE lda #K.SKTTABLE.SIZE
sta SocketCount >STA.G SocketCount
.1 lda (ZPPTR1) .1 lda (ZPPTR1)
beq .7 beq .7
@ -110,10 +110,10 @@ CS.RUN >LDYA L.MSG0
adc /S.SOCKET adc /S.SOCKET
sta ZPPTR1+1 sta ZPPTR1+1
dec SocketCount >DEC.G SocketCount
bne .1 bne .1 A=0
lda #0 tell TSKMGR that all done ok, but * lda #0 tell TSKMGR that all done ok, but
sec we do not want to stay in memory sec we do not want to stay in memory
rts rts
*-------------------------------------- *--------------------------------------
@ -147,7 +147,14 @@ MSG1.S.8 .AZ "FIN-WAIT-2"
MSG1.S.9 .AZ "CLOSING" MSG1.S.9 .AZ "CLOSING"
MSG1.S.10 .AZ "TIME-WAIT" MSG1.S.10 .AZ "TIME-WAIT"
hLIBTCPIP .BS 1 hLIBTCPIP .BS 1
*--------------------------------------
.DUMMY
.OR 0
DS.START
SocketCount .BS 1 SocketCount .BS 1
DS.END
.ED
*--------------------------------------
MAN MAN
SAVE /A2OSX.SRC/BIN/NETSTAT.S SAVE /A2OSX.SRC/BIN/NETSTAT.S
ASM ASM

View File

@ -349,7 +349,6 @@ CSH.ULONG lda #CSH.T.ULONG
CSH.FLOAT lda #CSH.T.FLOAT CSH.FLOAT lda #CSH.T.FLOAT
CSH.TYPE >STA.G CSH.ACCT CSH.TYPE >STA.G CSH.ACCT
jsr CSH.GetChar jsr CSH.GetChar
bcs .9 bcs .9
cmp #' ' cmp #' '
@ -421,34 +420,34 @@ CSH.FnEval jsr CSH.GetCharNB
.2 lda (ZPPtr1) .2 lda (ZPPtr1)
beq .7 end of list, go check no more beq .7 end of list, go check no more
jsr CSH.ExpEval jsr CSH.GetNextCharNB skip '('
bcs .9
.20 jsr CSH.ExpEval
bcs .90 bcs .90
lda (ZPPtr1) lda (ZPPtr1)
cmp #CSH.T.VARIADIC cmp #CSH.T.VARIADIC
beq .3 bne .3
>CMP.G CSH.ACCT Match with ACC ? bra *
.3 >CMP.G CSH.ACCT Match with ACC ?
bne .99 bne .99
.3 inc ZPPtr1 advance to next arg
lda (ZPPtr1)
cmp #CSH.T.VARIADIC
bne .5
.4 jsr CSH.GetNextCharNB
cmp #','
bne .7
jsr CSH.GetNextCharNB
bra .2
.5 inc ZPPtr1 advance to next arg
beq .7 beq .7
inc ZPPtr1+1 inc ZPPtr1+1
lda (ZPPtr1) lda (ZPPtr1)
bne .4 beq .7
.4 jsr CSH.GetNextCharNB
bcs .9
cmp #','
bne .9
jsr CSH.GetNextCharNB
bra .20
.7 jsr CSH.GetNextCharNB .7 jsr CSH.GetNextCharNB
bcs .9 bcs .9
@ -473,7 +472,7 @@ CSH.FnEval jsr CSH.GetCharNB
CSH.ExpEval jsr CSH.ZeroACC CSH.ExpEval jsr CSH.ZeroACC
dec A=0 dec A=0
>STA.G CSH.EXPBOP1 >STA.G CSH.EXPBOP1
jsr CSH.GetCharNB jsr CSH.GetCharNB
bcs .9 bcs .9
@ -653,24 +652,23 @@ CSH.GetNumInACC >LDA.G CSH.ACCT
bcc .1 bcc .1
>PUSHWI ZPCSHBufPtr >PUSHWI ZPCSHBufPtr
>PUSHW ZPCSHBufPtr >LDYA ZPCSHBufPtr
>SYSCALL StrToF >SYSCALL StrToF
bcs .9 bcs .9
>PULLF.G CSH.ACC >PULLF.G CSH.ACC
clc
rts rts
.1 >PUSHBI 10 .1 >PUSHBI 10
>PUSHWI ZPCSHBufPtr >PUSHWI ZPCSHBufPtr
>PUSHW ZPCSHBufPtr >LDYA ZPCSHBufPtr
>SYSCALL StrToL >SYSCALL StrToL
bcs .9 bcs .9
>PULLL.G CSH.ACC >PULLL.G CSH.ACC
clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
CSH.ZeroACC lda #0 CSH.ZeroACC lda #0

View File

@ -8,7 +8,7 @@ AUTO 4,1
A2osX.MAIN.S .EQ A2osX.AUX-A2osX.MAIN A2osX.MAIN.S .EQ A2osX.AUX-A2osX.MAIN
A2osX.AUX.S .EQ A2osX.GP-A2osX.AUX A2osX.AUX.S .EQ A2osX.GP-A2osX.AUX
A2osX.GP.S .EQ GP.End-GP.CodeStart A2osX.GP.S .EQ GP.End-GP.CodeStart
A2osX.GP.SC .EQ GP.CodeEnd-GP.CodeStart A2osX.GP.SC .EQ GP.CodeEnd-GP.CodeStart
A2osX.D1.S .EQ A2osX.D2-A2osX.D1 A2osX.D1.S .EQ A2osX.D2-A2osX.D1
A2osX.D2.S .EQ A2osX.E0-A2osX.D2 A2osX.D2.S .EQ A2osX.E0-A2osX.D2
A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0 A2osX.E0.S .EQ A2osX.E0.E-A2osX.E0

View File

@ -76,7 +76,6 @@ MATH.Go jsr GP.ROMCALL
sec sec
sbc #5 sbc #5
sta pStack sta pStack
sta FORPNT sta FORPNT
lda pStack+1 lda pStack+1
sta FORPNT+1 sta FORPNT+1

View File

@ -13,13 +13,16 @@ AUTO 4,1
* **Out:** * **Out:**
* On stack (float) * On stack (float)
*\-------------------------------------- *\--------------------------------------
K.StrToF jsr K.AToF K.StrToF >STYA TXTPTR Ptr to source string
>PULLW ZPPtr3 >PULLW ZPPtr1
jsr K.AToF.I
lda TXTPTR lda TXTPTR
sta (ZPPtr3) sta (ZPPtr1)
ldy #1 ldy #1
lda TXTPTR+1 lda TXTPTR+1
sta (ZPPtr3),y sta (ZPPtr1),y
rts rts
*/-------------------------------------- */--------------------------------------
* ## AToF * ## AToF
@ -32,15 +35,25 @@ K.StrToF jsr K.AToF
* **Out:** * **Out:**
* On stack (float) * On stack (float)
*\-------------------------------------- *\--------------------------------------
K.AToF >PULLW FORPNT Ptr to dst buffer K.AToF >STYA TXTPTR Ptr to source string
>PULLW TXTPTR Ptr to source string
jsr CHARGOT K.AToF.I jsr CHARGOT
ldx #ROM.FIN ldx #ROM.FIN
**** DUP code in MATH.Go ****
jsr GP.ROMCALL jsr GP.ROMCALL
lda pStack
sec
sbc #5
sta pStack
sta FORPNT Ptr to dst buffer
lda pStack+1
sta FORPNT+1
ldx #ROM.GETFAC ldx #ROM.GETFAC
jsr GP.ROMCALL jsr GP.ROMCALL
clc clc
rts rts
*/-------------------------------------- */--------------------------------------
@ -48,7 +61,7 @@ K.AToF >PULLW FORPNT Ptr to dst buffer
* Convert String to 32 bits (unsigned) int * Convert String to 32 bits (unsigned) int
* # C * # C
* `long strtol (const char* str, char** endptr, int base);` * `long strtol (const char* str, char** endptr, int base);`
* `unsigned long strtol (const char* str, char** endptr, int base);` * `unsigned long strtoul (const char* str, char** endptr, int base);`
* # ASM * # ASM
* **In:** * **In:**
* `>PUSHB Base` * `>PUSHB Base`
@ -60,7 +73,8 @@ K.AToF >PULLW FORPNT Ptr to dst buffer
K.StrToL sec Signed K.StrToL sec Signed
.HS 90 BCC .HS 90 BCC
K.StrToUL clc Unsigned K.StrToUL clc Unsigned
jsr MEM.PullP1P2P3 >STYA ZPPtr2
>PULLW ZPPtr1
>PULLA Base >PULLA Base
jsr K.AToL.I jsr K.AToL.I
@ -68,25 +82,28 @@ K.StrToUL clc Unsigned
* clc * clc
K.StrToUL.Exit adc ZPPtr2 K.StrToUL.Exit adc ZPPtr2
sta (ZPPtr3) sta (ZPPtr1)
lda #0 lda #0
adc ZPPtr2+1 adc ZPPtr2+1
ldy #1 ldy #1
sta (ZPPtr3),y sta (ZPPtr1),y
K.StrToUL.rts rts K.StrToUL.rts rts
*/-------------------------------------- */--------------------------------------
* # AToL * # AToL
* Convert String to 32 bits int * Convert String to 32 bits int
* # C
* `long atol ( const char * str );`
* # ASM
* **In:** * **In:**
* PUSHW Source String (C-Sring) * `>LDYA str`
* PUSHW PTR to target buffer DWORD
* **Out:** * **Out:**
* On stack (long)
*\-------------------------------------- *\--------------------------------------
*STDLIB.32 .BS 4 32 bits max *STDLIB.32 .BS 4 32 bits max
STDLIB.32 .EQ FAC 32 bits max STDLIB.32 .EQ FAC 32 bits max
*-------------------------------------- *--------------------------------------
K.AToL jsr MEM.PullP1P2 C-String in Ptr2, Dst buffer in Ptr1 K.AToL >STYA ZPPtr2 C-String in Ptr2, Dst buffer in Ptr1
lda #10 base 10 lda #10 base 10
sec signed sec signed
@ -98,7 +115,7 @@ K.AToL.I jsr STDLIB.GetDec
ldy #3 ldy #3
.3 lda STDLIB.32,y .3 lda STDLIB.32,y
sta (ZPPtr1),y >PUSHA
dey dey
bpl .3 bpl .3
pla pla
@ -107,10 +124,12 @@ K.AToL.I jsr STDLIB.GetDec
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
* # AToI.YA * ## AToI.YA
* Convert String to 16 bits int * # C
* `int atoi ( const char * str );`
* # ASM
* **In:** * **In:**
* Y,A = Source String (C-String) * `>LDYA str`
* **Out:** * **Out:**
* Y,A = Int * Y,A = Int
*\-------------------------------------- *\--------------------------------------