Don't have an account? Register now to chat, post, use our tools, and much more.
Online Users
There are 81 users online: 2 members, 55 guests and 24 bots.
Bots: VoilaBot (1), Spinn3r (2), VoilaBot (7), Googlebot (14).
SAX
 » Goto page Previous  1, 2, 3, 4, 5, 6
Author Message
Xeda112358

Power User

Joined: 09 Nov 2010
Posts: 345

 Posted: 03 Jul 2012 11:10:04 am    Post subject: Here is another routine that I made yesterday for a pseudo-random number generator: Code: ``` PseudoRandWord: ;Outputs: ;     BC was the previous pseudorandom number ;     HL is the pseudorandom number ;f(n+1)=(241f(n)+257) mod 65536   ;65536 ;181 cycles, add 17 if called      ld hl,(randSeed)      ld c,l      ld b,h      add hl,hl      add hl,bc      add hl,hl      add hl,bc      add hl,hl      add hl,bc      add hl,hl      add hl,hl      add hl,hl      add hl,hl      add hl,bc      inc h      inc hl      ld (randSeed),hl      ret ``` There are a few other nice features, too. For example, every 16-bit value is hit if you run this 65536 times. Or, if you only read 1 byte (for example, H from the output), it will hit every 8-bit number once if you run this 256 times. Plus, it can be seeded
Xeda112358

Power User

Joined: 09 Nov 2010
Posts: 345

 Posted: 07 Mar 2013 05:28:50 pm    Post subject: I was optimising some algorithms and code in Grammer and I came across a pretty big speed optimisation for computing 16-bit GCD: Code: ``` GCDDE_HL: ;Inputs: ;     HL,DE are the two values ;Outputs: ;     B is 0 ;     DE is 0 ;     HL is the GCD ;     C is not changed ;     A is not changed      ld b,1      or a CheckMax:               ;      sbc hl,de          ;ED52   15n      jr z,AdjustGCD     ;28**   12n-5      jr nc,ParityCheck  ;30**   12n-5      add hl,de      or a      ex de,hl ParityCheck:            ;      bit 0,e            ;CB**   8a      jr nz,DE_Odd       ;20**   12a-5b      bit 0,l            ;CB**   8b      jr z,BothEven      ;28**   12b-5c      rr d               ;CB**   8(n-a-b-c)      rr e               ;CB**   8(n-a-b-c)      jp CheckMax        ;C3**** 10(n-a-b-c) BothEven:               ;      inc b              ;04     4c      rr d \ rr e        ;       16c HL_Even:      rr h \ rr l        ;       16c      jp CheckMax        ;       10c DE_Odd:                 ;      bit 0,l            ;       8b      jr z,HL_Even       ;       12b-5d      sbc hl,de          ;       15d      rr h \ rr l        ;       16d      jp nz,CheckMax        ;       10d AdjustGCD:              ;      ex de,hl           ;       4      dec b              ;       4      ret z              ;       11+4(k>0)      add hl,hl          ;       11k      djnz \$-1           ;       13k-5      ret                ;       -- ``` I was using a slightly more naive approach before, computing the mod of two 16-bit values over and over (the Euclidean Algorithm). This code is pretty hefty, though, at 61 bytes. You can save three bytes by turning the JP instructions into JR, but there will be a tiny speed loss of a few cycles
 Display posts from previous: All Posts1 Day7 Days2 Weeks1 Month3 Months6 Months1 Year Oldest FirstNewest First
Register to Join the Conversation
Have your own thoughts to add to this or any other topic? Want to ask a question, offer a suggestion, share your own programs and projects, upload a file to the file archives, get help with calculator and computer programming, or simply chat with like-minded coders and tech and calculator enthusiasts via the site-wide AJAX SAX widget? Registration for a free Cemetech account only takes a minute.

»
 » Goto page Previous  1, 2, 3, 4, 5, 6 Page 6 of 6 » All times are GMT - 5 Hours

 Jump to: Select a forum Announcements----------------Cemetech AnnouncementsCemetech LabsContests General Discussion----------------Technology & Calculator Open Topic-- Electronics/Hardware Development-- Calculator HardwareYour ProjectsGeneral Open Topic-- Politics & Rants-- Reviews-- Humour/Jokes Cemetech's Projects----------------Doors CSSourceCoderMember Features-- TI-Freak8x-- Merthsoft-- GrammerOther & Upcoming Projects-- The BASIC Elite-- mobileTunes-- CALCnet 2.2-- SuggestionsProgramming the TI-83 Plus/TI-84 PlusUsing the TI-83 Plus/TI-84 PlusWebsite Programming & Design----------------General Programmingz80 AssemblyTI-BASICCasio Prizm/FX Development & ProgrammingWebsite Markup & ScriptingGraphics1337 Programming Tips Building with Blocks----------------FreeBuild, LEGO, and Minecraft-- FreeBuild General-- Suggestions & Troubleshooting-- Content & Gallery-- Servers & Activities
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© Copyright 2000-2013 Cemetech & Kerm Martian :: Page Execution Time: 0.028270 seconds.