Optimize pl[X] ph[X]

This commit is contained in:
stid 2020-02-08 17:31:18 -08:00
parent 5866f3d804
commit e32bd19b47
2 changed files with 28 additions and 71 deletions

View File

@ -36,30 +36,47 @@
// ========================================================
.pseudocommand phy {
jsr Pseudo._phy
sta MemMap.CORE.tmpA
tya
pha
lda MemMap.CORE.tmpA
}
.pseudocommand ply {
jsr Pseudo._ply
sta MemMap.CORE.tmpA
pla
tay
lda MemMap.CORE.tmpA
}
.pseudocommand phx {
jsr Pseudo._phx
sta MemMap.CORE.tmpA
txa
pha
lda MemMap.CORE.tmpA
}
.pseudocommand plx {
jsr Pseudo._plx
}
sta MemMap.CORE.tmpA
pla
tax
lda MemMap.CORE.tmpA}
.pseudocommand phr {
sta MemMap.CORE.tmpA
pha
phx
phy
txa
pha
tya
pha
lda MemMap.CORE.tmpA
}
.pseudocommand plr {
plx
ply
pla
tay
pla
txa
pla
}
@ -75,9 +92,6 @@
// Module Init.
// --------------------------------------------------------
init: {
lda #$FF
sta MemMap.CORE.xStackOffset
sta MemMap.CORE.yStackOffset
rts
}
@ -90,60 +104,6 @@ toDebug: {
rts
}
_phx: {
pha // Save A
tya // Tansfer Y in A
pha // Save Y as A
inc MemMap.CORE.xStackOffset // Increment Stack offset
ldy MemMap.CORE.xStackOffset // Load new Stack offset in Y
txa // Move X in A
sta MemMap.CORE.XStack, y // Save X (as A) in YStack + offset (y)
pla // Load saved A (was Y)
tay // restore Y from A
pla // restore A
rts
}
_plx: {
pha // Save A
tya // Tansfer X in A
pha // Save X as A
ldx MemMap.CORE.xStackOffset // Load Stack offset
lda MemMap.CORE.XStack, x // Load Y from stack
tax
dec MemMap.CORE.xStackOffset // Dcrement stack offset
pla // Load saved A (was X)
tay // restore X from A
pla
rts
}
_phy: {
pha // Save A
txa // Tansfer X in A
pha // Save X as A
inc MemMap.CORE.yStackOffset // Increment Stack offset
ldx MemMap.CORE.yStackOffset // Load new Stack offset in X
tya // Move Y in A
sta MemMap.CORE.YStack, x // Save Y (as A) in XStack + offset (x)
pla // Load saved A (was X)
tax // restore X from A
pla // restore A
rts
}
_ply: {
pha // Save A
txa // Tansfer X in A
pha // Save X as A
ldx MemMap.CORE.yStackOffset // Load Stack offset
ldy MemMap.CORE.YStack, x // Load Y from stack
dec MemMap.CORE.yStackOffset // Dcrement stack offset
pla // Load saved A (was X)
tax // restore X from A
pla // restore A
rts
}
// ========================================================
// ////// DATA ////////////////////////////////////////////
@ -151,7 +111,7 @@ _ply: {
* = * "Pseudo Data"
module_type: .byte Module.TYPES.CORE
version: .byte 1, 0, 1
version: .byte 1, 1, 0
.encoding "screencode_mixed"
module_name:

View File

@ -10,10 +10,7 @@
.namespace CORE {
// PHx/PLx pseudo commands
yStackOffset: .byte 0 // Y Stack offset used by phy/ply
xStackOffset: .byte 0 // X Stack offset used by phx/plx
.label XStack = XSTACK_ADDRESS // 256 bytes phy/ply stack buffer pointer
.label YStack = YSTACK_ADDRESS // 256 bytes phx/plx stack buffer pointer
tmpA: .byte 0 // TMP A
}
.namespace PRINT {