P9-----------------------------------
P;       PUNTEROS IMPORTANTES
P9-----------------------------------
P8    Por P:007P8/P<Fifth Generation

P?   Domingo 21 de Marzo de 1993
P8

    En  este  artículo  voy  a  men-
cionar  algunos  punteros usados por
la  Rom del Amiga que nos pueden ser
útiles para nuestros programas:


B9P?       EJECUCION DE UN PROGRAMA     
            AL HACER RESET          B0P8

    La dirección de memoria del pro-
grama  que se ejecutará al hacer re-
set se ha de poner en  este  puntero
de la exec.library:

P?    MOVE.L  $4.W,A6 P<
; Base de Exec.libraryP?
    MOVE.L  #$400,$2A(A6)P<
; $400 para el puntero de RESET.P8

    Pero aún tenemos que calcular un
checsum. Aquí está el programa:
P?
    MOVE.W  $4.W,A6
    CLR.L   D0
    LEA     $22(A6),A0
    MOVE.W  #$16,D1
BUC:
    ADD.W   (A0)+,D0
    DBF     D1,BUC
    NOT.W   D0
    MOVE.W  D0,$52(A6)
P<; Resultado del Checksum.
P8
    Bien,  al hacer reset  se  auto-
ejecutará la dirección $400.

    Ahora  os  pongo un ejemplo com-
pleto:

P<; Auto ejecución al hacer reset.
; Por: 007/5th Generation
P?
        MOVE.W  $4.W,A6
        MOVE.L  #RESET,$2A(A6)
P<; RESET para el puntero de RESET.
P?
        CLR.L   D0
P<; Cálculo del Checksum 
P?        LEA     $22(A6),A0
        MOVE.W  #$16,D1
BUC:
        ADD.W   (A0)+,D0
        DBF     D1,BUC
        NOT.W   D0
        MOVE.W  D0,$52(A6)
P<; Resultado del Checksum.
P?BUC2:
        ...
P<; Seguiría nuestro programa.
P?        BRA.S   BUC2
P<; Bucle infinito.
P?RESET:
        ...
P<; El programa que se ejecuta al  ha-
;cer RESET
P?        JMP     (A5)
P<; Retorno. (tener cuidado con A5)
P8
    Bien, el programa de  reset tie-
ne  en  el registro A5 el salto para
continuar con la ROM del Amiga.

    Una  vez  que se vuelve del pro-
grama  RESET, el  puntero  de  RESET
se  inicializa.  P?( $2A(A6)=0 )P8,o sea
que P:solo vale para un RESET.P8
P9
------------------------------------
P8
B9P?       PUNTERO DEL COPPER-LIST      
              DE LA ROM             B0P?

    MOVE.W  $4.W,A6
P<; Base de exec.library
P?    MOVE.L  $9C(A6),A5
    MOVE.L  $26(A5),A4
P<; Puntero del copper-list.
P8
    El  registo  A4  tiene la direc-
ción  del copper-list.  Si  en  este
puntero se pone la dirección  de  tu
copper-list,  este  se  visualizará.
P?( $26(A5) )P8
P9
------------------------------------
B9P?                                    
        PUNTEROS DE MEMORIA         
                                    B0P?

    MOVE.W  $4.W,A6
P<; Base de exec.library
P?    MOVE.L  $3E(A6),A0
P<; Dirección MAX de memoria CHIP.
P?    MOVE.L  $4E(A6),A1
P<; Dirección MAX de memoria FAST.

   P8 En  un  ordenador de  1MB  (512K
Chip y 512k Fast)  el  resultado se-
ría este:

P?    A0=$80000,   y  A1=$C80000
P9
------------------------------------

P?B9TODOS ESTOS PUNTEROS SON 100% COMPA-
TIBLES   Kickstart  1.2  / 1.3 / 2.0B0P9

------------------------------------
                P:007P8/P<Fifth Generation
