[comp.sys.apple] Saving SHR screen from p8

throoph@jacobs.CS.ORST.EDU (Henry Throop) (10/03/89)

Is there some way to save the SHR screen from ProDOS 8, so it can be loaded
into a paint program and modified?  I have tried moving the SHR screen buffer
($e1/2000-$e1/9fff) down to bank 0 and saving it as type $C1, and tried
rebooting to P16 and using a screen saver DA.  Both of these almost work,
but for some reason when I load the resulting file, it has about 6 small
copies of the screen on the image, and the palette is messed up.  Anybody
know what's happening?

Also, I've noticed that after G)oing to a subroutine from the monitor
and returning with an RTS, the registers (ctrl-e) are not what they should
be at the end of the program.  Ending with a BRK 00 gets them right,
but that's probably nor a good idea.

Thanks for any help

---
Henry Throop
Internet: throoph@jacobs.cs.orst.edu

dseah@wpi.wpi.edu (David I Seah) (10/03/89)

In article <12831@orstcs.CS.ORST.EDU> throoph@jacobs.CS.ORST.EDU.UUCP (Henry Throop) writes:
>
>Is there some way to save the SHR screen from ProDOS 8, so it can be loaded
>into a paint program and modified?  I have tried moving the SHR screen buffer
>($e1/2000-$e1/9fff) down to bank 0 and saving it as type $C1, and tried
>rebooting to P16 and using a screen saver DA.  Both of these almost work,
>but for some reason when I load the resulting file, it has about 6 small
>copies of the screen on the image, and the palette is messed up.  Anybody
>know what's happening?

Perhaps you forgot to linearize the screen buffer before moving the picture
from bank $e1.  You can do this by storing a $41 in $e0c029 before moving the
picture.  Things ought to work just fine then.

]CALL-151

*C029:41
*00/1000<E1/2000.9FFFM
*CREATE PIC,T$C1
*BSAVE PIC,A$1000,L$7FFF
-- 
Dave Seah | O M N I D Y N E  S Y S T E M S - M |   Internet: dseah@wpi.wpi.edu 
          |   User Friendly Killing Machines   |   America Online: AFC DaveS
   "MY GOD! I HAVE POCKETS!!! I CAN'T BELIEVE IT! I HAVE POCKETS!!" - Tick

dlyons@Apple.COM (David Lyons) (10/04/89)

In article <4473@wpi.wpi.edu> dseah@wpi.wpi.edu (David I Seah) writes:
>In article <12831@orstcs.CS.ORST.EDU> throoph@jacobs.CS.ORST.EDU.UUCP (Henry Throop) writes:
>>
>>Is there some way to save the SHR screen from ProDOS 8, so it can be loaded
>>into a paint program and modified?
>>[...] for some reason when I load the resulting file, it has about 6 small
>>copies of the screen on the image, and the palette is messed up.
>
>Perhaps you forgot to linearize the screen buffer before moving the picture
>from bank $e1.  You can do this by storing a $41 in $e0c029 before moving the
>picture.  Things ought to work just fine then.

Yup, the linearization bit is what's causing you trouble here.  Please note
that if you're writing a program that fiddles with $C029, you should *not*
store hard-coded values directly in there--there are *reserved* bits there
that you must not alter.  In a program, you need to use LDA/ORA/STA, or
LDA/AND/STA, or LDA/TSB, or LDA/TRB, or whatever.
-- 

 --Dave Lyons, Apple Computer, Inc.          |   DAL Systems
   AppleLink--Apple Edition: DAVE.LYONS      |   P.O. Box 875
   America Online: Dave Lyons                |   Cupertino, CA 95015-0875
   GEnie: D.LYONS2 or DAVE.LYONS         CompuServe: 72177,3233
   Internet/BITNET:  dlyons@apple.com    UUCP:  ...!ames!apple!dlyons

   My opinions are my own, not Apple's.

lmb7421@ultb.UUCP (L.M. Barstow) (10/04/89)

In article <12831@orstcs.CS.ORST.EDU> throoph@jacobs.CS.ORST.EDU.UUCP (Henry Throop) writes:
>
>Is there some way to save the SHR screen from ProDOS 8, so it can be loaded
>into a paint program and modified?  I have tried moving the SHR screen buffer
>($e1/2000-$e1/9fff) down to bank 0 and saving it as type $C1, and tried
>but for some reason when I load the resulting file, it has about 6 small
>copies of the screen on the image, and the palette is messed up.  Anybody
>know what's happening?

You almost had it.  When you load the picture back in, and when you save
it, make sure the interlacing is *off*...this means storing a $C1 in
$C029 before saving and before loading.  Also, I think you have to split
the load and the save into two parts....

So a load would be:

POKE 49193,193
BLOAD PIC.SHR,a$2000,l$4000
CALL moveroutine :REM a routine which moves memory from 00/2000..00/5fff
to e1/2000..e1/5fff

BLOAD PIC.SHR,a$2000,b$4000
CALL moveroutine1 : REM a routine which moves memory from
00/2000..00/5fff to e1/6000..e1/9fff

GET A$ :REM wait for key
POKE 49193,1

(Don't forget to add <CTRL-D> to all BLOADs, etc...this was only a quick
reply.)

-- 
Les Barstow                              **All of the paths work!!!!**
LMB7421@RITVAX.BITNET  lmb7421@{ultb,vaxa,vaxb,vaxc,vaxd}.isc.rit.edu
UUCP: ...rutgers!rochester!rit!ultb!lmb7421
LENSMAN@DRYCAS.BITNET  lensman@drycas.club.cc.cmu.edu