home *** CD-ROM | disk | FTP | other *** search
- TITLE Corona graphics module
- ; Colin Kelley
- ; January 1987
-
- include header.mac
-
- if1
- include lineproc.mac
- endif
-
-
- _text segment
-
- public _GrInit,_GrReset,_GrOnly,_TxOnly,_GrandTx,_Cor_line,_Cor_mask
-
- corpixel proc near
- ror word ptr linemask,1
- jc cont
- ret
- cont: push bp
- mov bp,sp
- push ax
- push bx
- push cx
- mov es,ScSeg
- shl bx,1 ; y
- mov bx,word ptr LookUp[bx] ; bx has y mem address
- mov cl,al ; x
- and cl,7
- shr ax,1
- shr ax,1
- shr ax,1 ; ax /= 8
- add bx,ax
- mov al,1
- shl al,cl ; al contains bit mask
- or byte ptr es:[bx],al
- pop cx
- pop bx
- pop ax
- pop bp
- ret
-
- lineproc _Cor_line, corpixel
-
- beginproc _GrInit
- push bp
- mov bp,sp
- push di
- mov ax, [bp+X] ; screen number (0 - 7)
- mov cl,11
- shl ax,cl ; multiply by 2048 to get segment
- mov ScSeg,ax ; save segment for later
- push ax
- mov es, ax
- xor ax,ax
- mov di,ax
- mov cx, 4000h
- cld
- rep stosw
- pop cx
- call near ptr GrAddr
- mov ax,es
- pop di
- pop bp
- ret
- _GrInit endp
-
- beginproc _GrReset
- mov cx, 0
- call near ptr GrAddr
- ret
- _GrReset endp
-
- GrAddr proc near
- mov dx,3b4h ; address of 6845
- mov al,0ch ; register 12
- out dx,al
- inc dx
- mov al,ch ; Graphics Segment High
- out dx,al
- dec dx
- mov al,0dh ; register 13
- out dx,al
- mov al,cl ; Graphics Segment Low
- inc dx
- out dx,al
- ret
- GrAddr endp
-
- beginproc _GrOnly
- mov dx,3b8h
- mov al,0a0h
- out dx,al
- ret
- _GrOnly endp
-
- beginproc _TxOnly
- mov dx,3b8h
- mov al,28h
- out dx,al
- ret
- _TxOnly endp
-
- beginproc _GrandTx
- mov dx,3b8h
- mov al,0a8h
- out dx,al
- ret
- _GrandTx endp
-
- beginproc _Cor_mask
- push bp
- mov bp,sp
- mov ax,[bp+x] ; mask
- mov linemask,ax
- pop bp
- ret
- _Cor_mask endp
-
- corpixel endp
-
- _text ends
-
-
- _data segment
- linemask dw -1
- ScSeg dw 0
- _data ends
-
- const segment
-
- K equ 1024
-
- mem_mac MACRO x
- 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
- dw 18*K+x,20*K+x,22*K+x,24*K+x
- ENDM
- LookUp equ $
- mem_mac 0
- mem_mac 80
- mem_mac (80*2)
- mem_mac (80*3)
- mem_mac (80*4)
- mem_mac (80*5)
- mem_mac (80*6)
- mem_mac (80*7)
- mem_mac (80*8)
- mem_mac (80*9)
- mem_mac (80*10)
- mem_mac (80*11)
- mem_mac (80*12)
- mem_mac (80*13)
- mem_mac (80*14)
- mem_mac (80*15)
- mem_mac (80*16)
- mem_mac (80*17)
- mem_mac (80*18)
- mem_mac (80*19)
- mem_mac (80*20)
- mem_mac (80*21)
- mem_mac (80*22)
- mem_mac (80*23)
- mem_mac (80*24)
-
- const ends
-
- end