Subversion Repositories SvarDOS

Rev

Rev 449 | Rev 453 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 449 Rev 450
Line 137... Line 137...
137
    owner[1] = 0;
137
    owner[1] = 0;
138
  }
138
  }
139
 
139
 
140
  /* prepare result (rmod props) */
140
  /* prepare result (rmod props) */
141
  res = MK_FP(rmodseg, rmod_len);
141
  res = MK_FP(rmodseg, rmod_len);
142
  _fmemset(res, 0, sizeof(*res));
142
  _fmemset(res, 0, sizeof(*res));  /* zero out */
143
  res->rmodseg = rmodseg;
143
  res->rmodseg = rmodseg;          /* rmod segment */
-
 
144
  res->inputbuf[0] = 128;          /* input buffer for INT 0x21, AH=0Ah*/
-
 
145
  res->echoflag = 1;               /* ECHO ON */
144
 
146
 
145
  /* write env segment to rmod buffer */
147
  /* write env segment to rmod buffer */
146
  owner = MK_FP(rmodseg, RMOD_OFFSET_ENVSEG);
148
  owner = MK_FP(rmodseg, RMOD_OFFSET_ENVSEG);
147
  *owner = envseg;
149
  *owner = envseg;
148
 
150
 
Line 165... Line 167...
165
    pop dx
167
    pop dx
166
    pop bx
168
    pop bx
167
    pop ax
169
    pop ax
168
  }
170
  }
169
 
171
 
-
 
172
  /* save my original parent in rmod's memory */
-
 
173
  res->origparent = *((unsigned long *)0x0a); /* original parent seg:off is at 0x0a of my PSP */
-
 
174
 
170
  /* set the int22 handler in my PSP to rmod so DOS jumps to rmod after I
175
  /* set the int22 handler in my PSP to rmod so DOS jumps to rmod after I
171
   * terminate and save the original handler in rmod's memory */
176
   * terminate and save the original handler in rmod's memory */
172
  _asm {
177
  _asm {
173
    push ax
178
    push ax
174
    push bx
179
    push bx
175
    push si
180
    push si
176
    push di
181
    push di
177
    push es
182
    push es
178
 
183
 
179
    /* save my original parent in rmod's memory */
-
 
180
    mov es, [rmodseg]
-
 
181
    mov si, 0x0a
-
 
182
    mov di, RMOD_OFFSET_ORIGPARENT
-
 
183
    cld
-
 
184
    movsw  /* mov ES:[DI], DS:[SI] and SI += 2 and DI += 2 */
-
 
185
    movsw
-
 
186
 
-
 
187
    mov bx, 0x0a                   /* int22 handler is at 0x0A of the PSP */
184
    mov bx, 0x0a                   /* int22 handler is at 0x0A of the PSP */
188
    mov ax, RMOD_OFFSET_ROUTINE
185
    mov ax, RMOD_OFFSET_ROUTINE
189
    mov [bx], ax                   /* int handler offset */
186
    mov [bx], ax                   /* int handler offset */
190
    mov ax, rmodseg
187
    mov ax, rmodseg
191
    mov [bx+2], ax                 /* int handler segment */
188
    mov [bx+2], ax                 /* int handler segment */