ack/mach/6500/cg/table
1987-02-10 17:18:16 +00:00

2298 lines
33 KiB
Plaintext

"$Header$"
#define em_bsize 2 /* must be equal to EM_BSIZE */
#define ND !defined($1)
#define D defined($1)
#define BASE 240
#define MIN (0-BASE)
#define MAX (254-em_bsize-BASE)
#define IN(x) (x>=MIN && x<=MAX)
#define IND(x) (x>=MIN && x<=(MAX-2))
/*****************************************************\
**** ****
**** 6 5 0 0 B A C K E N D T A B L E ****
**** ****
\*****************************************************/
/*
* INTEGER SIZE: 16 bits
* POINTER SIZE: 16 bits
* NO FLOATS
*/
EM_WSIZE = 2
EM_PSIZE = 2
EM_BSIZE = 2
/*********************\
* R E G I S T E R S *
\*********************/
REGISTERS:
AA = ("a",1), REG.
XX = ("x",1), REG.
AX = ("<dummy>",2,AA,XX), R16.
/* AX is a registerpair, A contains the highbyte of a word and
* X contains the lowbyte
*/
/***************\
* T O K E N S *
\***************/
TOKENS:
IMMEDIATE = {INT off;} 1 "#%[off]" /* a fake token the
* cgg needs one
*/
/***********************************\
* T O K E N E X P R E S S I O N S *
\***********************************/
TOKENEXPRESSIONS:
AAA = IMMEDIATE /* a fake tokenexpression
* the cgg needs one
*/
/***********\
* C O D E *
\***********/
CODE:
/* GROUP 1 - LOAD */
loc ($1%256)==($1/256) | |
allocate(R16)
"lda #[$1].l"
"tax"
| %[a] | |
loc | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
| %[a] | |
ldc highw(1)==loww(1) && (loww(1)%256)==(loww(1)/256) | |
allocate(R16)
"lda #[%(loww(1)%)].l"
"tax"
"jsr Push"
| %[a] | |
ldc | |
allocate(R16)
"lda #[%(highw(1)%)].h"
"ldx #[%(highw(1)%)].l"
"jsr Push"
"lda #[%(loww(1)%)].h"
"ldx #[%(loww(1)%)].l"
| %[a] | |
lol IN($1) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"tax"
"iny"
"lda (LBl),y"
| %[a] | |
lol | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Lol"
| %[a] | |
loe | |
allocate(R16)
"lda $1+1"
"ldx $1"
| %[a] | |
lil IN($1) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"tax"
"iny"
"lda (LBl),y"
"jsr Loi"
| %[a] | |
lil | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Lol"
"jsr Loi"
| %[a] | |
lof $1==0 | R16 |
"jsr Loi"
| %[1] | |
lof | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Adi2"
"jsr Loi"
| %[a] | |
lal | |
allocate(R16)
"clc"
"lda #[$1].l"
"adc LB"
"tax"
"lda #[$1].h"
"adc LB+1"
| %[a] | |
lae | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
| %[a] | |
lxl $1==0 | |
allocate(R16)
"lda LB+1"
"ldx LB"
| %[a] | |
lxl $1<=255 | | /* n restricted to a max of 255 */
allocate(R16)
"ldx #[$1].l"
"jsr Lxl"
| %[a] | |
lxa $1==0 | |
allocate(R16)
"jsr Lxa1"
| %[a] | |
lxa $1<=255 | | /* n restricted to a max of 255 */
allocate(R16)
"ldx #[$1].l"
"jsr Lxa2"
| %[a] | |
loi $1==1 | R16 |
"jsr Loi1"
| %[1] | |
loi $1==2 | R16 |
"jsr Loi"
| %[1] | |
loi $1==4 | R16 |
"jsr Ldi"
| | |
loi D | R16 |
"ldy #[$1].h"
"sty NBYTES+1"
"ldy #[$1].l"
"jsr Loil"
| | |
los $1==2 | R16 |
"jsr Los"
| | |
ldl IND($1) | |
allocate(R16)
"ldy #BASE+$1+3"
"lda (LBl),y"
"pha"
"dey"
"lda (LBl),y"
"tax"
"pla"
"jsr Push"
"dey"
"lda (LBl),y"
"pha"
"dey"
"lda (LBl),y"
"tax"
"pla"
| %[a] | |
ldl | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Locaddr"
"jsr Ldo"
| | |
lde | |
allocate(R16)
"lda $1+3"
"ldx $1+2"
"jsr Push"
"lda $1+1"
"ldx $1"
| %[a] | |
ldf $1==0 | R16 |
"jsr Ldi"
| | |
ldf | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Adi2"
"jsr Ldi"
| | |
lpi | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
| %[a] | |
/* GROUP 2 - STORE */
stl IN($1) | R16 |
"ldy #BASE+1+$1"
"sta (LBl),y"
"txa"
"dey"
"sta (LBl),y"
| | |
stl | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Stl"
| | |
ste | R16 |
"sta $1+1"
"stx $1"
| | |
sil IN($1) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"tax"
"iny"
"lda (LBl),y"
"jsr Sti"
| | |
sil | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Lol"
"jsr Sti"
| | |
stf $1==0 | R16 |
"jsr Sti"
| | |
stf | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Adi2"
"jsr Sti"
| | |
sti $1==1 | R16 |
"jsr Sti1"
| | |
sti $1==2 | R16 |
"jsr Sti"
| | |
sti $1==4 | R16 |
"jsr Sdi"
| | |
sti D | R16 |
"ldy #[$1].h"
"sty NBYTES+1"
"ldy #[$1].l"
"jsr Stil"
| | |
sts $1==2 | R16 |
"jsr Sts"
| | |
sdl IND($1) | R16 |
"ldy #BASE+$1"
"pha"
"txa"
"sta (LBl),y"
"iny"
"pla"
"sta (LBl),y"
"jsr Pop"
"iny"
"pha"
"txa"
"sta (LBl),y"
"iny"
"pla"
"sta (LBl),y"
| | |
sdl | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Locaddr"
"jsr Sdo"
| | |
sde | R16 |
"sta $1+1"
"stx $1"
"jsr Pop"
"sta $1+3"
"stx $1+2"
| | |
sdf $1==0 | R16 |
"jsr Sdi"
| | |
sdf | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Adi2"
"jsr Sdi"
| | |
/* GROUP 3 - INTEGER ARITHMETIC */
loc lol adi (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"clc"
"lda #[$1].l"
"adc (LBl),y"
"tax"
"iny"
"lda #[$1].h"
"adc (LBl),y"
| %[a] | |
lol loc adi | | | | loc $2 lol $1 adi $3 |
lol lol adi (IN($1) && IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$1+1"
"lda (LBl),y"
"pha"
"dey"
"lda (LBl),y"
"ldy #BASE+$2"
"clc"
"adc (LBl),y"
"tax"
"iny"
"pla"
"adc (LBl),y"
| %[a] | |
lol loe adi (IN($1) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"clc"
"lda (LBl),y"
"adc $2"
"tax"
"iny"
"lda (LBl),y"
"adc $2+1"
| %[a] | |
loe lol adi | | | | lol $2 loe $1 adi $3 |
loe loe adi $3==2 | |
allocate(R16)
"clc"
"lda $1"
"adc $2"
"tax"
"lda $1+1"
"adc $2+1"
| %[a] | |
loc loe adi $3==2 | |
allocate(R16)
"clc"
"lda #[$1].l"
"adc $2"
"tax"
"lda #[$1].h"
"adc $2+1"
| %[a] | |
loe loc adi | | | | loc $2 loe $1 adi $3 |
ldl adi IND($1) && $2==2 | |
allocate(R16)
"ldy #BASE+$1"
"clc"
"lda (LBl),y"
"iny"
"iny"
"adc (LBl),y"
"tax"
"dey"
"lda (LBl),y"
"iny"
"iny"
"adc (LBl),y"
| %[a] | |
lde adi $2==2 | |
allocate(R16)
"clc"
"lda $1"
"adc $1+2"
"tax"
"lda $1+1"
"adc $1+3"
| %[a] | |
loc adi $2==2 | R16 |
"pha"
"txa"
"clc"
"adc #[$1].l"
"tax"
"pla"
"adc #[$1].h"
| %[1] | |
lol adi IN($1) && $2==2 | R16 |
"pha"
"ldy #BASE+$1"
"clc"
"txa"
"adc (LBl),y"
"tax"
"iny"
"pla"
"adc (LBl),y"
| %[1] | |
loe adi $2==2 | R16 |
"pha"
"clc"
"txa"
"adc $1"
"tax"
"pla"
"adc $1+1"
| %[1] | |
lol lol adi IN($1) && !IN($2) && $3==2
| | | | lol $2 lol $1 adi $3 |
adi $1==2 | R16 |
"jsr Adi2"
| %[1] | |
adi $1==4 | |
allocate(R16)
"jsr Adi4"
| | |
adi ND | R16 |
"jsr Test2"
"jsr Adi2"
| %[1] | |
loc lol sbi (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"sec"
"lda #[$1].l"
"sbc (LBl),y"
"tax"
"iny"
"lda #[$1].h"
"sbc (LBl),y"
| %[a] | |
lol loc sbi | | | | lol $1 loc 0-$2 adi $3 |
lol lol sbi (IN($1) && IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$1+1"
"lda (LBl),y"
"pha"
"dey"
"lda (LBl),y"
"ldy #BASE+$2"
"sec"
"sbc (LBl),y"
"tax"
"iny"
"pla"
"sbc (LBl),y"
| %[a] | |
lol loe sbi (IN($1) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"sec"
"lda (LBl),y"
"sbc $2"
"tax"
"iny"
"lda (LBl),y"
"sbc $2+1"
| %[a] | |
loe lol sbi (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"sec"
"lda $2"
"sbc (LBl),y"
"tax"
"iny"
"lda $2+1"
"sbc (LBl),y"
| %[a] | |
loe loe sbi $3==2 | |
allocate(R16)
"sec"
"lda $1"
"sbc $2"
"tax"
"lda $1+1"
"sbc $2+1"
| %[a] | |
loc loe sbi $3==2 | |
allocate(R16)
"sec"
"lda #[$1].l"
"sbc $2"
"tax"
"lda #[$1].h"
"sbc $2+1"
| %[a] | |
loe loc sbi | | | | loe $1 loc 0-$2 adi $3 |
ldl sbi IND($1) && $2==2 | |
allocate(R16)
"ldy #BASE+$1+2"
"sec"
"lda (LBl),y"
"dey"
"dey"
"sbc (LBl),y"
"tax"
"ldy #BASE+$1+3"
"lda (LBl),y"
"dey"
"dey"
"sbc (LBl),y"
| %[a] | |
lde sbi $2==2 | |
allocate(R16)
"sec"
"lda $1+2"
"sbc $1"
"tax"
"lda $1+3"
"sbc $1"
| %[a] | |
loc sbi $2==2 | R16 |
"pha"
"txa"
"sec"
"sbc #[$1].l"
"tax"
"pla"
"sbc #[$1].h"
| %[1] | |
lol sbi IN($1) && $2==2 | R16 |
"pha"
"ldy #BASE+$1"
"sec"
"txa"
"sbc (LBl),y"
"tax"
"iny"
"pla"
"sbc #[$1].h"
| %[1] | |
loe sbi $2==2 | R16 |
"pha"
"sec"
"txa"
"sbc $1"
"tax"
"pla"
"sbc $1+1"
| %[1] | |
sbi $1==2 | R16 |
"jsr Sbi2"
| %[1] | |
sbi $1==4 | |
allocate(R16)
"jsr Sbi4"
| | |
sbi ND | R16 |
"jsr Test2"
"jsr Sbi2"
| %[1] | |
loc lol mli (IN($2) && $3==2) | |
allocate(R16)
"lda #[$1].l"
"sta ARTH"
"lda #[$1].h"
"sta ARTH+1"
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
lol loc mli | | | | loc $2 lol $1 mli $3 |
lol lol mli (IN($1) && IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
lol loe mli (IN($1) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
loe lol mli (IN($2) && $3==2) | | | | lol $2 loe $1 mli $3 |
loe loe mli $3==2 | |
allocate(R16)
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
loc loe mli $3==2 | |
allocate(R16)
"lda #[$1].l"
"sta ARTH"
"lda #[$1].h"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
loe loc mli | | | | loc $2 loe $1 mli $3 |
ldl mli IND($1) && $2==2 | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"iny"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
lde mli $2==2 | |
allocate(R16)
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"lda $1+2"
"sta ARTH+2"
"lda $1+3"
"sta ARTH+3"
"jsr Mlinp"
| %[a] | |
loc mli $2==2 | R16 |
"stx ARTH"
"sta ARTH+1"
"lda #[$1].l"
"sta ARTH+2"
"lda #[$1].h"
"sta ARTH+3"
"jsr Mlinp"
| %[1] | |
lol mli IN($1) && $2==2 | R16 |
"stx ARTH"
"sta ARTH+1"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"jsr Mlinp"
| %[1] | |
loe mli $2==2 | R16 |
"stx ARTH"
"sta ARTH+1"
"lda $1"
"sta ARTH+2"
"lda $1+1"
"sta ARTH+3"
"jsr Mlinp"
| %[1] | |
lol lol mli IN($1) && !IN($2) && $3==2
| | | | lol $2 lol $1 mli $3 |
mli $1==2 | R16 |
"jsr Mli2"
| %[1] | |
mli $1==4 | |
allocate(R16)
"jsr Mli4"
| | |
mli ND | R16 |
"jsr Test2"
"jsr Mli2"
| %[1] | |
loc lol dvi (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"lda #[$1].l"
"sta ARTH+2"
"lda #[$1].h"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
lol loc dvi (IN($1) && $3==2) | |
allocate(R16)
"lda #[$2].l"
"sta ARTH"
"lda #[$2].h"
"sta ARTH+1"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
lol lol dvi (IN($1) && IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
lol loe dvi (IN($1) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"lda $2"
"sta ARTH"
"lda $2+1"
"sta ARTH+1"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
loe lol dvi (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
loe loe dvi $3==2 | |
allocate(R16)
"lda $2"
"sta ARTH"
"lda $2+1"
"sta ARTH+1"
"lda $1"
"sta ARTH+2"
"lda $1+1"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
loc loe dvi $3==2 | |
allocate(R16)
"lda #[$1].l"
"sta ARTH+2"
"lda #[$1].h"
"sta ARTH+3"
"lda $2"
"sta ARTH"
"lda $2+1"
"sta ARTH+1"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
loe loc dvi $3==2 | |
allocate(R16)
"lda #[$2].l"
"sta ARTH"
"lda #[$2].h"
"sta ARTH+1"
"lda $1"
"sta ARTH+2"
"lda $1+1"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
ldl dvi IND($1) && $2==2 | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"iny"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
lde dvi $2==2 | |
allocate(R16)
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"lda $1+2"
"sta ARTH+2"
"lda $1+3"
"sta ARTH+3"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[a] | |
loc dvi $2==2 | R16 |
"stx ARTH+2"
"sta ARTH+3"
"lda #[$1].l"
"sta ARTH"
"lda #[$1].h"
"sta ARTH+1"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[1] | |
lol dvi IN($1) && $2==2 | R16 |
"stx ARTH+2"
"sta ARTH+3"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[1] | |
loe dvi $2==2 | R16 |
"stx ARTH+2"
"sta ARTH+3"
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"ldy #1"
"sty UNSIGN"
"jsr Div"
| %[1] | |
dvi $1==2 | R16 |
"jsr Dvi2"
| %[1] | |
dvi $1==4 | |
allocate(R16)
"jsr Dvi4"
| | |
dvi ND | R16 |
"jsr Test2"
"jsr Dvi2"
| %[1] | |
rmi $1==2 | R16 |
"jsr Rmi2"
| %[1] | |
rmi $1==4 | |
allocate(R16)
"jsr Rmi4"
| | |
rmi ND | R16 |
"jsr Test2"
"jsr Rmi2"
| %[1] | |
ngi $1==2 | R16 |
"jsr Ngi2"
| %[1] | |
ngi $1==4 | |
allocate(R16)
"lda SP+1"
"ldx SP+2"
"jsr Ngi4"
| | |
ngi ND | R16 |
"jsr Test2"
"jsr Ngi2"
| %[1] | |
sli $1==2 | R16 |
"jsr Sli2"
| %[1] | |
sli $1==4 | R16 |
"jsr Sli4"
| | |
sli ND | R16 |
"jsr Test2"
"jsr Sli2"
| %[1] | |
sri $1==2 | R16 |
"jsr Sri2"
| %[1] | |
sri $1==4 | R16 |
"jsr Sri4"
| | |
sri ND | R16 |
"jsr Test2"
"jsr Sri2"
| %[1] | |
/* GROUP 4 - UNSIGNED ARITHMETIC */
loc lol adu | | | | loc $1 lol $2 adi $3 |
lol loc adu | | | | lol $1 loc $2 adi $3 |
lol lol adu | | | | lol $1 lol $2 adi $3 |
lol loe adu | | | | lol $1 loe $2 adi $3 |
loe lol adu | | | | loe $1 lol $2 adi $3 |
loe loe adu | | | | loe $1 loe $2 adi $3 |
loc loe adu | | | | loc $1 loe $2 adi $3 |
loe loc adu | | | | loe $1 loc $2 adi $3 |
ldl adu | | | | ldl $1 adi $2 |
lde adu | | | | lde $1 adi $2 |
loc adu | | | | loc $1 adi $2 |
lol adu | | | | lol $1 adi $2 |
loe adu | | | | loe $1 adi $2 |
adu | | | | adi $1 |
loc lol sbu | | | | loc $1 lol $2 sbi $3 |
lol loc sbu | | | | lol $1 loc $2 sbi $3 |
lol lol sbu | | | | lol $1 lol $2 sbi $3 |
lol loe sbu | | | | lol $1 loe $2 sbi $3 |
loe lol sbu | | | | loe $1 lol $2 sbi $3 |
loe loe sbu | | | | loe $1 loe $2 sbi $3 |
loc loe sbu | | | | loc $1 loe $2 sbi $3 |
loe loc sbu | | | | loe $1 loc $2 sbi $3 |
ldl sbu | | | | ldl $1 sbi $2 |
lde sbu | | | | lde $1 sbi $2 |
loc sbu | | | | loc $1 sbi $2 |
lol sbu | | | | lol $1 sbi $2 |
loe sbu | | | | loe $1 sbi $2 |
sbu | | | | sbi $1 |
loc lol mlu (IN($2) && $3==2) | |
allocate(R16)
"lda #[$1].l"
"sta ARTH"
"lda #[$1].h"
"sta ARTH+1"
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
lol loc mlu | | | | loc $2 lol $1 mlu $3 |
lol lol mlu (IN($1) && IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
lol loe mlu (IN($1) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
loe lol mlu (IN($2) && $3==2) | | | | lol $2 loe $1 mlu $3 |
loe loe mlu $3==2 | |
allocate(R16)
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
loc loe mlu $3==2 | |
allocate(R16)
"lda #[$1].l"
"sta ARTH"
"lda #[$1].h"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
loe loc mlu | | | | loc $2 loe $1 mlu $3 |
ldl mlu IND($1) && $2==2 | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"iny"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
lde mlu $2==2 | |
allocate(R16)
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"lda $1+2"
"sta ARTH+2"
"lda $1+3"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[a] | |
loc mlu $2==2 | R16 |
"stx ARTH"
"sta ARTH+1"
"lda #[$1].l"
"sta ARTH+2"
"lda #[$1].h"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[1] | |
lol mlu IN($1) && $2==2 | R16 |
"stx ARTH"
"sta ARTH+1"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[1] | |
loe mlu $2==2 | R16 |
"stx ARTH"
"sta ARTH+1"
"lda $1"
"sta ARTH+2"
"lda $1+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Mul"
| %[1] | |
lol lol mlu IN($1) && !IN($2) && $3==2
| | | | lol $2 lol $1 mlu $3 |
mlu $1==2 | R16 |
"jsr Mlu2"
| %[1] | |
mlu $1==4 | |
allocate(R16)
"jsr Mlu4"
| | |
mlu ND | R16 |
"jsr Test2"
"jsr Mlu2"
| %[1] | |
loc lol dvu (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"lda #[$1].l"
"sta ARTH+2"
"lda #[$1].h"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
lol loc dvu (IN($1) && $3==2) | |
allocate(R16)
"lda #[$2].l"
"sta ARTH"
"lda #[$2].h"
"sta ARTH+1"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
lol lol dvu (IN($1) && IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
lol loe dvu (IN($1) && $3==2) | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"lda $2"
"sta ARTH"
"lda $2+1"
"sta ARTH+1"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
loe lol dvu (IN($2) && $3==2) | |
allocate(R16)
"ldy #BASE+$2"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"lda $2"
"sta ARTH+2"
"lda $2+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
loe loe dvu $3==2 | |
allocate(R16)
"lda $2"
"sta ARTH"
"lda $2+1"
"sta ARTH+1"
"lda $1"
"sta ARTH+2"
"lda $1+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
loc loe dvu $3==2 | |
allocate(R16)
"lda #[$1].l"
"sta ARTH+2"
"lda #[$1].h"
"sta ARTH+3"
"lda $2"
"sta ARTH"
"lda $2+1"
"sta ARTH+1"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
loe loc dvu $3==2 | |
allocate(R16)
"lda #[$2].l"
"sta ARTH"
"lda #[$2].h"
"sta ARTH+1"
"lda $1"
"sta ARTH+2"
"lda $1+1"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
ldl dvu IND($1) && $2==2 | |
allocate(R16)
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"iny"
"lda (LBl),y"
"sta ARTH+2"
"iny"
"lda (LBl),y"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
lde dvu $2==2 | |
allocate(R16)
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"lda $1+2"
"sta ARTH+2"
"lda $1+3"
"sta ARTH+3"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[a] | |
loc dvu $2==2 | R16 |
"stx ARTH+2"
"sta ARTH+3"
"lda #[$1].l"
"sta ARTH"
"lda #[$1].h"
"sta ARTH+1"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[1] | |
lol dvu IN($1) && $2==2 | R16 |
"stx ARTH+2"
"sta ARTH+3"
"ldy #BASE+$1"
"lda (LBl),y"
"sta ARTH"
"iny"
"lda (LBl),y"
"sta ARTH+1"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[1] | |
loe dvu $2==2 | R16 |
"stx ARTH+2"
"sta ARTH+3"
"lda $1"
"sta ARTH"
"lda $1+1"
"sta ARTH+1"
"ldy #0"
"sty UNSIGN"
"jsr Duv"
| %[1] | |
dvu $1==2 | R16 |
"jsr Dvu2"
| %[1] | |
dvu $1==4 | |
allocate(R16)
"jsr Dvu4"
| | |
dvu ND | R16 |
"jsr Test2"
"jsr Dvu2"
| %[1] | |
rmu $1==2 | R16 |
"jsr Rmu2"
| %[1] | |
rmu $1==4 | |
allocate(R16)
"jsr Rmu4"
| | |
slu | | | | sli $1 |
sru $1==2 | R16 |
"jsr Sru2"
| %[1] | |
sru $1==4 | R16 |
"jsr Sru4"
| | |
sru ND | R16 |
"jsr Test2"
"jsr Sru2"
| %[1] | |
/* GROUP 6 - POINTER ARITHMETIC */
adp $1==0 | | | | |
adp | | | | loc $1 adi 2 |
ads $1==2 | R16 |
"jsr Adi2"
| %[1] | |
ads ND | R16 |
"jsr Test2"
"jsr Adi2"
| %[1] | |
sbs $1==2 | R16 |
"jsr Sbi2"
| %[1] | |
sbs ND | R16 |
"jsr Test2"
"jsr Sbi2"
| %[1] | |
/* GROUP 7 INCREMENT/DECREMENT/ZERO */
inc | R16 |
"inx"
"bne 1f"
"clc"
"adc #1\n1:"
| %[1] | |
inl IN($1) | |
allocate(R16)
"ldy #BASE+$1"
"clc"
"lda (LBl),y"
"adc #1"
"sta (LBl),y"
"bcc 1f"
"iny"
"lda (LBl),y"
"adc #0"
"sta (LBl),y\n1:"
| | |
inl D | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Lol"
"inx"
"bne 1f"
"clc"
"adc #1"
"1: jsr Stii"
| | |
ine | |
"inc $1"
"bne 1f"
"inc $1+1\n1:"
| | |
dec | R16 |
"cpx #0"
"bne 1f"
"sec"
"sbc #1"
"1: dex"
| %[1] | |
del IN($1) | |
allocate(R16)
"ldy #BASE+$1"
"sec"
"lda (LBl),y"
"sbc #1"
"sta (LBl),y"
"bcs 1f"
"iny"
"lda (LBl),y"
"sbc #0"
"sta (LBl),y\n1:"
| | |
del | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Lol"
"cpx #0"
"bne 1f"
"sec"
"sbc #1"
"1: dex"
"jsr Stii"
| | |
dee | |
"ldy $1"
"bne 1f"
"dec $1+1"
"1: dey"
"sty $1"
| | |
zrl IN($1) | |
allocate(R16)
"ldy #BASE+$1"
"lda #0"
"sta (LBl),y"
"iny"
"sta (LBl),y"
| | |
zrl | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Zrl"
| | |
zre | |
"ldy #0"
"sty $1"
"sty $1+1"
| | |
zer $1==2 | |
allocate(R16)
"lda #0"
"tax"
| %[a] | |
zer $1==4 | |
allocate(R16)
"lda #0"
"tax"
"jsr Push"
| %[a] | |
zer $1>0 && $1<=256 | |
allocate(R16)
"ldy #$1-1"
"jsr Zer"
| | |
/* GROUP 8 - CONVERT (stack: source, source size, dest. size (top)) */
loc loc cii $1==1 && $2==2 | R16 |
"txa"
"bpl 1f"
"lda #0FFh"
"bne 2f"
"1: lda #0\n2:"
| %[1] | |
cii | R16 |
"jsr Cii"
| | |
cui | | | | cii |
ciu | | | | cii |
cuu | | | | cii |
loc loc cui $1==$2 | | | | |
loc loc ciu $1==$2 | | | | |
loc loc cuu $1==2 && $2==4 | | | | loc 0 |
/* GROUP 9 - LOGICAL */
and $1==2 | R16 |
"sta ARTH+1"
"stx ARTH"
"jsr Pop"
"and ARTH+1"
"pha"
"txa"
"and ARTH"
"tax"
"pla"
| %[1] | |
and $1<=254 | |
allocate(R16)
"ldy #[$1].l"
"jsr And"
| | |
and ND | R16 |
"jsr TestFFh"
"jsr Pop"
"iny"
"jsr And"
| | |
ior $1==2 | R16 |
"sta ARTH+1"
"stx ARTH"
"jsr Pop"
"ora ARTH+1"
"pha"
"txa"
"ora ARTH"
"tax"
"pla"
| %[1] | |
ior $1<=254 | |
allocate(R16)
"ldy #[$1].l"
"jsr Ior"
| | |
ior ND | R16 |
"jsr TestFFh"
"jsr Pop"
"iny"
"jsr Ior"
| | |
xor $1==2 | R16 |
"sta ARTH+1"
"stx ARTH"
"jsr Pop"
"eor ARTH+1"
"pha"
"txa"
"eor ARTH"
"tax"
"pla"
| %[1] | |
xor $1<=254 | |
allocate(R16)
"ldy #[$1].l"
"jsr Xor"
| | |
xor ND | R16 |
"jsr TestFFh"
"jsr Pop"
"iny"
"jsr Xor"
| | |
com $1==2 | R16 |
"eor #0FFh"
"pha"
"txa"
"eor #0FFh"
"tax"
"pla"
| %[1] | |
com $1<=254 | |
allocate(R16)
"ldy #[$1].l"
"jsr Com"
| | |
com ND | R16 |
"jsr TestFFh"
"jsr Pop"
"iny"
"jsr Com"
| | |
rol $1==2 | R16 |
"jsr Rol"
| %[1] | |
rol $1==4 | R16 |
"jsr Rol4"
| | |
rol ND | R16 |
"jsr Test2"
"jsr Rolw"
| %[1] | |
ror $1==2 | R16 |
"jsr Ror"
| %[1] | |
ror $1==4 | R16 |
"jsr Ror4"
| | |
ror ND | R16 |
"jsr Test2"
"jsr Rorw"
| %[1] | |
/* GROUP 10 - SETS */
loc inn $1<0 && $2==2 | R16 |
"lda #0"
"tax"
| %[1] | |
loc inn $2==2 && $1==0 | R16 |
"txa"
"and #1"
"tax"
"lda #0"
| %[1] | |
loc inn $2==2 && $1>0 && $1<16 | R16 |
"ldy #$1"
"stx ARTH"
"1: lsr a"
"ror ARTH"
"dey"
"bne 1b"
"lda ARTH"
"and #1"
"tax"
"lda #0"
| %[1] | |
loc inn zeq $1>0 && $1<16 && $2==2 | R16 |
"ldy #$1+1"
"stx ARTH"
"1: lsr a"
"ror ARTH"
"dey"
"bne 1b"
"bcc $1"
| | |
loc inn zne $1>0 && $1<16 && $2==2 | R16 |
"ldy #$1+1"
"stx ARTH"
"1: lsr a"
"ror ARTH"
"dey"
"bne 1b"
"bcs $1"
| | |
inn $1==2 | R16 |
"txa"
"tay"
"jsr Pop"
"stx ARTH"
"1: lsr a"
"ror ARTH"
"dey"
"bne 1b"
"lda ARTH"
"and #1"
"tax"
"lda #0"
| %[1] | |
inn zeq $1==2 | R16 |
"txa"
"tay"
"jsr Pop"
"stx ARTH"
"1: lsr a"
"ror ARTH"
"dey"
"bpl 1b"
"lda ARTH"
"bcc $2"
| %[1] | |
inn zne $1==2 | R16 |
"txa"
"tay"
"jsr Pop"
"stx ARTH"
"1: lsr a"
"ror ARTH"
"dey"
"bpl 1b"
"bcs $2"
| %[1] | |
inn $1<=256 | R16 |
"ldy #$1-1"
"jsr Inn"
| %[1] | |
inn ND | R16 |
"jsr TestFFh"
"jsr Pop"
"jsr Inn"
| %[1] | |
loc set $2==2 && $1>=0 && $1<16 | |
allocate(R16)
"ldy #$1"
"lda #0"
"sta ARTH"
"sec"
"1: rol ARTH"
"rol a"
"dey"
"bpl 1b"
"ldx ARTH"
| %[a] | |
set $1==2 | R16 |
"txa"
"tay"
"lda #0"
"sta ARTH"
"sec"
"1: rol ARTH"
"rol a"
"bpl 1b"
"ldx ARTH"
| %[1] | |
set $1<=256 | R16 |
"ldy #$1-1"
"jsr Set"
| | |
set ND | R16 |
"jsr TestFFh"
"jsr Pop"
"jsr Set"
| | |
/* GROUP 11 - ARRAY */
lae lar defined(rom(1,3)) | | | | lae $1 aar $2 loi rom(1,3) |
lar $1==2 | R16 |
"jsr Lar"
| | |
lar ND | R16 |
"jsr Test2"
"jsr Lar"
| | |
lae sar defined(rom(1,3)) | | | | lae $1 aar $2 sti rom(1,3) |
sar $1==2 | R16 |
"jsr Sar"
| | |
sar ND | R16 |
"jsr Test2"
"jsr Sar"
| | |
lae aar $2==2 && rom(1,3)==1 && rom(1,1)==0 | | | | adi 2 |
lae aar $2==2 && rom(1,3)==1 && rom(1,1)!=0 | |
| | adi 2 adp 0-rom(1,1) |
lae aar $2==2 && rom(1,3)==2 && rom(1,1)==0 | R16 |
"pha"
"txa"
"asl a"
"tax"
"pla"
"rol a"
| %[1] | adi 2 |
lae aar $2==2 && rom(1,3)==2 && rom(1,1)!=0 | R16 |
"pha"
"txa"
"asl a"
"tax"
"pla"
"rol a"
| %[1] | adi 2 adp (0-rom(1,1))*2 |
lae aar $2==2 && rom(1,3)>2 && rom(1,1)==0 | |
| | loc rom(1,3) mli 2 adi 2 |
lae aar $2==2 && rom(1,3)>2 && rom(1,1)!=0 | |
| | loc rom(1,3) mli 2 adi 2 adp (0-rom(1,1))*rom(1,3) |
aar $1==2 | R16 |
"jsr Aar"
| %[1] | |
aar ND | R16 |
"jsr Test2"
"jsr Aar"
| %[1] | |
/* GROUP 12 - COMPARE */
cmi $1==2 | R16 |
"jsr Cmi"
| %[1] | |
cmi $1==4 | |
allocate(R16)
"jsr Cmi4"
| %[a] | |
cmi ND | R16 |
"jsr Test2"
"jsr Cmi"
| %[1] | |
cmu $1==2 | R16 |
"jsr Cmu2"
| %[1] | |
cmu $1==4 | |
allocate(R16)
"jsr Cmu4"
| %[a] | |
cmu ND | R16 |
"jsr Test2"
"jsr Cmu"
| | |
cmp | |
| | cmu 2 |
cms $1==2 | |
allocate(R16)
"ldy #2"
"jsr Cms"
| %[a] | |
cms $1==4 | |
allocate(R16)
"ldy #4"
"jsr Cms"
| %[a] | |
cms ND | R16 |
"jsr TestFFh"
"iny"
"jsr Cms"
| %[1] | |
tlt | R16 |
"jsr Tlt"
| %[1] | |
tle | R16 |
"jsr Tle"
| %[1] | |
teq | R16 |
"jsr Teq"
| %[1] | |
tne | R16 |
"jsr Tne"
| %[1] | |
tge | R16 |
"jsr Tge"
| %[1] | |
tgt | R16 |
"jsr Tgt"
| %[1] | |
/* GROUP 13 - BRANCH */
bra | |
remove(ALL)
"jmp $1"
| | |
blt | R16 |
"jsr Sbi2"
"bmi $1"
| | |
ble | R16 |
"jsr Sbi2"
"bmi $1"
"bne 1f"
"txa"
"beq $1\n1:"
| | |
beq | R16 |
"sta BRANCH+1"
"stx BRANCH"
"jsr Pop"
"cmp BRANCH+1"
"bne 1f"
"cpx BRANCH"
"beq $1\n1:"
| | |
bne | R16 |
"sta BRANCH+1"
"stx BRANCH"
"jsr Pop"
"cmp BRANCH+1"
"bne $1"
"cpx BRANCH"
"bne $1"
| | |
bge | R16 |
"jsr Sbi2"
"bpl $1"
| | |
bgt | R16 |
"jsr Sbi2"
"bmi 1f"
"bne $1"
"txa"
"bne $1\n1:"
| | |
cmi zlt $1==2 | | | | blt $2 |
cmp zlt | | | | blt $2 |
zlt | R16 |
"tay"
"bmi $1"
| | |
cmi zle $1==2 | | | | ble $2 |
cmp zle | | | | ble $2 |
zle | R16 |
"tay"
"bmi $1"
"bne 1f"
"txa"
"beq $1\n1:"
| | |
cmi zeq $1==2 | | | | beq $2 |
cmp zeq | | | | beq $2 |
cms zeq $1==2 | | | | beq $2 |
zeq | R16 |
"tay"
"bne 1f"
"txa"
"beq $1\n1:"
| | |
cmi zne $1==2 | | | | bne $2 |
cmp zne | | | | bne $2 |
cms zne $1==2 | | | | bne $2 |
zne | R16 |
"tay"
"bne $1"
"txa"
"bne $1"
| | |
cmi zge $1==2 | | | | bge $2 |
cmp zge | | | | bge $2 |
zge | R16 |
"tay"
"bpl $1"
| | |
cmi zgt $1==2 | | | | bgt $2 |
cmp zgt | | | | bgt $2 |
zgt | R16 |
"tay"
"bmi 1f"
"bne $1"
"txa"
"bne $1\n1:"
| | |
/* GROUP 14 - PROCEDURE CALL */
cai | R16 |
"stx ADDR"
"sta ADDR+1"
"jsr Indir"
| | |
cal | |
remove(ALL)
"jsr $1"
| | |
lfr $1==2 | |
allocate(R16)
"lda #0"
"ldx #RETURN"
"jsr Loi"
| %[a] | |
lfr $1==4 | |
allocate(R16)
"lda #0"
"ldx #RETURN"
"jsr Ldi"
| | |
lfr ret $1==$2 | | | | ret 0 |
asp lfr ret $2==$3 | | | | ret 0 |
ret $1==0 || $1==2 || $1==4 | |
allocate(R16)
"ldy #$1"
"jmp Ret"
| | |
/* GROUP 15 - MISCELLANOUS */
asp | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jsr Asp"
| | |
ass $1==2 | R16 |
"jsr Asp"
| | |
ass ND | R16 |
"jsr Test2"
"jsr Pop"
"jsr Asp"
| | |
blm $1==0 | | | | asp 4 |
blm D | R16 |
"ldy #[[$1].h+1]"
"sty NBYTES+1"
"ldy #[$1].l"
"jsr Blm"
| | |
bls $1==2 | R16 |
"sta NBYTES+1"
"inc NBYTES+1"
"txa"
"tay"
"jsr Pop"
"jsr Blm"
| | |
bls ND | R16 |
"jsr Test2"
"sta NBYTES+1"
"inc NBYTES+1"
"txa"
"tay"
"jsr Pop"
"jsr Blm"
| | |
csa | R16 |
"jmp Csa"
| | |
csb | R16 |
"jmp Csb"
| | |
dch | | | | loi 2 |
dup $1==2 | R16 |
"jsr Push"
| %[1] | |
dup $1<=256 | |
allocate(R16)
"ldy #[$1].l"
"jsr Dup"
| | |
dus $1==2 | R16 |
"jsr TestFFh"
"iny"
"jsr Dup"
| | |
exg $1==2 | R16 |
"jsr Exg2"
| %[1] | |
exg $1<=255 | |
allocate(R16)
"ldy #$1"
"jsr Exg"
| | |
fil | |
"ldy #[$1].l"
"sty hol0+4"
"ldy #[$1].h"
"sty hol0+5"
| | |
gto | |
allocate(R16)
"lda #[$1].h"
"ldx #[$1].l"
"jmp Gto"
| | |
lim | |
allocate(R16)
"ldx IGNMASK"
"lda IGNMASK+1"
| %[a] | |
lin | |
"ldy #[$1].l"
"sty hol0"
"ldy #[$1].h"
"sty hol0+1"
| | |
lni | |
"inc hol0"
"bne 1f"
"inc hol0+1\n1:"
| | |
lor $1==0 | |
allocate(R16)
"ldx LB"
"lda LB+1"
| %[a] | |
lor $1==1 | |
allocate(R16)
"ldx SP+2"
"lda SP+1"
| %[a] | |
lor $1==2 | |
allocate(R16)
"ldx HP"
"lda HP+1"
| %[a] | |
lpb | | | | adp 2 |
mon | R16 |
"jsr Mon"
| %[1] | |
nop | |
allocate(R16)
"jsr Printstack"
| | |
rck | R16 | | | |
rtt | |
remove(ALL)
"jmp Rtt"
| | |
sig | R16 |
"pha"
"txa"
"pha"
"ldx ERRPROC"
"lda ERRPROC+1"
"jsr Push"
"pla"
"sta ERRPROC"
"pla"
"sta ERRPROC+1"
| | |
sim | R16 |
"stx IGNMASK"
"sta IGNMASK+1"
| | |
str $1==0 | R16 |
"stx LB"
"sta LB+1"
"tay"
"sec"
"txa"
"sbc #BASE"
"sta LBl"
"tya"
"sbc #0"
"sta LBl+1"
| | |
str $1==1 | R16 |
"stx SP+2"
"sta SP+1"
| | |
str $1==2 | R16 |
"stx HP"
"sta HP+1"
| | |
trp | R16 |
"jsr Trap"
| | |
lol lal sti $1==$2 && $3==1 | | | | | /* throw away funny C-proc-prolog */
| STACK |
allocate(R16)
"jsr Pop"
| %[a] | |
/* FLOATING POINT
* Every EM floating point instruction is translated
* into a library call. At present, these library
* routines generate an 'Illegal EM instruction' trap.
*/
adf $1==4 | STACK |
"jsr Adf4"
| | |
adf $1==8 | STACK |
"jsr Adf8" | | |
sbf $1==4 | STACK |
"jsr Sbf4"
| | |
sbf $1==8 | STACK |
"jsr Sbf8" | | |
mlf $1==4 | STACK |
"jsr Mlf4"
| | |
mlf $1==8 | STACK |
"jsr Mlf8" | | |
dvf $1==4 | STACK |
"jsr Dvf4"
| | |
dvf $1==8 | STACK |
"jsr Dvf8" | | |
ngf $1==4 | STACK |
"jsr Ngf4"
| | |
ngf $1==8 | STACK |
"jsr Ngf8" | | |
zrf $1==4 | STACK |
"jsr Zrf4"
| | |
zrf $1==8 | STACK |
"jsr Zrf8" | | |
cmf $1==4 | STACK |
"jsr Cmf4"
| | |
cmf $1==8 | STACK |
"jsr Cmf8" | | |
fef $1==4 | STACK |
"jsr Fef4"
| | |
fef $1==8 | STACK |
"jsr Fef8" | | |
fif $1==4 | STACK |
"jsr Fif4"
| | |
fif $1==8 | STACK |
"jsr Fif8" | | |
cfi | STACK |
"jsr Cfi" | | |
cif | STACK |
"jsr Cif" | | |
cuf | STACK |
"jsr Cuf" | | |
cff | STACK |
"jsr Cff" | | |
cfu | STACK |
"jsr Cfu" | | |
lfr $1==8 | STACK |
"jsr Lfr8" | | |
ret $1==8 | STACK |
"jmp Ret8" | | |
/*************\
* M O V E S *
\*************/
MOVES: (AAA,AAA,"nop")
STACKS: (R16, , "jsr Push")