C64 emulation on STM32F429 Discovery board with builtin LCD and USB keyboard support (OTG). More info at davevw.com and/or github.com/davervw

Dependencies:   LCD_DISCO_F429ZI BSP_DISCO_F429ZI USBHOST

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 // main.cpp - main()
00002 //
00003 ////////////////////////////////////////////////////////////////////////////////
00004 //
00005 // C64-stm429_discovery
00006 // C64/6502 Emulator targeting STM32F429 LCD/USBHOST
00007 // [ported from c-simple-emu-cbm (C Portable Version - for console)]
00008 //
00009 // MIT License
00010 //
00011 // Copyright(c) 2020 by David R.Van Wagner
00012 // davevw.com
00013 //
00014 // Permission is hereby granted, free of charge, to any person obtaining a copy
00015 // of this software and associated documentation files (the "Software"), to deal
00016 // in the Software without restriction, including without limitation the rights
00017 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
00018 // copies of the Software, and to permit persons to whom the Software is
00019 // furnished to do so, subject to the following conditions:
00020 //
00021 // The above copyright notice and this permission notice shall be included in all
00022 // copies or substantial portions of the Software.
00023 //
00024 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
00025 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
00026 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
00027 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
00028 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
00029 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
00030 // SOFTWARE.
00031 //
00032 ////////////////////////////////////////////////////////////////////////////////
00033 // OTHER INCLUDED (NOT LIMITED TO) SOURCE/LIBRARIES MAY HAVE DIFFERENT LICENSES.
00034 //    ARM MBED OS
00035 //    ARM MBED USBHOST
00036 //    STM32F429 BSP
00037 ////////////////////////////////////////////////////////////////////////////////
00038 
00039 #include <mbed.h>
00040 #include "USBHostKeyboard.h"
00041 #include "emuc64.h"
00042 #include "emu6502.h"
00043 
00044 static void execute_task(void const *) {
00045     ResetRun(ExecutePatch);
00046 }
00047 
00048 int main(/*int argc, char* argv[]*/)
00049 {
00050     printf("\n");
00051     printf("C64-stm429_discovery\n");
00052     printf("C64 Emu6502 (for STM32F429 Discovery), version 1.34\n");
00053     printf("Copyright (c) 2020 by David R. Van Wagner\n");
00054     printf("Open Source - MIT License\n");
00055     printf("os.mbed.com/users/davervw/code/C64-stm429_discovery/\n");
00056     printf("github.com/davervw\n");
00057     printf("\n");
00058     printf("Contains other copyrighted and licensed software\n");
00059     printf("   ARM MBED OS - Apache License 2.0\n");
00060     printf("   ARM MBED USBHOST - Apache License 2.0\n");
00061     printf("   STM32F429 Discovery Board BSP\n");
00062     printf("      COPYRIGHT(c) 2014 STMicroelectronics\n");
00063     printf("      Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of STMicroelectronics nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.\n");
00064     printf("      THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ""AS IS"" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n");
00065     printf("\n");
00066     printf("Commodore ROMs not licensed\n");
00067     printf("\n");
00068     
00069     //StartupPRG = "/local/guess2.prg";
00070     C64_Init("/local/basic", "/local/chargen", "/local/kernal");
00071 
00072     Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 1024 * 4);
00073     Thread executeTask(execute_task, NULL, osPriorityNormal, 1024 * 4);
00074 
00075     //DigitalOut led1(LED1);
00076     //led1 = 1;
00077     while(1) {
00078         //led1=!led1;
00079         Thread::wait(500);
00080     }
00081 
00082     return 0;
00083 }