53 lines
2.2 KiB
Plaintext
53 lines
2.2 KiB
Plaintext
| Copyright (c) 1985 by Sun Microsystems, Inc.
|
|
| @(#)cgi.vp.u 1.1 94/10/31 SMI
|
|
|
|
#define zbdcln r[25]
|
|
#define outptr r[14]
|
|
#define countr r[10]
|
|
|
|
|
|
| negw d,countr; shmem->am; jmap CGI_LINE; ;
|
|
CGI_LINE: addw frameptr,TEX_FRMOFF,y; ; ; ; |
|
|
IMM; am->shmemp; cjs, go tvec_attr; ; | Texture addr->scrmemp
|
|
addw frameptr,VWPXSCL_FRMOFF,y; ; ldct 3; ; |
|
|
IMM; am->shmemp; cjp, go cgiv2; ; |
|
|
|
|
|
|
| negw d,countr; shmem->am; jmap CGIVEC; ;
|
|
CGIVEC: movw frameptr,y; am->shmemp; cjs,go vec_attr;;
|
|
; VWPXSCL_FRMOFF->am;; ;
|
|
addw d,frameptr,y; am->shmemp; ldct 3; ; | shmemp <- addr of vwp params
|
|
cgiv2: mov2nw 5,y; am->fpdp; cjs,go shm_to_fpr; ; | move viewport parameters to fpr[32]
|
|
add2nw 1,cmdptr; am->shmemp; ldct 3; ; | shmemp <- (cmdptr += 2)
|
|
#ifdef GPPLUS
|
|
movw PPSETZBLINE,acc; ; ; ; | disable z buffered lines on pp
|
|
IMM; am->fifo1; cjs,f1f wrfifo; ; |
|
|
movw 0,zbdcln; am->fifo1; cjp,f1f .; ; | set zbdcln = 0
|
|
#endif GPPLUS
|
|
nxtcgivec: mov2nw 6,y; am->fpdp; cjs,go shm_to_fpr;; | move vector endpoints to fpr[64]
|
|
mov2nw 6,outptr; am->fpap; ; lmode rn,ai,pipe,fast; | fpap <- addr of endpoints; pipe mode
|
|
mov2nw 1,y; am->brreg; ; floata,la,hi; | convert x0 to float; brreg <- 2
|
|
add2nw 2,outptr; ; push,go; ; ap+ | outptr <- 68, put vwpscld pts at fpr[68]
|
|
movw =vwpsv2,y; ; ; floata,la,hi; | convert y0, x1, and y1
|
|
IMM; am->brreg; rfct; ; ap+ | brreg pts to routine to finish vwp scale
|
|
; ; ; pa,a,hi; | pipeline advance
|
|
mov2nw 5,acc; am->fpbp; ; ; | fpbp <- &VWPXSCL
|
|
; ; ; mabr,lab,a,hi; | x0 * VWPXSCL
|
|
add2nw 1,acc; am->fpbp; ; ;
|
|
; ; ; mabr,lab,a,hi; | y0 * VWPYSCL
|
|
sub2nw 1,acc; am->fpbp; ; ;
|
|
; ; ; mabr,lab,a,hi; | x1 * VWPXSCL
|
|
add2nw 1,acc; am->fpbp; ; ;
|
|
; ; ; mabr,lab,hi; | y1 * VWPYSCL
|
|
sub2nw 0,acc; am->fpbp; cjs,go; ; | call vwpsv2 to finish vwp scale and send
|
|
| vector to PP; outptr==68,fpbp<-&VWPXOFF
|
|
incw,s countr,countr; ; ldct 3; ; | reload 2910 R reg,increment loop counter
|
|
add2nw 3,cmdptr; am->shmemp; cjp,~zer nxtcgivec;; | shmemp<-(cmdptr += 8),loop if more vecs
|
|
; ; jmap getcmd; ; | jump to cmd loop
|
|
|
|
|
|
|
|
#undef outptr
|
|
#undef countr
|
|
#undef zbdcln
|