home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 20
/
AACD20.BIN
/
AACD
/
Utilities
/
SystemReset
/
Sources
/
SystemResetPl.s
< prev
next >
Wrap
Text File
|
1999-11-20
|
5KB
|
156 lines
* systemreset.s wersja 1.0 (17-Lis-1999)
*
* Autor : Tomasz "Pony van Deathface" Pëczek
* Assembler : ASM-One version 1.01
*
* Informacja:Ten kod ûródîowy zostaî doîâczony
* jako przykîad.Wolno Ci wykorzystywaê
* schematy w nim zawarte we wîasnych
* programach, ale nie wolno ci go zmieniaê.
*
incdir 'DH1:Includy/' ;ôcieûka dostëpu do includów
include 'SystemReset.i'
movem.l d0-a6,-(sp) ;rejestry na stos
move.l 4.w,a6 ;odbieramy wiadomoôê od
sub.l a1,a1 ;Workbench'a
jsr _LVOFindTask(a6)
move.l d0,a4
tst.l pr_CLI(a4)
bne.s Init
lea pr_MsgPort(a4),a0
jsr _LVOWaitPort(a6)
lea pr_MsgPort(a4),a0
jsr _LVOGetMsg(a6)
move.l d0,message
Init:
move.l 4.w,a6
move.l #0,d0 ;otwieramy bibliotekë dos
lea dosname,a1
jsr _LVOOpenLibrary(a6)
move.l d0,dosbase ;jeôli sië nie udaîo
beq.w nodos ;skocz do nodos
move.l #38,d0
lea reqtoolsname,a1 ;otwirema bibliotekë reqtools
jsr _LVOOpenLibrary(a6)
move.l d0,reqtoolsbase ;jeôli sië nie udaîo
beq.w noreqtools ;skocz do noreqtools
move.l reqtoolsbase,a6
move.l #RT_REQINFO,d0
move.l #0,a0 ;alokujemy requester
jsr _LVOrtAllocRequestA(a6)
move.l d0,requesterbase ;jeôli sië nie udaîo
beq.w norequester ;skocz do norequester
Ask:
move.l reqtoolsbase,a6
move.l requesterbase,a1
move.l #REQPOS_CENTERWIN,rtri_ReqPos(a1)
move.l #asktitle,rtri_ReqTitle(a1) ;parametry dla naszego requestera
bset #CENTERTEXT,rtri_Flags(a1) ;wiem, ûe powinny byê ustawione w
lea asktext,a1 ;tagliôcie
lea askgadget,a2
move.l requesterbase,a3 ;wyôwietlame requester
move.l #0,a4
move.l #0,a0
jsr _LVOrtEZRequestA(a6)
tst d0 ;jeôli uûytkownik kliknâî na Resetuj
bne Reset ;skaczemy do etykiety Reset
Quit: ;jeôli kliknâî na Zaniechaj
move.l requesterbase,a1 ;koïczymy
jsr _LVOrtFreeRequest(a6) ;zwalniamy requester
move.l 4.w,a6
move.l dosbase,a1 ;zamykamy bibliotekë dos
jsr _LVOCloseLibrary(a6)
move.l reqtoolsbase,a1 ;zamykamy bibliotekë reqtools
jsr _LVOCloseLibrary(a6)
tst.l message ;informyjemy Workbench'a
beq.s exit ;o zakoïczeniu dziaîania
move.l 4.w,a6 ;programu
jsr _LVOForbid(a6)
move.l message,a1
jsr _LVOReplyMsg(a6)
jsr _LVOPermit(a6)
movem.l (sp)+,d0-a6 ;rejestry ze stosu
exit: move.l #0,d0
rts
Reset: ;tutaj resetujemy
move.l requesterbase,a1 ;zwalniamy requester
jsr _LVOrtFreeRequest(a6)
move.l 4.w,a6
move.l dosbase,a1 ;zamykamy bibliotekë dos
jsr _LVOCloseLibrary(a6)
move.l reqtoolsbase,a1 ;zamykamy bibliotekë reqtools
jsr _LVOCloseLibrary(a6)
jsr _LVOColdReset(a6) ;resetujemy
nodos: ;jeôli nie udaîo sië otworzyê biblioteki dos
tst.l message ;informyjemy Workbench'a
beq.w exiterror ;o zakoïczeniu dziaîania
move.l 4.w,a6 ;programu
jsr _LVOForbid(a6)
move.l message,a1
jsr _LVOReplyMsg(a6)
jsr _LVOPermit(a6)
movem.l (sp)+,d0-a6 ;rejestry ze stosu
move.l #20,d0 ;i koïczymy
rts
noreqtools: ;jeôli nie udaîo sië otworzyê biblioteki reqtools
move.l dosbase,a6
move.l #MODE_NEWFILE,d2 ;informujemy o tym uûytkownika
move.l #errorwindow,d1
jsr _LVOOpen(a6)
move.l d0,d1
move.l #noreqtoolstext,d2
move.l #38,d3
jsr _LVOWrite(a6)
move.l 4.w,a6 ;zamykamy bibliotekë dos
move.l dosbase,a1
jsr _LVOCloseLibrary(a6)
tst.l message ;informyjemy Workbench'a
beq.w exiterror ;o zakoïczeniu dziaîania
move.l 4.w,a6 ;programu
jsr _LVOForbid(a6)
move.l message,a1
jsr _LVOReplyMsg(a6)
jsr _LVOPermit(a6)
movem.l (sp)+,d0-a6 ;rejestry ze stosu
move.l #20,d0 ;koniec
rts
norequester: ;jeôli nie udaîo sië zaalokowaê requestera
move.l dosbase,a6 ;informujemy o tym uûytkownika
move.l #MODE_NEWFILE,d2
move.l #errorwindow,d1
jsr _LVOOpen(a6)
move.l d0,d1
move.l #norequestertext,d2
move.l #28,d3
jsr _LVOWrite(a6)
move.l 4.w,a6 ;zamykamy biblliotekë dos
move.l dosbase,a1
jsr _LVOCloseLibrary(a6)
move.l reqtoolsbase,a1 ;zamykamy bibliotekë reqtools
jsr _LVOCloseLibrary(a6)
tst.l message ;informyjemy Workbench'a
beq.s exiterror ;o zakoïczeniu dziaîania
move.l 4.w,a6 ;programu
jsr _LVOForbid(a6)
move.l message,a1
jsr _LVOReplyMsg(a6)
jsr _LVOPermit(a6)
movem.l (sp)+,d0-a6 ;rejestry ze stosu
exiterror: move.l #20,d0 ;koniec
rts
dosname: dc.b 'dos.library',0
reqtoolsname: dc.b 'reqtools.library',0
even
dosbase: ds.l 1
reqtoolsbase: ds.l 1
requesterbase: ds.l 1
message: ds.l 1
asktitle: dc.b 'System Reset by Tomasz "Pony" Pëczek',0
asktext: dc.b 'Czy mam zresetowaê Twojâ Amigë ?',0
askgadget: dc.b 'Resetuj|Zaniechaj',0
errorwindow: dc.b 'CON:0/0/100/50/Wystâpiî bîâd !!!',0
noreqtoolstext: dc.b 'Nie mogë otworzyê reqtools.library V38',0
norequestertext:dc.b 'Nie mogë otworzyê requastera',0