home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / canada-remote-systems / geos / document / orbitmp.prg (.txt) < prev    next >
Encoding:
GEOS ConVerT  |  2019-04-13  |  3.0 KB  |  80 lines

  1. ORBitmapUp
  2. PRG formatted GEOS file V1.0
  3. Epson MX-80
  4. COLORUTILS
  5. BLASTER'S CONVERTER V2.5
  6. LF.POEM
  7. LFP.SEA
  8. Write Image V2.0
  9. geoWrite    V2.1
  10. ;ORBitmapUp performs a BitmapUp-type operation, but instead of overwriting the forground screen, it
  11. ;merges the new bitmap with whatever is currently on the foreground screen.
  12. ;ORBitmapUp takes the same parameters as the normal BitmapUp, but for proper operation R1H should be
  13. ;on a card boundry (which means it should be a multiple of 8).  ALL registers a    
  14.  preserved, and that
  15. ;means R0-R15, A0-A15, a,x,y.
  16. ;NOTE!  ORBitmapUp REQUIRES that the file 'rsave.rel' be linked in along with 'ORBitmapUp.rel'!!
  17. ;AUTHOR: Kent L. Smotherman, July 1992 (Kent LS on Q-Link)
  18.     .noeqin
  19.     .noglbl
  20.     .if    Pass1
  21.     .include    geosSym
  22.     .include    geosMac
  23.     .endif
  24.     .eqin
  25.     .glbl
  26. ORBitmapUp:    jsr    saveall    ;rsave.rel rout
  27.     .noeqin
  28.     .noglbl
  29.     .if    Pass1
  30.     .include    geosSym
  31.     .include    geosMac
  32.     .endif
  33.     .eqin
  34.     .glbl
  35. ORBitmapUp:    jsr    sav    
  36. ll    ;rsave.rel routine
  37.     lda    dispBuff    ;remember
  38.     LoadB    dispBuff,#ST_WR_BACK    ;bring in bitmap to background
  39.     jsr    BitmapUp
  40.     LoadB    dispBuff,#ST_WR_FORE | ST_WR_BACK ;need this for GetScanLine!
  41.     ldx    r0save+3    ;really r1H
  42.     jsr    GetScanLine    ;address screen ram
  43.     lda    r0save+2    ;really r1L
  44.     asl    a    ;convert byte to pixel
  45.     asl    a    ;-by multiplying by 8
  46.     asl    a    ;-(which is the same as 3 shift lefts)
  47.     pha        ;remember
  48.     adc    r5L    ;add in forground screen address for top of bitmap
  49.     sta    r5L    ;=
  50.     lda    r5H    ;=
  51.     adc    #0    ;=
  52.     sta    r5    
  53.     pla        ;recall
  54.     adc    r6L    ;do the same for background screen address
  55.     sta    r6L    ;=
  56.     lda    r6H    ;=
  57.     adc    #0    ;=
  58.     sta    r6H    ;=
  59.     lda    r0save+5    ;reall r2H
  60.     lsr    a    ;convert bitmap height to bytes
  61.     lsr    a    ;by dividing by 8
  62.     lsr    a    ;(save as 3 right shifts)
  63.     sta    r2H
  64. 2$:    ldy    #0
  65.     MoveB    r0save+4,r2L
  66. 1$:    ldx    #8
  67. 0$:    lda    (r5),y
  68.     ora    (r6),y    ;OR the background into the foreground
  69.     sta    (r5),y
  70.     bne    0$    ;do one card at a time
  71.     dec    r2L
  72.     bne    1$    ;for the defined width of the bitmap
  73.     AddVW    #320,r5    ;next card address in forgro    
  74.     AddVW    #320,r6    ;next card address in background
  75.     dec    r2H
  76.     bne    2$    ;do for defined BYTE height of bitmap
  77.     pla        ;restore dispBuff
  78.     sta    dispBuff
  79.     jmp    loadall    ;restore all regs and return via RTS in loadall
  80.