Mercurial > hg > Members > kono > nitros9-code
diff 3rdparty/utils/view/view_clp.a @ 1706:6b23465701c0
Tim Kientzle's VIEW
author | boisy |
---|---|
date | Tue, 10 Aug 2004 23:46:24 +0000 |
parents | |
children | b7fb6a9aead4 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/3rdparty/utils/view/view_clp.a Tue Aug 10 23:46:24 2004 +0000 @@ -0,0 +1,130 @@ +* +* +* CLP format display, and PUB format +* + + ifp1 + use /dd/defs/os9defs.a + endc + + psect view_clp_a,0,0,0,0,0 + + vsect +gpload fcb $1b,$2b,0,2,0,0,0,0,0,0,0 +putblk fcb $1b,$2d,0,2,0,0,0,0 +size rmb 2 + endsect + +pals fcb $3f,$09,$00,$12,$24,$36,$2d,$1b Same as OS9 default palettes + fcb $3f,$09,$00,$12,$24,$36,$2d,$1b + +CLPshowpic: +* Set up some miscellaneous vars + lda #8 + sta <cyclestart + lda #15 + sta <cycleend + ldd #5 + std <cyclerate + lda #0 + sta <extranum + +* Set the palettes + ldb #16 + leax pals,pcr + leau palette,y +paloop + lda ,x+ + sta ,u+ + decb + bne paloop + +* Set up the GPLoad command parameters. + leax gpload,y + +* PUB format? + lda <format + cmpa #PUBFormat + bne noPUB + ldb #4 + leau PUBstuff,pcr +PUBloop + lda ,u+ + sta b,x + incb + cmpb #11 + bne PUBloop + bra dogpload + +* PUB format clips are type 5, 80x40, 400 bytes. +PUBstuff fcb 5,0,80,0,40,1,$90 + +noPUB + +* Handle CLP format. + ldb #4 Start with byte 5 in GPLoad command. +headloop + lbsr I_GetByte Get remainder of GPLoad header. + lbcs _error + sta b,x + incb + cmpb #11 + bne headloop + +dogpload + lda <PID Use PID for buffer number. + sta 2,x + + lda 4,x Set screen type. + sta <type + lbsr setscreen + lbsr setpals + + ldd 9,x Set size of buffer. + std size + + pshs y + ldy #11 Send the GPLoad. + lda <outpath + os9 I$Write + puls y + + pshs y Now copy buffer contents to screen. + leax linebuff,y +loop + ldd size Read size bytes... + beq loopend + cmpd #$100 ... But not more than 256 at a time. + bhi toobig + ldd #$100 +toobig + tfr d,y + lbsr I_Read Get it. + bcs looperr Exit on error or EOF. + pshs y + ldd size Count down the size to copy. + subd ,s++ + std size + lda <outpath + os9 I$Write Output it to screen + bra loop + +looperr + cmpb #E$EOF + lbne _error + +loopend + puls y + leax putblk,y + lda <PID + sta 2,x + lda <outpath + pshs y + ldy #8 + os9 I$Write + lbcs _error + puls y + + rts + + endsect