home *** CD-ROM | disk | FTP | other *** search
- ;---------------------------------------------------------------------------
- ; :Program. Sleeper.asm
- ; :Author. Christoph Dworzak
- ; :Address. creaholic sa ; Molzgasse 10 ; 2502 BIEL ; Switzerland
- ; :Phone. [(++41|0)32] 50 19 11
- ; :BBS/Fax. [(++41|0)32] 50 19 15
- ; :BBS/ISDN. [(++41|0)32] 50 19 19
- ; :Shortcut. [CHD]
- ; :Version. 2.0
- ; :Date. 18.August 1994
- ; :Copyright. by Ch.Dworzak
- ; :Language. 68000 Assembler
- ; :Translator. a68k
- ; :Contents. patch BeginIO of scsi.device to stop HD
- ; :Remark. I am a member of: FAB (First Amigaholics Biel)
- ; :Remark. AUGS (Amiga User Group Switzerland)
- ; :Remark. UseNet: dworz@amazing.link-ch1.ch
- ; :Remark. SwissAmiNet: 44:8010/409.0
- ; :Remark. AmigaNet: 39:110/409.0
- ;---------------------------------------------------------------------------
-
-
-
-
- FindTask EQU -294
- Signal EQU -324
- ReleaseSemaphore EQU -570
- ObtainSemaphoreShared EQU -678
- Wait EQU -318
-
-
- XDEF MyBeginIO;
- XDEF MyColdReboot;
- XDEF MyResetHandler;
- XDEF oBeginIO;
- XDEF oColdReboot;
- XDEF MyTask;
- XDEF InColdReboot;
- XDEF InResetHandler;
- XDEF semaphore;
- XDEF ExecBase;
- XDEF unit;
- XDEF watchdog;
-
- section "bss_Sleeper",bss
-
- oBeginIO: dc.l 0
- oColdReboot: dc.l 0
- MyTask: dc.l 0
- ExecBase: dc.l 0
- InColdReboot: dc.l 0
- InResetHandler: dc.l 0
- semaphore:
- s0: dc.l 0
- s1: dc.l 0
- s2: dc.l 0
- s3: dc.l 0
- s4: dc.l 0
- s5: dc.l 0
- s6: dc.l 0
- s7: dc.l 0
- unit:
- u0: dc.l 0
- u1: dc.l 0
- u2: dc.l 0
- u3: dc.l 0
- u4: dc.l 0
- u5: dc.l 0
- u6: dc.l 0
- u7: dc.l 0
- watchdog:
- w0: dc.l 0
- w1: dc.l 0
- w2: dc.l 0
- w3: dc.l 0
- w4: dc.l 0
- w5: dc.l 0
- w6: dc.l 0
- w7: dc.l 0
-
-
- section "asm_Sleeper",code
-
- MyResetHandler:
- move.l #-1,InResetHandler
- rts
-
-
-
- MyColdReboot:
- move.l #-1,InColdReboot
- move.l ExecBase,a6
- moveq #0,d0
- jsr Wait(a6) ; Wait forever...
- rts
-
-
-
- MyBeginIO:
- movem.L D0-D7/A0-A6,-(A7)
- move.l a1,a2
- move.l ExecBase,a6
- suba.l a1,a1
- jsr FindTask(a6)
- cmp.l MyTask,d0
- beq ok
- sync:
- move.l 24(a2),d1 ; Unit from IOStdReq
-
- cmp.l u0,d1
- beq u0ok
- cmp.l u1,d1
- beq u1ok
- cmp.l u2,d1
- beq u2ok
- cmp.l u3,d1
- beq u3ok
- cmp.l u4,d1
- beq u4ok
- cmp.l u5,d1
- beq u5ok
- cmp.l u6,d1
- beq u6ok
- cmp.l u7,d1
- beq u7ok
- ok:
- movem.L (A7)+,D0-D7/A0-a6
- movea.l oBeginIO,a0
- jmp (a0)
-
-
- u0ok:
- clr.l w0
-
- move.l s0,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s0,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u1ok:
- clr.l w1
-
- move.l s1,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s1,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u2ok:
- clr.l w2
-
- move.l s2,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s2,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u3ok:
- clr.l w3
-
- move.l s3,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s3,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u4ok:
- clr.l w4
-
- move.l s4,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s4,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u5ok:
- clr.l w5
-
- move.l s5,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s5,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u6ok:
- clr.l w6
-
- move.l s6,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s6,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
- u7ok:
- clr.l w7
-
- move.l s7,a0
- jsr ObtainSemaphoreShared(a6)
-
- movem.L (A7)+,D0-D7/A0-a6
-
- movea.l oBeginIO,a0
- jsr (a0)
-
- move.l a6,-(sp)
- move.l ExecBase,a6
- move.l s7,a0
- jsr ReleaseSemaphore(a6)
- move.l (sp)+,a6
-
- rts
-
-
- END
-