;
; Bird's Wings Restore 1.12
;
; R‚Installe l'‚cran virtuel pour Bird's Wings, dans le cas ou
; un programme ne remettrait pas correctement la r‚solution
; 
; Remet les adresses ‚cran et le mode vid‚o
; Note: Les appels Xbios doivent se faire en mode utilisateur
;


        Section TEXT    ; .TEXT tout court dans certains compilateurs

Cookoo:
 Pea    Gato            ; Bonjour!
 Move.W #9,-(Sp)        ; Print
 Trap   #1              ; Appel GEMDOS
 Addq.L #6,Sp           ; Corriger pile

Super:  
 Clr.L  -(Sp)           ; Mode superviseur
 Move.W #32,-(Sp)       ; Super
 Trap   #1              ; Appel GEMDOS
 Addq.L #6,Sp           ; Corriger pile
 Move.L D0,D7           ; Mettre ancienne pile … l'abri

TstCook:
 Tst.L  $5A0.W          ; Une jar au moins?
 Ble.s  NoCook          ; Non, c'est quoi ce micmac?
 Move.L $5A0.W,a6       ; La boiboite … gato
CookL:
 Move.L (a6)+,d0        ; On en prend un
 Beq.s  NoCook          ; Un gateau creux?
 Cmp.L  #'WBrd',d0      ; Notre gƒto?
 Beq.s  OkCook          ; Ouais!
 Addq.L #4,a6           ; Suivant!
 Bra.s  CookL           ; Et ca repart

OkCook:
 Move.L (A6),A6         ; Adresse bloc B.W. (offset 0= adresse ‚cran)

                        ; Note: le SetScreen en mode utilisateur!
 Move.L D7,-(Sp)        ; Ancienne pile utilisateur
 Move.W #32,-(Sp)       ; Super
 Trap   #1              ; Appel GEMDOS
 Addq.l #6,Sp           ; Corriger pile (la pauvre d‚cid‚ment)

 Move.W #-1,-(Sp)       ; Demander mode (fictif, car seul le bit 12 est important)
 Move.W #88,-(Sp)       ; VSetMode
 Trap   #14             ; Appel XBIOS
 Addq.L #4,Sp           ; Corriger pile
 Bset.L #12,D0          ; Bit #12 de Bird's Wings : ordre de r‚installation

Setscreen:
 Move.W D0,-(Sp)        ; Mode (seul le bit 12 est n‚cessaire en fait)
 Move.W #3,-(Sp)        ; SetMode
 Move.L (A6),-(Sp)      ; Adresse ‚cran Bird's Wings
 Move.L (A6),-(Sp)      ; Idem
 Move.W #5,-(Sp)        ; SetScreen
 Trap   #14             ; Appel XBIOS
 Add.L  #12,Sp          ; Corriger pile
 
 Bra.s  End             ; Ok all good

NoCook:
 Pea    Bah             ; Euh erreur
 Move.W #9,-(Sp)        ; Print
 Trap   #1              ; Appel GEMDOS
 Addq.L #6,Sp           ; Corriger pile

 Move.W #7,-(Sp)        ; Attendre une touche sinon il va rien voir et rien comprendre l'autre
 Trap   #1              ; Appel GEMDOS
 Addq.L #2,Sp           ; Corriger pile

Suite:
 Move.L D7,-(Sp)        ; Ancienne pile utilisateur
 Move.W #32,-(Sp)       ; Super
 Trap   #1              ; Appel GEMDOS
 Addq.l #6,Sp           ; Corriger pile (la pauvre d‚cid‚ment)
 
End:
 Clr.W  -(Sp)           ; PTerm
 Trap   #1              ; Appel j'aime DOS


        Section DATA    ; ou .DATA

 Even                   ; Even and Hell (...)

 Gato:  Dc.b    27,"E","WRestore 1.1 pour Bird's Wings",13,10
        Dc.b    "R‚installe l'‚cran",13,10
        Dc.b    0
 
 Even

 Bah:   Dc.b    10,"Bird's Wings non install‚, arrˆtez la tisane .. ou lisez la DOC!",13,10,0
 
 
