entry:
      fb             sti       
      fc             cld       
      50             push      ax 12
      51             push      cx 10
      52             push      dx e
      53             push      bx c
      55             push      bp a
      56             push      si 8
      57             push      di 6
      1e             push      ds 4
      06             push      es 2
      55             push      bp 0
      8b ec          mov       bp,sp
      6a 40          push      ib_40
      1f             pop       ds
      e8 69 cf       call      bl_7e8d
      50             push      ax
      8a c4          mov       al,ah
      3c 18          cmp       al,ib_18
      77 62          ja        bs_af8d
      3c 05          cmp       al,ib_5
      76 0e          jbe       bs_af3d
      3c 08          cmp       al,ib_8
      75 04          jnz       bs_af37
      b0 06          mov       al,ib_6
      eb 06          jmp       bs_af3d
af37: 3c 15          cmp       al,ib_15
      72 52          jb        bs_af8d
      2c 0e          sub       al,ib_e
af3d: 98             cbw       
      8b f8          mov       di,ax
      58             pop       ax
      d1 e7          shl       di,1
      2e ff a5 fa ae jmp       word ptr cs:[di+ow_aefa]

af48: 8a c4          mov       al,ah
      9f             lahf      
      50             push      ax
      6a 40          push      ib_40
      1f             pop       ds
      8a 46 0e       mov       al,[bp+os_dx]
      3c 01          cmp       al,ib_1
      77 18          ja        bs_af6e
      32 e4          xor       ah,ah
      bb 90 00       mov       bx,MediaBytes_90
      03 d8          add       bx,ax
      f6 07 10       test      byte ptr [bx],ib_10
      74 0c          jz        bs_af6e
      b2 04          mov       dl,ib_4
      f6 e2          mul       dl
      8a c8          mov       cl,al
      d2 e2          shl       dl,cl
      08 16 8f 00    or        [ad_8f],dl
af6e: 58             pop       ax
      9e             sahf      
      8a e0          mov       ah,al
af72: 88 66 13       mov       [bp+os_13],ah
      b8 01 02       mov       ax,iw_201
      72 05          jb        bs_af7f
      80 66 18 fe    and       byte ptr [bp+os_flags],ib_fe
      48             dec       ax
af7f: 09 46 18       or        [bp+os_flags],ax
      5d             pop       bp
      07             pop       es
      1f             pop       ds
      5f             pop       di
      5e             pop       si
      5d             pop       bp
      5b             pop       bx
      5a             pop       dx
      59             pop       cx
      58             pop       ax
      cf             iret      

af8d: 58             pop       ax
      b4 01          mov       ah,ib_1
      88 26 41 00    mov       [DisketteStatus_41],ah
      f9             stc       
      eb db          jmp       bs_af72

Reset:
      e8 1f 00       call      DoReset
      88 26 41 00    mov       [DisketteStatus_41],ah
      8a c4          mov       al,ah
      9f             lahf      
      50             push      ax
      1e             push      ds
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8a 4c 02       mov       cl,[si+os_2]
      1f             pop       ds
      88 0e 40 00    mov       [MotorTimeout_40],cl
      58             pop       ax
      9e             sahf      
      8a e0          mov       ah,al
      eb b9          jmp       bs_af72

DoReset:
      80 26 3e 00 f0 and       byte ptr [DisketteRecal_3e],ib_f0
      e9 4f 0d       jmp       bl_bd10
afc1: 72 07          jb        bs_afca
      e9 ce 0d       jmp       SendDiskSpecify
afc6: 72 02          jb        bs_afca
      32 e4          xor       ah,ah
afca: c3             ret       

ReadStatus:
      8a 26 41 00    mov       ah,[DisketteStatus_41]
      0a e4          or        ah,ah
      74 01          jz        bs_afd4
      f9             stc       
afd4: eb 9c          jmp       bs_af72

ReadDriveType:
      80 fa 01       cmp       dl,ib_1
      76 09          jbe       bs_afe4
      b4 01          mov       ah,ib_1
      f9             stc       
      88 26 41 00    mov       [DisketteStatus_41],ah
      eb 31          jmp       bs_b015
afe4: eb 03          jmp       bs_afe9
      90             nop       
      7f 24          jg        bs_b00d
afe9: bb 90 00       mov       bx,MediaBytes_90
      32 f6          xor       dh,dh
      03 da          add       bx,dx
      8a 1f          mov       bl,[bx]
      0a db          or        bl,bl
      75 04          jnz       bs_affa
      32 e4          xor       ah,ah
      eb 15          jmp       bs_b00f
affa: 80 e3 07       and       bl,ib_7
      74 0e          jz        bs_b00d
      80 fb 03       cmp       bl,ib_3
      74 09          jz        bs_b00d
      e8 af 0d       call      UnknownError
      73 04          jae       bs_b00d
      b4 02          mov       ah,ib_2
      eb 02          jmp       bs_b00f
b00d: b4 01          mov       ah,ib_1
b00f: f8             clc       
      c6 06 41 00 00 mov       byte ptr [DisketteStatus_41],ib_0
b015: e9 30 ff       jmp       bl_af48

SetDisketteType:
      32 e4          xor       ah,ah
      80 fa 01       cmp       dl,ib_1
      76 09          jbe       bs_b028
b01f: b4 01          mov       ah,ib_1
b021: 88 26 41 00    mov       [DisketteStatus_41],ah
      f9             stc       
      eb 62          jmp       bs_b08a
b028: 3c 00          cmp       al,ib_0
      74 f3          jz        bs_b01f
      3c 04          cmp       al,ib_4
      77 ef          ja        bs_b01f
      bb 90 00       mov       bx,MediaBytes_90
      32 f6          xor       dh,dh
      03 da          add       bx,dx
      3c 01          cmp       al,ib_1
      75 0a          jnz       bs_b045
      c6 07 93       mov       byte ptr [bx],ib_93
      c6 06 41 00 00 mov       byte ptr [DisketteStatus_41],ib_0
      eb 3c          jmp       bs_b081
b045: 8b c8          mov       cx,ax
      e8 6c 0d       call      UnknownError
      73 1e          jae       bs_b06a
      53             push      bx
      e8 e5 09       call      MotorsOn
      5e             pop       si
      56             push      si
      e8 c2 0a       call      CheckDoor
      5b             pop       bx
      80 fc 06       cmp       ah,ib_6
      76 0f          jbe       bs_b06a
      80 fc 80       cmp       ah,ib_80
      75 0a          jnz       bs_b06a
      80 3f 97       cmp       byte ptr [bx],ib_97
      74 bc          jz        bs_b021
      c6 07 61       mov       byte ptr [bx],ib_61
      eb b7          jmp       bs_b021
b06a: 80 f9 04       cmp       cl,ib_4
      75 05          jnz       bs_b074
      c6 07 97       mov       byte ptr [bx],ib_97
      eb 0d          jmp       bs_b081
b074: 80 f9 02       cmp       cl,ib_2
      75 05          jnz       bs_b07e
      c6 07 74       mov       byte ptr [bx],ib_74
      eb 03          jmp       bs_b081
b07e: c6 07 15       mov       byte ptr [bx],ib_15
b081: 0a e4          or        ah,ah
      75 9c          jnz       bs_b021
      c6 06 41 00 00 mov       byte ptr [DisketteStatus_41],ib_0
b08a: e9 bb fe       jmp       bl_af48

DetectMediaChange:
      80 fa 01       cmp       dl,ib_1
      76 05          jbe       bs_b097
      b4 01          mov       ah,ib_1
b094: f9             stc       
      eb 31          jmp       bs_b0c8
b097: 32 f6          xor       dh,dh
      bb 90 00       mov       bx,MediaBytes_90
      03 da          add       bx,dx
      80 3f 00       cmp       byte ptr [bx],ib_0
      b4 80          mov       ah,ib_80
      74 ef          jz        bs_b094
      8a 27          mov       ah,[bx]
      80 e4 07       and       ah,ib_7
      74 05          jz        bs_b0b1
      80 fc 03       cmp       ah,ib_3
      75 05          jnz       bs_b0b6
b0b1: b4 06          mov       ah,ib_6
      f9             stc       
      eb 12          jmp       bs_b0c8
b0b6: e8 fd 0c       call      UnknownError
      73 f6          jae       bs_b0b1
      e8 77 09       call      MotorsOn
      ba f7 03       mov       dx,ControllerDigitalInputRegister_3f7
      ec             in        al,dx
      d0 e0          shl       al,1
      72 eb          jb        bs_b0b1
      32 e4          xor       ah,ah
b0c8: 88 26 41 00    mov       [DisketteStatus_41],ah
      50             push      ax
      56             push      si
      1e             push      ds
      be 00 00       mov       si,iw_0
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8a 44 02       mov       al,[si+os_2]
      1f             pop       ds
      a2 40 00       mov       [MotorTimeout_40],al
      5e             pop       si
      58             pop       ax
      e9 64 fe       jmp       bl_af48

ReadWriteVerify:
      80 fa 01       cmp       dl,ib_1
      76 0c          jbe       bs_b0f5
      b4 01          mov       ah,ib_1
b0eb: 88 26 41 00    mov       [DisketteStatus_41],ah
      32 c0          xor       al,al
      f9             stc       
      e9 e0 00       jmp       bl_b1d5
b0f5: be 90 00       mov       si,MediaBytes_90
      52             push      dx
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      80 3c 00       cmp       byte ptr [si],ib_0
      5a             pop       dx
      75 13          jnz       bs_b116
      50             push      ax
      e8 7d 3f       call      GetFloppyFromCmos
      74 05          jz        bs_b10e
      58             pop       ax
b10a: b4 80          mov       ah,ib_80
      eb dd          jmp       bs_b0eb
b10e: 0a c0          or        al,al
      58             pop       ax
      74 f7          jz        bs_b10a
      c6 04 02       mov       byte ptr [si],ib_2
b116: bf 3f 00       mov       di,MotorStatus_3f
      80 25 7f       and       byte ptr [di],ib_7f
      80 fc 03       cmp       ah,ib_3
      75 03          jnz       bs_b124
      80 0d 80       or        byte ptr [di],ib_80
b124: 56             push      si
      e8 5c 3f       call      GetFloppyFromCmos
      75 07          jnz       bs_b131
      3c 01          cmp       al,ib_1
      75 03          jnz       bs_b131
      c6 04 93       mov       byte ptr [si],ib_93
b131: e8 01 09       call      MotorsOn
      e8 e0 09       call      CheckDoor
      5e             pop       si
      73 0e          jae       bs_b148
b13a: e8 79 09       call      GetFailedSector
      eb ac          jmp       bs_b0eb
      3c 03          cmp       al,ib_3
      75 ee          jnz       bs_b131
      c6 04 97       mov       byte ptr [si],ib_97
      eb e9          jmp       bs_b131
b148: f6 04 10       test      byte ptr [si],ib_10
      75 07          jnz       bs_b154
      e8 74 07       call      bl_b8c4
      72 e8          jb        bs_b13a
      eb 03          jmp       bs_b157
b154: e8 8a 09       call      bl_bae1
b157: be 90 00       mov       si,MediaBytes_90
      52             push      dx
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      5a             pop       dx
      b8 03 df       mov       ax,iw_df03
      80 3c 17       cmp       byte ptr [si],ib_17
      75 02          jnz       bs_b16a
      b4 bf          mov       ah,ib_bf
b16a: 8b f0          mov       si,ax
      bf 02 00       mov       di,iw_2
      b5 03          mov       ch,ib_3
      80 0e 3e 00 80 or        byte ptr [DisketteRecal_3e],ib_80
      e8 b0 0a       call      CommandToControllerWithErrors
      72 bf          jb        bs_b13a
      8b 46 12       mov       ax,[bp+os_ax]
      32 e4          xor       ah,ah
      1e             push      ds
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8a 4c 03       mov       cl,[si+os_3]
      d2 e0          shl       al,cl
      b1 80          mov       cl,ib_80
      f6 e1          mul       cl
      1f             pop       ds
      48             dec       ax
      8b c8          mov       cx,ax
      e8 11 0a       call      CalculateAddress
      73 05          jae       bs_b1a0
      8b 4e 10       mov       cx,[bp+os_cx]
      eb 9a          jmp       bs_b13a
b1a0: 8b 46 12       mov       ax,[bp+os_ax]
      80 fc 02       cmp       ah,ib_2
      75 04          jnz       bs_b1ac
      b4 46          mov       ah,ib_46
      eb 09          jmp       bs_b1b5
b1ac: 80 fc 03       cmp       ah,ib_3
      b4 4a          mov       ah,ib_4a
      74 02          jz        bs_b1b5
      b4 42          mov       ah,ib_42
b1b5: e8 b1 09       call      SetDMAController
      8b 46 12       mov       ax,[bp+os_ax]
      8b 4e 10       mov       cx,[bp+os_cx]
      e9 2c 06       jmp       bl_b7ed
b1c1: e8 f2 08       call      GetFailedSector
      0a c0          or        al,al
      74 04          jz        bs_b1cc
      2a d9          sub       bl,cl
      8a c3          mov       al,bl
b1cc: 8a 26 41 00    mov       ah,[DisketteStatus_41]
      0a e4          or        ah,ah
      74 01          jz        bs_b1d5
      f9             stc       
b1d5: 88 46 12       mov       [bp+os_ax],al
      e9 6d fd       jmp       bl_af48

Format:
      80 fa 01       cmp       dl,ib_1
      76 0a          jbe       bs_b1ea
      b4 01          mov       ah,ib_1
b1e2: 88 26 41 00    mov       [DisketteStatus_41],ah
      f9             stc       
      e9 5e fd       jmp       bl_af48
b1ea: be 90 00       mov       si,MediaBytes_90
      52             push      dx
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      5a             pop       dx
      80 3c 00       cmp       byte ptr [si],ib_0
      b4 80          mov       ah,ib_80
      74 e8          jz        bs_b1e2
      bf 3f 00       mov       di,MotorStatus_3f
      80 0d 80       or        byte ptr [di],ib_80
      e8 32 08       call      MotorsOn
      e8 11 09       call      CheckDoor
      73 05          jae       bs_b20d
b208: e8 ab 08       call      GetFailedSector
      eb d5          jmp       bs_b1e2
b20d: e8 d1 08       call      bl_bae1
      e8 81 0b       call      SendDiskSpecify
      1e             push      ds
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8a 44 04       mov       al,[si+os_4]
      1f             pop       ds
      32 e4          xor       ah,ah
      b1 04          mov       cl,ib_4
      f6 e1          mul       cl
      8b c8          mov       cx,ax
      49             dec       cx
      e8 7e 09       call      CalculateAddress
      72 da          jb        bs_b208
      b4 4a          mov       ah,ib_4a
      e8 36 09       call      SetDMAController
      8b 4e 10       mov       cx,[bp+os_cx]
      e8 b7 04       call      Seek
      73 0d          jae       bs_b248
b23b: bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      50             push      ax
      e8 3e 0a       call      ReadFromController
      58             pop       ax
      eb 38          jmp       bs_b280
b248: c0 e6 02       shl       dh,ib_2
      0a f2          or        dh,dl
      b2 cd          mov       dl,ib_cd
      1e             push      ds
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      50             push      ax
      8b 44 07       mov       ax,[si+os_7]
      89 46 00       mov       [bp+os_0],ax
      58             pop       ax
      8b 7c 03       mov       di,[si+os_3]
      1f             pop       ds
      8b f2          mov       si,dx
      b5 06          mov       ch,ib_6
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 b9 09       call      CommandToControllerWithErrors
      72 c9          jb        bs_b23b
      bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      e8 08 0a       call      ReadFromController
      72 03          jb        bs_b280
      e8 50 0a       call      ControllerErrorToBiosError
b280: 88 26 41 00    mov       [DisketteStatus_41],ah
      e8 2f 08       call      GetFailedSector
      8a 26 41 00    mov       ah,[DisketteStatus_41]
      0a e4          or        ah,ah
      74 01          jz        bs_b290
      f9             stc       
b290: e9 b5 fc       jmp       bl_af48

ReadParms:
      80 fa 80       cmp       dl,ib_80
      72 0a          jb        bs_b2a2
      b4 01          mov       ah,ib_1
      88 26 41 00    mov       [DisketteStatus_41],ah
      f9             stc       
      e9 a6 fc       jmp       bl_af48
b2a2: 33 ff          xor       di,di
      33 f6          xor       si,si
      32 f6          xor       dh,dh
      a0 10 00       mov       al,[ad_10]
      24 c1          and       al,ib_c1
      bf 02 00       mov       di,iw_2
      3c 41          cmp       al,ib_41
      74 08          jz        bs_b2bc
      4f             dec       di
      3c 01          cmp       al,ib_1
      74 03          jz        bs_b2bc
      e9 b4 00       jmp       bl_b370
b2bc: 80 fa 01       cmp       dl,ib_1
      76 03          jbe       bs_b2c4
      e9 ae 00       jmp       bl_b372
b2c4: b0 0e          mov       al,ib_e
      e8 d6 3b       call      ReadFromCMOS
      a8 c0          test      al,ib_c0
      75 41          jnz       bs_b30e
      b0 10          mov       al,ib_10
      e8 cd 3b       call      ReadFromCMOS
      0a d2          or        dl,dl
      75 04          jnz       bs_b2da
      b1 04          mov       cl,ib_4
      d2 e8          shr       al,cl
b2da: 24 0f          and       al,ib_f
      74 30          jz        bs_b30e
      3c 04          cmp       al,ib_4
      77 2c          ja        bs_b30e
      32 e4          xor       ah,ah
      8b f0          mov       si,ax
      8a f0          mov       dh,al
      bb 90 00       mov       bx,MediaBytes_90
      02 da          add       bl,dl
      8a 07          mov       al,[bx]
      a8 10          test      al,ib_10
      75 44          jnz       bs_b337
      83 fe 01       cmp       si,+is_1
      b0 93          mov       al,ib_93
      74 10          jz        bs_b30a
      83 fe 02       cmp       si,+is_2
      b0 02          mov       al,ib_2
      74 09          jz        bs_b30a
      83 fe 03       cmp       si,+is_3
      b0 97          mov       al,ib_97
      74 02          jz        bs_b30a
      b0 07          mov       al,ib_7
b30a: 88 07          mov       [bx],al
      eb 29          jmp       bs_b337
b30e: bb 90 00       mov       bx,MediaBytes_90
      02 da          add       bl,dl
      8a 07          mov       al,[bx]
      a8 10          test      al,ib_10
      74 67          jz        bs_b380
      8a e0          mov       ah,al
      24 c0          and       al,ib_c0
      3c 80          cmp       al,ib_80
      be 02 00       mov       si,iw_2
      75 0b          jnz       bs_b32f
      f6 c4 04       test      ah,ib_4
      be 01 00       mov       si,iw_1
      74 0b          jz        bs_b337
      be 04 00       mov       si,iw_4
b32f: f6 c4 07       test      ah,ib_7
      74 03          jz        bs_b337
      be 04 00       mov       si,iw_4
b337: 8b df          mov       bx,di
      8b fe          mov       di,si
      4f             dec       di
      03 ff          add       di,di
      2e 8b 85 98 b3 mov       ax,cs:[di+ow_b398]
      c6 46 0f 01    mov       byte ptr [bp+os_f],ib_1
      2e 8b bd a0 b3 mov       di,cs:[di+ow_b3a0]
      0e             push      cs
      07             pop       es
b34e: 88 5e 0e       mov       [bp+os_dx],bl
      88 66 11       mov       [bp+os_ch],ah
      88 46 10       mov       [bp+os_cx],al
      88 76 0c       mov       [bp+os_bx],dh
      c6 46 0d 00    mov       byte ptr [bp+os_d],ib_0
      8c 46 02       mov       [bp+os_2],es
      89 7e 06       mov       [bp+os_6],di
      88 26 41 00    mov       [DisketteStatus_41],ah
      33 c0          xor       ax,ax
      88 46 12       mov       [bp+os_ax],al
      e9 d8 fb       jmp       bl_af48
b370: 33 ff          xor       di,di
b372: 32 f6          xor       dh,dh
      33 c0          xor       ax,ax
      8e c0          mov       es,ax
      c6 46 0f 00    mov       byte ptr [bp+os_f],ib_0
      8b df          mov       bx,di
      eb ce          jmp       bs_b34e
b380: 8b df          mov       bx,di
      b0 0e          mov       al,ib_e
      e8 18 3b       call      ReadFromCMOS
      a8 c0          test      al,ib_c0
      75 e5          jnz       bs_b370
      0b f6          or        si,si
      74 e1          jz        bs_b370
      83 fe 03       cmp       si,+is_3
      76 a3          jbe       bs_b337
      33 f6          xor       si,si
      eb d8          jmp       bs_b370
      09 27          or        [bx],sp
      0f             db        0f
      4f             dec       di
      09 4f 12       or        [bx+os_12],cx
      4f             dec       di
      a8 b3          test      al,ib_b3
      b5 b3          mov       ch,ib_b3
      c2 b3 cf       ret       rt_cfb3
      b3 df          mov       bl,ib_df
      02 25          add       ah,[di]
      02 09          add       cl,[bx+di]
      2a ff          sub       bh,bh
      50             push      ax
      f6             db        f6
      0f             db        0f
      08 27          or        [bx],ah
      80 df 02       sbb       bh,ib_2
      25 02 0f       and       ax,iw_f02
      1b ff          sbb       di,di
      54             push      sp
      f6             db        f6
      0f             db        0f
      08 4f 00       or        [bx+os_0],cl
      df 02          fild      word ptr [bp+si]
      25 02 09       and       ax,iw_902
      2a ff          sub       bh,bh
      50             push      ax
      f6             db        f6
      0f             db        0f
      08 4f 80       or        [bx-os_80],cl
      af             scas      
      02 25          add       ah,[di]
      02 12          add       dl,[bp+si]
      1b ff          sbb       di,di
      6c             insb      
      f6             db        f6
      0f             db        0f
      08 4f 00       or        [bx+os_0],cl
      df 02          fild      word ptr [bp+si]
      25 02 09       and       ax,iw_902
      2a ff          sub       bh,bh
      50             push      ax
      f6             db        f6
      0f             db        0f
      08 27          or        [bx],ah
      40             inc       ax
SetMediaTypeForFormat:
      80 fa 01       cmp       dl,ib_1
      76 06          jbe       bs_b3f4
      b4 01          mov       ah,ib_1
b3f0: f9             stc       
      e9 54 fb       jmp       bl_af48
b3f4: e8 8d 3c       call      GetFloppyFromCmos
      74 04          jz        bs_b3fd
b3f9: b4 0c          mov       ah,ib_c
      eb f3          jmp       bs_b3f0
b3fd: 32 e4          xor       ah,ah
      8b f8          mov       di,ax
      8a 56 0e       mov       dl,[bp+os_dx]
      bb 90 00       mov       bx,MediaBytes_90
      32 f6          xor       dh,dh
      03 da          add       bx,dx
      3c 01          cmp       al,ib_1
      75 0f          jnz       bs_b41e
      8b 4e 10       mov       cx,[bp+os_cx]
      81 f9 09 27    cmp       cx,iw_2709
      be a8 b3       mov       si,iw_b3a8
      75 de          jnz       bs_b3f9
      e9 8c 00       jmp       bl_b4aa
b41e: 3c 03          cmp       al,ib_3
      75 0b          jnz       bs_b42d
      8b 4e 10       mov       cx,[bp+os_cx]
      81 f9 09 4f    cmp       cx,iw_4f09
      75 ce          jnz       bs_b3f9
      eb 28          jmp       bs_b455
b42d: 3c 04          cmp       al,ib_4
      74 15          jz        bs_b446
      3c 02          cmp       al,ib_2
      75 c4          jnz       bs_b3f9
      8b 4e 10       mov       cx,[bp+os_cx]
      81 f9 0f 4f    cmp       cx,iw_4f0f
      74 17          jz        bs_b455
      81 f9 09 27    cmp       cx,iw_2709
      75 b5          jnz       bs_b3f9
      eb 0f          jmp       bs_b455
b446: 8b 4e 10       mov       cx,[bp+os_cx]
      81 f9 12 4f    cmp       cx,iw_4f12
      74 06          jz        bs_b455
      81 f9 09 4f    cmp       cx,iw_4f09
      75 a4          jnz       bs_b3f9
b455: 8b 4e 10       mov       cx,[bp+os_cx]
      81 f9 12 4f    cmp       cx,iw_4f12
      b0 17          mov       al,ib_17
      be cf b3       mov       si,iw_b3cf
      b6 00          mov       dh,ib_0
      74 21          jz        bs_b486
      81 f9 09 4f    cmp       cx,iw_4f09
      b0 97          mov       al,ib_97
      be c2 b3       mov       si,iw_b3c2
      b6 02          mov       dh,ib_2
      74 14          jz        bs_b486
      81 f9 0f 4f    cmp       cx,iw_4f0f
      b0 15          mov       al,ib_15
      be b5 b3       mov       si,iw_b3b5
      b6 00          mov       dh,ib_0
      74 07          jz        bs_b486
      b0 74          mov       al,ib_74
      be dc b3       mov       si,iw_b3dc
      b6 01          mov       dh,ib_1
b486: 88 07          mov       [bx],al
      52             push      dx
      e8 82 06       call      bl_bb0e
      5a             pop       dx
      8a 07          mov       al,[bx]
      24 c0          and       al,ib_c0
      80 26 8b 00 3f and       byte ptr [ad_8b],ib_3f
      08 06 8b 00    or        [ad_8b],al
      89 76 06       mov       [bp+os_6],si
      8c 4e 02       mov       [bp+os_2],cs
      c6 06 41 00 00 mov       byte ptr [DisketteStatus_41],ib_0
      32 e4          xor       ah,ah
      e9 9e fa       jmp       bl_af48
b4aa: b6 02          mov       dh,ib_2
      b0 93          mov       al,ib_93
      eb d6          jmp       bs_b486
      80 26 10 00 3e and       byte ptr [ad_10],ib_3e
      80 0e 10 00 01 or        byte ptr [ad_10],ib_1
      e8 6a 01       call      bl_b627
      bb 3e 00       mov       bx,DisketteRecal_3e
      33 c0          xor       ax,ax
      b9 0b 00       mov       cx,iw_b
b4c5: 88 07          mov       [bx],al
      43             inc       bx
      e2 fb          loop      bs_b4c5
      a2 8f 00       mov       [ad_8f],al
      a3 90 00       mov       [ad_90],ax
      a3 92 00       mov       [ad_92],ax
      a3 94 00       mov       [ad_94],ax
      a2 96 00       mov       [ad_96],al
      b2 00          mov       dl,ib_0
      cd 13          int       it_13
      73 03          jae       bs_b4e2
      83 cd 01       or        bp,+is_1
b4e2: eb 00          jmp       bs_b4e4
b4e4: eb 00          jmp       bs_b4e6
b4e6: 90             nop       
      b6 02          mov       dh,ib_2
      e8 22 06       call      bl_bb0e
      32 f6          xor       dh,dh
      e8 1b 00       call      bl_b50c
      fe c6          inc       dh
      e8 16 00       call      bl_b50c
      8a 26 91 00    mov       ah,[ad_91]
      0a e4          or        ah,ah
      74 05          jz        bs_b503
      80 0e 10 00 40 or        byte ptr [ad_10],ib_40
b503: e8 d3 00       call      bl_b5d9
      c6 06 3e 00 00 mov       byte ptr [DisketteRecal_3e],ib_0
      c3             ret       
b50c: b9 02 00       mov       cx,iw_2
b50f: 8a d6          mov       dl,dh
      e8 21 05       call      MotorsOn
      e8 76 01       call      Home
      73 04          jae       bs_b51d
      e2 f4          loop      bs_b50f
      eb 55          jmp       bs_b572
b51d: b2 0f          mov       dl,ib_f
      8b f2          mov       si,dx
      bf 30 00       mov       di,iw_30
      e8 4c 00       call      bl_b573
      72 49          jb        bs_b572
      bf 0a 00       mov       di,iw_a
b52c: b2 0f          mov       dl,ib_f
      8b f2          mov       si,dx
      e8 40 00       call      bl_b573
      72 3d          jb        bs_b572
      b2 04          mov       dl,ib_4
      8b f2          mov       si,dx
      e8 7f 00       call      bl_b5bb
      72 34          jb        bs_b572
      0a ed          or        ch,ch
      74 05          jz        bs_b547
      4f             dec       di
      79 e7          jns       bs_b52c
      eb 2b          jmp       bs_b572
b547: 8a de          mov       bl,dh
      32 ff          xor       bh,bh
      c6 87 90 00 93 mov       byte ptr [bx+ow_90],ib_93
      b5 04          mov       ch,ib_4
      0b ff          or        di,di
      75 07          jnz       bs_b55d
      c6 87 90 00 02 mov       byte ptr [bx+ow_90],ib_2
      b5 01          mov       ch,ib_1
b55d: b0 04          mov       al,ib_4
      f6 e6          mul       dh
      8a c8          mov       cl,al
      d2 e5          shl       ch,cl
      08 2e 8f 00    or        [ad_8f],ch
      0b ff          or        di,di
      75 05          jnz       bs_b572
      eb 00          jmp       bs_b56f
b56f: eb 00          jmp       bs_b571
b571: 90             nop       
b572: c3             ret       
b573: 80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      8b c6          mov       ax,si
      8a e0          mov       ah,al
      e8 d7 06       call      ByteToController
      72 39          jb        bs_b5ba
      8b c6          mov       ax,si
      e8 d0 06       call      ByteToController
      72 32          jb        bs_b5ba
      8b c7          mov       ax,di
      8a e0          mov       ah,al
      e8 c7 06       call      ByteToController
      72 29          jb        bs_b5ba
      b8 01 90       mov       ax,iw_9001
      cd 15          int       MultiTask
      72 22          jb        bs_b5ba
      e8 28 08       call      AwaitInterruptALongTime
      72 1d          jb        bs_b5ba
      b4 08          mov       ah,ib_8
      e8 b4 06       call      ByteToController
      72 16          jb        bs_b5ba
      e8 00 07       call      ByteFromController
      72 11          jb        bs_b5ba
      8a d8          mov       bl,al
      e8 f9 06       call      ByteFromController
      72 0a          jb        bs_b5ba
      80 e3 60       and       bl,ib_60
      80 fb 60       cmp       bl,ib_60
      f8             clc       
      75 01          jnz       bs_b5ba
      f9             stc       
b5ba: c3             ret       
b5bb: 8b c6          mov       ax,si
      8a e0          mov       ah,al
      e8 94 06       call      ByteToController
      72 14          jb        bs_b5d8
      8b c6          mov       ax,si
      e8 8d 06       call      ByteToController
      72 0d          jb        bs_b5d8
      e8 d9 06       call      ByteFromController
      72 08          jb        bs_b5d8
      b5 ff          mov       ch,ib_ff
      a8 10          test      al,ib_10
      74 02          jz        bs_b5d8
      32 ed          xor       ch,ch
b5d8: c3             ret       
b5d9: be 90 00       mov       si,MediaBytes_90
      b0 0e          mov       al,ib_e
      e8 be 38       call      ReadFromCMOS
      a8 c0          test      al,ib_c0
      75 1c          jnz       bs_b601
      b0 10          mov       al,ib_10
      e8 b5 38       call      ReadFromCMOS
      8a e0          mov       ah,al
      b1 04          mov       cl,ib_4
      d2 e8          shr       al,cl
      24 0f          and       al,ib_f
      b1 00          mov       cl,ib_0
      e8 0b 00       call      bl_b602
      8a c4          mov       al,ah
      24 0f          and       al,ib_f
      46             inc       si
      b1 04          mov       cl,ib_4
      e8 01 00       call      bl_b602
b601: c3             ret       
b602: 80 3c 00       cmp       byte ptr [si],ib_0
      74 1f          jz        bs_b626
      80 3c 93       cmp       byte ptr [si],ib_93
      74 1a          jz        bs_b626
      3c 03          cmp       al,ib_3
      75 07          jnz       bs_b617
      c6 04 97       mov       byte ptr [si],ib_97
      b0 04          mov       al,ib_4
      eb 09          jmp       bs_b620
b617: 3c 04          cmp       al,ib_4
      75 03          jnz       bs_b61e
      c6 04 07       mov       byte ptr [si],ib_7
b61e: b0 02          mov       al,ib_2
b620: d2 e0          shl       al,cl
      08 06 8f 00    or        [ad_8f],al
b626: c3             ret       
b627: 50             push      ax
      51             push      cx
      52             push      dx
      ba f1 03       mov       dx,ControllerStatusRegisterB_3f1
      ec             in        al,dx
      24 f8          and       al,ib_f8
      3c 50          cmp       al,ib_50
      74 4f          jz        bs_b683
      ba f7 05       mov       dx,iw_5f7
      eb 00          jmp       bs_b639
b639: eb 00          jmp       bs_b63b
b63b: ec             in        al,dx
      24 f0          and       al,ib_f0
      3c a0          cmp       al,ib_a0
      74 39          jz        bs_b67b
      ba f7 01       mov       dx,iw_1f7
      b4 80          mov       ah,ib_80
      b9 03 00       mov       cx,iw_3
b64a: 51             push      cx
      33 c9          xor       cx,cx
      e8 0a 39       call      AwaitNotControllerBit
      59             pop       cx
      73 09          jae       bs_b65c
      e2 f5          loop      bs_b64a
      ec             in        al,dx
      24 0c          and       al,ib_c
      74 29          jz        bs_b683
      eb 1f          jmp       bs_b67b
b65c: ba f4 01       mov       dx,iw_1f4
      b0 aa          mov       al,ib_aa
      ee             out       dx,al
      eb 00          jmp       bs_b664
b664: eb 00          jmp       bs_b666
b666: ec             in        al,dx
      3c aa          cmp       al,ib_aa
      75 10          jnz       bs_b67b
      b0 55          mov       al,ib_55
      eb 00          jmp       bs_b66f
b66f: eb 00          jmp       bs_b671
b671: ee             out       dx,al
      eb 00          jmp       bs_b674
b674: eb 00          jmp       bs_b676
b676: ec             in        al,dx
      3c 55          cmp       al,ib_55
      74 08          jz        bs_b683
b67b: c6 06 8b 00 80 mov       byte ptr [ad_8b],ib_80
      f9             stc       
      eb 06          jmp       bs_b689
b683: c6 06 8b 00 81 mov       byte ptr [ad_8b],ib_81
      f8             clc       
b689: 5a             pop       dx
      59             pop       cx
      58             pop       ax
      c3             ret       
Home:
      51             push      cx
      52             push      dx
      8a f2          mov       dh,dl
      b2 07          mov       dl,ib_7
      8b f2          mov       si,dx
      b5 02          mov       ch,ib_2
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 8a 05       call      CommandToControllerWithErrors
      72 48          jb        bs_b6e9
      be 08 00       mov       si,iw_8
      b5 01          mov       ch,ib_1
      80 0e 3e 00 80 or        byte ptr [DisketteRecal_3e],ib_80
      e8 7b 05       call      CommandToControllerWithErrors
      72 39          jb        bs_b6e9
      bb 42 00       mov       bx,ControllerStatus_42
      b9 02 00       mov       cx,iw_2
      e8 ca 05       call      ReadFromController
      72 2e          jb        bs_b6e9
      bb 42 00       mov       bx,ControllerStatus_42
      b4 40          mov       ah,ib_40
      8a 17          mov       dl,[bx]
      80 e2 60       and       dl,ib_60
      80 fa 60       cmp       dl,ib_60
      f9             stc       
      74 1e          jz        bs_b6e9
      5a             pop       dx
      52             push      dx
      32 f6          xor       dh,dh
      bb 94 00       mov       bx,CurrentTrack_94
      03 da          add       bx,dx
      c6 07 00       mov       byte ptr [bx],ib_0
      8a ca          mov       cl,dl
      b2 01          mov       dl,ib_1
      d2 e2          shl       dl,cl
      08 16 3e 00    or        [DisketteRecal_3e],dl
      b9 43 00       mov       cx,iw_43
      e8 81 39       call      RefreshDelay
      32 e4          xor       ah,ah
b6e9: 88 26 41 00    mov       [DisketteStatus_41],ah
      5a             pop       dx
      59             pop       cx
      c3             ret       

Seek:
      53             push      bx
      51             push      cx
      8a 26 3e 00    mov       ah,[DisketteRecal_3e]
      8a ca          mov       cl,dl
      fe c1          inc       cl
      d2 ec          shr       ah,cl
      72 0d          jb        bs_b70b
      e8 8c ff       call      Home
      73 08          jae       bs_b70b
      e8 87 ff       call      Home
      73 03          jae       bs_b70b
      e9 dc 00       jmp       bl_b7e7
b70b: bb 94 00       mov       bx,CurrentTrack_94
      32 f6          xor       dh,dh
      03 da          add       bx,dx
      be 90 00       mov       si,MediaBytes_90
      03 f2          add       si,dx
      8a d5          mov       dl,ch
      f6 04 20       test      byte ptr [si],ib_20
      74 02          jz        bs_b720
      02 d2          add       dl,dl
b720: 38 17          cmp       [bx],dl
      8b 56 0e       mov       dx,[bp+os_dx]
      75 0c          jnz       bs_b733
      80 3e 41 00 40 cmp       byte ptr [DisketteStatus_41],ib_40
      74 05          jz        bs_b733
      32 e4          xor       ah,ah
      e9 b4 00       jmp       bl_b7e7
b733: c0 e6 02       shl       dh,ib_2
      0a f2          or        dh,dl
      b2 0f          mov       dl,ib_f
      8b f2          mov       si,dx
      8a cd          mov       cl,ch
      8b 56 0e       mov       dx,[bp+os_dx]
      bb 90 00       mov       bx,MediaBytes_90
      32 f6          xor       dh,dh
      03 da          add       bx,dx
      f6 07 20       test      byte ptr [bx],ib_20
      74 02          jz        bs_b74f
      02 c9          add       cl,cl
b74f: 8b f9          mov       di,cx
      b5 03          mov       ch,ib_3
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 ce 04       call      CommandToControllerWithErrors
      73 03          jae       bs_b760
      e9 83 00       jmp       bl_b7e3
b760: be 08 00       mov       si,iw_8
      b5 01          mov       ch,ib_1
      80 0e 3e 00 80 or        byte ptr [DisketteRecal_3e],ib_80
      e8 bc 04       call      CommandToControllerWithErrors
      72 74          jb        bs_b7e3
      bb 42 00       mov       bx,ControllerStatus_42
      b9 02 00       mov       cx,iw_2
      e8 0b 05       call      ReadFromController
      72 69          jb        bs_b7e3
      bb 42 00       mov       bx,ControllerStatus_42
      b4 40          mov       ah,ib_40
      8a 17          mov       dl,[bx]
      80 e2 60       and       dl,ib_60
      80 fa 60       cmp       dl,ib_60
      f9             stc       
      74 59          jz        bs_b7e3
      8b 56 0e       mov       dx,[bp+os_dx]
      59             pop       cx
      51             push      cx
      be 94 00       mov       si,CurrentTrack_94
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      88 2c          mov       [si],ch
      bb 90 00       mov       bx,MediaBytes_90
      03 da          add       bx,dx
      8a 1f          mov       bl,[bx]
      f6 c3 20       test      bl,ib_20
      74 02          jz        bs_b7a6
      00 2c          add       [si],ch
b7a6: 1e             push      ds
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8a 44 09       mov       al,[si+os_9]
      1f             pop       ds
      f6 06 3f 00 80 test      byte ptr [MotorStatus_3f],ib_80
      74 19          jz        bs_b7d3
      0a c0          or        al,al
      75 15          jnz       bs_b7d3
      80 fb 17       cmp       bl,ib_17
      b0 0f          mov       al,ib_f
      74 0e          jz        bs_b7d3
      80 e3 07       and       bl,ib_7
      b0 14          mov       al,ib_14
      74 07          jz        bs_b7d3
      80 fb 03       cmp       bl,ib_3
      74 02          jz        bs_b7d3
      b0 0f          mov       al,ib_f
b7d3: 0a c0          or        al,al
      74 0a          jz        bs_b7e1
      b9 43 00       mov       cx,iw_43
      e8 8b 38       call      RefreshDelay
      fe c8          dec       al
      eb f2          jmp       bs_b7d3
b7e1: 32 e4          xor       ah,ah
b7e3: 88 26 41 00    mov       [DisketteStatus_41],ah
b7e7: 8b 56 0e       mov       dx,[bp+os_dx]
      59             pop       cx
      5b             pop       bx
      c3             ret       
b7ed: e8 00 ff       call      Seek
      73 10          jae       bs_b802
b7f2: b0 00          mov       al,ib_0
      50             push      ax
      bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      e8 85 04       call      ReadFromController
      58             pop       ax
      e9 b2 00       jmp       bl_b8b4
b802: 1e             push      ds
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8b 44 02       mov       ax,[si+os_2]
      25 00 ff       and       ax,iw_ff00
      8a c1          mov       al,cl
      89 46 00       mov       [bp+os_0],ax
      8b 5c 04       mov       bx,[si+os_4]
      8a 4c 06       mov       cl,[si+os_6]
      1f             pop       ds
      be 90 00       mov       si,MediaBytes_90
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      8a 14          mov       dl,[si]
      80 e2 07       and       dl,ib_7
      b6 1b          mov       dh,ib_1b
      80 fa 05       cmp       dl,ib_5
      74 0e          jz        bs_b83e
      80 3c 17       cmp       byte ptr [si],ib_17
      74 09          jz        bs_b83e
      b6 23          mov       dh,ib_23
      80 fa 04       cmp       dl,ib_4
      74 02          jz        bs_b83e
      b6 2a          mov       dh,ib_2a
b83e: 8a fe          mov       bh,dh
      8b 56 0e       mov       dx,[bp+os_dx]
      51             push      cx
      8a cd          mov       cl,ch
      8a ee          mov       ch,dh
      8b f9          mov       di,cx
      c0 e6 02       shl       dh,ib_2
      0a f2          or        dh,dl
      b2 e6          mov       dl,ib_e6
      8b 46 12       mov       ax,[bp+os_ax]
      80 fc 03       cmp       ah,ib_3
      75 02          jnz       bs_b85b
      b2 c5          mov       dl,ib_c5
b85b: 8b f2          mov       si,dx
      59             pop       cx
      b5 09          mov       ch,ib_9
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      80 fc 04       cmp       ah,ib_4
      eb 30          jmp       bs_b89a
      52             push      dx
      50             push      ax
      ba 61 04       mov       dx,iw_461
      e4 21          in        al,p_21
      8a e0          mov       ah,al
      0c 02          or        al,ib_2
      eb 00          jmp       bs_b877
b877: eb 00          jmp       bs_b879
b879: e6 21          out       p_21,al
      ec             in        al,dx
      8e c0          mov       es,ax
      24 fe          and       al,ib_fe
      eb 00          jmp       bs_b882
b882: eb 00          jmp       bs_b884
b884: ee             out       dx,al
      58             pop       ax
      5a             pop       dx
      e8 9f 03       call      CommandToControllerWithErrors
      52             push      dx
      50             push      ax
      ba 61 04       mov       dx,iw_461
      8c c0          mov       ax,es
      ee             out       dx,al
      8a c4          mov       al,ah
      e6 21          out       p_21,al
      58             pop       ax
      5a             pop       dx
      eb 03          jmp       bs_b89d
b89a: e8 8c 03       call      CommandToControllerWithErrors
b89d: 73 03          jae       bs_b8a2
      e9 50 ff       jmp       bl_b7f2
b8a2: bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      e8 d8 03       call      ReadFromController
      73 04          jae       bs_b8b1
      b0 00          mov       al,ib_0
      eb 03          jmp       bs_b8b4
b8b1: e8 1c 04       call      ControllerErrorToBiosError
b8b4: 88 26 41 00    mov       [DisketteStatus_41],ah
      8b 56 0e       mov       dx,[bp+os_dx]
      8b 5e 0c       mov       bx,[bp+os_bx]
      8b 4e 10       mov       cx,[bp+os_cx]
      e9 fd f8       jmp       bl_b1c1

b8c4: 53             push      bx
      51             push      cx
      8b 56 0e       mov       dx,[bp+os_dx]
      be 90 00       mov       si,MediaBytes_90
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      8a 34          mov       dh,[si]
      80 e6 07       and       dh,ib_7
      75 0d          jnz       bs_b8e4
      c6 04 02       mov       byte ptr [si],ib_2
      eb 08          jmp       bs_b8e4
b8dc: e8 02 02       call      bl_bae1
      32 e4          xor       ah,ah
      e9 47 01       jmp       bl_ba2b
b8e4: e8 9d 37       call      GetFloppyFromCmos
      75 28          jnz       bs_b911
      3c 01          cmp       al,ib_1
      75 05          jnz       bs_b8f2
      c6 04 93       mov       byte ptr [si],ib_93
      eb ea          jmp       bs_b8dc
b8f2: 3c 03          cmp       al,ib_3
      75 05          jnz       bs_b8fb
      c6 04 97       mov       byte ptr [si],ib_97
      eb e1          jmp       bs_b8dc
b8fb: 3c 02          cmp       al,ib_2
      74 12          jz        bs_b911
      80 26 8b 00 f3 and       byte ptr [ad_8b],ib_f3
      e8 86 fd       call      Home
      73 5e          jae       bs_b967
      e8 81 fd       call      Home
      73 59          jae       bs_b967
b90e: e9 1e 01       jmp       bl_ba2f
b911: b6 01          mov       dh,ib_1
      e8 f8 01       call      bl_bb0e
      80 26 8b 00 33 and       byte ptr [ad_8b],ib_33
      80 0e 8b 00 44 or        byte ptr [ad_8b],ib_44
      8b 56 0e       mov       dx,[bp+os_dx]
      e8 67 fd       call      Home
      73 05          jae       bs_b92d
      e8 62 fd       call      Home
      72 e1          jb        bs_b90e
b92d: b9 05 00       mov       cx,iw_5
b930: 51             push      cx
      8a f2          mov       dh,dl
      b2 4a          mov       dl,ib_4a
      8b f2          mov       si,dx
      8a d6          mov       dl,dh
      b5 02          mov       ch,ib_2
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 e6 02       call      CommandToControllerWithErrors
      72 6e          jb        bs_b9b3
      bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      e8 35 03       call      ReadFromController
      72 63          jb        bs_b9b3
      bb 42 00       mov       bx,ControllerStatus_42
      f6 07 c0       test      byte ptr [bx],ib_c0
      75 05          jnz       bs_b95d
      b4 74          mov       ah,ib_74
      e9 b4 00       jmp       bl_ba11
b95d: 59             pop       cx
      e2 d0          loop      bs_b930
      b4 80          mov       ah,ib_80
      f6 07 08       test      byte ptr [bx],ib_8
      75 59          jnz       bs_b9c0
b967: 32 f6          xor       dh,dh
      e8 a2 01       call      bl_bb0e
      80 26 8b 00 3f and       byte ptr [ad_8b],ib_3f
      8b 56 0e       mov       dx,[bp+os_dx]
      b9 05 00       mov       cx,iw_5
b977: 51             push      cx
      8a f2          mov       dh,dl
      b2 4a          mov       dl,ib_4a
      8b f2          mov       si,dx
      8a d6          mov       dl,dh
      b5 02          mov       ch,ib_2
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 9f 02       call      CommandToControllerWithErrors
      72 27          jb        bs_b9b3
      bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      e8 ee 02       call      ReadFromController
      72 1c          jb        bs_b9b3
      bb 42 00       mov       bx,ControllerStatus_42
      f6 07 c0       test      byte ptr [bx],ib_c0
      75 17          jnz       bs_b9b6
      50             push      ax
      e8 e1 36       call      GetFloppyFromCmos
      75 09          jnz       bs_b9ae
      3c 04          cmp       al,ib_4
      58             pop       ax
      75 05          jnz       bs_b9af
      b4 17          mov       ah,ib_17
      eb 63          jmp       bs_ba11
b9ae: 58             pop       ax
b9af: b4 15          mov       ah,ib_15
      eb 5e          jmp       bs_ba11
b9b3: 59             pop       cx
      eb 75          jmp       bs_ba2b
b9b6: 59             pop       cx
      e2 be          loop      bs_b977
      b4 80          mov       ah,ib_80
      f6 07 08       test      byte ptr [bx],ib_8
      74 03          jz        bs_b9c3
b9c0: f9             stc       
      eb 68          jmp       bs_ba2b
b9c3: b6 02          mov       dh,ib_2
      e8 46 01       call      bl_bb0e
      80 26 8b 00 3f and       byte ptr [ad_8b],ib_3f
      80 0e 8b 00 80 or        byte ptr [ad_8b],ib_80
      8b 56 0e       mov       dx,[bp+os_dx]
      b9 05 00       mov       cx,iw_5
b9d8: 51             push      cx
      8a f2          mov       dh,dl
      b2 4a          mov       dl,ib_4a
      8b f2          mov       si,dx
      8a d6          mov       dl,dh
      b5 02          mov       ch,ib_2
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 3e 02       call      CommandToControllerWithErrors
      72 c6          jb        bs_b9b3
      bb 42 00       mov       bx,ControllerStatus_42
      b9 07 00       mov       cx,iw_7
      e8 8d 02       call      ReadFromController
      72 bb          jb        bs_b9b3
      bb 42 00       mov       bx,ControllerStatus_42
      f6 07 c0       test      byte ptr [bx],ib_c0
      74 0f          jz        bs_ba0f
      59             pop       cx
      e2 d5          loop      bs_b9d8
      b4 80          mov       ah,ib_80
      f6 07 08       test      byte ptr [bx],ib_8
      75 02          jnz       bs_ba0c
      b4 02          mov       ah,ib_2
ba0c: f9             stc       
      eb 1c          jmp       bs_ba2b
ba0f: b4 97          mov       ah,ib_97
ba11: 59             pop       cx
      32 f6          xor       dh,dh
      bb 90 00       mov       bx,MediaBytes_90
      03 da          add       bx,dx
      88 27          mov       [bx],ah
      b0 04          mov       al,ib_4
      f6 e2          mul       dl
      8a c8          mov       cl,al
      b0 02          mov       al,ib_2
      d2 e0          shl       al,cl
      08 06 8f 00    or        [ad_8f],al
      32 e4          xor       ah,ah
ba2b: 88 26 41 00    mov       [DisketteStatus_41],ah
ba2f: 8b 56 0e       mov       dx,[bp+os_dx]
      59             pop       cx
      5b             pop       bx
      c3             ret       

MotorsOn:
      52             push      dx
      51             push      cx
      fa             cli       
      c6 06 40 00 ff mov       byte ptr [MotorTimeout_40],ib_ff
      80 26 3f 00 cf and       byte ptr [MotorStatus_3f],ib_cf
      8a ea          mov       ch,dl
      c0 e2 04       shl       dl,ib_4
      08 16 3f 00    or        [MotorStatus_3f],dl
      8a cd          mov       cl,ch
      8a 16 3f 00    mov       dl,[MotorStatus_3f]
      fe c1          inc       cl
      d2 ea          shr       dl,cl
      72 4f          jb        bs_baa6
      b2 01          mov       dl,ib_1
      fe c9          dec       cl
      d2 e2          shl       dl,cl
      08 16 3f 00    or        [MotorStatus_3f],dl
      fb             sti       
      a0 3f 00       mov       al,[MotorStatus_3f]
      c0 c8 04       ror       al,ib_4
      0c 0c          or        al,ib_c
      ba f2 03       mov       dx,ControllerDigitalOutput_3f2
      ee             out       dx,al
      b8 fd 90       mov       ax,iw_90fd
      cd 15          int       MultiTask
      72 3e          jb        bs_bab3
      8a 26 3f 00    mov       ah,[MotorStatus_3f]
      1e             push      ds
      56             push      si
      33 f6          xor       si,si
      8e de          mov       ds,si
      c5 36 78 00    lds       si,[ParameterTable_78]
      8a 44 0a       mov       al,[si+os_a]
      5e             pop       si
      1f             pop       ds
      d0 e4          shl       ah,1
      73 08          jae       bs_ba94
      3c 08          cmp       al,ib_8
      73 0a          jae       bs_ba9a
      b0 08          mov       al,ib_8
      eb 06          jmp       bs_ba9a
ba94: 3c 05          cmp       al,ib_5
      73 02          jae       bs_ba9a
      b0 05          mov       al,ib_5
ba9a: b9 8e 20       mov       cx,iw_208e
      e8 c8 35       call      RefreshDelay
      fe c8          dec       al
      75 f6          jnz       bs_ba9a
      eb 0d          jmp       bs_bab3
baa6: fb             sti       
      a0 3f 00       mov       al,[MotorStatus_3f]
      c0 c8 04       ror       al,ib_4
      0c 0c          or        al,ib_c
      ba f2 03       mov       dx,ControllerDigitalOutput_3f2
      ee             out       dx,al
bab3: 59             pop       cx
      5a             pop       dx
      c3             ret       

GetFailedSector:
      50             push      ax
      1e             push      ds
      33 db          xor       bx,bx
      8e db          mov       ds,bx
      c5 1e 78 00    lds       bx,[ParameterTable_78]
      8a 67 02       mov       ah,[bx+os_2]
      8a 47 04       mov       al,[bx+os_4]
      fe c0          inc       al
      1f             pop       ds
      bb 42 00       mov       bx,ControllerStatus_42
      3a 6f 03       cmp       ch,[bx+os_3]
      75 08          jnz       bs_bad9
      3a 77 04       cmp       dh,[bx+os_4]
      75 03          jnz       bs_bad9
      8a 47 05       mov       al,[bx+os_5]
bad9: 88 26 40 00    mov       [MotorTimeout_40],ah
      8a d8          mov       bl,al
      58             pop       ax
      c3             ret       

bae1: 56             push      si
      be 90 00       mov       si,MediaBytes_90
      32 f6          xor       dh,dh
      03 f2          add       si,dx
      8a 34          mov       dh,[si]
      8a 16 8b 00    mov       dl,[ad_8b]
      81 e2 c0 c0    and       dx,iw_c0c0
      3a d6          cmp       dl,dh
      74 12          jz        bs_bb09
      80 26 8b 00 3f and       byte ptr [ad_8b],ib_3f
      08 36 8b 00    or        [ad_8b],dh
      80 e6 c0       and       dh,ib_c0
      c0 c6 02       rol       dh,ib_2
      e8 05 00       call      bl_bb0e
bb09: 5e             pop       si
      8b 56 0e       mov       dx,[bp+os_dx]
      c3             ret       
bb0e: 50             push      ax
      8a c6          mov       al,dh
      ba f7 03       mov       dx,ControllerDigitalInputRegister_3f7
      ee             out       dx,al
      58             pop       ax
      c3             ret       
CheckDoor:
      51             push      cx
      e8 69 35       call      GetFloppyFromCmos
      b4 00          mov       ah,ib_0
      75 04          jnz       bs_bb23
      fe c8          dec       al
      74 3c          jz        bs_bb5f
bb23: 8a 04          mov       al,[si]
      24 07          and       al,ib_7
      74 36          jz        bs_bb5f
      3c 03          cmp       al,ib_3
      74 32          jz        bs_bb5f
      e8 86 02       call      UnknownError
      73 32          jae       bs_bb64
      ba f7 03       mov       dx,ControllerDigitalInputRegister_3f7
      ec             in        al,dx
      d0 e0          shl       al,1
      73 2a          jae       bs_bb64
      80 24 ef       and       byte ptr [si],ib_ef
      e8 79 f4       call      DoReset
      72 22          jb        bs_bb64
      8b 56 0e       mov       dx,[bp+os_dx]
      b5 01          mov       ch,ib_1
      e8 a6 fb       call      Seek
      72 18          jb        bs_bb64
      b5 00          mov       ch,ib_0
      e8 9f fb       call      Seek
      72 11          jb        bs_bb64
      b4 06          mov       ah,ib_6
      ba f7 03       mov       dx,ControllerDigitalInputRegister_3f7
      ec             in        al,dx
      d0 e0          shl       al,1
      73 02          jae       bs_bb5f
      b4 80          mov       ah,ib_80
bb5f: 0a e4          or        ah,ah
      74 01          jz        bs_bb64
      f9             stc       
bb64: 8b 56 0e       mov       dx,[bp+os_dx]
      59             pop       cx
      c3             ret       

SetDmaController:
      50             push      ax
      52             push      dx
      fa             cli       
      8a c4          mov       al,ah
      e6 0c          out       p_c,al
      eb 00          jmp       bs_bb72
bb72: eb 00          jmp       bs_bb74
bb74: e6 0b          out       p_b,al
      eb 00          jmp       bs_bb78
bb78: eb 00          jmp       bs_bb7a
bb7a: 8a c1          mov       al,cl
      e6 05          out       p_5,al
      eb 00          jmp       bs_bb80
bb80: eb 00          jmp       bs_bb82
bb82: 8a c5          mov       al,ch
      e6 05          out       p_5,al
      eb 00          jmp       bs_bb88
bb88: eb 00          jmp       bs_bb8a
bb8a: 8a c3          mov       al,bl
      e6 04          out       p_4,al
      eb 00          jmp       bs_bb90
bb90: eb 00          jmp       bs_bb92
bb92: 8a c7          mov       al,bh
      e6 04          out       p_4,al
      eb 00          jmp       bs_bb98
bb98: eb 00          jmp       bs_bb9a
bb9a: 8c c0          mov       ax,es
      e6 81          out       p_81,al
      eb 00          jmp       bs_bba0
bba0: eb 00          jmp       bs_bba2
bba2: b0 02          mov       al,ib_2
      e6 0a          out       p_a,al
      fb             sti       
      5a             pop       dx
      58             pop       ax
      c3             ret       

CaculateAddress:
      51             push      cx
      33 c0          xor       ax,ax
      8c c1          mov       cx,es
      d1 e1          shl       cx,1
      d0 d0          rcl       al,1
      d1 e1          shl       cx,1
      d0 d0          rcl       al,1
      d1 e1          shl       cx,1
      d0 d0          rcl       al,1
      d1 e1          shl       cx,1
      d0 d0          rcl       al,1
      8b 5e 0c       mov       bx,[bp+os_bx]
      03 d9          add       bx,cx
      15 00 00       adc       ax,iw_0
      8e c0          mov       es,ax
      59             pop       cx
      8b c1          mov       ax,cx
      03 c3          add       ax,bx
      73 02          jae       bs_bbd2
      b4 09          mov       ah,ib_9
bbd2: c3             ret       

CommandToController:
      8b c6          mov       ax,si
      8a e0          mov       ah,al
      e8 7c 00       call      ByteToController
      fe cd          dec       ch
      76 4a          jbe       bs_bc28
      8b c6          mov       ax,si
      e8 73 00       call      ByteToController
      fe cd          dec       ch
      76 41          jbe       bs_bc28
      8b c7          mov       ax,di
      8a e0          mov       ah,al
      e8 68 00       call      ByteToController
      fe cd          dec       ch
      76 36          jbe       bs_bc28
      8b c7          mov       ax,di
      e8 5f 00       call      ByteToController
      fe cd          dec       ch
      76 2d          jbe       bs_bc28
      8b 46 00       mov       ax,[bp+os_0]
      8a e0          mov       ah,al
      e8 53 00       call      ByteToController
      fe cd          dec       ch
      76 21          jbe       bs_bc28
      8b 46 00       mov       ax,[bp+os_0]
      e8 49 00       call      ByteToController
      fe cd          dec       ch
      76 17          jbe       bs_bc28
      8a e3          mov       ah,bl
      e8 40 00       call      ByteToController
      fe cd          dec       ch
      76 0e          jbe       bs_bc28
      8a e7          mov       ah,bh
      e8 37 00       call      ByteToController
      fe cd          dec       ch
      76 05          jbe       bs_bc28
      8a e1          mov       ah,cl
      e8 2e 00       call      ByteToController
bc28: c3             ret   

CommandToControllerWithErrors:    
      f6 06 3e 00 80 test      byte ptr [DisketteRecal_3e],ib_80
      74 09          jz        bs_bc39
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      e8 9b ff       call      CommandToController
      c3             ret       
bc39: e8 97 ff       call      CommandToController
      72 0f          jb        bs_bc4d
      b8 01 90       mov       ax,iw_9001
      cd 15          int       MultiTask
      fb             sti       
      72 05          jb        bs_bc4b
      e8 7a 01       call      AwaitInterruptALongTime
      73 03          jae       bs_bc4e
bc4b: b4 80          mov       ah,ib_80
bc4d: c3             ret       
bc4e: 80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      32 e4          xor       ah,ah
      c3             ret       


ByteToController:
      51             push      cx
      52             push      dx
      b9 02 00       mov       cx,iw_2
      e8 0a 34       call      RefreshDelay
      ba f4 03       mov       dx,ControllerStatusRegister_3f4
      50             push      ax
      b4 40          mov       ah,ib_40
      33 c9          xor       cx,cx
      e8 f1 32       call      AwaitNotControllerBit
      72 12          jb        bs_bc7d
      b4 80          mov       ah,ib_80
      33 c9          xor       cx,cx
      e8 0c 33       call      AwaitControllerBit
      72 09          jb        bs_bc7d
      58             pop       ax
      ba f5 03       mov       dx,ControllerDataRegisters_3f5
      8a c4          mov       al,ah
      ee             out       dx,al
      eb 03          jmp       bs_bc80
bc7d: 58             pop       ax
      b4 80          mov       ah,ib_80
bc80: 5a             pop       dx
      59             pop       cx
      c3             ret       

ReadFromController:
      52             push      dx
bc84: 51             push      cx
      e8 1f 00       call      ByteFromController
      59             pop       cx
      72 1a          jb        bs_bca5
      88 07          mov       [bx],al
      43             inc       bx
      e2 f4          loop      bs_bc84
      b9 02 00       mov       cx,iw_2
      e8 d2 33       call      RefreshDelay
      ba f4 03       mov       dx,ControllerStatusRegister_3f4
      ec             in        al,dx
      a8 10          test      al,ib_10
      74 05          jz        bs_bca3
      b4 20          mov       ah,ib_20
      f9             stc       
      eb 02          jmp       bs_bca5
bca3: 32 e4          xor       ah,ah
bca5: 5a             pop       dx
      c3             ret       

ByteFromController:
      52             push      dx
      b9 02 00       mov       cx,iw_2
      e8 ba 33       call      RefreshDelay
      ba f4 03       mov       dx,ControllerStatusRegister_3f4
      b4 80          mov       ah,ib_80
      33 c9          xor       cx,cx
      e8 c6 32       call      AwaitControllerBit
      b4 80          mov       ah,ib_80
      72 12          jb        bs_bcce
      ec             in        al,dx
      a8 40          test      al,ib_40
      75 05          jnz       bs_bcc6
      b4 20          mov       ah,ib_20
      f9             stc       
      eb 08          jmp       bs_bcce
bcc6: eb 00          jmp       bs_bcc8
bcc8: eb 00          jmp       bs_bcca
bcca: ba f5 03       mov       dx,ControllerDataRegisters_3f5
      ec             in        al,dx
bcce: 5a             pop       dx
      c3             ret       

ControllerErrorToBiosError:
      bb 42 00       mov       bx,ControllerStatus_42
      8b 1f          mov       bx,[bx]
      f6 c3 c0       test      bl,ib_c0
      b4 00          mov       ah,ib_0
      74 33          jz        bs_bd0f
      f6 c3 40       test      bl,ib_40
      b4 20          mov       ah,ib_20
      74 2c          jz        bs_bd0f
      f6 c7 01       test      bh,ib_1
      b4 02          mov       ah,ib_2
      75 25          jnz       bs_bd0f
      f6 c7 02       test      bh,ib_2
      b4 03          mov       ah,ib_3
      75 1e          jnz       bs_bd0f
      f6 c7 04       test      bh,ib_4
      b4 04          mov       ah,ib_4
      75 17          jnz       bs_bd0f
      f6 c7 10       test      bh,ib_10
      b4 08          mov       ah,ib_8
      75 10          jnz       bs_bd0f
      f6 c7 20       test      bh,ib_20
      b4 10          mov       ah,ib_10
      75 09          jnz       bs_bd0f
      f6 c7 80       test      bh,ib_80
      b4 04          mov       ah,ib_4
      75 02          jnz       bs_bd0f
      b4 20          mov       ah,ib_20
bd0f: c3             ret       


bd10: e8 48 00       call      bl_bd5b
      72 43          jb        bs_bd58
      ba f4 03       mov       dx,ControllerStatusRegister_3f4
      ec             in        al,dx
      a8 80          test      al,ib_80
      74 04          jz        bs_bd21
      a8 40          test      al,ib_40
      74 14          jz        bs_bd35
bd21: e8 37 00       call      bl_bd5b
      ba f4 03       mov       dx,ControllerStatusRegister_3f4
      ec             in        al,dx
      a8 80          test      al,ib_80
      74 04          jz        bs_bd30
      a8 40          test      al,ib_40
      74 05          jz        bs_bd35
bd30: b4 20          mov       ah,ib_20
      f9             stc       
      eb 23          jmp       bs_bd58
bd35: b4 08          mov       ah,ib_8
      e8 1c ff       call      ByteToController
      72 1c          jb        bs_bd58
      e8 68 ff       call      ByteFromController
      72 17          jb        bs_bd58
      a2 42 00       mov       [ControllerStatus_42],al
      50             push      ax
      e8 5f ff       call      ByteFromController
      a2 43 00       mov       [ad_43],al
      59             pop       cx
      72 0a          jb        bs_bd58
      80 e1 c0       and       cl,ib_c0
      80 f9 c0       cmp       cl,ib_c0
      75 da          jnz       bs_bd30
      32 e4          xor       ah,ah
bd58: e9 66 f2       jmp       bl_afc1


bd5b: fa             cli       
      80 26 3f 00 7f and       byte ptr [MotorStatus_3f],ib_7f
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      a0 3f 00       mov       al,[MotorStatus_3f]
      c0 c0 04       rol       al,ib_4
      24 fb          and       al,ib_fb
      0c 08          or        al,ib_8
      ba f2 03       mov       dx,ControllerDigitalOutput_3f2
      ee             out       dx,al
      b9 01 00       mov       cx,iw_1
      e8 ee 32       call      RefreshDelay
      0c 0c          or        al,ib_c
      ee             out       dx,al
      b8 01 90       mov       ax,iw_9001
      cd 15          int       MultiTask
      fb             sti       
      72 03          jb        bs_bd88
      e8 3b 00       call      AwaitInterruptALongTime
bd88: b4 80          mov       ah,ib_80
      72 07          jb        bs_bd93
      80 26 3e 00 7f and       byte ptr [DisketteRecal_3e],ib_7f
      32 e4          xor       ah,ah
bd93: c3             ret      

SendDiskSpecify: 
      1e             push      ds
      33 db          xor       bx,bx
      8e db          mov       ds,bx
      c5 1e 78 00    lds       bx,[ParameterTable_78]
      b0 03          mov       al,ib_3
      8a 27          mov       ah,[bx]
      8b f0          mov       si,ax
      8a 47 01       mov       al,[bx+os_1]
      8b f8          mov       di,ax
      b5 03          mov       ch,ib_3
      1f             pop       ds
      80 0e 3e 00 80 or        byte ptr [DisketteRecal_3e],ib_80
      e8 76 fe       call      CommandToControllerWithErrors
      e9 10 f2       jmp       bl_afc6
UnknownError:
      f9             stc       
      c3             ret       

IsitLowestDensitydiskanddrive:
      e8 c9 32       call      GetFloppyFromCmos
      75 04          jnz       bs_bdc1
      3c 03          cmp       al,ib_3
      74 01          jz        bs_bdc2
bdc1: f9             stc       
bdc2: c3             ret       

AwaitInterruptaLongTime:
      bb 3e 00       mov       bx,DisketteRecal_3e
      33 c9          xor       cx,cx
      e8 d7 31       call      AwaitInterrupt
      73 05          jae       bs_bdd2
      33 c9          xor       cx,cx
      e8 d0 31       call      AwaitInterrupt
bdd2: c3             ret       

FloppyInt:
      fb             sti       
      50             push      ax
      1e             push      ds
      6a 40          push      ib_40
      1f             pop       ds
      80 0e 3e 00 80 or        byte ptr [ad_3e],ib_80
      b0 20          mov       al,ib_20
      e6 20          out       p_20,al
      b8 01 91       mov       ax,iw_9101
      eb 18          jmp       bs_e85d

FixedDiskInt:
      fb             sti       
      50             push      ax
      1e             push      ds
      6a 40          push      ib_40
      1f             pop       ds
      c6 06 8e 00 ff mov       byte ptr [ad_8e],ib_ff
      b0 20          mov       al,ib_20
      e6 a0          out       p_a0,al
      eb 00          jmp       bs_e856
e856: eb 00          jmp       bs_e858
e858: e6 20          out       p_20,al
      b8 00 91       mov       ax,iw_9100
e85d: 1f             pop       ds
      cd 15          int       MultiTask
      58             pop       ax
      cf             iret      

CMOSIn:
ee89:     e6 70          out       p_70,al
          eb 00          jmp       bs_ee8d
ee8d:     eb 00          jmp       bs_ee8f
ee8f:     e4 71          in        al,p_71
          c3             ret       

CMOSOut:
ee92:     e6 70          out       p_70,al
          86 c4          xchg      al,ah
          eb 00          jmp       bs_ee98
ee98:     eb 00          jmp       bs_ee9a
ee9a:     e6 71          out       p_71,al
          86 c4          xchg      al,ah
          c3             ret       

ReadFromCMOS:
          9c             pushf     
          fa             cli       
          22 c0          and       al,al
          78 03          js        bs_eea8
          0c 80          or        al,ib_80
          f9             stc       
eea8:     e8 de ff       call      CMOSIn
          50             push      ax
          eb 0d          jmp       bs_eebb
          9c             pushf     
WriteToCMOS:
          fa             cli       
          50             push      ax
          22 c0          and       al,al
          78 03          js        bs_eeb8
          0c 80          or        al,ib_80
          f9             stc       
eeb8:     e8 d7 ff       call      CMOSOut
eebb:     b0 0d          mov       al,ib_d
          72 02          jb        bs_eec1
          0c 80          or        al,ib_80
eec1:     e8 c5 ff       call      CMOSIn
          58             pop       ax
          9d             popf      
          c3             ret       

AwaitNotControllerBit:
      50             push      ax
ef5b: ec             in        al,dx
      84 c4          test      al,ah
      74 1c          jz        bs_ef7c
ef60: eb 00          jmp       bs_ef62
ef62: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      74 f8          jz        bs_ef60
      49             dec       cx
      74 10          jz        bs_ef7b
      ec             in        al,dx
      84 c4          test      al,ah
      74 0c          jz        bs_ef7c
ef70: eb 00          jmp       bs_ef72
ef72: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      75 f8          jnz       bs_ef70
      49             dec       cx
      75 e0          jnz       bs_ef5b
ef7b: f9             stc       
ef7c: 58             pop       ax
      c3             ret       

AwaitControllerBit:
      50             push      ax
ef7f: ec             in        al,dx
      84 c4          test      al,ah
      75 1c          jnz       bs_efa0
ef84: eb 00          jmp       bs_ef86
ef86: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      74 f8          jz        bs_ef84
      49             dec       cx
      74 10          jz        bs_ef9f
      ec             in        al,dx
      84 c4          test      al,ah
      75 0c          jnz       bs_efa0
ef94: eb 00          jmp       bs_ef96
ef96: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      75 f8          jnz       bs_ef94
      49             dec       cx
      75 e0          jnz       bs_ef7f
ef9f: f9             stc       
efa0: 58             pop       ax
      c3             ret       

AwaitInterrupt:
      50             push      ax
efa3: f6 07 80       test      byte ptr [bx],ib_80
      75 1c          jnz       bs_efc4
efa8: eb 00          jmp       bs_efaa
efaa: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      74 f8          jz        bs_efa8
      49             dec       cx
      74 10          jz        bs_efc3
      f6 07 80       test      byte ptr [bx],ib_80
      75 0c          jnz       bs_efc4
efb8: eb 00          jmp       bs_efba
efba: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      75 f8          jnz       bs_efb8
      49             dec       cx
      75 e0          jnz       bs_efa3
efc3: f9             stc       
efc4: 58             pop       ax
      c3             ret       

RefreshDelay:
      50             push      ax
      83 c1 02       add       cx,+is_2
f06c: eb 00          jmp       bs_f06e
f06e: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      74 f8          jz        bs_f06c
      49             dec       cx
      74 0b          jz        bs_f082
f077: eb 00          jmp       bs_f079
f079: e4 61          in        al,p_61
      a8 10          test      al,ib_10
      75 f8          jnz       bs_f077
      49             dec       cx
      75 ea          jnz       bs_f06c
f082: 58             pop       ax
      c3             ret       

GetFloppyFromCmos:
      b0 0e          mov       al,ib_e
      e8 16 fe       call      ReadFromCMOS
      a8 c0          test      al,ib_c0
      75 15          jnz       bs_f0a2
      b0 10          mov       al,ib_10
      e8 0d fe       call      ReadFromCMOS
      0a d2          or        dl,dl
      75 08          jnz       bs_f09e
      90             nop       
      90             nop       
      90             nop       
      90             nop       
      90             nop       
      c0 e8 04       shr       al,ib_4
f09e: 24 0f          and       al,ib_f
      3b e4          cmp       sp,sp
f0a2: c3             ret