code refactoring
This commit is contained in:
parent
1af3a1bf87
commit
7bf316c9f9
46
ovl-upload.c
46
ovl-upload.c
|
@ -275,18 +275,6 @@ int main() {
|
|||
// Main loop
|
||||
while (1) {
|
||||
|
||||
// Check inBuffer for answer
|
||||
|
||||
//~ if( strcmp(inBuffer, OKAY) == 0 ){
|
||||
|
||||
//~ loadFileID = !loadFileID;
|
||||
|
||||
//~ FntPrint("Change");
|
||||
|
||||
//~ for(char c = 0; c < sizeof(inBuffer); c++){ inBuffer[c] = 0; }
|
||||
|
||||
//~ }
|
||||
|
||||
// Overlay switch
|
||||
|
||||
if ( overlayFileID != loadFileIDwas ){
|
||||
|
@ -325,6 +313,18 @@ int main() {
|
|||
|
||||
}
|
||||
|
||||
#ifndef USECD
|
||||
|
||||
if (! PCload( &load_all_overlays_here, inBuffer, &overlayFileID ) ){
|
||||
|
||||
overlayFileID = !overlayFileID;
|
||||
|
||||
loadFileIDwas = !loadFileIDwas;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef USECD
|
||||
|
||||
cdread = CdReadFile( (char *)(overlayFile), &load_all_overlays_here, 0);
|
||||
|
@ -349,26 +349,11 @@ int main() {
|
|||
|
||||
// If select is pressed, change overlay
|
||||
|
||||
if (PadStatus & PADselect && !timer) {
|
||||
|
||||
// We send the memory address where the file should be loaded, the memory address of the loadFileID, so that the screen is updated when it changes, and the file id.
|
||||
// format : 00(:)01(:)06(:)04 xx xx xx xx(:)04 xx xx xx xx(:)01 (separators are not send)
|
||||
// 14 bytes
|
||||
#ifndef USECD
|
||||
|
||||
PCload( &load_all_overlays_here, inBuffer, &overlayFileID );
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef USECD
|
||||
|
||||
// We can do that because we only have two files
|
||||
if ( ( PadStatus & PADselect ) && !timer ) {
|
||||
|
||||
overlayFileID = !overlayFileID;
|
||||
|
||||
#endif
|
||||
|
||||
timer = 30;
|
||||
timer = 150;
|
||||
|
||||
}
|
||||
|
||||
|
@ -455,11 +440,12 @@ int main() {
|
|||
|
||||
#ifndef USECD
|
||||
|
||||
FntPrint("loadFileIDwas : %d\n", loadFileIDwas);
|
||||
|
||||
FntPrint("Overlay with id %d loaded at 0x%08x\n", overlayFileID, &load_all_overlays_here );
|
||||
|
||||
FntPrint("buffer at %08x : %s\n", inBuffer, inBuffer);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef USECD
|
||||
|
|
Binary file not shown.
267
ovl-upload.py
267
ovl-upload.py
|
@ -38,14 +38,22 @@ pcdrvEscape = '00'
|
|||
|
||||
pcdrvProtocol = '01'
|
||||
|
||||
pcdrvCommand = '06'
|
||||
# Commands
|
||||
|
||||
LOAD = '06'
|
||||
|
||||
OPEN = '00'
|
||||
|
||||
loadParams = {'memAddr':-1,'flagAddr':-1, 'loadFile':-1}
|
||||
|
||||
openParams = {'fileName':-1,'mode':-1}
|
||||
|
||||
paramBuffer = {}
|
||||
|
||||
# Names of the overlay files to load.
|
||||
# See l.550
|
||||
|
||||
overlayFile0 = "Overlay.ovl0"
|
||||
|
||||
overlayFile1 = "Overlay.ovl1"
|
||||
overlayFiles = {'00':"Overlay.ovl0", '01':"Overlay.ovl1" }
|
||||
|
||||
# Serial connection setup
|
||||
|
||||
|
@ -73,14 +81,8 @@ uniDebugMode = 0
|
|||
|
||||
Command = ""
|
||||
|
||||
memAddr = ""
|
||||
|
||||
flagAddr = ""
|
||||
|
||||
loadFile = -1
|
||||
|
||||
levelId = ""
|
||||
|
||||
# One byte
|
||||
|
||||
#uno = int(1).to_bytes(1, byteorder='little', signed=False)
|
||||
|
@ -91,6 +93,8 @@ data = 0
|
|||
|
||||
checkSum = 0
|
||||
|
||||
checkSumLen = 9 # Corresponding value in pcdrv.h, l.54
|
||||
|
||||
# If set, it means the data transfer has been initiated
|
||||
|
||||
Transfer = 0
|
||||
|
@ -225,6 +229,48 @@ def CalculateChecksum( inBytes, skipFirstSector = False):
|
|||
|
||||
return returnVal;
|
||||
|
||||
def getData(dataInBuffer):
|
||||
|
||||
dataLen = 0
|
||||
|
||||
parsedData = ""
|
||||
|
||||
# Get data length byte
|
||||
|
||||
if len(dataInBuffer) == 2:
|
||||
|
||||
parsedData = dataInBuffer
|
||||
|
||||
dataInBuffer = ""
|
||||
|
||||
return [dataInBuffer, parsedData] # does it break ?
|
||||
|
||||
dataLen = dataInBuffer[:2]
|
||||
|
||||
# We're receiving 8 chars to describe a 4 bytes pointer, hence the * 2
|
||||
|
||||
dataLen = int(dataLen) * 2
|
||||
|
||||
dataInBuffer = dataInBuffer[2:]
|
||||
|
||||
# Get actual data
|
||||
|
||||
for b in dataInBuffer :
|
||||
|
||||
if len(parsedData) < dataLen :
|
||||
|
||||
parsedData += b
|
||||
|
||||
# Remove data from buffer
|
||||
|
||||
dataInBuffer = dataInBuffer[dataLen:]
|
||||
|
||||
if DEBUG:
|
||||
|
||||
print( "Data in buffer 1: " + dataInBuffer )
|
||||
|
||||
return [dataInBuffer, parsedData]
|
||||
|
||||
def WriteBytes( inData ):
|
||||
|
||||
if DEBUG:
|
||||
|
@ -370,6 +416,8 @@ def WriteBytes( inData ):
|
|||
|
||||
numChunk = 0
|
||||
|
||||
return True
|
||||
|
||||
# END WHILE DATA
|
||||
|
||||
def SendBin( inData, memAddr ):
|
||||
|
@ -449,17 +497,13 @@ def SendBin( inData, memAddr ):
|
|||
|
||||
# Send dat data
|
||||
|
||||
WriteBytes( inData )
|
||||
return WriteBytes( inData )
|
||||
|
||||
def resetListener():
|
||||
|
||||
global checkSum, data, Listen, Transfer, dataSize, memAddr, loadFile, flagAddr, levelId
|
||||
global checkSum, data, Listen, Transfer, dataSize, loadFile
|
||||
|
||||
memAddr = ""
|
||||
|
||||
flagAddr = ""
|
||||
|
||||
loadFile = ""
|
||||
loadFile = -1
|
||||
|
||||
checkSum = 0
|
||||
|
||||
|
@ -469,8 +513,6 @@ def resetListener():
|
|||
|
||||
Transfer = 0
|
||||
|
||||
levelId = 0
|
||||
|
||||
Listen = 1
|
||||
|
||||
ser.reset_input_buffer()
|
||||
|
@ -481,7 +523,7 @@ def main(args):
|
|||
|
||||
while True:
|
||||
|
||||
global checkSum, data, Listen, Transfer, dataSize, memAddr, loadFile, flagAddr, levelId
|
||||
global checkSum, checkSumLen, data, Listen, Transfer, dataSize, loadFile, paramBuffer
|
||||
|
||||
# Flush serial buffers to avoid residual data
|
||||
|
||||
|
@ -497,10 +539,6 @@ def main(args):
|
|||
|
||||
print("Listening for incoming data...")
|
||||
|
||||
if DEBUG > 1:
|
||||
|
||||
print("memAddr : " + str(memAddr) + " - loadFile" + str(loadFile ))
|
||||
|
||||
while True:
|
||||
|
||||
# If data on serial, fill buffer
|
||||
|
@ -515,9 +553,11 @@ def main(args):
|
|||
|
||||
if inputBuffer:
|
||||
|
||||
# We're expecting the command with format : 00 01 06 08 xx xx xx xx 08 xx xx xx xx 01 xx xx (16 bytes)
|
||||
print( "Incoming data : " + inputBuffer )
|
||||
|
||||
if len(inputBuffer) == 38:
|
||||
# We're expecting the command with format : 00 01 06 04 xx xx xx xx 04 xx xx xx xx 01 xx xx xx xx xx (38 Bytes)
|
||||
|
||||
if len(inputBuffer) == 37:
|
||||
|
||||
if DEBUG:
|
||||
|
||||
|
@ -525,7 +565,7 @@ def main(args):
|
|||
|
||||
# Get the checksum and remove it from the buffer
|
||||
|
||||
CmdCheckSum = inputBuffer[-10:]
|
||||
CmdCheckSum = inputBuffer[-checkSumLen:]
|
||||
|
||||
if DEBUG:
|
||||
|
||||
|
@ -541,12 +581,6 @@ def main(args):
|
|||
|
||||
print( "Computed ChkSm: " + str(dataCheckSum) )
|
||||
|
||||
# Not using the checksum for now
|
||||
|
||||
# ~ dataCheckSum = 0
|
||||
|
||||
# ~ CmdCheckSum = 0
|
||||
|
||||
# Check
|
||||
|
||||
if int(dataCheckSum) == int(CmdCheckSum):
|
||||
|
@ -573,77 +607,55 @@ def main(args):
|
|||
|
||||
inputBuffer = inputBuffer[2:]
|
||||
|
||||
if inputBuffer[:2] == pcdrvCommand:
|
||||
|
||||
if DEBUG:
|
||||
|
||||
print( "Received Cmd: " + inputBuffer[:2] )
|
||||
|
||||
# Command byte is valid (06), remove it from buffer and continue
|
||||
# Command bytes are LOAD == 06
|
||||
|
||||
if inputBuffer[:2] == LOAD:
|
||||
|
||||
# Set corresponding parameters and mode
|
||||
|
||||
paramTmp = loadParams
|
||||
|
||||
Command = LOAD
|
||||
|
||||
# Command butes are OPEN == 00
|
||||
|
||||
elif inputBuffer[:2] == OPEN:
|
||||
|
||||
paramTmp = openParams
|
||||
|
||||
Command = OPEN
|
||||
|
||||
else:
|
||||
|
||||
print("Command not recognized : got " + inputBuffer[:2] )
|
||||
|
||||
break
|
||||
|
||||
# Command byte is valid , remove it from buffer and continue
|
||||
|
||||
inputBuffer = inputBuffer[2:]
|
||||
|
||||
dataInBuffer = inputBuffer
|
||||
|
||||
if DEBUG:
|
||||
# For each parameter, populate corresponding data
|
||||
|
||||
print( "Data in buffer: " + dataInBuffer )
|
||||
for param in paramTmp:
|
||||
|
||||
dataLen = 0
|
||||
|
||||
# Get data length byte
|
||||
|
||||
dataLen = dataInBuffer[:2]
|
||||
|
||||
dataInBuffer = dataInBuffer[2:]
|
||||
|
||||
# Get actual data
|
||||
|
||||
for b in dataInBuffer :
|
||||
|
||||
if len(memAddr) < int(dataLen) :
|
||||
|
||||
memAddr += b
|
||||
|
||||
# Remove data from buffer
|
||||
|
||||
dataInBuffer = dataInBuffer[int(dataLen):]
|
||||
|
||||
if DEBUG > 1:
|
||||
|
||||
print( "Data in buffer 1: " + dataInBuffer )
|
||||
|
||||
dataLen = 0
|
||||
|
||||
dataLen = dataInBuffer[:2]
|
||||
|
||||
dataInBuffer = dataInBuffer[2:]
|
||||
|
||||
# Get actual data
|
||||
|
||||
for b in dataInBuffer :
|
||||
|
||||
if len(flagAddr) < int(dataLen) :
|
||||
|
||||
flagAddr += b
|
||||
|
||||
# Remove data from buffer
|
||||
|
||||
dataInBuffer = dataInBuffer[int(dataLen):]
|
||||
|
||||
if DEBUG > 1:
|
||||
|
||||
print( "Data in buffer 2: " + dataInBuffer )
|
||||
|
||||
# We should only have two bytes remaining
|
||||
|
||||
if len(dataInBuffer) == 2:
|
||||
|
||||
loadFile = int(dataInBuffer)
|
||||
dataInBuffer, paramTmp[param] = getData(dataInBuffer)
|
||||
|
||||
if DEBUG:
|
||||
|
||||
print( memAddr + " - " + flagAddr + " - " + str(loadFile) )
|
||||
for param in paramTmp:
|
||||
|
||||
print(param + ":" + paramTmp[param] + " - ")
|
||||
|
||||
# Commit parsed data to param buffer
|
||||
|
||||
paramBuffer = paramTmp
|
||||
|
||||
ser.reset_input_buffer()
|
||||
|
||||
|
@ -670,67 +682,48 @@ def main(args):
|
|||
|
||||
break
|
||||
|
||||
if memAddr and flagAddr:
|
||||
if len(paramBuffer):
|
||||
|
||||
# Remove separator and ';1' at end of the string
|
||||
# Check that no param is undefined ( != -1 )
|
||||
|
||||
# ~ fileClean = loadFile.split(';')[0][1:]
|
||||
fileID = loadFile
|
||||
for param in paramBuffer:
|
||||
|
||||
print("Received addresses and file ID : " + memAddr + " - " + flagAddr + " - " + str(fileID))
|
||||
if paramBuffer[param] == -1:
|
||||
|
||||
# TODO : replace with a proper level naming scheme
|
||||
# right now, we're receiving currently loaded file
|
||||
# so we have to switch manually here.
|
||||
print("Error : parameter " + param + " is undefined.")
|
||||
|
||||
binFileName = ""
|
||||
break
|
||||
|
||||
if fileID == 0:
|
||||
if Command == LOAD:
|
||||
|
||||
binFileName = overlayFile1
|
||||
if DEBUG > 1:
|
||||
|
||||
levelId = 1
|
||||
print("Received addresses and file ID : " + paramBuffer['memAddr'] + " - " + paramBuffer['flagAddr'] + " - " + paramBuffer['loadFile'] )
|
||||
|
||||
if fileID == 1:
|
||||
|
||||
binFileName = overlayFile0
|
||||
|
||||
levelId = 0
|
||||
binFileName = overlayFiles[ paramBuffer['loadFile'] ]
|
||||
|
||||
if DEBUG:
|
||||
|
||||
print(
|
||||
|
||||
"Load Data to : " + memAddr + "\n" +
|
||||
"Load Data to : " + paramBuffer['memAddr'] + "\n" +
|
||||
|
||||
"Reset flag at: " + flagAddr + "\n" +
|
||||
"Reset flag at: " + paramBuffer['flagAddr'] + "\n" +
|
||||
|
||||
"FileID : " + str(loadFile) + "\n" +
|
||||
"LoadFile : " + paramBuffer['loadFile'] + "\n" +
|
||||
|
||||
"Bin : " + binFileName + " - ID : " + str(levelId)
|
||||
"Bin : " + binFileName
|
||||
|
||||
)
|
||||
|
||||
# Open file as binary if bin filename is defined
|
||||
|
||||
if binFileName:
|
||||
# ~ if binFileName:
|
||||
|
||||
binFile = open( dataFolder + binFileName, 'rb' )
|
||||
|
||||
data = binFile.read()
|
||||
|
||||
Transfer = 1
|
||||
|
||||
else:
|
||||
|
||||
print(" No filename provided, doing nothing ")
|
||||
|
||||
resetListener()
|
||||
|
||||
# If Init was set, initialize transfer and send data
|
||||
|
||||
if Transfer:
|
||||
|
||||
print("Initializing data transfer...")
|
||||
|
||||
if not uniDebugMode:
|
||||
|
@ -739,23 +732,15 @@ def main(args):
|
|||
|
||||
setDEBG()
|
||||
|
||||
# Send level data
|
||||
# Send data
|
||||
|
||||
SendBin( data, memAddr )
|
||||
|
||||
# Set level changed flag
|
||||
|
||||
if DEBUG:
|
||||
|
||||
print("Sending value " + str( levelId.to_bytes(1, byteorder='little', signed=False) ) + " to " + flagAddr )
|
||||
if SendBin( data, paramBuffer['memAddr'] ):
|
||||
|
||||
time.sleep( sleepTime )
|
||||
|
||||
# ~ SendBin( levelId.to_bytes(1, byteorder='little', signed=False) , flagAddr)
|
||||
# Send ACK
|
||||
|
||||
time.sleep( sleepTime )
|
||||
|
||||
SendBin( b'OKYA' , flagAddr)
|
||||
SendBin( b'OKYA' , paramBuffer['flagAddr'])
|
||||
|
||||
# Reset everything
|
||||
|
||||
|
@ -763,6 +748,16 @@ def main(args):
|
|||
|
||||
print("DONE!")
|
||||
|
||||
# ~ else:
|
||||
|
||||
# ~ print(" No filename provided, doing nothing. ")
|
||||
|
||||
# ~ resetListener()
|
||||
|
||||
if Command == OPEN:
|
||||
|
||||
print("Received OPEN. Not yet implemented !")
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
64
pcdrv.c
64
pcdrv.c
|
@ -1,5 +1,15 @@
|
|||
#include "pcdrv.h"
|
||||
|
||||
|
||||
void wait(){
|
||||
|
||||
for(u_int wait = 0; wait < 100; wait++){
|
||||
|
||||
wait = wait;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
static char sio_read(){
|
||||
|
||||
char c;
|
||||
|
@ -111,8 +121,6 @@ u_short waitForSIODone( volatile u_char * bufferAddress){
|
|||
|
||||
if( strcmp(buffer, OKYA) == 0 ){
|
||||
|
||||
FntPrint("WORX!\n\n");
|
||||
|
||||
SIOdone = 1;
|
||||
|
||||
break;
|
||||
|
@ -123,7 +131,7 @@ u_short waitForSIODone( volatile u_char * bufferAddress){
|
|||
|
||||
// Avoid infinite loop
|
||||
|
||||
if ( i > 10000 ){
|
||||
if ( i > 1000 ){
|
||||
|
||||
break;
|
||||
|
||||
|
@ -131,6 +139,8 @@ u_short waitForSIODone( volatile u_char * bufferAddress){
|
|||
|
||||
}
|
||||
|
||||
for (short i; i < 4;i++){ bufferAddress[i] = 0; }
|
||||
|
||||
return SIOdone;
|
||||
|
||||
};
|
||||
|
@ -138,66 +148,63 @@ u_short waitForSIODone( volatile u_char * bufferAddress){
|
|||
u_short PCload( u_long * loadAddress, volatile u_char * bufferAddress, u_char * overlayFileID ) {
|
||||
|
||||
// Send filename , load address, and flag address
|
||||
// E.G : 00 01 06 04 8001000 04 80010001 01 + 0000000000 <- cmd checksum
|
||||
// Returns 1 if ok, 0 else
|
||||
// E.G : 00 01 06 04 80010000 08 80010001 01 + 0000000000 <- cmd checksum
|
||||
// 00 01 06 08 8003edf8 08 8001f0f0 00 2439964735 -> 38 Bytes
|
||||
|
||||
char commandBuffer[28];
|
||||
|
||||
sprintf(commandBuffer, "%02u%02u%02u08%08x08%08x%02u", ESCAPE, PROTOCOL, LOAD, loadAddress, bufferAddress, *overlayFileID);
|
||||
sprintf(commandBuffer, "%02u%02u%02u%02u%08x%02u%08x%02u", ESCAPE, PROTOCOL, LOAD, sizeof(loadAddress), loadAddress,sizeof(bufferAddress), bufferAddress, *overlayFileID);
|
||||
|
||||
u_int cmdChecksum = djbHash(commandBuffer, 28);
|
||||
|
||||
printf("%s%10u", commandBuffer, cmdChecksum);
|
||||
printf("%s%*u", commandBuffer, CHECKSUM_LEN, cmdChecksum);
|
||||
|
||||
// Need delay ?
|
||||
wait();
|
||||
|
||||
for(u_int wait = 0; wait < 100; wait++){
|
||||
|
||||
wait = wait;
|
||||
|
||||
}
|
||||
|
||||
if( waitForSIODone(bufferAddress) ) {
|
||||
|
||||
*overlayFileID = !*overlayFileID;
|
||||
return waitForSIODone(bufferAddress);
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
|
||||
int PCopen( const char * filename, u_char mode ){
|
||||
int PCopen( const char * filename, u_char mode, volatile u_char * bufferAddress ){
|
||||
|
||||
// Open filename in mode
|
||||
// Returns file descriptor or -1 if fail
|
||||
// E.G : 00 01 00 04 48454C4F 00 + 0000000000 <- cmd checksum
|
||||
// E.G : 00 01 00 04 48454C4F 00 + 0000000000 <- cmd checksum 18 + CHECKSUM_LEN B
|
||||
|
||||
u_int bufferLen = 10 + strLen( filename );
|
||||
u_int bufferLen = 10 + strlen( filename );
|
||||
|
||||
char commandBuffer[ bufferLen ];
|
||||
|
||||
sprintf(commandBuffer, "%02u%02u%02u%02u%s%02u", ESCAPE, PROTOCOL, OPEN, bufferLen, filename, mode);
|
||||
sprintf(commandBuffer, "%02u%02u%02u%02u%*s%02u", ESCAPE, PROTOCOL, OPEN, strlen( filename ), strlen( filename ), filename, mode);
|
||||
|
||||
u_int cmdChecksum = djbHash( commandBuffer, bufferLen);
|
||||
|
||||
printf("%s%10u", commandBuffer, cmdChecksum);
|
||||
printf("%s%*u", commandBuffer, CHECKSUM_LEN, cmdChecksum);
|
||||
|
||||
wait();
|
||||
|
||||
return waitForSIODone(bufferAddress);
|
||||
}
|
||||
|
||||
|
||||
// WIP : Build command for use with putchar instead of printf
|
||||
|
||||
void BuildCmd(){
|
||||
//~ // Build command in the buffer
|
||||
|
||||
u_char escape = 0; // Hypothetical Escape char for unirom
|
||||
// Build command in the buffer
|
||||
|
||||
u_char protocol = 1; // Hypothetical protocol indicator for unirom
|
||||
u_char escape = 0x00; // Hypothetical Escape char for unirom
|
||||
|
||||
//~ // Command is 14 B data + 5 B checksum
|
||||
u_char protocol = 0x01; // Hypothetical protocol indicator for unirom
|
||||
|
||||
u_char commandBuffer[19] = {0};
|
||||
// Command is 18 B data + 10 B checksum
|
||||
|
||||
u_char checkSumLen = 5;
|
||||
char commandBuffer[28] = {0};
|
||||
|
||||
u_char checkSumLen = 10;
|
||||
|
||||
short i = 0;
|
||||
|
||||
|
@ -207,7 +214,6 @@ void BuildCmd(){
|
|||
|
||||
// FntPrint("%x\n", loadAddress);
|
||||
|
||||
|
||||
while( i < sizeof( commandBuffer) - checkSumLen ){
|
||||
|
||||
if( i == 0 ){
|
||||
|
|
30
pcdrv.h
30
pcdrv.h
|
@ -28,28 +28,30 @@
|
|||
#include <sys/types.h>
|
||||
#include <stdint.h>
|
||||
#include <stdio.h>
|
||||
#include <libsio.h>
|
||||
//~ #include <libsio.h>
|
||||
#include <string.h>
|
||||
|
||||
#define ESCAPE 00 // Hypothetical Escape char for unirom
|
||||
#define ESCAPE 0x00 // Hypothetical Escape char for unirom
|
||||
|
||||
#define PROTOCOL 01
|
||||
#define PROTOCOL 0x01
|
||||
|
||||
//pcdrv commands
|
||||
|
||||
#define OPEN 00
|
||||
#define CLOSE 01
|
||||
#define SEEK 02
|
||||
#define READ 03
|
||||
#define WRITE 04
|
||||
#define CREATE 05
|
||||
#define LOAD 06
|
||||
#define OPEN 0x00
|
||||
#define CLOSE 0x01
|
||||
#define SEEK 0x02
|
||||
#define READ 0x03
|
||||
#define WRITE 0x04
|
||||
#define CREATE 0x05
|
||||
#define LOAD 0x06
|
||||
|
||||
// flags parameters
|
||||
|
||||
#define O_RDONLY 0
|
||||
#define O_WRONLY 1
|
||||
#define O_RDWR 2
|
||||
#define O_RDONLY 0x00
|
||||
#define O_WRONLY 0x01
|
||||
#define O_RDWR 0x02
|
||||
|
||||
#define CHECKSUM_LEN 9
|
||||
|
||||
static char sio_read();
|
||||
|
||||
|
@ -69,7 +71,7 @@ void sendRU32(uint32_t data);
|
|||
|
||||
u_short PCload( u_long * loadAddress, volatile u_char * bufferAddress, u_char * overlayFileID );
|
||||
|
||||
int PCopen( const char * filename, int mode );
|
||||
int PCopen( const char * filename, u_char mode, volatile u_char * bufferAddress );
|
||||
|
||||
int PCcreate(const char * filename, int attributes );
|
||||
|
||||
|
|
Loading…
Reference in New Issue