6502/bins/hello-world.s
2022-05-12 21:36:39 +09:30

220 lines
2.9 KiB
ArmAsm

PORTB = $6000
PORTA = $6001
DDRB = $6002
DDRA = $6003
E = %10000000
RW = %01000000
RS = %00100000
.org $8000
reset:
lda #%11111111 ; set all pins on port B to output
sta DDRB
lda #%11100000 ; set top 3 pins on port A to output
sta DDRA
; init display
lda #%00111000 ; set 8-bit mode, 2 line display, 5x8 font.
sta PORTB
lda #0 ; clear RS/RW/E bits
sta PORTA
lda #E ; set enable bit to send instruction
sta PORTA
lda #0 ; clear RS/RW/E bits
sta PORTA
; turn display on
lda #%00001110 ; set display and curson on, do not blink
sta PORTB
lda #0 ; clear RS/RW/E bits
sta PORTA
lda #E ; set enable bit to send instruction
sta PORTA
lda #0 ; clear RS/RW/E bits
sta PORTA
; set entry mode
lda #%00000110 ; set entry mode increment and display shift off
sta PORTB
lda #0 ; clear RS/RW/E bits
sta PORTA
lda #E ; set enable bit to send instruction
sta PORTA
lda #0 ; clear RS/RW/E bits
sta PORTA
lda #"H"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"e"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"l"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"l"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"o"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #","
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #" "
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"w"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"o"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"r"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"l"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"d"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
lda #"!"
sta PORTB
lda #RS ; RS set
sta PORTA
lda #(RS | E) ; RS and E set
sta PORTA
lda #RS ; RS set
sta PORTA
loop:
jmp loop
.org $fffc
.word reset
.word $0000