home *** CD-ROM | disk | FTP | other *** search
/ HyperLib 1997 Winter - Disc 1 / HYPERLIB-1997-Winter-CD1.ISO.7z / HYPERLIB-1997-Winter-CD1.ISO / オンラインウェア / UTIL / ForcePRAM.sit / ForceDriver.a < prev    next >
Text File  |  1994-03-01  |  2KB  |  72 lines

  1.     Title    'Driver shell for PRAM force scheme' ;
  2. *
  3. * Ben Cranston March 1, 1994
  4. *
  5.     Print    Off            ; Here be includes
  6. *
  7.     Include    'ShutDownEqu.a'        ;
  8.     Include    'Traps.a'        ;
  9. *
  10.     Print    On,NoGen        ; Here be includes
  11.     Main                ; Begin module
  12. *
  13. S    Record    {A6Link},Decr        ; Stack frame
  14. A6Link    DS.L    1            ; Caller's A6
  15. resName    DS.B    256            ; Resource name fetched here
  16. resType    DS.L    1            ; Resource type fetched here
  17. resID    DS.W    1            ; Resource ID number fetched here
  18. SS    Equ    *            ; Stack size
  19.     EndR                ; Stack frame
  20. *
  21.     Eject                ;
  22. *
  23.     MoveM.L    D3-D5,-(A7)        ; Save registers
  24.     Link    A6,#S.SS        ; Make local frame
  25.     Clr.W    D3            ; Clear reboot flag
  26.     Clr.W    D4            ; Clear code resource index
  27. @010    ;
  28.     Add.W    #1,D4            ; Increment code resource index
  29.     Sub.L    #4,A7            ; Result: ResourceHandle
  30.     Move.L    #'FoRc',-(A7)        ; Arg: ResourceType
  31.     Move.W    D4,-(A7)        ; Arg: ResourceIndex
  32.     _Get1IndResource        ; Get next code ("FoRc") resource
  33.     Move.L    (A7)+,D5        ; Get code resource handle
  34.     BEq.S    @080            ; If done go check reboot flag
  35. *
  36.     Move.L    D5,-(A7)        ; Arg: ResourceHandle
  37.     PEA    S.resID(A6)        ; Arg: ^ID
  38.     PEA    S.resType(A6)        ; Arg: ^Type
  39.     PEA    S.resName(A6)        ; Arg: ^Name
  40.     _GetResInfo            ; Find out about code resource
  41.     Sub.L    #4,A7            ; Result: ResourceHandle
  42.     Move.L    #'DATA',-(A7)        ; Arg: ResourceType
  43.     Move.W    S.resID(A6),-(A7)    ; Arg: ResourceNumber
  44.     _Get1Resource            ; Get associated data resource
  45.     Move.L    (A7)+,D1        ; Pass data resource to code resource
  46. *
  47.     Clr.L    D0            ; Set initially no reboot
  48.     Move.L    D5,A0            ; Get resource handle
  49.     Move.L    (A0),A1            ; Get resource pointer
  50. *
  51. *    PEA    S.resName(A6)        ; $$TEMP$$
  52. *    _DebugStr            ; $$TEMP$$
  53. *
  54.     JSr    (A1)            ; Call module
  55.     Tst.W    D0            ; Test module result status
  56.     BEq.S    @010            ; If no reboot needed then loop
  57.     Move.W    #1,D3            ; Else set reboot flag
  58.     Bra.S    @010            ; Back for another module
  59. *
  60. @080    ;
  61.     Tst.W    D3            ; Test reboot flag
  62.     BEq.S    @999            ; If no reboot then exit to system
  63.     _SDRestart            ; Force Restart
  64. *
  65. @999    ;
  66.     UnLk    A6            ; Drop local frame
  67.     MoveM.L    (A7)+,D3-D5        ; Restore registers
  68.     RTS                ; Return to INIT31
  69. *
  70.     EndMain                ; Keep MPW happy
  71.     End                ; ForceDriver.a
  72.