Ok, thanks.
Below is the amended code, but I had to manually change the ordering parameter in the #_modules table, to the new option (o_asc), as I couldn't work out where the MySQL table is updated. I also added the option to the en-GB files in the language folder, but as the MySQL update doesn't work, this is currently redundant.
// Set ordering
$order_map = array(
'm_dsc' => 'a.modified DESC, a.created',
'mc_dsc' => 'CASE WHEN (a.modified = '.$db->quote($db->getNullDate()).') THEN a.created ELSE a.modified END',
'c_dsc' => 'a.created',
'p_dsc' => 'a.publish_up',
'h_dsc' => 'a.hits',
'o_asc' => 'a.ordering'
);
$ordering = JArrayHelper::getValue($order_map, $params->get('ordering'), 'a.publish_up');
IF($order_map='o_asc') {$dir = 'ASC';} ELSE {$dir = 'DESC';}
$model->setState('list.ordering', $ordering);
$model->setState('list.direction', $dir);