mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-01-13 03:30:28 +00:00
Merge branch 'master' of https://github.com/badvision/lawless-legends
This commit is contained in:
commit
16ea77aa69
@ -12,6 +12,7 @@ import javafx.scene.ImageCursor;
|
||||
import javafx.scene.Scene;
|
||||
import javafx.scene.canvas.Canvas;
|
||||
import javafx.scene.canvas.GraphicsContext;
|
||||
import javafx.scene.effect.DropShadow;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.image.WritableImage;
|
||||
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) {
|
||||
if (scripts == null || scripts.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
GraphicsContext gc = drawCanvas.getGraphicsContext2D();
|
||||
int idx = 0;
|
||||
int xx = (int) (x * tileWidth);
|
||||
int yy = (int) (y * tileHeight);
|
||||
gc.setLineWidth(2.5);
|
||||
gc.setStroke(currentMap.getScriptColor(scripts.get(0)));
|
||||
gc.rect(xx, yy, tileWidth, tileHeight);
|
||||
// gc.beginPath();
|
||||
// gc.moveTo(xx,yy);
|
||||
// for (int i = 0; i < tileWidth; i += 2, xx += 2) {
|
||||
// idx = (idx + 1) % scripts.size();
|
||||
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
|
||||
// gc.lineTo(xx, yy);
|
||||
// }
|
||||
// for (int i = 0; i < tileHeight; i += 2, yy += 2) {
|
||||
// idx = (idx + 1) % scripts.size();
|
||||
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
|
||||
// gc.lineTo(xx, yy);
|
||||
// }
|
||||
// for (int i = 0; i < tileWidth; i += 2, xx -= 2) {
|
||||
// idx = (idx + 1) % scripts.size();
|
||||
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
|
||||
// gc.lineTo(xx, yy);
|
||||
// }
|
||||
// for (int i = 0; i < tileHeight; i += 2, yy -= 2) {
|
||||
// idx = (idx + 1) % scripts.size();
|
||||
// gc.setStroke(currentMap.getScriptColor(scripts.get(idx)));
|
||||
// gc.lineTo(xx, yy);
|
||||
// }
|
||||
// gc.closePath();
|
||||
|
||||
double xx = x * tileWidth;
|
||||
double yy = y * tileHeight;
|
||||
gc.setLineWidth(4);
|
||||
for (int i = 0; i < tileWidth-2; i += dashLength) {
|
||||
idx = (idx + 1) % scripts.size();
|
||||
gc.beginPath();
|
||||
gc.moveTo(xx,yy);
|
||||
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();
|
||||
}
|
||||
for (int i = 0; i < tileWidth-2; i += dashLength) {
|
||||
idx = (idx + 1) % scripts.size();
|
||||
gc.beginPath();
|
||||
gc.moveTo(xx,yy);
|
||||
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) {
|
||||
|
@ -40,9 +40,9 @@ public class TileMap extends ArrayList<ArrayList<Tile>> implements Serializable
|
||||
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 double HUE = 0;
|
||||
public static double HUE = 180;
|
||||
private final java.util.Map<Integer, List<Script>> locationScripts = 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) {
|
||||
if (!scriptColors.containsKey(s)) {
|
||||
scriptColors.put(s, Color.hsb(HUE, SATURATION, VALUE));
|
||||
HUE = (HUE + 20) % 360;
|
||||
HUE = (HUE + 35) % 360;
|
||||
}
|
||||
int loc = getMortonNumber(x, y);
|
||||
List<Script> list = locationScripts.get(loc);
|
||||
|
@ -21,7 +21,7 @@ predef crout, cout, prstr, cin, rdstr
|
||||
predef markheap, allocheap, allocalignheap, releaseheap, availheap
|
||||
predef memset, memcpy
|
||||
predef uword_isgt, uword_isge, uword_islt, uword_isle
|
||||
predef loadmod, execmod, lookupmod
|
||||
predef loadmod, execmod, lookupstrmod
|
||||
;
|
||||
; System variable.
|
||||
;
|
||||
@ -77,7 +77,7 @@ word = @uisltstr, @uword_islt
|
||||
word = @uislestr, @uword_isle
|
||||
word = @loadstr, @loadmod
|
||||
word = @execstr, @execmod
|
||||
word = @modadrstr, @lookupmod
|
||||
word = @modadrstr, @lookupstrmod
|
||||
word = @machidstr, MACHID
|
||||
word = 0
|
||||
word stdlibsym = @exports
|
||||
@ -504,11 +504,11 @@ asm dcitos
|
||||
STA SRCH
|
||||
LDY #$00
|
||||
- LDA (SRC),Y
|
||||
CMP #$80
|
||||
AND #$7F
|
||||
CMP (SRC),Y
|
||||
INY
|
||||
STA (DST),Y
|
||||
BCC -
|
||||
BCS -
|
||||
TYA
|
||||
LDY #$00
|
||||
STA (DST),Y
|
||||
@ -602,12 +602,11 @@ asm modtosym
|
||||
INX
|
||||
LDY #$00
|
||||
LDA #'#'+$80
|
||||
STA (DST),Y
|
||||
- LDA (SRC),Y
|
||||
- STA (DST),Y
|
||||
CMP #$80
|
||||
LDA (SRC),Y
|
||||
INY
|
||||
STA (DST),Y
|
||||
AND #$80
|
||||
BMI -
|
||||
BCS -
|
||||
RTS
|
||||
end
|
||||
;
|
||||
@ -645,8 +644,8 @@ asm lookuptbl
|
||||
CMP (SRC),Y
|
||||
BNE ++
|
||||
INY
|
||||
AND #$80
|
||||
BMI -
|
||||
CMP #$80
|
||||
BCS -
|
||||
LDA (DST),Y
|
||||
PHA
|
||||
INY
|
||||
@ -662,16 +661,14 @@ asm lookuptbl
|
||||
INC DSTL
|
||||
BNE ++
|
||||
INC DSTH
|
||||
++ AND #$80
|
||||
BMI --
|
||||
++ CMP #$80
|
||||
BCS --
|
||||
LDA #$02
|
||||
CLC
|
||||
ADC DSTL
|
||||
STA DSTL
|
||||
TYA
|
||||
ADC DSTH
|
||||
STA DSTH
|
||||
BNE -
|
||||
BCC -
|
||||
INC DSTH
|
||||
BCS -
|
||||
end
|
||||
;
|
||||
; ProDOS routines
|
||||
@ -827,6 +824,11 @@ def lookupmod(mod)
|
||||
byte dci[17]
|
||||
return lookuptbl(modtosym(mod, @dci), symtbl)
|
||||
end
|
||||
def lookupstrmod(str)
|
||||
byte mod[17]
|
||||
stodci(str, @mod)
|
||||
return lookupmod(@mod)
|
||||
end
|
||||
def addmod(mod, addr)
|
||||
byte dci[17]
|
||||
return addsym(modtosym(mod, @dci), addr)
|
||||
@ -1246,7 +1248,7 @@ heap = *freemem
|
||||
; Init symbol table.
|
||||
;
|
||||
stodci(@stdlibstr, heap)
|
||||
addmod(heap, @systemflags)
|
||||
addmod(heap, @version)
|
||||
while *stdlibsym
|
||||
stodci((stdlibsym):0, heap)
|
||||
addsym(heap, (stdlibsym):2)
|
||||
|
@ -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
|
||||
;*
|
||||
DINTERP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
PLA
|
||||
DINTERP PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
@ -189,9 +187,7 @@ DINTERP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
LDA #>OPTBL
|
||||
STA OPPAGE
|
||||
JMP FETCHOP
|
||||
IINTRP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
PLA
|
||||
IINTRP PLA
|
||||
STA TMPL
|
||||
PLA
|
||||
STA TMPH
|
||||
@ -205,9 +201,7 @@ IINTRP BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
LDA #>OPTBL
|
||||
STA OPPAGE
|
||||
JMP FETCHOP
|
||||
IINTRPX BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
PLA
|
||||
IINTRPX PLA
|
||||
STA TMPL
|
||||
PLA
|
||||
STA TMPH
|
||||
@ -253,7 +247,7 @@ CMDEXEC = *
|
||||
;
|
||||
; INSTALL PAGE 0 FETCHOP ROUTINE
|
||||
;
|
||||
LDY #$0E
|
||||
LDY #$0F
|
||||
- LDA PAGE0,Y
|
||||
STA DROP,Y
|
||||
DEY
|
||||
@ -316,24 +310,26 @@ DISABLE80 !BYTE 21, 13, '1', 26, 13
|
||||
FAILMSG !BYTE 39
|
||||
!TEXT "MISSING CMD. PRESS ANY KEY TO RESET..."
|
||||
PAGE0 = *
|
||||
;******************************
|
||||
;* *
|
||||
;* INTERP BYTECODE INNER LOOP *
|
||||
;* *
|
||||
;******************************
|
||||
!PSEUDOPC $00EF {
|
||||
;*
|
||||
;* INTERP BYTECODE INNER LOOP
|
||||
;*
|
||||
INX ; DROP @ $EF
|
||||
INY ; NEXTOP @ $F0
|
||||
BEQ NEXTOPH
|
||||
FETCHOP LDA (IP),Y
|
||||
LDA $FFFF,Y ; FETCHOP @ $F3, IP MAPS OVER $FFFF @ $F4
|
||||
STA OPIDX
|
||||
JMP (OPTBL)
|
||||
JMP (OPTBL) ; OPIDX AND OPPAGE MAP OVER OPTBL
|
||||
NEXTOPH INC IPH
|
||||
BNE FETCHOP
|
||||
}
|
||||
PAGE3 = *
|
||||
!PSEUDOPC $03D0 {
|
||||
;*
|
||||
;* PAGE 3 VECTORS INTO INTERPRETER
|
||||
;*
|
||||
!PSEUDOPC $03D0 {
|
||||
BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY
|
||||
JMP DINTERP
|
||||
BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY
|
||||
@ -401,13 +397,13 @@ IDXW LDA ESTKL,X
|
||||
;* MUL TOS-1 BY TOS
|
||||
;*
|
||||
MUL STY IPY
|
||||
LDY #$00
|
||||
STY TMPL ; PRODL
|
||||
STY TMPH ; PRODH
|
||||
LDY #$10
|
||||
MUL1 LSR ESTKH,X ; MULTPLRH
|
||||
LDA #$00
|
||||
STA TMPL ; PRODL
|
||||
STA TMPH ; PRODH
|
||||
MULLP LSR ESTKH,X ; MULTPLRH
|
||||
ROR ESTKL,X ; MULTPLRL
|
||||
BCC MUL2
|
||||
BCC +
|
||||
LDA ESTKL+1,X ; MULTPLNDL
|
||||
CLC
|
||||
ADC TMPL ; PRODL
|
||||
@ -415,15 +411,15 @@ MUL1 LSR ESTKH,X ; MULTPLRH
|
||||
LDA ESTKH+1,X ; MULTPLNDH
|
||||
ADC TMPH ; PRODH
|
||||
STA TMPH
|
||||
MUL2 ASL ESTKL+1,X ; MULTPLNDL
|
||||
+ ASL ESTKL+1,X ; MULTPLNDL
|
||||
ROL ESTKH+1,X ; MULTPLNDH
|
||||
DEY
|
||||
BNE MUL1
|
||||
BNE MULLP
|
||||
INX
|
||||
; LDA TMPH ; PRODH
|
||||
STA ESTKH,X
|
||||
LDA TMPL ; PRODL
|
||||
STA ESTKL,X
|
||||
LDA TMPH ; PRODH
|
||||
STA ESTKH,X
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
;*
|
||||
@ -441,31 +437,31 @@ _DIV STY IPY
|
||||
LDA ESTKH,X
|
||||
AND #$80
|
||||
STA DVSIGN
|
||||
BPL _DIV1
|
||||
BPL +
|
||||
JSR _NEG
|
||||
INC DVSIGN
|
||||
_DIV1 LDA ESTKH+1,X
|
||||
BPL _DIV2
|
||||
+ LDA ESTKH+1,X
|
||||
BPL +
|
||||
INX
|
||||
JSR _NEG
|
||||
DEX
|
||||
INC DVSIGN
|
||||
BNE _DIV3
|
||||
_DIV2 ORA ESTKL+1,X ; DVDNDL
|
||||
BNE _DIV3
|
||||
BNE _DIV1
|
||||
+ ORA ESTKL+1,X ; DVDNDL
|
||||
BNE _DIV1
|
||||
STA TMPL
|
||||
STA TMPH
|
||||
RTS
|
||||
_DIV3 LDY #$11 ; #BITS+1
|
||||
_DIV1 LDY #$11 ; #BITS+1
|
||||
LDA #$00
|
||||
STA TMPL ; REMNDRL
|
||||
STA TMPH ; REMNDRH
|
||||
_DIV4 ASL ESTKL+1,X ; DVDNDL
|
||||
- ASL ESTKL+1,X ; DVDNDL
|
||||
ROL ESTKH+1,X ; DVDNDH
|
||||
DEY
|
||||
BCC _DIV4
|
||||
BCC -
|
||||
STY ESTKL-1,X
|
||||
_DIV5 ROL TMPL ; REMNDRL
|
||||
_DIVLP ROL TMPL ; REMNDRL
|
||||
ROL TMPH ; REMNDRH
|
||||
LDA TMPL ; REMNDRL
|
||||
SEC
|
||||
@ -473,13 +469,13 @@ _DIV5 ROL TMPL ; REMNDRL
|
||||
TAY
|
||||
LDA TMPH ; REMNDRH
|
||||
SBC ESTKH,X ; DVSRH
|
||||
BCC _DIV6
|
||||
BCC +
|
||||
STA TMPH ; REMNDRH
|
||||
STY TMPL ; REMNDRL
|
||||
_DIV6 ROL ESTKL+1,X ; DVDNDL
|
||||
+ ROL ESTKL+1,X ; DVDNDL
|
||||
ROL ESTKH+1,X ; DVDNDH
|
||||
DEC ESTKL-1,X
|
||||
BNE _DIV5
|
||||
BNE _DIVLP
|
||||
LDY IPY
|
||||
RTS
|
||||
;*
|
||||
@ -1206,99 +1202,65 @@ DAWX +INC_IP
|
||||
;*
|
||||
;* COMPARES
|
||||
;*
|
||||
ISEQ STY IPY
|
||||
LDY #$00
|
||||
LDA ESTKL,X
|
||||
ISEQ LDA ESTKL,X
|
||||
CMP ESTKL+1,X
|
||||
BNE ISEQ1
|
||||
BNE ISFLS
|
||||
LDA ESTKH,X
|
||||
CMP ESTKH+1,X
|
||||
BNE ISEQ1
|
||||
DEY
|
||||
ISEQ1 STY ESTKL+1,X
|
||||
STY ESTKH+1,X
|
||||
BNE ISFLS
|
||||
ISTRU LDA #$FF
|
||||
INX
|
||||
LDY IPY
|
||||
STA ESTKL,X
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
;
|
||||
ISNE STY IPY
|
||||
LDY #$FF
|
||||
LDA ESTKL,X
|
||||
ISNE LDA ESTKL,X
|
||||
CMP ESTKL+1,X
|
||||
BNE ISNE1
|
||||
BNE ISTRU
|
||||
LDA ESTKH,X
|
||||
CMP ESTKH+1,X
|
||||
BNE ISNE1
|
||||
INY
|
||||
ISNE1 STY ESTKL+1,X
|
||||
STY ESTKH+1,X
|
||||
BNE ISTRU
|
||||
ISFLS LDA #$00
|
||||
INX
|
||||
LDY IPY
|
||||
STA ESTKL,X
|
||||
STA ESTKH,X
|
||||
JMP NEXTOP
|
||||
;
|
||||
ISGE STY IPY
|
||||
LDY #$00
|
||||
LDA ESTKL+1,X
|
||||
ISGE LDA ESTKL+1,X
|
||||
CMP ESTKL,X
|
||||
LDA ESTKH+1,X
|
||||
SBC ESTKH,X
|
||||
BVC ISGE1
|
||||
EOR #$80
|
||||
ISGE1 BMI ISGE2
|
||||
DEY
|
||||
ISGE2 STY ESTKL+1,X
|
||||
STY ESTKH+1,X
|
||||
INX
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
ISGE1 BPL ISTRU
|
||||
BMI ISFLS
|
||||
;
|
||||
ISGT STY IPY
|
||||
LDY #$00
|
||||
LDA ESTKL,X
|
||||
ISGT LDA ESTKL,X
|
||||
CMP ESTKL+1,X
|
||||
LDA ESTKH,X
|
||||
SBC ESTKH+1,X
|
||||
BVC ISGT1
|
||||
EOR #$80
|
||||
ISGT1 BPL ISGT2
|
||||
DEY
|
||||
ISGT2 STY ESTKL+1,X
|
||||
STY ESTKH+1,X
|
||||
INX
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
ISGT1 BMI ISTRU
|
||||
BPL ISFLS
|
||||
;
|
||||
ISLE STY IPY
|
||||
LDY #$00
|
||||
LDA ESTKL,X
|
||||
ISLE LDA ESTKL,X
|
||||
CMP ESTKL+1,X
|
||||
LDA ESTKH,X
|
||||
SBC ESTKH+1,X
|
||||
BVC ISLE1
|
||||
EOR #$80
|
||||
ISLE1 BMI ISLE2
|
||||
DEY
|
||||
ISLE2 STY ESTKL+1,X
|
||||
STY ESTKH+1,X
|
||||
INX
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
ISLE1 BPL ISTRU
|
||||
BMI ISFLS
|
||||
;
|
||||
ISLT STY IPY
|
||||
LDY #$00
|
||||
LDA ESTKL+1,X
|
||||
ISLT LDA ESTKL+1,X
|
||||
CMP ESTKL,X
|
||||
LDA ESTKH+1,X
|
||||
SBC ESTKH,X
|
||||
BVC ISLT1
|
||||
EOR #$80
|
||||
ISLT1 BPL ISLT2
|
||||
DEY
|
||||
ISLT2 STY ESTKL+1,X
|
||||
STY ESTKH+1,X
|
||||
INX
|
||||
LDY IPY
|
||||
JMP NEXTOP
|
||||
ISLT1 BMI ISTRU
|
||||
BPL ISFLS
|
||||
;*
|
||||
;* BRANCHES
|
||||
;*
|
||||
@ -1373,17 +1335,17 @@ IBRNCH LDA IPL
|
||||
;*
|
||||
CALL +INC_IP
|
||||
LDA (IP),Y
|
||||
STA CALLADR+1
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
LDA (IP),Y
|
||||
STA CALLADR+2
|
||||
STA TMPH
|
||||
LDA IPH
|
||||
PHA
|
||||
LDA IPL
|
||||
PHA
|
||||
TYA
|
||||
PHA
|
||||
CALLADR JSR $FFFF
|
||||
JSR JMPTMP
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
@ -1392,16 +1354,14 @@ CALLADR JSR $FFFF
|
||||
STA IPH
|
||||
LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||
STA OPPAGE
|
||||
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
JMP NEXTOP
|
||||
;
|
||||
CALLX +INC_IP
|
||||
LDA (IP),Y
|
||||
STA CALXADR+1
|
||||
STA TMPL
|
||||
+INC_IP
|
||||
LDA (IP),Y
|
||||
STA CALXADR+2
|
||||
STA TMPH
|
||||
LDA IPH
|
||||
PHA
|
||||
LDA IPL
|
||||
@ -1410,7 +1370,7 @@ CALLX +INC_IP
|
||||
PHA
|
||||
STA ALTRDOFF
|
||||
CLI
|
||||
CALXADR JSR $FFFF
|
||||
JSR JMPTMP
|
||||
SEI
|
||||
STA ALTRDON
|
||||
PLA
|
||||
@ -1421,16 +1381,14 @@ CALXADR JSR $FFFF
|
||||
STA IPH
|
||||
LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||
STA OPPAGE
|
||||
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
JMP NEXTOP
|
||||
;*
|
||||
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
|
||||
;*
|
||||
ICAL LDA ESTKL,X
|
||||
STA ICALADR+1
|
||||
STA TMPL
|
||||
LDA ESTKH,X
|
||||
STA ICALADR+2
|
||||
STA TMPH
|
||||
INX
|
||||
LDA IPH
|
||||
PHA
|
||||
@ -1438,7 +1396,7 @@ ICAL LDA ESTKL,X
|
||||
PHA
|
||||
TYA
|
||||
PHA
|
||||
ICALADR JSR $FFFF
|
||||
JSR JMPTMP
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
@ -1447,14 +1405,12 @@ ICALADR JSR $FFFF
|
||||
STA IPH
|
||||
LDA #>OPTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||
STA OPPAGE
|
||||
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
JMP NEXTOP
|
||||
;
|
||||
ICALX LDA ESTKL,X
|
||||
STA ICLXADR+1
|
||||
STA TMPL
|
||||
LDA ESTKH,X
|
||||
STA ICLXADR+2
|
||||
STA TMPH
|
||||
INX
|
||||
LDA IPH
|
||||
PHA
|
||||
@ -1464,7 +1420,7 @@ ICALX LDA ESTKL,X
|
||||
PHA
|
||||
STA ALTRDOFF
|
||||
CLI
|
||||
ICLXADR JSR $FFFF
|
||||
JSR JMPTMP
|
||||
SEI
|
||||
STA ALTRDON
|
||||
PLA
|
||||
@ -1475,10 +1431,12 @@ ICLXADR JSR $FFFF
|
||||
STA IPH
|
||||
LDA #>OPXTBL ; MAKE SURE WE'RE INDEXING THE RIGHT TABLE
|
||||
STA OPPAGE
|
||||
BIT LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
BIT LCRWEN+LCBNK2
|
||||
JMP NEXTOP
|
||||
;*
|
||||
;* JUMP INDIRECT TRHOUGH TMP
|
||||
;*
|
||||
JMPTMP JMP (TMP)
|
||||
;*
|
||||
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
|
||||
;*
|
||||
ENTER +INC_IP
|
||||
|
@ -17,11 +17,12 @@ VMZP = ESTK+ESTKSZ
|
||||
IFP = VMZP
|
||||
IFPL = IFP
|
||||
IFPH = IFP+1
|
||||
IP = IFP+2
|
||||
IPL = IP
|
||||
IPH = IP+1
|
||||
IPY = IP+2
|
||||
TMP = IP+3
|
||||
;IP = IFP+2 ; MOVED TO OVERLAY NEXTOP
|
||||
;IPL = IP
|
||||
;IPH = IP+1
|
||||
;IPY = IP+2
|
||||
IPY = IFP+2
|
||||
TMP = IPY+1
|
||||
TMPL = TMP
|
||||
TMPH = TMP+1
|
||||
NPARMS = TMPL
|
||||
@ -30,5 +31,9 @@ DVSIGN = TMP+2
|
||||
ESP = TMP+2
|
||||
DROP = $EF
|
||||
NEXTOP = $F0
|
||||
OPIDX = NEXTOP+8
|
||||
FETCHOP = NEXTOP+3
|
||||
IP = FETCHOP+1
|
||||
IPL = IP
|
||||
IPH = IPL+1
|
||||
OPIDX = FETCHOP+6
|
||||
OPPAGE = OPIDX+1
|
||||
|
Loading…
x
Reference in New Issue
Block a user