mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-03-01 03:30:04 +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.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) {
|
||||||
|
@ -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);
|
||||||
|
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user