?login_element?

Subversion Repositories NedoOS

Rev

Rev 1648 | Rev 1868 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download

  1.     module Gopher
  2. ; HL - gopher row
  3. extractRequest:
  4.     ld hl, historyBlock.locator
  5.     ld de, requestbuffer
  6. .loop
  7.     ld a, (hl)
  8.     ld (de), a
  9.     inc hl
  10.     inc de
  11.     cp 0
  12.     jr z, .search
  13.     jr .loop
  14. .search
  15.     dec de
  16.     ld a, (historyBlock.mediaType)
  17.     cp MIME_INPUT
  18.     jr nz, .exit
  19.     ld hl, historyBlock.search
  20.     ld a, TAB
  21.     ld (de), a
  22.     inc de
  23. .searchCopy
  24.     ld a, (hl)
  25.     and a : jr z, .exit
  26.     ld (de), a
  27.     inc hl : inc de
  28.     jr .searchCopy
  29. .exit
  30.     xor a
  31.     ld (de), a
  32.     ret
  33.  
  34.  
  35. makeRequest:
  36.     call extractRequest
  37.  
  38.     ld hl, historyBlock.host
  39.     ld de, historyBlock.port
  40.     call Wifi.openTCP
  41.     ret c
  42.  
  43.     ld hl, requestbuffer
  44.     call Wifi.tcpSendZ
  45.     xor a : ld (Wifi.closed), a
  46.     ret
  47.  
  48.  
  49. loadBuffer:
  50.     ld hl, outputBuffer
  51.     ld (Wifi.buffer_pointer), hl
  52. .loop
  53.     call Wifi.getPacket
  54.     ld a, (Wifi.closed) : and a : ret nz
  55.     call Wifi.continue
  56.     jr .loop
  57.  
  58.     ifdef GS
  59. loadMod:
  60.     xor a : call GeneralSound.init
  61.     ld hl, .progress : call DialogBox.msgNoWait
  62.     call makeRequest : jp c, Fetcher.fetchFromNet.error
  63.     call GeneralSound.loadModule
  64. .loop
  65.     ld hl, outputBuffer, (Wifi.buffer_pointer), hl
  66.     call Wifi.getPacket
  67.     ld a, (Wifi.closed) : and a : jr nz, .exit
  68.     ld hl, outputBuffer, bc, (Wifi.bytes_avail)
  69. .loadLoop
  70.     ld a, b : or c : and a : jr z, .nextFrame
  71.     ld a, (hl) : call GeneralSound.sendByte
  72.     dec bc
  73.     inc hl
  74.     jr .loadLoop
  75. .nextFrame
  76.     call pulsing
  77.     call Wifi.continue
  78.     jr .loop
  79. .exit
  80.     call GeneralSound.finishLoadingModule
  81.     jp History.back
  82. .progress db "MOD downloading directly to GS!", 0
  83.     endif
  84.  
  85. download:
  86.     ld de, historyBlock.locator
  87.     ld hl, de
  88. .findFileName
  89.     ld a, (de) : inc de
  90.     cp '/' : jr nz, .skip
  91.     ld hl, de
  92. .skip
  93.     and a : jr nz, .findFileName
  94. .copy
  95.     ;; HL - filename pointer
  96.     ld de, DialogBox.inputBuffer
  97. .copyFileName
  98.     ld a, (hl) : and a : jr z, .finishCopy
  99.  
  100.     ld (de), a : inc hl, de
  101.     jr .copyFileName
  102. .finishCopy
  103.     ld (de), a
  104.     call DialogBox.inputBox.noclear
  105.     ld a, (DialogBox.namedownload) : and a : jp z, History.back
  106.    
  107.     call makeRequest : jp c, Fetcher.fetchFromNet.error
  108.  
  109.     ld b, Dos.FMODE_CREATE, hl, DialogBox.namedownload
  110.     call Dos.fopen
  111.     ld (.fp), a
  112.    
  113.     ld hl, .progress : call DialogBox.msgNoWait
  114. .loop
  115.     ld hl, outputBuffer, (Wifi.buffer_pointer), hl
  116.     call Wifi.getPacket
  117.     ld a, (Wifi.closed) : and a : jr nz, .exit
  118.    
  119.     ld a, (.fp), hl, outputBuffer, bc, (Wifi.bytes_avail)
  120.     call Dos.fwrite
  121.     call pulsing
  122.     call Wifi.continue
  123.     jr .loop
  124. .exit
  125.     ld a, (.fp)
  126.     call Dos.fclose
  127.     jp History.back
  128. .error
  129.     ld a, (.fp)
  130.     call Dos.fclose
  131.     ld hl, .err
  132.     call DialogBox.msgBox
  133.     jp History.back
  134.  
  135. .err db "Operation failed! Sorry! Check filename or disk space!",0
  136. .progress db "Downloading in progress! Wait a bit!", 0
  137. .fp db 0
  138. socket db 0
  139. pulsator db " "
  140. pulsing
  141.     ld de, #0B01 : call TextMode.gotoXY
  142.     ld a, (pulsator)
  143.     cp '*'
  144.     jp z, printasterix
  145.     ld a, '*'
  146.     ld (pulsator),a
  147.     ld a,' '
  148.     call TextMode.putC
  149.     ret
  150. printasterix
  151.     ld a, ' '
  152.     ld (pulsator),a
  153.     ld a,'*'
  154.     call TextMode.putC
  155.     ret
  156.  
  157. requestbuffer ds #1ff
  158.     endmodule
  159.