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

Committer:
davervw
Date:
Fri Apr 17 15:53:04 2020 +0000
Revision:
13:035c53a987a1
Parent:
12:297952431711
project source code URL: os.mbed.com/users/davervw/code/C64-stm429_discovery/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
davervw 4:8476be802690 1 // main.cpp - main()
davervw 0:90de1cbc8a5f 2 //
davervw 0:90de1cbc8a5f 3 ////////////////////////////////////////////////////////////////////////////////
davervw 0:90de1cbc8a5f 4 //
davervw 4:8476be802690 5 // C64-stm429_discovery
davervw 4:8476be802690 6 // C64/6502 Emulator targeting STM32F429 LCD/USBHOST
davervw 4:8476be802690 7 // [ported from c-simple-emu-cbm (C Portable Version - for console)]
davervw 0:90de1cbc8a5f 8 //
davervw 0:90de1cbc8a5f 9 // MIT License
davervw 0:90de1cbc8a5f 10 //
davervw 0:90de1cbc8a5f 11 // Copyright(c) 2020 by David R.Van Wagner
davervw 0:90de1cbc8a5f 12 // davevw.com
davervw 0:90de1cbc8a5f 13 //
davervw 0:90de1cbc8a5f 14 // Permission is hereby granted, free of charge, to any person obtaining a copy
davervw 0:90de1cbc8a5f 15 // of this software and associated documentation files (the "Software"), to deal
davervw 0:90de1cbc8a5f 16 // in the Software without restriction, including without limitation the rights
davervw 0:90de1cbc8a5f 17 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
davervw 0:90de1cbc8a5f 18 // copies of the Software, and to permit persons to whom the Software is
davervw 0:90de1cbc8a5f 19 // furnished to do so, subject to the following conditions:
davervw 0:90de1cbc8a5f 20 //
davervw 0:90de1cbc8a5f 21 // The above copyright notice and this permission notice shall be included in all
davervw 0:90de1cbc8a5f 22 // copies or substantial portions of the Software.
davervw 0:90de1cbc8a5f 23 //
davervw 0:90de1cbc8a5f 24 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
davervw 0:90de1cbc8a5f 25 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
davervw 0:90de1cbc8a5f 26 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
davervw 0:90de1cbc8a5f 27 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
davervw 0:90de1cbc8a5f 28 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
davervw 0:90de1cbc8a5f 29 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
davervw 0:90de1cbc8a5f 30 // SOFTWARE.
davervw 0:90de1cbc8a5f 31 //
davervw 0:90de1cbc8a5f 32 ////////////////////////////////////////////////////////////////////////////////
davervw 4:8476be802690 33 // OTHER INCLUDED (NOT LIMITED TO) SOURCE/LIBRARIES MAY HAVE DIFFERENT LICENSES.
davervw 4:8476be802690 34 // ARM MBED OS
davervw 4:8476be802690 35 // ARM MBED USBHOST
davervw 4:8476be802690 36 // STM32F429 BSP
davervw 4:8476be802690 37 ////////////////////////////////////////////////////////////////////////////////
davervw 0:90de1cbc8a5f 38
davervw 0:90de1cbc8a5f 39 #include <mbed.h>
davervw 4:8476be802690 40 #include "USBHostKeyboard.h"
davervw 0:90de1cbc8a5f 41 #include "emuc64.h"
davervw 0:90de1cbc8a5f 42 #include "emu6502.h"
davervw 0:90de1cbc8a5f 43
davervw 4:8476be802690 44 static void execute_task(void const *) {
davervw 4:8476be802690 45 ResetRun(ExecutePatch);
davervw 4:8476be802690 46 }
davervw 0:90de1cbc8a5f 47
davervw 0:90de1cbc8a5f 48 int main(/*int argc, char* argv[]*/)
davervw 0:90de1cbc8a5f 49 {
davervw 4:8476be802690 50 printf("\n");
davervw 4:8476be802690 51 printf("C64-stm429_discovery\n");
davervw 13:035c53a987a1 52 printf("C64 Emu6502 (for STM32F429 Discovery), version 1.34\n");
davervw 4:8476be802690 53 printf("Copyright (c) 2020 by David R. Van Wagner\n");
davervw 4:8476be802690 54 printf("Open Source - MIT License\n");
davervw 13:035c53a987a1 55 printf("os.mbed.com/users/davervw/code/C64-stm429_discovery/\n");
davervw 4:8476be802690 56 printf("github.com/davervw\n");
davervw 4:8476be802690 57 printf("\n");
davervw 12:297952431711 58 printf("Contains other copyrighted and licensed software\n");
davervw 12:297952431711 59 printf(" ARM MBED OS - Apache License 2.0\n");
davervw 12:297952431711 60 printf(" ARM MBED USBHOST - Apache License 2.0\n");
davervw 12:297952431711 61 printf(" STM32F429 Discovery Board BSP\n");
davervw 12:297952431711 62 printf(" COPYRIGHT(c) 2014 STMicroelectronics\n");
davervw 12:297952431711 63 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");
davervw 12:297952431711 64 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");
davervw 4:8476be802690 65 printf("\n");
davervw 12:297952431711 66 printf("Commodore ROMs not licensed\n");
davervw 12:297952431711 67 printf("\n");
davervw 12:297952431711 68
davervw 1:256d8a124b55 69 //StartupPRG = "/local/guess2.prg";
davervw 7:dce21deeac6c 70 C64_Init("/local/basic", "/local/chargen", "/local/kernal");
davervw 4:8476be802690 71
davervw 4:8476be802690 72 Thread keyboardTask(keyboard_task, NULL, osPriorityNormal, 1024 * 4);
davervw 4:8476be802690 73 Thread executeTask(execute_task, NULL, osPriorityNormal, 1024 * 4);
davervw 4:8476be802690 74
davervw 4:8476be802690 75 //DigitalOut led1(LED1);
davervw 4:8476be802690 76 //led1 = 1;
davervw 4:8476be802690 77 while(1) {
davervw 4:8476be802690 78 //led1=!led1;
davervw 4:8476be802690 79 Thread::wait(500);
davervw 4:8476be802690 80 }
davervw 4:8476be802690 81
davervw 0:90de1cbc8a5f 82 return 0;
davervw 0:90de1cbc8a5f 83 }