Use literal loads in calculator.asm

This commit is contained in:
Juhani Krekelä 2022-08-27 19:34:57 +03:00
parent 677f31ea91
commit 2b2cdac605
1 changed files with 93 additions and 177 deletions

View File

@ -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
; ==================================================================