🇩🇪
 Ottmar
void LCD_gotoxy(uint8_t spalte, uint8_t zeile)
{
    uint8_t Adresse;
    akt_pos.spalte_nok = spalte;    //hier Spalte gleich merken, wird verändert
    akt_pos.zeile = zeile;
    letzte_pos.nok =1;    //letzte position nicht mehr gültig
    // 2: Zeile 0..3
    // 3: Spalte 0..39
    // Zeile 0: 0x00
    // Zeile 1: 0x40
    // Zeile 2: 0x00+Zeilenlänge
    // Zeile 3: 0x40+Zeilenlänge
    if (zeile>1) //Zeile2, 3
    {
        spalte += 20; //LCD_spalten;
    }
    Adresse = ((zeile & 0x01) * 0x40) + spalte;
    writeLCDCmd(Adresse | 0x80);
    wait_1us (25);//_ff testweise org. 25us
}
bcf    PORTC, LcdRs; ist nicht unbedingt nötig da schon gelöscht.
movlw adresse; (0x40)
movwf LcdDaten
bsf LCDDaten,7; (0xc0) bit 7 setzen, kann auch mit oder 0x80 gesetzt werden
call OutLcdControl
 Bei dem vieeeeelen Umschreiben war einmal noch eine Anweisung für den alten PORTB übersehen worden. Der Ausgabe-Port wurde ja von B auf C umgeschwitscht.  Den Aufbau dann noch in absteigende Funktionsblöcke umgebaut und das wars dann.