Update changelog

This commit is contained in:
meepingsnesroms
2018-10-07 12:18:47 -07:00
parent 21c99fb75e
commit b50ed1e21a
9 changed files with 101 additions and 20 deletions

View File

@@ -1,3 +1,15 @@
------------------------------------------
v0.9 to v0.9.5(Sept 22 2018 - *** ** 2018)
Qt GUI:
*added Mac OS icon
*added Windows icon
*now runs on Windows
Core:
*bus error and address error are now handled properly
----------------------------------------
v0.7 to v0.9(Jul 30 2018 - Sept 22 2018)
Qt GUI:

View File

@@ -51,6 +51,7 @@ Musashi v3.4(last version that builds outside of mame) (68k core)
http://www.iconarchive.com/show/crystal-clear-icons-by-everaldo/App-palm-icon.html (Desktop Icon)
http://tango.freedesktop.org/Tango_Icon_Library (Palm Action Buttons, All UI buttons)
https://www.iconfinder.com/icons/2317746/chip_computer_cpu_device_frequency_microchip_processor_icon (hwTestSuite Icon)
https://www.flaticon.com/free-icon/cow_235371#term=cow&page=1&position=13 (muExpDriver Icon)
Some main board photos by Reddit /u/KHRoN
## Building

View File

@@ -46,6 +46,7 @@ These registers will do nothing it there corresponding feature bit is not set on
#define CMD_STRNCPY 0x0004
#define CMD_STRCMP 0x0005
#define CMD_STRNCMP 0x0006
#define CMD_PRINTF 0x0007
/*new HLE API cmds go here*/
/*new system cmds go here*/

View File

@@ -379,6 +379,12 @@ void setEmuRegister(uint32_t address, uint32_t value){
sandboxReturn();
break;
case CMD_PRINTF:
if(palmSpecialFeatures & FEATURE_DEBUG){
}
break;
default:
debugLog("Invalid emu command 0x%04X.\n", value);
break;

View File

@@ -173,5 +173,6 @@ void m68328LoadState(uint8_t* data){
}
void m68328BusError(uint32_t address, bool isWrite){
//never call outsize of a 68k opcode, behavior is undefined due to longjmp
m68ki_trigger_bus_error(address, isWrite ? MODE_WRITE : MODE_READ, FLAG_S | m68ki_get_address_space());
}

View File

@@ -22,21 +22,21 @@
#define buttonBack keyBitHard3
#define buttonSelect keyBitHard4
#define TYPE_NULL 0x00
#define TYPE_BOOL 0x01
#define TYPE_UINT 0x02
#define TYPE_INT 0x03
#define TYPE_FLOAT 0x04
#define TYPE_PTR 0x05
#define LENGTH_0 0x00/*for null*/
#define LENGTH_1 0x10
#define LENGTH_8 0x20
#define LENGTH_16 0x30
#define LENGTH_32 0x40
#define LENGTH_64 0x50
#define LENGTH_PTR 0x60/*first half of 64bit value is length, second is pointer*/
#define LENGTH_ANY 0x70/*for pointers with a user defined end or no end*/
#define LENGTH_STR 0xF0/*for pointers to string*/
#define TYPE_NULL 0x00
#define TYPE_BOOL 0x01
#define TYPE_UINT 0x02
#define TYPE_INT 0x03
#define TYPE_FLOAT 0x04
#define TYPE_PTR 0x05
#define LENGTH_0 0x00/*for null*/
#define LENGTH_1 0x10
#define LENGTH_8 0x20
#define LENGTH_16 0x30
#define LENGTH_32 0x40
#define LENGTH_64 0x50
#define LENGTH_PTR 0x60/*first half of 64bit value is length, second is pointer*/
#define LENGTH_ANY 0x70/*for pointers with a user defined end or no end*/
#define LENGTH_STR 0xF0/*for pointers to string*/
/*types*/
typedef struct{

View File

@@ -0,0 +1 @@
<svg enable-background="new 0 0 512.001 512.001" viewBox="0 0 512.001 512.001" xmlns="http://www.w3.org/2000/svg"><path d="m123.949 146.034c-24.76 8.253-43.858-13.962-58.3-13.831-14.442.13-65.817 23.295-65.649 41.864.167 18.233 82.682 71.006 140.455 13.233z" fill="#464655"/><path d="m388.052 146.034c24.76 8.253 43.858-13.962 58.3-13.831s65.816 23.296 65.648 41.865c-.166 18.233-82.682 71.006-140.455 13.233z" fill="#464655"/><path d="m342.439 385.215c19.068-82.837 53.867-237.293 53.867-261.266 0-24.76 0-33.013-16.506-49.519-5.26-5.26-15.628-10.469-28.22-15.324-61.338-23.649-129.818-23.649-191.156 0-12.592 4.855-22.959 10.064-28.22 15.324-16.506 16.506-16.506 24.76-16.506 49.519 0 23.973 34.799 178.429 53.867 261.266l-14.078 49.274c-7.532 26.361 12.262 52.603 39.678 52.603h121.674c27.416 0 47.211-26.241 39.678-52.603z" fill="#ffebd2"/><path d="m298.998 406.514h-85.995c-12.718 0-23.029 10.31-23.029 23.029 0 10.654 2.896 21.108 8.377 30.243l9.17 15.284c4.474 7.458 12.534 12.021 21.231 12.021h54.494c8.698 0 16.757-4.563 21.231-12.021l9.17-15.284c5.481-9.135 8.377-19.589 8.377-30.243.002-12.719-10.308-23.029-23.026-23.029z" fill="#ebb4a0"/><path d="m222.987 454.078c-2.112 0-4.224-.806-5.835-2.418l-16.506-16.506c-3.224-3.224-3.224-8.447 0-11.671s8.447-3.224 11.671 0l16.506 16.506c3.224 3.224 3.224 8.446 0 11.67-1.612 1.613-3.724 2.419-5.836 2.419z" fill="#d7a091"/><path d="m289.013 454.078c-2.112 0-4.224-.806-5.835-2.418-3.224-3.224-3.224-8.446 0-11.67l16.507-16.506c3.224-3.224 8.447-3.224 11.671 0s3.224 8.447 0 11.671l-16.506 16.506c-1.613 1.611-3.725 2.417-5.837 2.417z" fill="#d7a091"/><path d="m379.799 74.429c-5.187-5.187-15.345-10.324-27.701-15.121-7.631-9.224-18.432-20.325-30.072-26.145-16.506-8.254-66.026-8.254-66.026-8.254s-49.519 0-66.026 8.253c-11.641 5.821-22.441 16.921-30.072 26.145-12.355 4.797-22.513 9.934-27.701 15.121-14.713 14.713-16.304 22.947-16.479 42.08 11.315.526 25.431 1.112 32.154 1.112 50.35 0 92.638-23.539 106.987-33.987l-7.952 33.086c26.134-.237 72.695-23.358 82.229-33.762l8.553 32.937c25.598-16.708 25.598-24.961 25.598-24.961s16.683.02 31.792 9.152c-1.646-9.035-5.574-15.946-15.284-25.656z" fill="#ffdeb7"/><path d="m116.008 107.526c-.294 4.655-.313 9.959-.313 16.422 0 23.973 34.799 178.429 53.867 261.266 0 0 45.172-87.948 45.172-104.454 0-16.49 8.228-148.284-98.726-173.234z" fill="#6b676e"/><ellipse cx="161.093" cy="202.359" fill="#464655" rx="12.38" ry="20.633"/><path d="m395.993 107.526c.294 4.655.313 9.959.313 16.422 0 23.973-34.799 178.429-53.867 261.266 0 0-45.172-87.948-45.172-104.454 0-16.49-8.227-148.284 98.726-173.234z" fill="#6b676e"/><ellipse cx="350.908" cy="202.359" fill="#464655" rx="12.38" ry="20.633"/></svg>

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

@@ -1,12 +1,64 @@
#include <PalmOS.h>
#include <stdint.h>
#include "testSuite.h"
#include "palmGlobalDefines.h"
#include "specs/hardwareRegisterNames.h"
#include "specs/emuFeatureRegistersSpec.h"
enum{
EMU_STATE_UNTESTED = 0,
EMU_STATE_FALSE,
EMU_STATE_TRUE
};
/*this handler may not work if the opcode size that triggered the bus error isnt 4 bytes, I am currently depending on the compiler generating a 4 byte opcode for that access*/
static const uint16_t skipBusError[5] = {
0x5C8F,/*addq.l #6,sp ; remove error info from stack*/
0x548F,/*addq.l #2,sp ; remove error info from stack*/
0x54AF,/*addq.l #2,2(sp) ; skip over the invalid access, what ever was in the variable before the read should still be there*/
0x0002,/* ; displacement for above*/
0x4E73/*rte ; return*/
};
Boolean isEmulator(){
/*return (readArbitraryMemory32(EMU_REG_ADDR(EMU_INFO)) & FEATURE_EMU_HONEST) != 0;*/
return false;
static uint8_t emuStatus = EMU_STATE_UNTESTED;
uint32_t osVer;
FtrGet(sysFtrCreator, sysFtrNumROMVersion, &osVer);
if(osVer >= PalmOS50){
/*writing to interrupt handlers wont work on OS5+*/
emuStatus = EMU_STATE_FALSE;
}
else{
/*test if first call, else return cached value since testing is intensive*/
if(emuStatus == EMU_STATE_UNTESTED){
uint32_t oldBusErrorHandler = readArbitraryMemory32(2 * sizeof(uint32_t));/*EXCEPTION_BUS_ERROR vector*/
uint8_t oldScr = readArbitraryMemory8(HW_REG_ADDR(SCR));
volatile uint32_t palmSpecialFeatures;/*must be declared volatile since its modifyed by bus error behavior*/
writeArbitraryMemory8(HW_REG_ADDR(SCR), 0xF0);/*enable bus error timeout, clear current invalid accesses*/
writeArbitraryMemory32(2 * sizeof(uint32_t), (uint32_t)skipBusError);/*set EXCEPTION_BUS_ERROR vector*/
/*set fallback value, will be the returned value if bus error timeout occurs*/
palmSpecialFeatures = FEATURE_INVALID;
/*everything is setup, now try to read invalid memory, success == its an emu*/
palmSpecialFeatures = readArbitraryMemory32(EMU_REG_ADDR(EMU_INFO));
if(palmSpecialFeatures == FEATURE_INVALID)
emuStatus = EMU_STATE_FALSE;
else
emuStatus = EMU_STATE_TRUE;
/*restore original state*/
writeArbitraryMemory8(HW_REG_ADDR(SCR), 0xE0 | oldScr);
writeArbitraryMemory32(2 * sizeof(uint32_t), oldBusErrorHandler);
}
}
return emuStatus == EMU_STATE_TRUE;
}
Boolean isEmulatorFeatureEnabled(uint32_t feature){

View File

@@ -1,8 +1,15 @@
#ifndef ARBITRARY_MEMORY_ACCESS_HEADER
#define ARBITRARY_MEMORY_ACCESS_HEADER
#ifndef PALM_GLOBAL_DEFINES_HEADER
#define PALM_GLOBAL_DEFINES_HEADER
#include <PalmOS.h>
#include <stdint.h>
#define CODE_SECTION(codeSection) __attribute__((section(codeSection)))
#define ALIGN(size) __attribute__((aligned(size)))
#define PalmOS35 sysMakeROMVersion(3, 5, 0, sysROMStageRelease, 0)
#define PalmOS50 sysMakeROMVersion(5, 0, 0, sysROMStageRelease, 0)
#define readArbitraryMemory8(address) (*((volatile uint8_t*)(address)))
#define readArbitraryMemory16(address) (*((volatile uint16_t*)(address)))
#define readArbitraryMemory32(address) (*((volatile uint32_t*)(address)))