Skip to content

Category: News

News

Bildschirmtext (BTX)

Being a kid from the 80ies, i never came around using the german Bildschirmtext service. Luckily I found a recent implementation of the BTX protocol with some pages from the late 80ies and early 90ies.

Run the BTX server

brew install socat
git clone https://github.com/bildschirmtext/bildschirmtext
cd bildschirmtext
python3 -m virtualenv env
source env/bin/activate
pip install -r requirements.txt
cd server
socat TCP-LISTEN:20000,reuseaddr,fork 'exec:python neu-ulm.py'

Compile and run the client

brew install sdl2
git clone https://github.com/optixx/btx_decoder
cd btx_decoder/sdl
make
./btx_sdl 127.0.0.1:20000

Usage

The guest user (user 0, co-user 1) has an empty password, so you can log in as a guest by pressing “#” 3x at startup (or DCT once). You can define your own users by creating files in users/ and secrets/.

*00#: Retransmit page (in case of transmission errors)
*09#: create page again (or reload from database)
*#: return to the previous page
*page number#: navigation to a specific page
[0-9] and #: navigation to a following page
**: deletes the input
*9#: logs off the user
Comments closed

A modern toolchain for Vectrex development

Recently i read an article about the Vectrex game console. I kew the system a bit, also played it when it came out in the early 80s at a friends house. But i never really hat a connection to the system, like i have for the SNES or the Amiga computer.

Since writing an emulator is on my programming bucketlist, i recenlty took a look at simple platforms that i could start to write an emulator for. I looked into stuff like Chip8 and the GameBoy that seemed easy to emulate, in comparison to a PS1 or N64.

So the Vectrex got interested. I started reading its specification. It all seemed straigth forward to me. The Vectrex uses a Motorola 6809 CPU, which is not a super common 8bit CPU, but was used in the Dragon home computers. Otherwise there is an AY-3-8912 for the sound and 1KB RAM and 8KB ROM.

To get started i took a look into homebrew scene, to figure out getting own code runing on the machine. As usual for systems from that time it was mainly programmed using machine code. Which i kind of like, but also implicates a higher learning curve. There is typically no middleware or frameworks that helps you with anyhting, so you have to learn all the HW registers and figure out how to stuff.

So i was surpised to find a of modern c toolchain with some libc and bios support. I ended up following the instructions for a modern c based toolchain.

The toolchain basically consists of a c compiler, assmbler & linker and a emulator. It also came with and SDL based Emulator, but it would not run on current MacOS because of the unmaintained/bugfixed SDL library. So i decided to port the the emulator to SDL2, which was fun learning the render contexts of SDL2.

So thats what iam using

  • CMOC – The C compiler
  • LWTOOLS – Assembler and linker for the 6809
  • VecX – Vectrex emulator

I started off modifying the c examples that came from Johan who ported the CMOC compiler suite to the Vectrex system.

This is what i came with, you can find the code in my sample repo.

VecX Emulator

Comments closed

Bake that Book

Last Summer i gave my old Macbook Pro 15″, Late 2011 with 8GB and 160GB SSD to a friend, since i got a Retina upgrade. I think the old one was still decent, since the SSD gave it that boost to make it usable, even if the laptop was 2 years old at that time. Unluckily the old Macbook Pro didn’t last long, it just died after 3 month. Wouldn’t turn on anymore. As i predicted, after bringing it to the Apple Store, they said the logic board was fried, which always means its totaled. We bought a new Macbook and moved on.

Now i got the broken Macbook back to my place and i thought i would at least sell the display, case and reuse the SSD. But i remembered reading all the Macbook baking blog articles. I already disassembled a few Macbooks down to the logic board and also did some reflow stuff for side projects. Also knowing that a friend of mine has good experience with baking old Nokia phones, i though i give it a try.

  • Go to ifixt.com and look up the tutorial to change the logic board
  • Disassemble the laptop, collect screws and parts in separate containers
  • Be becareful with all the ribbon cable connectors, there are a lot and some are tricky
  • Get the logic board out, remove heat pipes, ram and speakers
  • Preheat oven to 180c
  • I cleaned the board with isopropyl alcohol
  • Set board on tin foil legs on a baking tray
  • Put in the oven for 7 minutes
  • Let it cool fast at a open window
  • Clean fans and case from the inside
  • Assemble, make sure to get all cables connected
  • Boot that Book

I hoped that i had a 50/50 chance that it will work. I was confident, that i don’t mess the laptop during disassemble and assemble phase, i wasn’t sure what the result was after baking. I remembered that the laptop got quite hot while working, so there were some odds that this permanent heat would have altered the setup of the parts of the pcb. And it turned out to be worth the work, the Macbook booted up nicely.

Get your tools

IMG_2536

IMG_2534

IMG_2537

IMG_2538

IMG_2540

IMG_2543

1 Comment

Super Nintendo Talk

A while ago i held a talk at the ccc in cologne about my favorite game console the Super Nintendo. This talk covers the Super Nintendo technology in detail. Starting with the CPU and PPU, covering the cartridge memory maps and showing most of the custom chips which where used on cartridges. I also show development hardware, copier stations and the current available flashcarts. The topic emulation is also covered . The second part of the talk is about the quickdev16 project, which i did with my friend max in 2009. We built a flashcart for the SNES which is useful for developing homebrew software. The talk sums up all the details i learned during the research i made to built this kind of cartridge. I uploaded the slides, maybe someone find this useful to dive into the SNES world.

1 Comment

New Quickdev16 Loader

We got a new loader for the Quickdev16 firmware. The loader will replace
the current dummy loader and has a few new advantages:

qd16boot02

* Faster upload because of IRQ driven communication between SNES and AVR
* Progressbar while uploading
* Display Rom infos
* ASCII and Katakana font support
* Eyecandy: new logo design with sine wave effect and bassdrum synced
background effects..

Due to these features the loader blew up to more than 55kb, too much for
our limited space in the AVR progmem (64kb – 4kb bootloader). Our main
firmware is between 8kb and 24kb, depends on the debug-features that you
compile in. So the recent task is to either reduce the loader size by
skipping eyecandy, finding a better compression routine to compress it
in the progmem or build a minimal firmware and put parts of the loader
into the surplus 4kb eeprom on the AVR. Probably we will have to combine
the different approaches.

One reason why the firmware is that big these days is the new “minimal
debug terminal”, a serial command line where you can maintain the
Quickdev system status. You can dump memory regions from sram, switch
between the busses, write to the shared memory section, show the status
of the hardware ports and use several other usefull commands. Check the
project page for more details on the commands.

1 Comment