mirror of https://github.com/nmlgc/ReC98.git
2138 lines
38 KiB
NASM
2138 lines
38 KiB
NASM
; This is a rebranded version of Promisence Soft's SPRITE16.COM driver,
|
||
; version 0.04, which was bundled with the sample game "StormySpace".
|
||
; See SPRITE16.DOC for API documentation.
|
||
;
|
||
; +-------------------------------------------------------------------------+
|
||
; | This file has been generated by The Interactive Disassembler (IDA) |
|
||
; | Copyright (c) 2009 by Hex-Rays, <support@hex-rays.com> |
|
||
; +-------------------------------------------------------------------------+
|
||
;
|
||
; Input MD5 : 712EDD4642948A68F70365DC4DB06C62
|
||
|
||
; File Name : th04/ZUN.COM:ZUNSP (-4)
|
||
; Format : MS-DOS COM-file
|
||
; Base Address: 0h Range: 100h-1180h Loaded length: 1080h
|
||
; OS type : MS DOS
|
||
; Application type: Executable 16bit
|
||
|
||
.286 ; Force the .model directive to create 16-bit default segments...
|
||
.model tiny
|
||
.386 ; ... then switch to what we actually need.
|
||
; And yes, we can't move this to an include file for some reason.
|
||
|
||
include libs/master.lib/macros.inc
|
||
|
||
; ===========================================================================
|
||
|
||
; Segment type: Pure code
|
||
_TEXT segment use16
|
||
assume cs:_TEXT
|
||
org 100h
|
||
assume es:nothing, ss:nothing, ds:_TEXT, fs:nothing, gs:nothing
|
||
|
||
public start
|
||
start:
|
||
jmp short sub_10C
|
||
; ---------------------------------------------------------------------------
|
||
aSprite16 db 'SPRITE16',0
|
||
db 4
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: noreturn
|
||
|
||
sub_10C proc near
|
||
|
||
cld
|
||
push offset aHeader
|
||
call sub_676
|
||
push es
|
||
mov ax, 0
|
||
mov es, ax
|
||
assume es:_TEXT
|
||
mov bx, word ptr es:start
|
||
mov es, word ptr es:aSprite16 ; "SPRITE16"
|
||
assume es:nothing
|
||
mov ax, es:[bx+2]
|
||
xchg al, ah
|
||
pop es
|
||
assume es:nothing
|
||
cmp ax, 'OK'
|
||
jnz short loc_137
|
||
mov word_F40, 1
|
||
jmp short loc_13D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_137:
|
||
mov word_F40, 0
|
||
|
||
loc_13D:
|
||
mov ax, 1180h
|
||
shr ax, 4
|
||
inc ax
|
||
mov word_F43, ax
|
||
mov sp, offset word_F38
|
||
push ds
|
||
pop es
|
||
assume es:_TEXT
|
||
mov bx, word_F43
|
||
mov ah, 4Ah
|
||
int 21h ; DOS - 2+ - ADJUST MEMORY BLOCK SIZE (SETBLOCK)
|
||
; ES = segment address of block to change
|
||
; BX = new size in paragraphs
|
||
jnb short loc_161
|
||
push offset aGbgvgkpkpmvOFs ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD>Ɏ<EFBFBD><C98E>s<EFBFBD><73><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_161:
|
||
mov di, 81h
|
||
mov al, 0Dh
|
||
mov cx, 80h
|
||
repne scasb
|
||
mov byte ptr [di-1], 0
|
||
mov si, 81h
|
||
call sub_920
|
||
cmp word_1070, 0
|
||
jbe short loc_186
|
||
call sub_A36
|
||
mov ax, 4C00h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
jmp short loc_191
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_186:
|
||
push offset aUsage
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
|
||
loc_191:
|
||
cmp cs:word_F40, 0
|
||
jz short locret_19B
|
||
int 40h ; Hard disk - Relocated Floppy Handler (original INT 13h)
|
||
|
||
locret_19B:
|
||
retn
|
||
sub_10C endp
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_19C proc near
|
||
mov bx, 1000
|
||
mov ah, 48h
|
||
int 21h ; DOS - 2+ - ALLOCATE MEMORY
|
||
; BX = number of 16-byte paragraphs desired
|
||
jnb short loc_1B0
|
||
push offset aGbgvgkvkslvsvV ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_1B0:
|
||
mov word_F3C, ax
|
||
add word_F43, 1000
|
||
mov bx, 1000
|
||
mov ah, 48h
|
||
int 21h ; DOS - 2+ - ALLOCATE MEMORY
|
||
; BX = number of 16-byte paragraphs desired
|
||
jnb short loc_1CD
|
||
push offset aGbgvgkvkslvsvV ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_1CD:
|
||
mov word_F3E, ax
|
||
add word_F43, 1000
|
||
retn
|
||
sub_19C endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_1D7 proc near
|
||
call sub_A0A
|
||
mov byte_F42, al
|
||
retn
|
||
sub_1D7 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_1DE proc near
|
||
call sub_19C
|
||
call sub_520
|
||
call sub_540
|
||
call sub_610
|
||
push ds
|
||
push es
|
||
mov ds, word_F3C
|
||
xor si, si
|
||
mov ax, 0A800h
|
||
mov es, ax
|
||
assume es:nothing
|
||
xor di, di
|
||
mov cx, 1F40h
|
||
rep movsw
|
||
pop es
|
||
assume es:nothing
|
||
pop ds
|
||
retn
|
||
sub_1DE endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_201 proc near
|
||
call sub_19C
|
||
call sub_540
|
||
call sub_A0A
|
||
mov dx, ax
|
||
call sub_A0A
|
||
mov bx, ax
|
||
call sub_A0A
|
||
mov di, ax
|
||
call sub_A0A
|
||
push ax
|
||
call sub_A0A
|
||
mov cx, ax
|
||
pop ax
|
||
call sub_BD0
|
||
call sub_364
|
||
call sub_C10
|
||
retn
|
||
sub_201 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_22A proc far
|
||
push bx
|
||
mov bl, ah
|
||
xor bh, bh
|
||
shl bx, 1
|
||
mov bx, cs:off_103E[bx]
|
||
mov cs:word_F45, bx
|
||
pop bx
|
||
sti
|
||
call cs:word_F45
|
||
iret
|
||
sub_22A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_243 proc near
|
||
push es
|
||
xor ax, ax
|
||
mov es, ax
|
||
assume es:_TEXT
|
||
mov bl, byte_F42
|
||
xor bh, bh
|
||
shl bx, 2
|
||
mov es, word ptr es:[bx+2]
|
||
assume es:nothing
|
||
mov di, 102h
|
||
mov si, 102h
|
||
mov cx, 0Ah
|
||
repe cmpsb
|
||
pop es
|
||
jz short loc_2A6
|
||
call sub_19C
|
||
push es
|
||
xor ax, ax
|
||
mov es, ax
|
||
assume es:_TEXT
|
||
mov dx, cs
|
||
mov ax, offset sub_22A
|
||
mov bl, byte_F42
|
||
xor bh, bh
|
||
shl bx, 2
|
||
xchg dx, es:[bx+2]
|
||
xchg ax, es:[bx]
|
||
mov word_F38, dx
|
||
mov word_F3A, ax
|
||
pop es
|
||
assume es:nothing
|
||
movzx eax, byte_F42
|
||
push eax
|
||
mov bx, sp
|
||
mov dx, offset aPatuvVVVBbInt0 ; "<22>풓<EFBFBD><ED9293><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B(int %02Xh)\r\n"
|
||
call sub_640
|
||
add sp, 4
|
||
mov dx, word_F43
|
||
mov ax, 3100h
|
||
int 21h ; DOS - DOS 2+ - TERMINATE BUT STAY RESIDENT
|
||
; AL = exit code, DX = program size, in paragraphs
|
||
; ---------------------------------------------------------------------------
|
||
jmp short locret_2AC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_2A6:
|
||
push offset aVVVPatuvVVvvVB ; "<22><><EFBFBD>łɏ풓<C98F><ED9293><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B\r\n"
|
||
call sub_676
|
||
|
||
locret_2AC:
|
||
retn
|
||
sub_243 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_2AD proc near
|
||
xor ax, ax
|
||
mov es, ax
|
||
assume es:_TEXT
|
||
mov bl, byte_F42
|
||
xor bh, bh
|
||
shl bx, 2
|
||
mov es, word ptr es:[bx+2]
|
||
assume es:nothing
|
||
mov di, 102h
|
||
mov si, 102h
|
||
mov cx, 0Ah
|
||
repe cmpsb
|
||
jnz short loc_339
|
||
mov dx, es:word_F38
|
||
mov ax, es:word_F3A
|
||
push es
|
||
xor ax, ax
|
||
mov es, ax
|
||
assume es:_TEXT
|
||
mov bl, byte_F42
|
||
xor bh, bh
|
||
shl bx, 2
|
||
mov es:[bx+2], dx
|
||
mov es:[bx], ax
|
||
pop es
|
||
assume es:nothing
|
||
push es
|
||
mov es, word ptr es:2Ch
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
jnb short loc_2FC
|
||
push offset aKLlcIci ; "<22><EFBFBD><C28B>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s\r\n"
|
||
call sub_676
|
||
|
||
loc_2FC:
|
||
pop es
|
||
push es
|
||
mov es, word ptr es:0F3Ch
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
jnb short loc_30F
|
||
push offset aGGxgngfbGCIci ; "<22>}<7D>X<EFBFBD>N<EFBFBD>f<EFBFBD>[<5B>^<5E>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s\r\n"
|
||
call sub_676
|
||
|
||
loc_30F:
|
||
pop es
|
||
push es
|
||
mov es, word ptr es:0F3Eh
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
jnb short loc_322
|
||
push offset aGxgGfbGCIci ; "<22>x<EFBFBD>^<5E>f<EFBFBD>[<5B>^<5E>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s\r\n"
|
||
call sub_676
|
||
|
||
loc_322:
|
||
pop es
|
||
mov ah, 49h
|
||
int 21h ; DOS - 2+ - FREE MEMORY
|
||
; ES = segment address of area to be freed
|
||
jnb short loc_331
|
||
push offset aGrbGhcIci ; "<22>R<EFBFBD>[<5B>h<EFBFBD>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s\r\n"
|
||
call sub_676
|
||
jmp short locret_33F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_331:
|
||
push offset aI ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n"
|
||
call sub_676
|
||
jmp short locret_33F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_339:
|
||
push offset aPatuvVVvvVV ; "<22>풓<EFBFBD><ED9293><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n"
|
||
call sub_676
|
||
|
||
locret_33F:
|
||
retn
|
||
sub_2AD endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_340 proc near
|
||
mov cs:word_1064, dx
|
||
retn
|
||
sub_340 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_346 proc near
|
||
mov cs:word_1066, dx
|
||
retn
|
||
sub_346 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_34C proc near
|
||
mov cs:word_1068, dx
|
||
retn
|
||
sub_34C endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_352 proc near
|
||
mov cs:word_106E, dx
|
||
retn
|
||
sub_352 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_358 proc near
|
||
mov cs:word_106A, dx
|
||
retn
|
||
sub_358 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_35E proc near
|
||
mov cs:word_106C, dx
|
||
retn
|
||
sub_35E endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_364 proc near
|
||
push ax
|
||
push bx
|
||
push cx
|
||
push dx
|
||
push si
|
||
push di
|
||
push bp
|
||
push ds
|
||
push es
|
||
push cs
|
||
pop ds
|
||
xor ah, ah
|
||
mov word_105A, dx
|
||
mov word_105C, bx
|
||
mov word_105E, di
|
||
mov word_1060, ax
|
||
mov word_1062, cx
|
||
mov word_1054, 0
|
||
cmp word_105C, 0
|
||
jge short loc_3C1
|
||
mov ax, word_105C
|
||
add ax, word_1062
|
||
cmp ax, 0
|
||
jg short loc_3A1
|
||
jmp short loc_3F8
|
||
; ---------------------------------------------------------------------------
|
||
jmp short loc_3EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_3A1:
|
||
mov ax, 0
|
||
sub ax, word_105C
|
||
mov word_1054, ax
|
||
shl ax, 4
|
||
mov dx, ax
|
||
shl ax, 2
|
||
add ax, dx
|
||
add word_105E, ax
|
||
mov word_105C, 0
|
||
jmp short loc_3EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_3C1:
|
||
cmp word_105C, 0C8h
|
||
jb short loc_3CD
|
||
jmp short loc_3F8
|
||
; ---------------------------------------------------------------------------
|
||
jmp short loc_3EE
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_3CD:
|
||
mov dx, word_105C
|
||
add dx, word_1062
|
||
cmp dx, 0C8h
|
||
jle short loc_3EE
|
||
mov ax, 0C8h
|
||
sub ax, word_105C
|
||
mov dx, word_1062
|
||
sub dx, ax
|
||
mov word_1054, dx
|
||
jmp short $+2
|
||
|
||
loc_3EE:
|
||
mov ax, word_1054
|
||
sub word_1062, ax
|
||
call sub_402
|
||
|
||
loc_3F8:
|
||
pop es
|
||
pop ds
|
||
pop bp
|
||
pop di
|
||
pop si
|
||
pop dx
|
||
pop cx
|
||
pop bx
|
||
pop ax
|
||
retn
|
||
sub_364 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_402 proc near
|
||
mov si, word_105E
|
||
mov ax, word_105A
|
||
shr ax, 3
|
||
and ax, 0FFFEh
|
||
xor dx, dx
|
||
mov cx, word_105C
|
||
imul di, cx, 50h
|
||
add di, ax
|
||
mov ax, word_105A
|
||
and ax, 0Fh
|
||
mov word_1050, ax
|
||
mov dx, EGC_ADDRRESSREG
|
||
mov ax, word_1050
|
||
shl ax, 4
|
||
out dx, ax
|
||
mov word_1052, 0
|
||
xor ax, ax
|
||
cmp word_1050, 0
|
||
setnz al
|
||
mov word_1052, ax
|
||
mov ax, 0A800h
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov dx, EGC_BITLENGTHREG
|
||
mov ax, word_1060
|
||
shl ax, 4
|
||
dec ax
|
||
out dx, ax
|
||
mov ax, word_1060
|
||
add ax, word_1052
|
||
mov word_1058, ax
|
||
mov ax, word_1058
|
||
shl ax, 1
|
||
mov dx, 50h
|
||
sub dx, ax
|
||
mov word_1056, dx
|
||
cmp cs:word_1064, 0
|
||
jz short loc_49C
|
||
outw EGC_READPLANEREG, 0FFh
|
||
outw EGC_MASKREG, cs:word_106C
|
||
outw EGC_READPLANEREG, 40FFh
|
||
outw EGC_MODE_ROP_REG, EGC_WS_ROP or EGC_SHIFT_CPU or 0ACh
|
||
outw EGC_FGCOLORREG, cs:word_1066
|
||
mov ds, cs:word_F3E
|
||
jmp short loc_4EB
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_49C:
|
||
cmp cs:word_1068, 0
|
||
jz short loc_4CB
|
||
outw EGC_ACTIVEPLANEREG, 0FFF0h
|
||
outw EGC_READPLANEREG, 0FFh
|
||
outw EGC_MODE_ROP_REG, EGC_WS_ROP or EGC_SHIFT_CPU or 0C0h
|
||
outw EGC_MASKREG, cs:word_106C
|
||
mov ds, cs:word_F3C
|
||
call sub_4F8
|
||
jmp short loc_4DA
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_4CB:
|
||
outw EGC_READPLANEREG, 0FFh
|
||
outw EGC_MASKREG, cs:word_106C
|
||
|
||
loc_4DA:
|
||
outw EGC_MODE_ROP_REG, cs:word_106A
|
||
mov ax, 0A800h
|
||
mov ds, ax
|
||
assume ds:nothing
|
||
add si, 3E80h
|
||
|
||
loc_4EB:
|
||
outw EGC_ACTIVEPLANEREG, cs:word_106E
|
||
call sub_4F8
|
||
retn
|
||
sub_402 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
nop
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_4F8 proc near
|
||
push si
|
||
push di
|
||
mov bx, cs:word_1062
|
||
mov dx, cs:word_1058
|
||
mov ax, cs:word_1056
|
||
|
||
loc_508:
|
||
mov cx, dx
|
||
rep movsw
|
||
add si, ax
|
||
add di, ax
|
||
dec bx
|
||
jnz short loc_508
|
||
pop di
|
||
pop si
|
||
retn
|
||
sub_4F8 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 10 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_520 proc near
|
||
push ds
|
||
push es
|
||
pusha
|
||
mov al, 1
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
xor al, al
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
call sub_5D0
|
||
call sub_5F7
|
||
call sub_5A4
|
||
xor al, al
|
||
out 0A4h, al ; Interrupt Controller #2, 8259A
|
||
xor al, al
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
popa
|
||
pop es
|
||
assume es:nothing
|
||
pop ds
|
||
assume ds:_TEXT
|
||
retn
|
||
sub_520 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_540 proc near
|
||
push ds
|
||
push es
|
||
pusha
|
||
call sub_C10
|
||
xor al, al
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
mov es, cs:word_F3E
|
||
xor di, di
|
||
xor ax, ax
|
||
mov cx, 1F40h
|
||
rep stosw
|
||
mov es, cs:word_F3E
|
||
mov ax, 0A800h
|
||
call sub_590
|
||
mov ax, 0B000h
|
||
call sub_590
|
||
mov ax, 0B800h
|
||
call sub_590
|
||
mov ax, 0E000h
|
||
call sub_590
|
||
mov ds, cs:word_F3E
|
||
mov es, cs:word_F3C
|
||
xor si, si
|
||
xor di, di
|
||
mov cx, 1F40h
|
||
|
||
loc_586:
|
||
lodsw
|
||
not ax
|
||
stosw
|
||
loop loc_586
|
||
popa
|
||
pop es
|
||
pop ds
|
||
retn
|
||
sub_540 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_590 proc near
|
||
mov ds, ax
|
||
xor bx, bx
|
||
mov cx, 1F40h
|
||
|
||
loc_597:
|
||
mov ax, [bx+3E80h]
|
||
or es:[bx], ax
|
||
add bx, 2
|
||
loop loc_597
|
||
retn
|
||
sub_590 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_5A4 proc near
|
||
push ds
|
||
push es
|
||
pusha
|
||
call sub_BD0
|
||
mov ax, 0A800h
|
||
mov ds, ax
|
||
assume ds:nothing
|
||
mov bl, 0
|
||
mov bh, 1
|
||
mov di, 3E80h
|
||
mov cx, 1F40h
|
||
|
||
loc_5B9:
|
||
mov al, bl
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
mov dx, [di]
|
||
mov al, bh
|
||
out 0A6h, al ; Interrupt Controller #2, 8259A
|
||
mov [di], dx
|
||
inc di
|
||
inc di
|
||
loop loc_5B9
|
||
call sub_C10
|
||
popa
|
||
pop es
|
||
pop ds
|
||
assume ds:_TEXT
|
||
retn
|
||
sub_5A4 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_5D0 proc near
|
||
push ds
|
||
push es
|
||
pusha
|
||
call sub_BD0
|
||
mov ax, 0A800h
|
||
mov ds, ax
|
||
assume ds:nothing
|
||
mov es, ax
|
||
assume es:nothing
|
||
xor si, si
|
||
xor di, di
|
||
mov cx, 0C8h
|
||
|
||
loc_5E4:
|
||
push cx
|
||
mov cx, 28h
|
||
rep movsw
|
||
pop cx
|
||
add si, 50h
|
||
loop loc_5E4
|
||
call sub_C10
|
||
popa
|
||
pop es
|
||
assume es:nothing
|
||
pop ds
|
||
assume ds:_TEXT
|
||
retn
|
||
sub_5D0 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_5F7 proc near
|
||
call sub_BD0
|
||
mov ax, 0A800h
|
||
mov ds, ax
|
||
assume ds:nothing
|
||
mov es, ax
|
||
assume es:nothing
|
||
mov si, 0
|
||
mov di, 3E80h
|
||
mov cx, 1F40h
|
||
rep movsw
|
||
call sub_C10
|
||
retn
|
||
sub_5F7 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_610 proc near
|
||
push es
|
||
pusha
|
||
call sub_BD0
|
||
outw EGC_MODE_ROP_REG, 0
|
||
mov ax, 0A800h
|
||
mov es, ax
|
||
xor di, di
|
||
mov ax, 0
|
||
mov cx, 1F40h
|
||
rep stosw
|
||
call sub_C10
|
||
popa
|
||
pop es
|
||
assume es:nothing
|
||
retn
|
||
sub_610 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 15 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_640 proc near
|
||
|
||
var_D0 = byte ptr -0D0h
|
||
|
||
enter 0D0h, 0
|
||
push es
|
||
push di
|
||
push ss
|
||
pop es
|
||
lea di, [bp+var_D0]
|
||
call sub_6B0
|
||
push ds
|
||
push dx
|
||
push ss
|
||
pop ds
|
||
assume ds:_TEXT
|
||
lea dx, [bp+var_D0]
|
||
call sub_660
|
||
pop dx
|
||
pop ds
|
||
pop di
|
||
pop es
|
||
leave
|
||
retn
|
||
sub_640 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_660 proc near
|
||
push ax
|
||
push dx
|
||
push si
|
||
mov si, dx
|
||
|
||
loc_665:
|
||
mov dl, [si]
|
||
or dl, dl
|
||
jz short loc_672
|
||
mov ah, 2
|
||
int 21h ; DOS - DISPLAY OUTPUT
|
||
; DL = character to send to standard output
|
||
inc si
|
||
jmp short loc_665
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_672:
|
||
pop si
|
||
pop dx
|
||
pop ax
|
||
retn
|
||
sub_660 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_676 proc near
|
||
|
||
arg_0 = word ptr 4
|
||
|
||
push bp
|
||
mov bp, sp
|
||
push dx
|
||
push ds
|
||
mov dx, [bp+arg_0]
|
||
push ss
|
||
pop ds
|
||
call sub_660
|
||
pop ds
|
||
pop dx
|
||
pop bp
|
||
retn 2
|
||
sub_676 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_689 proc near
|
||
cmp dl, 30h
|
||
jb short loc_692
|
||
cmp dl, 3Ah
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_692:
|
||
clc
|
||
retn
|
||
sub_689 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_694 proc near
|
||
cmp al, 61h
|
||
jb short loc_69B
|
||
cmp al, 7Bh
|
||
retn
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_69B:
|
||
clc
|
||
retn
|
||
sub_694 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_69D proc near
|
||
call sub_694
|
||
jnb short locret_6A4
|
||
and al, 0DFh
|
||
|
||
locret_6A4:
|
||
retn
|
||
sub_69D endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 11 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
; Attributes: bp-based frame
|
||
|
||
sub_6B0 proc near
|
||
|
||
var_50 = byte ptr -50h
|
||
var_18 = word ptr -18h
|
||
var_14 = dword ptr -14h
|
||
var_10 = word ptr -10h
|
||
var_C = word ptr -0Ch
|
||
var_8 = word ptr -8
|
||
var_4 = word ptr -4
|
||
|
||
enter 50h, 0
|
||
pusha
|
||
push ds
|
||
push es
|
||
mov si, dx
|
||
jmp loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_6BC:
|
||
cmp byte ptr [si], 25h
|
||
jnz loc_83F
|
||
mov [bp+var_4], 0
|
||
mov [bp+var_8], 0
|
||
mov [bp+var_C], 0
|
||
mov [bp+var_10], 0
|
||
inc si
|
||
cmp byte ptr [si], 2Dh
|
||
jnz short loc_6E3
|
||
inc si
|
||
mov [bp+var_C], 1
|
||
|
||
loc_6E3:
|
||
cmp byte ptr [si], 30h
|
||
jnz short loc_6EE
|
||
inc si
|
||
mov [bp+var_10], 1
|
||
|
||
loc_6EE:
|
||
xor ax, ax
|
||
xor dx, dx
|
||
jmp short loc_701
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_6F4:
|
||
imul ax, 0Ah
|
||
xor dx, dx
|
||
mov dl, [si]
|
||
sub dl, 30h
|
||
add ax, dx
|
||
inc si
|
||
|
||
loc_701:
|
||
cmp byte ptr [si], 30h
|
||
jb short loc_70B
|
||
cmp byte ptr [si], 39h
|
||
jbe short loc_6F4
|
||
|
||
loc_70B:
|
||
mov [bp+var_4], ax
|
||
cmp byte ptr [si], 75h
|
||
jnz short loc_779
|
||
inc si
|
||
mov edx, ss:[bx]
|
||
add bx, 4
|
||
mov [bp+var_14], 0Ah
|
||
|
||
loc_723:
|
||
push ds
|
||
push bx
|
||
push ss
|
||
pop ds
|
||
lea bx, [bp+var_50]
|
||
mov ecx, [bp+var_14]
|
||
call sub_89F
|
||
lea dx, [bp+var_50]
|
||
call sub_C40
|
||
add [bp+var_8], ax
|
||
pop bx
|
||
pop ds
|
||
cmp [bp+var_C], 0
|
||
jnz short loc_75F
|
||
cmp [bp+var_10], 0
|
||
jz short loc_74D
|
||
call sub_87D
|
||
jmp short loc_750
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_74D:
|
||
call sub_883
|
||
|
||
loc_750:
|
||
push ds
|
||
push si
|
||
push ss
|
||
pop ds
|
||
lea si, [bp+var_50]
|
||
call sub_897
|
||
pop si
|
||
pop ds
|
||
jmp loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_75F:
|
||
cmp [bp+var_C], 1
|
||
jnz loc_86D
|
||
push ds
|
||
push si
|
||
push ss
|
||
pop ds
|
||
lea si, [bp+var_50]
|
||
call sub_897
|
||
pop si
|
||
pop ds
|
||
call sub_883
|
||
jmp loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_779:
|
||
cmp byte ptr [si], 64h
|
||
jnz short loc_7A3
|
||
inc si
|
||
mov edx, ss:[bx]
|
||
add bx, 4
|
||
or edx, edx
|
||
jns short loc_796
|
||
neg edx
|
||
mov byte ptr es:[di], 2Dh
|
||
inc di
|
||
inc [bp+var_8]
|
||
|
||
loc_796:
|
||
mov [bp+var_14], 0Ah
|
||
jmp short loc_723
|
||
; ---------------------------------------------------------------------------
|
||
jmp loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_7A3:
|
||
cmp byte ptr [si], 78h
|
||
jnz short loc_7C3
|
||
inc si
|
||
mov edx, ss:[bx]
|
||
add bx, 4
|
||
mov [bp+var_14], 10h
|
||
mov [bp+var_18], 1
|
||
jmp loc_723
|
||
; ---------------------------------------------------------------------------
|
||
jmp loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_7C3:
|
||
cmp byte ptr [si], 58h
|
||
jnz short loc_7E3
|
||
inc si
|
||
mov edx, ss:[bx]
|
||
add bx, 4
|
||
mov [bp+var_14], 10h
|
||
mov [bp+var_18], 0
|
||
jmp loc_723
|
||
; ---------------------------------------------------------------------------
|
||
jmp loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_7E3:
|
||
cmp byte ptr [si], 62h
|
||
jnz short loc_802
|
||
inc si
|
||
mov edx, ss:[bx]
|
||
add bx, 4
|
||
mov [bp+var_14], 2
|
||
mov [bp+var_18], 0
|
||
jmp loc_723
|
||
; ---------------------------------------------------------------------------
|
||
jmp short loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_802:
|
||
cmp byte ptr [si], 73h
|
||
jnz short loc_830
|
||
inc si
|
||
push ds
|
||
push si
|
||
lds si, ss:[bx]
|
||
add bx, 4
|
||
mov dx, si
|
||
call sub_C40
|
||
mov [bp+var_8], ax
|
||
cmp [bp+var_C], 0
|
||
jnz short loc_826
|
||
call sub_883
|
||
call sub_897
|
||
jmp short loc_82C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_826:
|
||
call sub_897
|
||
call sub_883
|
||
|
||
loc_82C:
|
||
pop si
|
||
pop ds
|
||
jmp short loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_830:
|
||
cmp byte ptr [si], 'c'
|
||
jnz short loc_86D
|
||
inc si
|
||
mov al, ss:[bx]
|
||
add bx, 4
|
||
stosb
|
||
jmp short loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_83F:
|
||
cmp word ptr [si], 'n\'
|
||
jnz short loc_850
|
||
add si, 2
|
||
mov al, 0Dh
|
||
stosb
|
||
mov al, 0Ah
|
||
stosb
|
||
jmp short loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_850:
|
||
cmp word ptr [si], 'r\'
|
||
jnz short loc_85E
|
||
add si, 2
|
||
mov al, 0Dh
|
||
stosb
|
||
jmp short loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_85E:
|
||
cmp word ptr [si], 't\'
|
||
jnz short loc_86C
|
||
add si, 2
|
||
mov al, 9
|
||
stosb
|
||
jmp short loc_86D
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_86C:
|
||
movsb
|
||
|
||
loc_86D:
|
||
cmp byte ptr [si], 0
|
||
jnz loc_6BC
|
||
mov byte ptr es:[di], 0
|
||
pop es
|
||
pop ds
|
||
popa
|
||
leave
|
||
retn
|
||
sub_6B0 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_87D proc near
|
||
mov al, 30h
|
||
call sub_889
|
||
retn
|
||
sub_87D endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_883 proc near
|
||
mov al, 20h
|
||
call sub_889
|
||
retn
|
||
sub_883 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_889 proc near
|
||
mov cx, [bp-4]
|
||
sub cx, [bp-8]
|
||
cmp cx, 1
|
||
jl short locret_896
|
||
rep stosb
|
||
|
||
locret_896:
|
||
retn
|
||
sub_889 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_897 proc near
|
||
lodsb
|
||
stosb
|
||
or al, al
|
||
jnz short sub_897
|
||
dec di
|
||
retn
|
||
sub_897 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_89F proc near
|
||
push eax
|
||
push ebx
|
||
push ecx
|
||
push edx
|
||
mov eax, edx
|
||
push bx
|
||
|
||
loc_8AB:
|
||
xor edx, edx
|
||
div ecx
|
||
mov dl, byte ptr cs:a0123456789abcd[edx] ; "0123456789ABCDEF"
|
||
cmp word ptr [bp-18h], 0
|
||
jz short loc_8C2
|
||
or dl, 20h
|
||
|
||
loc_8C2:
|
||
mov [bx], dl
|
||
inc bx
|
||
or eax, eax
|
||
jnz short loc_8AB
|
||
mov byte ptr [bx], 0
|
||
pop bx
|
||
mov dx, bx
|
||
call sub_8EC
|
||
pop edx
|
||
pop ecx
|
||
pop ebx
|
||
pop eax
|
||
retn
|
||
sub_89F endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
a0123456789abcd db '0123456789ABCDEF'
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_8EC proc near
|
||
push es
|
||
push ax
|
||
push cx
|
||
push dx
|
||
push si
|
||
push di
|
||
push ds
|
||
pop es
|
||
assume es:_TEXT
|
||
mov di, dx
|
||
xor al, al
|
||
mov cx, 0FFFFh
|
||
repne scasb
|
||
sub di, 2
|
||
mov si, dx
|
||
jmp short loc_90C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_904:
|
||
mov al, [si]
|
||
xchg al, [di]
|
||
mov [si], al
|
||
inc si
|
||
dec di
|
||
|
||
loc_90C:
|
||
cmp si, di
|
||
jnb short loc_915
|
||
cmp byte ptr [si], 0
|
||
jnz short loc_904
|
||
|
||
loc_915:
|
||
pop di
|
||
pop si
|
||
pop dx
|
||
pop cx
|
||
pop ax
|
||
pop es
|
||
assume es:nothing
|
||
retn
|
||
sub_8EC endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 4 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_920 proc near
|
||
push ax
|
||
push bx
|
||
push cx
|
||
push dx
|
||
push si
|
||
push di
|
||
mov word_1070, 0
|
||
mov di, offset byte_1072
|
||
|
||
loc_92F:
|
||
call sub_982
|
||
mov al, [si]
|
||
or al, al
|
||
jz short loc_940
|
||
cmp al, 0Dh
|
||
jz short loc_940
|
||
cmp al, 3Bh
|
||
jnz short loc_945
|
||
|
||
loc_940:
|
||
mov byte ptr [si], 0
|
||
jmp short loc_97B
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_945:
|
||
cmp byte ptr [si], 22h
|
||
jnz short loc_96D
|
||
inc si
|
||
mov [di], si
|
||
add di, 2
|
||
inc word_1070
|
||
call sub_9B5
|
||
jnb short loc_964
|
||
push offset aSVVVsVkmivVivs ; "<22>ɂȂ<C982> \" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C282><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_964:
|
||
mov byte ptr [si], 0
|
||
inc si
|
||
call sub_999
|
||
jmp short loc_92F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_96D:
|
||
mov [di], si
|
||
add di, 2
|
||
inc word_1070
|
||
call sub_999
|
||
jmp short loc_92F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_97B:
|
||
pop di
|
||
pop si
|
||
pop dx
|
||
pop cx
|
||
pop bx
|
||
pop ax
|
||
retn
|
||
sub_920 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_982 proc near
|
||
mov al, [si]
|
||
cmp al, 20h
|
||
jz short loc_992
|
||
cmp al, 2Ch
|
||
jz short loc_992
|
||
cmp al, 9
|
||
jz short loc_992
|
||
jmp short locret_998
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_992:
|
||
mov byte ptr [si], 0
|
||
inc si
|
||
jmp short sub_982
|
||
; ---------------------------------------------------------------------------
|
||
|
||
locret_998:
|
||
retn
|
||
sub_982 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_999 proc near
|
||
mov al, [si]
|
||
cmp al, 20h
|
||
jz short loc_9AF
|
||
cmp al, 2Ch
|
||
jz short loc_9AF
|
||
cmp al, 9
|
||
jz short loc_9AF
|
||
or al, al
|
||
jz short loc_9AF
|
||
cmp al, 0Dh
|
||
jnz short loc_9B1
|
||
|
||
loc_9AF:
|
||
jmp short locret_9B4
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9B1:
|
||
inc si
|
||
jmp short sub_999
|
||
; ---------------------------------------------------------------------------
|
||
|
||
locret_9B4:
|
||
retn
|
||
sub_999 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_9B5 proc near
|
||
mov al, [si]
|
||
cmp al, 22h
|
||
jnz short loc_9BE
|
||
clc
|
||
jmp short locret_9CC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9BE:
|
||
or al, al
|
||
jz short loc_9C6
|
||
cmp al, 0Dh
|
||
jnz short loc_9C9
|
||
|
||
loc_9C6:
|
||
stc
|
||
jmp short locret_9CC
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9C9:
|
||
inc si
|
||
jmp short sub_9B5
|
||
; ---------------------------------------------------------------------------
|
||
|
||
locret_9CC:
|
||
retn
|
||
sub_9B5 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_9CD proc near
|
||
cmp word_1070, 0
|
||
jnz short loc_9DF
|
||
push offset aI_0 ; "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B\r\n\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9DF:
|
||
dec word_1070
|
||
mov si, word_10F2
|
||
add word_10F2, 2
|
||
mov si, [si]
|
||
retn
|
||
sub_9CD endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_9EF proc near
|
||
cmp word_1070, 0
|
||
jnz short loc_9F9
|
||
stc
|
||
jmp short locret_A09
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_9F9:
|
||
dec word_1070
|
||
mov si, word_10F2
|
||
add word_10F2, 2
|
||
mov si, [si]
|
||
clc
|
||
|
||
locret_A09:
|
||
retn
|
||
sub_9EF endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_A0A proc near
|
||
push si
|
||
push dx
|
||
call sub_9CD
|
||
mov dx, si
|
||
call sub_A90
|
||
jnb short loc_A21
|
||
push offset aRftlvVCVvtlvko ; "<22><><EFBFBD>l<EFBFBD>ł͖<C582><CD96><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>w<EFBFBD>肳<EFBFBD><E882B3><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B\r\n\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A21:
|
||
pop dx
|
||
pop si
|
||
retn
|
||
sub_A0A endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_A24 proc near
|
||
push si
|
||
push dx
|
||
mov ax, 0
|
||
call sub_9EF
|
||
jnb short loc_A33
|
||
mov dx, si
|
||
call sub_A90
|
||
|
||
loc_A33:
|
||
pop dx
|
||
pop si
|
||
retn
|
||
sub_A24 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_A36 proc near
|
||
mov word_10F2, offset byte_1072
|
||
|
||
loc_A3C:
|
||
mov si, word_10F2
|
||
add word_10F2, 2
|
||
mov si, [si]
|
||
cmp word_1070, 0
|
||
jnz short loc_A50
|
||
jmp short locret_A88
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A50:
|
||
dec word_1070
|
||
mov al, [si]
|
||
cmp al, 2Dh
|
||
jnz short loc_A5E
|
||
mov al, 2Fh
|
||
mov [si], al
|
||
|
||
loc_A5E:
|
||
mov bx, offset off_101C
|
||
|
||
loc_A61:
|
||
cmp word ptr [bx], 0
|
||
jnz short loc_A71
|
||
push offset aGigvgvgzguvkcM ; "<22>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>B\r\n\r\n"
|
||
call sub_676
|
||
mov ax, 4C01h
|
||
int 21h ; DOS - 2+ - QUIT WITH EXIT CODE (EXIT)
|
||
; AL = exit code
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A71:
|
||
mov di, [bx]
|
||
call sub_C52
|
||
jnz short loc_A81
|
||
pusha
|
||
push es
|
||
call word ptr [bx+2]
|
||
pop es
|
||
popa
|
||
jmp short loc_A86
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A81:
|
||
add bx, 4
|
||
jmp short loc_A61
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_A86:
|
||
jmp short loc_A3C
|
||
; ---------------------------------------------------------------------------
|
||
|
||
locret_A88:
|
||
retn
|
||
sub_A36 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 7 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_A90 proc near
|
||
push bx
|
||
push dx
|
||
push si
|
||
mov si, dx
|
||
cmp byte ptr [si], 27h
|
||
jnz short loc_ABB
|
||
cmp word ptr [si+2], 27h
|
||
jnz short loc_AA8
|
||
mov al, [si+1]
|
||
xor ah, ah
|
||
clc
|
||
jmp short loc_B01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AA8:
|
||
cmp word ptr [si+3], 27h
|
||
jnz short loc_AB6
|
||
mov ax, [si+1]
|
||
xchg ah, al
|
||
clc
|
||
jmp short loc_B01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AB6:
|
||
xor ax, ax
|
||
stc
|
||
jmp short loc_B01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_ABB:
|
||
cmp byte ptr [si], 24h
|
||
jnz short loc_AC6
|
||
inc si
|
||
call sub_B4B
|
||
jmp short loc_B01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AC6:
|
||
mov dx, si
|
||
call sub_C40
|
||
mov bx, ax
|
||
mov al, [bx+si-1]
|
||
call sub_69D
|
||
cmp al, 48h
|
||
jnz short loc_AE6
|
||
mov dl, [bx+si-1]
|
||
mov byte ptr [bx+si-1], 0
|
||
call sub_B4B
|
||
mov [bx+si-1], dl
|
||
jmp short loc_B01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AE6:
|
||
cmp al, 42h
|
||
jnz short loc_AF9
|
||
mov dl, [bx+si-1]
|
||
mov byte ptr [bx+si-1], 0
|
||
call sub_B75
|
||
mov [bx+si-1], dl
|
||
jmp short loc_B01
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_AF9:
|
||
call sub_B05
|
||
jnb short loc_B01
|
||
call sub_BA2
|
||
|
||
loc_B01:
|
||
pop si
|
||
pop dx
|
||
pop bx
|
||
retn
|
||
sub_A90 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_B05 proc near
|
||
push si
|
||
push dx
|
||
push cx
|
||
push bp
|
||
xor ax, ax
|
||
xor dx, dx
|
||
mov bp, 0
|
||
cmp byte ptr [si], 2Dh
|
||
jnz short loc_B1B
|
||
inc si
|
||
mov bp, 0FFFFh
|
||
jmp short loc_B21
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B1B:
|
||
cmp byte ptr [si], 2Bh
|
||
jnz short loc_B21
|
||
inc si
|
||
|
||
loc_B21:
|
||
mov dl, [si]
|
||
inc si
|
||
or dl, dl
|
||
jz short loc_B3E
|
||
call sub_689
|
||
jb short loc_B30
|
||
stc
|
||
jmp short loc_B46
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B30:
|
||
push dx
|
||
mov cx, 0Ah
|
||
mul cx
|
||
pop dx
|
||
sub dl, 30h
|
||
add ax, dx
|
||
jmp short loc_B21
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B3E:
|
||
cmp bp, 0FFFFh
|
||
jnz short loc_B45
|
||
neg ax
|
||
|
||
loc_B45:
|
||
clc
|
||
|
||
loc_B46:
|
||
pop bp
|
||
pop cx
|
||
pop dx
|
||
pop si
|
||
retn
|
||
sub_B05 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_B4B proc near
|
||
push si
|
||
push dx
|
||
xor dx, dx
|
||
|
||
loc_B4F:
|
||
lodsb
|
||
or al, al
|
||
jz short loc_B70
|
||
cmp al, 5Bh
|
||
jb short loc_B5A
|
||
sub al, 20h
|
||
|
||
loc_B5A:
|
||
sub al, 30h
|
||
cmp al, 0Ah
|
||
jb short loc_B66
|
||
sub al, 7
|
||
cmp al, 10h
|
||
jnb short loc_B6F
|
||
|
||
loc_B66:
|
||
xor ah, ah
|
||
shl dx, 4
|
||
add dx, ax
|
||
jmp short loc_B4F
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B6F:
|
||
stc
|
||
|
||
loc_B70:
|
||
mov ax, dx
|
||
pop dx
|
||
pop si
|
||
retn
|
||
sub_B4B endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_B75 proc near
|
||
push si
|
||
push bx
|
||
push dx
|
||
mov dx, si
|
||
call sub_C40
|
||
mov bx, si
|
||
add bx, ax
|
||
xor ax, ax
|
||
jmp short loc_B99
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B85:
|
||
mov dl, [si]
|
||
cmp dl, 30h
|
||
jz short loc_B94
|
||
cmp dl, 31h
|
||
jz short loc_B94
|
||
stc
|
||
jmp short loc_B9E
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_B94:
|
||
shr dl, 1
|
||
rcl ax, 1
|
||
inc si
|
||
|
||
loc_B99:
|
||
cmp si, bx
|
||
jnz short loc_B85
|
||
clc
|
||
|
||
loc_B9E:
|
||
pop dx
|
||
pop bx
|
||
pop si
|
||
retn
|
||
sub_B75 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_BA2 proc near
|
||
push di
|
||
push es
|
||
push cs
|
||
pop es
|
||
assume es:_TEXT
|
||
mov ax, 1
|
||
mov di, offset aOn ; "ON"
|
||
call sub_C52
|
||
jz short loc_BC2
|
||
mov ax, 0
|
||
mov di, offset aOff ; "OFF"
|
||
call sub_C52
|
||
jz short loc_BC2
|
||
mov ax, 0
|
||
stc
|
||
jmp short loc_BC3
|
||
; ---------------------------------------------------------------------------
|
||
|
||
loc_BC2:
|
||
clc
|
||
|
||
loc_BC3:
|
||
pop es
|
||
assume es:nothing
|
||
pop di
|
||
retn
|
||
sub_BA2 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 10 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_BD0 proc near
|
||
push ax
|
||
push dx
|
||
cli
|
||
mov al, 7
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
mov al, 5
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
mov al, 6
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
GRCG_SETMODE_VIA_MOV al, GC_TDW
|
||
outw EGC_ACTIVEPLANEREG, 0FFF0h
|
||
outw EGC_READPLANEREG, 0FFh
|
||
outw EGC_MODE_ROP_REG, EGC_COMPAREREAD or EGC_WS_ROP or 0F0h
|
||
outw EGC_MASKREG, 0FFFFh
|
||
mov dx, EGC_ADDRRESSREG
|
||
xor ax, ax
|
||
out dx, ax
|
||
outw EGC_BITLENGTHREG, 0Fh
|
||
sti
|
||
pop dx
|
||
pop ax
|
||
retn
|
||
sub_BD0 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_C10 proc near
|
||
push ax
|
||
push dx
|
||
cli
|
||
outw EGC_ACTIVEPLANEREG, 0FFF0h
|
||
outw EGC_READPLANEREG, 0FFh
|
||
outw EGC_MASKREG, 0FFFFh
|
||
mov al, 7
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
mov al, 4
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
mov al, 6
|
||
out 6Ah, al ; PC-98 GDC (6a):
|
||
;
|
||
GRCG_OFF_VIA_XOR al
|
||
sti
|
||
pop dx
|
||
pop ax
|
||
retn
|
||
sub_C10 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 4 dup(0)
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_C40 proc near
|
||
push si
|
||
push dx
|
||
mov si, dx
|
||
mov dx, 0FFFFh
|
||
|
||
loc_C47:
|
||
inc dx
|
||
lodsb
|
||
or al, al
|
||
jnz short loc_C47
|
||
mov ax, dx
|
||
pop dx
|
||
pop si
|
||
retn
|
||
sub_C40 endp
|
||
|
||
|
||
; =============== S U B R O U T I N E =======================================
|
||
|
||
|
||
sub_C52 proc near
|
||
push ax
|
||
push dx
|
||
push si
|
||
push di
|
||
|
||
loc_C56:
|
||
mov al, [si]
|
||
call sub_69D
|
||
mov dl, al
|
||
mov al, es:[di]
|
||
call sub_69D
|
||
mov dh, al
|
||
inc si
|
||
inc di
|
||
cmp dl, dh
|
||
jnz short loc_C6F
|
||
or dl, dl
|
||
jnz short loc_C56
|
||
|
||
loc_C6F:
|
||
cmp dl, dh
|
||
pop di
|
||
pop si
|
||
pop dx
|
||
pop ax
|
||
retn
|
||
sub_C52 endp
|
||
|
||
; ---------------------------------------------------------------------------
|
||
db 10 dup(0)
|
||
aGbgvgkpkpmvOFs db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B><EFBFBD>Ɏ<EFBFBD><C98E>s<EFBFBD><73><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B',0Dh,0Ah,0
|
||
aVVVPatuvVVvvVB db '<27><><EFBFBD>łɏ풓<C98F><ED9293><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B',0Dh,0Ah,0
|
||
aKLlcIci db '<27><EFBFBD><C28B>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s',0Dh,0Ah,0
|
||
aGGxgngfbGCIci db '<27>}<7D>X<EFBFBD>N<EFBFBD>f<EFBFBD>[<5B>^<5E>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s',0Dh,0Ah,0
|
||
aGxgGfbGCIci db '<27>x<EFBFBD>^<5E>f<EFBFBD>[<5B>^<5E>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s',0Dh,0Ah,0
|
||
aGrbGhcIci db '<27>R<EFBFBD>[<5B>h<EFBFBD>̈<EFBFBD><CC88><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s',0Dh,0Ah,0
|
||
aI db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B',0Dh,0Ah,0
|
||
aPatuvVVvvVV db '<27>풓<EFBFBD><ED9293><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B',0Dh,0Ah,0
|
||
db 200h dup(0)
|
||
word_F38 dw 0
|
||
word_F3A dw 0
|
||
word_F3C dw 0
|
||
word_F3E dw 0
|
||
word_F40 dw 0
|
||
byte_F42 db 42h
|
||
word_F43 dw 0
|
||
word_F45 dw 0
|
||
aGbgvgkvkslvsvV db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B',0Dh,0Ah,0
|
||
aPatuvVVVBbInt0 db '<27>풓<EFBFBD><ED9293><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B(int %02Xh)',0Dh,0Ah,0
|
||
aHeader label byte
|
||
|
||
ifdef THIEF
|
||
|
||
db 'ZUNSP.COM Version 1.00 Copyright(C) 1997 ZUN ',0Dh,0Ah
|
||
db 0Dh,0Ah,0
|
||
aUsage label byte
|
||
db 'Usage: ZUNSP -z (<28>풓)',0Dh,0Ah
|
||
|
||
else
|
||
|
||
db 'SPRITE16.COM Version 0.04 Copyright(C) 1996 PromisenceSoft',0Dh,0Ah
|
||
db 0Dh,0Ah,0
|
||
aUsage label byte
|
||
db 'Usage: sprite16 -z (<28>풓)',0Dh,0Ah
|
||
|
||
endif
|
||
|
||
db ' -r (<28><><EFBFBD><EFBFBD>)',0Dh,0Ah,0
|
||
aZ db '/Z',0
|
||
aR db '/R',0
|
||
aV db '/V',0
|
||
aMasktest db 'MASKTEST',0
|
||
aPressy db 'PRESSY',0
|
||
aCopyul db 'COPYUL',0
|
||
aClsu db 'CLSU',0
|
||
aSprite db 'SPRITE',0
|
||
off_101C dw offset aZ, offset sub_243
|
||
dw offset aR, offset sub_2AD
|
||
dw offset aV, offset sub_1D7
|
||
dw offset aMasktest, offset sub_1DE
|
||
dw offset aPressy, offset sub_5D0
|
||
dw offset aCopyul, offset sub_5A4
|
||
dw offset aClsu, offset sub_610
|
||
dw offset aSprite, offset sub_201
|
||
dw 0
|
||
off_103E dw offset sub_520
|
||
dw offset sub_540
|
||
dw offset sub_364
|
||
dw offset sub_340
|
||
dw offset sub_346
|
||
dw offset sub_34C
|
||
dw offset sub_352
|
||
dw offset sub_358
|
||
dw offset sub_35E
|
||
word_1050 dw 0
|
||
word_1052 dw 0
|
||
word_1054 dw 0
|
||
word_1056 dw 0
|
||
word_1058 dw 0
|
||
word_105A dw 0
|
||
word_105C dw 0
|
||
word_105E dw 0
|
||
word_1060 dw 0
|
||
word_1062 dw 0
|
||
word_1064 dw 0
|
||
word_1066 dw 0Fh
|
||
word_1068 dw 1
|
||
word_106A dw 28FCh
|
||
word_106C dw 0FFFFh
|
||
word_106E dw 0FFF0h
|
||
word_1070 dw 0
|
||
byte_1072 db 80h dup(0)
|
||
word_10F2 dw 0
|
||
aSVVVsVkmivVivs db '<27>ɂȂ<C982> " <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C282><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B',0Dh,0Ah,0
|
||
aI_0 db '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><DC82><EFBFBD><EFBFBD>B',0Dh,0Ah
|
||
db 0Dh,0Ah,0
|
||
aRftlvVCVvtlvko db '<27><><EFBFBD>l<EFBFBD>ł͖<C582><CD96><EFBFBD><EFBFBD>l<EFBFBD><6C><EFBFBD>w<EFBFBD>肳<EFBFBD><E882B3><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B',0Dh,0Ah
|
||
db 0Dh,0Ah,0
|
||
aGigvgvgzguvkcM db '<27>I<EFBFBD>v<EFBFBD>V<EFBFBD><56><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582>B',0Dh,0Ah
|
||
db 0Dh,0Ah,0
|
||
db 3 dup(0)
|
||
aOn db 'ON',0
|
||
aOff db 'OFF',0
|
||
db 9 dup(0)
|
||
_TEXT ends
|
||
|
||
|
||
end start
|