* * 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