Following is the output after a session on PucMon
Code: Select all
tic hex count vInstr % cum. description
18 1A 1770982 LD 17% 17% Load byte from zero page (vAC=[D])
28 35 1340049 BCC 13% 30% Test vAC and branch conditionally. CC can be
14 8C 1100337 XORI 11% 41% Logical-XOR with small constant (vAC^=D)
20 2B 846162 STW 8% 49% Store word in zero page ([D],[D+1]=vAC&255,vAC>>8)
20 21 730623 LDW 7% 56% Word load from zero page (vAC=[D]+256*[D+1])
48 11 651299 LDWI 6% 63% Load immediate word constant (vAC=$HHLL)
28 99 506221 ADDW 5% 68% Word addition with zero page (vAC+=[D]+256*[D+1])
26 CF 481268 CALL 5% 72% Goto address and remember vPC (vLR,vPC=vPC+2,[D]+256*[D+1]-2)
28 B8 470507 SUBW 5% 77% Word subtraction with zero page (vAC-=[D]+256*[D+1])
99 B4 452052 SYS 4% 81% Native function call using at most 2*T cycles, D=270-max(14,T)
16 FF 291126 RET 3% 84% Leaf return (vPC=vLR-2)
16 93 204087 INC 2% 86% Increment zero page byte ([D]++)
28 F8 180993 ANDW 2% 88% Word logical-AND with zero page (vAC&=[D]+256*[D+1])
28 F6 179400 DEEK 2% 90% Read word from memory (vAC=[vAC]+256*[vAC+1])
26 75 127153 PUSH 1% 91% Push vLR on stack ([vSP-2],v[vSP-1],vSP=vLR&255,vLR>>8,vLR-2)
26 63 127149 POP 1% 92% Pop address from stack (vLR,vSP=[vSP]+256*[vSP+1],vSP+2)
28 E6 125744 SUBI 1% 93% Subtract small positive constant (vAC-=D)
16 82 107527 ANDI 1% 94% Logical-AND with small constant (vAC&=D)
16 59 105974 LDI 1% 95% Load immediate small positive constant (vAC=D)
26 AD 89853 PEEK 1% 96% Read byte from memory (vAC=[vAC])
28 E9 78232 LSLW 1% 97% Shift left ('ADDW vAC' will not work!) (vAC<<=1)
16 5E 78071 ST 1% 98% Store byte in zero page ([D]=vAC&256)
14 90 70709 BRA 1% 99% Branch unconditionally (vPC=(vPC&0xff00)+D)
28 E3 46274 ADDI 0% 99% Add small positive constant (vAC+=D)
26 FC 30074 XORW 0% 99% Word logical-XOR with zero page (vAC^=[D]+256*[D+1])
28 F3 29383 DOKE 0% 100% Write word in memory ([[D+1],[D]],[[D+1],[D]+1]=vAC&255,vAC>>8)
28 FA 23663 ORW 0% 100% Word logical-OR with zero page (vAC|=[D]+256*[D+1])
28 F0 12151 POKE 0% 100% Write byte in memory ([[D+1],[D]]=vAC&255)
26 7F 4669 LUP 0% 100% ROM lookup, needs trampoline in target page (vAC=ROM[vAC+D])
14 88 706 ORI 0% 100% Logical-OR with small constant (vAC|=D)
26 CD 18 DEF 0% 100% Define data or code (vAC,vPC=vPC+2,(vPC&0xff00)+D)
14 DF 0 ALLOC 0% 100% Create or destroy stack frame (vSP+=D)
28 85 0 CALLI 0% 100% Goto immediate address and remember vPC (vLR,vPC=vPC+3,$HHLL-2)
28 1F 0 CMPHS 0% 100% Adjust high byte for signed compare (vACH=XXX)
28 97 0 CMPHU 0% 100% Adjust high byte for unsigned compare (vACH=XXX)
26 EE 0 LDLW 0% 100% Load word from stack frame (vAC=[vSP+D]+256*[vSP+D+1])
26 EC 0 STLW 0% 100% Store word in stack frame ([vSP+D],[vSP+D+1]=vAC&255,vAC>>8)