From 4cd04a6f2c1b792ceabf80b0d198cb164ed59f3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 30 Oct 2017 17:11:07 +0100 Subject: [PATCH] Kernel 0.9.1 : Math API, bug fix, and F To Int conversion --- .Docs/KERNEL.md | 22 ++++++++++++++++++++++ .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/A2osX.I.txt | 2 +- INC/KERNEL.I.txt | 3 ++- SYS/KERNEL.S.GP.txt | 8 ++++---- SYS/KERNEL.S.JMP.txt | 2 +- SYS/KERNEL.S.MATH.txt | 27 ++++++++++++++++++++++++++- TEST.S.txt | 35 ++++++++++++++++++++++++++++------- 9 files changed, 84 insertions(+), 15 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 4c4077e3..d04973ac 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -183,6 +183,28 @@ Load a file in memory + PUSHW = GID + PUSHW = PATH +# FAdd,FSub,FMult,FDiv,FPwr +Return X+Y, X-Y, X*Y, X/Y, X^Y + +## In: ++ PUSHW = X (*Float) ++ PUSHW = Y (*Float) ++ Y,A = Dest (*Float) + +# Log,Sqr,Exp,Cos,Sin,Tan,ATan +Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x) + +## In: ++ PUSHW = X (*Float) ++ Y,A = Dest (*Float) + +# LRIntF +Return Float rounded into a long + +## In: ++ PUSHW = X (*Float) ++ Y,A = Dest (*long) + # GetMem ## In: diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index cd0a0a959b1cde4ab8704c07eb4e117a0b5b6668..90991719afba8925f2c8f5d5b860be2f6bc1e259 100644 GIT binary patch delta 3181 zcmZuzeQZIT)OQr1mVwLey^)wcWI zeMvo*NX~orcYf!0&O7(sbMMRyH#5V%b-GeB+~T=-rZOi#7r(BwQ@$!FY9Z0m{zwb_ zY52%+3tLBnO$-SleDhcJDW!oN4S%(=HJAowOj{gT^Kk_Yk1ckurHi$H=!8?&_I0Y! zvl#!$nkwqr#eHx0QT>ZQeB0rC4={reyc2@Ic%Oy9ge{;_GHovP@FOlGpuX1~byNt5aHp(!aEPlhZO z3&SujPCA-8A!V{TX)=3!3$*P=wG7p&dlK4jw{?JR7cy@i`h-|=k(I}(T>zbdv_R8#MFV=mDYP#r; z7P{$m=w27Sk=Eb6@t;2W6W#T_^s6=L$Lt_PdSYR|=K>Szmu#$eHV_x=LL_Dv{V_0g zKqM9n4Zf@xJ)zl-Zks0zjSPh2$wW*%ui!q9jQhOM;DE3{a7h6>gEHu6p~1OukfsaJ zj!ldl?3`lvbI`;RFf=HJVnQSynmsFWa6`M4j7O!=WIlIN zN@T|;^Pu$*quvYH#Ds-`Juk^pPS9^7h`$gFDi8;Hp91k>JggvYsP805oD{(ehV8^F zI>3ucwmxXsp+G`N^e21H%HpgO3_A%g7}={xu^cpXE%Wf_5+2TY7odBG=*@-Qgdd1U z6N)bD1A|||`Xe!sB#4vVLuiqhGASGfh5$k011iZ4`k(>{{YgUdfK1ASOQ zLW2o~<0@e7UIoIFOdwp32oX}Fxv=!(3W65^;oySwDTp6KN|G)-Av~#hT@+79G<`IS zXCsQ_BF~7agA-}8@>n^EJ|@hI%%vr|Ntab~IEGr5Xpin` zGTfF!sU_O0n<7I;9=*OqGrDKUuzec+c8T6X9Y@rM^m@|?z!hM^xpZ17kB#*?IWV0> z3^wlgj$-6fQ+Z(`n^y`U6TF~(mWVYzr!b;?7ON<0#>P3FPG~%Z3Lny@4bLm)!T&QC z&^2sso*^ne34-bA=va>F9mhH(&h_8W6`xXnxk%ApE&P+FF1@4q`H-O{ zza+naVJm^$%a9wY?JzIfouKU?0csft2uvgv5ig8RjDpqy^SS&KXr09TD2qOSN7H2I zV7@ysAoT8&cqR~!2_mk9OT|Kdrbmhnh55K2!$vn^f1xpiJunXq-f~JP7Q~w$jN2a8 zV!`AqC#qU37&{fM!gj1>+OY}+XR&h?7<+cD1o_=_b>h-D(vcrS?Ow{@{qZ;3b*(x)s+lM zG@008zG5e?KL+23Z=`V~k;6SPyuCGTH_JaBuXJ2)4;Z@(D_^RDZZPh87;}Mf_rn;T zEC0h73-tkv@xdWKo@u;{@Z1D3fDh+@pXVi#1~cRbZHTN8lOwE(l&=Hq*0TzXL-wLq z-qRQgkuuS6aC{mnAD1V&ZxtsO)bkkrCMP`W(K7e4oYXdDimxhTOvo}ynxpC(!`l62 zQi1Fgn1ofG>qXglr7kWo4U{>S<*=93#kdby#WJ*7W||{z)siEmN}5wQR&E<7Sz# zWrfk4mkI7=0-v26TXCwCtN%l+A_$8a0lEx<` zeB4QV0JPslZ>*sYEY{I8)QyTI&DRu?ZfbgLE+|U}r~bduL5|jietM3MW6v;E=xXIj z-dgn}s+pGi^guK^1l7m!Ydnct_SzE=6c_>DRYcIAgyk;z60=8;JfO!XlG=lpk!P0? zmx|QkGigX(gy&@+H`JX1xhZdyuVfhDp!#_^ggm=i+*X(ne$Fg^VI?(J(#(}A=1P@w WrK-8onz@p8uB4kQRWFok-uy2>7>xk{ delta 2425 zcmZvddrVu`8Nk1DE)F)2LL3|@Bh0Tb;h1at8XJ=b$;A(F;}_gZfI%BxHqa8xjFYBY z8?c(VQ&y!_BXNYPPMWKD=^uM&RAE|@mgJ9Vs??2Ed!Q*=B5i7xZU0r1rYY5S?zuPW z#%9Tn^ZVZ4`M&GbRbh2i`0+&@H)iX)`kF3BzgspQ>zpW{gZ4^D*&MYt_~Y*u#%!JS z7#ifTB*T}lJ%2z5ev9C5R!=om12a|In5ev0f$_>lPYo{B-R_20td6HNVb@0Thn0KK zudWWie-e2%-hJQYuKoVQ4<7P=79XuVdiW@_asN+~`|3aJphkjXBu2(;9d#S2fBeX( ztGx@3_08I9^m*&mdTb~=P(|ID$@7IwHdk28zSs_JW2A#e2My!k*lOzl`?F+>M>fNA z>d|?cyvCzLXo76;$YGdNscnjU#v?15CI%O>p&8QQLd}M>Ds0P;l#4o?Rgcy=a>0cx zhI!55^W?gVI(&ir+J)Ne3o7-WfyhFhmnWwd(%<330|mRs<91&>$wy)`f5VLi-l?mt zfo_}IK+F4lmbQCy;$yUub=KTBx87fEDeZBVnw_OqXUXg=S)C=jv($E}c=6Kj%{BM` zX*S$0)zc4h=otRZS_~iH=v|b1@Kc-S7=B<_%VG14Q~2%bzD6fR6QS_P8!Q7~_)lUS zU2)|GqhBRrD8z^W#x6!;ax%h5C+rP?O)-ll``%Kl{IIWEwTchLWY+Egm=2RIns@sV zRT7GxV%8o3Oh*}#!ZI!Pvf{u))9E2!%;5HwI7quA!%SxRq}%|#7JsbBLOgm83~W1n2vXa`tD;Wn3PmRJJ7E> z(xQ2(>nJ0#sK)ow4m`t%ND)iYOK;$$+T{8ey@7c8OqRAkKDh+?xXKSCKoqjeBfK_da(at5~|iM*G=0+PwS47Q>n@~;fG z7*46GM~6xKEIxupNO~3@N2BE0EViSslaFSxe~m}21=Y*idM-x%`t?7kn(09OkF24+Vx~a;;?JF*__a@hD za>II0YDnrIF2wj?G9k&dY7aSaliS}cP?0n$1;tpbAmwv%HUc^?tb?hOEZyW9OupTw z9%%HF2a0Le|1k|v)5dPawFx&KW_r^{{=-EimK0?lG#uT{I-%j1#&%w=H%}sf9NG&f z=%dSN=FN+iCCj^(>y{r_eq!0Q+_L<_lCykd0ce_Ny4E~jN4jot0aQnpZgKa}T@t^| zSsLGiz(io8X(E-QkCe#agK4K(d9QuS^%(?6MP0(NgJ~kJVOO8h7nYe98hUnTCP2gS z-OQt`__}lPunfE(UKybsW|gW+n?ZIvWXCUry6uNNU5Nt*CK8 znUzp7d@7ufFEfonO+(VANmeulhMr8*kS5j^w`y1shZ7+XM?k6h&7PnnlWSX?pKkHJ zE$$%QVtj|QqcQTeJ6xN099XHHSNMLZ5b$j2-LHC}b80~fkwkqAPc6fy@e*jva zBdd3~11qONozg2xfWd-QutLj(5>j9xDbcQPJU6~*1-z3RTneXL69P zO3e&}BwmumK^cr`(Aw{Lo$r+jJ}_pU5a9`#1@DtP(op>z(5l(L7c~-~YF=@vG(!J8 z4HKr{FOct5;?wkjb)kHht1ADT!WVviiaV9X9er`fP~531?^Iv^H(V&G9{>OV diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index ce26487586041633f273bd18113cace3bfae082a..8842566c7d0c9453b987f9c484615211574a527a 100644 GIT binary patch delta 1032 zcmZuwO>7fK6n+zX*JJP2UFXN7gi2J4B4W}lcENE%aI=oRj*0D<^@cbQrE+ng(Cs?S zI%;wvgDk5Diq!OAttv(IV)X>5mev;z98pzOJybpQ)Lu}OV-Ep=(pgN}s_JcK-uvdw z_cL2tk*%%B!zklg7SFcFnV(q%Z6E*WO<}Yb?jMhNMfl^F^0GMmM*G*HP}CzOWpWyP z->c728)*mU*tMDoc&UTV@XyiqZQRD&`zHPpEa2{fWwU4>wJ`eK1wmIcu)_^>0=wub zviHz$#{_i<9vtuW(FylU%c3N7_HfUE8eo8D;j%awpoKp_rO)cTxYFZ(h~3DN5=Am* z^R9i=@Vgp*cgxQ_!Vkc@VQc_r|G>~;KQeKTD(4dU*@*39pP?4dmhdNV^e0HqNp^*$ z&}(e#nx}pXthhRto0hX#l1^!gJPmjptW~`X!UR}mtxSrUbY97(0iOfws(uylBv=k# z?|BHl_jveS@W&xUM3PlAMood?59m%^sjaUWMA56|8d%1OGIp_LUDeQUZv5nC+I>c0kXCpxqq)5}Lo=A2rnSxSo`r6v?H!JixyKopTK&pc+t2SKTi~B?vB9&Boqxx+ dzFIKJWA{6NqcqkZmmxUzKY@V$SnC*H`3nJqGfe;h delta 969 zcmY*XOKcle6ur-%dCxPWbZjSSN#YVTX;Z8)jjduk&8Hp5u^Z*%XyQQ9EGiQ_G$pm0 zu@MQI`c;lsg++@PjVe_wixC_8k%dP{U37^MAXcopqO3|3HY^&12+xTt(antJoO91R zbMC8D!j($+QN-y-ej*2Sdvj@zTtJkO;+D;ep zbmekZr{~~!0L%~ArxM+sEe_CBkrvrM(A=8-)TMxU9L#cdtF|;60{@$@8x9O_L7=zg z*?+pfsuhc6s^>R8UeohAW*vKrS?4#X65C$NmkzvFi#kouPEXE$b*ud4N$j#k4*iA5 zLonA0n;=*O{bu7AXb<7{HFYLFJJr}h&w8Y(Zg|-1}y^ZeBpwN z@-Z(X){Dz>$o^;9;d*2f(fP8uBvNa0*4kWFoBN4PesI4;%VVMVkuZ?&bBm9+19{xI*2blfo9lqwk(D`)}Xx!yr zZ1i`OKnWX7x^E(?MytvBg*f=jhZ78nPgIj?B4PL?A?9!Yj?dF*LlVCiVx8|E-t&X{l~%LR9{FE)saDNVcJbC%fW(>| IT0LU!KQJ;OQUCw| diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index ba93fc0d..e47d0f5c 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -191,7 +191,7 @@ SYS.FDiv .EQ $C6 SYS.FPwr .EQ $C8 * .EQ $CA -* .EQ $CC +SYS.LRIntF .EQ $CC * .EQ $CE SYS.Log .EQ $D0 diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index 75fe2e6d..26107b8c 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -41,9 +41,10 @@ ZPMEMMGR .EQ $8 *-------------------------------------- * $5E-$C8 RESERVED APPLESOFT Main/Aux (ROM Call, no need to switch back MainZP) *-------------------------------------- +SIGNFLG .EQ $16 COS,SIN,TAN INDEX .EQ $5E ->$5F FORPNT .EQ $85 ->$86 -*FAC .EQ $9D ->$A1 +FAC .EQ $9D ->$A1 *FAC.SIGN .EQ $A2 *FAC.EXTENSION .EQ $AC TXTPTR .EQ $B8 diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 6281f68b..5f125d2d 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -112,13 +112,13 @@ GP.ROMCall phx * http://www.txbobsc.com/scsc/scdocumentor/E7A0.html -.2 .DA $E7A7 FSUB - .DA $E7BE FADD +.2 .DA $E7AA FSUBT + .DA $E7C1 FADDT .DA $E82E NORMALIZE.FAC.2 (L->F) .DA $E941 LOG - .DA $E97F FMULT + .DA $E987 FMULTT.1 .DA $E9E7 LOAD.ARG.FROM.INDEX - .DA $EA66 FDIV + .DA $EA6B FDIVT+2 .DA $EAFD LOAD.FAC.FROM.INDEX .DA $EB27 SETFOR GETFAC) diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 50a2f1ee..5d2b88be 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -124,7 +124,7 @@ K.SYSCALL.JMP .DA 0 $00 .DA K.FDiv .DA K.FPwr .DA 0 - .DA 0 + .DA K.LRIntF .DA 0 .DA K.Log $D0 diff --git a/SYS/KERNEL.S.MATH.txt b/SYS/KERNEL.S.MATH.txt index 88307c2a..54e1467d 100644 --- a/SYS/KERNEL.S.MATH.txt +++ b/SYS/KERNEL.S.MATH.txt @@ -50,12 +50,37 @@ K.ATan ldx #ROM.ATAN jsr MATH.PullFAC MATH.Go plx + lda SIGNFLG pPs !!!! + pha jsr A2osX.ROMCALL >ROMCALL GETFAC + pla + sta SIGNFLG clc rts -*-------------------------------------- +*/-------------------------------------- +* # LRIntF +* Return Float rounded into a long +* ## In: +* PUSHW = X (*Float) +* Y,A = Dest (*long) +*\-------------------------------------- +K.LRIntF >STYA FORPNT + jsr MATH.PullFAC + ldx #ROM.QINT + jsr A2osX.ROMCALL + ldx #1 + ldy #3 + +.1 lda FAC,x + sta (FORPNT),y + inx + dey + bpl .1 + + clc + rts *-------------------------------------- MATH.PullFAC >PULLW INDEX >ROMCALL SETFAC diff --git a/TEST.S.txt b/TEST.S.txt index c4ff84c4..4862b810 100644 --- a/TEST.S.txt +++ b/TEST.S.txt @@ -39,6 +39,8 @@ L.CONST1 .DA CONST1 L.CONST2 .DA CONST2 L.MSG1 .DA MSG1 L.MSG2 .DA MSG2 +L.MSG3 .DA MSG3 +L.MSG4 .DA MSG4 .DA 0 *-------------------------------------- CS.INIT clc @@ -62,18 +64,34 @@ CS.RUN >PUSHEA.G ENDPTR >PUSHW L.FLOAT2 >PUSHW L.FLOAT1 - >LDYA L.MSG1 + >LDYA L.MSG1 >SYSCALL PrintF.YA - +*-------------------------------------- >PUSHEA.G MYFLOAT1 >PUSHEA.G MYFLOAT2 >LEA.G MYFLOAT3 - >SYSCALL FSub + >SYSCALL FDiv >PUSHEA.G MYFLOAT3 - >LDYA L.MSG2 + >LDYA L.MSG2 >SYSCALL PrintF.YA - +*-------------------------------------- + >PUSHEA.G MYFLOAT3 + >LEA.G MYFLOAT3 + >SYSCALL Cos + + >PUSHEA.G MYFLOAT3 + >LDYA L.MSG3 + >SYSCALL PrintF.YA +*-------------------------------------- + >PUSHW L.FLOAT1 + >LEA.G MYLONG + >SYSCALL LRIntF + + >PUSHEA.G MYLONG + >LDYA L.MSG4 + >SYSCALL PrintF.YA +*-------------------------------------- lda #0 sec rts @@ -92,8 +110,10 @@ FLOAT3 .HS 9E6E6B2800 1,000,000,000 FLOAT4 .HS 8100000000 1 FLOAT5 .HS 9080000000 -32768 CONST1 >CSTR "3.141592653" -CONST2 >CSTR "2" -MSG2 >CSTR "PI/2=%e\r\n" +CONST2 >CSTR "3" +MSG2 >CSTR "PI/3=%e\r\n" +MSG3 >CSTR "COS(PI/3)=%e\r\n" +MSG4 >CSTR "Long=%L\r\n" *-------------------------------------- .DUMMY .OR 0 @@ -101,6 +121,7 @@ DS.START MYFLOAT1 .BS 5 MYFLOAT2 .BS 5 MYFLOAT3 .BS 5 +MYLONG .BS 4 ENDPTR .BS 2 DS.END .ED