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>