'
'
' * * * * * * * Bird's Wings * * * * * *
' * Compatibilit‚: Xbios 88 et Xbios 5 *
' * * * * * * * * * * * * * * * * * * *
'
' * * Test pour Bird's Wings * *
' Un changement de r‚solution sous B.W. est possible, ainsi
' que le retour … l'ancienne r‚solution virtuelle.
'
' Essayez ce listing sous ‚cran virtuel B.W.
'
'
'
'
Defint "a-z"
Deflist 3
'
T_swap
T_swap2
T_swap3
T_swap4
T_swap5
'
'
' Simple changement de r‚solution -> ST Moyenne
> procedure T_swap
  '
  Ancien_res&=Xbios(88,-1)      ! R‚solution actuelle
  ' Ancien_res& contient maintenant le mode normal de r‚solution.
  ' Si B.W. est install‚, le bit 12 de Ancien_res& sera fix‚.
  ' Ce bit est la marque de Bird's Wings.
  '
  '
  Void Xbios(5,L:-1,L:-1,1)               ! Passage en moyenne r‚solution
  ' Nous passons ici en moyenne r‚solution.
  ' Si B.W. ‚tait install‚, il est d‚sactiv‚.
  ' Vous ˆtes donc en r‚solution normale
  ' (Ici: moyenne, de 320 points sur 200 en 4 couleurs)
  '
  '
  Test_couleurs
  Print "Test 1 / Moyenne r‚solution. Pressez une touche"
  Waitkey                                 ! Attendre une touche au clavier
  '
  Void Xbios(88,Ancien_res&)              ! Passage en r‚solution normale
  ' Cet appel remet la r‚solution initiale.
  ' Si B.W. est install‚ (mˆme d‚sactiv‚), l'‚cran virtuel sera remis
  ' Note: On peut aussi faire un Void Xbios(5,L:-1,L:-1,3,ancien_res&)
  '
  '
  Cls
  Print "Test 1 / Ecran r‚install‚ - Pressez une touche"
  Waitkey
  '
Return
'
' Changement de r‚solution, nouvel ‚cran logique/physique
> procedure T_swap2
  '
  Ancien_res&=Xbios(88,-1)      ! Ancien mode?
  Ancien_ecran%=Xbios(3)        ! Ancienne adresse ‚cran?
  '
  Adr_ecran%=Malloc(32000)
  If Adr_ecran%>0
    ~Xbios(5,L:Adr_ecran%,L:Adr_ecran%,1)       ! ST Moyenne, nouvel ‚cran
    Test_couleurs
    Print "Test 2 / Ecran suppl‚mentaire"
    Waitkey
    ~Xbios(5,L:Ancien_ecran%,L:Ancien_ecran%,3,Ancien_res&)
    ~Mfree(Adr_ecran%)
    Cls
    Print "Test 2 / Ecran r‚install‚ - Pressez une touche"
    Waitkey
  Endif
  '
Return
'
' Idem Test 2 mais avec autre r‚sol. (256 col)
> procedure T_swap3
  Ancien_res&=Xbios(88,-1)      ! Ancien mode?
  Ancien_ecran%=Xbios(3)        ! Ancienne adresse ‚cran?
  '
  Nouv_ecran%=Or(And(Ancien_res&,&X111111000),&X11)     ! 256 col
  Adr_ecran%=Malloc(Xbios(91,Nouv_ecran%))
  If Adr_ecran%>0
    '
    ' Note: TOUJOURS mettre le Xbios 8 aprŠs
    ~Xbios(5,L:Adr_ecran%,L:Adr_ecran%,-1)
    ~Xbios(88,Nouv_ecran%)
    Test_couleurs
    Print "Test 3 / Ecran suppl‚mentaire 2 par Xbios(5)+Xbios(88)"
    Waitkey
    ' Idem:
    ~Xbios(5,L:Adr_ecran%,L:Adr_ecran%,3,Nouv_ecran%)
    Test_couleurs
    Print "Test 3 / Ecran suppl‚mentaire 2 bis .. (identique) par Xbios(5) ‚tendu"
    Waitkey
    '
    ~Xbios(5,L:Ancien_ecran%,L:Ancien_ecran%,3,Ancien_res&)
    ~Mfree(Adr_ecran%)
    Cls
    Print "Test 3 / Ecran r‚install‚ - Pressez une touche"
    Waitkey
  Endif
  '
Return
'
' Idem Test 2 et 3 mais en r‚sol virtuelle! (->souris!)
> procedure T_swap4
  '
  Ancien_ecran%=Xbios(3)
  '
  Taille%=Xbios(91,Xbios(88,-1))
  Adr_ecran%=Malloc(Taille%)
  If Adr_ecran%>0
    ~Xbios(5,L:Adr_ecran%,L:Adr_ecran%,-1)
    Test_couleurs
    Print "Test 4 / R‚solution VIRTUELLE, MAIS a chang‚e d'adresse!"
    Waitkey
    ~Xbios(5,L:Ancien_ecran%,L:Ancien_ecran%,-1)
    ~Mfree(Adr_ecran%)
    Cls
    Print "Test 4 / Ecran r‚install‚ - Pressez une touche"
    Waitkey
  Endif
  '
Return
'
' Mˆme chose que Test 4, mais avec flip LogBase/PhyBase!
> procedure T_swap5
  '
  Ancien_ecran%=Xbios(3)
  '
  Taille%=Xbios(91,Xbios(88,-1))
  Adr_ecran%=Malloc(Taille%)
  If Adr_ecran%>0
    Cls
    Print "L'affichage se fait sur un ‚cran virtuel, veuillez patienter!"
    ~Xbios(5,L:Adr_ecran%,L:-1,-1)      ! PhyBase ne change pas
    Cls
    Test_couleurs
    Print "Test 5 / R‚solution VIRTUELLE, MAIS a chang‚e d'adresse et PhyBase<>LogBase!"
    For A&=1 To 100
      Circle A&*5,A&+100,A&
    Next A&
    ~Xbios(5,L:-1,L:Adr_ecran%,-1)      ! PhyBase change!
    Waitkey
    ~Xbios(5,L:Ancien_ecran%,L:Ancien_ecran%,-1)
    ~Mfree(Adr_ecran%)
    Cls
    Print "Test 5 / Ecran r‚install‚ - Pressez une touche"
    Waitkey
  Endif
Return
'
'
' Attendre une touche au clavier
> procedure Waitkey
  Showm
  ~Inp(2)
Return
'
' Barre de couleurs
> procedure Test_couleurs
  Local A&
  Cls
  For A&=0 To 2^Dpeek(L~a)              ! Nombre de couleurs
    Deffill A&
    Pbox 0+A&*2,0,2+A&*2,100
  Next A&
  Print "Ecran logique: "+Hex$(Xbios(3),8)
  Print "Couleurs= ";2^Dpeek(L~a)
  Print "Xmax= ";Dpeek(L~a-&HC)
  Print "Ymax= ";Dpeek(L~a-&H4)
Return
'
'
