diff options
Diffstat (limited to 'arm7/source')
| -rw-r--r-- | arm7/source/main.c | 179 | 
1 files changed, 0 insertions, 179 deletions
| diff --git a/arm7/source/main.c b/arm7/source/main.c deleted file mode 100644 index 6579ad2..0000000 --- a/arm7/source/main.c +++ /dev/null @@ -1,179 +0,0 @@ -/* -   ds81 - Nintendo DS ZX81 emulator. - -   Copyright (C) 2006  Ian Cowburn <ianc@noddybox.co.uk> -    -   This program is free software; you can redistribute it and/or -   modify it under the terms of the GNU General Public License -   as published by the Free Software Foundation; either version 2 -   of the License, or (at your option) any later version. -    -   This program is distributed in the hope that it will be useful, -   but WITHOUT ANY WARRANTY; without even the implied warranty of -   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -   GNU General Public License for more details. -    -   You should have received a copy of the GNU General Public License -   along with this program; if not, write to the Free Software -   Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. -   -   $Id$ - -   This file is largely based on the libnds examples. -*/ - -#include <nds.h> - -#include <nds/bios.h> -#include <nds/arm7/touch.h> -#include <nds/arm7/clock.h> - -#include <dswifi7.h> - -#include "ds81_ipc.h" - -static void FIFO_Handler(u32 msg); - -static void VblankHandler(void) -{ -    static int heartbeat = 0; - -    uint16 but=0, x=0, y=0, xpx=0, ypx=0, z1=0, z2=0, batt=0, aux=0; -    int t1=0, t2=0; -    uint32 temp=0; -    uint8 ct[sizeof(IPC->curtime)]; -    u32 i; - -    /*  Update the heartbeat */ -    heartbeat++; - -    /*  Read the touch screen */ -    but = REG_KEYXY; - -    if (!(but & (1<<6))) -    { -	touchPosition tempPos = touchReadXY(); - -	x = tempPos.x; -	y = tempPos.y; -	xpx = tempPos.px; -	ypx = tempPos.py; -    } - -    z1 = touchRead(TSC_MEASURE_Z1); -    z2 = touchRead(TSC_MEASURE_Z2); - -    batt = touchRead(TSC_MEASURE_BATTERY); -    aux  = touchRead(TSC_MEASURE_AUX); - -    /*  Read the time */ -    rtcGetTime((uint8 *)ct); -    BCDToInteger((uint8 *)&(ct[1]), 7); - -    /*  Read the temperature */ -    temp = touchReadTemperature(&t1, &t2); - -    /*  Update the IPC struct */ -    IPC->mailBusy	= 1; - -    IPC->heartbeat	= heartbeat; -    IPC->buttons	= but; -    IPC->touchX		= x; -    IPC->touchY		= y; -    IPC->touchXpx	= xpx; -    IPC->touchYpx	= ypx; -    IPC->touchZ1	= z1; -    IPC->touchZ2	= z2; -    IPC->battery	= batt; -    IPC->aux		= aux; - -    for(i=0; i<sizeof(ct); i++) -    { -	IPC->curtime[i] = ct[i]; -    } - -    IPC->temperature = temp; -    IPC->tdiode1 = t1; -    IPC->tdiode2 = t2; - -    IPC->mailBusy = 0; - -    Wifi_Update();  -} - -/* callback to allow wifi library to notify arm9 -*/ -static void ARM7_SyncToARM9(void) -{ -    REG_IPC_FIFO_TX =  DS81_WIFI_SYNC_IPC; -} - -/* interrupt handler to allow incoming notifications from arm9 -*/ -static void ARM7_Fifo(void) -{ -    while(!(REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY)) -    { -    	u32 msg; - -	msg = REG_IPC_FIFO_RX; -	FIFO_Handler(msg); -    } -} - -/* Handler for FIFO messages -*/ -static void FIFO_Handler(u32 msg) -{ -    static int next_is_wifi=0; -     -    if (next_is_wifi) -    { -    	next_is_wifi = 0; -	Wifi_Init(msg); -	Wifi_SetSyncHandler(ARM7_SyncToARM9);  - -	irqSet(IRQ_WIFI, Wifi_Interrupt);  -	irqEnable(IRQ_WIFI); -    } -    else -    { -    	switch(msg) -	{ -	    case DS81_WIFI_INIT_IPC: -	    	next_is_wifi = 1; -		break; - -	    case DS81_WIFI_SYNC_IPC: -		Wifi_Sync(); -		break; -	} -    } -} - -int main(int argc, char ** argv) -{ -    /*  enable & prepare fifo asap */ -    REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR;  - -    IPC->mailBusy = 1; - -    /*  Reset the clock if needed */ -    rtcReset(); - -    irqInit(); -    irqSet(IRQ_VBLANK, VblankHandler); -    irqEnable(IRQ_VBLANK); -     -    irqSet(IRQ_FIFO_NOT_EMPTY,ARM7_Fifo); /*  set up fifo irq */ -    irqEnable(IRQ_FIFO_NOT_EMPTY); - -    REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_RECV_IRQ; - -    while (1) -    { -    	swiWaitForVBlank(); -    } -} - - | 
