ORBitmapUp\  PRG formatted GEOS file V1.0 @3Epson MX-80ևևȘe`y COLORUTILSBLASTER'S CONVERTER V2.5 rLF.POEMLFP.SEAAWrite Image V2.0geoWrite V2.1  ...݅ ( >1 59 ..  9 < <` " . r " `(@1ʎsAڢ9 V&]d@h ;ORBitmapUp performs a BitmapUp-type operation, but instead of overwriting the forground screen, it ;merges the new bitmap with whatever is currently on the foreground screen. ;ORBitmapUp takes the same parameters as the normal BitmapUp, but for proper operation R1H should be ;on a card boundry (which means it should be a multiple of 8). ALL registers are preserved, and that ;means R0-R15, A0-A15, a,x,y. ;NOTE! ORBitmapUp REQUIRES that the file 'rsave.rel' be linked in along with 'ORBitmapUp.rel'!! ;AUTHOR: Kent L. Smotherman, July 1992 (Kent LS on Q-Link) h@h0 .noeqin .noglbl .if Pass1 .include geosSym .include geosMac .endif .eqin .glbl ORBitmapUp: jsr saveall ;rsave.rel rout@h0 .noeqin .noglbl .if Pass1 .include geosSym .include geosMac .endif .eqin .glbl ORBitmapUp: jsr saveall ;rsave.rel routine lda dispBuff ;remember pha LoadB dispBuff,#ST_WR_BACK ;bring in bitmap to background jsr BitmapUp LoadB dispBuff,#ST_WR_FORE | ST_WR_BACK ;need this for GetScanLine! ldx r0save+3 ;really r1H jsr GetScanLine ;address screen ram lda r0save+2 ;really r1L asl a ;convert byte to pixel asl a ;-by multiplying by 8 asl a ;-(which is the same as 3 shift lefts) pha ;remember clc adc r5L ;add in forground screen address for top of bitmap sta r5L ;= lda r5H ;= adc #0 ;= sta r5H ;= pla ;recall clc adc r6L ;do the same for background screen address sta r6L ;= lda r6H ;= adc #0 ;= sta r6H ;= lda r0save+5 ;reall r2H lsr a ;convert bitmap height to bytes lsr a ;by dividing by 8 lsr a ;(save as 3 right shifts) sta r2H 2$: ldy #0 MoveB r0save+4,r2L 1$: ldx #8 0$: lda (r5),y ora (r6),y ;OR the background into the foreground sta (r5),y iny dex bne 0$ ;do one card at a time dec r2L bne 1$ ;for the defined width of the bitmap AddVW #320,r5 ;next card address in forground AddVW #320,r6 ;next card address in background dec r2H bne 2$ ;do for defined BYTE height of bitmap pla ;restore dispBuff sta dispBuff jmp loadall ;restore all regs and return via RTS in loadall