This commit is contained in:
Martin Haye 2014-06-27 09:25:12 -07:00
commit 16ea77aa69
5 changed files with 155 additions and 173 deletions

View File

@ -12,6 +12,7 @@ import javafx.scene.ImageCursor;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext; import javafx.scene.canvas.GraphicsContext;
import javafx.scene.effect.DropShadow;
import javafx.scene.image.ImageView; import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage; import javafx.scene.image.WritableImage;
import javafx.scene.input.Clipboard; import javafx.scene.input.Clipboard;
@ -237,41 +238,57 @@ public class MapEditor extends Editor<Map, MapEditor.DrawMode> implements EventH
} }
} }
private static final int dashLength=3;
private void highlightScripts(int x, int y, List<Script> scripts) { private void highlightScripts(int x, int y, List<Script> scripts) {
if (scripts == null || scripts.isEmpty()) { if (scripts == null || scripts.isEmpty()) {
return; return;
} }
GraphicsContext gc = drawCanvas.getGraphicsContext2D(); GraphicsContext gc = drawCanvas.getGraphicsContext2D();
int idx = 0; int idx = 0;
int xx = (int) (x * tileWidth); double xx = x * tileWidth;
int yy = (int) (y * tileHeight); double yy = y * tileHeight;
gc.setLineWidth(2.5); gc.setLineWidth(4);
gc.setStroke(currentMap.getScriptColor(scripts.get(0))); for (int i = 0; i < tileWidth-2; i += dashLength) {
gc.rect(xx, yy, tileWidth, tileHeight); idx = (idx + 1) % scripts.size();
// gc.beginPath(); gc.beginPath();
// gc.moveTo(xx,yy); gc.moveTo(xx,yy);
// for (int i = 0; i < tileWidth; i += 2, xx += 2) { gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
// idx = (idx + 1) % scripts.size(); xx += dashLength;
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx))); gc.lineTo(xx, yy);
// gc.lineTo(xx, yy); gc.setEffect(new DropShadow(2, Color.BLACK));
// } gc.stroke();
// for (int i = 0; i < tileHeight; i += 2, yy += 2) { }
// idx = (idx + 1) % scripts.size(); for (int i = 0; i < tileHeight-2; i += dashLength) {
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx))); idx = (idx + 1) % scripts.size();
// gc.lineTo(xx, yy); gc.beginPath();
// } gc.moveTo(xx,yy);
// for (int i = 0; i < tileWidth; i += 2, xx -= 2) { gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
// idx = (idx + 1) % scripts.size(); yy += dashLength;
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx))); gc.lineTo(xx, yy);
// gc.lineTo(xx, yy); gc.setEffect(new DropShadow(2, Color.BLACK));
// } gc.stroke();
// for (int i = 0; i < tileHeight; i += 2, yy -= 2) { }
// idx = (idx + 1) % scripts.size(); for (int i = 0; i < tileWidth-2; i += dashLength) {
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx))); idx = (idx + 1) % scripts.size();
// gc.lineTo(xx, yy); gc.beginPath();
// } gc.moveTo(xx,yy);
// gc.closePath(); gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
xx -= dashLength;
gc.lineTo(xx, yy);
gc.setEffect(new DropShadow(2, Color.BLACK));
gc.stroke();
}
for (int i = 0; i < tileHeight-2; i += dashLength) {
idx = (idx + 1) % scripts.size();
gc.beginPath();
gc.moveTo(xx,yy);
gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
yy -= dashLength;
gc.lineTo(xx, yy);
gc.setEffect(new DropShadow(2, Color.BLACK));
gc.stroke();
}
} }
public void setupDragDrop(TransferHelper<Script> scriptHelper) { public void setupDragDrop(TransferHelper<Script> scriptHelper) {

View File

@ -40,9 +40,9 @@ public class TileMap extends ArrayList<ArrayList<Tile>> implements Serializable
loadFromMap(m); loadFromMap(m);
} }
public static final double SATURATION = 0.5; public static final double SATURATION = 0.75;
public static final double VALUE = 1.0; public static final double VALUE = 1.0;
public static double HUE = 0; public static double HUE = 180;
private final java.util.Map<Integer, List<Script>> locationScripts = new HashMap<>(); private final java.util.Map<Integer, List<Script>> locationScripts = new HashMap<>();
private final java.util.Map<Script, Color> scriptColors = new HashMap<>(); private final java.util.Map<Script, Color> scriptColors = new HashMap<>();
@ -70,7 +70,7 @@ public class TileMap extends ArrayList<ArrayList<Tile>> implements Serializable
private void registerLocationScript(int x, int y, Script s) { private void registerLocationScript(int x, int y, Script s) {
if (!scriptColors.containsKey(s)) { if (!scriptColors.containsKey(s)) {
scriptColors.put(s, Color.hsb(HUE, SATURATION, VALUE)); scriptColors.put(s, Color.hsb(HUE, SATURATION, VALUE));
HUE = (HUE + 20) % 360; HUE = (HUE + 35) % 360;
} }
int loc = getMortonNumber(x, y); int loc = getMortonNumber(x, y);
List<Script> list = locationScripts.get(loc); List<Script> list = locationScripts.get(loc);

View File

@ -21,7 +21,7 @@ predef crout, cout, prstr, cin, rdstr
predef markheap, allocheap, allocalignheap, releaseheap, availheap predef markheap, allocheap, allocalignheap, releaseheap, availheap
predef memset, memcpy predef memset, memcpy
predef uword_isgt, uword_isge, uword_islt, uword_isle predef uword_isgt, uword_isge, uword_islt, uword_isle
predef loadmod, execmod, lookupmod predef loadmod, execmod, lookupstrmod
; ;
; System variable. ; System variable.
; ;
@ -77,7 +77,7 @@ word = @uisltstr, @uword_islt
word = @uislestr, @uword_isle word = @uislestr, @uword_isle
word = @loadstr, @loadmod word = @loadstr, @loadmod
word = @execstr, @execmod word = @execstr, @execmod
word = @modadrstr, @lookupmod word = @modadrstr, @lookupstrmod
word = @machidstr, MACHID word = @machidstr, MACHID
word = 0 word = 0
word stdlibsym = @exports word stdlibsym = @exports
@ -504,11 +504,11 @@ asm dcitos
STA SRCH STA SRCH
LDY #$00 LDY #$00
- LDA (SRC),Y - LDA (SRC),Y
CMP #$80
AND #$7F AND #$7F
CMP (SRC),Y
INY INY
STA (DST),Y STA (DST),Y
BCC - BCS -
TYA TYA
LDY #$00 LDY #$00
STA (DST),Y STA (DST),Y
@ -602,12 +602,11 @@ asm modtosym
INX INX
LDY #$00 LDY #$00
LDA #'#'+$80 LDA #'#'+$80
STA (DST),Y - STA (DST),Y
- LDA (SRC),Y CMP #$80
LDA (SRC),Y
INY INY
STA (DST),Y BCS -
AND #$80
BMI -
RTS RTS
end end
; ;
@ -645,8 +644,8 @@ asm lookuptbl
CMP (SRC),Y CMP (SRC),Y
BNE ++ BNE ++
INY INY
AND #$80 CMP #$80
BMI - BCS -
LDA (DST),Y LDA (DST),Y
PHA PHA
INY INY
@ -662,16 +661,14 @@ asm lookuptbl
INC DSTL INC DSTL
BNE ++ BNE ++
INC DSTH INC DSTH
++ AND #$80 ++ CMP #$80
BMI -- BCS --
LDA #$02 LDA #$02
CLC
ADC DSTL ADC DSTL
STA DSTL STA DSTL
TYA BCC -
ADC DSTH INC DSTH
STA DSTH BCS -
BNE -
end end
; ;
; ProDOS routines ; ProDOS routines
@ -827,6 +824,11 @@ def lookupmod(mod)
byte dci[17] byte dci[17]
return lookuptbl(modtosym(mod, @dci), symtbl) return lookuptbl(modtosym(mod, @dci), symtbl)
end end
def lookupstrmod(str)
byte mod[17]
stodci(str, @mod)
return lookupmod(@mod)
end
def addmod(mod, addr) def addmod(mod, addr)
byte dci[17] byte dci[17]
return addsym(modtosym(mod, @dci), addr) return addsym(modtosym(mod, @dci), addr)
@ -1246,7 +1248,7 @@ heap = *freemem
; Init symbol table. ; Init symbol table.
; ;
stodci(@stdlibstr, heap) stodci(@stdlibstr, heap)
addmod(heap, @systemflags) addmod(heap, @version)
while *stdlibsym while *stdlibsym
stodci((stdlibsym):0, heap) stodci((stdlibsym):0, heap)
addsym(heap, (stdlibsym):2) addsym(heap, (stdlibsym):2)

View File

@ -179,9 +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 BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD DINTERP PLA
BIT LCRWEN+LCBNK2
PLA
STA IPL STA IPL
PLA PLA
STA IPH STA IPH
@ -189,9 +187,7 @@ DINTERP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
LDA #>OPTBL LDA #>OPTBL
STA OPPAGE STA OPPAGE
JMP FETCHOP JMP FETCHOP
IINTRP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD IINTRP PLA
BIT LCRWEN+LCBNK2
PLA
STA TMPL STA TMPL
PLA PLA
STA TMPH STA TMPH
@ -205,9 +201,7 @@ IINTRP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
LDA #>OPTBL LDA #>OPTBL
STA OPPAGE STA OPPAGE
JMP FETCHOP JMP FETCHOP
IINTRPX BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD IINTRPX PLA
BIT LCRWEN+LCBNK2
PLA
STA TMPL STA TMPL
PLA PLA
STA TMPH STA TMPH
@ -253,7 +247,7 @@ CMDEXEC = *
; ;
; INSTALL PAGE 0 FETCHOP ROUTINE ; INSTALL PAGE 0 FETCHOP ROUTINE
; ;
LDY #$0E LDY #$0F
- LDA PAGE0,Y - LDA PAGE0,Y
STA DROP,Y STA DROP,Y
DEY DEY
@ -316,24 +310,26 @@ DISABLE80 !BYTE 21, 13, '1', 26, 13
FAILMSG !BYTE 39 FAILMSG !BYTE 39
!TEXT "MISSING CMD. PRESS ANY KEY TO RESET..." !TEXT "MISSING CMD. PRESS ANY KEY TO RESET..."
PAGE0 = * PAGE0 = *
;******************************
;* *
;* INTERP BYTECODE INNER LOOP *
;* *
;******************************
!PSEUDOPC $00EF { !PSEUDOPC $00EF {
;*
;* INTERP BYTECODE INNER LOOP
;*
INX ; DROP @ $EF INX ; DROP @ $EF
INY ; NEXTOP @ $F0 INY ; NEXTOP @ $F0
BEQ NEXTOPH BEQ NEXTOPH
FETCHOP LDA (IP),Y LDA $FFFF,Y ; FETCHOP @ $F3, IP MAPS OVER $FFFF @ $F4
STA OPIDX STA OPIDX
JMP (OPTBL) JMP (OPTBL) ; OPIDX AND OPPAGE MAP OVER OPTBL
NEXTOPH INC IPH NEXTOPH INC IPH
BNE FETCHOP BNE FETCHOP
} }
PAGE3 = * PAGE3 = *
!PSEUDOPC $03D0 {
;* ;*
;* PAGE 3 VECTORS INTO INTERPRETER ;* PAGE 3 VECTORS INTO INTERPRETER
;* ;*
!PSEUDOPC $03D0 {
BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY
JMP DINTERP JMP DINTERP
BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY
@ -401,13 +397,13 @@ IDXW LDA ESTKL,X
;* MUL TOS-1 BY TOS ;* MUL TOS-1 BY TOS
;* ;*
MUL STY IPY MUL STY IPY
LDY #$00
STY TMPL ; PRODL
STY TMPH ; PRODH
LDY #$10 LDY #$10
MUL1 LSR ESTKH,X ; MULTPLRH LDA #$00
STA TMPL ; PRODL
STA TMPH ; PRODH
MULLP LSR ESTKH,X ; MULTPLRH
ROR ESTKL,X ; MULTPLRL ROR ESTKL,X ; MULTPLRL
BCC MUL2 BCC +
LDA ESTKL+1,X ; MULTPLNDL LDA ESTKL+1,X ; MULTPLNDL
CLC CLC
ADC TMPL ; PRODL ADC TMPL ; PRODL
@ -415,15 +411,15 @@ MUL1 LSR ESTKH,X ; MULTPLRH
LDA ESTKH+1,X ; MULTPLNDH LDA ESTKH+1,X ; MULTPLNDH
ADC TMPH ; PRODH ADC TMPH ; PRODH
STA TMPH STA TMPH
MUL2 ASL ESTKL+1,X ; MULTPLNDL + ASL ESTKL+1,X ; MULTPLNDL
ROL ESTKH+1,X ; MULTPLNDH ROL ESTKH+1,X ; MULTPLNDH
DEY DEY
BNE MUL1 BNE MULLP
INX INX
; LDA TMPH ; PRODH
STA ESTKH,X
LDA TMPL ; PRODL LDA TMPL ; PRODL
STA ESTKL,X STA ESTKL,X
LDA TMPH ; PRODH
STA ESTKH,X
LDY IPY LDY IPY
JMP NEXTOP JMP NEXTOP
;* ;*
@ -441,31 +437,31 @@ _DIV STY IPY
LDA ESTKH,X LDA ESTKH,X
AND #$80 AND #$80
STA DVSIGN STA DVSIGN
BPL _DIV1 BPL +
JSR _NEG JSR _NEG
INC DVSIGN INC DVSIGN
_DIV1 LDA ESTKH+1,X + LDA ESTKH+1,X
BPL _DIV2 BPL +
INX INX
JSR _NEG JSR _NEG
DEX DEX
INC DVSIGN INC DVSIGN
BNE _DIV3 BNE _DIV1
_DIV2 ORA ESTKL+1,X ; DVDNDL + ORA ESTKL+1,X ; DVDNDL
BNE _DIV3 BNE _DIV1
STA TMPL STA TMPL
STA TMPH STA TMPH
RTS RTS
_DIV3 LDY #$11 ; #BITS+1 _DIV1 LDY #$11 ; #BITS+1
LDA #$00 LDA #$00
STA TMPL ; REMNDRL STA TMPL ; REMNDRL
STA TMPH ; REMNDRH STA TMPH ; REMNDRH
_DIV4 ASL ESTKL+1,X ; DVDNDL - ASL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH ROL ESTKH+1,X ; DVDNDH
DEY DEY
BCC _DIV4 BCC -
STY ESTKL-1,X STY ESTKL-1,X
_DIV5 ROL TMPL ; REMNDRL _DIVLP ROL TMPL ; REMNDRL
ROL TMPH ; REMNDRH ROL TMPH ; REMNDRH
LDA TMPL ; REMNDRL LDA TMPL ; REMNDRL
SEC SEC
@ -473,13 +469,13 @@ _DIV5 ROL TMPL ; REMNDRL
TAY TAY
LDA TMPH ; REMNDRH LDA TMPH ; REMNDRH
SBC ESTKH,X ; DVSRH SBC ESTKH,X ; DVSRH
BCC _DIV6 BCC +
STA TMPH ; REMNDRH STA TMPH ; REMNDRH
STY TMPL ; REMNDRL STY TMPL ; REMNDRL
_DIV6 ROL ESTKL+1,X ; DVDNDL + ROL ESTKL+1,X ; DVDNDL
ROL ESTKH+1,X ; DVDNDH ROL ESTKH+1,X ; DVDNDH
DEC ESTKL-1,X DEC ESTKL-1,X
BNE _DIV5 BNE _DIVLP
LDY IPY LDY IPY
RTS RTS
;* ;*
@ -1206,99 +1202,65 @@ DAWX +INC_IP
;* ;*
;* COMPARES ;* COMPARES
;* ;*
ISEQ STY IPY ISEQ LDA ESTKL,X
LDY #$00
LDA ESTKL,X
CMP ESTKL+1,X CMP ESTKL+1,X
BNE ISEQ1 BNE ISFLS
LDA ESTKH,X LDA ESTKH,X
CMP ESTKH+1,X CMP ESTKH+1,X
BNE ISEQ1 BNE ISFLS
DEY ISTRU LDA #$FF
ISEQ1 STY ESTKL+1,X
STY ESTKH+1,X
INX INX
LDY IPY STA ESTKL,X
STA ESTKH,X
JMP NEXTOP JMP NEXTOP
; ;
ISNE STY IPY ISNE LDA ESTKL,X
LDY #$FF
LDA ESTKL,X
CMP ESTKL+1,X CMP ESTKL+1,X
BNE ISNE1 BNE ISTRU
LDA ESTKH,X LDA ESTKH,X
CMP ESTKH+1,X CMP ESTKH+1,X
BNE ISNE1 BNE ISTRU
INY ISFLS LDA #$00
ISNE1 STY ESTKL+1,X
STY ESTKH+1,X
INX INX
LDY IPY STA ESTKL,X
STA ESTKH,X
JMP NEXTOP JMP NEXTOP
; ;
ISGE STY IPY ISGE LDA ESTKL+1,X
LDY #$00
LDA ESTKL+1,X
CMP ESTKL,X CMP ESTKL,X
LDA ESTKH+1,X LDA ESTKH+1,X
SBC ESTKH,X SBC ESTKH,X
BVC ISGE1 BVC ISGE1
EOR #$80 EOR #$80
ISGE1 BMI ISGE2 ISGE1 BPL ISTRU
DEY BMI ISFLS
ISGE2 STY ESTKL+1,X
STY ESTKH+1,X
INX
LDY IPY
JMP NEXTOP
; ;
ISGT STY IPY ISGT LDA ESTKL,X
LDY #$00
LDA ESTKL,X
CMP ESTKL+1,X CMP ESTKL+1,X
LDA ESTKH,X LDA ESTKH,X
SBC ESTKH+1,X SBC ESTKH+1,X
BVC ISGT1 BVC ISGT1
EOR #$80 EOR #$80
ISGT1 BPL ISGT2 ISGT1 BMI ISTRU
DEY BPL ISFLS
ISGT2 STY ESTKL+1,X
STY ESTKH+1,X
INX
LDY IPY
JMP NEXTOP
; ;
ISLE STY IPY ISLE LDA ESTKL,X
LDY #$00
LDA ESTKL,X
CMP ESTKL+1,X CMP ESTKL+1,X
LDA ESTKH,X LDA ESTKH,X
SBC ESTKH+1,X SBC ESTKH+1,X
BVC ISLE1 BVC ISLE1
EOR #$80 EOR #$80
ISLE1 BMI ISLE2 ISLE1 BPL ISTRU
DEY BMI ISFLS
ISLE2 STY ESTKL+1,X
STY ESTKH+1,X
INX
LDY IPY
JMP NEXTOP
; ;
ISLT STY IPY ISLT LDA ESTKL+1,X
LDY #$00
LDA ESTKL+1,X
CMP ESTKL,X CMP ESTKL,X
LDA ESTKH+1,X LDA ESTKH+1,X
SBC ESTKH,X SBC ESTKH,X
BVC ISLT1 BVC ISLT1
EOR #$80 EOR #$80
ISLT1 BPL ISLT2 ISLT1 BMI ISTRU
DEY BPL ISFLS
ISLT2 STY ESTKL+1,X
STY ESTKH+1,X
INX
LDY IPY
JMP NEXTOP
;* ;*
;* BRANCHES ;* BRANCHES
;* ;*
@ -1373,17 +1335,17 @@ IBRNCH LDA IPL
;* ;*
CALL +INC_IP CALL +INC_IP
LDA (IP),Y LDA (IP),Y
STA CALLADR+1 STA TMPL
+INC_IP +INC_IP
LDA (IP),Y LDA (IP),Y
STA CALLADR+2 STA TMPH
LDA IPH LDA IPH
PHA PHA
LDA IPL LDA IPL
PHA PHA
TYA TYA
PHA PHA
CALLADR JSR $FFFF JSR JMPTMP
PLA PLA
TAY TAY
PLA PLA
@ -1392,16 +1354,14 @@ CALLADR JSR $FFFF
STA IPH STA IPH
LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
BIT LCRWEN+LCBNK2
JMP NEXTOP JMP NEXTOP
; ;
CALLX +INC_IP CALLX +INC_IP
LDA (IP),Y LDA (IP),Y
STA CALXADR+1 STA TMPL
+INC_IP +INC_IP
LDA (IP),Y LDA (IP),Y
STA CALXADR+2 STA TMPH
LDA IPH LDA IPH
PHA PHA
LDA IPL LDA IPL
@ -1410,7 +1370,7 @@ CALLX +INC_IP
PHA PHA
STA ALTRDOFF STA ALTRDOFF
CLI CLI
CALXADR JSR $FFFF JSR JMPTMP
SEI SEI
STA ALTRDON STA ALTRDON
PLA PLA
@ -1421,16 +1381,14 @@ CALXADR JSR $FFFF
STA IPH STA IPH
LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
BIT LCRWEN+LCBNK2
JMP NEXTOP JMP NEXTOP
;* ;*
;* INDIRECT CALL TO ADDRESS (NATIVE CODE) ;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
;* ;*
ICAL LDA ESTKL,X ICAL LDA ESTKL,X
STA ICALADR+1 STA TMPL
LDA ESTKH,X LDA ESTKH,X
STA ICALADR+2 STA TMPH
INX INX
LDA IPH LDA IPH
PHA PHA
@ -1438,7 +1396,7 @@ ICAL LDA ESTKL,X
PHA PHA
TYA TYA
PHA PHA
ICALADR JSR $FFFF JSR JMPTMP
PLA PLA
TAY TAY
PLA PLA
@ -1447,14 +1405,12 @@ ICALADR JSR $FFFF
STA IPH STA IPH
LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
BIT LCRWEN+LCBNK2
JMP NEXTOP JMP NEXTOP
; ;
ICALX LDA ESTKL,X ICALX LDA ESTKL,X
STA ICLXADR+1 STA TMPL
LDA ESTKH,X LDA ESTKH,X
STA ICLXADR+2 STA TMPH
INX INX
LDA IPH LDA IPH
PHA PHA
@ -1464,7 +1420,7 @@ ICALX LDA ESTKL,X
PHA PHA
STA ALTRDOFF STA ALTRDOFF
CLI CLI
ICLXADR JSR $FFFF JSR JMPTMP
SEI SEI
STA ALTRDON STA ALTRDON
PLA PLA
@ -1475,10 +1431,12 @@ ICLXADR JSR $FFFF
STA IPH STA IPH
LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
STA OPPAGE STA OPPAGE
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
BIT LCRWEN+LCBNK2
JMP NEXTOP JMP NEXTOP
;* ;*
;* JUMP INDIRECT TRHOUGH TMP
;*
JMPTMP JMP (TMP)
;*
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT ;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
;* ;*
ENTER +INC_IP ENTER +INC_IP

View File

@ -17,11 +17,12 @@ VMZP = ESTK+ESTKSZ
IFP = VMZP IFP = VMZP
IFPL = IFP IFPL = IFP
IFPH = IFP+1 IFPH = IFP+1
IP = IFP+2 ;IP = IFP+2 ; MOVED TO OVERLAY NEXTOP
IPL = IP ;IPL = IP
IPH = IP+1 ;IPH = IP+1
IPY = IP+2 ;IPY = IP+2
TMP = IP+3 IPY = IFP+2
TMP = IPY+1
TMPL = TMP TMPL = TMP
TMPH = TMP+1 TMPH = TMP+1
NPARMS = TMPL NPARMS = TMPL
@ -30,5 +31,9 @@ DVSIGN = TMP+2
ESP = TMP+2 ESP = TMP+2
DROP = $EF DROP = $EF
NEXTOP = $F0 NEXTOP = $F0
OPIDX = NEXTOP+8 FETCHOP = NEXTOP+3
IP = FETCHOP+1
IPL = IP
IPH = IPL+1
OPIDX = FETCHOP+6
OPPAGE = OPIDX+1 OPPAGE = OPIDX+1