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 / ForceMode32.a < prev    next >
Text File  |  1994-03-01  |  2KB  |  54 lines

  1.     Title    'Force 32-bit addressing to a known state' ;
  2. *
  3. * Module for "Force" shell.
  4. * Ben Cranston March 1, 1994
  5. *
  6.     Print    Off            ; Here be includes
  7.     Include    'Traps.a'        ;
  8.     Print    On,NoGen        ; Here be includes
  9.     Main                ; Begin module
  10. *
  11.     Sub.L    #2,A7            ; Make two bytes on stack
  12.     Tst.L    D1            ; Did we get a data resource?
  13.     BEq.S    @999            ; If not then get out
  14.     Move.L    D1,A0            ; Get handle
  15.     Move.L    (A0),A0            ; Get pointer
  16.     Move.B    1(A0),1(A7)        ; Get flag
  17. *
  18. * Get current PRAM contents, decide if we have to reset and reboot.
  19. *
  20.     Move.L    #$0001008A,D0        ; Byte 8A
  21.     Move.L    A7,A0            ; Point to stack space
  22.     _ReadXPram            ; Read current from parameter RAM
  23.     BEq.S    @010            ; If no error then skip
  24.     Clr.L    D0            ; Else set no reboot
  25.     Bra.S    @999            ; Return to driver
  26. *
  27. @010    ;
  28.     Move.B    #5,D1            ; Get value for 32 bit addressing on
  29.     Tst.B    1(A7)            ; Did he want it on?
  30.     BNE.S    @020            ; Yes, skip this
  31.     Clr.B    D1            ; Else set value for 24 bit addressing
  32. @020    ;
  33.     Move.B    (A7),D2            ; Get current value
  34.     And.B    #$0F,D2            ; Get just our bits
  35.     Cmp.B    D1,D2            ; Is it set correctly?
  36.     BEq.S    @999            ; Yes, no need to change things
  37. *
  38. * Write desired contents to PRAM and force reboot.
  39. *
  40.     Move.B    (A7),D2            ; Get current value
  41.     And.B    #$F0,D2            ; Keep upper bits
  42.     Or.B    D1,D2            ; Set desired lower bits
  43.     Move.B    D2,(A7)            ; Set desired value
  44.     Move.L    A7,A0            ; Point to stack space
  45.     Move.L    #$0001008A,D0        ; Byte 8A
  46.     _WriteXPram            ; Write back to parameter RAM
  47.     Move.L    #1,D0            ; Set flat to force reboot
  48. @999    ;
  49.     Add.L    #2,A7            ; Drop local frame
  50.     RTS                ; Return to driver
  51. *
  52.     EndMain                ; Keep MPW happy
  53.     End                ; ForceMode32.a
  54.