                            <B>Aga Chipset</B>
                               Part 2
                          (c) Zetter 2001
                contact 2:5025/2000.110, zetter_@euro.ru

,  !             
  Power Amiga  ,        , 
!

          ,      AGA
,   3   .

 , ,     ,      
     ,    
 , ,  ,        2001  .  
       ,   
 .        ,    
,  ,        ,         
,    :-)))     ,   ...  :-)))))
   , .

  .    5              
        CIA,  ,  ,     
 .

,     ,      
  ,    ,          
AmigaGuide.    upload!    ,        
,    ,  !


==========
68020
 getVBR
  ( )
    68020+
 68040 copyback
 NO 68040 MMU
   
  /,          (  
)
 01  .
 02  waitblit
 03   
 04  
 05   capslock
 06    
 07  
 08   68040
 09  
 10 
 11  clr  $DFFxxx
 12     32
 13   
 14  disable

== ,    AGA    68020   ==

    ?     ,  
    fast RAM     .  
 2      3  5    A4000,     
fastram,       chipram.   ,    32-  ,
             32-
 (1  ),   CNOP 0,4    
.

:

  68010   VBR   ,     $0  
  fast RAM ,     ( $6c)  trap 
( $80)   fastRAM   VBR+$6c    VBR+$80...    
    !   VBR   $0,  
   ,            
        VBR   fast RAM...   
     VBR     VBRBASE:

GETVBR:
    MOVE.L  4.W,A6
    SUBA.L  A1,A1
    btst.b  #0,$129(a6)  ;     68010  
    beq.S   INTDONE      ;  68000!!
    LEA SUPERCODE(PC),A5 ;  68010,  20,  30,  40,  60  ?
    JSR -$1E(A6)       ;   'supercode'   
    BRA.S   INTDONE
    CNOP    0,4          ;    32  ( )

************     010   ****************
SUPERCODE:
    dc.l    $4e7a9801    ; Movec Vbr,A1 ( 68010  )
                    ;    ,    
                    ;    68010
    RTE             ;   
***************************************************************************

    CNOP    0,4          ;    32  ( )
INTDONE:
    LEA $DFF000,A5  ;
    LEA VBRBASE(PC),A0
    move.l  a1,(A0)      ;  VBRBASE   'VBRBASE'
    LEA OLDINT(PC),A2
    move.l  $6c(a1),(A2) ;  $6c(a1) ( )
    ....

   VBR   $0,  trakmo  ,   
     $6c.w  $80.w,  SETPATCH    
VBR  fast RAM.

   3d           
32bit  RAM,          ,     
,       chip RAM        
(  ORG&LOAD).  chip         .
 ,       A4000  ( 
)      chip  (section  NAME,CODE_C),    
 ,    1200    32bit  fastram  (  
,  section name,CODE).  ,    o
  ,        ,        fast,    
Powerpacker-.     trackmo,    
fast RAM,    . , fast RAM  A4000    
 $07c00000 - $07ffffff.

  -:

 68020+  256-   ,   ,   
              .     - 
  .      
... :

    MOVE.W #0,d6    ;      ,     
CHANGEX: EQU *-2    ;  ,             
                    ;  !
                    ; (Icache  68020/30 - 256 ,  040 - 4096 b.)
    ADDI.W #$50,CHANGEX;  
                    ;     ! (flush)

  ,    ,      
   ,        MOVE.W 0, D6.

   ,         
  Icache (256 ).   258    ,
  254 . ,  258       
  (       ). ,  512   
   .    254       
258 ,   .

 68030  68040   DataCache,    ,   
        ,     .    ,  
   ,      -      
  .  (256      68030, 4096  68040 ) -  AMIGA   
  FASTRAM.

:

SCROLLVALUE:
    DC.W        ;     ,     fast RAM!
    ADDQ.W 1, SCROLLVALUE ; 
;    DCACHE  SCROLLVALUE   fastram  
;     - ,    !

:      030+    254  
   fastRAM!

  IntructionCache  DataCache!     ,  
!      -   ,  ,   CACR -  
   !  ,  DESERT DREAMS/KEFRENS   
   040,              ,  
    CACR    68020/30...      CACR    
    ,       
.

NOCACHE2030:            ;   020  030

    BSR.W   CACHECLR    ;  /   !
    dc.l    $4e7a0002   ; movec  cacr,d0 ( 68020+)
    BCLR.L  #8,d0       ; Data Cache 68030 (BCLR = )
    BCLR.L  #0,d0       ; Instruction Cache 68020-30 (BCLR = )
    dc.l    $4e7b0002   ; movec  d0,CACR ( 68020+)
    rte

NOCACHE40:

    BSR.W   CACHECLR    ;  /   !
    dc.l    $4e7a0002   ; movec  cacr,d0 ( 68020+)
    BCLR.L  #31,d0      ; Data Cache 68040 (BCLR = )
    BCLR.L  #15,d0      ; Instruction Cache 68040 (BCLR = )
    dc.l    $4e7b0002   ; movec  d0,CACR ( 68020+)
    rte

 : (  C= autodocs V40 )

    , chip        
  ,         .    
        .  .        
.

: (  HOWTOCODE 7 )

     . ,          
 ,     :

        Move.l d0, (a0) +       ;  x 
        Move.l d1, (a0) +       ;  y 
        Add.l d2, d0            ; X + =deltax
        Add.l d3, d1            ; Y + =deltay

;   :

        Move.l d0, (a0) +       ;  x 
        Add.l d2, d0            ; X + =deltax
        Move.l d1, (a0) +       ;  y 
        Add.l d3, d1            ; Y + =deltay

68020       68000,      
    .           ,
   :

(   68020+  TFA ASMONE  DEVPAC 3.x )

*  .   68000 (disp,An,Dn )  68020  
   2,4,  8   . :

        68000                   68020
        -----                   -----
        Add.w d0,d0            Move.w (0,a1,d0.w*2),d1
        move.w (0,a1,d0.w),d1

* 16       An+Rn.  68000      8  
.              
  68020   16    .      
     ,     ,    -
,      .  32        
,     4  .

*       . (D0) -  3  
    (a0).        
 2 ,           
.

*   .          ,
              .   
      .

 :

*        .  68020    
  32x32->32, 32x32->64   32/32  64/32.   
   -,   68000.

* EXTB.      .     
 EXT.W  EXT.L  68000.

*    TST  68020     (PC)
.

*     . BFINS     ,    
    2  MOVE   AND  OR.      
    . BFEXTU/BFEXTS      
          . BFFFO 
       . BFSET, BFCHG,    BFCLR
 , ,    32    .

*    020,              ,
  ,     .    ASL 
ASR ,  LSL  LSR.

* 020   PACK  UNPACK,    .

=68040 CopyBack=

68040  ,     copyback.    (  
 ,      )  
        .     4
            
    .      68040 
. ,    !      !

                    
,          .     
      ,      
,               .  
        .        
  ,      ,      
.

 a4000 copyback   MMU          (  
)           trackmo    , 
  WB 3.0 mmu  CopyBack    (  68040.library)    
    .     - ,     040 
 MMU  :

    MOVE.L  4.W,A6
    btst.b  #3,$129(a6) ;   68040+
    bne.S   P68040
    rts

P68040:
    move.l  4.w,a6
    lea NO040MMU(PC),a5
    jsr -$1e(a6)        ;  NO040MMU  
    rts

NO040MMU:               ; (Thanx to Rhino/team HOI and Remote Control)
    lea $FFC000,a0
    dc.l    $4e7b8004   ; movec a0,ITT0
    dc.l    $4e7b8005   ; movec a0,ITT1
    dc.l    $4e7b8007   ; movec a0,DTT1
    lea $c040,a0
    dc.l    $4e7b8006   ; movec a0,DTT0
    lea $30000,a0
    dc.l    $4e7b8806   ; movec a0,URP
    dc.l    $4e7b8807   ; movec a0,SRP ; Supervisor Root pointer reg.
    suba.l  a0,a0
    dc.l    $4e7b8003   ; movec a0,TC  ; translation code register
    rte

:

   MMU   MOVEC A0,TC      
...        030  mmu,     + GURU 
A4000/040.   68030 MMU,        A3000's,  
kickstart       .

 
-----------------

        ,    
            (68020+)  
,   ,    movem.l:

        moveq  #0,d0
        moveq  #0,d1
        moveq  #0,d2
        moveq  #0,d3
        moveq  #0,d4
        moveq  #0,d5
        moveq  #0,d6
        sub.l  a0,a0
        sub.l  a1,a1
        sub.l  a2,a2
        sub.l  a3,a3
        sub.l  a4,a4
        sub.l  a5,a5

        lea    Endofplane,a6
        move.w #(bytes in plane/156)-1,d7
.Clear
        movem.l d0-d6/a0-a5,-(a6)
        movem.l d0-d6/a0-a5,-(a6)
        movem.l d0-d6/a0-a5,-(a6)
        dbf d7,.Clear

;   movems        ...

   (  1200)       .


*****************************************************************************
*           /,    !    *
*****************************************************************************

,     AGA,     ,  
  .     ,   
  .          !    
/,       ,        A500... 
 !    ,     ,    
 .

     ,       
 , VBR  0,  AGA  :

    Dc.w    $1fc, 0
    Dc.w    $106,$c00
    Dc.w    $10c,$11

 ...

:

1) ,   CRUNCHER-   ...  
              ... 
   A500      STONECRUNCH  4      
        powerpacker,    
 ( )

2)        ...  
         1990.    :  , 
   waitblit??      
 !

    LEA $dff000,a5
WaitBlit0:
    BTST.B #6,2(a5)
WaitBlit1:
    BTST.B #6,2(a5)     ; 2-  - bugs    
    BNE.S WaitBlit1

3)    ,    1.x kickstarts

    move.l  4.w,a6      ; execbase
    move.l  (a6),a6     ; ???
    move.l  (a6),a6     ; ! GFXBASE???
    move.l  $26(a6),OLDCOP  ; !   ???
    move.l  #MYCOP,$32(a6)  ;  !   ???

        intro    ORACLE,      
  ..      gfxbase    coplist 
    coplist  MOVE.L  #MYCOP,$dff080...  
.

4)              
 :

    Divu.w #0,d0;      , 
MYLABEL:        ;   ICACHE     
    EQU * -2;   ;  ..    0   :-)

:

    JMP 0  ;    ..    ,   
MYLABEL:   ;    0!!   GURU
    EQU *-6; ( EQU *-5, EQU *-4...)

  !!         ,  
  /  .        ...     ,
 !    - :

CACHECLR:
    MOVEM.L D0/A5-A6,-(SP)
    MOVE.L  4.W,A6        ; EXECBASE  A6
    BTST.B  #1,$129(A6)   ;   68020+
    BEQ.S   NOCACHE
    BSR.S   DOCLEAR
NOCACHE:
    MOVEM.L (SP)+,D0/A5-A6
    RTS

    CNOP    0,4

DOCLEAR:
    MOVE.L  4.W,A6        ; EXECBASE  A6
    LEA CCLEAR(PC),A5
    JSR -$1E(A6)          ;  CCLEAR   
    RTS

    CNOP    0,4

CCLEAR:
    BTST.B  #3,$129(A6)   ;   68040
    BNE.S   CLR040
                          ;  68020/30 ICACHE  030 DCACHE
    ORI.W   #$700,SR      ;  
    dc.l    $4E7A0002     ; MOVEC  CACR,D0
    BSET.L  #3,D0         ;  INSTRUCTION CACHE 020/030
    BSET.L  #11,D0        ;  DATA CACHE 030
    dc.l    $4E7B0002     ; MOVEC  D0,CACR
    RTE

    CNOP    0,4

CLR040:                   ;  68040 ICACHE  DCACHE
    dc.W    $F4F8         ; CPUSHA BC (  DC.W $F478 CPUSHA DC  DCAC)
    RTE

      kickstart  1.x        
           ,  
      .

 68030/68040    ,       ,  
  ,   fast RAM.

5)  ,    CAPSLOCK-:        ,
    CapsLock  ,   ODISSEY Alcatraz... 
    a500, a1000, a2000, a3000,  a4000    
   a1200!!           
  A1200

CAPSLOCK:
    LEA $BFE000,A2
    MOVEQ   #6,D1        ;  6 $bfee01    $bfec01
    CLR.B   $801(A2)     ; TODLO -  7-0   50-60hz
                         ;  
    CLR.B   $C01(A2)     ;  SDR ( . . 
                         ;   ) - 8  -
DOFLASH:
    BSET    D1,$E01(A2)  ; 
    BCLR    D1,$E01(A2)  ; 
    CMPI.B  #50,$801(A2) ;  50 vblank ( CIA)
    BGE.S   DONE
    BSET    D1,$E01(A2)  ; 
    BCLR    D1,$E01(A2)  ; 
    MOVE.W  $DFF01E,D0   ; Intreqr  d0
    ANDI.W  #%00000010,D0;  I/O 
    BEQ.S   DOFLASH
DONE:                    ;   A1200  !

6)    :

    intro PARADOX   demo:    :

MT_MUSIC:
    MOVEM.L D0-D4/D7/A0-A6,-(SP)
    LEA 0,A4     ;   $0???     
    ....         ;   ( kick 3.0 )

    $0:

MT_MUSIC:
    MOVEM.L D0-D4/D7/A0-A6,-(SP)
    LEA LABEL,A4 ;      !

LABEL:
    dcb.b   50,0

7)  :

   $C00000...      
1  ,   512   $C00000,   
 A500.     1 chip (a500+,a600...)    
 $80000  $100000 ...  $C00000  !    
  fastRAM    "SECTION name,CODE"

    :

  24-   ( $123456 )       
($00123456).      ,    IQ, 
    - . 32-  CPU,  ,  
020      . :

  Move.b #$ff,$00000004 ;   8   ExecBase!

,      ECS        512         
   , :

    Move.l #$12345678,$0

    move.l  $80000,d0   ; d0 = $12345678
    move.l  $100000,d1  ; d1 = $12345678
    move.l  $180000,d2  ; d2 = $12345678

    ECS   !!!!     !

8)  68040:  ,  /     040   
 020/030       :  
,   ,    020/030       
040...     - ,    040   
       -  
  ???

9)     :      demos/trackmo      
      ,        DBRA,   
   -     ,      ...  
      CIA!!         
!

10) :    DBRA      NOP's  
    ,  vblank  CIA.  ,   
               
 (       !) :

WAIT1:
    MOVE.L  $dff004,D0     ; VPOSR
    LSR.L   #8,D0
    ANDI.W  #%111111111,D0 ;    VPOS
    CMPI.W  #255,D0        ;   255
    BNE.S   WAIT1

    JSR DOTFLAG            ;   

WAIT1:
    MOVE.L  $dff004,D0     ; VPOSR
    LSR.L   #8,D0
    ANDI.W  #%111111111,D0 ;    VPOS
    CMPI.W  #300,D0        ;   300
    BNE.S   WAIT1

    JSR VECTOR1     ;

              ,       
       ,      68000.   - 
   VPOSR,      
$6c    VBR   ,   ,  
   .

11)    CLR    $dffXXX,    
    (  $dff088)         
,       clr   , 
$dff064..

    MOVE.W #0,$DFF088;   CLR.W $dff088!
    MOVE.W #0,$DFF064;   CLR.W $dff064

12)        32- ,     CNOP
0,4    .        ,       32bit
fastRAM.         ,  ,    
  chip ,  020+    !

13)            $dffXXX!     
 ,           
 !

14)       disable();  JSR  -$78(a6);    
  INTENA        !     intros
        enable();  JSR  -$7e  (a6);    .
  kick 3.x    ,  
    .




