71 lines
1.9 KiB
Z80 Assembly
71 lines
1.9 KiB
Z80 Assembly
;==================================================================================
|
|
;
|
|
; SBC Extension
|
|
; (C) 20.09.2021 Paolo Iocco
|
|
;
|
|
;==================================================================================
|
|
;
|
|
; Initialize LCD display
|
|
;
|
|
CR: EQU 0DH
|
|
LF: EQU 0AH
|
|
CS: EQU 0CH ; Clear screen
|
|
|
|
ORG $1F00
|
|
PSTART:
|
|
LCD_INIT: LD B,$09
|
|
LD HL,LCD_COMMANDS
|
|
LD IX,LCD_DELAYS
|
|
LCD_LOOP: LD A,(HL)
|
|
OUT ($10),A
|
|
LD D,(IX+1)
|
|
LD E,(IX+0)
|
|
CALL DELAY
|
|
INC HL
|
|
INC IX
|
|
INC IX
|
|
DJNZ LCD_LOOP
|
|
|
|
LD HL,MSG2 ; Write message at 0,0
|
|
CALL PRINT_LCD
|
|
LD A,$C0
|
|
OUT ($10),A
|
|
|
|
LD HL,MSG1 ; test message
|
|
CALL PRINT_S
|
|
RET ; Loop
|
|
|
|
PRINT_S: LD A,(HL) ; Get character
|
|
OR A ; Is it $00 ?
|
|
RET Z ; Then RETurn on terminator
|
|
RST 08H ; Print it
|
|
INC HL ; Next Character
|
|
JR PRINT_S ; Continue until $00
|
|
RET
|
|
|
|
PRINT_LCD: LD A,(HL) ; Get character
|
|
OR A ; Is it $00 ?
|
|
RET Z ; Then RETurn on terminator
|
|
OUT ($11),A ; Print it
|
|
INC HL ; Next Character
|
|
LD DE,$0010
|
|
CALL DELAY
|
|
JR PRINT_LCD ; Continue until $00
|
|
RET
|
|
|
|
DELAY: DEC DE
|
|
LD A,D
|
|
OR E
|
|
JP NZ,DELAY
|
|
RET
|
|
|
|
;------------------------------------------------------------------------------
|
|
|
|
LCD_COMMANDS: DB $30, $30, $30, $38, $01, $02, $02, $0F ,$0F
|
|
LCD_DELAYS: DW $0A00,$02BB,$0050,$0020,$0020,$0020,$0020,$0500,$0100
|
|
|
|
MSG1: DB "Paolo wedge done.",CR,LF,0
|
|
MSG2: DB "BONJOUR MatEliSa",0
|
|
|
|
END
|