--- /dev/null
+.387\r
+ PUBLIC _OpenEMM\r
+ PUBLIC _CloseEMM\r
+ PUBLIC _EMMInstalled\r
+ PUBLIC _EMMCoreLeft\r
+ PUBLIC _EMMalloc\r
+ PUBLIC _EMMRealloc\r
+ PUBLIC _EMMFree\r
+ PUBLIC _MapEMM\r
+ PUBLIC _UnmapEMM\r
+ PUBLIC _UseEMM\r
+ PUBLIC _SaveEMM\r
+ EXTRN `F_LXLSH@`:BYTE\r
+ EXTRN `F_SCOPY@`:BYTE\r
+MEMORY_TEXT SEGMENT BYTE PUBLIC USE16 'CODE'\r
+ ASSUME CS:MEMORY_TEXT, DS:DGROUP, SS:DGROUP\r
+_OpenEMM:\r
+ push bp \r
+ mov bp,sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ call far ptr L$59 \r
+ or ax,ax \r
+ je L$1 \r
+ call far ptr L$65 \r
+ or ax,ax \r
+ jne L$2 \r
+L$1:\r
+ xor ax,ax \r
+ jmp L$4 \r
+L$2:\r
+ call far ptr L$68 \r
+ mov word ptr L$89,ax \r
+ or ax,ax \r
+ jne L$3 \r
+ xor ax,ax \r
+ jmp L$4 \r
+L$3:\r
+ mov ax,1 \r
+ jmp L$4 \r
+L$4:\r
+ pop ds \r
+ pop bp \r
+ retf \r
+_CloseEMM:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ cmp word ptr L$89,0 \r
+ jne L$5 \r
+ jmp L$9 \r
+L$5:\r
+ xor si,si \r
+ jmp L$8 \r
+L$6:\r
+ mov bx,si \r
+ shl bx,1 \r
+ cmp word ptr L$88[bx],0 \r
+ je L$7 \r
+ mov bx,si \r
+ shl bx,1 \r
+ push word ptr L$88[bx] \r
+ call far ptr L$77 \r
+ inc sp \r
+ inc sp \r
+ mov bx,si \r
+ shl bx,1 \r
+ mov word ptr L$88[bx],0 \r
+L$7:\r
+ inc si \r
+L$8:\r
+ cmp si,40H \r
+ jl L$6 \r
+ mov word ptr L$89,0 \r
+L$9:\r
+ pop ds \r
+ pop si \r
+ pop bp \r
+ retf \r
+_EMMInstalled:\r
+ push bp \r
+ mov bp,sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ cmp word ptr L$89,0 \r
+ je L$10 \r
+ mov ax,1 \r
+ jmp L$11 \r
+L$10:\r
+ xor ax,ax \r
+L$11:\r
+ jmp L$12 \r
+L$12:\r
+ pop ds \r
+ pop bp \r
+ retf \r
+_EMMCoreLeft:\r
+ push bp \r
+ mov bp,sp \r
+ sub sp,6 \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov word ptr -4[bp],0 \r
+ mov word ptr -6[bp],0 \r
+ mov ah,42H \r
+ int 67H \r
+ or ah,ah \r
+ js L$13 \r
+ mov word ptr -2[bp],bx \r
+ mov ax,word ptr -2[bp] \r
+ xor dx,dx \r
+ mov cl,0eH \r
+ call far ptr `F_LXLSH@` \r
+ mov word ptr -4[bp],dx \r
+ mov word ptr -6[bp],ax \r
+L$13:\r
+ mov dx,word ptr -4[bp] \r
+ mov ax,word ptr -6[bp] \r
+ jmp L$14 \r
+L$14:\r
+ pop ds \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+_EMMalloc:\r
+ push bp \r
+ mov bp,sp \r
+ sub sp,4 \r
+ push si \r
+ push di \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov di,word ptr 0aH[bp] \r
+ mov word ptr -2[bp],0 \r
+ mov word ptr -4[bp],0 \r
+ cmp word ptr L$89,0 \r
+ jne L$15 \r
+ les bx,dword ptr 6[bp] \r
+ mov word ptr es:[bx],0 \r
+ xor dx,dx \r
+ xor ax,ax \r
+ jmp L$23 \r
+L$15:\r
+ cmp di,1 \r
+ jl L$16 \r
+ cmp di,3fcH \r
+ jle L$17 \r
+L$16:\r
+ les bx,dword ptr 6[bp] \r
+ mov word ptr es:[bx],0f440H \r
+ xor dx,dx \r
+ xor ax,ax \r
+ jmp L$23 \r
+L$17:\r
+ xor si,si \r
+ jmp L$19 \r
+L$18:\r
+ inc si \r
+L$19:\r
+ cmp si,40H \r
+ jge L$20 \r
+ mov bx,si \r
+ shl bx,1 \r
+ cmp word ptr L$88[bx],0 \r
+ jne L$18 \r
+L$20:\r
+ cmp si,40H \r
+ jne L$21 \r
+ les bx,dword ptr 6[bp] \r
+ mov word ptr es:[bx],0f443H \r
+ xor dx,dx \r
+ xor ax,ax \r
+ jmp L$23 \r
+L$21:\r
+ push di \r
+ call far ptr L$71 \r
+ inc sp \r
+ inc sp \r
+ mov bx,si \r
+ shl bx,1 \r
+ mov word ptr L$88[bx],ax \r
+ or ax,ax \r
+ jle L$22 \r
+ mov ax,word ptr L$89 \r
+ mov word ptr -2[bp],ax \r
+ mov word ptr -4[bp],0 \r
+L$22:\r
+ mov bx,si \r
+ shl bx,1 \r
+ mov ax,word ptr L$88[bx] \r
+ les bx,dword ptr 6[bp] \r
+ mov word ptr es:[bx],ax \r
+ mov dx,word ptr -2[bp] \r
+ mov ax,word ptr -4[bp] \r
+ jmp L$23 \r
+L$23:\r
+ pop ds \r
+ pop di \r
+ pop si \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+_EMMRealloc:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ xor si,si \r
+ cmp word ptr L$89,0 \r
+ je L$24 \r
+ cmp word ptr 8[bp],0 \r
+ jl L$24 \r
+ cmp word ptr 8[bp],3fcH \r
+ jle L$25 \r
+L$24:\r
+ xor ax,ax \r
+ jmp L$27 \r
+L$25:\r
+ mov ah,51H \r
+ mov bx,word ptr 8[bp] \r
+ mov dx,word ptr 6[bp] \r
+ int 67H \r
+ or ah,ah \r
+ js L$26 \r
+ mov si,1 \r
+L$26:\r
+ mov ax,si \r
+ jmp L$27 \r
+L$27:\r
+ pop ds \r
+ pop si \r
+ pop bp \r
+ retf \r
+_EMMFree:\r
+ push bp \r
+ mov bp,sp \r
+ dec sp \r
+ dec sp \r
+ push si \r
+ push di \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov di,word ptr 6[bp] \r
+ cmp word ptr L$89,0 \r
+ jne L$28 \r
+ jmp L$36 \r
+L$28:\r
+ xor si,si \r
+ jmp L$30 \r
+L$29:\r
+ inc si \r
+L$30:\r
+ cmp si,40H \r
+ jge L$31 \r
+ mov bx,si \r
+ shl bx,1 \r
+ cmp word ptr L$88[bx],di \r
+ jne L$29 \r
+L$31:\r
+ cmp si,40H \r
+ jl L$32 \r
+ jmp L$36 \r
+L$32:\r
+ mov word ptr -2[bp],10H \r
+ jmp L$34 \r
+L$33:\r
+ mov bx,si \r
+ shl bx,1 \r
+ push word ptr L$88[bx] \r
+ call far ptr L$77 \r
+ inc sp \r
+ inc sp \r
+ or ax,ax \r
+ je L$34 \r
+ jmp L$35 \r
+L$34:\r
+ mov ax,word ptr -2[bp] \r
+ dec word ptr -2[bp] \r
+ or ax,ax \r
+ jne L$33 \r
+L$35:\r
+ mov bx,si \r
+ shl bx,1 \r
+ mov word ptr L$88[bx],0 \r
+L$36:\r
+ pop ds \r
+ pop di \r
+ pop si \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+_MapEMM:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push di \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov di,word ptr 6[bp] \r
+ cmp word ptr L$89,0 \r
+ jne L$37 \r
+ xor ax,ax \r
+ jmp L$47 \r
+L$37:\r
+ xor si,si \r
+ jmp L$39 \r
+L$38:\r
+ inc si \r
+L$39:\r
+ cmp si,40H \r
+ jge L$40 \r
+ mov bx,si \r
+ shl bx,1 \r
+ cmp word ptr L$88[bx],di \r
+ jne L$38 \r
+L$40:\r
+ cmp si,40H \r
+ jne L$41 \r
+ xor ax,ax \r
+ jmp L$47 \r
+L$41:\r
+ push di \r
+ call far ptr L$80 \r
+ inc sp \r
+ inc sp \r
+ cmp ax,word ptr 0aH[bp] \r
+ jl L$42 \r
+ cmp word ptr 0aH[bp],1 \r
+ jl L$42 \r
+ cmp word ptr 0aH[bp],4 \r
+ jle L$43 \r
+L$42:\r
+ mov ax,0f440H \r
+ jmp L$47 \r
+L$43:\r
+ mov si,word ptr 8[bp] \r
+ jmp L$46 \r
+L$44:\r
+ mov ax,si \r
+ sub ax,word ptr 8[bp] \r
+ push ax \r
+ push si \r
+ push di \r
+ call far ptr L$74 \r
+ add sp,6 \r
+ or ax,ax \r
+ jne L$45 \r
+ xor ax,ax \r
+ jmp L$47 \r
+L$45:\r
+ inc si \r
+L$46:\r
+ mov ax,word ptr 8[bp] \r
+ add ax,word ptr 0aH[bp] \r
+ cmp ax,si \r
+ jg L$44 \r
+ mov ax,1 \r
+ jmp L$47 \r
+L$47:\r
+ pop ds \r
+ pop di \r
+ pop si \r
+ pop bp \r
+ retf \r
+_UnmapEMM:\r
+ push bp \r
+ mov bp,sp \r
+ dec sp \r
+ dec sp \r
+ push si \r
+ push di \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov di,word ptr 6[bp] \r
+ cmp word ptr L$89,0 \r
+ jne L$48 \r
+ jmp L$57 \r
+L$48:\r
+ xor si,si \r
+ jmp L$50 \r
+L$49:\r
+ inc si \r
+L$50:\r
+ cmp si,40H \r
+ jge L$51 \r
+ mov bx,si \r
+ shl bx,1 \r
+ cmp word ptr L$88[bx],di \r
+ jne L$49 \r
+L$51:\r
+ cmp si,40H \r
+ jne L$52 \r
+ jmp L$57 \r
+L$52:\r
+ mov ax,word ptr 8[bp] \r
+ add ax,word ptr 0aH[bp] \r
+ mov word ptr -2[bp],ax \r
+ cmp word ptr 0aH[bp],1 \r
+ jl L$53 \r
+ cmp word ptr -2[bp],4 \r
+ jle L$54 \r
+L$53:\r
+ jmp L$57 \r
+L$54:\r
+ mov si,word ptr 8[bp] \r
+ jmp L$56 \r
+L$55:\r
+ push si \r
+ mov ax,0ffffH \r
+ push ax \r
+ push di \r
+ call far ptr L$74 \r
+ add sp,6 \r
+ inc si \r
+L$56:\r
+ cmp si,word ptr -2[bp] \r
+ jl L$55 \r
+L$57:\r
+ pop ds \r
+ pop di \r
+ pop si \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+_UseEMM:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov si,word ptr 6[bp] \r
+ push si \r
+ call far ptr L$83 \r
+ inc sp \r
+ inc sp \r
+ push word ptr 0aH[bp] \r
+ push word ptr 8[bp] \r
+ push si \r
+ push cs \r
+ call near ptr _MapEMM \r
+ add sp,6 \r
+ jmp L$58 \r
+L$58:\r
+ pop ds \r
+ pop si \r
+ pop bp \r
+ retf \r
+_SaveEMM:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov si,word ptr 6[bp] \r
+ push word ptr 0aH[bp] \r
+ push word ptr 8[bp] \r
+ push si \r
+ push cs \r
+ call near ptr _UnmapEMM \r
+ add sp,6 \r
+ push si \r
+ call far ptr L$86 \r
+ inc sp \r
+ inc sp \r
+ pop ds \r
+ pop si \r
+ pop bp \r
+ retf \r
+L$59:\r
+ push bp \r
+ mov bp,sp \r
+ sub sp,14H \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ push ss \r
+ lea ax,-0cH[bp] \r
+ push ax \r
+ push ds \r
+ mov ax,offset L$87 \r
+ push ax \r
+ mov cx,9 \r
+ call far ptr `F_SCOPY@` \r
+ push es \r
+ mov ax,3567H \r
+ int 21H \r
+ mov ax,es \r
+ mov word ptr -2[bp],ax \r
+ pop es \r
+ mov ax,word ptr -2[bp] \r
+ mov word ptr -12H[bp],ax \r
+ mov word ptr -14H[bp],0aH \r
+ lea ax,-0cH[bp] \r
+ mov word ptr -0eH[bp],ss \r
+ mov word ptr -10H[bp],ax \r
+ xor si,si \r
+ jmp L$61 \r
+L$60:\r
+ inc si \r
+L$61:\r
+ cmp si,8 \r
+ jge L$62 \r
+ les bx,dword ptr -10H[bp] \r
+ inc word ptr -10H[bp] \r
+ mov al,byte ptr es:[bx] \r
+ les bx,dword ptr -14H[bp] \r
+ inc word ptr -14H[bp] \r
+ cmp al,byte ptr es:[bx] \r
+ je L$60 \r
+L$62:\r
+ cmp si,8 \r
+ jne L$63 \r
+ mov ax,1 \r
+ jmp L$64 \r
+L$63:\r
+ xor ax,ax \r
+ jmp L$64 \r
+L$64:\r
+ pop ds \r
+ pop si \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+L$65:\r
+ push bp \r
+ mov bp,sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov ah,40H \r
+ int 67H \r
+ or ah,ah \r
+ jns L$66 \r
+ xor ax,ax \r
+ jmp L$67 \r
+L$66:\r
+ mov ax,1 \r
+ jmp L$67 \r
+L$67:\r
+ pop ds \r
+ pop bp \r
+ retf \r
+L$68:\r
+ push bp \r
+ mov bp,sp \r
+ dec sp \r
+ dec sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov ah,41H \r
+ int 67H \r
+ or ah,ah \r
+ js L$69 \r
+ mov word ptr -2[bp],bx \r
+ mov ax,word ptr -2[bp] \r
+ jmp L$70 \r
+L$69:\r
+ xor ax,ax \r
+ jmp L$70 \r
+L$70:\r
+ pop ds \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+L$71:\r
+ push bp \r
+ mov bp,sp \r
+ dec sp \r
+ dec sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov ah,43H \r
+ mov bx,word ptr 6[bp] \r
+ int 67H \r
+ or ah,ah \r
+ js L$72 \r
+ mov word ptr -2[bp],dx \r
+ mov ax,word ptr -2[bp] \r
+ jmp L$73 \r
+L$72:\r
+ xor ax,ax \r
+ jmp L$73 \r
+L$73:\r
+ pop ds \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+L$74:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ xor si,si \r
+ mov ax,word ptr 0aH[bp] \r
+ mov ah,44H \r
+ mov bx,word ptr 8[bp] \r
+ mov dx,word ptr 6[bp] \r
+ int 67H \r
+ or ah,ah \r
+ js L$75 \r
+ mov si,1 \r
+L$75:\r
+ mov ax,si \r
+ jmp L$76 \r
+L$76:\r
+ pop ds \r
+ pop si \r
+ pop bp \r
+ retf \r
+L$77:\r
+ push bp \r
+ mov bp,sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov ah,45H \r
+ mov dx,word ptr 6[bp] \r
+ int 67H \r
+ or ah,ah \r
+ js L$78 \r
+ mov ax,1 \r
+ jmp L$79 \r
+L$78:\r
+ xor ax,ax \r
+ jmp L$79 \r
+L$79:\r
+ pop ds \r
+ pop bp \r
+ retf \r
+L$80:\r
+ push bp \r
+ mov bp,sp \r
+ dec sp \r
+ dec sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov word ptr -2[bp],0 \r
+ mov ah,4cH \r
+ mov dx,word ptr 6[bp] \r
+ int 67H \r
+ or ah,ah \r
+ js L$81 \r
+ mov word ptr -2[bp],bx \r
+L$81:\r
+ mov ax,word ptr -2[bp] \r
+ jmp L$82 \r
+L$82:\r
+ pop ds \r
+ mov sp,bp \r
+ pop bp \r
+ retf \r
+L$83:\r
+ push bp \r
+ mov bp,sp \r
+ push si \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov si,0f442H \r
+ mov ah,47H \r
+ mov dx,word ptr 6[bp] \r
+ int 67H \r
+ or ah,ah \r
+ js L$84 \r
+ mov si,1 \r
+L$84:\r
+ mov ax,si \r
+ jmp L$85 \r
+L$85:\r
+ pop ds \r
+ pop si \r
+ pop bp \r
+ retf \r
+L$86:\r
+ push bp \r
+ mov bp,sp \r
+ push ds \r
+ mov ax,MEMORY_DATA \r
+ mov ds,ax \r
+ mov ah,48H \r
+ mov dx,word ptr 6[bp] \r
+ int 67H \r
+ pop ds \r
+ pop bp \r
+ retf \r
+MEMORY_TEXT ENDS\r
+MEMORY_DATA SEGMENT WORD PUBLIC USE16 'FAR_DATA'\r
+L$87:\r
+ DB 45H, 4dH, 4dH, 58H, 58H, 58H, 58H, 30H\r
+ DB 0, 0\r
+L$88:\r
+ DB 0FH DUP(0,0,0,0,0,0,0,0)\r
+ DB 0, 0, 0, 0, 0, 0, 0, 0\r
+L$89:\r
+ DB 0, 0\r
+\r
+MEMORY_DATA ENDS\r
+ END\r
--- /dev/null
+Error: Segment _TEXT exceeds 64K\r
+\r
+ Start Stop Length Name Class\r
+\r
+ 00000H 004F2H 004F3H MEMORY_TEXT CODE\r
+ 004F3H 40507H 40015H _TEXT CODE\r
+ 504F2H 5057DH 0008CH MEMORY_DATA FAR_DATA\r
+ 50580H 50581H 00002H FSBDTR5_FAR FAR_DATA\r
+ 50590H 50590H 00000H IOSTSTD5_FAR FAR_DATA\r
+ 50590H 505C3H 00034H IOSTSTD6_FAR FAR_DATA\r
+ 505D0H 505D0H 00000H IOSTSTD7_FAR FAR_DATA\r
+ 505D0H 50601H 00032H IOSTSTD8_FAR FAR_DATA\r
+ 50610H 50610H 00000H IOSTSTD9_FAR FAR_DATA\r
+ 50610H 50641H 00032H IOSTSTD10_FAR FAR_DATA\r
+ 50650H 50650H 00000H IOSTSTD11_FAR FAR_DATA\r
+ 50650H 50681H 00032H IOSTSTD12_FAR FAR_DATA\r
+ 50690H 50693H 00004H IOSTSTD13_FAR FAR_DATA\r
+ 506A0H 506A3H 00004H IOSTSTD14_FAR FAR_DATA\r
+ 506B0H 506B3H 00004H IOSTSTD15_FAR FAR_DATA\r
+ 506C0H 506C3H 00004H STDTR5_FAR FAR_DATA\r
+ 506D0H 506D3H 00004H STDTR6_FAR FAR_DATA\r
+ 506E0H 506E3H 00004H STDTR7_FAR FAR_DATA\r
+ 506F0H 506F3H 00004H STDTR8_FAR FAR_DATA\r
+ 50700H 50701H 00002H STDTR9_FAR FAR_DATA\r
+ 50710H 50713H 00004H STSYNC5_FAR FAR_DATA\r
+ 50720H 50723H 00004H STSYNC6_FAR FAR_DATA\r
+ 50730H 50733H 00004H STSYNC7_FAR FAR_DATA\r
+ 50734H 5161BH 00EE8H _DATA DATA\r
+ 5161CH 5161DH 00002H _CVTSEG DATA\r
+ 5161EH 51623H 00006H _SCNSEG DATA\r
+ 51624H 5164DH 0002AH _INIT_ INITDATA\r
+ 5164EH 51651H 00004H _BSS BSS\r
+ 51652H 5165DH 0000CH _EXIT_ EXITDATA\r
+\r
+\r