home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD1.iso / Disk&HD / sleepr20.lha / Sleeper.asm < prev    next >
Encoding:
Assembly Source File  |  1994-08-21  |  5.7 KB  |  279 lines

  1. ;---------------------------------------------------------------------------
  2. ;    :Program.    Sleeper.asm
  3. ;    :Author.     Christoph Dworzak
  4. ;    :Address.    creaholic sa ; Molzgasse 10 ; 2502 BIEL ; Switzerland
  5. ;    :Phone.      [(++41|0)32] 50 19 11
  6. ;    :BBS/Fax.    [(++41|0)32] 50 19 15
  7. ;    :BBS/ISDN.   [(++41|0)32] 50 19 19
  8. ;    :Shortcut.   [CHD]
  9. ;    :Version.    2.0
  10. ;    :Date.       18.August 1994
  11. ;    :Copyright.  by Ch.Dworzak
  12. ;    :Language.   68000 Assembler
  13. ;    :Translator. a68k
  14. ;    :Contents.   patch BeginIO of scsi.device to stop HD
  15. ;    :Remark.     I am a member of:  FAB (First Amigaholics Biel)
  16. ;    :Remark.     AUGS (Amiga User Group Switzerland)
  17. ;    :Remark.     UseNet: dworz@amazing.link-ch1.ch
  18. ;    :Remark.     SwissAmiNet: 44:8010/409.0
  19. ;    :Remark.     AmigaNet: 39:110/409.0
  20. ;---------------------------------------------------------------------------
  21.  
  22.  
  23.  
  24.  
  25. FindTask                EQU  -294
  26. Signal                  EQU  -324
  27. ReleaseSemaphore        EQU  -570
  28. ObtainSemaphoreShared   EQU  -678
  29. Wait                    EQU  -318
  30.  
  31.  
  32.         XDEF MyBeginIO;
  33.         XDEF MyColdReboot;
  34.         XDEF MyResetHandler;
  35.         XDEF oBeginIO;
  36.         XDEF oColdReboot;
  37.         XDEF MyTask;
  38.         XDEF InColdReboot;
  39.         XDEF InResetHandler;
  40.         XDEF semaphore;
  41.         XDEF ExecBase;
  42.         XDEF unit;
  43.         XDEF watchdog;
  44.  
  45.         section "bss_Sleeper",bss
  46.  
  47. oBeginIO:       dc.l    0
  48. oColdReboot:    dc.l    0
  49. MyTask:         dc.l    0
  50. ExecBase:       dc.l    0
  51. InColdReboot:   dc.l    0
  52. InResetHandler: dc.l    0
  53. semaphore:
  54. s0:             dc.l    0
  55. s1:             dc.l    0
  56. s2:             dc.l    0
  57. s3:             dc.l    0
  58. s4:             dc.l    0
  59. s5:             dc.l    0
  60. s6:             dc.l    0
  61. s7:             dc.l    0
  62. unit:
  63. u0:             dc.l    0
  64. u1:             dc.l    0
  65. u2:             dc.l    0
  66. u3:             dc.l    0
  67. u4:             dc.l    0
  68. u5:             dc.l    0
  69. u6:             dc.l    0
  70. u7:             dc.l    0
  71. watchdog:
  72. w0:             dc.l    0
  73. w1:             dc.l    0
  74. w2:             dc.l    0
  75. w3:             dc.l    0
  76. w4:             dc.l    0
  77. w5:             dc.l    0
  78. w6:             dc.l    0
  79. w7:             dc.l    0
  80.  
  81.  
  82.         section "asm_Sleeper",code
  83.  
  84. MyResetHandler:
  85.         move.l  #-1,InResetHandler
  86.         rts
  87.  
  88.  
  89.  
  90. MyColdReboot:
  91.         move.l  #-1,InColdReboot
  92.         move.l  ExecBase,a6
  93.         moveq   #0,d0
  94.         jsr     Wait(a6)                        ; Wait forever...
  95.         rts
  96.  
  97.  
  98.  
  99. MyBeginIO:
  100.         movem.L D0-D7/A0-A6,-(A7)
  101.         move.l  a1,a2
  102.         move.l  ExecBase,a6
  103.         suba.l  a1,a1
  104.         jsr     FindTask(a6)
  105.         cmp.l   MyTask,d0
  106.         beq     ok
  107. sync:
  108.         move.l  24(a2),d1                       ; Unit from IOStdReq
  109.  
  110.         cmp.l   u0,d1
  111.         beq     u0ok
  112.         cmp.l   u1,d1
  113.         beq     u1ok
  114.         cmp.l   u2,d1
  115.         beq     u2ok
  116.         cmp.l   u3,d1
  117.         beq     u3ok
  118.         cmp.l   u4,d1
  119.         beq     u4ok
  120.         cmp.l   u5,d1
  121.         beq     u5ok
  122.         cmp.l   u6,d1
  123.         beq     u6ok
  124.         cmp.l   u7,d1
  125.         beq     u7ok
  126. ok:
  127.         movem.L (A7)+,D0-D7/A0-a6
  128.         movea.l oBeginIO,a0
  129.         jmp     (a0)
  130.  
  131.  
  132. u0ok:
  133.         clr.l   w0
  134.  
  135.         move.l  s0,a0
  136.         jsr     ObtainSemaphoreShared(a6)
  137.  
  138.         movem.L (A7)+,D0-D7/A0-a6
  139.  
  140.         movea.l oBeginIO,a0
  141.         jsr     (a0)
  142.  
  143.         move.l  a6,-(sp)
  144.         move.l  ExecBase,a6
  145.         move.l  s0,a0
  146.         jsr     ReleaseSemaphore(a6)
  147.         move.l  (sp)+,a6
  148.  
  149.         rts
  150. u1ok:
  151.         clr.l   w1
  152.  
  153.         move.l  s1,a0
  154.         jsr     ObtainSemaphoreShared(a6)
  155.  
  156.         movem.L (A7)+,D0-D7/A0-a6
  157.  
  158.         movea.l oBeginIO,a0
  159.         jsr     (a0)
  160.  
  161.         move.l  a6,-(sp)
  162.         move.l  ExecBase,a6
  163.         move.l  s1,a0
  164.         jsr     ReleaseSemaphore(a6)
  165.         move.l  (sp)+,a6
  166.  
  167.         rts
  168. u2ok:
  169.         clr.l   w2
  170.  
  171.         move.l  s2,a0
  172.         jsr     ObtainSemaphoreShared(a6)
  173.  
  174.         movem.L (A7)+,D0-D7/A0-a6
  175.  
  176.         movea.l oBeginIO,a0
  177.         jsr     (a0)
  178.  
  179.         move.l  a6,-(sp)
  180.         move.l  ExecBase,a6
  181.         move.l  s2,a0
  182.         jsr     ReleaseSemaphore(a6)
  183.         move.l  (sp)+,a6
  184.  
  185.         rts
  186. u3ok:
  187.         clr.l   w3
  188.  
  189.         move.l  s3,a0
  190.         jsr     ObtainSemaphoreShared(a6)
  191.  
  192.         movem.L (A7)+,D0-D7/A0-a6
  193.  
  194.         movea.l oBeginIO,a0
  195.         jsr     (a0)
  196.  
  197.         move.l  a6,-(sp)
  198.         move.l  ExecBase,a6
  199.         move.l  s3,a0
  200.         jsr     ReleaseSemaphore(a6)
  201.         move.l  (sp)+,a6
  202.  
  203.         rts
  204. u4ok:
  205.         clr.l   w4
  206.  
  207.         move.l  s4,a0
  208.         jsr     ObtainSemaphoreShared(a6)
  209.  
  210.         movem.L (A7)+,D0-D7/A0-a6
  211.  
  212.         movea.l oBeginIO,a0
  213.         jsr     (a0)
  214.  
  215.         move.l  a6,-(sp)
  216.         move.l  ExecBase,a6
  217.         move.l  s4,a0
  218.         jsr     ReleaseSemaphore(a6)
  219.         move.l  (sp)+,a6
  220.  
  221.         rts
  222. u5ok:
  223.         clr.l   w5
  224.  
  225.         move.l  s5,a0
  226.         jsr     ObtainSemaphoreShared(a6)
  227.  
  228.         movem.L (A7)+,D0-D7/A0-a6
  229.  
  230.         movea.l oBeginIO,a0
  231.         jsr     (a0)
  232.  
  233.         move.l  a6,-(sp)
  234.         move.l  ExecBase,a6
  235.         move.l  s5,a0
  236.         jsr     ReleaseSemaphore(a6)
  237.         move.l  (sp)+,a6
  238.  
  239.         rts
  240. u6ok:
  241.         clr.l   w6
  242.  
  243.         move.l  s6,a0
  244.         jsr     ObtainSemaphoreShared(a6)
  245.  
  246.         movem.L (A7)+,D0-D7/A0-a6
  247.  
  248.         movea.l oBeginIO,a0
  249.         jsr     (a0)
  250.  
  251.         move.l  a6,-(sp)
  252.         move.l  ExecBase,a6
  253.         move.l  s6,a0
  254.         jsr     ReleaseSemaphore(a6)
  255.         move.l  (sp)+,a6
  256.  
  257.         rts
  258. u7ok:
  259.         clr.l   w7
  260.  
  261.         move.l  s7,a0
  262.         jsr     ObtainSemaphoreShared(a6)
  263.  
  264.         movem.L (A7)+,D0-D7/A0-a6
  265.  
  266.         movea.l oBeginIO,a0
  267.         jsr     (a0)
  268.  
  269.         move.l  a6,-(sp)
  270.         move.l  ExecBase,a6
  271.         move.l  s7,a0
  272.         jsr     ReleaseSemaphore(a6)
  273.         move.l  (sp)+,a6
  274.  
  275.         rts
  276.  
  277.  
  278.         END
  279.