mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-02-04 07:31:26 +00:00
Fix many VM issues, especially 6502 version. Now boots!
This commit is contained in:
parent
b0e291b1f6
commit
23ac5a36f0
@ -41,8 +41,12 @@ SRCH = SRC+1
|
||||
DST = SRC+2
|
||||
DSTL = DST
|
||||
DSTH = DST+1
|
||||
ESP = DST+2
|
||||
;*
|
||||
;* ASM VARIABLES
|
||||
;*
|
||||
ESP !BYTE 0
|
||||
end
|
||||
;
|
||||
; CALL PRODOS
|
||||
; SYSCALL(CMD, PARAMS)
|
||||
;
|
||||
@ -68,12 +72,26 @@ end
|
||||
; CALL LOADED SYSTEM PROGRAM
|
||||
;
|
||||
asm exec
|
||||
LDX #$FE
|
||||
LDA #$00
|
||||
STA IFPL
|
||||
LDA #$BF
|
||||
STA IFPH
|
||||
LDX #$FF
|
||||
TXS
|
||||
LDX ESTKSZ/2
|
||||
LDX #ESTKSZ/2
|
||||
BIT ROMEN
|
||||
JMP $2000
|
||||
end
|
||||
;
|
||||
; EXIT
|
||||
;
|
||||
asm reboot
|
||||
BIT ROMEN
|
||||
LDA #$00
|
||||
STA $3F4 ; INVALIDATE POWER-UP BYTE
|
||||
JMP ($FFFC) ; RESET
|
||||
end
|
||||
;
|
||||
; SET MEMORY TO 0
|
||||
; MEMCLR(ADDR, SIZE)
|
||||
;
|
||||
@ -181,6 +199,7 @@ asm cout
|
||||
ORA #$80
|
||||
BIT ROMEN
|
||||
JSR $FDED
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
;
|
||||
@ -196,6 +215,7 @@ asm cin
|
||||
STA ESTKL,X
|
||||
LDY #$00
|
||||
STY ESTKH,X
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
;
|
||||
@ -219,7 +239,8 @@ asm prstr
|
||||
TYA
|
||||
CMP ESTKL,X
|
||||
BNE -
|
||||
+ RTS
|
||||
+ BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
;
|
||||
; PRINT BYTE
|
||||
@ -230,6 +251,7 @@ asm prbyte
|
||||
BIT ROMEN
|
||||
JSR $FDDA
|
||||
LDX ESP
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
;
|
||||
@ -253,6 +275,7 @@ asm rdstr
|
||||
STA ESTKL,X
|
||||
LDA #$01
|
||||
STA ESTKH,X
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
asm toupper
|
||||
@ -266,15 +289,6 @@ asm toupper
|
||||
STA ESTKL,X
|
||||
+ RTS
|
||||
end
|
||||
;
|
||||
; EXIT
|
||||
;
|
||||
asm reboot
|
||||
BIT ROMEN
|
||||
LDA #$00
|
||||
STA $3F4 ; INVALIDATE POWER-UP BYTE
|
||||
JMP ($FFFC) ; RESET
|
||||
end
|
||||
def crout
|
||||
cout($0D)
|
||||
end
|
||||
@ -303,9 +317,9 @@ def online
|
||||
|
||||
params.0 = 2
|
||||
params.1 = 0
|
||||
params:2 = $2000
|
||||
params:2 = databuff
|
||||
perr = prodos($C5, @params)
|
||||
return $2000
|
||||
return databuff
|
||||
end
|
||||
def open(path, buff)
|
||||
byte params[6]
|
||||
@ -492,7 +506,7 @@ end
|
||||
|
||||
resetmemfiles()
|
||||
prstr(@version)
|
||||
crout();
|
||||
crout()
|
||||
while 1
|
||||
prstr(getpfx(@prefix))
|
||||
cmdptr = rdstr($BA)
|
||||
|
@ -25,7 +25,7 @@ CMD: !BYTE 00
|
||||
PARAMS: !WORD 0000
|
||||
LDX ESP
|
||||
STA ESTKL,X
|
||||
LDY #$00
|
||||
LDY #$00
|
||||
STY ESTKH,X
|
||||
RTS
|
||||
end
|
||||
@ -39,24 +39,33 @@ asm exec
|
||||
STA IFPH
|
||||
LDX #$FE
|
||||
TXS
|
||||
LDX ESTKSZ/2
|
||||
LDX #ESTKSZ/2
|
||||
BIT ROMEN
|
||||
JMP $2000
|
||||
end
|
||||
;
|
||||
; EXIT
|
||||
;
|
||||
asm reboot
|
||||
BIT ROMEN
|
||||
LDA #$00
|
||||
STA $3F4 ; INVALIDATE POWER-UP BYTE
|
||||
JMP ($FFFC) ; RESET
|
||||
end
|
||||
;
|
||||
; SET MEMORY TO 0
|
||||
; MEMCLR(ADDR, SIZE)
|
||||
;
|
||||
asm memclr
|
||||
LDY #$00
|
||||
LDA ESTKL+1,X
|
||||
STA DSTL
|
||||
LDA ESTKH+1,X
|
||||
STA DSTH
|
||||
LDA ESTKL+1,X
|
||||
STA DSTL
|
||||
LDA ESTKH+1,X
|
||||
STA DSTH
|
||||
INC ESTKL,X
|
||||
INC ESTKH,X
|
||||
INC ESTKH,X
|
||||
TYA
|
||||
SETMLP DEC ESTKL,X
|
||||
SETMLP DEC ESTKL,X
|
||||
BNE +
|
||||
DEC ESTKH,X
|
||||
BEQ ++
|
||||
@ -75,18 +84,18 @@ end
|
||||
asm memcpy
|
||||
LDY #$00
|
||||
LDA ESTKL,X
|
||||
BNE +
|
||||
BNE +
|
||||
LDA ESTKH,X
|
||||
BEQ MEMEXIT
|
||||
+ LDA ESTKL+2,X
|
||||
STA DSTL
|
||||
STA DSTL
|
||||
LDA ESTKH+2,X
|
||||
STA DSTH
|
||||
STA DSTH
|
||||
LDA ESTKL+1,X
|
||||
STA SRCL
|
||||
STA SRCL
|
||||
LDA ESTKH+1,X
|
||||
STA SRCH
|
||||
INC ESTKH,X
|
||||
STA SRCH
|
||||
INC ESTKH,X
|
||||
CPYLP LDA (SRC),Y
|
||||
STA (DST),Y
|
||||
INC DSTL
|
||||
@ -95,7 +104,7 @@ CPYLP LDA (SRC),Y
|
||||
+ INC SRCL
|
||||
BNE +
|
||||
INC SRCH
|
||||
+ DEC ESTKL,X
|
||||
+ DEC ESTKL,X
|
||||
BNE CPYLP
|
||||
DEC ESTKH,X
|
||||
BNE CPYLP
|
||||
@ -109,9 +118,10 @@ end
|
||||
;
|
||||
asm cout
|
||||
LDA ESTKL,X
|
||||
ORA #$80
|
||||
ORA #$80
|
||||
BIT ROMEN
|
||||
JSR $FDED
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
;
|
||||
@ -121,12 +131,13 @@ end
|
||||
asm cin
|
||||
BIT ROMEN
|
||||
STX ESP
|
||||
JSR $FD0C
|
||||
JSR $FD0C
|
||||
LDX ESP
|
||||
DEX
|
||||
STA ESTKL,X
|
||||
STA ESTKL,X
|
||||
LDY #$00
|
||||
STY ESTKH,X
|
||||
STY ESTKH,X
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
;
|
||||
@ -135,14 +146,14 @@ end
|
||||
;
|
||||
asm prstr
|
||||
LDY #$00
|
||||
LDA ESTKL,X
|
||||
STA SRCL
|
||||
LDA ESTKH,X
|
||||
STA SRCH
|
||||
LDA ESTKL,X
|
||||
STA SRCL
|
||||
LDA ESTKH,X
|
||||
STA SRCH
|
||||
BIT ROMEN
|
||||
LDA (SRC),Y
|
||||
STA ESTKL,X
|
||||
BEQ +
|
||||
LDA (SRC),Y
|
||||
STA ESTKL,X
|
||||
BEQ +
|
||||
- INY
|
||||
LDA (SRC),Y
|
||||
ORA #$80
|
||||
@ -150,16 +161,8 @@ asm prstr
|
||||
TYA
|
||||
CMP ESTKL,X
|
||||
BNE -
|
||||
+ RTS
|
||||
end
|
||||
;
|
||||
; EXIT
|
||||
;
|
||||
asm reboot
|
||||
BIT ROMEN
|
||||
LDA #$00
|
||||
STA $3F4 ; INVALIDATE POWER-UP BYTE
|
||||
JMP ($FFFC) ; RESET
|
||||
+ BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
end
|
||||
def crout
|
||||
cout($0D)
|
||||
|
@ -311,9 +311,7 @@ void emit_header(void)
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("\tJSR\t$3D0\n");
|
||||
printf("\t%s\t$00\t\t\t; MODULE INITIALIZATION ROUTINE\n", DB);
|
||||
printf("\t%s\t_INIT\t\t\t;\n", DW);
|
||||
printf("\tJMP\t_INIT\t\t\t; MODULE INITIALIZATION ROUTINE\n");
|
||||
}
|
||||
}
|
||||
void emit_rld(void)
|
||||
@ -493,13 +491,9 @@ void emit_def(char *name, int is_bytecode)
|
||||
{
|
||||
if (!(outflags & MODULE))
|
||||
{
|
||||
printf("%s%c\n", name, LBL);
|
||||
//printf("%s%c\n", name, LBL);
|
||||
if (is_bytecode)
|
||||
{
|
||||
printf("\tJSR $03D0\n");
|
||||
printf("\t%s\t$00\n", DB);
|
||||
printf("\t%s\t*+2\n", DW);
|
||||
}
|
||||
}
|
||||
}
|
||||
void emit_codetag(int tag)
|
||||
|
@ -1301,6 +1301,7 @@ int parse_module(void)
|
||||
if (scantoken != DONE_TOKEN && scantoken != EOF_TOKEN)
|
||||
{
|
||||
emit_start();
|
||||
emit_def("_INIT", 1);
|
||||
prevstmnt = 0;
|
||||
while (parse_stmnt()) next_line();
|
||||
if (scantoken != DONE_TOKEN)
|
||||
|
@ -16,9 +16,9 @@ int show_state = 0;
|
||||
* Bytecode memory
|
||||
*/
|
||||
#define BYTE_PTR(bp) ((byte)((bp)[0]))
|
||||
#define WORD_PTR(bp) ((word)((bp)[0] | ((bp)[1] << 8)))
|
||||
#define WORD_PTR(bp) ((word)((bp)[0] | ((bp)[1] << 8)))
|
||||
#define UWORD_PTR(bp) ((uword)((bp)[0] | ((bp)[1] << 8)))
|
||||
#define TO_UWORD(w) ((w)&0xFFFF)
|
||||
#define TO_UWORD(w) ((uword)((w)))
|
||||
#define MOD_ADDR 0x1000
|
||||
#define DEF_CALL 0x0800
|
||||
#define DEF_CALLSZ 0x0800
|
||||
@ -30,8 +30,8 @@ uword sp = 0x01FE, fp = 0xBEFF, heap = 0x6000, xheap = 0x0800, deftbl = DEF_CALL
|
||||
|
||||
#define EVAL_STACKSZ 16
|
||||
#define PUSH(v) (*(--esp))=(v)
|
||||
#define POP (*(esp++))
|
||||
#define UPOP ((uword)(*(esp++)&0xFFFF))
|
||||
#define POP ((word)(*(esp++)))
|
||||
#define UPOP ((uword)(*(esp++)))
|
||||
#define TOS (esp[0])
|
||||
word eval_stack[EVAL_STACKSZ];
|
||||
word *esp = eval_stack + EVAL_STACKSZ;
|
||||
@ -649,7 +649,7 @@ void interp(code *ip)
|
||||
* 0x30-0x3F
|
||||
*/
|
||||
case 0x30: // DROP : TOS =
|
||||
esp++;;
|
||||
POP;
|
||||
break;
|
||||
case 0x32: // DUP : TOS = TOS
|
||||
val = TOS;
|
||||
@ -661,7 +661,8 @@ void interp(code *ip)
|
||||
mem_data[sp--] = val;
|
||||
break;
|
||||
case 0x36: // PULL : TOS = TOSP
|
||||
PUSH(mem_data[++sp] | (mem_data[++sp] << 8));
|
||||
PUSH(mem_data[sp] | (mem_data[sp + 1] << 8));
|
||||
sp += 2;
|
||||
break;
|
||||
case 0x38: // BRGT : TOS-1 > TOS ? IP += (IP)
|
||||
val = POP;
|
||||
|
@ -110,6 +110,17 @@ ESP = DST+2
|
||||
CMP #$E0
|
||||
BNE -
|
||||
;*
|
||||
;* MOVE FIRST PAGE OF 'BYE' INTO PLACE
|
||||
;*
|
||||
LDY #$00
|
||||
STY SRCL
|
||||
LDA #$D1
|
||||
STA SRCH
|
||||
- LDA (SRC),Y
|
||||
STA $1000,Y
|
||||
INY
|
||||
BNE -
|
||||
;*
|
||||
;* LOOK FOR STARTUP FILE
|
||||
;*
|
||||
JSR PRODOS ; OPEN AUTORUN
|
||||
@ -133,18 +144,11 @@ ESP = DST+2
|
||||
JMP NOAUTO
|
||||
+ LDX READPARMS+6
|
||||
STX $0280
|
||||
NOAUTO JSR PRODOS
|
||||
JSR PRODOS
|
||||
!BYTE $CC
|
||||
!WORD CLOSEPARMS
|
||||
LDY #$00
|
||||
STY SRCL
|
||||
LDA #$D1
|
||||
STA SRCH
|
||||
- LDA (SRC),Y ; LOAD FIRST PAGE OF CMD INTO PLACE
|
||||
STA $1000,Y
|
||||
INY
|
||||
BNE -
|
||||
JMP CMDEXEC ; CALL CMD
|
||||
JMP CMDEXEC ; CALL CM
|
||||
NOAUTO JMP BYE
|
||||
AUTORUN !BYTE 7
|
||||
!TEXT "AUTORUN"
|
||||
OPENPARMS !BYTE 3
|
||||
@ -167,12 +171,10 @@ PAGE3 = *
|
||||
;*
|
||||
;* PAGE 3 VECTORS INTO INTERPRETER
|
||||
;*
|
||||
BIT LCRDEN+LCBNK2 ; $03D0 - INTERP ENTRY
|
||||
BIT LCRDEN+LCBNK2 ; $03D0 - DIRECT INTERP ENTRY
|
||||
JMP INTERP
|
||||
CALL3 BIT ROMEN
|
||||
CALLADR JSR $0000
|
||||
BIT LCRDEN+LCBNK2
|
||||
RTS
|
||||
BIT LCRDEN+LCBNK2 ; $03D6 - INDIRECT INTERP ENTRY
|
||||
JMP INTERPX
|
||||
}
|
||||
VMCORE = *
|
||||
!PSEUDOPC $D000 {
|
||||
@ -182,7 +184,7 @@ VMCORE = *
|
||||
OPTBL !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 LNOT,LOR,LAND,LA,LLA,CB,CW,SWAP ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROP,DUP,PUSH,PULL,BRLT,BRGT,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 BRNCH,IBRNCH,CALL,ICAL,ENTER,LEAVE,RET,NEXTOP ; 50 52 54 56 58 5A 5C 5E
|
||||
!WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E
|
||||
@ -193,7 +195,7 @@ OPTBL !WORD ZERO,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 00 02 04 06 08 0A 0C 0E
|
||||
OPXTBL !WORD ZEROX,ADDX,SUBX,MULX,DIVX,MODX,INCRX,DECRX ; 00 02 04 06 08 0A 0C 0E
|
||||
!WORD NEGX,COMPX,BANDX,IORX,XORX,SHLX,SHRX,IDXWX ; 10 12 14 16 18 1A 1C 1E
|
||||
!WORD LNOTX,LORX,LANDX,LAX,LLAX,CBX,CWX,SWAPX ; 20 22 24 26 28 2A 2C 2E
|
||||
!WORD DROPX,DUPX,PUSHX,PULLX,BRLTX,BRGTX,BREQX,BRNEX ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD DROPX,DUPX,PUSHX,PULLX,BRGTX,BRLTX,BREQX,BRNEX ; 30 32 34 36 38 3A 3C 3E
|
||||
!WORD ISEQX,ISNEX,ISGTX,ISLTX,ISGEX,ISLEX,BRFLSX,BRTRUX; 40 42 44 46 48 4A 4C 4E
|
||||
!WORD BRNCHX,IBRNCHX,CALLX,ICALX,ENTERX,LEAVEX,RETX,NEXTOPX; 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
|
||||
@ -205,14 +207,12 @@ OPXTBL !WORD ZEROX,ADDX,SUBX,MULX,DIVX,MODX,INCRX,DECRX ; 00 02 04 06 08 0
|
||||
;*
|
||||
;* CLEAR COMMAND LINE LENGTH BYTE IF CALLED FROM 'BYE'
|
||||
;*
|
||||
LDY DEFCMD
|
||||
BYE LDY DEFCMD
|
||||
STY $0280 ; SET DEFAULT COMMAND WHEN CALLED FROM 'BYE'
|
||||
- LDA DEFCMD,Y
|
||||
STA $0280,Y
|
||||
DEY
|
||||
BNE -
|
||||
LDX #$FE ; LEAVE ROOM FOR COMMAND LINE LENGTH BYTE
|
||||
TXS
|
||||
;*
|
||||
;* MOVE REST OF CMD FROM LANGUAGE CARD
|
||||
;*
|
||||
@ -256,13 +256,25 @@ START LDA #$00
|
||||
STA IFPL
|
||||
LDA #$BF
|
||||
STA IFPH
|
||||
LDX ESTKSZ/2
|
||||
LDX #$FF
|
||||
TXS
|
||||
LDX #ESTKSZ/2
|
||||
!SOURCE "cmdexec.a"
|
||||
}
|
||||
;*
|
||||
;* ENTER INTO BYTECODE INTERPRETER
|
||||
;*
|
||||
INTERP PLA
|
||||
INTERP STA LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
STA LCRWEN+LCBNK2
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
LDY #$01
|
||||
BNE FETCHOP
|
||||
INTERPX STA LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
STA LCRWEN+LCBNK2
|
||||
PLA
|
||||
STA TMPL
|
||||
PLA
|
||||
STA TMPH
|
||||
@ -287,7 +299,7 @@ DROP INX
|
||||
NEXTOP INY
|
||||
BEQ NEXTOPH
|
||||
FETCHOP LDA (IP),Y
|
||||
STA *+5
|
||||
STA *+4
|
||||
JMP (OPTBL)
|
||||
;*
|
||||
;* INTERP BYTECODE IN AUX MEM
|
||||
@ -302,9 +314,13 @@ FETCHOPX SEI
|
||||
STA ALTRDON
|
||||
LDA (IP),Y
|
||||
ORA #$80 ; SELECT OPX OPCODES
|
||||
STA *+5
|
||||
STA *+4
|
||||
JMP (OPXTBL)
|
||||
;*
|
||||
;* INDIRECT JUMP TO (TMP)
|
||||
;*
|
||||
JMPTMP JMP (TMP)
|
||||
;*
|
||||
;* ADD TOS TO TOS-1
|
||||
;*
|
||||
ADD LDA ESTKL,X
|
||||
@ -1592,8 +1608,7 @@ BRFLS INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
BNE NOBRNCH
|
||||
BRNCH STY IPY
|
||||
LDA IPH
|
||||
BRNCH LDA IPH
|
||||
STA TMPH
|
||||
LDA IPL
|
||||
+INC_IP
|
||||
@ -1606,8 +1621,9 @@ BRNCH STY IPY
|
||||
STA IPH
|
||||
LDA TMPL
|
||||
STA IPL
|
||||
LDY IPY
|
||||
JMP FETCHOP
|
||||
DEY
|
||||
DEY
|
||||
JMP NEXTOP
|
||||
BREQ INX
|
||||
LDA ESTKL-1,X
|
||||
CMP ESTKL,X
|
||||
@ -1646,7 +1662,7 @@ IBRNCH LDA IPL
|
||||
ADC ESTKH,X
|
||||
STA IPH
|
||||
INX
|
||||
JMP FETCHOP
|
||||
JMP NEXTOP
|
||||
;
|
||||
BRTRUX INX
|
||||
LDA ESTKH-1,X
|
||||
@ -1659,8 +1675,7 @@ BRFLSX INX
|
||||
LDA ESTKH-1,X
|
||||
ORA ESTKL-1,X
|
||||
BNE NOBRNCHX
|
||||
BRNCHX STY IPY
|
||||
LDA IPH
|
||||
BRNCHX LDA IPH
|
||||
STA TMPH
|
||||
LDA IPL
|
||||
+INC_IP
|
||||
@ -1673,8 +1688,9 @@ BRNCHX STY IPY
|
||||
STA IPH
|
||||
LDA TMPL
|
||||
STA IPL
|
||||
LDY IPY
|
||||
JMP FETCHOPX
|
||||
DEY
|
||||
DEY
|
||||
JMP NEXTOPX
|
||||
BREQX INX
|
||||
LDA ESTKL-1,X
|
||||
CMP ESTKL,X
|
||||
@ -1713,29 +1729,31 @@ IBRNCHX LDA IPL
|
||||
ADC ESTKH,X
|
||||
STA IPH
|
||||
INX
|
||||
JMP FETCHOPX
|
||||
JMP NEXTOPX
|
||||
;*
|
||||
;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE)
|
||||
;*
|
||||
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
|
||||
JSR CALL3
|
||||
JSR JMPTMP
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
STA LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
STA LCRWEN+LCBNK2
|
||||
JMP NEXTOP
|
||||
;
|
||||
CALLX +INC_IP
|
||||
@ -1744,9 +1762,9 @@ CALLX +INC_IP
|
||||
+INC_IP
|
||||
LDA (IP),Y
|
||||
STA ALTRDOFF
|
||||
STA CALLADR+2
|
||||
STA TMPH
|
||||
PLA
|
||||
STA CALLADR+1
|
||||
STA TMPL
|
||||
LDA IPH
|
||||
PHA
|
||||
LDA IPL
|
||||
@ -1754,13 +1772,15 @@ CALLX +INC_IP
|
||||
TYA
|
||||
PHA
|
||||
CLI
|
||||
JSR CALL3
|
||||
JSR JMPTMP
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
STA LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
STA LCRWEN+LCBNK2
|
||||
JMP NEXTOPX
|
||||
;*
|
||||
;* INDIRECT CALL TO ADDRESS (NATIVE CODE)
|
||||
@ -1778,18 +1798,22 @@ ICAL LDA ESTKL,X
|
||||
PHA
|
||||
LDY #$00
|
||||
LDA (TMP),Y
|
||||
STA CALLADR+1
|
||||
PHA
|
||||
INY
|
||||
LDA (TMP),Y
|
||||
STA CALLADR+2
|
||||
STA TMPH
|
||||
PLA
|
||||
STA TMPL
|
||||
CLI
|
||||
JSR CALL3
|
||||
JSR JMPTMP
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
STA LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
STA LCRWEN+LCBNK2
|
||||
JMP NEXTOP
|
||||
;
|
||||
ICALX LDA ESTKL,X
|
||||
@ -1806,18 +1830,22 @@ ICALX LDA ESTKL,X
|
||||
STA ALTRDOFF
|
||||
LDY #$00
|
||||
LDA (TMP),Y
|
||||
STA CALLADR+1
|
||||
PHA
|
||||
INY
|
||||
LDA (TMP),Y
|
||||
STA CALLADR+2
|
||||
STA TMPH
|
||||
PLA
|
||||
STA TMPL
|
||||
CLI
|
||||
JSR CALL3
|
||||
JSR JMPTMP
|
||||
PLA
|
||||
TAY
|
||||
PLA
|
||||
STA IPL
|
||||
PLA
|
||||
STA IPH
|
||||
STA LCRWEN+LCBNK2 ; WRITE ENABLE LANGUAGE CARD
|
||||
STA LCRWEN+LCBNK2
|
||||
JMP NEXTOPX
|
||||
;*
|
||||
;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT
|
||||
|
Loading…
x
Reference in New Issue
Block a user