Use literal loads in calculator.asm
This commit is contained in:
parent
677f31ea91
commit
2b2cdac605
270
calculator.asm
270
calculator.asm
|
@ -46,35 +46,35 @@ debug:
|
|||
debugRegs:
|
||||
load r0, debugr0
|
||||
cleq r0, r0, writehexByte
|
||||
load r0, litcharSpace
|
||||
load r0, #20
|
||||
store ffff, r0
|
||||
|
||||
load r0, debugr1
|
||||
cleq r0, r0, writehexByte
|
||||
load r0, litcharSpace
|
||||
load r0, #20
|
||||
store ffff, r0
|
||||
|
||||
load r0, debugr2
|
||||
cleq r0, r0, writehexByte
|
||||
load r0, litcharSpace
|
||||
load r0, #20
|
||||
store ffff, r0
|
||||
|
||||
load r0, debugr3
|
||||
cleq r0, r0, writehexByte
|
||||
load r0, litcharSpace
|
||||
load r0, #20
|
||||
store ffff, r0
|
||||
|
||||
debugTmpWords:
|
||||
load r0, tmpWordHigh
|
||||
load r1, tmpWordLow
|
||||
cleq r0, r0, writeHexWord
|
||||
load r0, litcharSpace
|
||||
load r0, #20
|
||||
store ffff, r0
|
||||
|
||||
load r0, tmpWord2High
|
||||
load r1, tmpWord2Low
|
||||
cleq r0, r0, writeHexWord
|
||||
load r0, litcharPipe
|
||||
load r0, #7c
|
||||
store ffff, r0
|
||||
|
||||
load r0, SPStart+0
|
||||
|
@ -118,7 +118,7 @@ debug:
|
|||
store debugPtr+0, r0
|
||||
store debugPtr+1, r1
|
||||
|
||||
load r0, litcharSpace
|
||||
load r0, #20
|
||||
store ffff, r0
|
||||
|
||||
breq r0, r0, debugLoop
|
||||
|
@ -151,11 +151,11 @@ readline:
|
|||
|
||||
; Is it enter?
|
||||
cleq r0, r0, peekWord
|
||||
load r0, litcharCR
|
||||
load r0, #0d
|
||||
breq r0, r1, readlineEnter
|
||||
|
||||
; Is it backspace?
|
||||
load r0, litcharBS
|
||||
load r0, #08
|
||||
breq r0, r1, readlineBackspace
|
||||
|
||||
; Is the buffer full?
|
||||
|
@ -207,9 +207,9 @@ readline:
|
|||
; Decrease the index and erase the echoed character
|
||||
; TODO: utf-8
|
||||
cleq r0, r0, stDec
|
||||
load r3, litcharSpace
|
||||
load r3, #20
|
||||
store ffff, r3
|
||||
load r3, litcharBS
|
||||
load r3, #08
|
||||
store ffff, r3
|
||||
|
||||
breq r0, r0, readlineLoop
|
||||
|
@ -218,11 +218,11 @@ readline:
|
|||
; Drop the input byte and erase the echoed character
|
||||
; TODO: utf-8
|
||||
cleq r0, r0, popWord
|
||||
load r3, litcharBS
|
||||
load r3, #08
|
||||
store ffff, r3
|
||||
load r3, litcharSpace
|
||||
load r3, #20
|
||||
store ffff, r3
|
||||
load r3, litcharBS
|
||||
load r3, #08
|
||||
store ffff, r3
|
||||
breq r0, r0, readlineLoop
|
||||
|
||||
|
@ -453,7 +453,7 @@ peekWord:
|
|||
load r0, SP+0
|
||||
load r1, SP+1
|
||||
xor r2, r2
|
||||
load r3, lit02
|
||||
load r3, #02
|
||||
cleq r0, r0, addWord
|
||||
store SP+0, r0
|
||||
store SP+1, r1
|
||||
|
@ -609,7 +609,7 @@ subWord:
|
|||
xor r0, r0
|
||||
or r0, r3
|
||||
nand r0, r0
|
||||
load r2, lit01
|
||||
load r2, #01
|
||||
cleq r0, r0, addByte3
|
||||
store subWordResultLow, r0
|
||||
|
||||
|
@ -639,7 +639,7 @@ incWord:
|
|||
store incWordHigh, r0
|
||||
|
||||
; Add 1 to low byte
|
||||
load r0, lit01
|
||||
load r0, #01
|
||||
cleq r0, r0, addByte
|
||||
store incWordLow, r0
|
||||
|
||||
|
@ -662,12 +662,12 @@ decWord:
|
|||
store decWordHigh, r0
|
||||
|
||||
; Add ff to low byte
|
||||
load r0, litff
|
||||
load r0, #ff
|
||||
cleq r0, r0, addByte
|
||||
store decWordLow, r0
|
||||
|
||||
; Add ff and carry to high byte
|
||||
load r0, litff
|
||||
load r0, #ff
|
||||
load r2, decWordHigh
|
||||
cleq r0, r0, addByte3
|
||||
|
||||
|
@ -762,86 +762,86 @@ addByte:
|
|||
nybble2hex:
|
||||
xor r3, r3
|
||||
breq r0, r3, nybble2hex0
|
||||
load r3, lit01
|
||||
load r3, #01
|
||||
breq r0, r3, nybble2hex1
|
||||
load r3, lit02
|
||||
load r3, #02
|
||||
breq r0, r3, nybble2hex2
|
||||
load r3, lit03
|
||||
load r3, #03
|
||||
breq r0, r3, nybble2hex3
|
||||
load r3, lit04
|
||||
load r3, #04
|
||||
breq r0, r3, nybble2hex4
|
||||
load r3, lit05
|
||||
load r3, #05
|
||||
breq r0, r3, nybble2hex5
|
||||
load r3, lit06
|
||||
load r3, #06
|
||||
breq r0, r3, nybble2hex6
|
||||
load r3, lit07
|
||||
load r3, #07
|
||||
breq r0, r3, nybble2hex7
|
||||
load r3, lit08
|
||||
load r3, #08
|
||||
breq r0, r3, nybble2hex8
|
||||
load r3, lit09
|
||||
load r3, #09
|
||||
breq r0, r3, nybble2hex9
|
||||
load r3, lit0a
|
||||
load r3, #0a
|
||||
breq r0, r3, nybble2hexa
|
||||
load r3, lit0b
|
||||
load r3, #0b
|
||||
breq r0, r3, nybble2hexb
|
||||
load r3, lit0c
|
||||
load r3, #0c
|
||||
breq r0, r3, nybble2hexc
|
||||
load r3, lit0d
|
||||
load r3, #0d
|
||||
breq r0, r3, nybble2hexd
|
||||
load r3, lit0e
|
||||
load r3, #0e
|
||||
breq r0, r3, nybble2hexe
|
||||
load r3, lit0f
|
||||
load r3, #0f
|
||||
breq r0, r3, nybble2hexf
|
||||
|
||||
breq r0, r0, error
|
||||
|
||||
nybble2hex0:
|
||||
load r0, litchar0
|
||||
load r0, #30
|
||||
ret
|
||||
nybble2hex1:
|
||||
load r0, litchar1
|
||||
load r0, #31
|
||||
ret
|
||||
nybble2hex2:
|
||||
load r0, litchar2
|
||||
load r0, #32
|
||||
ret
|
||||
nybble2hex3:
|
||||
load r0, litchar3
|
||||
load r0, #33
|
||||
ret
|
||||
nybble2hex4:
|
||||
load r0, litchar4
|
||||
load r0, #34
|
||||
ret
|
||||
nybble2hex5:
|
||||
load r0, litchar5
|
||||
load r0, #35
|
||||
ret
|
||||
nybble2hex6:
|
||||
load r0, litchar6
|
||||
load r0, #36
|
||||
ret
|
||||
nybble2hex7:
|
||||
load r0, litchar7
|
||||
load r0, #37
|
||||
ret
|
||||
nybble2hex8:
|
||||
load r0, litchar8
|
||||
load r0, #38
|
||||
ret
|
||||
nybble2hex9:
|
||||
load r0, litchar9
|
||||
load r0, #39
|
||||
ret
|
||||
nybble2hexa:
|
||||
load r0, litchara
|
||||
load r0, #61
|
||||
ret
|
||||
nybble2hexb:
|
||||
load r0, litcharb
|
||||
load r0, #62
|
||||
ret
|
||||
nybble2hexc:
|
||||
load r0, litcharc
|
||||
load r0, #63
|
||||
ret
|
||||
nybble2hexd:
|
||||
load r0, litchard
|
||||
load r0, #64
|
||||
ret
|
||||
nybble2hexe:
|
||||
load r0, litchare
|
||||
load r0, #65
|
||||
ret
|
||||
nybble2hexf:
|
||||
load r0, litcharf
|
||||
load r0, #66
|
||||
ret
|
||||
|
||||
; in:
|
||||
|
@ -851,49 +851,49 @@ nybble2hex:
|
|||
; clobbers:
|
||||
; r3
|
||||
hex2nybble:
|
||||
load r3, litchar0
|
||||
load r3, #30
|
||||
breq r0, r3, hex2nybble0
|
||||
load r3, litchar1
|
||||
load r3, #31
|
||||
breq r0, r3, hex2nybble1
|
||||
load r3, litchar2
|
||||
load r3, #32
|
||||
breq r0, r3, hex2nybble2
|
||||
load r3, litchar3
|
||||
load r3, #33
|
||||
breq r0, r3, hex2nybble3
|
||||
load r3, litchar4
|
||||
load r3, #34
|
||||
breq r0, r3, hex2nybble4
|
||||
load r3, litchar5
|
||||
load r3, #35
|
||||
breq r0, r3, hex2nybble5
|
||||
load r3, litchar6
|
||||
load r3, #36
|
||||
breq r0, r3, hex2nybble6
|
||||
load r3, litchar7
|
||||
load r3, #37
|
||||
breq r0, r3, hex2nybble7
|
||||
load r3, litchar8
|
||||
load r3, #38
|
||||
breq r0, r3, hex2nybble8
|
||||
load r3, litchar9
|
||||
load r3, #39
|
||||
breq r0, r3, hex2nybble9
|
||||
load r3, litchara
|
||||
load r3, #61
|
||||
breq r0, r3, hex2nybblea
|
||||
load r3, litcharb
|
||||
load r3, #62
|
||||
breq r0, r3, hex2nybbleb
|
||||
load r3, litcharc
|
||||
load r3, #63
|
||||
breq r0, r3, hex2nybblec
|
||||
load r3, litchard
|
||||
load r3, #64
|
||||
breq r0, r3, hex2nybbled
|
||||
load r3, litchare
|
||||
load r3, #65
|
||||
breq r0, r3, hex2nybblee
|
||||
load r3, litcharf
|
||||
load r3, #66
|
||||
breq r0, r3, hex2nybblef
|
||||
load r3, litcharUppera
|
||||
load r3, #41
|
||||
breq r0, r3, hex2nybblea
|
||||
load r3, litcharUpperb
|
||||
load r3, #42
|
||||
breq r0, r3, hex2nybbleb
|
||||
load r3, litcharUpperC
|
||||
load r3, #43
|
||||
breq r0, r3, hex2nybblec
|
||||
load r3, litcharUpperD
|
||||
load r3, #44
|
||||
breq r0, r3, hex2nybbled
|
||||
load r3, litcharUpperE
|
||||
load r3, #45
|
||||
breq r0, r3, hex2nybblee
|
||||
load r3, litcharUpperF
|
||||
load r3, #46
|
||||
breq r0, r3, hex2nybblef
|
||||
|
||||
breq r0, r0, error
|
||||
|
@ -902,49 +902,49 @@ hex2nybble:
|
|||
xor r0, r0
|
||||
ret
|
||||
hex2nybble1:
|
||||
load r0, lit01
|
||||
load r0, #01
|
||||
ret
|
||||
hex2nybble2:
|
||||
load r0, lit02
|
||||
load r0, #02
|
||||
ret
|
||||
hex2nybble3:
|
||||
load r0, lit03
|
||||
load r0, #03
|
||||
ret
|
||||
hex2nybble4:
|
||||
load r0, lit04
|
||||
load r0, #04
|
||||
ret
|
||||
hex2nybble5:
|
||||
load r0, lit05
|
||||
load r0, #05
|
||||
ret
|
||||
hex2nybble6:
|
||||
load r0, lit06
|
||||
load r0, #06
|
||||
ret
|
||||
hex2nybble7:
|
||||
load r0, lit07
|
||||
load r0, #07
|
||||
ret
|
||||
hex2nybble8:
|
||||
load r0, lit08
|
||||
load r0, #08
|
||||
ret
|
||||
hex2nybble9:
|
||||
load r0, lit09
|
||||
load r0, #09
|
||||
ret
|
||||
hex2nybblea:
|
||||
load r0, lit0a
|
||||
load r0, #0a
|
||||
ret
|
||||
hex2nybbleb:
|
||||
load r0, lit0b
|
||||
load r0, #0b
|
||||
ret
|
||||
hex2nybblec:
|
||||
load r0, lit0c
|
||||
load r0, #0c
|
||||
ret
|
||||
hex2nybbled:
|
||||
load r0, lit0d
|
||||
load r0, #0d
|
||||
ret
|
||||
hex2nybblee:
|
||||
load r0, lit0e
|
||||
load r0, #0e
|
||||
ret
|
||||
hex2nybblef:
|
||||
load r0, lit0f
|
||||
load r0, #0f
|
||||
ret
|
||||
|
||||
; ------------------------------------------------------------------
|
||||
|
@ -981,7 +981,7 @@ writehexByte:
|
|||
store ffff, r0
|
||||
|
||||
; Low nybble
|
||||
load r0, lit0f
|
||||
load r0, #0f
|
||||
and r0, r2
|
||||
cleq r0, r0, nybble2hex
|
||||
store ffff, r0
|
||||
|
@ -995,109 +995,25 @@ writehexByte:
|
|||
; clobbers:
|
||||
; r3
|
||||
newline:
|
||||
load r3, litcharCR
|
||||
load r3, #0d
|
||||
store ffff, r3
|
||||
load r3, litcharLF
|
||||
load r3, #0a
|
||||
store ffff, r3
|
||||
ret
|
||||
|
||||
; noreturn
|
||||
error:
|
||||
load r0, litchare
|
||||
load r0, #65
|
||||
store ffff, r0
|
||||
load r0, litcharr
|
||||
load r0, #72
|
||||
store ffff, r0
|
||||
store ffff, r0
|
||||
load r1, litcharo
|
||||
load r1, #6f
|
||||
store ffff, r1
|
||||
store ffff, r0
|
||||
cleq r0, r0, newline
|
||||
halt
|
||||
|
||||
; ==================================================================
|
||||
; Literals pool
|
||||
; ==================================================================
|
||||
|
||||
lit01: data 01
|
||||
lit02: data 02
|
||||
lit03: data 03
|
||||
lit04: data 04
|
||||
lit05: data 05
|
||||
lit06: data 06
|
||||
lit07: data 07
|
||||
litcharBS:
|
||||
lit08: data 08
|
||||
lit09: data 09
|
||||
litcharLF:
|
||||
lit0a: data 0a
|
||||
lit0b: data 0b
|
||||
lit0c: data 0c
|
||||
litcharCR:
|
||||
lit0d: data 0d
|
||||
lit0e: data 0e
|
||||
lit0f: data 0f
|
||||
|
||||
litcharSpace:
|
||||
lit20: data 20
|
||||
|
||||
litchar0:
|
||||
lit30: data 30
|
||||
litchar1:
|
||||
lit31: data 31
|
||||
litchar2:
|
||||
lit32: data 32
|
||||
litchar3:
|
||||
lit33: data 33
|
||||
litchar4:
|
||||
lit34: data 34
|
||||
litchar5:
|
||||
lit35: data 35
|
||||
litchar6:
|
||||
lit36: data 36
|
||||
litchar7:
|
||||
lit37: data 37
|
||||
litchar8:
|
||||
lit38: data 38
|
||||
litchar9:
|
||||
lit39: data 39
|
||||
|
||||
litcharUppera:
|
||||
lit41: data 41
|
||||
litcharUpperb:
|
||||
lit42: data 42
|
||||
litcharUpperc:
|
||||
lit43: data 43
|
||||
litcharUpperd:
|
||||
lit44: data 44
|
||||
litcharUppere:
|
||||
lit45: data 45
|
||||
litcharUpperf:
|
||||
lit46: data 46
|
||||
|
||||
litchara:
|
||||
lit61: data 61
|
||||
litcharb:
|
||||
lit62: data 62
|
||||
litcharc:
|
||||
lit63: data 63
|
||||
litchard:
|
||||
lit64: data 64
|
||||
litchare:
|
||||
lit65: data 65
|
||||
litcharf:
|
||||
lit66: data 66
|
||||
|
||||
litcharo:
|
||||
lit6f: data 6f
|
||||
|
||||
litcharr:
|
||||
lit72: data 72
|
||||
|
||||
litcharPipe:
|
||||
lit7c: data 7c
|
||||
|
||||
litff: data ff
|
||||
|
||||
; ==================================================================
|
||||
; Data
|
||||
; ==================================================================
|
||||
|
|
Loading…
Reference in New Issue