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

  1.  
  2.  Include "equ.h"
  3.  Include "impequ.h"
  4.  
  5.  SECTION degas,CODE,PUBLIC
  6.  
  7. ***************************************************
  8. ***                        ***
  9. ***************************************************
  10. dumbentry:
  11.     clr.l    d0
  12.     rts
  13.  
  14.     dc.l    "IMPP"        ; magik number for pic import
  15.     dc.w    200
  16.     dc.l    0
  17.  
  18. table:    dc.l    0
  19.     dc.l    name,special,check,degas
  20.  
  21. *
  22. * Degas
  23. *
  24. check:    move.l    table,a0
  25.     move.l    flen(a0),a1
  26.     cmp.l    #32128,(a1)
  27.     bhi    never
  28.     cmp.l    #32034,(a1)
  29.     bcs    never
  30. cdgs1:    move.l    buff1(a0),a1
  31.     move.l    (a1),a1
  32.     move.w    (a1),d0
  33.     cmp.w    #3,d0
  34.     bcc    never
  35. ;    move.l    fname(a0),a1
  36. ;cdgs2:    move.b    (a1)+,d0
  37. ;    beq    maybe
  38. ;    cmp.b    #'.',d0
  39. ;    bne    cdgs2
  40. ;    cmp.b    #'P',(a1)+
  41. ;    bne    maybe
  42. ;    cmp.b    #'I',(a1)+
  43. ;    bne    maybe
  44. ;    cmp.b    #'1',(a1)
  45. ;    bcs    maybe
  46. ;    cmp.b    #'3',(a1)
  47. ;    bhi    maybe
  48.     moveq    #2,d0
  49. drts:    rts
  50. *
  51. *
  52. * the picture is already in buff1
  53. *
  54. degas:    move.l    table,a0
  55.     move.l    f_openr(a0),a0
  56.     jsr    (a0)
  57.     beq    drts
  58.  
  59.     move.l    table,a0
  60.     move.l    spclnum(a0),a0
  61.     cmp.w    #1,(a0)
  62.     beq    impobj
  63. *
  64. *
  65. *
  66. imppic:    move.l    table,a0
  67.     move.l    p_open(a0),a0
  68.     jsr    (a0)
  69.     beq    drts
  70.  
  71.     bsr    getpicinfo
  72.  
  73.     move.l    table,a4
  74.     move.l    cwptr(a4),a4        ;ptr to window handle
  75.     move.l    (a4),a4            ;window handle
  76.     move.l    (a4),a4            ;ptr to window structure
  77.  
  78.     lea    pic,a0
  79.     move.w    pc_Type(a0),pi_Type(a4)
  80.     move.w    pc_SFreq(a0),pi_SFreq(a4)
  81.     move.w    pc_SAngle(a0),pi_SAngle(a4)
  82.     move.w    pc_SSpot(a0),pi_SSpot(a4)
  83.     move.l    pc_SMap(a0),pi_SMap(a4)
  84.     move.l    pc_SMap+4(a0),pi_SMap+4(a4)
  85.     move.w    pc_XDpi(a0),pi_XDpi(a4)
  86.     move.w    pc_YDpi(a0),pi_YDpi(a4)
  87.     move.w    pc_W(a0),pi_W(a4)
  88.     move.w    pc_H(a0),pi_H(a4)
  89.     move.w    pc_Width(a0),pi_Width(a4)
  90.     move.w    pc_BitPln(a0),pi_BitPln(a4)
  91.     move.w    pc_Palet(a0),pi_Palet(a4)
  92.  
  93.     move.w    pi_Palet(a4),d1
  94.     mulu    #pl_Sizeof,d1
  95.     move.w    pi_Width(a4),d0
  96.     mulu    pi_BitPln(a4),d0
  97.     mulu    pi_H(a4),d0
  98.     add.l    d1,d0        ;size of bitmap +( 4 words * #colors)
  99.  
  100.     clr.w    d1
  101.     clr.w    d2
  102.     move.l    table,a0
  103.     move.l    m_alloc(a0),a0
  104.     jsr    (a0)
  105.     beq    abortpic
  106.  
  107.     move.l    table,a3
  108.     move.l    cwptr(a3),a3
  109.     move.l    (a3),a3
  110.     move.l    (a3),a3
  111.     move.l    a0,pi_Ptr(a3)
  112.     move.l    (a0),a4
  113.     move.l    a4,picptr
  114.  
  115.     bsr    putcolor
  116.     bsr    putpic
  117.  
  118.     move.l    table,a0
  119.     move.l    p_close(a0),a0
  120.     jsr    (a0)
  121.  
  122.     move.l    table,a0
  123.     move.l    f_closer(a0),a0
  124.     jmp    (a0)
  125.  
  126. abortpic:
  127.     move.l    table,a0
  128.     move.l    p_abort(a0),a0
  129.     jsr    (a0)
  130.  
  131.     move.l    table,a0
  132.     move.l    f_closer(a0),a0
  133.     jmp    (a0)
  134. *
  135. *
  136. *
  137. impobj:    move.l    table,a0
  138.     move.l    o_open(a0),a0
  139.     jsr    (a0)
  140.     beq    drts
  141.  
  142.     bsr    getpicinfo
  143.  
  144.     move.b    #tpic,object+ob_Type
  145.     clr.l    object+ob_Left
  146.     clr.l    object+ob_Top
  147.  
  148.     move.l    #7200,d0
  149.     move.w    pic+pc_W,d1
  150.     bsr    Mulu1632
  151.     move.w    pic+pc_XDpi,d2
  152.     bsr    Divu1648
  153.     move.l    d0,object+ob_Right
  154.  
  155.     move.l    #7200,d0
  156.     move.w    pic+pc_H,d1
  157.     bsr    Mulu1632
  158.     move.w    pic+pc_YDpi,d2
  159.     bsr    Divu1648
  160.     move.l    d0,object+ob_Bottom
  161.  
  162.     clr.b    object+ob_Flag
  163.     clr.w    object+ob_Slant
  164.     clr.w    object+ob_Twist
  165.     move.w    #50,object+ob_LWidth        ;1 point line
  166.     clr.b    object+ob_LType            ;no line
  167.     move.b    #1,object+ob_LColor        ;black line
  168.     clr.b    object+ob_FType            ;no fill
  169.     move.b    #1,object+ob_FColor        ;black fill
  170.     clr.b    object+ob_LBegin
  171.     clr.b    object+ob_LEnd
  172.     move.w    #900,object+ob_HStandOff    ;1/8 inch
  173.     move.w    #900,object+ob_VStandOff    ;1/8 inch
  174. *
  175. *
  176.     move.l    table,a1
  177.     move.l    o_obj(a1),a1
  178.     lea    object,a0
  179.     jsr    (a1)
  180.     beq    abortobj
  181.  
  182.     move.w    pic+pc_Width,d0
  183.     mulu    pic+pc_BitPln,d0
  184.     mulu    pic+pc_H,d0
  185.     move.w    pic+pc_Palet,d1
  186.     mulu    #pl_Sizeof,d1
  187.     add.l    d1,d0
  188.     add.l    #pc_Sizeof,d0
  189.  
  190.     move.l    table,a0
  191.     move.l    o_malloc(a0),a0
  192.     jsr    (a0)
  193.     beq    abortobj
  194.  
  195.     lea    pic,a1
  196.     clr.l    pc_DPtr(a1)
  197.     clr.w    pc_DScale(a1)
  198.     move.w    pc_Palet(a1),d0
  199.     mulu    #pl_Sizeof,d0
  200.     add.l    #pc_Sizeof,d0
  201.     move.l    d0,pc_Ptr(a1)
  202.  
  203.     move.w    #pc_Sizeof/2-1,d0
  204. oppic1:    move.w    (a1)+,(a0)+
  205.     dbf    d0,oppic1
  206.     move.l    a0,picptr
  207.  
  208.     bsr    putcolor
  209.     bsr    putpic
  210.  
  211.     move.l    table,a0
  212.     move.l    o_close(a0),a0
  213.     jsr    (a0)
  214.  
  215.     move.l    table,a0
  216.     move.l    f_closer(a0),a0
  217.     jmp    (a0)
  218.  
  219. abortobj:
  220.     move.l    table,a0
  221.     move.l    o_abort(a0),a0
  222.     jsr    (a0)
  223.  
  224.     move.l    table,a0
  225.     move.l    f_closer(a0),a0
  226.     jmp    (a0)
  227. *
  228. *
  229. *
  230. getpicinfo:
  231.     move.l    table,a0
  232.     move.l    f_getw(a0),a0
  233.     jsr    (a0)
  234.  
  235.     lea    dgstbl,a0
  236.     lsl.w    #2,d0
  237.     move.l    0(a0,d0.w),a0
  238.  
  239.     lea    pic,a4
  240.     move.w    (a0)+,pc_Palet(a4)    ;number of color pallet entries
  241.     move.w    (a0)+,pc_BitPln(a4)
  242.     move.w    (a0)+,pc_W(a4)
  243.     move.w    (a0)+,pc_H(a4)
  244.     move.w    (a0)+,pc_Width(a4)
  245.     move.w    (a0)+,pc_XDpi(a4)
  246.     move.w    (a0),pc_YDpi(a4)
  247.  
  248.     clr.w    pc_Type(a4)
  249.     move.w    #-1,pc_SFreq(a4)
  250.     move.w    #-1,pc_SAngle(a4)
  251.     clr.w    pc_SSpot(a4)
  252.     clr.l    pc_SMap(a4)
  253.     clr.l    pc_SMap+4(a4)
  254.     rts
  255.  
  256.  
  257.  
  258. putcolor:
  259.     move.w    pic+pc_Palet,temp1        ;# of colors in bit map
  260.     cmp.w    #2,temp1
  261.     beq    dgsmono
  262.  
  263. dgsp2:    move.l    table,a0
  264.     move.l    f_getw(a0),a0
  265.     jsr    (a0)
  266.  
  267.     move.w    d0,d1
  268.     move.w    d0,d2
  269.     lsr.w    #8,d0
  270.     lsr.w    #4,d1
  271.     and.w    #%111,d0        ;red
  272.     and.w    #%111,d1        ;green
  273.     and.w    #%111,d2        ;blue
  274.     mulu    #65535,d0
  275.     mulu    #65535,d1
  276.     mulu    #65535,d2
  277.     divu    #7,d0
  278.     divu    #7,d1
  279.     divu    #7,d2
  280.  
  281.     move.l    picptr,a4
  282.     move.w    d0,(a4)+        ;red
  283.     move.w    d1,(a4)+        ;green
  284.     move.w    d2,(a4)+        ;blue
  285.  
  286.     mulu    #19661,d0
  287.     mulu    #38666,d1
  288.     mulu    #7209,d2
  289.     add.l    d1,d0
  290.     add.l    d2,d0
  291.     swap    d0
  292.     cmp.w    #$8000,d0
  293.     bcc    pcwhite
  294.     moveq    #1,d0
  295.     bra    pcblack
  296. pcwhite:
  297.     moveq    #0,d0
  298. pcblack:
  299.     move.w    d0,(a4)+
  300.     move.l    a4,picptr
  301.  
  302.     subq.w    #1,temp1
  303.     bne    dgsp2
  304.  
  305.     move.l    #16,d0            ;skip over unused color pallete entries
  306.     sub.w    pic+pc_Palet,d0
  307.     lsl.w    #1,d0
  308.     move.l    table,a0
  309.     move.l    f_skip(a0),a0
  310.     jmp    (a0)
  311.  
  312. dgsmono:
  313.     move.l    table,a0
  314.     move.l    f_getw(a0),a0
  315.     jsr    (a0)
  316.     cmp.w    #$777,d0
  317.     beq    wb
  318.     cmp.w    #$1,d0
  319.     beq    wb
  320.  
  321.     move.l    picptr,a4
  322.     clr.w    (a4)+
  323.     clr.w    (a4)+
  324.     clr.w    (a4)+
  325.     move.w    #1,(a4)+
  326.     move.w    #$ffff,(a4)+
  327.     move.w    #$ffff,(a4)+
  328.     move.w    #$ffff,(a4)+
  329.     clr.w    (a4)+
  330.     move.l    a4,picptr
  331.     bra    bw
  332.  
  333. wb:    move.l    picptr,a4
  334.     move.w    #$ffff,(a4)+        ;red    ;white
  335.     move.w    #$ffff,(a4)+        ;green
  336.     move.w    #$ffff,(a4)+        ;blue
  337.     clr.w    (a4)+
  338.     clr.w    (a4)+            ;red    ;black
  339.     clr.w    (a4)+            ;green
  340.     clr.w    (a4)+            ;blue
  341.     move.w    #1,(a4)+
  342.     move.l    a4,picptr
  343.  
  344. bw:    move.l    #30,d0            ;skip over unused color pallete entries
  345.     move.l    table,a0
  346.     move.l    f_skip(a0),a0
  347.     jmp    (a0)
  348.  
  349. *
  350. *
  351. *
  352. putpic:    move.w    pic+pc_Width,d0
  353.     lsr.w    #1,d0
  354.     move.w    d0,dwidth
  355.  
  356.     move.w    pic+pc_Width,d0
  357.     mulu    pic+pc_H,d0
  358.     move.l    d0,plane
  359.  
  360. dgsuc1:    move.w    dwidth,temp2
  361.  
  362. dgsuc2:    move.w    pic+pc_BitPln,temp3
  363.     move.l    picptr,a1
  364.  
  365. dgsuc3:    move.l    a1,-(sp)
  366.     move.l    table,a0
  367.     move.l    f_getw(a0),a0
  368.     jsr    (a0)
  369.     move.l    (sp)+,a1
  370.  
  371.     move.w    d0,(a1)
  372.     add.l    plane,a1
  373.  
  374.     subq.w    #1,temp3
  375.     bne    dgsuc3
  376.  
  377.     addq.l    #2,picptr
  378.     subq.w    #1,temp2
  379.     bne    dgsuc2
  380.  
  381.     subq.w    #1,pic+pc_H
  382.     bne    dgsuc1
  383. *
  384.     rts
  385.  
  386. Mulu1632:
  387.     move.l    table,a0
  388.     move.l    mulu1632(a0),a0
  389.     jmp    (a0)
  390.  
  391. Divu1648:
  392.     move.l    table,a0
  393.     move.l    divu1648(a0),a0
  394.     jmp    (a0)
  395.  
  396. *******************************************************************
  397. ***    called when the import routine choosen finds something    ***
  398. ***    wrong with the file loaded.                ***
  399. *******************************************************************
  400. notright:
  401.     rts
  402.  
  403. never:    moveq    #0,d0
  404.     rts
  405.  
  406. maybe:    moveq    #1,d0
  407.     rts
  408.  
  409. right:    moveq    #2,d0
  410.     rts
  411.  
  412. *************************************************************
  413. *************************************************************
  414.  SECTION degas,DATA,PUBLIC
  415. *
  416. special:
  417.     dc.w    2
  418.     dc.l    spcl1,spcl2
  419. *
  420. dgstbl:    dc.l    dgslow,dgsmed,dgshi
  421. dgslow:    dc.w    16,4,320,200,40,36,36
  422. dgsmed:    dc.w    4,2,640,200,80,72,36
  423. dgshi:    dc.w    2,1,640,400,80,77,77
  424.  
  425. *
  426. *
  427. *
  428. name:    dc.b    "Degas Picture v2.1.1",0
  429. *
  430. spcl1:    dc.b    "Picture Window",0
  431. spcl2:    dc.b    "Object",0
  432. *
  433.  
  434.  SECTION degas,BSS,PUBLIC
  435. temp1:    ds.w    1
  436. temp2:    ds.w    1
  437. temp3:    ds.w    1
  438.  
  439. dwidth:    ds.w    1
  440. bitpln:    ds.w    1
  441.  
  442. plane:    ds.l    1
  443.  
  444. picptr:    ds.l    1
  445.  
  446. object:    ds.w    ob_SizeOf/2
  447. pic:    ds.w    pc_Sizeof/2
  448.