summaryrefslogtreecommitdiff
path: root/roms/lcd_no_ram.asm
diff options
context:
space:
mode:
Diffstat (limited to 'roms/lcd_no_ram.asm')
-rw-r--r--roms/lcd_no_ram.asm132
1 files changed, 132 insertions, 0 deletions
diff --git a/roms/lcd_no_ram.asm b/roms/lcd_no_ram.asm
new file mode 100644
index 0000000..7616dcf
--- /dev/null
+++ b/roms/lcd_no_ram.asm
@@ -0,0 +1,132 @@
+PORTB = $6000
+PORTA = $6001
+DDRB = $6002
+DDRA = $6003
+
+E = %10000000
+RW = %01000000
+RS = %00100000
+
+ .org #$f800
+
+reset:
+ lda #%11111111 ; set output on all pins of PORTB
+ sta DDRB
+
+ lda #%11100000 ; set output on LCD control pins of PORTA
+ sta DDRA
+
+ lda #%00111000 ; set 8-bit, 2-line display, 5x8 font
+ sta PORTB
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #E ; clear RS/RW, set E, send instruction
+ sta PORTA
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #%00001110 ; display on, cursor on, no blink
+ sta PORTB
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #E ; clear RS/RW, set E, send instruction
+ sta PORTA
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #%00000001 ; clear display
+ sta PORTB
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #E ; clear RS/RW, set E, send instruction
+ sta PORTA
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #%00000010 ; return home
+ sta PORTB
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #E ; clear RS/RW, set E, send instruction
+ sta PORTA
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #%00000110 ; set entry mode: increment, no shift
+ sta PORTB
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #E ; clear RS/RW, set E, send instruction
+ sta PORTA
+
+ lda #$0 ; clear RS/RW/E
+ sta PORTA
+
+ lda #'6' ; data to send
+ sta PORTB
+
+ lda #RS ; clear RW, E, set RS for data
+ sta PORTA
+
+ lda #( E | RS ) ; clear RW, set E/RS, send data
+ sta PORTA
+
+ lda #RS ; clear RS, E, keep RS
+ sta PORTA
+
+ lda #'5' ; data to send
+ sta PORTB
+
+ lda #RS ; clear RW, E, set RS for data
+ sta PORTA
+
+ lda #( E | RS ) ; clear RW, set E/RS, send data
+ sta PORTA
+
+ lda #RS ; clear RS, E, keep RS
+ sta PORTA
+
+ lda #'0' ; data to send
+ sta PORTB
+
+ lda #RS ; clear RW, E, set RS for data
+ sta PORTA
+
+ lda #( E | RS ) ; clear RW, set E/RS, send data
+ sta PORTA
+
+ lda #RS ; clear RS, E, keep RS
+ sta PORTA
+
+ lda #'2' ; data to send
+ sta PORTB
+
+ lda #RS ; clear RW, E, set RS for data
+ sta PORTA
+
+ lda #( E | RS ) ; clear RW, set E/RS, send data
+ sta PORTA
+
+ lda #RS ; clear RS, E, keep RS
+ sta PORTA
+
+end:
+ jmp end
+
+ .org #$fffc
+ .word reset
+ .word $0000