+++ /dev/null
-.387
- PUBLIC MXLINE
- EXTRN MX_BYTESPERLINE:BYTE
- EXTRN MX_VIDEOSEGMENT:BYTE
- EXTRN MX_CLIPX1:BYTE
- EXTRN MX_CLIPX2:BYTE
- EXTRN MX_CLIPY1:BYTE
- EXTRN MX_CLIPY2:BYTE
-MX_TEXT SEGMENT PARA PUBLIC USE16 'CODE'
- ASSUME CS:MX_TEXT, DS:DGROUP, SS:DGROUP
-L$1:
- DW offset L$29
- DW offset L$32
- DW offset L$35
- DW offset L$38
-MXLINE:
- push bp
- mov bp,sp
- sub sp,12H
- push ds
- push si
- push di
- mov ax,word ptr 10H[bp]
- mov bx,word ptr 0eH[bp]
- mov cx,word ptr 0cH[bp]
- mov dx,word ptr 0aH[bp]
- call near ptr L$8
- jae L$2
- jmp near ptr L$7
-L$2:
- mov si,cx
- xchg ax,si
- sub ax,si
- jge L$3
- xchg cx,si
- xchg dx,bx
- neg ax
-L$3:
- mov word ptr -2[bp],ax
- mov cx,word ptr cs:MX_BYTESPERLINE
- mov ax,dx
- sub ax,bx
- jge L$4
- neg cx
- neg ax
-L$4:
- mov word ptr -4[bp],ax
- mov word ptr -0cH[bp],cx
- mov ax,bx
- mul word ptr cs:MX_BYTESPERLINE
- mov cx,si
- shr si,1
- shr si,1
- add si,ax
- and cl,3
- mov ax,1102H
- shl ah,cl
- mov byte ptr -12H[bp],ah
- mov dx,3c4H
- out dx,ax
- mov ax,word ptr cs:MX_VIDEOSEGMENT
- mov ds,ax
- xor bx,bx
- mov al,byte ptr 6[bp]
- cmp al,0
- je L$5
- and al,3
- shl al,1
- shl al,1
- shl al,1
- mov ah,al
- mov al,3
- mov dx,3ceH
- out dx,ax
- inc bx
- inc bx
-L$5:
- mov ax,word ptr -2[bp]
- mov cx,word ptr -4[bp]
- cmp ax,cx
- jae L$6
- inc bx
-L$6:
- shl bx,1
- call word ptr cs:L$1[bx]
- cmp byte ptr 6[bp],0
- je L$7
- mov ax,3
- mov dx,3ceH
- out dx,ax
-L$7:
- xor ax,ax
- pop di
- pop si
- pop ds
- mov sp,bp
- pop bp
- retf 0cH
-L$8:
- mov di,ax
- mov si,dx
- xor al,al
- cmp cx,word ptr cs:MX_CLIPX1
- jge L$9
- or al,1
-L$9:
- cmp cx,word ptr cs:MX_CLIPX2
- jle L$10
- or al,2
-L$10:
- cmp si,word ptr cs:MX_CLIPY1
- jge L$11
- or al,4
-L$11:
- cmp si,word ptr cs:MX_CLIPY2
- jle L$12
- or al,8
-L$12:
- mov byte ptr -10H[bp],al
- xor al,al
- cmp di,word ptr cs:MX_CLIPX1
- jge L$13
- or al,1
-L$13:
- cmp di,word ptr cs:MX_CLIPX2
- jle L$14
- or al,2
-L$14:
- cmp bx,word ptr cs:MX_CLIPY1
- jge L$15
- or al,4
-L$15:
- cmp bx,word ptr cs:MX_CLIPY2
- jle L$16
- or al,8
-L$16:
- mov byte ptr -0eH[bp],al
- mov ah,byte ptr -10H[bp]
- test ah,al
- je L$17
- jmp near ptr L$28
-L$17:
- or ah,al
- jne L$18
- jmp near ptr L$27
-L$18:
- mov ax,cx
- sub ax,di
- mov word ptr -0aH[bp],ax
- mov ax,si
- sub ax,bx
- mov word ptr -0cH[bp],ax
- mov al,byte ptr -0eH[bp]
-L$19:
- test al,al
- jne L$20
- xchg di,cx
- xchg si,bx
- xchg byte ptr -10H[bp],al
-L$20:
- test al,1
- je L$21
- mov ax,word ptr cs:MX_CLIPX1
- sub ax,di
- mov di,word ptr cs:MX_CLIPX1
- jmp L$22
-L$21:
- test al,2
- je L$23
- mov ax,word ptr cs:MX_CLIPX2
- sub ax,di
- mov di,word ptr cs:MX_CLIPX2
-L$22:
- imul word ptr -0cH[bp]
- idiv word ptr -0aH[bp]
- add bx,ax
- mov al,8
- cmp bx,word ptr cs:MX_CLIPY2
- jg L$26
- mov al,4
- cmp bx,word ptr cs:MX_CLIPY1
- jl L$26
- xor al,al
- jmp L$26
-L$23:
- test al,4
- je L$24
- mov ax,word ptr cs:MX_CLIPY1
- sub ax,bx
- mov bx,word ptr cs:MX_CLIPY1
- jmp L$25
-L$24:
- mov ax,word ptr cs:MX_CLIPY2
- sub ax,bx
- mov bx,word ptr cs:MX_CLIPY2
-L$25:
- imul word ptr -0aH[bp]
- idiv word ptr -0cH[bp]
- add di,ax
- mov al,1
- cmp di,word ptr cs:MX_CLIPX1
- jl L$26
- mov al,2
- cmp di,word ptr cs:MX_CLIPX2
- jg L$26
- xor al,al
-L$26:
- mov ah,byte ptr -10H[bp]
- test ah,al
- jne L$28
- or ah,al
- je L$27
- jmp near ptr L$19
-L$27:
- mov ax,di
- mov dx,si
- clc
- ret
-L$28:
- stc
- ret
-L$29:
- mov di,ax
- neg di
- shl cx,1
- mov word ptr -6[bp],cx
- mov cx,ax
- shl ax,1
- mov word ptr -8[bp],ax
- mov al,2
- mov ah,byte ptr -12H[bp]
- mov bl,byte ptr 8[bp]
- mov dx,3c4H
- inc cx
-L$30:
- mov byte ptr [si],bl
- dec cx
- je L$31
- rol ah,1
- adc si,0
- out dx,ax
- add di,word ptr -6[bp]
- jl L$30
- add si,word ptr -0cH[bp]
- sub di,word ptr -8[bp]
- jmp L$30
-L$31:
- ret
-L$32:
- mov di,cx
- neg di
- shl ax,1
- mov word ptr -6[bp],ax
- mov ax,cx
- shl ax,1
- mov word ptr -8[bp],ax
- mov bl,byte ptr 8[bp]
- mov ah,byte ptr -12H[bp]
- mov al,2
- mov dx,3c4H
- inc cx
-L$33:
- mov byte ptr [si],bl
- dec cx
- je L$34
- add si,word ptr -0cH[bp]
- add di,word ptr -6[bp]
- jl L$33
- rol ah,1
- adc si,0
- out dx,ax
- sub di,word ptr -8[bp]
- jmp L$33
-L$34:
- ret
-L$35:
- mov di,ax
- neg di
- shl cx,1
- mov word ptr -6[bp],cx
- mov cx,ax
- shl ax,1
- mov word ptr -8[bp],ax
- mov al,2
- mov ah,byte ptr -12H[bp]
- mov bl,byte ptr 8[bp]
- mov dx,3c4H
- inc cx
-L$36:
- mov bh,byte ptr [si]
- mov byte ptr [si],bl
- dec cx
- je L$37
- rol ah,1
- adc si,0
- out dx,ax
- add di,word ptr -6[bp]
- jl L$36
- add si,word ptr -0cH[bp]
- sub di,word ptr -8[bp]
- jmp L$36
-L$37:
- ret
-L$38:
- mov di,cx
- neg di
- shl ax,1
- mov word ptr -6[bp],ax
- mov ax,cx
- shl ax,1
- mov word ptr -8[bp],ax
- mov bl,byte ptr 8[bp]
- mov ah,byte ptr -12H[bp]
- mov al,2
- mov dx,3c4H
- inc cx
-L$39:
- mov bh,byte ptr [si]
- mov byte ptr [si],bl
- dec cx
- je L$40
- add si,word ptr -0cH[bp]
- add di,word ptr -6[bp]
- jl L$39
- rol ah,1
- adc si,0
- out dx,ax
- sub di,word ptr -8[bp]
- jmp L$39
-L$40:
- ret
-MX_TEXT ENDS
- END