START     move.l    $4.w,a6
          moveq     #37,d0
          lea       dosname(pc),a1
          jsr       _LVOOpenLibrary(a6)
          move.l    d0,_DosBase
          beq.s     .exit
          move.l    d0,a6
          lea       template(pc),a0
          move.l    a0,d1
          lea       _Param(pc),a0
          move.l    a0,d2
          moveq     #0,d3
          jsr       _LVOReadArgs(a6)
          move.l    d0,d1
          bne.s     .ArgsOK
          jsr       _LVOIoErr(a6)
          move.l    d0,d1
          move.l    d3,d2
          jsr       _LVOPrintFault(a6)
.quit     move.l    $4.w,a6
          move.l    _DosBase(pc),a1
          jsr       _LVOCloseLibrary(a6)
.exit     moveq     #0,d0
          rts

          cnop      0,4

.error    lea       errortxt(pc),a0
          move.l    a0,d1
          move.l    _DosBase(pc),a6
          jsr       _LVOPutStr(a6)
          bra       .quit

          cnop      0,4

.ArgsOK   move.l    _Param(pc),d0
          beq.s     .skip0
          move.l    d0,a0
          move.l    (a0),_Mask
.skip0    jsr       _LVOFreeArgs(a6)
          move.l    $4.w,a6
          lea       DeviceList(a6),a0
          lea       mcname(pc),a1
          jsr       _LVOFindName(a6)
          move.l    d0,_Device
          beq.s     .error
          move.l    d0,a0
          cmpi.w    #2,LIB_VERSION(a0)
          bne.s     .error
          moveq     #0,d5
          move.w    #$2c6,d6
          move.w    LIB_REVISION(a0),d0
          sub.w     #201,d0
          beq.s     .version
          subq.w    #1,d0
          bne.s     .error
          moveq     #2,d5
          move.w    #$2e0,d6
.version  lea       mcname(pc),a1
          jsr       _LVOFindTask(a6)
          move.l    d0,_Task
          beq.s     .error
          jsr       _LVODisable(a6)
          moveq     #0,d7
          move.l    _Device(pc),a0
          move.l    -4(a0),a0
          lea       $34(a0),a0
          lea       Patch1,a1
          add.w     d5,2(a1)
          move.l    (a1),d5
          cmp.l     (a0),d5
          bne.s     .skip1
          cmpi.l    #$03006708,4(a0)
          bne.s     .skip1
          moveq     #1,d7
          move.w    #$4eb9,(a0)+
          move.l    a1,(a0)
.skip1    move.l    _Task(pc),a0
          move.l    pr_SegList(a0),d0
          beq.s     .skip2
          lsl.l     #2,d0
          move.l    d0,a0
          move.l    $c(a0),d0
          beq.s     .skip2
          lsl.l     #2,d0
          move.l    d0,a0
          lea       (a0,d6.w),a0
          cmpi.l    #$226a001c,(a0)
          bne.s     .skip2
          moveq     #1,d7
          lea       Patch2,a1
          move.w    #$4eb9,(a0)+
          move.l    a1,(a0)+
          move.w    #$6f3c,(a0)
.skip2    tst.l     d7
          beq.s     .skip3
          lea       START-4(pc),a0
          clr.l     (a0)
.skip3    jsr       _LVOCacheClearU(a6)
          jsr       _LVOEnable(a6)
          bra       .quit


dosname   dc.b      "dos.library",0
mcname    dc.b      "MASOBOSHI.device",0
          dc.b      "$VER: SetPatchMC702 1.3 (2.2.96)"
          dc.b      "for MASOBOSHI.device v2.201 and v2.202",0
errortxt  dc.b      "You need MASOBOSHI.device v2.201 or v2.202 to install this patch!",10,0
template  dc.b      "UNITMASK/N",0
          even
_Device   dc.l      0
_Task     dc.l      0
_DosBase  dc.l      0
_Param    dc.l      0

          section   Ooops,CODE

_Mask     dc.l      0

Patch1    move.w    $184(a6),d0
          or.w      _Mask+2(pc),d0
          btst      d1,d0
          rts

          cnop      0,4

Patch2    move.l    $1c(a2),d1
          move.l    d1,a1
          add.l     a1,a1
          add.l     a1,a1
          subq.l    #2,d1
          rts
