지금보면 내가 이거 어떻게 만들었는지 전혀 이해안감.br /br /br /br /br /; /*************************************** br /;nbsp; *nbsp; nbsp; nbsp; nbsp; nbsp;Copyright(c)1998-1998nbsp; nbsp; nbsp; nbsp;* br /;nbsp; *nbsp; nbsp; nbsp; nbsp; MC Compiler source (SOUND)nbsp; nbsp;* br /;nbsp; *nbsp; nbsp; nbsp; nbsp; nbsp;Code by Cho JaeHyuknbsp; nbsp; nbsp; nbsp; nbsp;* br /;nbsp; *nbsp; nbsp; nbsp;MINZ lt;mailto:minzkn@infoeq.comnbsp; * br /;nbsp; ***************************************/ br /br /; SOUN.ASM br /br /.286 br /br /includenbsp; nbsp; nbsp; nbsp; nbsp; nbsp; mcseg.inc br /br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_register br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_enablewave br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_disablewave br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_method1 br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_method2 br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_method3 br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_method4 br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_method5 br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_method6 br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_selectwave br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_frequency_on br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_frequency_off br /publicnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;YM_iscard br /br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;assume cs:_TEXT br /_TEXTnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; segment byte public use16 'CODE' br /YM_registernbsp; nbsp; nbsp; nbsp; proc far ; void far pascal YM_register(unsigned int, unsigned int) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, 0388h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, byte ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 0006h br /YM_reg00@:nbsp; nbsp; nbsp; nbsp; nbsp;in al, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop short YM_reg00@ br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;inc dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov al, [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;out dx, al br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dec dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 35 br /YM_reg01@:nbsp; nbsp; nbsp; nbsp; nbsp;in al, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop short YM_reg01@ br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 br /YM_registernbsp; nbsp; nbsp; nbsp; endp br /YM_enablewavenbsp; nbsp; nbsp; proc far ; void far pascal YM_enablewave(void) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0001h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0020h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf br /YM_enablewavenbsp; nbsp; nbsp; endp br /YM_disablewavenbsp; nbsp; nbsp;proc far ; void far pascal YM_disablewave(void) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0001h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0000h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf br /YM_disablewavenbsp; nbsp; nbsp;endp br /YM_method1nbsp; nbsp; nbsp; nbsp; nbsp;proc far ; void far pascal YM_method1(word, word, word, word, word, word) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0020h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 16] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, word ptr [bp + 14] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl dx, 7 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 12] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 6 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or dx, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 5 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or dx, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 4 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 + 2 + 2 + 2 br /YM_method1nbsp; nbsp; nbsp; nbsp; nbsp;endp br /YM_method2nbsp; nbsp; nbsp; nbsp; nbsp;proc far ; void far pascal YM_method2(word, word, word) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0040h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 6 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_method2nbsp; nbsp; nbsp; nbsp; nbsp;endp br /YM_method3nbsp; nbsp; nbsp; nbsp; nbsp;proc far ; void far pascal YM_method3(word, word, word) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0060h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 4 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_method3nbsp; nbsp; nbsp; nbsp; nbsp;endp br /YM_method4nbsp; nbsp; nbsp; nbsp; nbsp;proc far ; void far pascal YM_method4(word, word, word) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0080h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 4 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_method4nbsp; nbsp; nbsp; nbsp; nbsp;endp br /YM_method5nbsp; nbsp; nbsp; nbsp; nbsp;proc far ; void far pascal YM_method5(word, word, word) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 00bdh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl dx, 7 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 6 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or dx, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 5 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or dx, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;and ax, 001fh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_method5nbsp; nbsp; nbsp; nbsp; nbsp;endp br /YM_method6nbsp; nbsp; nbsp; nbsp; nbsp;proc far ; void far pascal YM_method6(word, word, word) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 00c0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shl ax, 1 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_method6nbsp; nbsp; nbsp; nbsp; nbsp;endp br /YM_selectwavenbsp; nbsp; nbsp; proc far ; void far pascal YM_selectwave(unsigned int, unsigned int) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 00e0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 br /YM_selectwavenbsp; nbsp; nbsp; endp br /YM_frequency_onnbsp; nbsp; proc far ; void far pascal YM_frquency_on(unsigned int, unsigned int, unsigned int) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 00a0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 00b0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shr ax, 8 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, 0032h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_frequency_onnbsp; nbsp; endp br /YM_frequency_offnbsp; nbsp;proc far ; void far pascal YM_frquency_off(unsigned int, unsigned int, unsigned int) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov bp, sp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 00a0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 00b0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;add ax, word ptr [bp + 10] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, word ptr [bp + 8] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;shr ax, 8 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, word ptr [bp + 6] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop bp br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf 2 + 2 + 2 br /YM_frequency_offnbsp; nbsp;endp br /YM_iscardnbsp; nbsp; nbsp; nbsp; nbsp; proc far ; unsigned int far pascal YM_iscard(void) br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0004h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0060h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0004h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0080h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, 0388h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;in al, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax ; ---------- _time[0] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0002h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 00ffh br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0004h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0021h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov dx, 0388h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov cx, 201 br /YM_iscard00@:nbsp; nbsp; nbsp; in al, dx br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;loop short YM_iscard00@ br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push ax ; ---------- _time[1] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0004h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0060h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0004h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;push 0080h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;call far ptr _TEXT:YM_register br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop dx ; ----------- _time[1] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;pop ax ; ----------- _time[0] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;and dx, 00e0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;and ax, 00e0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;or ax, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jnz YM_iscard01@ br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;cmp dx, 00c0h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;jne YM_iscard01@ br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;mov ax, 0001h br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf br /YM_iscard01@:nbsp; nbsp; nbsp; xor ax, ax br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;retf br /YM_iscardnbsp; nbsp; nbsp; nbsp; nbsp; endp br /_TEXTnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; ends br /br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;assume ds:DGROUP br /_CONSTnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;segment byte public use16 'CONST' br /YM_instrumentnbsp; nbsp; nbsp; dbnbsp; 0,nbsp; 0,nbsp; 0,nbsp; 0,nbsp; 1,nbsp; 1, 15, 15,nbsp; 1,nbsp; 5,nbsp; 3,nbsp; 0 ; unsigned char YM_instrument[6][12] br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dbnbsp; 0,nbsp; 0,nbsp; 1,nbsp; 0,nbsp; 0,nbsp; 0, 18, 13,nbsp; 1, 14,nbsp; 3,nbsp; 0 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dbnbsp; 0,nbsp; 0,nbsp; 1,nbsp; 1,nbsp; 1,nbsp; 0, 15, 11,nbsp; 7,nbsp; 7,nbsp; 0,nbsp; 0 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dbnbsp; 0,nbsp; 0,nbsp; 0,nbsp; 1,nbsp; 1,nbsp; 1, 20,nbsp; 3,nbsp; 2,nbsp; 2,nbsp; 2,nbsp; 0 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dbnbsp; 0,nbsp; 0,nbsp; 1,nbsp; 1,nbsp; 2,nbsp; 1, 22,nbsp; 3,nbsp; 2,nbsp; 2,nbsp; 2,nbsp; 0 br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;dbnbsp; 0,nbsp; 0,nbsp; 1,nbsp; 1,nbsp; 1,nbsp; 0, 28, 15,nbsp; 2,nbsp; 2,nbsp; 2,nbsp; 0 br /YM_frequencynbsp; nbsp; nbsp; nbsp;dw 345, 365, 387, 410, 435, 460, 488, 517, 547, 580, 615, 651 ; unsigned int YM_frequency[12] br /_CONSTnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;ends br /br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;assume ds:DGROUP br /_DATAnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; segment byte public use16 'DATA' br /_DATAnbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; ends br /nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp; nbsp;end br /br /; End of source
받은 트랙백이 없고,
댓글이 없습니다.

글
댓글을 달아 주세요
댓글 RSS 주소 : http://blog.minzkn.com/rss/comment/30댓글 ATOM 주소 : http://blog.minzkn.com/atom/comment/30