Subversion Repositories NedoOS

Rev

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

  1. htmlview
  2.         call showtime
  3.  
  4.         ld hl,(curprintvirtualy)
  5.         ld (html_endy),hl
  6.         call prcharmc_stateful_resethandler
  7.         ;ld hl,0
  8.         ;ld (html_curtopy),hl
  9.        
  10.         ld hl,(firstpointer)
  11.         ld (htmlshowline_accessedpointer),hl
  12.         ld a,(firstpointerHSB)
  13.         ld (htmlshowline_accessedpointerHSB),a
  14.        
  15. html_redrawloop
  16. ;TODO redraw interface
  17.         call htmlshowpage
  18.         ;call setpgs_scr
  19.        
  20. html_mainloop
  21.  
  22. htmlcursorxy=$+1
  23.         ld de,HTMLTOPY*256
  24.         call html_setxy
  25.         call setpgs_scr
  26.         ld e,(hl)
  27.         push de ;e=oldcolor
  28.         ld a,0x38
  29.         call html_prattr
  30.  
  31. 1
  32.         ;YIELD ;halt ;хёыш ёфхырЄ№ яЁюёЄю di:rst #38, Єю 1.ёфтшэхь ЄрщьхЁ ш 2.ьюцхь яюЄхЁ Є№ ърфЁютюх яЁхЁ√трэшх, р хёыш схч ei, Єю сєфєЄ уы■ъш
  33.         ;GET_KEY ;OS_GETKEYNOLANG
  34.         ;ld a,c ;keynolang        
  35.         ;cp NOKEY
  36.         call yieldgetkeynolang
  37.         jr nz,html_mainloop_keyq
  38.         ;call nvview_panel
  39.         jr 1b
  40. html_mainloop_keyq
  41.  
  42.         pop de ;e=oldcolor
  43.         push af
  44.         push de
  45.         ld de,(htmlcursorxy)
  46.         call html_setxy
  47.         pop de
  48.         ld a,e
  49.         call html_prattr
  50.         pop af
  51.         cp key_redraw
  52.         jr z,html_redrawloop
  53.         ;cp key_esc
  54.         ;jp z,browser_quit
  55.         call globalbuttons
  56.         ld hl,html_mainloop
  57.         push hl
  58.         cp key_up
  59.         jp z,html_up
  60.         cp key_down
  61.         jp z,html_down
  62.         cp key_right
  63.         jp z,html_right
  64.         cp key_left
  65.         jp z,html_left
  66.         cp key_enter
  67.         jp z,html_enter
  68.         cp 'l'
  69.         jr z,html_download
  70.         ;cp 's'
  71.         ;jp z,browser_downloadthis
  72.         ;cp '5'
  73.         ;jp z,browser_reload
  74.         cp 'u'
  75.         jr z,html_changeencoding
  76.         ;cp key_backspace
  77.         ;jp z,browser_backspace
  78.         cp key_pgup
  79.         jp z,html_pgup
  80.         cp key_pgdown
  81.         jp z,html_pgdown
  82.         cp key_home
  83.         jp z,html_home
  84.         cp key_end
  85.         jp z,html_endkey
  86.         ret
  87.  
  88. html_changeencoding
  89.         ld hl,defaultunicodeflag
  90.         ld a,(hl)
  91.         xor 1
  92.         ld (hl),a
  93.         jp browser_reload
  94.        
  95. html_download
  96.         call html_enter_find
  97.         call keepcurlink
  98. ;linkbuf=relative link
  99.         call makefulllink
  100. ;curfulllink=url
  101.  
  102. wgetloaded_pid=$+1
  103.         ld a,0
  104.         or a
  105.         call z,reloadwget
  106.  
  107. ;TODO яЁютхЁшЄ№, ўЄю wget цшт:
  108.         ld a,(wgetloaded_pid)
  109.         ld e,a
  110.         OS_WAITPID
  111.         or a
  112.         call z,reloadwget
  113.  
  114. ;цф╕ь уюЄютэюёЄш wget
  115. waitwgetinit0
  116.         YIELD
  117. wgetmainpg=$+1
  118.         ld a,0
  119.         SETPG32KHIGH
  120.         ld a,(0xc000+COMMANDLINE)
  121.         inc a
  122.         jr z,waitwgetinit0
  123.        
  124.         ld hl,curfulllink
  125.         ld de,0xc000+WGETBUF
  126.         call strcopy
  127.         ld a,0xff
  128.         ld (0xc000+COMMANDLINE),a ;ёЄЁюър чрфрэш  уюЄютр
  129.        
  130.         jp remembercurlink
  131.         ;jp browser_godownload
  132.  
  133. reloadwget
  134.         OS_SETSYSDRV
  135.         ld de,wgetfilename
  136.         call openstream_file
  137.         or a
  138.         ret nz
  139.         OS_NEWAPP ;эр ьюьхэЄ ёючфрэш  фюыцэр с√Є№ тъы■ўхэр Єхъє∙р  фшЁхъЄюЁш !!!
  140.         or a
  141.         jr nz,html_download_closeq ;error
  142. ;dehl=эюьхЁр ёЄЁрэшЎ т 0000,4000,8000,c000 эютюую яЁшыюцхэш , b=id, a=error
  143.         push bc ;b=id
  144.         ld a,d
  145.         ld (wgetmainpg),a
  146.         SETPG32KHIGH
  147.         ;push de
  148.         ;push hl
  149.         ld hl,0xc000+COMMANDLINE
  150.         ld (hl),0xff ;daemon mode
  151.         inc hl
  152.         ld (hl),0
  153.         ;pop hl
  154.         ;pop de
  155.         ld de,0xc100
  156.         ld hl,0x3f00
  157.         call readstream_file
  158.         pop af
  159.         ld (wgetloaded_pid),a
  160.         ld e,a ;e=id
  161.         OS_RUNAPP
  162. html_download_closeq
  163.         jp closestream_file
  164.  
  165. html_enter
  166. ;click on href
  167.         call html_enter_find
  168.         jp browser_go
  169.  
  170. html_enter_find
  171.         ld a,(htmlcursorxy+1)
  172.         sub HTMLTOPY
  173.         ld c,a
  174.         ld b,0
  175.         ld hl,(html_curtopy)
  176.         add hl,bc
  177.         ld (html_enter_virtualy),hl
  178.  
  179.          ;jr $
  180.         ld hl,(first2pointer)
  181.         ld a,(first2pointerHSB)
  182. html_enter_find0
  183.         call isnull
  184.         jr z,html_enter_findq
  185.         push af
  186.         push hl
  187.        
  188.         if 1==0
  189.        
  190.         ld bc,HREF_Y
  191.         add hl,bc
  192.         adc a,0
  193.         call readword ;de=beginy
  194.         ex de,hl
  195. html_enter_virtualy=$+1
  196.         ld bc,0
  197.         or a
  198.         sbc hl,bc ;HREF_Y - y
  199.         ex de,hl
  200.         jr z,html_enter_findlineok ;фы  яЁртшы№эющ ёё√ыъш HREF_Y<=y
  201.          ;jr c,html_enter_findlineok_hrefy_lessthan_y
  202.        
  203.         endif
  204.          
  205. ;for long linktexts: beginyx<=yx<endyx
  206. ;ьюцэю яхЁтшўэє■ Їшы№ЄЁрЎш■ (beginy<=y<=endy), эю эхєфюсэю
  207.  
  208.         ld bc,HREF_Y
  209.         add hl,bc
  210.         adc a,b;0
  211.         call readword ;de=beginy
  212.         call readbyte ;c=beginx
  213. html_enter_virtualy=$+1
  214.         ld hl,0
  215.         ld a,(htmlcursorxy)
  216.         ;hla=Yyx
  217.         ;dec=beginYyx
  218.         cp c
  219.         sbc hl,de
  220.         jr c,html_enter_findnext
  221.         pop hl
  222.         pop af
  223.         push af
  224.         push hl
  225.         ld bc,HREF_ENDY
  226.         add hl,bc
  227.         adc a,b;0
  228.         call readword ;de=endy
  229.         call readbyte ;c=endx
  230.         ld hl,(html_enter_virtualy)
  231.         ld a,(htmlcursorxy)
  232.         ;hla=Yyx
  233.         ;dec=endYyx
  234.         cp c
  235.         sbc hl,de
  236.         ;jr nc,html_enter_findnext
  237.         jr c,html_enter_findok
  238.  
  239. html_enter_findnext
  240.         pop hl
  241.         pop af
  242.         call getnextelement
  243.         jr html_enter_find0
  244.        
  245.        
  246.         if 1==0
  247.        
  248. html_enter_findlineok_hrefy_lessthan_y
  249.  
  250.        
  251. html_enter_findlineok
  252.         call readbyte ;c=beginx
  253.         ld b,a
  254.         ld a,(htmlcursorxy)
  255.         cp c
  256.         ld a,b
  257. ;x<beginx => fail
  258.         jr c,html_enter_findnext
  259.          ;jr $
  260.         call readword ;de=endy
  261.         push hl
  262.         ld hl,(html_enter_virtualy)
  263.         or a
  264.         sbc hl,de
  265.         pop hl
  266. ;y==endy => ok (long linktext)
  267.         push af
  268.         call readbyte ;c=endx
  269.         pop af
  270.         ;jr z,html_enter_findok_endy
  271.  
  272.         ld b,a
  273.         ld a,(htmlcursorxy)
  274.         cp c
  275.         ld a,b
  276. ;x>=endx =>fail
  277.         jr nc,html_enter_findnext
  278.         ;jr html_enter_findok
  279.                
  280. html_enter_findok_endy
  281.         endif
  282.  
  283. html_enter_findok
  284.          ;pop bc
  285.          ;pop bc
  286.         ;call readbyte ;skip VISITED
  287.          
  288.          pop hl
  289.          pop af
  290.         ld bc,HREF_TEXT
  291.         add hl,bc
  292.         adc a,b;0
  293.          
  294.         ld de,linkbuf
  295. html_enter_findok_copyname0
  296.         call readbyte
  297.         ex de,hl
  298.         ld (hl),c
  299.         inc hl
  300.         ex de,hl
  301.         inc c
  302.         dec c
  303.         jr nz,html_enter_findok_copyname0
  304.          ;jr $
  305.         ret
  306.        
  307. html_enter_findq
  308.         pop af
  309.         ret
  310.  
  311. html_prattr
  312.         ld de,40
  313.         ld b,8
  314. html_prattr0
  315.         ld (hl),a
  316.         add hl,de
  317.         djnz html_prattr0
  318.         ret
  319.  
  320. html_setxy
  321. ;de=yx (kept)
  322.         push de
  323.         sla d
  324.         sla d
  325.         sla d
  326.         call setxymc
  327.         res 6,h
  328.         pop de
  329.         ret
  330.  
  331. html_left
  332.         ld a,(htmlcursorxy)
  333.         sub 1
  334.         ret c
  335.         ld (htmlcursorxy),a
  336.         ret
  337.        
  338. html_right
  339.         ld a,(htmlcursorxy)
  340.         inc a
  341.         cp 80
  342.         ret nc
  343.         ld (htmlcursorxy),a
  344.         ret
  345.        
  346. html_up
  347.         ld a,(htmlcursorxy+1)
  348.         cp HTMLTOPY
  349.         jr z,html_up_scroll
  350.         dec a
  351.         ld (htmlcursorxy+1),a
  352.         ret
  353. html_up_scroll
  354.         ld hl,(html_curtopy)
  355.         ld a,h
  356.         or l
  357.         ret z
  358.         dec hl
  359.         ld (html_curtopy),hl
  360.         push hl
  361.         call scrollmcdown
  362.         pop hl
  363.         ld d,HTMLTOPY
  364. ;hl=virtual Y
  365. ;d=scry
  366.         jp htmlcleanshowline
  367.        
  368. html_down
  369.         ld a,(htmlcursorxy+1)
  370.         cp HTMLTOPY+HTMLHGT-1
  371.         jr z,html_down_scroll
  372.         inc a
  373.         ld (htmlcursorxy+1),a
  374.         ret
  375. html_down_scroll
  376.         ld hl,(html_curtopy)
  377.         inc hl
  378.         ld (html_curtopy),hl
  379.         push hl
  380.         call scrollmcup
  381.         pop hl
  382.         ld bc,HTMLHGT-1
  383.         add hl,bc
  384.         ld d,HTMLTOPY+HTMLHGT-1
  385. ;hl=virtual Y
  386. ;d=scry
  387.         jp htmlcleanshowline
  388.  
  389. html_pgup
  390.         ld hl,(html_curtopy)
  391.         ld bc,HTMLHGT-1
  392.         xor a
  393.         sbc hl,bc
  394.         jr nc,$+4
  395.         ld h,a
  396.         ld l,a
  397. topy_showpage_slearkeyboardbuffer
  398.         ld (html_curtopy),hl
  399.         call htmlshowpage
  400. clear_keyboardbuffer
  401.         push bc
  402.         ld b,5
  403. clear_keyboardbuffer0
  404.         push bc
  405.         GET_KEY
  406.         pop bc
  407.         djnz clear_keyboardbuffer0
  408.         pop bc
  409.         ret
  410.        
  411. html_pgdown
  412.         ld hl,(html_curtopy)
  413.         ld bc,HTMLHGT-1
  414.         add hl,bc
  415.         jr topy_showpage_slearkeyboardbuffer
  416.         ;ld (html_curtopy),hl
  417.         ;call htmlshowpage
  418.         ;ret
  419.        
  420. html_home
  421.         ld hl,0
  422.         jr topy_showpage_slearkeyboardbuffer
  423.  
  424. html_endkey
  425. html_endy=$+1
  426.         ld hl,0
  427.         jr topy_showpage_slearkeyboardbuffer
  428.        
  429. htmlshowpage
  430.         ld d,HTMLTOPY
  431. html_curtopy=$+1
  432.         ld hl,0
  433. htmlshowpage0
  434. ;hl=virtual Y
  435. ;d=scry
  436.         call htmlcleanshowline
  437.         inc hl
  438.         inc d
  439.         ld a,d
  440.         cp HTMLTOPY+HTMLHGT
  441.         jr nz,htmlshowpage0
  442.         ret
  443.  
  444. htmlcleanshowline
  445. ;hl=virtual Y
  446. ;d=scry
  447.         push de
  448.         push hl
  449.         ld e,0
  450.         sla d
  451.         sla d
  452.         sla d
  453.         call setxymc ;hl=0xc000+        
  454.         call setpgs_scr
  455.         xor a
  456.         call cleanlinemc
  457.         call setpgtemp8000
  458.         pop hl
  459.         pop de
  460.        
  461.         ;jr $
  462.         push de
  463.         push hl
  464.         call htmlshowline
  465.         pop hl
  466.         pop de
  467.         ret
  468.        
  469. htmlshowline
  470. ;hl=virtual Y
  471. ;d=scry
  472.         ;jr $
  473.         ld a,d
  474.         add a,a
  475.         add a,a
  476.         add a,a
  477.         ld (htmlshowline_scry),a
  478.         ld (htmlshowline_virtualy),hl
  479.  
  480. htmlshowline_accessedpointer=$+1
  481.         ld hl,0
  482. htmlshowline_accessedpointerHSB=$+1
  483.         ld a,0
  484.        
  485. ;ш∙хь тэшч, хёыш (accessedpointer.HREF_Y < y), шэрўх ш∙хь ттхЁї
  486.         push af
  487.         push hl
  488.         call getandcompareHREF_Y ;CY = (HREF_Y < y)
  489.         jr c,htmlshowline_finddown
  490.  
  491. ;htmlshowline_findup
  492.         pop hl
  493.         pop af
  494. htmlshowline_findup0
  495.         call isnull
  496.         jr z,htmlshowline_findq
  497.         push af
  498.         push hl
  499.         call getandcompareHREF_Y
  500.         jr z,htmlshowline_findok
  501.          jr c,htmlshowline_pop2findq
  502.         pop hl
  503.         pop af
  504.         call getprevelement
  505.         jr htmlshowline_findup0
  506.  
  507. htmlshowline_finddown
  508.         pop hl
  509.         pop af
  510. htmlshowline_finddown0
  511.         call isnull
  512.         jr z,htmlshowline_findq
  513.         push af
  514.         push hl
  515. ;        ld bc,HREF_Y
  516. ;        add hl,bc
  517. ;        adc a,b;0
  518. ;        call readword ;de
  519. ;        ex de,hl
  520. ;htmlshowline_virtualy=$+1
  521. ;        ld bc,0
  522. ;        or a
  523. ;        sbc hl,bc
  524. ;        ex de,hl
  525.         call getandcompareHREF_Y
  526.         jr z,htmlshowline_findok
  527.          jr nc,htmlshowline_pop2findq
  528.         pop hl
  529.         pop af
  530.         call getnextelement
  531.         jr htmlshowline_finddown0
  532.        
  533. getandcompareHREF_Y
  534.         ld bc,HREF_Y
  535.         add hl,bc
  536.         adc a,b;0
  537.         call readword ;de
  538.         ex de,hl
  539. htmlshowline_virtualy=$+1
  540.         ld bc,0
  541.         or a
  542.         sbc hl,bc
  543.         ex de,hl
  544.         ret ;CY = (HREF_Y < y), Z = equal
  545.  
  546. htmlshowline_findok
  547.         push af
  548.         push hl
  549.         ld bc,HREF_Y+2
  550.         or a
  551.         sbc hl,bc
  552.         sbc a,b;0
  553.         ld (htmlshowline_accessedpointer),hl
  554.         ld (htmlshowline_accessedpointerHSB),a
  555.         pop hl
  556.         pop af
  557.  
  558.         call readbyte ;x
  559.         ld e,c
  560. htmlshowline_scry=$+1
  561.         ld d,0
  562.         push af
  563.         push hl
  564.         call setxymc_stateful
  565.         pop hl
  566.         pop af
  567. htmlshowline_showtext0
  568.         call readbyte ;c
  569.         inc c
  570.         dec c
  571.         jr z,htmlshowline_showtextq
  572.         push af
  573.         push hl
  574.         ld a,c
  575.         call prcharmc_stateful
  576.         pop hl
  577.         pop af
  578.         jr htmlshowline_showtext0
  579. htmlshowline_showtextq
  580.        
  581. htmlshowline_pop2findq
  582.         pop hl
  583.         pop af
  584.        
  585. htmlshowline_findq
  586.  
  587.         ret
  588.        
  589.         if 1==0
  590.         ld hl,(firstpointer)
  591.         ld a,(firstpointerHSB)
  592. loadhtml_showtexts0
  593.         call isnull
  594.         jr z,loadhtml_showtextsq
  595.         push af
  596.         push hl
  597.         ld bc,stringbuf1-stringbuf1header
  598.         add hl,bc
  599.         adc a,0
  600.         ;jr $
  601. loadhtml_showtext0
  602.         call readbyte ;c
  603.         inc c
  604.         dec c
  605.         jr z,loadhtml_showtextq
  606.         push af
  607.         push hl
  608.         ld a,c
  609.         call prcharmc_stateful
  610.         pop hl
  611.         pop af
  612.         jr loadhtml_showtext0
  613. loadhtml_showtextq
  614.         call prcharmc_crlf_stateful
  615.         pop hl
  616.         pop af
  617.         call getnextelement
  618.         jr loadhtml_showtexts0
  619. loadhtml_showtextsq
  620.        
  621.        
  622.         ld hl,(first2pointer)
  623.         ld a,(first2pointerHSB)
  624. loadhtml_showhrefs0
  625.         call isnull
  626.         jr z,loadhtml_showhrefsq
  627.         push af
  628.         push hl
  629.         ld bc,stringbuf2-stringbuf2header
  630.         add hl,bc
  631.         adc a,0
  632.         ;jr $
  633. loadhtml_showhref0
  634.         call readbyte ;c
  635.         inc c
  636.         dec c
  637.         jr z,loadhtml_showhrefq
  638.         push af
  639.         push hl
  640.         ld a,c
  641.         call prcharmc_stateful
  642.         pop hl
  643.         pop af
  644.         jr loadhtml_showhref0
  645. loadhtml_showhrefq
  646.         call prcharmc_crlf_stateful
  647.         pop hl
  648.         pop af
  649.         call getnextelement
  650.         jr loadhtml_showhrefs0
  651. loadhtml_showhrefsq
  652.  
  653.         jp closequit
  654.         endif
  655.