From e32bd19b47a81c9c2af873561421e05093122d56 Mon Sep 17 00:00:00 2001 From: stid Date: Sat, 8 Feb 2020 17:31:18 -0800 Subject: [PATCH] Optimize pl[X] ph[X] --- core/pseudo.asm | 94 +++++++++++++------------------------------- hardware/mem_map.asm | 5 +-- 2 files changed, 28 insertions(+), 71 deletions(-) diff --git a/core/pseudo.asm b/core/pseudo.asm index 1c120dd..cbaba85 100644 --- a/core/pseudo.asm +++ b/core/pseudo.asm @@ -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: diff --git a/hardware/mem_map.asm b/hardware/mem_map.asm index fbb9b6d..ac83cb0 100644 --- a/hardware/mem_map.asm +++ b/hardware/mem_map.asm @@ -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 {