home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fish 'n' More 2
/
fishmore-publicdomainlibraryvol.ii1991xetec.iso
/
fish
/
code_examples
/
a68kex
/
request.asm
< prev
next >
Wrap
Assembly Source File
|
1991-01-17
|
10KB
|
340 lines
***********************
*
* Send up a requester and wait until clicked
*
* === not reentrant, not multitasking simultaneous usable ===
*
* This implementation was written by:
* E. Lenz
* Johann-Fichte-Strasse 11
* 8 Munich 40
* Germany
*
***********************
; INPUT
;
; a0 = pointer to requester text 1st line
; a1 = pointer to requester text 2nd line (0 = no 2nd or 3rd line)
; a2 = pointer to requester text 3rd line (0 = no 3rd line)
; a3 = pointer to requester header
; a4 = pointer to gadget 1 text
; a5 = pointer to gadget 2 text (0 = no gadget 2)
; d0 = pointer to screen
; d1 = type of screen
; INTERNAL
;
; d5 = Error flag
; a4 = IntuitionBase
; a5 = Window
; OUTPUT
;
; d0 = the number of the selected gadget
; 0 = error occured 1 = 1st gadget selected 2 = 2nd gadget selected
XDEF request
; EXEC.library routines
_AbsExecBase equ 4
_LVOWait equ -$13e
_LVOGetMsg equ -$174
_LVOReplyMsg equ -$17a
_LVOWaitPort equ -$180
_LVOCloseLibrary equ -$19e
_LVOOpenLibrary equ -$228
; INTUITION.library routines
_LVOCloseWindow equ -$48
_LVOEndRequest equ -$78
_LVOOpenWindow equ -$cc
_LVORequest equ -$f0
_LVOWindowToFront equ -$138
wd_UserPort equ $56
request move.l d0,Wscreen
move.w d1,Stype
move.l a0,Rtxt set texts
move.l a1,d0
lea R2text(pc),a0
move.l d0,R2txt
bne.s is2
movea.l d0,a0
is2 move.l a0,next1
move.l a2,d0
lea R3text(pc),a0
move.l d0,R3txt
bne.s is3
movea.l d0,a0
is3 move.l a0,next2
move.l a3,Wdname set header
move.l a4,Gag1
move.l a5,d0
lea Rgadg2(pc),a0
move.l d0,Gag2
bne.s endhead
movea.l d0,a0
endhead move.l a0,Rgadget
suba.l a5,a5
movea.l _AbsExecBase,a6
lea IntuitionName(pc),a1 Open intuition.library
moveq #0,d0
jsr _LVOOpenLibrary(a6)
movea.l d0,a4 Save intuition base address
tst.l d0
beq.s gexit
; Open window
movea.l d0,a6 Base address = IntuitionBase
lea NewWindow(pc),a0
jsr _LVOOpenWindow(a6)
movea.l d0,a5 Save pointer to window structure
tst.l d0
gexit beq.s exit
lea Request1(pc),a0 Send up requester
movea.l a5,a1
jsr _LVORequest(a6)
movea.l _AbsExecBase,a6
Reqwait movea.l a5,a0
jsr _LVOWindowToFront(a6)
movea.l a5,a0
movea.l wd_UserPort(a0),a0 Load Window.UserPort
move.b $f(a0),d1 Load signal bit
moveq #1,d0
lsl.l d1,d0
jsr _LVOWait(a6)
movea.l a5,a0
movea.l wd_UserPort(a0),a0 Reload Window.UserPort
jsr _LVOGetMsg(a6)
tst.l d0
beq.s Reqwait No message
movea.l d0,a1
move.l $14(a1),d7 Message in a7
jsr _LVOReplyMsg(a6) Always reply
movea.l a4,a6
lea Request1(pc),a0
movea.l a5,a1
jsr _LVOEndRequest(a6)
movea.l a5,a0 get gadget id
movea.l $5e(a0),a0
movea.l $1c(a0),a0
move.w $26(a0),d5
exit move.l a5,d0 Close window
beq.s No_Wind
movea.l d0,a0
jsr _LVOCloseWindow(a6)
;Close library
No_Wind movea.l _AbsExecBase,a6
move.l a4,d0 Close intuition lib
beq.s No_Intui
movea.l d0,a1
jsr _LVOCloseLibrary(a6)
No_Intui moveq #0,d0
move.w d5,d0
rts
IntuitionName dc.b 'intuition.library',0
even
***** Window definition *****
NewWindow dc.w 0,0 Position left,top
dc.w 319,72 Size width,height
dc.b 0,1 Colors detail-,block pen
dc.l $40 IDCMP-Flags
dc.l $1407 Window flags
dc.l 0 ^Gadget
dc.l 0 ^Menu check
Wdname dc.l 0 ^Window name
Wscreen dc.l 0 ^Screen structure,
dc.l 0 ^BitMap
dc.w 88 MinWidth
dc.w 24 MinHeight
dc.w 319 MaxWidth
dc.w 72 MaxHeight
Stype dc.w 1 Screen type
*** Requester definition ***
Request1 dc.l 0 Older request
dc.w 0 Left edge
dc.w 0 Top edge
dc.w 303 Width
dc.w 60 Height
dc.w 0,0 Rel -left,-top
dc.l Rgadget Gadget
dc.l Rborder Requester border
dc.l Rtext Requester text
dc.w 0 Flags
dc.b 1,0 Backplane fill pen
dc.l 0 Requester layer
dc.l 0 Image bit map
ds.l 8
ds.l 1 Points back to window structure
ds.l 8
Rborder dc.w 0 Left edge
dc.w 0 Top edge
dc.b 0,2 Front pen,back pen
dc.b 1,5 Draw mode,number of coord pairs
dc.l RPairs Vector coordinate pairs
dc.l 0 Next border
RPairs dc.w 2,1 Lines surrounding the requester
dc.w 293,1
dc.w 293,57
dc.w 2,57
dc.w 2,1
Rtext dc.b 0 Front pen (blue)
dc.b 1 Back pen (white)
dc.b 0,0 Draw mode
dc.w 10 Left edge
dc.w 10 Top edge
dc.l 0 Text font
Rtxt ds.l 1 Pointer to text
next1 dc.l 0 Next text
R2text dc.b 0 Front pen (blue)
dc.b 1 Back pen (white)
dc.b 0,0 Draw mode
dc.w 10 Left edge
dc.w 20 Top edge
dc.l 0 Text font
R2txt ds.l 1 Pointer to text
next2 dc.l 0 Next text
R3text dc.b 0 Front pen (blue)
dc.b 1 Back pen (white)
dc.b 0,0 Draw mode
dc.w 10 Left edge
dc.w 30 Top edge
dc.l 0 Text font
R3txt dc.l 0 Pointer to text
dc.l 0 Next text
Rgadget dc.l 0 +0 Next gadget
dc.w 10 +4 Left edge
dc.w -20 +6 Top edge
dc.w 50 +8 Width
dc.w 14 +A Height
dc.w 8 +C Flags
dc.w 1 +E Activation
dc.w 1 +10 Gadget type
dc.l Rbord1 +12 Rendered as border or image
dc.l 0 +16 Select render
dc.l Gag1txt +1A ^Gadget text
dc.l 0 +1E Mutual exclude
dc.l 0 +22 Special info
dc.w 1 +26 Gadget ID
;+28 User data
Rbord1 dc.w 0 Left edge
dc.w 0 Top edge
dc.b 3,0 Front pen,back pen
dc.b 1,5 Draw mode,number of coord pairs
dc.l RPairs1 Vector coordinate pairs
dc.l Rbord2 Next border
RPairs1 dc.w 0,0 Lines which constitute the gadget
dc.w 50,0
dc.w 50,14
dc.w 0,14
dc.w 0,0
Rbord2 dc.w 0,0
dc.b 0,0
dc.b 1,5
dc.l RPairs2
dc.l 0
RPairs2 dc.w 2,2
dc.w 48,2
dc.w 48,12
dc.w 2,12
dc.w 2,2
Gag1txt dc.b 0 Front pen (blue)
dc.b 1 Back pen (white)
dc.b 1,0 Draw mode
dc.w 8 Left edge
dc.w 4 Top edge
dc.l 0 Text font
Gag1 dc.l 0 Pointer to text
dc.l 0 Next text
Rgadg2 dc.l 0 +0 Next gadget
dc.w -68 +4 Left edge
dc.w -20 +6 Top edge
dc.w 50 +8 Width
dc.w 14 +A Height
dc.w $18 +C Flags
dc.w 1 +E Activation
dc.w 1 +10 Gadget type
dc.l Rbord21 +12 Rendered as border or image
dc.l 0 +16 Select render
dc.l Gag2txt +1A ^Gadget text
dc.l 0 +1E Mutual exclude
dc.l 0 +22 Special info
dc.w 2 +26 Gadget ID
;+28 User data
Rbord21 dc.w 0 Left edge
dc.w 0 Top edge
dc.b 3,0 Front pen,back pen
dc.b 1,5 Draw mode,number of coord pairs
dc.l RPair21 Vector coordinate pairs
dc.l Rbord22 Next border
RPair21 dc.w 0,0 Lines which constitute the gadget
dc.w 50,0
dc.w 50,14
dc.w 0,14
dc.w 0,0
Rbord22 dc.w 0,0
dc.b 0,0
dc.b 1,5
dc.l RPair22
dc.l 0
RPair22 dc.w 2,2
dc.w 48,2
dc.w 48,12
dc.w 2,12
dc.w 2,2
Gag2txt dc.b 0 Front pen (blue)
dc.b 1 Back pen (white)
dc.b 1,0 Draw mode
dc.w 8 Left edge
dc.w 4 Top edge
dc.l 0 Text font
Gag2 dc.l 0 Pointer to text
dc.l 0 Next text
end