home *** CD-ROM | disk | FTP | other *** search
/ Software Collection (I) / TOOLS.iso / f28 / blobj.asm < prev    next >
Encoding:
Assembly Source File  |  1993-10-24  |  3.6 KB  |  139 lines

  1. ;
  2. ; BLOBJ.ASM
  3. ;
  4. ; ╔ΦBITLOK╥╤╜°╚δ╡─▒Ω╓╛
  5. ;     ░╤PSP╢╬╡╪╓╖┤µ╖┼╘┌PSP:[00FCH]┤ªú¼░╤PSP╢╬╡╪╓╖╥∞╗≥1234H
  6. ;     ┤µ╖┼╘┌MCB▒φ╡─[000CH]┤ªíú
  7. ;
  8. ; ╔ΦBITLOK╜°╚δ▒Ω╓╛
  9. ;     ╚δ┐┌▓╬╩²:  ╬▐íú
  10. ;     │÷┐┌▓╬╩²:  ╚τ╣√│÷┤φú¼╖╡╗╪ 0FFFFFFFFH ú╗
  11. ;                         (DX:AX = 0FFFFFFFFH)
  12. ;               │╔╣ªú¼╘≥╖╡╗╪╥╗╕÷╬▐╖√║┼╡─│ñ╫╓íú
  13. ;               ╞Σ╓╨:
  14. ;                   ╡═╫╓╜┌╩╟ROM╝∞▓Θ║═ú¼╕▀╫╓╩╟PSP╢╬╡╪╓╖íú
  15. ;                   (AL=ROM╝∞▓Θ║═ú¼DX=PSP╢╬╡╪╓╖)
  16. ;     ╫ó: ROM╝∞▓Θ║═╝╞╦π╖╜╖¿:
  17. ;         └█╝╙ROM(0xF000:0xE000)┤ª┐¬╩╝╫╓╜┌ú¼│ñ╢╚╬¬0x100íú
  18. ;         ╗±╚íPSP╢╬╡╪╓╖╖╜╖¿:
  19. ;            MOV AHú¼62H
  20. ;            INT 21H
  21. ;        BX╛═╩╟╕├│╠╨≥╡─PSP╢╬╡╪╓╖íú
  22. ;
  23. ;    ╡≈╙├╜¿╥Θú║
  24. ;        ▓╗╥¬├┐┤╬╘╦╨╨╢╝╚Ñ╝∞▓Θ╕├║»╩²ú¼╙├╩╩╡▒╞╡┬╩íó╘┌╣╪╝ⁿ╡─╡╪╖╜╡≈╙├
  25. ;    ╒Γ╕÷║»╩²íú
  26. ;
  27.                 .model  large
  28.                 .code
  29.                 locals  @@
  30.  
  31.         OBJ     EQU     1
  32.  
  33.                 public  _BL_ComeIn
  34.  
  35. PSPseg          dw      0
  36. ComeIn          dw      0, 0
  37.  
  38. CheckSum_ROM    proc
  39.                 push    ds
  40.                 push    si
  41.                 push    cx
  42.                 mov     ax, 0f000h
  43.                 mov     ds, ax
  44.                 mov     si, 0e000h
  45.                 mov     cx, 100h
  46.                 xor     ax, ax
  47.         @@1:    lodsb
  48.                 add     ah, al
  49.                 loop    @@1
  50.                 xchg    al, ah
  51.                 pop     cx
  52.                 pop     si
  53.                 pop     ds
  54.                 ret
  55. CheckSum_ROM    endp
  56.  
  57. _BL_ComeIn      Proc    far
  58.                 cmp     word ptr ComeIn, 0
  59.                 jz      @@1
  60.                 mov     ax, cs:ComeIn           ; ╥╤╛¡╝∞▓Γ╣²
  61.                 mov     dx, cs:ComeIn[2]
  62.                 ret
  63.         @@1:    push    ds
  64.                 push    cx
  65.                 push    si
  66.                 xor     ax, ax
  67.                 mov     ds, ax
  68.                 mov     si, 200h
  69.                 mov     cx, 40h
  70.         @@2:    sub     si, 4
  71.                 lodsw
  72.                 sub     si, 2
  73.                 xor     al, ah
  74.                 inc     al
  75.                 jz      @@3
  76.                 loop    @@2
  77.                 mov     ax, 0ffffh
  78.                 mov     cs:ComeIn, ax
  79.                 mov     dx, ax
  80.                 mov     cs:ComeIn[2], ax
  81.                 jmp     @@4
  82.         @@3:    mov     ax, word ptr ds:[si]
  83.                 mov     cs:ComeIn, ax
  84.                 mov     dx, word ptr ds:[si+2]
  85.                 mov     cs:ComeIn[2], dx
  86.                 mov     word ptr ds:[si], 0
  87.                 mov     word ptr ds:[si+2], 0
  88.         @@4:    pop     si
  89.                 pop     cx
  90.                 pop     ds
  91.                 ret
  92. _BL_ComeIn      Endp
  93.  
  94.                 end
  95. ;
  96. ;
  97. ; C Usage Example:
  98. ; ----------------
  99. ;
  100. ; /*
  101. ;  * function: BL_ComeIn
  102. ;  */
  103. ;
  104. ; extern unsigned long  far BL_ComeIn ( void );
  105. ; /* Error return 0xFFFFFFFFú¼ Success Return
  106. ;  * Lo Byte is checksumú¼ Hi Word is PSP segment
  107. ;  */
  108. ;
  109. ; void My_BL_ComeIn ()
  110. ; {
  111. ;   unsigned long ComeIn;
  112. ;   unsigned short int ROM_CheckSum;
  113. ;   unsigned int PSPsegment;
  114. ;
  115. ;
  116. ;   ComeIn = BL_ComeIn();
  117. ;   if (ComeIn == 0xffffffff)
  118. ;   {
  119. ;     printf("\nERROR: not loaded from BITLOK-7NT shell !\n ");
  120. ;   }
  121. ;   else
  122. ;   {
  123. ;     ROM_CheckSum = ComeIn & 0xff;
  124. ;     PSPsegment   = ComeIn >> 16;
  125. ;
  126. ;     printf("\nBITLOK On Entry: \n");
  127. ;     printf("  ROM checksum is %xh\n"ú¼ ROM_CheckSum);
  128. ;     printf("  PSP segment is %xh\n"ú¼ PSPsegment);
  129. ;
  130. ;     inregs.h.ah = 0x62;
  131. ;     intdos(&inregsú¼ &outregs);
  132. ;     printf("\nThis program PSP segment is %xh\n"ú¼ outregs.x.bx);
  133. ;
  134. ;   }
  135. ; }
  136. ;
  137.  
  138.  
  139.