[BACK]Return to corgraph.asm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gnuplot

Annotation of OpenXM_contrib/gnuplot/corgraph.asm, Revision 1.1

1.1     ! maekawa     1: TITLE  Corona graphics module
        !             2: ;      Colin Kelley
        !             3: ;      January 1987
        !             4:
        !             5: include header.mac
        !             6:
        !             7: if1
        !             8: include lineproc.mac
        !             9: endif
        !            10:
        !            11:
        !            12: _text  segment
        !            13:
        !            14: public _GrInit,_GrReset,_GrOnly,_TxOnly,_GrandTx,_Cor_line,_Cor_mask
        !            15:
        !            16: corpixel proc near
        !            17:        ror word ptr linemask,1
        !            18:        jc cont
        !            19:        ret
        !            20: cont:  push bp
        !            21:        mov bp,sp
        !            22:        push ax
        !            23:        push bx
        !            24:        push cx
        !            25:        mov es,ScSeg
        !            26:        shl bx,1                        ; y
        !            27:        mov bx,word ptr LookUp[bx] ; bx has y mem address
        !            28:        mov cl,al                       ; x
        !            29:        and cl,7
        !            30:        shr ax,1
        !            31:        shr ax,1
        !            32:        shr ax,1                        ; ax /= 8
        !            33:        add bx,ax
        !            34:        mov al,1
        !            35:        shl al,cl                       ; al contains bit mask
        !            36:        or byte ptr es:[bx],al
        !            37:        pop cx
        !            38:        pop bx
        !            39:        pop ax
        !            40:        pop bp
        !            41:        ret
        !            42:
        !            43: lineproc _Cor_line, corpixel
        !            44:
        !            45: beginproc _GrInit
        !            46:        push bp
        !            47:        mov bp,sp
        !            48:        push di
        !            49:        mov ax, [bp+X]                  ; screen number (0 - 7)
        !            50:        mov cl,11
        !            51:        shl ax,cl                       ; multiply by 2048 to get segment
        !            52:        mov ScSeg,ax                    ; save segment for later
        !            53:        push ax
        !            54:        mov es, ax
        !            55:        xor ax,ax
        !            56:        mov di,ax
        !            57:        mov cx, 4000h
        !            58:        cld
        !            59:        rep stosw
        !            60:        pop cx
        !            61:        call near ptr GrAddr
        !            62:        mov ax,es
        !            63:        pop di
        !            64:        pop bp
        !            65:        ret
        !            66: _GrInit        endp
        !            67:
        !            68: beginproc _GrReset
        !            69:        mov cx, 0
        !            70:        call near ptr GrAddr
        !            71:        ret
        !            72: _GrReset endp
        !            73:
        !            74: GrAddr proc near
        !            75:        mov dx,3b4h                     ; address of 6845
        !            76:        mov al,0ch                      ; register 12
        !            77:        out dx,al
        !            78:        inc dx
        !            79:        mov al,ch                       ; Graphics Segment High
        !            80:        out dx,al
        !            81:        dec dx
        !            82:        mov al,0dh                      ; register 13
        !            83:        out dx,al
        !            84:        mov al,cl                       ; Graphics Segment Low
        !            85:        inc dx
        !            86:        out dx,al
        !            87:        ret
        !            88: GrAddr endp
        !            89:
        !            90: beginproc _GrOnly
        !            91:        mov dx,3b8h
        !            92:        mov al,0a0h
        !            93:        out dx,al
        !            94:        ret
        !            95: _GrOnly        endp
        !            96:
        !            97: beginproc _TxOnly
        !            98:        mov dx,3b8h
        !            99:        mov al,28h
        !           100:        out dx,al
        !           101:        ret
        !           102: _TxOnly        endp
        !           103:
        !           104: beginproc _GrandTx
        !           105:        mov dx,3b8h
        !           106:        mov al,0a8h
        !           107:        out dx,al
        !           108:        ret
        !           109: _GrandTx endp
        !           110:
        !           111: beginproc _Cor_mask
        !           112:        push bp
        !           113:        mov bp,sp
        !           114:        mov ax,[bp+x]                   ; mask
        !           115:        mov linemask,ax
        !           116:        pop bp
        !           117:        ret
        !           118: _Cor_mask endp
        !           119:
        !           120: corpixel endp
        !           121:
        !           122: _text  ends
        !           123:
        !           124:
        !           125: _data  segment
        !           126: linemask dw -1
        !           127: ScSeg  dw 0
        !           128: _data  ends
        !           129:
        !           130: const  segment
        !           131:
        !           132: K      equ 1024
        !           133:
        !           134: mem_mac        MACRO x
        !           135:        dw x,2*K+x,4*K+x,6*K+x,8*K+x,10*K+x,12*K+x,14*K+x,16*K+x
        !           136:        dw 18*K+x,20*K+x,22*K+x,24*K+x
        !           137:        ENDM
        !           138: LookUp equ $
        !           139:        mem_mac 0
        !           140:        mem_mac 80
        !           141:        mem_mac (80*2)
        !           142:        mem_mac (80*3)
        !           143:        mem_mac (80*4)
        !           144:        mem_mac (80*5)
        !           145:        mem_mac (80*6)
        !           146:        mem_mac (80*7)
        !           147:        mem_mac (80*8)
        !           148:        mem_mac (80*9)
        !           149:        mem_mac (80*10)
        !           150:        mem_mac (80*11)
        !           151:        mem_mac (80*12)
        !           152:        mem_mac (80*13)
        !           153:        mem_mac (80*14)
        !           154:        mem_mac (80*15)
        !           155:        mem_mac (80*16)
        !           156:        mem_mac (80*17)
        !           157:        mem_mac (80*18)
        !           158:        mem_mac (80*19)
        !           159:        mem_mac (80*20)
        !           160:        mem_mac (80*21)
        !           161:        mem_mac (80*22)
        !           162:        mem_mac (80*23)
        !           163:        mem_mac (80*24)
        !           164:
        !           165: const  ends
        !           166:
        !           167:        end

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>