Symbol reserveW0 = w0 ; b1:b0
Symbol acc.lsw = w1
Symbol acc.msw = w2
Symbol num.lsw = w3
Symbol num.msw = w4
SerTxd( "$FFFE + $0001 + $0001 ...", CR, LF )
acc.msw = $0000 : acc.lsw = $FFFE ; acc = $0000FFFE
Gosub PrintAcc
num.msw = $0000 : num.lsw = $0001 ; num = $00000001
Gosub Add
Gosub PrintAcc
num.msw = $0000 : num.lsw = $0001 ; num = $00000001
Gosub Add
Gosub PrintAcc
SerTxd( "$FFFE + $FFE + $0001 + $0001 ...", CR, LF )
acc.msw = $0000 : acc.lsw = $FFFE ; acc = $0000FFFE
Gosub PrintAcc
num.msw = $0000 : num.lsw = $FFFE ; num = $0000FFFE
Gosub Add
Gosub PrintAcc
num.msw = $0000 : num.lsw = $0001 ; num = $00000001
Gosub Add
Gosub PrintAcc
num.msw = $0000 : num.lsw = $0001 ; num = $00000001
Gosub Add
Gosub PrintAcc
End
Add:
w0 = acc.lsw
acc.lsw = acc.lsw + num.lsw
acc.msw = acc.msw + num.msw
If acc.lsw < w0 Then
acc.msw = acc.msw + 1
End If
Return
PrintAcc:
SerTxd( "$" )
b0 = acc.msw / $1000 : Gosub PrintHexDigit
b0 = acc.msw / $100 : Gosub PrintHexDigit
b0 = acc.msw / $10 : Gosub PrintHexDigit
b0 = acc.msw / $1 : Gosub PrintHexDigit
b0 = acc.lsw / $1000 : Gosub PrintHexDigit
b0 = acc.lsw / $100 : Gosub PrintHexDigit
b0 = acc.lsw / $10 : Gosub PrintHexDigit
b0 = acc.lsw / $1 : Gosub PrintHexDigit
SerTxd( CR, LF )
Return
PrintHexDigit:
b1 = b0 & $0F + "0" : If b1 > "9" Then : b1 = b1 + 7 : End If
SerTxd( b1 )
Return