+++ /dev/null
-.387
- PUBLIC MX_SCREENWIDTH
- PUBLIC MX_SCREENHEIGHT
- PUBLIC MX_BYTESPERLINE
- PUBLIC MXSETMODE
- PUBLIC MXCHANGEMODE
- PUBLIC MXGETASPECT
- PUBLIC MXGETSCREENSIZE
- EXTRN MX_CODESEGMENT:BYTE
- EXTRN MXSETSYSCLIPREGION:BYTE
- EXTRN MX_VIDEOSEGMENT:BYTE
-MX_TEXT SEGMENT PARA PUBLIC USE16 'CODE'
- ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
-MX_SCREENWIDTH:
- add byte ptr [bx+si],al
-MX_SCREENHEIGHT:
- add byte ptr [bx+si],al
-L$1:
- add byte ptr [bx+si],al
-L$2:
- add byte ptr [bx+si],al
-MX_BYTESPERLINE:
- add byte ptr [bx+si],al
-L$3:
- or word ptr 14H[bx+si],ax
- add byte ptr [bx],dl
- jcxz L$4
-L$4:
- DB 0
-L$5:
- or word ptr 14H[bx+di],ax
- add byte ptr [bx],dl
- jcxz L$6
-L$6:
- DB 0
-L$7:
- add byte ptr 1[bx],bl
- dec di
- add dl,byte ptr 3[bx+si]
- add byte ptr [si],54H
- add ax,1380H
- sub byte ptr [bx+si],al
- DB 0
-L$8:
- add byte ptr 1[bp+di],ch
- pop cx
- add bl,byte ptr 3[bp+si]
- mov es,word ptr [si]
- pop si
- add ax,138aH
- sub ax,0
- push es
- mov di,1f07H
- adc byte ptr -7aefH[bp+di],al
- adc bl,byte ptr 15H[di]
- arpl word ptr ds:[0baH],dx
- DB 0
-L$9:
- push es
- DD ds:[7bfH]
- pushf
- adc word ptr -70eeH[bp],cx
- adc ax,1696H
- mov cx,0
-L$10:
- push es
- or ax,3e07H
- adc dl,ch
- adc word ptr -20eeH[si],cx
- adc ax,16e7H
- push es
- add byte ptr [bx+si],al
-L$11:
- add byte ptr 1[si],dh
- arpl word ptr [bp+si],ax
- add dx,word ptr fs:6804H[bx]
- add ax,695H
- xchg byte ptr [bx],al
- lock or word ptr 0fH[bx+si],sp
- xor word ptr [bx+si],dx
- pop bx
- adc word ptr 5712H[di],cx
- adc si,word ptr [bp+si]
- adc al,0
- adc ax,1660H
- adc byte ptr [bx],0e3H
- add byte ptr [bx+si],al
-L$12:
- arpl word ptr ds:[500H],ax
- add byte ptr 1[bx+si],al
- enter 1a00H,0
- DW offset L$9
- DW offset L$5
- add byte ptr [bx+si],al
- xor ax,word ptr [bp+di]
-L$13:
- jcxz L$14
- DB 0
-L$14:
- add word ptr [bx+si],ax
- inc ax
- add ax,si
- add byte ptr [bp+si],bl
- add byte ptr [bp+si],bl
- DW offset L$5
- add byte ptr [bx+si],al
- xor ax,word ptr [bp+di]
-L$15:
- arpl word ptr ds:[0a00H],ax
- add byte ptr 1[bx+si],al
- nop
- add word ptr [bp+si],bx
- add byte ptr [bp+si],cl
- DW offset L$3
- add byte ptr [bx+si],al
- xor ax,word ptr [bp+di]
-L$16:
- jcxz L$17
- DB 0
-L$17:
- add al,byte ptr [bx+si]
- inc ax
- add ax,sp
- DD L$18
-L$18:
- add byte ptr [bp+si],cl
- add byte ptr [bx+si],al
- add byte ptr [bp+di],dh
- DB 3
-L$19:
- sbb ax,word ptr [eax]
- adc al,0
- push 0c801H
- add byte ptr [bp+si],ch
- add byte ptr [bp+si],cl
- DW offset L$5
- add byte ptr [bx+si],al
- fadd dword ptr [bp+si]
-L$20:
- out 9,ax
- add byte ptr [bx+si],cl
- add byte ptr 1[bx+si],ch
- lock add byte ptr [bp+si],ch
- add byte ptr [bp+si],bl
- DW offset L$5
- add byte ptr [bx+si],al
- fadd dword ptr [bp+si]
-L$21:
- sbb ax,word ptr [eax]
- sub byte ptr [bx+si],al
- push 9001H
- add word ptr [bp+si],bp
- add byte ptr [bp+si],cl
- DW offset L$3
- add byte ptr [bx+si],al
- fadd dword ptr [bp+si]
-L$22:
- out 9,ax
- add byte ptr [bx+si],dl
- add byte ptr 1[bx+si],ch
- loopnz L$23
- DW offset L$8
-L$23 equ $-1
- DW offset L$10
- DW offset L$3
- add byte ptr [bx+si],al
- fadd dword ptr [bp+si]
-L$24:
- mov word ptr ds:[0],ax
- add byte ptr [bx+si],al
- inc ax
- add word ptr 1a00H[bx],bp
- add byte ptr [bp+si],bh
- add byte ptr [bp+si],dl
- add byte ptr [bx+si],al
- add byte ptr [bp+di],dh
- DB 3
-L$25:
- mov word ptr 0,ax
- add byte ptr [bx+si],al
- inc ax
- add word ptr 1a00H[bx],bp
- add byte ptr [bp+si],bh
- add byte ptr [bp+si],cl
- add byte ptr [bx+si],al
- add byte ptr [bp+di],dh
- DB 3
-L$26:
- cmpsw
- add byte ptr [bx+si],al
- add byte ptr [bx+si],al
- push 0e001H
- add word ptr [bp+si],bp
- add byte ptr [bp+si],bh
- add byte ptr [bp+si],dl
- add byte ptr [bx+si],al
- add al,bl
- DB 2
-L$27:
- cmpsw
- add byte ptr [bx+si],al
- add byte ptr [bx+si],al
- push 0e001H
- add word ptr [bp+si],bp
- add byte ptr [bp+si],bh
- add byte ptr [bp+si],cl
- add byte ptr [bx+si],al
- add al,bl
- DB 2
-L$28:
- out 1,ax
- add byte ptr [bp+si],al
- add byte ptr 5801H[bx+si],dl
- add ch,byte ptr [bp+si]
- add byte ptr [bx+si],al
- pop word ptr [bp+si]
-L$29:
- DW offset L$24
- DW offset L$12
- DW offset L$13
- DW offset L$25
- DW offset L$15
- DW offset L$16
- DW offset L$26
- DW offset L$19
- DW offset L$20
- DW offset L$27
- DW offset L$21
- DW offset L$22
- DW offset L$28
-L$30:
- mov ax,3
- int 10H
- mov word ptr MX_SCREENHEIGHT,0
- mov word ptr MX_BYTESPERLINE,0
- ret
-MXSETMODE:
- push bp
- mov bp,sp
- sub sp,0
- push ds
- push si
- push es
- push di
- mov ds,word ptr cs:MX_CODESEGMENT
- mov si,word ptr 6[bp]
- cmp si,0dH
- jbe L$31
- jmp near ptr L$36
-L$31:
- test si,si
- jne L$32
- call near ptr L$30
- jmp near ptr L$36
-L$32:
- dec si
- shl si,1
- mov si,word ptr L$29[si]
- cld
- push si
- mov ax,13H
- int 10H
- pop si
- mov dx,3c4H
- mov ax,604H
- out dx,ax
- mov ax,100H
- out dx,ax
- mov dx,3c2H
- lodsb
- out dx,al
- mov dx,3c4H
- mov ax,300H
- out dx,ax
- mov dx,3d4H
- mov al,11H
- out dx,al
- inc dx
- in al,dx
- and al,7fH
- out dx,al
- lodsw
- mov word ptr L$1,ax
- lodsw
- mov word ptr L$2,ax
- lodsw
- mov word ptr MX_SCREENWIDTH,ax
- shr ax,1
- shr ax,1
- mov word ptr MX_BYTESPERLINE,ax
- lodsw
- mov word ptr MX_SCREENHEIGHT,ax
- mov bx,si
- mov dx,3d4H
-L$33:
- mov si,word ptr [bx]
- inc bx
- inc bx
- test si,si
- je L$35
-L$34:
- lodsw
- test ax,ax
- je L$33
- out dx,ax
- jmp L$34
-L$35:
- push word ptr MX_SCREENWIDTH
- push word ptr [bx]
- push cs
- call near ptr MX_TEXT:MXSETSYSCLIPREGION
- mov dx,3c4H
- mov ax,0f02H
- out dx,ax
- mov es,word ptr MX_TEXT:MX_VIDEOSEGMENT
- xor di,di
- mov cx,8000H
- xor ax,ax
- rep stosw
- mov dx,3d4H
- mov al,11H
- out dx,al
- inc dx
- in al,dx
- or al,80H
- out dx,al
-L$36:
- xor ax,ax
- mov ax,word ptr MX_SCREENWIDTH
- pop di
- pop es
- pop si
- pop ds
- mov sp,bp
- pop bp
- retf 2
-MXCHANGEMODE:
- push bp
- mov bp,sp
- sub sp,0
- push ds
- push si
- push es
- push di
- mov ds,word ptr cs:MX_CODESEGMENT
- mov si,word ptr 6[bp]
- cmp si,0dH
- ja L$40
- test si,si
- je L$40
- dec si
- shl si,1
- mov si,word ptr L$29[si]
- cld
- mov dx,3c4H
- mov ax,604H
- out dx,ax
- mov ax,100H
- out dx,ax
- mov dx,3c2H
- lodsb
- out dx,al
- mov dx,3c4H
- mov ax,300H
- out dx,ax
- mov dx,3d4H
- mov al,11H
- out dx,al
- inc dx
- in al,dx
- and al,7fH
- out dx,al
- lodsw
- mov word ptr L$1,ax
- lodsw
- mov word ptr L$2,ax
- lodsw
- mov word ptr MX_SCREENWIDTH,ax
- lodsw
- mov word ptr MX_SCREENHEIGHT,ax
- mov bx,si
- mov dx,3d4H
-L$37:
- mov si,word ptr [bx]
- inc bx
- inc bx
- test si,si
- je L$39
-L$38:
- lodsw
- test ax,ax
- je L$37
- cmp al,13H
- je L$38
- out dx,ax
- jmp L$38
-L$39:
- mov dx,3d4H
- mov al,11H
- out dx,al
- inc dx
- in al,dx
- or al,80H
- out dx,al
-L$40:
- xor ax,ax
- mov ax,word ptr MX_SCREENWIDTH
- pop di
- pop es
- pop si
- pop ds
- mov sp,bp
- pop bp
- retf 2
-MXGETASPECT:
- push bp
- mov bp,sp
- sub sp,0
- push ds
- push si
- lds si,dword ptr 0aH[bp]
- mov ax,word ptr cs:L$1
- mov word ptr [si],ax
- lds si,dword ptr 6[bp]
- mov ax,word ptr cs:L$2
- mov word ptr [si],ax
- pop si
- pop ds
- mov sp,bp
- pop bp
- retf 8
-MXGETSCREENSIZE:
- push bp
- mov bp,sp
- sub sp,0
- push ds
- push si
- lds si,dword ptr 0aH[bp]
- mov ax,word ptr cs:MX_SCREENWIDTH
- mov word ptr [si],ax
- lds si,dword ptr 6[bp]
- mov ax,word ptr cs:MX_SCREENHEIGHT
- mov word ptr [si],ax
- pop si
- pop ds
- mov sp,bp
- pop bp
- retf 8
-MX_TEXT ENDS
- END