From ec5c1324711f4a5dbfdab2327f3923557446a393 Mon Sep 17 00:00:00 2001 From: Joerg Deckert Date: Fri, 27 Dec 2013 17:33:34 +0100 Subject: [PATCH] first preparation if IRC client (atm GUI only) --- make.sh | 3 +- system/regnatix/irc.spin | 283 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 285 insertions(+), 1 deletion(-) create mode 100644 system/regnatix/irc.spin diff --git a/make.sh b/make.sh index 2a2304c..6af66a9 100755 --- a/make.sh +++ b/make.sh @@ -3,7 +3,8 @@ date # Pfade -bin="../Bin" +##bin="../Bin" +bin="/home/ftp/hive" sd="${bin}/sdcard" sdsys="${bin}/sdcard/system" flash="${bin}/flash" diff --git a/system/regnatix/irc.spin b/system/regnatix/irc.spin new file mode 100644 index 0000000..a19cb42 --- /dev/null +++ b/system/regnatix/irc.spin @@ -0,0 +1,283 @@ +{{ +┌──────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ Autor: Jörg Deckert │ +│ Copyright (c) 2013 Jörg Deckert │ +│ See end of file for terms of use. │ +│ Die Nutzungsbedingungen befinden sich am Ende der Datei │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────┘ + +Informationen : hive-project.de +Kontakt : joergd@bitquell.de +System : TriOS +Name : flash +Chip : Regnatix +Typ : Programm +Version : +Subversion : +Funktion : IRC-Client +Komponenten : - +COG's : - +Logbuch : + +27.12.2013-joergd - erste Version + + +Kommandoliste : + + +Notizen : + + +}} + +OBJ + ios: "reg-ios" + str: "glob-string" + num: "glob-numbers" 'Number Engine + gc : "glob-con" + +CON + +_CLKMODE = XTAL1 + PLL16X +_XINFREQ = 5_000_000 + +CON + +W0X_MENU = 8 +W0Y_MENU = 0 + +COL_DEFAULT = 0 +COL_MENU = 8 +COL_FOCUS = 3 + +VAR + + long ip_addr + word ip_port + byte rows,cols,vidmod + byte x0[4],y0[4],xn[4],yn[4],hy[4],focus + byte input_str[64] + +PUB main | key + + init + + repeat + key := ios.keywait + case key + gc#KEY_TAB: f_focus + gc#KEY_F02: f_setserver + gc#KEY_F10: f_quit + + +PRI init + + focus := 3 + + ios.start 'ios initialisieren + setscreen + +PRI f_focus + + if ++focus == 4 + focus := 1 + win_redraw + +PRI f_setserver + + input(string("IRC-Server angeben (IP:Port):"),21) + win_redraw + ios.winset(2) + ios.print(string("Verbinde mit ")) + ios.print(@input_str) + ios.print(string("...",10)) + + if strToIpPort(@input_str, ip_addr, ip_port) + ios.print(string("Wandlung erfolgreich",10)) + else + ios.print(string("Wandlung fehlgeschlagen",10)) + + +PRI f_quit + + ios.winset(0) + ios.screeninit + ios.stop + +PRI frame_draw + + ios.winset(0) + ios.curoff + ios.printcls + ios.cursetx(W0X_MENU) + ios.cursety(W0Y_MENU) + ios.setcolor(COL_MENU) +' ios.print(string(" ")) + ios.print(string(" IRC Client ")) + ios.printlogo(0,0) + ios.setcolor(COL_DEFAULT) + +PRI win_draw | i + + repeat i from 1 to 3 + ios.windefine(i,x0[i],y0[i],xn[i],yn[i]) + ios.winset(i) + ios.curoff + ios.printcls + if i == focus + ios.setcolor(COL_FOCUS) + ios.winoframe + if i == focus + ios.setcolor(COL_DEFAULT) + ios.winset(0) + ios.cursetx(2) + ios.cursety(hy[i]) + if i == focus + ios.setcolor(COL_FOCUS) + case i + 1: ios.print(@strWin1) + 2: ios.print(@strWin2) + 3: ios.print(@strWin3) + if i == focus + ios.setcolor(COL_DEFAULT) + +PRI win_redraw | i + + repeat i from 1 to 3 + ios.winset(i) + if i == focus + ios.setcolor(COL_FOCUS) + ios.winoframe + if i == focus + ios.setcolor(COL_DEFAULT) + ios.winset(0) + ios.cursetx(2) + ios.cursety(hy[i]) + if i == focus + ios.setcolor(COL_FOCUS) + case i + 1: ios.print(@strWin1) + 2: ios.print(@strWin2) + 3: ios.print(@strWin3) + if i == focus + ios.setcolor(COL_DEFAULT) + +PRI setscreen + + vidmod := ios.belgetspec & 1 + rows := ios.belgetrows 'zeilenzahl bei bella abfragen + cols := ios.belgetcols 'spaltenzahl bei bella abfragen + + 'gesamter Bildschirm (Nr. 0) + x0[0] := 0 + y0[0] := 0 + xn[0] := cols-1 + yn[0] := rows-1 + + 'Chat-Fenster (Nr. 1) + x0[1] := 1 + y0[1] := 2 + xn[1] := cols-2 + yn[1] := rows-9 + hy[1] := 1 + + 'Status-Fenster (Nr. 2) + x0[2] := 1 + y0[2] := rows-7 + xn[2] := cols-2 + yn[2] := rows-4 + hy[2] := rows-8 + + 'Eingabe-Fenster (Nr. 3) + x0[3] := 1 + y0[3] := rows-2 + xn[3] := cols-2 + yn[3] := rows-2 + hy[3] := rows-3 + + frame_draw + win_draw + + 'Eingabe-Fenster (Nr. 4) + ios.windefine(4,15,10,45,13) + +PRI strToIpPort(ipstr, ip, port) | octet + ' extracts the IP and PORT from a string + + long[ip] := 0 + word[port] := 0 + octet := 3 + repeat while octet => 0 + case byte[ipstr] + "0".."9": + byte[ip][octet] := (byte[ip][octet] * 10) + (byte[ipstr] - "0") + ".": + octet-- + ":": + quit + other: + return false + ipstr++ + if octet <> 0 + return false + if byte[ipstr++] == ":" + repeat while byte[ipstr] <> 0 + if byte[ipstr] => "0" and byte[ipstr] =< "9" + word[port] := (word[port] * 10) + (byte[ipstr] - "0") + else + return false + ipstr++ + + return true + +PUB input(stradr, input_len) | key,bnr + + input_str[0] := 0 + ios.winset(4) + ios.printcls + ios.winoframe + ios.curhome + ios.curoff + ios.setcolor(COL_DEFAULT) + ios.printchar(" ") + ios.print(stradr) + ios.printnl + ios.printnl + ios.printchar(" ") + repeat input_len + ios.printchar("_") + ios.curpos1 + ios.printchar(" ") + ios.curon + ios.input(@input_str,input_len) + ios.curoff + +PRI delay_ms(Duration) + waitcnt(((clkfreq / 1_000 * Duration - 3932)) + cnt) + +DAT + +strWin1 byte "Chat",0 +strWin2 byte "Status",0 +strWin3 byte "Eingabe",0 + +DAT 'lizenz + +{{ + +┌──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +│ TERMS OF USE: MIT License │ +├──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤ +│Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation │ +│files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, │ +│modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software│ +│is furnished to do so, subject to the following conditions: │ +│ │ +│The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.│ +│ │ +│THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE │ +│WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR │ +│COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, │ +│ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. │ +└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +}}