; CC1B Ver 0.5A beta, Copyright (c) B Knudsen Data ; C compiler for the Ubicom SX family ; ************ 24. Jun 2002 11:40 ************* device SX28 RA EQU $05 i EQU $0B flag EQU 0 semi EQU 1 ; FILE sx\demo-ins.c ;// GENERATING SINGLE INSTRUCTIONS USING C SYNTAX ; ;#pragma chip SX28 // select device ; ;char a, b, c, i; ;bit flag, semi; ; ;interrupt hx( void) ;{ hx ; if (semi) // SNB 12.semi SNB 12.semi ; retiw(); // RETIW RETIW ;} // RETI RETI ; ;void s1( void) ;{ s1 ; if (!flag) // SB 12.flag SB 12.flag ; retp(); // RETP RETP ;} // RET RET ; ;page3 char s2( void) ;{ ORG $0600 s2 ; return 9; // RETW #9 RETW 9 ;} ; ; ;bit b1, b2; ; ;char funk( void) ;{ ORG $0006 funk ; i = i & W; // AND i,W AND i,W ; W = i & W; // AND W,i AND W,i ; W = W & 53; // AND W,#53 AND W,#53 ; i = i ^ 255; // NOT i NOT i ; i = i | W; // OR i,W OR i,W ; W = i | W; // OR W,i OR W,i ; W = W | 23; // OR W,#23 OR W,#23 ; i = i ^ W; // XOR i,W XOR i,W ; W = i ^ W; // XOR W,i XOR W,i ; W = W ^ 12; // XOR W,#12 XOR W,#12 ; i = i + W; // ADD i,W ADD i,W ; W = i + W; // ADD W,i ADD W,i ; i = 0; // CLR i CLR i ; W = 0; // CLR W CLR W ; clrwdt(); // CLR !wdt CLR !wdt ; i = i - 1; // DEC i DEC i ; i = decsz(i); // DECSZ i DECSZ i ; i = i + 1; // INC i INC i ; i = incsz(i); // INCSZ i INCSZ i ; i = rl( i); // RL i RL i ; i = rr( i); // RR i RR i ; i = i - W; // SUB i,W SUB i,W ; i = swap( i); // SWAP i SWAP i ; flag = 0; // CLRB 12.flag CLRB 12.flag ; btss(semi); // SB 12.semi SB 12.semi ; semi = 1; // SETB 12.semi SETB 12.semi ; btsc(flag); // SNB 12.flag SNB 12.flag ; i = W; // MOV i,W MOV i,W ; W = i; // MOV W,i MOV W,i ; W = i - W; // MOV W,i-W MOV W,i-W ; W = 45; // MOV W,#45 MOV W,#45 ; W = i ^ 255; // MOV W,/i MOV W,/i ; W = i - 1; // MOV W,--i MOV W,--i ; W = i + 1; // MOV W,++i MOV W,++i ; W = rl( i); // MOV W,<>i MOV W,>>i ; W = swap( i); // MOV W,<>i MOV W,<>i ; W = MODE; // MOV W,M MOV W,M ; W = decsz(i); // MOVSZ W,--i MOVSZ W,--i ; W = incsz(i); // MOVSZ W,++i MOVSZ W,++i ; MODE = W; // MOV M,W MOV M,W ; MODE = 6; // MOV M,#6 MOV M,#6 ; controlA(W); // MOV !RA,W MOV !RA,W ; OPTION = W; // MOV !option,W MOV !option,W ; i = i; // TEST i TEST i ; s1(); // CALL s1 CALL s1 ; ; s2(); // CALL s2 + automatic page updating PAGE 1536 CALL s2 PAGE 0 ; ; goto X; // JMP m001 JMP m001 ; nop(); // NOP NOP ; ; #pragma optimize 0 ; ; return W; // RET RET ; nop(); // NOP NOP ; retp(); // RETP RETP ; nop(); // NOP NOP ; retiw(); // RETIW RETIW ; nop(); // NOP NOP ; return 5; // RETW 5 RETW 5 ; bank(5); // BANK 160 // manual bank updating is not required BANK 160 ; iread(); // IREAD IREAD ; sleep(); // SLEEP SLEEP ; ; #pragma optimize 1 ; ;X: ; return 0; m001 RETW 0 ;} ; ; ;void main(void) ;{ main ; funk(); CALL funk ; ; MODE = 0x3; MOV M,#3 ; W = 0x10; MOV W,#16 ; iread(); // IREAD IREAD ; ; #pragma optimize 0 ; #pragma updateBank 0 ; ; // manual bank updating is not required ; bank(0); // BANK 0 BANK 0 ; bank(1); // BANK 32 BANK 32 ; bank(2); // BANK 64 BANK 64 ; bank(3); // BANK 96 BANK 96 ; bank(4); // BANK 128 BANK 128 ; bank(5); // BANK 160 BANK 160 ; bank(6); // BANK 192 BANK 192 ; bank(7); // BANK 224 BANK 224 ; ; // manual page updating is not required ; page(0); // PAGE 0 PAGE 0 ; page(1); // PAGE 512 PAGE 512 ; page(2); // PAGE 1024 PAGE 1024 ; page(3); // PAGE 1536 PAGE 1536 ; page(4); // PAGE 2048 PAGE 2048 ; page(5); // PAGE 2560 PAGE 2560 ; page(6); // PAGE 3072 PAGE 3072 ; page(7); // PAGE 3584 PAGE 3584 ; ; #pragma optimize 1 ; #pragma updateBank 1 ; ; nop(); NOP ;} SLEEP ORG $07FF GOTO main END