Hi, If anyone cares about using the peripherals from the ARM CPU on the 49g+, I have found something interesting in the ROM. The special function registers are remapped - they are in a different location then published in the samsung datasheet. I belive I have found out how they are remapped. The following code comes from the ROM (thanks to Mwyann for the ROM dump) 43fc: e3a01440 mov r1, #1073741824 ; 0x40000000 4400: e3a00000 mov r0, #0 ; 0x0 4404: e3a02000 mov r2, #0 ; 0x0 4408: e5812000 str r2, [r1] 440c: e2811004 add r1, r1, #4 ; 0x4 4410: e2800001 add r0, r0, #1 ; 0x1 4414: e3500081 cmp r0, #129 ; 0x81 4418: 3afffffa bcc 0x4408 441c: e59f3348 ldr r3, [pc, #840] ; 0x476c 4420: e59f2348 ldr r2, [pc, #840] ; 0x4770 4424: e3a01000 mov r1, #0 ; 0x0 4428: e3a00000 mov r0, #0 ; 0x0 442c: ebffffd7 bl 0x4390 4430: e59f333c ldr r3, [pc, #828] ; 0x4774 4434: e59f233c ldr r2, [pc, #828] ; 0x4778 4438: e3a01670 mov r1, #117440512 ; 0x7000000 443c: e3a00448 mov r0, #1207959552 ; 0x48000000 4440: ebffffd2 bl 0x4390 4444: e59f3328 ldr r3, [pc, #808] ; 0x4774 4448: e59f232c ldr r2, [pc, #812] ; 0x477c 444c: e3a01671 mov r1, #118489088 ; 0x7100000 4450: e3a0044a mov r0, #1241513984 ; 0x4a000000 4454: ebffffcd bl 0x4390 4458: e59f3314 ldr r3, [pc, #788] ; 0x4774 445c: e59f231c ldr r2, [pc, #796] ; 0x4780 4460: e3a01672 mov r1, #119537664 ; 0x7200000 4464: e3a0044c mov r0, #1275068416 ; 0x4c000000 4468: ebffffc8 bl 0x4390 446c: e59f3300 ldr r3, [pc, #768] ; 0x4774 4470: e59f230c ldr r2, [pc, #780] ; 0x4784 4474: e3a01673 mov r1, #120586240 ; 0x7300000 4478: e3a0044d mov r0, #1291845632 ; 0x4d000000 447c: ebffffc3 bl 0x4390 4480: e59f32ec ldr r3, [pc, #748] ; 0x4774 4484: e59f22fc ldr r2, [pc, #764] ; 0x4788 4488: e3a01674 mov r1, #121634816 ; 0x7400000 448c: e3a0044e mov r0, #1308622848 ; 0x4e000000 4490: ebffffbe bl 0x4390 4494: e59f32d8 ldr r3, [pc, #728] ; 0x4774 4498: e59f22ec ldr r2, [pc, #748] ; 0x478c 449c: e3a01675 mov r1, #122683392 ; 0x7500000 44a0: e3a00450 mov r0, #1342177280 ; 0x50000000 44a4: ebffffb9 bl 0x4390 44a8: e59f32c4 ldr r3, [pc, #708] ; 0x4774 44ac: e59f22dc ldr r2, [pc, #732] ; 0x4790 44b0: e3a01676 mov r1, #123731968 ; 0x7600000 44b4: e3a00451 mov r0, #1358954496 ; 0x51000000 44b8: ebffffb4 bl 0x4390 44bc: e59f32b0 ldr r3, [pc, #688] ; 0x4774 44c0: e59f22cc ldr r2, [pc, #716] ; 0x4794 44c4: e3a01677 mov r1, #124780544 ; 0x7700000 44c8: e3a00452 mov r0, #1375731712 ; 0x52000000 44cc: ebffffaf bl 0x4390 44d0: e59f329c ldr r3, [pc, #668] ; 0x4774 44d4: e59f22bc ldr r2, [pc, #700] ; 0x4798 44d8: e3a01678 mov r1, #125829120 ; 0x7800000 44dc: e3a00453 mov r0, #1392508928 ; 0x53000000 44e0: ebffffaa bl 0x4390 44e4: e59f3288 ldr r3, [pc, #648] ; 0x4774 44e8: e59f22ac ldr r2, [pc, #684] ; 0x479c 44ec: e3a01679 mov r1, #126877696 ; 0x7900000 44f0: e3a00455 mov r0, #1426063360 ; 0x55000000 44f4: ebffffa5 bl 0x4390 44f8: e59f3274 ldr r3, [pc, #628] ; 0x4774 44fc: e59f229c ldr r2, [pc, #668] ; 0x47a0 4500: e3a0167a mov r1, #127926272 ; 0x7a00000 4504: e3a00456 mov r0, #1442840576 ; 0x56000000 4508: ebffffa0 bl 0x4390 450c: e59f3260 ldr r3, [pc, #608] ; 0x4774 4510: e59f228c ldr r2, [pc, #652] ; 0x47a4 4514: e3a0167b mov r1, #128974848 ; 0x7b00000 4518: e3a00457 mov r0, #1459617792 ; 0x57000000 451c: ebffff9b bl 0x4390 4520: e59f324c ldr r3, [pc, #588] ; 0x4774 4524: e59f227c ldr r2, [pc, #636] ; 0x47a8 4528: e3a0167c mov r1, #130023424 ; 0x7c00000 452c: e3a00458 mov r0, #1476395008 ; 0x58000000 4530: ebffff96 bl 0x4390 4534: e59f3238 ldr r3, [pc, #568] ; 0x4774 4538: e59f226c ldr r2, [pc, #620] ; 0x47ac 453c: e3a0167d mov r1, #131072000 ; 0x7d00000 4540: e3a00459 mov r0, #1493172224 ; 0x59000000 4544: ebffff91 bl 0x4390 4548: e59f3224 ldr r3, [pc, #548] ; 0x4774 454c: e59f225c ldr r2, [pc, #604] ; 0x47b0 4550: e3a0167e mov r1, #132120576 ; 0x7e00000 4554: e3a0045a mov r0, #1509949440 ; 0x5a000000 4558: ebffff8c bl 0x4390 455c: e59f3208 ldr r3, [pc, #520] ; 0x476c 4560: e59f224c ldr r2, [pc, #588] ; 0x47b4 4564: e3a01680 mov r1, #134217728 ; 0x8000000 4568: e3a00680 mov r0, #134217728 ; 0x8000000 456c: ebffff87 bl 0x4390 4570: e59f31f4 ldr r3, [pc, #500] ; 0x476c 4574: e59f223c ldr r2, [pc, #572] ; 0x47b8 4578: e3a0167f mov r1, #133169152 ; 0x7f00000 457c: e3a00440 mov r0, #1073741824 ; 0x40000000 I belive this code preforms the following remapping: 0x48000000 --> 0x7000000 0x4a000000 --> 0x7100000 0x4c000000 --> 0x7200000 0x4d000000 --> 0x7300000 0x4e000000 --> 0x7400000 0x50000000 --> 0x7500000 0x51000000 --> 0x7600000 0x52000000 --> 0x7700000 0x53000000 --> 0x7800000 0x55000000 --> 0x7900000 0x56000000 --> 0x7A00000 0x57000000 --> 0x7B00000 0x58000000 --> 0x7C00000 0x59000000 --> 0x7D00000 0x5a000000 --> 0x7E00000 0x40000000 --> 0x7F00000 EG to read the minutes (in BCD) from the real time clock, read 1 word from 0x7B00074 ================================================= What does this mean? Now all the ARM9 peripherals may be accessed freely by programmers - Just look at the Samsung datasheet, and preform the remapping as listed above. I hope to have a clock adjustment utility ready for betatesting in the next few days. cheers, Al For anyone whose interested, the procedure for slowing the calculator down (for games where you don't need 75MHz, and want to conserve batteries) is: --- Write 0x10 to 0x7200010 -- Sets the 'Slow Bit' to enable slow mode (~10MHz) Write 0x00C00A21 to 7300000 -- Sets the CLKVAL to 'A' - this speeds up the LCD refresh rate suitable for the newslower clockspeed <> Write 0x00C04421 to 7300000 -- Set the CLKVAL to '44' as before EG slows down the LCD refresh rate Write 0x00 to 0x7200010 -- Clears the 'Slow Bit' to disable slow mode - back to 75MHz --- I'll put out 2 simple programs, SlON and SlOff (Slow On/Off) just as a proof of concept. Then <> will calculate 300! in slow mode. This might be useful for old games that run way too fast - now they can be run too slowly :-) An adjustible clock, between 10 and 75MHz would be useful for this. I'll give it a go. Al Here is the function that writes the data : 4390: e52de004 str lr, [sp, -#4]! 4394: e3a0c440 mov ip, #1073741824 ; 0x40000000 4398: e1a0ea21 mov lr, r1, lsr #20 439c: e08cc10e add ip, ip, lr, lsl #2 43a0: e1a02a22 mov r2, r2, lsr #20 43a4: e042ea21 sub lr, r2, r1, lsr #20 43a8: e3130002 tst r3, #2 ; 0x2 43ac: 0a000009 beq 0x43d8 43b0: e1a03a03 mov r3, r3, lsl #20 43b4: e1a03a23 mov r3, r3, lsr #20 43b8: e3a01000 mov r1, #0 ; 0x0 43bc: e151000e cmp r1, lr 43c0: 8a00000a bhi 0x43f0 43c4: e0812a20 add r2, r1, r0, lsr #20 43c8: e1832a02 orr r2, r3, r2, lsl #20 43cc: e48c2004 str r2, [ip], #4 43d0: e2811001 add r1, r1, #1 ; 0x1 43d4: eafffff8 b 0x43bc 43d8: e1a01b03 mov r1, r3, lsl #22 43dc: e1a01b21 mov r1, r1, lsr #22 43e0: e1a00520 mov r0, r0, lsr #10 43e4: e1a00500 mov r0, r0, lsl #10 43e8: e1800001 orr r0, r0, r1 43ec: e58c0000 str r0, [ip] 43f0: e3a00000 mov r0, #0 ; 0x0 43f4: e49df004 ldr pc, [sp], #4