I'm trying to find stubs for 77D, using 200D as a reference.
This is what I have at the moment:
/** Startup **/
NSTUB( ROMBASEADDR, firmware_entry )
NSTUB(0xE00400EC, cstart) /* calls bzero32 and create_init_task(..., init_task, ...) */
NSTUB(0xDF00D285, bzero32) /* zeros out a data structure. From sub_E0428334
LDR PC, =(loc_DF00D284+1) */
NSTUB(0xDF006515, create_init_task) /* low-level DryOS initialization. From sub_E0427890
LDR PC, =(sub_DF006514+1) */
NSTUB(0xE0040215, init_task) /* USER_MEM size checking, dmSetup, termDriverInit, stdlibSetup etc */
NSTUB(0xe065e278, dcache_clean) /* loop with MCR p15 c7,c10,1; DSB */
NSTUB(0xe065e34c, icache_invalidate) /* loop with MCR p15 c7,c5,1; c7,c1,6; c7,c1,0; ISB */
/** Tasks **/
NSTUB(0xDF008F7E, task_create) /* used to start TaskMain, GuiMainTask etc */
NSTUB(0xDF0087FE, msleep) /* argument is always multiple of 10 */
//NSTUB( 0x????, current_task) /* from task_create; pointer to the current task structure */
//NSTUB( 0x????, current_interrupt) /* from interrupt handler (VBAR + 0x18); where the interrupt ID is stored */
/** Dumper **/
NSTUB(0xe007fc46, dump_file) /* tries to save a file to either "A:/%s" or "B:/%s"; calls FIO_RemoveFile/CreateFile/WriteFile/CloseFile/Flush */
/** Memory info **/
NSTUB(0xe02640b4, malloc_info) /* Malloc Information */
NSTUB(0xe026414c, sysmem_info) /* System Memory Information */
NSTUB(0xe01eaf80, memmap_info) /* Exception vector, DRYOS system memory etc */
NSTUB(0xe0164ca6, smemShowFix) /* Common Lower, Common Upper etc */
/** Memory allocation **/
NSTUB(0xDF0079D3, GetMemoryInformation) /* called from AllocateMemory */
/** Debug messages **/
NSTUB(0xDF006E6D, DryosDebugMsg) /* lots of debug messages; format string is third argument */
/** Eventprocs (call by name) **/
NSTUB(0xe04d8aee, call) /* many functions called by name (lv_start, lv_stop etc) */
/** GUI timers **/
NSTUB(0xe04d499a, CancelTimer) /* from error message */
NSTUB(0xe05aad76, SetHPTimerAfterNow) /* from error message */
NSTUB(0xe05aadca, SetHPTimerNextTick) /* same "worker" function as SetHPTimerAfterNow */
NSTUB(0xe04d48e4, SetTimerAfter) /* from error message */
/** Interrupts **/
//NSTUB( 0x????, pre_isr_hook)
//NSTUB( 0x????, post_isr_hook)
//NSTUB( 0x?????, isr_table_handler)
//NSTUB( 0x?????, isr_table_param)
/** MPU communication **/
NSTUB(0xE01E781F, mpu_send) // "dwSize < TXBD_DATA_SIZE"
NSTUB(0xE058866B, mpu_recv) // passed as last argument by InitializeIntercom and eventually stored into mpu_recv_cbr
NSTUB( 0x7CF4, mpu_recv_cbr) // mpu_recv is called indirectly through this function pointer
NSTUB( 0x887D4, mpu_send_ring_buffer) // ring buffer used in mpu_send
NSTUB( 0x7CD8, mpu_send_ring_buffer_tail) // ring buffer index incremented in mpu_send
NSTUB( 0x88694, mpu_recv_ring_buffer) // ring buffer used in SIO3_ISR, subroutine that processes two chars at a time
NSTUB( 0x7CD0, mpu_recv_ring_buffer_tail) // ring buffer index incremented in the above subroutine
/** Misc **/
NSTUB(0xe11f93d4, vsnprintf) /* called near dmstart; references "01234567", "0123456789", "0123456789abcdef" and "0123456789ABCDEF"; second arg is size; the one called by DebugMsg only knows %s */
Still missing a couple of references to data structures.
After figuring out it should be able to run the same minimal code as current state of 200D.
If someone want to double check and find the remaining stubs, please write down here your finding.
EDIT: More address found. Still missing last isr related stubs
NSTUB( 0x1020, current_task) /* from task_create; pointer to the current task structure */
NSTUB( 0x1008, current_interrupt) /* from interrupt handler (VBAR + 0x18); where the interrupt ID is stored */
/** Interrupts **/
//NSTUB( 0x????, pre_isr_hook)
//NSTUB( 0x????, post_isr_hook)
NSTUB( 0x6D0C0, isr_table_handler)
//NSTUB( 0x?????, isr_table_param)