--- /dev/null
+\r
+.DATA\r
+EXTRN _SpawnTask FWORD\r
+EXTRN _AllocExch FWORD\r
+EXTRN _AllocDMAPage FWORD\r
+EXTRN _InitDevDr FWORD\r
+EXTRN _DmaSetUp FWORD\r
+EXTRN _UnMaskIRQ FWORD\r
+EXTRN _MaskIRQ FWORD\r
+EXTRN _SetIRQVector FWORD\r
+EXTRN _EndOfIRQ FWORD\r
+EXTRN _SendMsg FWORD\r
+EXTRN _ISendMsg FWORD\r
+EXTRN _WaitMsg FWORD\r
+EXTRN _CheckMsg FWORD\r
+EXTRN _GetTimerTick FWORD\r
+EXTRN _Alarm FWORD\r
+EXTRN _KillAlarm FWORD\r
+EXTRN _Sleep FWORD\r
+EXTRN _MicroDelay FWORD\r
+EXTRN _OutByte FWORD\r
+EXTRN _OutWord FWORD\r
+EXTRN _InByte FWORD\r
+EXTRN _InWord FWORD\r
+EXTRN _ReadCMOS FWORD\r
+EXTRN _CopyData FWORD\r
+_fdisk_table DB 175,2,0,0,0,0,0,0,0,0,0\r
+ DB 0,0,0,0,0,175,2,0,2,9,42\r
+ DB -1,80,246,15,8,39,2,0,0,0,175\r
+ DB 2,0,2,15,27,-1,84,246,15,8,79\r
+ DB 0,0,0,0,175,2,0,2,9,42,-1\r
+ DB 80,246,15,8,79,2,0,0,0,175,2\r
+ DB 0,2,18,27,-1,108,246,15,8,79,0\r
+ DB 0,0,0\r
+_rgSectorMax DD 0,720,2400,1440,2880,0,0,0,0,0\r
+_MotorStk DD 100 DUP(0)\r
+_MotorStkTop DD 0h\r
+_fd_fdc_command DB 0h\r
+_fd_drive DB 0h\r
+_fd_nr_sectors DB 0h\r
+_fd_head DB 0h\r
+_fd_sector DB 0h\r
+_fd_track DB 0h\r
+_seek_status DB 0h\r
+_fwrite DB 0h\r
+_fd_pData DD 0h\r
+_type0 DB 0h\r
+_type1 DB 0h\r
+_fdstatus DB 64 DUP(0)\r
+_FDStatTmp DB 64 DUP(0)\r
+_FDC_STATUS DB 8 DUP(0)\r
+_LAST_TRACK DB 3 DUP(0)\r
+_fdcb DB 128 DUP(0)\r
+_dor_crnt DB 0h\r
+_motor0_want DB 0h\r
+_motor1_want DB 0h\r
+_fd_tick DD 0h\r
+_fd_newtick DD 0h\r
+_fd_exch DD 0h\r
+_fd_msg DD 2 DUP(0)\r
+_sectbuf DD 0h\r
+_physectbuf DD 0h\r
+\r
+\r
+.CODE\r
+EXTRN _xprintf: NEAR\r
+_enable_ints:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ STI\r
+ POP EBP\r
+ RETN\r
+_disable_ints:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ CLI\r
+ POP EBP\r
+ RETN\r
+_fdmotor_task:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ CALL _enable_ints\r
+L_1:\r
+ PUSH 300\r
+ CALL FWORD PTR _Sleep\r
+ PUSH OFFSET _fd_newtick\r
+ CALL FWORD PTR _GetTimerTick\r
+ MOV EAX,_fd_newtick\r
+ SUB EAX,_fd_tick\r
+ CMP EAX,300\r
+ SETA AL\r
+ AND AL,AL\r
+ JZ L_2\r
+ XOR EAX,EAX\r
+ MOV AL,_motor0_want\r
+ AND EAX,EAX\r
+ SETZ AL\r
+ AND AL,AL\r
+ JZ L_3\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,16\r
+ AND EAX,ECX\r
+L_3:\r
+ JZ L_4\r
+ CALL _disable_ints\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,-17\r
+ AND EAX,ECX\r
+ MOV _dor_crnt, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ PUSH EAX\r
+ PUSH 1010\r
+ CALL FWORD PTR _OutByte\r
+ CALL _enable_ints\r
+L_4:\r
+ XOR EAX,EAX\r
+ MOV AL,_motor1_want\r
+ AND EAX,EAX\r
+ SETZ AL\r
+ AND AL,AL\r
+ JZ L_5\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,32\r
+ AND EAX,ECX\r
+L_5:\r
+ JZ L_6\r
+ CALL _disable_ints\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,-33\r
+ AND EAX,ECX\r
+ MOV _dor_crnt, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ PUSH EAX\r
+ PUSH 1010\r
+ CALL FWORD PTR _OutByte\r
+ CALL _enable_ints\r
+L_6:\r
+L_2:\r
+ JMP L_1\r
+ POP EBP\r
+ RETN\r
+_fd_select:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,2\r
+ PUSH OFFSET _fd_tick\r
+ CALL FWORD PTR _GetTimerTick\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [EBP-1], AL\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [EBP-2], AL\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ AND EAX,EAX\r
+ JZ L_7\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,1\r
+ AND EAX,ECX\r
+ JNZ L_8\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-1], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,1\r
+ OR EAX,ECX\r
+ MOV _dor_crnt, AL\r
+L_8:\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,32\r
+ AND EAX,ECX\r
+ JNZ L_9\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-1], AL\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-2], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,32\r
+ OR EAX,ECX\r
+ MOV _dor_crnt, AL\r
+L_9:\r
+ JMP L_10\r
+L_7:\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,1\r
+ AND EAX,ECX\r
+ JZ L_11\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-1], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,254\r
+ AND EAX,ECX\r
+ MOV _dor_crnt, AL\r
+L_11:\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,16\r
+ AND EAX,ECX\r
+ JNZ L_12\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-1], AL\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-2], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,16\r
+ OR EAX,ECX\r
+ MOV _dor_crnt, AL\r
+L_12:\r
+L_10:\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-1]\r
+ AND EAX,EAX\r
+ JZ L_13\r
+ CALL _disable_ints\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ PUSH EAX\r
+ PUSH 1010\r
+ CALL FWORD PTR _OutByte\r
+ CALL _enable_ints\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-2]\r
+ AND EAX,EAX\r
+ JZ L_14\r
+ PUSH 33\r
+ CALL FWORD PTR _Sleep\r
+L_14:\r
+L_13:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 4\r
+_fd_motoroff:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ AND EAX,EAX\r
+ JZ L_15\r
+ XOR EAX,EAX\r
+ MOV _motor1_want, AL\r
+ JMP L_16\r
+L_15:\r
+ XOR EAX,EAX\r
+ MOV _motor0_want, AL\r
+L_16:\r
+ POP EBP\r
+ RETN 4\r
+PUBLIC _fdisk_setup:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,70\r
+ MOV BYTE PTR [ESI], AL\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,1\r
+ ADD ESI,EAX\r
+ MOV EAX,68\r
+ MOV BYTE PTR [ESI], AL\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,2\r
+ ADD ESI,EAX\r
+ MOV EAX,48\r
+ MOV BYTE PTR [ESI], AL\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,3\r
+ MOV BYTE PTR [ESI+12], AL\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,1\r
+ MOV BYTE PTR [ESI+13], AL\r
+ MOV ESI,OFFSET _fdcb\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI+36], AL\r
+ MOV ESI,OFFSET _fdcb\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI+37], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,70\r
+ MOV BYTE PTR [ESI], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,1\r
+ ADD ESI,EAX\r
+ MOV EAX,68\r
+ MOV BYTE PTR [ESI], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,2\r
+ ADD ESI,EAX\r
+ MOV EAX,49\r
+ MOV BYTE PTR [ESI], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,3\r
+ MOV BYTE PTR [ESI+12], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,1\r
+ MOV BYTE PTR [ESI+13], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI+36], AL\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI+37], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_dor_crnt\r
+ MOV ECX,12\r
+ OR EAX,ECX\r
+ MOV _dor_crnt, AL\r
+ XOR EAX,EAX\r
+ MOV _motor0_want, AL\r
+ XOR EAX,EAX\r
+ MOV _motor1_want, AL\r
+ XOR EAX,EAX\r
+ MOV _seek_status, AL\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [ESI], EAX\r
+ PUSH OFFSET _fd_exch\r
+ CALL FWORD PTR _AllocExch\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_17\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_18\r
+L_17:\r
+ PUSH 1\r
+ PUSH OFFSET _sectbuf\r
+ PUSH OFFSET _physectbuf\r
+ CALL FWORD PTR _AllocDMAPage\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_19\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_18\r
+L_19:\r
+ PUSH OFFSET _fdmotor_task\r
+ PUSH 18\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ PUSH OFFSET _MotorStkTop\r
+ PUSH 1\r
+ CALL FWORD PTR _SpawnTask\r
+ PUSH 6\r
+ PUSH OFFSET _fdisk_isr\r
+ CALL FWORD PTR _SetIRQVector\r
+ PUSH 6\r
+ CALL FWORD PTR _UnMaskIRQ\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL _cmos_type\r
+ MOV _type0, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ AND EAX,EAX\r
+ JZ L_20\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,512\r
+ MOV WORD PTR [ESI+14], AX\r
+ MOV ESI,OFFSET _fdcb\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ SHL EAX,2\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _rgSectorMax\r
+ ADD ESI,EAX\r
+ MOV EAX,DWORD PTR [ESI]\r
+ MOV DWORD PTR [EBX+20], EAX\r
+L_20:\r
+ PUSH 1\r
+ CALL _cmos_type\r
+ MOV _type1, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ AND EAX,EAX\r
+ JZ L_21\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,512\r
+ MOV WORD PTR [ESI+14], AX\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ SHL EAX,2\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _rgSectorMax\r
+ ADD ESI,EAX\r
+ MOV EAX,DWORD PTR [ESI]\r
+ MOV DWORD PTR [EBX+20], EAX\r
+L_21:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EBX,ESI\r
+ PUSH EBX\r
+ CALL _FDC_reset\r
+ POP EDX\r
+ MOV DWORD PTR [EDX], EAX\r
+ AND EAX,EAX\r
+ JZ L_22\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,DWORD PTR [ESI]\r
+ JMP L_18\r
+L_22:\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ AND EAX,EAX\r
+ JZ L_23\r
+ XOR EAX,EAX\r
+ MOV _fd_drive, AL\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL _fd_select\r
+ CALL _recal\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_24\r
+ CALL _recal\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_24:\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL _fd_motoroff\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_25\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_18\r
+L_25:\r
+L_23:\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ AND EAX,EAX\r
+ JZ L_26\r
+ MOV EAX,1\r
+ MOV _fd_drive, AL\r
+ PUSH 1\r
+ CALL _fd_select\r
+ CALL _recal\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_27\r
+ CALL _recal\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_27:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_28\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI+13], AL\r
+L_28:\r
+ PUSH 1\r
+ CALL _fd_motoroff\r
+L_26:\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,OFFSET _dev_op\r
+ MOV DWORD PTR [ESI+24], EAX\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,OFFSET _dev_init\r
+ MOV DWORD PTR [ESI+28], EAX\r
+ MOV ESI,OFFSET _fdcb\r
+ MOV EAX,OFFSET _dev_stat\r
+ MOV DWORD PTR [ESI+32], EAX\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,OFFSET _dev_op\r
+ MOV DWORD PTR [ESI+24], EAX\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,OFFSET _dev_init\r
+ MOV DWORD PTR [ESI+28], EAX\r
+ MOV EAX,64\r
+ MOV ESI,OFFSET _fdcb\r
+ ADD ESI,EAX\r
+ MOV EAX,OFFSET _dev_stat\r
+ MOV DWORD PTR [ESI+32], EAX\r
+ PUSH 10\r
+ PUSH OFFSET _fdcb\r
+ PUSH 2\r
+ PUSH 1\r
+ CALL FWORD PTR _InitDevDr\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_18:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_FDC_reset:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ XOR EAX,EAX\r
+ MOV _seek_status, AL\r
+ CALL _disable_ints\r
+ PUSH 8\r
+ PUSH 1010\r
+ CALL FWORD PTR _OutByte\r
+ PUSH 75\r
+ CALL FWORD PTR _MicroDelay\r
+ PUSH 12\r
+ PUSH 1010\r
+ CALL FWORD PTR _OutByte\r
+ CALL _enable_ints\r
+ CALL _wait_int\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_29\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_30\r
+L_29:\r
+ PUSH 8\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_31\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_30\r
+L_31:\r
+ PUSH 2\r
+ CALL _results\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_32\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_30\r
+L_32:\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,192\r
+ AND EAX,ECX\r
+ CMP EAX,192\r
+ SETE AL\r
+ AND AL,AL\r
+ JNZ L_33\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,192\r
+ AND EAX,ECX\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+L_33:\r
+ JZ L_34\r
+ PUSH 3\r
+ CALL _send_fdc\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ PUSH 1\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ XOR EAX,EAX\r
+ JMP L_30\r
+L_34:\r
+ MOV EAX,608\r
+L_30:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_fdisk_isr:\r
+ PUSHAD\r
+ PUSH _fd_exch\r
+ PUSH -3\r
+ PUSH -3\r
+ CALL FWORD PTR _ISendMsg\r
+ PUSH 6\r
+ CALL FWORD PTR _EndOfIRQ\r
+ POPAD\r
+ IRETD\r
+_cmos_type:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,1\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [EBP-1], AL\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP+8]\r
+ AND EAX,EAX\r
+ JZ L_35\r
+ PUSH 16\r
+ CALL FWORD PTR _ReadCMOS\r
+ MOV ECX,15\r
+ AND EAX,ECX\r
+ MOV BYTE PTR [EBP-1], AL\r
+ JMP L_36\r
+L_35:\r
+ PUSH 16\r
+ CALL FWORD PTR _ReadCMOS\r
+ MOV ECX,4\r
+ SHR AL,CL\r
+ MOV ECX,15\r
+ AND EAX,ECX\r
+ MOV BYTE PTR [EBP-1], AL\r
+L_36:\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-1]\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 4\r
+_send_fdc:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,6\r
+ MOV EAX,100\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_38:\r
+ PUSH 1012\r
+ CALL FWORD PTR _InByte\r
+ MOV BYTE PTR [EBP-5], AL\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-5]\r
+ MOV ECX,128\r
+ AND EAX,ECX\r
+ JZ L_41\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-5]\r
+ MOV ECX,64\r
+ AND EAX,ECX\r
+ JZ L_42\r
+ PUSH 1013\r
+ CALL FWORD PTR _InByte\r
+ MOV BYTE PTR [EBP-6], AL\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ JMP L_43\r
+L_42:\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP+8]\r
+ PUSH EAX\r
+ PUSH 1013\r
+ CALL FWORD PTR _OutByte\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ XOR EAX,EAX\r
+ JMP L_44\r
+L_43:\r
+L_41:\r
+L_39:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ DEC DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_38\r
+L_40:\r
+ MOV EAX,616\r
+L_44:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 4\r
+_GetParm:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,4\r
+ XOR ECX,ECX\r
+ MOV CL,BYTE PTR [EBP+8]\r
+ ADD EAX,ECX\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ POP EBP\r
+ RETN 4\r
+_wait_int:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ PUSH _fd_exch\r
+ PUSH 300\r
+ CALL FWORD PTR _Alarm\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ PUSH _fd_exch\r
+ PUSH OFFSET _fd_msg\r
+ CALL FWORD PTR _WaitMsg\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JZ L_46\r
+ PUSH _fd_exch\r
+ CALL FWORD PTR _KillAlarm\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_47\r
+L_46:\r
+ MOV ESI,OFFSET _fd_msg\r
+ MOV EAX,DWORD PTR [ESI]\r
+ CMP EAX,-3\r
+ SETNE AL\r
+ AND AL,AL\r
+ JZ L_48\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,610\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_47\r
+L_48:\r
+ PUSH _fd_exch\r
+ CALL FWORD PTR _KillAlarm\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [ESI], EAX\r
+L_49:\r
+L_47:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_recal:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ PUSH 7\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_50\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_50:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_51\r
+ CALL _wait_int\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_51:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_52\r
+ PUSH 8\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_52:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_53\r
+ PUSH 2\r
+ CALL _results\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_53:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_54\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,32\r
+ AND EAX,ECX\r
+ JZ L_55\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ AND EAX,EAX\r
+ JZ L_56\r
+ MOV EAX,615\r
+ JMP L_57\r
+L_56:\r
+ XOR EAX,EAX\r
+ JMP L_57\r
+L_55:\r
+ MOV EAX,609\r
+ JMP L_57\r
+L_58:\r
+L_54:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+L_57:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_seek:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ MOV EAX,1\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_drive\r
+ SHL EAX,CL\r
+ AND EAX,0FFh\r
+ XOR ECX,ECX\r
+ MOV CL,_seek_status\r
+ AND EAX,ECX\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_59\r
+ CALL _recal\r
+ AND EAX,EAX\r
+ JZ L_60\r
+ CALL _recal\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_61\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_62\r
+L_61:\r
+L_60:\r
+ MOV EAX,1\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_drive\r
+ SHL EAX,CL\r
+ AND EAX,0FFh\r
+ XOR ECX,ECX\r
+ MOV CL,_seek_status\r
+ OR EAX,ECX\r
+ MOV _seek_status, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ MOV ESI,OFFSET _LAST_TRACK\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_track\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_63\r
+ CALL _wait_for_head\r
+ XOR EAX,EAX\r
+ JMP L_62\r
+L_63:\r
+L_59:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,4\r
+ MOV ECX,14\r
+ ADD EAX,ECX\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETNE AL\r
+ AND AL,AL\r
+ JZ L_64\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_track\r
+ SHL EAX,1\r
+ MOV _fd_track, AL\r
+L_64:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ MOV ESI,OFFSET _LAST_TRACK\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_track\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_65\r
+ XOR EAX,EAX\r
+ JMP L_62\r
+L_65:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ MOV ESI,OFFSET _LAST_TRACK\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_track\r
+ MOV BYTE PTR [ESI], AL\r
+ PUSH 15\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_66\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_head\r
+ MOV ECX,2\r
+ SHL EAX,CL\r
+ AND EAX,0FFh\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_drive\r
+ OR EAX,ECX\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_66:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_67\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_track\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_67:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_68\r
+ CALL _wait_int\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_68:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_69\r
+ PUSH 8\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_69:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_70\r
+ PUSH 2\r
+ CALL _results\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_70:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_71\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,32\r
+ AND EAX,ECX\r
+ JNZ L_72\r
+ MOV EAX,1\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_drive\r
+ SHL EAX,CL\r
+ AND EAX,0FFh\r
+ NOT EAX\r
+ XOR ECX,ECX\r
+ MOV CL,_seek_status\r
+ AND EAX,ECX\r
+ MOV _seek_status, AL\r
+ MOV EAX,609\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_62\r
+L_72:\r
+L_71:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_73\r
+ CALL _wait_for_head\r
+L_73:\r
+ XOR EAX,EAX\r
+L_62:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_read_data:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,3\r
+ XOR EAX,EAX\r
+ MOV WORD PTR [EBP-2], AX\r
+L_74:\r
+ MOVZX EAX,WORD PTR [EBP-2]\r
+ CMP EAX,1000\r
+ SETB AL\r
+ AND AL,AL\r
+ JZ L_75\r
+ JMP SHORT L_76\r
+L_77:\r
+ MOVZX EAX,WORD PTR [EBP-2]\r
+ INC WORD PTR [EBP-2]\r
+ JMP SHORT L_74\r
+L_76:\r
+ PUSH 1012\r
+ CALL FWORD PTR _InByte\r
+ MOV BYTE PTR [EBP-3], AL\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-3]\r
+ MOV ECX,128\r
+ AND EAX,ECX\r
+ JZ L_78\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-3]\r
+ MOV ECX,64\r
+ AND EAX,ECX\r
+ JZ L_79\r
+ MOV ESI,DWORD PTR [EBP+8]\r
+ MOV EBX,ESI\r
+ PUSH EBX\r
+ PUSH 1013\r
+ CALL FWORD PTR _InByte\r
+ POP EDX\r
+ MOV BYTE PTR [EDX], AL\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ MOV EAX,1\r
+ JMP L_80\r
+L_79:\r
+L_78:\r
+ JMP L_77\r
+L_75:\r
+ XOR EAX,EAX\r
+L_80:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 4\r
+_results:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,3\r
+ XOR EAX,EAX\r
+ MOV WORD PTR [EBP-2], AX\r
+L_81:\r
+ MOVZX EAX,WORD PTR [EBP-2]\r
+ CMP EAX,DWORD PTR [EBP+8]\r
+ SETB AL\r
+ AND AL,AL\r
+ JZ L_82\r
+ LEA EAX,BYTE PTR [EBP-3]\r
+ PUSH EAX\r
+ CALL _read_data\r
+ AND EAX,EAX\r
+ JZ L_83\r
+ MOVZX EAX,WORD PTR [EBP-2]\r
+ INC WORD PTR [EBP-2]\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-3]\r
+ MOV BYTE PTR [ESI], AL\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ JMP L_84\r
+L_83:\r
+ MOV EAX,617\r
+ JMP L_85\r
+L_84:\r
+ JMP L_81\r
+L_82:\r
+ XOR EAX,EAX\r
+L_85:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 4\r
+_purge_fdc:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,1\r
+L_86:\r
+ PUSH 1012\r
+ CALL FWORD PTR _InByte\r
+ MOV BYTE PTR [EBP-1], AL\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-1]\r
+ MOV ECX,128\r
+ AND EAX,ECX\r
+ JZ L_89\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [EBP-1]\r
+ MOV ECX,64\r
+ AND EAX,ECX\r
+ JZ L_90\r
+ PUSH 1013\r
+ CALL FWORD PTR _InByte\r
+ PUSH 100\r
+ CALL FWORD PTR _MicroDelay\r
+ JMP L_91\r
+L_90:\r
+ JMP L_92\r
+L_91:\r
+ JMP L_93\r
+L_89:\r
+ JMP L_92\r
+L_93:\r
+L_87:\r
+ MOV EAX,1\r
+ AND EAX,EAX\r
+ JNZ L_86\r
+L_88:\r
+L_92:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_wait_for_head:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ XOR EAX,EAX\r
+ MOV AL,_fwrite\r
+ AND EAX,EAX\r
+ JZ L_94\r
+ PUSH 9\r
+ CALL _GetParm\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ MOV ECX,1000\r
+ MUL ECX\r
+ MOV ECX,15\r
+ XOR EDX,EDX\r
+ DIV ECX\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ PUSH DWORD PTR [EBP-4]\r
+ CALL FWORD PTR _MicroDelay\r
+L_94:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_med_change:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ PUSH 1015\r
+ CALL FWORD PTR _InByte\r
+ MOV ECX,128\r
+ AND EAX,ECX\r
+ JZ L_95\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,1\r
+ MOV BYTE PTR [ESI+12], AL\r
+ MOV EAX,605\r
+ JMP L_96\r
+L_95:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [ESI+12], AL\r
+ XOR EAX,EAX\r
+L_97:\r
+L_96:\r
+ POP EBP\r
+ RETN\r
+_get_fdc_status:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ CALL _wait_int\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_98\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_99\r
+L_98:\r
+ PUSH 7\r
+ CALL _results\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ AND EAX,EAX\r
+ JZ L_100\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ JMP L_99\r
+L_100:\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,192\r
+ AND EAX,ECX\r
+ JNZ L_101\r
+ XOR EAX,EAX\r
+ JMP L_99\r
+L_101:\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,192\r
+ AND EAX,ECX\r
+ CMP EAX,128\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_102\r
+ MOV EAX,618\r
+ JMP L_99\r
+L_102:\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,192\r
+ AND EAX,ECX\r
+ CMP EAX,192\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_103\r
+ MOV EAX,619\r
+ JMP L_99\r
+L_103:\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,128\r
+ AND EAX,ECX\r
+ JZ L_104\r
+ MOV EAX,604\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_105\r
+L_104:\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,32\r
+ AND EAX,ECX\r
+ JZ L_106\r
+ MOV EAX,607\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_107\r
+L_106:\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,16\r
+ AND EAX,ECX\r
+ JZ L_108\r
+ MOV EAX,611\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_109\r
+L_108:\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,4\r
+ AND EAX,ECX\r
+ JZ L_110\r
+ MOV EAX,604\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_111\r
+L_110:\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,2\r
+ AND EAX,ECX\r
+ JZ L_112\r
+ MOV EAX,603\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_113\r
+L_112:\r
+ MOV EAX,1\r
+ MOV ESI,OFFSET _FDC_STATUS\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,1\r
+ AND EAX,ECX\r
+ JZ L_114\r
+ MOV EAX,602\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_115\r
+L_114:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,608\r
+ MOV DWORD PTR [ESI], EAX\r
+L_115:\r
+L_113:\r
+L_111:\r
+L_109:\r
+L_107:\r
+L_105:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+L_99:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_RdWrtVerf:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,10\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,5\r
+ MOV BYTE PTR [EBP-6], AL\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_nr_sectors\r
+ MOV ECX,512\r
+ MUL ECX\r
+ MOV DWORD PTR [EBP-10], EAX\r
+L_116:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_nr_sectors\r
+ AND EAX,EAX\r
+ JZ L_118\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ SETZ AL\r
+ AND AL,AL\r
+L_118:\r
+ JZ L_117\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ JMP L_120\r
+L_121:\r
+ MOV EAX,1\r
+ MOV BYTE PTR [EBP-5], AL\r
+ MOV EAX,230\r
+ MOV _fd_fdc_command, AL\r
+ JMP L_119\r
+L_122:\r
+ MOV EAX,1\r
+ MOV _fwrite, AL\r
+ MOV EAX,2\r
+ MOV BYTE PTR [EBP-5], AL\r
+ PUSH _fd_pData\r
+ PUSH _sectbuf\r
+ PUSH 512\r
+ CALL FWORD PTR _CopyData\r
+ MOV EAX,197\r
+ MOV _fd_fdc_command, AL\r
+ JMP L_119\r
+L_123:\r
+ XOR EAX,EAX\r
+ MOV BYTE PTR [EBP-5], AL\r
+ MOV EAX,230\r
+ MOV _fd_fdc_command, AL\r
+ JMP L_119\r
+L_120:\r
+ CMP EAX,3\r
+ JE L_123\r
+ CMP EAX,2\r
+ JE L_122\r
+ CMP EAX,1\r
+ JE L_121\r
+L_119:\r
+ PUSH _physectbuf\r
+ PUSH 512\r
+ PUSH 2\r
+ MOVSX EAX,BYTE PTR [EBP-5]\r
+ PUSH EAX\r
+ PUSH 1\r
+ CALL FWORD PTR _DmaSetUp\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_124\r
+L_125:\r
+ MOVSX EAX,BYTE PTR [EBP-6]\r
+ DEC BYTE PTR [EBP-6]\r
+ AND EAX,EAX\r
+ JZ L_126\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_127\r
+ CALL _seek\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_127:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_128\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_fdc_command\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_128:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_129\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_head\r
+ MOV ECX,2\r
+ SHL EAX,CL\r
+ AND EAX,0FFh\r
+ MOV ECX,4\r
+ AND EAX,ECX\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_drive\r
+ OR EAX,ECX\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_129:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_130\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_track\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_130:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_131\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_head\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_131:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_132\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_sector\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_132:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_133\r
+ PUSH 3\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_133:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_134\r
+ PUSH 4\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_134:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_135\r
+ PUSH 5\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_135:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_136\r
+ PUSH 6\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_136:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_137\r
+ CALL _get_fdc_status\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_137:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_138\r
+ JMP L_126\r
+L_138:\r
+ PUSH 200\r
+ CALL FWORD PTR _MicroDelay\r
+ JMP L_125\r
+L_126:\r
+L_124:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_139\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ CMP EAX,1\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_140\r
+ PUSH _sectbuf\r
+ PUSH _fd_pData\r
+ PUSH 512\r
+ CALL FWORD PTR _CopyData\r
+L_140:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,DWORD PTR [ESI+4]\r
+ INC DWORD PTR [ESI+4]\r
+ MOV EAX,_fd_pData\r
+ ADD EAX,512\r
+ MOV _fd_pData, EAX\r
+ DEC _fd_nr_sectors\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_nr_sectors\r
+ INC _fd_sector\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_sector\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,4\r
+ MOV ECX,4\r
+ ADD EAX,ECX\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_sector\r
+ XOR ECX,ECX\r
+ MOV CL,BYTE PTR [ESI]\r
+ CMP EAX,ECX\r
+ SETA AL\r
+ AND AL,AL\r
+ JZ L_141\r
+ MOV EAX,1\r
+ MOV _fd_sector, AL\r
+ INC _fd_head\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_head\r
+L_141:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_head\r
+ CMP EAX,1\r
+ SETA AL\r
+ AND AL,AL\r
+ JZ L_142\r
+ XOR EAX,EAX\r
+ MOV _fd_head, AL\r
+ INC _fd_track\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_track\r
+L_142:\r
+L_139:\r
+ JMP L_116\r
+L_117:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+L_143:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 4\r
+_format_track:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ MOV EAX,77\r
+ MOV _fd_fdc_command, AL\r
+ MOV EAX,1\r
+ MOV _fwrite, AL\r
+ PUSH _fd_pData\r
+ PUSH 512\r
+ PUSH 2\r
+ PUSH 1\r
+ PUSH 1\r
+ CALL FWORD PTR _DmaSetUp\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_144\r
+ PUSH 3\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_144:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_145\r
+ XOR EAX,EAX\r
+ PUSH EAX\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_145:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_146\r
+ PUSH 1\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_146:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_147\r
+ CALL _seek\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_147:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_148\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_fdc_command\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_148:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_149\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_head\r
+ MOV ECX,2\r
+ SHL EAX,CL\r
+ AND EAX,0FFh\r
+ MOV ECX,4\r
+ AND EAX,ECX\r
+ XOR ECX,ECX\r
+ MOV CL,_fd_drive\r
+ OR EAX,ECX\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_149:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_150\r
+ PUSH 3\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_150:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_151\r
+ PUSH 4\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_151:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_152\r
+ PUSH 7\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_152:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_153\r
+ PUSH 8\r
+ CALL _GetParm\r
+ PUSH EAX\r
+ CALL _send_fdc\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_153:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ AND EAX,EAX\r
+ JNZ L_154\r
+ CALL _get_fdc_status\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_154:\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN\r
+_dev_op:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,8\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ MOV _fd_pData, EAX\r
+ XOR EAX,EAX\r
+ MOV _fwrite, AL\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [ESI+4], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [ESI], EAX\r
+ MOV EAX,DWORD PTR [EBP+24]\r
+ CMP EAX,10\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_156\r
+ XOR EAX,EAX\r
+ MOV _fd_drive, AL\r
+ JMP L_157\r
+L_156:\r
+ MOV EAX,1\r
+ MOV _fd_drive, AL\r
+L_157:\r
+ PUSH _fd_exch\r
+ PUSH OFFSET _fd_msg\r
+ CALL FWORD PTR _CheckMsg\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_158\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ AND EAX,EAX\r
+ JNZ L_159\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,613\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_160\r
+L_159:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ MOV BYTE PTR [ESI+13], AL\r
+ JMP L_161\r
+L_158:\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ AND EAX,EAX\r
+ JNZ L_162\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,613\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_160\r
+L_162:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ MOV BYTE PTR [ESI+13], AL\r
+L_161:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,DWORD PTR [EBP+16]\r
+ CMP EAX,DWORD PTR [ESI+8]\r
+ SETA AL\r
+ AND AL,AL\r
+ JZ L_163\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,612\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_160\r
+L_163:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ PUSH EAX\r
+ CALL _fd_select\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,4\r
+ MOV ECX,12\r
+ ADD EAX,ECX\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ PUSH EAX\r
+ PUSH 1015\r
+ CALL FWORD PTR _OutByte\r
+ CALL _purge_fdc\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,2\r
+ MOV ESI,OFFSET _rgSectorMax\r
+ ADD ESI,EAX\r
+ MOV EAX,DWORD PTR [ESI]\r
+ MOV DWORD PTR [EBX+8], EAX\r
+ MOV EAX,DWORD PTR [EBP+12]\r
+ MOV _fd_nr_sectors, AL\r
+ PUSH 3\r
+ CALL _GetParm\r
+ MOV EBX,EAX\r
+ PUSH EBX\r
+ PUSH 4\r
+ CALL _GetParm\r
+ POP EDX\r
+ MOV ECX,EDX\r
+ MUL ECX\r
+ MOV ECX,EAX\r
+ MOV EAX,DWORD PTR [EBP+16]\r
+ XOR EDX,EDX\r
+ DIV ECX\r
+ MOV _fd_track, AL\r
+ PUSH 3\r
+ CALL _GetParm\r
+ MOV EBX,EAX\r
+ PUSH EBX\r
+ PUSH 4\r
+ CALL _GetParm\r
+ POP EDX\r
+ MOV ECX,EDX\r
+ MUL ECX\r
+ MOV ECX,EAX\r
+ MOV EAX,DWORD PTR [EBP+16]\r
+ XOR EDX,EDX\r
+ DIV ECX\r
+ MOV EAX,EDX\r
+ MOV DWORD PTR [EBP-8], EAX\r
+ PUSH 4\r
+ CALL _GetParm\r
+ MOV ECX,EAX\r
+ MOV EAX,DWORD PTR [EBP-8]\r
+ XOR EDX,EDX\r
+ DIV ECX\r
+ MOV _fd_head, AL\r
+ PUSH 4\r
+ CALL _GetParm\r
+ MOV ECX,EAX\r
+ MOV EAX,DWORD PTR [EBP-8]\r
+ XOR EDX,EDX\r
+ DIV ECX\r
+ MOV EAX,EDX\r
+ ADD EAX,1\r
+ MOV _fd_sector, AL\r
+ MOV EAX,DWORD PTR [EBP+20]\r
+ JMP L_165\r
+L_166:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_164\r
+L_167:\r
+L_168:\r
+L_169:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EBX,ESI\r
+ PUSH EBX\r
+ PUSH DWORD PTR [EBP+20]\r
+ CALL _RdWrtVerf\r
+ POP EDX\r
+ MOV DWORD PTR [EDX], EAX\r
+ JMP L_164\r
+L_170:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,614\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_164\r
+L_171:\r
+ JMP L_164\r
+L_172:\r
+ JMP L_164\r
+L_173:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,614\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_164\r
+L_165:\r
+ CMP EAX,6\r
+ JE L_172\r
+ CMP EAX,5\r
+ JE L_171\r
+ CMP EAX,4\r
+ JE L_170\r
+ CMP EAX,3\r
+ JE L_169\r
+ CMP EAX,2\r
+ JE L_168\r
+ CMP EAX,1\r
+ JE L_167\r
+ CMP EAX,0\r
+ JE L_166\r
+ JMP L_173\r
+L_164:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ PUSH EAX\r
+ CALL _fd_motoroff\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,DWORD PTR [ESI]\r
+L_160:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 20\r
+_dev_stat:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ MOV EAX,DWORD PTR [EBP+20]\r
+ CMP EAX,10\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_174\r
+ XOR EAX,EAX\r
+ MOV _fd_drive, AL\r
+ JMP L_175\r
+L_174:\r
+ MOV EAX,1\r
+ MOV _fd_drive, AL\r
+L_175:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_176\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_177\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,613\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_178\r
+L_177:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ MOV BYTE PTR [ESI+13], AL\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ SHL EAX,4\r
+ MOV ECX,11\r
+ ADD EAX,ECX\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,1\r
+ ADD EAX,ECX\r
+ MOV DWORD PTR [EBX+16], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,2\r
+ MOV DWORD PTR [ESI+20], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ SHL EAX,4\r
+ MOV ECX,4\r
+ ADD EAX,ECX\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV DWORD PTR [EBX+24], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,512\r
+ MOV DWORD PTR [ESI+28], EAX\r
+ JMP L_179\r
+L_176:\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_180\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,613\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_178\r
+L_180:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ MOV BYTE PTR [ESI+13], AL\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ SHL EAX,4\r
+ MOV ECX,11\r
+ ADD EAX,ECX\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV ECX,1\r
+ ADD EAX,ECX\r
+ MOV DWORD PTR [EBX+16], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,2\r
+ MOV DWORD PTR [ESI+20], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ SHL EAX,4\r
+ MOV ECX,4\r
+ ADD EAX,ECX\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI]\r
+ MOV DWORD PTR [EBX+24], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,512\r
+ MOV DWORD PTR [ESI+28], EAX\r
+L_179:\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EBX,ESI\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,2\r
+ MOV ESI,OFFSET _rgSectorMax\r
+ ADD ESI,EAX\r
+ MOV EAX,DWORD PTR [ESI]\r
+ MOV DWORD PTR [EBX+8], EAX\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ SHL EAX,4\r
+ MOV ESI,OFFSET _fdisk_table\r
+ ADD ESI,EAX\r
+ PUSH ESI\r
+ MOV EAX,OFFSET _fdstatus\r
+ ADD EAX,32\r
+ PUSH EAX\r
+ PUSH 16\r
+ CALL FWORD PTR _CopyData\r
+ PUSH OFFSET _FDC_STATUS\r
+ MOV EAX,OFFSET _fdstatus\r
+ ADD EAX,48\r
+ PUSH EAX\r
+ PUSH 8\r
+ CALL FWORD PTR _CopyData\r
+ MOV EAX,DWORD PTR [EBP+12]\r
+ CMP EAX,64\r
+ SETB AL\r
+ AND AL,AL\r
+ JZ L_181\r
+ MOV EAX,DWORD PTR [EBP+12]\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_182\r
+L_181:\r
+ MOV EAX,64\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_182:\r
+ PUSH OFFSET _fdstatus\r
+ PUSH DWORD PTR [EBP+16]\r
+ PUSH DWORD PTR [EBP-4]\r
+ CALL FWORD PTR _CopyData\r
+ MOV ESI,DWORD PTR [EBP+8]\r
+ MOV EAX,DWORD PTR [EBP-4]\r
+ MOV DWORD PTR [ESI], EAX\r
+ XOR EAX,EAX\r
+L_178:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 16\r
+_dev_init:\r
+ PUSH EBP\r
+ MOV EBP,ESP\r
+ SUB ESP,4\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ CMP EAX,64\r
+ SETA AL\r
+ AND AL,AL\r
+ JZ L_183\r
+ MOV EAX,64\r
+ MOV DWORD PTR [EBP-4], EAX\r
+ JMP L_184\r
+L_183:\r
+ MOV EAX,DWORD PTR [EBP+8]\r
+ MOV DWORD PTR [EBP-4], EAX\r
+L_184:\r
+ PUSH DWORD PTR [EBP+12]\r
+ PUSH OFFSET _FDStatTmp\r
+ PUSH DWORD PTR [EBP-4]\r
+ CALL FWORD PTR _CopyData\r
+ MOV EAX,DWORD PTR [EBP+16]\r
+ CMP EAX,10\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_185\r
+ XOR EAX,EAX\r
+ MOV _fd_drive, AL\r
+ JMP L_186\r
+L_185:\r
+ MOV EAX,1\r
+ MOV _fd_drive, AL\r
+L_186:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_187\r
+ MOV ESI,OFFSET _FDStatTmp\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ MOV _type0, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_188\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,613\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_189\r
+L_188:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type0\r
+ MOV BYTE PTR [ESI+13], AL\r
+ JMP L_190\r
+L_187:\r
+ MOV ESI,OFFSET _FDStatTmp\r
+ XOR EAX,EAX\r
+ MOV AL,BYTE PTR [ESI+13]\r
+ MOV _type1, AL\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ XOR ECX,ECX\r
+ CMP EAX,ECX\r
+ SETE AL\r
+ AND AL,AL\r
+ JZ L_191\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,613\r
+ MOV DWORD PTR [ESI], EAX\r
+ JMP L_189\r
+L_191:\r
+ MOV ESI,OFFSET _fdstatus\r
+ XOR EAX,EAX\r
+ MOV AL,_type1\r
+ MOV BYTE PTR [ESI+13], AL\r
+L_190:\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ PUSH EAX\r
+ CALL _fd_select\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EBX,ESI\r
+ PUSH EBX\r
+ CALL _FDC_reset\r
+ POP EDX\r
+ MOV DWORD PTR [EDX], EAX\r
+ XOR EAX,EAX\r
+ MOV AL,_fd_drive\r
+ PUSH EAX\r
+ CALL _fd_motoroff\r
+ MOV ESI,OFFSET _fdstatus\r
+ MOV EAX,DWORD PTR [ESI]\r
+L_189:\r
+ MOV ESP,EBP\r
+ POP EBP\r
+ RETN 12\r