steelie@pro-charlotte.cts.com (Jim Howard) (08/11/88)
Can anyone out there figure out what is wrong with the following
excerpt of code? (besides the obvious sloppy style)
It is *SUPPOSED* to calculate the sc_ViewPort value of the wbench
screen, and then use SetRGB4 to change color register 0 to
some other color. I assume this will make the background color
change.. But so far, I have been able to get nothing but
software errors as soon as I run it.. Doesnt change the color or
anything.. I know this code doesnt close the screen or do any
of the nicetys, but for all apparent(at least to me) reasons,
it should at least FUNCTION...
include "intuition/intuition.i"
xref _LVOOpenLibrary
xref _LVOSetRGB4
xref _LVOOpenScreen
xref _LVOCloseScreen
xdef sc_ViewPort
xdef sc_RastPort
NULL equ 0 ;for use in window structure
movea.l 4,a6 ;directly load exec base
lea intname,a1 ;get intuition.library
jsr _LVOOpenLibrary(a6) ;open it
move.l d0,intbase ;save pointer
lea grpname,a1 ;get graphics.library
jsr _LVOOpenLibrary(a6) ;open it
move.l d0,grpbase ;save pointer
lea screenvars,a0
move.l intbase,a6
jsr _LVOOpenScreen(a6)
move.l d0,screen
move.l screen,d0
add.l #sc_RastPort,d0
move.l d0,myraster
sub.l #sc_RastPort,d0
add.l #sc_ViewPort,d0
move.l d0,myview
move.l grpbase,a6
move.l myview,a0
move.l #0,d0
move.b #5,d1
move.b #0,d2
move.b #0,d3
jsr _LVOSetRGB4(a6)
move.l intbase,a6
move.l screen,a0
jsr _LVOCloseScreen(a6)
rts
intname dc.b 'intuition.library',0
cnop 0,2
grpname dc.b 'graphics.library',0
cnop 0,2
intbase ds.l 0
grpbase ds.l 0
myview ds.l 0
screen ds.l 0
myraster ds.l 0
screenvars dc.w 0 * ns_LeftEdge
dc.w 0 * ns_TopEdge
dc.w 320 * ns_Width
dc.w 200 * ns_Height
dc.w 3 * ns_Depth
dc.b 3 * ns_DetailPen
dc.b 1 * ns_BlockPen
dc.w 0 * ns_ViewModes
dc.w WBENCHSCREEN * ns_Type
dc.l 0 * ns_Font
dc.l 0 * ns_DefaultTitle
dc.l 0 * ns_Gadgets
dc.l 0 * ns_CustomBitMap
Also, has anyone noticed that when using Blink, if any of
the XREF's are more than about 15 characters long, then
the *@#$% thing wont recognize it??? Really annoying when
you try something like XREF _LVOViewPortAddress
the thing only looks at recognizes it as _LVOViewPortAdd
, and then cant find that in amiga.lib !
Respond via e-mail, as I dont want to waste any more space
than I already have with this.
Thanks,
UUCP: ....!crash!pro-charlotte!steelie | Pro-Charlotte - (704) 567-0029
ARPA: crash!pro-charlotte!steelie@nosc.mil| 300/1200/2400 baud 24 hrs/day
INET: steelie@pro-charlotte.cts.com | Log in as "register"koster@cory.Berkeley.EDU (Herbert West) (08/12/88)
In article <3295@crash.cts.com> steelie@pro-charlotte.cts.com (Jim Howard) writes: >Can anyone out there figure out what is wrong with the following >excerpt of code? (besides the obvious sloppy style) > ">screenvars dc.w 0 * ns_LeftEdge "> dc.w 0 * ns_TopEdge "> dc.w 320 * ns_Width "> dc.w 200 * ns_Height "> dc.w 3 * ns_Depth "> dc.b 3 * ns_DetailPen "> dc.b 1 * ns_BlockPen "> dc.w 0 * ns_ViewModes "> dc.w WBENCHSCREEN * ns_Type "> dc.l 0 * ns_Font "> dc.l 0 * ns_DefaultTitle "> dc.l 0 * ns_Gadgets "> dc.l 0 * ns_CustomBitMap My guess would be you want COSTOMSCREEN instead of WBENCHSCREEN. Usually with intuition, the machine bombs when things aren't just exactly right. Try single stepping the program with your debugger, and see if it is the OpenScreen that does it.
jms@antares.UUCP (joe smith) (08/14/88)
In article <3295@crash.cts.com> steelie@pro-charlotte.cts.com (Jim Howard) writes: > movea.l 4,a6 ;directly load exec base > lea intname,a1 ;get intuition.library > jsr _LVOOpenLibrary(a6) ;open it > move.l d0,intbase ;save pointer > lea grpname,a1 ;get graphics.library > jsr _LVOOpenLibrary(a6) ;open it > move.l d0,grpbase ;save pointer The OpenLibrary call requires 2 arguments; a pointer to the name of the library on A0 and the library version number in D0. If Intuition is openned OK, then the large positive number left over in D0 is guarenteed to make the call to open Graphics to fail. movea.l 4,a6 lea intname,a1 moveq.l #0,d0 ;Zero means to accept any version jsr _LVOOpenLibraray(a6) move.l d0,intbase beq Abort_No_Intuition ;Give up if OpenLibrary failed lea grpname,a1 moveq.l #0,d0 ;Zero means to accept any version jsr _LVOOpenLibraray(a6) move.l d0,grpbase beq Abort_No_Graphics ;Give up if OpenLibrary failed It is absolutely mandatory to test the result returned by OpenLibrary if you want to avoid the Guru. -- +-----------------------------------------------------------------------------+ | TYMNET: JMS@F29 UUCP: {ames|pyramid}oliveb!tymix!antares!jms | | INTERNET: JMS%F29.Tymnet@Office-1.ARPA PHONE: Joe Smith @ (408)922-6220 | +-----------------------------------------------------------------------------+
mriley@pnet02.cts.com (Mark Riley) (08/14/88)
Try adding the following to the code that opens the libraries: > movea.l 4,a6 ;directly load exec base > lea intname,a1 ;get intuition.library MOVEQ #0,D0 ;LIBRARY VERSION NUMBER > jsr _LVOOpenLibrary(a6) ;open it > move.l d0,intbase ;save pointer > > lea grpname,a1 ;get graphics.library MOVEQ #0,D0 ;LIBRARY VERSION NUMBER > jsr _LVOOpenLibrary(a6) ;open it > move.l d0,grpbase ;save pointer Also, in the new screen structure take out the WBENCHSCREEN and make it a zero. Good luck, -Mark- UUCP: {ucbvax!ucsd,rutgers}!crash!gryphon!pnet02!mriley INET: mriley@pnet02.cts.com "Hey, I don't _use_ programs, I write them..." ;-)
mriley@pnet02.cts.com (Mark Riley) (08/14/88)
In regards to the ASM program to change screen colors: You seem to have rewritten the example, but did you bother to assemble and run it? I'd be very surprised if it worked. The following two lines (it seems to me) need to be changed: > move.l sc_RastPort(a0),myraster > move.l sc_ViewPort(a0),myview To something like this: lea sc_RastPort(a0),a1 move.l a1,myraster lea sc_ViewPort(a0),a1 move.l a1,myview These structures are contained within the screen structure as opposed to the screen structure containing ptrs to them. -Mark- UUCP: {ames!elroy, <backbone>}!crash!gryphon!pnet02!mriley INET: mriley@pnet02.cts.com "Hey, I don't _use_ programs, I write them..." ;-)