Store line length in a variable in calculator.asm
This commit is contained in:
parent
e8102339d7
commit
bbb5b4b35f
|
@ -1,10 +1,41 @@
|
||||||
org 0
|
org 0
|
||||||
|
|
||||||
start:
|
cleq r0, r0, readline
|
||||||
cleq r0, r0, stReadline
|
|
||||||
cleq r0, r0, dumpstack
|
|
||||||
|
|
||||||
halt
|
load r0, linelen+0
|
||||||
|
load r1, linelen+1
|
||||||
|
cleq r0, r0, pushWord
|
||||||
|
|
||||||
|
cleq r0, r0, stDup
|
||||||
|
cleq r0, r0, stPrinthex
|
||||||
|
|
||||||
|
xor r0, r0
|
||||||
|
xor r1, r1
|
||||||
|
cleq r0, r0, pushWord
|
||||||
|
|
||||||
|
printloop:
|
||||||
|
cleq r0, r0, stOver
|
||||||
|
cleq r0, r0, stOver
|
||||||
|
cleq r0, r0, stSwap
|
||||||
|
cleq r0, r0, stGtEq
|
||||||
|
brneq r0, r1, printend
|
||||||
|
|
||||||
|
cleq r0, r0, stDup
|
||||||
|
load r0, linebufStart+0
|
||||||
|
load r1, linebufStart+1
|
||||||
|
cleq r0, r0, pushWord
|
||||||
|
cleq r0, r0, stAdd
|
||||||
|
|
||||||
|
cleq r0, r0, stLoadByte
|
||||||
|
cleq r0, r0, stEmit
|
||||||
|
|
||||||
|
cleq r0, r0, stInc
|
||||||
|
|
||||||
|
breq r0, r0, printloop
|
||||||
|
|
||||||
|
printend:
|
||||||
|
cleq r0, r0, newline
|
||||||
|
halt
|
||||||
|
|
||||||
debug:
|
debug:
|
||||||
store debugr0, r0
|
store debugr0, r0
|
||||||
|
@ -108,7 +139,7 @@ debug:
|
||||||
debugr2: data 0
|
debugr2: data 0
|
||||||
debugr3: data 0
|
debugr3: data 0
|
||||||
|
|
||||||
stReadline:
|
readline:
|
||||||
; Current index starts at 0
|
; Current index starts at 0
|
||||||
xor r0, r0
|
xor r0, r0
|
||||||
xor r1, r1
|
xor r1, r1
|
||||||
|
@ -151,8 +182,13 @@ stReadline:
|
||||||
breq r0, r0, readlineLoop
|
breq r0, r0, readlineLoop
|
||||||
|
|
||||||
readlineEnter:
|
readlineEnter:
|
||||||
; Remove the CR byte off the stack, as we only want to return the length
|
; Remove the CR byte off the stack, as it's not needed
|
||||||
cleq r0, r0, popWord
|
cleq r0, r0, popWord
|
||||||
|
|
||||||
|
cleq r0, r0, popWord
|
||||||
|
store linelen+0, r0
|
||||||
|
store linelen+1, r1
|
||||||
|
|
||||||
breq r0, r0, newline
|
breq r0, r0, newline
|
||||||
|
|
||||||
readlineBackspace:
|
readlineBackspace:
|
||||||
|
@ -169,6 +205,7 @@ stReadline:
|
||||||
brneq r0, r1, readlineLoop
|
brneq r0, r1, readlineLoop
|
||||||
|
|
||||||
; Decrease the index and erase the echoed character
|
; Decrease the index and erase the echoed character
|
||||||
|
; TODO: utf-8
|
||||||
cleq r0, r0, stDec
|
cleq r0, r0, stDec
|
||||||
load r3, litcharSpace
|
load r3, litcharSpace
|
||||||
store ffff, r3
|
store ffff, r3
|
||||||
|
@ -179,6 +216,7 @@ stReadline:
|
||||||
|
|
||||||
readlineBufFull:
|
readlineBufFull:
|
||||||
; Drop the input byte and erase the echoed character
|
; Drop the input byte and erase the echoed character
|
||||||
|
; TODO: utf-8
|
||||||
cleq r0, r0, popWord
|
cleq r0, r0, popWord
|
||||||
load r3, litcharBS
|
load r3, litcharBS
|
||||||
store ffff, r3
|
store ffff, r3
|
||||||
|
@ -1064,6 +1102,10 @@ litff: data ff
|
||||||
; Data
|
; Data
|
||||||
; ==================================================================
|
; ==================================================================
|
||||||
|
|
||||||
|
linelen:
|
||||||
|
data 0
|
||||||
|
data 0
|
||||||
|
|
||||||
linebufStart: addr end
|
linebufStart: addr end
|
||||||
linebufSize:
|
linebufSize:
|
||||||
data 00
|
data 00
|
||||||
|
|
Loading…
Reference in New Issue