diff options
author | Andreas Baumann <mail@andreasbaumann.cc> | 2020-11-17 19:12:00 +0100 |
---|---|---|
committer | Andreas Baumann <mail@andreasbaumann.cc> | 2020-11-17 19:12:00 +0100 |
commit | 63d0944063b6f240fe0c68ef9b61d4dd906d9fc1 (patch) | |
tree | fb083c1284fd6d58944b1961297c652dc32b515d /roms/lcd_no_ram.asm | |
download | 6502-63d0944063b6f240fe0c68ef9b61d4dd906d9fc1.tar.gz 6502-63d0944063b6f240fe0c68ef9b61d4dd906d9fc1.tar.bz2 |
initial checkin
Diffstat (limited to 'roms/lcd_no_ram.asm')
-rw-r--r-- | roms/lcd_no_ram.asm | 132 |
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 |