This machine use one of the implementations of bresenham line algorithm: dx := abs(x1-x0) dy := abs(y1-y0) if x0 < x1 sx := 1 else sx := -1 if y0 < y1 sy :=1 else sy := -1 err := dx-dy loop: setPixel (x0, y0) if x0=x1 and y0 =y1 stop e2 := 2*err if e2 > -dy { err := err -dy x0 := x0+sx } if e2 < dx { err := err + dx y0 := y0 + sy } goto loop It can draw lines in any directions. it has some cca full adders modified to make subtraction simple (!B invert B, CIn enabled) Run around 30 ticks, depend if it needs to add/subtract 1 to x or y or the two. I made other version of this, but spagetti. This is the seconds version of this implementation i build.
It has 4 binary inputs, x0, x1, y0, y1. The inputs are two points just p0 and p1. p0(x0, y0) p1(x1, y1) The machine is automatic, you only need to press the start button, do not press again until finished lamp is on. If you want to clear the screen, press the clear button. If you failed typing something just press the lever to turn off the machine, it will print 1 or two points more, but it stops.
Comments
Denied for now - needs fixes
Denied due two reasons:
- Interface:
-> Where on the display is point 0 | 0 ? Any indicator for that?
-> So I inputted some "bits" and hoped it would be (1|1 -> 15|15)... But I don't know, could have been (8|8 -> 7|7). Please indicate where the MSB/LSB is, or just write down all the bit values for each lever.
- Functionality
-> Not working, the clock is only enabled, when some non 0 data is stored.
You have two units at which you check the input numbers. Each eat a "current" value and a stored "init" value.
Funny thing is, on start you are constantly sending the inverse of the input into the unit, but pulse-store the correct value into these two units.
This causes the inputs both to be 1 in each bit, which means no value -> no clock enabled.
Fixed and labeled
I build delay to enable the clock when the start redstone pulse reach the clock. In addition, i labeled the msr/lsb.
Approved
The interface was that bad, that I messed up the xy inputs, so it did function properly.
Now the interface has been improved a bit, so its worth to be approved.