home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
466.lha
/
A68kExamples
/
GetReal.asm
< prev
next >
Wrap
Assembly Source File
|
1991-02-03
|
6KB
|
198 lines
*
* ENTRY: d0 pointer to screen structure
* d1 screen type
* a0 pointer to output text (one line)
* a1 pointer to window title
* a2 value to display
*
* Opens window , writes text
* inputs a real number and converts it to
* floating point format
*
* EXIT:
* If d1 = 0 all is well and the number is in d0
* If d1 <> 0 something went wrong
*
* written by E. Lenz
* Johann-Fichte-Strasse 11
* 8 Munich 40
* Germany
XDEF GetReal
XREF RealIn
_AbsExecBase equ 4
***** exec ****
_LVOWait equ -$13e
_LVOGetMsg equ -$174
_LVOReplyMsg equ -$17a
_LVOCloseLibrary equ -$19e
_LVOOpenLibrary equ -$228
**** intuition *****
_LVOCloseWindow equ -$48
_LVOEndRequest equ -$78
_LVOOpenWindow equ -$cc
_LVORequest equ -$f0
wd_UserPort equ $56
GetReal movem.l d2-d7/a3-a6,-(a7)
move.l d0,nws
move.w d1,stype
move.l a0,Rtxt
move.l a1,title
lea Buffer(pc),a0
moveq #0,d1
trans move.b (a2)+,d0
move.b d0,(a0)+
addq.l #1,d1
cmpi.b #$a,d0
bne.s trans
move.w d1,pos
moveq #1,d1
move.l _AbsExecBase,a6
lea IntName(pc),a1 Open intuition.library
moveq #0,d0
jsr _LVOOpenLibrary(a6)
move.l d0,d4
beq.s exit
movea.l d0,a6
movea.l d0,a5
lea nw(pc),a0 open window
jsr _LVOOpenWindow(a6)
move.l d0,window
Gexit beq exit
movea.l d0,a4
lea Request1(pc),a0 Send up requester
movea.l a4,a1
jsr _LVORequest(a6)
Reqwait movea.l _AbsExecBase,a6
movea.l a4,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 a4,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 a5,a6
lea Request1(pc),a0
movea.l a4,a1
jsr _LVOEndRequest(a6)
lea Buffer(pc),a0
jsr RealIn
exit movem.l d0-d1,-(a7)
movea.l a5,a6 close window
move.l window(pc),d0
beq.s noWin
movea.l d0,a0
jsr _LVOCloseWindow(a6)
noWin movea.l _AbsExecBase,a6
tst.l d4
beq.s NoInt
movea.l d4,a1 Close intuition lib
jsr _LVOCloseLibrary(a6)
NoInt movem.l (a7)+,d0-d1
movem.l (a7)+,d2-d7/a3-a6
rts
window ds.l 1
Buffer ds.b 80
IntName dc.b 'intuition.library',0
even
***** Window definition *****
nw dc.w 100,100 Position left,top
dc.w 200,100 Size width,height
dc.b 0,1 Colors detail-,block pen
dc.l $344 IDCMP-Flags
dc.l $140f Window flags
dc.l 0 ^Gadget
dc.l 0 ^Menu check
title dc.l 0 ^Window name
nws dc.l 0 ^Screen structure,
dc.l 0 ^BitMap
dc.w 100 MinWidth
dc.w 40 MinHeight
dc.w -1 MaxWidth
dc.w -1 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 200 Width
dc.w 100 Height
dc.w 0,0 Rel -left,-top
dc.l Rgadget Gadget
dc.l 0 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
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
Rgadget dc.l 0 +0 Next gadget
dc.w 10 +4 Left edge
dc.w -50 +6 Top edge
dc.w 150 +8 Width
dc.w 14 +A Height
dc.w 8 +C Flags
dc.w 1 +E Activation
dc.w 4 +10 Gadget type
dc.l 0 +12 Rendered as border or image
dc.l 0 +16 Select render
dc.l 0 +1A ^Gadget text
dc.l 0 +1E Mutual exclude
dc.l strinfo +22 Special info
dc.w 1 +26 Gadget ID
;+28 User data
strinfo dc.l Buffer text buffer
dc.l 0 undo buffer
pos dc.w 0 cursor position
dc.w 33 max no of char
dc.w 0 pos of first char
dc.w 0,0,0,0,0 intuition variables
dc.l 0 RastPort of gadget
dc.l 0 longint value
dc.l 0 altkeymap
end