home *** CD-ROM | disk | FTP | other *** search
- ;
- ; BLOBJ.ASM
- ;
- ; ╔ΦBITLOK╥╤╜°╚δ╡─▒Ω╓╛
- ; ░╤PSP╢╬╡╪╓╖┤µ╖┼╘┌PSP:[00FCH]┤ªú¼░╤PSP╢╬╡╪╓╖╥∞╗≥1234H
- ; ┤µ╖┼╘┌MCB▒φ╡─[000CH]┤ªíú
- ;
- ; ╔ΦBITLOK╜°╚δ▒Ω╓╛
- ; ╚δ┐┌▓╬╩²: ╬▐íú
- ; │÷┐┌▓╬╩²: ╚τ╣√│÷┤φú¼╖╡╗╪ 0FFFFFFFFH ú╗
- ; (DX:AX = 0FFFFFFFFH)
- ; │╔╣ªú¼╘≥╖╡╗╪╥╗╕÷╬▐╖√║┼╡─│ñ╫╓íú
- ; ╞Σ╓╨:
- ; ╡═╫╓╜┌╩╟ROM╝∞▓Θ║═ú¼╕▀╫╓╩╟PSP╢╬╡╪╓╖íú
- ; (AL=ROM╝∞▓Θ║═ú¼DX=PSP╢╬╡╪╓╖)
- ; ╫ó: ROM╝∞▓Θ║═╝╞╦π╖╜╖¿:
- ; └█╝╙ROM(0xF000:0xE000)┤ª┐¬╩╝╫╓╜┌ú¼│ñ╢╚╬¬0x100íú
- ; ╗±╚íPSP╢╬╡╪╓╖╖╜╖¿:
- ; MOV AHú¼62H
- ; INT 21H
- ; BX╛═╩╟╕├│╠╨≥╡─PSP╢╬╡╪╓╖íú
- ;
- ; ╡≈╙├╜¿╥Θú║
- ; ▓╗╥¬├┐┤╬╘╦╨╨╢╝╚Ñ╝∞▓Θ╕├║»╩²ú¼╙├╩╩╡▒╞╡┬╩íó╘┌╣╪╝ⁿ╡─╡╪╖╜╡≈╙├
- ; ╒Γ╕÷║»╩²íú
- ;
- .model large
- .code
- locals @@
-
- OBJ EQU 1
-
- public _BL_ComeIn
-
- PSPseg dw 0
- ComeIn dw 0, 0
-
- CheckSum_ROM proc
- push ds
- push si
- push cx
- mov ax, 0f000h
- mov ds, ax
- mov si, 0e000h
- mov cx, 100h
- xor ax, ax
- @@1: lodsb
- add ah, al
- loop @@1
- xchg al, ah
- pop cx
- pop si
- pop ds
- ret
- CheckSum_ROM endp
-
- _BL_ComeIn Proc far
- cmp word ptr ComeIn, 0
- jz @@1
- mov ax, cs:ComeIn ; ╥╤╛¡╝∞▓Γ╣²
- mov dx, cs:ComeIn[2]
- ret
- @@1: push ds
- push cx
- push si
- xor ax, ax
- mov ds, ax
- mov si, 200h
- mov cx, 40h
- @@2: sub si, 4
- lodsw
- sub si, 2
- xor al, ah
- inc al
- jz @@3
- loop @@2
- mov ax, 0ffffh
- mov cs:ComeIn, ax
- mov dx, ax
- mov cs:ComeIn[2], ax
- jmp @@4
- @@3: mov ax, word ptr ds:[si]
- mov cs:ComeIn, ax
- mov dx, word ptr ds:[si+2]
- mov cs:ComeIn[2], dx
- mov word ptr ds:[si], 0
- mov word ptr ds:[si+2], 0
- @@4: pop si
- pop cx
- pop ds
- ret
- _BL_ComeIn Endp
-
- end
- ;
- ;
- ; C Usage Example:
- ; ----------------
- ;
- ; /*
- ; * function: BL_ComeIn
- ; */
- ;
- ; extern unsigned long far BL_ComeIn ( void );
- ; /* Error return 0xFFFFFFFFú¼ Success Return
- ; * Lo Byte is checksumú¼ Hi Word is PSP segment
- ; */
- ;
- ; void My_BL_ComeIn ()
- ; {
- ; unsigned long ComeIn;
- ; unsigned short int ROM_CheckSum;
- ; unsigned int PSPsegment;
- ;
- ;
- ; ComeIn = BL_ComeIn();
- ; if (ComeIn == 0xffffffff)
- ; {
- ; printf("\nERROR: not loaded from BITLOK-7NT shell !\n ");
- ; }
- ; else
- ; {
- ; ROM_CheckSum = ComeIn & 0xff;
- ; PSPsegment = ComeIn >> 16;
- ;
- ; printf("\nBITLOK On Entry: \n");
- ; printf(" ROM checksum is %xh\n"ú¼ ROM_CheckSum);
- ; printf(" PSP segment is %xh\n"ú¼ PSPsegment);
- ;
- ; inregs.h.ah = 0x62;
- ; intdos(&inregsú¼ &outregs);
- ; printf("\nThis program PSP segment is %xh\n"ú¼ outregs.x.bx);
- ;
- ; }
- ; }
- ;
-
-