From: Alan Cox Date: Tue, 12 Mar 2019 00:11:52 +0000 (+0000) Subject: usermem_std-8085: add optimized uput X-Git-Url: https://git.ndcode.org/public/gitweb.cgi?a=commitdiff_plain;h=8a3475604cf1a05c24c0c54a464d64ec425747d4;p=FUZIX.git usermem_std-8085: add optimized uput --- diff --git a/Kernel/usermem_std-8085.s b/Kernel/usermem_std-8085.s index 82a89f3b..129323f1 100644 --- a/Kernel/usermem_std-8085.s +++ b/Kernel/usermem_std-8085.s @@ -110,30 +110,27 @@ nowork: __uput: push b - lxi h,9 ! End of count argument - dad sp - mov b,m - dcx h - mov c,m - mov a,c - ora b + ldsi 8 + lhlx + mov c,l + mov b,h + mov a,b + ora c jz nowork - dcx h - mov d,m ! Destination - dcx h - mov e,m - dcx h - mov a,m - dcx h - mov l,m - mov h,a + ldsi 6 + lhlx + push h + ldsi 6 ! offset 4 but we pushed another item so 6 + lhlx + pop d ! HL = dest, DE = source, BC = count ! - ! So after all that work we have HL=src DE=dst BC=count + ! So after all that work we have DE=src HL=dst BC=count ! and we know count != 0. ! ! Simple unoptimized copy loop for now. Horribly slow for ! things like 512 byte disk blocks ! + dcx b uputcopy: mov a,m call map_process_always @@ -142,9 +139,7 @@ uputcopy: inx h inx d dcx b - mov a,b - ora c - jnz uputcopy + jnk uputcopy pop b lxi d,0 ret