WBStartup ;---------------------This Code requires the AmigaLibsII.res ------------------ Let version$="$VER: ASCII-Clip v1.03 ? 5.April 1999 by FreeJack [FreeJack@FreeJack.de] (05.04.99)" Let Boot$=ProgDir$ Let lf.s=Chr$(10) Let lfn.s=Chr$(10)+Chr$(0) ;------------------------------- Catalog Part Start ----------------------------- Dim Daten$(4), Cat$(65535) Let *Cat=OpenCatalogA_(0,"ASCII-Clip.catalog",0) If *Cat For i=1 To 4 Let Daten$(i)=PeekTo$(GetCatalogStr_(*Cat,i,0),0) Next i CloseCatalog_(*Cat) Else Restore Datas For i=1 To 4 Read Daten$(i) Next i EndIf .Datas Data.s "made by FreeJack [FreeJack@FreeJack.de]" Data.s "Copies a single ASCII Code To Clipboard" Data.s "Then you can paste the ASCII-Code in any Program" Data.s "copied ..." ;------------------------------- Catalog Part End ------------------------------ ;------------------------------ Function Part Start ---------------------------- .Echo Statement Echo{Text$} Let NText$=Text$+Chr$(10)+Chr$(0) Let void=PutStr_(&NText$) End Statement .MakeVers Function.s MakeVers{a$} b$=UnRight$(a$,6) Function Return b$ End Function vers$=MakeVers{version$} Echo{vers$} ;------------------------------- Function Part End ----------------------------- If NumPars=0 ;Echo {vers$} Else Echo {Daten$(1)} Echo {Daten$(2)} Echo {Daten$(3)} End EndIf ;-------------------------------- CLI Parsing End ------------------------------ ;----------------------------- Clipboard Init Start ---------------------------- NEWTYPE.OwnIOStdReq io_Message.Message *io_Device.b ;Device ; *io_Unit.ClipboardUnitPartial *io_Unit.b io_Command.w io_Flags.b io_Error.b io_Actual.l io_Length.l *io_Data.b io_Offset.l ;add particulars to device here io_ClipID.l End NEWTYPE #_INVALID=0:#_RESET=1:#_READ=2:#_WRITE=3:#_UPDATE=4 #_CLEAR=5:#_STOP=6:#_START=7:#_FLUSH=8:#_NONSTD= 9 DEFTYPE .OwnIOStdReq clipio DEFTYPE .MsgPort clipport clipsig.l=0 .ClipOpen Statement ClipOpen{} SHARED clipio,clipport,clipsig clipport\mp_Node\ln_Type=4 clipport\mp_MsgList\lh_Head=&clipport\mp_MsgList\lh_Tail clipport\mp_MsgList\lh_TailPred=&clipport\mp_MsgList\lh_Head clipio\io_Message\mn_Node\ln_Type=5 clipio\io_Message\mn_ReplyPort=&clipport clipio\io_Message\mn_Length=SizeOf.IOStdReq d.s="clipboard.device" If OpenDevice_(d,0,clipio,0)<>0 Then End clipsig.l=AllocSignal_(-1):If clipsig<0 Then End clipport\mp_SigBit=clipsig clipport\mp_SigTask=FindTask_(0) End Statement .ClipClose Statement ClipClose{} SHARED clipio,clipsig CloseDevice_ clipio FreeSignal_ clipsig End Statement .ClipWrite Statement ClipWrite{s.s} SHARED clipio ClipOpen{} sodd.s=s If Len(s) MOD 2 Then sodd+Chr$(0) a.s="FORM"+Mkl$(12+Len(sodd))+"FTXTCHRS"+Mkl$(Len(s))+sodd USEPATH clipio \io_Command=#_WRITE \io_Data=&a \io_Length=Len(a) \io_ClipID=0 \io_Offset=0 \io_Error=0 SendIO_ clipio \io_Command=#_UPDATE SendIO_ clipio ClipClose{} End Statement ;------------------------------ Clipboard Init End ------------------------------ font.l=AllocMem(200,$10002) Poke.w font+4,8 Poke.l font ,font+10 fontn$="topaz.font" Poke$ font+10,fontn$ ; Set up required IDCMP flags to respond to #IDCMP = #IDCMP_NEWSIZE | #IDCMP_RAWKEY | #IDCMP_MOUSEBUTTONS | #IDCMP_MOUSEMOVE #IDCMP =#IDCMP| #IDCMP_CLOSEWINDOW | #IDCMP_VANILLAKEY WbToScreen 0 WBenchToFront_ *_screen._Screen = Peek.l(Addr Screen(0)) DEFTYPE._Window *win DEFTYPE.l windowsig, signal DEFTYPE.IntuiMessage *msg DEFTYPE.IntuiText it quit.w = 0 leer$ = "Clip me" TLeft.l=*_screen\Width-140 ;--------- Define tags for Window Dim wtags.TagItem(15) Dim ztags.w(5) ztags(0)=0 ztags(1)=11 ztags(2)=200 ztags(3)=11 ztags(4)=0 wtags(0)\ti_Tag=#WA_PubScreen,*_screen wtags(1)\ti_Tag=#WA_IDCMP,#IDCMP wtags(2)\ti_Tag=#WA_Flags,$1160e wtags(3)\ti_Tag=#WA_ScreenTitle,&vers$ wtags(4)\ti_Tag=#WA_MinWidth,100 wtags(5)\ti_Tag=#WA_MinHeight,11 wtags(6)\ti_Tag=#WA_MaxWidth,*_screen\Width wtags(7)\ti_Tag=#WA_MaxHeight,*_screen\Height wtags(8)\ti_Tag=#WA_Left,TLeft wtags(9)\ti_Tag=#WA_Top,11 wtags(10)\ti_Tag=#WA_Width,140 wtags(11)\ti_Tag=#WA_Height,150 wtags(12)\ti_Tag=#WA_Zoom,&ztags(0) wtags(13)\ti_Tag=#WA_Title,&leer$ wtags(14)\ti_Tag=#TAG_END,#TAG_DONE ; Try to open window *win = OpenWindowTagList_(0, &wtags(0)) If *win windowsig.l = 1 LSL *win\UserPort\mp_SigBit d.l = windowsig|#SIGBREAKF_CTRL_C rp.l=*win\RPort Gosub DrawData While quit = 0 signal.l = Wait_(d) If (signal & windowsig) *msg = GT_GetIMsg_(*win\UserPort) While (*msg) ev.l = *msg\Class ; Echo{"Class: "+Hex$(ev)} Select ev Case #IDCMP_CLOSEWINDOW quit = 1 Case 2 Gosub DrawData Case $8 Code.l = *msg\Code If Code=104 Then Gosub Clip Case $10 Code.l = *msg\Code Gosub Emit Case $200000 Code.l = *msg\Code ; Echo{"Code : "+Str$(Code)} Select Code Case 27 quit = 1 End Select End Select GT_ReplyIMsg_(*msg) *msg = GT_GetIMsg_(*win\UserPort) Wend End If If (signal & #SIGBREAKF_CTRL_C) ;---------- Ctrl-C needs to be pressed in CLI window !!!!!! ----------- quit = 1 End If Wend CloseWindow_(*win) End If End .DrawData offset.b=6 ofont.l=OpenFont_(font) SetFont_ rp,ofont SetAPen_ rp,1 SetBPen_ rp,0 For i=0 To 15 For j=0 To 15 Move_ rp,j*8,i*8+offset k=i*16+j Text$=Chr$(k) Text_ rp,&Text$,1 Next j Next i CloseFont_ ofont Return .Emit ofont.l=OpenFont_(font) SetFont_ rp,ofont SetAPen_ rp,1 SetBPen_ rp,2 Mx.l=*win\GZZMouseX/8 If Mx> 15 Then Mx=15 If Mx< 0 Then Mx= 0 My.l=*win\GZZMouseY/8 If My> 15 Then My=15 If My< 0 Then My= 0 Zahl.l=My*16+Mx Wert$=Left$(Str$(Zahl)+") ",4) Let Text$=Chr$(Zahl)+"= ASCII ("+Wert$ Move_ rp,8,135 Text_ rp,&Text$,14 CloseFont_ ofont Return .Clip ClipWrite {Chr$(Zahl)} ofont.l=OpenFont_(font) SetFont_ rp,ofont SetAPen_ rp,1 SetBPen_ rp,2 Let Text$=Chr$(Zahl)+" = "+Daten$(4) Move_ rp,8,135 Text_ rp,&Text$,14 CloseFont_ ofont Return