57 lines
1.1 KiB
NASM
57 lines
1.1 KiB
NASM
|
.include "$lib/core.asm"
|
||
|
.include "$lib/std.asm"
|
||
|
.include "$lib/main.asm"
|
||
|
|
||
|
.define HENCEFORTH_SOURCE_MAX_LEN, 128
|
||
|
.define HENCEFORTH_SOURCE_START, CORE_MEM_MEM
|
||
|
.define HENCEFORTH_SOURCE_END, (HENCEFORTH_SOURCE_START + HENCEFORTH_SOURCE_MAX_LEN)
|
||
|
.define HENCEFORTH_SOURCE_LEN, (HENCEFORTH_SOURCE_END + 1)
|
||
|
|
||
|
.jump_main
|
||
|
|
||
|
.def_main
|
||
|
ts HENCEFORTH_SOURCE_START
|
||
|
tlr CORE_REG_B
|
||
|
|
||
|
loop:
|
||
|
; get key press
|
||
|
ts CORE_MEM_KEY
|
||
|
get
|
||
|
tlr CORE_REG_A
|
||
|
|
||
|
; echo
|
||
|
ts CORE_MEM_CHR
|
||
|
set
|
||
|
|
||
|
; store in source
|
||
|
tsr CORE_REG_B
|
||
|
set
|
||
|
|
||
|
; increment pointer
|
||
|
ts 1
|
||
|
tlr CORE_REG_A
|
||
|
ts CORE_ALU_ADD
|
||
|
alu
|
||
|
tlr CORE_REG_B
|
||
|
|
||
|
; jump to loop start or not
|
||
|
; backup
|
||
|
tsr CORE_REG_B
|
||
|
tlr CORE_REG_C
|
||
|
|
||
|
; check
|
||
|
ts HENCEFORTH_SOURCE_END
|
||
|
tlr CORE_REG_A
|
||
|
ts CORE_ALU_GT
|
||
|
alu
|
||
|
tlr CORE_REG_A
|
||
|
|
||
|
; restore
|
||
|
tsr CORE_REG_C
|
||
|
tlr CORE_REG_B
|
||
|
|
||
|
; jump
|
||
|
ts loop
|
||
|
tlrc CORE_REG_PC
|
||
|
.std_stop
|