[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [linux] [OT] CLEAR Cmos : solution soft
Je ne suis pas programmeur en C; Désolé, mais j'essye de
joindre cet ancien pgm en BASIC.
--- Message original de Dany De Bontridder le sam 30 jun, 2001 à 14:38:56 +0200 ---
> Donc si j 'ai bien compris avec -o 70 2E on écrit 0x2e à l'adresse 0x70 .
>
> On peut en faire un tit prog en C ?
>
>
>
> J-C Hendrickx wrote:
>
> > Bonjour,
> >
> > Lu dans un ouvrage "programmer avec debug" :
> >
> > O = output : envoi d'un octet sur le port spécifié.
> >
> > syntaxe : O n° du port octet
> >
> > exemple : O3F8 56
> >
> > > A:\> DEBUG
> > > - o 70 2E
> > > - o 71 FF
> > > - q
> > >
> > > Au prochain reboot du PC, le Bios détectera un "invalid cmos" et chargera
> > > les valeurs par défauts... SANS mot de passe !
> > > :-)
> > > L'accès à la config Cmos sera donc entièrement libre.
> >
> > > Reste la pratique, car sur nos PC, le lecteur de disquette était désactivé
> > > dans le Cmos...
> > > Et évidemment, pour une école, l'utilitaire DEBUG n'était pas sur le disque
> > > dur !
> > >
> > > Solution :
> > >
> > > - débrancher le disque dur
> > > - le mettre physiquement comme 2ème disque dur dans un autre PC non bloqué
> > > - copier DEBUG.EXE sur ce disque dur.
> > > - éventuellement, faire un SYS D: pour mettre la même version de DOS sur le
> > > disque dur, car DEBUG vérifie la version
> > > - rebrancher le HD dans le PC que l'on veut déverrouiller.
> > > - boot en dos, lancer DEBUG, taper les commandes citées plus hauts....
> > >
> > > et voilà, le Cmos est déverrouillé !
> > >
> > > On peut donc (enfin) utiliser ces PC pour y mettre, par ex :-) , Linux,
> > > après avoir activé le lecteur de disquette, connecté un CD-Rom, changé de
> > > HD, etc etc...
> > >
> > > J'espère que ce truc servira à d'autres, car les PC de récupérations sont
> > > encore souvent très utiles sous Linux !
> > >
> > > Didier
> >
> >
> > --
> >
> > Jean-Claude HendrickX
> >
> > [ Soyez précis dans vos sujets svp afin de déterminer directement ]
> > [ le type de demande... ]
> > [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php ]
> > [ http://LinuxBe.org Contact: listmaster@linuxbe.org ]
>
>
> [ Soyez précis dans vos sujets svp afin de déterminer directement ]
> [ le type de demande... ]
> [ Pour vous (dés)inscrire, aller sur http://linuxbe.org/ml.php ]
> [ http://LinuxBe.org Contact: listmaster@linuxbe.org ]
>
--
------------------------
Jean-Claude Hendrickx
jean.hendrickx@skynet.be
------------------------
100 '*** RAMOS.BAS *** Affichage du contenu de la RAM CMOS d'un PC/AT.
102 ' Ex Livre du MS/PC-DOS de F.Piette, p 321.
110 CLS
120 FOR I = 0 TO &H3F
130 IF (I AND 7)=0 THEN PRINT
140 OUT &H70, I
150 PRINT USING ("\\ = \\ "); HEX$(I), HEX$(INP(&H71));
160 NEXT I
170 PRINT
180 '
190 'calcul et v‚rification du checksum
195 '
200 CHK%=0
205 FOR I=&H10 TO &H20
210 OUT &H70, I: CHK%= CHK%+INP(&H71)
215 NEXT I
220 PRINT "Le checksum est ";HEX$(CHK%);", il est ";
225 OUT &H70, &H2E:CHK1%=256*INP(&H71)
230 OUT &H70, &H2F:CHK1%=CHK1%+INP(&H71)
235 IF CHK%=CHK1% THEN PRINT "correct."
240 IF CHK%<>CHK1% THEN PRINT "incorrect."
245 '
250 'Informations de configuration
255 '
260 OUT &H70, &H14:CFG%=INP(&H71)
265 PRINT "Coprocesseur arithm‚tique 80287 ";
270 IF (CFG% AND 2)=2 THEN PRINT "install‚." ELSE PRINT "non install‚."
275 IF (CFG% AND &H30)=0 THEN PRINT "Type d'‚cran inconnu."
280 IF (CFG% AND &H30)=&H10 THEN PRINT "Ecran graphique couleur 40 colonnes."
285 IF (CFG% AND &H30)=&H20 THEN PRINT "Ecran graphique couleur 80 colonnes."
290 IF (CFG% AND &H30)=&H30 THEN PRINT "Ecran monochrome 80 colonnes."
295 IF (CFG% AND &HC0)=&H0 THEN PRINT "Un lecteur ";
300 IF (CFG% AND &HC0)=&H40 THEN PRINT "Deux lecteurs ";
305 IF (CFG% AND &HC0)>&H40 THEN PRINT "---- ";
310 PRINT "de disque souple."
315 OUT &H70, &H33:CFG%=INP(&H71)
320 PRINT "Extension m‚moire de 128 kø ";
325 IF (CFG% AND &H80)<>0 THEN PRINT "install‚e." ELSE PRINT "non install‚e."
330 PRINT "Le programme SETUP ";
335 IF (CFG% AND &H40)<>0 THEN PRINT "donnera" ELSE PRINT "ne donnera pas";
340 PRINT " de message initial."
345 '
350 'Informations sur les disques souples
355 '
360 OUT &H70, &H10:BYTE=INP(&H71)
365 PRINT "Le disque A est ";
370 DISK =(BYTE AND &HF0)/16:GOSUB 490
375 PRINT "Le disque B est ";
380 DISK=BYTE AND 15:GOSUB 490
385 '
390 'Informations sur les disques durs
395 '
400 OUT &H70, &H12:BYTE=INP(&H71)
405 PRINT "Le disque dur 1 est ";
410 DISK=(BYTE AND &HF0)/16:GOSUB 525
415 PRINT "Le disque dur 2 est ";
420 DISK=BYTE AND 15:GOSUB 525
425 '
430 'Informations sur la taille m‚moire
435 '
440 OUT &H70, &H16:MEM%=256*INP(&H71)
445 OUT &H70, &H15:MEM%=MEM%+INP(&H71)
450 PRINT "M‚moire de base : ";MEM%;"Koctets."
455 OUT &H70, &H18:MEM%=256*INP(&H71)
460 OUT &H70, &H17:MEM%=MEM%+INP(&H71)
465 PRINT "M‚moire suppl‚mentaire : ";MEM%;"Koctets."
470 OUT &H70, &H31:MEM%=256*INP(&H71)
475 OUT &H70, &H30:MEM%=MEM%+INP(&H71)
480 PRINT "M‚moire suppl‚mentaire (bis) : ";MEM%;"Koctets."
485 END
490 '
495 'Impression du type de disque souple
500 '
505 IF DISK=0 THEN PRINT "non install‚.":RETURN
510 IF DISK=1 THEN PRINT "double face/double densit‚ 360Ko (5";CHR$(34);"1/4":RETURN
515 IF DISK=2 THEN PRINT "haute densit‚ 1,2 Mo (5";CHR$(34);"1/4)":RETURN
516 IF DISK=3 THEN PRINT "Double densit‚ 720 Ko (3";CHR$(34);"1/2)":RETURN
517 IF DISK=4 THEN PRINT "Haute densit‚ 1,44 Mo (3";CHR$(34);"1/2)":RETURN
520 PRINT "inconnu.":RETURN
525 '
530 'Impression du type de disque dur
535 '
540 PRINT USING("de type ## : ");DISK;
545 IF DISK=0 THEN PRINT "non install‚":RETURN
550 IF DISK=1 THEN PRINT "306 4 128 305":RETURN
555 IF DISK=2 THEN PRINT "615 4 300 615":RETURN
560 IF DISK=3 THEN PRINT "615 6 300 615":RETURN
565 IF DISK=4 THEN PRINT "940 8 512 940":RETURN
570 IF DISK=5 THEN PRINT "940 6 512 940":RETURN
575 IF DISK=6 THEN PRINT "615 4 - 615":RETURN
580 IF DISK=7 THEN PRINT "462 8 256 511":RETURN
585 IF DISK=8 THEN PRINT "733 5 - 733":RETURN
590 IF DISK=9 THEN PRINT "900 15 - 901":RETURN
595 IF DISK=10 THEN PRINT "820 3 - 820":RETURN
600 IF DISK=11 THEN PRINT "855 5 - 855":RETURN
605 IF DISK=12 THEN PRINT "855 7 - 855":RETURN
610 IF DISK=13 THEN PRINT "306 8 128 319":RETURN
615 IF DISK=14 THEN PRINT "733 7 - 733:RETURN
620 IF DISK=15 THEN PRINT "sp‚cial":RETURN
625 PRINT "erron‚":RETURN