Tutorial: How to put inline assembly functions into ZX Basic
24 posts
• Page 1 of 2 • 1, 2
Re: Tutorial: How to put inline assembly functions into ZX B
Hey!!! Amazing!! Thanks! 
Re: Tutorial: How to put inline assembly functions into ZX B
I never got around to learning assembly, 
Re: Tutorial: How to put inline assembly functions into ZX B
Well, I'm recommending ZX Basic as a way of learning - you can do it a little bit at a time, rather than having to do everything in assembly.
Re: Tutorial: How to put inline assembly functions into ZX B
Do you allow me to put a Copy of this cool Doc in Spectrum profi Club magazine? 
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Re: Tutorial: How to put inline assembly functions into ZX B
Of course, LCD. If you can make it look better formatted!
Re: Tutorial: How to put inline assembly functions into ZX B
britlion wrote:Of course, LCD. If you can make it look better formatted!
Thanks! Sure I will reformat it, thats no problem!
Edit: By the way, sorry for being off topic, but I did my mirroring function in Boriels BASIC a little bit different (without a table):
Anyway, optimising the routines is not the topic here. Your tutorial is great!
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Re: Tutorial: How to put inline assembly functions into ZX B
Yes - that looks like it would work, but it's a LOT harder to understand. I deliberately kept it as easy to read for Sinclair Basic users as possible, such as keeping "REM" rather than ' and using LET everywhere...
Also stuck to using BAND rather than & - and the basic and the machine code use very very nearly the same algorithm, so it's easier to see what the assembly is using.
Also stuck to using BAND rather than & - and the basic and the machine code use very very nearly the same algorithm, so it's easier to see what the assembly is using.
Re: Tutorial: How to put inline assembly functions into ZX B
britlion wrote:Yes - that looks like it would work, but it's a LOT harder to understand. I deliberately kept it as easy to read for Sinclair Basic users as possible, such as keeping "REM" rather than ' and using LET everywhere...
Also stuck to using BAND rather than & - and the basic and the machine code use very very nearly the same algorithm, so it's easier to see what the assembly is using.
Thats why I wrote its off Topic. Thats my art of coding, hard to understand, not suitable for tutorials, but working and very fast.
I do not use the LET command, but you are right, BAND is easier to understand for novices than &, I just used it because it is shorter and fits better in a line of code.
You inspired me to learn a bit more assembly.
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
Re: Tutorial: How to put inline assembly functions into ZX B
You should see what I'm working on now. Probably way too ambitious to finish. But I did 12 pages this evening...
http://goo.gl/4jPd5
http://goo.gl/4jPd5
Re: Tutorial: How to put inline assembly functions into ZX B
Though if I was going to, I'd say why bother with a new variable?
That said, if you read the behemoth assembly that makes. Ouch. Hopping on and off the stack like crazy! Not to mention a lot of very expensive reads and writes to (IX+7) - which cost 19 T states each. I wonder if my original beginners algorithm is faster!
Anyway, I think my suggested optimized version is pretty tight:
Last edited by britlion on Mon Feb 20, 2012 10:18 am, edited 1 time in total.
Re: Tutorial: How to put inline assembly functions into ZX B
I was in fact planning an ebook (PDF free & hard cover), for ZX Basic compiler.
But it's a huge task, and English is not my mother tongue!
But it's a huge task, and English is not my mother tongue!
Re: Tutorial: How to put inline assembly functions into ZX B
boriel wrote:I was in fact planning an ebook (PDF free & hard cover), for ZX Basic compiler.![]()
But it's a huge task, and English is not my mother tongue!
Yes. yes it is. Working on it...
At least some of it. No doubt I'll have time shortages again.
Re: Tutorial: How to put inline assembly functions into ZX B
britlion wrote:
Though if I was going to, I'd say why bother with a new variable?![]()
That said, if you read the behemoth assembly that makes. Ouch. Hopping on and off the stack like crazy! Not to mention a lot of very expensive reads and writes to (IX+7) - which cost 19 T states each. I wonder if my original beginners algorithm is faster!
I overseen it... It was my mirroring function from my unfinished fractal picture decompressor which I adopted to match yours, mine had no dowedoit, so it was:
Your original beginners function was not faster, it was in fact slower because multiplication and division is allways slower than bitshifting. I'm happy that boriel included it as it is a big help in optimizing programs, so you could use SHR and SHL in place of >> and <<. With this your code will match the ASM version much better, and work faster.
It is!!!
Much faster than both compiled codes.
The books looks very good by the way!!! My compliments!
------------------------------------------------------------
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
http://lcd-one.da.ru redirector is dead
Visit my http://members.inode.at/838331/index.html home page!
24 posts
• Page 1 of 2 • 1, 2
Who is online
Users browsing this forum: No registered users and 0 guests

