📄 ahadisk.asm
字号:
db 4Eh, 20h,0BAh,0BAh, 01h, 4Eh
db 20h,0BAh,0CCh, 01h, 0Ch,0CDh
db 0D1h
db 01h, 15h,0CDh,0D1h, 01h, 11h
db 0CDh
db 0D1h, 01h, 19h,0CDh,0B9h,0BAh
db ' Diskette '
db 0B3h, 01h, 07h, 20h, 56h, 6Fh
db 6Ch, 75h, 6Dh, 65h, 01h, 08h
db 20h,0B3h, 01h, 05h, 20h, 4Eh
db 6Fh, 2Eh, 20h, 4Fh, 66h, 01h
db 06h, 20h,0B3h, 01h, 04h
db ' Total Disk Space'
db 01h, 05h, 20h,0BAh,0BAh, 01h
db 05h, 20h, 4Eh, 6Fh, 2Eh, 01h
db 04h, 20h,0B3h, 01h, 04h
db ' Serial Number'
db 01h, 04h, 20h,0B3h
db ' Bad Cluster(s) '
db 0B3h, 01h
db 8, ' In Bytes'
db 01h, 09h, 20h,0BAh,0C7h, 01h
db 0Ch,0C4h,0C5h, 01h, 15h,0C4h
db 0C5h, 01h, 11h,0C4h,0C5h, 01h
db 19h,0C4h,0B6h
db 0BAh, 01h, 0Ch, 20h
db 0B3h, 01h, 15h
db 20h,0B3h, 01h, 11h, 20h,0B3h
db 01h, 19h, 20h,0BAh,0BAh, 01h
db 0Ch, 20h,0B3h, 01h, 15h, 20h
db 0B3h, 01h, 11h, 20h,0B3h, 01h
db 19h, 20h,0BAh,0BAh, 01h, 0Ch
db 20h,0B3h, 01h, 15h, 20h,0B3h
db 01h, 11h, 20h,0B3h, 01h, 19h
db 20h,0BAh,0BAh, 01h, 0Ch, 20h
db 0B3h, 01h, 15h, 20h,0B3h, 01h
db 11h
db 20h
db 0B3h, 01h, 19h, 20h,0BAh,0BAh
db 01h, 0Ch, 20h,0B3h, 01h, 15h
db 20h,0B3h, 01h, 11h, 20h,0B3h
db 01h, 19h, 20h,0BAh,0BAh, 01h
db 0Ch, 20h,0B3h, 01h, 15h, 20h
db 0B3h, 01h, 11h, 20h,0B3h, 01h
db 19h, 20h,0BAh,0BAh, 01h, 0Ch
db 20h,0B3h, 01h, 15h, 20h,0B3h
db 01h, 11h, 20h,0B3h, 01h, 19h
db 20h,0BAh,0BAh, 01h, 0Ch, 20h
db 0B3h, 01h, 15h, 20h,0B3h, 01h
db 11h, 20h,0B3h, 01h, 19h, 20h
db 0BAh,0BAh, 01h, 0Ch, 20h,0B3h
db 01h, 15h, 20h,0B3h, 01h, 11h
db 20h,0B3h, 01h, 19h, 20h,0BAh
db 0BAh, 01h, 0Ch, 20h,0B3h, 01h
db 15h, 20h,0B3h, 01h, 11h, 20h
db 0B3h, 01h, 19h, 20h,0BAh,0BAh
db 01h, 0Ch, 20h,0B3h, 01h, 15h
db 20h,0B3h, 01h, 11h, 20h,0B3h
db 01h, 19h, 20h,0BAh,0CCh, 01h
db 0Ch,0CDh,0CFh, 01h, 15h,0CDh
db 0CFh, 01h, 11h,0CDh,0CFh, 01h
db 19h,0CDh,0B9h,0BAh, 01h, 4Eh
db 20h,0BAh,0BAh, 01h, 15h
db 20h, 50h
db 'ress Any Key To Return To Main M'
db 'enu'
db 01h, 15h, 20h,0BAh,0BAh, 01h
db 4Eh, 20h,0BAh,0C8h, 01h, 4Eh
db 0CDh,0BCh, 01h, 87h,0D0h, 1Fh
db 0Dh, 0Ah, 0Dh, 0Ah, 20h
db 9 dup (20h)
db 0ADh
db 'aHa/nBa! Application Form! '
db ' ', 0Dh
db 0Ah, 'What file is this?', 0Dh, 0Ah
db ' Where Did '
db 'you get it from?', 0Dh, 0Ah, ' '
db ' Handle:', 0Dh, 0Ah
db ' Phone #:', 0Dh, 0Ah, ' '
db ' ', 0Dh, 0Ah, ' '
db ' List 3 boards whe'
db 're you could be reached at: ', 0Dh
db 0Ah, 0Dh, 0Ah, ' '
db ' Can y'
db 'ou HaCK?', 0Dh, 0Ah, ' '
db ' List a fe'
db 'w thigs you', 27h, 've hacked:', 0Dh
db 0Ah, 0Dh, 0Ah, ' '
db ' Ok! Send MoneY, pft,'
db ' and this letter to:', 0Dh, 0Ah, ' '
db ' Psycho', 0Dh
db 0Ah, ' 1340 W Irving', 0Dh
db 0Ah, ' #229', 0Dh, 0Ah, ' '
db ' Chicago, IL', 0Dh, 0Ah, ' 60'
db '613', 0Dh, 0Ah, ' '
db ' Ok! No'
db 'w, write about yourself: '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' '
db ' ', 0Ch, 0
db '.'
db 80h, 3Eh, 2Dh, 02h, 00h, 74h
db 08h, 2Eh,0FEh, 0Eh, 2Dh, 02h
db 0EBh, 09h, 90h
db 2Eh,0F6h, 06h, 2Eh, 02h, 80h
db 75h, 05h
loc_32:
jmp dword ptr cs:[195h]
loc_33:
mov word ptr cs:[1EAh],ax
mov al,0Bh
out 20h,al ; port 20h, 8259-1 int command
jmp short $+2 ; delay for I/O
in al,20h ; port 20h, 8259-1 int IRR/ISR
and al,0FEh
mov ax,word ptr cs:[1EAh]
jz loc_34 ; Jump if zero
jmp short loc_32
loc_34:
mov word ptr cs:[1FCh],ax
mov word ptr cs:[1FEh],bx
mov word ptr cs:[208h],sp
mov word ptr cs:[20Eh],ss
mov word ptr cs:[20Ch],ds
mov word ptr cs:[210h],es
mov word ptr cs:[20Ah],bp
mov word ptr cs:[204h],si
mov word ptr cs:[206h],di
mov word ptr cs:[200h],cx
mov word ptr cs:[202h],dx
mov ds,word ptr cs:[1E2h]
mov ss,word ptr ds:[1DAh]
mov sp,word ptr ds:[1DCh]
mov es,word ptr ds:[1E4h]
mov bp,word ptr ds:[1E0h]
mov si,word ptr ds:[1D8h]
mov di,word ptr ds:[1DEh]
mov ax,word ptr ds:[1D0h]
mov bx,word ptr ds:[1D2h]
mov cx,word ptr ds:[1D4h]
mov dx,word ptr ds:[1D6h]
jmp dword ptr cs:[195h]
mov word ptr cs:[1F8h],ds
mov word ptr cs:[1F6h],ax
mov word ptr cs:[1FAh],bx
mov ds,cs:data_25
mov bx,keybd_flags_1_
mov ah,[bx]
and ah,0Fh
cmp ah,0Bh
jne loc_36 ; Jump if not equal
test byte ptr cs:[22Eh],0C0h
jz loc_35 ; Jump if zero
test byte ptr cs:[22Eh],40h ; '@'
jz loc_36 ; Jump if zero
or byte ptr cs:[22Eh],20h ; ' '
jmp short loc_36
db 90h
loc_35:
or byte ptr cs:[22Eh],80h
loc_36:
mov ax,word ptr cs:[1F6h]
mov ds,word ptr cs:[1F8h]
mov bx,word ptr cs:[1FAh]
jmp dword ptr cs:[199h]
db 2Eh, 80h, 3Eh, 2Fh, 02h, 00h
db 74h, 0Dh, 2Eh,0C6h, 06h, 2Fh
db 02h, 00h, 50h,0B0h, 66h,0E6h
db 20h, 58h,0CFh
loc_37:
jmp dword ptr cs:[19Dh]
test dl,80h
jnz loc_38 ; Jump if not zero
test byte ptr cs:[22Eh],40h ; '@'
jz loc_38 ; Jump if zero
mov word ptr cs:[1EAh],ax
pop ax
pop ax
pop ax
or ax,1
push ax
sub sp,4
mov ax,word ptr cs:[1EAh]
mov ah,80h
iret ; Interrupt return
sub_2 endp
;哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌哌
; SUBROUTINE
;苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘苘
sub_6 proc near
loc_38:
jmp dword ptr cs:[1A1h]
mov byte ptr ds:[22Eh],40h ; '@'
call sub_28
jnc loc_40 ; Jump if carry=0
clc ; Clear carry flag
loc_39:
call sub_11
jmp loc_121
loc_40:
mov ds,data_25
test byte ptr ds:dsk_motor_stat_,0Fh
push cs
pop ds
jnz loc_39 ; Jump if not zero
call sub_22
call sub_23
loc_41:
mov ax,55Ch
mov cs:data_93,ax
call sub_21
mov data_112,70h ; 'p'
call sub_27
call sub_13
loc_42:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,1Bh
je loc_48 ; Jump if equal
cmp al,0Dh
je loc_49 ; Jump if equal
cmp ah,48h ; 'H'
je loc_50 ; Jump if equal
cmp ah,50h ; 'P'
je loc_53 ; Jump if equal
and al,0DFh
cmp al,50h ; 'P'
je loc_43 ; Jump if equal
cmp al,52h ; 'R'
je loc_47 ; Jump if equal
cmp al,45h ; 'E'
je loc_48 ; Jump if equal
cmp al,53h ; 'S'
je loc_44 ; Jump if equal
cmp al,46h ; 'F'
je loc_45 ; Jump if equal
cmp al,54h ; 'T'
je loc_46 ; Jump if equal
call sub_11
jmp short loc_42
loc_43:
jmp loc_137
loc_44:
jmp short loc_55
db 90h
loc_45:
jmp loc_145
loc_46:
jmp loc_149
loc_47:
jmp loc_151
loc_48:
jmp loc_154
loc_49:
mov al,3
mul data_107 ; ax = data * al
add ax,offset loc_43
jmp ax ;*Register jump
loc_50:
mov data_112,1Fh
call sub_27
cmp data_107,0
je loc_52 ; Jump if equal
dec data_107
sub data_110,3
loc_51:
mov data_112,70h ; 'p'
call sub_27
jmp short loc_42
loc_52:
mov data_107,5
mov data_110,15h
jmp short loc_51
loc_53:
mov data_112,1Fh
call sub_27
cmp data_107,5
je loc_54 ; Jump if equal
inc data_107
add data_110,3
jmp short loc_51
loc_54:
mov data_107,0
mov data_110,6
jmp short loc_51
loc_55:
call sub_19
mov data_190,3120h
cmp data_28,1
jne loc_56 ; Jump if not equal
mov data_29,0
jmp short loc_60
db 90h
loc_56:
mov dh,0Dh
mov dl,18h
mov si,232h
call sub_14
call sub_13
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,1Bh
jne loc_57 ; Jump if not equal
jmp loc_41
loc_57:
cmp al,0Dh
je loc_60 ; Jump if equal
and al,0DFh
sub al,41h ; 'A'
jge loc_59 ; Jump if > or =
loc_58:
call sub_11
jmp short loc_55
loc_59:
cmp al,data_28
jge loc_58 ; Jump if > or =
mov data_29,al
add al,41h ; 'A'
mov byte ptr ds:[24Eh],al ; ('A')
mov data_183,al
mov data_188,al
loc_60:
call sub_19
call sub_37
test byte ptr [bx],1
jz loc_63 ; Jump if zero
mov dh,10h
mov dl,14h
test byte ptr [bx],2
jnz loc_61 ; Jump if not zero
mov si,251h
jmp short loc_62
db 90h
loc_61:
mov si,27Eh
loc_62:
call sub_14
call sub_13
mov al,31h ; '1'
mov data_102,al
mov al,[si-3]
mov data_103,al
mov data_89,1331h
call sub_16
and byte ptr [si-3],0FEh
or [si-3],al
xor al,1
xor data_31,ax
loc_63:
mov ax,data_31
call sub_39
loc_64:
call sub_20
mov dh,0Bh
mov dl,14h
mov si,2ABh
call sub_14
call sub_38
cmp data_101,0
je loc_69 ; Jump if equal
mov ax,word ptr ds:[137h]
mov bx,ax
cmp data_101,1
jne loc_65 ; Jump if not equal
xchg bh,bl
xor bl,bl ; Zero register
sub al,30h ; '0'
jmp short loc_67
db 90h
loc_65:
sub al,27h ; '''
cmp al,0Ah
jg loc_64 ; Jump if >
jz loc_66 ; Jump if zero
xor al,al ; Zero register
loc_66:
sub ah,30h ; '0'
add al,ah
cmp al,0Bh
jg loc_64 ; Jump if >
loc_67:
cmp al,0
je loc_64 ; Jump if equal
mov data_96,al
or bl,20h ; ' '
cmp bl,30h ; '0'
jne loc_68 ; Jump if not equal
mov bl,20h ; ' '
loc_68:
mov data_191,bx
mov data_182,bx
loc_69:
mov data_100,0F5h
mov data_95,0
mov data_99,0
call sub_20
mov dh,0Ah
mov dl,18h
mov si,2DAh
call sub_14
mov dh,0Ch
mov dl,13h
mov si,2FBh
call sub_14
call sub_13
loc_70:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,0Dh
je loc_72 ; Jump if equal
cmp al,1Bh
jne loc_71 ; Jump if not equal
jmp loc_41
loc_71:
call sub_11
jmp short loc_70
loc_72:
mov data_82,1525h
cli ; Disable interrupts
pushf ; Push flags
push cs
mov ax,201h
mov bx,28E9h
mov cx,1
mov dl,data_29
xor dh,dh ; Zero register
call sub_6
jnc loc_78 ; Jump if carry=0
clc ; Clear carry flag
test ah,80h
jz loc_78 ; Jump if zero
call sub_11
xor cx,cx ; Zero register
locloop_73:
loop locloop_73 ; Loop if cx > 0
call sub_11
call sub_56
call sub_20
mov dh,0Ah
mov dl,20h ; ' '
mov si,3DAh
call sub_14
loc_74:
mov dh,0Eh
mov dl,20h ; ' '
mov si,40Fh
call sub_14
call sub_13
loc_75:
mov ah,0
int 16h ; Keyboard i/o ah=function 00h
; get keybd char in al, ah=scan
cmp al,1Bh
je loc_77 ; Jump if equal
and al,0DFh
cmp al,52h ; 'R'
jne loc_76 ; Jump if not equal
jmp data_82
loc_76:
cmp al,41h ; 'A'
je loc_77 ; Jump if equal
call sub_11
jmp short loc_75
loc_77:
jmp loc_135
loc_78:
call sub_24
call sub_61
or byte ptr ds:[22Eh],80h
cli ; Disable interrupts
call sub_7
loc_79:
call sub_52
call sub_60
mov data_82,1596h
call sub_64
test data_73,0C0h
jz loc_80 ; Jump if zero
call sub_64
test data_73,0C0h
jz loc_80 ; Jump if zero
jmp loc_123
loc_80:
call sub_74
test data_73,0C0h
jz loc_81 ; Jump if zero
jmp short loc_83
db 90h
loc_81:
cmp byte ptr ds:[230h],0
je loc_82 ; Jump if equal
mov ax,word ptr ds:[243Dh]
cmp data_218,ax
jne loc_82 ; Jump if not equal
mov ax,word ptr ds:[243Fh]
cmp data_219,ax
jne loc_82 ; Jump if not equal
jmp loc_117
loc_82:
cmp byte ptr data_214,0EBh
jne loc_83 ; Jump if not equal
cmp data_217,200h
jne loc_83 ; Jump if not equal
mov data_84,1626h
jmp short loc_84
db 90h
loc_83:
mov data_84,1623h
loc_84:
call sub_77
jnc loc_85 ; Jump if carry=0
jmp loc_123
loc_85:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -