home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / apps / dtp / pgsmodst / atariprt / jx730.s < prev    next >
Text File  |  1991-05-23  |  5KB  |  288 lines

  1.  include "prtequ.h"
  2.  
  3. *
  4. * Sharp JX-730 color print driver
  5. *
  6. CR    equ    $d
  7. LF    equ    $a
  8. FF    equ    $c
  9. ESC    equ    $1b
  10.  
  11.  SECTION printer,CODE,PUBLIC
  12. ***************************************************************
  13. ***************************************************************
  14. ***************************************************************
  15. dumbentry:
  16.     clr.l    d0
  17.     rts
  18.  
  19.     dc.l    "PRNT"
  20.     dc.w    200
  21.  
  22. *
  23. * distribute the calls to the appropriate routines
  24. *
  25. jx730:    move.l    a0,table
  26.     lsl.w    #2,d0
  27.     lea    prntbl,a1
  28.     move.l    0(a1,d0.w),a1
  29.     jmp    (a1)
  30.  
  31. *
  32. * identify who I am, and set up who I like to speak to.
  33. *
  34. p_ident:
  35.     move.l    #driver,pdrvrnm(a0)    ;pointer to string for driver name
  36.     move.w    #PARALLEL+ASCENDING,device(a0)
  37. prtok:    moveq    #1,d0
  38.     rts
  39.  
  40. *
  41. * initialize the table of printer specific routines
  42. *
  43. p_init:
  44.     clr.b    pdl(a0)            ;no page description language
  45.     clr.b    pmult(a0)        ;automatically print mulitiple copies?
  46.     clr.b    pman(a0)        ;handle manual feed?
  47.     move.b    #PRT_CMYK,ptype(a0)    ;printer type?
  48.  
  49.     move.l    sendout(a0),send+2    ;self-modifing code, tisk, tisk!
  50.  
  51. *
  52. *
  53.  
  54.     move.w    pdensity(a0),d0
  55.     cmp.w    #7,d0
  56.     bcs    pint1
  57.     moveq    #6,d0
  58. pint1:    lsl.w    #1,d0
  59.  
  60.     lea    xdpi_tbl,a1
  61.     move.w    0(a1,d0.w),pxdpi(a0)    ;x resolution
  62.     lea    ydpi_tbl,a1
  63.     move.w    0(a1,d0.w),pydpi(a0)    ;y resolution
  64.     lea    minl_tbl,a1
  65.     move.w    0(a1,d0.w),pminlft(a0)    ;pixels from the left
  66.     lea    minr_tbl,a1
  67.     move.w    0(a1,d0.w),pminrht(a0)    ;pixels from the right
  68.     lea    mint_tbl,a1
  69.     move.w    0(a1,d0.w),pmintop(a0)    ;pixels down from top
  70.     lea    minb_tbl,a1
  71.     move.w    0(a1,d0.w),pminbot(a0)    ;pixels up from bottom
  72.     lea    xover_tbl,a1
  73.     move.w    0(a1,d0.w),pxover(a0)    ;percentage of x overlap of dots
  74.     lea    yover_tbl,a1
  75.     move.w    0(a1,d0.w),pyover(a0)    ;percentage of y overlap of dots
  76.     lea    rowht_tbl,a1
  77.     move.w    0(a1,d0.w),prowht(a0)    ;rows height modula
  78.  
  79.     lsl.w    #1,d0
  80.     lea    maxw_tbl,a1
  81.     move.l    0(a1,d0.w),pmaxw(a0)    ;maximum # pixels across
  82.     lea    maxh_tbl,a1
  83.     move.l    0(a1,d0.w),pmaxh(a0)    ;maximum # pixels down
  84.     bra    prtok
  85.  
  86. *
  87. * going to begin printing a document
  88. *
  89. p_bgndoc:
  90.     bra    prtok
  91.  
  92. *
  93. * about to start printing of a page
  94. *
  95. p_bgnpage:
  96.     bra    prtok
  97.  
  98. *
  99. * about to print a new tile for the page
  100. *
  101. p_bgntile:
  102.     bra    prtok
  103.  
  104. *
  105. * print a block to the printer
  106. *
  107. p_block:
  108.     move.l    table,a0
  109.     move.l    pblockplane(a0),pplane
  110.      move.l    pblockw(a0),d0
  111.     move.w    d0,width
  112.     move.l    pblockptr(a0),a1
  113.     move.l    (a1),a1
  114.     add.l    pblockoff(a0),a1
  115.     move.l    a1,v_base
  116. *
  117. *
  118.     move.l    v_base,lineptr        ;cyan
  119.     move.b    #$3c,gcolor
  120.     bsr    putline
  121.  
  122.     move.l    v_base,lineptr        ;magenta
  123.     move.l    pplane,d0
  124.     add.l    d0,lineptr
  125.     move.b    #$34,gcolor
  126.     bsr    putline
  127.  
  128.     move.l    v_base,lineptr        ;yellow
  129.     move.l    pplane,d0
  130.     lsl.l    #1,d0
  131.     add.l    d0,lineptr
  132.     move.b    #$38,gcolor
  133.     bsr    putline
  134.  
  135.     move.l    v_base,lineptr        ;black
  136.     move.l    pplane,d0
  137.     lsl.l    #1,d0
  138.     add.l    pplane,d0
  139.     add.l    d0,lineptr
  140.     move.b    #$30,gcolor
  141.     bsr    putline
  142.  
  143. *
  144.     move.b    #ESC,d0
  145.     bsr    send
  146.     move.b    #"A",d0
  147.     bra    send
  148.  
  149. **************************************
  150.  
  151. putline:
  152.     move.l    lineptr,a0
  153.     move.w    #0,twidth
  154.     move.w    #3,d1
  155. .0:    move.w    width,d0
  156. .1:    tst.b    -1(a0,d0.w)
  157.     bne    .2
  158.     subq.w    #1,d0
  159.     bne    .1
  160. .2:    cmp.w    twidth,d0
  161.     blt    .3
  162.     move.w    d0,twidth
  163. .3:    add.w    width,a0
  164.     dbf    d1,.0
  165. *
  166.     tst.w    twidth
  167.     beq    prtok
  168.  
  169.     move.w    #4,count
  170. print1:    move.b    #ESC,d0
  171.     bsr    send
  172.     move.b    #"I",d0
  173.     bsr    send
  174.     move.b    gcolor,d0
  175.     bsr    send
  176.     add.b    #1,gcolor
  177.  
  178.     moveq    #0,d0
  179.     move.w    twidth,d0        ;send number of graphic bytes to follow
  180.     divu    #100,d0
  181.     or.b    #"0",d0
  182.     move.l    d0,-(sp)
  183.     bsr    send
  184.     move.l    (sp)+,d0
  185.     eor.w    d0,d0
  186.     swap    d0
  187.     divu    #10,d0
  188.     or.b    #"0",d0
  189.     move.l    d0,-(sp)
  190.     bsr    send
  191.     move.l    (sp)+,d0
  192.     swap    d0
  193.     or.b    #"0",d0
  194.     bsr    send
  195.  
  196. print2:    move.w    twidth,d7                 ;length of the data in byte
  197.     move.l    lineptr,a0
  198. print4:    move.b    (a0)+,d0
  199.     move.w    d7,-(sp)
  200.     move.l    a0,-(sp)
  201.     bsr    send
  202.     move.l    (sp)+,a0
  203.     move.w    (sp)+,d7
  204.     subq.w    #1,d7
  205.     bgt    print4
  206.  
  207.     moveq    #0,d0
  208.     move.w    width,d0
  209.     add.l    d0,lineptr
  210.  
  211.     subq.w    #1,count
  212.     bne    print1
  213.     bra    prtok
  214.  
  215.  
  216. ************************************
  217. *
  218. * just finished describing current tile
  219. *
  220. p_endtile:
  221.     bra    prtok
  222.  
  223. *
  224. * just finished describing all tiles for this page
  225. *
  226. p_endpage:
  227.     bra    prtok
  228.  
  229. *
  230. * finished printing the document
  231. *
  232. p_enddoc:
  233.     bra    prtok
  234.  
  235. ***************************************************
  236. ***    these are the send routines for the    ***
  237. ***    dot matrix driver.            ***
  238. ***************************************************
  239. sendline:
  240.     move.b    (a0)+,d0
  241.     beq    prtok
  242.     move.l    a0,-(sp)
  243.     bsr    send
  244.     move.l    (sp)+,a0
  245.     bra    sendline
  246.  
  247. send:    jmp    $ffffff
  248.  
  249.  
  250. ***********************************
  251. ***                ***
  252. ***********************************
  253.  SECTION printer,DATA,PUBLIC
  254.  
  255. prntbl:    dc.l    prtok,prtok,prtok,prtok,p_init
  256.     dc.l    p_bgndoc,p_bgnpage,p_bgntile
  257.     dc.l    p_block
  258.     dc.l    p_endtile,p_endpage,p_enddoc
  259.     dc.l    prtok,p_ident
  260.  
  261.  
  262. xdpi_tbl:    dc.w    180,180,180,180,180,180,180
  263. ydpi_tbl:    dc.w    180,180,180,180,180,180,180
  264. minl_tbl:    dc.w    30,30,30,30,30,30,30
  265. minr_tbl:    dc.w    30,30,30,30,30,30,30
  266. mint_tbl:    dc.w    0,0,0,0,0,0,0
  267. minb_tbl:    dc.w    0,0,0,0,0,0,0
  268. maxw_tbl:    dc.l    2448,2448,2448,2448,2448,2448,2448
  269. maxh_tbl:    dc.l    0,0,0,0,0,0,0
  270. xover_tbl:    dc.w    0,0,0,0,0,0,0
  271. yover_tbl:    dc.w    0,0,0,0,0,0,0
  272. rowht_tbl:    dc.w    4,4,4,4,4,4,4
  273.  
  274.  
  275. driver:        dc.b    "Sharp JX-730 v2.0.1",0
  276.  
  277.  SECTION printer,BSS,PUBLIC
  278. table:        ds.l    1
  279. twidth:        ds.w    1
  280. pixel:        ds.w    1
  281. v_base:        ds.l    1
  282. lineptr:    ds.l    1
  283. width:        ds.w    1
  284. pplane:        ds.l    1
  285. count:        ds.w    1
  286. loop:        ds.w    1
  287. gcolor:        ds.w    1
  288.