?login_element?

Subversion Repositories NedoOS

Rev

Rev 68 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. prnum123
  2. ;d=y, e=x8
  3. ;hl=num
  4.          call setpgs_scr
  5.          push hl
  6.          call setxymc
  7.          pop de
  8.          ld bc,100
  9.          call prdigmc
  10.          ld bc,10
  11.          call prdigmc
  12.          ld bc,1
  13.          jr prdigmc
  14.          
  15. prnumfrac
  16. ;d=y, e=x8
  17. ;hl=time (frames)
  18.          call setpgs_scr
  19.          push hl
  20.          call setxymc
  21.          pop de
  22.          ld bc,5000
  23.          call prdigmc
  24.          ld bc,500
  25.          call prdigmc
  26.          ld bc,50
  27.          call prdigmc
  28.          push de
  29.          ld a,'.'
  30.          call prcharmc
  31.          pop de
  32.          ld bc,5
  33.          call prdigmc
  34.          sla e
  35.          ld bc,1
  36.          ;call prdigmc
  37. prdigmc
  38. ;hl=scraddr
  39. ;de=number
  40. ;bc=divisor
  41.         ex de,hl
  42.         ld a,'0'-1
  43.         or a
  44. prdigmc0
  45.         inc a
  46.         sbc hl,bc
  47.         jr nc,prdigmc0
  48.         add hl,bc
  49.         ex de,hl
  50.         push de
  51.         call prcharmc
  52.         pop de
  53.         ret
  54.        
  55. prtextmc
  56. prtextmc0
  57.         ld a,(de)
  58.         or a
  59.         ret z
  60.         push de
  61.         call prcharmc
  62.         pop de
  63.         inc de
  64.         jp prtextmc0
  65.  
  66. initprcharmc
  67. ;a=attr
  68.         ld (prcharmc_attr),a
  69.         xor a
  70.         ld (prcharmc_italic1),a
  71.         ld (prcharmc_italic2),a
  72.         ld (prcharmc_italic3),a
  73.         ld (prcharmc_italic4),a
  74.         ld (prcharmc_stroke),a
  75.         ld (prcharmc_underline),a
  76.         ret
  77.        
  78. prcharmc
  79. ;a=code
  80. ;hl=scraddr
  81.         ld e,a
  82.         ld d,fnt/256
  83.         ld bc,40
  84.         ;push hl
  85.         dup 4
  86.         ld a,(de)
  87.         ld (hl),a
  88.         inc d
  89.         add hl,bc
  90.         edup
  91.         ld a,(de)
  92. prcharmc_italic1=$
  93.         nop ;/add a,a
  94. prcharmc_stroke=$+1
  95.         or 0
  96.         ld (hl),a
  97.         inc d
  98.         add hl,bc
  99.         ld a,(de)
  100. prcharmc_italic2=$
  101.         nop ;/add a,a
  102.         ld (hl),a
  103.         inc d
  104.         add hl,bc
  105.         ld a,(de)
  106. prcharmc_italic3=$
  107.         nop ;/add a,a
  108.         ld (hl),a
  109.         inc d
  110.         add hl,bc
  111.         ld a,(de)
  112. prcharmc_italic4=$
  113.         nop ;/add a,a
  114. prcharmc_underline=$
  115.         nop ;/cpl
  116.         ld (hl),a
  117.        
  118.         res 6,h
  119. prcharmc_attr=$+1
  120.         ld a,7
  121.         ld bc,-40
  122.         dup 7
  123.         ld (hl),a
  124.         add hl,bc
  125.         edup
  126.         ld (hl),a
  127.        
  128.         ;set 6,h
  129.         ;pop hl
  130.         ld a,h
  131.         xor 0x60
  132.         cp 0xe0;h
  133.         ld h,a
  134.         ret nc
  135.         inc l
  136.         ret
  137.  
  138. prcharmc_stateful_setattr
  139.         ld hl,prcharmc_stateful_setattr_handler
  140.         ld (prcharmc_stateful_patch),hl
  141.         ret
  142. prcharmc_stateful_setattr_handler
  143.         dec a
  144.         ld hl,tfontweight
  145.         add a,l
  146.         ld l,a
  147.         adc a,h
  148.         sub l
  149.         ld h,a
  150.         ld a,(hl)
  151.         ld (prcharmc_attr),a
  152.         jr prcharmc_stateful_resethandler
  153. tfontweight
  154.         db 0+64 ;S
  155.         db 7 ;W
  156.         db 1 ;B
  157.         db 15 ;C
  158.         db 4+64 ;g
  159.         db 4+64 ;g
  160.         db 4+64 ;g
  161.         db 4+64 ;g
  162.         ;db 4 ;G
  163.         ds 8,6*8 ;marked
  164.  
  165. prcharmc_stateful_setitalic
  166.         ld hl,prcharmc_stateful_setitalic_handler
  167.         ld (prcharmc_stateful_patch),hl
  168.         ret
  169. prcharmc_stateful_setitalic_handler
  170.         dec a
  171.         rra
  172.         sbc a,a
  173.         and 0x87;add a,a
  174.         ld (prcharmc_italic1),a
  175.         ld (prcharmc_italic2),a
  176.         ld (prcharmc_italic3),a
  177.         ld (prcharmc_italic4),a
  178.         jr prcharmc_stateful_resethandler
  179.        
  180. prcharmc_stateful_setstroke
  181.         ld hl,prcharmc_stateful_setstroke_handler
  182.         ld (prcharmc_stateful_patch),hl
  183.         ret
  184. prcharmc_stateful_setstroke_handler
  185.         dec a
  186.         rra
  187.         sbc a,a
  188.         ld (prcharmc_stroke),a
  189.         jr prcharmc_stateful_resethandler
  190.        
  191. prcharmc_stateful_setunderline
  192.         ld hl,prcharmc_stateful_setunderline_handler
  193.         ld (prcharmc_stateful_patch),hl
  194.         ret
  195. prcharmc_stateful_setunderline_handler
  196.         dec a
  197.         rra
  198.         sbc a,a
  199.         and 0x2f;cpl
  200.         ld (prcharmc_underline),a
  201. prcharmc_stateful_resethandler
  202.         ld hl,prcharmc_stateful_normal
  203.         ld (prcharmc_stateful_patch),hl
  204.         ret
  205.  
  206. prcharmc_tab_stateful
  207.         ld de,(prcharmc_stateful_xy)
  208.         ld a,e
  209.         add a,8
  210.         and 0xf8
  211.         ld e,a
  212.         call setxymc_stateful
  213.         jr prcharmc_tab_statefulq
  214.  
  215. prcharmc_stateful
  216. ;a=code
  217. prcharmc_stateful_patch=$+1
  218.         jp prcharmc_stateful_normal
  219. prcharmc_stateful_normal
  220.         cp 1
  221.         jr z,prcharmc_stateful_setattr
  222.         cp 2
  223.         jr z,prcharmc_stateful_setitalic
  224.         cp 3
  225.         jr z,prcharmc_stateful_setstroke
  226.         cp 4
  227.         jr z,prcharmc_stateful_setunderline
  228.  
  229.         ;halt
  230.         push af
  231.         call setpgs_scr
  232.         pop af
  233. prcharmc_stateful_scr=$+1
  234.         ld hl,0
  235.         call prcharmc
  236.         ld (prcharmc_stateful_scr),hl
  237.         call setpgtemp8000
  238. prcharmc_stateful_xy=$+1
  239. prcharmc_stateful_x=prcharmc_stateful_xy
  240.         ld de,0
  241.         inc e
  242.         ld a,e
  243. prcharmc_tab_statefulq
  244.         ld (prcharmc_stateful_xy),de
  245.         cp 80
  246.         ret ;c
  247.        
  248. prcharmc_crlf_stateful
  249.         ;ld hl,(curprintvirtualy)
  250.         ;inc hl
  251.         ;ld (curprintvirtualy),hl
  252.         ld de,(prcharmc_stateful_xy)
  253.         ld e,0
  254.         ld a,d
  255.         add a,8
  256.         ld d,a
  257.         cp 8*(HTMLTOPY+HTMLHGT)
  258.         jr c,setxymc_stateful
  259.         sub 8
  260.         ld d,a
  261.         push de
  262.         call scrollmcup
  263.         pop de
  264. setxymc_stateful
  265. ;de=yx
  266.         ld (prcharmc_stateful_xy),de
  267.         call setxymc
  268.         ld (prcharmc_stateful_scr),hl
  269.         ret
  270.        
  271. scrollmcdown
  272.         call setpgs_scr
  273.         ld hl,0x8000+(40*8*(HTMLTOPY+HTMLHGT-1))
  274.         ld b,HTMLHGT-1
  275. scrollmcdown_rows0
  276.         push bc
  277.         ld d,h
  278.         ld e,l
  279.         ld bc,-40*8
  280.         add hl,bc
  281.         push hl
  282.         call scrollmc_row
  283.         pop hl
  284.         pop bc
  285.         djnz scrollmcdown_rows0
  286.         ld hl,0xc000+(40*8*(HTMLTOPY))
  287.         jr scrollmc_clearq
  288.        
  289. scrollmcup
  290.         call setpgs_scr
  291.         ld hl,0x8000+(40*8*(HTMLTOPY))
  292.         ld b,HTMLHGT-1
  293. scrollmcup_rows0
  294.         push bc
  295.         ld d,h
  296.         ld e,l
  297.         ld bc,40*8
  298.         add hl,bc
  299.         push hl
  300.         call scrollmc_row
  301.         pop hl
  302.         pop bc
  303.         djnz scrollmcup_rows0
  304.         ld hl,0xc000+(40*8*(HTMLTOPY+HTMLHGT-1))
  305. scrollmc_clearq
  306.         xor a
  307.         call cleanlinemc
  308.         jp setpgtemp8000
  309.  
  310. cleanlinemc
  311. ;hl=0xc000+
  312.         push af
  313.         xor a
  314.         call scrollmcup_clblock
  315.         set 5,h;ld hl,0xe000+(40*200)-(40*8)
  316.         call scrollmcup_clblock
  317.         pop af
  318.         res 6,h;ld hl,0xa000+(40*200)-(40*8)
  319.         call scrollmcup_clblock
  320.         res 5,h;ld hl,0x8000+(40*200)-(40*8)
  321.         ;call scrollmcup_clblock
  322.         ;ret        
  323. scrollmcup_clblock
  324.         push hl
  325.         ld d,h
  326.         ld e,l
  327.         inc de
  328.         ld bc,40*8-1
  329.         ld (hl),a;0
  330.         ldir
  331.         pop hl
  332.         ret
  333.  
  334. scrollmc_row
  335.         ld b,8
  336. scrollmc_row0        
  337.         push bc
  338.         push hl
  339.         push de
  340.         call scrollmc_line
  341.         pop hl
  342.         ld bc,40
  343.         add hl,bc
  344.         ex de,hl
  345.         pop hl
  346.         add hl,bc
  347.         pop bc
  348.         djnz scrollmc_row0
  349.         ret
  350.        
  351. scrollmc_line
  352.         ld bc,39
  353.         ldir
  354.         ld a,(hl)
  355.         ld (de),a
  356.         set 5,h
  357.         set 5,d
  358.         ld c,39
  359.         lddr
  360.         ld a,(hl)
  361.         ld (de),a
  362.         set 6,h
  363.         set 6,d
  364.         ld c,39
  365.         ldir
  366.         ld a,(hl)
  367.         ld (de),a
  368.         res 5,h
  369.         res 5,d
  370.         ld c,40
  371.         lddr
  372.         ret
  373.  
  374. setxymc
  375. ;de=yx (kept)
  376. ;out: hl=0xc000+
  377.         ld b,0
  378.         ld c,d
  379.         ld h,b
  380.         ld l,c
  381.         add hl,hl
  382.         add hl,hl
  383.         add hl,bc ;*5
  384.         add hl,hl
  385.         add hl,hl
  386.         add hl,hl ;*40
  387.         ld c,e
  388.          srl c
  389.         ld b,0xc0
  390.          jr nc,$+4
  391.          ld b,0xe0
  392.         add hl,bc
  393.         ret
  394.