summaryrefslogtreecommitdiff
path: root/roms/lcd_no_ram.asm
diff options
context:
space:
mode:
authorAndreas Baumann <mail@andreasbaumann.cc>2020-11-17 19:12:00 +0100
committerAndreas Baumann <mail@andreasbaumann.cc>2020-11-17 19:12:00 +0100
commit63d0944063b6f240fe0c68ef9b61d4dd906d9fc1 (patch)
treefb083c1284fd6d58944b1961297c652dc32b515d /roms/lcd_no_ram.asm
download6502-63d0944063b6f240fe0c68ef9b61d4dd906d9fc1.tar.gz
6502-63d0944063b6f240fe0c68ef9b61d4dd906d9fc1.tar.bz2
initial checkin
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