From 592e7b048df824886018c168c5d25d499e44dc27 Mon Sep 17 00:00:00 2001 From: Jacques Date: Fri, 14 Apr 2023 20:35:49 -0400 Subject: [PATCH] Recoder RND(x) pour rendre le code plus clair --- TinyBasic.asm | 128 ++--- arithm24.asm | 2 + build/stm8s207k8/TinyBasic.bin | Bin 13572 -> 13572 bytes build/stm8s207k8/TinyBasic.ihx | 168 +++---- build/stm8s208rb/TinyBasic.bin | Bin 13572 -> 13828 bytes build/stm8s208rb/TinyBasic.ihx | 851 +++++++++++++++++---------------- config.inc | 3 +- debug_support.asm | 2 + flash_prog.asm | 2 + i2c.asm | 2 + inc/gen_macros.inc | 15 + journal.md | 4 + terminal.asm | 2 + xmodem.asm | 24 +- 14 files changed, 623 insertions(+), 580 deletions(-) diff --git a/TinyBasic.asm b/TinyBasic.asm index ea0332f..a000a8e 100644 --- a/TinyBasic.asm +++ b/TinyBasic.asm @@ -41,7 +41,6 @@ ; ; * variables return their value in A:X ; -; * relation, expression return value on xstack ;--------------------------------------------------- @@ -172,7 +171,7 @@ move_exit: ;----------------------- MAJOR=3 MINOR=1 - REV=13 + REV=14 software: .asciz "\n\nTiny BASIC for STM8\nCopyright, Jacques Deschenes 2019,2022,2023\nversion " board: @@ -4210,17 +4209,57 @@ arduino_to_8s207: .endif -;------------------------------ -; BASIC: RND(expr) -; return random number -; between 1 and expr inclusive -; xorshift16 -; ref: http://b2d-f9r.blogspot.com/2010/08/16-bit-xorshift-rng-now-with-more.html -; input: -; none -; output: -; xstack random positive integer -;------------------------------ +;--------------------------------- +; seedx:seedy= x:y ^ seedx:seedy +; X:Y = seedx:seedy +;--------------------------------- +xor_seed32: + ld a,xh + _xorz seedx + _straz seedx + ld a,xl + _xorz seedx+1 + _straz seedx+1 + ld a,yh + _xorz seedy + _straz seedy + ld a,yl + _xorz seedy+1 + _straz seedy+1 + _ldxz seedx + _ldyz seedy + ret + +;----------------------------------- +; x:y= x:y << a +;----------------------------------- +sll_xy_32: + sllw y + rlcw x + dec a + jrne sll_xy_32 + ret + +;----------------------------------- +; x:y= x:y >> a +;----------------------------------- +srl_xy_32: + srlw x + rrcw y + dec a + jrne srl_xy_32 + ret + +;--------------------------------- +; BASIC: RND(n) +; return integer [0..n-1] +; ref: https://en.wikipedia.org/wiki/Xorshift +; +; x ^= x << 13; +; x ^= x >> 17; +; x ^= x << 5; +; +;--------------------------------- N1=1 N2=N1+INT_SIZE VSIZE=6 @@ -4238,55 +4277,22 @@ func_random: 2$: _i24_fetch N1 _i24_store N2 -; acc16=(x<<5)^x + _ldxz seedx + ld a,#13 + call sll_xy_32 + call xor_seed32 + ld a,#17 + call srl_xy_32 + call xor_seed32 + ld a,#5 + call sll_xy_32 + call xor_seed32 +; return seedy_lo&0x7f:seedx modulo expr + 1 + _ldaz seedy+1 + and a,#0x7f + ld (N1,sp),a _ldxz seedx - sllw x - sllw x - sllw x - sllw x - sllw x - ld a,xh - xor a,seedx - _straz acc16 - ld a,xl - xor a,seedx+1 - _straz acc8 -; seedx=seedy - _ldxz seedy - ldw seedx,x -; seedy=seedy^(seedy>>1) - _ldxz seedy - srlw x - ld a,xh - xor a,seedy - _straz seedy - ld a,xl - xor a,seedy+1 - _straz seedy+1 -; acc16>>3 - _ldxz acc16 - srlw x - srlw x - srlw x -; x=acc16^x - ld a,xh - xor a,acc16 - _straz acc16 - ld a,xl - xor a,acc8 - _straz acc8 -; seedy=acc16^seedy - xor a,seedy+1 - ld xl,a - _ldaz acc16 - xor a,seedy - ld xh,a - ldw seedy,x -; return seedx_lo&0x7f:seedy modulo expr + 1 - _ldaz seedx+1 - and a,#127 - ld (N1,SP),A - ldw (N1+1,SP),X + ldw (N1+1,sp),x call div24 LD A,(N2,SP) LDW X,(N2+1,SP) ; remainder diff --git a/arithm24.asm b/arithm24.asm index 6899101..615e24a 100644 --- a/arithm24.asm +++ b/arithm24.asm @@ -24,6 +24,8 @@ ;; X bits 15..0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +SEPARATE=0 + .if SEPARATE .module ARITHM24 .include "config.inc" diff --git a/build/stm8s207k8/TinyBasic.bin b/build/stm8s207k8/TinyBasic.bin index 95d407a892991b73136b259ce33d354abc0cac76..8401482884be87015bb19bd615d539405bb2fd3b 100644 GIT binary patch delta 1526 zcmXAoYitx{6o$|2%l&er^mj!B3DZMZ|^X=}??aVNj-T)C0&=#m@k*h3) zQiJ%Tc0({yT53y6x1BOG-^7+c8cfg_l0rZdjll@sevlXwO^hMY`0ehm^PIVz_q^Xb z?M>}X)_sb4gukJVv(yk)eHI;?xOmbm9@y1q_4oIm>g(^m@mY4i=hFB6H_o>Vtv%mj zmYKcgfcdG3&2whwScf@g4x4Y9d(C&ugXS@_&FnDG4v#194h|0AHK+BV;mN`K7c;w; zcil_)Mt@5@>iaN}J+@}#$p|EFk3Q_)oS2;`8{9Q^HgTwLP9NL1%6s)fLLd7n{z2Bt zx#!L6{r9dETpqoA^YSmSr8%MF-0XtQ=Qx-20$VYPU48H%k#tS;6d6=GJ*mn7NHLAB11 zt9-Qv8?D$mM$=^limYA&NP*?n6;_KPLdPwe(Zogs?_1Y1HKf+c0Y%o}m~|^7-608% zTKBWk4Ic@R{)qJ>qj9we4qJcFsv*H4>mRSGMZ}N}iVd_%%R5=KRw0FqtdQ|f90N%;rtkT=O>T&t~SCNVwyU3&|w z$f_Hu>SM7@_3c@S)P>MKs*|u3l6(t?^ z+t(Q-Ied-%C4p)LZ`*fRrA8JIwAkM=iYO^iYCmQagsLHGKVcQl&=Bmi|DqM5|0Vlh zkF3IMhxN!3EOn;QvYeY*^NeAS`rl z(_x}vr}KabsR%*Xc}R!IiVK`ynGmlS@P_j{i&Tz$W{2}PjmW{z$KWNwQso+0g)<0} z7h?!QIEO(3$@_LZ&nu)QZo`GFkUDvUOFV)M^KdyWh$_5}c~WcO1zb%Fh=;9MqXn|z zO1y~?IGuy%@eZ0-OCW&vkh&UH;8vEGC1TrLe9Xs3tG7lp5l-WdG{=a(4&24?5l#gG z_pk&+30}iPbg%)z7HoTiMkqx7pw0Li8`R}+6gJ^ogh*%r-!VZFWN5&T z=^)u9h@a40odNauPakKHe3O5n4nL(ijR(&4(j4)lz@6@kaRQ&(bG@6#5+>=Wbr;cG zP=hMhPZdI;TS`^Iez(k1Sq^#bdQW*JDPgJ-a$Sikhgq)fsjPq;w~?xV=iF_c@(P&g z?xu=hhP#hi0?)dw)JmA{9-&r1wtIpqhG}jGwH}^vKcW_acaGadEeF>9gjxoS+e57b P+8v<$;Bgc2tEKw?+OPl< delta 1526 zcmXAoYitx%6vxlqnc1b3wp!@}5D}C|A1t)RN1+d9XYOu??#>MJpe=$t#1dMdk|IxK zv9wC?gTkVXq($mNp-ZRC%$-m|NJD~AG$FNMG?6GZ!4DW?qKPpkM!dV7FZXxO+?n$~ z=l*YZTX&m%7oi8_9y-FIL81k0CO+EVWtE<99k7$h04ByaR~T&(Wx zu&S-IR?_;!a;?+W2O~X}WnHqiTRW{i);{a7b=2yyP7IBv#s>$7#;xoDJTx|Vw?C_| zPcD6Ypg& zoAa@CJvniy_`>jon-?DTRiri!e|i4fD+kW~I9yF8vIQS1BL%rD{pbo&XR-**AZ9^( zVdB@ac~W!wIeQxlMsq*C4TYn5V@2aoFji#HT+wI|%@vOpkL4OhI+2^%lsB43v%Oby z>5h-aq3CMi`FJ}@l$6g$Wr@b}2s%R&p7vnVo$mj>7?~vB z1Qir7;+izcz|d{alb*tMltH9JGIDG*gBH_TPR@Z;-+UsPut76;;QRfk-@}`bqxAP~XQvFrVzdl8SSuX2S zWLV^8Gm5A|rJEmTWZGwuJDZhpvjGd;1&oZFV3%9wk4}xP(XC>mN~99jxOHq)(hb<@ zMwloz;CWYN8*xiL#N1|v0!Z!_jtZeN+ua>LDGblKos2{aRk(+;q)H(;Wwkc9Yg#%= zPc{w>?uVI3QRzT;xc!-pLR6vZx4S8(0XIXddyS1K)K3fCn_NWE%@E9YzhWX(!|U!n zHmqR`5%)e5rY%0}K4im!YQi@6Hx6q&{mpCcUks)PKhJ&ar^eEh7%V3NiuA)chA_!z zu}J;CmCW^vQxdn3MVy#9c}yyNq5{v5Rg5TUu$hGD8iToH4I^R!HW7^xX@|?mdRF8O z9-by!89}RrAZe#-1uP|0B=%%)4R|_{$Y4s0N&#mp3bA#%L&AJQONYU+AH8FQ+KTM<}-XqhkCCJ zEr!Kj6{?3lUbU~T1`54;Urild!l(`kycnv1nV#;etA(e$7E}xQ-ezA-Ej;P9qEdLm z+l3ZFp4W+%L9TZYErlE}j>=$$*MnBWbnkt%0Q|GPlc)qZuNN%=*6T;Bfbo*39DLqT J!d_t@_#a0r_B;Rp diff --git a/build/stm8s207k8/TinyBasic.ihx b/build/stm8s207k8/TinyBasic.ihx index 8b75f81..992875a 100644 --- a/build/stm8s207k8/TinyBasic.ihx +++ b/build/stm8s207k8/TinyBasic.ihx @@ -12,7 +12,7 @@ :208160005B0581AE17FF947F5A26FCA6FFC75003C75008C7500DC75012C75017C7501CC778 :208180005021C7502B721A500D721A500E721A500C721B500A55003F5407725F50F2721402 :2081A00050CAA6E15FCD80CECD80E8AE87E1CF0037CD876ACD81009ACE6000CF0017CE606B -:2081C00006CF0015CD9D09CD9C5CCD95A1CE4000C3AEDF2709CDA4C5CD9537CC97C04FCEDD +:2081C00006CF0015CD9D09CD9C5CCD95A1CE4000C3AEE02709CDA4C5CD9537CC97C04FCEDC :2081E000400289FEC3860B852703CC97C0CD9569CE40021C0004CF001C1D0002FE72BB0060 :208200001CCF001EA620CD87CCCE001C1C0004CD883BAE821DCD883BCCA42B20FE20727538 :208220006E6E696E670A007B031E0472F00712062F08260A5D26074F2006A6FF2002A60125 @@ -56,7 +56,7 @@ :2086E00000041C007F9FA4809713012416BE0E20E1CF000EAEFFFF72B0000E5C1301240316 :208700005F2002BE0E5B0281894B043F19CF001A4F5FCD84FE0A0126F95B0185CF001A81A3 :20872000CF000EEE021C000472BB000E1C007F9FA4809781720B524030C65241A103260336 -:20874000CC80B7A1182604358050D1A11A2607CDAEA6358050D188A628CB00315F9784F7BB +:20874000CC80B7A1182604358050D1A11A2607CDAEA7358050D188A628CB00315F9784F7BA :20876000C600314CA407C7003180721A500C721A500D721A500E721650C78872110002A686 :20878000E1C150C3270A35055243350452422008350B524335085242725F5241352C52452D :2087A00072105245720D5240FB725F0030725F0031721000028481CF001AAE87E1A1012740 @@ -86,13 +86,13 @@ :208AA000F8814D270D4C88F6E7015A0A0126F85B015C81CD889EAE16A4CD883B81A40FA18E :208AC000092302AB07AB30818197EB8AC8976F976F976F976F976F976F976F976F976F9837 :208AE00041976F976F976F976F976F976F976F976F976F976F976F976F976F976F976F9D3E -:208B000075ADB79D82AD2AA466A1B0A3A3A383A1A39CBCA20DA302A0DAA3BC976FA7399779 -:208B20006FAD39AD9EADA3AD99ADB2AD94AD8FAE85ADADADA8AD67AD6CAD71AD76AD7BADFE -:208B400080AD85AD8AA9B7AACFA6A6A9CFAD0BA145A9BEA6D29D099C2992D1AA07ACE5AA58 -:208B6000E0A18AAA0DAE34ABC0AB00AACAACDB9C5CAA19AA3AA666AE8AAA78A11AA105A139 -:208B800030AF9AAA54AEE19C24A8E6A7019F87A78BAB20A4969C1F927A91C1922092AFA0D0 -:208BA0006E9E9DA782AA68AB43A1769FD2A818A63FA5F8A652AF96ADBAA3D1A818A5ACA54B -:208BC000C0A5E49C31AA5DACC7A4D4AF78A0DDAC39A963AB33AB2F52020F0190CE001C4D15 +:208B000075ADB89D82AD2BA466A1B0A3A3A383A1A39CBCA20DA302A0DAA3BC976FA7399777 +:208B20006FAD3AAD9FADA4AD9AADB3AD95AD90AE86ADAEADA9AD68AD6DAD72AD77AD7CADEF +:208B400081AD86AD8BA9B7AACFA6A6A9CFAD0CA145A9BEA6D29D099C2992D1AA07ACE6AA53 +:208B6000E0A18AAA0DAE35ABEAAB00AACAACDC9C5CAA19AA3AA666AE8BAA78A11AA105A10C +:208B800030AF9BAA54AEE29C24A8E6A7019F87A78BAB20A4969C1F927A91C1922092AFA0CE +:208BA0006E9E9DA782AA68AB43A1769FD2A818A63FA5F8A652AF97ADBBA3D1A818A5ACA549 +:208BC000C0A5E49C31AA5DACC8A4D4AF79A0DDAC3AA963AB33AB2F52020F0190CE001C4D12 :208BE000270490CE000390C3001E2A1090F3270E2B0A90E6026B0272F90120EA5F515B02E9 :208C000051815204E6026B020F01909372F901170390CE001E72F20390CF000E1603CD9454 :208C20009B90CE001E72F20190CF001E90CF003290CF00345B0481C3001E242F52061F0389 @@ -110,7 +110,7 @@ :208DA000618C2402A17B81A1302503A13A8C8C81CD8DA72508A1412503A1478C8C81CD8D83 :208DC000A72503CD8D9681A15F260399200BA12E27F9A13F27F5CD8DBE815CCD98D3F75CFB :208DE00091D6003C01CD8DC725F17F3A018189CD8DDA1E01E602261AE601A041AE0003429E -:208E00001C003F160190EF01A60990F772A90003203CAEB42B1601905CCD9943A1FF262889 +:208E00001C003F160190EF01A60990F772A90003203CAEB42C1601905CCD9943A1FF262888 :208E2000A60B160190F7905C93CD9471A10F2302A60F8890F62709905C0A0126F64F90F7E1 :208E4000905C5B01A60B2006160190F7905C5B02818891D6002708110126043C0120F35B86 :208E60000181520290AE16A4A620CD8E5191D60026059093CC90003C01CD98D36B01A622F8 @@ -160,7 +160,7 @@ :2093E000725A0002725A0002725A0002B70DCF000ECD9873CC93BFF65CBF05725A00025F29 :2094000097CD985ECC93BFA627CD87CCBE05CD883BCC943EBE0572B00003BE0589CD982E2F :2094200085CD883B2099CD92F72094A65CCD87CCF65CBF05725A0002CD87CCCC93BF7B0194 -:20944000B70B5B04815203725F000E6B01AEB4AF1F02F6AB02B70F72BB000EF61101270BBA +:20944000B70B5B04815203725F000E6B01AEB4B01F02F6AB02B70F72BB000EF61101270BB9 :209460001E021D0002FE26E84F20031E025C5B0381894F7D27044C5C20F98581F6270990D7 :20948000F126075C905C20F490F181888990F62706F75C905C20F67F8584818852020F0142 :2094A0000F02908913019085272F2B0E72BB000E72B9000E0301030220055A905A0C02B620 @@ -168,7 +168,7 @@ :2094E000696E7920424153494320666F722053544D380A436F707972696768742C204A612D :209500006371756573204465736368656E657320323031392C323032322C323032330A7627 :20952000657273696F6E20004E55434C454F2D38533230374B3800AE94DDCD883B350A00F3 -:209540000BA603AD1EA62ECD87CCA601AD15A652CD87CCA60CAD0CA60DCD87CCAE9528CDA1 +:209540000BA603AD1EA62ECD87CCA601AD15A652CD87CCA60DAD0CA60DCD87CCAE9528CDA0 :20956000883B815F02CD985E81AE87E1CF00373F233F20350A000BAE0091CF0005CF0003F6 :209580003F02AE000ACF0021AE16A41D001ECF0026818988AE003FA64E7F5C4A26FB848588 :2095A0008189AE0091CF001CCF001ECF0032CF0034CD95923F368581000095DC95F3960187 @@ -348,77 +348,77 @@ :20AB6000A6010D042705480A0426FB6B04EA03E7037B0326107B0443E404E7047B0443E445 :20AB800002E702200C7B04EA02E7027B04EA04E7045B0681581CABA4FE9F885EA605421CC1 :20ABA0005000848103050306030002010302020202030001000202040304030302070205F5 -:20ABC0005203CD99A5A1012703CC976F0D012A05A60ACC97717B011E026B041F05BE15585C -:20ABE000585858589EC80015B70E9FC80016B70FBE17CF0015BE17549EC80017B7179FC8DE -:20AC00000018B718BE0E5454549EC8000EB70E9FC8000FB70FC8001897B60EC8001795CF92 -:20AC20000017B616A47F6B011F02CD83377B041E051C0001A9005B0681CD9982908952025B -:20AC4000A6056B010F0290AEB42B725F000E93F65CA40FC7000FCD883B0C020A012713C6B9 -:20AC6000000FA1082405A609CD87CCA609CD87CC2009A60DCD87CCA6056B0172A20002909C -:20AC8000FE26CBA60DCD87CC5F7B0297CD985EAEAC9ACD883B5B0290858120776F726473F6 -:20ACA00020696E2064696374696F6E6172790A00884ECD8ABDCD87CC7B01CD8ABDCD87CC83 -:20ACC000A620CD87CC8481CD99ADA1012703CC976F848572150023CF0013814F5F7205009D -:20ACE0002302435381CD99A5A1012703CC976F84854D26085D2605A60ACC97714B185949DA -:20AD000025040A0126F85F844A0281CD99A5A1012703CC976F84859FAE0001A417270A88BD -:20AD20004F58490A0126FA5B018185520489BE051F03BE031F053C2081725D00202603CC2C -:20AD4000976FCD9BCE4D26175D26141E03CF00051E05CF00037201002304E602B70281856B -:20AD60005B04725A0020FCAE50004F81AE50054F81AE500A4F81AE500F4F81AE50144F8154 -:20AD8000AE50194F81AE501E4F81AE50284F814FAE0000814FAE0001814FAE0002814FAE70 -:20ADA0000003814FAE0004814FAE0001814FAE0000814FAE400081CC97EBCD998D5FCF0063 -:20ADC00009CF0009CD9827A10122075ABF05BE1C2022A107270FA1082608F65CBF055F02D5 -:20ADE0002006CC976FCD984E9089CD8BD790855D2613203BC3001E2436E603A11C2706CD7F -:20AE0000AE0F26FB81CF00071C0004CF000981E602B70F3F0E72BB000EC3001E2502200F17 -:20AE2000E603A11C2704A6012004CDAE054F81A60CCC9771CD998D5208CDA05272C6000953 -:20AE4000273ABE07CF0003BE09CF0005F6272DCD9AD96B061F07CD9827A1022710BE03E631 -:20AE6000023F0EB70F72BB000E5ACF0005BE05CF0009CDA05F7B061E075B0881BE07CDAE23 -:20AE80000F27BF20AAAE16F44F81CD9982CD9827A10B2719A13E260BF65CCF0005A4DFA1B1 -:20AEA000432703CC976FAE4000CD87088189CD982E85CD860F2605A60ACC9771893F19AE47 -:20AEC0004000CF001AC6AEDF5FCD84FEC6AEE0CD84FE7B01CD84FE7B02CD84FE5B028141EF -:20AEE0005285520C890F030F04A60BCD999889CD982E85CD860F5D2605A60ACC97711C0095 -:20AF0000041F05CD9827A102261ACD9827A107270CA108260FF65CBF055F022003CD984E08 -:20AF20001F0320035ABF05BE031F07BE051F09BE1C1F0BBE1E1F0D1E05CF0003CF001C1DD3 -:20AF40000002FE72FB05CF001E1E05E602B7021C0003CF00051E035D271890894FCD8BD787 -:20AF600090855D270DCF0003E602B7021C0003CF00053C36855B04FCCD998DCD9827A1084B -:20AF80002703CC976FF65CBF054D2605721F002381721E002381358050D1CD998D52060F8E -:20AFA00003A60BCD99981F01CD9471A40F6B04CD982EA602CD9998CD9AD91F05CD9C291D7F -:20AFC000000572F00313052405A601CC97711E031C00059FAA80BE34F75C90891603CD9468 -:20AFE0008B908572FB035CCF001ABE2672F005723F001A3C1B24023C1A72CF001A7F5C0AD3 -:20B000000526FA72CE001ACF0026BE1A1C0002CF00345B0681000003584F52001AB01705FF -:20B0200057524954450084B01F05574F5244530083B02904574149540082B03303555352A7 -:20B040000055B03C05554E54494C002CB0440655464C4153480054B04E0655424F554E4410 -:20B060000053B0590554524143450081B06404544F4E450080B06E02544F002BB077055443 -:20B08000494D4552007FB07E0754494D454F55540052B088055449434B530051B0940453AF -:20B0A000544F50002AB09E04535445500029B0A705534C454550007EB0B00453495A4500CA -:20B0C0007DB0BA09534552564F2E504F53007CB0C308534552564F2E454E007BB0D10B5330 -:20B0E0004552564F2E43482E454E007AB0DE04534156450079B0EE0352554E0078B0F7062B -:20B100005253484946540050B0FF03524E44004FB10A0652455455524E0028B11207524500 -:20B1200053544F52450077B11D0352454D0027B129065245424F4F540076B1310452454150 -:20B1400044004EB13C0750574D2E4F55540075B1450650574D2E454E0074B1510950574DB6 -:20B160002E43482E454E0073B15C05504F525449003DB16A05504F525447003CB1740550A3 -:20B180004F525446003BB17E05504F525445003AB18805504F5254440039B19205504F5208 -:20B1A00054430038B19C05504F5254420037B1A605504F5254410036B1B0055052494E54A5 -:20B1C0000071B1BA04504F55540035B1C404504F4B450070B1CD05504D4F4445006FB1D60C -:20B1E0000450494E500034B1E0045045454B004CB1E9055041555345006EB1F203504144D4 -:20B200000033B1FC024F520019B204024F4E0026B20B034F44520032B212034E4F54001771 -:20B22000B21A044E4558540025B222034E4557006DB22B064C5348494654004BB233044C7F -:20B240004F4732004AB23E044C495354006CB247034C45540024B250044B45593F004DB20E -:20B2600058034B45590049B26105494E505554006BB2690249460023B27303494452003127 -:20B28000B27A094932432E5752495445006AB282084932432E524541440048B29008493247 -:20B2A000432E4F50454E0069B29D094932432E434C4F53450067B2AA034845580066B2B84D -:20B2C00004474F544F0022B2C005474F5355420021B2C9034745540065B2D3044652454589 -:20B2E0000047B2DB03464F520020B2E404464350550064B2EC0545524153450063B2F50324 -:20B30000454E44001FB2FF06454550524F4D0030B307064545465245450046B31204454484 -:20B3200049540062B31D064457524954450061B3260544524541440045B33102444F001EEE -:20B34000B33B034449520060B3420344494D001DB34A03444543005FB35203444452002F92 -:20B36000B35A0444415441001CB36203435232002EB36B03435231002DB37305434F4E5307 -:20B3800054001BB37B07434C4B5F4853490085B38507434C4B5F4853450086B391044348B6 -:20B3A00041520044B39D05434841494E005EB3A603425945005DB3B00642554646455200E4 -:20B3C0005CB3B80542544F474C005BB3C30542544553540043B3CD0442534554005AB3D7F8 -:20B3E00004425245530059B3E0034249540042B3E9034157550058B3F1074155544F52559E -:20B400004E0057B3F9034153430041B40503414E440018B40D07414443524541440040B479 -:20B4200015054144434F4E0056B42103414253003FB42B01270027B433013F0071B4390295 -:20B440003E3C0016B43F023C3E0016B446013E0015B44D013C0014B453023E3D0013B45993 -:20B46000013D0012B460023C3D0011B466012A0010B46D0125000FB473012F000EB479019E -:20B480002D000DB47F012B000CB4850140000AB48B01220006B49101290005B49701280033 -:13B4A00004B49D013B0003B4A3012C0002B4A9013A0001E6 +:20ABC0009EB815B7159FB816B716909EB817B717909FB818B718BE1590BE17819058594A27 +:20ABE00026FA815490564A26FA815203CD99A5A1012703CC976F0D012A05A60ACC97717B55 +:20AC0000011E026B041F05BE15A60DCDABDCCDABC0A611CDABE3CDABC0A605CDABDCCDABAD +:20AC2000C0B618A47F6B01BE151F02CD83377B041E051C0001A9005B0681CD9982908952DF +:20AC400002A6056B010F0290AEB42C725F000E93F65CA40FC7000FCD883B0C020A0127137C +:20AC6000C6000FA1082405A609CD87CCA609CD87CC2009A60DCD87CCA6056B0172A2000266 +:20AC800090FE26CBA60DCD87CC5F7B0297CD985EAEAC9BCD883B5B0290858120776F7264D8 +:20ACA0007320696E2064696374696F6E6172790A00884ECD8ABDCD87CC7B01CD8ABDCD87DC +:20ACC000CCA620CD87CC8481CD99ADA1012703CC976F848572150023CF0013814F5F7205D1 +:20ACE000002302435381CD99A5A1012703CC976F84854D26085D2605A60ACC97714B185923 +:20AD00004925040A0126F85F844A0281CD99A5A1012703CC976F84859FAE0001A417270AFC +:20AD2000884F58490A0126FA5B018185520489BE051F03BE031F053C2081725D0020260370 +:20AD4000CC976FCD9BCE4D26175D26141E03CF00051E05CF00037201002304E602B7028124 +:20AD6000855B04725A0020FCAE50004F81AE50054F81AE500A4F81AE500F4F81AE50144F50 +:20AD800081AE50194F81AE501E4F81AE50284F814FAE0000814FAE0001814FAE0002814F9D +:20ADA000AE0003814FAE0004814FAE0001814FAE0000814FAE400081CC97EBCD998D5FCFB5 +:20ADC0000009CF0009CD9827A10122075ABF05BE1C2022A107270FA1082608F65CBF055FD7 +:20ADE000022006CC976FCD984E9089CD8BD790855D2613203BC3001E2436E603A11C27064A +:20AE0000CDAE1026FB81CF00071C0004CF000981E602B70F3F0E72BB000EC3001E25022058 +:20AE20000FE603A11C2704A6012004CDAE064F81A60CCC9771CD998D5208CDA05272C6004C +:20AE400009273ABE07CF0003BE09CF0005F6272DCD9AD96B061F07CD9827A1022710BE030E +:20AE6000E6023F0EB70F72BB000E5ACF0005BE05CF0009CDA05F7B061E075B0881BE07CDEB +:20AE8000AE1027BF20AAAE16F44F81CD9982CD9827A10B2719A13E260BF65CCF0005A4DFA3 +:20AEA000A1432703CC976FAE4000CD87088189CD982E85CD860F2605A60ACC9771893F1954 +:20AEC000AE4000CF001AC6AEE05FCD84FEC6AEE1CD84FE7B01CD84FE7B02CD84FE5B028180 +:20AEE000415285520C890F030F04A60BCD999889CD982E85CD860F5D2605A60ACC97711C54 +:20AF000000041F05CD9827A102261ACD9827A107270CA108260FF65CBF055F022003CD9856 +:20AF20004E1F0320035ABF05BE031F07BE051F09BE1C1F0BBE1E1F0D1E05CF0003CF001CA2 +:20AF40001D0002FE72FB05CF001E1E05E602B7021C0003CF00051E035D271890894FCD8B41 +:20AF6000D790855D270DCF0003E602B7021C0003CF00053C36855B04FCCD998DCD9827A17C +:20AF8000082703CC976FF65CBF054D2605721F002381721E002381358050D1CD998D520695 +:20AFA0000F03A60BCD99981F01CD9471A40F6B04CD982EA602CD9998CD9AD91F05CD9C298D +:20AFC0001D000572F00313052405A601CC97711E031C00059FAA80BE34F75C90891603CDDF +:20AFE000948B908572FB035CCF001ABE2672F005723F001A3C1B24023C1A72CF001A7F5C49 +:20B000000A0526FA72CE001ACF0026BE1A1C0002CF00345B0681000003584F52001AB018F9 +:20B020000557524954450084B02005574F5244530083B02A04574149540082B034035553F1 +:20B04000520055B03D05554E54494C002CB0450655464C4153480054B04F0655424F554EFF +:20B06000440053B05A0554524143450081B06504544F4E450080B06F02544F002BB078054F +:20B0800054494D4552007FB07F0754494D454F55540052B089055449434B530051B09504AB +:20B0A00053544F50002AB09F04535445500029B0A805534C454550007EB0B10453495A4574 +:20B0C000007DB0BB09534552564F2E504F53007CB0C408534552564F2E454E007BB0D20B80 +:20B0E000534552564F2E43482E454E007AB0DF04534156450079B0EF0352554E0078B0F8DB +:20B10000065253484946540050B10003524E44004FB10B0652455455524E0028B11307523B +:20B120004553544F52450077B11E0352454D0027B12A065245424F4F540076B13204524549 +:20B140004144004EB13D0750574D2E4F55540075B1460650574D2E454E0074B152095057BF +:20B160004D2E43482E454E0073B15D05504F525449003DB16B05504F525447003CB17505A3 +:20B18000504F525446003BB17F05504F525445003AB18905504F5254440039B19305504F07 +:20B1A0005254430038B19D05504F5254420037B1A705504F5254410036B1B1055052494EA4 +:20B1C000540071B1BB04504F55540035B1C504504F4B450070B1CE05504D4F4445006FB18B +:20B1E000D70450494E500034B1E1045045454B004CB1EA055041555345006EB1F30350413E +:20B20000440033B1FD024F520019B205024F4E0026B20C034F44520032B213034E4F540040 +:20B2200017B21B044E4558540025B223034E4557006DB22C064C5348494654004BB23404B0 +:20B240004C4F4732004AB23F044C495354006CB248034C45540024B251044B45593F004D71 +:20B26000B259034B45590049B26205494E505554006BB26A0249460023B2740349445200A2 +:20B2800031B27B094932432E5752495445006AB283084932432E524541440048B291084945 +:20B2A00032432E4F50454E0069B29E094932432E434C4F53450067B2AB034845580066B2D1 +:20B2C000B904474F544F0022B2C105474F5355420021B2CA034745540065B2D40446524512 +:20B2E000450047B2DC03464F520020B2E504464350550064B2ED0545524153450063B2F6DE +:20B3000003454E44001FB30006454550524F4D0030B308064545465245450046B3130445C1 +:20B320004449540062B31E064457524954450061B3270544524541440045B33202444F00C5 +:20B340001EB33C034449520060B3430344494D001DB34B03444543005FB35303444452009F +:20B360002FB35B0444415441001CB36303435232002EB36C03435231002DB37405434F4E27 +:20B380005354001BB37C07434C4B5F4853490085B38607434C4B5F4853450086B3920443A8 +:20B3A0004841520044B39E05434841494E005EB3A703425945005DB3B10642554646455299 +:20B3C000005CB3B90542544F474C005BB3C40542544553540043B3CE0442534554005AB3CC +:20B3E000D804425245530059B3E1034249540042B3EA034157550058B3F2074155544F5218 +:20B40000554E0057B3FA034153430041B40603414E440018B40E07414443524541440040D5 +:20B42000B416054144434F4E0056B42203414253003FB42C01270027B434013F0071B43ADE +:20B44000023E3C0016B440023C3E0016B447013E0015B44E013C0014B454023E3D0013B4E6 +:20B460005A013D0012B461023C3D0011B467012A0010B46E0125000FB474012F000EB47A40 +:20B48000012D000DB480012B000CB4860140000AB48C01220006B49201290005B49801282D +:14B4A0000004B49E013B0003B4A4012C0002B4AA013A0001E2 :04B500000000000047 :00000001FF diff --git a/build/stm8s208rb/TinyBasic.bin b/build/stm8s208rb/TinyBasic.bin index 95d407a892991b73136b259ce33d354abc0cac76..f94725c7da45a0fa5a2060ec5d4f3c043698410a 100644 GIT binary patch delta 8654 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 dZejtV$Bqz1h#KoB79n!%v=A*^BU~vo{tq. ;; +SEPARATE=0 + .if SEPARATE .module I2C .include "config.inc" diff --git a/inc/gen_macros.inc b/inc/gen_macros.inc index 12c55e5..a3cf2a8 100644 --- a/inc/gen_macros.inc +++ b/inc/gen_macros.inc @@ -84,11 +84,21 @@ .byte 0xbe,v .endm + ; load y from variable in zero page + .macro _ldyz v + .byte 0x90,0xbe,v + .endm + ; store x in zero page variable .macro _strxz v .byte 0xbf,v .endm + ; store y in zero page variable + .macro _stryz v + .byte 0x90,0xbf,v + .endm + ; increment 16 bits variable ; use 10 bytes .macro _incwz v @@ -97,3 +107,8 @@ _incz v ; 1 cy, 2 bytes .endm ; 3 cy + ; xor op with zero page variable + .macro _xorz v + .byte 0xb8,v + .endm + \ No newline at end of file diff --git a/journal.md b/journal.md index 10fcba5..6788529 100644 --- a/journal.md +++ b/journal.md @@ -1,3 +1,7 @@ +### 2023-04-14 + +* Réécriture de la fonction **RND()**. + ### 2023-03-09 * Corrigé bogue dans la commande **TONE** qui ne tenait pas compte de la commutation entre CLK_HSE et CLK_HSI. diff --git a/terminal.asm b/terminal.asm index 001ce1e..31f5adb 100644 --- a/terminal.asm +++ b/terminal.asm @@ -29,6 +29,8 @@ ; print_hex print hex value from A ;------------------------------ +SEPARATE=0 + .if SEPARATE .module TERMINAL .include "config.inc" diff --git a/xmodem.asm b/xmodem.asm index c978ec8..e5e1f71 100644 --- a/xmodem.asm +++ b/xmodem.asm @@ -51,9 +51,9 @@ wait_soh: ldw y,timer jrne 2$ ret -2$: call uart3_qgetc +2$: call uart_qgetc jreq 1$ - call uart3_getc + call uart_getc cp a,#SOH jreq 4$ cp a,#EOT @@ -82,9 +82,9 @@ getc_to:: 1$: ldw y,timer jrne 2$ ret -2$: call uart3_qgetc +2$: call uart_qgetc jreq 1$ - call uart3_getc + call uart_getc clrw y ldw timer,y ret @@ -117,7 +117,7 @@ try_again: cp a,#EOT jrne 2$ ld a,#ACK - call uart3_putc + call uart_putc ld a,#EOT jra 7$ 1$: ;start of header received @@ -132,7 +132,7 @@ try_again: jreq 4$ 2$: ld a,#NAK - call uart3_putc + call uart_putc dec (TRIES,sp) jrne try_again jra 5$ @@ -154,7 +154,7 @@ try_again: jra 6$ 5$: ; all tries failed ld a,#CAN -6$: call uart3_putc +6$: call uart_putc 7$: _drop VAR_SIZE ret @@ -179,25 +179,25 @@ xtrmt_block:: ld (TRIES,sp),a tx_retries: ld a,#SOH - call uart3_putc + call uart_putc ld a,(SERIAL,sp) - call uart3_putc + call uart_putc ld a,(SERIAL,sp) cpl a - call uart3_putc + call uart_putc clr (CHKSUM,sp) ld a,#PACKET_SIZE ld (PLEN,sp),a ldw x,(BUFF,sp) 1$: ld a,(x) incw x - call uart3_putc + call uart_putc add a,(CHKSUM,sp) ld (CHKSUM,sp),a dec (PLEN,sp) jrne 1$ ld a,(CHKSUM,sp) - call uart3_putc + call uart_putc call get_next cp a,#ACK jreq 2$