Marcus Comstedt's SoftVMS ported to Pokitto.

Dependencies:   PokittoLib

Fork of HelloWorld by Pokitto Community Team

Committer:
fmanga
Date:
Sat Mar 31 19:07:59 2018 +0000
Revision:
11:88c459b0ac3a
Parent:
5:c4a0391b43ac
Initial SoftVMS port

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Pokitto 0:2d2a3994d55d 1 #include "Pokitto.h"
fmanga 11:88c459b0ac3a 2 #include "mbed.h"
fmanga 11:88c459b0ac3a 3 #include "prototypes.h"
Pokitto 0:2d2a3994d55d 4
fmanga 11:88c459b0ac3a 5 volatile uint32_t *DBG = ((uint32_t *) 0x21000000);
fmanga 11:88c459b0ac3a 6
fmanga 11:88c459b0ac3a 7 Pokitto::Core pok;
fmanga 11:88c459b0ac3a 8 time_t start;
Pokitto 0:2d2a3994d55d 9
Pokitto 0:2d2a3994d55d 10 int main () {
fmanga 11:88c459b0ac3a 11 DBG[1] = 1; // 2|4;
fmanga 11:88c459b0ac3a 12 // DBG[2] = 5;
fmanga 11:88c459b0ac3a 13
fmanga 11:88c459b0ac3a 14 pok.begin();
fmanga 11:88c459b0ac3a 15 start = time(NULL);
fmanga 11:88c459b0ac3a 16 Pokitto::Display &display = pok.display;
fmanga 11:88c459b0ac3a 17
fmanga 11:88c459b0ac3a 18 display.enableDirectPrinting(true);
fmanga 11:88c459b0ac3a 19 display.directbgcolor = COLOR_BLACK;
fmanga 11:88c459b0ac3a 20 display.directcolor = COLOR_GREEN;
fmanga 11:88c459b0ac3a 21 display.clearLCD();
fmanga 11:88c459b0ac3a 22
fmanga 11:88c459b0ac3a 23 resetcpu();
fmanga 11:88c459b0ac3a 24 run_cpu();
Pokitto 0:2d2a3994d55d 25
fmanga 11:88c459b0ac3a 26 }
fmanga 11:88c459b0ac3a 27
fmanga 11:88c459b0ac3a 28 void waitforevents(struct timeval *){
fmanga 11:88c459b0ac3a 29 }
fmanga 11:88c459b0ac3a 30
fmanga 11:88c459b0ac3a 31 uint32_t keyState;
fmanga 11:88c459b0ac3a 32
fmanga 11:88c459b0ac3a 33 void checkevents()
fmanga 11:88c459b0ac3a 34 {
fmanga 11:88c459b0ac3a 35 uint32_t bit = 1;
fmanga 11:88c459b0ac3a 36
fmanga 11:88c459b0ac3a 37 Pokitto::Core::buttons.pollButtons();
fmanga 11:88c459b0ac3a 38 uint32_t nks = Pokitto::Core::buttons.buttons_state;
fmanga 11:88c459b0ac3a 39
fmanga 11:88c459b0ac3a 40 if( nks & (1<<UPBIT) ){ // UP
fmanga 11:88c459b0ac3a 41 if( !(keyState&bit) ) {
fmanga 11:88c459b0ac3a 42 keyState |= bit;
fmanga 11:88c459b0ac3a 43 keypress(0);
fmanga 11:88c459b0ac3a 44 }
fmanga 11:88c459b0ac3a 45 }else if( keyState & bit ){
fmanga 11:88c459b0ac3a 46 keyState &= ~bit;
fmanga 11:88c459b0ac3a 47 keyrelease(0);
fmanga 11:88c459b0ac3a 48 }
fmanga 11:88c459b0ac3a 49 bit <<= 1;
fmanga 11:88c459b0ac3a 50
fmanga 11:88c459b0ac3a 51 if( nks & (1<<DOWNBIT) ){ // UP
fmanga 11:88c459b0ac3a 52 if( !(keyState&bit) ) {
fmanga 11:88c459b0ac3a 53 keyState |= bit;
fmanga 11:88c459b0ac3a 54 keypress(1);
fmanga 11:88c459b0ac3a 55 }
fmanga 11:88c459b0ac3a 56 }else if( keyState & bit ){
fmanga 11:88c459b0ac3a 57 keyState &= ~bit;
fmanga 11:88c459b0ac3a 58 keyrelease(1);
fmanga 11:88c459b0ac3a 59 }
fmanga 11:88c459b0ac3a 60 bit <<= 1;
fmanga 11:88c459b0ac3a 61
fmanga 11:88c459b0ac3a 62 if( nks & (1<<LEFTBIT) ){ // UP
fmanga 11:88c459b0ac3a 63 if( !(keyState&bit) ) {
fmanga 11:88c459b0ac3a 64 keyState |= bit;
fmanga 11:88c459b0ac3a 65 keypress(2);
fmanga 11:88c459b0ac3a 66 }
fmanga 11:88c459b0ac3a 67 }else if( keyState & bit ){
fmanga 11:88c459b0ac3a 68 keyState &= ~bit;
fmanga 11:88c459b0ac3a 69 keyrelease(2);
fmanga 11:88c459b0ac3a 70 }
fmanga 11:88c459b0ac3a 71 bit <<= 1;
fmanga 11:88c459b0ac3a 72
fmanga 11:88c459b0ac3a 73 if( nks & (1<<RIGHTBIT) ){ // UP
fmanga 11:88c459b0ac3a 74 if( !(keyState&bit) ) {
fmanga 11:88c459b0ac3a 75 keyState |= bit;
fmanga 11:88c459b0ac3a 76 keypress(3);
fmanga 11:88c459b0ac3a 77 }
fmanga 11:88c459b0ac3a 78 }else if( keyState & bit ){
fmanga 11:88c459b0ac3a 79 keyState &= ~bit;
fmanga 11:88c459b0ac3a 80 keyrelease(3);
fmanga 11:88c459b0ac3a 81 }
fmanga 11:88c459b0ac3a 82 bit <<= 1;
fmanga 11:88c459b0ac3a 83
fmanga 11:88c459b0ac3a 84 if( nks & (1<<ABIT) ){ // UP
fmanga 11:88c459b0ac3a 85 if( !(keyState&bit) ) {
fmanga 11:88c459b0ac3a 86 keyState |= bit;
fmanga 11:88c459b0ac3a 87 keypress(4);
fmanga 11:88c459b0ac3a 88 }
fmanga 11:88c459b0ac3a 89 }else if( keyState & bit ){
fmanga 11:88c459b0ac3a 90 keyState &= ~bit;
fmanga 11:88c459b0ac3a 91 keyrelease(4);
fmanga 11:88c459b0ac3a 92 }
fmanga 11:88c459b0ac3a 93 bit <<= 1;
fmanga 11:88c459b0ac3a 94
fmanga 11:88c459b0ac3a 95 if( nks & (1<<BBIT) ){ // UP
fmanga 11:88c459b0ac3a 96 if( !(keyState&bit) ) {
fmanga 11:88c459b0ac3a 97 keyState |= bit;
fmanga 11:88c459b0ac3a 98 keypress(5);
fmanga 11:88c459b0ac3a 99 }
fmanga 11:88c459b0ac3a 100 }else if( keyState & bit ){
fmanga 11:88c459b0ac3a 101 keyState &= ~bit;
fmanga 11:88c459b0ac3a 102 keyrelease(5);
fmanga 11:88c459b0ac3a 103 }
fmanga 11:88c459b0ac3a 104 bit <<= 1;
fmanga 11:88c459b0ac3a 105
fmanga 11:88c459b0ac3a 106
fmanga 11:88c459b0ac3a 107 }
fmanga 11:88c459b0ac3a 108
fmanga 11:88c459b0ac3a 109
fmanga 11:88c459b0ac3a 110 void redrawlcd(){
fmanga 11:88c459b0ac3a 111 }
fmanga 11:88c459b0ac3a 112
fmanga 11:88c459b0ac3a 113 void vmputpixel( int x, int y, int c ){
fmanga 11:88c459b0ac3a 114 // Pokitto::Core::display.directPixel( x, y, c&1 ? COLOR_WHITE : COLOR_GREEN );
fmanga 11:88c459b0ac3a 115 Pokitto::lcdRectangle( 14+(x<<2), 10+(y<<2), 14+((x+1)<<2), 10+((y+1)<<2), c&1 ? COLOR_GRAY_15 : COLOR_GRAY_225 );
fmanga 11:88c459b0ac3a 116
fmanga 11:88c459b0ac3a 117 }
fmanga 11:88c459b0ac3a 118
fmanga 11:88c459b0ac3a 119 void sound(int freq){
fmanga 11:88c459b0ac3a 120 }
fmanga 11:88c459b0ac3a 121
fmanga 11:88c459b0ac3a 122 int gettimeofday( struct timeval *tm ){
fmanga 11:88c459b0ac3a 123 uint32_t t = pok.getTime();
fmanga 11:88c459b0ac3a 124 tm->tv_sec = start + t/1000;
fmanga 11:88c459b0ac3a 125 tm->tv_usec = start + t*10;
fmanga 11:88c459b0ac3a 126 return 0;
fmanga 11:88c459b0ac3a 127 }
fmanga 11:88c459b0ac3a 128
fmanga 11:88c459b0ac3a 129 void error_msg(char *fmt, ...){
fmanga 11:88c459b0ac3a 130 }