Project Blacksphere Intro Hardware Nokia OS Software Debug Tracing Knok Linux MADos DCT3 lowlevel lib Sendcode Glossary of Terms Todo Credits Forum Guestbook

MADos

MADos by g3gg0

This is an development environment for creating your own demos or even games and applications for 3310/3330/3350/3410 phones, like Krisha and I made. Therein is everything u need to compile your own flash... (compiler, editor, tools) the code is plain C. Example code is included!

You CAN inject this code into nokia firmware with this package...

Here's a ChangeLog

Phones

3310works
3330works
3350not tested yet, but should work except LCD (not 84x48)
3410not tested yet
8210works

Status

[name][m'tainer][state][comment]

Hardware Routines:
LCDg3gg0Yes
KeypadkrishaYeseven buffering at int level
LED'sg3gg0Yes-
CCONTg3gg0Yesworks, but cannot change to _io[] mode ;(
DSPM457Yesupload code etc int triggering (not tested)
MDIM457Partialsome code, but could not test yet due lack of DSP knowledge
VibrakrishaYes-
BuzzerkrishaYeseven with wav playback ;)
Interruptsg3gg0YesINT-handler is extendable with int_irq_set_handler() etc
Flash-ICg3gg0Yesident, erase and program flash blocks
Timerg3gg0Yestimer-int as source for internal time variable
Xbus/FlashDebugwumpusYesonly ME->PC data transfer yet
MBuswumpusYes2-way, but doesnt work yet with INT-disabling in other thread

Graphic Routines:
rect/line/pixel drawkrishaYes-
fill screen w/ patterng3gg0Yes-
clear screeng3gg0Yes-
bitmap drawingg3gg0Yes-
text drawingg3gg0Yesfixed and variable font, different fonts
dialog boxkrishaYesnumber or text, scrolling in alpha state
menu routineschief359Yesvery comfortable, with callbacks
animationschief359Yesextra thread that handles animations, optimisations needed
thread-safenesschief359Yesextra thread updating screen every 40ms (should: IPC ?)

Scheduler Routines:
add threadg3gg0Yesspecifying mode (sleep or running)
place thread asleepg3gg0Yes-
wakeup a threadg3gg0Yes-
wakeup thread at spec. timeg3gg0Yes-
set thread as masterg3gg0Yesthread runs as single thread (other threads locked)
stabilityg3gg0goodseems to work well :)

IPC Routines:
add messageg3gg0Yes-
check for messageg3gg0Yes-
get messageg3gg0Yes-

Library Routines:
randomg3gg0Yesuses lib_get_time
timeg3gg0Yes1/1000 seconds since phone startup
malloc/freechief359Yesworks good :)
sleepg3gg0Yesuses scheduler to sleep if possible
memset/memcpy/memmoveg3gg0Yessize of memmove restricted, M457 will optimize it for ASM

Functionality

[name][state][comment]
OthelloDoneby Dr.Hackstable
HangmanDoneby krisha
SnakeDoneby krisha
StarsDoneby krisha
TetrisDoneby chief359
FireDoneby g3gg0
AD-converter displayDone
ChargingDoneshould work okay
OscilloscopeDoneuses charger input as src
UnlockersDonevarious unlocker calcs and codes

Download

This is the cygwin environment needed for MADos

please use CVS (described below) do get the latest sources...

How to proceed

You should see the bash shell...

Try to run 'mc' a norton commander clone..

With this tool you can edit your C code with syntax hilghlighting if u want to decompress it to C:\

You have to run the cygwin_c.reg AND edit the .bat to fit the paths.

If you cannot manage the installation, then you are probably not the right one for this development environment, sorry....

If you have some problems with cygwin, please contact a friend who knows a little about linux.. he will know how to help!

My mailbox is surely not the right place to ask about things like that!

Public CVS

If you dont know what CVS is: get WinCVS (for win), MAcCVS (for mac) or gCVS (for linux) from http://www.wincvs.org

It is a version management system, used by millions of developers; with CVS u can share your code with other people spread all over the world..

First you check out a "module" (e.g. MADos is a module) from a "repository" (the server) then u can change what u like... after you changed something, you can "commit" these changes to the "repository".

CVS will check WHAT you've changed and commmit these changes.. so if user A changes the second line in a file and user B changes the 10th line and both commit their changes, CVS will first replace the second line and then changes the 10th line.. conflicts can occur, but they are rather seldom...

If you want to bring your code to the latest version, you just need to select "update" (with -d to also add new directories) - it will keep the changes u made and merge it with the changes the other developers made... so a update is normally safe...

To get more information read the HOWTOs about CVS...

Connection information:

Authenticationpserver
Path/root
Host addrg3gg0.de
Usernamepublic
Passwordbehave!
Modulenokia/MADos

Note that you just have READ ACCESS... So u cannot "commit" the changes you made. if you made some changes and want these to appear in the CVS, do a CVS "update" and then zip and mail the files to MADos@g3gg0.dyndns.org - i will do it for you...

Last updated: 2005-02-21 14:19

This site is the result of a great deal of assembly code reading, research, countless (mostly futile) searches for data sheets, cross-referencing and analysing. If you use this information in any way please mention wumpus <blacksphere@goliath.darktech.org> (and others in the credits section) in the credits of your program/document. And tell me :) If you have more information please contribute. If you just copy this, stick your name on it and call it yours I hope you get your genitals bitten off by a three headed monkey. Have a nice day.

No mobile phones were harmed in the production of this site.