Northern British Sayings #7: Ta

In most parts of Yorkshire and other parts of northern England, the slang word “ta” (pronounced “tar”) is used to mean “thank you”.

The word is simply substituted for “thank you” or “thanks”, so for example:

“Here’s that money I owe you.”

“Ta very much.”

From what I can gather from the mighty internetz, this is likely due to the large Scandinavian influence on the English language, particularly in the north. Consider that for thanks/thank you:

Danish:  Tak
Norwegian:  Takk
Swedish: Tack

I believe that in those languages, the “k” sound is soft (more of a “g”), or even dropped. In Danish, the word is pronounced, “targ”, which is very similar to the pronunciation of “ta”.

Posted by Steve Wetherill, 0 comments

Crosswize: ZX Spectrum. Self modifying Z80 code and the stack – a powerful combo!

The other day, I came across source code for Crosswize, a ZX Spectrum game I wrote back in the 80’s. Crosswize was written in Z80 assembly (of course), and featured a smooth-scrolling background, accomplished through a goodly amount of self-modifying code, along with the discovery that the fastest way to read and write to memory on the Z80 is to use the stack (if you can free up enough register pairs that is). The reason the stack is so fast is because the “push” instruction is encoded in only a single byte which specifies the 16 bit register pair to push (the source), and which naturally decrements the stack pointer before writing to memory when executed. Similarly, loading register pairs (using “pop”) from the stack is also fast, and that approach is also used here.

In the following code snippet (which is responsible for drawing 8 pixel rows of the smooth scrolling background), by the time the code gets to the label “push_00”, the register pairs AF, BC, DE, IY and IY have been loaded with pre-shifted bitmap data, and the register pair HL cleared. In a previous setup routine, the block of .db 0 starting @ label push_00 has been pre-populated with (using self-modifying code) a series of “push” instructions. The stack pointer (sp) is set to the byte just after the right edge of a screen pixel row. When the Z80 CPU executes the code following push_00, 16 bit values (corresponding to 16 pixels on the ZX Spectrum) are written to the screen from right to left (a push instruction first decrements the stack pointer and then writes the 16 bit value to the new location).

I had a struggle to find enough registers (as may be evident from the code), so ended up using push ix and push iy opcodes (which have an extra 0xdd or 0xfd byte prefix), so the “jp 0” at the label skip_00 is self-modified to jump into the correct spot in the buffer to allow for all combinations of 1 and 2 byte opcodes.

This code is rife with self-modifying code, a technique that is mostly obsolete today, but which was a handy tool for many Z80 coders back in the day.

ld hl, 0 ; SMC - source data
ld c, 2</code>

nop ; SMC
ld b, 8

ld sp, hl
ld hl, 0Ah
add hl, sp
pop af
pop bc
pop de
pop iy
pop ix
ex de, hl
ld sp, hl
ex de, hl
ld hl, 0 ; clear pixels

jp 0 ; SMC

push_00: ; push buffer SMC
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0

inc d
djnz scan_00

ld de, 40BFh
dec c
jp nz, section_00
Posted by Steve Wetherill, 3 comments

Tusker Atari ST: Music!

Continuing the music from video games theme, here’s a couple of things from the Atari ST version of Tusker, published by System 3 in 1990. This was a rush job, I think I had to turn it around in a couple of days.

Title Music

This was composed using Quartet, and as with most of my Quartet compositions is best played back loud. 🙂 As I have mentioned before, the Quartet player by necessity introduces an incredible amount of distortion, so the compositions tend to cater to that. The music itself has a jungly sort of a beat and was intended to have a vaguely “African” sound. I’d never seen the Tusker game (though I had been given the original music for the Amiga version of the game as a reference), so I didn’t have much of an idea of the theme of the game itself. I imagined Elephants, with, tusks. It is fairly repetitive, makes use of a few key changes to add some variety (possibly one key change too many), but overall I think has some decent bits here and there.

Ingame Music

This track was composed using Quartet, but I had put together a chip tune playback routine to map the quartet note data to the Atari AY chip beeps and boops. It’s ultra repetitive, being not much more than a jam up and down the keyboard. It was done quickly, what can I say? 🙂

PS To be clear, I had no involvement with the development of the game; I just developed the music for the Atari ST version.

PPS These samples were grabbed using the OSX ST Emulator “Hatari“.

Posted by Steve Wetherill, 0 comments