Da du keinen ganzen Port mehr frei hast müsstest du mit Port-Splitting arbeiten, d.h. die freien Pins zu manuell via Software zu einem Port zusammenfügen.

Db4 = Portd.5
Db5 = Portd.6
Db6 = Portd.7
Db7 = Portb.0
(diese Pins wergen im folgenden zu einem Port zusammengefügt)


Code:
$regfile = "m8def.dat"                                      ' IC-Typ
$crystal = 3686400
'folgendes müsstet du in deinem Quelltext ergänzen:
Config Portd.5 = Output
Config Portd.6 = Output
Config Portd.7 = Output
Config Portb.0 = Output

Declare Sub Write_port(xport as byte)
Dim Xport as Byte

'... 
'...

'die Zeilen mit:
'Lcddisplay = Xparameter
'und
'Lcddisplay = Command And $0f
'musst du ersetzen durch

Write_port(Xparameter)
'bzw.
Write_port(Command)


'und die Sub Routine lautet:
Sub Write_port(xport as byte)
  Portd.5 = xport.0
  Portd.6 = xport.1
  Portd.7 = xport.2
  Portb.0 = xport.3
End Sub

'der Rest bleibt wie gehabt, nur
'Lcddisplay Alias PortC
'Config Lcddisplay = Output
'Config Lcddisplay = Pin , Db4 = Portd.5 , Db5 = Portd.6 , Db6 = Portd.7 , Db7 = Portb.0
'fällt weg!
Ich hab das allerdings nicht getestet. Ich hoffe es funktioniert trotzdem.