📄 ahadisk.asm
字号:
test al,40h ; '@'
jz loc_87 ; Jump if zero
loc_86:
mov data_62,3
jmp loc_125
loc_87:
mov byte ptr ds:[230h],0
loc_88:
mov data_82,161Fh
loc_89:
jmp data_84
call sub_78
mov data_68,28E9h
mov ax,word ptr data_60
mov data_67,ax
mov data_69,42h ; 'B'
mov data_70,0E6h
mov data_85,27F1h
call sub_75
test data_73,0C0h
jz loc_95 ; Jump if zero
test data_74,20h ; ' '
jz loc_90 ; Jump if zero
cmp data_94,2
je loc_93 ; Jump if equal
inc data_94
jmp short loc_91
db 90h
loc_90:
mov data_94,0
loc_91:
call sub_65
test data_73,0C0h
jz loc_92 ; Jump if zero
jmp loc_123
loc_92:
mov data_84,1623h
jmp short loc_88
loc_93:
mov data_94,0
cmp data_65,0
jne loc_94 ; Jump if not equal
jmp loc_105
loc_94:
call sub_51
loc_95:
cmp data_64,0
jne loc_97 ; Jump if not equal
mov data_64,1
loc_96:
jmp short loc_89
loc_97:
call sub_9
mov data_82,161Fh
mov data_64,0
inc data_65
inc data_63
cmp data_31,0
jne loc_98 ; Jump if not equal
inc data_63
loc_98:
call sub_46
cmp data_63,50h ; 'P'
jge loc_99 ; Jump if > or =
call sub_63
test data_73,0C0h
jz loc_96 ; Jump if zero
call sub_65
test data_73,0C0h
jz loc_96 ; Jump if zero
jmp short loc_100
db 90h
loc_99:
mov data_65,0
mov data_63,0
mov data_66,1
mov data_64,0
mov data_59,0
call sub_63
test data_73,0C0h
jz loc_101 ; Jump if zero
call sub_65
test data_73,0C0h
jz loc_101 ; Jump if zero
loc_100:
mov data_62,40h ; '@'
jmp loc_125
loc_101:
mov data_82,1712h
call sub_78
cmp data_64,1
je loc_102 ; Jump if equal
mov data_64,1
jmp short loc_101
loc_102:
call sub_52
mov ds,data_25
mov ax,word ptr ds:timer_low_+1
push cs
pop ds
mov word ptr ds:[243Dh],ax
loc_103:
mov data_82,1738h
mov data_64,0
mov data_68,2416h
mov data_67,1FFh
mov data_69,4Ah ; 'J'
mov data_70,0C5h
mov data_85,27F1h
call sub_75
test data_73,0C0h
jz loc_106 ; Jump if zero
test data_74,2
jz loc_104 ; Jump if zero
jmp loc_86
loc_104:
cmp data_94,0
jne loc_105 ; Jump if not equal
inc data_94
call sub_65
test data_73,0C0h
jz loc_103 ; Jump if zero
jmp loc_123
loc_105:
mov data_62,20h ; ' '
jmp loc_125
loc_106:
call sub_53
mov byte ptr ds:[21Ah],2
mov al,byte ptr ds:[242Bh]
mov data_214,al
mov data_215,0FFFFh
mov word ptr ds:[223h],0
mov word ptr ds:[21Fh],0
mov word ptr ds:[212h],139h
loc_107:
mov cx,80h
mov si,word ptr ds:[212h]
loc_108:
mov word ptr ds:[218h],cx
mov word ptr ds:[214h],si
call sub_55
sub ax,word ptr ds:[21Fh]
test cx,[si]
jz loc_113 ; Jump if zero
cmp ax,200h
jl loc_109 ; Jump if <
mov word ptr ds:[21Bh],ax
call sub_49
call sub_53
call sub_50
mov ax,word ptr ds:[21Bh]
sub ax,200h
loc_109:
mov di,offset data_214
add di,ax
mov al,data_56
cbw ; Convrt byte to word
cmp al,9
jne loc_110 ; Jump if not equal
clc ; Clear carry flag
rcr ax,1 ; Rotate thru carry
adc ax,0
loc_110:
mov cx,ax
mov si,word ptr ds:[229h]
loc_111:
mov bx,225h
mov ax,[bx+si]
mov bx,[di]
or ax,bx
cld ; Clear direction
stosw ; Store ax to es:[di]
xor si,2
nop ;*ASM fixup - sign extn byte
jz loc_112 ; Jump if zero
dec di
loc_112:
dec cx
jnz loc_111 ; Jump if not zero
mov word ptr ds:[21Dh],di
jmp short loc_114
db 90h
loc_113:
cmp ax,200h
jl loc_114 ; Jump if <
call sub_49
call sub_53
call sub_50
loc_114:
mov word ptr ds:[21Bh],ax
mov al,data_56
cbw ; Convrt byte to word
add word ptr ds:[223h],ax
mov ax,word ptr ds:[21Bh]
mov cx,word ptr ds:[218h]
mov si,word ptr ds:[214h]
shr cx,1 ; Shift w/zeros fill
jz loc_115 ; Jump if zero
jmp loc_108
loc_115:
inc word ptr ds:[212h]
mov ax,word ptr ds:[212h]
cmp ax,word ptr ds:[216h]
je loc_116 ; Jump if equal
jmp loc_107
loc_116:
call sub_49
call sub_54
mov di,data_100
mov ax,word ptr ds:[243Fh]
xchg ah,al
cld ; Clear direction
stosw ; Store ax to es:[di]
mov ax,word ptr ds:[243Dh]
xchg ah,al
stosw ; Store ax to es:[di]
mov ax,word ptr data_98
stosw ; Store ax to es:[di]
mov data_100,di
inc data_95
inc data_99
call sub_12
mov al,data_96
cmp data_95,al
je loc_119 ; Jump if equal
loc_117:
mov byte ptr ds:[230h],1
mov ds,data_25
mov byte ptr ds:dsk_motor_tmr_,2
push cs
pop ds
mov data_92,3AAh
call sub_45
mov cx,88h
locloop_118:
call sub_7
call sub_9
mov cx,word ptr ds:[22Bh]
mov data_82,1596h
loop locloop_118 ; Loop if cx > 0
jmp loc_79
loc_119:
mov data_92,3C2h
call sub_45
mov data_107,2
mov data_110,0Ch
loc_120:
mov data_81,130Dh
mov byte ptr ds:[230h],0
call sub_8
loc_121:
and byte ptr ds:[22Eh],0
mov sp,2B84h
mov ax,202h
push ax
push cs
mov ax,data_81
push ax
mov word ptr cs:[1DCh],sp
loc_122:
mov ss,word ptr ds:[20Eh]
mov sp,word ptr ds:[208h]
mov es,word ptr ds:[210h]
mov bp,word ptr ds:[20Ah]
mov si,word ptr ds:[204h]
mov di,word ptr ds:[206h]
mov ax,word ptr ds:[1FCh]
mov bx,word ptr ds:[1FEh]
mov cx,word ptr ds:[200h]
mov dx,word ptr ds:[202h]
mov ds,word ptr ds:[20Ch]
iret ; Interrupt return
loc_123:
mov byte ptr ds:[22Fh],0
mov dx,3F2h
mov al,8
out dx,al ; port 3F2h, dsk0 contrl output
cmp byte ptr ds:[230h],0
je loc_124 ; Jump if equal
jmp loc_117
loc_124:
mov data_62,80h
loc_125:
mov data_92,3B6h
call sub_45
call sub_12
mov byte ptr ds:[22Dh],6
call sub_7
call sub_12
call sub_8
mov data_81,195Dh
jmp short loc_121
sub_6 endp
loc_126:
and byte ptr cs:[22Eh],7Fh
call sub_28
jnc loc_128 ; Jump if carry=0
clc ; Clear carry flag
call sub_11
test byte ptr ds:[22Eh],20h ; ' '
jnz loc_127 ; Jump if not zero
jmp loc_121
loc_127:
jmp loc_120
loc_128:
call sub_22
call sub_23
call sub_56
call sub_20
cmp data_62,80h
je loc_129 ; Jump if equal
cmp data_62,3
je loc_132 ; Jump if equal
cmp data_62,40h ; '@'
je loc_131 ; Jump if equal
cmp data_62,20h ; ' '
je loc_130 ; Jump if equal
mov dh,0Ah
mov dl,1Eh
mov si,441h
call sub_14
jmp short loc_133
db 90h
loc_129:
mov dh,0Ah
mov dl,20h ; ' '
mov si,3DAh
call sub_14
jmp short loc_133
db 90h
loc_130:
mov dh,0Ah
mov dl,18h
mov si,420h
call sub_14
jmp short loc_133
db 90h
loc_131:
mov dh,0Ah
mov dl,22h ; '"'
mov si,402h
call sub_14
jmp short loc_133
db 90h
loc_132:
mov dh,0Ah
mov dl,1Dh
mov si,3EBh
call sub_14
loc_133:
mov dh,0Eh
mov dl,20h ; ' '
mov data_62,0
mov si,40Fh
call sub_14
call sub_13
loc_134:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,1Bh
je loc_135 ; Jump if equal
and al,0DFh
cmp al,52h ; 'R'
je loc_136 ; Jump if equal
cmp al,41h ; 'A'
je loc_135 ; Jump if equal
call sub_11
jmp short loc_134
loc_135:
call sub_24
mov data_107,0
mov data_110,6
jmp loc_120
loc_136:
call sub_24
cli ; Disable interrupts
mov byte ptr ds:[22Eh],0C0h
call sub_7
call sub_65
mov cx,5
jmp data_82
loc_137:
call sub_19
mov dh,0Dh
mov dl,15h
mov si,457h
call sub_14
call sub_13
loc_138:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,1Bh
je loc_144 ; Jump if equal
cmp al,0Dh
je loc_139 ; Jump if equal
call sub_11
jmp short loc_138
loc_139:
call sub_19
mov dh,0Dh
mov dl,21h ; '!'
mov si,47Fh
call sub_14
call sub_13
mov bp,0A2Bh
loc_140:
mov ah,2
xor dx,dx ; Zero register
int 17h ; Printer dx=prn1, ah=func 02h
; read status, ah=return status
test ah,10h
jz loc_143 ; Jump if zero
mov al,[bp]
cmp al,0
je loc_144 ; Jump if equal
xor ah,ah ; Zero register
xor dx,dx ; Zero register
int 17h ; Printer dx=prn1, ah=func 00h
; print char al, get status ah
test ah,29h ; ')'
jnz loc_141 ; Jump if not zero
inc bp
jmp short loc_140
loc_141:
call sub_19
mov dh,0Ch
mov dl,23h ; '#'
mov si,48Dh
loc_142:
call sub_14
mov data_82,1A2Eh
jmp loc_74
loc_143:
call sub_19
mov dh,0Ch
mov dl,1Eh
mov si,499h
jmp short loc_142
loc_144:
jmp loc_41
loc_145:
cmp data_95,0
jne loc_147 ; Jump if not equal
call sub_19
mov dh,0Dh
mov dl,20h ; ' '
mov si,38Dh
call sub_14
loc_146:
mov dh,0Fh
mov dl,16h
mov si,368h
call sub_14
call sub_13
jmp short loc_148
db 90h
loc_147:
mov ax,838h
mov cs:data_93,ax
call sub_21
call sub_31
loc_148:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
mov data_107,5
mov data_110,15h
jmp loc_41
loc_149:
cmp data_187,6666h
je loc_150 ; Jump if equal
mov data_187,6666h
jmp loc_41
loc_150:
mov data_187,206Eh
jmp loc_41
loc_151:
mov ax,11E0h
mov di,20h ; (' ')
call sub_30
jc loc_152 ; Jump if carry Set
mov ax,12E6h
mov di,offset data_42
call sub_30
jc loc_152 ; Jump if carry Set
mov ax,12CCh
mov di,offset data_38
call sub_30
jc loc_152 ; Jump if carry Set
mov ax,127Ah
mov di,24h ; (' ')
call sub_30
jnc loc_153 ; Jump if carry=0
loc_152:
clc ; Clear carry flag
call sub_19
mov dh,0Ch
mov dl,8
mov si,327h
call sub_14
jmp loc_146
loc_153:
xor ax,ax ; Zero register
mov word ptr data_24,ax
mov si,offset 195h
mov di,20h ; (' ')
call sub_29
mov si,offset 199h
mov di,24h ; (' ')
call sub_29
mov si,offset 19Dh
mov di,offset data_38
call sub_29
mov si,offset 1A1h
mov di,offset data_42
call sub_29
mov es,data_26
mov di,data_2e
xor ax,ax ; Zero register
stosw ; Store ax to es:[di]
mov es,data_27
mov di,data_2e
xor ax,ax ; Zero register
stosw ; Store ax to es:[di]
push cs
pop es
call sub_24
call sub_7
loc_154:
mov data_107,0
mov data_110,6
call sub_24
jmp loc_121
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_7 proc near
add byte ptr ds:[22Dh],1
cli ; Disable interrupts
mov word ptr ds:[1D0h],ax
pop ax
pushf ; Push flags
push cs
push ax
mov word ptr ds:[1DCh],sp
mov word ptr ds:[1D2h],bx
mov word ptr ds:[1DAh],ss
mov word ptr ds:[1E2h],ds
mov word ptr ds:[1E4h],es
mov word ptr ds:[1E0h],bp
mov word ptr ds:[1D8h],si
mov word ptr ds:[1DEh],di
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -