📄 ahadisk.asm
字号:
mov word ptr ds:[1D4h],cx
mov word ptr ds:[1D6h],dx
jmp loc_122
sub_7 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_8 proc near
mov al,data_29
cbw ; Convrt byte to word
mov di,ax
mov ds,data_25
and byte ptr ds:hdsk0_media_st_[di],0EFh
mov byte ptr ds:dsk_motor_tmr_,2
mov byte ptr ds:dsk_recal_stat_,0
push cs
pop ds
retn
sub_8 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_9 proc near
mov word ptr ds:[22Bh],cx
test byte ptr ds:[22Eh],20h ; ' '
jz loc_ret_155 ; Jump if zero
pop ax
mov data_82,ax
jmp loc_126
loc_ret_155:
retn
sub_9 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_10 proc near
mov ah,0Eh
mov bh,0
int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
retn
sub_10 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_11 proc near
push ax
push bx
mov al,7
call sub_10
pop bx
pop ax
retn
sub_11 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_12 proc near
call sub_7
mov al,0B6h
out 43h,al ; port 43h, 8253 wrt timr mode
mov ax,180h
out 42h,al ; port 42h, 8253 timer 2 spkr
mov al,ah
out 42h,al ; port 42h, 8253 timer 2 spkr
in al,61h ; port 61h, 8255 port B, read
or al,3
out 61h,al ; port 61h, 8255 B - spkr, etc
call sub_7
in al,61h ; port 61h, 8255 port B, read
and al,0FCh
out 61h,al ; port 61h, 8255 B - spkr, etc
; al = 0, disable parity
retn
sub_12 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_13 proc near
mov ah,2
mov dx,2000h
mov bh,data_104
int 10h ; Video display ah=functn 02h
; set cursor location in dx
retn
sub_13 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_14 proc near
mov ah,2
mov bh,0
int 10h ; Video display ah=functn 02h
; set cursor location in dx
call sub_15
retn
sub_14 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_15 proc near
loc_156:
cld ; Clear direction
lodsb ; String [si] to al
cmp al,0
je loc_ret_157 ; Jump if equal
mov ah,0Eh
mov bh,0
int 10h ; Video display ah=functn 0Eh
; write char al, teletype mode
jmp short loc_156
loc_ret_157:
retn
sub_15 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_16 proc near
loc_158:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,1Bh
jne loc_159 ; Jump if not equal
pop ax
jmp data_89
loc_159:
cmp al,0Dh
jne loc_160 ; Jump if not equal
mov al,data_103
jmp short loc_161
db 90h
loc_160:
cmp al,30h ; '0'
jl loc_162 ; Jump if <
cmp al,data_102
jg loc_162 ; Jump if >
loc_161:
and ax,7
retn
loc_162:
call sub_11
jmp short loc_158
sub_16 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_17 proc near
mov cx,0FA0h
shr cx,1 ; Shift w/zeros fill
cld ; Clear direction
lodsb ; String [si] to al
inc si
xchg ah,al
loc_163:
lodsb ; String [si] to al
dec cx
jz loc_165 ; Jump if zero
inc si
cmp ah,al
jne loc_164 ; Jump if not equal
inc bx
jmp short loc_163
loc_164:
call sub_26
jmp short loc_163
loc_165:
call sub_26
retn
sub_17 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_18 proc near
push ds
push es
mov si,data_1e
mov di,data_16e
mov bx,0
mov ds,cs:data_91
mov es,cs:data_91
call sub_17
mov si,data_2e
mov bx,0
call sub_17
pop es
pop ds
retn
sub_18 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_19 proc near
mov ax,4ADh
mov data_93,ax
call sub_21
retn
sub_19 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_20 proc near
mov ax,6F7h
mov data_93,ax
call sub_21
retn
sub_20 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_21 proc near
push cx
push dx
push si
push di
push ax
xor di,di ; Zero register
mov si,cs:data_93
loc_166:
lodsb ; String [si] to al
cmp al,1
jne loc_169 ; Jump if not equal
lodsw ; String [si] to ax
mov cx,ax
test cl,80h
jz loc_167 ; Jump if zero
xchg ch,cl
and cx,7FFFh
lodsb ; String [si] to al
jmp short locloop_168
db 90h
loc_167:
xchg al,ah
and cx,7Fh
locloop_168:
call sub_25
loop locloop_168 ; Loop if cx > 0
jmp short loc_170
db 90h
loc_169:
call sub_25
loc_170:
cmp di,0FA0h
jl loc_166 ; Jump if <
jnz loc_171 ; Jump if not zero
mov di,1
jmp short loc_166
loc_171:
pop ax
pop di
pop si
pop dx
pop cx
retn
sub_21 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_22 proc near
push ds
mov ds,data_91
mov si,data_4e
mov di,offset data_115
mov cx,7
cld ; Clear direction
repe cmpsw ; Rep zf=1+cx >0 Cmp [si] to es:[di]
pop ds
cmp cx,0
jne loc_ret_172 ; Jump if not equal
mov data_92,0D5h
call sub_44
loc_ret_172:
retn
sub_22 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_23 proc near
mov ah,0Fh
int 10h ; Video display ah=functn 0Fh
; get state, al=mode, bh=page
; ah=columns on screen
mov ah,3
int 10h ; Video display ah=functn 03h
; get cursor loc in dx, mode cx
mov data_104,bh
mov data_105,cx
mov data_106,dx
call sub_18
retn
sub_23 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_24 proc near
mov data_93,1000h
mov ax,data_91
push ds
mov ds,ax
call sub_21
pop ds
mov bh,data_104
mov dx,data_106
mov ah,2
int 10h ; Video display ah=functn 02h
; set cursor location in dx
mov ah,1
mov cx,data_105
int 10h ; Video display ah=functn 01h
; set cursor mode in cx
retn
sub_24 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_25 proc near
push es
mov es,cs:data_91
mov dx,cs:data_90
cli ; Disable interrupts
push ax
loc_173:
in al,dx ; port 0, DMA-1 bas&add ch 0
test al,1
jnz loc_173 ; Jump if not zero
loc_174:
in al,dx ; port 0, DMA-1 bas&add ch 0
test al,1
jz loc_174 ; Jump if zero
pop ax
mov es:[di],al
sti ; Enable interrupts
inc di
inc di
pop es
retn
sub_25 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_26 proc near
cmp ah,1
je loc_175 ; Jump if equal
cmp bx,0
je loc_178 ; Jump if equal
cmp bx,1
jne loc_175 ; Jump if not equal
xor bx,bx ; Zero register
xchg ah,al
stosb ; Store al to es:[di]
jmp short loc_179
db 90h
loc_175:
push ax
inc bx
mov al,1
stosb ; Store al to es:[di]
mov ax,bx
and bx,0FF80h
nop ;*ASM fixup - sign extn byte
jz loc_176 ; Jump if zero
or ax,8000h
xchg ah,al
stosw ; Store ax to es:[di]
jmp short loc_177
db 90h
loc_176:
stosb ; Store al to es:[di]
loc_177:
xor bx,bx ; Zero register
pop ax
loc_178:
xchg ah,al
loc_179:
stosb ; Store al to es:[di]
retn
sub_26 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_27 proc near
mov al,data_110
mul data_111 ; ax = data * al
add ax,3Dh
mov di,ax
mov al,data_112
mov cl,15h
loc_180:
call sub_25
dec cl
cmp cl,0
jne loc_180 ; Jump if not equal
retn
sub_27 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_28 proc near
mov ds,data_25
cmp byte ptr ds:video_mode_,7
je loc_183 ; Jump if equal
cmp byte ptr ds:video_mode_,2
je loc_182 ; Jump if equal
cmp byte ptr ds:video_mode_,3
je loc_182 ; Jump if equal
loc_181:
push cs
pop ds
stc ; Set carry flag
retn
loc_182:
push cs
pop ds
clc ; Clear carry flag
retn
loc_183:
mov ds,cs:data_91
xor si,si ; Zero register
mov cx,50h
xor bx,bx ; Zero register
cld ; Clear direction
locloop_184:
lodsw ; String [si] to ax
cmp ah,al
jne loc_185 ; Jump if not equal
inc bx
loc_185:
loop locloop_184 ; Loop if cx > 0
cmp bx,0Ah
jg loc_181 ; Jump if >
jmp short loc_182
sub_28 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_29 proc near
mov cx,2
mov es,data_25
cld ; Clear direction
cli ; Disable interrupts
rep movsw ; Rep when cx >0 Mov [si] to es:[di]
sti ; Enable interrupts
retn
sub_29 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_30 proc near
clc ; Clear carry flag
mov word ptr ds:[1F0h],es
mov es,data_25
cmp ax,es:[di]
jne loc_186 ; Jump if not equal
push cs
pop ax
cmp ax,es:[di+2]
je loc_187 ; Jump if equal
loc_186:
stc ; Set carry flag
loc_187:
mov es,word ptr ds:[1F0h]
retn
sub_30 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_31 proc near
mov data_100,0F5h
mov data_97,9
mov data_95,1
loc_188:
mov al,data_95
cbw ; Convrt byte to word
mov word ptr ds:[1A9h],0
mov word ptr ds:[1ABh],ax
call sub_32
mov dh,byte ptr ds:[1AFh]
mov dl,7
sub dl,dh
mov dh,data_97
mov si,0EDh
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -