?? romdata.asm
字號:
seg000 SEGMENT
ASSUME CS:seg000
PUSH BP
stosb
PUSH CS
; Attributes: thunk
sub_3 PROC NEAR
JMP NEAR PTR sub_1B83
sub_3 ENDP
DB 53h ; S
DB 59h ; Y
DB 53h ; S
DB 20h
DB 53h ; S
DB 48h ; H
DB 49h ; I
DB 45h ; E
DB 4Ch ; L
DB 44h ; D
DB 20h
DB 52h ; R
DB 56h ; V
DB 31h ; 1
DB 20h
DB 5Ch ; \
DB 53h ; S
DB 59h ; Y
DB 53h ; S
DB 4Ch ; L
DB 44h ; D
DB 52h ; R
DB 0
unk_1D DB 50h ; P
DB 72h ; r
DB 65h ; e
dword_20 DD 43207373h
DB 54h ; T
DB 52h ; R
DB 4Ch ; L
DB 20h
DB 2Bh ; +
DB 20h
DB 46h ; F
DB 38h ; 8
DB 20h
DB 6Bh ; k
DB 65h ; e
DB 79h ; y
DB 20h
DB 74h ; t
DB 6Fh ; o
DB 20h
DB 41h ; A
DB 59h ; Y
DB 43h ; C
DB 4Ch ; L
DB 4Fh ; O
DB 4Eh ; N
DB 45h ; E
DB 2Eh ; .
DB 0Dh
DB 0Ah
DB 0
DB 54h ; T
unk_40 DB 68h ; h
DB 65h ; e
DB 20h
DB 48h ; H
DB 50h ; P
DB 41h ; A
DB 31h ; 1
DB 20h
DB 70h ; p
DB 6Fh ; o
DB 73h ; s
DB 69h ; i
unk_4C DB 74h ; t
DB 69h ; i
DB 6Fh ; o
DB 6Eh ; n
DB 20h
DB 6Fh ; o
DB 72h ; r
DB 20h
DB 73h ; s
DB 65h ; e
DB 63h ; c
DB 74h ; t
unk_58 DB 6Fh ; o
DB 72h ; r
DB 73h ; s
DB 20h
DB 70h ; p
DB 65h ; e
DB 72h ; r
DB 20h
DB 63h ; c
DB 79h ; y
DB 6Ch ; l
DB 69h ; i
dword_64 DD 7265646Eh
DB 20h
DB 77h ; w
DB 61h ; a
DB 73h ; s
DB 20h
DB 63h ; c
DB 68h ; h
DB 61h ; a
DB 6Eh ; n
DB 67h ; g
DB 65h ; e
DB 64h ; d
DB 21h ; !
DB 0Dh
DB 0Ah
DB 0
DB 43h ; C
DB 6Fh ; o
DB 75h ; u
DB 6Ch ; l
DB 64h ; d
DB 20h
DB 6Eh ; n
DB 6Fh ; o
DB 74h ; t
DB 20h
DB 66h ; f
DB 69h ; i
DB 6Eh ; n
DB 64h ; d
DB 20h
DB 48h ; H
DB 50h ; P
DB 41h ; A
DB 31h ; 1
DB 21h ; !
DB 0Dh
DB 0Ah
DB 0
DB 90h ; ?word_90 DW 0
word_92 DW 0
DB 0FFh
DB 0FFh
dword_96 DD 0
DB 0
DB 0
DB 0
DB 0
dword_9E DD 0
dword_A2 DD 0
dword_A6 DD 0
word_AA DW 0
byte_AC DB 0
byte_AD DB 0
byte_AE DB 0
DB 0
DB 0
byte_B1 DB 0
word_B2 DW 0
word_B4 DW 0
dword_B6 DD 0
dword_BA DD 0
dword_BE DD 0
dword_C2 DD 0
dword_C6 DD 0
dword_CA DD 0
dword_CE DD 0
dword_D2 DD 0
word_D6 DW 0
byte_D8 DB 0
byte_D9 DB 0
word_DA DW 0
word_DC DW 0
dword_DE DD 0
dword_E2 DD 0
dword_E6 DD 0
word_EA DW 0
byte_EC DB 0
byte_ED DB 0
byte_EE DB 80h
byte_EF DB 0
byte_F0 DB 10h
DB 0
word_F2 DW 0
dword_F4 DD 0
dword_F8 DD 0
dword_FC DD 0
DB 1Ah
DB 0
word_102 DW 0
dword_104 DD 0
dword_108 DD 0
dword_10C DD 0
dword_110 DD 0
DB 0
DB 0
DB 0
DB 0
DB 0
DB 0
sub_11A PROC NEAR
PUSH BX
PUSH CX
PUSH DX
PUSH ES
PUSH DS
MOV AH, 11h
INT 16h ; KEYBOARD - CHECK ENHANCED KEYSTROKE (AT model 339,XT2,XT286,PS)
; Return: ZF clear if keystroke available
; AH = scan code \ meaningless if ZF = 1
; AL = character /
; ZF set if kbd buffer empty
JNZ SHORT loc_129
SUB AX, AX
JMP SHORT loc_12E
loc_129:
MOV AX, 10h
INT 16h ; KEYBOARD - READ CHAR FROM BUFFER, WAIT IF EMPTY
; Return: AH = scan code, AL = character
loc_12E:
POP DS
POP ES
POP DX
POP CX
POP BX
retn
sub_11A ENDP
; Attributes: bp-based frame
sub_134 PROC NEAR
arg_0= WORD PTR 4
PUSH BP
MOV BP, SP
PUSH AX
PUSH BX
PUSH ES
STI
XOR AX, AX
MOV ES, AX
MOV AX, ES:word_46C
loc_143:
MOV BX, ES:word_46C
SUB BX, AX
CMP BX, [BP+arg_0]
JNB SHORT loc_151
JMP SHORT loc_143
loc_151:
POP ES
POP BX
POP AX
POP BP
retn
sub_134 ENDP
; Attributes: bp-based frame
sub_156 PROC NEAR
arg_0= dword PTR 4
arg_4= dword PTR 8
arg_8= WORD PTR 0Ch
PUSH BP
loc_157:
MOV BP, SP
PUSH CX
PUSH SI
PUSH DI
loc_15C:
PUSH ES
PUSH DS
loc_15E:
LES DI, [BP+arg_0]
LDS SI, [BP+arg_4]
MOV CX, [BP+arg_8]
CLD
loc_168:
cmpsb
JNZ SHORT loc_16D
LOOP loc_168
loc_16D:
OR CX, CX
JNZ SHORT loc_175
SUB AX, AX
JMP SHORT loc_186
loc_175:
DEC SI
DEC DI
MOV AL, ES:[DI]
CMP AL, [SI]
JBE SHORT loc_183
MOV AX, 1
JMP SHORT loc_186
loc_183:
MOV AX, 0FFFFh
loc_186:
POP DS
POP ES
POP DI
POP SI
POP CX
POP BP
retn
sub_156 ENDP
; Attributes: bp-based frame
sub_18D PROC NEAR
arg_0= dword PTR 4
arg_4= dword PTR 8
arg_8= dword PTR 0Ch
PUSH BP
MOV BP, SP
PUSH EAX
PUSH ECX
PUSH ESI
PUSH EDI
PUSH DS
PUSH ES
SUB ESI, ESI
SUB EDI, EDI
SUB ECX, ECX
LES DI, [BP+arg_0]
LDS SI, [BP+arg_4]
MOV ECX, [BP+arg_8]
MOV AX, CX
SHR ECX, 2
CLD
REP movsd
MOV CX, AX
AND CX, 3
CLD
REP movsb
POP ES
POP DS
POP EDI
POP ESI
POP ECX
POP EAX
POP BP
retn
sub_18D ENDP
sub_1CB PROC NEAR
MOV AH, 10h
INT 16h ; KEYBOARD - GET ENHANCED KEYSTROKE (AT model 339,XT2,XT286,PS)
; Return: AH = scan code, AL = character
retn
sub_1CB ENDP
; Attributes: bp-based frame
sub_1D0 PROC NEAR
arg_0= dword PTR 4
arg_4= dword PTR 8
arg_8= WORD PTR 0Ch
PUSH BP
MOV BP, SP
PUSH EAX
PUSH BX
PUSH CX
PUSH DX
PUSH ES
MOV EAX, [BP+arg_0]
MOV CX, [BP+arg_8]
loc_1E0:
MOV DX, AX
SHR EAX, 4
AND DX, 0Fh
CMP DL, 0Ah
JB SHORT loc_1F3
ADD DL, 37h ; '7'
JMP SHORT loc_1F6
loc_1F3:
ADD DL, 30h ; '0'
loc_1F6:
PUSH DX
LOOP loc_1E0
LES BX, [BP+arg_4]
MOV CX, [BP+arg_8]
loc_1FF:
POP AX
MOV ES:[BX], AL
INC BX
LOOP loc_1FF
POP ES
POP DX
POP CX
POP BX
POP EAX
POP BP
retn
sub_1D0 ENDP ; sp-analysis failed
; Attributes: bp-based frame
sub_20E PROC NEAR
arg_0= dword PTR 4
PUSH BP
MOV BP, SP
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH ES
PUSH DS
MOV AH, 3
SUB BX, BX
INT 10h ; - VIDEO - READ CURSOR POSITION
; BH = page number
; Return: DH,DL = row,column, CH = cursor start line, CL = cursor end line
LES BX, [BP+arg_0]
SUB CX, CX
loc_222:
CMP BYTE PTR ES:[BX], 0
JZ SHORT loc_22C
INC CX
INC BX
JMP SHORT loc_222
loc_22C:
PUSH BP
MOV AX, 1301h
MOV BX, 7
MOV BP, WORD PTR [BP+arg_0]
INT 10h ; - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA)
; AL = mode, BL = attribute if AL bit 1 clear, BH = display page number
; DH,DL = row,column of starting cursor position, CX = length of string
; ES:BP -> start of string
POP BP
POP DS
POP ES
POP DX
POP CX
POP BX
POP AX
POP BP
retn
sub_20E ENDP
PUSH BP
MOV BP, SP
ADD SP, 0FFE0h
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
LEA BX, [BP-20h]
INC BX
PUSH 8
PUSH SS
PUSH BX
PUSH large dword PTR [BP+4]
CALL sub_1D0
ADD SP, 0Ah
MOV BYTE PTR [BP-20h], 20h ; ' '
MOV BYTE PTR [BP-17h], 0Dh
MOV BYTE PTR [BP-16h], 0Ah
MOV BYTE PTR [BP-15h], 0
LEA BX, [BP-20h]
PUSH SS
PUSH BX
CALL sub_20E
ADD SP, 4
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
MOV SP, BP
POP BP
retn
PUSH BP
MOV BP, SP
ADD SP, 0FFE0h
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
LEA BX, [BP-20h]
INC BX
PUSH 8
PUSH SS
PUSH BX
PUSH large dword PTR [BP+4]
CALL sub_1D0
ADD SP, 0Ah
MOV BYTE PTR [BP-20h], 20h ; ' '
MOV BYTE PTR [BP-17h], 0
LEA BX, [BP-20h]
PUSH SS
PUSH BX
CALL sub_20E
ADD SP, 4
POP DI
POP SI
POP DX
POP CX
POP BX
POP AX
MOV SP, BP
POP BP
retn
PUSH BP
MOV BP, SP
ADD SP, 0FFF0h
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
PUSH SI
PUSH DI
LEA DI, [BP-10h]
LEA SI, [BP+4]
ADD SI, 3
MOV CX, 4
loc_2DB:
MOV AL, SS:[SI]
OR AL, AL
JZ SHORT loc_2E6
MOV SS:[DI], AL
INC DI
loc_2E6:
DEC SI
LOOP loc_2DB
LEA SI, [BP+8]
ADD SI, 3
MOV CX, 4
loc_2F2:
MOV AL, SS:[SI]
OR AL, AL
JZ SHORT loc_2FD
MOV SS:[DI], AL
INC DI
loc_2FD:
DEC SI
LOOP loc_2F2
MOV BYTE PTR SS:[DI], 20h ; ' '
MOV BYTE PTR SS:[DI+1], 0Dh
MOV BYTE PTR SS:[DI+2], 0Ah
MOV BYTE PTR SS:[DI+3], 0
LEA DI, [BP-10h]
PUSH SS
PUSH DI
CALL sub_20E
ADD SP, 4
POP DI
POP SI
POP EDX
POP ECX
POP EBX
POP EAX
MOV SP, BP
POP BP
retn
PUSH BP
MOV BP, SP
ADD SP, 0FFF0h
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX
PUSH SI
PUSH DI
LEA DI, [BP-10h]
LEA SI, [BP+4]
ADD SI, 3
MOV CX, 4
loc_348:
MOV AL, SS:[SI]
OR AL, AL
JZ SHORT loc_353
MOV SS:[DI], AL
INC DI
loc_353:
DEC SI
LOOP loc_348
LEA SI, [BP+8]
ADD SI, 3
MOV CX, 4
loc_35F:
MOV AL, SS:[SI]
OR AL, AL
JZ SHORT loc_36A
MOV SS:[DI], AL
INC DI
loc_36A:
DEC SI
LOOP loc_35F
MOV BYTE PTR SS:[DI], 0
MOV BYTE PTR SS:[DI+1], 0
LEA DI, [BP-10h]
PUSH SS
PUSH DI
CALL sub_20E
ADD SP, 4
POP DI
POP SI
POP EDX
POP ECX
POP EBX
POP EAX
MOV SP, BP
POP BP
retn
; Attributes: bp-based frame
sub_38F PROC NEAR
arg_0= dword PTR 4
arg_4= WORD PTR 8
arg_6= BYTE PTR 0Ah
PUSH BP
MOV BP, SP
PUSH BX
PUSH CX
MOV AX, [BP+arg_4]
MOV BX, DS:word_DA
MUL BX
movzx BX, [BP+arg_6]
ADD BX, AX
MOV EAX, [BP+arg_0]
MOV ECX, DS:dword_E2
MUL ECX
MOV EDX, EAX
movzx EAX, BX
ADD EAX, EDX
DEC EAX
MOV EDX, EAX
SHR EDX, 10h
POP CX
POP BX
POP BP
retn
sub_38F ENDP
; Attributes: bp-based frame
sub_3C6 PROC NEAR
var_6= BYTE PTR -6
var_5= BYTE PTR -5
var_4= dword PTR -4
arg_0= dword PTR 4
PUSH BP
MOV BP, SP
ADD SP, 0FFFAh
PUSH BX
MOV EAX, [BP+arg_0]
XOR EDX, EDX
MOV EBX, DS:dword_E2
DIV EBX
MOV [BP+var_4], EAX
MOV AX, DX
MOV BL, BYTE PTR DS:word_DA
DIV BL
MOV [BP+var_5], AL
INC AH
MOV [BP+var_6], AH
MOV ECX, [BP+var_4]
MOV DH, [BP+var_5]
MOV DL, [BP+var_6]
XOR EAX, EAX
MOV AL, BYTE PTR DS:word_DA
SUB AL, DL
INC AL
POP BX
MOV SP, BP
POP BP
retn
sub_3C6 ENDP
loc_409:
PUSH BP
MOV BP, SP
PUSH BX
PUSH CX
PUSH DX
PUSH SI
PUSH DI
PUSH ES
PUSH DS
CMP dword PTR [BP+8], 3FFh
JNB SHORT loc_445
LES BX, [BP+12h]
MOV CX, [BP+8]
MOV DL, [BP+0Eh]
XCHG CL, CH
SHL CL, 6
AND DL, 3Fh
OR CL, DL
MOV DL, [BP+6]
MOV DH, [BP+0Ch]
MOV AX, [BP+10h]
MOV AH, [BP+4]
AND AH, 0Fh
INT 13h ; DISK -
JNB SHORT loc_484
JMP SHORT loc_482
loc_445:
MOV DS:byte_F0, 10h
MOV AX, [BP+10h]
MOV DS:word_F2, AX
MOV EAX, [BP+12h]
MOV DS:dword_F4, EAX
MOV AL, [BP+0Eh]
PUSH AX
MOV AL, [BP+0Ch]
XOR AH, AH
PUSH AX
PUSH large dword PTR [BP+8]
CALL sub_38F
ADD SP, 8
word_46C DW 0A366h
CLC
ADD [BP+SI+656h], CL
MOV SI, 0F0h ; '?
XOR AX, AX
MOV AH, [BP+4]
OR AH, 40h
INT 13h ; DISK -
JNB SHORT loc_484
loc_482:
JMP SHORT loc_486
loc_484:
SUB AX, AX
loc_486:
POP DS
POP ES
POP DI
POP SI
POP DX
POP CX
POP BX
POP BP
retn
; Attributes: bp-based frame
sub_48F PROC NEAR
arg_0= WORD PTR 4
PUSH BP
MOV BP, SP
PUSH AX
PUSH BX
PUSH CX
PUSH ES
XOR AX, AX
MOV ES, AX
MOV AX, ES:word_46C
ADD AX, [BP+arg_0]
MOV CX, AX
loc_4A3:
MOV BX, ES:word_46C
CMP BX, CX
JA SHORT loc_4AE
JMP SHORT loc_4A3
loc_4AE:
POP ES
POP CX
POP BX
POP AX
POP BP
retn
sub_48F ENDP
sub_4B4 PROC NEAR
PUSH AX
PUSH DX
PUSH ES
SUB AX, AX
MOV DX, 80h ; '
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -