
Solving differential equations on a 6502 with Woz's floating point code - ben165
https://github.com/ben165/6502_solving_de
======
keithnz
I find it funny that people enjoy the nostalgia of things like 6502... I loved
my Atari 800XL, but wistfully dreamed that computers might one day be able to
handle 320x240 with 256 colours.... boy... that would be good! Meanwhile I was
hand assembling 6502 into data sections in basic so I could try and draw a
circle... who knew drawing circles was so ridculously difficult and slow?

Having said that, I do like this stuff in hindsight :)

~~~
markrages
Were you using a CORDIC algorithm? Bit shifts and adds, no multiplies
required.

~~~
djmips
You don't need CORDIC to draw a circle. BTW, I implemented a CORDIC routine in
6502. It would really benefit from a barrel shifter which the 6502 does not
have.
[https://atariage.com/forums/blogs/entry/3385-atan2-in-6502/](https://atariage.com/forums/blogs/entry/3385-atan2-in-6502/)

In gist form
[https://gist.github.com/djmips/29a8fa9099bf92b31a7259da65915...](https://gist.github.com/djmips/29a8fa9099bf92b31a7259da65915de1)

------
JJMcJ
Not the floating point, but saw his code for other parts of the 6502 Apple
products, he really was a genius. The code is both very clever AND quite
understandable.

My understanding is his circuit design was similar. One thing, use a part of
the circuit for two different things at different points of the clock cycles,
so parts count was reduced.

~~~
KibbutzDalia
There's also "Sweet 16", Woz's "16-bit virtual machine" that's in the Apple ][
Integer basic ROMs. Another piece of pure genius code.

[https://en.wikipedia.org/wiki/SWEET16](https://en.wikipedia.org/wiki/SWEET16)

------
diydsp
Is that first-order approximation appropriate for iteratively solving the Diff
EQ? Or does a higher order method such as Runge-Kutta have to be used? I
notice the graphs don't align perfectly...

~~~
ben165
It's the easiest approach to solve the ODL: Euler Forward (yes, first order).
The approximation could be much better and almost exact with a smaller step
size. Runge-Kutta is used for higher ODL's, where the Euler method would fail
(especially with periodic solutions).

------
ngcc_hk
Very interesting ... thanks for pointing to py65 as well

------
aswanson
Awesome. I love projects like this.

