?login_element?

Subversion Repositories NedoOS

Rev

Rev 1834 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.         DEVICE ZXSPECTRUM128
  2.         include "../_sdk/sys_h.asm"
  3.  
  4.         org PROGSTART
  5. dns_err_count=25
  6.  
  7. TN_CMD_SE               EQU 0xF0 ;suboption end
  8. TN_CMD_NOP              EQU 0xF1
  9. TN_CMD_DATAMARK         EQU 0xF2
  10. TN_CMD_BREAK            EQU 0xF3
  11. TN_CMD_INTERRUPTPROCESS EQU 0xF4
  12. TN_CMD_ABORTOUTPUT      EQU 0xF5
  13. TN_CMD_AREYOUTHERE      EQU 0xF6
  14. TN_CMD_ERASECHAR        EQU 0xF7
  15. TN_CMD_ERASELINE        EQU 0xF8
  16. TN_CMD_GOAHEAD          EQU 0xF9
  17. TN_CMD_SB               EQU 0xFA ;suboption begin
  18. TN_CMD_WILL             EQU 0xFB
  19. TN_CMD_WONT             EQU 0xFC
  20. TN_CMD_DO               EQU 0xFD
  21. TN_CMD_DONT             EQU 0xFE
  22. TN_CMD_IAC              EQU 0xFF
  23.  
  24. TN_OP_BINARY            EQU 0x00
  25. TN_OP_ECHO              EQU 0x01
  26. TN_OP_NICREPEAT         EQU 0x02
  27. TN_OP_SGA               EQU 0x03 ;suppress go ahead
  28. TN_OP_NICSIZEDIALOG     EQU 0x04
  29. TN_OP_STATUS            EQU 0x05
  30. TN_OP_TIMINGMARK        EQU 0x06
  31. TN_OP_RCTE              EQU 0x07
  32. TN_OP_NICLENGTH         EQU 0x08
  33. TN_OP_NICOUTPAGESIZE    EQU 0x09
  34. TN_OP_NAOCRD            EQU 0x0A ;Telnet Output Carriage-Return Disposition Option
  35. TN_OP_NAOHTS            EQU 0x0B ;TELNET OUTPUT HORIZONTAL TABSTOPS OPTION
  36. TN_OP_NAOHTD            EQU 0x0C ;TELNET OUTPUT HORIZONTAL TAB DISPOSITION OPTION
  37. TN_OP_NAOFFD            EQU 0x0D ;TELNET OUTPUT FORMFEED DISPOSITION OPTION
  38. TN_OP_NAOVTS            EQU 0x0E ;TELNET OUTPUT VERTICAL TABSTOPS OPTION
  39. TN_OP_NAOVTD            EQU 0x0F ;TELNET OUTPUT VERTICAL TAB DISPOSITION OPTION
  40. TN_OP_NAOLFD            EQU 0x10 ;TELNET OUTPUT LINEFEED DISPOSITION
  41. TN_OP_EXTENDASCII       EQU 0x11 ;TELNET EXTENDED ASCII OPTION
  42. TN_OP_LOGOUT            EQU 0x12
  43. TN_OP_BM                EQU 0x13 ;TELNET Byte Macro Option
  44. TN_OP_DET               EQU 0x14 ;Telnet Data Entry Terminal Option
  45. TN_OP_SUBDUP            EQU 0x15
  46. TN_OP_SUBDUPOUTPUT      EQU 0x16
  47. TN_OP_SENDLOCATION      EQU 0x17
  48. TN_OP_TERMINALTYPE      EQU 0x18
  49. TN_OP_ENDOFRECORD       EQU 0x19
  50. TN_OP_TUID              EQU 0x1A ;TACACS User Identification Telnet Option
  51. TN_OP_OUTMRK            EQU 0x1B
  52. TN_OP_TTYLOC            EQU 0x1C
  53. TN_OP_REGIME            EQU 0x1D
  54. TN_OP_X3PAD             EQU 0x1E
  55. TN_OP_NAWS              EQU 0x1F ;Telnet Window Size Option
  56. TN_OP_TERMINALSPEED     EQU 0x20
  57. TN_OP_TOGGLEFLOWCONTROL EQU 0x21
  58. TN_OP_LINEMODE          EQU 0x22
  59. TN_OP_XDISPLOC          EQU 0x23
  60. TN_OP_ENVIRON           EQU 0x24
  61. TN_OP_AUTHENTICATION    EQU 0x25
  62. TN_OP_ENCRYPT           EQU 0x26
  63. TN_OP_NEWENVIRON        EQU 0x27
  64. TN_OP_TN3270E           EQU 0x28
  65. TN_OP_XAUTH             EQU 0x29
  66. TN_OP_CHARSET           EQU 0x2A
  67. TN_OP_RSP               EQU 0x2B
  68. TN_OP_COMPORT           EQU 0x2C
  69. TN_OP_SUPPRESSLOCALECHO EQU 0x2D
  70. TN_OP_STARTTLS          EQU 0x2E
  71. TN_OP_KERMIT            EQU 0x2F
  72. TN_OP_SENDURL           EQU 0x30
  73. TN_OP_FORWARDX          EQU 0x31
  74. TN_OP_EXTENDLIST        EQU 0xFF
  75.  
  76. TN_ECHO                 EQU 0b00000001
  77. TN_SGA                  EQU 0b00000010
  78. TN_DEBUG                EQU 0b10000000
  79.  
  80. TN_ST_TEXT              EQU 0
  81. TN_ST_ESC               EQU 1
  82. TN_ST_ANSI              EQU 2
  83.  
  84. ERR_EAGAIN              EQU 35          ;/* Try again */
  85.  
  86. AF_INET EQU 2
  87.  
  88. cmd_begin
  89. ;init
  90.         ld sp,0x4000
  91.        
  92.         ld e,0x86
  93.         OS_SETGFX ;text mode set
  94.         OS_HIDEFROMPARENT
  95.  
  96.         OS_GETMAINPAGES ;dehl
  97.         push de
  98.         push hl
  99.         ld e,l
  100.         OS_DELPAGE
  101.         pop hl
  102.         ld e,h
  103.         OS_DELPAGE
  104.         pop de
  105.         OS_DELPAGE
  106.  
  107.  
  108. ;main
  109. ;check cmdline
  110.         ld e,0
  111.         OS_CLS
  112.         call print_nl
  113.         ld hl,COMMANDLINE
  114.  
  115. telnet_checkkeys ;Check cmdline keys
  116.         call skipword_hl ;skip arg0
  117.         call skipspaces_hl
  118.         ld a,(hl)
  119.         cp '-'
  120.         jr nz,telnet_keysok
  121.         inc hl
  122.         ld a,(hl)
  123.         cp 'd'
  124.         call z,telnet_setkey_d
  125.         cp 'h'
  126.         jp z,telnet_showhelp
  127.         cp 'V'
  128.         jp z,telnet_showversion
  129.         jr telnet_checkkeys
  130.  
  131. telnet_keysok
  132.         ld de,arg_hostname
  133.         call strcopy_hltode
  134.  
  135.         ld a,(arg_hostname)
  136.         or a
  137.         jp z, telnet_showusage ;if no hostname show usage
  138.  
  139.         ld hl,23*256 ;BIG ENDIAN 23
  140.         ld (curport),hl
  141.  
  142.         ld hl,arg_hostname
  143. openstream_http_findslash0
  144.          ld a,(hl)
  145.          cp ':'
  146.          jr z,openstream_http_setport
  147.          ;cp '/'
  148.          ;jr z,openstream_http_slash
  149.          or a
  150.          jr z,openstream_http_slash
  151.          inc hl
  152.          jr openstream_http_findslash0
  153. openstream_http_setport
  154.         ld (hl),0 ;end of httphostname
  155. ;decode port
  156.         ld de,0 ;oldport
  157. openstream_http_decodeport0
  158.         inc hl
  159.         ld a,(hl)
  160.         sub '0'
  161.         cp 10
  162.         jr nc,openstream_http_decodeportq
  163.         push hl
  164.         ld h,d
  165.         ld l,e
  166.         add hl,hl
  167.         add hl,hl
  168.         add hl,de
  169.         add hl,hl ;hl=oldport*10
  170.         add a,l
  171.         ld e,a
  172.         adc a,h
  173.         sub e
  174.         ld d,a ;de=port
  175.         pop hl
  176.         jr openstream_http_decodeport0
  177. openstream_http_decodeportq
  178. ;de=port
  179.         ld a,d
  180.         ld d,e
  181.         ld e,a
  182.         ld (curport),de ;BIG ENDIAN
  183. openstream_http_slash
  184.  
  185.         ld hl,arg_hostname-1 ;��� �������� � �����
  186.         ld de,ip
  187.  
  188. telnet_nextdig
  189.         inc hl         ;check for ip-address in arg
  190.         call strtobyte_hltode
  191.         ld a,(hl)
  192.         cp '.'
  193.         jr z,telnet_nextdig
  194.         ld a,(hl)
  195.         or a
  196.         jr nz,telnet_resolve
  197.         ex hl,de
  198.         ld de,ip
  199.         sbc hl,de
  200.         ld de,4
  201.         sbc hl,de
  202.         ld a,h
  203.         or l
  204.         jp z,telnet_noresolve ; We have ip in arg
  205.  
  206. telnet_resolve
  207.  
  208.         ld de,arg_hostname
  209.         call dns_resolver ; resolving ip
  210.         ld a,h
  211.         or l   ;in HL ip address or zero
  212.         jp z,telnet_resolveerror
  213.         ld de,ip; copy ip
  214.         ld bc,4
  215.         ldir
  216.  
  217. curport=$+1
  218.         ld hl,0
  219.         ld (conparam_port),hl
  220.  
  221. telnet_noresolve
  222.  
  223.         ld hl,ip
  224.         ld de,txtip ; convert to text
  225.         call telnet_iptostr_hltode
  226.  
  227.         ld hl,txt_head1 ; showing message connect to blablabla
  228.         call print_hl
  229.         ld hl,arg_hostname
  230.         call print_hl
  231.         ld hl,txt_head2
  232.         call print_hl
  233.         ld hl,txtip
  234.         call print_hl
  235.         ld hl,txt_head3
  236.         call print_hl
  237.  
  238. ;curport=$+1
  239. ;       ld bc,23 ; Preparing connect params
  240.         ld hl,ip
  241.         ;ex de,hl
  242.         ;ld hl,conparam+1;2
  243.         ;ld (hl),b
  244.         ;inc hl
  245.         ;ld (hl),c ; port 23
  246.         ;ex de,hl
  247.         ;inc de
  248.         ld de,conparam_ip
  249.         ld bc,4
  250.         ldir ; copy ip address
  251.  
  252.         ld de,0x0201 ; AF_INET,SOCK_TCP
  253.         OS_NETSOCKET
  254.         ld a,l
  255.            ld c,l ;???
  256.         ld (soc1),a ; save socket to soc1
  257.         or a
  258.         ld hl,txt_socketerror
  259.         jp m, telnet_error_hl
  260.  
  261.         ld de,conparam
  262.         OS_NETCONNECT ; open socket
  263.            ld c,a ;???
  264.         ld a,l
  265.         or a
  266.         ld hl,txt_socketopenerror
  267.         jp m, telnet_error_hl
  268.  
  269.         ld hl,txt_work1 ; connected to
  270.         call print_hl
  271.         ld hl,arg_hostname
  272.         call print_hl
  273.         ld hl,txt_head2
  274.         call print_hl
  275.         ld hl,txtip
  276.         call print_hl
  277.         ld hl,txt_head3
  278.         call print_hl
  279.  
  280.         ld de,ansi_pal
  281.         OS_SETPAL
  282. telnet_loop
  283.         YIELDGETKEY
  284.         ;ld a,c
  285.         cp extD ;key_esc ;Sayman
  286.         jp z,telnet_end
  287.         cp NOKEY
  288.         jr z,telnet_purge
  289.         cp key_backspace
  290.         call z,telnet_backspace
  291.         cp key_left
  292.         jp z,telnet_sendleft
  293.         cp key_right
  294.         jp z,telnet_sendright
  295.         cp key_up
  296.         jp z,telnet_sendup
  297.         cp key_down
  298.         jp z,telnet_senddown
  299.         push af
  300.         call telnet_putbyte_a
  301.         pop af
  302.  
  303. telnet_loop0
  304.         ld bc,(options) ;echo
  305.         bit 0,c
  306.         jr z,telnet_purge
  307.         cp 0x0D
  308.         jr z,telnet_prchar
  309.         cp 0x0A
  310.         jr z,telnet_prchar
  311.         cp 0x20
  312.         jr c,telnet_purge
  313.         cp 0x7F
  314.         jr nc,telnet_purge
  315. telnet_prchar
  316.         PRCHAR
  317. telnet_purge
  318.         call telnet_purge_writebuf
  319.         jr telnet_read
  320.  
  321. telnet_read_resetstate
  322.         xor a
  323.         ld (read_state),a
  324. telnet_read
  325.         ld a,(read_state)
  326.         cp TN_ST_ESC
  327.         jr z,telnet_esc
  328.         cp TN_ST_ANSI
  329.         jr z,telnet_ansi0
  330.         call telnet_getbyte
  331.         jr nz,telnet_loop
  332.         ld a,(hl)
  333.         cp 0x0D
  334.         jr z,telnet_read_prchar
  335.         cp 0x0A
  336.         jr z,telnet_read_prchar
  337.         cp 0x08
  338.         jr z,telnet_prbackspace
  339.         cp 0x1B ;ESC
  340.         jr z,telnet_esc
  341.         cp 0x20
  342.         jp c,telnet_read
  343.         cp 242;223;128 ;TODO 240?
  344.         jp nc,telnet_noprintable
  345. telnet_read_prchar
  346.         PRCHAR
  347.         jr telnet_read
  348.  
  349. telnet_prbackspace
  350.         OS_GETXY
  351.         ld a,e
  352.         dec a
  353.         jr c,telnet_read
  354.         ld e,a
  355.         push de
  356.         OS_SETXY
  357.         ld a,' '
  358.         PRCHAR
  359.         pop de
  360.         OS_SETXY
  361.         jr telnet_read
  362.  
  363.  
  364. telnet_esc
  365.         ld a,TN_ST_ESC
  366.         ld (read_state),a
  367.         call telnet_getbyte
  368.         jp nz,telnet_loop
  369.         ld a,(hl)
  370.         cp '[' ;CSI
  371.         jr z,telnet_ansi
  372.         jr telnet_read_resetstate
  373.  
  374. telnet_ansi
  375.         ld a,TN_ST_ANSI
  376.         ld (read_state),a
  377.         ld hl,0
  378.         ld (ansi_cmd),hl
  379.         ld (ansi_anum),hl
  380.         ld (ansi_args),hl
  381.         ld (ansi_args+2),hl
  382. telnet_ansi0
  383.         call telnet_getbyte
  384.         jp nz,telnet_loop
  385.         ld a,(hl)
  386.         call strisdigit_a
  387.         jr z,telnetansi_readargs
  388.         ld a,(hl)
  389.         cp ';'
  390.         jr z,telnetansi_nextarg
  391.         cp '?'
  392.         jr z,telnet_ansi0 ;TODO
  393.         ld a,(hl)
  394.         call strischar_a
  395.         jr z,telnetansi_readcmd
  396.         jp telnet_read_resetstate
  397.  
  398. telnetansi_nextarg
  399.         ld de,(ansi_anum)
  400.         inc de
  401.         ld (ansi_anum),de
  402.         jp telnet_ansi0
  403.  
  404. telnetansi_readcmd
  405.         ld a,(hl)
  406.         ld de,ansi_cmd
  407.         ld (de),a
  408.         jr telnetansi_docmd
  409.  
  410. telnetansi_readargs
  411.         ld a,(hl)
  412.         sub 0x30
  413.         ld hl,ansi_args
  414.         ld de,(ansi_anum)
  415.         add hl,de
  416.         ld d,a ;new digit
  417.         ld a,(hl)
  418.         ld e,a ;old digit
  419.         sla a
  420.         sla a
  421.         add e
  422.         sla a ;multiply by 10
  423.         add d
  424.         ld (hl),a
  425.         jr telnet_ansi0
  426.  
  427. telnetansi_docmd
  428.         ld hl,ansi_cmd
  429.         ld a,(ansi_cmd)
  430.         cp 'm'
  431.         jp z,telnetansi_docmd_m ;SGR
  432.         cp 'A'
  433.         jp z,telnetansi_docmd_A ;cursor up
  434.         cp 'B'
  435.         jp z,telnetansi_docmd_B ;cursor down
  436.         cp 'C'
  437.         jp z,telnetansi_docmd_C ;cursor light
  438.         cp 'D'
  439.         jp z,telnetansi_docmd_D ;cursor left
  440.         cp 'E'
  441.         jp z,telnetansi_docmd_E ;cursor x=1 y=y+n
  442.         cp 'F'
  443.         jp z,telnetansi_docmd_F ;cursor x=1 y=y-1
  444.         cp 'G'
  445.         jp z,telnetansi_docmd_G ;cursor x=n
  446.         cp 'H'
  447.         jp z,telnetansi_docmd_H ;cursor x=m y=n
  448.         cp 'J'
  449.         jp z,telnetansi_docmd_J ;n=0 clear screen after x n=1 clear screen before x n=2 clear all
  450.         cp 'K'
  451.         jp z,telnetansi_docmd_K ;n=0 clear line after x n=1 clear line before x n=2 clear whole line
  452.         cp 'S'
  453.         jp z,telnetansi_docmd_S ;scroll up n
  454.         cp 'T'
  455.         jp z,telnetansi_docmd_T ;scroll down n
  456.         cp 'f'
  457.         jp z,telnetansi_docmd_H ;cursor x y
  458.         jp telnet_read_resetstate
  459.  
  460. telnetansi_docmd_J
  461.         OS_GETXY
  462.         ld a,(ansi_args)
  463.         cp 2
  464.         jr z,telnetansi_docmd_J2
  465.         cp 1
  466.         jr z,telnetansi_docmd_J1
  467.         or a
  468.         jp nz,telnet_read_resetstate
  469. ;J0
  470.         ld a,(max_y)
  471.         sub d
  472.         jp z,telnetansi_docmd_K0
  473.         ld b,a
  474.         push de
  475.         ld e,0
  476.         inc d
  477.         OS_SETXY
  478. telnetansi_docmd_J0
  479.         push bc
  480.         ld b,80
  481.         call telnet_print_spaces_b
  482.         pop bc
  483.         djnz telnetansi_docmd_J0
  484.         pop de
  485.         jr telnetansi_docmd_K0
  486.  
  487. telnetansi_docmd_J1
  488.         ld a,d
  489.         or a
  490.         jp z,telnetansi_docmd_K1
  491.         ld b,d
  492.         push de
  493.         ld de,0
  494.         OS_SETXY
  495. telnetansi_docmd_J10
  496.         push bc
  497.         ld b,80
  498.         call telnet_print_spaces_b
  499.         pop bc
  500.         djnz telnetansi_docmd_J10
  501.         pop de
  502.         jr telnetansi_docmd_K1
  503. telnetansi_docmd_J2
  504.         ld e,0 ;color byte
  505.         OS_CLS
  506.         jp telnet_read_resetstate
  507.  
  508. ;KK
  509. telnetansi_docmd_K
  510.         OS_GETXY
  511.         ld a,(ansi_args)
  512.         cp 2
  513.         jr z,telnetansi_docmd_K2
  514.         cp 1
  515.         jr z,telnetansi_docmd_K1
  516.         or a
  517.         jp nz,telnet_read_resetstate
  518. ;J0
  519. telnetansi_docmd_K0
  520.         ld a,(max_x)
  521.         sub e
  522.         ld b,a
  523.         ld a,(max_y)
  524.         sub d
  525.         jp z,telnet_read_resetstate
  526.         inc b
  527. telnetansi_docmd_K0_noscroll
  528.         push de
  529.         call telnet_print_spaces_b
  530.         pop de
  531.         OS_SETXY
  532.         jp telnet_read_resetstate
  533. telnetansi_docmd_K1
  534.         ld a,e
  535.         or a
  536.         jp z,telnet_read_resetstate
  537.         push de
  538.         ld e,0
  539.         OS_SETXY
  540.         pop de
  541.         ld b,e
  542.         dec b
  543.         call telnet_print_spaces_b
  544.         jp telnet_read_resetstate
  545. telnetansi_docmd_K2
  546.         push de
  547.         ld e,0
  548.         OS_SETXY
  549.         ld b,80
  550.         call telnet_print_spaces_b
  551.         pop de
  552.         OS_SETXY
  553.         jp telnet_read_resetstate
  554.  
  555.  
  556. telnet_print_spaces_b
  557.         push bc
  558.         ld a,' '
  559.         PRCHAR
  560.         pop bc
  561.         djnz telnet_print_spaces_b
  562.         ret
  563.  
  564.  
  565. telnetansi_docmd_S
  566. ;CMD_SCROLLUP=0xe7 ;de=topyx, hl=hgt,wid ;x, wid even
  567.         ld de,0
  568.         ld a,(max_y)
  569.         inc a
  570.         ld h,a
  571.         ld a,(max_x)
  572.         inc a
  573.         ld l,a
  574.         ld a,(ansi_args)
  575.         ld b,a
  576.         or a
  577.         jr nz,telnetansi_docmd_S0
  578.         inc b
  579. telnetansi_docmd_S0
  580.         push de
  581.         push hl
  582.         push bc
  583.         OS_SCROLLUP
  584.         pop bc
  585.         pop hl
  586.         pop de
  587.         djnz telnetansi_docmd_S0
  588.         jp telnet_read_resetstate
  589.  
  590. telnetansi_docmd_T
  591. ;CMD_SCROLLDOWN=0xe7 ;de=topyx, hl=hgt,wid ;x, wid even
  592.         ld de,0
  593.         ld a,(max_y)
  594.         inc a
  595.         ld h,a
  596.         ld a,(max_x)
  597.         inc a
  598.         ld l,a
  599.         ld a,(ansi_args)
  600.         ld b,a
  601.         or a
  602.         jr nz,telnetansi_docmd_T0
  603.         inc b
  604. telnetansi_docmd_T0
  605.         push de
  606.         push hl
  607.         push bc
  608.         OS_SCROLLDOWN
  609.         pop bc
  610.         pop hl
  611.         pop de
  612.         djnz telnetansi_docmd_T0
  613.         jp telnet_read_resetstate
  614.  
  615. telnetansi_docmd_F;;cursor x=1 y up
  616.         OS_GETXY
  617.         ld e,0
  618.         jr telnetansi_docmd_A1
  619. telnetansi_docmd_A ;cursor up
  620.         OS_GETXY
  621. telnetansi_docmd_A1
  622.         ld a,(ansi_args)
  623.         or a
  624.         jr nz,telnetansi_docmd_A0
  625.         ld a,1
  626. telnetansi_docmd_A0
  627.         ld hl,(max_y)
  628.         sub d
  629.         neg
  630.         ld d,a
  631.         cp l
  632.         jr c,telnetansi_docmd_A_ret
  633.         ld d,0
  634. telnetansi_docmd_A_ret
  635.         OS_SETXY
  636.         jp telnet_read_resetstate
  637.  
  638. telnetansi_docmd_E ;cursor x=1 y down
  639.         OS_GETXY
  640.         ld e,1
  641.         jr telnetansi_docmd_B1
  642. telnetansi_docmd_B ;cursor down
  643.         OS_GETXY
  644. telnetansi_docmd_B1
  645.         ld a,(ansi_args)
  646.         or a
  647.         jr nz,telnetansi_docmd_B0
  648.         ld a,1
  649. telnetansi_docmd_B0
  650.         ld hl,(max_y)
  651.         add d
  652.         ld d,a
  653.         cp l
  654.         jr c,telnetansi_docmd_B_ret
  655.         ld d,h
  656. telnetansi_docmd_B_ret
  657.         OS_SETXY
  658.         jp telnet_read_resetstate
  659.  
  660. telnetansi_docmd_C ;cursor right
  661.         OS_GETXY
  662.         ld a,(ansi_args)
  663.         or a
  664.         jr nz,telnetansi_docmd_C0
  665.         ld a,1
  666. telnetansi_docmd_C0
  667.         ld hl,(max_x)
  668.         add e
  669.         ld e,a
  670.         cp l
  671.         jr c,telnetansi_docmd_C_ret
  672.         ld e,h
  673. telnetansi_docmd_C_ret
  674.         OS_SETXY
  675.         jp telnet_read_resetstate
  676.  
  677. telnetansi_docmd_D ;cursor left
  678.         OS_GETXY
  679.         ld a,(ansi_args)
  680.         or a
  681.         jr nz,telnetansi_docmd_D0
  682.         ld a,1
  683. telnetansi_docmd_D0
  684.         ld hl,(max_x)
  685.         sub e
  686.         neg
  687.         ld e,a
  688.         cp l
  689.         jr c,telnetansi_docmd_D_ret
  690.         ld e,0
  691. telnetansi_docmd_D_ret
  692.         OS_SETXY
  693.         jp telnet_read_resetstate
  694.  
  695. telnetansi_docmd_G ;cursor x
  696.         OS_GETXY
  697.         ld a,(ansi_args)
  698.         dec a
  699.         ld hl,(max_x)
  700.         inc hl
  701.         cp l
  702.         jp nc,telnet_read_resetstate
  703.         ld e,a
  704.         OS_SETXY
  705.         jp telnet_read_resetstate
  706.  
  707. telnetansi_docmd_H ;cursor x,y
  708.         ld a,(ansi_args+1)
  709.         or a
  710.         jr z,telnetansi_docmd_H0
  711.         dec a
  712. telnetansi_docmd_H0
  713.         ld hl,(max_x)
  714.         inc hl
  715.         cp l
  716.         jp nc,telnet_read_resetstate ;x
  717.         ld e,a
  718.         ld a,(ansi_args)
  719.         or a
  720.         jr z,telnetansi_docmd_H1
  721.         dec a
  722. telnetansi_docmd_H1
  723.         ld hl,(max_y)
  724.         inc hl
  725.         cp l
  726.         jp nc,telnet_read_resetstate ;y
  727.         ld d,a
  728.         OS_SETXY
  729.         jp telnet_read_resetstate
  730.  
  731. telnetansi_docmd_m ;SGR
  732.         ld a,(ansi_args)
  733.         or a ;0
  734.         jp z,telnetansi_docmd_mreset
  735.         cp 1
  736.         jr z,telnetansi_docmd_m1
  737.         cp 22
  738.         jr z,telnetansi_docmd_m22
  739.         cp 39
  740.         jr z,telnetansi_docmd_m39
  741.         cp 49
  742.         jr z,telnetansi_docmd_m49
  743.         sub 30
  744.         jp c,telnet_read_resetstate
  745.         sub 8
  746.         jr c,telnetansi_docmd_m30
  747.         sub 2 ;40
  748.         jp c,telnet_read_resetstate
  749.         sub 8
  750.         jr c,telnetansi_docmd_m40
  751.         call printbyte_a
  752.         sub 42 ;90
  753.         jp c,telnet_read_resetstate
  754.         sub 8
  755.         jr c,telnetansi_docmd_m90
  756.  
  757.         jp telnet_end
  758. telnetansi_docmd_m1
  759.         ld a,(color)
  760.         set 6,a
  761.         jr telnetansi_docmd_m0
  762. telnetansi_docmd_m22
  763.         ld a,(color)
  764.         res 6,a
  765.         jr telnetansi_docmd_m0
  766. telnetansi_docmd_m39
  767.         ld a,(color)
  768.         and 0b10111000
  769.         or  0b00000111 ;default text color
  770.         jr telnetansi_docmd_m0
  771. telnetansi_docmd_m49
  772.         ld a,(color)
  773.         and 0b01000111
  774.         jr telnetansi_docmd_m0
  775. telnetansi_docmd_m90
  776.         add 64-8 ;intensity
  777. telnetansi_docmd_m30
  778.         add 8
  779.         ld d,a
  780.         ld a,(color)
  781.         and 0b11111000
  782.         add d
  783.         jr telnetansi_docmd_m0
  784. telnetansi_docmd_m40
  785.         add 8
  786.         sla a
  787.         sla a
  788.         sla a
  789.         ld d,a
  790.         ld a,(color)
  791.         and 0b11000111
  792.         add d
  793.         jr telnetansi_docmd_m0
  794. telnetansi_docmd_mreset
  795.         ld a,7
  796. telnetansi_docmd_m0
  797.         ld e,a
  798.         ld (color),a
  799.         OS_SETCOLOR
  800.         jp telnet_read_resetstate
  801.  
  802. telnet_noprintable
  803.         cp TN_CMD_IAC
  804.         jp nz,telnet_read
  805.         call telnet_debug_a
  806.         call telnet_getbyte
  807.         jp nz,telnet_read
  808.         ld a,(hl)
  809.         cp TN_CMD_DO
  810.         jr z,telnet_cmd_do
  811.         cp TN_CMD_DONT
  812.         jr z,telnet_cmd_dont
  813.         cp TN_CMD_WILL
  814.         jr z,telnet_cmd_will
  815.         cp TN_CMD_SB
  816.         jp z,telnet_cmd_SB
  817.         jp telnet_read
  818.  
  819. telnet_cmd_do
  820.         call telnet_debug_a
  821.         call telnet_getbyte
  822.         jp nz,telnet_read
  823.         ld a,(hl)
  824.         push af
  825.         cp TN_OP_TERMINALTYPE
  826.         jr z,telnet_cmd_do_will
  827.         cp TN_OP_ECHO
  828.         jr z,telnet_cmd_do_echo
  829.         cp TN_OP_NAWS
  830.         jr z,telnet_cmd_do_naws
  831.         call telnet_sendwont_a
  832.         pop af
  833.         call telnet_debug_a
  834.         jp telnet_read
  835.  
  836. telnet_cmd_do_naws
  837.         call telnet_sendwill_a
  838.         call telnet_sendnaws
  839.         pop af
  840.         jp telnet_read
  841.  
  842. telnet_cmd_dont
  843.         call telnet_debug_a
  844.         call telnet_getbyte
  845.         jp nz,telnet_read
  846.         ld a,(hl)
  847.         push af
  848.         cp TN_OP_ECHO
  849.         jr z,telnet_cmd_dont_echo
  850.         call telnet_sendwont_a
  851.         pop af
  852.         call telnet_debug_a
  853.         jp telnet_read
  854.  
  855. telnet_cmd_will
  856.         call telnet_debug_a
  857.         call telnet_getbyte
  858.         jp nz,telnet_read
  859.         ld a,(hl)
  860.         push af
  861.         cp TN_OP_ECHO
  862.         jr z,telnet_cmd_dont_echo
  863. ;       call telnet_senddont_a
  864.         pop af
  865.         call telnet_debug_a
  866.         jp telnet_read
  867.  
  868. telnet_cmd_will_do
  869.         call telnet_senddo_a
  870.         pop af
  871.         call telnet_debug_a
  872.         jp telnet_read
  873.  
  874. telnet_cmd_do_echo
  875.         push af
  876.         ld a,(options)
  877.         or TN_ECHO
  878.         ld (options),a
  879.         pop af
  880.         jr telnet_cmd_do_will
  881.  
  882. telnet_cmd_do_will
  883.         call telnet_sendwill_a
  884.         pop af
  885.         call telnet_debug_a
  886.         jp telnet_read
  887.  
  888. telnet_cmd_dont_echo
  889.         push af
  890.         ld a,(options)
  891.         and 255-TN_ECHO
  892.         ld (options),a
  893.         pop af
  894.         jr telnet_cmd_do_dont
  895.  
  896. telnet_cmd_do_dont
  897.         call telnet_sendwont_a
  898.         pop af
  899.         call telnet_debug_a
  900.         jp telnet_read
  901.  
  902. telnet_cmd_SB
  903.         call telnet_debug_a
  904.         call telnet_getbyte
  905.         jp nz,telnet_read
  906.         ld a,(hl)
  907.         push af
  908.         cp TN_OP_TERMINALTYPE
  909.         jp nz,telnet_cmd_SB_unknown
  910.         pop af
  911.         call telnet_debug_a
  912.         call telnet_getbyte
  913.         jp nz,telnet_read
  914.         ld a,(hl)
  915.         cp 1 ; SEND
  916.         push af
  917.         jp nz,telnet_cmd_SB_unknown
  918.         call telnet_sendterminaltype
  919.  
  920. telnet_cmd_SB_unknown
  921.         pop af
  922.         call telnet_debug_a
  923.         call telnet_getbyte
  924.         jp nz,telnet_read
  925.         ld a,(hl)
  926.         cp TN_CMD_SE
  927.         jp z,telnet_read
  928.         push af
  929.         jr telnet_cmd_SB_unknown
  930.  
  931. telnet_end
  932.         ld a,(soc1)
  933.         ld E,0 ;close immediately
  934.         OS_NETSHUTDOWN
  935.         call print_nl
  936.         QUIT
  937.  
  938. ;------------------functions-----------
  939.         include "../_sdk/string.asm"
  940.  
  941. telnet_error_hl
  942.         call print_hl
  943.         jp waitquit
  944.  
  945. telnet_sendleft
  946.         ld hl,ansi_left
  947.         call telnet_sendtext_hl
  948.         jp telnet_loop0
  949.  
  950. telnet_sendright
  951.         ld hl,ansi_right
  952.         call telnet_sendtext_hl
  953.         jp telnet_loop0
  954.  
  955. telnet_sendup
  956.         ld hl,ansi_up
  957.         call telnet_sendtext_hl
  958.         jp telnet_loop0
  959.  
  960. telnet_senddown
  961.         ld hl,ansi_down
  962.         call telnet_sendtext_hl
  963.         jp telnet_loop0
  964.  
  965.  
  966. telnet_sendtext_hl ;TODO SLOW  (make direct, not thru putbyte)
  967.         ld a,(hl)
  968.         or a
  969.         ret z
  970.         push hl
  971.         call telnet_putbyte_a
  972.         pop hl
  973.         inc hl
  974.         jr telnet_sendtext_hl
  975.  
  976. telnet_backspace
  977.         push af
  978. ;       ld a,(options) ;echo off?
  979. ;       bit 0,a
  980. ;       jr z,telnet_backspace_remote
  981. ;       pop af
  982. ;       ret
  983. telnet_backspace_remote
  984.         ld a,TN_CMD_ERASECHAR
  985.         call telnet_senddo_a
  986.         pop af
  987.         ret
  988.  
  989. telnet_sendterminaltype
  990.         ld a,TN_CMD_IAC
  991.         call telnet_putbyte_a
  992.         ld a,TN_CMD_SB
  993.         call telnet_putbyte_a
  994.         ld a,TN_OP_TERMINALTYPE
  995.         call telnet_putbyte_a
  996.         ld a,0 ;IS
  997.         call telnet_putbyte_a
  998.         ld a,'i'
  999.         call telnet_putbyte_a
  1000.         ld a,'b'
  1001.         call telnet_putbyte_a
  1002.         ld a,'m'
  1003.         call telnet_putbyte_a
  1004.         ld a,'p'
  1005.         call telnet_putbyte_a
  1006.         ld a,'c'
  1007.         call telnet_putbyte_a
  1008.         ld a,'3'
  1009.         call telnet_putbyte_a
  1010.         ld a,TN_CMD_IAC
  1011.         call telnet_putbyte_a
  1012.         ld a,TN_CMD_SE
  1013.         call telnet_putbyte_a
  1014.         ret
  1015.  
  1016. telnet_sendwillnaws
  1017.         ld a,TN_CMD_IAC
  1018.         call telnet_putbyte_a
  1019.         ld a,TN_CMD_WILL
  1020.         call telnet_putbyte_a
  1021.         ld a,TN_OP_NAWS
  1022.         call telnet_putbyte_a
  1023.         ret
  1024.  
  1025. telnet_sendnaws
  1026.         ld a,TN_CMD_IAC
  1027.         call telnet_putbyte_a
  1028.         ld a,TN_CMD_SB
  1029.         call telnet_putbyte_a
  1030.         ld a,TN_OP_NAWS
  1031.         call telnet_putbyte_a
  1032.         xor a
  1033.         call telnet_putbyte_a
  1034.         ld a,80
  1035.         call telnet_putbyte_a
  1036.         xor a
  1037.         call telnet_putbyte_a
  1038.         ld a,25
  1039.         call telnet_putbyte_a
  1040.         ld a,TN_CMD_IAC
  1041.         call telnet_putbyte_a
  1042.         ld a,TN_CMD_SE
  1043.         call telnet_putbyte_a
  1044.         ret
  1045.  
  1046. telnet_senddont_a
  1047.         push af
  1048.         ld a,TN_CMD_IAC
  1049.         call telnet_putbyte_a
  1050.         ld a,TN_CMD_DONT
  1051.         call telnet_putbyte_a
  1052.         pop af
  1053.         call telnet_putbyte_a
  1054.         ret
  1055.  
  1056. telnet_sendwont_a
  1057.         push af
  1058.         ld a,TN_CMD_IAC
  1059.         call telnet_putbyte_a
  1060.         ld a,TN_CMD_WONT
  1061.         call telnet_putbyte_a
  1062.         pop af
  1063.         call telnet_putbyte_a
  1064.         ret
  1065.  
  1066. telnet_senddo_a
  1067.         push af
  1068.         ld a,TN_CMD_IAC
  1069.         call telnet_putbyte_a
  1070.         ld a,TN_CMD_DO
  1071.         call telnet_putbyte_a
  1072.         pop af
  1073.         call telnet_putbyte_a
  1074.         ret
  1075.  
  1076. telnet_sendwill_a
  1077.         push af
  1078.         ld a,TN_CMD_IAC
  1079.         call telnet_putbyte_a
  1080.         ld a,TN_CMD_WILL
  1081.         call telnet_putbyte_a
  1082.         pop af
  1083.         call telnet_putbyte_a
  1084.         ret
  1085.  
  1086. telnet_send_hl ;hl=buf
  1087.         ld d,h
  1088.         ld e,l
  1089.         call telnet_sizeof_hl
  1090.         ld h,0
  1091.         ld l,a
  1092.         ld a,(soc1)
  1093.         OS_WIZNETWRITE
  1094.         ret
  1095.  
  1096. telnet_getbyte;*HL=byte a=FF error
  1097.         ld a,(bufindex)
  1098.         ld e,a
  1099.         ld a,(bufmax)
  1100.         cp e
  1101.         jr c, telnet_getbyte_read;buffer empty
  1102.         ld hl,buf
  1103.         ld d,0
  1104.         add hl,de
  1105.         ld a,e
  1106.         inc a
  1107.         ld (bufindex),a
  1108.         xor a
  1109.         or a
  1110.         ret
  1111. telnet_getbyte_read
  1112.         ld hl,255
  1113.         ld de,buf
  1114.         ld a,(soc1)
  1115.         OS_WIZNETREAD
  1116.         bit 7,h
  1117.         jp z,telnet_getbyte_readed ;no error read
  1118.         cp ERR_EAGAIN
  1119.         jr z,telnet_getbyte_empty
  1120.         jp telnet_end ;error read
  1121. telnet_getbyte_readed
  1122.         dec hl
  1123.         ld a,l
  1124.         ld (bufmax),a ;max index
  1125.         xor a
  1126.         ld (bufindex),a
  1127.         jr telnet_getbyte
  1128. telnet_getbyte_empty
  1129.         ld a,0xFF
  1130.         or a
  1131.         ret
  1132.  
  1133. telnet_putbyte_a;*HL=byte a=FF error
  1134.         push af
  1135.         ld a,(wrbufindex)
  1136.         cp 255
  1137.         jr z, telnet_putbyte_full;buffer full
  1138.         ld hl,wrbuf
  1139.         ld d,0
  1140.         ld e,a
  1141.         add hl,de
  1142.         inc a
  1143.         ld (wrbufindex),a
  1144.         pop af
  1145.         ld (hl),a
  1146.         xor a
  1147.         or a
  1148.         ret
  1149. telnet_putbyte_full
  1150.         pop af
  1151.         ld a,0xFF
  1152.         or a
  1153.         ret
  1154.  
  1155. telnet_purge_writebuf
  1156.         ld a,(wrbufindex)
  1157.         or a
  1158.         ret z
  1159.         ld h,0
  1160.         ld l,a
  1161.         ld a,(soc1)
  1162.         ld de,wrbuf
  1163.         OS_WIZNETWRITE
  1164.         ld a,h
  1165.         or a
  1166.         ret m
  1167.         xor a
  1168.         ld (wrbufindex),a
  1169.         ret
  1170.  
  1171. telnet_sizeof_hl
  1172.         ld b,0
  1173. telnet_sizeof_hl0
  1174.         ld a,(hl)
  1175.         or a
  1176.         jr z,telnet_sizeof_hl_end
  1177.         inc b
  1178.         inc hl
  1179.         jr telnet_sizeof_hl0
  1180. telnet_sizeof_hl_end
  1181.         ld a,b
  1182.         ret
  1183.  
  1184. telnet_setkey_d
  1185.         ld a,(options)
  1186.         or TN_DEBUG
  1187.         ld (options),a
  1188.         ret
  1189.  
  1190. telnet_resolveerror
  1191.         ld e,0
  1192.         OS_CLS
  1193.         ld hl,txt_resolveerror
  1194.         call print_hl
  1195.         ld hl,arg_hostname
  1196.         call print_hl
  1197.         jp waitquit
  1198.  
  1199. telnet_iptostr_hltode
  1200.         call bytetostr_hltode
  1201.         ld a, '.'
  1202.         ld (de), a
  1203.         inc de
  1204.         call bytetostr_hltode
  1205.         ld a, '.'
  1206.         ld (de), a
  1207.         inc de
  1208.         call bytetostr_hltode
  1209.         ld a, '.'
  1210.         ld (de), a
  1211.         inc de
  1212.         call bytetostr_hltode
  1213.         ret
  1214.  
  1215. telnet_showusage
  1216.         ld e,0
  1217.         OS_CLS
  1218.         ld hl,txt_usage
  1219.         call print_hl
  1220.         jp waitquit
  1221.  
  1222. telnet_showhelp
  1223.         ld e,0
  1224.         OS_CLS
  1225.         ld hl,txt_version
  1226.         call print_hl
  1227.         ld hl,txt_usage
  1228.         call print_hl
  1229.         ld hl,txt_help
  1230.         call print_hl
  1231.         jp waitquit
  1232.  
  1233. telnet_showversion
  1234.         ld e,0
  1235.         OS_CLS
  1236.         ld hl,txt_version
  1237.         call print_hl
  1238. waitquit
  1239.         call waitkey
  1240.         QUIT
  1241.  
  1242.  
  1243.  
  1244. telnet_debug_a
  1245.         push af
  1246.         ld a,(options)
  1247.         bit 7,a
  1248.         jr z,telnet_debug_a_no
  1249.         pop af
  1250.         call printhex_a
  1251.         ret
  1252. telnet_debug_a_no
  1253.         pop af
  1254.         ret
  1255.  
  1256. dns_resolver            ;DE-domain name
  1257. dns_err_loop
  1258.         push de
  1259.         ld hl,dns_head
  1260.         ld de,buf
  1261.         ld bc,6
  1262.         ldir
  1263.         ex de,hl
  1264.         ld de,buf+7
  1265.         ld (hl),b
  1266.         ld  c,256-7
  1267.         ldir
  1268.         ld de,buf+12
  1269.         ld h,d
  1270.         ld l,e
  1271.         pop bc
  1272. name_loop
  1273.         inc hl
  1274.         ld a,(bc)
  1275.         ld (hl),a
  1276.         inc bc
  1277.         cp '.'
  1278.         jr z,is_dot
  1279.         or a
  1280.         jr nz,name_loop
  1281. is_dot
  1282.         sbc hl,de
  1283.         ex de,hl
  1284.         dec e
  1285.         ld (hl),e
  1286.         inc e
  1287.         add hl,de
  1288.         ld d,h
  1289.         ld e,l
  1290.         or a
  1291.         jr nz,name_loop
  1292.         inc a
  1293.         inc hl
  1294.         inc hl
  1295.         ld (hl),a
  1296.         inc hl
  1297.         inc hl
  1298.         ld (hl),a
  1299.         inc hl
  1300.         push hl
  1301. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  1302.         ld a, (conparam_ip)
  1303.         cp 0
  1304.         jp nz, skipgetdns
  1305.         ld de, conparam_ip;DE= ptr to DNS buffer(4 bytes)
  1306.         OS_GETDNS
  1307. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;  
  1308. skipgetdns:    
  1309.         ld de,0x0203
  1310.         OS_NETSOCKET
  1311.         ld a,l
  1312.         ld (soc1),a
  1313.         or a
  1314.         jp m,dns_exiterr
  1315.         ;LD DE,conparam
  1316.         ;OS_NETCONNECT
  1317.         ;ld a,l
  1318.         ;or a
  1319.         ;jp m,dns_exiterr
  1320.        
  1321.         pop hl
  1322.         push hl
  1323.         ld de,0xffff&(-buf)
  1324.         add hl,de
  1325.         LD a,(soc1)
  1326.         LD IX,buf
  1327.         LD DE,conparam
  1328.         OS_WIZNETWRITE
  1329.         bit 7,h
  1330.         jr nz,dns_exitcode
  1331. dns_err_count=$+1
  1332.         ld b,25
  1333.         jr recv_wait1
  1334. recv_wait
  1335.         push bc
  1336.         YIELD
  1337.         pop bc
  1338. recv_wait1
  1339.         push bc
  1340.         ld hl,256
  1341.         LD a,(soc1)
  1342.         LD ix,buf
  1343.         ld de,sa_recv
  1344.         OS_WIZNETREAD
  1345.         pop bc
  1346.         ;ld a,h
  1347.         ;or l
  1348.         bit 7,h
  1349.         jr z,recv_wait_end
  1350.         djnz recv_wait
  1351.         jr dns_exiterr
  1352. recv_wait_end
  1353.         bit 7,h
  1354.         jr nz,dns_exitcode
  1355.         ld a,(buf+3)
  1356.         and 0x0f
  1357.         jr nz,dns_exiterr
  1358. dns_exitcode
  1359.         LD a,(soc1)
  1360.         LD E,0
  1361.         OS_NETSHUTDOWN
  1362.         pop hl
  1363. reqpars_l
  1364.         inc hl ; Skip compressed
  1365.         inc hl ; name
  1366.         inc hl ; Type
  1367.         ld a,(hl) ; of message
  1368.         ld de,7 ; Skip
  1369.         add hl,de ; Class , TTL
  1370.         ld b,(hl) ; RDLENGTH
  1371.         inc hl
  1372.         ld c,(hl)
  1373.         inc hl
  1374.         dec a
  1375.         ret z   ; If TYPE was 0x1 (IP) exit
  1376.         cp 4
  1377.         jr nz,exiterr1 ; If TYPE was not 0x5 (CNAME) error
  1378.         add hl,bc ; to next message
  1379.         jr reqpars_l
  1380. dns_exiterr
  1381.         pop af
  1382.         LD a,(soc1)
  1383.         LD E,0
  1384.         OS_NETSHUTDOWN
  1385.         ld a,(dns_err_count)
  1386.         add a,a
  1387.         ld (dns_err_count),a
  1388.         jp nc,dns_err_loop
  1389. exiterr1
  1390.         ld hl,0
  1391.         ret
  1392.  
  1393. waitkey
  1394.         push bc
  1395.         push de
  1396.         push hl
  1397. keyloop
  1398.     GET_KEY
  1399.     cp 0
  1400.         jp z, keyloop
  1401.         pop hl
  1402.         pop de
  1403.         pop bc
  1404.         ret
  1405.  
  1406. soc1            db 0
  1407. dns_head        db 0x11,0x22,0x01,0x00,0x00,0x01
  1408. conparam        db 0;AF_INET
  1409. PORT=53;DNS;14321
  1410. conparam_port
  1411.                 db PORT/256,PORT&255;53 ;port (HSB,LSB)
  1412. conparam_ip
  1413.                 db 0,0,0,0 ;ip
  1414.                 ds 8 ;reserve
  1415. ;conparam1
  1416. sa_recv
  1417.         db 0,0,0,0,0,0,0
  1418.         ds 8 ;reserve
  1419. buf             ds 255
  1420. bufindex        db 1
  1421. bufmax          db 0
  1422. wrbuf           ds 255
  1423. wrbufindex      db 0
  1424. ip              ds 4
  1425. txtip           db 0,0,0,'.',0,0,0,'.',0,0,0,'.',0,0,0,0
  1426. options         db 0
  1427. ansi_args       db 0,0,0,0,0,0,0
  1428. ansi_anum       db 0,0
  1429. ansi_cmd        db 0,0
  1430. max_x           db 79,0
  1431. max_y           db 24,0
  1432. color           db 7
  1433. ansi_up         db 27,'[','A',0
  1434. ansi_down       db 27,'[','B',0
  1435. ansi_right      db 27,'[','C',0
  1436. ansi_left       db 27,'[','D',0
  1437. ansi_pal        dw 0xF3F3,0xF1F1,0xE3E3,0xE1E1,0xF2F2,0xF0F0,0xE2E2,0xE0E0
  1438.                 dw 0x1313,0xB1B1,0x6363,0x2121,0xD2D2,0x9090,0x4242,0x0000
  1439. read_state      db 0 ;0 - text, 1- esc, 2-ansi
  1440.  
  1441. ;oldtimer ds 2
  1442. arg_hostname ds 255
  1443.  
  1444. txt_usage db "Use telnet [-d] [-h] [-V] <host_name|ip>",0x0D,0x0A,0
  1445. txt_help  db "            -d : Print incoming IAC commands",0x0D,0x0A
  1446.           db "            -h : Show this help and exit",0x0D,0x0A
  1447.           db "            -V : Show version info and exit",0x0D,0x0A,0
  1448. txt_version db "Telnet v0.1 NedoPC group 2019",0x0D,0x0A,0x0d,0x0a,0
  1449. txt_resolveerror db "Can not resolve ",0
  1450. txt_socketerror db "IP socket creation error",0x0d,0x0a,0
  1451. txt_socketopenerror db "IP socket opening error",0x0d,0x0a,0
  1452. txt_writeerror db "Something wrong with write",0x0D,0x0A,0
  1453. txt_head1 db "Telnet connecting to ",0
  1454. txt_head2 db " (",0
  1455. txt_head3 db ")...",0x0D,0x0A,0
  1456. txt_work1 db "Connected to ",0
  1457.  
  1458. cmd_end
  1459.         display "Size ",/d,cmd_end-cmd_begin," bytes"
  1460.         ;display "telnet_loop: ",telnet_loop
  1461.         ;display "telnet_read: ",telnet_read
  1462.         ;display "telnet_purge_writebuf: ",telnet_purge_writebuf
  1463.         ;display "telnet_ansi0: ",telnet_ansi0
  1464.         ;display "telnet_noresolve: ",telnet_noresolve
  1465.         savebin "telnet.com",cmd_begin,cmd_end-cmd_begin
  1466.  
  1467.         LABELSLIST "..\..\us\user.l"
  1468.