mirror of
https://github.com/dschmenk/PLASMA.git
synced 2025-02-03 07:34:11 +00:00
Add profiling support for plvm02
This commit is contained in:
parent
77edb1bce9
commit
047fae252a
@ -4,7 +4,7 @@ import stdlib
|
|||||||
predef heapmark, heapallocallign, heapalloc, heaprelease, heapavail
|
predef heapmark, heapallocallign, heapalloc, heaprelease, heapavail
|
||||||
predef memset, memcpy
|
predef memset, memcpy
|
||||||
predef isugt, isuge, isult, isule
|
predef isugt, isuge, isult, isule
|
||||||
predef load, exec
|
predef modload, modexec, modaddr
|
||||||
word MACHID, sysvars
|
word MACHID, sysvars
|
||||||
;
|
;
|
||||||
; System flags: memory allocator screen holes.
|
; System flags: memory allocator screen holes.
|
||||||
|
@ -11,6 +11,7 @@ HGR1 = HGR1\#FE1000
|
|||||||
HGR1TEST= HGR1TEST\#FE1000
|
HGR1TEST= HGR1TEST\#FE1000
|
||||||
TEST = TEST\#FE1000
|
TEST = TEST\#FE1000
|
||||||
TESTLIB = TESTLIB\#FE1000
|
TESTLIB = TESTLIB\#FE1000
|
||||||
|
PROFILE = PROFILE\#FE1000
|
||||||
PLASM = plasm
|
PLASM = plasm
|
||||||
INCS = toolsrc/tokens.h toolsrc/symbols.h toolsrc/lex.h toolsrc/parse.h toolsrc/codegen.h
|
INCS = toolsrc/tokens.h toolsrc/symbols.h toolsrc/lex.h toolsrc/parse.h toolsrc/codegen.h
|
||||||
OBJS = toolsrc/plasm.c toolsrc/parse.o toolsrc/lex.o toolsrc/codegen.o
|
OBJS = toolsrc/plasm.c toolsrc/parse.o toolsrc/lex.o toolsrc/codegen.o
|
||||||
@ -30,7 +31,7 @@ TXTTYPE = .TXT
|
|||||||
#SYSTYPE = \#FF2000
|
#SYSTYPE = \#FF2000
|
||||||
#TXTTYPE = \#040000
|
#TXTTYPE = \#040000
|
||||||
|
|
||||||
all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(ROD) $(HGR1)
|
all: $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03) $(CMD) $(PROFILE) $(ROD) $(HGR1)
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
-rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03)
|
-rm *FE1000 *FF2000 $(PLASM) $(PLVM) $(PLVM01) $(PLVM02) $(PLVM03)
|
||||||
@ -83,6 +84,10 @@ $(ROD): samplesrc/rod.pla $(PLVM02) $(PLASM)
|
|||||||
./$(PLASM) -AM < samplesrc/rod.pla > samplesrc/rod.a
|
./$(PLASM) -AM < samplesrc/rod.pla > samplesrc/rod.a
|
||||||
acme --setpc 4094 -o $(ROD) samplesrc/rod.a
|
acme --setpc 4094 -o $(ROD) samplesrc/rod.a
|
||||||
|
|
||||||
|
$(PROFILE): samplesrc/profile.pla $(PLVM02) $(PLASM)
|
||||||
|
m4 -I inc < samplesrc/profile.pla | ./$(PLASM) -AM > samplesrc/profile.a
|
||||||
|
acme --setpc 4094 -o $(PROFILE) samplesrc/profile.a
|
||||||
|
|
||||||
$(HGR1): samplesrc/hgr1.pla samplesrc/hgr1test.pla $(PLVM02) $(PLASM)
|
$(HGR1): samplesrc/hgr1.pla samplesrc/hgr1test.pla $(PLVM02) $(PLASM)
|
||||||
./$(PLASM) -AM < samplesrc/hgr1test.pla > samplesrc/hgr1test.a
|
./$(PLASM) -AM < samplesrc/hgr1test.pla > samplesrc/hgr1test.a
|
||||||
acme --setpc 4094 -o $(HGR1TEST) samplesrc/hgr1test.a
|
acme --setpc 4094 -o $(HGR1TEST) samplesrc/hgr1test.a
|
||||||
|
91
src/samplesrc/profile.pla
Executable file
91
src/samplesrc/profile.pla
Executable file
@ -0,0 +1,91 @@
|
|||||||
|
;
|
||||||
|
; Include all imported modules and their data/functions.
|
||||||
|
;
|
||||||
|
include(stdlib.plh)
|
||||||
|
;
|
||||||
|
; Profile commands.
|
||||||
|
;
|
||||||
|
const stop = 0
|
||||||
|
const start = 1
|
||||||
|
const dump = 2
|
||||||
|
;
|
||||||
|
; Declare all global variables for this module.
|
||||||
|
;
|
||||||
|
byte profstr[] = "PLASMA Profiler\n"
|
||||||
|
byte optstr[] = "Module to profile"
|
||||||
|
byte ttlstr[] = "Total executed opcodes: $"
|
||||||
|
byte hdrstr[] = " OP COUNT\n"
|
||||||
|
byte valstr[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'
|
||||||
|
word cmdstr
|
||||||
|
byte opstats[260]
|
||||||
|
;
|
||||||
|
; Define functions.
|
||||||
|
;
|
||||||
|
asm equate
|
||||||
|
!SOURCE "vmsrc/plvmzp.inc"
|
||||||
|
end
|
||||||
|
asm profiler
|
||||||
|
LDA ESTKL,X
|
||||||
|
CMP #$02
|
||||||
|
BNE +
|
||||||
|
INX
|
||||||
|
LDY ESTKL,X
|
||||||
|
STY DSTL
|
||||||
|
LDY ESTKH,X
|
||||||
|
STY DSTH
|
||||||
|
+ STX ESP
|
||||||
|
JSR $03E2
|
||||||
|
LDX ESP
|
||||||
|
RTS
|
||||||
|
end
|
||||||
|
def printb(b)
|
||||||
|
putc(valstr[(b >> 4) & $0F])
|
||||||
|
putc(valstr[ b & $0F])
|
||||||
|
end
|
||||||
|
def printw(h)
|
||||||
|
putc(valstr[(h >> 12) & $0F])
|
||||||
|
putc(valstr[(h >> 8) & $0F])
|
||||||
|
putc(valstr[(h >> 4) & $0F])
|
||||||
|
putc(valstr[ h & $0F])
|
||||||
|
end
|
||||||
|
def printl(lo, hi)
|
||||||
|
printw(hi)
|
||||||
|
printw(lo)
|
||||||
|
end
|
||||||
|
def dumpstats
|
||||||
|
byte opcnt, linecnt
|
||||||
|
word longptr
|
||||||
|
profiler(@opstats, 2)
|
||||||
|
puts(@ttlstr)
|
||||||
|
printl(opstats:0, opstats:2)
|
||||||
|
putln
|
||||||
|
puts(@hdrstr)
|
||||||
|
longptr = @opstats:4
|
||||||
|
linecnt = 0
|
||||||
|
for opcnt = 0 to 63
|
||||||
|
if (longptr):0 | (longptr):2
|
||||||
|
putc('$')
|
||||||
|
printb(opcnt << 1)
|
||||||
|
putc(' ')
|
||||||
|
putc('$')
|
||||||
|
printl((longptr):0, (longptr):2)
|
||||||
|
linecnt = linecnt + 1
|
||||||
|
if linecnt % 20 == 0
|
||||||
|
getc
|
||||||
|
fin
|
||||||
|
putln
|
||||||
|
fin
|
||||||
|
longptr = longptr + 4
|
||||||
|
next
|
||||||
|
end
|
||||||
|
|
||||||
|
puts(@profstr)
|
||||||
|
puts(@optstr)
|
||||||
|
cmdstr = gets($BA)
|
||||||
|
if ^cmdstr
|
||||||
|
profiler(1)
|
||||||
|
modexec(cmdstr)
|
||||||
|
profiler(0)
|
||||||
|
dumpstats
|
||||||
|
fin
|
||||||
|
done
|
@ -179,7 +179,7 @@ OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E
|
|||||||
;*
|
;*
|
||||||
;* ENTER INTO BYTECODE INTERPRETER
|
;* ENTER INTO BYTECODE INTERPRETER
|
||||||
;*
|
;*
|
||||||
DINTERP PLA
|
DINTRP PLA
|
||||||
STA IPL
|
STA IPL
|
||||||
PLA
|
PLA
|
||||||
STA IPH
|
STA IPH
|
||||||
@ -255,7 +255,7 @@ CMDEXEC = *
|
|||||||
;
|
;
|
||||||
; INSTALL PAGE 3 VECTORS
|
; INSTALL PAGE 3 VECTORS
|
||||||
;
|
;
|
||||||
LDY #$11
|
LDY #$17
|
||||||
- LDA PAGE3,Y
|
- LDA PAGE3,Y
|
||||||
STA INTERP,Y
|
STA INTERP,Y
|
||||||
DEY
|
DEY
|
||||||
@ -331,16 +331,18 @@ PAGE3 = *
|
|||||||
;*
|
;*
|
||||||
!PSEUDOPC $03D0 {
|
!PSEUDOPC $03D0 {
|
||||||
BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY
|
BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY
|
||||||
JMP DINTERP
|
JMP DINTRP
|
||||||
BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY
|
BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY
|
||||||
JMP IINTRP
|
JMP IINTRP
|
||||||
BIT LCRDEN+LCBNK2 ; $03DC - INDIRECT INTERPX ENTRY
|
BIT LCRDEN+LCBNK2 ; $03DC - INDIRECT INTERPX ENTRY
|
||||||
JMP IINTRPX
|
JMP IINTRPX
|
||||||
|
BIT LCRDEN+LCBNK2 ; $03E2 - PROFILER ENTRY
|
||||||
|
JMP PROFILER
|
||||||
}
|
}
|
||||||
DEFCMD !FILL 33
|
DEFCMD !FILL 27
|
||||||
ENDBYE = *
|
ENDBYE = *
|
||||||
}
|
}
|
||||||
LCDEFCMD = *-33 ; DEFCMD IN LC MEMORY
|
LCDEFCMD = *-27 ; DEFCMD IN LC MEMORY
|
||||||
;*****************
|
;*****************
|
||||||
;* *
|
;* *
|
||||||
;* OPXCODE TABLE *
|
;* OPXCODE TABLE *
|
||||||
@ -351,7 +353,7 @@ OPXTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E
|
|||||||
!WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 10 12 14 16 18 1A 1C 1E
|
!WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 10 12 14 16 18 1A 1C 1E
|
||||||
!WORD LNOT,LOR,LAND,LA,LLA,CB,CW,SWAP ; 20 22 24 26 28 2A 2C 2E
|
!WORD LNOT,LOR,LAND,LA,LLA,CB,CW,SWAP ; 20 22 24 26 28 2A 2C 2E
|
||||||
!WORD DROP,DUP,PUSH,PULL,BRGT,BRLT,BREQ,BRNE ; 30 32 34 36 38 3A 3C 3E
|
!WORD DROP,DUP,PUSH,PULL,BRGT,BRLT,BREQ,BRNE ; 30 32 34 36 38 3A 3C 3E
|
||||||
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU; 40 42 44 46 48 4A 4C 4E
|
!WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E
|
||||||
!WORD BRNCH,IBRNCH,CALLX,ICALX,ENTERX,LEAVEX,RETX,NEXTOP; 50 52 54 56 58 5A 5C 5E
|
!WORD BRNCH,IBRNCH,CALLX,ICALX,ENTERX,LEAVEX,RETX,NEXTOP; 50 52 54 56 58 5A 5C 5E
|
||||||
!WORD LBX,LWX,LLBX,LLWX,LABX,LAWX,DLBX,DLWX ; 60 62 64 66 68 6A 6C 6E
|
!WORD LBX,LWX,LLBX,LLWX,LABX,LAWX,DLBX,DLWX ; 60 62 64 66 68 6A 6C 6E
|
||||||
!WORD SBX,SWX,SLBX,SLWX,SABX,SAWX,DABX,DAWX ; 70 72 74 76 78 7A 7C 7E
|
!WORD SBX,SWX,SLBX,SLWX,SABX,SAWX,DABX,DAWX ; 70 72 74 76 78 7A 7C 7E
|
||||||
@ -1545,5 +1547,308 @@ LEAVEX STA ALTRDOFF
|
|||||||
RETX STA ALTRDOFF
|
RETX STA ALTRDOFF
|
||||||
CLI
|
CLI
|
||||||
RTS
|
RTS
|
||||||
|
;*********************
|
||||||
|
;* *
|
||||||
|
;* BYTECODE PROFILER *
|
||||||
|
;* *
|
||||||
|
;*********************
|
||||||
|
STATS = $DF00
|
||||||
|
;*
|
||||||
|
;* PROFILER CONTROL
|
||||||
|
;*
|
||||||
|
;* A = 0 : DISABLE
|
||||||
|
;* A = 1 : ENABLE SYS+USER OPS
|
||||||
|
;* A = 2 : ENABLE USER OPS
|
||||||
|
;* A = 3 : WRITE STATS TO (DST), 260 BYTES
|
||||||
|
;*
|
||||||
|
PROFILER CMP #$00
|
||||||
|
BNE +
|
||||||
|
;
|
||||||
|
; DISABLE PROFILER, RESTORE INTERP ENTRYPOINTS
|
||||||
|
;
|
||||||
|
LDA #<IINTRP
|
||||||
|
STA $03DA
|
||||||
|
LDA #>IINTRP
|
||||||
|
STA $03DB
|
||||||
|
LDA #<IINTRPX
|
||||||
|
STA $03E0
|
||||||
|
LDA #>IINTRPX
|
||||||
|
STA $03E1
|
||||||
|
RTS
|
||||||
|
;
|
||||||
|
; ENABLE PROFILER, SET PROFILING INTERP ENTRYPOINTS, CLEAR STATS
|
||||||
|
;
|
||||||
|
+ CMP #$01
|
||||||
|
BNE +
|
||||||
|
LDA #<PIINTRP
|
||||||
|
STA $03DA
|
||||||
|
LDA #>PIINTRP
|
||||||
|
STA $03DB
|
||||||
|
LDA #<PIINTRPX
|
||||||
|
STA $03E0
|
||||||
|
LDA #>PIINTRPX
|
||||||
|
STA $03E1
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
LDA #$00
|
||||||
|
STA TTLOPS
|
||||||
|
STA TTLOPS+1
|
||||||
|
STA TTLOPS+2
|
||||||
|
STA TTLOPS+3
|
||||||
|
TAY
|
||||||
|
- STA STATS,Y
|
||||||
|
INY
|
||||||
|
BNE -
|
||||||
|
RTS
|
||||||
|
;
|
||||||
|
; COPY STATS TO MAIN MEMORY
|
||||||
|
;
|
||||||
|
+ CMP #$02
|
||||||
|
BNE ++
|
||||||
|
LDX #$00
|
||||||
|
LDA TTLOPS
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDA TTLOPS+1
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDA TTLOPS+2
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDA TTLOPS+3
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDY #$00
|
||||||
|
- LDA STATS,Y
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDA STATS+64,Y
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDA STATS+128,Y
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ LDA STATS+192,Y
|
||||||
|
STA (DST,X)
|
||||||
|
INC DSTL
|
||||||
|
BNE +
|
||||||
|
INC DSTH
|
||||||
|
+ INY
|
||||||
|
CPY #64
|
||||||
|
BNE -
|
||||||
|
++ RTS
|
||||||
|
;*
|
||||||
|
;* ENTER INTO BYTECODE INTERPRETER
|
||||||
|
;*
|
||||||
|
PIINTRP PLA
|
||||||
|
STA TMPL
|
||||||
|
PLA
|
||||||
|
STA TMPH
|
||||||
|
LDY #$02
|
||||||
|
LDA (TMP),Y
|
||||||
|
STA IPH
|
||||||
|
DEY
|
||||||
|
LDA (TMP),Y
|
||||||
|
STA IPL
|
||||||
|
DEY
|
||||||
|
LDA #>PROTBL
|
||||||
|
STA OPPAGE
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
JMP FETCHOP
|
||||||
|
PIINTRPX PLA
|
||||||
|
STA TMPL
|
||||||
|
PLA
|
||||||
|
STA TMPH
|
||||||
|
LDY #$02
|
||||||
|
LDA (TMP),Y
|
||||||
|
STA IPH
|
||||||
|
DEY
|
||||||
|
LDA (TMP),Y
|
||||||
|
STA IPL
|
||||||
|
DEY
|
||||||
|
LDA #>PROXTBL
|
||||||
|
STA OPPAGE
|
||||||
|
SEI
|
||||||
|
STA ALTRDON
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
JMP FETCHOP
|
||||||
|
;*
|
||||||
|
;* PROFILE OPS
|
||||||
|
;*
|
||||||
|
PROP ORA #$80
|
||||||
|
STA PROPJMP+1
|
||||||
|
AND #$7F
|
||||||
|
JSR UPDTSTATS
|
||||||
|
PROPJMP JMP (OPTBL)
|
||||||
|
PROPX STA PROPXJMP+1
|
||||||
|
JSR UPDTSTATS
|
||||||
|
PROPXJMP JMP (OPXTBL)
|
||||||
|
UPDTSTATS STX ESP
|
||||||
|
LSR
|
||||||
|
TAX
|
||||||
|
INC STATS,X
|
||||||
|
BNE +
|
||||||
|
INC STATS+64,X
|
||||||
|
BNE +
|
||||||
|
INC STATS+128,X
|
||||||
|
BNE +
|
||||||
|
INC STATS+192,X
|
||||||
|
+ LDX ESP
|
||||||
|
INC TTLOPS
|
||||||
|
BNE +
|
||||||
|
INC TTLOPS+1
|
||||||
|
BNE +
|
||||||
|
INC TTLOPS+2
|
||||||
|
BNE +
|
||||||
|
INC TTLOPS+3
|
||||||
|
+ RTS
|
||||||
|
PROCALL JSR UPDTSTATS
|
||||||
|
+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
STA TMPL
|
||||||
|
+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
STA TMPH
|
||||||
|
LDA IPH
|
||||||
|
PHA
|
||||||
|
LDA IPL
|
||||||
|
PHA
|
||||||
|
TYA
|
||||||
|
PHA
|
||||||
|
JSR JMPTMP
|
||||||
|
PLA
|
||||||
|
TAY
|
||||||
|
PLA
|
||||||
|
STA IPL
|
||||||
|
PLA
|
||||||
|
STA IPH
|
||||||
|
LDA #>PROTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||||
|
STA OPPAGE
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
JMP NEXTOP
|
||||||
|
;
|
||||||
|
PROCALLX JSR UPDTSTATS
|
||||||
|
+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
STA TMPL
|
||||||
|
+INC_IP
|
||||||
|
LDA (IP),Y
|
||||||
|
STA TMPH
|
||||||
|
LDA IPH
|
||||||
|
PHA
|
||||||
|
LDA IPL
|
||||||
|
PHA
|
||||||
|
TYA
|
||||||
|
PHA
|
||||||
|
STA ALTRDOFF
|
||||||
|
CLI
|
||||||
|
JSR JMPTMP
|
||||||
|
SEI
|
||||||
|
STA ALTRDON
|
||||||
|
PLA
|
||||||
|
TAY
|
||||||
|
PLA
|
||||||
|
STA IPL
|
||||||
|
PLA
|
||||||
|
STA IPH
|
||||||
|
LDA #>PROXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||||
|
STA OPPAGE
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
JMP NEXTOP
|
||||||
|
;*
|
||||||
|
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
|
||||||
|
;*
|
||||||
|
PROICAL JSR UPDTSTATS
|
||||||
|
LDA ESTKL,X
|
||||||
|
STA TMPL
|
||||||
|
LDA ESTKH,X
|
||||||
|
STA TMPH
|
||||||
|
INX
|
||||||
|
LDA IPH
|
||||||
|
PHA
|
||||||
|
LDA IPL
|
||||||
|
PHA
|
||||||
|
TYA
|
||||||
|
PHA
|
||||||
|
JSR JMPTMP
|
||||||
|
PLA
|
||||||
|
TAY
|
||||||
|
PLA
|
||||||
|
STA IPL
|
||||||
|
PLA
|
||||||
|
STA IPH
|
||||||
|
LDA #>PROTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||||
|
STA OPPAGE
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
JMP NEXTOP
|
||||||
|
;
|
||||||
|
PROICALX JSR UPDTSTATS
|
||||||
|
LDA ESTKL,X
|
||||||
|
STA TMPL
|
||||||
|
LDA ESTKH,X
|
||||||
|
STA TMPH
|
||||||
|
INX
|
||||||
|
LDA IPH
|
||||||
|
PHA
|
||||||
|
LDA IPL
|
||||||
|
PHA
|
||||||
|
TYA
|
||||||
|
PHA
|
||||||
|
STA ALTRDOFF
|
||||||
|
CLI
|
||||||
|
JSR JMPTMP
|
||||||
|
SEI
|
||||||
|
STA ALTRDON
|
||||||
|
PLA
|
||||||
|
TAY
|
||||||
|
PLA
|
||||||
|
STA IPL
|
||||||
|
PLA
|
||||||
|
STA IPH
|
||||||
|
LDA #>PROXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||||
|
STA OPPAGE
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
BIT LCRWEN+LCBNK2
|
||||||
|
JMP NEXTOP
|
||||||
|
TTLOPS !WORD 0, 0
|
||||||
|
;*
|
||||||
|
;* PROFILING OP TABLE
|
||||||
|
;*
|
||||||
|
!ALIGN 255,0
|
||||||
|
PROXTBL !WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROCALLX,PROICALX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
!WORD PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX,PROPX
|
||||||
|
PROTBL !WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROCALL,PROICAL,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
|
!WORD PROP,PROP,PROP,PROP,PROP,PROP,PROP,PROP
|
||||||
VMEND = *
|
VMEND = *
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user