143 lines
2.3 KiB
ArmAsm
Raw Normal View History

*****************************************
* *
* TwentyOne.x <EFBFBD>u<EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>v *
* patch for human Ver 2.02,2.03 *
* *
*****************************************
*
* file name: options.s
* author: <EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (T.Kawamoto)
* last modify: 92/3/1
* 92/3/17 thanks YUU(HARUKA)
*
blpeek: macro
moveq.l #$84,d0
trap #15
endm
*
getpdb: macro
dc.w $ff51
endm
*
.xdef _TwentyOneOptions
*
.text
*
_TwentyOneOptions:
movem.l a0-a2,-(sp)
bsr search_memory_blindly
tst.l d0
bne return
bsr search_device_blindly
return:
movem.l (sp)+,a0-a2
rts
*
search_device_blindly:
lea $00006800,a1
search_NUL_device_loop:
cmp.l #$00020000,a1
bcc sd_not_found
blpeek
cmp.l #'NUL ',d0
beq found_NUL_device
* lea 4(a1),a1 * <EFBFBD>ȉ<EFBFBD><EFBFBD>̗v<EFBFBD>̂<EFBFBD><EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŃC<EFBFBD><EFBFBD><EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>K<EFBFBD>v<EFBFBD><EFBFBD>
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD> 1992.03.17 YUU(HARUKA).
cmp.w #'NU',d0
bne search_NUL_device_loop
lea -2(a1),a1
bra search_NUL_device_loop
*
found_NUL_device:
* lea -14(a1),a1 * <EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
lea -18(a1),a1 * IOCS B_LPEEK <EFBFBD>̖߂<EFBFBD><EFBFBD>l a1
* <EFBFBD><EFBFBD> d0 <EFBFBD>̒l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD>X + 4
* <EFBFBD>Ȃ̂Ŏ<EFBFBD><EFBFBD>̃f<EFBFBD>o<EFBFBD>C<EFBFBD>X<EFBFBD>ւ̃A<EFBFBD>h<EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><EFBFBD>
* -18(a1) <EFBFBD>ƂȂ<EFBFBD><EFBFBD>܂<EFBFBD> 1992.03.17 YUU.
search_device:
blpeek
sd_loop:
move.l d0,a0
lea $000E(a0),a2
bsr check_TW
tst.l d0
bne sd_end
lea.l (a0),a1
blpeek
cmp.l #$ffffffff,d0
bne sd_loop
sd_not_found:
moveq.l #0,d0
sd_end:
rts
*
search_memory_blindly:
getpdb
move.l d0,a1
lea -16(a1),a1
search_top_loop:
lea 4(a1),a1
blpeek
tst.l d0
beq found_top
move.l d0,a1
bra search_top_loop
*
found_top:
lea -8(a1),a1 * <EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̍s<EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>s<EFBFBD>ɂȂ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD><EFBFBD>
* lea 8(a1),a1 * <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>g<EFBFBD>s<EFBFBD><EFBFBD><EFBFBD>Ǝv<EFBFBD><EFBFBD><EFBFBD>܂<EFBFBD>
* 1992.03.17 YUU(HARUKA).
search_memory:
lea 12(a1),a1
blpeek
sm_loop:
move.l d0,a0
lea $010E(a0),a2
bsr check_TW
tst.l d0
bne sm_end
lea $000C(a0),a1
blpeek
tst.l d0
bne sm_loop
moveq.l #0,d0
sm_end:
rts
*
check_TW:
lea (a2),a1
blpeek
cmp.l #'?Twe',d0
beq check_new
cmp.l #'*Twe',d0
bne check_error
check_old:
lea $0004(a2),a1
blpeek
cmp.l #'nty*',d0
bne check_error
moveq.l #-1,d0
rts
*
check_new:
lea $0004(a2),a1
blpeek
cmp.l #'nty?',d0
beq check_new_E
cmp.l #'ntyE',d0
bne check_error
check_new_E:
lea $0008(a2),a1
blpeek
rts
*
check_error:
moveq.l #0,d0
rts
*
dc.b 'TwentyOne Option Checker Ver 1.00 '
dc.b 'Copyright 1991,92 <EFBFBD>d<EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<EFBFBD>s.<EFBFBD>jawamoto)',0
*
.end