mirror of https://github.com/nmlgc/ReC98.git
11341 lines
197 KiB
NASM
11341 lines
197 KiB
NASM
;
|
||
; +-------------------------------------------------------------------------+
|
||
; | This file has been generated by The Interactive Disassembler (IDA) |
|
||
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
|
||
; +-------------------------------------------------------------------------+
|
||
;
|
||
; Input MD5 : 661F4F8FFAF1F3274F503D154133DEF0
|
||
|
||
; File Name : th03/OP.EXE
|
||
; Format : MS-DOS executable (EXE)
|
||
; Base Address: 0h Range: 0h-FD80h Loaded length: E97Ah
|
||
; Entry Point : 0:0
|
||
; OS type : MS DOS
|
||
; Application type: Executable 16bit
|
||
|
||
.386
|
||
.model large
|
||
|
||
include ReC98.inc
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
seg000 segment word public 'CODE' use16
|
||
assume cs:seg000
|
||
assume es:nothing, ss:seg005, ds:dseg, fs:nothing, gs:nothing
|
||
|
||
include libs/BorlandC/c0.asm
|
||
db 0
|
||
include libs/master.lib/bfnt_entry_pat.asm
|
||
include libs/master.lib/bfnt_extend_header_skip.asm
|
||
include libs/master.lib/bfnt_header_read.asm
|
||
include libs/master.lib/bfnt_header_analysis.asm
|
||
include libs/master.lib/bcloser.asm
|
||
include libs/master.lib/bfill.asm
|
||
include libs/master.lib/bfnt_palette_set.asm
|
||
include libs/master.lib/bgetc.asm
|
||
include libs/master.lib/palette_black_out.asm
|
||
include libs/master.lib/bopenr.asm
|
||
include libs/master.lib/bread.asm
|
||
include libs/master.lib/bseek.asm
|
||
include libs/master.lib/bseek_.asm
|
||
include libs/master.lib/dos_axdx.asm
|
||
include libs/master.lib/dos_keyclear.asm
|
||
include libs/master.lib/dos_puts2.asm
|
||
include libs/master.lib/dos_setvect.asm
|
||
include libs/master.lib/egc.asm
|
||
include libs/master.lib/egc_shift_left_all.asm
|
||
include libs/master.lib/file_append.asm
|
||
include libs/master.lib/file_close.asm
|
||
include libs/master.lib/file_create.asm
|
||
include libs/master.lib/file_exist.asm
|
||
include libs/master.lib/file_read.asm
|
||
include libs/master.lib/file_ropen.asm
|
||
include libs/master.lib/file_seek.asm
|
||
include libs/master.lib/file_write.asm
|
||
include libs/master.lib/dos_close.asm
|
||
include libs/master.lib/dos_ropen.asm
|
||
include libs/master.lib/grcg_boxfill.asm
|
||
include libs/master.lib/grcg_byteboxfill_x.asm
|
||
include libs/master.lib/grcg_polygon_c.asm
|
||
include libs/master.lib/grcg_pset.asm
|
||
include libs/master.lib/grcg_setcolor.asm
|
||
include libs/master.lib/gaiji_backup.asm
|
||
include libs/master.lib/gaiji_entry_bfnt.asm
|
||
include libs/master.lib/gaiji_putsa.asm
|
||
include libs/master.lib/gaiji_read.asm
|
||
include libs/master.lib/gaiji_write.asm
|
||
include libs/master.lib/graph_400line.asm
|
||
include libs/master.lib/graph_clear.asm
|
||
include libs/master.lib/graph_copy_page.asm
|
||
include libs/master.lib/graph_extmode.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_1232 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
arg_2 = dword ptr 8
|
||
arg_6 = word ptr 0Ch
|
||
arg_8 = word ptr 0Eh
|
||
arg_A = word ptr 10h
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
push ds
|
||
mov es, graph_VramSeg
|
||
assume es:nothing
|
||
mov cx, [bp+arg_A]
|
||
mov di, [bp+arg_8]
|
||
mov bx, [bp+arg_6]
|
||
lds si, [bp+arg_2]
|
||
mov dx, [bp+arg_0]
|
||
mov bp, bx
|
||
mov ax, di
|
||
shl ax, 2
|
||
add di, ax
|
||
shl di, 4
|
||
mov al, 0C0h ; '<27>'
|
||
pushf
|
||
cli
|
||
out 7Ch, al
|
||
popf
|
||
shr dx, 1
|
||
sbb al, al
|
||
out 7Eh, al
|
||
shr dx, 1
|
||
sbb al, al
|
||
out 7Eh, al
|
||
shr dx, 1
|
||
sbb al, al
|
||
out 7Eh, al
|
||
shr dx, 1
|
||
sbb al, al
|
||
out 7Eh, al
|
||
mov al, 0Bh
|
||
out 68h, al
|
||
|
||
loc_127A:
|
||
lodsb
|
||
or al, al
|
||
jz short loc_12CC
|
||
mov ah, 0
|
||
adc ax, 5680h
|
||
and ax, 0FF7Fh
|
||
mov bx, cx
|
||
and cx, 7
|
||
shr bx, 3
|
||
add di, bx
|
||
out 0A1h, al ; Interrupt Controller #2, 8259A
|
||
mov al, ah
|
||
out 0A3h, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 10h
|
||
xor ch, ch
|
||
|
||
loc_129C:
|
||
mov al, ch
|
||
or al, 20h
|
||
out 0A5h, al ; Interrupt Controller #2, 8259A
|
||
in al, 0A9h ; Interrupt Controller #2, 8259A
|
||
mov ah, al
|
||
mov al, ch
|
||
out 0A5h, al ; Interrupt Controller #2, 8259A
|
||
in al, 0A9h ; Interrupt Controller #2, 8259A
|
||
mov bh, al
|
||
mov bl, 0
|
||
shr ax, cl
|
||
shr bx, cl
|
||
xchg al, ah
|
||
stosw
|
||
mov es:[di], bl
|
||
add di, 4Eh ; 'N'
|
||
inc ch
|
||
dec dx
|
||
jnz short loc_129C
|
||
sub di, 500h
|
||
xor ch, ch
|
||
add cx, bp
|
||
jmp short loc_127A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_12CC:
|
||
mov al, 0Ah
|
||
out 68h, al
|
||
xor al, al
|
||
out 7Ch, al
|
||
pop ds
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf 0Ch
|
||
sub_1232 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
include libs/master.lib/graph_pi_free.asm
|
||
include libs/master.lib/graph_pi_load_pack.asm
|
||
include libs/master.lib/graph_pack_put_8.asm
|
||
include libs/master.lib/graph_show.asm
|
||
include libs/master.lib/graph_start.asm
|
||
include libs/master.lib/js_end.asm
|
||
include libs/master.lib/keybeep.asm
|
||
include libs/master.lib/make_linework.asm
|
||
include libs/master.lib/palette_init.asm
|
||
include libs/master.lib/palette_show.asm
|
||
include libs/master.lib/pfclose.asm
|
||
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
mov es, word ptr [bp+6]
|
||
call word ptr es:2
|
||
pop bp
|
||
retf 2
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
cmp word ptr es:1Ah, 0
|
||
jz short loc_1BF6
|
||
dec word ptr es:1Ah
|
||
add word ptr es:12h, 1
|
||
adc word ptr es:14h, 0
|
||
mov ax, es:1Ch
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_1BF6:
|
||
call word ptr es:4
|
||
test ah, ah
|
||
jnz short locret_1C25
|
||
cmp ax, es:1Ch
|
||
mov es:1Ch, ax
|
||
jnz short locret_1C25
|
||
push ax
|
||
call word ptr es:4
|
||
test ah, ah
|
||
jnz short loc_1C24
|
||
mov es:1Ah, ax
|
||
sub word ptr es:12h, 1
|
||
sbb word ptr es:14h, 0
|
||
|
||
loc_1C24:
|
||
pop ax
|
||
|
||
locret_1C25:
|
||
retn
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_1C26 proc near
|
||
mov ax, es:0Ah
|
||
mov dx, es:0Ch
|
||
cmp dx, es:8
|
||
jb short loc_1C43
|
||
ja short loc_1C3F
|
||
cmp ax, es:6
|
||
jb short loc_1C43
|
||
|
||
loc_1C3F:
|
||
mov ax, 0FFFFh
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_1C43:
|
||
add ax, 1
|
||
adc dx, 0
|
||
mov es:0Ah, ax
|
||
mov es:0Ch, dx
|
||
add word ptr es:12h, 1
|
||
adc word ptr es:14h, 0
|
||
push es
|
||
push word ptr es:0
|
||
call bgetc
|
||
pop es
|
||
retn
|
||
sub_1C26 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_1C6A proc near
|
||
call sub_1C26
|
||
or ah, ah
|
||
jnz short locret_1C76
|
||
xor al, es:1Eh
|
||
|
||
locret_1C76:
|
||
retn
|
||
sub_1C6A endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
|
||
include libs/master.lib/pfread.asm
|
||
include libs/master.lib/pfrewind.asm
|
||
include libs/master.lib/pfseek.asm
|
||
include libs/master.lib/random.asm
|
||
include libs/master.lib/palette_entry_rgb.asm
|
||
include libs/master.lib/rottbl.asm
|
||
include libs/master.lib/smem_release.asm
|
||
include libs/master.lib/smem_wget.asm
|
||
include libs/master.lib/soundio.asm
|
||
include libs/BorlandC/text_clear.asm
|
||
include libs/BorlandC/txesc.asm
|
||
db 0
|
||
include libs/master.lib/text_putsa.asm
|
||
include libs/master.lib/vsync.asm
|
||
include libs/master.lib/vsync_wait.asm
|
||
include libs/master.lib/palette_white_in.asm
|
||
include libs/master.lib/hmem_lallocate.asm
|
||
include libs/master.lib/mem_assign_dos.asm
|
||
include libs/master.lib/mem_assign.asm
|
||
include libs/master.lib/memheap.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2676 proc far
|
||
cmp mem_TopSeg, 0
|
||
jz short loc_2691
|
||
mov ax, mem_TopSeg
|
||
mov es, ax
|
||
xor ax, ax
|
||
cmp mem_MyOwn, ax
|
||
mov mem_TopSeg, ax
|
||
jz short loc_2691
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
|
||
loc_2691:
|
||
mov ax, 1
|
||
retf
|
||
sub_2676 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
xor ax, ax
|
||
stc
|
||
retf
|
||
|
||
include libs/master.lib/super_free.asm
|
||
include libs/master.lib/super_entry_pat.asm
|
||
include libs/master.lib/super_entry_at.asm
|
||
include libs/master.lib/super_entry_bfnt.asm
|
||
include libs/master.lib/super_cancel_pat.asm
|
||
include libs/master.lib/super_put.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2A8A proc far
|
||
push si
|
||
push di
|
||
mov ah, 52h
|
||
int 21h ; DOS - 2+ internal - GET LIST OF LISTS
|
||
; Return: ES:BX -> DOS list of lists
|
||
cld
|
||
mov bx, es:[bx-2]
|
||
|
||
loc_2A95:
|
||
mov es, bx
|
||
assume es:nothing
|
||
inc bx
|
||
mov ax, es:1
|
||
or ax, ax
|
||
jz short loc_2AAD
|
||
mov di, 10h
|
||
mov cx, 0Ah
|
||
mov si, 5DEh
|
||
repe cmpsb
|
||
jz short loc_2ABE
|
||
|
||
loc_2AAD:
|
||
mov ax, es:3
|
||
add bx, ax
|
||
mov al, es:0
|
||
cmp al, 4Dh ; 'M'
|
||
jz short loc_2A95
|
||
mov bx, 0
|
||
|
||
loc_2ABE:
|
||
mov ax, bx
|
||
mov ResPalSeg, ax
|
||
pop di
|
||
pop si
|
||
retf
|
||
sub_2A8A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2AC6 proc far
|
||
push si
|
||
push di
|
||
nop
|
||
push cs
|
||
call near ptr sub_2A8A
|
||
or ax, ax
|
||
mov ax, 2
|
||
jnz short loc_2B38
|
||
mov ax, 5800h
|
||
int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY
|
||
; AL = function code: get allocation strategy
|
||
mov dx, ax
|
||
mov ax, 5801h
|
||
mov bx, 1
|
||
int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY
|
||
; AL = function code: set allocation strategy
|
||
mov ah, 48h ; 'H'
|
||
mov bx, 4
|
||
int 21h ; DOS - 2+ - ALLOCATE MEMORY
|
||
; BX = number of 16-byte paragraphs desired
|
||
mov cx, 0
|
||
jb short loc_2B2F
|
||
mov bx, cs
|
||
cmp bx, ax
|
||
jnb short loc_2B0A
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
mov ax, 5801h
|
||
mov bx, 2
|
||
int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY
|
||
; AL = function code: set allocation strategy
|
||
mov ah, 48h ; 'H'
|
||
mov bx, 4
|
||
int 21h ; DOS - 2+ - ALLOCATE MEMORY
|
||
; BX = number of 16-byte paragraphs desired
|
||
|
||
loc_2B0A:
|
||
mov cx, ax
|
||
mov ResPalSeg, ax
|
||
dec cx
|
||
mov es, cx
|
||
assume es:nothing
|
||
mov ax, 0FFFFh
|
||
mov es:1, ax
|
||
inc cx
|
||
mov es, cx
|
||
assume es:nothing
|
||
cld
|
||
xor di, di
|
||
mov si, 5DEh
|
||
mov cx, 0Ah
|
||
rep movsb
|
||
xor ax, ax
|
||
stosw
|
||
stosw
|
||
stosw
|
||
mov cx, 1
|
||
|
||
loc_2B2F:
|
||
mov ax, 5801h
|
||
mov bx, dx
|
||
int 21h ; DOS - 3+ - GET/SET MEMORY ALLOCATION STRATEGY
|
||
; AL = function code: set allocation strategy
|
||
mov ax, cx
|
||
|
||
loc_2B38:
|
||
pop di
|
||
pop si
|
||
retf
|
||
sub_2AC6 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2B3C proc far
|
||
mov ax, ResPalSeg
|
||
or ax, ax
|
||
jnz short loc_2B4C
|
||
nop
|
||
push cs
|
||
call near ptr sub_2A8A
|
||
or ax, ax
|
||
jnz short locret_2B58
|
||
|
||
loc_2B4C:
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
mov ResPalSeg, 0
|
||
|
||
locret_2B58:
|
||
retf
|
||
sub_2B3C endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
; ---------------------------------------------------------------------------
|
||
dword_2B5A dd 0
|
||
byte_2B5E db 0
|
||
db 90h ; <20>
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_2B60 proc far
|
||
|
||
arg_0 = dword ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
cld
|
||
mov ax, word ptr cs:dword_2B5A
|
||
or ax, word ptr cs:dword_2B5A+2
|
||
jz short loc_2B72
|
||
jmp loc_2BF3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2B72:
|
||
push di
|
||
push si
|
||
push word ptr [bp+arg_0+2]
|
||
push word ptr [bp+arg_0]
|
||
call file_ropen
|
||
push 10h
|
||
call hmem_allocbyte
|
||
mov di, ax
|
||
push ax
|
||
push 0
|
||
push 10h
|
||
call file_read
|
||
mov ax, di
|
||
mov es, ax
|
||
mov di, es:0
|
||
mov si, es:6
|
||
push ax
|
||
call hmem_free
|
||
push di
|
||
call hmem_allocbyte
|
||
mov word_F290, ax
|
||
push ax
|
||
push 0
|
||
push di
|
||
call file_read
|
||
call file_close
|
||
mov cx, di
|
||
mov ax, word_F290
|
||
mov es, ax
|
||
mov ax, si
|
||
xor bx, bx
|
||
|
||
loc_2BC1:
|
||
xor es:[bx], al
|
||
sub al, es:[bx]
|
||
inc bx
|
||
loop loc_2BC1
|
||
pop si
|
||
pop di
|
||
mov ax, 3521h
|
||
int 21h ; DOS - 2+ - GET INTERRUPT VECTOR
|
||
; AL = interrupt number
|
||
; Return: ES:BX = value of interrupt vector
|
||
mov word ptr cs:dword_2B5A, bx
|
||
mov word ptr cs:dword_2B5A+2, es
|
||
mov word_F28C, 0
|
||
mov word_F28E, 0FFFFh
|
||
push ds
|
||
push cs
|
||
pop ds
|
||
assume ds:seg000
|
||
mov dx, 2C54h
|
||
mov ax, 2521h
|
||
int 21h ; DOS - SET INTERRUPT VECTOR
|
||
; AL = interrupt number
|
||
; DS:DX = new vector to be used for specified interrupt
|
||
pop ds
|
||
assume ds:dseg
|
||
|
||
loc_2BF3:
|
||
push si
|
||
push di
|
||
push ds
|
||
mov cx, 0FFFFh
|
||
mov al, 0
|
||
les di, [bp+arg_0]
|
||
repne scasb
|
||
not cx
|
||
sub di, cx
|
||
mov si, di
|
||
mov di, 1A1Ch
|
||
push ds
|
||
push es
|
||
pop ds
|
||
pop es
|
||
shr cx, 1
|
||
rep movsw
|
||
adc cx, cx
|
||
rep movsb
|
||
pop ds
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf 4
|
||
sub_2B60 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2C1C proc far
|
||
mov ax, word ptr cs:dword_2B5A
|
||
or ax, word ptr cs:dword_2B5A+2
|
||
jz short locret_2C53
|
||
push ds
|
||
lds dx, cs:dword_2B5A
|
||
mov ax, 2521h
|
||
int 21h ; DOS - SET INTERRUPT VECTOR
|
||
; AL = interrupt number
|
||
; DS:DX = new vector to be used for specified interrupt
|
||
pop ds
|
||
xor ax, ax
|
||
mov word ptr cs:dword_2B5A, ax
|
||
mov word ptr cs:dword_2B5A+2, ax
|
||
cmp word_F28C, ax
|
||
jz short locret_2C53
|
||
push word_F28C
|
||
call pfclose
|
||
push word_F290
|
||
call hmem_free
|
||
|
||
locret_2C53:
|
||
retf
|
||
sub_2C1C endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
cmp cs:byte_2B5E, 0
|
||
jz short loc_2C61
|
||
jmp cs:dword_2B5A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2C61:
|
||
pusha
|
||
push ds
|
||
push es
|
||
mov bp, sp
|
||
mov di, seg dseg
|
||
mov ds, di
|
||
inc cs:byte_2B5E
|
||
push word ptr [bp+18h]
|
||
popf
|
||
mov cs:byte_2CB8, ah
|
||
mov si, 2C88h
|
||
|
||
loc_2C7C:
|
||
add si, 4
|
||
cmp ah, cs:[si]
|
||
jnz short loc_2C7C
|
||
mov di, word_F28E
|
||
jmp word ptr cs:[si+2]
|
||
; ---------------------------------------------------------------------------
|
||
db 3Dh, 0, 0BCh, 2Ch, 3Eh, 0, 0F1h, 2Ch, 3Fh, 0, 0Fh, 2Dh
|
||
db 42h, 0, 23h, 2Dh, 46h, 0, 84h, 2Dh, 40h, 0, 88h, 2Dh
|
||
db 45h, 0, 88h, 2Dh, 4Ch, 0, 66h, 2Dh, 57h, 0, 88h, 2Dh
|
||
db 5Ch, 0, 88h, 2Dh, 44h, 0, 72h, 2Dh
|
||
byte_2CB8 db 0
|
||
db 0
|
||
; ---------------------------------------------------------------------------
|
||
mov word ptr [di], gs
|
||
test al, 0Fh
|
||
jz short loc_2CC3
|
||
jmp loc_2D8C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2CC3:
|
||
or di, di
|
||
js short loc_2CCA
|
||
jmp loc_2D8C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2CCA:
|
||
push ds
|
||
push offset unk_F20C
|
||
push word ptr [bp+2]
|
||
push dx
|
||
push cs
|
||
call near ptr sub_2EF2
|
||
or ax, ax
|
||
jnz short loc_2CDD
|
||
jmp loc_2D8C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2CDD:
|
||
mov word_F28C, ax
|
||
mov es, ax
|
||
mov es, word ptr es:0
|
||
mov ax, es:0
|
||
mov word_F28E, ax
|
||
jmp loc_2DA7
|
||
; ---------------------------------------------------------------------------
|
||
cmp bx, di
|
||
jz short loc_2CF8
|
||
jmp loc_2D8C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2CF8:
|
||
push word_F28C
|
||
call pfclose
|
||
mov word_F28C, 0
|
||
mov word_F28E, 0FFFFh
|
||
jmp loc_2DA7
|
||
; ---------------------------------------------------------------------------
|
||
cmp bx, di
|
||
jnz short loc_2D8C
|
||
push word ptr [bp+2]
|
||
push dx
|
||
push cx
|
||
push word_F28C
|
||
call pfread
|
||
jmp loc_2DA7
|
||
; ---------------------------------------------------------------------------
|
||
cmp bx, di
|
||
jnz short loc_2D8C
|
||
or cx, cx
|
||
jl short loc_2D9E
|
||
cmp al, 1
|
||
jz short loc_2D57
|
||
jl short loc_2D4B
|
||
mov es, word_F28C
|
||
mov dx, es:16h
|
||
mov cx, es:18h
|
||
sub dx, es:12h
|
||
sbb cx, es:14h
|
||
jmp short loc_2D57
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2D4B:
|
||
push cx
|
||
push dx
|
||
push word_F28C
|
||
call pfrewind
|
||
pop dx
|
||
pop cx
|
||
|
||
loc_2D57:
|
||
push word_F28C
|
||
push cx
|
||
push dx
|
||
call pfseek
|
||
mov [bp+0Eh], dx
|
||
jmp short loc_2DA7
|
||
; ---------------------------------------------------------------------------
|
||
db 2Eh, 0C5h, 16h, 5Ah, 2Bh, 0B8h, 21h, 25h, 0CDh, 21h
|
||
db 0EBh, 1Ah, 8Ah, 0C8h, 0B8h, 1, 0, 0D3h, 0E0h, 2Eh, 85h
|
||
db 6, 82h, 2Dh, 75h, 8, 0EBh, 0Ah, 0CFh, 14h, 8Bh, 0CFh
|
||
db 74h, 16h, 3Bh, 0DFh, 74h, 12h
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2D8C:
|
||
dec cs:byte_2B5E
|
||
push word ptr [bp+18h]
|
||
popf
|
||
pop es
|
||
pop ds
|
||
popa
|
||
cli
|
||
jmp cs:dword_2B5A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2D9E:
|
||
or byte ptr [bp+18h], 1
|
||
mov ax, 1
|
||
jmp short loc_2DAB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2DA7:
|
||
and byte ptr [bp+18h], 0FEh
|
||
|
||
loc_2DAB:
|
||
mov [bp+12h], ax
|
||
dec cs:byte_2B5E
|
||
pop es
|
||
pop ds
|
||
popa
|
||
iret
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2DB8 proc far
|
||
mov cx, 100h
|
||
mov dx, 188h
|
||
|
||
loc_2DBE:
|
||
in al, dx
|
||
inc al
|
||
jnz short loc_2DC9
|
||
loop loc_2DBE
|
||
xor ax, ax
|
||
jmp short loc_2DDD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2DC9:
|
||
pushf
|
||
cli
|
||
mov bh, 7
|
||
call sound_i
|
||
and al, 3Fh
|
||
or al, 80h
|
||
mov bl, al
|
||
call sound_o
|
||
popf
|
||
mov ax, 1
|
||
|
||
loc_2DDD:
|
||
mov word_DABC, ax
|
||
retf
|
||
sub_2DB8 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2DE2 proc near
|
||
mov bh, 0Fh
|
||
call sound_o
|
||
mov dx, 188h
|
||
mov al, 0Eh
|
||
out dx, al
|
||
inc dx
|
||
inc dx
|
||
in al, dx
|
||
not al
|
||
retn
|
||
sub_2DE2 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2DF4 proc far
|
||
push bp
|
||
push si
|
||
push di
|
||
xor bp, bp
|
||
cmp word_DABC, 0
|
||
jz short loc_2E0D
|
||
pushf
|
||
cli
|
||
mov bl, 80h ; '<27>'
|
||
call sub_2DE2
|
||
and ax, 3Fh
|
||
mov si, ax
|
||
popf
|
||
|
||
loc_2E0D:
|
||
or word_E9A4, si
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
sub_2DF4 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
xchg dx, bx
|
||
out dx, al
|
||
xchg dx, bx
|
||
in al, dx
|
||
not al
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
include libs/master.lib/draw_trapezoid.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_2EF2 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
arg_6 = word ptr 0Ch
|
||
|
||
enter 0, 0
|
||
push si
|
||
push di
|
||
mov mem_AllocID, 7
|
||
push 1Fh
|
||
call hmem_allocbyte
|
||
jb loc_2FFE
|
||
mov si, ax
|
||
push [bp+arg_6]
|
||
push [bp+arg_4]
|
||
call bopenr
|
||
or ax, ax
|
||
jz loc_2FF7
|
||
mov es, si
|
||
mov es:0, ax
|
||
mov ax, word_F290
|
||
mov fs, ax
|
||
xor ax, ax
|
||
mov di, ax
|
||
|
||
loc_2F29:
|
||
mov al, fs:[di]
|
||
mov bx, 2
|
||
or al, al
|
||
jz short loc_2F4B
|
||
mov bx, 3
|
||
add bx, di
|
||
push [bp+arg_2]
|
||
push [bp+arg_0]
|
||
push fs
|
||
push bx
|
||
call sub_300C
|
||
jnz short loc_2F4D
|
||
add di, 20h ; ' '
|
||
jmp short loc_2F29
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2F4B:
|
||
mov ax, bx
|
||
|
||
loc_2F4D:
|
||
mov es, si
|
||
mov ax, fs:[di+14h]
|
||
mov dx, fs:[di+16h]
|
||
mov es:0Eh, ax
|
||
mov es:10h, dx
|
||
push word ptr es:0
|
||
push dx
|
||
push ax
|
||
push 0
|
||
call bseek_
|
||
mov ax, 1C26h
|
||
mov dl, fs:[di+2]
|
||
mov es, si
|
||
or dl, dl
|
||
jz short loc_2F82
|
||
mov es:1Eh, dl
|
||
mov ax, offset sub_1C6A
|
||
|
||
loc_2F82:
|
||
mov es:4, ax
|
||
mov es, cx
|
||
mov ax, fs:[di]
|
||
mov es, si
|
||
cmp ax, 0F388h
|
||
jz short loc_2F9C
|
||
cmp ax, 9595h
|
||
jz short loc_2FA6
|
||
mov ax, 5
|
||
jmp short loc_2FEB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2F9C:
|
||
mov ax, es:4
|
||
mov es:2, ax
|
||
jmp short loc_2FBB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2FA6:
|
||
mov word ptr es:2, 1BD8h
|
||
mov word ptr es:1Ah, 0
|
||
mov word ptr es:1Ch, 0FFFFh
|
||
|
||
loc_2FBB:
|
||
mov bx, fs:[di+10h]
|
||
mov dx, fs:[di+12h]
|
||
xor ax, ax
|
||
mov es:6, bx
|
||
mov es:8, ax
|
||
mov es:16h, dx
|
||
mov es:18h, ax
|
||
mov es:0Ah, ax
|
||
mov es:0Ch, ax
|
||
mov es:12h, ax
|
||
mov es:14h, ax
|
||
mov ax, si
|
||
jmp short loc_3005
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2FEB:
|
||
mov pferrno, ax
|
||
push word ptr es:0
|
||
call bcloser
|
||
|
||
loc_2FF7:
|
||
push si
|
||
call hmem_free
|
||
jmp short loc_3003
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2FFE:
|
||
mov byte ptr pferrno, 3
|
||
|
||
loc_3003:
|
||
xor ax, ax
|
||
|
||
loc_3005:
|
||
pop di
|
||
pop si
|
||
leave
|
||
retf 8
|
||
sub_2EF2 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_300C proc near
|
||
|
||
arg_0 = dword ptr 4
|
||
arg_4 = dword ptr 8
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push ds
|
||
cld
|
||
les bx, [bp+arg_4]
|
||
lds si, [bp+arg_0]
|
||
|
||
loc_3018:
|
||
mov ah, es:[bx]
|
||
inc bx
|
||
lodsb
|
||
sub al, 61h ; 'a'
|
||
cmp al, 19h
|
||
ja short loc_3025
|
||
sub al, 20h ; ' '
|
||
|
||
loc_3025:
|
||
sub ah, 61h ; 'a'
|
||
cmp ah, 19h
|
||
ja short loc_3030
|
||
sub ah, 20h ; ' '
|
||
|
||
loc_3030:
|
||
cmp ah, al
|
||
jnz short loc_303A
|
||
add al, 61h ; 'a'
|
||
jnz short loc_3018
|
||
jmp short loc_303C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_303A:
|
||
xor ax, ax
|
||
|
||
loc_303C:
|
||
test ax, ax
|
||
pop ds
|
||
pop si
|
||
pop bp
|
||
retn 8
|
||
sub_300C endp
|
||
|
||
include libs/BorlandC/__abort.asm
|
||
include libs/BorlandC/stpcpy.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function noreturn
|
||
|
||
; void abort(void)
|
||
_abort proc far
|
||
; ___call_terminate+6Ep ...
|
||
push si
|
||
push di
|
||
mov ax, 16h
|
||
push ax
|
||
nop
|
||
call raise
|
||
pop cx
|
||
nop
|
||
push cs
|
||
call near ptr __abort
|
||
_abort endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
pop di
|
||
pop si
|
||
retf
|
||
|
||
include libs/BorlandC/atexit.asm
|
||
include libs/BorlandC/del.asm
|
||
include libs/BorlandC/delarray.asm
|
||
include libs/BorlandC/dosenv.asm
|
||
include libs/BorlandC/dosgdriv.asm
|
||
include libs/BorlandC/errormsg.asm
|
||
include libs/BorlandC/exit.asm
|
||
include libs/BorlandC/f_scopy.asm
|
||
include libs/BorlandC/getvect.asm
|
||
include libs/BorlandC/H_LDIV.ASM
|
||
include libs/BorlandC/H_LLSH.ASM
|
||
include libs/BorlandC/H_PADD.ASM
|
||
include libs/BorlandC/__IOERROR.ASM
|
||
include libs/BorlandC/_isatty.asm
|
||
include libs/BorlandC/lseek.asm
|
||
include libs/BorlandC/new.asm
|
||
include libs/BorlandC/N_LXMUL.ASM
|
||
include libs/BorlandC/N_PCMP.ASM
|
||
include libs/BorlandC/setupio.asm
|
||
include libs/BorlandC/toupper.asm
|
||
include libs/BorlandC/xxas.asm
|
||
include libs/BorlandC/xxv.asm
|
||
include libs/BorlandC/cputype.asm
|
||
include libs/BorlandC/FARHEAP.ASM
|
||
include libs/BorlandC/fbrk.asm
|
||
include libs/BorlandC/signal.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int __cdecl __far _access(char *pathname, char)
|
||
__access proc far
|
||
|
||
pathname = dword ptr 6
|
||
arg_4 = byte ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
xor ax, ax
|
||
push ax ; func
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; pathname
|
||
nop
|
||
call __chmod
|
||
add sp, 6
|
||
mov dx, ax
|
||
cmp dx, 0FFFFh
|
||
jnz short loc_45D2
|
||
jmp short loc_45EA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_45D2:
|
||
test [bp+arg_4], 2
|
||
jz short loc_45DD
|
||
test dl, 1
|
||
jnz short loc_45E1
|
||
|
||
loc_45DD:
|
||
xor ax, ax
|
||
jmp short loc_45EA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_45E1:
|
||
mov _errno, 5
|
||
mov ax, 0FFFFh
|
||
|
||
loc_45EA:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
__access endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 50h, 51h, 52h, 53h, 54h, 55h, 56h, 57h, 1Eh, 6, 8Bh
|
||
db 0ECh, 0A1h, 0A4h, 0Fh, 0Bh, 6, 0A6h, 0Fh, 75h, 27h
|
||
db 0BEh, 2 dup(0FFh), 1Eh, 0B8h, 0, 63h, 0F8h, 0CDh, 21h
|
||
db 8Ch, 0D8h, 1Fh, 72h, 0Bh, 8Ch, 0DAh, 3Bh, 0C2h, 74h
|
||
db 5, 83h, 0FEh, 0FFh, 75h, 6, 0BEh, 0A8h, 0Fh, 0B8h
|
||
dw seg dseg
|
||
; ---------------------------------------------------------------------------
|
||
mov word ptr dword_E794, si
|
||
mov word ptr dword_E794+2, ax
|
||
mov sp, bp
|
||
pop es
|
||
pop ds
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
pop bx
|
||
pop bx
|
||
pop dx
|
||
pop cx
|
||
pop ax
|
||
retn
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_4637 proc far
|
||
; sub_4B43+182p ...
|
||
|
||
arg_0 = byte ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov al, [bp+arg_0]
|
||
xor cx, cx
|
||
les bx, dword_E794
|
||
|
||
loc_4645:
|
||
mov dx, es:[bx]
|
||
or dx, dx
|
||
jz short loc_4657
|
||
cmp al, dl
|
||
jb short loc_4657
|
||
inc bx
|
||
inc bx
|
||
cmp al, dh
|
||
ja short loc_4645
|
||
inc cx
|
||
|
||
loc_4657:
|
||
xchg ax, cx
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
sub_4637 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_465C proc far
|
||
|
||
var_4 = dword ptr -4
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 4
|
||
push si
|
||
push di
|
||
xor cx, cx
|
||
mov dx, [bp+arg_2]
|
||
mov ax, [bp+arg_0]
|
||
mov word ptr [bp+var_4+2], dx
|
||
mov word ptr [bp+var_4], ax
|
||
|
||
loc_4672:
|
||
les bx, [bp+var_4]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_467F
|
||
xor cx, cx
|
||
jmp short loc_46AD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_467F:
|
||
cmp cx, 1
|
||
jnz short loc_4689
|
||
mov cx, 2
|
||
jmp short loc_46A0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4689:
|
||
les bx, [bp+var_4]
|
||
mov al, es:[bx]
|
||
push ax
|
||
push cs
|
||
call near ptr sub_4637
|
||
pop cx
|
||
or ax, ax
|
||
jz short loc_469E
|
||
mov cx, 1
|
||
jmp short loc_46A0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_469E:
|
||
xor cx, cx
|
||
|
||
loc_46A0:
|
||
mov ax, word ptr [bp+var_4]
|
||
cmp ax, [bp+arg_4]
|
||
jnb short loc_46AD
|
||
inc word ptr [bp+var_4]
|
||
jmp short loc_4672
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_46AD:
|
||
or cx, cx
|
||
jnz short loc_46B6
|
||
mov ax, 1
|
||
jmp short loc_46B8
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_46B6:
|
||
xor ax, ax
|
||
|
||
loc_46B8:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
sub_465C endp
|
||
|
||
include libs/BorlandC/chmoda.asm
|
||
include libs/BorlandC/fflush.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int flushall(void)
|
||
_flushall proc far
|
||
; _fflush+12p
|
||
|
||
var_8 = word ptr -8
|
||
var_6 = word ptr -6
|
||
stream = dword ptr -4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 8
|
||
push si
|
||
push di
|
||
mov [bp+var_8], 0
|
||
mov ax, __nfile
|
||
mov [bp+var_6], ax
|
||
mov word ptr [bp+stream+2], ds
|
||
mov word ptr [bp+stream], 0B20h
|
||
jmp short loc_47E9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_47CD:
|
||
les bx, [bp+stream]
|
||
test byte ptr es:[bx+2], 3
|
||
jz short loc_47E5
|
||
push word ptr [bp+stream+2]
|
||
push bx ; stream
|
||
nop
|
||
call _fflush
|
||
pop cx
|
||
pop cx
|
||
inc [bp+var_8]
|
||
|
||
loc_47E5:
|
||
add word ptr [bp+stream], 14h
|
||
|
||
loc_47E9:
|
||
mov ax, [bp+var_6]
|
||
dec [bp+var_6]
|
||
or ax, ax
|
||
jnz short loc_47CD
|
||
mov ax, [bp+var_8]
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
_flushall endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
sub_47FC proc near
|
||
|
||
var_6 = dword ptr -6
|
||
var_2 = word ptr -2
|
||
arg_0 = dword ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 6
|
||
push si
|
||
push di
|
||
les bx, [bp+arg_0]
|
||
cmp word ptr es:[bx], 0
|
||
jge short loc_4819
|
||
mov cx, es:[bx+6]
|
||
add cx, es:[bx]
|
||
inc cx
|
||
mov ax, cx
|
||
jmp short loc_4826
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4819:
|
||
les bx, [bp+arg_0]
|
||
mov ax, es:[bx]
|
||
cwd
|
||
xor ax, dx
|
||
sub ax, dx
|
||
mov cx, ax
|
||
|
||
loc_4826:
|
||
mov [bp+var_2], ax
|
||
les bx, [bp+arg_0]
|
||
test byte ptr es:[bx+2], 40h
|
||
jnz short loc_487A
|
||
les bx, [bp+arg_0]
|
||
mov dx, es:[bx+0Eh]
|
||
mov ax, es:[bx+0Ch]
|
||
mov word ptr [bp+var_6+2], dx
|
||
mov word ptr [bp+var_6], ax
|
||
cmp word ptr es:[bx], 0
|
||
jge short loc_4873
|
||
jmp short loc_485B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_484C:
|
||
dec word ptr [bp+var_6]
|
||
les bx, [bp+var_6]
|
||
cmp byte ptr es:[bx], 0Ah
|
||
jnz short loc_485B
|
||
inc [bp+var_2]
|
||
|
||
loc_485B:
|
||
mov ax, cx
|
||
dec cx
|
||
or ax, ax
|
||
jnz short loc_484C
|
||
jmp short loc_487A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4864:
|
||
les bx, [bp+var_6]
|
||
inc word ptr [bp+var_6]
|
||
cmp byte ptr es:[bx], 0Ah
|
||
jnz short loc_4873
|
||
inc [bp+var_2]
|
||
|
||
loc_4873:
|
||
mov ax, cx
|
||
dec cx
|
||
or ax, ax
|
||
jnz short loc_4864
|
||
|
||
loc_487A:
|
||
mov ax, [bp+var_2]
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retn 4
|
||
sub_47FC endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int __cdecl fseek(FILE *stream, __int32 offset, int whence)
|
||
_fseek proc far
|
||
|
||
stream = dword ptr 6
|
||
_offset = dword ptr 0Ah
|
||
whence = word ptr 0Eh
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
push word ptr [bp+stream+2]
|
||
push word ptr [bp+stream] ; stream
|
||
nop
|
||
call _fflush
|
||
pop cx
|
||
pop cx
|
||
or ax, ax
|
||
jz short loc_48A0
|
||
mov ax, 0FFFFh
|
||
jmp short loc_4903
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_48A0:
|
||
cmp [bp+whence], 1
|
||
jnz short loc_48BD
|
||
les bx, [bp+stream]
|
||
cmp word ptr es:[bx], 0
|
||
jle short loc_48BD
|
||
push word ptr [bp+stream+2]
|
||
push bx
|
||
call sub_47FC
|
||
cwd
|
||
sub word ptr [bp+_offset], ax
|
||
sbb word ptr [bp+_offset+2], dx
|
||
|
||
loc_48BD:
|
||
les bx, [bp+stream]
|
||
and word ptr es:[bx+2], 0FE5Fh
|
||
mov word ptr es:[bx], 0
|
||
mov dx, es:[bx+0Ah]
|
||
mov ax, es:[bx+8]
|
||
mov es:[bx+0Eh], dx
|
||
mov es:[bx+0Ch], ax
|
||
push [bp+whence] ; fromwhere
|
||
push word ptr [bp+_offset+2]
|
||
push word ptr [bp+_offset] ; offset
|
||
mov al, es:[bx+4]
|
||
cbw
|
||
push ax ; handle
|
||
nop
|
||
push cs
|
||
call near ptr _lseek
|
||
add sp, 8
|
||
cmp dx, 0FFFFh
|
||
jnz short loc_4901
|
||
cmp ax, 0FFFFh
|
||
jnz short loc_4901
|
||
mov ax, 0FFFFh
|
||
jmp short loc_4903
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4901:
|
||
xor ax, ax
|
||
|
||
loc_4903:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
_fseek endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; __int32 __cdecl ftell(FILE *stream)
|
||
_ftell proc far
|
||
|
||
var_8 = word ptr -8
|
||
var_6 = word ptr -6
|
||
_offset = dword ptr -4
|
||
stream = dword ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 8
|
||
push si
|
||
push di
|
||
mov ax, 1
|
||
push ax ; fromwhere
|
||
xor ax, ax
|
||
push ax
|
||
push ax ; offset
|
||
les bx, [bp+stream]
|
||
mov al, es:[bx+4]
|
||
cbw
|
||
push ax ; handle
|
||
nop
|
||
push cs
|
||
call near ptr _lseek
|
||
add sp, 8
|
||
mov word ptr [bp+_offset+2], dx
|
||
mov word ptr [bp+_offset], ax
|
||
cmp dx, 0FFFFh
|
||
jnz short loc_493B
|
||
cmp ax, 0FFFFh
|
||
jnz short loc_493B
|
||
jmp loc_49DC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_493B:
|
||
les bx, [bp+stream]
|
||
cmp word ptr es:[bx], 0
|
||
jl short loc_4947
|
||
jmp loc_49CC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4947:
|
||
mov al, es:[bx+4]
|
||
cbw
|
||
add ax, ax
|
||
mov bx, ax
|
||
test byte ptr [bx+0CB3h], 8
|
||
jz short loc_49BA
|
||
mov ax, 2
|
||
push ax ; fromwhere
|
||
xor ax, ax
|
||
push ax
|
||
push ax ; offset
|
||
mov bx, word ptr [bp+stream]
|
||
mov al, es:[bx+4]
|
||
cbw
|
||
push ax ; handle
|
||
nop
|
||
push cs
|
||
call near ptr _lseek
|
||
add sp, 8
|
||
mov [bp+var_6], dx
|
||
mov [bp+var_8], ax
|
||
cmp dx, 0FFFFh
|
||
jnz short loc_4982
|
||
cmp ax, 0FFFFh
|
||
jnz short loc_4982
|
||
jmp short loc_49E2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4982:
|
||
xor ax, ax
|
||
push ax ; fromwhere
|
||
push word ptr [bp+_offset+2]
|
||
push word ptr [bp+_offset] ; offset
|
||
les bx, [bp+stream]
|
||
mov al, es:[bx+4]
|
||
cbw
|
||
push ax ; handle
|
||
nop
|
||
push cs
|
||
call near ptr _lseek
|
||
add sp, 8
|
||
cmp dx, 0FFFFh
|
||
jnz short loc_49AE
|
||
cmp ax, 0FFFFh
|
||
jnz short loc_49AE
|
||
mov dx, 0FFFFh
|
||
mov ax, 0FFFFh
|
||
jmp short loc_49E2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_49AE:
|
||
mov dx, [bp+var_6]
|
||
mov ax, [bp+var_8]
|
||
mov word ptr [bp+_offset+2], dx
|
||
mov word ptr [bp+_offset], ax
|
||
|
||
loc_49BA:
|
||
push word ptr [bp+stream+2]
|
||
push word ptr [bp+stream]
|
||
call sub_47FC
|
||
cwd
|
||
add word ptr [bp+_offset], ax
|
||
adc word ptr [bp+_offset+2], dx
|
||
jmp short loc_49DC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_49CC:
|
||
push word ptr [bp+stream+2]
|
||
push word ptr [bp+stream]
|
||
call sub_47FC
|
||
cwd
|
||
sub word ptr [bp+_offset], ax
|
||
sbb word ptr [bp+_offset+2], dx
|
||
|
||
loc_49DC:
|
||
mov dx, word ptr [bp+_offset+2]
|
||
mov ax, word ptr [bp+_offset]
|
||
|
||
loc_49E2:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
_ftell endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_49E8 proc near
|
||
|
||
arg_0 = word ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov ax, [bp+arg_0]
|
||
cmp ax, 5Ch ; '\'
|
||
jz short loc_49FA
|
||
cmp ax, 2Fh ; '/'
|
||
jnz short loc_49FF
|
||
|
||
loc_49FA:
|
||
mov ax, 1
|
||
jmp short loc_4A01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_49FF:
|
||
xor ax, ax
|
||
|
||
loc_4A01:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 2
|
||
sub_49E8 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_4A07 proc near
|
||
|
||
arg_0 = dword ptr 4
|
||
arg_4 = word ptr 8
|
||
arg_6 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
les bx, [bp+arg_0]
|
||
mov al, es:[bx]
|
||
mov ah, 0
|
||
push ax
|
||
call sub_49E8
|
||
or ax, ax
|
||
jz short loc_4A39
|
||
push word ptr [bp+arg_0+2]
|
||
push word ptr [bp+arg_0]
|
||
push [bp+arg_6]
|
||
push [bp+arg_4]
|
||
nop
|
||
push cs
|
||
call near ptr sub_465C
|
||
add sp, 8
|
||
or ax, ax
|
||
jz short loc_4A39
|
||
mov ax, 1
|
||
jmp short loc_4A3B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4A39:
|
||
xor ax, ax
|
||
|
||
loc_4A3B:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 8
|
||
sub_4A07 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_4A41 proc far
|
||
|
||
drive = word ptr -12h
|
||
var_10 = word ptr -10h
|
||
var_C = dword ptr -0Ch
|
||
var_8 = dword ptr -8
|
||
s = dword ptr -4
|
||
arg_4 = word ptr 0Ah
|
||
arg_6 = word ptr 0Ch
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 12h
|
||
push si
|
||
push di
|
||
mov ax, 0A1h ; '<27>'
|
||
push ax
|
||
nop
|
||
push cs
|
||
call near ptr _malloc
|
||
pop cx
|
||
mov word ptr [bp+s+2], dx
|
||
mov word ptr [bp+s], ax
|
||
or ax, dx
|
||
jnz short loc_4A60
|
||
jmp loc_4CA3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4A60:
|
||
mov dx, [bp+arg_6]
|
||
mov ax, [bp+arg_4]
|
||
mov word ptr [bp+var_C+2], dx
|
||
mov word ptr [bp+var_C], ax
|
||
les bx, [bp+var_C]
|
||
mov al, es:[bx]
|
||
cbw
|
||
mov bx, ax
|
||
test byte ptr [bx+0D51h], 0Ch
|
||
jz short loc_4AA0
|
||
mov bx, word ptr [bp+var_C]
|
||
cmp byte ptr es:[bx+1], 3Ah ; ':'
|
||
jnz short loc_4AA0
|
||
mov al, es:[bx]
|
||
cbw
|
||
mov [bp+var_10], ax
|
||
push ax ; ch
|
||
nop
|
||
push cs
|
||
call near ptr _toupper
|
||
pop cx
|
||
add ax, 0FFC0h
|
||
mov [bp+drive], ax
|
||
add word ptr [bp+var_C], 2
|
||
jmp short loc_4AB6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4AA0:
|
||
push ss
|
||
lea ax, [bp+drive]
|
||
push ax ; drive
|
||
nop
|
||
call __dos_getdrive
|
||
pop cx
|
||
pop cx
|
||
mov ax, [bp+drive]
|
||
add ax, 41h ; 'A'
|
||
dec ax
|
||
mov [bp+var_10], ax
|
||
|
||
loc_4AB6:
|
||
les bx, [bp+var_C]
|
||
mov al, es:[bx]
|
||
cbw
|
||
push ax
|
||
call sub_49E8
|
||
or ax, ax
|
||
jnz short loc_4B1E
|
||
mov ax, 0A1h ; '<27>'
|
||
push ax ; len
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s] ; buf
|
||
push [bp+drive] ; drive
|
||
nopcall __getdcwd
|
||
add sp, 8
|
||
or ax, dx
|
||
jnz short loc_4AEE
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
pop cx
|
||
pop cx
|
||
jmp loc_4CA3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4AEE:
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s] ; s
|
||
nop
|
||
push cs
|
||
call near ptr _strlen
|
||
pop cx
|
||
pop cx
|
||
mov dx, word ptr [bp+s+2]
|
||
add ax, word ptr [bp+s]
|
||
mov word ptr [bp+var_8+2], dx
|
||
mov word ptr [bp+var_8], ax
|
||
push dx
|
||
push word ptr [bp+s]
|
||
dec ax
|
||
push dx
|
||
push ax
|
||
call sub_4A07
|
||
or ax, ax
|
||
jnz short loc_4B40
|
||
les bx, [bp+var_8]
|
||
mov byte ptr es:[bx], 5Ch ; '\'
|
||
jmp short loc_4B3D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4B1E:
|
||
mov dx, word ptr [bp+s+2]
|
||
mov ax, word ptr [bp+s]
|
||
mov word ptr [bp+var_8+2], dx
|
||
mov word ptr [bp+var_8], ax
|
||
les bx, [bp+var_8]
|
||
mov al, byte ptr [bp+var_10]
|
||
mov es:[bx], al
|
||
inc word ptr [bp+var_8]
|
||
les bx, [bp+var_8]
|
||
mov byte ptr es:[bx], 3Ah ; ':'
|
||
|
||
loc_4B3D:
|
||
inc word ptr [bp+var_8]
|
||
|
||
loc_4B40:
|
||
push word ptr [bp+var_C+2]
|
||
sub_4A41 endp ; sp-analysis failed
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_4B43 proc far
|
||
push word ptr [bp-0Ch] ; src
|
||
push word ptr [bp-6]
|
||
push word ptr [bp-8] ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcpy
|
||
add sp, 8
|
||
mov dx, [bp-2]
|
||
mov ax, [bp-4]
|
||
mov [bp-6], dx
|
||
mov [bp-8], ax
|
||
mov [bp-0Ah], dx
|
||
mov [bp-0Ch], ax
|
||
|
||
loc_4B66:
|
||
; sub_4B43+196j ...
|
||
les bx, [bp-0Ch]
|
||
inc word ptr [bp-0Ch]
|
||
mov al, es:[bx]
|
||
cbw
|
||
mov [bp-0Eh], ax
|
||
or ax, ax
|
||
jz short loc_4B82
|
||
push ax
|
||
call sub_49E8
|
||
or ax, ax
|
||
jnz short loc_4B82
|
||
jmp loc_4CB4
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4B82:
|
||
les bx, [bp-8]
|
||
cmp byte ptr es:[bx-1], 2Eh ; '.'
|
||
jnz short loc_4BA9
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
mov ax, [bp-8]
|
||
add ax, 0FFFEh
|
||
push word ptr [bp-6]
|
||
push ax
|
||
call sub_4A07
|
||
or ax, ax
|
||
jz short loc_4BA9
|
||
sub word ptr [bp-8], 2
|
||
jmp short loc_4C20
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4BA9:
|
||
les bx, [bp-8]
|
||
cmp byte ptr es:[bx-1], 2Eh ; '.'
|
||
jnz short loc_4C20
|
||
cmp byte ptr es:[bx-2], 2Eh ; '.'
|
||
jnz short loc_4C20
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
mov ax, [bp-8]
|
||
add ax, 0FFFDh
|
||
push word ptr [bp-6]
|
||
push ax
|
||
call sub_4A07
|
||
or ax, ax
|
||
jz short loc_4C20
|
||
sub word ptr [bp-8], 3
|
||
les bx, [bp-8]
|
||
cmp byte ptr es:[bx-1], 3Ah ; ':'
|
||
jnz short loc_4C09
|
||
mov ax, [bp-8]
|
||
dec ax
|
||
push word ptr [bp-6]
|
||
push ax
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
nop
|
||
push cs
|
||
call near ptr sub_465C
|
||
add sp, 8
|
||
or ax, ax
|
||
jz short loc_4C09
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
pop cx
|
||
pop cx
|
||
jmp loc_4CA3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4C09:
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
dec word ptr [bp-8]
|
||
mov ax, [bp-8]
|
||
push word ptr [bp-6]
|
||
push ax
|
||
call sub_4A07
|
||
or ax, ax
|
||
jz short loc_4C09
|
||
|
||
loc_4C20:
|
||
cmp word ptr [bp-0Eh], 0
|
||
jz short loc_4C29
|
||
jmp loc_4CA9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4C29:
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
mov ax, [bp-8]
|
||
dec ax
|
||
push word ptr [bp-6]
|
||
push ax
|
||
call sub_4A07
|
||
or ax, ax
|
||
jz short loc_4C41
|
||
dec word ptr [bp-8]
|
||
|
||
loc_4C41:
|
||
les bx, [bp-8]
|
||
cmp byte ptr es:[bx-1], 3Ah ; ':'
|
||
jnz short loc_4C6F
|
||
mov ax, [bp-8]
|
||
dec ax
|
||
push word ptr [bp-6]
|
||
push ax
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
nop
|
||
push cs
|
||
call near ptr sub_465C
|
||
add sp, 8
|
||
or ax, ax
|
||
jz short loc_4C6F
|
||
les bx, [bp-8]
|
||
mov byte ptr es:[bx], 5Ch ; '\'
|
||
inc word ptr [bp-8]
|
||
|
||
loc_4C6F:
|
||
; sub_4B43+120j
|
||
les bx, [bp-8]
|
||
mov byte ptr es:[bx], 0
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4] ; s
|
||
nop
|
||
push cs
|
||
call near ptr _strlen
|
||
pop cx
|
||
pop cx
|
||
inc ax
|
||
mov dx, ax
|
||
mov ax, [bp+6]
|
||
or ax, [bp+8]
|
||
jnz short loc_4C91
|
||
jmp loc_4D15
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4C91:
|
||
cmp dx, [bp+0Eh]
|
||
jbe short loc_4CEE
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
pop cx
|
||
pop cx
|
||
|
||
loc_4CA3:
|
||
xor dx, dx
|
||
xor ax, ax
|
||
jmp short loc_4D24
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4CA9:
|
||
les bx, [bp-8]
|
||
mov al, [bp-0Eh]
|
||
mov es:[bx], al
|
||
jmp short loc_4CE8
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4CB4:
|
||
les bx, [bp-8]
|
||
mov al, [bp-0Eh]
|
||
mov es:[bx], al
|
||
inc word ptr [bp-8]
|
||
push word ptr [bp-0Eh]
|
||
nop
|
||
push cs
|
||
call near ptr sub_4637
|
||
pop cx
|
||
or ax, ax
|
||
jnz short loc_4CD0
|
||
jmp loc_4B66
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4CD0:
|
||
les bx, [bp-0Ch]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_4CDC
|
||
jmp loc_4B66
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4CDC:
|
||
mov al, es:[bx]
|
||
les bx, [bp-8]
|
||
mov es:[bx], al
|
||
inc word ptr [bp-0Ch]
|
||
|
||
loc_4CE8:
|
||
inc word ptr [bp-8]
|
||
jmp loc_4B66
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4CEE:
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4] ; src
|
||
push word ptr [bp+8]
|
||
push word ptr [bp+6] ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcpy
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
add sp, 0Ch
|
||
mov dx, [bp+8]
|
||
mov ax, [bp+6]
|
||
jmp short loc_4D24
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4D15:
|
||
push dx
|
||
push word ptr [bp-2]
|
||
push word ptr [bp-4]
|
||
nop
|
||
push cs
|
||
call near ptr _realloc
|
||
add sp, 6
|
||
|
||
loc_4D24:
|
||
; sub_4B43+1D0j
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
sub_4B43 endp ; sp-analysis failed
|
||
|
||
include libs/BorlandC/getdcwd.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; char *__cdecl getenv(const char *name)
|
||
_getenv proc far
|
||
; sub_96AE+126p
|
||
|
||
var_4 = dword ptr -4
|
||
_name = dword ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 4
|
||
push si
|
||
push di
|
||
les di, [bp+_name]
|
||
mov ax, es
|
||
or ax, di
|
||
jz short loc_4DF8
|
||
mov al, 0
|
||
mov ah, es:[di]
|
||
mov cx, 0FFFFh
|
||
cld
|
||
repne scasb
|
||
not cx
|
||
dec cx
|
||
jz short loc_4DF8
|
||
les di, environ@
|
||
mov word ptr [bp+var_4+2], es
|
||
mov bx, es
|
||
or bx, di
|
||
mov word ptr [bp+var_4], di
|
||
jnz short loc_4E05
|
||
|
||
loc_4DF8:
|
||
xor dx, dx
|
||
xor ax, ax
|
||
jmp short loc_4E31
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4DFE:
|
||
add word ptr [bp+var_4], 4
|
||
les di, [bp+var_4]
|
||
|
||
loc_4E05:
|
||
les di, es:[di]
|
||
mov bx, es
|
||
or bx, di
|
||
jz short loc_4DF8
|
||
mov al, es:[di]
|
||
or al, al
|
||
jz short loc_4DF8
|
||
cmp ah, al
|
||
jnz short loc_4DFE
|
||
mov bx, cx
|
||
cmp byte ptr es:[bx+di], 3Dh ; '='
|
||
jnz short loc_4DFE
|
||
push ds
|
||
lds si, [bp+_name]
|
||
repe cmpsb
|
||
pop ds
|
||
xchg cx, bx
|
||
jnz short loc_4DFE
|
||
inc di
|
||
mov ax, di
|
||
mov dx, es
|
||
|
||
loc_4E31:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
_getenv endp
|
||
|
||
include libs/BorlandC/memcmp.asm
|
||
include libs/BorlandC/memcpy.asm
|
||
include libs/BorlandC/memset.asm
|
||
include libs/BorlandC/movmem.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; void __cdecl _searchenv(const char *file, const char *varname, char *pathname)
|
||
__searchenv proc far
|
||
|
||
var_4 = dword ptr -4
|
||
src = dword ptr 6
|
||
varname = dword ptr 0Ah
|
||
pathname = dword ptr 0Eh
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 4
|
||
push si
|
||
push di
|
||
push word ptr [bp+varname+2]
|
||
push word ptr [bp+varname] ; name
|
||
nop
|
||
push cs
|
||
call near ptr _getenv
|
||
pop cx
|
||
pop cx
|
||
mov word ptr [bp+var_4+2], dx
|
||
mov word ptr [bp+var_4], ax
|
||
or ax, dx
|
||
jnz short loc_4F69
|
||
mov word ptr [bp+var_4+2], ds
|
||
mov word ptr [bp+var_4], 0FB4h
|
||
|
||
loc_4F69:
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; pathname
|
||
push word ptr [bp+var_4+2]
|
||
push word ptr [bp+var_4] ; __int32
|
||
push word ptr [bp+src+2]
|
||
push word ptr [bp+src] ; src
|
||
nop
|
||
push cs
|
||
call near ptr sub_4F89
|
||
add sp, 0Ch
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
__searchenv endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
; int __cdecl __far sub_4F89(char *src, __int32, char *pathname)
|
||
sub_4F89 proc far
|
||
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
src = dword ptr 6
|
||
arg_4 = dword ptr 0Ah
|
||
pathname = dword ptr 0Eh
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 4
|
||
push si
|
||
push di
|
||
mov ax, 50h ; 'P'
|
||
push ax ; len
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; buf
|
||
xor ax, ax
|
||
push ax ; drive
|
||
nopcall __getdcwd
|
||
add sp, 8
|
||
or ax, dx
|
||
jnz short loc_4FAE
|
||
xor dx, dx
|
||
jmp short loc_4FBD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4FAE:
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; s
|
||
nop
|
||
push cs
|
||
call near ptr _strlen
|
||
pop cx
|
||
pop cx
|
||
mov dx, ax
|
||
|
||
loc_4FBD:
|
||
les bx, [bp+pathname]
|
||
add bx, dx
|
||
mov byte ptr es:[bx], 0
|
||
or dx, dx
|
||
jz short loc_5012
|
||
mov bx, dx
|
||
add bx, word ptr [bp+pathname]
|
||
mov bl, es:[bx-1]
|
||
mov al, bl
|
||
cmp al, 5Ch ; '\'
|
||
jz short loc_4FE3
|
||
cmp bl, 2Fh ; '/'
|
||
jz short loc_4FE3
|
||
cmp bl, 3Ah ; ':'
|
||
jnz short loc_4FFF
|
||
|
||
loc_4FE3:
|
||
mov ax, word ptr [bp+pathname]
|
||
add ax, dx
|
||
dec ax
|
||
push word ptr [bp+pathname+2]
|
||
push ax
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname]
|
||
nop
|
||
push cs
|
||
call near ptr sub_465C
|
||
add sp, 8
|
||
or ax, ax
|
||
jnz short loc_5012
|
||
|
||
loc_4FFF:
|
||
push ds
|
||
mov ax, 0FB6h
|
||
push ax ; src
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcat
|
||
add sp, 8
|
||
|
||
loc_5012:
|
||
push word ptr [bp+src+2]
|
||
push word ptr [bp+src] ; src
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcat
|
||
add sp, 8
|
||
xor ax, ax
|
||
push ax ; char
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; pathname
|
||
nop
|
||
push cs
|
||
call near ptr __access
|
||
add sp, 6
|
||
or ax, ax
|
||
jz short loc_5086
|
||
les bx, [bp+arg_4]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_504D
|
||
les bx, [bp+pathname]
|
||
mov byte ptr es:[bx], 0
|
||
jmp short loc_50C5
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_504D:
|
||
xor dx, dx
|
||
jmp short loc_5065
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_5051:
|
||
les bx, [bp+pathname]
|
||
add bx, dx
|
||
push es
|
||
les si, [bp+arg_4]
|
||
mov al, es:[si]
|
||
pop es
|
||
mov es:[bx], al
|
||
inc word ptr [bp+arg_4]
|
||
inc dx
|
||
|
||
loc_5065:
|
||
les bx, [bp+arg_4]
|
||
cmp byte ptr es:[bx], 3Bh ; ';'
|
||
jz short loc_5074
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_5051
|
||
|
||
loc_5074:
|
||
les bx, [bp+arg_4]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_5080
|
||
jmp loc_4FBD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_5080:
|
||
inc word ptr [bp+arg_4]
|
||
jmp loc_4FBD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_5086:
|
||
mov ax, 50h ; 'P'
|
||
push ax
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname]
|
||
xor ax, ax
|
||
push ax
|
||
push ax
|
||
nop
|
||
push cs
|
||
call near ptr sub_4A41
|
||
add sp, 0Ah
|
||
mov [bp+var_2], dx
|
||
mov [bp+var_4], ax
|
||
or ax, dx
|
||
jz short loc_50C5
|
||
push [bp+var_2]
|
||
push [bp+var_4] ; src
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcpy
|
||
push [bp+var_2]
|
||
push [bp+var_4]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
add sp, 0Ch
|
||
|
||
loc_50C5:
|
||
; sub_4F89+11Bj
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
sub_4F89 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int __cdecl setvbuf(FILE *stream, char *buf, int type, size_t size)
|
||
_setvbuf proc far
|
||
|
||
stream = dword ptr 6
|
||
buf = dword ptr 0Ah
|
||
_type = word ptr 0Eh
|
||
_size = word ptr 10h
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
les bx, [bp+stream]
|
||
mov ax, es:[bx+12h]
|
||
cmp ax, word ptr [bp+stream]
|
||
jz short loc_50DF
|
||
jmp loc_51B6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_50DF:
|
||
cmp [bp+_type], 2
|
||
jle short loc_50E8
|
||
jmp loc_51B6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_50E8:
|
||
cmp [bp+_size], 7FFFh
|
||
jbe short loc_50F2
|
||
jmp loc_51B6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_50F2:
|
||
cmp word_E7AA, 0
|
||
jnz short loc_5108
|
||
cmp word ptr [bp+stream], 0B34h
|
||
jnz short loc_5108
|
||
mov word_E7AA, 1
|
||
jmp short loc_511C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_5108:
|
||
cmp word_E7A8, 0
|
||
jnz short loc_511C
|
||
cmp word ptr [bp+stream], 0B20h
|
||
jnz short loc_511C
|
||
mov word_E7A8, 1
|
||
|
||
loc_511C:
|
||
les bx, [bp+stream]
|
||
cmp word ptr es:[bx], 0
|
||
jz short loc_5139
|
||
mov ax, 1
|
||
push ax ; whence
|
||
xor ax, ax
|
||
push ax
|
||
push ax ; offset
|
||
push word ptr [bp+stream+2]
|
||
push bx ; stream
|
||
nop
|
||
push cs
|
||
call near ptr _fseek
|
||
add sp, 0Ah
|
||
|
||
loc_5139:
|
||
les bx, [bp+stream]
|
||
test byte ptr es:[bx+2], 4
|
||
jz short loc_5152
|
||
push word ptr es:[bx+0Ah]
|
||
push word ptr es:[bx+8]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
pop cx
|
||
pop cx
|
||
|
||
loc_5152:
|
||
les bx, [bp+stream]
|
||
and word ptr es:[bx+2], 0FFF3h
|
||
mov word ptr es:[bx+6], 0
|
||
mov dx, word ptr [bp+stream+2]
|
||
mov ax, word ptr [bp+stream]
|
||
add ax, 5
|
||
mov es:[bx+0Ah], dx
|
||
mov es:[bx+8], ax
|
||
mov es:[bx+0Eh], dx
|
||
mov es:[bx+0Ch], ax
|
||
cmp [bp+_type], 2
|
||
jz short loc_51E6
|
||
cmp [bp+_size], 0
|
||
jbe short loc_51E6
|
||
mov word ptr _exitbuf+2, seg seg000
|
||
mov word ptr _exitbuf, 54F4h
|
||
mov ax, word ptr [bp+buf]
|
||
or ax, word ptr [bp+buf+2]
|
||
jnz short loc_51BB
|
||
push [bp+_size]
|
||
nop
|
||
push cs
|
||
call near ptr _malloc
|
||
pop cx
|
||
mov word ptr [bp+buf+2], dx
|
||
mov word ptr [bp+buf], ax
|
||
or ax, dx
|
||
jz short loc_51B6
|
||
les bx, [bp+stream]
|
||
or word ptr es:[bx+2], 4
|
||
jmp short loc_51BB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_51B6:
|
||
mov ax, 0FFFFh
|
||
jmp short loc_51E8
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_51BB:
|
||
les bx, [bp+stream]
|
||
mov dx, word ptr [bp+buf+2]
|
||
mov ax, word ptr [bp+buf]
|
||
mov es:[bx+0Eh], dx
|
||
mov es:[bx+0Ch], ax
|
||
mov es:[bx+0Ah], dx
|
||
mov es:[bx+8], ax
|
||
mov ax, [bp+_size]
|
||
mov es:[bx+6], ax
|
||
cmp [bp+_type], 1
|
||
jnz short loc_51E6
|
||
or word ptr es:[bx+2], 8
|
||
|
||
loc_51E6:
|
||
xor ax, ax
|
||
|
||
loc_51E8:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
_setvbuf endp
|
||
|
||
include libs/BorlandC/_strcat.asm
|
||
include libs/BorlandC/_strcmp.asm
|
||
include libs/BorlandC/_strcpy.asm
|
||
include libs/BorlandC/_stricmp.asm
|
||
include libs/BorlandC/_strlen.asm
|
||
include libs/BorlandC/strrchr.asm
|
||
include libs/BorlandC/write.asm
|
||
include libs/BorlandC/writea.asm
|
||
include libs/BorlandC/xfflush.asm
|
||
include libs/BorlandC/xalloc.asm
|
||
include libs/BorlandC/xmsg.asm
|
||
include libs/BorlandC/xx.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int __stdcall _DOSCMD(int, int, char *s, int, int)
|
||
__DOSCMD proc near
|
||
|
||
dest = dword ptr -0Eh
|
||
var_A = dword ptr -0Ah
|
||
var_6 = dword ptr -6
|
||
var_2 = word ptr -2
|
||
arg_0 = word ptr 4
|
||
arg_2 = word ptr 6
|
||
s = dword ptr 8
|
||
arg_8 = word ptr 0Ch
|
||
arg_A = word ptr 0Eh
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 0Eh
|
||
push si
|
||
push di
|
||
mov [bp+var_2], 3
|
||
mov ax, word ptr [bp+s]
|
||
or ax, word ptr [bp+s+2]
|
||
jz short loc_8C66
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s] ; s
|
||
nop
|
||
push cs
|
||
call near ptr _strlen
|
||
pop cx
|
||
pop cx
|
||
add ax, [bp+var_2]
|
||
inc ax
|
||
mov [bp+var_2], ax
|
||
|
||
loc_8C66:
|
||
mov dx, [bp+arg_2]
|
||
mov ax, [bp+arg_0]
|
||
mov word ptr [bp+var_6+2], dx
|
||
mov word ptr [bp+var_6], ax
|
||
jmp short loc_8C90
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_8C74:
|
||
les bx, [bp+var_6]
|
||
push word ptr es:[bx+2]
|
||
push word ptr es:[bx] ; s
|
||
nop
|
||
push cs
|
||
call near ptr _strlen
|
||
pop cx
|
||
pop cx
|
||
add ax, [bp+var_2]
|
||
inc ax
|
||
mov [bp+var_2], ax
|
||
add word ptr [bp+var_6], 4
|
||
|
||
loc_8C90:
|
||
les bx, [bp+var_6]
|
||
mov ax, es:[bx]
|
||
or ax, es:[bx+2]
|
||
jnz short loc_8C74
|
||
push [bp+var_2]
|
||
nop
|
||
push cs
|
||
call near ptr _malloc
|
||
pop cx
|
||
mov word ptr [bp+var_A+2], dx
|
||
mov word ptr [bp+var_A], ax
|
||
or ax, dx
|
||
jnz short loc_8CB6
|
||
xor dx, dx
|
||
xor ax, ax
|
||
jmp loc_8D6C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_8CB6:
|
||
mov dx, word ptr [bp+var_A+2]
|
||
mov ax, word ptr [bp+var_A]
|
||
inc ax
|
||
mov word ptr [bp+dest+2], dx
|
||
mov word ptr [bp+dest], ax
|
||
les bx, [bp+dest]
|
||
mov byte ptr es:[bx], 20h ; ' '
|
||
inc word ptr [bp+dest]
|
||
mov ax, word ptr [bp+s]
|
||
or ax, word ptr [bp+s+2]
|
||
jz short loc_8CF9
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s] ; src
|
||
push word ptr [bp+dest+2]
|
||
push word ptr [bp+dest] ; dest
|
||
nop
|
||
call _stpcpy
|
||
add sp, 8
|
||
mov word ptr [bp+dest+2], dx
|
||
mov word ptr [bp+dest], ax
|
||
les bx, [bp+dest]
|
||
mov byte ptr es:[bx], 20h ; ' '
|
||
inc word ptr [bp+dest]
|
||
|
||
loc_8CF9:
|
||
mov ax, [bp+arg_8]
|
||
or ax, [bp+arg_A]
|
||
jz short loc_8D47
|
||
mov dx, [bp+arg_2]
|
||
mov ax, [bp+arg_0]
|
||
mov word ptr [bp+var_6+2], dx
|
||
mov word ptr [bp+var_6], ax
|
||
jmp short loc_8D3B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_8D0F:
|
||
les bx, [bp+var_6]
|
||
push word ptr es:[bx+2]
|
||
push word ptr es:[bx] ; src
|
||
push word ptr [bp+dest+2]
|
||
push word ptr [bp+dest] ; dest
|
||
nop
|
||
call _stpcpy
|
||
add sp, 8
|
||
mov word ptr [bp+dest+2], dx
|
||
mov word ptr [bp+dest], ax
|
||
les bx, [bp+dest]
|
||
mov byte ptr es:[bx], 20h ; ' '
|
||
inc word ptr [bp+dest]
|
||
add word ptr [bp+var_6], 4
|
||
|
||
loc_8D3B:
|
||
les bx, [bp+var_6]
|
||
mov ax, es:[bx]
|
||
or ax, es:[bx+2]
|
||
jnz short loc_8D0F
|
||
|
||
loc_8D47:
|
||
les bx, [bp+dest]
|
||
mov byte ptr es:[bx-1], 0Dh
|
||
mov byte ptr es:[bx], 0
|
||
mov ax, word ptr [bp+dest]
|
||
xor dx, dx
|
||
sub ax, word ptr [bp+var_A]
|
||
sbb dx, 0
|
||
add al, 0FEh ; '<27>'
|
||
les bx, [bp+var_A]
|
||
mov es:[bx], al
|
||
mov dx, word ptr [bp+var_A+2]
|
||
mov ax, word ptr [bp+var_A]
|
||
|
||
loc_8D6C:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retn 0Ch
|
||
__DOSCMD endp
|
||
|
||
include libs/BorlandC/exec.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int execl(char *path, char *arg0, ...)
|
||
_execl proc far
|
||
; sub_9BDF+160P ...
|
||
|
||
s = dword ptr 6
|
||
arg0 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
xor ax, ax
|
||
push ax ; int
|
||
push ax ; int
|
||
push ax ; int
|
||
push ss ; int
|
||
lea ax, [bp+arg0]
|
||
push ax ; int
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s] ; s
|
||
mov ax, 8EDBh
|
||
push ax ; int
|
||
call sub_96AE
|
||
add sp, 10h
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
_execl endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: library function bp-based frame
|
||
|
||
; int __cdecl setblock(unsigned int __psp, unsigned int newsize)
|
||
_setblock proc far
|
||
|
||
___psp = word ptr 6
|
||
newsize = word ptr 8
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov ah, 4Ah ; 'J'
|
||
mov bx, [bp+newsize]
|
||
mov es, [bp+___psp]
|
||
int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK)
|
||
; ES = segment address of block to change
|
||
; BX = new size in paragraphs
|
||
jb short loc_9152
|
||
mov ax, 0FFFFh
|
||
jmp short loc_9158
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9152:
|
||
push bx
|
||
push ax
|
||
call __IOERROR
|
||
pop ax
|
||
|
||
loc_9158:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
_setblock endp
|
||
|
||
include libs/BorlandC/setenvp.asm
|
||
include libs/BorlandC/ctor2.asm
|
||
include libs/BorlandC/ctor3.asm
|
||
include libs/BorlandC/strings.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_952E proc far
|
||
push si
|
||
push di
|
||
cmp _cFlag, 0
|
||
jz short loc_9541
|
||
mov _cFlag, 0
|
||
mov al, _cChar
|
||
jmp short loc_9546
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9541:
|
||
mov ax, 700h
|
||
int 21h ; DOS - DIRECT STDIN INPUT, NO ECHO
|
||
|
||
loc_9546:
|
||
mov ah, 0
|
||
pop di
|
||
pop si
|
||
retf
|
||
sub_952E endp
|
||
|
||
include libs/BorlandC/kbhit.asm
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9561 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov ax, [bp+arg_0]
|
||
cmp ah, 81h ; '<27>'
|
||
jb short loc_959B
|
||
cmp ah, 0A0h ; '<27>'
|
||
jb short loc_957D
|
||
cmp ah, 0E0h ; '<27>'
|
||
jb short loc_959B
|
||
cmp ah, 0F0h ; '<27>'
|
||
jnb short loc_959B
|
||
|
||
loc_957D:
|
||
cmp al, 40h ; '@'
|
||
jb short loc_959B
|
||
cmp al, 0FDh ; '<27>'
|
||
jnb short loc_959B
|
||
cmp al, 7Fh ; ''
|
||
jz short loc_959B
|
||
cmp al, 80h ; '<27>'
|
||
adc al, 61h ; 'a'
|
||
jb short loc_9591
|
||
sub al, 0A2h ; '<27>'
|
||
|
||
loc_9591:
|
||
rcl ah, 1
|
||
and ah, 7Fh
|
||
add ax, 1F21h
|
||
jmp short loc_959D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_959B:
|
||
xor ax, ax
|
||
|
||
loc_959D:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf
|
||
sub_9561 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_95A1 proc far
|
||
|
||
var_8 = dword ptr -8
|
||
var_4 = dword ptr -4
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
arg_6 = word ptr 0Ch
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 8
|
||
push si
|
||
push di
|
||
mov dx, [bp+arg_2]
|
||
mov ax, [bp+arg_0]
|
||
mov word ptr [bp+var_4+2], dx
|
||
mov word ptr [bp+var_4], ax
|
||
jmp short loc_9612
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_95B7:
|
||
les bx, [bp+var_4]
|
||
mov al, es:[bx]
|
||
push ax
|
||
nop
|
||
push cs
|
||
call near ptr sub_4637
|
||
pop cx
|
||
or ax, ax
|
||
jz short loc_95D6
|
||
inc word ptr [bp+var_4]
|
||
les bx, [bp+var_4]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_960F
|
||
jmp short loc_961B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_95D6:
|
||
mov dx, [bp+arg_6]
|
||
mov ax, [bp+arg_4]
|
||
mov word ptr [bp+var_8+2], dx
|
||
mov word ptr [bp+var_8], ax
|
||
jmp short loc_95F5
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_95E4:
|
||
les bx, [bp+var_4]
|
||
mov al, es:[bx]
|
||
les bx, [bp+var_8]
|
||
cmp al, es:[bx]
|
||
jz short loc_95FE
|
||
inc word ptr [bp+var_8]
|
||
|
||
loc_95F5:
|
||
les bx, [bp+var_8]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_95E4
|
||
|
||
loc_95FE:
|
||
les bx, [bp+var_8]
|
||
cmp byte ptr es:[bx], 0
|
||
jz short loc_960F
|
||
mov dx, word ptr [bp+var_4+2]
|
||
mov ax, word ptr [bp+var_4]
|
||
jmp short loc_961F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_960F:
|
||
inc word ptr [bp+var_4]
|
||
|
||
loc_9612:
|
||
les bx, [bp+var_4]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz short loc_95B7
|
||
|
||
loc_961B:
|
||
xor dx, dx
|
||
xor ax, ax
|
||
|
||
loc_961F:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
sub_95A1 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
; int __cdecl __far sub_9625(int, int, char *pathname, char *src, int)
|
||
sub_9625 proc far
|
||
|
||
dest = byte ptr -50h
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
pathname = dword ptr 0Ah
|
||
src = dword ptr 0Eh
|
||
arg_C = word ptr 12h
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 50h
|
||
push si
|
||
push di
|
||
push [bp+arg_2]
|
||
push [bp+arg_0] ; src
|
||
push ss
|
||
lea ax, [bp+dest]
|
||
push ax ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcpy
|
||
push word ptr [bp+src+2]
|
||
push word ptr [bp+src] ; src
|
||
push ss
|
||
lea ax, [bp+dest]
|
||
push ax ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcat
|
||
add sp, 10h
|
||
cmp [bp+arg_C], 0
|
||
jz short loc_9679
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; pathname
|
||
push ds
|
||
mov ax, 113Eh
|
||
push ax ; varname
|
||
push ss
|
||
lea ax, [bp+dest]
|
||
push ax ; file
|
||
nop
|
||
push cs
|
||
call near ptr __searchenv
|
||
add sp, 0Ch
|
||
les bx, [bp+pathname]
|
||
cmp byte ptr es:[bx], 0
|
||
jz short loc_96A6
|
||
jmp short loc_96A1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9679:
|
||
push ss
|
||
lea ax, [bp+dest]
|
||
push ax ; src
|
||
push word ptr [bp+pathname+2]
|
||
push word ptr [bp+pathname] ; dest
|
||
nop
|
||
push cs
|
||
call near ptr _strcpy
|
||
add sp, 8
|
||
mov ax, 4
|
||
push ax ; char
|
||
push ss
|
||
lea ax, [bp+dest]
|
||
push ax ; pathname
|
||
nop
|
||
push cs
|
||
call near ptr __access
|
||
add sp, 6
|
||
or ax, ax
|
||
jnz short loc_96A6
|
||
|
||
loc_96A1:
|
||
mov ax, 1
|
||
jmp short loc_96A8
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_96A6:
|
||
xor ax, ax
|
||
|
||
loc_96A8:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retf
|
||
sub_9625 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
; int __cdecl sub_96AE(int, char *s, int, int, int, int, int)
|
||
sub_96AE proc near
|
||
|
||
pathname = word ptr -9Ch
|
||
var_1A = word ptr -1Ah
|
||
var_18 = word ptr -18h
|
||
var_16 = word ptr -16h
|
||
var_14 = dword ptr -14h
|
||
s1 = dword ptr -10h
|
||
var_C = word ptr -0Ch
|
||
var_A = word ptr -0Ah
|
||
var_8 = word ptr -8
|
||
var_6 = word ptr -6
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
arg_0 = word ptr 4
|
||
s = dword ptr 6
|
||
arg_6 = word ptr 0Ah
|
||
arg_8 = word ptr 0Ch
|
||
arg_A = word ptr 0Eh
|
||
arg_C = word ptr 10h
|
||
arg_E = word ptr 12h
|
||
|
||
push bp
|
||
mov bp, sp
|
||
sub sp, 9Ch
|
||
push si
|
||
push di
|
||
les bx, [bp+s]
|
||
mov al, es:[bx]
|
||
cbw
|
||
mov dx, ax
|
||
cmp ax, 61h ; 'a'
|
||
jb short loc_96C8
|
||
sub dx, 20h ; ' '
|
||
|
||
loc_96C8:
|
||
cmp dx, 41h ; 'A'
|
||
jb short loc_96DC
|
||
cmp dx, 5Ah ; 'Z'
|
||
ja short loc_96DC
|
||
les bx, [bp+s]
|
||
cmp byte ptr es:[bx+1], 3Ah ; ':'
|
||
jz short loc_96F2
|
||
|
||
loc_96DC:
|
||
push ds
|
||
mov ax, 1143h
|
||
push ax
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s]
|
||
push cs
|
||
call near ptr sub_95A1
|
||
add sp, 8
|
||
or ax, dx
|
||
jz short loc_96F7
|
||
|
||
loc_96F2:
|
||
mov [bp+arg_E], 0
|
||
|
||
loc_96F7:
|
||
mov [bp+var_1A], 0
|
||
mov ax, 2Eh ; '.'
|
||
push ax ; char
|
||
push word ptr [bp+s+2]
|
||
push word ptr [bp+s] ; s
|
||
nop
|
||
push cs
|
||
call near ptr strrchr
|
||
add sp, 6
|
||
mov word ptr [bp+s1+2], dx
|
||
mov word ptr [bp+s1], ax
|
||
or ax, dx
|
||
jz short loc_9756
|
||
push [bp+arg_E] ; int
|
||
push ds
|
||
mov ax, 1146h
|
||
push ax ; src
|
||
push ss
|
||
lea ax, [bp+pathname]
|
||
push ax ; pathname
|
||
push word ptr [bp+s+2] ; int
|
||
push word ptr [bp+s] ; int
|
||
push cs
|
||
call near ptr sub_9625
|
||
add sp, 0Eh
|
||
mov [bp+var_18], ax
|
||
or ax, ax
|
||
jnz short loc_973D
|
||
jmp loc_97C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_973D:
|
||
push ds
|
||
mov ax, 1147h
|
||
push ax ; s2
|
||
push word ptr [bp+s1+2]
|
||
push word ptr [bp+s1] ; s1
|
||
nop
|
||
push cs
|
||
call near ptr _stricmp
|
||
add sp, 8
|
||
or ax, ax
|
||
jnz short loc_97C1
|
||
jmp short loc_97BC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9756:
|
||
push [bp+arg_E] ; int
|
||
push ds
|
||
mov ax, 114Ch
|
||
push ax ; src
|
||
push ss
|
||
lea ax, [bp+pathname]
|
||
push ax ; pathname
|
||
push word ptr [bp+s+2] ; int
|
||
push word ptr [bp+s] ; int
|
||
push cs
|
||
call near ptr sub_9625
|
||
add sp, 0Eh
|
||
mov [bp+var_18], ax
|
||
or ax, ax
|
||
jnz short loc_97C1
|
||
push [bp+arg_E] ; int
|
||
push ds
|
||
mov ax, 1151h
|
||
push ax ; src
|
||
push ss
|
||
lea ax, [bp+pathname]
|
||
push ax ; pathname
|
||
push word ptr [bp+s+2] ; int
|
||
push word ptr [bp+s] ; int
|
||
push cs
|
||
call near ptr sub_9625
|
||
add sp, 0Eh
|
||
mov [bp+var_18], ax
|
||
or ax, ax
|
||
jnz short loc_97C1
|
||
push [bp+arg_E] ; int
|
||
push ds
|
||
mov ax, 1156h
|
||
push ax ; src
|
||
push ss
|
||
lea ax, [bp+pathname]
|
||
push ax ; pathname
|
||
push word ptr [bp+s+2] ; int
|
||
push word ptr [bp+s] ; int
|
||
push cs
|
||
call near ptr sub_9625
|
||
add sp, 0Eh
|
||
mov [bp+var_18], ax
|
||
or ax, ax
|
||
jz short loc_97C1
|
||
|
||
loc_97BC:
|
||
mov [bp+var_1A], 1
|
||
|
||
loc_97C1:
|
||
cmp [bp+var_18], 0
|
||
jz short loc_97E3
|
||
cmp [bp+var_1A], 0
|
||
jz short loc_97EC
|
||
push ds
|
||
mov ax, 115Bh
|
||
push ax ; name
|
||
nop
|
||
push cs
|
||
call near ptr _getenv
|
||
pop cx
|
||
pop cx
|
||
mov [bp+var_2], dx
|
||
mov [bp+var_4], ax
|
||
or ax, dx
|
||
jnz short loc_97EC
|
||
|
||
loc_97E3:
|
||
mov _errno, 2
|
||
jmp loc_98B2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_97EC:
|
||
; sub_96AE+133j
|
||
cmp [bp+var_1A], 0
|
||
jz short loc_9805
|
||
push [bp+var_2]
|
||
push [bp+var_4]
|
||
push ds
|
||
mov ax, offset aC ; "/c"
|
||
push ax
|
||
push [bp+arg_8]
|
||
push [bp+arg_6]
|
||
jmp short loc_9819
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9805:
|
||
push ss ; int
|
||
lea ax, [bp+pathname]
|
||
push ax ; int
|
||
xor ax, ax
|
||
push ax
|
||
push ax ; s
|
||
mov ax, [bp+arg_6]
|
||
add ax, 4
|
||
push [bp+arg_8] ; int
|
||
push ax ; int
|
||
|
||
loc_9819:
|
||
call __DOSCMD
|
||
mov [bp+var_6], dx
|
||
mov [bp+var_8], ax
|
||
mov ax, [bp+var_8]
|
||
or ax, [bp+var_6]
|
||
jnz short loc_9833
|
||
mov _errno, 8
|
||
; Hack (jmp loc_98B2)
|
||
db 0e9h, 07fh, 000h
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9833:
|
||
mov ax, [bp+var_8]
|
||
inc ax
|
||
push [bp+var_6]
|
||
push ax ; s
|
||
nop
|
||
push cs
|
||
call near ptr _strlen
|
||
pop cx
|
||
pop cx
|
||
cmp ax, 80h ; '<27>'
|
||
jb short loc_985C
|
||
mov _errno, 14h
|
||
push [bp+var_6]
|
||
push [bp+var_8]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
pop cx
|
||
pop cx
|
||
jmp short loc_98B2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_985C:
|
||
mov ax, [bp+arg_A]
|
||
or ax, [bp+arg_C]
|
||
jnz short loc_9871
|
||
mov dx, word ptr environ@+2
|
||
mov ax, word ptr environ@
|
||
mov [bp+arg_C], dx
|
||
mov [bp+arg_A], ax
|
||
|
||
loc_9871:
|
||
push [bp+arg_C] ; int
|
||
push [bp+arg_A] ; int
|
||
cmp [bp+var_1A], 0
|
||
jz short loc_9885
|
||
mov dx, [bp+var_2]
|
||
mov ax, [bp+var_4]
|
||
jmp short loc_988B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9885:
|
||
mov dx, ss
|
||
lea ax, [bp+pathname]
|
||
|
||
loc_988B:
|
||
push dx
|
||
push ax ; s
|
||
push ss
|
||
lea ax, [bp+var_14]
|
||
push ax ; __int32
|
||
call __DOSENV
|
||
mov [bp+var_A], dx
|
||
mov [bp+var_C], ax
|
||
or ax, dx
|
||
jnz short loc_98B7
|
||
mov _errno, 8
|
||
push [bp+var_6]
|
||
push [bp+var_8]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
pop cx
|
||
pop cx
|
||
|
||
loc_98B2:
|
||
; sub_96AE+182j ...
|
||
mov ax, 0FFFFh
|
||
jmp short loc_9902
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_98B7:
|
||
call _exitbuf
|
||
push [bp+var_A]
|
||
push [bp+var_C]
|
||
push [bp+var_6]
|
||
push [bp+var_8]
|
||
cmp [bp+var_1A], 0
|
||
jz short loc_98D5
|
||
mov dx, [bp+var_2]
|
||
mov ax, [bp+var_4]
|
||
jmp short loc_98DB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_98D5:
|
||
mov dx, ss
|
||
lea ax, [bp+pathname]
|
||
|
||
loc_98DB:
|
||
push dx
|
||
push ax
|
||
call [bp+arg_0]
|
||
add sp, 0Ch
|
||
mov [bp+var_16], ax
|
||
push word ptr [bp+var_14+2]
|
||
push word ptr [bp+var_14]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
push [bp+var_6]
|
||
push [bp+var_8]
|
||
nop
|
||
push cs
|
||
call near ptr _farfree
|
||
add sp, 8
|
||
mov ax, [bp+var_16]
|
||
|
||
loc_9902:
|
||
pop di
|
||
pop si
|
||
mov sp, bp
|
||
pop bp
|
||
retn
|
||
sub_96AE endp
|
||
|
||
seg000 ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
seg001 segment byte public 'CODE' use16
|
||
assume cs:seg001
|
||
;org 8
|
||
assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9908 proc near
|
||
|
||
var_A = word ptr -0Ah
|
||
var_8 = byte ptr -8
|
||
var_7 = byte ptr -7
|
||
var_6 = byte ptr -6
|
||
var_3 = word ptr -3
|
||
|
||
enter 0Ah, 0
|
||
push ds
|
||
push offset aYume_cfg ; "YUME.CFG"
|
||
call file_ropen
|
||
push ss
|
||
lea ax, [bp+var_8]
|
||
push ax
|
||
push 8
|
||
call file_read
|
||
call file_close
|
||
mov ax, [bp+var_3]
|
||
mov [bp+var_A], ax
|
||
mov word ptr dword_FC54+2, ax
|
||
mov word ptr dword_FC54, 0
|
||
les bx, dword_FC54
|
||
mov al, [bp+var_8]
|
||
mov es:[bx+15h], al
|
||
call sub_BEFA
|
||
mov byte_D880, 0
|
||
cmp byte_DDCC, 0
|
||
jnz short loc_9961
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+15h], 0
|
||
mov byte_D880, 1
|
||
jmp short loc_996C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9961:
|
||
cmp [bp+var_8], 0
|
||
jnz short loc_996C
|
||
mov byte_DDCC, 0
|
||
|
||
loc_996C:
|
||
les bx, dword_FC54
|
||
mov al, [bp+var_7]
|
||
mov es:[bx+16h], al
|
||
mov al, [bp+var_6]
|
||
mov es:[bx+0Bh], al
|
||
leave
|
||
retn
|
||
sub_9908 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9980 proc near
|
||
; sub_9BDF+140p ...
|
||
|
||
var_8 = byte ptr -8
|
||
var_7 = byte ptr -7
|
||
var_6 = byte ptr -6
|
||
|
||
enter 8, 0
|
||
push ds
|
||
push offset aYume_cfg ; "YUME.CFG"
|
||
call file_append
|
||
push large 0
|
||
push 0
|
||
call file_seek
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+15h]
|
||
mov [bp+var_8], al
|
||
mov al, es:[bx+16h]
|
||
mov [bp+var_7], al
|
||
mov al, es:[bx+0Bh]
|
||
mov [bp+var_6], al
|
||
push ss
|
||
lea ax, [bp+var_8]
|
||
push ax
|
||
push 4
|
||
call file_write
|
||
call file_close
|
||
leave
|
||
retn
|
||
sub_9980 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_99C3 proc near
|
||
|
||
var_8 = byte ptr -8
|
||
var_7 = byte ptr -7
|
||
var_6 = byte ptr -6
|
||
|
||
enter 8, 0
|
||
lea ax, [bp+var_8]
|
||
push ss
|
||
push ax
|
||
push ds
|
||
push offset unk_D881
|
||
mov cx, 8
|
||
call SCOPY@
|
||
push ds
|
||
push offset aYume_cfg ; "YUME.CFG"
|
||
call file_append
|
||
push large 0
|
||
push 0
|
||
call file_seek
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+15h]
|
||
mov [bp+var_8], al
|
||
mov al, es:[bx+16h]
|
||
mov [bp+var_7], al
|
||
mov al, es:[bx+0Bh]
|
||
mov [bp+var_6], al
|
||
push ss
|
||
lea ax, [bp+var_8]
|
||
push ax
|
||
push 8
|
||
call file_write
|
||
call file_close
|
||
leave
|
||
retn
|
||
sub_99C3 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9A17 proc near
|
||
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
|
||
enter 4, 0
|
||
push si
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+39h], 0
|
||
mov byte ptr es:[bx+17h], 0
|
||
mov byte ptr es:[bx+33h], 0
|
||
mov byte ptr es:[bx+0Eh], 0
|
||
mov byte ptr es:[bx+0Fh], 1
|
||
mov byte ptr es:[bx+28h], 1
|
||
mov byte ptr es:[bx+34h], 2
|
||
mov byte ptr es:[bx+35h], 0
|
||
mov byte ptr es:[bx+0Dh], 0FFh
|
||
call sub_BD9A
|
||
or al, al
|
||
jz short loc_9A59
|
||
mov al, 1
|
||
jmp loc_9B9A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9A59:
|
||
; sub_9A17+11Dj
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+0Ch]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
mov bx, ax
|
||
sar bx, 1
|
||
mov al, [bx+0A0h]
|
||
mov ah, 0
|
||
mov [bp+var_4], ax
|
||
mov bx, word ptr dword_FC54
|
||
mov eax, es:[bx+10h]
|
||
mov random_seed, eax
|
||
xor si, si
|
||
jmp short loc_9ADB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9A85:
|
||
call IRand
|
||
mov bx, 7
|
||
cwd
|
||
idiv bx
|
||
mov [bp+var_2], dx
|
||
mov bx, [bp+var_2]
|
||
cmp byte ptr [bx+99h], 0
|
||
jnz short loc_9A85
|
||
mov ax, [bp+var_4]
|
||
cmp ax, [bp+var_2]
|
||
jz short loc_9A85
|
||
mov byte ptr [bx+99h], 1
|
||
mov ax, [bp+var_2]
|
||
add ax, ax
|
||
inc ax
|
||
mov [bp+var_2], ax
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
mov es:[bx+29h], al
|
||
mov bx, word ptr dword_FC54
|
||
mov al, es:[bx+0Ch]
|
||
mov ah, 0
|
||
cmp ax, [bp+var_2]
|
||
jnz short loc_9ADA
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
inc al
|
||
mov es:[bx+29h], al
|
||
|
||
loc_9ADA:
|
||
inc si
|
||
|
||
loc_9ADB:
|
||
cmp si, 6
|
||
jl short loc_9A85
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+29h]
|
||
mov es:[bx+0Dh], al
|
||
mov al, byte ptr [bp+var_4]
|
||
add al, al
|
||
inc al
|
||
mov es:[bx+2Fh], al
|
||
mov byte ptr es:[bx+30h], 0Fh
|
||
cmp byte ptr es:[bx+0Ch], 0Fh
|
||
jnz short loc_9B07
|
||
inc byte ptr es:[bx+30h]
|
||
|
||
loc_9B07:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+31h], 11h
|
||
cmp byte ptr es:[bx+0Ch], 11h
|
||
jnz short loc_9B1B
|
||
inc byte ptr es:[bx+31h]
|
||
|
||
loc_9B1B:
|
||
xor si, si
|
||
jmp short loc_9B39
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9B1F:
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov al, es:[bx+29h]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
cmp ax, 9
|
||
jge loc_9A59
|
||
inc si
|
||
|
||
loc_9B39:
|
||
cmp si, 9
|
||
jl short loc_9B1F
|
||
xor si, si
|
||
jmp short loc_9B4E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9B42:
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov byte ptr es:[bx+18h], 0
|
||
inc si
|
||
|
||
loc_9B4E:
|
||
cmp si, 10h
|
||
jl short loc_9B42
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+36h], 3
|
||
mov byte ptr es:[bx+37h], 0
|
||
mov al, es:[bx+0Bh]
|
||
mov ah, 0
|
||
imul ax, 19h
|
||
add al, 46h ; 'F'
|
||
mov es:[bx+38h], al
|
||
call sub_9980
|
||
call gaiji_restore
|
||
push 100h
|
||
call sub_C403
|
||
call sub_BFC2
|
||
push large 0
|
||
push ds
|
||
push offset path ; "mainl"
|
||
push ds
|
||
push offset path ; "mainl"
|
||
call _execl
|
||
add sp, 0Ch
|
||
mov al, 0
|
||
|
||
loc_9B9A:
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_9A17 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9B9D proc near
|
||
|
||
arg_0 = word ptr 4
|
||
arg_2 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_2]
|
||
mov si, [bp+arg_0]
|
||
or di, di
|
||
jnz short loc_9BB8
|
||
push large 1B0012h
|
||
push ds
|
||
push offset aIiklmnop ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||
jmp short loc_9BD3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9BB8:
|
||
cmp di, 1
|
||
jnz short loc_9BC9
|
||
push large 1B0013h
|
||
push ds
|
||
push offset aIiklccss ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||
jmp short loc_9BD3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9BC9:
|
||
push large 1B0014h
|
||
push ds
|
||
push offset aTufxmnop ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
|
||
|
||
loc_9BD3:
|
||
push si
|
||
call gaiji_putsa
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 4
|
||
sub_9B9D endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9BDF proc near
|
||
|
||
var_2 = word ptr -2
|
||
|
||
enter 2, 0
|
||
push si
|
||
xor si, si
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+28h], 80h ; '<27>'
|
||
jnb loc_9C8B
|
||
call text_clear
|
||
call sub_B0AF
|
||
mov [bp+var_2], 0
|
||
push large 0E1h ; '<27>'
|
||
call sub_9B9D
|
||
push large 10001h
|
||
call sub_9B9D
|
||
push large 20001h
|
||
call sub_9B9D
|
||
|
||
loc_9C1B:
|
||
call sub_C986
|
||
or si, si
|
||
jnz short loc_9C7E
|
||
test byte ptr word_F296, 1
|
||
jz short loc_9C4A
|
||
push [bp+var_2]
|
||
push 1
|
||
call sub_9B9D
|
||
dec [bp+var_2]
|
||
cmp [bp+var_2], 0
|
||
jge short loc_9C41
|
||
mov [bp+var_2], 2
|
||
|
||
loc_9C41:
|
||
push [bp+var_2]
|
||
push 0E1h ; '<27>'
|
||
call sub_9B9D
|
||
|
||
loc_9C4A:
|
||
test byte ptr word_F296, 2
|
||
jz short loc_9C70
|
||
push [bp+var_2]
|
||
push 1
|
||
call sub_9B9D
|
||
inc [bp+var_2]
|
||
cmp [bp+var_2], 2
|
||
jle short loc_9C67
|
||
mov [bp+var_2], 0
|
||
|
||
loc_9C67:
|
||
push [bp+var_2]
|
||
push 0E1h ; '<27>'
|
||
call sub_9B9D
|
||
|
||
loc_9C70:
|
||
test byte ptr word_F296, 20h
|
||
jnz short loc_9C9B
|
||
test byte ptr word_F296+1, 20h
|
||
jnz short loc_9C9B
|
||
|
||
loc_9C7E:
|
||
mov si, word_F296
|
||
push 1
|
||
call sub_C19E
|
||
jmp short loc_9C1B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9C8B:
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+28h]
|
||
mov ah, 0
|
||
add ax, 0FF80h
|
||
mov [bp+var_2], ax
|
||
|
||
loc_9C9B:
|
||
cmp [bp+var_2], 2
|
||
jnz short loc_9CA5
|
||
mov al, 1
|
||
jmp short loc_9CA7
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9CA5:
|
||
mov al, 0
|
||
|
||
loc_9CA7:
|
||
les bx, dword_FC54
|
||
mov es:[bx+0Eh], al
|
||
cmp [bp+var_2], 1
|
||
jz short loc_9CB9
|
||
mov al, 1
|
||
jmp short loc_9CBB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9CB9:
|
||
mov al, 0
|
||
|
||
loc_9CBB:
|
||
les bx, dword_FC54
|
||
mov es:[bx+0Fh], al
|
||
mov byte ptr es:[bx+39h], 0
|
||
mov byte ptr es:[bx+17h], 0
|
||
mov byte ptr es:[bx+33h], 0
|
||
mov al, byte ptr [bp+var_2]
|
||
add al, 80h ; '<27>'
|
||
mov es:[bx+28h], al
|
||
mov byte ptr es:[bx+35h], 0
|
||
cmp [bp+var_2], 1
|
||
jnz short loc_9CEF
|
||
call sub_BA88
|
||
or al, al
|
||
jz short loc_9D03
|
||
jmp short loc_9CF6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9CEF:
|
||
call sub_BC1F
|
||
or al, al
|
||
jz short loc_9D03
|
||
|
||
loc_9CF6:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+28h], 0
|
||
mov al, 1
|
||
jmp short loc_9D49
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9D03:
|
||
; sub_9BDF+115j
|
||
mov [bp+var_2], 0
|
||
jmp short loc_9D19
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9D0A:
|
||
les bx, dword_FC54
|
||
add bx, [bp+var_2]
|
||
mov byte ptr es:[bx+18h], 0
|
||
inc [bp+var_2]
|
||
|
||
loc_9D19:
|
||
cmp [bp+var_2], 10h
|
||
jl short loc_9D0A
|
||
call sub_9980
|
||
call gaiji_restore
|
||
push 100h
|
||
call sub_C403
|
||
call sub_BFC2
|
||
push large 0
|
||
push ds
|
||
push offset path ; "mainl"
|
||
push ds
|
||
push offset path ; "mainl"
|
||
call _execl
|
||
add sp, 0Ch
|
||
mov al, 0
|
||
|
||
loc_9D49:
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_9BDF endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9D4C proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+0Eh], 1
|
||
mov byte ptr es:[bx+0Fh], 1
|
||
inc byte ptr es:[bx+39h]
|
||
cmp byte ptr es:[bx+39h], 4
|
||
jbe short loc_9D6E
|
||
mov byte ptr es:[bx+39h], 1
|
||
|
||
loc_9D6E:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+17h], 0
|
||
mov byte ptr es:[bx+33h], 0
|
||
mov byte ptr es:[bx+28h], 7Fh ; ''
|
||
mov byte ptr es:[bx+35h], 0
|
||
mov al, es:[bx+39h]
|
||
mov ah, 0
|
||
add ax, ax
|
||
mov bx, ax
|
||
mov al, [bx+0C2h]
|
||
mov bx, word ptr dword_FC54
|
||
mov es:[bx+0Ch], al
|
||
mov al, es:[bx+39h]
|
||
mov ah, 0
|
||
add ax, ax
|
||
mov dx, 0C2h ; '<27>'
|
||
inc dx
|
||
add ax, dx
|
||
mov bx, ax
|
||
mov al, [bx]
|
||
mov bx, word ptr dword_FC54
|
||
mov es:[bx+0Dh], al
|
||
mov al, es:[bx+39h]
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
mov eax, [bx+0C8h]
|
||
mov bx, word ptr dword_FC54
|
||
mov es:[bx+10h], eax
|
||
xor si, si
|
||
jmp short loc_9DDF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9DD3:
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov byte ptr es:[bx+18h], 0
|
||
inc si
|
||
|
||
loc_9DDF:
|
||
cmp si, 10h
|
||
jl short loc_9DD3
|
||
push 1
|
||
call palette_black_out
|
||
call sub_9980
|
||
call gaiji_restore
|
||
push 100h
|
||
call sub_C403
|
||
call sub_BFC2
|
||
push large 0
|
||
push ds
|
||
push offset path ; "mainl"
|
||
push ds
|
||
push offset path ; "mainl"
|
||
call _execl
|
||
add sp, 0Ch
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_9D4C endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9E16 proc near
|
||
; _main:loc_A4BCp
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
mov word_F296, 0
|
||
xor si, si
|
||
jmp short loc_9E43
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9E24:
|
||
call sub_C986
|
||
les bx, dword_FC54
|
||
inc dword ptr es:[bx+10h]
|
||
inc si
|
||
cmp si, 208h
|
||
jle short loc_9E3C
|
||
call sub_9D4C
|
||
|
||
loc_9E3C:
|
||
push 1
|
||
call sub_C19E
|
||
|
||
loc_9E43:
|
||
cmp word_F296, 0
|
||
jz short loc_9E24
|
||
push large 0A00100h
|
||
push 0
|
||
call super_put
|
||
mov si, 0B0h ; '<27>'
|
||
jmp short loc_9E76
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9E5C:
|
||
push si
|
||
call sub_B10A
|
||
push si
|
||
push large 1000002h
|
||
call super_put
|
||
push 1
|
||
call sub_C19E
|
||
add si, 8
|
||
|
||
loc_9E76:
|
||
cmp si, 120h
|
||
jl short loc_9E5C
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_9E16 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9E7F proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+33h], 0FFh
|
||
mov byte ptr es:[bx+35h], 1
|
||
mov byte ptr es:[bx+28h], 0
|
||
xor si, si
|
||
jmp short loc_9EA6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9E9A:
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov byte ptr es:[bx+18h], 0
|
||
inc si
|
||
|
||
loc_9EA6:
|
||
cmp si, 10h
|
||
jl short loc_9E9A
|
||
call sub_9980
|
||
call gaiji_restore
|
||
push 100h
|
||
call sub_C403
|
||
call super_free
|
||
call sub_BFC2
|
||
push large 0
|
||
push ds
|
||
push offset path ; "mainl"
|
||
push ds
|
||
push offset path ; "mainl"
|
||
call _execl
|
||
add sp, 0Ch
|
||
mov al, 0
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_9E7F endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9EDD proc near
|
||
|
||
arg_0 = word ptr 4
|
||
arg_2 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov si, [bp+arg_2]
|
||
mov di, [bp+arg_0]
|
||
or si, si
|
||
jnz short loc_9EF8
|
||
push large 190011h
|
||
push ds
|
||
push offset unk_D8CC
|
||
jmp short loc_9F4B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9EF8:
|
||
cmp si, 1
|
||
jnz short loc_9F09
|
||
push large 170012h
|
||
push ds
|
||
push offset a345678 ; "345678"
|
||
jmp short loc_9F4B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9F09:
|
||
cmp si, 2
|
||
jnz short loc_9F1A
|
||
push large 160013h
|
||
push ds
|
||
push offset aAbcdefg ; "ABCDEFG"
|
||
jmp short loc_9F4B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9F1A:
|
||
cmp si, 3
|
||
jnz short loc_9F2B
|
||
push large 180014h
|
||
push ds
|
||
push offset aVgdej ; "<22><><EFBFBD><EFBFBD><EFBFBD>"
|
||
jmp short loc_9F4B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9F2B:
|
||
cmp si, 4
|
||
jnz short loc_9F3C
|
||
push large 190015h
|
||
push ds
|
||
push offset a?@ ; "=>?@"
|
||
jmp short loc_9F4B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9F3C:
|
||
cmp si, 5
|
||
jnz short loc_9F51
|
||
push large 1A0016h
|
||
push ds
|
||
push offset aHij ; "HIJ"
|
||
|
||
loc_9F4B:
|
||
push di
|
||
call gaiji_putsa
|
||
|
||
loc_9F51:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 4
|
||
sub_9EDD endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_9F57 proc near
|
||
|
||
arg_0 = word ptr 4
|
||
arg_2 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_2]
|
||
mov si, [bp+arg_0]
|
||
or di, di
|
||
jnz short loc_9FD6
|
||
push large 190011h
|
||
push ds
|
||
push offset aNop ; "nop"
|
||
push si
|
||
call gaiji_putsa
|
||
push large 250011h
|
||
push ds
|
||
push offset asc_D965 ; " "
|
||
push 0E1h ; '<27>'
|
||
call text_putsa
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+0Bh]
|
||
mov ah, 0
|
||
mov bx, ax
|
||
cmp bx, 3
|
||
ja loc_A092
|
||
add bx, bx
|
||
jmp cs:off_A099[bx]
|
||
|
||
loc_9FA2:
|
||
push large 260011h
|
||
push ds
|
||
push offset aQrs ; "qrs"
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9FAF:
|
||
push large 250011h
|
||
push ds
|
||
push offset aTuvw ; "tuvw"
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9FBC:
|
||
push large 260011h
|
||
push ds
|
||
push offset aXyz ; "xyz"
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9FC9:
|
||
push large 250011h
|
||
push ds
|
||
push offset asc_D910 ; "{|}~"
|
||
jmp loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9FD6:
|
||
cmp di, 1
|
||
jnz short loc_A02A
|
||
push large 190013h
|
||
push ds
|
||
push offset aKlmn ; "KLMN"
|
||
push si
|
||
call gaiji_putsa
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+15h]
|
||
mov ah, 0
|
||
or ax, ax
|
||
jz short loc_A006
|
||
cmp ax, 1
|
||
jz short loc_A012
|
||
cmp ax, 2
|
||
jz short loc_A01E
|
||
jmp loc_A092
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A006:
|
||
push large 230013h
|
||
push ds
|
||
push offset aZ ; "<22><>Z[<5B><><EFBFBD>"
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A012:
|
||
push large 230013h
|
||
push ds
|
||
push offset aOpqr ; "<22>OPQR<51><52>"
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A01E:
|
||
push large 230013h
|
||
push ds
|
||
push offset aStuvwxy ; "STUVWXY"
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A02A:
|
||
cmp di, 2
|
||
jnz short loc_A07D
|
||
push large 170015h
|
||
push ds
|
||
push offset a_A ; "\\]^_`a"
|
||
push si
|
||
call gaiji_putsa
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+16h]
|
||
mov ah, 0
|
||
or ax, ax
|
||
jz short loc_A059
|
||
cmp ax, 1
|
||
jz short loc_A065
|
||
cmp ax, 2
|
||
jz short loc_A071
|
||
jmp short loc_A092
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A059:
|
||
push large 250015h
|
||
push ds
|
||
push offset aHilmhi ; "hilmhi"
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A065:
|
||
push large 250015h
|
||
push ds
|
||
push offset aJklmhi ; "jklmhi"
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A071:
|
||
push large 250015h
|
||
push ds
|
||
push offset aHilmjk ; "hilmjk"
|
||
jmp short loc_A08C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A07D:
|
||
cmp di, 3
|
||
jnz short loc_A092
|
||
push large 200016h
|
||
push ds
|
||
push offset aHij ; "HIJ"
|
||
|
||
loc_A08C:
|
||
push si
|
||
call gaiji_putsa
|
||
|
||
loc_A092:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 4
|
||
sub_9F57 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
off_A099 dw offset loc_9FA2
|
||
dw offset loc_9FAF
|
||
dw offset loc_9FBC
|
||
dw offset loc_9FC9
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A0A1 proc near
|
||
|
||
arg_0 = byte ptr 4
|
||
arg_2 = byte ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
mov al, byte_D951
|
||
cbw
|
||
push ax
|
||
push 1
|
||
call word_E97E
|
||
mov al, [bp+arg_0]
|
||
add byte_D951, al
|
||
cmp byte_D951, 0
|
||
jge short loc_A0C3
|
||
mov al, [bp+arg_2]
|
||
mov byte_D951, al
|
||
|
||
loc_A0C3:
|
||
mov al, byte_D951
|
||
cmp al, [bp+arg_2]
|
||
jle short loc_A0D0
|
||
mov byte_D951, 0
|
||
|
||
loc_A0D0:
|
||
mov al, byte_D951
|
||
cbw
|
||
push ax
|
||
push 0E1h ; '<27>'
|
||
call word_E97E
|
||
pop bp
|
||
retn 4
|
||
sub_A0A1 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A0E0 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
cmp byte_D954, 0
|
||
jnz short loc_A133
|
||
call text_clear
|
||
cmp byte_D953, 0
|
||
jnz short loc_A0FA
|
||
call sub_B0DB
|
||
|
||
loc_A0FA:
|
||
mov byte_D953, 0
|
||
mov byte_E97A, 0
|
||
xor si, si
|
||
jmp short loc_A11E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A108:
|
||
push si
|
||
mov al, byte_D951
|
||
cbw
|
||
cmp ax, si
|
||
jnz short loc_A116
|
||
mov ax, 0E1h ; '<27>'
|
||
jmp short loc_A119
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A116:
|
||
mov ax, 1
|
||
|
||
loc_A119:
|
||
push ax
|
||
call sub_9EDD
|
||
inc si
|
||
|
||
loc_A11E:
|
||
cmp si, 6
|
||
jl short loc_A108
|
||
mov word_E97E, 5DDh
|
||
mov byte_D954, 1
|
||
mov byte_E97A, 0
|
||
|
||
loc_A133:
|
||
cmp word_F296, 0
|
||
jnz short loc_A13F
|
||
mov byte_E97A, 1
|
||
|
||
loc_A13F:
|
||
cmp byte_E97A, 0
|
||
jz loc_A1F3
|
||
test byte ptr word_F296, 1
|
||
jz short loc_A156
|
||
push 5
|
||
push 0FFFFh
|
||
call sub_A0A1
|
||
|
||
loc_A156:
|
||
test byte ptr word_F296, 2
|
||
jz short loc_A164
|
||
push 5
|
||
push 1
|
||
call sub_A0A1
|
||
|
||
loc_A164:
|
||
test byte ptr word_F296+1, 20h
|
||
jnz short loc_A172
|
||
test byte ptr word_F296, 20h
|
||
jz short loc_A1DB
|
||
|
||
loc_A172:
|
||
mov al, byte_D951
|
||
cbw
|
||
mov bx, ax
|
||
cmp bx, 5
|
||
ja short loc_A1DB
|
||
add bx, bx
|
||
jmp cs:off_A1F7[bx]
|
||
|
||
loc_A184:
|
||
call sub_9A17
|
||
jmp short loc_A19A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A189:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+0Ch], 1
|
||
mov byte ptr es:[bx+0Dh], 1
|
||
call sub_9BDF
|
||
|
||
loc_A19A:
|
||
call sub_B008
|
||
call sub_9E16
|
||
call sub_B3C3
|
||
mov byte_D954, 0
|
||
mov byte_E97A, 0
|
||
mov byte_D953, 1
|
||
jmp short loc_A1F3
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
push cs
|
||
call near ptr sub_AC06
|
||
jmp short loc_A19A
|
||
; ---------------------------------------------------------------------------
|
||
call sub_9E7F
|
||
jmp short loc_A1DB
|
||
; ---------------------------------------------------------------------------
|
||
mov byte_D954, 0
|
||
mov byte_E97C, 1
|
||
mov byte_D951, 0
|
||
jmp short loc_A1DB
|
||
; ---------------------------------------------------------------------------
|
||
mov byte_D954, 0
|
||
mov byte_D952, 1
|
||
|
||
loc_A1DB:
|
||
test byte ptr word_F296+1, 10h
|
||
jz short loc_A1E7
|
||
mov byte_D952, 1
|
||
|
||
loc_A1E7:
|
||
cmp word_F296, 0
|
||
jz short loc_A1F3
|
||
mov byte_E97A, 0
|
||
|
||
loc_A1F3:
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_A0E0 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
off_A1F7 dw offset loc_A184
|
||
dw offset loc_A189
|
||
db 0B4h, 8, 0BBh, 8, 0C0h, 8, 0D1h, 8
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A203 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
cmp byte_D955, 0
|
||
jnz short loc_A24A
|
||
call text_clear
|
||
call sub_B0AF
|
||
mov byte_E97B, 0
|
||
xor si, si
|
||
jmp short loc_A235
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A21F:
|
||
push si
|
||
mov al, byte_D951
|
||
cbw
|
||
cmp ax, si
|
||
jnz short loc_A22D
|
||
mov ax, 0E1h ; '<27>'
|
||
jmp short loc_A230
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A22D:
|
||
mov ax, 1
|
||
|
||
loc_A230:
|
||
push ax
|
||
call sub_9F57
|
||
inc si
|
||
|
||
loc_A235:
|
||
cmp si, 4
|
||
jl short loc_A21F
|
||
mov word_E97E, 657h
|
||
mov byte_D955, 1
|
||
mov byte_E97B, 0
|
||
|
||
loc_A24A:
|
||
cmp word_F296, 0
|
||
jnz short loc_A256
|
||
mov byte_E97B, 1
|
||
|
||
loc_A256:
|
||
cmp byte_E97B, 0
|
||
jz loc_A414
|
||
test byte ptr word_F296, 1
|
||
jz short loc_A26D
|
||
push 3
|
||
push 0FFFFh
|
||
call sub_A0A1
|
||
|
||
loc_A26D:
|
||
test byte ptr word_F296, 2
|
||
jz short loc_A27B
|
||
push 3
|
||
push 1
|
||
call sub_A0A1
|
||
|
||
loc_A27B:
|
||
test byte ptr word_F296, 8
|
||
jz loc_A31D
|
||
mov al, byte_D951
|
||
cbw
|
||
or ax, ax
|
||
jz short loc_A298
|
||
cmp ax, 1
|
||
jz short loc_A2AE
|
||
cmp ax, 2
|
||
jz short loc_A2FE
|
||
jmp short loc_A312
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A298:
|
||
les bx, dword_FC54
|
||
inc byte ptr es:[bx+0Bh]
|
||
cmp byte ptr es:[bx+0Bh], 3
|
||
jbe short loc_A312
|
||
mov byte ptr es:[bx+0Bh], 0
|
||
jmp short loc_A312
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A2AE:
|
||
cmp byte_D880, 0
|
||
jnz short loc_A312
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+15h], 0
|
||
jnz short loc_A2DB
|
||
mov byte ptr es:[bx+15h], 1
|
||
push 100h
|
||
call sub_C403
|
||
call sub_BEFA
|
||
push 0
|
||
call sub_C403
|
||
jmp short loc_A2F1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A2DB:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+15h], 0
|
||
push 100h
|
||
call sub_C403
|
||
mov byte_DDCC, 0
|
||
|
||
loc_A2F1:
|
||
mov al, byte_D951
|
||
cbw
|
||
push ax
|
||
push 0E1h ; '<27>'
|
||
call sub_9F57
|
||
jmp short loc_A312
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A2FE:
|
||
les bx, dword_FC54
|
||
inc byte ptr es:[bx+16h]
|
||
cmp byte ptr es:[bx+16h], 2
|
||
jbe short loc_A312
|
||
mov byte ptr es:[bx+16h], 0
|
||
|
||
loc_A312:
|
||
mov al, byte_D951
|
||
cbw
|
||
push ax
|
||
push 0E1h ; '<27>'
|
||
call sub_9F57
|
||
|
||
loc_A31D:
|
||
test byte ptr word_F296, 4
|
||
jz loc_A3CC
|
||
mov al, byte_D951
|
||
cbw
|
||
or ax, ax
|
||
jz short loc_A33B
|
||
cmp ax, 1
|
||
jz short loc_A357
|
||
cmp ax, 2
|
||
jz short loc_A3A7
|
||
jmp loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A33B:
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+0Bh], 0
|
||
jnz short loc_A34D
|
||
mov byte ptr es:[bx+0Bh], 3
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A34D:
|
||
les bx, dword_FC54
|
||
dec byte ptr es:[bx+0Bh]
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A357:
|
||
cmp byte_D880, 0
|
||
jnz short loc_A3C1
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+15h], 0
|
||
jnz short loc_A384
|
||
mov byte ptr es:[bx+15h], 1
|
||
push 100h
|
||
call sub_C403
|
||
call sub_BEFA
|
||
push 0
|
||
call sub_C403
|
||
jmp short loc_A39A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A384:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+15h], 0
|
||
push 100h
|
||
call sub_C403
|
||
mov byte_DDCC, 0
|
||
|
||
loc_A39A:
|
||
mov al, byte_D951
|
||
cbw
|
||
push ax
|
||
push 0E1h ; '<27>'
|
||
call sub_9F57
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A3A7:
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+16h], 0
|
||
jnz short loc_A3B9
|
||
mov byte ptr es:[bx+16h], 2
|
||
jmp short loc_A3C1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A3B9:
|
||
les bx, dword_FC54
|
||
dec byte ptr es:[bx+16h]
|
||
|
||
loc_A3C1:
|
||
; sub_A203+148j ...
|
||
mov al, byte_D951
|
||
cbw
|
||
push ax
|
||
push 0E1h ; '<27>'
|
||
call sub_9F57
|
||
|
||
loc_A3CC:
|
||
test byte ptr word_F296+1, 20h
|
||
jnz short loc_A3DA
|
||
test byte ptr word_F296, 20h
|
||
jz short loc_A3F2
|
||
|
||
loc_A3DA:
|
||
mov al, byte_D951
|
||
cbw
|
||
cmp ax, 3
|
||
jnz short loc_A3F2
|
||
mov byte_D955, 0
|
||
mov byte_D951, 4
|
||
mov byte_E97C, 0
|
||
|
||
loc_A3F2:
|
||
; sub_A203+1DEj
|
||
test byte ptr word_F296+1, 10h
|
||
jz short loc_A408
|
||
mov byte_D955, 0
|
||
mov byte_D951, 4
|
||
mov byte_E97C, 0
|
||
|
||
loc_A408:
|
||
cmp word_F296, 0
|
||
jz short loc_A414
|
||
mov byte_E97B, 0
|
||
|
||
loc_A414:
|
||
; sub_A203+20Aj
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_A203 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
; int __cdecl main(int argc, const char **argv, const char **envp)
|
||
_main proc far
|
||
|
||
_argc = word ptr 6
|
||
_argv = dword ptr 8
|
||
_envp = dword ptr 0Ch
|
||
|
||
push bp
|
||
mov bp, sp
|
||
call graph_400line
|
||
call text_clear
|
||
call sub_2AC6
|
||
cmp graph_VramZoom, 0
|
||
jz short loc_A452
|
||
push ds
|
||
push offset aVfvcvbgngngbgn ; "<22>f<EFBFBD>c<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɂȂ<C982><C882>Ă<EFBFBD><C482>܂<EFBFBD><DC82>"...
|
||
call dos_puts2
|
||
push ds
|
||
push offset aUmx ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͂Q<CD82>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>łȂ<C582><C882>Ɛ<EFBFBD><C690><EFBFBD><EFBFBD>Ƀ"...
|
||
call dos_puts2
|
||
push ds
|
||
push offset aViosrfvVVkvqbd ; "\n<><6E><EFBFBD>萔<EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>Q<EFBFBD>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɐ<C990><D882>ւ<EFBFBD><D682>āA"...
|
||
|
||
loc_A446:
|
||
call dos_puts2
|
||
call sub_952E
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A452:
|
||
push ds
|
||
push offset aCOul ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.dat"
|
||
call sub_C421
|
||
add sp, 4
|
||
or ax, ax
|
||
jz short loc_A468
|
||
push ds
|
||
push offset aGbgvgkxsslvVBb ; "\n<><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𑝂₵<F0919D82>Ă<EFBFBD>"...
|
||
jmp short loc_A446
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A468:
|
||
call gaiji_backup
|
||
push ds
|
||
push offset aMikoft_bft ; "MIKOFT.bft"
|
||
call gaiji_entry_bfnt
|
||
call sub_9908
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+28h], 80h ; '<27>'
|
||
jb short loc_A497
|
||
cmp byte ptr es:[bx+39h], 0
|
||
jnz short loc_A497
|
||
call sub_B38D
|
||
call sub_B3EF
|
||
call sub_B3C3
|
||
call sub_9BDF
|
||
|
||
loc_A497:
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+37h], 0
|
||
jnz short loc_A4B0
|
||
call sub_ADE2
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+37h], 1
|
||
jmp short loc_A4BC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A4B0:
|
||
les bx, dword_FC54
|
||
mov byte ptr es:[bx+37h], 0
|
||
call sub_B008
|
||
|
||
loc_A4BC:
|
||
call sub_9E16
|
||
mov byte_E97C, 0
|
||
mov word_F296, 0
|
||
call sub_A0E0
|
||
call sub_B3C3
|
||
jmp short loc_A4FE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A4D2:
|
||
call sub_C986
|
||
mov al, byte_E97C
|
||
cbw
|
||
or ax, ax
|
||
jz short loc_A4E6
|
||
cmp ax, 1
|
||
jz short loc_A4EB
|
||
jmp short loc_A4EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A4E6:
|
||
call sub_A0E0
|
||
jmp short loc_A4EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A4EB:
|
||
call sub_A203
|
||
|
||
loc_A4EE:
|
||
les bx, dword_FC54
|
||
inc dword ptr es:[bx+10h]
|
||
push 1
|
||
call sub_C19E
|
||
|
||
loc_A4FE:
|
||
cmp byte_D952, 0
|
||
jz short loc_A4D2
|
||
call sub_99C3
|
||
call gaiji_restore
|
||
call text_clear
|
||
call sub_BEB8
|
||
call sub_2B3C
|
||
pop bp
|
||
retf
|
||
_main endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A51E proc near
|
||
|
||
var_1 = byte ptr -1
|
||
arg_0 = byte ptr 4
|
||
arg_2 = byte ptr 6
|
||
|
||
enter 2, 0
|
||
mov al, 1
|
||
sub al, byte ptr word_F828+1
|
||
mov [bp+var_1], al
|
||
mov dx, 0A6h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 10h
|
||
mov al, [bp+arg_2]
|
||
mov ah, 0
|
||
shl ax, 4
|
||
add ax, 28h ; '('
|
||
push ax
|
||
mov al, [bp+arg_0]
|
||
mov ah, 0
|
||
or ax, 20h
|
||
push ax
|
||
mov al, [bp+arg_2]
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
push large dword ptr [bx+5F2h]
|
||
call sub_C6DB
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, byte ptr word_F828+1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 10h
|
||
mov al, [bp+arg_2]
|
||
mov ah, 0
|
||
shl ax, 4
|
||
add ax, 28h ; '('
|
||
push ax
|
||
mov al, [bp+arg_0]
|
||
mov ah, 0
|
||
or ax, 20h
|
||
push ax
|
||
mov al, [bp+arg_2]
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
push large dword ptr [bx+5F2h]
|
||
call sub_C6DB
|
||
leave
|
||
retn 4
|
||
sub_A51E endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A590 proc near
|
||
|
||
arg_0 = byte ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
xor si, si
|
||
jmp short loc_A5AD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A598:
|
||
push si
|
||
mov al, [bp+arg_0]
|
||
mov ah, 0
|
||
cmp ax, si
|
||
jnz short loc_A5A6
|
||
mov al, 0Fh
|
||
jmp short loc_A5A8
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A5A6:
|
||
mov al, 3
|
||
|
||
loc_A5A8:
|
||
push ax
|
||
call sub_A51E
|
||
inc si
|
||
|
||
loc_A5AD:
|
||
cmp si, 15h
|
||
jl short loc_A598
|
||
pop si
|
||
pop bp
|
||
retn 2
|
||
sub_A590 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A5B7 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push 7D00h
|
||
call hmem_allocbyte
|
||
mov word_F82A, ax
|
||
xor si, si
|
||
jmp short loc_A5DF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A5CA:
|
||
les bx, dword_F1EA
|
||
add bx, si
|
||
mov eax, es:[bx]
|
||
mov es, word_F82A
|
||
mov es:[si], eax
|
||
add si, 4
|
||
|
||
loc_A5DF:
|
||
cmp si, 7D00h
|
||
jl short loc_A5CA
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_A5B7 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A5E8 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push word_F82A
|
||
call hmem_free
|
||
pop bp
|
||
retn
|
||
sub_A5E8 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A5F6 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
push ds
|
||
mov ax, 0A800h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov ax, word_F82A
|
||
mov ds, ax
|
||
xor di, di
|
||
xor si, si
|
||
mov cx, 3E80h
|
||
rep movsw
|
||
pop ds
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_A5F6 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A614 proc near
|
||
|
||
var_3 = byte ptr -3
|
||
var_2 = word ptr -2
|
||
arg_0 = byte ptr 4
|
||
arg_2 = word ptr 6
|
||
arg_4 = word ptr 8
|
||
arg_6 = word ptr 0Ah
|
||
arg_8 = word ptr 0Ch
|
||
arg_A = word ptr 0Eh
|
||
|
||
enter 4, 0
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_A]
|
||
sar [bp+arg_6], 4
|
||
mov [bp+var_2], 0
|
||
jmp short loc_A67F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A628:
|
||
mov ax, [bp+var_2]
|
||
shl ax, 8
|
||
cwd
|
||
idiv [bp+arg_2]
|
||
add al, [bp+arg_0]
|
||
mov [bp+var_3], al
|
||
mov ah, 0
|
||
add ax, ax
|
||
mov bx, ax
|
||
push word ptr [bx+396h]
|
||
push [bp+arg_4]
|
||
push [bp+arg_8]
|
||
call sub_C005
|
||
add sp, 6
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
mov [bx+di], ax
|
||
mov al, [bp+var_3]
|
||
mov ah, 0
|
||
add ax, ax
|
||
mov bx, ax
|
||
push word ptr [bx+316h]
|
||
push [bp+arg_4]
|
||
push [bp+arg_6]
|
||
call sub_C005
|
||
add sp, 6
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
mov [bx+di+2], ax
|
||
inc [bp+var_2]
|
||
|
||
loc_A67F:
|
||
mov ax, [bp+var_2]
|
||
cmp ax, [bp+arg_2]
|
||
jl short loc_A628
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
mov ax, [di]
|
||
mov [bx+di], ax
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
mov ax, [di+2]
|
||
mov [bx+di+2], ax
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn 0Ch
|
||
sub_A614 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A6A3 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
cmp byte_DE82, 0
|
||
jnz loc_A752
|
||
xor si, si
|
||
jmp loc_A746
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A6B5:
|
||
call IRand
|
||
mov bx, 280h
|
||
cwd
|
||
idiv bx
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1F98h], dx
|
||
call IRand
|
||
mov bx, 1900h
|
||
cwd
|
||
idiv bx
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1F9Ah], dx
|
||
call IRand
|
||
and ax, 7
|
||
mov dx, 4
|
||
sub dx, ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1FD8h], dx
|
||
mov bx, si
|
||
shl bx, 2
|
||
cmp word ptr [bx+1FD8h], 0
|
||
jnz short loc_A70A
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov word ptr [bx+1FD8h], 1
|
||
|
||
loc_A70A:
|
||
call IRand
|
||
and ax, 3
|
||
shl ax, 4
|
||
add ax, 20h ; ' '
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1FDAh], ax
|
||
call IRand
|
||
mov [si+2018h], al
|
||
call IRand
|
||
and al, 7
|
||
mov dl, 4
|
||
sub dl, al
|
||
mov [si+2028h], dl
|
||
cmp byte ptr [si+2028h], 0
|
||
jnz short loc_A745
|
||
mov byte ptr [si+2028h], 4
|
||
|
||
loc_A745:
|
||
inc si
|
||
|
||
loc_A746:
|
||
cmp si, 10h
|
||
jl loc_A6B5
|
||
mov byte_DE82, 1
|
||
|
||
loc_A752:
|
||
xor si, si
|
||
jmp loc_A88F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A757:
|
||
push 1F70h
|
||
mov bx, si
|
||
shl bx, 2
|
||
push word ptr [bx+1F98h]
|
||
mov bx, si
|
||
shl bx, 2
|
||
push word ptr [bx+1F9Ah]
|
||
mov ax, si
|
||
and ax, 3
|
||
shl ax, 4
|
||
add ax, 40h ; '@'
|
||
push ax
|
||
mov ax, si
|
||
mov bx, 4
|
||
cwd
|
||
idiv bx
|
||
add ax, 3
|
||
push ax
|
||
mov al, [si+2018h]
|
||
push ax
|
||
call sub_A614
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov ax, [bx+1FD8h]
|
||
mov bx, si
|
||
shl bx, 2
|
||
add [bx+1F98h], ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov ax, [bx+1FDAh]
|
||
mov bx, si
|
||
shl bx, 2
|
||
add [bx+1F9Ah], ax
|
||
mov al, [si+2028h]
|
||
add [si+2018h], al
|
||
mov bx, si
|
||
shl bx, 2
|
||
cmp word ptr [bx+1F98h], 0
|
||
jle short loc_A7D1
|
||
mov bx, si
|
||
shl bx, 2
|
||
cmp word ptr [bx+1F98h], 27Fh
|
||
jl short loc_A7E3
|
||
|
||
loc_A7D1:
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov dx, 0FFFFh
|
||
mov ax, [bx+1FD8h]
|
||
imul dx
|
||
mov [bx+1FD8h], ax
|
||
|
||
loc_A7E3:
|
||
mov bx, si
|
||
shl bx, 2
|
||
cmp word ptr [bx+1F9Ah], 1F40h
|
||
jl loc_A879
|
||
call IRand
|
||
mov bx, 280h
|
||
cwd
|
||
idiv bx
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1F98h], dx
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov word ptr [bx+1F9Ah], 0F9C0h
|
||
call IRand
|
||
and ax, 0Fh
|
||
mov dx, 8
|
||
sub dx, ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1FD8h], dx
|
||
mov bx, si
|
||
shl bx, 2
|
||
cmp word ptr [bx+1FD8h], 0
|
||
jnz short loc_A83E
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov word ptr [bx+1FD8h], 1
|
||
|
||
loc_A83E:
|
||
call IRand
|
||
and ax, 3
|
||
shl ax, 4
|
||
add ax, 20h ; ' '
|
||
mov bx, si
|
||
shl bx, 2
|
||
mov [bx+1FDAh], ax
|
||
call IRand
|
||
mov [si+2018h], al
|
||
call IRand
|
||
and al, 7
|
||
mov dl, 4
|
||
sub dl, al
|
||
mov [si+2028h], dl
|
||
cmp byte ptr [si+2028h], 0
|
||
jnz short loc_A879
|
||
mov byte ptr [si+2028h], 4
|
||
|
||
loc_A879:
|
||
; sub_A6A3+1CFj
|
||
push ds
|
||
push offset unk_F760
|
||
mov ax, si
|
||
mov bx, 4
|
||
cwd
|
||
idiv bx
|
||
add ax, 3
|
||
push ax
|
||
call grcg_polygon_c
|
||
inc si
|
||
|
||
loc_A88F:
|
||
cmp si, 10h
|
||
jl loc_A757
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_A6A3 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A899 proc near
|
||
; sub_AC06+188p ...
|
||
push bp
|
||
mov bp, sp
|
||
call sub_A5F6
|
||
push large 0CE000Fh
|
||
call grcg_setcolor
|
||
call sub_A6A3
|
||
call grcg_off
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, byte ptr word_F828+1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, 1
|
||
sub al, byte ptr word_F828+1
|
||
mov byte ptr word_F828+1, al
|
||
mov dx, 0A6h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 1
|
||
call sub_CB86
|
||
pop bp
|
||
retn
|
||
sub_A899 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_A8CF proc near
|
||
|
||
var_6 = word ptr -6
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
|
||
enter 6, 0
|
||
push si
|
||
push di
|
||
mov [bp+var_6], 0
|
||
jmp short loc_A8F7
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A8DC:
|
||
push 3200h
|
||
call hmem_allocbyte
|
||
mov bx, [bp+var_6]
|
||
shl bx, 2
|
||
mov [bx+203Eh], ax
|
||
mov word ptr [bx+203Ch], 0
|
||
inc [bp+var_6]
|
||
|
||
loc_A8F7:
|
||
cmp [bp+var_6], 4
|
||
jl short loc_A8DC
|
||
xor si, si
|
||
mov di, 40h ; '@'
|
||
jmp short loc_A97D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A904:
|
||
mov [bp+var_2], 130h
|
||
jmp short loc_A975
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A90B:
|
||
mov ax, [bp+var_2]
|
||
sar ax, 3
|
||
mov dx, di
|
||
shl dx, 6
|
||
add ax, dx
|
||
mov dx, di
|
||
shl dx, 4
|
||
add ax, dx
|
||
mov [bp+var_4], ax
|
||
les bx, dword_F1EA
|
||
assume es:nothing
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F82C
|
||
mov es:[bx+si], eax
|
||
les bx, dword_F1EE
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F830
|
||
mov es:[bx+si], eax
|
||
les bx, dword_F1F2
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F834
|
||
mov es:[bx+si], eax
|
||
les bx, dword_F1F6
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F838
|
||
mov es:[bx+si], eax
|
||
add si, 4
|
||
add [bp+var_2], 20h ; ' '
|
||
|
||
loc_A975:
|
||
cmp [bp+var_2], 270h
|
||
jl short loc_A90B
|
||
inc di
|
||
|
||
loc_A97D:
|
||
cmp di, 50h ; 'P'
|
||
jl short loc_A904
|
||
mov di, 50h ; 'P'
|
||
jmp short loc_AA00
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A987:
|
||
mov [bp+var_2], 130h
|
||
jmp short loc_A9F8
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A98E:
|
||
mov ax, [bp+var_2]
|
||
sar ax, 3
|
||
mov dx, di
|
||
shl dx, 6
|
||
add ax, dx
|
||
mov dx, di
|
||
shl dx, 4
|
||
add ax, dx
|
||
mov [bp+var_4], ax
|
||
les bx, dword_F1EA
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F82C
|
||
mov es:[bx+si], eax
|
||
les bx, dword_F1EE
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F830
|
||
mov es:[bx+si], eax
|
||
les bx, dword_F1F2
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F834
|
||
mov es:[bx+si], eax
|
||
les bx, dword_F1F6
|
||
add bx, [bp+var_4]
|
||
mov eax, es:[bx]
|
||
les bx, dword ptr unk_F838
|
||
mov es:[bx+si], eax
|
||
add si, 4
|
||
add [bp+var_2], 20h ; ' '
|
||
|
||
loc_A9F8:
|
||
cmp [bp+var_2], 270h
|
||
jl short loc_A98E
|
||
inc di
|
||
|
||
loc_AA00:
|
||
cmp di, 180h
|
||
jl short loc_A987
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_A8CF endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_AA0A proc near
|
||
|
||
arg_0 = word ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push ds
|
||
push offset aMusic_txt ; "MUSIC.TXT"
|
||
call file_ropen
|
||
mov ax, [bp+arg_0]
|
||
imul ax, 348h
|
||
cwde
|
||
push eax
|
||
push 0
|
||
call file_seek
|
||
push ds
|
||
push offset unk_F83C
|
||
push 348h
|
||
call file_read
|
||
call file_close
|
||
xor si, si
|
||
jmp short loc_AA49
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AA3E:
|
||
mov bx, si
|
||
imul bx, 2Ah
|
||
mov byte ptr [bx+2074h], 0
|
||
inc si
|
||
|
||
loc_AA49:
|
||
cmp si, 14h
|
||
jl short loc_AA3E
|
||
pop si
|
||
pop bp
|
||
retn 2
|
||
sub_AA0A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_AA53 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push word_F82E
|
||
call hmem_free
|
||
push word_F832
|
||
call hmem_free
|
||
push word_F836
|
||
call hmem_free
|
||
push word_F83A
|
||
call hmem_free
|
||
pop bp
|
||
retn
|
||
sub_AA53 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_AA7C proc near
|
||
|
||
var_2 = word ptr -2
|
||
|
||
enter 2, 0
|
||
push si
|
||
push di
|
||
xor cx, cx
|
||
mov si, 40h ; '@'
|
||
jmp short loc_AB05
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AA89:
|
||
mov di, 130h
|
||
jmp short loc_AAFE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AA8E:
|
||
mov ax, di
|
||
sar ax, 3
|
||
mov dx, si
|
||
shl dx, 6
|
||
add ax, dx
|
||
mov dx, si
|
||
shl dx, 4
|
||
add ax, dx
|
||
mov [bp+var_2], ax
|
||
les bx, dword ptr unk_F82C
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1EA
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
les bx, dword ptr unk_F830
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1EE
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
les bx, dword ptr unk_F834
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1F2
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
les bx, dword ptr unk_F838
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1F6
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
add cx, 4
|
||
add di, 20h ; ' '
|
||
|
||
loc_AAFE:
|
||
cmp di, 270h
|
||
jl short loc_AA8E
|
||
inc si
|
||
|
||
loc_AB05:
|
||
cmp si, 50h ; 'P'
|
||
jl loc_AA89
|
||
mov si, 50h ; 'P'
|
||
jmp short loc_AB8D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AB11:
|
||
mov di, 130h
|
||
jmp short loc_AB86
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AB16:
|
||
mov ax, di
|
||
sar ax, 3
|
||
mov dx, si
|
||
shl dx, 6
|
||
add ax, dx
|
||
mov dx, si
|
||
shl dx, 4
|
||
add ax, dx
|
||
mov [bp+var_2], ax
|
||
les bx, dword ptr unk_F82C
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1EA
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
les bx, dword ptr unk_F830
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1EE
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
les bx, dword ptr unk_F834
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1F2
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
les bx, dword ptr unk_F838
|
||
add bx, cx
|
||
mov eax, es:[bx]
|
||
les bx, dword_F1F6
|
||
add bx, [bp+var_2]
|
||
mov es:[bx], eax
|
||
add cx, 4
|
||
add di, 20h ; ' '
|
||
|
||
loc_AB86:
|
||
cmp di, 270h
|
||
jl short loc_AB16
|
||
inc si
|
||
|
||
loc_AB8D:
|
||
cmp si, 180h
|
||
jl loc_AB11
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_AA7C endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_AB99 proc near
|
||
|
||
arg_0 = word ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
push [bp+arg_0]
|
||
call sub_AA0A
|
||
call sub_A5F6
|
||
call sub_AA7C
|
||
push large 1300040h
|
||
push 1Fh
|
||
push ds
|
||
push offset unk_F83C
|
||
call sub_C6DB
|
||
mov di, 1
|
||
jmp short loc_ABDC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ABC0:
|
||
push 130h
|
||
lea ax, [di+4]
|
||
shl ax, 4
|
||
push ax
|
||
push 1Dh
|
||
push ds
|
||
mov ax, di
|
||
imul ax, 2Ah
|
||
add ax, 204Ch
|
||
push ax
|
||
call sub_C6DB
|
||
inc di
|
||
|
||
loc_ABDC:
|
||
cmp di, 14h
|
||
jl short loc_ABC0
|
||
xor si, si
|
||
jmp short loc_ABFA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ABE5:
|
||
les bx, dword_F1EA
|
||
add bx, si
|
||
mov eax, es:[bx]
|
||
mov es, word_F82A
|
||
mov es:[si], eax
|
||
add si, 4
|
||
|
||
loc_ABFA:
|
||
cmp si, 7D00h
|
||
jl short loc_ABE5
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 2
|
||
sub_AB99 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_AC06 proc far
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
xor si, si
|
||
jmp short loc_AC15
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AC0E:
|
||
push si
|
||
call sub_C69C
|
||
inc si
|
||
|
||
loc_AC15:
|
||
cmp si, 20h ; ' '
|
||
jl short loc_AC0E
|
||
call super_free
|
||
call text_clear
|
||
mov byte ptr word_F828+1, 1
|
||
mov PaletteTone, 0
|
||
call far ptr palette_show
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A6h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 0
|
||
push ds
|
||
push offset aOp3_pi ; "op3.pi"
|
||
call sub_C940
|
||
push 0
|
||
call sub_C356
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
push ds
|
||
push offset unk_F4B0
|
||
push large [dword_F498]
|
||
call graph_pi_free
|
||
mov al, byte_DE83
|
||
mov byte ptr word_F828, al
|
||
push word_F828
|
||
call sub_A590
|
||
push 0
|
||
call graph_copy_page
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call sub_A5B7
|
||
call sub_A8CF
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, byte_DE83
|
||
mov ah, 0
|
||
push ax
|
||
call sub_AB99
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, byte_DE83
|
||
mov ah, 0
|
||
push ax
|
||
call sub_AB99
|
||
mov PaletteTone, 64h ; 'd'
|
||
call far ptr palette_show
|
||
|
||
loc_ACC2:
|
||
; sub_AC06+1A0j
|
||
call sub_C986
|
||
cmp word_F296, 0
|
||
jz short loc_ACD3
|
||
call sub_A899
|
||
jmp short loc_ACC2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ACD3:
|
||
; sub_AC06+1A7j
|
||
call sub_C986
|
||
test byte ptr word_F296, 1
|
||
jz short loc_AD0E
|
||
push word_F828
|
||
push 3
|
||
call sub_A51E
|
||
cmp byte ptr word_F828, 0
|
||
jbe short loc_ACF5
|
||
dec byte ptr word_F828
|
||
jmp short loc_ACFA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ACF5:
|
||
mov byte ptr word_F828, 14h
|
||
|
||
loc_ACFA:
|
||
cmp byte ptr word_F828, 13h
|
||
jnz short loc_AD05
|
||
dec byte ptr word_F828
|
||
|
||
loc_AD05:
|
||
push word_F828
|
||
push 0Fh
|
||
call sub_A51E
|
||
|
||
loc_AD0E:
|
||
test byte ptr word_F296, 2
|
||
jz short loc_AD44
|
||
push word_F828
|
||
push 3
|
||
call sub_A51E
|
||
cmp byte ptr word_F828, 14h
|
||
jnb short loc_AD2B
|
||
inc byte ptr word_F828
|
||
jmp short loc_AD30
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AD2B:
|
||
mov byte ptr word_F828, 0
|
||
|
||
loc_AD30:
|
||
cmp byte ptr word_F828, 13h
|
||
jnz short loc_AD3B
|
||
inc byte ptr word_F828
|
||
|
||
loc_AD3B:
|
||
push word_F828
|
||
push 0Fh
|
||
call sub_A51E
|
||
|
||
loc_AD44:
|
||
test byte ptr word_F296, 20h
|
||
jnz short loc_AD52
|
||
test byte ptr word_F296+1, 20h
|
||
jz short loc_AD9A
|
||
|
||
loc_AD52:
|
||
cmp byte ptr word_F828, 14h
|
||
jz short loc_ADB0
|
||
push 100h
|
||
call sub_C403
|
||
push 600h
|
||
mov al, byte ptr word_F828
|
||
mov ah, 0
|
||
shl ax, 2
|
||
mov bx, ax
|
||
push large dword ptr [bx+646h]
|
||
call sub_BF52
|
||
add sp, 6
|
||
push 0
|
||
call sub_C403
|
||
mov al, byte ptr word_F828
|
||
mov byte_DE83, al
|
||
mov ah, 0
|
||
push ax
|
||
call sub_AB99
|
||
call sub_A899
|
||
mov al, byte ptr word_F828
|
||
mov ah, 0
|
||
push ax
|
||
call sub_AB99
|
||
|
||
loc_AD9A:
|
||
test byte ptr word_F296+1, 10h
|
||
jnz short loc_ADB0
|
||
cmp word_F296, 0
|
||
jnz loc_ACC2
|
||
call sub_A899
|
||
jmp loc_ACD3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ADB0:
|
||
; sub_AC06+199j ...
|
||
call sub_C986
|
||
cmp word_F296, 0
|
||
jz short loc_ADC1
|
||
call sub_A899
|
||
jmp short loc_ADB0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ADC1:
|
||
call sub_A5E8
|
||
call sub_AA53
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A6h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
pop si
|
||
pop bp
|
||
retf
|
||
sub_AC06 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_ADE2 proc near
|
||
|
||
var_3 = byte ptr -3
|
||
var_2 = word ptr -2
|
||
|
||
enter 4, 0
|
||
push si
|
||
mov [bp+var_2], 0
|
||
mov [bp+var_3], 0
|
||
push ds
|
||
push offset aOpwin_bft ; "opwin.bft"
|
||
call super_entry_bfnt
|
||
push 100h
|
||
call sub_C403
|
||
push 600h
|
||
push ds
|
||
push offset aOp_m ; "op.m"
|
||
call sub_BF52
|
||
add sp, 6
|
||
push 0
|
||
push ds
|
||
push offset aTl01_pi ; "TL01.PI"
|
||
call sub_C940
|
||
mov PaletteTone, 0
|
||
call far ptr palette_show
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 0
|
||
call sub_C356
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
push 2
|
||
call egc_shift_left_all
|
||
mov Palettes+45, 0
|
||
mov Palettes+46, 0
|
||
mov Palettes+47, 0
|
||
call far ptr palette_show
|
||
mov Palettes+33, 0
|
||
mov Palettes+34, 0
|
||
mov Palettes+35, 0
|
||
call far ptr palette_show
|
||
push ds
|
||
push offset unk_F4B0
|
||
push large [dword_F498]
|
||
call graph_pi_free
|
||
push 0
|
||
push ds
|
||
push offset aTl02_pi ; "TL02.PI"
|
||
call sub_C940
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov si, 0A0h ; '<27>'
|
||
jmp short loc_AF02
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AEA0:
|
||
push 1
|
||
call sub_C19E
|
||
mov al, byte ptr [bp+var_2]
|
||
mov Palettes+45, al
|
||
mov Palettes+46, al
|
||
mov Palettes+47, al
|
||
call far ptr palette_show
|
||
cmp [bp+var_2], 80h ; '<27>'
|
||
jg short loc_AECB
|
||
mov al, byte ptr [bp+var_2]
|
||
mov Palettes+33, al
|
||
mov Palettes+34, al
|
||
mov Palettes+35, al
|
||
|
||
loc_AECB:
|
||
call far ptr palette_show
|
||
cmp [bp+var_2], 64h ; 'd'
|
||
jg short loc_AEE1
|
||
mov ax, [bp+var_2]
|
||
mov PaletteTone, ax
|
||
call far ptr palette_show
|
||
|
||
loc_AEE1:
|
||
add [bp+var_2], 2
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, [bp+var_3]
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, 1
|
||
sub al, [bp+var_3]
|
||
mov [bp+var_3], al
|
||
mov dx, 0A6h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 4
|
||
call egc_shift_left_all
|
||
sub si, 2
|
||
|
||
loc_AF02:
|
||
cmp si, 11h
|
||
jg short loc_AEA0
|
||
jmp short loc_AF25
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AF09:
|
||
mov al, byte ptr [bp+var_2]
|
||
mov Palettes+45, al
|
||
mov Palettes+46, al
|
||
mov Palettes+47, al
|
||
call far ptr palette_show
|
||
add [bp+var_2], 2
|
||
push 1
|
||
call sub_C19E
|
||
|
||
loc_AF25:
|
||
cmp [bp+var_2], 0FFh
|
||
jl short loc_AF09
|
||
mov vsync_Count1, 0
|
||
call sub_B3EF
|
||
|
||
loc_AF35:
|
||
cmp vsync_Count1, 10h
|
||
jb short loc_AF35
|
||
xor si, si
|
||
jmp short loc_AF65
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AF40:
|
||
mov PaletteTone, 0C8h ; '<27>'
|
||
call far ptr palette_show
|
||
push 1
|
||
call sub_C19E
|
||
mov PaletteTone, 64h ; 'd'
|
||
call far ptr palette_show
|
||
push 1
|
||
call sub_C19E
|
||
inc si
|
||
|
||
loc_AF65:
|
||
cmp si, 8
|
||
jl short loc_AF40
|
||
mov PaletteTone, 0C8h ; '<27>'
|
||
call far ptr palette_show
|
||
push 0
|
||
call sub_C403
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A6h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 0
|
||
call sub_C356
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
push 1
|
||
call sub_C19E
|
||
mov PaletteTone, 64h ; 'd'
|
||
call far ptr palette_show
|
||
push 1
|
||
call sub_C19E
|
||
xor si, si
|
||
jmp short loc_AFD9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AFB4:
|
||
mov PaletteTone, 0C8h ; '<27>'
|
||
call far ptr palette_show
|
||
push 1
|
||
call sub_C19E
|
||
mov PaletteTone, 64h ; 'd'
|
||
call far ptr palette_show
|
||
push 1
|
||
call sub_C19E
|
||
inc si
|
||
|
||
loc_AFD9:
|
||
cmp si, 8
|
||
jl short loc_AFB4
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push ds
|
||
push offset unk_F4B0
|
||
push large [dword_F498]
|
||
call graph_pi_free
|
||
call sub_B38D
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_ADE2 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B008 proc near
|
||
; _main+A2p
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push ds
|
||
push offset aOpwin_bft ; "opwin.bft"
|
||
call super_entry_bfnt
|
||
push 100h
|
||
call sub_C403
|
||
push 600h
|
||
push ds
|
||
push offset aOp_m ; "op.m"
|
||
call sub_BF52
|
||
add sp, 6
|
||
mov PaletteTone, 0
|
||
call far ptr palette_show
|
||
push 0
|
||
push ds
|
||
push offset aTl02_pi ; "TL02.PI"
|
||
call sub_C940
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call sub_B3EF
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push 0
|
||
call sub_C356
|
||
push large 0
|
||
push 0
|
||
call sub_C37B
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push ds
|
||
push offset unk_F4B0
|
||
push large [dword_F498]
|
||
call graph_pi_free
|
||
call sub_B38D
|
||
push 0
|
||
call sub_C403
|
||
xor si, si
|
||
jmp short loc_B0A7
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B094:
|
||
mov PaletteTone, si
|
||
call far ptr palette_show
|
||
push 1
|
||
call sub_C19E
|
||
add si, 4
|
||
|
||
loc_B0A7:
|
||
cmp si, 64h ; 'd'
|
||
jle short loc_B094
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B008 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B0AF proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
mov si, 120h
|
||
jmp short loc_B0D2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B0B8:
|
||
push si
|
||
call sub_B10A
|
||
push si
|
||
push large 1000002h
|
||
call super_put
|
||
push 1
|
||
call sub_C19E
|
||
add si, 8
|
||
|
||
loc_B0D2:
|
||
cmp si, 188h
|
||
jl short loc_B0B8
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B0AF endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B0DB proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
mov si, 180h
|
||
jmp short loc_B101
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B0E4:
|
||
lea ax, [si+8]
|
||
push ax
|
||
call sub_B10A
|
||
push si
|
||
push large 1000002h
|
||
call super_put
|
||
push 1
|
||
call sub_C19E
|
||
sub si, 8
|
||
|
||
loc_B101:
|
||
cmp si, 118h
|
||
jge short loc_B0E4
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B0DB endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B10A proc near
|
||
|
||
arg_0 = word ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov ax, [bp+arg_0]
|
||
shr ax, 3
|
||
mov di, 77B0h
|
||
add di, ax
|
||
mov ax, 0AD00h
|
||
mov es, ax
|
||
assume es:nothing
|
||
|
||
loc_B11F:
|
||
mov al, 1
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
mov dx, es:[di]
|
||
mov ax, 0B500h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov cx, es:[di]
|
||
mov ax, 0BD00h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov bx, es:[di]
|
||
mov ax, 0E500h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov si, es:[di]
|
||
xor al, al
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
mov es:[di], si
|
||
mov ax, 0BD00h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov es:[di], bx
|
||
mov ax, 0B500h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov es:[di], cx
|
||
mov ax, 0AD00h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov es:[di], dx
|
||
sub di, 50h ; 'P'
|
||
jnb short loc_B11F
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn 2
|
||
sub_B10A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B168 proc near
|
||
|
||
var_4 = word ptr -4
|
||
var_1 = byte ptr -1
|
||
arg_0 = word ptr 4
|
||
|
||
enter 4, 0
|
||
push si
|
||
push di
|
||
mov [bp+var_4], 0
|
||
call IRand
|
||
mov byte_FC50, al
|
||
call IRand
|
||
mov byte_FC51, al
|
||
call IRand
|
||
mov byte_FBD7, al
|
||
mov si, 2396h
|
||
xor di, di
|
||
jmp short loc_B19B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B192:
|
||
mov al, [si]
|
||
mov ah, 0
|
||
add [bp+var_4], ax
|
||
inc di
|
||
inc si
|
||
|
||
loc_B19B:
|
||
cmp di, 0CCh ; '<27>'
|
||
jl short loc_B192
|
||
mov ax, [bp+var_4]
|
||
mov word_FB84, ax
|
||
mov si, 2460h
|
||
dec si
|
||
mov al, byte_FC51
|
||
mov [bp+var_1], al
|
||
mov di, 0CBh ; '<27>'
|
||
jmp short loc_B1D4
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B1B6:
|
||
mov al, [si]
|
||
mov dl, byte_FC50
|
||
add dl, [bp+var_1]
|
||
sub al, dl
|
||
mov [si], al
|
||
mov al, [si]
|
||
mov [bp+var_1], al
|
||
mov al, byte_FC51
|
||
ror [bp+var_1], 3
|
||
xor [bp+var_1], al
|
||
dec di
|
||
dec si
|
||
|
||
loc_B1D4:
|
||
or di, di
|
||
jge short loc_B1B6
|
||
push ds
|
||
push word_E1F2
|
||
call file_append
|
||
mov ax, [bp+arg_0]
|
||
imul ax, 0CEh
|
||
movzx eax, ax
|
||
push eax
|
||
push 0
|
||
call file_seek
|
||
push ds
|
||
push offset word_FB84
|
||
push 0CEh ; '<27>'
|
||
call file_write
|
||
call file_close
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn 2
|
||
sub_B168 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B20D proc near
|
||
|
||
var_1 = byte ptr -1
|
||
|
||
enter 2, 0
|
||
push si
|
||
mov si, 2394h
|
||
xor dx, dx
|
||
jmp short loc_B235
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B219:
|
||
mov al, [si+1]
|
||
mov [bp+var_1], al
|
||
mov al, byte_FC51
|
||
ror [bp+var_1], 3
|
||
xor [bp+var_1], al
|
||
mov al, byte_FC50
|
||
add al, [bp+var_1]
|
||
add al, [si]
|
||
mov [si], al
|
||
inc dx
|
||
inc si
|
||
|
||
loc_B235:
|
||
cmp dx, 0CBh ; '<27>'
|
||
jl short loc_B219
|
||
mov al, byte_FC50
|
||
add al, byte_FC51
|
||
add al, [si]
|
||
mov [si], al
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_B20D endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B249 proc near
|
||
|
||
var_1 = byte ptr -1
|
||
|
||
enter 2, 0
|
||
push si
|
||
push di
|
||
mov [bp+var_1], 29h ; ')'
|
||
xor si, si
|
||
jmp short loc_B28A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B257:
|
||
xor di, di
|
||
jmp short loc_B266
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B25B:
|
||
mov bx, si
|
||
shl bx, 3
|
||
mov byte ptr [bx+di+2396h], 2Ah ; '*'
|
||
inc di
|
||
|
||
loc_B266:
|
||
cmp di, 8
|
||
jl short loc_B25B
|
||
xor di, di
|
||
jmp short loc_B27A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B26F:
|
||
mov bx, si
|
||
imul bx, 0Ah
|
||
mov byte ptr [bx+di+23E8h], 20h ; ' '
|
||
inc di
|
||
|
||
loc_B27A:
|
||
cmp di, 0Ah
|
||
jl short loc_B26F
|
||
mov byte ptr [si+244Ch], 0
|
||
mov byte ptr [si+2456h], 21h ; '!'
|
||
inc si
|
||
|
||
loc_B28A:
|
||
cmp si, 0Ah
|
||
jl short loc_B257
|
||
mov byte_FBDC, 21h ; '!'
|
||
mov di, 1
|
||
jmp short loc_B2A9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B299:
|
||
mov bx, di
|
||
imul bx, 0Ah
|
||
mov al, [bp+var_1]
|
||
mov [bx+23EBh], al
|
||
inc di
|
||
dec [bp+var_1]
|
||
|
||
loc_B2A9:
|
||
cmp di, 0Ah
|
||
jl short loc_B299
|
||
mov byte_FBD6, 12h
|
||
xor si, si
|
||
jmp short loc_B2BF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B2B7:
|
||
push si
|
||
call sub_B168
|
||
call sub_B20D
|
||
inc si
|
||
|
||
loc_B2BF:
|
||
cmp si, 4
|
||
jl short loc_B2B7
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_B249 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B2C8 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
xor cx, cx
|
||
mov si, 2396h
|
||
xor dx, dx
|
||
jmp short loc_B2DD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B2D5:
|
||
mov al, [si]
|
||
mov ah, 0
|
||
add cx, ax
|
||
inc dx
|
||
inc si
|
||
|
||
loc_B2DD:
|
||
cmp dx, 0CCh ; '<27>'
|
||
jl short loc_B2D5
|
||
cmp word_FB84, cx
|
||
jz short loc_B2ED
|
||
mov al, 1
|
||
jmp short loc_B2EF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B2ED:
|
||
mov al, 0
|
||
|
||
loc_B2EF:
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B2C8 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B2F2 proc near
|
||
|
||
arg_0 = word ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push ds
|
||
push word_E1F2
|
||
call file_exist
|
||
or ax, ax
|
||
jnz short loc_B314
|
||
push ds
|
||
push word_E1F2
|
||
call file_create
|
||
call file_close
|
||
jmp short loc_B34D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B314:
|
||
push ds
|
||
push word_E1F2
|
||
call file_ropen
|
||
mov ax, [bp+arg_0]
|
||
imul ax, 0CEh
|
||
movzx eax, ax
|
||
push eax
|
||
push 0
|
||
call file_seek
|
||
push ds
|
||
push offset word_FB84
|
||
push 0CEh ; '<27>'
|
||
call file_read
|
||
call file_close
|
||
call sub_B20D
|
||
call sub_B2C8
|
||
or al, al
|
||
jz short loc_B357
|
||
|
||
loc_B34D:
|
||
call sub_B249
|
||
mov ax, 1
|
||
pop bp
|
||
retn 2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B357:
|
||
xor ax, ax
|
||
pop bp
|
||
retn 2
|
||
sub_B2F2 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B35D proc near
|
||
|
||
var_1 = byte ptr -1
|
||
|
||
enter 2, 0
|
||
push si
|
||
mov [bp+var_1], 7
|
||
xor si, si
|
||
jmp short loc_B382
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B36A:
|
||
push si
|
||
call sub_B2F2
|
||
or ax, ax
|
||
jz short loc_B376
|
||
mov al, 7
|
||
jmp short loc_B38A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B376:
|
||
cmp byte_FBD6, 63h ; 'c'
|
||
jnz short loc_B381
|
||
mov [bp+var_1], 9
|
||
|
||
loc_B381:
|
||
inc si
|
||
|
||
loc_B382:
|
||
cmp si, 4
|
||
jl short loc_B36A
|
||
mov al, [bp+var_1]
|
||
|
||
loc_B38A:
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_B35D endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B38D proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
call sub_CB68
|
||
xor si, si
|
||
jmp short loc_B3B0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B39A:
|
||
lea ax, [si+2]
|
||
push ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 0
|
||
call sub_C48A
|
||
inc si
|
||
|
||
loc_B3B0:
|
||
cmp si, 3
|
||
jl short loc_B39A
|
||
push 0Dh
|
||
push ds
|
||
push offset aSlex_cd2 ; "slex.cd2"
|
||
call sub_C680
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B38D endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B3C3 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push 1
|
||
push ds
|
||
push offset a99sl_cdg ; "99sl.cdg"
|
||
push 0
|
||
call sub_C48A
|
||
push 0Bh
|
||
push ds
|
||
push offset aSlwin_cdg ; "slwin.cdg"
|
||
push 0
|
||
call sub_C514
|
||
push 0Ch
|
||
push ds
|
||
push offset aSlex_cdg ; "slex.cdg"
|
||
push 0
|
||
call sub_C514
|
||
pop bp
|
||
retn
|
||
sub_B3C3 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B3EF proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push 0
|
||
push large [off_E1FE]
|
||
push 0
|
||
call sub_C48A
|
||
mov si, 3
|
||
jmp short loc_B41C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B406:
|
||
lea ax, [si+2]
|
||
push ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 0
|
||
call sub_C48A
|
||
inc si
|
||
|
||
loc_B41C:
|
||
cmp si, 6
|
||
jl short loc_B406
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B3EF endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B424 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
mov vsync_Count1, 0
|
||
push 100h
|
||
call sub_C403
|
||
push 600h
|
||
push ds
|
||
push offset aSelect_m ; "select.m"
|
||
call sub_BF52
|
||
add sp, 6
|
||
push 0
|
||
call sub_C403
|
||
mov word_FC64, 0C8h ; '<27>'
|
||
les bx, dword_FC54
|
||
assume es:nothing
|
||
mov eax, es:[bx+10h]
|
||
mov random_seed, eax
|
||
call text_clear
|
||
call super_free
|
||
push ds
|
||
push offset aChname_bft ; "chname.bft"
|
||
call super_entry_bfnt
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov byte_FC5C, 0
|
||
push ds
|
||
push offset aTlsl_rgb ; "TLSL.RGB"
|
||
call palette_entry_rgb
|
||
call far ptr palette_show
|
||
mov si, 6
|
||
jmp short loc_B4BC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B4A6:
|
||
lea ax, [si+2]
|
||
push ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 0
|
||
call sub_C48A
|
||
inc si
|
||
|
||
loc_B4BC:
|
||
cmp si, 9
|
||
jl short loc_B4A6
|
||
|
||
loc_B4C1:
|
||
cmp vsync_Count1, 1Eh
|
||
jb short loc_B4C1
|
||
mov word_FC66, 8
|
||
call sub_B35D
|
||
mov byte_FC68, al
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B424 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B4D7 proc near
|
||
; sub_BA88:loc_BC18p ...
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
xor si, si
|
||
jmp short loc_B4E6
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B4DF:
|
||
push si
|
||
call sub_C69C
|
||
inc si
|
||
|
||
loc_B4E6:
|
||
cmp si, 16h
|
||
jl short loc_B4DF
|
||
call super_free
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B4D7 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B4F3 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push large 200060h
|
||
cmp byte_FC5A, 0
|
||
jnz short loc_B50C
|
||
mov al, byte_FC58
|
||
cbw
|
||
add ax, 2
|
||
jmp short loc_B50E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B50C:
|
||
xor ax, ax
|
||
|
||
loc_B50E:
|
||
push ax
|
||
call sub_C020
|
||
push large 1A00060h
|
||
cmp byte_FC5B, 0
|
||
jnz short loc_B52A
|
||
mov al, byte_FC59
|
||
cbw
|
||
add ax, 2
|
||
jmp short loc_B52D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B52A:
|
||
mov ax, 1
|
||
|
||
loc_B52D:
|
||
push ax
|
||
call sub_C0D4
|
||
pop bp
|
||
retn
|
||
sub_B4F3 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B535 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push large 200060h
|
||
cmp byte_FC5A, 0
|
||
jnz short loc_B54E
|
||
mov al, byte_FC58
|
||
cbw
|
||
add ax, 2
|
||
jmp short loc_B550
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B54E:
|
||
xor ax, ax
|
||
|
||
loc_B550:
|
||
push ax
|
||
call sub_C020
|
||
push large 1A00060h
|
||
push 1
|
||
call sub_C020
|
||
pop bp
|
||
retn
|
||
sub_B535 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B565 proc near
|
||
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
|
||
enter 4, 0
|
||
push si
|
||
push di
|
||
push large 200130h
|
||
push 0Bh
|
||
call far ptr loc_CAF6
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+28h], 1
|
||
jz short loc_B590
|
||
push large 1A00130h
|
||
push 0Bh
|
||
call far ptr loc_CAF6
|
||
|
||
loc_B590:
|
||
push large 0C0000Eh
|
||
call grcg_setcolor
|
||
mov [bp+var_2], 0
|
||
mov [bp+var_4], 13Bh
|
||
jmp short loc_B625
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B5A7:
|
||
mov di, 5
|
||
mov si, 8Ch ; '<27>'
|
||
jmp short loc_B5C7
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B5AF:
|
||
push si
|
||
push [bp+var_4]
|
||
lea ax, [si+8]
|
||
push ax
|
||
mov ax, [bp+var_4]
|
||
add ax, 0Fh
|
||
push ax
|
||
call grcg_boxfill
|
||
dec di
|
||
sub si, 0Bh
|
||
|
||
loc_B5C7:
|
||
mov al, byte_FC58
|
||
cbw
|
||
imul ax, 3
|
||
add ax, [bp+var_2]
|
||
mov bx, ax
|
||
mov al, [bx+0A32h]
|
||
mov ah, 0
|
||
cmp ax, di
|
||
jl short loc_B5AF
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+28h], 1
|
||
jz short loc_B61E
|
||
mov di, 5
|
||
mov si, 20Ch
|
||
jmp short loc_B608
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B5F0:
|
||
push si
|
||
push [bp+var_4]
|
||
lea ax, [si+8]
|
||
push ax
|
||
mov ax, [bp+var_4]
|
||
add ax, 0Fh
|
||
push ax
|
||
call grcg_boxfill
|
||
dec di
|
||
sub si, 0Bh
|
||
|
||
loc_B608:
|
||
mov al, byte_FC59
|
||
cbw
|
||
imul ax, 3
|
||
add ax, [bp+var_2]
|
||
mov bx, ax
|
||
mov al, [bx+0A32h]
|
||
mov ah, 0
|
||
cmp ax, di
|
||
jl short loc_B5F0
|
||
|
||
loc_B61E:
|
||
inc [bp+var_2]
|
||
add [bp+var_4], 10h
|
||
|
||
loc_B625:
|
||
cmp [bp+var_2], 3
|
||
jl loc_B5A7
|
||
call grcg_off
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_B565 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B636 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov di, 88h ; '<27>'
|
||
xor si, si
|
||
jmp short loc_B663
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B642:
|
||
push 100h
|
||
push di
|
||
mov ax, si
|
||
add ax, ax
|
||
push ax
|
||
call super_put
|
||
push 140h
|
||
push di
|
||
mov ax, si
|
||
add ax, ax
|
||
inc ax
|
||
push ax
|
||
call super_put
|
||
inc si
|
||
add di, 14h
|
||
|
||
loc_B663:
|
||
mov al, byte_FC68
|
||
mov ah, 0
|
||
cmp ax, si
|
||
jg short loc_B642
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_B636 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B670 proc near
|
||
push bp
|
||
mov bp, sp
|
||
push large 0A00130h
|
||
push 0Ch
|
||
call far ptr loc_CAF6
|
||
push large 0B0013Ch
|
||
mov al, byte_FC58
|
||
cbw
|
||
add ax, 0Dh
|
||
push ax
|
||
call far ptr loc_CAF6
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+28h], 1
|
||
jz short loc_B6BE
|
||
push large 2200130h
|
||
push 0Ch
|
||
call far ptr loc_CAF6
|
||
push large 230013Ch
|
||
mov al, byte_FC59
|
||
cbw
|
||
add ax, 0Dh
|
||
push ax
|
||
call far ptr loc_CAF6
|
||
|
||
loc_B6BE:
|
||
pop bp
|
||
retn
|
||
sub_B670 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B6C0 proc near
|
||
|
||
var_7 = byte ptr -7
|
||
var_6 = word ptr -6
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
arg_0 = word ptr 4
|
||
arg_2 = word ptr 6
|
||
arg_4 = word ptr 8
|
||
arg_6 = byte ptr 0Ah
|
||
arg_8 = byte ptr 0Ch
|
||
|
||
enter 8, 0
|
||
push si
|
||
mov si, [bp+arg_4]
|
||
mov [bp+var_6], 0
|
||
jmp short loc_B73B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B6CF:
|
||
mov al, byte ptr [bp+var_6]
|
||
add al, [bp+arg_8]
|
||
mov [bp+var_7], al
|
||
mov ah, 0
|
||
imul [bp+arg_2]
|
||
mov bx, 100h
|
||
cwd
|
||
idiv bx
|
||
mov [bp+var_7], al
|
||
mov ah, 0
|
||
add ax, ax
|
||
mov bx, ax
|
||
push word ptr [bx+396h]
|
||
push si
|
||
push 140h
|
||
call sub_C005
|
||
add sp, 6
|
||
mov [bp+var_2], ax
|
||
mov al, byte ptr [bp+var_6]
|
||
add al, [bp+arg_6]
|
||
mov [bp+var_7], al
|
||
mov ah, 0
|
||
imul [bp+arg_0]
|
||
mov bx, 100h
|
||
cwd
|
||
idiv bx
|
||
mov [bp+var_7], al
|
||
mov ah, 0
|
||
add ax, ax
|
||
mov bx, ax
|
||
push word ptr [bx+316h]
|
||
push si
|
||
push 0C8h ; '<27>'
|
||
call sub_C005
|
||
add sp, 6
|
||
mov [bp+var_4], ax
|
||
push [bp+var_2]
|
||
push ax
|
||
call grcg_pset
|
||
inc [bp+var_6]
|
||
|
||
loc_B73B:
|
||
cmp [bp+var_6], 100h
|
||
jb short loc_B6CF
|
||
pop si
|
||
leave
|
||
retn 0Ah
|
||
sub_B6C0 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B747 proc near
|
||
; sub_BC1F:loc_BC69p ...
|
||
|
||
var_6 = word ptr -6
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
|
||
enter 6, 0
|
||
push si
|
||
push di
|
||
mov al, byte ptr word_FC52
|
||
mov ah, 0
|
||
mov si, ax
|
||
cmp si, 80h ; '<27>'
|
||
jl short loc_B761
|
||
mov ax, 100h
|
||
sub ax, si
|
||
mov si, ax
|
||
|
||
loc_B761:
|
||
mov ax, si
|
||
add ax, si
|
||
add ax, 100h
|
||
mov [bp+var_4], ax
|
||
add si, 100h
|
||
mov ax, si
|
||
add ax, si
|
||
mov [bp+var_2], ax
|
||
push large 0C00006h
|
||
call grcg_setcolor
|
||
push word_FC52
|
||
mov al, byte ptr word_FC52
|
||
add al, al
|
||
push ax
|
||
push 0DCh ; '<27>'
|
||
push si
|
||
push [bp+var_2]
|
||
call sub_B6C0
|
||
mov al, 0
|
||
sub al, byte ptr word_FC52
|
||
push ax
|
||
mov al, byte ptr word_FC52
|
||
mov ah, 0
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
push ax
|
||
push 78h ; 'x'
|
||
push [bp+var_4]
|
||
push si
|
||
call sub_B6C0
|
||
push large 0C00005h
|
||
call grcg_setcolor
|
||
mov ax, word_FC66
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov di, ax
|
||
test byte ptr word_FC66, 1
|
||
jz short loc_B7CD
|
||
inc di
|
||
|
||
loc_B7CD:
|
||
mov [bp+var_6], 1
|
||
jmp short loc_B824
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B7D4:
|
||
mov al, byte ptr [bp+var_6]
|
||
add al, al
|
||
mov dl, byte ptr word_FC52
|
||
sub dl, al
|
||
push dx
|
||
mov al, byte ptr word_FC52
|
||
add al, al
|
||
mov dl, byte ptr [bp+var_6]
|
||
shl dl, 2
|
||
sub al, dl
|
||
push ax
|
||
push 0DCh ; '<27>'
|
||
push si
|
||
push [bp+var_2]
|
||
call sub_B6C0
|
||
mov al, 0
|
||
sub al, byte ptr word_FC52
|
||
mov dl, byte ptr [bp+var_6]
|
||
add dl, dl
|
||
add al, dl
|
||
push ax
|
||
mov al, byte ptr word_FC52
|
||
mov ah, 0
|
||
mov dx, [bp+var_6]
|
||
add dx, dx
|
||
sub ax, dx
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
push ax
|
||
push 78h ; 'x'
|
||
push [bp+var_4]
|
||
push si
|
||
call sub_B6C0
|
||
inc [bp+var_6]
|
||
|
||
loc_B824:
|
||
cmp [bp+var_6], di
|
||
jle short loc_B7D4
|
||
push large 0C00001h
|
||
call grcg_setcolor
|
||
lea ax, [di+1]
|
||
mov [bp+var_6], ax
|
||
jmp short loc_B88C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B83C:
|
||
mov al, byte ptr [bp+var_6]
|
||
add al, al
|
||
mov dl, byte ptr word_FC52
|
||
sub dl, al
|
||
push dx
|
||
mov al, byte ptr word_FC52
|
||
add al, al
|
||
mov dl, byte ptr [bp+var_6]
|
||
shl dl, 2
|
||
sub al, dl
|
||
push ax
|
||
push 0DCh ; '<27>'
|
||
push si
|
||
push [bp+var_2]
|
||
call sub_B6C0
|
||
mov al, 0
|
||
sub al, byte ptr word_FC52
|
||
mov dl, byte ptr [bp+var_6]
|
||
add dl, dl
|
||
add al, dl
|
||
push ax
|
||
mov al, byte ptr word_FC52
|
||
mov ah, 0
|
||
mov dx, [bp+var_6]
|
||
add dx, dx
|
||
sub ax, dx
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
push ax
|
||
push 78h ; 'x'
|
||
push [bp+var_4]
|
||
push si
|
||
call sub_B6C0
|
||
inc [bp+var_6]
|
||
|
||
loc_B88C:
|
||
mov ax, [bp+var_6]
|
||
cmp ax, word_FC66
|
||
jle short loc_B83C
|
||
call grcg_off
|
||
mov al, byte ptr word_FC52
|
||
add al, 2
|
||
mov byte ptr word_FC52, al
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn
|
||
sub_B747 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B8A6 proc near
|
||
|
||
var_2 = word ptr -2
|
||
arg_0 = byte ptr 4
|
||
arg_2 = word ptr 6
|
||
|
||
enter 2, 0
|
||
push si
|
||
push di
|
||
mov si, [bp+arg_2]
|
||
mov ax, si
|
||
shl ax, 4
|
||
shl ax, 3
|
||
add ax, 0F0h ; '<27>'
|
||
mov di, ax
|
||
mov al, [si+2468h]
|
||
cbw
|
||
imul ax, 14h
|
||
add ax, 80h ; '<27>'
|
||
mov [bp+var_2], ax
|
||
push di
|
||
push ax
|
||
push 10h
|
||
push ds
|
||
mov ax, si
|
||
imul ax, 3
|
||
add ax, 0A4Dh
|
||
push ax
|
||
mov al, [bp+arg_0]
|
||
mov ah, 0
|
||
push ax
|
||
call sub_1232
|
||
push di
|
||
mov ax, [bp+var_2]
|
||
add ax, 10h
|
||
push ax
|
||
push 10h
|
||
push ds
|
||
mov ax, si
|
||
imul ax, 3
|
||
add ax, 0A53h
|
||
push ax
|
||
mov al, [bp+arg_0]
|
||
mov ah, 0
|
||
push ax
|
||
call sub_1232
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn 4
|
||
sub_B8A6 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_B908 proc near
|
||
|
||
var_2 = word ptr -2
|
||
arg_0 = word ptr 4
|
||
arg_2 = word ptr 6
|
||
|
||
enter 2, 0
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_2]
|
||
mov si, [bp+arg_0]
|
||
cmp byte ptr [si+246Ah], 0
|
||
jnz loc_BA82
|
||
cmp byte ptr [si+0A59h], 0
|
||
jz short loc_B932
|
||
or di, di
|
||
jnz loc_BA82
|
||
mov byte ptr [si+0A59h], 0
|
||
jmp loc_BA82
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B932:
|
||
test di, 1
|
||
jz short loc_B951
|
||
dec byte ptr [si+2468h]
|
||
cmp byte ptr [si+2468h], 0
|
||
jge short loc_B94C
|
||
mov al, byte_FC68
|
||
dec al
|
||
mov [si+2468h], al
|
||
|
||
loc_B94C:
|
||
mov byte ptr [si+0A59h], 1
|
||
|
||
loc_B951:
|
||
test di, 2
|
||
jz short loc_B974
|
||
inc byte ptr [si+2468h]
|
||
mov al, [si+2468h]
|
||
cbw
|
||
mov dl, byte_FC68
|
||
mov dh, 0
|
||
cmp ax, dx
|
||
jl short loc_B96F
|
||
mov byte ptr [si+2468h], 0
|
||
|
||
loc_B96F:
|
||
mov byte ptr [si+0A59h], 1
|
||
|
||
loc_B974:
|
||
test di, 20h
|
||
; Hack
|
||
db 00fh
|
||
db 084h
|
||
db 07fh
|
||
db 000h
|
||
mov al, [si+2468h]
|
||
cbw
|
||
mov [bp+var_2], ax
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
add al, al
|
||
inc al
|
||
mov es:[bx+0Ch], al
|
||
push 1
|
||
call palette_white_in
|
||
mov bx, 1
|
||
sub bx, si
|
||
cmp byte ptr [bx+246Ah], 0
|
||
jz short loc_B9CC
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+0Ch]
|
||
cmp al, es:[bx+0Dh]
|
||
jnz short loc_B9CC
|
||
add bx, si
|
||
inc byte ptr es:[bx+0Ch]
|
||
push si
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 1
|
||
jmp short loc_B9DA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B9CC:
|
||
push si
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 0
|
||
|
||
loc_B9DA:
|
||
call sub_C48A
|
||
mov bx, 1
|
||
sub bx, si
|
||
cmp byte ptr [bx+246Ah], 0
|
||
jz short loc_B9F1
|
||
mov word_FC62, 0
|
||
|
||
loc_B9F1:
|
||
mov byte ptr [si+246Ah], 1
|
||
mov byte ptr [si+0A59h], 1
|
||
|
||
loc_B9FB:
|
||
test di, 10h
|
||
; Hack
|
||
db 00fh
|
||
db 084h
|
||
db 07fh
|
||
db 000h
|
||
mov al, [si+2468h]
|
||
cbw
|
||
mov [bp+var_2], ax
|
||
les bx, dword_FC54
|
||
add bx, si
|
||
mov al, byte ptr [bp+var_2]
|
||
add al, al
|
||
add al, 2
|
||
mov es:[bx+0Ch], al
|
||
push 1
|
||
call palette_white_in
|
||
mov bx, 1
|
||
sub bx, si
|
||
cmp byte ptr [bx+246Ah], 0
|
||
jz short loc_BA53
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+0Ch]
|
||
cmp al, es:[bx+0Dh]
|
||
jnz short loc_BA53
|
||
add bx, si
|
||
dec byte ptr es:[bx+0Ch]
|
||
push si
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 0
|
||
jmp short loc_BA61
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BA53:
|
||
; sub_B908+133j
|
||
push si
|
||
mov bx, [bp+var_2]
|
||
shl bx, 2
|
||
push large dword ptr [bx+0A0Eh]
|
||
push 1
|
||
|
||
loc_BA61:
|
||
call sub_C48A
|
||
mov bx, 1
|
||
sub bx, si
|
||
cmp byte ptr [bx+246Ah], 0
|
||
jz short loc_BA78
|
||
mov word_FC62, 0
|
||
|
||
loc_BA78:
|
||
mov byte ptr [si+246Ah], 1
|
||
mov byte ptr [si+0A59h], 1
|
||
|
||
loc_BA82:
|
||
pop di
|
||
pop si
|
||
leave
|
||
retn 4
|
||
sub_B908 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BA88 proc near
|
||
push bp
|
||
mov bp, sp
|
||
call sub_B424
|
||
call text_clear
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+0Ch]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov byte_FC58, al
|
||
mov al, es:[bx+0Dh]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov byte_FC59, al
|
||
mov byte_FC5A, 0
|
||
mov byte_FC5B, 0
|
||
cmp byte ptr es:[bx+16h], 0
|
||
jnz short loc_BAD4
|
||
mov word ptr dword_FC5E+2, seg seg002
|
||
mov word ptr dword_FC5E, 0AFAh
|
||
jmp short loc_BAF9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BAD4:
|
||
les bx, dword_FC54
|
||
cmp byte ptr es:[bx+16h], 1
|
||
jnz short loc_BAED
|
||
mov word ptr dword_FC5E+2, seg seg002
|
||
mov word ptr dword_FC5E, 0B04h
|
||
jmp short loc_BAF9
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BAED:
|
||
mov word ptr dword_FC5E+2, seg seg002
|
||
mov word ptr dword_FC5E, 0B26h
|
||
|
||
loc_BAF9:
|
||
push 10h
|
||
call sub_C19E
|
||
mov word_FC62, 0
|
||
|
||
loc_BB06:
|
||
call sub_B747
|
||
call sub_B4F3
|
||
call sub_B565
|
||
call sub_B636
|
||
call sub_B670
|
||
push 0
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BB22
|
||
mov al, 0Fh
|
||
jmp short loc_BB24
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BB22:
|
||
mov al, 8
|
||
|
||
loc_BB24:
|
||
push ax
|
||
call sub_B8A6
|
||
push 1
|
||
cmp byte_FC5B, 0
|
||
jz short loc_BB35
|
||
mov al, 0Fh
|
||
jmp short loc_BB37
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BB35:
|
||
mov al, 0Ah
|
||
|
||
loc_BB37:
|
||
push ax
|
||
call sub_B8A6
|
||
call sub_C1B4
|
||
call dword_FC5E
|
||
push word_F292
|
||
push 0
|
||
call sub_B908
|
||
push word_F294
|
||
push 1
|
||
call sub_B908
|
||
test byte ptr word_F296+1, 10h
|
||
jz short loc_BB82
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call text_clear
|
||
call sub_B4D7
|
||
push 100h
|
||
call sub_C403
|
||
mov al, 1
|
||
pop bp
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BB82:
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BBB7
|
||
cmp byte_FC5B, 0
|
||
jz short loc_BBB7
|
||
call text_clear
|
||
cmp word_FC62, 10h
|
||
jb short loc_BBB0
|
||
mov ax, word_FC62
|
||
imul ax, 6
|
||
mov dx, 0C8h ; '<27>'
|
||
sub dx, ax
|
||
mov PaletteTone, dx
|
||
call far ptr palette_show
|
||
|
||
loc_BBB0:
|
||
cmp word_FC62, 20h ; ' '
|
||
ja short loc_BC18
|
||
|
||
loc_BBB7:
|
||
; sub_BA88+106j ...
|
||
cmp vsync_Count1, 3
|
||
jb short loc_BBB7
|
||
cmp vsync_Count1, 4
|
||
jbe short loc_BBD0
|
||
cmp word_FC66, 1
|
||
jle short loc_BBD0
|
||
dec word_FC66
|
||
|
||
loc_BBD0:
|
||
; sub_BA88+142j
|
||
mov vsync_Count1, 0
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, byte_FC5C
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, 1
|
||
sub al, byte_FC5C
|
||
mov byte_FC5C, al
|
||
mov dx, 0A4h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push large 0C00000h
|
||
call grcg_setcolor
|
||
push large 0
|
||
push large 4F018Fh
|
||
call grcg_byteboxfill_x
|
||
call grcg_off
|
||
inc word_FC62
|
||
les bx, dword_FC54
|
||
inc dword ptr es:[bx+10h]
|
||
jmp loc_BB06
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BC18:
|
||
call sub_B4D7
|
||
mov al, 0
|
||
pop bp
|
||
retn
|
||
sub_BA88 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BC1F proc near
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
call sub_B424
|
||
les bx, dword_FC54
|
||
mov al, es:[bx+0Ch]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov byte_FC58, al
|
||
mov al, es:[bx+0Dh]
|
||
mov ah, 0
|
||
dec ax
|
||
cwd
|
||
sub ax, dx
|
||
sar ax, 1
|
||
mov byte_FC59, al
|
||
mov byte_FC5A, 0
|
||
mov byte_FC5B, 0
|
||
mov word ptr dword_FC5E+2, seg seg002
|
||
mov word ptr dword_FC5E, 0AD6h
|
||
xor si, si
|
||
jmp loc_BD8B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BC63:
|
||
mov word_FC62, 0
|
||
|
||
loc_BC69:
|
||
call sub_B747
|
||
call sub_B4F3
|
||
call sub_B565
|
||
call sub_B636
|
||
call sub_B670
|
||
call sub_C1B4
|
||
call dword_FC5E
|
||
push 0
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BC8E
|
||
mov al, 0Fh
|
||
jmp short loc_BC90
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BC8E:
|
||
mov al, 8
|
||
|
||
loc_BC90:
|
||
push ax
|
||
call sub_B8A6
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BCAE
|
||
push 1
|
||
cmp byte_FC5B, 0
|
||
jz short loc_BCA8
|
||
mov al, 0Fh
|
||
jmp short loc_BCAA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BCA8:
|
||
mov al, 0Ah
|
||
|
||
loc_BCAA:
|
||
push ax
|
||
call sub_B8A6
|
||
|
||
loc_BCAE:
|
||
push word_F296
|
||
push si
|
||
call sub_B908
|
||
test byte ptr word_F296+1, 10h
|
||
jz short loc_BCE3
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call text_clear
|
||
call sub_B4D7
|
||
push 100h
|
||
call sub_C403
|
||
mov al, 1
|
||
jmp loc_BD97
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BCE3:
|
||
or si, si
|
||
jnz short loc_BCF7
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BCF7
|
||
cmp word_FC62, 0Ch
|
||
ja loc_BD8A
|
||
|
||
loc_BCF7:
|
||
or si, si
|
||
jz short loc_BD29
|
||
cmp byte_FC5B, 0
|
||
jz short loc_BD29
|
||
call text_clear
|
||
cmp word_FC62, 10h
|
||
jb short loc_BD22
|
||
mov ax, word_FC62
|
||
imul ax, 6
|
||
mov dx, 0C8h ; '<27>'
|
||
sub dx, ax
|
||
mov PaletteTone, dx
|
||
call far ptr palette_show
|
||
|
||
loc_BD22:
|
||
cmp word_FC62, 20h ; ' '
|
||
ja short loc_BD8A
|
||
|
||
loc_BD29:
|
||
cmp vsync_Count1, 3
|
||
jb short loc_BD29
|
||
cmp vsync_Count1, 4
|
||
jbe short loc_BD42
|
||
cmp word_FC66, 1
|
||
jle short loc_BD42
|
||
dec word_FC66
|
||
|
||
loc_BD42:
|
||
; sub_BC1F+11Dj
|
||
mov vsync_Count1, 0
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, byte_FC5C
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, 1
|
||
sub al, byte_FC5C
|
||
mov byte_FC5C, al
|
||
mov dx, 0A4h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push large 0C00000h
|
||
call grcg_setcolor
|
||
push large 0
|
||
push large 4F018Fh
|
||
call grcg_byteboxfill_x
|
||
call grcg_off
|
||
inc word_FC62
|
||
les bx, dword_FC54
|
||
inc dword ptr es:[bx+10h]
|
||
jmp loc_BC69
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BD8A:
|
||
; sub_BC1F+108j
|
||
inc si
|
||
|
||
loc_BD8B:
|
||
cmp si, 2
|
||
jl loc_BC63
|
||
call sub_B4D7
|
||
mov al, 0
|
||
|
||
loc_BD97:
|
||
pop si
|
||
pop bp
|
||
retn
|
||
sub_BC1F endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BD9A proc near
|
||
push bp
|
||
mov bp, sp
|
||
call sub_B424
|
||
mov byte_FC58, 0
|
||
mov byte_FC5A, 0
|
||
mov byte_FC5B, 1
|
||
mov word ptr dword_FC5E+2, seg seg002
|
||
mov word ptr dword_FC5E, 0AD6h
|
||
mov word_FC62, 0
|
||
|
||
loc_BDC1:
|
||
call sub_B747
|
||
call sub_B535
|
||
call sub_B565
|
||
call sub_B636
|
||
call sub_B670
|
||
push 0
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BDDD
|
||
mov al, 0Fh
|
||
jmp short loc_BDDF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BDDD:
|
||
mov al, 8
|
||
|
||
loc_BDDF:
|
||
push ax
|
||
call sub_B8A6
|
||
call sub_C1B4
|
||
call dword_FC5E
|
||
push word_F296
|
||
push 0
|
||
call sub_B908
|
||
test byte ptr word_F296+1, 10h
|
||
jz short loc_BE21
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A4h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call text_clear
|
||
call sub_B4D7
|
||
push 100h
|
||
call sub_C403
|
||
mov al, 1
|
||
pop bp
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BE21:
|
||
cmp byte_FC5A, 0
|
||
jz short loc_BE4F
|
||
call text_clear
|
||
cmp word_FC62, 10h
|
||
jb short loc_BE48
|
||
mov ax, word_FC62
|
||
imul ax, 6
|
||
mov dx, 0C8h ; '<27>'
|
||
sub dx, ax
|
||
mov PaletteTone, dx
|
||
call far ptr palette_show
|
||
|
||
loc_BE48:
|
||
cmp word_FC62, 20h ; ' '
|
||
ja short loc_BEB0
|
||
|
||
loc_BE4F:
|
||
cmp vsync_Count1, 3
|
||
jb short loc_BE4F
|
||
cmp vsync_Count1, 4
|
||
jbe short loc_BE68
|
||
cmp word_FC66, 1
|
||
jle short loc_BE68
|
||
dec word_FC66
|
||
|
||
loc_BE68:
|
||
mov vsync_Count1, 0
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, byte_FC5C
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov al, 1
|
||
sub al, byte_FC5C
|
||
mov byte_FC5C, al
|
||
mov dx, 0A4h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
push large 0C00000h
|
||
call grcg_setcolor
|
||
push large 0
|
||
push large 4F018Fh
|
||
call grcg_byteboxfill_x
|
||
call grcg_off
|
||
inc word_FC62
|
||
les bx, dword_FC54
|
||
inc dword ptr es:[bx+10h]
|
||
jmp loc_BDC1
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BEB0:
|
||
call sub_B4D7
|
||
mov al, 0
|
||
pop bp
|
||
retn
|
||
sub_BD9A endp
|
||
|
||
seg001 ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
seg002 segment byte public 'CODE' use16
|
||
assume cs:seg002
|
||
;org 7
|
||
assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
|
||
db 0
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BEB8 proc far
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_BFC2
|
||
call key_beep_on
|
||
call text_systemline_show
|
||
call text_cursor_show
|
||
pop bp
|
||
retf
|
||
sub_BEB8 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BED1 proc far
|
||
push bp
|
||
mov bp, sp
|
||
mov dword_F1EA, 0A8000000h
|
||
mov dword_F1EE, 0B0000000h
|
||
mov dword_F1F2, 0B8000000h
|
||
mov dword_F1F6, 0E0000000h
|
||
pop bp
|
||
retf
|
||
sub_BED1 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_BEFA proc far
|
||
mov ah, 9
|
||
int 60h
|
||
xor bx, bx
|
||
cmp al, 0FFh
|
||
jz short loc_BF0C
|
||
inc bx
|
||
mov byte_F1FA, 1
|
||
jmp short loc_BF10
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BF0C:
|
||
mov bl, byte_F1FB
|
||
|
||
loc_BF10:
|
||
mov byte_DDCC, bl
|
||
mov ax, bx
|
||
retf
|
||
sub_BEFA endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
mov byte_F1FC, 60h ; '`'
|
||
mov byte_F1FB, 0
|
||
mov byte_F1FA, 0
|
||
mov byte_F1FD, 0
|
||
xor ax, ax
|
||
mov es, ax
|
||
les bx, dword ptr es:[0180h]
|
||
assume es:nothing
|
||
cmp byte ptr es:[bx+2], 50h ; 'P'
|
||
jnz short loc_BF4E
|
||
cmp byte ptr es:[bx+3], 4Dh ; 'M'
|
||
jnz short loc_BF4E
|
||
cmp byte ptr es:[bx+4], 44h ; 'D'
|
||
jnz short loc_BF4E
|
||
mov ax, 1
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BF4E:
|
||
xor ax, ax
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BF52 proc far
|
||
; sub_ADE2+26P ...
|
||
|
||
arg_0 = dword ptr 6
|
||
arg_4 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push ds
|
||
mov cx, 0Dh
|
||
xor si, si
|
||
|
||
loc_BF5C:
|
||
les bx, [bp+arg_0]
|
||
add bx, si
|
||
mov al, es:[bx]
|
||
mov [si+1A0Eh], al
|
||
inc si
|
||
loop loc_BF5C
|
||
mov ax, [bp+arg_4]
|
||
cmp ax, 600h
|
||
jnz short loc_BF93
|
||
cmp byte_F1FB, 0
|
||
jz short loc_BF93
|
||
xor bx, bx
|
||
|
||
loc_BF7C:
|
||
inc bx
|
||
cmp byte ptr [bx+1A0Eh], 0
|
||
jnz short loc_BF7C
|
||
mov byte ptr [bx+1A0Eh], 6Dh ; 'm'
|
||
mov byte ptr [bx+1A0Fh], 64h ; 'd'
|
||
mov byte ptr [bx+1A10h], 0
|
||
|
||
loc_BF93:
|
||
mov dx, 1A0Eh
|
||
mov ax, 3D00h
|
||
int 21h ; DOS - 2+ - OPEN DISK FILE WITH HANDLE
|
||
; DS:DX -> ASCIZ filename
|
||
; AL = access mode
|
||
; 0 - read
|
||
mov bx, ax
|
||
mov ax, [bp+arg_4]
|
||
cmp ax, 600h
|
||
jnz short loc_BFB0
|
||
cmp byte_F1FB, 0
|
||
jz short loc_BFB0
|
||
int 61h ; reserved for user interrupt
|
||
jmp short loc_BFB2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BFB0:
|
||
int 60h
|
||
|
||
loc_BFB2:
|
||
mov ax, 3F00h
|
||
mov cx, 5000h
|
||
int 21h ; DOS - 2+ - READ FROM FILE WITH HANDLE
|
||
; BX = file handle, CX = number of bytes to read
|
||
; DS:DX -> buffer
|
||
pop ds
|
||
mov ah, 3Eh
|
||
int 21h ; DOS - 2+ - CLOSE A FILE WITH HANDLE
|
||
; BX = file handle
|
||
pop si
|
||
pop bp
|
||
retf
|
||
sub_BF52 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_BFC2 proc far
|
||
; sub_9BDF+150P ...
|
||
push bp
|
||
mov bp, sp
|
||
call sub_2C1C
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A4h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call vsync_end
|
||
call sub_2676
|
||
call text_clear
|
||
call js_end
|
||
call egc_start
|
||
pop bp
|
||
retf
|
||
sub_BFC2 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C005 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
movsx eax, [bp+arg_2]
|
||
movsx edx, [bp+arg_4]
|
||
imul eax, edx
|
||
sar eax, 8
|
||
add ax, [bp+arg_0]
|
||
pop bp
|
||
retf
|
||
sub_C005 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C020 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
push large 0C00000h
|
||
call grcg_setcolor
|
||
mov si, [bp+arg_0]
|
||
shl si, 4
|
||
add si, 1AA8h
|
||
mov ax, [si+0Eh]
|
||
mov word ptr cs:loc_C097+1, ax
|
||
mov ax, [bp+arg_4]
|
||
sar ax, 3
|
||
add ax, [si+6]
|
||
mov di, ax
|
||
mov word ptr cs:loc_C090+1, ax
|
||
mov ax, [si+8]
|
||
mov word ptr cs:loc_C082+1, ax
|
||
mov word ptr cs:loc_C09C+1, ax
|
||
shl ax, 2
|
||
add ax, 50h ; 'P'
|
||
mov word ptr cs:loc_C07E+1, ax
|
||
jmp short $+2
|
||
mov ax, [bp+arg_2]
|
||
mov bx, ax
|
||
shl ax, 2
|
||
add ax, bx
|
||
add ax, 0A800h
|
||
mov es, ax
|
||
push ds
|
||
mov ax, [si+0Ch]
|
||
mov ds, ax
|
||
xor si, si
|
||
|
||
loc_C07E:
|
||
mov dx, 1234h
|
||
cld
|
||
|
||
loc_C082:
|
||
mov cx, 1234h
|
||
rep movsd
|
||
sub di, dx
|
||
jns short loc_C082
|
||
xor al, al
|
||
out 7Ch, al
|
||
|
||
loc_C090:
|
||
mov bx, 1234h
|
||
mov di, bx
|
||
xor si, si
|
||
|
||
loc_C097:
|
||
mov ax, 1234h
|
||
mov ds, ax
|
||
assume ds:nothing
|
||
|
||
loc_C09C:
|
||
mov cx, 1234h
|
||
|
||
loc_C09F:
|
||
mov eax, [si]
|
||
or es:[di], eax
|
||
add si, 4
|
||
add di, 4
|
||
loop loc_C09F
|
||
sub di, dx
|
||
jns short loc_C09C
|
||
mov di, bx
|
||
mov ax, es
|
||
add ax, 800h
|
||
mov es, ax
|
||
assume es:nothing
|
||
cmp ax, 0C000h
|
||
jb short loc_C09C
|
||
cmp ax, 0C800h
|
||
jnb short loc_C0CC
|
||
add ax, 2000h
|
||
mov es, ax
|
||
assume es:nothing
|
||
jmp short loc_C09C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C0CC:
|
||
pop ds
|
||
assume ds:dseg
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf 6
|
||
sub_C020 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C0D4 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
push large 0C00000h
|
||
call grcg_setcolor
|
||
mov si, [bp+arg_0]
|
||
shl si, 4
|
||
add si, 1AA8h
|
||
mov ax, [bp+arg_4]
|
||
sar ax, 3
|
||
add ax, [si+6]
|
||
mov bx, [si+8]
|
||
shl bx, 2
|
||
add ax, bx
|
||
dec ax
|
||
mov di, ax
|
||
mov word ptr cs:loc_C154+1, ax
|
||
mov word ptr cs:loc_C17C+1, ax
|
||
mov word ptr cs:loc_C13E+1, bx
|
||
mov word ptr cs:loc_C16A+1, bx
|
||
mov ax, 50h ; 'P'
|
||
sub ax, bx
|
||
mov word ptr cs:loc_C13A+1, ax
|
||
mov word ptr cs:loc_C166+1, ax
|
||
jmp short $+2
|
||
mov ax, [bp+arg_2]
|
||
mov bx, ax
|
||
shl ax, 2
|
||
add ax, bx
|
||
add ax, 0A800h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov bx, 1E70h
|
||
mov fs, word ptr [si+0Ch]
|
||
xor si, si
|
||
|
||
loc_C13A:
|
||
mov dx, 1234h
|
||
nop
|
||
|
||
loc_C13E:
|
||
mov cx, 1234h
|
||
|
||
loc_C141:
|
||
mov al, fs:[si]
|
||
xlat
|
||
mov es:[di], al
|
||
inc si
|
||
dec di
|
||
loop loc_C141
|
||
sub di, dx
|
||
jns short loc_C13E
|
||
xor al, al
|
||
out 7Ch, al
|
||
|
||
loc_C154:
|
||
mov di, 1234h
|
||
mov si, [bp+arg_0]
|
||
shl si, 4
|
||
add si, 1AA8h
|
||
mov fs, word ptr [si+0Eh]
|
||
xor si, si
|
||
|
||
loc_C166:
|
||
mov dx, 1234h
|
||
nop
|
||
|
||
loc_C16A:
|
||
mov cx, 4D2h
|
||
|
||
loc_C16D:
|
||
mov al, fs:[si]
|
||
xlat
|
||
or es:[di], al
|
||
inc si
|
||
dec di
|
||
loop loc_C16D
|
||
sub di, dx
|
||
jns short loc_C16A
|
||
|
||
loc_C17C:
|
||
mov di, 1234h
|
||
mov ax, es
|
||
add ax, 800h
|
||
mov es, ax
|
||
assume es:nothing
|
||
cmp ax, 0C000h
|
||
jb short loc_C16A
|
||
cmp ax, 0C800h
|
||
jnb short loc_C197
|
||
add ax, 2000h
|
||
mov es, ax
|
||
assume es:nothing
|
||
jmp short loc_C16A
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C197:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf 6
|
||
sub_C0D4 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C19E proc far
|
||
|
||
arg_0 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
mov vsync_Count1, 0
|
||
|
||
loc_C1A7:
|
||
mov ax, vsync_Count1
|
||
cmp ax, [bp+arg_0]
|
||
jb short loc_C1A7
|
||
pop bp
|
||
retf 2
|
||
sub_C19E endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_C1B4 proc far
|
||
xor ax, ax
|
||
mov word_F292, ax
|
||
mov word_F294, ax
|
||
mov word_F296, ax
|
||
mov word_E9A4, ax
|
||
jmp short $+2
|
||
mov bl, 2
|
||
xor ax, ax
|
||
mov es, ax
|
||
|
||
loc_C1CA:
|
||
mov ah, byte ptr es:[531h]
|
||
test ah, 4
|
||
jz short loc_C1D9
|
||
or word_F296, 1
|
||
|
||
loc_C1D9:
|
||
test ah, 20h
|
||
jz short loc_C1E3
|
||
or word_F296, 2
|
||
|
||
loc_C1E3:
|
||
test ah, 8
|
||
jz short loc_C1F2
|
||
or word_F294, 20h
|
||
or word_F296, 4
|
||
|
||
loc_C1F2:
|
||
test ah, 10h
|
||
jz short loc_C201
|
||
or word_F294, 10h
|
||
or word_F296, 8
|
||
|
||
loc_C201:
|
||
mov ah, byte ptr es:[533h]
|
||
test ah, 1
|
||
jz short loc_C215
|
||
or word_F294, 8
|
||
or word_F296, 8
|
||
|
||
loc_C215:
|
||
test ah, 4
|
||
jz short loc_C226
|
||
or word_F294, 200h
|
||
or word_F296, 200h
|
||
|
||
loc_C226:
|
||
test ah, 8
|
||
jz short loc_C235
|
||
or word_F294, 2
|
||
or word_F296, 2
|
||
|
||
loc_C235:
|
||
test ah, 10h
|
||
jz short loc_C246
|
||
or word_F294, 800h
|
||
or word_F296, 800h
|
||
|
||
loc_C246:
|
||
mov ah, byte ptr es:[532h]
|
||
test ah, 40h
|
||
jz short loc_C25A
|
||
or word_F294, 4
|
||
or word_F296, 4
|
||
|
||
loc_C25A:
|
||
test ah, 4
|
||
jz short loc_C26B
|
||
or word_F294, 100h
|
||
or word_F296, 100h
|
||
|
||
loc_C26B:
|
||
test ah, 8
|
||
jz short loc_C27A
|
||
or word_F294, 1
|
||
or word_F296, 1
|
||
|
||
loc_C27A:
|
||
test ah, 10h
|
||
jz short loc_C28B
|
||
or word_F294, 400h
|
||
or word_F296, 400h
|
||
|
||
loc_C28B:
|
||
mov ah, byte ptr es:[52Fh]
|
||
test ah, 2
|
||
jz short loc_C29F
|
||
or word_F292, 20h
|
||
or word_F296, 20h
|
||
|
||
loc_C29F:
|
||
test ah, 4
|
||
jz short loc_C2AE
|
||
or word_F292, 10h
|
||
or word_F296, 10h
|
||
|
||
loc_C2AE:
|
||
test ah, 10h
|
||
jz short loc_C2B9
|
||
or word_F292, 200h
|
||
|
||
loc_C2B9:
|
||
test ah, 20h
|
||
jz short loc_C2C3
|
||
or word_F292, 2
|
||
|
||
loc_C2C3:
|
||
test ah, 40h
|
||
jz short loc_C2CE
|
||
or word_F292, 800h
|
||
|
||
loc_C2CE:
|
||
mov ah, byte ptr es:[52Eh]
|
||
test ah, 1
|
||
jz short loc_C2DD
|
||
or word_F292, 4
|
||
|
||
loc_C2DD:
|
||
test ah, 4
|
||
jz short loc_C2E7
|
||
or word_F292, 8
|
||
|
||
loc_C2E7:
|
||
mov ah, byte ptr es:[52Ch]
|
||
test ah, 8
|
||
jz short loc_C2F7
|
||
or word_F292, 100h
|
||
|
||
loc_C2F7:
|
||
test ah, 10h
|
||
jz short loc_C301
|
||
or word_F292, 1
|
||
|
||
loc_C301:
|
||
test ah, 20h
|
||
jz short loc_C30C
|
||
or word_F292, 400h
|
||
|
||
loc_C30C:
|
||
test ah, 1
|
||
jz short loc_C317
|
||
or word_F296, 4000h
|
||
|
||
loc_C317:
|
||
mov ah, byte ptr es:[52Ah]
|
||
test ah, 1
|
||
jz short loc_C327
|
||
or word_F296, 1000h
|
||
|
||
loc_C327:
|
||
mov ah, byte ptr es:[52Dh]
|
||
test ah, 10h
|
||
jz short loc_C337
|
||
or word_F296, 2000h
|
||
|
||
loc_C337:
|
||
mov ah, byte ptr es:[530h]
|
||
test ah, 10h
|
||
jz short loc_C346
|
||
or word_F296, 20h
|
||
|
||
loc_C346:
|
||
dec bl
|
||
jz short locret_C354
|
||
mov cx, 400h
|
||
|
||
loc_C34D:
|
||
out 5Fh, al
|
||
loop loc_C34D
|
||
jmp loc_C1CA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
locret_C354:
|
||
retf
|
||
sub_C1B4 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C356 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push 30h ; '0' ; n
|
||
push ds
|
||
mov ax, [bp+arg_0]
|
||
imul ax, 48h
|
||
add ax, 1CD8h
|
||
push ax ; src
|
||
push ds
|
||
push offset Palettes ; dest
|
||
call _memcpy
|
||
add sp, 0Ah
|
||
call far ptr palette_show
|
||
pop bp
|
||
retf 2
|
||
sub_C356 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C37B proc far
|
||
|
||
var_6 = word ptr -6
|
||
var_4 = dword ptr -4
|
||
arg_0 = word ptr 6
|
||
arg_2 = word ptr 8
|
||
arg_4 = word ptr 0Ah
|
||
|
||
enter 6, 0
|
||
push si
|
||
push di
|
||
mov si, [bp+arg_2]
|
||
mov di, [bp+arg_0]
|
||
mov bx, di
|
||
shl bx, 2
|
||
mov ax, [bx+1CAAh]
|
||
mov dx, [bx+1CA8h]
|
||
mov word ptr [bp+var_4+2], ax
|
||
mov word ptr [bp+var_4], dx
|
||
mov [bp+var_6], 0
|
||
jmp short loc_C3EF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C3A1:
|
||
push [bp+arg_4]
|
||
push si
|
||
push large [bp+var_4]
|
||
mov bx, di
|
||
imul bx, 48h
|
||
push word ptr [bx+1CD4h]
|
||
call graph_pack_put_8
|
||
inc si
|
||
cmp si, 190h
|
||
jl short loc_C3C2
|
||
sub si, 190h
|
||
|
||
loc_C3C2:
|
||
mov bx, di
|
||
imul bx, 48h
|
||
mov ax, [bx+1CD4h]
|
||
shr ax, 1
|
||
add word ptr [bp+var_4], ax
|
||
mov eax, [bp+var_4]
|
||
shr eax, 10h
|
||
mov dx, word ptr [bp+var_4]
|
||
shr dx, 4
|
||
add ax, dx
|
||
mov dx, word ptr [bp+var_4]
|
||
and dx, 0Fh
|
||
mov word ptr [bp+var_4+2], ax
|
||
mov word ptr [bp+var_4], dx
|
||
inc [bp+var_6]
|
||
|
||
loc_C3EF:
|
||
mov bx, di
|
||
imul bx, 48h
|
||
mov ax, [bx+1CD6h]
|
||
cmp ax, [bp+var_6]
|
||
ja short loc_C3A1
|
||
pop di
|
||
pop si
|
||
leave
|
||
retf 6
|
||
sub_C37B endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C403 proc far
|
||
; sub_9BDF+14BP ...
|
||
|
||
arg_0 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
cmp byte_DDCC, 0
|
||
jz short loc_C41D
|
||
mov ax, [bp+arg_0]
|
||
cmp byte_F1FB, 1
|
||
jz short loc_C41B
|
||
int 60h
|
||
jmp short loc_C41D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C41B:
|
||
int 61h ; reserved for user interrupt
|
||
|
||
loc_C41D:
|
||
pop bp
|
||
retf 2
|
||
sub_C403 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C421 proc far
|
||
|
||
arg_0 = dword ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push 55F0h
|
||
call mem_assign_dos
|
||
or ax, ax
|
||
jz short loc_C435
|
||
mov ax, 1
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C435:
|
||
nop
|
||
push cs
|
||
call near ptr sub_BED1
|
||
call graph_start
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 1
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call graph_clear
|
||
mov dx, 0A6h ; '<27>'
|
||
mov al, 0
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A4h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
call vsync_start
|
||
call key_beep_off
|
||
call text_systemline_hide
|
||
call text_cursor_hide
|
||
call egc_start
|
||
call sub_2DB8
|
||
push large [bp+arg_0]
|
||
call sub_2B60
|
||
xor ax, ax
|
||
pop bp
|
||
retf
|
||
sub_C421 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C48A proc far
|
||
|
||
var_4 = dword ptr -4
|
||
arg_0 = word ptr 6
|
||
arg_2 = dword ptr 8
|
||
arg_6 = word ptr 0Ch
|
||
|
||
enter 4, 0
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_6]
|
||
push di
|
||
nop
|
||
push cs
|
||
call near ptr sub_C69C
|
||
mov ax, di
|
||
shl ax, 4
|
||
add ax, 1AA8h
|
||
mov si, ax
|
||
push large [bp+arg_2]
|
||
call file_ropen
|
||
push ds
|
||
push si
|
||
push 10h
|
||
call file_read
|
||
mov ax, [si]
|
||
imul ax, 5
|
||
movzx eax, ax
|
||
mov [bp+var_4], eax
|
||
movsx eax, [bp+arg_0]
|
||
imul eax, [bp+var_4]
|
||
push eax
|
||
push 1
|
||
call file_seek
|
||
push word ptr [si]
|
||
call hmem_allocbyte
|
||
mov [si+0Ch], ax
|
||
push word ptr [si+0Ch]
|
||
push 0
|
||
push word ptr [si]
|
||
call file_read
|
||
mov ax, [si]
|
||
shl ax, 2
|
||
push ax
|
||
call hmem_allocbyte
|
||
mov [si+0Eh], ax
|
||
push word ptr [si+0Eh]
|
||
push 0
|
||
mov ax, [si]
|
||
shl ax, 2
|
||
push ax
|
||
call file_read
|
||
call file_close
|
||
pop di
|
||
pop si
|
||
leave
|
||
retf 8
|
||
sub_C48A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C514 proc far
|
||
|
||
var_4 = dword ptr -4
|
||
arg_0 = word ptr 6
|
||
arg_2 = dword ptr 8
|
||
arg_6 = word ptr 0Ch
|
||
|
||
enter 4, 0
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_6]
|
||
push di
|
||
nop
|
||
push cs
|
||
call near ptr sub_C69C
|
||
mov ax, di
|
||
shl ax, 4
|
||
add ax, 1AA8h
|
||
mov si, ax
|
||
push large [bp+arg_2]
|
||
call file_ropen
|
||
push ds
|
||
push si
|
||
push 10h
|
||
call file_read
|
||
mov ax, [si]
|
||
imul ax, 5
|
||
movzx eax, ax
|
||
mov [bp+var_4], eax
|
||
movsx eax, [bp+arg_0]
|
||
imul eax, [bp+var_4]
|
||
push eax
|
||
push 1
|
||
call file_seek
|
||
movzx eax, word ptr [si]
|
||
push eax
|
||
push 1
|
||
call file_seek
|
||
mov word ptr [si+0Ch], 0
|
||
mov ax, [si]
|
||
shl ax, 2
|
||
push ax
|
||
call hmem_allocbyte
|
||
mov [si+0Eh], ax
|
||
push word ptr [si+0Eh]
|
||
push 0
|
||
mov ax, [si]
|
||
shl ax, 2
|
||
push ax
|
||
call file_read
|
||
call file_close
|
||
pop di
|
||
pop si
|
||
leave
|
||
retf 8
|
||
sub_C514 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C59A proc far
|
||
|
||
var_2 = word ptr -2
|
||
arg_0 = dword ptr 6
|
||
arg_4 = word ptr 0Ah
|
||
|
||
enter 2, 0
|
||
push si
|
||
push di
|
||
push large [bp+arg_0]
|
||
call file_ropen
|
||
push [bp+arg_4]
|
||
nop
|
||
push cs
|
||
call near ptr sub_C69C
|
||
mov ax, [bp+arg_4]
|
||
shl ax, 4
|
||
add ax, 1AA8h
|
||
mov si, ax
|
||
push ds
|
||
push ax
|
||
push 10h
|
||
call file_read
|
||
mov di, si
|
||
mov [bp+var_2], 1
|
||
jmp short loc_C5DD
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C5CE:
|
||
mov ax, [bp+arg_4]
|
||
add ax, [bp+var_2]
|
||
push ax
|
||
nop
|
||
push cs
|
||
call near ptr sub_C69C
|
||
inc [bp+var_2]
|
||
|
||
loc_C5DD:
|
||
mov al, [di+0Ah]
|
||
mov ah, 0
|
||
cmp ax, [bp+var_2]
|
||
jg short loc_C5CE
|
||
mov [bp+var_2], 0
|
||
jmp short loc_C669
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C5EE:
|
||
mov ax, [di]
|
||
mov [si], ax
|
||
mov ax, [di+2]
|
||
mov [si+2], ax
|
||
mov ax, [di+4]
|
||
mov [si+4], ax
|
||
mov ax, [di+6]
|
||
mov [si+6], ax
|
||
mov ax, [di+8]
|
||
mov [si+8], ax
|
||
mov al, [di+0Ah]
|
||
mov [si+0Ah], al
|
||
mov byte ptr [si+0Bh], 0
|
||
cmp byte_DDE0, 0
|
||
jnz short loc_C633
|
||
push word ptr [si]
|
||
call hmem_allocbyte
|
||
mov [si+0Ch], ax
|
||
push word ptr [si+0Ch]
|
||
push 0
|
||
push word ptr [si]
|
||
call file_read
|
||
jmp short loc_C645
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C633:
|
||
mov word ptr [si+0Ch], 0
|
||
movzx eax, word ptr [si]
|
||
push eax
|
||
push 1
|
||
call file_seek
|
||
|
||
loc_C645:
|
||
mov ax, [si]
|
||
shl ax, 2
|
||
push ax
|
||
call hmem_allocbyte
|
||
mov [si+0Eh], ax
|
||
push word ptr [si+0Eh]
|
||
push 0
|
||
mov ax, [si]
|
||
shl ax, 2
|
||
push ax
|
||
call file_read
|
||
inc [bp+var_2]
|
||
add si, 10h
|
||
|
||
loc_C669:
|
||
mov al, [di+0Ah]
|
||
mov ah, 0
|
||
cmp ax, [bp+var_2]
|
||
jg loc_C5EE
|
||
call file_close
|
||
pop di
|
||
pop si
|
||
leave
|
||
retf 6
|
||
sub_C59A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C680 proc far
|
||
|
||
arg_0 = dword ptr 6
|
||
arg_4 = word ptr 0Ah
|
||
|
||
push bp
|
||
mov bp, sp
|
||
mov byte_DDE0, 1
|
||
push [bp+arg_4]
|
||
push large [bp+arg_0]
|
||
push cs
|
||
call near ptr sub_C59A
|
||
mov byte_DDE0, 0
|
||
pop bp
|
||
retf 6
|
||
sub_C680 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C69C proc far
|
||
|
||
arg_0 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov ax, [bp+arg_0]
|
||
shl ax, 4
|
||
add ax, 1AA8h
|
||
mov di, ax
|
||
xor si, si
|
||
jmp short loc_C6D0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C6B0:
|
||
mov bx, si
|
||
add bx, bx
|
||
cmp word ptr [bx+di+0Ch], 0
|
||
jz short loc_C6CF
|
||
mov bx, si
|
||
add bx, bx
|
||
push word ptr [bx+di+0Ch]
|
||
call hmem_free
|
||
mov bx, si
|
||
add bx, bx
|
||
mov word ptr [bx+di+0Ch], 0
|
||
|
||
loc_C6CF:
|
||
inc si
|
||
|
||
loc_C6D0:
|
||
cmp si, 2
|
||
jl short loc_C6B0
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf 2
|
||
sub_C69C endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C6DB proc far
|
||
|
||
var_32 = byte ptr -32h
|
||
var_12 = word ptr -12h
|
||
var_10 = word ptr -10h
|
||
var_E = word ptr -0Eh
|
||
var_C = word ptr -0Ch
|
||
var_A = word ptr -0Ah
|
||
var_8 = dword ptr -8
|
||
var_4 = word ptr -4
|
||
var_2 = word ptr -2
|
||
arg_0 = dword ptr 6
|
||
arg_4 = word ptr 0Ah
|
||
arg_6 = word ptr 0Ch
|
||
arg_8 = word ptr 0Eh
|
||
|
||
enter 32h, 0
|
||
push si
|
||
push di
|
||
mov di, [bp+arg_8]
|
||
mov ax, [bp+arg_4]
|
||
sar ax, 4
|
||
and ax, 3
|
||
mov [bp+var_E], ax
|
||
mov ax, [bp+arg_4]
|
||
sar ax, 6
|
||
and ax, 7
|
||
mov [bp+var_10], ax
|
||
push 0C0h ; '<27>'
|
||
mov ax, [bp+arg_4]
|
||
and ax, 0Fh
|
||
push ax
|
||
call grcg_setcolor
|
||
mov dx, 68h ; 'h'
|
||
mov al, 0Bh
|
||
out dx, al
|
||
jmp loc_C924
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C714:
|
||
mov ax, [bp+arg_6]
|
||
imul ax, 50h
|
||
push ax
|
||
mov ax, di
|
||
mov bx, 8
|
||
cwd
|
||
idiv bx
|
||
pop dx
|
||
add dx, ax
|
||
mov word ptr [bp+var_8+2], 0A800h
|
||
mov word ptr [bp+var_8], dx
|
||
mov ax, di
|
||
cwd
|
||
idiv bx
|
||
mov [bp+var_C], dx
|
||
les bx, [bp+arg_0]
|
||
assume es:nothing
|
||
mov al, es:[bx]
|
||
mov ah, 0
|
||
mov bx, ax
|
||
test byte ptr [bx+103Dh], 4
|
||
jz short loc_C769
|
||
mov bx, word ptr [bp+arg_0]
|
||
mov al, es:[bx]
|
||
cbw
|
||
shl ax, 8
|
||
mov dl, es:[bx+1]
|
||
mov dh, 0
|
||
add ax, dx
|
||
push ax
|
||
call sub_9561
|
||
pop cx
|
||
mov [bp+var_2], ax
|
||
add word ptr [bp+arg_0], 2
|
||
jmp short loc_C7AF
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C769:
|
||
les bx, [bp+arg_0]
|
||
mov al, es:[bx]
|
||
mov ah, 0
|
||
mov bx, ax
|
||
test byte ptr [bx+103Dh], 3
|
||
jz short loc_C787
|
||
mov bx, word ptr [bp+arg_0]
|
||
mov al, es:[bx]
|
||
mov ah, 0
|
||
add ax, 2980h
|
||
jmp short loc_C7A2
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C787:
|
||
les bx, [bp+arg_0]
|
||
mov al, es:[bx]
|
||
cbw
|
||
mov bx, ax
|
||
test byte ptr [bx+0D51h], 5Eh
|
||
jz short loc_C7A7
|
||
mov bx, word ptr [bp+arg_0]
|
||
mov al, es:[bx]
|
||
mov ah, 0
|
||
add ax, 2900h
|
||
|
||
loc_C7A2:
|
||
mov [bp+var_2], ax
|
||
jmp short loc_C7AC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C7A7:
|
||
mov [bp+var_2], 2B21h
|
||
|
||
loc_C7AC:
|
||
inc word ptr [bp+arg_0]
|
||
|
||
loc_C7AF:
|
||
mov al, byte ptr [bp+var_2]
|
||
and al, 0FFh
|
||
mov dx, 0A1h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov ax, [bp+var_2]
|
||
shr ax, 8
|
||
sub al, 20h ; ' '
|
||
mov dx, 0A3h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
cmp [bp+var_2], 2921h
|
||
jb short loc_C810
|
||
cmp [bp+var_2], 2B7Eh
|
||
ja short loc_C810
|
||
cmp di, 278h
|
||
jg loc_C92F
|
||
mov [bp+var_12], 0
|
||
jmp short loc_C803
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C7E1:
|
||
mov al, byte ptr [bp+var_12]
|
||
or al, 20h
|
||
mov dx, 0A5h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A9h ; '<27>'
|
||
in al, dx ; Interrupt Controller #2, 8259A
|
||
mov ah, 0
|
||
shl ax, 8
|
||
mov bx, [bp+var_12]
|
||
add bx, bx
|
||
lea dx, [bp+var_32]
|
||
add bx, dx
|
||
mov ss:[bx], ax
|
||
inc [bp+var_12]
|
||
|
||
loc_C803:
|
||
cmp [bp+var_12], 10h
|
||
jl short loc_C7E1
|
||
mov [bp+var_A], 0
|
||
jmp short loc_C866
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C810:
|
||
cmp di, 270h
|
||
jg loc_C92F
|
||
mov [bp+var_12], 0
|
||
jmp short loc_C85B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C81F:
|
||
mov al, byte ptr [bp+var_12]
|
||
or al, 20h
|
||
mov dx, 0A5h ; '<27>'
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A9h ; '<27>'
|
||
in al, dx ; Interrupt Controller #2, 8259A
|
||
mov ah, 0
|
||
shl ax, 8
|
||
mov bx, [bp+var_12]
|
||
add bx, bx
|
||
lea dx, [bp+var_32]
|
||
add bx, dx
|
||
mov ss:[bx], ax
|
||
mov dx, 0A5h ; '<27>'
|
||
mov al, byte ptr [bp+var_12]
|
||
out dx, al ; Interrupt Controller #2, 8259A
|
||
mov dx, 0A9h ; '<27>'
|
||
in al, dx ; Interrupt Controller #2, 8259A
|
||
mov ah, 0
|
||
mov bx, [bp+var_12]
|
||
add bx, bx
|
||
lea dx, [bp+var_32]
|
||
add bx, dx
|
||
add ss:[bx], ax
|
||
inc [bp+var_12]
|
||
|
||
loc_C85B:
|
||
cmp [bp+var_12], 10h
|
||
jl short loc_C81F
|
||
mov [bp+var_A], 1
|
||
|
||
loc_C866:
|
||
mov [bp+var_12], 0
|
||
jmp loc_C90B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C86E:
|
||
mov bx, [bp+var_12]
|
||
add bx, bx
|
||
lea ax, [bp+var_32]
|
||
add bx, ax
|
||
mov ax, ss:[bx]
|
||
mov [bp+var_4], ax
|
||
mov ax, [bp+var_E]
|
||
cmp ax, 1
|
||
jz short loc_C892
|
||
cmp ax, 2
|
||
jz short loc_C8A8
|
||
cmp ax, 3
|
||
jz short loc_C89E
|
||
jmp short loc_C8BE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C892:
|
||
mov si, [bp+var_4]
|
||
mov ax, si
|
||
add ax, ax
|
||
or [bp+var_4], ax
|
||
jmp short loc_C8BE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C89E:
|
||
mov si, [bp+var_4]
|
||
mov ax, si
|
||
add ax, ax
|
||
or [bp+var_4], ax
|
||
|
||
loc_C8A8:
|
||
mov si, [bp+var_4]
|
||
mov ax, si
|
||
add ax, ax
|
||
or [bp+var_4], ax
|
||
xor si, [bp+var_4]
|
||
mov ax, si
|
||
add ax, ax
|
||
not ax
|
||
and [bp+var_4], ax
|
||
|
||
loc_C8BE:
|
||
; sub_C6DB+1C1j
|
||
cmp [bp+var_C], 0
|
||
jz short loc_C8F1
|
||
mov cl, byte ptr [bp+var_C]
|
||
add cl, 8
|
||
mov ax, [bp+var_4]
|
||
shr ax, cl
|
||
les bx, [bp+var_8]
|
||
mov es:[bx], al
|
||
mov ax, [bp+var_4]
|
||
mov cl, byte ptr [bp+var_C]
|
||
shr ax, cl
|
||
mov es:[bx+1], al
|
||
mov cl, 8
|
||
sub cl, byte ptr [bp+var_C]
|
||
mov al, byte ptr [bp+var_4]
|
||
shl al, cl
|
||
mov es:[bx+2], al
|
||
jmp short loc_C904
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_C8F1:
|
||
mov ax, [bp+var_4]
|
||
shr ax, 8
|
||
les bx, [bp+var_8]
|
||
mov es:[bx], al
|
||
mov al, byte ptr [bp+var_4]
|
||
mov es:[bx+1], al
|
||
|
||
loc_C904:
|
||
add word ptr [bp+var_8], 50h ; 'P'
|
||
inc [bp+var_12]
|
||
|
||
loc_C90B:
|
||
cmp [bp+var_12], 10h
|
||
jl loc_C86E
|
||
cmp [bp+var_A], 0
|
||
jz short loc_C91C
|
||
add di, 8
|
||
|
||
loc_C91C:
|
||
mov ax, [bp+var_10]
|
||
add ax, 8
|
||
add di, ax
|
||
|
||
loc_C924:
|
||
les bx, [bp+arg_0]
|
||
cmp byte ptr es:[bx], 0
|
||
jnz loc_C714
|
||
|
||
loc_C92F:
|
||
; sub_C6DB+139j
|
||
mov dx, 68h ; 'h'
|
||
mov al, 0Ah
|
||
out dx, al
|
||
call grcg_off
|
||
pop di
|
||
pop si
|
||
leave
|
||
retf 0Ah
|
||
sub_C6DB endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C940 proc far
|
||
|
||
var_2 = word ptr -2
|
||
arg_0 = dword ptr 6
|
||
arg_4 = word ptr 0Ah
|
||
|
||
enter 2, 0
|
||
push si
|
||
mov si, [bp+arg_4]
|
||
mov ax, si
|
||
imul ax, 48h
|
||
add ax, 1CC0h
|
||
push ds
|
||
push ax
|
||
mov bx, si
|
||
shl bx, 2
|
||
push large dword ptr [bx+1CA8h]
|
||
call graph_pi_free
|
||
push large [bp+arg_0]
|
||
mov ax, si
|
||
imul ax, 48h
|
||
add ax, 1CC0h
|
||
push ds
|
||
push ax
|
||
mov ax, si
|
||
shl ax, 2
|
||
add ax, 1CA8h
|
||
push ds
|
||
push ax
|
||
call graph_pi_load_pack
|
||
mov [bp+var_2], ax
|
||
pop si
|
||
leave
|
||
retf 6
|
||
sub_C940 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_C986 proc far
|
||
; sub_9E16:loc_9E24P ...
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
cmp word_DABC, 0
|
||
jz short loc_C9A1
|
||
call sub_2DF4
|
||
mov ax, word_E9A4
|
||
or word_F296, ax
|
||
|
||
loc_C9A1:
|
||
mov ax, word_F292
|
||
or word_F296, ax
|
||
pop bp
|
||
retf
|
||
sub_C986 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
cmp word_DABC, 0
|
||
jz short loc_C9D4
|
||
call sub_2DF4
|
||
mov ax, word_E9A4
|
||
mov word_F292, ax
|
||
mov ax, word_F296
|
||
mov word_F294, ax
|
||
|
||
loc_C9D4:
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
cmp word_DABC, 0
|
||
jz short loc_C9F6
|
||
call sub_2DF4
|
||
mov ax, word_E9A4
|
||
mov word_F294, ax
|
||
mov ax, word_F296
|
||
mov word_F292, ax
|
||
|
||
loc_C9F6:
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
mov ax, word_F296
|
||
or word_F292, ax
|
||
cmp word_DABC, 0
|
||
jz short loc_CA1A
|
||
call sub_2DF4
|
||
mov ax, word_E9A4
|
||
or word_F292, ax
|
||
|
||
loc_CA1A:
|
||
mov word_F294, 0
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
mov ax, word_F296
|
||
or ax, word_F292
|
||
mov word_F294, ax
|
||
cmp word_DABC, 0
|
||
jz short loc_CA47
|
||
call sub_2DF4
|
||
mov ax, word_E9A4
|
||
or word_F294, ax
|
||
|
||
loc_CA47:
|
||
mov word_F292, 0
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
test byte ptr word_F296+1, 10h
|
||
jnz short loc_CA65
|
||
test byte ptr word_F296+1, 20h
|
||
jz short loc_CA6B
|
||
|
||
loc_CA65:
|
||
mov word_F296, 1000h
|
||
|
||
loc_CA6B:
|
||
mov word_F292, 0
|
||
mov word_F294, 0
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
nop
|
||
push cs
|
||
call near ptr sub_C1B4
|
||
cmp word_DABC, 0
|
||
jz short loc_CA94
|
||
call sub_2DF4
|
||
mov ax, word_E9A4
|
||
or word_F296, ax
|
||
|
||
loc_CA94:
|
||
mov ax, word_F292
|
||
or word_F296, ax
|
||
mov word_F292, 0
|
||
mov word_F294, 0
|
||
pop bp
|
||
retf
|
||
; ---------------------------------------------------------------------------
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov si, [bp+6]
|
||
xor di, di
|
||
|
||
loc_CAB3:
|
||
push cs
|
||
call near ptr sub_C986
|
||
cmp word_F296, 0
|
||
jz short loc_CAC7
|
||
push 1
|
||
nop
|
||
push cs
|
||
call near ptr sub_C19E
|
||
jmp short loc_CAB3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_CAC7:
|
||
or si, si
|
||
jnz short loc_CAEB
|
||
mov si, 270Fh
|
||
jmp short loc_CAEB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_CAD0:
|
||
push cs
|
||
call near ptr sub_C986
|
||
cmp word_F296, 0
|
||
jnz short loc_CAEF
|
||
inc di
|
||
push 1
|
||
nop
|
||
push cs
|
||
call near ptr sub_C19E
|
||
cmp si, 270Fh
|
||
jnz short loc_CAEB
|
||
xor di, di
|
||
|
||
loc_CAEB:
|
||
cmp di, si
|
||
jl short loc_CAD0
|
||
|
||
loc_CAEF:
|
||
pop di
|
||
pop si
|
||
pop bp
|
||
retf 2
|
||
; ---------------------------------------------------------------------------
|
||
db 0
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_CAF6:
|
||
push bp
|
||
mov bp, sp
|
||
push si
|
||
push di
|
||
mov si, [bp+6]
|
||
shl si, 4
|
||
add si, 1AA8h
|
||
mov ax, [bp+0Ah]
|
||
sar ax, 3
|
||
add ax, [si+6]
|
||
mov di, ax
|
||
mov ax, [si+8]
|
||
mov cs:word_CB3D, ax
|
||
jmp short $+2
|
||
shl ax, 2
|
||
add ax, 50h ; 'P'
|
||
mov dx, ax
|
||
mov ax, [bp+8]
|
||
mov bx, ax
|
||
shl ax, 2
|
||
add ax, bx
|
||
add ax, 0A800h
|
||
mov es, ax
|
||
push ds
|
||
mov ax, [si+0Eh]
|
||
mov ds, ax
|
||
xor si, si
|
||
mov bx, di
|
||
cld
|
||
nop
|
||
; ---------------------------------------------------------------------------
|
||
db 0B9h
|
||
word_CB3D dw 1234h
|
||
db 0F3h, 66h, 0A5h, 2Bh, 0FAh, 79h, 0F6h, 8Bh, 0FBh, 8Ch
|
||
db 0C0h, 5, 0, 8, 8Eh, 0C0h, 3Dh, 0, 0C0h, 72h, 0E8h, 3Dh
|
||
db 0, 0C8h, 73h, 7, 5, 0, 20h, 8Eh, 0C0h, 0EBh, 0DCh, 1Fh
|
||
db 5Fh, 5Eh, 5Dh, 0CAh, 6, 0, 90h
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_CB68 proc far
|
||
push di
|
||
xor ax, ax
|
||
mov di, 1E70h
|
||
xor dl, dl
|
||
jmp short loc_CB7D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_CB72:
|
||
xor dl, dl
|
||
mov cx, 8
|
||
|
||
loc_CB77:
|
||
rol al, 1
|
||
rcr dl, 1
|
||
loop loc_CB77
|
||
|
||
loc_CB7D:
|
||
mov [di], dl
|
||
inc di
|
||
inc al
|
||
jnz short loc_CB72
|
||
pop di
|
||
retf
|
||
sub_CB68 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_CB86 proc far
|
||
|
||
arg_0 = word ptr 6
|
||
|
||
push bp
|
||
mov bp, sp
|
||
mov vsync_Count1, 0
|
||
|
||
loc_CB8F:
|
||
mov ax, vsync_Count1
|
||
cmp ax, [bp+arg_0]
|
||
jb short loc_CB8F
|
||
pop bp
|
||
retf 2
|
||
sub_CB86 endp
|
||
|
||
seg002 ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
seg003 segment byte public 'CODE' use16
|
||
assume cs:seg003
|
||
;org 0Bh
|
||
assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
|
||
db 0
|
||
|
||
include libs/BorlandC/ctor2[textc].asm
|
||
include libs/BorlandC/ctor3[textc].asm
|
||
include libs/BorlandC/strings[textc].asm
|
||
dd 0, 0, 0
|
||
seg003 ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure data
|
||
dseg segment para public 'DATA' use16
|
||
assume cs:dseg
|
||
|
||
include libs/BorlandC/c0[data].asm
|
||
|
||
byte_D880 db 0
|
||
unk_D881 db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 1
|
||
db 0
|
||
db 0
|
||
db 2
|
||
db 0
|
||
db 3
|
||
db 5
|
||
db 4
|
||
db 6
|
||
aIiklmnop db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||
aIiklccss db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||
aTufxmnop db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0
|
||
db 3
|
||
db 1
|
||
db 5
|
||
db 0Dh
|
||
db 7
|
||
db 0Bh
|
||
db 9
|
||
db 5
|
||
db 58h ; X
|
||
db 2
|
||
db 0
|
||
db 0
|
||
db 0E8h ; <20>
|
||
db 3
|
||
db 0
|
||
db 0
|
||
db 80h ; <20>
|
||
db 0Ch
|
||
db 0
|
||
db 0
|
||
db 0F4h ; <20>
|
||
db 1
|
||
db 0
|
||
db 0
|
||
unk_D8CC db 30h ; 0
|
||
db 31h ; 1
|
||
db 32h ; 2
|
||
db 0
|
||
a345678 db '345678',0
|
||
aAbcdefg db 'ABCDEFG',0
|
||
aVgdej db '<27><><EFBFBD><EFBFBD><EFBFBD>',0
|
||
a?@ db '=>?@',0
|
||
aHij db 'HIJ',0
|
||
; sub_9F57+132o
|
||
aNop db 'nop',0
|
||
aKlmn db 'KLMN',0
|
||
a_A db '\]^_`a',0
|
||
db '<27><><EFBFBD><EFBFBD>',0
|
||
aQrs db 'qrs',0
|
||
aTuvw db 'tuvw',0
|
||
aXyz db 'xyz',0
|
||
asc_D910 db '{|}~',0
|
||
aZ db '<27><>Z[<5B><><EFBFBD>',0
|
||
aOpqr db '<27>OPQR<51><52>',0
|
||
aStuvwxy db 'STUVWXY',0
|
||
aBcde db 'bcde',0
|
||
aBcdf db 'bcdf',0
|
||
aBcdg db 'bcdg',0
|
||
aHilmhi db 'hilmhi',0
|
||
aJklmhi db 'jklmhi',0
|
||
aHilmjk db 'hilmjk',0
|
||
byte_D951 db 0
|
||
byte_D952 db 0
|
||
; sub_A0E0+102w ...
|
||
byte_D953 db 1
|
||
; sub_A0E0:loc_A0FAw ...
|
||
byte_D954 db 0
|
||
byte_D955 db 0
|
||
aYume_cfg db 'YUME.CFG',0
|
||
; char path[]
|
||
path db 'mainl',0
|
||
; sub_9A17+176o ...
|
||
asc_D965 db ' ',0
|
||
aVfvcvbgngngbgn db '<27>f<EFBFBD>c<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɂȂ<C982><C882>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B',0Ah,0
|
||
aUmx db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͂Q<CD82>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>łȂ<C582><C882>Ɛ<EFBFBD><C690><EFBFBD><EFBFBD>ɃQ<C983>[<5B><><EFBFBD><EFBFBD><EFBFBD>v<EFBFBD><76><EFBFBD>C<EFBFBD>o<EFBFBD><6F><EFBFBD>܂<EFBFBD><DC82><EFBFBD>',0Ah,0
|
||
aViosrfvVVkvqbd db 0Ah
|
||
db '<27><><EFBFBD>萔<EFBFBD>ł<EFBFBD><C582><EFBFBD><EFBFBD>Q<EFBFBD>D<EFBFBD>T<EFBFBD>l<EFBFBD>g<EFBFBD><67><EFBFBD>ɐ<C990><D882>ւ<EFBFBD><D682>āA<C481><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>x<EFBFBD><78><EFBFBD>s<EFBFBD><73><EFBFBD>ĂˁB',0Ah,0
|
||
aCOul db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1.dat',0
|
||
aGbgvgkxsslvVBb db 0Ah
|
||
db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>ł<EFBFBD><C582>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>𑝂₵<F0919D82>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s<EFBFBD><73><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>',0Ah,0
|
||
aMikoft_bft db 'MIKOFT.bft',0
|
||
db 0
|
||
include libs/master.lib/bfnt_id[data].asm
|
||
include libs/master.lib/clip[data].asm
|
||
include libs/master.lib/edges[data].asm
|
||
include libs/master.lib/fil[data].asm
|
||
include libs/master.lib/dos_ropen[data].asm
|
||
include libs/master.lib/gaiji_backup[data].asm
|
||
include libs/master.lib/gaiji_entry_bfnt[data].asm
|
||
include libs/master.lib/grp[data].asm
|
||
db 0
|
||
word_DABC dw 0
|
||
; sub_2DF4+5r ...
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
include libs/master.lib/pal[data].asm
|
||
include libs/master.lib/pf[data].asm
|
||
db 0
|
||
include libs/master.lib/rand[data].asm
|
||
include libs/master.lib/sin8[data].asm
|
||
include libs/master.lib/tx[data].asm
|
||
include libs/master.lib/vs[data].asm
|
||
include libs/master.lib/wordmask[data].asm
|
||
include libs/master.lib/mem[data].asm
|
||
include libs/master.lib/super_entry_bfnt[data].asm
|
||
include libs/master.lib/superpa[data].asm
|
||
byte_DDCC db 0
|
||
db 0
|
||
aPal98Grb db 'pal98 grb',0
|
||
include libs/master.lib/draw_trapezoid[data].asm
|
||
a_exe db '.exe',0
|
||
db 0
|
||
byte_DDE0 db 0
|
||
db 0
|
||
dd aNo_1B@cVOul ; "NO.1 <20>@<40><><EFBFBD>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> "
|
||
dd aNo_2B@B@Select ; "NO.2 <20>@ <20>@ Selection "
|
||
dd aNo_3Umx ; "NO.3 <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD>k "
|
||
dd aNo_4Reincarnat ; "NO.4 Reincarnation "
|
||
dd aNo_5Dim_Dream ; "NO.5 Dim. Dream "
|
||
dd aNo_6TabulaRasa ; "NO.6 Tabula rasa<73>@<40>`<60><EFBFBD><F394928F><EFBFBD> "
|
||
dd aNo_7B@Maniacal ; "NO.7 <20>@ Maniacal Princess "
|
||
dd aNo_8CPOBLostDr ; "NO.8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>`Lost Dream "
|
||
dd aNo_9CMCvlyBDre ; "NO.9 <20><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Y <20>`Dream War "
|
||
dd aNo_10Cvc@mirab ; "NO.10 <20><><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>`Fight it out!"
|
||
dd aNo_11B@SailorO ; "NO.11 <20>@ Sailor of Time "
|
||
dd aNo_12Strawberr ; "NO.12 Strawberry Crisis!! "
|
||
dd aNo_13F ; "NO.13 <20>ꖂ<F1939D88>@<40><><EFBFBD>E<EFBFBD>_ "
|
||
dd aNo_14B@cvc@pri ; "NO.14 <09>@<40><><EFBFBD>@<40><><EFBFBD><EFBFBD> "
|
||
dd aNo_15B@lviuvC ; "NO.15 <09>@<40>v<EFBFBD><76><EFBFBD>̖<EFBFBD> "
|
||
dd aNo_16Umx ; "NO.16 <09><><EFBFBD><EFBFBD><EFBFBD>̐<CC90><C282><EFBFBD> "
|
||
dd aNo_17IiiuvCumo ; "NO.17 <20>i<EFBFBD><69><EFBFBD>̖<EFBFBD><CC96><EFBFBD> "
|
||
dd aNo_18MapleDrea ; "NO.18 Maple Dream... "
|
||
dd aNo_19CRlvLxu ; "NO.19 <20><><EFBFBD>l<EFBFBD>̋x<CC8B><78> "
|
||
dd aB@b@ ; " <20>@<40>@ "
|
||
dd aB@b@vpvxvivf ; " <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "
|
||
dd aOp_m_0 ; "op.m"
|
||
dd aSelect_m_0 ; "select.m"
|
||
dd a00mm_m ; "00mm.m"
|
||
dd a01mm_m ; "01mm.m"
|
||
dd a02mm_m ; "02mm.m"
|
||
dd a03mm_m ; "03mm.m"
|
||
dd a04mm_m ; "04mm.m"
|
||
dd a05mm_m ; "05mm.m"
|
||
dd a06mm_m ; "06mm.m"
|
||
dd aDec_m ; "dec.m"
|
||
dd a07mm_m ; "07mm.m"
|
||
dd a08mm_m ; "08mm.m"
|
||
dd aDemo1_m ; "demo1.m"
|
||
dd aDemo2_m ; "demo2.m"
|
||
dd aDemo3_m ; "demo3.m"
|
||
dd aDemo4_m ; "demo4.m"
|
||
dd aDemo5_m ; "demo5.m"
|
||
dd aEd_m ; "ed.m"
|
||
dd aScore_m ; "score.m"
|
||
byte_DE82 db 0
|
||
byte_DE83 db 0
|
||
aNo_1B@cVOul db 'NO.1 <20>@<40><><EFBFBD>͎<EFBFBD><CD8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD><7A><EFBFBD><EFBFBD> ',0
|
||
aNo_2B@B@Select db 'NO.2 <20>@ <20>@ Selection ',0
|
||
aNo_3Umx db 'NO.3 <20><><EFBFBD><EFBFBD><EFBFBD>d<EFBFBD><64><EFBFBD>k ',0
|
||
aNo_4Reincarnat db 'NO.4 Reincarnation ',0
|
||
aNo_5Dim_Dream db 'NO.5 Dim. Dream ',0
|
||
aNo_6TabulaRasa db 'NO.6 Tabula rasa<73>@<40>`<60><EFBFBD><F394928F><EFBFBD> ',0
|
||
aNo_7B@Maniacal db 'NO.7 <20>@ Maniacal Princess ',0
|
||
aNo_8CPOBLostDr db 'NO.8 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>`Lost Dream ',0
|
||
aNo_9CMCvlyBDre db 'NO.9 <20><><EFBFBD><EFBFBD><EFBFBD>V<EFBFBD>Y <20>`Dream War ',0
|
||
aNo_10Cvc@mirab db 'NO.10 <20><><EFBFBD>@<40><><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>`Fight it out!',0
|
||
aNo_11B@SailorO db 'NO.11 <20>@ Sailor of Time ',0
|
||
aNo_12Strawberr db 'NO.12 Strawberry Crisis!! ',0
|
||
aNo_13F db 'NO.13 <20>ꖂ<F1939D88>@<40><><EFBFBD>E<EFBFBD>_ ',0
|
||
aNo_14B@cvc@pri db 'NO.14 <20>@<40><><EFBFBD>@<40><><EFBFBD><EFBFBD> ',0
|
||
aNo_15B@lviuvC db 'NO.15 <20>@<40>v<EFBFBD><76><EFBFBD>̖<EFBFBD> ',0
|
||
aNo_16Umx db 'NO.16 <20><><EFBFBD><EFBFBD><EFBFBD>̐<CC90><C282><EFBFBD> ',0
|
||
aNo_17IiiuvCumo db 'NO.17 <20>i<EFBFBD><69><EFBFBD>̖<EFBFBD><CC96><EFBFBD> ',0
|
||
aNo_18MapleDrea db 'NO.18 Maple Dream... ',0
|
||
aNo_19CRlvLxu db 'NO.19 <20><><EFBFBD>l<EFBFBD>̋x<CC8B><78> ',0
|
||
aB@b@ db ' <20>@<40>@ ',0
|
||
aB@b@vpvxvivf db ' <20>@<40>@<40>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ',0
|
||
aOp_m_0 db 'op.m',0
|
||
aSelect_m_0 db 'select.m',0
|
||
a00mm_m db '00mm.m',0
|
||
a01mm_m db '01mm.m',0
|
||
a02mm_m db '02mm.m',0
|
||
a03mm_m db '03mm.m',0
|
||
a04mm_m db '04mm.m',0
|
||
a05mm_m db '05mm.m',0
|
||
a06mm_m db '06mm.m',0
|
||
aDec_m db 'dec.m',0
|
||
a07mm_m db '07mm.m',0
|
||
a08mm_m db '08mm.m',0
|
||
aDemo1_m db 'demo1.m',0
|
||
aDemo2_m db 'demo2.m',0
|
||
aDemo3_m db 'demo3.m',0
|
||
aDemo4_m db 'demo4.m',0
|
||
aDemo5_m db 'demo5.m',0
|
||
aEd_m db 'ed.m',0
|
||
aScore_m db 'score.m',0
|
||
aMusic_txt db 'MUSIC.TXT',0
|
||
aOp3_pi db 'op3.pi',0
|
||
aOpwin_bft db 'opwin.bft',0
|
||
aOp_m db 'op.m',0
|
||
aTl01_pi db 'TL01.PI',0
|
||
aTl02_pi db 'TL02.PI',0
|
||
db 0
|
||
word_E1F2 dw 0A04h
|
||
aYume_nem db 'YUME.NEM',0
|
||
db 0
|
||
off_E1FE dd a00sl_cd2
|
||
; "00SL.CD2"
|
||
dd a02sl_cd2 ; "02SL.CD2"
|
||
dd a04sl_cd2 ; "04SL.CD2"
|
||
dd a06sl_cd2 ; "06SL.CD2"
|
||
dd a08sl_cd2 ; "08SL.CD2"
|
||
dd a10sl_cd2 ; "10SL.CD2"
|
||
dd a12sl_cd2 ; "12SL.CD2"
|
||
dd a14sl_cd2 ; "14SL.CD2"
|
||
dd a16sl_cd2 ; "16SL.CD2"
|
||
db 3
|
||
db 1
|
||
db 5
|
||
db 4
|
||
db 4
|
||
db 2
|
||
db 3
|
||
db 4
|
||
db 3
|
||
db 2
|
||
db 3
|
||
db 1
|
||
db 4
|
||
db 1
|
||
db 4
|
||
db 2
|
||
db 2
|
||
db 5
|
||
db 4
|
||
db 5
|
||
db 1
|
||
db 5
|
||
db 2
|
||
db 4
|
||
db 5
|
||
db 5
|
||
db 3
|
||
db 12h
|
||
db 13h
|
||
db 0
|
||
db 16h
|
||
db 17h
|
||
db 0
|
||
db 14h
|
||
db 15h
|
||
db 0
|
||
db 18h
|
||
db 19h
|
||
db 0
|
||
db 0
|
||
db 0
|
||
a00sl_cd2 db '00SL.CD2',0
|
||
a02sl_cd2 db '02SL.CD2',0
|
||
a04sl_cd2 db '04SL.CD2',0
|
||
a06sl_cd2 db '06SL.CD2',0
|
||
a08sl_cd2 db '08SL.CD2',0
|
||
a10sl_cd2 db '10SL.CD2',0
|
||
a12sl_cd2 db '12SL.CD2',0
|
||
a14sl_cd2 db '14SL.CD2',0
|
||
a16sl_cd2 db '16SL.CD2',0
|
||
aSlex_cd2 db 'slex.cd2',0
|
||
a99sl_cdg db '99sl.cdg',0
|
||
aSlwin_cdg db 'slwin.cdg',0
|
||
aSlex_cdg db 'slex.cdg',0
|
||
aSelect_m db 'select.m',0
|
||
aChname_bft db 'chname.bft',0
|
||
aTlsl_rgb db 'TLSL.RGB',0
|
||
aAS_ db 'A<><41>',0
|
||
aAbnormalProgra db 'Abnormal program termination',0Dh,0Ah,0
|
||
db 0
|
||
include libs/BorlandC/atexit[data].asm
|
||
include libs/BorlandC/exit[data].asm
|
||
include libs/BorlandC/files[data].asm
|
||
include libs/BorlandC/__IOERROR[data].asm
|
||
db 0
|
||
include libs/BorlandC/new[data].asm
|
||
__stklen dw 1000h
|
||
include libs/master.lib/ctype[data].asm
|
||
db 0
|
||
include libs/BorlandC/xxv[data].asm
|
||
include libs/BorlandC/cputype[data].asm
|
||
include libs/BorlandC/fbrk[data].asm
|
||
include libs/BorlandC/signal[data].asm
|
||
dword_E794 dd 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 5Ch ; \
|
||
db 0
|
||
word_E7A8 dw 0
|
||
; _setvbuf+4Bw
|
||
word_E7AA dw 0
|
||
; _setvbuf+35w
|
||
include libs/BorlandC/sysnerr[data].asm
|
||
include libs/BorlandC/xx[data].asm
|
||
include libs/BorlandC/setenvp[data].asm
|
||
include libs/BorlandC/strings[data].asm
|
||
include libs/BorlandC/kbhit[data].asm
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 8
|
||
db 0
|
||
db 8
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 8
|
||
db 0Ah
|
||
db 0Ah
|
||
db 0Ah
|
||
db 0Ah
|
||
db 0Ah
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 9
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0Ch
|
||
db 0
|
||
db 0
|
||
db 0
|
||
db 0
|
||
aPath db 'PATH',0
|
||
db '/\',0
|
||
db 0
|
||
a_bat db '.BAT',0
|
||
a_com db '.COM',0
|
||
a_exe_0 db '.EXE',0
|
||
a_bat_0 db '.BAT',0
|
||
aComspec db 'COMSPEC',0
|
||
aC db '/c',0
|
||
|
||
InitStart label byte
|
||
include libs/BorlandC/new[initdata].asm
|
||
include libs/BorlandC/setupio[initdata].asm
|
||
include libs/BorlandC/cputype[initdata].asm
|
||
db 0
|
||
db 0Fh
|
||
db 0EEh ; <20>
|
||
db 45h ; E
|
||
db 0
|
||
db 0
|
||
include libs/BorlandC/setenvp[initdata].asm
|
||
InitEnd label byte
|
||
|
||
ExitStart label byte
|
||
include libs/BorlandC/new[exitdata].asm
|
||
ExitEnd label byte
|
||
|
||
bdata@ label byte
|
||
byte_E97A db ?
|
||
byte_E97B db ?
|
||
byte_E97C db ?
|
||
; sub_A203+1EAw ...
|
||
db ?
|
||
word_E97E dw ?
|
||
include libs/master.lib/clip[bss].asm
|
||
include libs/master.lib/fil[bss].asm
|
||
word_E9A4 dw ?
|
||
; sub_C1B4+Bw ...
|
||
db ?
|
||
db ? ;
|
||
include libs/master.lib/pal[bss].asm
|
||
include libs/master.lib/vs[bss].asm
|
||
include libs/master.lib/vsync[bss].asm
|
||
include libs/master.lib/mem[bss].asm
|
||
include libs/master.lib/superpa[bss].asm
|
||
dword_F1EA dd ?
|
||
; sub_A8CF+53r ...
|
||
dword_F1EE dd ?
|
||
dword_F1F2 dd ?
|
||
dword_F1F6 dd ?
|
||
; sub_A8CF+10Fr ...
|
||
byte_F1FA db ?
|
||
byte_F1FB db ?
|
||
; seg002:006Dw ...
|
||
byte_F1FC db ?
|
||
byte_F1FD db ?
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
db ? ;
|
||
db ? ;
|
||
unk_F20C db ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
db ? ;
|
||
db ? ;
|
||
db ? ;
|
||
word_F28C dw ?
|
||
word_F28E dw ?
|
||
word_F290 dw ?
|
||
word_F292 dw ?
|
||
word_F294 dw ?
|
||
word_F296 dw ?
|
||
; sub_9BDF:loc_9C4Ar ...
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dword_F498 dd ?
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
unk_F4B0 db ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
db ? ;
|
||
db ? ;
|
||
db ? ;
|
||
unk_F760 db ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
db ? ;
|
||
db ? ;
|
||
db ? ;
|
||
word_F828 dw ?
|
||
word_F82A dw ?
|
||
unk_F82C db ? ;
|
||
db ? ;
|
||
word_F82E dw ?
|
||
unk_F830 db ? ;
|
||
db ? ;
|
||
word_F832 dw ?
|
||
unk_F834 db ? ;
|
||
; sub_A8CF+107r ...
|
||
db ? ;
|
||
word_F836 dw ?
|
||
unk_F838 db ? ;
|
||
; sub_A8CF+11Ar ...
|
||
db ? ;
|
||
word_F83A dw ?
|
||
unk_F83C db ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
db ? ;
|
||
db ? ;
|
||
db ? ;
|
||
word_FB84 dw ?
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
byte_FBD6 db ?
|
||
; sub_B35D:loc_B376r
|
||
byte_FBD7 db ?
|
||
dd ? ;
|
||
byte_FBDC db ?
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
dd ? ;
|
||
db ? ;
|
||
db ? ;
|
||
db ? ;
|
||
byte_FC50 db ?
|
||
byte_FC51 db ?
|
||
word_FC52 dw ?
|
||
dword_FC54 dd ?
|
||
byte_FC58 db ?
|
||
byte_FC59 db ?
|
||
; sub_B565:loc_B608r ...
|
||
byte_FC5A db ?
|
||
byte_FC5B db ?
|
||
byte_FC5C db ?
|
||
; sub_BA88+151r ...
|
||
db ?
|
||
dword_FC5E dd ?
|
||
word_FC62 dw ?
|
||
; sub_B908+16Aw ...
|
||
word_FC64 dw ?
|
||
word_FC66 dw ?
|
||
byte_FC68 db ?
|
||
; sub_B636:loc_B663r ...
|
||
db ? ;
|
||
include libs/BorlandC/atexit[bss].asm
|
||
include libs/BorlandC/sigdata[bss].asm
|
||
dd ? ;
|
||
include libs/BorlandC/signal[bss].asm
|
||
include libs/BorlandC/xx[bss].asm
|
||
edata@ label byte
|
||
|
||
dseg ends
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Uninitialized
|
||
seg005 segment byte stack 'STACK' use16
|
||
assume cs:seg005
|
||
assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing
|
||
db 80h dup(?)
|
||
seg005 ends
|
||
|
||
|
||
end startx
|