?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. scrollleft
  2. ;hl=linestart
  3. ;c=scroll amount
  4. ;c=1: scrollleft_rld с c=0
  5. ;c=2: scrollleft_ld с c=1
  6. ;c=3: scrollleft_rld с c=1
  7.         srl c
  8.         jp c,scrollleft_rld
  9. scrollleft_ld
  10. ;hl=linestart
  11. ;c=scroll amount
  12.         ld d,h
  13.         ld a,l
  14.         add a,c
  15.         ld e,a
  16.         ex de,hl
  17. ;hl=from
  18. ;de=to
  19.         ld a,SCRTRACKWID/2
  20.         sub c
  21.         ld c,a
  22. ;c=SCRTRACKWID/2-scrollamount
  23.         ld b,8
  24. scrollleft_ld0
  25.         push bc
  26.         push de
  27.         push hl
  28.         ld b,0
  29.         ldir
  30.         pop hl
  31.         pop de
  32.         pop bc
  33.         inc d
  34.         inc h
  35.         djnz scrollleft_ld0
  36.         ret
  37.  
  38. scrollright
  39. ;hl=linestart
  40. ;c=scroll amount
  41. ;c=1: scrollright_rrd с c=0
  42. ;c=2: scrollright_ld с c=1
  43. ;c=3: scrollright_rrd с c=1
  44.         srl c
  45.         jp c,scrollright_rrd
  46. scrollright_ld
  47. ;hl=linestart
  48. ;c=scroll amount
  49.         ld a,l
  50.         add a,SCRTRACKWID/2-1
  51.         ld l,a
  52.         ld d,h
  53.         sub c
  54.         ld e,a
  55.         ex de,hl
  56. ;hl=from
  57. ;de=to
  58.         ld a,SCRTRACKWID/2
  59.         sub c
  60.         ld c,a
  61. ;c=SCRTRACKWID/2-scrollamount
  62.         ld b,8
  63. scrollright_ld0
  64.         push bc
  65.         push de
  66.         push hl
  67.         ld b,0
  68.         lddr
  69.         pop hl
  70.         pop de
  71.         pop bc
  72.         inc d
  73.         inc h
  74.         djnz scrollright_ld0
  75.         ret
  76.  
  77. scrollleft_rld
  78. ;hl=linestart
  79.         ;ld c,0
  80. ;c=scroll amount
  81.         ld d,h
  82.         ld a,l
  83.         add a,c
  84.         ld e,a
  85.         ex de,hl
  86. ;hl=from
  87. ;de=to
  88.         ld a,SCRTRACKWID/2
  89.         sub c
  90.         ld c,a
  91. ;c=SCRTRACKWID/2-scrollamount
  92.         ld b,8
  93. scrollleft0p
  94.         push bc
  95.         push de
  96.         push hl
  97.         ld b,0
  98.         ld a,l
  99.         cp e
  100.         jr z,scrollleft_noldir
  101.         ldir
  102. scrollleft_noldir
  103.         add hl,bc
  104.         dec hl
  105.         xor a
  106.        dup SCRTRACKWID/2-1
  107.         rld
  108.         dec l
  109.        edup
  110.         rld
  111.         pop hl
  112.         pop de
  113.         pop bc
  114.         inc d
  115.         inc h
  116.         djnz scrollleft0p
  117.         ret
  118.  
  119. scrollright_rrd
  120. ;hl=linestart
  121.         ;ld c,0
  122. ;c=scroll amount
  123.         ld a,l
  124.         add a,SCRTRACKWID/2-1
  125.         ld l,a
  126.         ld d,h
  127.         sub c
  128.         ld e,a
  129.         ex de,hl
  130.         ld a,SCRTRACKWID/2
  131.         sub c
  132.         ld c,a
  133. ;c=SCRTRACKWID/2-scrollamount
  134.         ld b,8
  135. scrollright0p
  136.         push bc
  137.         push de
  138.         push hl
  139.         ld b,0
  140.         ld a,l
  141.         cp e
  142.         jr z,scrollright_nolddr
  143.         lddr
  144. scrollright_nolddr
  145.         or a
  146.         sbc hl,bc
  147.         inc hl
  148.         xor a
  149.         dup SCRTRACKWID/2-1
  150.         rrd
  151.         inc l
  152.         edup
  153.         rrd
  154.         pop hl
  155.         pop de
  156.         pop bc
  157.         inc d
  158.         inc h
  159.         djnz scrollright0p
  160.         ret
  161.  
  162. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  163.  
  164. scroll_left_c
  165. ;c=scroll amount (in chars)
  166. ;hx=toptrack
  167. ;b=scrntracks
  168.         ld a,c
  169.         ld (scrollleft_Nchars),a
  170.         push bc
  171.         call setscrpg
  172.         pop bc
  173. scrollleft0
  174.         push bc
  175.         push hl
  176.         call scrollleft ;scrollleft_rld
  177.         pop hl
  178. ;обновить бар слева
  179.         push hl
  180.         ld d,h
  181.         ld e,l
  182.         dec e
  183.         ld c,0x01
  184.         ld a,(curlefttime)
  185.         sub 8
  186.         ld l,a
  187.         and 7
  188.         call prbar_or_nobar
  189.         call setpgroots
  190. ;допечатать столбик справа и его бар
  191.         call prtrack_gettype ;uses hx
  192.         pop hl
  193.         push hl
  194.         ld d,h
  195.         ld a,l
  196.         add a,SCRTRACKWID/2-1
  197.         ld e,a
  198. curlefttime=$+1
  199.         ld hl,0;(curlefttime)
  200.         ld bc,SCRTRACKWID-1
  201.         add hl,bc
  202. scrollleft_Nchars=$+2
  203.         ld bc,1*256+0xf0
  204. ;de=scr
  205. ;hx=track
  206. ;c=0x0f/0xf0
  207. ;b=SCRTRACKWID
  208. ;hl=time
  209.         push bc
  210.         push de
  211.         push bc
  212.         ld a,c
  213.         dec b
  214.         jr z,scrollleft_beforeprtrack0q
  215. scrollleft_beforeprtrack0
  216.         dec hl
  217.         rlca
  218.         rlca
  219.         rlca
  220.         rlca
  221.         jr c,$+3
  222.         dec e
  223.         djnz scrollleft_beforeprtrack0
  224. scrollleft_beforeprtrack0q
  225.         pop bc
  226.         ld c,a
  227.         call prtrack_Nchars
  228.         pop de
  229.         call setscrpg
  230.         ld a,(curlefttime)
  231.         add a,SCRTRACKWID-8
  232.         ld l,a
  233.         pop bc ;ld b,1
  234.         ld c,0x01
  235. scrollleft_prbars0
  236.         push de
  237.         ld a,l
  238.         and 7
  239.         call prbar_or_nobar
  240.         pop de
  241.         dec l
  242.         ld a,c
  243.         rlca
  244.         rlca
  245.         rlca
  246.         rlca
  247.         ld c,a
  248.         jr nc,$+3
  249.         dec e
  250.         djnz scrollleft_prbars0
  251.         pop hl
  252.         call nextchrline_hl
  253.         pop bc
  254.         inc hx ;track
  255.         dec b
  256.         jp nz,scrollleft0
  257.         ret
  258.  
  259. scroll_right_c
  260. ;c=scroll amount (in chars)
  261.         ld a,c
  262.         ld (scrollright_Nchars),a
  263.         push bc
  264.         call setscrpg
  265.         pop bc
  266. scrollright0
  267.         push bc
  268.         push hl
  269.         call scrollright ;scrollright_rrd
  270.         pop hl
  271. ;обновить бар слева (вне поля скролла)
  272.         push hl
  273.         ld d,h
  274.         ld e,l
  275.         push de
  276.         dec e
  277.         ld c,0x01
  278.         ld a,(curlefttime)
  279.         sub 8
  280.         ld l,a
  281.         and 7
  282.         call prbar_or_nobar
  283.         call setpgroots
  284. ;допечатать столбик слева и его бар
  285.         call prtrack_gettype ;uses hx
  286.         pop de
  287.         ld hl,(curlefttime)
  288. scrollright_Nchars=$+2
  289.         ld bc,1*256+0x0f
  290. ;de=scr
  291. ;hx=track
  292. ;c=0x0f/0xf0
  293. ;b=SCRTRACKWID
  294. ;hl=time
  295.         push bc
  296.         push de
  297.         call prtrack_Nchars
  298.         pop de
  299.         call setscrpg
  300.         ld a,(curlefttime)
  301.         add a,1-8
  302.         ld l,a
  303.         pop bc;ld b,1
  304.         ld c,0x10
  305. scrollright_prbars0
  306.         push de
  307.         ld a,l
  308.         and 7
  309.         call prbar_or_nobar
  310.         pop de
  311.         inc l
  312.         ld a,c
  313.         rlca
  314.         rlca
  315.         rlca
  316.         rlca
  317.         ld c,a
  318.         jr c,$+3
  319.         inc e
  320.         djnz scrollright_prbars0
  321.        
  322.         pop hl
  323.         call nextchrline_hl
  324.         pop bc
  325.         inc hx ;track
  326.         dec b
  327.         jp nz,scrollright0
  328.         ret
  329.