summaryrefslogtreecommitdiff
path: root/arm7/source/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'arm7/source/main.c')
-rw-r--r--arm7/source/main.c179
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();
- }
-}
-
-