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

  1.  
  2.  Include "equ.h"
  3.  Include "impequ.h"
  4.  
  5.  
  6.     .text
  7.  
  8. ***************************************************
  9. ***                        ***
  10. ***************************************************
  11. dumbentry:
  12.     clr.l    d0
  13.     rts
  14.  
  15.     dc.l    "IMPP"
  16.     dc.w    200
  17.     dc.l    0
  18.  
  19. table:    dc.l    0
  20.     dc.l    name,special,check,neochrome
  21.  
  22. *
  23. * Neochrome
  24. *
  25. check:    move.l    table,a0
  26.     move.l    flen(a0),a1
  27.     cmp.l    #32128,(a1)
  28.     bne    never
  29.     move.l    buff1(a0),a1
  30.     move.l    (a1),a1
  31.     move.w    2(a1),d0
  32.     cmp.w    #3,d0
  33.     bcc    never
  34. ;    move.l    fname(a0),a1
  35. ;cneo2:    move.b    (a1)+,d0
  36. ;    beq    maybe
  37. ;    cmp.b    #".",d0
  38. ;    bne    cneo2
  39. ;    cmp.b    #"N",(a1)+
  40. ;    bne    maybe
  41. ;    cmp.b    #"E",(a1)+
  42. ;    bne    maybe
  43. ;    cmp.b    #"O",(a1)
  44. ;    bne    maybe
  45.     moveq    #2,d0
  46. irts:    rts
  47. *
  48. *
  49. *
  50. *
  51. neochrome:
  52.     move.l    table,a0
  53.     move.l    f_openr(a0),a0
  54.     jsr    (a0)
  55.     beq    irts
  56.  
  57.     move.l    table,a0
  58.     move.l    spclnum(a0),a0
  59.     cmp.w    #1,(a0)
  60.     beq    impobj
  61. *
  62. *
  63. *
  64. imppic:    move.l    table,a0
  65.     move.l    p_open(a0),a0
  66.     jsr    (a0)
  67.     beq    irts
  68.  
  69.     bsr    getpicinfo
  70.  
  71.     move.l    table,a4
  72.     move.l    cwptr(a4),a4        ;ptr to window handle
  73.     move.l    (a4),a4            ;window handle
  74.     move.l    (a4),a4            ;ptr to window structure
  75.  
  76.     lea    pic,a0
  77.     move.w    pc_Type(a0),pi_Type(a4)
  78.     move.w    pc_SFreq(a0),pi_SFreq(a4)
  79.     move.w    pc_SAngle(a0),pi_SAngle(a4)
  80.     move.w    pc_SSpot(a0),pi_SSpot(a4)
  81.     move.l    pc_SMap(a0),pi_SMap(a4)
  82.     move.l    pc_SMap+4(a0),pi_SMap+4(a4)
  83.     move.w    pc_XDpi(a0),pi_XDpi(a4)
  84.     move.w    pc_YDpi(a0),pi_YDpi(a4)
  85.     move.w    pc_W(a0),pi_W(a4)
  86.     move.w    pc_H(a0),pi_H(a4)
  87.     move.w    pc_Width(a0),pi_Width(a4)
  88.     move.w    pc_BitPln(a0),pi_BitPln(a4)
  89.     move.w    pc_Palet(a0),pi_Palet(a4)
  90.  
  91.     move.w    pi_Palet(a4),d1
  92.     mulu    #pl_Sizeof,d1
  93.     move.w    pi_Width(a4),d0
  94.     mulu    pi_BitPln(a4),d0
  95.     mulu    pi_H(a4),d0
  96.     add.l    d1,d0
  97.  
  98.     clr.w    d1
  99.     clr.w    d2
  100.     move.l    table,a0
  101.     move.l    m_alloc(a0),a0
  102.     jsr    (a0)
  103.     beq    abortpic
  104.  
  105.     move.l    table,a3
  106.     move.l    cwptr(a3),a3
  107.     move.l    (a3),a3
  108.     move.l    (a3),a3
  109.     move.l    a0,pi_Ptr(a3)
  110.     move.l    (a0),a4
  111.     move.l    a4,picptr
  112.  
  113.     bsr    putcolor
  114.     bsr    putpic
  115.  
  116.     move.l    table,a0
  117.     move.l    p_close(a0),a0
  118.     jsr    (a0)
  119.  
  120.     move.l    table,a0
  121.     move.l    f_closer(a0),a0
  122.     jmp    (a0)
  123.  
  124.  
  125. abortpic:
  126.     move.l    table,a0
  127.     move.l    p_abort(a0),a0
  128.     jsr    (a0)
  129.  
  130.     move.l    table,a0
  131.     move.l    f_closer(a0),a0
  132.     jmp    (a0)
  133.  
  134. *
  135. *
  136. *
  137. impobj:    move.l    table,a0
  138.     move.l    o_open(a0),a0
  139.     jsr    (a0)
  140.     beq    irts
  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.w    pic+pc_W,d1
  149.     move.l    #7200,d0
  150.     bsr    Mulu1632
  151.     move.w    pic+pc_XDpi,d2
  152.     bsr    Divu1648
  153.     move.l    d0,object+ob_Right
  154.  
  155.     move.w    pic+pc_H,d1
  156.     move.l    #7200,d0
  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        ;end of input file.
  212.     move.l    o_close(a0),a0        ; close and flush buffer
  213.     jsr    (a0)
  214.  
  215.     move.l    table,a0
  216.     move.l    f_closer(a0),a0
  217.     jmp    (a0)
  218.  
  219.  
  220. abortobj:
  221.     move.l    table,a0        ;end of input file.
  222.     move.l    o_abort(a0),a0        ; close and flush buffer
  223.     jsr    (a0)
  224.  
  225.     move.l    table,a0
  226.     move.l    f_closer(a0),a0
  227.     jmp    (a0)
  228. *
  229. *
  230. *
  231. getpicinfo:
  232.     move.l    table,a0
  233.     move.l    f_getw(a0),a0
  234.     jsr    (a0)
  235.     move.l    table,a0
  236.     move.l    f_getw(a0),a0
  237.     jsr    (a0)
  238.  
  239.     lea    neotbl,a0
  240.     lsl.w    #2,d0
  241.     move.l    0(a0,d0.w),a0
  242.  
  243.     lea    pic,a4
  244.     move.w    (a0)+,pc_Palet(a4)    ;number of color pallet entries
  245.     move.w    (a0)+,pc_BitPln(a4)
  246.     move.w    (a0)+,pc_W(a4)
  247.     move.w    (a0)+,pc_H(a4)
  248.     move.w    (a0)+,pc_Width(a4)
  249.     move.w    (a0)+,pc_XDpi(a4)
  250.     move.w    (a0),pc_YDpi(a4)
  251.  
  252.     clr.w    pc_Type(a4)
  253.     move.w    #-1,pc_SFreq(a4)
  254.     move.w    #-1,pc_SAngle(a4)
  255.     clr.w    pc_SSpot(a4)
  256.     clr.l    pc_SMap(a4)
  257.     clr.l    pc_SMap+4(a4)
  258.     rts
  259.  
  260.  
  261.  
  262. putcolor:
  263.     move.w    pic+pc_Palet,temp1        ;# of colors in bit map
  264. neop2:    move.l    table,a0
  265.     move.l    f_getw(a0),a0
  266.     jsr    (a0)
  267.  
  268.     move.w    d0,d1
  269.     move.w    d0,d2
  270.     lsr.w    #8,d0
  271.     lsr.w    #4,d1
  272.     and.w    #%111,d0        ;red
  273.     and.w    #%111,d1        ;green
  274.     and.w    #%111,d2        ;blue
  275.     mulu    #65535,d0
  276.     mulu    #65535,d1
  277.     mulu    #65535,d2
  278.     divu    #7,d0
  279.     divu    #7,d1
  280.     divu    #7,d2
  281.  
  282.     move.l    picptr,a4
  283.     move.w    d0,(a4)+        ;red
  284.     move.w    d1,(a4)+        ;green
  285.     move.w    d2,(a4)+        ;blue
  286.  
  287.     mulu    #19661,d0
  288.     mulu    #38666,d1
  289.     mulu    #7209,d2
  290.     add.l    d1,d0
  291.     add.l    d2,d0
  292.     swap    d0
  293.     cmp.w    #$8000,d0
  294.     bcc    pcwhite
  295.     moveq    #1,d0
  296.     bra    pcblack
  297. pcwhite:
  298.     moveq    #0,d0
  299. pcblack:
  300.     move.w    d0,(a4)+
  301.     move.l    a4,picptr
  302.  
  303.     subq.w    #1,temp1
  304.     bne    neop2
  305.  
  306.     move.l    #16,d0            ;skip over unused color pallete entries
  307.     sub.w    pic+pc_Palet,d0
  308.     lsl.w    #1,d0
  309.     add.w    #92,d0
  310.     move.l    table,a0
  311.     move.l    f_skip(a0),a0
  312.     jmp    (a0)
  313.  
  314. *
  315. *
  316. *
  317. putpic:    move.w    pic+pc_Width,d0
  318.     lsr.w    #1,d0
  319.     move.w    d0,dwidth
  320.  
  321.     move.w    pic+pc_Width,d0
  322.     mulu    pic+pc_H,d0
  323.     move.l    d0,dplane
  324.  
  325. pneo1:    move.w    dwidth,temp2
  326.  
  327. pneo2:    move.w    pic+pc_BitPln,temp3
  328.     move.l    picptr,a1
  329.  
  330. pneo3:    move.l    a1,-(sp)
  331.     move.l    table,a0
  332.     move.l    f_getw(a0),a0
  333.     jsr    (a0)
  334.     move.l    (sp)+,a1
  335.  
  336.     move.w    d0,(a1)
  337.     add.l    dplane,a1
  338.  
  339.     subq.w    #1,temp3
  340.     bne    pneo3
  341.  
  342.     addq.l    #2,picptr
  343.     subq.w    #1,temp2
  344.     bne    pneo2
  345.  
  346.     subq.w    #1,pic+pc_H
  347.     bne    pneo1
  348. *
  349.     rts
  350.  
  351. Mulu1632:
  352.     move.l    table,a0
  353.     move.l    mulu1632(a0),a0
  354.     jmp    (a0)
  355.  
  356. Divu1648:
  357.     move.l    table,a0
  358.     move.l    divu1648(a0),a0
  359.     jmp    (a0)
  360.  
  361. *******************************************************************
  362. ***    called when the import routine choosen finds something    ***
  363. ***    wrong with the file loaded.                ***
  364. *******************************************************************
  365. notright:
  366.     rts
  367.  
  368. never:    moveq    #0,d0
  369.     rts
  370.  
  371. maybe:    moveq    #1,d0
  372.     rts
  373.  
  374. right:    moveq    #2,d0
  375.     rts
  376.  
  377. *************************************************************
  378. *************************************************************
  379.     .data
  380. *
  381. special:
  382.     dc.w    2
  383.     dc.l    spcl1,spcl2
  384. *
  385. neotbl:    dc.l    neolow,neomed,neohi
  386. neolow:    dc.w    16,4,320,200,40,36,36
  387. neomed:    dc.w    4,2,640,200,80,72,36
  388. neohi:    dc.w    2,1,640,400,80,77,77
  389.  
  390.  
  391. *
  392. *
  393. *
  394. name:    dc.b    "Neochrome Picture v2.1.0",0
  395. *
  396. spcl1:    dc.b    "Picture Window",0
  397. spcl2:    dc.b    "Object",0
  398. *
  399.  
  400.     .bss
  401. temp1:    ds.w    1
  402. temp2:    ds.w    1
  403. temp3:    ds.w    1
  404.  
  405. dwidth:        ds.w    1
  406. dplane:    ds.l    1
  407.  
  408. picptr:    ds.l    1
  409.  
  410. object:    ds.w    ob_SizeOf/2
  411. pic:    ds.w    pc_Sizeof/2
  412.