void C64::ping() { debug (1, "Pinging virtual C64\n"); VirtualComponent::ping(); putMessage(MSG_WARP, warp); putMessage(MSG_ALWAYS_WARP, alwaysWarp); }
__interrupt void comUartRxISR( void ) { rx_byte = UCA0RXBUF; if( rx_byte == ENTER_CHAR ){ if( rxBufferPointer == 0 ){ return; } //send message to cli rxBuffer[rxBufferPointer] = '\0'; rxBufferPointer = 0; if( getFreeMessage( &eMessage ) == queue_ok ){ eMessage->source = com_uart_user; eMessage->destination = cli_user; eMessage->argument = rxArgBuffer; strcpy( ( char * ) eMessage->argument, ( const char * ) rxBuffer ); putMessage( eMessage ); } } else if( rxBufferPointer < ( COM_UART_RX_BUFFER_SIZE - 2 ) ){ rxBuffer[rxBufferPointer] = rx_byte; if( rx_byte == BS_CHAR ){ if(rxBufferPointer != 0){ rxBufferPointer--; if( getFreeMessage( &eMessage ) == queue_ok ){ eMessage->destination = com_uart_user; eMessage->source = com_uart_user; eMessage->event = echo_event; eMessage->id = (int) rx_byte; putMessage( eMessage ); } if( getFreeMessage( &eMessage ) == queue_ok ){ eMessage->destination = com_uart_user; eMessage->source = com_uart_user; eMessage->event = echo_event; eMessage->id = (int) SPACE_CHAR; putMessage( eMessage ); } } } else { rxBufferPointer++; } //echo if( rxBufferPointer != 0 ){ if( getFreeMessage( &eMessage ) == queue_ok ){ eMessage->destination = com_uart_user; eMessage->source = com_uart_user; eMessage->event = echo_event; eMessage->id = (int) rx_byte; putMessage( eMessage ); } } } }
int main( void ){ disableWDT();// Stop watchdog timer initQueue(); initScheduler(); initButton(); initLed(); initComUart(); initInfo(); mainTask.cmdName = cmdNameMain; mainTask.user = main_user; mainTask.handler = &mainHandler; registerTask( &mainTask ); setDCOCLK( DCO_1M ); setSMCLK( SMCLK_DCO, CLK_DIV_1 ); if( getFreeMessage( &mainMessage ) == queue_ok ){ mainMessage->source = main_user; mainMessage->destination = led_user; mainMessage->id = MSG_ID_LED_GREEN; mainMessage->priority = normal_priority; mainMessage->event = undef_event; putMessage( mainMessage ); } if( getFreeMessage( &mainMessage ) == queue_ok){ mainMessage->destination = com_uart_user; mainMessage->source = main_user; mainMessage->id = MSG_ID_UART_WELCOME; putMessage( mainMessage ); } initCli(); enableTimerA0CCInterrupt(); setTimerA0Mode( TAMODE_CONT ); setTimerA0ClockSource( TA_SMCLK ); setTimerA0Divider( TA_DIV_1 ); __enable_interrupt(); __bis_SR_register( 0x18 ); //__bis_SR_register( 0x18 ); // LPM0 with interrupts enabled while( 1 ){}; return 0; }
void C64::setWarp(bool b) { if (warp != b) { warp = b; restartTimer(); putMessage(MSG_WARP, b); } }
void C64::setAlwaysWarp(bool b) { if (alwaysWarp == b) return; if (alwaysWarp != b) { alwaysWarp = b; setWarp(b); putMessage(MSG_ALWAYS_WARP, b); } }
bool C64::loadRom(const char *filename) { bool result = false; debug(1, "Trying to load ROM image %s\n", filename); suspend(); bool wasRunnable = isRunnable(); if (C64Memory::isBasicRom(filename)) { result = mem.loadBasicRom(filename); if (result) putMessage(MSG_ROM_LOADED, BASIC_ROM); } if (C64Memory::isCharRom(filename)) { result = mem.loadCharRom(filename); if (result) putMessage(MSG_ROM_LOADED, CHAR_ROM); } if (C64Memory::isKernelRom(filename)) { result = mem.loadKernelRom(filename); if (result) putMessage(MSG_ROM_LOADED, KERNEL_ROM); } if (VC1541Memory::is1541Rom(filename)) { result = floppy.mem.loadRom(filename); if (result) putMessage(MSG_ROM_LOADED, VC1541_ROM); } bool isNowRunnable = isRunnable(); if (!wasRunnable && isNowRunnable) { // Good news! All ROMs are in place putMessage(MSG_ROM_COMPLETE); } resume(); return result; }
bool C64::loadRom(const char *filename) { bool result = false; suspend(); bool wasRunnable = isRunnable(); if (C64Memory::isBasicRom(filename)) { result = mem->loadBasicRom(filename); if (result) putMessage(MSG_ROM_LOADED, BASIC_ROM); } if (C64Memory::isCharRom(filename)) { result = mem->loadCharRom(filename); if (result) putMessage(MSG_ROM_LOADED, CHAR_ROM); } if (C64Memory::isKernelRom(filename)) { result = mem->loadKernelRom(filename); if (result) putMessage(MSG_ROM_LOADED, KERNEL_ROM); } if (VC1541Memory::is1541Rom(filename)) { result = floppy->mem->loadRom(filename); if (result) putMessage(MSG_ROM_LOADED, VC1541_ROM); } bool isNowRunnable = isRunnable(); if (!wasRunnable && isNowRunnable) { // Last missing ROM was loaded putMessage(MSG_ROM_COMPLETE); } resume(); return result; }
__interrupt void timerA0ISR( void ) { timerCount = ( timerCount + 1 ) % 16; if ( timerCount == 0 ) { if( getFreeMessage( &mainMessage ) == queue_ok ){ mainMessage->source = main_user; mainMessage->destination = led_user; mainMessage->id = MSG_ID_LED_GREEN; mainMessage->event = toggle_event; putMessage( mainMessage ); } else { ledToggle( MSG_ID_LED_RED ); } } scheduler(); }
/* -------------------------------------------------------------------- */ void SaveAideMess(void) { char *temp; FILE *fd; if((temp = calloc(90, sizeof(char))) == NULL) { return; } flipFileLan(cfg->temppath,1); sprintf(temp, "%s\\%s", cfg->temppath, "aidemsg.tmp"); if (aideFl == NULL) { flipFileLan(cfg->temppath,0); return; } fclose(aideFl); if ((fd = fopen(temp, "rb")) == NULL) { crashout("AIDEMSG.TMP file not found during aide message save!"); } clearmsgbuf(); GetStr(fd, msgBuf->mbtext, cfg->maxtext); fclose(fd); unlink(temp); aideFl = NULL; free(temp); flipFileLan(cfg->temppath,0); if (strlen(msgBuf->mbtext) < 10) return; strcpy(msgBuf->mbauth, cfg->nodeTitle); msgBuf->mbroomno = AIDEROOM; putMessage(); noteMessage(); }
void C64::run() { if (isHalted()) { // Check for ROM images if (getMissingRoms()) { putMessage(MSG_ROM_MISSING, getMissingRoms()); return; } // Power on sub components sid->run(); // Start execution thread pthread_create(&p, NULL, runThread, (void *)this); } }
void C64::ping() { debug (1, "Pinging virtual C64\n"); putMessage(MSG_WARP, warp); mem->ping(); cpu->ping(); vic->ping(); cia1->ping(); cia2->ping(); sid->ping(); keyboard->ping(); joystick1->ping(); joystick2->ping(); iec->ping(); expansionport->ping(); floppy->ping(); }
__interrupt void Port_1( void ) { P1IES ^= BIT3; P1IFG &= ~BIT3; // P1.3 IFG cleared if( getFreeMessage( &buttonMessage ) == queue_ok ){ buttonMessage->source = button_user; buttonMessage->destination = com_uart_user; buttonMessage->id = MSG_ID_BUTTON; if( ( P1IN & BUTTON ) == 0x00 ){ buttonMessage->event = on_event; } else { buttonMessage->event = off_event; } putMessage( buttonMessage ); } }
void C64::setWarp(bool b) { if (warp == b) return; warp = b; // Warping has the unavoidable drawback that audio playback gets out of sync. To cope with this issue, // we silence SID during warp mode and smoothly bring back sound when warping ends. if (warp) { // Quickly fade out SID sid.rampDown(); } else { // Smoothly fade in SID sid.rampUp(); restartTimer(); } putMessage(MSG_WARP, b); }
void confirmMessage(uint32_t msgId) { putMessage(CONFIRMATION_MSG, sizeof(uint32_t), 0, (uint8_t *)&msgId); }
virtual void createFooter() { putMessage("foobar_footer"); }
virtual void createBody() { putMessage("foo"); putMessage("bar"); putMessage("foobar"); }
virtual void createHeader() { putMessage("foobar_header"); }
virtual void createFooter() { putMessage("<footer>foobar_footer</footer>"); }
virtual void createBody() { putMessage("<body>foo</body>"); putMessage("<body>bar</body>"); putMessage("<body>foobar</body>"); }
virtual void createHeader() { putMessage("<header>foobar_header</header>"); }
/* * Set - set editor control variable */ vi_rc Set( char *name ) { char fn[MAX_STR]; vi_rc rc = ERR_NO_ERR; int j, i; #ifndef VICOMP #ifndef __WIN__ int tmp, tc; char **vals = NULL; char **list; int longest; #endif #endif /* * get item to set */ #ifndef VICOMP msgFlag = FALSE; if( !EditFlags.ScriptIsCompiled ) { #endif RemoveLeadingSpaces( name ); j = strlen( name ); for( i = 0; i < j; i++ ) { if( name[i] == '=' || name[i] == ',' ) { name[i] = ' '; } } #ifndef VICOMP } #endif if( NextWord1( name, fn ) <=0 ) { #ifndef VICOMP if( !EditFlags.WindowsStarted ) { return( ERR_NO_ERR ); } #ifndef __WIN__ tc = getSetInfo( &vals, &list, &longest ); tmp = setw_info.y2; i = setw_info.y2 - setw_info.y1 + 1; if( setw_info.has_border ) { i -= 2; } if( tc < i ) { setw_info.y2 -= (i - tc); } rc = SelectItemAndValue( &setw_info, "Settings", list, tc, SettingSelected, 1, vals, longest + 3 ); setw_info.y2 = tmp; MemFreeList( tc, vals ); MemFreeList( tc, list ); ReDisplayScreen(); #endif #endif /* VICOMP */ return( rc ); } else { #ifndef VICOMP if( !EditFlags.Starting) { msgFlag = TRUE; } #endif do { #ifndef VICOMP if( !EditFlags.ScriptIsCompiled ) { #endif if( tolower( fn[0] ) == 'n' && tolower( fn[1] ) == 'o' ) { EliminateFirstN( fn, 2 ); i = -1; } else { i = 1; } j = Tokenize( SetTokens1, fn, FALSE ); if( j == TOK_INVALID ) { j = Tokenize( SetTokens2a, fn, FALSE ); if( j == TOK_INVALID ) { j = Tokenize( SetTokens2, fn, FALSE ); if( j == TOK_INVALID ) { return( ERR_INVALID_SET_COMMAND ); } } j += SET1_T_; } j *= i; #ifndef VICOMP } else { j = atoi( fn ); } #endif i = TRUE; rc = processSetToken( j, name, &i, FALSE ); if( rc > ERR_NO_ERR ) { break; } RemoveLeadingSpaces( name ); } while( NextWord1( name, fn ) > 0 ); #ifndef VICOMP if( msgFlag ) { putMessage(); } #endif return( rc ); } } /* Set */
void SkylivePluginSkeleton::sendMessage(SKMessage msg) { msg.sender=SENDER; emit putMessage(msg); }