1945. Jamie and Tommy live a meagre and isolated existence with their maternal grandmother in Newcraighall, a Scottish mining village. The frail and permanently beshawled grandmother is given to wandering outside, and when she appears at the gates of the local school, Tommy, the son of one of her daughters, walks her home. Meanwhile the younger Jamie, the son of her other daughter, scavenges for coal.
Jamie's affection is reserved for a black cat, and Helmuth, one of a group of German P.O.W.s who he visits while they work in the field. Tommy alternates between hostility towards the boy, who appears to be his brother, and friendship. When Jamie asks after his mother and father, Tommy tells him of his own mother, now dead. Back in the fields, Jamie uses a children's book to teach Helmuth English.
Tommy visits his mother's grave, exchanges hostile glances with a neighbour walking a dog, and is visited by his father, who brings him a canary as a birthday present. The grandmother orders the man to leave, and he cycles away as Tommy chases after him. In her anger, the grandmother tries to destroy the birdcage, and Tommy is forced to conceal it. Jamie is given sixpence by the neighbour with the dog.
Discovering that Jamie's cat has killed his canary, Tommy kills the cat. Having been told that the neighbour with the dog is his father, Jamie follows him to the house next-door to where he lives, which is occupied by the man's doting and possessive mother (Jamie's paternal grandmother). Jamie and his maternal grandmother take a bus to visit a woman he discovers is his own mother, who has been committed to an asylum, and who gives no sign of recognising the visitors.
The end of the war is marked by a village bonfire, but it also leads to the departure of Helmuth. Tommy attempts to comfort the despondent Jamie, but then discovers that their maternal grandmother has collapsed and may be dead. Jamie runs out of the house until he reaches the railway, seems to contemplate suicide, but when he jumps from the railway bridge he lands in one of the open carriages of a goods train. The train takes him away from the village.