Share your projects


I recently bought a cheap watch repair kit off've eBay and have been using it to shorten a couple of stainless steel straps. It also came with watch back removal tools, so I can now change my own batteries when the time comes.
 
OK, I had to do something to relax.
However, the problem is that making things of wood was out of question as it was too noisy.
So I decided to do something useful with my open source IC tester software project. Yes, C++ and Qt, so relaxing...
First thing, when I was making chip models for tests, I quickly found that after writing pins descriptions in a window it's boring to click through nearly all pins to set Vcc, GND and outputs, maybe NC (they're inputs by default). It looks like this:
edit1.png
First, type, name and number of pins are filled. Then pin names are written and type fields are clicked to get Input, Output, Vcc, GND or NC. This clicking through was tiring.

So I added a few additional settings to store a set of wildcards. There are 4 sets of wildcards available: For Vcc, GND, Output and NC. If pin name matches, its function is automatically set to the specific one.
This way, if pin is named Vcc, it automatically is set to power, GND to ground and if it starts with Q having one or two characters after, it defaults to output.

Finally I decided to add a comment support in test scripts. This was quite hard decision, as original software for Windows 95 allowed to have #-started comments, but passed them the way that they were removed when the script was saved in the editor, so the script made by my program will be stripped by the original software. I decided to add a support for single-line #-comments in two ways (I call it inverted-Matlab :) ):
- If the comment does not end with ; it is a typical comment in a program, it is visible only in the script editor and works as an ordinary comment. It has no number assigned and is totally invisible during script run.
- If the comment ends with ; this comment is special, it is seen as a test step and is displayed in the log as information during test. This way it is possible to split the large test script to some blocks and inform user that it is there doing something. Or write like "Trying to overflow 16-bit counter by wiggling its clock, get some movie and drink..." :).
The comment support is introduced into GUI and command-line version the same way. Unused number fields in script format are changed accordingly.

Finally made the command-line version fail gracefully and turn the voltage off after the process was aborted by Ctrl-C. The same thing should be done with static memory testing CLI programs.

I decided to implement a possibility to launch user-configurable set of external programs. This instead of integrating S-RAM testing routines into GUI and CLI versions. Now it has its place in settings and has its menu in the main window, it is possible to edit the list and put parameters like port, baudrate and timeout of tester or force tester to be reset after the program ends, but nothing is saved to settings file yet.

A friend who uses my program too asks me about possibility to add signal tracer option as it was in the original. I know that there is, since 2014, a hidden, not wired checkbox called "Update trace" in the main form, but it is just too uncertain to be used as a digital analyzer - in this mode, it just blows all 24 pin states in form of 3 bytes without any breaks, without any possibility to check aren't there any bytes lost and everything goes out of sync. This was acceptable in DOS-based Win95, but not in Linux with cheap USB-RS232 converters.

Well, I will not release it right off the bat. I like to keep the program for a few months in use to check aren't there any significant bugs. Then I'll put the sources. There is certainly something wrong in some cases when the script is made and power pins are changed after script contains the "compare" command which requires to re-add this command, I had this two times per few hundreds of edits, but I just can't reproduce this bug.
 
More useless projects that I'll probably never finish:

Fantasy computer (that I kinda wanted to build with FPGAs later on)


Metal Rain (an artillery game with some unique mechanics)


I was hoping that given how I've tried to keep the mechanics of Metal Rain simple I'd have got further than I have.
 
I have finally "finished" my first tesla coil!


The discharges are a bit undersized for the coil size. I'll probably make a new capacitor at some point to increase the discharge length.
But, for a first coil, this is fantastic! I guesstimate the output voltage at about 220000V
 
Not exactly a project, as I did this for my work, but I don't do this kind of things for a living and involved quite a bit of thinking/improvisation and somebody might find it fun or useful:

This one goes for all those folks out there that despite not having tried the Pyra yet, are asking for a new bleeding-edge CPU to replace the OMAP.

Pro-grade CCTV system running on ancient hardware:

The gear:
Motherboard: ABIT IS7-V2 (max. SATA-150) c.2003
CPU: P4 3.00GHz 32bit c.2004
RAM: 1.5GiB DDR-400 c.2000
(GPU: Radeon RV280 c.2003 not used)
2x 100Mbps NIC
5x HDD:
->HDD0: 120GB IDE -> unmounted.
->HDD1(sdb1): 40GB IDE -> samba.
->HDD2(sdc1): 500GB SATA -> / + samba + 2MP(FHD) storage.
->HDD3(sdd5): 250GB SATA -> 2x 4MP(3MP) storage.
->HDD4(sde5): 250GB SATA -> 1x 4MP(3MP) storage + 1x 3MP(3MP) storage.

Everything mounted in a consumer grade full size ATX chassis. Running Ubuntu server 16.04.6 and recording from the main stream of 5 cameras (also streaming the sub stream of 4 of them):
->1x 2MP streaming FHD (x264 1920x1080 15FPS)
->1x 3MP streaming 3MP (x264 2304x1296 20FPS)
->3x 4MP streaming 3MP (x264 2304x1296 20FPS)

The typical layout with all 9 streams, censored for obvious reasons...:



Running 24/7 inside a small fan modded ("recycled" a standard AMD cpu-fan for this) Ikea wall cabinet.

Typical sensors & HDD temperature readings:



All 5 cameras are PoE feeded and update their time from a ntp server running on the server.

Typical bandwidth usage for the NIC that receives the streams:

 
I have finally built my tester software on Windows. I had a small, trimmed-down Qt 5.5 distribution made in 2015, especially to fit under 10MB for a whole distribution when compressed (it is now almost 6MB). It runs!
It does not try to write config files to C:\~\.config... It creates configuration files in its directory. Not very good, but not a disaster.
It does not try to connect to "/dev/ttyUSB0" in Windows, it enumerates ports properly. It even detects speeds of these ports.
The UI does not fall apart!
And... comments work!
comments.png


Notice that (ignoring poorly written tables theme) first comment has no number and the second one has - as this comment will be shown in test log.
I was running the software always on Linux, and now a complete set of programs (with command line tools) just got built under Windows using "build all" option in Qt Creator and is working well. After significant problems with Windows building in Qt 4 and distribution size problems with Qt5 (compressed over 20MB) this is really surprising.
OK, the last Windows I tried was XP, as I have given up with newer versions when they introduced too intrusive spyware features, I may not have purchased all MS bosses signatures to run software on newer Windows :).
 
The final repair log of Soviet microcomputer (cumulative version + some information what to expect in Soviet systems). I will use western names of chips for better understanding.
This may sound sick, but I just like doing these diagnostics. Probably a better version of this text will get to my "Other rants section".
There were of course more boot attempts as I tested it and monitored what happens on reset with a TTL probe, but these are the most important checkpoints.

Another part of adventures with Mikrosha. This looks like a quite consistent 8080 system with a CPU, a few 8255s, 8275 as display controller, DMA controller, timer and 32kB of RAM in 2118 clones (in case of failure I will be able to substitute with modified 4164, knowing that it's possible to put modified 4164 as 4116 and 2118s are like 4116s but single-voltage).
Review of the power supply unit shown (except heavy, heat-proof capacitors) that the -5V regulating transistor (total current: 50mA, no protection at all, dissipation: really poor) conducts C-E in both sides. That's why as I measured it initially, it gave -11.3V in -5V line. Replaced the transistor with the first 100mA PNP I found in my "desolder box", voltages returned to normal.

Boot attempt 1: Computer is not starting.
Probably someone connected this bad power unit to the computer and it got damaged. I don't know much about 8080 systems, but generally, 8080 when there's no -5V, develops a short condition and a pin "blows". I have no idea what happens to 8080 when it gets -11 instead of -5V.
Desoldered the CPU. It seems to work in another 1.2MHz 8080 system, but its operation... "chokes". I replaced it with working one (Soviet too). The laminate is poor and tracks delaminate with heat, but the amount of solder they gave is so small that I rarely have to heat it more than two seconds to suck the solder out with spring-loaded heated pump. Then, I solder the sockets and check with ohmmeter is metallization OK. It was always OK.

Boot attempt 2: The same.
After reset, it seems to reset the 8275 as garbage on the screen is no more and I get a nice, black screen. 8275 holds /CS of character ROM high, while CPU does something on the bus, and then there is silence. Both buses go Hi-Z. There is no hold state, as both HOLD (driven by 8257 DMA chip) and HOLD ACK are low.
This is something that rarely happens in most Z80 systems and usually is a sign of bad bus drivers (in this computer everything is just connected with a small amount of glue logic, there are no external bus drivers except RAM signals being separated with 74LS257+7495). Usually there is a rattle on the bus all time. I don't have an experience with 8080, but I think that tape input op-amp which also takes -5V should also be desoldered for verification. I also need to check the memory.
The memory in these computers is diagnosed easily: You put a known good chip on top of not each one and if it starts, it's the bad chip "bridged". Problem: In Soviet chips you have remains of everything on pins. Starting from gold, ending with rust, with different flavors of flux and polymer used for the casing in between. After cleaning with a wire brush and testing - no change. So more RAM chips may be damaged or it's something else.
Wat else could fail was 8255 parallel interface. There are two 8255s in the system. The second is mostly used for external interfaces and it's not relevant here. The first one is responsible for:
- A multiplexed keyboard. They had no diodes, they used resistors instead for separation. Also a keyboard set (RUS/LAT) LED.
- Tape I/O
- Gating the timer chip
- Gating Speaker driven from timer chip.
The first one, when fails, prevents the timer to boot up completely. This should be audible as constant flow of garbage from speaker, but the timer boots, emits constant signal and speaker is silent. So no gating, let's socket both 8255 and check them.

Boot attempt 3: BEEEEEP!
Yes, the first one was bad. After replacing with another one, the computer started emitting a constant tone. Something was happening on the bus all time, but no signs of life from keyboard and display.
Memory. Now I decoded to shotgun-replace this. I know enough about KR565RU5 and RU6, they fail, they fail many times (in fact I had one computer in which they were good, even Polish factories not used them and got more expensive, imported, western ones bought for rare dollars), and this computer had two types of memory installed: From 10th week of 1990 and from 5th week of 1990. There could be something wrong. So I just socketed it all. As I had soldering iron ready, I did the same with EPROM and tested it in programmer - it is OK.
After testing my RAMs in trusty ZX Spectrum (putting them one by one instead of one 4116) I found 3 chips bad. Reworked 3 4164s and installed them in Microsha with all other working comrades.

Boot attempt 4: Click, blink, and then nothing.
The computer seemed to initialize. The timer chip got its signals formed, 8255 initialized properly, a short click came through a speaker and RUS/Latin LED blinked when its set its ports. Pressing the keyboard RUS/LAT key (which should beep and light LED) clicks a speaker. So the computer roughly works, but fails somewhere. Let's hunt for strange signals even more.
After "blowing" a whole address bus and /CAS, I found a strange thing with /RAS signal. It was held high all time, even when it should be low. It means that the memory, instead of a nice array, for a CPU got a form of a narrow "gut" in the area. But why does it happen?
And now I encountered the very specific failure, a second time. This looks to be specific to Soviet chips, I call it "cross-short", I encountered it first with equivalent of 8286 bus controller. It looks like a cross-device short, a failure which should be visible in factory tests (two outputs of two separate devices are shorted, usually it looks like a 20-40Ohm resistance), but it somehow develops when the chip fails in circuit. Remember these KP11 (74256) for driving RAM signals? There was a problem. What's more interesting, if you put all high and all low in these drivers during test, you will not get this chip diagnosed as bad, devices must be tested separately.

Boot attempt 5: It works!
After replacing the faulty multiplexer it booted up and greeted me with its monitor firmware! I can drive external interfaces and saving area of memory to cassette output gives me a nice sound.

Now about the faulty CPU. I put it back in Microsha and ran a simple program which wrote and read memory. It... just started to fall apart after ca. 30 seconds. In the oscilloscope it looks like CPU gives a short "spikes" with endings like a discharging capacitor instead of pulses when needed, so devices get wrong data and addressing errors start cumulating until screen RAM becomes corrupted too and refreshing starts to degrade data. Under 1MHz, the CPU works very well, in 1.2MHz it "chokes" and in 1.77MHz it... just becomes terribly unreliable.
 
while i started out in this thread (https://pyra-handheld.com/boards/threads/the-communication-cube.59464/post-1670570), i thought i'd post something here, too.

my ray tracer is coming along. i now have a recursive octree-like Geometry which can be procedurally generated. there are some bugs (from certain angles, you can see through edges of the octree geometry). but it's running decently fast on my laptop for the terrible resolution i put it at (200x150). i use SDL to scale it up, however, so i don't have to squint to see it :)
sphere2-opt.gif
 
Looks great, but at the end of the animation, how come the box to the right of the spheres get cut in half?
selective sharp eye i see ;)
there are some bugs (from certain angles, you can see through edges of the octree geometry).
i need to add more tests, especially for that angle and position (though i'm not sure what that is). right now i have no idea what is happening, but i think i have a bad asymmetry between x, y, z somewhere, possibly on determining which wall will be hit first.

currently i'm trying to add debug functionality to a single light ray, as opposed to all of them (which is a jumbled mess due to parallelism), so that i can push a button to get a snapshot for a single pixel on the screen...
 
Got Unreal Tournament GOTY Edition and wine running on my super cheap Samsung Chromebook 3. Then tied it all to a desktop icon/shortcut for easy launching.
 
There's a native Linux port and no need to use WINE.
Here's info about it and a link to the files under "Availability":

I have the GOTY edition discs which supposedly include a linux version, but it is at my house and I wont be back there for months yet. I will check the link, but in all my looking I couldn't find anything but super hacky linux scripts to apply to the windows version that were more trouble than they were worth.

Fingers crossed your link sheds some new light as it would enable me to ues the high res stuff.
 
The package linked there is pretty straightforward as I remember, not much fiddling required. The old Linux port from the physical edition is probably more trouble these days.
 
Just recently I've been modifying my Nokia 8110 4G and stripping the amount of software on my laptop back to the bare minimum. As a follow up act I was planning to binge watch all 101 of JackSepticEye's Happy Wheels videos, the last time I watched my way through them there was only 99 and it took me 2½ days on and off.
 
Last edited:
  • Like
Reactions: rSl
The package linked there is pretty straightforward as I remember, not much fiddling required. The old Linux port from the physical edition is probably more trouble these days.


Hmm just gave it a try. kind of a pain still because chrome basically runs a linux vm...so it looks like it breaks stuff.

Untar, copied the 451 files over to the extracted game files, overwrote, and...nothing. Chmoded the scripts and still nothing. I am certainly open to help/ideas
 
Hmm just gave it a try. kind of a pain still because chrome basically runs a linux vm...so it looks like it breaks stuff.

Untar, copied the 451 files over to the extracted game files, overwrote, and...nothing. Chmoded the scripts and still nothing. I am certainly open to help/ideas

Had one more idea to try and get the native linux port working, well give it a try in a couple days
 
Back
Top