mirror of
https://github.com/catseye/SixtyPical.git
synced 2024-11-22 17:32:01 +00:00
Interesting dead end we've got ourselves into here.
This commit is contained in:
parent
645079f03a
commit
e3fe337730
23
eg/intr1.60p
Normal file
23
eg/intr1.60p
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
byte vic_border @ 53280
|
||||||
|
|
||||||
|
vector cinv @ 788
|
||||||
|
vector save_cinv
|
||||||
|
|
||||||
|
routine our_cinv
|
||||||
|
inputs vic_border
|
||||||
|
outputs vic_border
|
||||||
|
trashes z, n
|
||||||
|
{
|
||||||
|
inc vic_border
|
||||||
|
}
|
||||||
|
|
||||||
|
routine main
|
||||||
|
inputs cinv, our_cinv
|
||||||
|
outputs cinv, save_cinv
|
||||||
|
trashes a, n, z
|
||||||
|
{
|
||||||
|
with interrupts off {
|
||||||
|
copy cinv, save_cinv
|
||||||
|
copy our_cinv, cinv
|
||||||
|
}
|
||||||
|
}
|
@ -3,7 +3,7 @@
|
|||||||
from sixtypical.ast import Program, Routine, Block, Instr
|
from sixtypical.ast import Program, Routine, Block, Instr
|
||||||
from sixtypical.model import (
|
from sixtypical.model import (
|
||||||
ConstantRef, LocationRef,
|
ConstantRef, LocationRef,
|
||||||
TYPE_BIT,
|
TYPE_BIT, TYPE_ROUTINE, TYPE_VECTOR,
|
||||||
REG_A, REG_X, REG_Y, FLAG_Z, FLAG_N, FLAG_V, FLAG_C
|
REG_A, REG_X, REG_Y, FLAG_Z, FLAG_N, FLAG_V, FLAG_C
|
||||||
)
|
)
|
||||||
from sixtypical.emitter import Label, Byte
|
from sixtypical.emitter import Label, Byte
|
||||||
@ -241,5 +241,13 @@ class Compiler(object):
|
|||||||
self.emitter.emit(SEI())
|
self.emitter.emit(SEI())
|
||||||
self.compile_block(instr.block)
|
self.compile_block(instr.block)
|
||||||
self.emitter.emit(CLI())
|
self.emitter.emit(CLI())
|
||||||
|
elif opcode == 'copy':
|
||||||
|
if src.type in (TYPE_ROUTINE, TYPE_VECTOR) and dest.type == TYPE_VECTOR:
|
||||||
|
self.emitter.emit(LDA(Absolute(self.labels[src.name])))
|
||||||
|
self.emitter.emit(STA(Absolute(self.labels[dest.name])))
|
||||||
|
self.emitter.emit(LDA(Absolute(self.labels[src.name].clone(offset=1))))
|
||||||
|
self.emitter.emit(STA(Absolute(self.labels[dest.name].clone(offset=1))))
|
||||||
else:
|
else:
|
||||||
raise NotImplementedError
|
raise NotImplementedError(src.type)
|
||||||
|
else:
|
||||||
|
raise NotImplementedError(opcode)
|
||||||
|
Loading…
Reference in New Issue
Block a user