home *** CD-ROM | disk | FTP | other *** search
/ FreeWare Collection 2 / FreeSoftwareCollection2pd199x-jp.img / prnout / src / vram.asm < prev    next >
Assembly Source File  |  1990-06-14  |  8KB  |  318 lines

  1. ;*****************************************************************
  2. ;
  3. ;void    wrtank(ch,x,y,ccol,bcol)
  4. ;
  5. ;void    wrtkanji(ch,x,y,ccol,bcol)
  6. ;
  7. ;*****************************************************************
  8. v_para    struc
  9. v_ebp    dd    ?
  10. v_pcr    dd    ?
  11. v_ch    dd    ?
  12. v_x    dd    ?
  13. v_y    dd    ?
  14. v_ccol    dd    ?
  15. v_bcol    dd    ?
  16. v_off    dd    ?
  17. v_para    ends
  18. ;*************************************
  19. ;    VRAM Direct Access Program
  20. ;*************************************
  21. bitptn    segment    'DATA'
  22. colptn: 
  23.     dd    000000000h,011111111h,022222222h,033333333h
  24.     dd    044444444h,055555555h,066666666h,077777777h
  25.     dd    088888888h,099999999h,0AAAAAAAAh,0BBBBBBBBh
  26.     dd    0CCCCCCCCh,0DDDDDDDDh,0EEEEEEEEh,0FFFFFFFFh
  27. fntptn:    
  28.     dd    000000000h,0F0000000h,00F000000h,0FF000000h
  29.     dd    000F00000h,0F0F00000h,00FF00000h,0FFF00000h
  30.     dd    0000F0000h,0F00F0000h,00F0F0000h,0FF0F0000h
  31.     dd    000FF0000h,0F0FF0000h,00FFF0000h,0FFFF0000h
  32.     dd    00000F000h,0F000F000h,00F00F000h,0FF00F000h
  33.     dd    000F0F000h,0F0F0F000h,00FF0F000h,0FFF0F000h
  34.     dd    0000FF000h,0F00FF000h,00F0FF000h,0FF0FF000h
  35.     dd    000FFF000h,0F0FFF000h,00FFFF000h,0FFFFF000h
  36.     dd    000000F00h,0F0000F00h,00F000F00h,0FF000F00h
  37.     dd    000F00F00h,0F0F00F00h,00FF00F00h,0FFF00F00h
  38.     dd    0000F0F00h,0F00F0F00h,00F0F0F00h,0FF0F0F00h
  39.     dd    000FF0F00h,0F0FF0F00h,00FFF0F00h,0FFFF0F00h
  40.     dd    00000FF00h,0F000FF00h,00F00FF00h,0FF00FF00h
  41.     dd    000F0FF00h,0F0F0FF00h,00FF0FF00h,0FFF0FF00h
  42.     dd    0000FFF00h,0F00FFF00h,00F0FFF00h,0FF0FFF00h
  43.     dd    000FFFF00h,0F0FFFF00h,00FFFFF00h,0FFFFFF00h
  44.     dd    0000000F0h,0F00000F0h,00F0000F0h,0FF0000F0h
  45.     dd    000F000F0h,0F0F000F0h,00FF000F0h,0FFF000F0h
  46.     dd    0000F00F0h,0F00F00F0h,00F0F00F0h,0FF0F00F0h
  47.     dd    000FF00F0h,0F0FF00F0h,00FFF00F0h,0FFFF00F0h
  48.     dd    00000F0F0h,0F000F0F0h,00F00F0F0h,0FF00F0F0h
  49.     dd    000F0F0F0h,0F0F0F0F0h,00FF0F0F0h,0FFF0F0F0h
  50.     dd    0000FF0F0h,0F00FF0F0h,00F0FF0F0h,0FF0FF0F0h
  51.     dd    000FFF0F0h,0F0FFF0F0h,00FFFF0F0h,0FFFFF0F0h
  52.     dd    000000FF0h,0F0000FF0h,00F000FF0h,0FF000FF0h
  53.     dd    000F00FF0h,0F0F00FF0h,00FF00FF0h,0FFF00FF0h
  54.     dd    0000F0FF0h,0F00F0FF0h,00F0F0FF0h,0FF0F0FF0h
  55.     dd    000FF0FF0h,0F0FF0FF0h,00FFF0FF0h,0FFFF0FF0h
  56.     dd    00000FFF0h,0F000FFF0h,00F00FFF0h,0FF00FFF0h
  57.     dd    000F0FFF0h,0F0F0FFF0h,00FF0FFF0h,0FFF0FFF0h
  58.     dd    0000FFFF0h,0F00FFFF0h,00F0FFFF0h,0FF0FFFF0h
  59.     dd    000FFFFF0h,0F0FFFFF0h,00FFFFFF0h,0FFFFFFF0h
  60.     dd    00000000Fh,0F000000Fh,00F00000Fh,0FF00000Fh
  61.     dd    000F0000Fh,0F0F0000Fh,00FF0000Fh,0FFF0000Fh
  62.     dd    0000F000Fh,0F00F000Fh,00F0F000Fh,0FF0F000Fh
  63.     dd    000FF000Fh,0F0FF000Fh,00FFF000Fh,0FFFF000Fh
  64.     dd    00000F00Fh,0F000F00Fh,00F00F00Fh,0FF00F00Fh
  65.     dd    000F0F00Fh,0F0F0F00Fh,00FF0F00Fh,0FFF0F00Fh
  66.     dd    0000FF00Fh,0F00FF00Fh,00F0FF00Fh,0FF0FF00Fh
  67.     dd    000FFF00Fh,0F0FFF00Fh,00FFFF00Fh,0FFFFF00Fh
  68.     dd    000000F0Fh,0F0000F0Fh,00F000F0Fh,0FF000F0Fh
  69.     dd    000F00F0Fh,0F0F00F0Fh,00FF00F0Fh,0FFF00F0Fh
  70.     dd    0000F0F0Fh,0F00F0F0Fh,00F0F0F0Fh,0FF0F0F0Fh
  71.     dd    000FF0F0Fh,0F0FF0F0Fh,00FFF0F0Fh,0FFFF0F0Fh
  72.     dd    00000FF0Fh,0F000FF0Fh,00F00FF0Fh,0FF00FF0Fh
  73.     dd    000F0FF0Fh,0F0F0FF0Fh,00FF0FF0Fh,0FFF0FF0Fh
  74.     dd    0000FFF0Fh,0F00FFF0Fh,00F0FFF0Fh,0FF0FFF0Fh
  75.     dd    000FFFF0Fh,0F0FFFF0Fh,00FFFFF0Fh,0FFFFFF0Fh
  76.     dd    0000000FFh,0F00000FFh,00F0000FFh,0FF0000FFh
  77.     dd    000F000FFh,0F0F000FFh,00FF000FFh,0FFF000FFh
  78.     dd    0000F00FFh,0F00F00FFh,00F0F00FFh,0FF0F00FFh
  79.     dd    000FF00FFh,0F0FF00FFh,00FFF00FFh,0FFFF00FFh
  80.     dd    00000F0FFh,0F000F0FFh,00F00F0FFh,0FF00F0FFh
  81.     dd    000F0F0FFh,0F0F0F0FFh,00FF0F0FFh,0FFF0F0FFh
  82.     dd    0000FF0FFh,0F00FF0FFh,00F0FF0FFh,0FF0FF0FFh
  83.     dd    000FFF0FFh,0F0FFF0FFh,00FFFF0FFh,0FFFFF0FFh
  84.     dd    000000FFFh,0F0000FFFh,00F000FFFh,0FF000FFFh
  85.     dd    000F00FFFh,0F0F00FFFh,00FF00FFFh,0FFF00FFFh
  86.     dd    0000F0FFFh,0F00F0FFFh,00F0F0FFFh,0FF0F0FFFh
  87.     dd    000FF0FFFh,0F0FF0FFFh,00FFF0FFFh,0FFFF0FFFh
  88.     dd    00000FFFFh,0F000FFFFh,00F00FFFFh,0FF00FFFFh
  89.     dd    000F0FFFFh,0F0F0FFFFh,00FF0FFFFh,0FFF0FFFFh
  90.     dd    0000FFFFFh,0F00FFFFFh,00F0FFFFFh,0FF0FFFFFh
  91.     dd    000FFFFFFh,0F0FFFFFFh,00FFFFFFFh,0FFFFFFFFh
  92. bitptn    ends
  93.  
  94. VRAM    segment 'CODE'
  95.     assume  cs:VRAM
  96. ;**************************************
  97. ;    Write Kanji Code (JIS or SJIS)
  98. ;**************************************
  99.            public    wrtkan
  100. wrtkan    proc    near
  101.         push    ebp
  102.         mov        ebp,esp
  103.         push       esi
  104.         push       edi
  105.     push    ebx
  106.     push    es
  107.     push    fs
  108.  
  109.     mov    edi,[ebp].v_y
  110.     shl    edi,13        ; 128 * 4 * 16 * v_y = 8192 * v_x
  111.     mov    eax,[ebp].v_x
  112.     shl    eax,2        ; v_x * 4
  113.     add    edi,eax
  114.     and    edi,03FFFFh
  115.     add    edi,[ebp].v_off
  116.  
  117.     mov    eax,[ebp].v_ccol
  118.     and    eax,0fh
  119.     mov    eax,ds:[eax*4+offset colptn]
  120.     mov    [ebp].v_ccol,eax
  121.     mov    eax,[ebp].v_bcol
  122.     and    eax,0fh
  123.     mov    eax,ds:[eax*4+offset colptn]
  124.     mov    [ebp].v_bcol,eax
  125.  
  126.     mov    eax,104h
  127.     mov    fs,ax
  128.  
  129.     mov    ebx,[ebp].v_ch
  130.     bt    ebx,15
  131.     jnc    sjto4
  132.     cmp    bh,9fh
  133.     jbe    sjto1
  134.     sub    bh,0B1h-071h
  135. sjto1:  sub    bh,071h
  136.     shl    bh,1
  137.     inc    bh
  138.     cmp    bl,7fh
  139.     jbe    sjto2
  140.     dec    bl
  141. sjto2:    cmp    bl,9eh
  142.     jb    sjto3
  143.     sub    bl,7dh
  144.     inc    bh
  145.     jmp    sjto4
  146. sjto3:    sub    bl,1fh
  147.  
  148. sjto4:    mov    dx,0FF94h
  149.     mov    al,bh
  150.     out    dx,al
  151.     inc    dx
  152.     mov    al,bl
  153.     out    dx,al
  154.  
  155.     mov    ecx,16
  156. wrtkn1:    mov    dx,0FF96h
  157.     sub    eax,eax
  158.     in    al,dx
  159.     mov    eax,ds:[eax*4+offset fntptn]
  160.     mov    ebx,eax
  161.     not    ebx
  162.     and    eax,[ebp].v_ccol
  163.     and    ebx,[ebp].v_bcol
  164.     or    eax,ebx
  165.     mov    fs:[edi],eax
  166.  
  167.     inc    dx
  168.     sub    eax,eax
  169.     in    al,dx
  170.     mov    eax,ds:[eax*4+offset fntptn]
  171.     mov    ebx,eax
  172.     not    ebx
  173.     and    eax,[ebp].v_ccol
  174.     and    ebx,[ebp].v_bcol
  175.     or    eax,ebx
  176.     mov    fs:[edi+4],eax
  177.  
  178.     add    edi,512
  179.     and    edi,03FFFFh
  180.     add    edi,[ebp].v_off
  181.     loop    wrtkn1
  182.  
  183.     pop    fs
  184.     pop    es
  185.     pop    ebx
  186.         pop        edi
  187.         pop        esi
  188.     pop    ebp
  189.         ret
  190. wrtkan    endp
  191. ;***********************************
  192. ;    Write ANK code
  193. ;***********************************
  194.            public    wrtank
  195. wrtank    proc    near
  196.         push    ebp
  197.         mov        ebp,esp
  198.         push       esi
  199.         push       edi
  200.     push    ebx
  201.     push    es
  202.     push    fs
  203.  
  204.     mov    edi,[ebp].v_y
  205.     shl    edi,13
  206.     mov    eax,[ebp].v_x
  207.     shl    eax,2
  208.     add    edi,eax
  209.     and    edi,03FFFFh
  210.     add    edi,[ebp].v_off
  211.  
  212.     mov    eax,[ebp].v_ccol
  213.     and    eax,0fh
  214.     mov    eax,ds:[eax*4+offset colptn]
  215.     mov    [ebp].v_ccol,eax
  216.     mov    eax,[ebp].v_bcol
  217.     and    eax,0fh
  218.     mov    eax,ds:[eax*4+offset colptn]
  219.     mov    [ebp].v_bcol,eax
  220.  
  221.     mov    ax,138h
  222.     mov    es,ax
  223.     mov    ax,104h
  224.     mov    fs,ax
  225.  
  226.     mov    esi,[ebp].v_ch
  227.     and    esi,0ffh
  228.     shl    esi,4
  229.     add    esi,3D800h
  230.  
  231.     mov    ecx,16
  232. wrtak2:    movzx    eax,byte ptr es:[esi]
  233.     inc    esi
  234.     mov    eax,ds:[eax*4+offset fntptn]
  235.     mov    ebx,eax
  236.     not    ebx
  237.     and    eax,[ebp].v_ccol
  238.     and    ebx,[ebp].v_bcol
  239.     or    eax,ebx
  240.     mov    fs:[edi],eax
  241.     add    edi,512
  242.     and    edi,03FFFFh
  243.     add    edi,[ebp].v_off
  244.     loop    wrtak2
  245.  
  246.     pop    fs
  247.     pop    es
  248.     pop    ebx
  249.         pop        edi
  250.         pop        esi
  251.     pop    ebp
  252.         ret
  253. wrtank    endp
  254. ;***********************************
  255. ;    Displry CurSol
  256. ;***********************************
  257.            public    disp_cur
  258. disp_cur proc    near
  259.         push    ebp
  260.         mov        ebp,esp
  261.         push       edi
  262.     push    ds
  263.  
  264.     mov    edi,[ebp+12]
  265.     shl    edi,13
  266.     mov    eax,[ebp+8]
  267.     shl    eax,2
  268.     add    edi,eax
  269.     and    edi,03FFFFh
  270.     add    edi,[ebp+16]
  271.  
  272.     mov    eax,104h
  273.     mov    ds,ax
  274.  
  275.     mov    ecx,16
  276. disp_1:    not    dword ptr ds:[edi]
  277.     add    edi,512
  278.     and    edi,03FFFFh
  279.     add    edi,[ebp+16]
  280.     loop    disp_1
  281.  
  282.     pop    ds
  283.         pop        edi
  284.     pop    ebp
  285.         ret
  286. disp_cur endp
  287. ;***********************************
  288. ;    Printer BIOS
  289. ;***********************************
  290.            public    sub_PRB_chr
  291. sub_PRB_chr proc    near
  292.     mov    ax,0100h
  293.     mov    dl,[esp+4]
  294.         int    94h
  295.     mov    al,ah
  296.     and    eax,0FFh
  297.         ret
  298. sub_PRB_chr endp
  299.  
  300.            public    inp
  301. inp    proc    near
  302.     mov    dx,[esp+4]
  303.     in    al,dx
  304.     and    eax,0FFh
  305.         ret
  306. inp    endp
  307.  
  308.            public    outp
  309. outp    proc    near
  310.     mov    dx,[esp+4]
  311.     mov    ax,[esp+8]
  312.     out    dx,al
  313.         ret
  314. outp    endp
  315.  
  316. VRAM    ends
  317.     end
  318.