home *** CD-ROM | disk | FTP | other *** search
/ CD-X 1 / cdx_01.iso / demodisc / cyberdan / intrance / inc / loader.inc < prev    next >
Encoding:
Text File  |  1995-03-20  |  10.6 KB  |  369 lines

  1.  
  2. FiXPOiNTER      EQU 0
  3. OVERLAYNAME     DB 'INTRANCE.DAT',0
  4. _FiLEHANDLE DW 0
  5.  
  6. DADATXT DB 'cOME AS YOU ARE - IN TRANCE BY PTM!'
  7. BUFFERPOS       DW 2000D
  8. BUFFER          DB 400D DUP('M.K. ')
  9.  
  10. DECMAiNPROC:    SHR     BP,1
  11.                 DEC     DL
  12.                 JE      NOJMPTORET1
  13.                 JMP     JMPTORET1
  14. NOJMPTORET1:
  15.                 PUSHF
  16.                 PUSH    BX
  17.                 PUSH    CX
  18.                 PUSH    DX
  19. GETBUF:         CMP     BUFFERPOS,2000D
  20.                 JE      EMPTYBUF
  21.                 MOV     BX,BUFFERPOS
  22.                 iNC     BUFFERPOS
  23.                 MOV     AL,BYTE PTR CS:[BX+BUFFER]
  24.                 JMP     SKiPLO
  25. EMPTYBUF:       MOV     BUFFERPOS,0
  26.                 MOV     AL,0
  27.                 MOV     CX,2000D
  28.                 XOR     BX,BX
  29. CLRBU:          MOV     BYTE PTR CS:[BX+BUFFER],AL
  30.                 iNC     BX
  31.                 LOOP    CLRBU
  32.                 MOV     BX,_FiLEHANDLE
  33.                 MOV     DX,OFFSET BUFFER
  34.                 PUSH    AX
  35.                 MOV     CX,2000D
  36.                 MOV     AX,3F00H
  37.                 iNT     21H
  38.                 POP     AX
  39.                 JMP     GETBUF
  40. SKiPLO:
  41. GETBUF22:       CMP     BUFFERPOS,2000D
  42.                 JE      EMPTYBUF22
  43.                 MOV     BX,BUFFERPOS
  44.                 iNC     BUFFERPOS
  45.                 MOV     AH,BYTE PTR CS:[BX+BUFFER]
  46.                 JMP     SKiPLO22
  47. EMPTYBUF22:     MOV     BUFFERPOS,0
  48.                 MOV     AH,0
  49.                 MOV     CX,2000D
  50.                 XOR     BX,BX
  51. CLRBU22:        MOV     BYTE PTR CS:[BX+BUFFER],AH
  52.                 iNC     BX
  53.                 LOOP    CLRBU22
  54.                 MOV     BX,_FiLEHANDLE
  55.                 MOV     DX,OFFSET BUFFER
  56.                 PUSH    AX
  57.                 MOV     CX,2000D
  58.                 MOV     AX,3F00H
  59.                 iNT     21H
  60.                 POP     AX
  61.                 JMP     GETBUF22
  62. SKiPLO22:       POP     DX
  63.                 POP     CX
  64.                 POP     BX
  65.                 POPF
  66.                 MOV     BP,AX
  67.                 MOV     DL,10H
  68. JMPTORET1:      RET
  69. CALLEDFROMTHELASTBUT1JB:
  70.                 CALL    DECMAiNPROC
  71.                 RCL     BH,1
  72.                 CALL    DECMAiNPROC
  73.                 JB      JMPFROMJB1
  74.                 MOV     DH,02
  75.                 MOV     CL,03
  76. JMPTOLOOP1:     CALL    DECMAiNPROC
  77.                 JB      JMPFROMJB2
  78.                 CALL    DECMAiNPROC
  79.                 RCL     BH,1
  80.                 SHL     DH,1
  81.                 LOOP    JMPTOLOOP1
  82. JMPFROMJB2:     SUB     BH,DH
  83. JMPFROMJB1:     MOV     DH,2
  84.                 MOV     CL,4
  85. JMPTOLOOP2:     iNC     DH
  86.                 CALL    DECMAiNPROC
  87.                 JB      JMPFROMJB3
  88.                 LOOP    JMPTOLOOP2
  89.                 CALL    DECMAiNPROC
  90.                 JNB     JMPFROMJNB1
  91.                 iNC     DH
  92.                 CALL    DECMAiNPROC
  93.                 JNB     JMPFROMJB3
  94.                 iNC     DH
  95. JMPFROMJB3:     MOV     CL,DH
  96.                 JMP     SHORT FROM1STJMP
  97. JMPFROMJNB1:    CALL    DECMAiNPROC
  98.                 JB      JMPFROMJB4
  99.                 MOV     CL,3
  100.                 MOV     DH,0
  101. FROMLOOP3:      CALL    DECMAiNPROC
  102.                 RCL     DH,1
  103.                 LOOP    FROMLOOP3
  104.                 ADD     DH,9
  105.                 JMP     JMPFROMJB3
  106. JMPFROMJB4:     PUSHF
  107.                 PUSH    BX
  108.                 PUSH    CX
  109.                 PUSH    DX
  110. GETBUF5:        CMP     BUFFERPOS,2000D
  111.                 JE      EMPTYBUF5
  112.                 MOV     BX,BUFFERPOS
  113.                 iNC     BUFFERPOS
  114.                 MOV     AL,BYTE PTR CS:[BX+BUFFER]
  115.                 JMP     SKiPLO5
  116. EMPTYBUF5:      MOV     BUFFERPOS,0
  117.                 MOV     AL,0
  118.                 MOV     CX,2000D
  119.                 XOR     BX,BX
  120. CLRBU5:         MOV     BYTE PTR CS:[BX+BUFFER],AL
  121.                 iNC     BX
  122.                 LOOP    CLRBU5                      ; CLEARiNG THE BUFFER
  123.                 MOV     BX,_FiLEHANDLE
  124.                 MOV     DX,OFFSET BUFFER
  125.                 PUSH    AX
  126.                 MOV     CX,2000D
  127.                 MOV     AX,3F00H
  128.                 iNT     21H
  129.                 POP     AX
  130.                 JMP     GETBUF5
  131. SKiPLO5:        POP     DX
  132.                 POP     CX
  133.                 POP     BX
  134.                 POPF
  135.                 MOV     CL,AL
  136.                 ADD     CX,011H
  137.                 JMP     SHORT FROM1STJMP
  138. CALLEDFROMLASTJB:
  139.                 MOV     CL,3
  140. FROMLOOP4:      CALL    DECMAiNPROC
  141.                 RCL     BH,1
  142.                 LOOP    FROMLOOP4
  143.                 DEC     BH
  144. FROMLASTJNE:    MOV     CL,2
  145. FROM1STJMP:     MOV     AL,ES:[BX+Di]            ; ES POiNTS TO NEWSSEGMENT!
  146.                 CLD
  147.                 STOSB
  148.                 CMP     Di,0
  149.                 JNE     NOT_NESSESSARY_SEGMENT_iNC
  150.                 PUSH    AX
  151.                 MOV     AX,ES
  152.                 ADD     AX,1000H
  153.                 SUB     AH,2
  154.                 MOV     ES,AX
  155.                 MOV     Di,2000H
  156.                 POP     AX
  157. NOT_NESSESSARY_SEGMENT_iNC:
  158.                 LOOP    FROM1STJMP
  159.                 JMP     FROMJMP2
  160. UNPACK:
  161.                 MOV     AX,CS
  162.                 MOV     DS,AX
  163.                 PUSH    ES
  164.                 PUSH    Di
  165.                 MOV     _FiLEHANDLE,BX
  166.                 MOV     CX,2                          ; THERE ARE 50 CHARS THAT WiLL
  167.                 MOV     DX,CS
  168.                 MOV     DS,DX                           ; DS:=CS   !!!!
  169.                 MOV     DX,OFFSET BUFFER                ; BUFFER WiLL BE _SON !!
  170.                 MOV     AX,3F00H
  171.                 iNT     21H
  172.                 MOV     CX,35                           ; CX:=50
  173.                 MOV     AX,DS
  174.                 MOV     ES,AX
  175.                 MOV     Si,OFFSET BUFFER
  176.                 MOV     Di, OFFSET DADATXT
  177. NO_DiFF_iN_HDR:
  178.                 LODSW                                   ; LOADiNG THE BEGiNNiNG AX
  179.                 MOV     BP,AX
  180.                 MOV     DX,10H
  181.                 XOR     CX,CX
  182.                 XOR     BX,BX                               ; AND WE HAVE THE STORiNG
  183.                 POP     Di
  184.                 POP     ES
  185. FROMJMP2:
  186.                 CALL    DECMAiNPROC
  187.                 JNB     FROMJNB2
  188.                 PUSHF
  189.                 PUSH    AX
  190.                 PUSH    BX
  191.                 PUSH    CX
  192.                 PUSH    DX
  193. GETBUF6:        CMP     BUFFERPOS,2000D
  194.                 JE      EMPTYBUF6
  195.                 MOV     BX,BUFFERPOS
  196.                 iNC     BUFFERPOS
  197.                 MOV     AL,BYTE PTR CS:[BX+BUFFER]   ; AL
  198.                 JMP     SKiPLO6
  199. EMPTYBUF6:      MOV     BUFFERPOS,0
  200.                 MOV     AL,0
  201.                 MOV     CX,2000D
  202.                 XOR     BX,BX
  203. CLRBU6:         MOV     BYTE PTR CS:[BX+BUFFER],AL
  204.                 iNC     BX
  205.                 LOOP    CLRBU6                      ; CLEARiNG THE BUFFER
  206.                 MOV     BX,_FiLEHANDLE
  207.                 MOV     DX,OFFSET BUFFER
  208.                 PUSH    AX
  209.                 MOV     CX,2000D
  210.                 MOV     AX,3F00H
  211.                 iNT     21H
  212.                 POP     AX
  213.                 JMP     GETBUF6
  214. SKiPLO6:
  215.                 POP     DX
  216.                 POP     CX
  217.                 POP     BX
  218.         CLD
  219.                 STOSB
  220.                 CMP     Di,0
  221.                 JNE     NOT_NESSESSARY_SEGMENT_iNC2
  222.                 PUSH    AX
  223.                 MOV     AX,ES
  224.                 ADD     AX,1000H
  225.                 SUB     AH,2
  226.                 MOV     ES,AX
  227.                 MOV     Di,2000H
  228.                 POP     AX
  229. NOT_NESSESSARY_SEGMENT_iNC2:
  230.                 POP     AX
  231.                 POPF
  232.                 JMP     FROMJMP2
  233. FROMJNB2:       CALL    DECMAiNPROC
  234.                 PUSHF
  235.                 PUSH    BX
  236.                 PUSH    CX
  237.                 PUSH    DX
  238. GETBUF3:        CMP     BUFFERPOS,2000D
  239.                 JE      EMPTYBUF3
  240.                 MOV     BX,BUFFERPOS
  241.                 iNC     BUFFERPOS
  242.                 MOV     AL,BYTE PTR CS:[BX+BUFFER]   ; AL, CERTAiNLY (BECAUSE OF LODSB)
  243.                 JMP     SKiPLO3
  244. EMPTYBUF3:      MOV     BUFFERPOS,0
  245.                 MOV     AL,0
  246.                 MOV     CX,2000D
  247.                 XOR     BX,BX
  248. CLRBU3:         MOV     BYTE PTR CS:[BX+BUFFER],AL
  249.                 iNC     BX
  250.                 LOOP    CLRBU3                      ; CLEARiNG THE BUFFER
  251.                 MOV     BX,_FiLEHANDLE
  252.                 MOV     DX,OFFSET BUFFER
  253.                 PUSH    AX
  254.                 MOV     CX,2000D
  255.                 MOV     AX,3F00H
  256.                 iNT     21H
  257.                 POP     AX
  258.                 JMP     GETBUF3
  259. SKiPLO3:
  260.                 POP     DX
  261.                 POP     CX
  262.                 POP     BX
  263.                 POPF
  264.                 MOV     BH,0FFH
  265.                 MOV     BL,AL
  266.                 JNB     NOCALLEDFROMTHELASTBUT1JB
  267.                 JMP     CALLEDFROMTHELASTBUT1JB
  268. NOCALLEDFROMTHELASTBUT1JB:
  269.                 CALL    DECMAiNPROC
  270.                 JNB     NOCALLEDFROMLASTJB
  271.                 JMP     CALLEDFROMLASTJB
  272. NOCALLEDFROMLASTJB:
  273.                 CMP     BH,BL
  274.                 JE      NOFROMLASTJNE
  275.                 JMP     FROMLASTJNE
  276. NOFROMLASTJNE:
  277.                 CALL    RESETPARAMS
  278.                 RET
  279.  
  280. KiSCOUNTER    DW 0
  281. NAGYCOUNTER    DW 0
  282.  
  283. RESETPARAMS:
  284.                 MOV     KiSCOUNTER,0
  285.                 MOV     NAGYCOUNTER,0
  286.                 MOV     BUFFERPOS,2000D
  287.                 RET
  288.  
  289. POSiTiON    DW 0,0
  290. LENGHT_        DW 0,0
  291. MARADEK         DW 0
  292. OVERLAYLEN      DW 0
  293. TEXTFLAG    DW 0
  294. WHEREGO         DW 0,0
  295.  
  296. LOADOVERLAY:
  297.  
  298.         PUSHA
  299.         PUSH    ES
  300.         PUSH    DS
  301.         PUSH BX
  302.     PUSH CX
  303.     PUSH ES
  304.  
  305.     PUSH DS
  306.     PUSH DX
  307.     PUSH AX
  308.         MOV     WHEREGO,DS
  309.         MOV     WHEREGO+2,DX
  310.     MOV AX,3D00H
  311.     PUSH CS
  312.     POP DS
  313.         MOV DX,OFFSET OVERLAYNAME
  314.     iNT 21H                ;OPEN OVERLAY
  315.     MOV BX,AX
  316.  
  317.     POP AX
  318.     MOV CL,5
  319.     SHL AX,CL
  320.     MOV DX,AX
  321.     XOR CX,CX
  322.     ADD DX,24
  323.         ADD DX,FiXPOiNTER
  324.     ADC CX,0
  325.  
  326.     MOV AX,4200H
  327.     iNT 21H                ;POiNTER TO POSiTiON
  328.         MOV DX,OFFSET POSiTiON
  329.     MOV AH,3FH
  330.     MOV CX,8
  331.     iNT 21H
  332.  
  333.         MOV DX,POSiTiON
  334.         MOV CX,POSiTiON+2
  335.         ADD DX,FiXPOiNTER
  336.     ADC CX,0
  337.     MOV AX,4200H
  338.     iNT 21H                ;POiNTS TO FiLE
  339.  
  340.         MOV AX,LENGHT_
  341.         MOV DX,LENGHT_+2
  342.     MOV CX,8000H
  343.     DiV CX
  344.     MOV CX,AX
  345.     iNC CX
  346.         MOV MARADEK,DX
  347.     POP DX
  348.     POP DS
  349.  
  350.         MOV ES,WHEREGO
  351.         MOV DX,WHEREGO+2
  352.     MOV Di,DX
  353.     PUSH CS
  354.     POP DS
  355.         MOV CX,LENGHT_
  356.         CALL UNPACK
  357.         MOV     BX,_FiLEHANDLE
  358.     MOV AH,3EH
  359.     iNT 21H
  360.  
  361.         MOV     CS:OVERLAYLEN,Di
  362.     POP ES
  363.     POP CX
  364.     POP BX
  365.         POP     DS
  366.         POP     ES
  367.         POPA
  368.         RET
  369.