Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Topics - Keoni29

Pages: [1] 2 3 ... 9
Other / Z820 - Z80 computer
« on: February 27, 2015, 03:03:56 pm »
Z820 - Z80 Computer

Original post:

First video of a blinking LED program.

The features:
CPU: Z80 @ 20MHz
RAM: 128k
UART: Up to 1.25Mb/s transfer rate
FDC: Not implemented yet.

Sourcecode can be found here: (unoptimized as all hell, cause I am still learning)

Music Showcase / ElectroHouse - Tall Grass
« on: January 31, 2015, 06:09:08 pm »
I made music again :D

xpost from CW:
I made this song after listening to a bunch of monstercat podcasts. I think it turned out pretty good. There is an easter egg hidden in the song somewhere. Can you find it?

Download the song here:

Other / Visicom Textphone Reverse-engineering
« on: January 11, 2015, 12:50:53 pm »
Project page:

The Visicom is a textphone for deaf people from the 80's. It has a keyboard, video output and built in modem. You could use it as a textphone using the textphone protocol or as a teletype (tty) using the built in modem.

I bought this at a thriftshop because it looked interesting.
I decided to crack it open and find out exactly what makes it tick. Detailed documentation can be found on my project page.


Left: Video output. You're greeted with a dutch menu. This image shows B&W video, but there is a switch inside the device which enables 8 color video.
Right: Rom reader device I built to dump the firmware. The disassembly can be found here:

I found an open-source disassembler written in Golang for the tms7001 microcontroller that is inside the visicom, but it was really buggy. I managed to fix a lot of the bugs. I published the disassembled rom on my website. Using javascript I made all addresses operands links so you can jump by clicking them.
Rom disassembly can be found here:

I am now able to write my own code for the device. So far I can:
- Set up the serial clock generator.
- Control the MCU's internal I/O port.
- Use interrupts
- Read and write data over serial (using the ACIA)
- Read keystrokes from the keyboard

I solved some interrupt problems by looking at the disassembly. It seems like the people who designed this thing ran into the same problems as I did :P
Next I want to output characters on the screen.

Other / ColorData - Paper tape reader
« on: December 20, 2014, 07:23:36 pm »
I designed and built a device that can read paper tape with colored bands on it. The order in which the colors are read determine the bit pattern that comes out. A transition from red to green results in a 0 for example.

Source can be found here:

Axe / Help with axe interrupts
« on: November 25, 2014, 10:37:24 am »
For some reason interrupts don't work the way they used to (or I am just being stupid)
This code is supposed to increment a number on screen once every second, but it doesn't. It just increments T once and then never does the ISR again. Why is that?
Code: [Select]
.ISR fnInt(msc, 6)
Repeat  getkey(15)


Computer Projects and Ideas / eZ8 IRC bot
« on: November 21, 2014, 01:30:07 pm »
I am writing a bot that will allow IRC users to take control of my eZ8 computer. The eZ8 computer will be hooked up to the serial port on my host machine and a node.js script will take care of relaying data from IRC to the eZ8.

Follow the progress here:

Axe / Interrupt driven sound in AXE
« on: November 18, 2014, 05:48:46 pm »
Has anyone found a way to produce decent soundeffects using interrupts?

Gaming Discussion / Fck yeah runescape music
« on: November 12, 2014, 02:23:40 pm »
What is/are your favorite track(s)?

Computer Programming / BMP image garbled picture
« on: October 17, 2014, 03:39:55 am »
I made a test program that generates variable size bmp images. When I generate images with widths under 11 or so the images have weird colors in them at the top.
Code: [Select]
    Create 24 bit Bitmap image.
    Date: 16 oct 2014
    Version: 1
    Error: Weird colors when making images smaller than ~11 pixels wide.

#include <stdio.h>

/* Write little-endian 32 bit value to file. */
void fputlong(int val, FILE *fp){
    fputc((char)(val & 0xFF), fp);
    fputc((char)((val >> 8 )& 0xFF), fp);
    fputc((char)((val >> 16) & 0xFF), fp);   
    fputc((char)(val >> 24), fp);

    argv[1] = char *src;
    argv[2] = char *dst;
int main (int argc, char *argv[]) {
    FILE *dst;
    int ch, padding, xx, yy, w, h;
    char red, green, blue;
    /* Verify user input */
    if (argc < 4) {
        printf("Error: ");
    switch (argc) {
        case 0:
        case 1: printf("Missing filename");
        case 2: printf("Missing image width");
        case 3: printf("Missing image height");
        case 4: printf("Missing RED color value");
        case 5: printf("Missing GREEN color value");
        case 6: printf("Missing BLUE color value");
    if (argc < 4) {
        printf("\nUsage: bmptest file.bmp width height r(0-255) g(0-255) b(0-255)\n");   
        return 0;
w = atoi(argv[2]);
    h = atoi(argv[3]);
    red = (char)atoi(argv[4]);
    green = (char)atoi(argv[5]);
    blue = (char)atoi(argv[6]);

    dst = fopen(argv[1], "wb+");

    /* Write file header */
    fputc('B', dst);    // File identifier
    fputc('M', dst);    //
    padding = (4 - ((w * 3) % 4))% 4;
fputlong(w * h * 3 + 50 + (padding * h), dst); // Filesize
    fputlong(0x00, dst);        // Reserved 4 bytes.
    fputlong(0x036, dst);     // Offset
    fputlong(w, dst);        // Width of bitmap
    fputlong(h, dst);        // Height of bitmap
    fputc(0x01, dst);        // Number of color planes
    fputc(0x00, dst);
    fputc(24, dst);            // Number of bits per pixel
    fputc(0x00, dst);
    fputlong(0x00, dst);    // Compression method: none
    fputlong(0x00, dst);    // Image size. Dummy 0
    fputlong(0x2700, dst);    // Horizontal resolution
    fputlong(0x2700, dst);    // Vertical resolution
    fputlong(0x00, dst);    // Number of colors in palette (Default 2^n)
    fputlong(0x00, dst);    // All colors are equally important
    for (yy = 0; yy < h; yy ++) {
        for (xx = 0; xx < w; xx ++) {
fputc(blue, dst);
fputc(green, dst);
fputc(red, dst);
for (xx = 0; xx < padding; xx ++) {
fputc(0x00, dst);
    printf("Padding = %d; Filesize = %d\n", padding , w * h * 3 + 50 + (padding * h));
    return 0;
Is this a problem with my code or with the decoder?
My bad. Padding should be at the end of every row of pixels >.<

Web Programming and Design / My project database
« on: September 29, 2014, 03:57:49 pm »
I am working on a project database. It will have information about most of my hardware and software projects. Some projects will have their own project webpage.

CBS6000 project page:

Other / Pinging the whole internet
« on: September 22, 2014, 05:11:38 pm »
The ipv4 version of the internet counts 2^32 individual addresses. I decided to ping all of them, wait for a response and if I get one: log that to a file.

I wrote a script that does this for me. If I run 256 instances of this script simultaneously I can ping the whole internet in about 10 days.
Just some logfiles are not super interesting to watch, but once you convert them into an image it becomes a lot more interesting. This is a test image I generated using the data from the 83.xx.xx.xx range. Each pixel represents a block of 256 ip addresses. The color is determined by how many devices responded in the block.

Pinged all addresses in the 83.xx.xx.xx range:

It takes about 1 hour to generate a picture like this. I will release the source once it's done :D

Other / CBS6000 - an 8-bit 6510 computer
« on: September 10, 2014, 12:12:44 pm »
Original blog post:

CBS6000 stands for Cartridge Based System 6000 (KB)
Name is subject to change.
I have been working on this computer for a couple of days now. Today I added the I/O board with a seven segment display on it. It is driven by a latch, so I could even put letters on it.
  • Cpu: MOS6510 @1MHz (base 2MHz divided /2)
  • Ram: 128KB
  • Rom: 8KB
  • I/O: UART, FSK modem (also for loading from casette tape), printer port, 6 digit led display

Other / Should everyone learn how to code? Blinky lights and beepy sounds
« on: September 05, 2014, 05:44:26 pm »
Should everyone learn how to code? Everyone walks around with computers in their pockets, but nobody knows what makes these devices tick. People don't know where software comes from anymore. When something has blinky lights and beepy sounds it's cool, but if it calculates the square root of pi in a 20 byte program it's... interesting I guess?

What are your opinions?

Other / Epic workarounds
« on: September 05, 2014, 11:26:56 am »
Share your epic workarounds here.

Problem: Getting code from my pc to a 6502 8 bit computer I made.
  • Assemble code
  • Hex-edit the resulting binary into a rom image
  • Send the rom image to my server via filezilla
  • Download the rom image in a virtual machine running windows XP
  • Upload the rom to an atari2600 cartridge using my cartreader software
  • Take the cartridge out of the reader and put it in the 6502 computer
  • Turn on the computer and see if it works
  • Repeat this a bunch of times until there are no more bugs.
Once the hardware bugs are ironed out I could just write an emulator for the thing and debug using that, but for now this method works.

Other / Building a giant laptop
« on: August 30, 2014, 12:51:50 pm »
Building a giant rugged laptop. Specs: Celeron D cpu, 2GB ram, Dual boot WinXP Xubuntu on 200GB hdd
Most importantly: full keyboard.

I intend to use this thing outdoors.

Image is clicky

Pages: [1] 2 3 ... 9