Target-Earth Blog!
Welcome to the blog section of my website. Here you'll find my mostly useless information on various retro gaming computers and consoles and a few other hobbies…
Some useful shortcuts:
- Video Game database - Current database of my gaming systems and games.
- Tech stuff - Retro gaming and computers, old electronics, network installers for Unix-like systems.
- Model making - Scale model making, sci-fi; Gundam, Macross, Maschinen Krieger…
- Car stuff - Rebuilds, projects and previous cars.
- Personal projects - Days out, DIY jobs, other unsorted stuff…
- Digital Photography - My very amateur attempts at digital photography.
- Book Collection - Cataloguing my book collection.
These pages have recently been changed or updated:
Latest Posts
Pages which have been added most recently:
911 Turbo - Exhaust Removal & Replacement
I had upgraded most (but not all) of the exhaust system around 2010 by fitting a Fabspeed decat pipe and a seat of GSF heat exchangers (which also involved refitting a back-dated 930 Turbo oil return pipe under the crankcase, rather than the 964 Turbo pipe which interferes with the placement of the join between the two cylinder banks on the aftermarket system).
I kept the standard exhaust silencer in the rear wheel arch and standard exhaust tips and the factory wastegate pipework.
Some time around 2011 after replacing most of the leaking oil pipes I decided to take the system off and replace a number of seals and gaskets that had started to show signs of leaking (carbon soot around several joints in the exhaust system), as well as replace the factory exhaust tips.
After more than 10 years, the GSF system (which was by far the cheapest stainless system on the market at that point in time) was still looking in pretty good condition.
To Do List!
Things I have to write down to remember to do:
- Commodore 64 DTV2
- Finish case
- Wire up connections & ports
- Power supply
- S-Video fix
- Sinclair QL
- Find low-profile DIP sockets
- Finishing soldering
- Remove revision 5 QL internal bodge wiring
- Atari 65XE task #1
- Desolder Pokey chip
- Fit socket
- Mount PS/2 keyboard socket to case
- Atari 65XE task #2
- Find retrobrite solution or alternative
- Removing all keycaps and try to restore
- Fit new case badge
- Atari 520STe
- Install alternative IDE driver for UltraSatan
- Repartition SD cards as FAT16
- ZX Spectrum
- Fit Traco regulator & recheck
- Amstrad CPC task #1
- Find remaining components for PS2CPC interface
- Solder up interface board
- Flash microcontroller
- Disassemble CPC & mount board
- Amstrad CPC task #2
- 3D print enclosure for 3.5 floppy drive
- Find suitable 3.5 floppy (Samsung SFD-321B?)
- Flash Parados ROM and install in Rombo box
- MSX task #1
- Disassemble case and check condition of caps - wavy video
Sinclair QL - Displaying Bitmaps & Text
Direct video memory
Video memory starts at 0x20000
In Mode 4 (512×256 4 colour) the memory is laid out in byte pairs (or words)
Red byte | Green byte 0 0 0 0 0 0 0 0 | 0 0 0 0 0 0 0 0
Those 16 bits set a series of 8 contiguous horizontal pixels. The values of the Red and Green byte are AND-ed to get the final colour:
Red | Green | Result 1 | 0 | Red 0 | 1 | Green 1 | 1 | White 0 | 0 | Black
Example 1:
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
…would draw an 8 pixel horizontal line in Green.
Example 2:
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
…would draw an 8 pixel horizontal line in White.
Example 3:
1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1
…would draw 8 alternating pixels of Red and Green.
Sinclair QL Development Tools
There are a range of development tools and languages for the QL, including the built-in SuperBASIC. But I am more interested in using the same type of tools that I use for the NEC PC-98, MS-DOS, X68000 and more; a reasonably standards compliant C compiler, assembler and linker.
There are a few C compiler options for the Sinclair QL - which are summarised nicely here: http://www.dilwyn.me.uk/c/index.html
I touch on a few of them, including the one I am using (C68, in it's modern cross-compiler incarnation) below.
Commodore PET - Software Development
The modern way… using optimising C cross-compiler on Linux.
This is easier than expected, just install CC65. On any modern Linux, this is as easy as:
$ apt-get install cc65
You then get cc65 (the C compiler), ca65 (the assembler) and ld65 (the linker). They work pretty much the same as any modern toolset:
- Compile your .C source code using cc65, which will emit a .S assembly file
- Assemble your .S assembly listing using ca65, which will emit a .o binary object file
- Link your .o object files using ld65, possibly including the cc65 standard library, which will emit a .prg executable
Here's a simple makefile to get started with development. It assumes you have a ./src folder with your C source code and that you resulting binary will be placed in ./bin. Alter the paths to the location of the cc65 installation as appropriate:
# Names of the compiler and friends CC = cc65 AS = ca65 LD = ld65 # libraries and paths INCLUDES = --include-dir /usr/share/cc65/include LIBS = --lib /usr/share/cc65/lib/pet.lib # Compiler flags ASM_FLAGS= --target pet LDFLAGS = --target pet CFLAGS = --target pet -O -Oi -Or -Os # What our application is named TARGET = game.prg all: $(TARGET) # The main application OBJFILES = src/test.o $(TARGET): $(OBJFILES) $(LD) $(LDFLAGS) --obj $(OBJFILES) $(LIBS) -o bin/$(TARGET) ################################ # Main code ################################ src/test.s: src/test.c $(CC) $(CFLAGS) $(INCLUDES) src/test.c src/test.o: src/test.s $(AS) $(ASM_FLAGS) src/test.s ############################### # # Clean up # ############################### clean: rm -f src/*.o rm -f bin/$(TARGET)