b_call(_ClrLCDFull) b_call(_HomeUp) LD HL,text CALL CustomStr RET text: .DB "Hello ",1,0 CustomStr: LD A,(HL) OR A RET Z CP 1 JR NZ,NormalChar ; Trap for char $01 (custom) PUSH AF XOR A ; Configure word size OUT ($10),A LD A,$05 ; Configure X auto-increment OUT ($10),A LD A,(CurCol) ; Set LCD Row ADD A,$20 OUT ($10),A LD A,(CurRow) ; Set LCD Row ADD A,A ADD A,A ADD A,A ADD A,$80 OUT ($10),A LD DE,Smilie LD B,8 FontLoop: LD A,(DE) CALL $000B OUT ($11),A INC DE DJNZ FontLoop LD A,(CurCol) ; Advance cursor position INC A AND %00001111 LD (CurCol),A JR NZ,DoneCustomFont LD A,(CurRow) ; Advance row. This doesn't check for a bad INC A ; position or scroll. Do that on your own time. LD (CurRow),A DoneCustomFont: POP AF JR DoneChar NormalChar: b_call(_PutC) DoneChar: INC HL JR CustomStr ; Our custom character! smilie: .DB %0111110 .DB %1111111 .DB %1001001 .DB %1111111 .DB %1011101 .DB %1100011 .DB %0111110 .DB %0000000