home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 20 / AACD20.BIN / AACD / Utilities / SystemReset / Sources / SystemResetPl.s < prev    next >
Text File  |  1999-11-20  |  5KB  |  156 lines

  1. *    systemreset.s wersja 1.0 (17-Lis-1999)
  2. *
  3. *    Autor    : Tomasz "Pony van Deathface" Pëczek
  4. *    Assembler : ASM-One version 1.01
  5. *
  6. *    Informacja:Ten kod ûródîowy zostaî doîâczony
  7. *        jako przykîad.Wolno Ci wykorzystywaê
  8. *        schematy w nim zawarte we wîasnych
  9. *        programach, ale nie wolno ci go zmieniaê.
  10. *
  11.  
  12.         incdir    'DH1:Includy/'            ;ôcieûka dostëpu do includów
  13.         include    'SystemReset.i'
  14.  
  15.         movem.l    d0-a6,-(sp)            ;rejestry na stos
  16.         move.l    4.w,a6                ;odbieramy wiadomoôê od
  17.         sub.l    a1,a1                ;Workbench'a
  18.         jsr    _LVOFindTask(a6)
  19.         move.l    d0,a4
  20.         tst.l    pr_CLI(a4)
  21.         bne.s    Init
  22.         lea    pr_MsgPort(a4),a0
  23.         jsr    _LVOWaitPort(a6)
  24.         lea    pr_MsgPort(a4),a0
  25.         jsr    _LVOGetMsg(a6)
  26.         move.l    d0,message
  27. Init:
  28.         move.l    4.w,a6
  29.         move.l    #0,d0                ;otwieramy bibliotekë dos
  30.         lea    dosname,a1
  31.         jsr    _LVOOpenLibrary(a6)
  32.         move.l    d0,dosbase            ;jeôli sië nie udaîo 
  33.         beq.w    nodos                ;skocz do nodos
  34.         move.l    #38,d0
  35.         lea    reqtoolsname,a1            ;otwirema bibliotekë reqtools
  36.         jsr    _LVOOpenLibrary(a6)
  37.         move.l    d0,reqtoolsbase            ;jeôli sië nie udaîo
  38.         beq.w    noreqtools            ;skocz do noreqtools
  39.         move.l    reqtoolsbase,a6
  40.         move.l    #RT_REQINFO,d0
  41.         move.l    #0,a0                ;alokujemy requester
  42.         jsr    _LVOrtAllocRequestA(a6)
  43.         move.l    d0,requesterbase        ;jeôli sië nie udaîo 
  44.         beq.w    norequester            ;skocz do norequester
  45. Ask:
  46.         move.l    reqtoolsbase,a6
  47.         move.l    requesterbase,a1
  48.         move.l    #REQPOS_CENTERWIN,rtri_ReqPos(a1)
  49.         move.l    #asktitle,rtri_ReqTitle(a1)    ;parametry dla naszego requestera
  50.         bset    #CENTERTEXT,rtri_Flags(a1)    ;wiem, ûe powinny byê ustawione w
  51.         lea    asktext,a1            ;tagliôcie
  52.         lea    askgadget,a2
  53.         move.l    requesterbase,a3        ;wyôwietlame requester
  54.         move.l    #0,a4
  55.         move.l    #0,a0
  56.         jsr    _LVOrtEZRequestA(a6)
  57.         tst    d0                ;jeôli uûytkownik kliknâî na Resetuj
  58.         bne    Reset                ;skaczemy do etykiety Reset
  59. Quit:                            ;jeôli kliknâî na Zaniechaj
  60.         move.l    requesterbase,a1        ;koïczymy
  61.         jsr    _LVOrtFreeRequest(a6)        ;zwalniamy requester
  62.         move.l    4.w,a6
  63.         move.l    dosbase,a1            ;zamykamy bibliotekë dos
  64.         jsr    _LVOCloseLibrary(a6)
  65.         move.l    reqtoolsbase,a1            ;zamykamy bibliotekë reqtools
  66.         jsr    _LVOCloseLibrary(a6)
  67.         tst.l    message                ;informyjemy Workbench'a 
  68.         beq.s    exit                ;o zakoïczeniu dziaîania 
  69.         move.l    4.w,a6                ;programu
  70.         jsr    _LVOForbid(a6)
  71.         move.l    message,a1
  72.         jsr    _LVOReplyMsg(a6)
  73.         jsr    _LVOPermit(a6)
  74.         movem.l    (sp)+,d0-a6            ;rejestry ze stosu
  75. exit:        move.l    #0,d0
  76.         rts
  77. Reset:                            ;tutaj resetujemy
  78.         move.l    requesterbase,a1        ;zwalniamy requester
  79.         jsr    _LVOrtFreeRequest(a6)
  80.         move.l    4.w,a6
  81.         move.l    dosbase,a1            ;zamykamy bibliotekë dos
  82.         jsr    _LVOCloseLibrary(a6)
  83.         move.l    reqtoolsbase,a1            ;zamykamy bibliotekë reqtools
  84.         jsr    _LVOCloseLibrary(a6)
  85.         jsr    _LVOColdReset(a6)        ;resetujemy
  86. nodos:                            ;jeôli nie udaîo sië otworzyê biblioteki dos
  87.         tst.l    message                ;informyjemy Workbench'a 
  88.         beq.w    exiterror            ;o zakoïczeniu dziaîania 
  89.         move.l    4.w,a6                ;programu
  90.         jsr    _LVOForbid(a6)
  91.         move.l    message,a1
  92.         jsr    _LVOReplyMsg(a6)
  93.         jsr    _LVOPermit(a6)
  94.         movem.l    (sp)+,d0-a6            ;rejestry ze stosu
  95.         move.l    #20,d0                ;i koïczymy
  96.         rts
  97. noreqtools:                        ;jeôli nie udaîo sië otworzyê biblioteki reqtools
  98.         move.l    dosbase,a6
  99.         move.l    #MODE_NEWFILE,d2        ;informujemy o tym uûytkownika
  100.         move.l    #errorwindow,d1
  101.         jsr    _LVOOpen(a6)
  102.         move.l    d0,d1
  103.         move.l    #noreqtoolstext,d2
  104.         move.l    #38,d3
  105.         jsr    _LVOWrite(a6)
  106.         move.l    4.w,a6                ;zamykamy bibliotekë dos
  107.         move.l    dosbase,a1
  108.         jsr    _LVOCloseLibrary(a6)
  109.         tst.l    message                ;informyjemy Workbench'a 
  110.         beq.w    exiterror            ;o zakoïczeniu dziaîania 
  111.         move.l    4.w,a6                ;programu
  112.         jsr    _LVOForbid(a6)
  113.         move.l    message,a1
  114.         jsr    _LVOReplyMsg(a6)
  115.         jsr    _LVOPermit(a6)
  116.         movem.l    (sp)+,d0-a6            ;rejestry ze stosu
  117.         move.l    #20,d0                ;koniec
  118.         rts
  119. norequester:                        ;jeôli nie udaîo sië zaalokowaê requestera
  120.         move.l    dosbase,a6            ;informujemy o tym uûytkownika
  121.         move.l    #MODE_NEWFILE,d2
  122.         move.l    #errorwindow,d1
  123.         jsr    _LVOOpen(a6)
  124.         move.l    d0,d1
  125.         move.l    #norequestertext,d2
  126.         move.l    #28,d3
  127.         jsr    _LVOWrite(a6)
  128.         move.l    4.w,a6                ;zamykamy biblliotekë dos
  129.         move.l    dosbase,a1
  130.         jsr    _LVOCloseLibrary(a6)
  131.         move.l    reqtoolsbase,a1            ;zamykamy bibliotekë reqtools
  132.         jsr    _LVOCloseLibrary(a6)
  133.         tst.l    message                ;informyjemy Workbench'a 
  134.         beq.s    exiterror            ;o zakoïczeniu dziaîania 
  135.         move.l    4.w,a6                ;programu
  136.         jsr    _LVOForbid(a6)
  137.         move.l    message,a1
  138.         jsr    _LVOReplyMsg(a6)
  139.         jsr    _LVOPermit(a6)
  140.         movem.l    (sp)+,d0-a6            ;rejestry ze stosu
  141. exiterror:    move.l    #20,d0                ;koniec
  142.         rts
  143.  
  144. dosname:    dc.b    'dos.library',0
  145. reqtoolsname:    dc.b    'reqtools.library',0
  146.     even
  147. dosbase:    ds.l    1
  148. reqtoolsbase:    ds.l    1
  149. requesterbase:    ds.l    1
  150. message:    ds.l    1
  151. asktitle:    dc.b    'System Reset by Tomasz "Pony" Pëczek',0
  152. asktext:    dc.b    'Czy mam zresetowaê Twojâ Amigë ?',0
  153. askgadget:    dc.b    'Resetuj|Zaniechaj',0
  154. errorwindow:    dc.b    'CON:0/0/100/50/Wystâpiî bîâd !!!',0
  155. noreqtoolstext:    dc.b    'Nie mogë otworzyê reqtools.library V38',0
  156. norequestertext:dc.b    'Nie mogë otworzyê requastera',0