65 lines
1.2 KiB
NASM
65 lines
1.2 KiB
NASM
.include "$lib/core.asm"
|
|
.include "$lib/std.asm"
|
|
.include "$lib/main.asm"
|
|
|
|
.include "constants.asm"
|
|
|
|
.jump_main
|
|
|
|
data:
|
|
|
|
.main
|
|
.std_rset CORE_REG_C, MEM_INPUT_START
|
|
get_input_loop:
|
|
.std_get CORE_MEM_KEY
|
|
tlr CORE_REG_A
|
|
@ tlr CORE_REG_D
|
|
.std_set CORE_MEM_CHR
|
|
tsr CORE_REG_C
|
|
set
|
|
|
|
@ .std_rset CORE_REG_B, ' '
|
|
@ .std_alu CORE_ALU_EQ
|
|
@ tlr CORE_REG_A
|
|
@ .std_cond_jump get_input_loop
|
|
@ .std_cp CORE_REG_D, CORE_REG_A
|
|
|
|
tlr CORE_REG_A
|
|
.std_rset CORE_REG_B, 1
|
|
.std_alu CORE_ALU_ADD
|
|
tlr CORE_REG_A
|
|
tlr CORE_REG_C
|
|
|
|
.std_rset CORE_REG_B, MEM_INPUT_END
|
|
.std_alu CORE_ALU_LT
|
|
tlr CORE_REG_A
|
|
.std_cond_jump get_input_loop
|
|
|
|
.std_cp CORE_REG_C, CORE_REG_A
|
|
.std_set MEM_INPUT_DYN_END
|
|
|
|
.std_rset CORE_REG_A, '\n'
|
|
.std_set CORE_MEM_CHR
|
|
|
|
.std_rset CORE_REG_B, MEM_INPUT_START
|
|
.std_get MEM_INPUT_DYN_END
|
|
tlr CORE_REG_D
|
|
print_loop:
|
|
tsr CORE_REG_B
|
|
get
|
|
tlr CORE_REG_A
|
|
.std_set CORE_MEM_CHR
|
|
|
|
.std_rset CORE_REG_A, 1
|
|
.std_alu CORE_ALU_ADD
|
|
tlr CORE_REG_B
|
|
|
|
.std_cp CORE_REG_D, CORE_REG_A
|
|
.std_alu CORE_ALU_GT
|
|
tlr CORE_REG_A
|
|
.std_cond_jump print_loop
|
|
|
|
.std_rset CORE_REG_A, '\n'
|
|
.std_set CORE_MEM_CHR
|
|
.std_stop
|