Mardi 27 Novembre 2007
Exécution en flash sous PedroM.
Voilà ma manière de lancer en flash sous PedroM ou en RAM sous AMS. Si je me trompe ou si vous voyez mieux, n'hésitez pas. Le code n'a pas été testé encore pour cause de crash de TiEmu, pour le moment non résolu.

       cmpi.w  #'R'<<8+'O',0x32        |test for PedroM 
        beq.s   PedroMLaunch            |runs under PedroM, execute in flash if archived! 
 
        |================================================================== 
        |       AMS Launch 
        |================================================================== 
        cmpi.w  #'P'<<8+'O',0x32                        |check for PreOS 
        bne.s   PreOSError                              |failed, quit 
                clr.l   -(%sp)                          |version + function 
                pea.l   tiemacs(%pc)                    |*string 
                jsr     kernel__LibsExec                |try to realloc & call 
                tst.l   (%sp)                           |success ? 
                addq.l  #8,%sp                          |clear the stack 
                beq.s   ExecError                       |if call failed, disp a message 
                        rts                             |else quit 
 
        |================================================================== 
        |       PedroM Launch 
        |================================================================== 
PedroMLaunch: 
        jmp     tiemmain__0000                          |realloc nothing =) 
 
        |================================================================== 
        |       PreOS not installed, disp an error msg and quit 
        |================================================================== 
PreOSError: 
        lea.l   PreOSMsg(%pc),%a0 
        bra.s   DispError 
 
        |================================================================== 
        |       Main part not relocated, probably a memory error 
        |================================================================== 
ExecErroc: 
        lea.l   ExecErroc(%pc),%a0 
 
        |================================================================== 
        |       Disp an error message 
        |================================================================== 
DispError: 
        pea.l   0<<16+1                 |buttons 
        pea.l   (%a0)                   |*message 
        pea.l   _comment(%pc)           |*title 
        ROM_THROW       DlgMessage      |disp the message 
        lea.l   12(%sp),%sp             |adjust the stack 
        rts
Posté à
18:35
 par Folco_ -

3. Martial Demolins à 23:43 29/11/2007 -
Mais bon, j'ai viré le code %)

2. Martial Demolins à 23:04 28/11/2007 -
Ok, je ne savais pas si tous les kernels quittaient proprement s'ils ne connaissaient pas les ramcalls. Comme je vérifiais la signature, je l'ai fait à fond ^^

Je sais par exemple que TeOS ne supportait pas HW_VERSION et exécutait pourtant PCT qui ne voyait donc que des HW1. (à moins que ce soit un bug de TeOS tout simplement?)

Il n'y a pas de lien, les variables sont mal nommées :
tiemmain est le point d'entrée de la lib read-only, tiemacs(pc) la chaine de caractère passée à LibsExec.

1. PpHd à 22:32 28/11/2007 -
Je ne mettrais pas le code gérant "PreOSError:" car si un kernel supporte LibsExec, il est bon et suffisant.
Sinon c'est quoi le lien entre tiemman et tiemas(pc) ?

Pseudo :

Adresse mail : (optionnel)

Site web : (optionnel)

Veuillez entrer la somme de trois et six :
Message :


 RSS  - ©yNBlogs 2004