45 lines
625 B
Plaintext
45 lines
625 B
Plaintext
// lib:
|
|
// print.dsa
|
|
|
|
// usage:
|
|
//
|
|
// include print "<relative path>""
|
|
//
|
|
// usage for print:
|
|
// push (register containing address of string)
|
|
// push pcx
|
|
// jmp print::print
|
|
//
|
|
// usage for reset:
|
|
// push pcx
|
|
// jmp print::reset
|
|
|
|
dw display: 0x20000
|
|
dw current: 0x20000
|
|
|
|
reset:
|
|
pop ret
|
|
ldw display, rg1
|
|
stw rg1, current
|
|
jmp 4, ret
|
|
|
|
print:
|
|
pop ret // return address
|
|
pop rg0 // string
|
|
ldw current, rg1
|
|
|
|
loop:
|
|
ldb rg0, acc
|
|
stb acc, rg1
|
|
|
|
addi rg0, 1
|
|
addi rg1, 1
|
|
|
|
cmp acc, zero
|
|
jne loop
|
|
|
|
// return
|
|
end:
|
|
// set current to
|
|
stw rg1, current
|
|
jmp 4, ret |