> PROCEDURE etude_du_systeme ! Mais quelle machine est ce donc ?
LOCAL super%,adr%,type%,slot%,long%,magic_cookie%
son|=255
pro|=255
copro|=255
video|=255
machine|=255
magic!=FALSE
mint!=FALSE
geneva!=FALSE
mode_winx!=FALSE
mode_nvdi!=FALSE
bubble_gem!=FALSE
mode_naes!=FALSE
mode_myaes!=FALSE
tos2gem!=FALSE
mode_fvdi!=FALSE
CLR magic_version&
gdos!=FALSE
super%=GEMDOS(&H20,L:0) ! Passage en mode SUPERVISEUR
adr%={&H5A0} ! Pointeur sur le premier COOKIE
IF adr%=0
' Il n'y a aucun COOKIEs en mmoire
' Il est donc impossible de dterminer le type d'ATARI sur lequel
' on se trouve par le systme des COOKIEs
son|=0
pro|=0
copro|=0
video|=0
machine|=0
ELSE
CLR slot%
WHILE {ADD(adr%,SHL(slot%,3))}<>0
long%={ADD(ADD(adr%,SHL(slot%,3)),4)}
$S%,$S>
SELECT LEFT$(CHAR{ADD(adr%,SHL(slot%,3))},4)
CASE "_MCH"
IF machine|=255
SELECT INT(SWAP(long%)) ! Mot de poid fort
CASE 0 ! STf
machine|=0
CASE 1
SELECT INT(long%) ! Mot de poid faible
CASE 0 ! STe
machine|=1
CASE 1 ! ST Book
machine|=2
CASE 8 ! STE avec IDE
machine|=3
CASE 16 ! Mega STE
machine|=4
CASE 256 ! Falcon
machine|=5
ENDSELECT
CASE 2 ! TT
machine|=6
CASE 3 ! Falcon
machine|=5
CASE 4 ! MILAN
machine|=7
CASE 5 ! ARANYM l'mulateur ultime
machine|=9
DEFAULT ! Inconnu (par dfaut STf)
machine|=0
ENDSELECT
ENDIF
CASE "_MIL" ! Ah! tiens! un MILAN
machine|=7
CASE "hade" ! Oh! un HADES
machine|=8
CASE "_CPU"
SELECT long%
CASE 0 ! 68000
pro|=0
CASE 10 ! 68010
pro|=1
CASE 20 ! 68020
pro|=2
CASE 30 ! 68030
pro|=3
CASE 40 ! 68040
pro|=4
CASE 60 ! 68060
pro|=5
DEFAULT ! Inconnue (68000 par dfaut)
pro|=0
ENDSELECT
CASE "_FPU"
SELECT INT(SWAP(long%)) ! Mot de poid fort
CASE 0 ! Pas de copro
copro|=0
CASE 1 ! SFP004
copro|=1
CASE 2 ! 68881 ou 68882
copro|=2
CASE 3 ! 68881 ou 68882 et SFP004
copro|=3
CASE 4 ! 68881
copro|=4
CASE 5 ! 68881 et SFP004
copro|=5
CASE 6 ! 68882
copro|=6
CASE 7 ! 68882 et SFP004
copro|=7
CASE 8 ! 68040
copro|=8
CASE 9 ! 68040 et SFP004
copro|=9
DEFAULT ! par dfaut pas de copro
copro|=0
ENDSELECT
CASE "_VDO"
SELECT INT(SWAP(long%)) ! Mot de poid fort
CASE 0 ! STf
video|=0
CASE 1
SELECT INT(long%) ! Mot de poid faible
CASE 0 ! STe Scroll hard
video|=1
CASE 1 ! ST Book
video|=2
ENDSELECT
CASE 2 ! TT
video|=3
CASE 3 ! FALCON
video|=4
CASE 4 ! Carte PCI
video|=5
DEFAULT !
video|=0
ENDSELECT
CASE "_SWI"
' Etat des switch avec INT(long%)
' mot de poid faible.
CASE "_SND"
IF BTST(long%,0) ! PSG prsent
son|=0
ENDIF
IF BTST(long%,1) ! 8 Bit DMA prsent
son|=1 ! (STe, TT et FALCON)
ENDIF
IF BTST(long%,2) ! 16 Bit CODEC prsent (FALCON)
son|=2
ENDIF
IF BTST(long%,3) ! DSP prsent (FALCON)
son|=3
ENDIF
IF BTST(long%,4) ! MATRIX prsent (FALCON)
son|=4
ENDIF
CASE "MagX" ! Multitche avec MagiC
magic_cookie%=long%
magic_version&=INT{ADD({ADD(magic_cookie%,8)},48)}
magic_date%={ADD({ADD(magic_cookie%,8)},16)}
magic!=TRUE
CASE "Gnva" ! Multitche avec Geneva
geneva!=TRUE
CASE "MiNT" ! Multitche avec MiNT
mint!=TRUE
CASE "nAES" ! N AES
mode_naes!=TRUE
ver_naes1|=VAL(MID$(HEX$(INT{long%},4),2,1))
ver_naes2|=VAL(MID$(HEX$(INT{long%},4),2,1))
ver_naes3|=VAL(RIGHT$(HEX$(INT{long%},4),1))
dat_naes1|=VAL("%"+RIGHT$(BIN$(INT{ADD(long%,2)},16),5))
dat_naes2|=VAL("%"+MID$(BIN$(INT{ADD(long%,2)},16),8,4))
dat_naes3&=ADD(1980,VAL("%"+LEFT$(BIN$(INT{ADD(long%,2)},16),7)))
CASE "_MAS"
mode_myaes!=TRUE
CASE "PSND" ! PSOUND de Loic SEBALD
son|=5
psound_fnct%=VAL("&H"+LEFT$(HEX$(long%),4))
psound0|=VAL("$"+MID$(HEX$(long%),5,2))
psound1|=VAL("$"+RIGHT$(HEX$(long%),2))
CASE "BGEM" ! BUBBLEGEM
bubble_gem!=TRUE
bubble_release%=CARD{ADD(long%,8)}
CASE "NVDI" ! NVDI
mode_nvdi!=TRUE
ver_nvdi1|=VAL(LEFT$(HEX$(CARD{long%},4),2))
ver_nvdi2|=VAL(RIGHT$(HEX$(CARD{long%},4),2))
dat_nvdi1|=VAL(LEFT$(HEX$({ADD(long%,2)},8),2))
dat_nvdi2|=VAL(MID$(HEX$({ADD(long%,2)},8),3,2))
dat_nvdi3&=VAL(RIGHT$(HEX$({ADD(long%,2)},8),4))
CASE "LDGM"
ldg_gl%=long%
ldg_version%=WORD{ldg_gl%}
ldg_path%=ADD(ldg_gl%,2)
ldg_garbage%=WORD{ADD(ldg_gl%,130)}
ldg_idle%=WORD{ADD(ldg_gl%,132)}
ldg_libexec%={ADD(ldg_gl%,134)}
ldg_libterm%={ADD(ldg_gl%,138)}
ldg_find%={ADD(ldg_gl%,142)}
ldg_libexec_evnt%={ADD(ldg_gl%,146)}
ldg_error%={ADD(ldg_gl%,150)}
CASE "_FDC"
' CHAR{long%}
CASE "_JPD"
' "Dcodeur JPEG prsent"
CASE "_AFM"
' "Audio Fun Machine prsent"
CASE "WINX"
mode_winx!=TRUE
CASE "T2GM"
tos2gem!=TRUE
adresse_tos2gem%=long%
CASE "FSMC"
IF CHAR{long%}="_FSM" ! "FSM GDOS prsent"
speedogdos!=TRUE
ELSE IF CHAR{long%}="_SPD" ! "SPEEDO GDOS prsent"
speedogdos!=TRUE
ENDIF
CASE "fVDI"
mode_fvdi!=TRUE
ENDSELECT
INC slot%
WEND
ENDIF
~GEMDOS(&H20,L:super%) ! Retour en mode UTILISATEUR
pro|=0*(pro|=255)-pro|*(pro|<>0)
copro|=0*(copro|=255)-copro|*(copro|<>0)
video|=0*(video|=255)-video|*(video|<>0)
machine|=0*(machine|=255)-machine|*(machine|<>0)
IF NOT speedogdos! ! Si SPEEDOGDOS ou FSMGDOS
gdos!=GDOS? ! est absent alors on test
ENDIF ! le bon vieux GDOS
nombre_de_fontes%=1 ! est disponible pour crire
'
CLR winx_version&
IF @wind_get(0,wf_return&,d&,d&,d&,d&)=0
IF @wind_get(0,wf_winx&,winx_version&,d&,d&,d&)=wf_winx&
winx_beta&=VAL("%"+LEFT$(BIN$(winx_version&,16),4))
winx_major&=VAL("%"+MID$(BIN$(winx_version&,16),5,4))
winx_minor&=VAL("%"+MID$(BIN$(winx_version&,16),9,4))
winx_ident&=VAL("%"+RIGHT$(BIN$(winx_version&,16),4))
ELSE
CLR winx_version&
ENDIF
ENDIF
IF INT{{ADD(GB,4)}}=>&H400 OR magic_version&=>&H200 OR winx_version&=>&H210 OR APPL_FIND("AGI?")=0
INT{ADD(GCONTRL,2)}=1
INT{ADD(GCONTRL,4)}=5
INT{ADD(GCONTRL,6)}=0
INT{ADD(GCONTRL,8)}=0
INT{GINTIN}=0
GEMSYS 130
' gout1&=INT{ADD(GINTOUT,2)}
' gout2&=INT{ADD(GINTOUT,4)}
' gout3&=INT{ADD(GINTOUT,6)}
' gout4&=INT{ADD(GINTOUT,8)}
' RETURN INT{GINTOUT}
ENDIF
RETURN
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités