mirror of
https://github.com/catseye/SixtyPical.git
synced 2025-02-19 20:30:45 +00:00
Use right endianness when copy
ing literal word into storage.
This commit is contained in:
parent
14494bcdbe
commit
ad8e0647a4
@ -7,6 +7,7 @@ History of SixtyPical
|
|||||||
* Add word (constant or memory location) to word memory location.
|
* Add word (constant or memory location) to word memory location.
|
||||||
* Add word to pointer (unchecked for now).
|
* Add word to pointer (unchecked for now).
|
||||||
* Implementation: `--debug` shows some extra info during analysis.
|
* Implementation: `--debug` shows some extra info during analysis.
|
||||||
|
* Fixed bug where `copy`ing literal word into word storage used wrong endianness.
|
||||||
|
|
||||||
0.8
|
0.8
|
||||||
---
|
---
|
||||||
|
@ -83,9 +83,10 @@ routine our_cinv
|
|||||||
|
|
||||||
routine main
|
routine main
|
||||||
inputs cinv
|
inputs cinv
|
||||||
outputs cinv, save_cinv
|
outputs cinv, save_cinv, pos
|
||||||
trashes a, n, z
|
trashes a, n, z
|
||||||
{
|
{
|
||||||
|
copy word 0, pos
|
||||||
with interrupts off {
|
with interrupts off {
|
||||||
copy cinv, save_cinv
|
copy cinv, save_cinv
|
||||||
copy our_cinv, cinv
|
copy our_cinv, cinv
|
||||||
|
@ -3,5 +3,9 @@
|
|||||||
SRC=$1
|
SRC=$1
|
||||||
OUT=/tmp/a-out.prg
|
OUT=/tmp/a-out.prg
|
||||||
bin/sixtypical --analyze --compile --basic-prelude $SRC > $OUT || exit 1
|
bin/sixtypical --analyze --compile --basic-prelude $SRC > $OUT || exit 1
|
||||||
|
if [ -e vicerc ]; then
|
||||||
|
x64 -config vicerc $OUT
|
||||||
|
else
|
||||||
x64 $OUT
|
x64 $OUT
|
||||||
|
fi
|
||||||
rm -f $OUT
|
rm -f $OUT
|
||||||
|
@ -358,9 +358,9 @@ class Compiler(object):
|
|||||||
elif src.type == TYPE_WORD and dest.type == TYPE_WORD:
|
elif src.type == TYPE_WORD and dest.type == TYPE_WORD:
|
||||||
if isinstance(src, ConstantRef):
|
if isinstance(src, ConstantRef):
|
||||||
dest_label = self.labels[dest.name]
|
dest_label = self.labels[dest.name]
|
||||||
self.emitter.emit(LDA(Immediate(Byte(src.high_byte()))))
|
|
||||||
self.emitter.emit(STA(Absolute(dest_label)))
|
|
||||||
self.emitter.emit(LDA(Immediate(Byte(src.low_byte()))))
|
self.emitter.emit(LDA(Immediate(Byte(src.low_byte()))))
|
||||||
|
self.emitter.emit(STA(Absolute(dest_label)))
|
||||||
|
self.emitter.emit(LDA(Immediate(Byte(src.high_byte()))))
|
||||||
self.emitter.emit(STA(Absolute(Offset(dest_label, 1))))
|
self.emitter.emit(STA(Absolute(Offset(dest_label, 1))))
|
||||||
else:
|
else:
|
||||||
src_label = self.labels[src.name]
|
src_label = self.labels[src.name]
|
||||||
|
@ -275,9 +275,9 @@ Copy literal word to word.
|
|||||||
| outputs bar
|
| outputs bar
|
||||||
| trashes a, n, z
|
| trashes a, n, z
|
||||||
| {
|
| {
|
||||||
| copy 65535, bar
|
| copy 2000, bar
|
||||||
| }
|
| }
|
||||||
= 00c0a9ff8d0bc0a9ff8d0cc060
|
= 00c0a9d08d0bc0a9078d0cc060
|
||||||
|
|
||||||
Copy vector to vector.
|
Copy vector to vector.
|
||||||
|
|
||||||
@ -458,4 +458,4 @@ Note that this is *not* range-checked. (Yet.)
|
|||||||
| add ptr, word 1
|
| add ptr, word 1
|
||||||
| copy [ptr] + y, foo
|
| copy [ptr] + y, foo
|
||||||
| }
|
| }
|
||||||
= 00c0a9028d38c0a96b8d39c0a000a93485fea9c085ffa5fe6d38c085fea5ff6d39c085ffa5fe690185fea5ff690085ffb1fe8d36c060
|
= 00c0a96b8d38c0a9028d39c0a000a93485fea9c085ffa5fe6d38c085fea5ff6d39c085ffa5fe690185fea5ff690085ffb1fe8d36c060
|
||||||
|
Loading…
x
Reference in New Issue
Block a user