Move day01 to separate file and create move_16_imm macro
This commit is contained in:
parent
1e67af572d
commit
b826af0205
2 changed files with 79 additions and 95 deletions
70
c64/day01.asm
Normal file
70
c64/day01.asm
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
// vim: filetype=kickass
|
||||||
|
|
||||||
|
day01:
|
||||||
|
move_16_imm($03, $04, str_input)
|
||||||
|
jsr write_string
|
||||||
|
|
||||||
|
move_16_imm($03, $04, day01_input)
|
||||||
|
jsr write_string
|
||||||
|
|
||||||
|
move_16_imm($03, $04, str_converted)
|
||||||
|
jsr write_string
|
||||||
|
|
||||||
|
move_16_imm($03, $04, day01_input)
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
!line:
|
||||||
|
lda #0
|
||||||
|
sta $22
|
||||||
|
sta $23
|
||||||
|
|
||||||
|
!digit:
|
||||||
|
lda ($03), y
|
||||||
|
cmp #'\n'
|
||||||
|
beq !break+
|
||||||
|
|
||||||
|
i16_mul10($22, $23)
|
||||||
|
|
||||||
|
lda ($03), y
|
||||||
|
|
||||||
|
sec
|
||||||
|
sbc #'0'
|
||||||
|
|
||||||
|
i16_i8_add_a($22, $23)
|
||||||
|
|
||||||
|
iny
|
||||||
|
jmp !digit-
|
||||||
|
|
||||||
|
!break:
|
||||||
|
sty $24
|
||||||
|
|
||||||
|
lda $23
|
||||||
|
jsr print_hex_0x
|
||||||
|
lda $22
|
||||||
|
jsr print_hex
|
||||||
|
|
||||||
|
jsr print_newline
|
||||||
|
jsr print_carriage_return
|
||||||
|
|
||||||
|
ldy $24
|
||||||
|
iny
|
||||||
|
|
||||||
|
lda ($03), y
|
||||||
|
bne !line-
|
||||||
|
|
||||||
|
!done:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
day01_input:
|
||||||
|
.import text "../rust/inputs/day01_example"
|
||||||
|
.byte 0
|
||||||
|
|
||||||
|
str_input:
|
||||||
|
.text "# Input"
|
||||||
|
.byte '\n', 0
|
||||||
|
|
||||||
|
str_converted:
|
||||||
|
.byte '\n'
|
||||||
|
.text "# Converted"
|
||||||
|
.byte '\n', 0
|
104
c64/main.asm
104
c64/main.asm
|
@ -1,4 +1,5 @@
|
||||||
// vim: filetype=kickass
|
// vim: filetype=kickass
|
||||||
|
|
||||||
#import "math.inc"
|
#import "math.inc"
|
||||||
|
|
||||||
* = $0801 // BASIC start address (#2049)
|
* = $0801 // BASIC start address (#2049)
|
||||||
|
@ -18,6 +19,13 @@
|
||||||
.const cursor_pointer_lo = $05
|
.const cursor_pointer_lo = $05
|
||||||
.const cursor_pointer_hi = $06
|
.const cursor_pointer_hi = $06
|
||||||
|
|
||||||
|
.macro move_16_imm(dst_lo, dst_hi, src) {
|
||||||
|
lda #<src
|
||||||
|
sta dst_lo
|
||||||
|
lda #>src
|
||||||
|
sta dst_hi
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// main
|
// main
|
||||||
//
|
//
|
||||||
|
@ -34,104 +42,10 @@ main:
|
||||||
// inc $d020
|
// inc $d020
|
||||||
jmp !loop-
|
jmp !loop-
|
||||||
|
|
||||||
string:
|
|
||||||
.text "The quick brown newline jumped over the lazy dog."
|
|
||||||
.byte '\n'
|
|
||||||
.byte 0
|
|
||||||
|
|
||||||
string_cr:
|
|
||||||
.text "The quick brown carriage return jumped over the lazy dog."
|
|
||||||
.byte '\r'
|
|
||||||
.byte 0
|
|
||||||
|
|
||||||
|
|
||||||
day01:
|
|
||||||
lda #<str_input
|
|
||||||
sta $03
|
|
||||||
lda #>str_input
|
|
||||||
sta $04
|
|
||||||
jsr write_string
|
|
||||||
|
|
||||||
lda #<day01_input
|
|
||||||
sta $03
|
|
||||||
lda #>day01_input
|
|
||||||
sta $04
|
|
||||||
jsr write_string
|
|
||||||
|
|
||||||
lda #<str_converted
|
|
||||||
sta $03
|
|
||||||
lda #>str_converted
|
|
||||||
sta $04
|
|
||||||
jsr write_string
|
|
||||||
|
|
||||||
|
|
||||||
lda #<day01_input
|
|
||||||
sta $03
|
|
||||||
lda #>day01_input
|
|
||||||
sta $04
|
|
||||||
|
|
||||||
.break
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
!line:
|
|
||||||
lda #0
|
|
||||||
sta $22
|
|
||||||
sta $23
|
|
||||||
|
|
||||||
!digit:
|
|
||||||
lda ($03), y
|
|
||||||
cmp #'\n'
|
|
||||||
beq !break+
|
|
||||||
|
|
||||||
i16_mul10($22, $23)
|
|
||||||
|
|
||||||
lda ($03), y
|
|
||||||
|
|
||||||
sec
|
|
||||||
sbc #'0'
|
|
||||||
|
|
||||||
i16_i8_add_a($22, $23)
|
|
||||||
|
|
||||||
iny
|
|
||||||
jmp !digit-
|
|
||||||
|
|
||||||
!break:
|
|
||||||
sty $24
|
|
||||||
|
|
||||||
lda $23
|
|
||||||
jsr print_hex_0x
|
|
||||||
lda $22
|
|
||||||
jsr print_hex
|
|
||||||
|
|
||||||
jsr print_newline
|
|
||||||
jsr print_carriage_return
|
|
||||||
|
|
||||||
ldy $24
|
|
||||||
iny
|
|
||||||
|
|
||||||
lda ($03), y
|
|
||||||
bne !line-
|
|
||||||
|
|
||||||
!done:
|
|
||||||
rts
|
|
||||||
|
|
||||||
|
|
||||||
day01_input:
|
|
||||||
.import text "../rust/inputs/day01_example"
|
|
||||||
.byte 0
|
|
||||||
|
|
||||||
str_input:
|
|
||||||
.text "# Input"
|
|
||||||
.byte '\n', 0
|
|
||||||
|
|
||||||
str_converted:
|
|
||||||
.byte '\n'
|
|
||||||
.text "# Converted"
|
|
||||||
.byte '\n', 0
|
|
||||||
|
|
||||||
|
|
||||||
buffer:
|
buffer:
|
||||||
.fill $0100, 0
|
.fill $0100, 0
|
||||||
|
|
||||||
|
|
||||||
|
#import "day01.asm"
|
||||||
#import "screen.asm"
|
#import "screen.asm"
|
||||||
|
|
Loading…
Reference in a new issue