home *** CD-ROM | disk | FTP | other *** search
- #DEFINE fLAGSnz(Z)\
- FLAGS &={$7e}(zer+neg); IF (Z==0) FLAGS{$7c}=zer; ELSE FLAGS {$7c}=Z&128
-
- #DEFINE ora(X) A{$7c}=bYTEaT(X()); fLAGSnz(A)
- #DEFINE asl(X) \
- REGISTER WORD ADDR;\
- REGISTER BYTE TBYTE;\
- ADDR = X();\
- TBYTE = bYTEaT(ADDR);\
- FLAGS &={$7e}(car+neg+zer);\
- IF (TBYTE&128) FLAGS {$7c}= car;\
- IF (TBYTE=TBYTE<<1) FLAGS {$7c}=TBYTE&128; ELSE FLAGS {$7c}=zer;\
- ram[ADDR] = TBYTE
- #DEFINE lsr(X) \
- REGISTER WORD ADDR;\
- REGISTER BYTE TBYTE;\
- ADDR=X();\
- TBYTE=bYTEaT(ADDR);\
- FLAGS &={$7e}(car+neg+zer);\
- FLAGS {$7c}=TBYTE&1;\
- IF (TBYTE=TBYTE>>1); ELSE FLAGS {$7c}=zer;\
- ram[ADDR]=TBYTE
- #DEFINE bcl(X) \
- REGISTER BYTE TBYTE;\
- IF (FLAGS&X) PC++; \
- ELSE {$7b}\
- TBYTE=iMMEDIATEbYTE();\
- PC++;\
- IF (TBYTE&128) {$7b}\
- PC-=(TBYTE^255)+1;\
- RETURN; {$7d}\
- PC +=TBYTE; {$7d}
- #DEFINE bst(X) \
- REGISTER BYTE TBYTE;\
- IF (FLAGS&X) {$7b}\
- TBYTE=iMMEDIATEbYTE();\
- PC++;\
- IF (TBYTE&128) {$7b}\
- PC-=(TBYTE^255)+1;\
- RETURN; {$7d}\
- PC +=TBYTE; {$7d}\
- ELSE PC++;
- #DEFINE clr(X) FLAGS &={$7e}X; RETURN
- #DEFINE set(X) FLAGS {$7c}= X; RETURN
- #DEFINE and(X) A &= bYTEaT(X()); fLAGSnz(A)
- #DEFINE bit(X) \
- REGISTER BYTE TBYTE;\
- TBYTE=bYTEaT(X());\
- FLAGS &={$7e}(zer+neg+ovf);\
- IF ((A&TBYTE)==0) FLAGS {$7c}=zer;\
- FLAGS {$7c}=TBYTE&(128+64)
- #DEFINE rol(X) \
- REGISTER WORD ADDR;\
- REGISTER BYTE TBYTE;\
- ADDR=X();\
- TBYTE=bYTEaT(ADDR);\
- IF (FLAGS&car) {$7b}\
- IF (TBYTE&128);\
- ELSE FLAGS &={$7e}car;\
- TBYTE=(TBYTE<<1){$7c}1; {$7d}\
- ELSE {$7b}\
- IF (TBYTE&128) FLAGS{$7c}=car;\
- TBYTE=TBYTE<<1; {$7d}\
- fLAGSnz(TBYTE);\
- ram[ADDR]=TBYTE
- #DEFINE eor(X) A^=bYTEaT(X());fLAGSnz(A)
- #DEFINE adc(X) \
- REGISTER WORD DATA;\
- DATA=bYTEaT(X());\
- IF (FLAGS&dec) {$7b}\
- DATA = BCD2DEC[DATA]+BCD2DEC[A]+((FLAGS&car)?1:0);\
- FLAGS &= {$7e}(car+ovf+neg+zer);\
- IF (DATA>99) {$7b}FLAGS{$7c}=car+ovf;DATA -=100;{$7d}\
- IF (DATA==0) FLAGS{$7c}=zer; ELSE FLAGS {$7c}=DATA&128;\
- A=DEC2BCD[DATA];{$7d}\
- ELSE {$7b}\
- DATA += A+((FLAGS&car)?1:0);\
- FLAGS &= {$7e}(car+ovf+neg+zer);\
- IF (DATA>255) {$7b}FLAGS{$7c}=ovf+car; DATA &=255;{$7d}\
- IF (DATA==0) FLAGS{$7c}=zer; ELSE FLAGS {$7c}=DATA&128;\
- A=DATA;{$7d}
- #DEFINE ror(X) \
- REGISTER WORD ADDR;\
- REGISTER BYTE TBYTE;\
- ADDR=X(); TBYTE=bYTEaT(ADDR);\
- IF(FLAGS&car){$7b}IF(TBYTE&1); ELSE FLAGS&={$7e}car;TBYTE=(TBYTE>>1){$7c}128;{$7d}\
- ELSE{$7b}IF(TBYTE&1) FLAGS{$7c}=car;TBYTE=TBYTE>>1;{$7d}\
- fLAGSnz(TBYTE); ram[ADDR]=TBYTE
- #DEFINE sta(X) ram[X()]=A
- #DEFINE sty(X) ram[X()]=Y
- #DEFINE stx(Y) ram[Y()]=X
- #DEFINE cpy(X) \
- REGISTER BYTE TBYTE;\
- TBYTE=bYTEaT(X()); FLAGS &={$7e}(car+zer+neg);\
- IF (Y==TBYTE) FLAGS {$7c}=car+zer;\
- ELSE IF (Y>TBYTE) FLAGS {$7c}=car;\
- ELSE FLAGS {$7c}=neg
- #DEFINE cpx(Y) \
- REGISTER BYTE TBYTE;\
- TBYTE=bYTEaT(Y()); FLAGS &={$7e}(car+zer+neg);\
- IF (X==TBYTE) FLAGS {$7c}=car+zer;\
- ELSE IF (X>TBYTE) FLAGS {$7c}=car;\
- ELSE FLAGS {$7c}=neg
- #DEFINE cmp(X) \
- REGISTER BYTE TBYTE;\
- TBYTE=bYTEaT(X()); FLAGS &={$7e}(car+zer+neg);\
- IF (A==TBYTE) FLAGS {$7c}=car+zer;\
- ELSE IF (A>TBYTE) FLAGS {$7c}=car;\
- ELSE FLAGS {$7c}=neg
- #DEFINE sbc(X) \
- REGISTER INT DATA;\
- DATA=bYTEaT(X());\
- IF (FLAGS&dec) {$7b}\
- DATA = BCD2DEC[A]-BCD2DEC[DATA]-((FLAGS&car)?0:1);\
- FLAGS &= {$7e}(car+zer+neg+ovf);\
- IF (DATA==0) FLAGS {$7c}=zer+car;\
- ELSE IF (DATA>0) FLAGS {$7c}=car;\
- ELSE {$7b}FLAGS{$7c}=neg; DATA +=100;{$7d}\
- A=DEC2BCD[DATA];{$7d}\
- ELSE {$7b}\
- DATA = A-DATA-((FLAGS&car)?0:1);\
- FLAGS &={$7e}(car+zer+ovf+neg);\
- IF (DATA==0) FLAGS {$7c}=zer+car;\
- ELSE IF (DATA>0) FLAGS {$7c}=car;\
- ELSE FLAGS{$7c}=ovf;\
- FLAGS {$7c}=DATA&128;\
- A=DATA&255;{$7d}
- #DEFINE decr(X) \
- REGISTER WORD ADDR; REGISTER BYTE TBYTE;\
- ADDR=X(); TBYTE=bYTEaT(ADDR);\
- FLAGS &={$7e}(zer+neg);\
- IF (--TBYTE) FLAGS {$7c}=TBYTE&128; ELSE FLAGS{$7c}=zer;\
- ram[ADDR]=TBYTE
- #DEFINE incr(X) \
- REGISTER WORD ADDR; REGISTER BYTE TBYTE;\
- ADDR=X(); TBYTE=bYTEaT(ADDR);\
- FLAGS &={$7e}(zer+neg);\
- IF (++TBYTE) FLAGS {$7c}=TBYTE&128; ELSE FLAGS{$7c}=zer;\
- ram[ADDR]=TBYTE
- #DEFINE lda(X) A=bYTEaT(X()); fLAGSnz(A)
- #DEFINE ldy(X) Y=bYTEaT(X()); fLAGSnz(Y)
- #DEFINE ldx(Y) X=bYTEaT(Y()); fLAGSnz(X)
-