Subversion Repositories NedoOS

Rev

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

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