static void fec_encode_all_stripes(sender_state_t sendst, struct slice *slice) { int stripe; struct net_config *config = sendst->config; struct fifo *fifo = sendst->fifo; int bytes = slice->bytes; int stripes = config->fec_stripes; int redundancy = config->fec_redundancy; int nrBlocks = (bytes + config->blockSize - 1) / config->blockSize; int leftOver = bytes % config->blockSize; unsigned char *fec_data = slice->fec_data; unsigned char *fec_blocks[redundancy]; unsigned char *data_blocks[128]; if(leftOver) { unsigned char *lastBlock = ADR(nrBlocks - 1, config->blockSize); memset(lastBlock+leftOver, 0, config->blockSize-leftOver); } for(stripe=0; stripe<stripes; stripe++) { int i,j; for(i=0; i<redundancy; i++) fec_blocks[i] = fec_data+config->blockSize*(stripe+i*stripes); for(i=stripe, j=0; i< nrBlocks; i+=stripes, j++) data_blocks[j] = ADR(i, config->blockSize); fec_encode(config->blockSize, data_blocks, j, fec_blocks, redundancy); } }
static void init_constants() { c2229 = STRINGTOSYMBOL( CSTRING_TSCP( "*EXPANDER*" ) ); CONSTANTEXP( ADR( c2229 ) ); c2214 = CSTRING_TSCP( t2300 ); CONSTANTEXP( ADR( c2214 ) ); c2213 = STRINGTOSYMBOL( CSTRING_TSCP( "SET-CDR!" ) ); CONSTANTEXP( ADR( c2213 ) ); }
// Uses value in IR to determine course of action // Returns false if errors bool interpreter() { bool success = true; //While no error flag and no timer interrupt while (success && timer_interrupt < QUANTUM) { machine.IR = main_memory[MMU(machine.PC)]; machine.PC++; // Increment Program Counter unsigned short int op = getOpcode(machine.IR); switch (op) { case 0: success = LOD(); break; case 1: success = STO(); break; case 2: success = ADD(); break; case 3: success = SUB(); break; case 4: success = ADR(); break; case 5: success = SUR(); break; case 6: success = AND(); break; case 7: success = IOR(); break; case 8: success = NOT(); break; case 9: success = JMP(); break; case 10: success = JEQ(); break; case 11: success = JGT(); break; case 12: success = JLT(); break; case 13: success = CMP(); break; case 14: success = CLR(); break; case 15: return HLT(); break; //Quit early on HLT default: success = false; break; } usleep(1000000); // Sleep 1 second to allow easier instruction tracing (*sysclock)++; timer_interrupt++; } timer_interrupt = 0; return success; }
static void init_constants() { TSCP X1; c2426 = EMPTYLIST; t2512 = STRINGTOSYMBOL( CSTRING_TSCP( "UNQUOTE-SPLICING" ) ); c2426 = CONS( t2512, c2426 ); t2513 = STRINGTOSYMBOL( CSTRING_TSCP( "QUOTE" ) ); c2426 = CONS( t2513, c2426 ); CONSTANTEXP( ADR( c2426 ) ); c2402 = EMPTYLIST; X1 = EMPTYLIST; X1 = CONS( EMPTYLIST, X1 ); X1 = CONS( t2513, X1 ); c2402 = CONS( X1, c2402 ); CONSTANTEXP( ADR( c2402 ) ); c2391 = STRINGTOSYMBOL( CSTRING_TSCP( "APPEND" ) ); CONSTANTEXP( ADR( c2391 ) ); c2378 = STRINGTOSYMBOL( CSTRING_TSCP( "UNQUOTE-SPLICING" ) ); CONSTANTEXP( ADR( c2378 ) ); c2334 = STRINGTOSYMBOL( CSTRING_TSCP( "LIST->VECTOR" ) ); CONSTANTEXP( ADR( c2334 ) ); c2306 = EMPTYLIST; t2514 = STRINGTOSYMBOL( CSTRING_TSCP( "QUASIQUOTE" ) ); c2306 = CONS( t2514, c2306 ); c2306 = CONS( t2513, c2306 ); CONSTANTEXP( ADR( c2306 ) ); c2299 = STRINGTOSYMBOL( CSTRING_TSCP( "CONS*" ) ); CONSTANTEXP( ADR( c2299 ) ); c2222 = EMPTYLIST; t2515 = STRINGTOSYMBOL( CSTRING_TSCP( "UNQUOTE" ) ); c2222 = CONS( t2515, c2222 ); c2222 = CONS( t2513, c2222 ); CONSTANTEXP( ADR( c2222 ) ); c2221 = STRINGTOSYMBOL( CSTRING_TSCP( "LIST" ) ); CONSTANTEXP( ADR( c2221 ) ); c2202 = STRINGTOSYMBOL( CSTRING_TSCP( "QUOTE" ) ); CONSTANTEXP( ADR( c2202 ) ); c2173 = STRINGTOSYMBOL( CSTRING_TSCP( "UNQUOTE" ) ); CONSTANTEXP( ADR( c2173 ) ); c2135 = CSTRING_TSCP( t2516 ); CONSTANTEXP( ADR( c2135 ) ); c2134 = STRINGTOSYMBOL( CSTRING_TSCP( "QUASIQUOTE" ) ); CONSTANTEXP( ADR( c2134 ) ); }
static void init_constants() { TSCP X1; c2751 = EMPTYLIST; X1 = EMPTYLIST; t2832 = STRINGTOSYMBOL( CSTRING_TSCP( "*IGNORED*" ) ); X1 = CONS( t2832, X1 ); t2833 = STRINGTOSYMBOL( CSTRING_TSCP( "INCLUDE" ) ); X1 = CONS( t2833, X1 ); c2751 = CONS( X1, c2751 ); t2834 = STRINGTOSYMBOL( CSTRING_TSCP( "QUOTE" ) ); c2751 = CONS( t2834, c2751 ); CONSTANTEXP( ADR( c2751 ) ); c2747 = STRINGTOSYMBOL( CSTRING_TSCP( "INCLUDE" ) ); CONSTANTEXP( ADR( c2747 ) ); c2746 = EMPTYLIST; X1 = EMPTYLIST; X1 = CONS( t2832, X1 ); t2835 = STRINGTOSYMBOL( CSTRING_TSCP( "MODULE" ) ); X1 = CONS( t2835, X1 ); c2746 = CONS( X1, c2746 ); c2746 = CONS( t2834, c2746 ); CONSTANTEXP( ADR( c2746 ) ); c2742 = STRINGTOSYMBOL( CSTRING_TSCP( "MODULE" ) ); CONSTANTEXP( ADR( c2742 ) ); c2738 = EMPTYLIST; c2738 = CONS( FALSEVALUE, c2738 ); CONSTANTEXP( ADR( c2738 ) ); c2735 = CSTRING_TSCP( t2836 ); CONSTANTEXP( ADR( c2735 ) ); c2724 = STRINGTOSYMBOL( CSTRING_TSCP( "IF" ) ); CONSTANTEXP( ADR( c2724 ) ); c2693 = CSTRING_TSCP( t2837 ); CONSTANTEXP( ADR( c2693 ) ); c2660 = STRINGTOSYMBOL( CSTRING_TSCP( "EXP" ) ); CONSTANTEXP( ADR( c2660 ) ); c2659 = STRINGTOSYMBOL( CSTRING_TSCP( "DO" ) ); CONSTANTEXP( ADR( c2659 ) ); c2614 = CSTRING_TSCP( t2838 ); CONSTANTEXP( ADR( c2614 ) ); c2613 = STRINGTOSYMBOL( CSTRING_TSCP( "SET-CDR!" ) ); CONSTANTEXP( ADR( c2613 ) ); c2568 = STRINGTOSYMBOL( CSTRING_TSCP( "BEGIN" ) ); CONSTANTEXP( ADR( c2568 ) ); c2559 = STRINGTOSYMBOL( CSTRING_TSCP( "SET!" ) ); CONSTANTEXP( ADR( c2559 ) ); c2359 = STRINGTOSYMBOL( CSTRING_TSCP( "LET*" ) ); CONSTANTEXP( ADR( c2359 ) ); c2242 = STRINGTOSYMBOL( CSTRING_TSCP( "LAMBDA" ) ); CONSTANTEXP( ADR( c2242 ) ); c2231 = STRINGTOSYMBOL( CSTRING_TSCP( "LETREC" ) ); CONSTANTEXP( ADR( c2231 ) ); c2213 = CSTRING_TSCP( t2839 ); CONSTANTEXP( ADR( c2213 ) ); c2166 = CSTRING_TSCP( t2840 ); CONSTANTEXP( ADR( c2166 ) ); c2165 = STRINGTOSYMBOL( CSTRING_TSCP( "LET" ) ); CONSTANTEXP( ADR( c2165 ) ); }