[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

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>