?login_element?

Subversion Repositories NedoOS

Rev

Rev 1882 | Details | Compare with Previous | Last modification | View Log | RSS feed

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