	SECTION _TEXT CLASS=CODE USE32
	SECTION _DATA CLASS=DATA USE32
	SECTION _BSS  CLASS=BSS USE32
	SECTION _CONST  CLASS=CONST USE32
	SECTION _STRING  CLASS=STRING USE32
	SECTION cstartup CLASS=INITDATA USE32
	SECTION crundown CLASS=EXITDATA USE32
	SECTION cppinit  CLASS=CPPINIT USE32
	SECTION cppexit  CLASS=CPPEXIT USE32
	GROUP DGROUP _DATA _BSS _CONST _STRING

SECTION _TEXT
;
; Line 38:	{
;
_checkver:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
;
; Line 40:		__doscall(0x30,&regs);
;
	LEA	EAX,[EBP+0FFFFFFCCH]
	PUSH	EAX
	PUSH	BYTE 030H
	CALL	___doscall
	ADD	ESP,BYTE 08H
;
; Line 41:		if (regs.b.al < 3) {
;
	MOVZX	EAX,BYTE [EBP+0FFFFFFE8H]
	CMP	EAX,BYTE 03H
	JNC	SHORT	L_3
;
; Line 42:			fprintf((_pstreams[2]),"This program requires DOS 3.0 or better");
;
	PUSH	DWORD L_2
	PUSH	DWORD [08H+__pstreams]
	CALL	_fprintf
	ADD	ESP,BYTE 08H
;
; Line 43:			exit(255);
;
	PUSH	DWORD 0FFH
	CALL	_exit
	POP	ECX
;
; Line 44:		}
;
L_3:
;
; Line 45:	}
;
	MOV	ESP,EBP
	POP	EBP
	RET
;
; Line 47:	{
;
_initdta:
;
; Line 48:		dpmi_alloc_real_memory(&dtasel,&dtaseg,0x80);  
;
	PUSH	DWORD 080H
	PUSH	DWORD _dtaseg
	PUSH	DWORD _dtasel
	CALL	_dpmi_alloc_real_memory
	ADD	ESP,BYTE 0CH
;
; Line 49:	}
;
	RET
;
; Line 51:	{
;
_freedta:
;
; Line 52:		dpmi_dealloc_real_memory(dtasel);
;
	MOVZX	EAX,WORD [_dtasel]
	PUSH	EAX
	CALL	_dpmi_dealloc_real_memory
	POP	ECX
;
; Line 53:	}
;
	RET
[GLOBAL	___nametodta]
;
; Line 56:	{
;
___nametodta:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	MOV	EBX,DWORD [EBP+0CH]
	MOV	ESI,DWORD [EBP+08H]
;
; Line 57:		int len = strlen(name) + 1;
;
	PUSH	EDI
	MOV	EDI,ESI
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	INC	EAX
	MOV	EDI,EAX
;
; Line 58:		dpmi_copy_from_ds(dtasel,index,name,len);
;
	PUSH	EDI
	PUSH	ESI
	PUSH	EBX
	MOVZX	EAX,WORD [_dtasel]
	PUSH	EAX
	CALL	_dpmi_copy_from_ds
	ADD	ESP,BYTE 010H
;
; Line 59:		return index;
;
	MOV	EAX,EBX
L_5:
	POP	EDI
	POP	ESI
	POP	EBX
	POP	EBP
	RET
[GLOBAL	___buftodta]
;
; Line 62:	{
;
___buftodta:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 63:		dpmi_copy_from_ds(dtasel,0,buf,len);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	DWORD [EBP+08H]
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [_dtasel]
	PUSH	EAX
	CALL	_dpmi_copy_from_ds
	ADD	ESP,BYTE 010H
;
; Line 64:		return 0;
;
	MOV	EAX,00H
L_6:
	POP	EBP
	RET
[GLOBAL	___dtatobuf]
;
; Line 67:	{
;
___dtatobuf:
	PUSH	EBP
	MOV	EBP,ESP
;
; Line 68:		dpmi_copy_to_ds(buf,dtasel,0,len);
;
	PUSH	DWORD [EBP+0CH]
	PUSH	BYTE 00H
	MOVZX	EAX,WORD [_dtasel]
	PUSH	EAX
	PUSH	DWORD [EBP+08H]
	CALL	_dpmi_copy_to_ds
	ADD	ESP,BYTE 010H
;
; Line 69:		return 0;
;
	MOV	EAX,00H
L_7:
	POP	EBP
	RET
[GLOBAL	___doscall]
;
; Line 72:	{
;
___doscall:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+0CH]
	LEA	EDI,[EBP+0FFFFFFCCH]
;
; Line 73:		regs->b.ah = func;
;
	MOV	AL,BYTE [EBP+08H]
	MOV	BYTE [ESI+01DH],AL
;
; Line 74:		regs->h.ds = dtaseg;
;
	MOV	AX,WORD [_dtaseg]
	MOV	WORD [ESI+024H],AX
;
; Line 75:		regs->h.es = dtaseg;
;
	MOV	AX,WORD [_dtaseg]
	MOV	WORD [ESI+022H],AX
;
; Line 76:		regs->h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 77:		regs->h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 78:		regs->h.flags = 0x42;
;
	MOV	WORD [ESI+020H],042H
;
; Line 79:		dpmi_simulate_real_interrupt(0x21,regs);
;
	PUSH	ESI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 80:		if (_breakflag)
;
	CMP	DWORD [__breakflag],BYTE 00H
	JE	SHORT	L_8
;
; Line 81:			raisecb();
;
	CALL	_raisecb
L_8:
;
; Line 82:		if (regs->h.flags & 1) {
;
	MOVZX	EAX,WORD [ESI+020H]
	AND	EAX,BYTE 01H
	JE	NEAR	L_10
;
; Line 84:			reg2.b.ah = 0x59;
;
	MOV	BYTE [EDI+01DH],059H
;
; Line 85:			reg2.h.bx = 0;
;
	MOV	WORD [EDI+010H],00H
;
; Line 86:			reg2.h.ss = 0;
;
	MOV	WORD [EDI+030H],00H
;
; Line 87:			reg2.h.sp = 0;
;
	MOV	WORD [EDI+02EH],00H
;
; Line 88:			reg2.h.flags = 0x42;
;
	MOV	WORD [EDI+020H],042H
;
; Line 89:			dpmi_simulate_real_interrupt(0x21,&reg2);
;
	PUSH	EDI
	PUSH	BYTE 021H
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 90:			_dos_errno = errno = reg2.b.al;
;
	MOVZX	EAX,BYTE [EDI+01CH]
	MOV	DWORD [_errno],EAX
	MOV	DWORD [__dos_errno],EAX
;
; Line 91:			return 0;
;
	MOV	EAX,00H
	JMP	L_12
L_10:
;
; Line 93:		return regs->h.ax;
;
	MOVZX	EAX,WORD [ESI+01CH]
L_12:
	POP	EDI
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	___realint]
;
; Line 96:	{
;
___realint:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	ESI
	MOV	ESI,DWORD [EBP+0CH]
;
; Line 97:		regs->h.ds = dtaseg;
;
	MOV	AX,WORD [_dtaseg]
	MOV	WORD [ESI+024H],AX
;
; Line 98:		regs->h.es = dtaseg;
;
	MOV	AX,WORD [_dtaseg]
	MOV	WORD [ESI+022H],AX
;
; Line 99:		regs->h.ss = 0;
;
	MOV	WORD [ESI+030H],00H
;
; Line 100:		regs->h.sp = 0;
;
	MOV	WORD [ESI+02EH],00H
;
; Line 101:		regs->h.flags = 0x42;
;
	MOV	WORD [ESI+020H],042H
;
; Line 102:		dpmi_simulate_real_interrupt(val,regs);
;
	PUSH	ESI
	PUSH	DWORD [EBP+08H]
	CALL	_dpmi_simulate_real_interrupt
	ADD	ESP,BYTE 08H
;
; Line 103:	}
;
	POP	ESI
	POP	EBP
	RET
[GLOBAL	__ll_spawn]
;
; Line 105:	{
;
__ll_spawn:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,0148H
	PUSH	EBX
	PUSH	ESI
	PUSH	EDI
	LEA	ESI,[EBP+0FFFFFEECH]
	LEA	EDI,[EBP+0FFFFFEB8H]
;
; Line 113:		strcpy(parms1+1,parms);
;
	LEA	EAX,[EBP+0FFFFFF00H]
	INC	EAX
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+0CH]
	MOV	EDI,EAX
	XCHG	ESI,EDI
	CLD
	PUSH	EDI
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	MOV	EAX,ECX
	POP	EDI
	XCHG	ESI,EDI
	REPNZ	MOVSB
	POP	EDI
	POP	ESI
	LEA	ECX,[EBP+0FFFFFF00H]
	INC	ECX
;
; Line 114:		parms1[0] = strlen(parms);
;
	PUSH	EDI
	MOV	EDI,DWORD [EBP+0CH]
	CLD
	SUB	EAX,EAX
	MOV	ECX,0FFFFFFFFH
	REPNZ	SCASB
	NOT	ECX
	DEC	ECX
	MOV	EAX,ECX
	POP	EDI
	MOV	BYTE [EBP+0FFFFFF00H],AL
;
; Line 116:		dpmi_copy_to_ds(&envsel,_pspseg,0x2c,2);
;
	PUSH	BYTE 02H
	PUSH	BYTE 02CH
	MOVZX	EAX,WORD [__pspseg]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFEFAH]
	PUSH	EAX
	CALL	_dpmi_copy_to_ds
	ADD	ESP,BYTE 010H
;
; Line 117:		dpmi_get_sel_base(&base,envsel);
;
	MOVZX	EAX,WORD [EBP+0FFFFFEFAH]
	PUSH	EAX
	LEA	EAX,[EBP+0FFFFFEFCH]
	PUSH	EAX
	CALL	_dpmi_get_sel_base
	ADD	ESP,BYTE 08H
;
; Line 118:		envseg = base >> 4;
;
	MOV	EBX,DWORD [EBP+0FFFFFEFCH]
	SAR	EBX,04H
;
; Line 120:		regs.h.dx = __nametodta(file,256);
;
	PUSH	DWORD 0100H
	PUSH	DWORD [EBP+08H]
	CALL	___nametodta
	ADD	ESP,BYTE 08H
	MOV	WORD [EDI+014H],AX
;
; Line 121:		spawnblock.ocomtail =  __nametodta(parms1,512);
;
	PUSH	DWORD 0200H
	LEA	EAX,[EBP+0FFFFFF00H]
	PUSH	EAX
	CALL	___nametodta
	ADD	ESP,BYTE 08H
	MOV	WORD [ESI+02H],AX
;
; Line 122:		spawnblock.scomtail =  dtaseg;
;
	MOV	AX,WORD [_dtaseg]
	MOV	WORD [ESI+04H],AX
;
; Line 123:		spawnblock.ofcb1 = __nametodta(fcbstring,768);
;
	PUSH	DWORD 0300H
	PUSH	DWORD [_fcbstring]
	CALL	___nametodta
	ADD	ESP,BYTE 08H
	MOV	WORD [ESI+06H],AX
;
; Line 124:		spawnblock.ofcb2 = __nametodta(fcbstring,768+32);
;
	PUSH	DWORD 0320H
	PUSH	DWORD [_fcbstring]
	CALL	___nametodta
	ADD	ESP,BYTE 08H
	MOV	WORD [ESI+0AH],AX
;
; Line 125:		spawnblock.sfcb1 = spawnblock.sfcb2 = dtaseg;
;
	MOV	AX,WORD [_dtaseg]
	MOV	WORD [ESI+0CH],AX
	MOV	WORD [ESI+08H],AX
;
; Line 126:		spawnblock.envseg = envseg;
;
	MOV	WORD [ESI+00H],BX
;
; Line 127:		regs.h.bx = __buftodta(&spawnblock,sizeof(struct sb));
;
	PUSH	BYTE 0EH
	PUSH	ESI
	CALL	___buftodta
	ADD	ESP,BYTE 08H
	MOV	WORD [EDI+010H],AX
;
; Line 128:		regs.b.al = 0;
;
	MOV	BYTE [EDI+01CH],00H
;
; Line 129:		__doscall(0x4b,&regs);
;
	PUSH	EDI
	PUSH	BYTE 04BH
	CALL	___doscall
	ADD	ESP,BYTE 08H
;
; Line 130:		if (regs.h.flags & 1)
;
	MOVZX	EAX,WORD [EDI+020H]
	AND	EAX,BYTE 01H
	JE	SHORT	L_13
;
; Line 131:			return -1;
;
	MOV	EAX,0FFFFFFFFH
	JMP	L_15
L_13:
;
; Line 133:		__doscall(0x4d,&regs);
;
	PUSH	EDI
	PUSH	BYTE 04DH
	CALL	___doscall
	ADD	ESP,BYTE 08H
;
; Line 134:		return regs.b.al;
;
	MOVZX	EAX,BYTE [EDI+01CH]
L_15:
	POP	EDI
	POP	ESI
	POP	EBX
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__ll_gettime]
;
; Line 137:	{
;
__ll_gettime:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	PUSH	EDI
	MOV	ESI,DWORD [EBP+08H]
	LEA	EDI,[EBP+0FFFFFFCCH]
;
; Line 139:		memset(tm2,0,sizeof(struct tm));
;
	MOV	EAX,00H
	MOV	ECX,024H
	PUSH	EDI
	PUSH	EAX
	MOV	EDI,ESI
	CLD
	REPNZ	STOSB
	POP	EAX
	POP	EDI
;
; Line 140:		regs.b.ah = 2;
;
	MOV	BYTE [EDI+01DH],02H
;
; Line 141:		__realint(0x1a,&regs);
;
	PUSH	EDI
	PUSH	BYTE 01AH
	CALL	___realint
	ADD	ESP,BYTE 08H
;
; Line 143:	  tm2->tm_sec = (((regs.b.dh)>>4)*10 +((regs.b.dh)& 0xf));
;
	MOVZX	EAX,BYTE [EDI+015H]
	SAR	EAX,04H
	IMUL	EAX,DWORD 0AH
	MOVZX	ECX,BYTE [EDI+015H]
	AND	ECX,BYTE 0FH
	ADD	EAX,ECX
	MOV	DWORD [ESI+00H],EAX
;
; Line 144:	  tm2->tm_min = (((regs.b.cl)>>4)*10 +((regs.b.cl)& 0xf));
;
	MOVZX	EAX,BYTE [EDI+018H]
	SAR	EAX,04H
	IMUL	EAX,DWORD 0AH
	MOVZX	ECX,BYTE [EDI+018H]
	AND	ECX,BYTE 0FH
	ADD	EAX,ECX
	MOV	DWORD [ESI+04H],EAX
;
; Line 145:	  tm2->tm_hour = (((regs.b.ch)>>4)*10 +((regs.b.ch)& 0xf));
;
	MOVZX	EAX,BYTE [EDI+019H]
	SAR	EAX,04H
	IMUL	EAX,DWORD 0AH
	MOVZX	ECX,BYTE [EDI+019H]
	AND	ECX,BYTE 0FH
	ADD	EAX,ECX
	MOV	DWORD [ESI+08H],EAX
;
; Line 147:		regs.b.ah = 4;
;
	MOV	BYTE [EDI+01DH],04H
;
; Line 148:		__realint(0x1a,&regs);
;
	PUSH	EDI
	PUSH	BYTE 01AH
	CALL	___realint
	ADD	ESP,BYTE 08H
;
; Line 150:	  tm2->tm_mday = (((regs.b.dl)>>4)*10 +((regs.b.dl)& 0xf));
;
	MOVZX	EAX,BYTE [EDI+014H]
	SAR	EAX,04H
	IMUL	EAX,DWORD 0AH
	MOVZX	ECX,BYTE [EDI+014H]
	AND	ECX,BYTE 0FH
	ADD	EAX,ECX
	MOV	DWORD [ESI+0CH],EAX
;
; Line 151:	  tm2->tm_mon = (((regs.b.dh)>>4)*10 +((regs.b.dh)& 0xf))-1;
;
	MOVZX	EAX,BYTE [EDI+015H]
	SAR	EAX,04H
	IMUL	EAX,DWORD 0AH
	MOVZX	ECX,BYTE [EDI+015H]
	AND	ECX,BYTE 0FH
	ADD	EAX,ECX
	DEC	EAX
	MOV	DWORD [ESI+010H],EAX
;
; Line 152:	  tm2->tm_year = (((regs.b.cl)>>4)*10 +((regs.b.cl)& 0xf));
;
	MOVZX	EAX,BYTE [EDI+018H]
	SAR	EAX,04H
	IMUL	EAX,DWORD 0AH
	MOVZX	ECX,BYTE [EDI+018H]
	AND	ECX,BYTE 0FH
	ADD	EAX,ECX
	MOV	DWORD [ESI+014H],EAX
;
; Line 153:		if (tm2->tm_year < 71)
;
	CMP	DWORD [ESI+014H],BYTE 047H
	JGE	SHORT	L_16
;
; Line 154:			tm2->tm_year += 100;
;
	ADD	DWORD [ESI+014H],BYTE 064H
L_16:
;
; Line 155:		return tm2;
;
	MOV	EAX,ESI
L_18:
	POP	EDI
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__ll_ticks]
;
; Line 158:	{
;
__ll_ticks:
	PUSH	EBP
	MOV	EBP,ESP
	SUB	ESP,BYTE 034H
	PUSH	ESI
	LEA	ESI,[EBP+0FFFFFFCCH]
;
; Line 160:		regs.b.ah = 0;
;
	MOV	BYTE [ESI+01DH],00H
;
; Line 161:		__realint(0x1a,&regs);
;
	PUSH	ESI
	PUSH	BYTE 01AH
	CALL	___realint
	ADD	ESP,BYTE 08H
;
; Line 162:		return (regs.h.cx << 16) + regs.h.dx;
;
	MOVZX	EAX,WORD [ESI+018H]
	SAL	EAX,010H
	MOVZX	ECX,WORD [ESI+014H]
	ADD	EAX,ECX
L_19:
	POP	ESI
	MOV	ESP,EBP
	POP	EBP
	RET
[GLOBAL	__ll_getenv]
;
; Line 165:	{
;
__ll_getenv:
	PUSH	EBP
	MOV	EBP,ESP
	PUSH	EBX
;
; Line 167:		asm push esi
;
	PUSH	ESI
;
; Line 168:		asm push edi
;
	PUSH	EDI
;
; Line 169:		asm push ebx
;
	PUSH	EBX
;
; Line 170:		asm push es
;
	PUSH	ES
;
; Line 171:		asm cld
;
	CLD
;
; Line 172:		asm mov es,[_pspseg]
;
	MOV	ES,WORD [__pspseg]
;
; Line 173:		asm mov es,es:[0x2c]
;
	MOV	ES,WORD [ES:02CH]
;
; Line 174:		asm mov edx,[ebp+8]
;
	MOV	EDX,DWORD [EBP+08H]
;
; Line 175:		asm or edx,edx
;
	OR	EDX,EDX
;
; Line 176:		asm jz lbl_count
;
	JZ	NEAR	L_20
;
; Line 177:		asm mov edx,[ebp+12]
;
	MOV	EDX,DWORD [EBP+0CH]
;
; Line 178:		asm sub	eax,eax			 
;
	SUB	EAX,EAX
;
; Line 179:		asm mov edi,eax
;
	MOV	EDI,EAX
;
; Line 180:		asm mov ecx,-1
;
	MOV	ECX,0FFFFFFFFH
;
; Line 181:		asm test 	byte ptr es:[edi],0xff
;
	TEST	BYTE [ES:EDI],0FFH
;
; Line 182:		asm jz	lbl_errenv
;
	JZ	NEAR	L_21
L_22:
;
; Line 184:		asm dec edx
;
	DEC	EDX
;
; Line 185:		asm jz	lbl_gotenv
;
	JZ	NEAR	L_23
;
; Line 186:		asm repnz	scasb			 
;
	REPNZ	SCASB
;
; Line 187:		asm test	byte ptr es:[edi],0xff
;
	TEST	BYTE [ES:EDI],0FFH
;
; Line 188:		asm jnz 	lbl_lp1
;
	JNZ	NEAR	L_22
;
; Line 189:		asm jmp	lbl_errenv
;
	JMP	L_21
L_23:
;
; Line 191:		asm mov	esi,[ebp+8]
;
	MOV	ESI,DWORD [EBP+08H]
;
; Line 192:		asm xchg	esi,edi
;
	XCHG	ESI,EDI
;
; Line 193:		asm cli
;
	CLI
;
; Line 194:		asm push	ds
;
	PUSH	DS
;
; Line 195:		asm push	ds
;
	PUSH	DS
;
; Line 196:		asm push	es
;
	PUSH	ES
;
; Line 197:		asm pop	ds
;
	POP	DS
;
; Line 198:		asm pop	es
;
	POP	ES
L_24:
;
; Line 200:		asm lodsb
;
	LODSB
;
; Line 201:		asm stosb
;
	STOSB
;
; Line 202:		asm or al,al
;
	OR	AL,AL
;
; Line 203:		asm jnz lbl_mvlp
;
	JNZ	NEAR	L_24
;
; Line 204:		asm pop ds
;
	POP	DS
;
; Line 205:		asm sti
;
	STI
;
; Line 206:		asm sub eax,eax
;
	SUB	EAX,EAX
;
; Line 207:		asm inc eax
;
	INC	EAX
;
; Line 208:		asm jmp	lbl_exit
;
	JMP	L_25
L_21:
;
; Line 210:		asm sub	eax,eax
;
	SUB	EAX,EAX
;
; Line 211:		asm jmp	lbl_exit
;
	JMP	L_25
L_20:
;
; Line 215:		asm sub	eax,eax			 
;
	SUB	EAX,EAX
;
; Line 216:		asm mov 	edi,eax
;
	MOV	EDI,EAX
;
; Line 217:		asm mov 	ecx,-1
;
	MOV	ECX,0FFFFFFFFH
;
; Line 218:		asm mov edx,eax
;
	MOV	EDX,EAX
L_26:
;
; Line 220:		asm inc edx
;
	INC	EDX
;
; Line 221:		asm repnz	scasb			 
;
	REPNZ	SCASB
;
; Line 222:		asm test	byte ptr es:[edi],0xff
;
	TEST	BYTE [ES:EDI],0FFH
;
; Line 223:		asm jnz 	lbl_lp
;
	JNZ	NEAR	L_26
L_27:
;
; Line 225:		asm mov eax,edx
;
	MOV	EAX,EDX
L_25:
;
; Line 227:		asm pop es
;
	POP	ES
;
; Line 228:		asm pop ebx
;
	POP	EBX
;
; Line 229:		asm pop edi
;
	POP	EDI
;
; Line 230:		asm pop esi
;
	POP	ESI
;
; Line 231:		answer = _EAX;
;
	MOV	EBX,EAX
;
; Line 232:		return answer;
;
	MOV	EAX,EBX
L_28:
	POP	EBX
	POP	EBP
	RET

SECTION _STRING
L_2:
	DB	054H,068H,069H,073H,020H,070H,072H,06FH,067H,072H,061H,06DH
	DB	020H,072H,065H,071H,075H,069H,072H,065H,073H,020H,044H,04FH
	DB	053H,020H,033H,02EH,030H,020H,06FH,072H,020H,062H,065H,074H
	DB	074H,065H,072H,00H
L_1:
	DB	020H,020H,020H,020H,020H,020H,020H,020H,020H,020H,020H,020H
	DB	020H,020H,020H,020H,00H
SECTION _DATA

_fcbstring	DD	L_1
SECTION _BSS
[GLOBAL	_errno]

_errno	RESB	04H
[GLOBAL	__dos_errno]

__dos_errno	RESB	04H

_dtaseg	RESB	02H

_dtasel	RESB	02H
SECTION cstartup
	DD	_checkver,19,_initdta,140
SECTION crundown
	DD	_freedta,10

SECTION _TEXT
[EXTERN	_fprintf]
[EXTERN	_dpmi_simulate_real_interrupt]
[EXTERN	_exit]
[EXTERN	_dpmi_get_sel_base]
[EXTERN	_dpmi_alloc_real_memory]
[EXTERN	_raisecb]
[EXTERN	_dpmi_dealloc_real_memory]
[EXTERN	_dpmi_copy_to_ds]
[EXTERN	_dpmi_copy_from_ds]

SECTION _DATA
[EXTERN	__breakflag]
[EXTERN	__pstreams]
[EXTERN	__pspseg]
