Rev 1656 | Details | Compare with Previous | Last modification | View Log
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 33 | Alone | 1 | httphostname=DISKBUF+0x400 |
| 2 | dnsbuf=DISKBUF+0x0600 |
||
| 3 | |||
| 28 | Alone | 4 | IPPROTO_TCP EQU 6 |
| 5 | IPPROTO_UDP EQU 17 |
||
| 6 | |||
| 7 | AF_UNSPEC EQU 0 |
||
| 8 | AF_INET EQU 2 |
||
| 9 | AF_INET6 EQU 23 |
||
| 10 | |||
| 11 | SOCK_STREAM EQU 0x01 ;tcp/ip |
||
| 12 | SOCK_DGRAM EQU 0x03 ;udp/ip |
||
| 13 | |||
| 14 | SHUT_RDWR EQU 2 |
||
| 15 | ERR_INTR EQU 4 |
||
| 16 | ERR_NFILE EQU 23 |
||
| 519 | dimkam | 17 | ERR_EAGAIN EQU 35 ;/* Try again */ |
| 28 | Alone | 18 | ERR_ALREADY EQU 37 |
| 19 | ERR_NOTSOCK EQU 38 |
||
| 20 | ERR_EMSGSIZE EQU 40 ;/* Message too long */ |
||
| 21 | ERR_PROTOTYPE EQU 41 |
||
| 22 | ERR_AFNOSUPPORT EQU 47 |
||
| 23 | ERR_HOSTUNREACH EQU 65 |
||
| 24 | ERR_CONNRESET EQU 54 |
||
| 25 | ERR_NOTCONN EQU 57 |
||
| 26 | |||
| 304 | dimkam | 27 | proxserv |
| 1003 | dimkam | 28 | db "nedoos.ru/p/",0 |
| 28 | Alone | 29 | openstream_http |
| 1656 | dimkam | 30 | |
| 32 | Alone | 31 | ;de=filename (without "http://"), slash always presents |
| 32 | ;out: A!=0 => error |
||
| 33 | ex de,hl |
||
| 68 | Alone | 34 | openstream_http_hl |
| 304 | dimkam | 35 | push hl |
| 32 | Alone | 36 | ld de,httphostname |
| 304 | dimkam | 37 | ld a,(curprotocol) |
| 38 | cp 3 |
||
| 39 | jr nz,nonhttps |
||
| 40 | ld hl,proxserv |
||
| 41 | call strcopy |
||
| 42 | dec de |
||
| 43 | nonhttps |
||
| 44 | pop hl |
||
| 45 | ;push de |
||
| 444 | alone | 46 | call strcopy ;hl->de |
| 249 | alone | 47 | ld hl,80*256 ;BIG ENDIAN |
| 261 | alone | 48 | ld a,(curprotocol) |
| 303 | alone | 49 | cp 2 |
| 50 | jr nz,$+4 ;1/3=http |
||
| 261 | alone | 51 | ld h,70 ;2=gopher |
| 249 | alone | 52 | ld (curport),hl |
| 304 | dimkam | 53 | ld hl,httphostname ;pop hl |
| 249 | alone | 54 | ;call findslash |
| 55 | openstream_http_findslash0 |
||
| 56 | ld a,(hl) |
||
| 57 | cp ':' |
||
| 58 | jr z,openstream_http_setport |
||
| 59 | cp '/' |
||
| 60 | jr z,openstream_http_slash |
||
| 61 | or a |
||
| 62 | jr z,openstream_http_slash |
||
| 63 | inc hl |
||
| 64 | jr openstream_http_findslash0 |
||
| 65 | openstream_http_setport |
||
| 66 | ld (hl),0 ;end of httphostname |
||
| 67 | ;decode port |
||
| 68 | ld de,0 ;oldport |
||
| 69 | openstream_http_decodeport0 |
||
| 70 | inc hl |
||
| 71 | ld a,(hl) |
||
| 72 | sub '0' |
||
| 73 | cp 10 |
||
| 74 | jr nc,openstream_http_decodeportq |
||
| 75 | push hl |
||
| 76 | ld h,d |
||
| 77 | ld l,e |
||
| 78 | add hl,hl |
||
| 79 | add hl,hl |
||
| 80 | add hl,de |
||
| 81 | add hl,hl ;hl=oldport*10 |
||
| 82 | add a,l |
||
| 83 | ld e,a |
||
| 84 | adc a,h |
||
| 85 | sub e |
||
| 86 | ld d,a ;de=port |
||
| 87 | pop hl |
||
| 88 | jr openstream_http_decodeport0 |
||
| 89 | openstream_http_decodeportq |
||
| 90 | ;de=port |
||
| 91 | ld a,d |
||
| 92 | ld d,e |
||
| 93 | ld e,a |
||
| 94 | ld (curport),de ;BIG ENDIAN |
||
| 95 | ;hl=delimiter after ser.ver:NNN |
||
| 96 | openstream_http_slash |
||
| 97 | ;hl=at delimiter after hostname and maybe port |
||
| 98 | xor a |
||
| 99 | cp (hl) |
||
| 100 | ld (hl),a ;end of httphostname |
||
| 101 | jr z,$+3 |
||
| 102 | inc hl ;after delimiter |
||
| 32 | Alone | 103 | push hl ;filename after ser.ver/ |
| 104 | |||
| 105 | ;httphostname=server name (filename before slash, not including slash) |
||
| 33 | Alone | 106 | ;top of stack=filename after slash (after ser.ver/) |
| 32 | Alone | 107 | |
| 30 | DimkaM | 108 | call dns_resolver |
| 109 | ld a,l |
||
| 110 | or h |
||
| 111 | jp z,CONNECTIONERROR |
||
| 112 | ld de,host_ia+3 |
||
| 113 | ld bc,4 |
||
| 114 | ldir |
||
| 28 | Alone | 115 | ;create socket: |
| 30 | DimkaM | 116 | ld de,SOCK_STREAM+(AF_INET<<8) |
| 117 | OS_NETSOCKET |
||
| 118 | ld a,l |
||
| 119 | or a |
||
| 120 | jp m,CONNECTIONERROR;?C_EXIT |
||
| 121 | ld (soc1),a |
||
| 32 | Alone | 122 | LD DE,host_ia |
| 30 | DimkaM | 123 | OS_NETCONNECT |
| 32 | Alone | 124 | ld a,l ;DimkaM 12.03.2019 |
| 30 | DimkaM | 125 | or a |
| 126 | jp p,connect_ok |
||
| 127 | createsoc_err |
||
| 128 | ld a,(soc1) |
||
| 129 | ld e,0 |
||
| 130 | OS_NETSHUTDOWN |
||
| 131 | jp CONNECTIONERROR |
||
| 132 | connect_ok |
||
| 28 | Alone | 133 | ;form GET message in DISKBUF (will be deleted in readstream) |
| 251 | alone | 134 | ld de,DISKBUF |
| 135 | |||
| 261 | alone | 136 | ;ld a,0xfe |
| 137 | ;in a,(0xfe) |
||
| 138 | ;rra |
||
| 139 | ld a,(curprotocol) |
||
| 344 | alone | 140 | ;TODO - ᤥ ⨯ 3 - 祣 |
| 304 | dimkam | 141 | cp 2 |
| 142 | jr nz,connect_nogopher ;http=1, gopher=2 |
||
| 251 | alone | 143 | pop hl ;filename |
| 144 | call strcopy |
||
| 145 | dec de |
||
| 146 | ld a,0xd |
||
| 147 | ld (de),a |
||
| 148 | inc de |
||
| 149 | ld a,0xa |
||
| 150 | ld (de),a |
||
| 151 | inc de |
||
| 152 | jr connect_makeheaderq |
||
| 153 | connect_nogopher |
||
| 154 | |||
| 28 | Alone | 155 | ld hl,tGET |
| 156 | call strcopy |
||
| 30 | DimkaM | 157 | dec de |
| 32 | Alone | 158 | |
| 28 | Alone | 159 | pop hl ;filename |
| 160 | call strcopy |
||
| 30 | DimkaM | 161 | dec de |
| 344 | alone | 162 | ;amp.dascene.net: url: |
| 68 | Alone | 163 | dec de |
| 164 | ld a,(de) |
||
| 165 | sub ' ' |
||
| 166 | jr z,$+3 |
||
| 167 | inc de |
||
| 168 | |||
| 28 | Alone | 169 | ld hl,tHTTP_host |
| 170 | call strcopy |
||
| 30 | DimkaM | 171 | dec de |
| 28 | Alone | 172 | ld hl,httphostname |
| 173 | call strcopy |
||
| 30 | DimkaM | 174 | dec de |
| 28 | Alone | 175 | ld hl,tGETend |
| 32 | Alone | 176 | call strcopy ;with terminator |
| 177 | dec de ;no terminator? |
||
| 251 | alone | 178 | |
| 179 | connect_makeheaderq |
||
| 30 | DimkaM | 180 | ex de,hl |
| 181 | ld de,0xffff&(-DISKBUF) |
||
| 182 | add hl,de |
||
| 33 | Alone | 183 | |
| 31 | Alone | 184 | ;send message to server: |
| 30 | DimkaM | 185 | LD a,(soc1) |
| 186 | LD DE,DISKBUF |
||
| 31 | Alone | 187 | ;de=message |
| 188 | ;hl=message size |
||
| 33 | Alone | 189 | ;jr $ |
| 30 | DimkaM | 190 | OS_WIZNETWRITE |
| 191 | bit 7,h |
||
| 192 | jr nz,createsoc_err |
||
| 28 | Alone | 193 | |
| 31 | Alone | 194 | ld a,1 |
| 195 | ld (http_firstreadflag),a |
||
| 196 | |||
| 197 | xor a ;OK |
||
| 28 | Alone | 198 | ret |
| 199 | |||
| 200 | ;hl = poi to filename in string |
||
| 201 | ;out: de = after last dot or start |
||
| 202 | findlastdot |
||
| 203 | ld d,h |
||
| 204 | ld e,l ;de = after last dot |
||
| 205 | findlastdot0 |
||
| 206 | ld a,[hl] |
||
| 207 | inc hl |
||
| 208 | or a |
||
| 209 | ret z |
||
| 210 | cp '.' |
||
| 211 | jr nz,findlastdot0 |
||
| 212 | jr findlastdot |
||
| 213 | |||
| 68 | Alone | 214 | tlocation |
| 215 | db "Location: ",0 |
||
| 28 | Alone | 216 | |
| 217 | readstream_http |
||
| 68 | Alone | 218 | ld (readstream_http_requestedsize),hl |
| 30 | DimkaM | 219 | add hl,de |
| 344 | alone | 220 | push de ;砫 |
| 31 | Alone | 221 | |
| 222 | http_firstreadflag=$+1 |
||
| 223 | ld a,1 |
||
| 224 | dec a |
||
| 261 | alone | 225 | jp nz,readstream_http_nofirstread |
| 226 | curprotocol=$+1 |
||
| 227 | ld a,0;(curprotocol) |
||
| 303 | alone | 228 | cp 2 |
| 444 | alone | 229 | jp z,readstream_http_nohead ;2=gopher |
| 296 | alone | 230 | ;ld a,0xfe |
| 231 | ;in a,(0xfe) |
||
| 232 | ;rra |
||
| 233 | ;jr nc,readstream_http_nohead ;Caps Shift - show headers |
||
| 251 | alone | 234 | |
| 31 | Alone | 235 | ;read until cr,lf,cr,lf or EOF or endofbuf |
| 236 | push hl |
||
| 237 | push de |
||
| 238 | or a |
||
| 344 | alone | 239 | sbc hl,de ;ࠧ |
| 68 | Alone | 240 | jr readstream_http_headlines0 |
| 32 | Alone | 241 | readstream_http_headretry |
| 242 | push de |
||
| 243 | push hl |
||
| 244 | call yieldgetkeynolang |
||
| 245 | pop hl |
||
| 246 | pop de |
||
| 116 | alone | 247 | cp key_esc |
| 73 | Alone | 248 | jp z,readstream_err |
| 2202 | dimkam | 249 | display "readstream_http_head0 ", readstream_http_head0 |
| 68 | Alone | 250 | readstream_http_headlines0 |
| 251 | ld (readstream_http_headlineaddr),de |
||
| 31 | Alone | 252 | readstream_http_head0 |
| 253 | push de |
||
| 344 | alone | 254 | push hl ;ࠧ |
| 31 | Alone | 255 | ld hl,1 |
| 256 | ld a,(soc1) |
||
| 257 | OS_WIZNETREAD |
||
| 258 | bit 7,h |
||
| 259 | pop hl |
||
| 260 | pop de |
||
| 519 | dimkam | 261 | jr z,readstream_http_head_ok |
| 262 | cp ERR_EAGAIN |
||
| 263 | jr z,readstream_http_head0 ; ⢥ ᯥ |
||
| 264 | jp readstream_err |
||
| 265 | readstream_http_head_ok |
||
| 344 | alone | 266 | dec hl ;ࠧ |
| 30 | DimkaM | 267 | ld a,h |
| 268 | or l |
||
| 1656 | dimkam | 269 | jp z,readstream_err |
| 31 | Alone | 270 | ld b,d |
| 271 | ld c,e |
||
| 272 | inc de |
||
| 273 | ld a,(bc) |
||
| 274 | cp 0x0a |
||
| 275 | jr nz,readstream_http_head0 |
||
| 276 | dec bc |
||
| 277 | ld a,(bc) |
||
| 278 | cp 0x0d |
||
| 279 | jr nz,readstream_http_head0 |
||
| 68 | Alone | 280 | ;dec bc |
| 281 | ;ld a,(bc) |
||
| 282 | ;cp 0x0a |
||
| 283 | ;jr nz,readstream_http_head0 |
||
| 284 | ;dec bc |
||
| 285 | ;ld a,(bc) |
||
| 286 | ;cp 0x0d |
||
| 287 | ;jr nz,readstream_http_head0 |
||
| 288 | |||
| 344 | alone | 289 | ; ப , readstream_http_headq |
| 68 | Alone | 290 | readstream_http_headlineaddr=$+1 |
| 555 | alone | 291 | ld a,(0) ;ok |
| 68 | Alone | 292 | cp 0x0d |
| 293 | jr z,readstream_http_headq |
||
| 294 | |||
| 295 | push de |
||
| 296 | push hl |
||
| 297 | |||
| 298 | ;jr $ |
||
| 299 | ld hl,(readstream_http_headlineaddr) |
||
| 300 | ld de,tlocation |
||
| 344 | alone | 301 | ; ப Location: <url> ( moved temporarily) |
| 68 | Alone | 302 | call strcp_tillde0 |
| 303 | ld b,h |
||
| 304 | ld c,l |
||
| 305 | pop hl |
||
| 306 | pop de |
||
| 307 | jr nz,readstream_http_headlines0 |
||
| 308 | ;bc=url |
||
| 1656 | dimkam | 309 | ;push bc |
| 310 | ; ⥪騩 |
||
| 311 | ld hl,curfulllink - 1 |
||
| 312 | .strcpy |
||
| 313 | inc hl |
||
| 314 | ld a,(bc) |
||
| 315 | ld (hl),a |
||
| 316 | inc bc |
||
| 317 | cp 0x0d |
||
| 318 | jr nz,.strcpy |
||
| 319 | xor a |
||
| 320 | ld (hl),a |
||
| 321 | |||
| 68 | Alone | 322 | call closestream_http |
| 1656 | dimkam | 323 | |
| 324 | ld hl,curfulllink |
||
| 325 | |||
| 444 | alone | 326 | call isprotocolpresent ;out: nz=protocol absent (hl=link), z=protocol present (a=protocol (0=file, 1=http), hl=after "//") |
| 327 | jr nz,readstream_http_redirect_noprotocol |
||
| 328 | ld (curprotocol),a |
||
| 329 | readstream_http_redirect_noprotocol |
||
| 68 | Alone | 330 | call openstream_http_hl |
| 331 | |||
| 31 | Alone | 332 | pop de |
| 333 | pop hl |
||
| 68 | Alone | 334 | |
| 344 | alone | 335 | pop de ;砫 |
| 68 | Alone | 336 | readstream_http_requestedsize=$+1 |
| 337 | ld hl,0 |
||
| 338 | ;jr $ |
||
| 444 | alone | 339 | ld a,(curprotocol) |
| 340 | cp 3 ;https |
||
| 341 | jr z,readstream_http_redirectq ; |
||
| 68 | Alone | 342 | xor a |
| 444 | alone | 343 | ld (http_firstreadflag),a ;祬- ࠭窠, 㤠 ॠ amp.dascene.net, ⤠ 䠩 http (HTTP/1.1 200 OK...)! WoS ! |
| 344 | readstream_http_redirectq |
||
| 68 | Alone | 345 | jp readstream_http |
| 346 | |||
| 347 | |||
| 348 | readstream_http_headq |
||
| 349 | pop de |
||
| 350 | pop hl |
||
| 344 | alone | 351 | ;TODO ।: 筮, ⮬ ᪠ , १ , ᤢ ⮪ 砫 ⮫쪮 |
| 68 | Alone | 352 | |
| 251 | alone | 353 | readstream_http_nohead |
| 68 | Alone | 354 | xor a |
| 355 | ld (http_firstreadflag),a |
||
| 31 | Alone | 356 | |
| 357 | readstream_http_nofirstread |
||
| 358 | |||
| 359 | readstream_loop |
||
| 344 | alone | 360 | push hl ;㤠 |
| 361 | push de ;⥪騩 ptr |
||
| 31 | Alone | 362 | or a |
| 344 | alone | 363 | sbc hl,de ;ࠧ |
| 31 | Alone | 364 | jr z,readstream_err |
| 30 | DimkaM | 365 | LD a,(soc1) |
| 366 | OS_WIZNETREAD |
||
| 367 | bit 7,h |
||
| 519 | dimkam | 368 | jr z,readstream_loop_ok |
| 369 | cp ERR_EAGAIN |
||
| 30 | DimkaM | 370 | jr nz,readstream_err |
| 519 | dimkam | 371 | ld hl,0 |
| 372 | readstream_loop_ok |
||
| 344 | alone | 373 | pop de ;de=㤠 ⠫, hl=쪮 ⠫ |
| 30 | DimkaM | 374 | add hl,de |
| 344 | alone | 375 | ex de,hl ;de=⥪騩 ptr |
| 376 | pop hl ;㤠 |
||
| 30 | DimkaM | 377 | jr readstream_loop |
| 378 | readstream_err: |
||
| 379 | pop hl |
||
| 380 | pop de |
||
| 31 | Alone | 381 | |
| 344 | alone | 382 | pop de ;砫 |
| 30 | DimkaM | 383 | or a |
| 384 | sbc hl,de |
||
| 385 | ret |
||
| 386 | |||
| 387 | |||
| 28 | Alone | 388 | closestream_http |
| 30 | DimkaM | 389 | ld e,0 |
| 390 | ld a,(soc1) |
||
| 391 | OS_NETSHUTDOWN |
||
| 28 | Alone | 392 | ret |
| 393 | |||
| 249 | alone | 394 | curport=$+1 |
| 30 | DimkaM | 395 | host_ia: |
| 396 | defb 0,0,80,8,8,8,8 |
||
| 28 | Alone | 397 | ;httpslashcurdir |
| 398 | db '/' |
||
| 399 | httpcurdir |
||
| 400 | ;server/path (without / in the end) |
||
| 401 | ds 128 |
||
| 402 | |||
| 403 | soc1 |
||
| 404 | db 0 ;current socket |
||
| 405 | |||
| 406 | tGET |
||
| 407 | db "GET /",0 |
||
| 408 | tHTTP_host |
||
| 31 | Alone | 409 | db " HTTP/1.0\r\n" ;1.0 DimkaM for nedopc.com |
| 68 | Alone | 410 | db "Connection: close\r\n" |
| 28 | Alone | 411 | db "Host: ",0 |
| 412 | tGETend |
||
| 68 | Alone | 413 | db "\r\n" |
| 973 | dimkam | 414 | db "User-Agent: Mozilla/4.0 (compatible; MSIE5.01; NedoOS)\r\n" |
| 68 | Alone | 415 | db "\r\n",0 |
| 28 | Alone | 416 | |
| 417 | ;httpgetstr |
||
| 418 | ;defb 'GET /cspr/index.htm HTTP/1.1',13,10 |
||
| 419 | ;defb 'Host: dimkam.ru',13,10 |
||
| 2202 | dimkam | 420 | ;defb 13,10 |
| 421 | display "dns_resolver ", $ |
||
| 30 | DimkaM | 422 | dns_resolver: ;DE-domain name |
| 2202 | dimkam | 423 | ld de,httphostname-1 |
| 424 | ld hl,dnsbuf-1 |
||
| 425 | dns_ip_loop1 |
||
| 426 | inc hl |
||
| 427 | ld (hl),0 |
||
| 428 | dns_ip_loop |
||
| 429 | inc de |
||
| 430 | ld a,(de) |
||
| 431 | or 0 |
||
| 432 | jr nz,dns_ip_not_zero |
||
| 433 | ld hl,dnsbuf |
||
| 434 | ret |
||
| 435 | |||
| 436 | dns_ip_not_zero |
||
| 437 | cp '.' |
||
| 438 | jr z,dns_ip_loop1 |
||
| 439 | |||
| 440 | sub '0' |
||
| 441 | jr c,dns_not_ip |
||
| 442 | cp 9+1 |
||
| 443 | jr nc,dns_not_ip |
||
| 444 | ld c,a |
||
| 445 | ld a,(hl) |
||
| 446 | add a |
||
| 447 | ld b,a |
||
| 448 | add a |
||
| 449 | add a |
||
| 450 | add b |
||
| 451 | add c |
||
| 452 | ld (hl),a |
||
| 453 | jr dns_ip_loop |
||
| 454 | |||
| 455 | dns_not_ip |
||
| 33 | Alone | 456 | ld a,25;3 |
| 457 | ld (dns_err_count),a |
||
| 458 | dns_err_loop |
||
| 30 | DimkaM | 459 | ;push de |
| 460 | ld hl,dns_head |
||
| 461 | ld de,dnsbuf |
||
| 462 | ld bc,6 |
||
| 463 | ldir |
||
| 464 | ex de,hl |
||
| 465 | ld de,dnsbuf+7 |
||
| 33 | Alone | 466 | ld (hl),b;0 |
| 467 | ld c,256-7 |
||
| 30 | DimkaM | 468 | ldir |
| 469 | ld de,dnsbuf+12 |
||
| 470 | ld h,d |
||
| 471 | ld l,e |
||
| 472 | ld bc, httphostname ;pop bc |
||
| 473 | name_loop: |
||
| 474 | inc hl |
||
| 475 | ld a,(bc) |
||
| 476 | ld (hl),a |
||
| 477 | inc bc |
||
| 478 | cp '.' |
||
| 479 | jr z,is_dot |
||
| 480 | or a |
||
| 481 | jr nz,name_loop |
||
| 482 | is_dot: |
||
| 483 | sbc hl,de |
||
| 484 | ex de,hl |
||
| 485 | dec e |
||
| 486 | ld (hl),e |
||
| 487 | inc e |
||
| 488 | add hl,de |
||
| 489 | ld d,h |
||
| 490 | ld e,l |
||
| 491 | or a |
||
| 492 | jr nz,name_loop |
||
| 493 | inc a |
||
| 494 | inc hl |
||
| 495 | inc hl |
||
| 496 | ld (hl),a |
||
| 497 | inc hl |
||
| 498 | inc hl |
||
| 499 | ld (hl),a |
||
| 500 | inc hl |
||
| 501 | push hl |
||
| 1579 | kulich | 502 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 1581 | kulich | 503 | ld a, (dns_ia2) |
| 504 | cp 0 |
||
| 505 | jp nz, skipgetdns |
||
| 1579 | kulich | 506 | ld de, dns_ia2;DE= ptr to DNS buffer(4 bytes) |
| 507 | OS_GETDNS |
||
| 2202 | dimkam | 508 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
| 1581 | kulich | 509 | skipgetdns: |
| 30 | DimkaM | 510 | ld de,0x0203 |
| 511 | OS_NETSOCKET |
||
| 512 | ld a,l |
||
| 513 | ld (soc1),a |
||
| 514 | or a |
||
| 515 | jp m,dns_exiterr |
||
| 409 | dimkam | 516 | ;LD DE,dns_ia |
| 517 | ;OS_NETCONNECT |
||
| 518 | ;ld a,l |
||
| 519 | ;or a |
||
| 520 | ;jp m,dns_exiterr |
||
| 30 | DimkaM | 521 | |
| 522 | pop hl |
||
| 523 | push hl |
||
| 524 | ld de,0xffff&(-dnsbuf) |
||
| 525 | add hl,de |
||
| 526 | LD a,(soc1) |
||
| 409 | dimkam | 527 | LD IX,dnsbuf |
| 528 | LD DE,dns_ia |
||
| 30 | DimkaM | 529 | OS_WIZNETWRITE |
| 530 | bit 7,h |
||
| 531 | jr nz,dns_exitcode |
||
| 33 | Alone | 532 | dns_err_count=$+1 |
| 30 | DimkaM | 533 | ld b,25 |
| 534 | jr recv_wait1 |
||
| 535 | recv_wait: |
||
| 32 | Alone | 536 | ;YIELD |
| 537 | push bc |
||
| 538 | call yieldgetkeynolang |
||
| 539 | pop bc |
||
| 30 | DimkaM | 540 | recv_wait1: |
| 541 | push bc |
||
| 542 | ld hl,256 |
||
| 543 | LD a,(soc1) |
||
| 544 | LD DE,dnsbuf |
||
| 409 | dimkam | 545 | LD IX,dnsbuf |
| 30 | DimkaM | 546 | OS_WIZNETREAD |
| 547 | pop bc |
||
| 409 | dimkam | 548 | ;ld a,h |
| 549 | ;or l |
||
| 550 | bit 7,h |
||
| 551 | jr z,recv_wait_end |
||
| 30 | DimkaM | 552 | djnz recv_wait |
| 32 | Alone | 553 | ;ld a,54 ;ERR_CONNRESET |
| 30 | DimkaM | 554 | ;ld (errno),a |
| 555 | jr dns_exiterr |
||
| 556 | recv_wait_end: |
||
| 513 | dimkam | 557 | ;bit 7,h |
| 558 | ;jr nz,dns_exitcode |
||
| 32 | Alone | 559 | ;ld a,65 ;ERR_HOSTUNREACH |
| 30 | DimkaM | 560 | ;ld (errno),a |
| 561 | ld a,(dnsbuf+3) |
||
| 562 | and 0x0f |
||
| 563 | jr nz,dns_exiterr |
||
| 564 | dns_exitcode: |
||
| 565 | LD a,(soc1) |
||
| 566 | LD E,0 |
||
| 567 | OS_NETSHUTDOWN |
||
| 568 | pop hl |
||
| 58 | DimkaM | 569 | reqpars_l |
| 570 | inc hl |
||
| 571 | inc hl |
||
| 572 | inc hl |
||
| 573 | ld a,(hl) |
||
| 574 | ld de,7 |
||
| 30 | DimkaM | 575 | add hl,de |
| 58 | DimkaM | 576 | ld b,(hl) |
| 577 | inc hl |
||
| 578 | ld c,(hl) |
||
| 579 | inc hl |
||
| 580 | dec a |
||
| 581 | ret z |
||
| 582 | cp 4 |
||
| 583 | jr nz,exiterr1 |
||
| 584 | add hl,bc |
||
| 585 | jr reqpars_l |
||
| 30 | DimkaM | 586 | dns_exiterr: |
| 587 | pop af |
||
| 588 | LD a,(soc1) |
||
| 589 | LD E,0 |
||
| 590 | OS_NETSHUTDOWN |
||
| 33 | Alone | 591 | ld a,(dns_err_count) |
| 58 | DimkaM | 592 | add a,a |
| 33 | Alone | 593 | ld (dns_err_count),a |
| 594 | jp nc,dns_err_loop |
||
| 58 | DimkaM | 595 | exiterr1: |
| 596 | ld hl,0 |
||
| 30 | DimkaM | 597 | ret |
| 598 | dns_head |
||
| 599 | defb 0x11,0x22,0x01,0x00,0x00,0x01 |
||
| 331 | alone | 600 | |
| 601 | ;struct sockaddr_in {unsigned char sin_family;unsigned short sin_port; |
||
| 602 | ; struct in_addr sin_addr;char sin_zero[8];}; |
||
| 30 | DimkaM | 603 | dns_ia: |
| 235 | alone | 604 | defb 0 |
| 605 | db 0,53 ;port (big endian) |
||
| 1579 | kulich | 606 | dns_ia2: |
| 1581 | kulich | 607 | db 0,0,0,0 ;ip (big endian) |