From 8ec7b2e4437bd540a45748d353ff684fe1233d15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 25 May 2018 17:09:14 +0200 Subject: [PATCH] Kernel 0.9.1 : KERNEL, Extending and generalize the use of SScanF --- .Docs/KERNEL.md | 10 +++--- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/ARP.S.txt | 17 ++++++++-- SYS/KERNEL.S.MEM.txt | 22 +++++++++++++ SYS/KERNEL.S.STDIO.txt | 67 ++++++++++++++++++++++--------------- SYS/KERNEL.S.STDLIB.txt | 69 ++++++++++++++++++++++++++++++--------- 7 files changed, 137 insertions(+), 48 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 92a0cfa0..2c46ac67 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -637,6 +637,8 @@ Scan a C-String (in progress) + %D : word * %L : long int * %U : dword + + %h : HEX byte + + %H : HEX word + Y,A = PTR to String to scan (ex: "192.168.1.5") ## Out: @@ -662,14 +664,14 @@ Specifiers : + %B : pull 2 bytes to Print BIN + %d : pull 1 byte unsigned DEC 0..255 + %D : pull 2 bytes unsigned DEC 0..65535 - + %u : pull 2 bytes PTR to 4 bytes long unsigned DEC 0..4294967295 - + %e : pull 2 bytes PTR to 5 Bytes float (-)1.23456789e+12 - + %f : pull 2 bytes PTR to 5 Bytes float (-)3.1415 + + %u : pull 4 bytes long unsigned DEC 0..4294967295 + + %e : pull 5 Bytes float (-)1.23456789e+12 + + %f : pull 5 Bytes float (-)3.1415 + %h : pull 1 byte to Print HEX + %H : pull 2 bytes to Print HEX + %i : pull 1 byte to Print signed DEC -128..127 + %I : pull 2 bytes to Print signed DEC -32768..32767 - + %L : pull 2 bytes PTR to 4 bytes signed DEC -2147483648..2147483647 + + %L : pull 4 bytes signed DEC -2147483648..2147483647 + %n : pull 1 byte to Print low Nibble HEX + %N : pull 1 byte to Print high Nibble HEX + %s : pull 2 bytes ptr to C-Style String diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 8a80a4703e74961a3964642aa34854ec24b639a3..eecbf294be06dd12e35601324c5526d15d042dea 100644 GIT binary patch delta 2700 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index a5dc091491d3cb398691b5cb63eb5d9de7352fd7..3570eeead66213c0c9217b2b7c1356a4205bae8d 100644 GIT binary patch delta 11008 zcmai4d0bmn_P;O5qZh&!5|*-*QlKf@BMHzFx(NXUOA7*Bt&S;#f>NM_+TxZzw$`@R z)+)ESj$2);jymnsZR%_~uH#m%I_{(6Z*z?qAFPm*W*mqEaVbZT7O15U#KvdIT4s*dGkKDZ-oaBiT! zN-1#_xQO`)GO?k@rz%cj`wf}s>SD=Ujc{*L4y z^!wTf{XLoJAMg|T4`hNwJxP>u*4Eud%uf-;&43sp^p7O}_}n6r@-zuCR$AG`<&kFT zS+=u0vat9$GSS!RCG>eR(eB$u%r8J@UpH6D@gkWx&)+|(lG5rLVkgTZ(<)}a1gbWF z7|J~yuA=-hG;+N1-{z;eBh&1&U;TgPpTPXNud!BlWNz+BGSS_>P0e-?^Ber%K{dOS z$Zvuo@-6HHU$XOUc7r?85%~_8@V4_!9I8H4EuArMKyB;Y(lg-eC$v(U7}(||(N)sK z2H$2?DR&d*B->nWOJ6tKoE0{|wNr2HX| zN3Br(TiV)uem}9x5=%=p=VnAm`NM0}#cJnr-zK%UL#^G?-K{ox2Rg~j84^1?)tqdm zQvP~wV6!467DzRxJEA0USUDXX#1hR1UUlBOrlx^@XC5)f=$r2(ax9e2kCWIlspffx zc!_>3#3o+LnGyvKNGkLf~o><4&mk%s0^J?zrr!3hjxJw2p*u~Q<0oEb zg5%dWDor@Mu%wnW4S_M3F~BJ@fVc6pE_9x(AO#bUr;X{v0k!#*co zWtwQ~!|`y~^2#+FOw3nfvIvLrI3y%86V~h>7z~?Bk`6+(hU&GI_2JN&6GCBT`f-LO zfnH-0TXe111?P3_>?qk`xZcEWT5h(M7PKh*C~B1zjmsNX)sW;HOqyYFpfD|EZRHwb zz7hH$$|-KL=q7d|N?w?Dvq_60ski8R(E=9LHA-{M>B^yKc~>BGWQ7Q&8G3|(NzQ@+ z(o7L<vP8)t5~aXK~QoIBM{xD2~4qm(k&2y|7wViB5P1>jyqGU-kjz=aw(Xa)q^0Z{gxy02 zM$@ZD$GIvc*InT74SkD*cD?HtUxK7O7A=6Fj5e$|o zP5oUx1GP$%x4nUwdvzWg;og0aleAfQ=%6Dqo zysbKW*u^$ZH^{v45y^oIC&3p1oP6=Ax_L&3^^#K;bSY*EU!(yMSj^jX-Aah8f?3oM z4;Ng;sNs;&jEJM1HL4x$%tnQ8&#v>3BBAh>0Z*rw=aBpzEZ!24ekdX0aclHhy45-n z=+?t*m9u%;EwY@0|II%`7

FO2Tz6i`pwW176`S<_(y}Gd4V204pmdLiLX{rc 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 V6>WU_GV5DMTgNUnAG$Q!@W1O~3!eZ0 delta 10362 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 A@&Et; diff --git a/BIN/ARP.S.txt b/BIN/ARP.S.txt index 229a22b5..809ec828 100644 --- a/BIN/ARP.S.txt +++ b/BIN/ARP.S.txt @@ -35,6 +35,7 @@ CS.START cld .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP L.SSCANF.IP .DA SSCANF.IP +L.SSCANF.MAC .DA SSCANF.MAC L.MSG0 .DA MSG0 L.MSG1 .DA MSG1 L.MSG2 .DA MSG2 @@ -65,9 +66,17 @@ CS.RUN ldy #S.PS.ARGC >SYSCALL GetArg.A >SYSCALL SScanF.YA - bcc CS.RUN.QUERY + bcs .9 + + ldy #S.PS.ARGC + lda (pPs),y + cmp #1 + beq CS.RUN.QUERY + + cmp #2 + beq CS.RUN.ADD - lda #K.E.SYN +.9 lda #K.E.SYN sec rts *-------------------------------------- @@ -107,6 +116,9 @@ CS.RUN.QUERY jsr Init.Timeout .9 sec rts +*-------------------------------------- +CS.RUN.ADD + *-------------------------------------- CS.RUN.DUMP >LIBCALL hLIBTCPIP,LIBTCPIP.ARP.GETCACHE >STYA ZPPTR1 @@ -187,6 +199,7 @@ Wait.TimeOut sec CS.END LIBTCPIP .AZ "libtcpip.o" SSCANF.IP .AZ "%d.%d.%d.%d" +SSCANF.MAC .AZ "%h:%h:%h:%h:%h:%h" MSG0 .AZ "STS TTL MAC Address IP Address\r\n" MSG1 .AZ "$%h %5D %h:%h:%h:%h:%h:%h %d.%d.%d.%d\r\n" MSG2 .AZ "%d.%d.%d.%d is at %h:%h:%h:%h:%h:%h\r\n" diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index b782b7e1..b78163f7 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -661,6 +661,28 @@ MEM.IsDigit.RTS rts MEM.IsDigit.8 clc rts *-------------------------------------- +MEM.IsHexDigit jsr MEM.IsDigit + bcc .8 + + cmp #'A' + bcc MEM.IsDigit.9 + cmp #'F'+1 + bcc .1 + + cmp #'a' + bcc MEM.IsDigit.9 + cmp #'f'+1 + bcs MEM.IsDigit.RTS + + eor #$20 +.1 +* clc + sbc #'A'-11 cc so A->10 (11-CC) + clc + +.8 and #$0F + rts +*-------------------------------------- MEM.SetKeyCharY sta CLRWRITEAUX sta (ZPSListKeyPtr),y sta SETWRITEAUX diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index d46ec339..712b73db 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -618,12 +618,14 @@ K.Rename jsr PFT.CheckPathSTK >MLICALL MLIRENAME rts *-------------------------------------- -K.PrintF.PadL .BS 1 -K.PrintF.PadC .BS 1 -*-------------------------------------- +*K.PrintF.PadL .BS 1 +*K.PrintF.PadC .BS 1 *HEXBUF .BS 4 *BCDBUF .BS 5 5, enough to handle 10 digits (32bits) +*-------------------------------------- HEXBUF .EQ FAC +K.PrintF.PadL .EQ FAC+4 +K.PrintF.PadC .EQ FAC+5 BCDBUF .EQ ARG */-------------------------------------- * # SScanF.YA @@ -638,6 +640,8 @@ BCDBUF .EQ ARG * %D : word * %L : long int * %U : dword +* %h : HEX byte +* %H : HEX word * Y,A = PTR to String to scan (ex: "192.168.1.5") * ## Out: *\-------------------------------------- @@ -693,13 +697,15 @@ K.SScanF.YA >STYA ZPPtr2 String to Scan lda K.SScanFTBL+1,x Get VAR size jmp (K.SScanFJMP,x) *-------------------------------------- -K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4 +K.SScanFTBL .DA #'i,#1,#'d,#1,#'I,#2,#'D,#2,#'l,#4,#'u,#4,#'h,#1,#'H,#2 K.SScanFJMP .DA K.SScanF.I .DA K.SScanF.D .DA K.SScanF.II .DA K.SScanF.DD .DA K.SScanF.L .DA K.SScanF.U + .DA K.SScanF.H + .DA K.SScanF.HH *-------------------------------------- K.SScanF.I K.SScanF.D @@ -708,9 +714,15 @@ K.SScanF.DD K.SScanF.L K.SScanF.U pha Save VAL size - jsr STDLIB.Dec2Hex + jsr STDLIB.GetDec + bra K.SScanF.GetVAL +*-------------------------------------- +K.SScanF.HH +K.SScanF.H pha - tya Y=char count parsed + jsr STDLIB.GetHex + +K.SScanF.GetVAL tya Y=char count parsed clc adc ZPPtr2 sta ZPPtr2 @@ -722,7 +734,7 @@ K.SScanF.U pha Save VAL size .2 lda STDLIB.32-1,y dey sta (ZPPtr3),y - bpl .2 + bne .2 .9 rts */-------------------------------------- @@ -745,14 +757,14 @@ K.SScanF.U pha Save VAL size * %B : pull 2 bytes to Print BIN * %d : pull 1 byte unsigned DEC 0..255 * %D : pull 2 bytes unsigned DEC 0..65535 -* %u : pull 2 bytes PTR to 4 bytes long unsigned DEC 0..4294967295 -* %e : pull 2 bytes PTR to 5 Bytes float (-)1.23456789e+12 -* %f : pull 2 bytes PTR to 5 Bytes float (-)3.1415 +* %u : pull 4 bytes long unsigned DEC 0..4294967295 +* %e : pull 5 Bytes float (-)1.23456789e+12 +* %f : pull 5 Bytes float (-)3.1415 * %h : pull 1 byte to Print HEX * %H : pull 2 bytes to Print HEX * %i : pull 1 byte to Print signed DEC -128..127 * %I : pull 2 bytes to Print signed DEC -32768..32767 -* %L : pull 2 bytes PTR to 4 bytes signed DEC -2147483648..2147483647 +* %L : pull 4 bytes signed DEC -2147483648..2147483647 * %n : pull 1 byte to Print low Nibble HEX * %N : pull 1 byte to Print high Nibble HEX * %s : pull 2 bytes ptr to C-Style String @@ -921,14 +933,8 @@ PrintF.L sec signed long PrintF.U clc unsigned long (DWORD) ldx #3 4 bytes - >PULLW ZPPtr2 - - ldy #3 - -.1 lda (ZPPtr2),y - sta HEXBUF,y - dey - bpl .1 + >PULLW HEXBUF + >PULLW HEXBUF+2 PrintF.U.1 bcc PrintF.Hex2Dec unsigned, nothing to check @@ -986,7 +992,7 @@ PrintF.Hex2Dec ror .31+1 lda #'-' jsr STDIO.COut -.9 lda K.PrintF.PadL any Len format ? +.9 lda K.PrintF.PadL any Len format ? beq .4 no lda #10 @@ -1043,21 +1049,28 @@ PrintF.Hex2Dec ror .31+1 PrintF.E sec Force "E+12" .HS 90 BCC PrintF.F clc - >PULLW INDEX - >ROMCALL SETFAC + lda pStack+1 + sta INDEX+1 + lda pStack + sta INDEX + + clc + adc #5 + sta pStack + >ROMCALL SETFAC + ldy #3 In order not to trash A2osX.SaveSM,A2osX.SaveSX >ROMCALL FOUT - ldx #0 + ldy #0 -.2 lda $102,x +.2 lda $102,y beq .8 - phx jsr STDIO.COut - plx - inx + + iny bne .2 .8 clc diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 427b7f6e..dc6026e7 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -89,7 +89,7 @@ K.AToL jsr MEM.PullP1P2 C-String in Ptr2, Dst buffer in Ptr1 lda #10 base 10 sec signed -K.AToL.I jsr STDLIB.Dec2Hex +K.AToL.I jsr STDLIB.GetDec bcs .9 phy Save Count processed @@ -116,15 +116,56 @@ K.AToI.YA >STYA ZPPtr2 lda #10 base 10 sec signed - jsr STDLIB.Dec2Hex + jsr STDLIB.GetDec bcs .9 >LDYA STDLIB.32 .9 rts *-------------------------------------- -* Convert ZPPtr2 to STDLIB.32 +* Convert Hex int at ZPPtr2 to STDLIB.32 *-------------------------------------- -STDLIB.Dec2Hex jsr STDLIB.32.Clear +STDLIB.GetHex lda (ZPPtr2) + beq .9 + + jsr MEM.IsHexDigit + bcs .9 + + jsr STDLIB.32.Clear + + sta STDLIB.32 + + ldy #$ff + +.1 iny + lda (ZPPtr2),y + beq .8 + jsr MEM.IsHexDigit + bcs .8 + + pha + + ldx #4 + +.2 jsr STDLIB.32.T2 + bcs .99 overflow!!! + dex + bne .2 + + pla + ora STDLIB.32 + sta STDLIB.32 + bra .1 + +.8 clc + rts + +.99 pla +.9 sec + rts +*-------------------------------------- +* Convert Decimal int at ZPPtr2 to STDLIB.32 +*-------------------------------------- +STDLIB.GetDec jsr STDLIB.32.Clear ldy #$ff @@ -165,11 +206,11 @@ STDLIB.32.T10 ldx #3 dex bpl .1 - jsr .7 STDLIB.32 * 2 -> STDLIB.32 - bcs .9 overflow!!! + jsr STDLIB.32.T2 STDLIB.32 * 2 -> STDLIB.32 + bcs STDLIB.32.9 overflow!!! - jsr .7 STDLIB.32 * 4 -> STDLIB.32 - bcs .9 overflow!!! + jsr STDLIB.32.T2 STDLIB.32 * 4 -> STDLIB.32 + bcs STDLIB.32.9 overflow!!! phy Save Y, pointing to next char @@ -187,24 +228,22 @@ STDLIB.32.T10 ldx #3 ply - bcs .99 overflow!!! + bcs STDLIB.32.RTS overflow!!! -* STDLIB.32 * 10 -> STDLIB.32 +* STDLIB.32 * 2 -> STDLIB.32 -.7 asl STDLIB.32 +STDLIB.32.T2 asl STDLIB.32 rol STDLIB.32+1 rol STDLIB.32+2 rol STDLIB.32+3 rts if CS, overflow!!! -.9 pla discard saved STDLIB.32 +STDLIB.32.9 pla discard saved STDLIB.32 pla pla pla -.99 rts -*-------------------------------------- - +STDLIB.32.RTS rts *-------------------------------------- STDLIB.32.Clear ldx #3