home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser 2002 January / STC_CD_01_2002.iso / GAMES / COLUMSRC / CONVERT.S < prev    next >
Text File  |  1993-04-20  |  7KB  |  500 lines

  1. SETBLOCK    MOVE.L    A7,A5
  2.     MOVE.L    #PILE,A7
  3.     MOVE.L    4(A5),A5
  4.     MOVE.L    $C(A5),D0
  5.     ADD.L    $14(A5),D0
  6.     ADD.L    $1C(A5),D0
  7.     ADD.L    #$100,D0
  8.     MOVE.L    D0,-(A7)
  9.     MOVE.L    A5,-(A7)
  10.     MOVE.W    #0,-(A7)
  11.     MOVE.W    #$4A,-(A7)
  12.     TRAP    #1
  13.     ADD.L    #12,A7
  14.     
  15.     
  16.     JSR    GEMINIT
  17. MAIN_LOOP
  18.     MOVE.L    #0,SIZE
  19.     JSR    LOAD
  20.     MOVE.L    ADRFIC,A2
  21.     CMP.L    #'.TET',FIC_TYPE
  22.     BEQ    TET_CONV
  23.     CMP.L    #'.MCS',FIC_TYPE
  24.     BEQ    MCS_CONV
  25.     
  26. FIN
  27.     JSR    GEMEXIT
  28.     
  29.     MOVE.W    #0,-(A7)
  30.     TRAP    #1
  31. TET_CONV
  32.     
  33.     MOVE.W    #296,H_IMG
  34.     MOVE.W    #336,W_IMG
  35.     MOVE.W    #3,OFFSET_PIX
  36.     JSR    CONVERT
  37.     
  38.     JSR    SAVE
  39.     
  40.     MOVE.W    #52,CONTROL
  41.     MOVE.W    #1,CONTROL+2
  42.     MOVE.W    #1,CONTROL+4
  43.     MOVE.W    #1,CONTROL+6
  44.     MOVE.W    #0,CONTROL+8
  45.     MOVE.W    #1,INT_IN
  46.     MOVE.L    #ALERT,ADDR_IN
  47.     
  48.     JSR    AES
  49.     
  50.      CMPI.W  #2,INT_OUT
  51.      BNE    MAIN_LOOP
  52.      BRA    FIN
  53.      
  54.  
  55. MCS_CONV
  56.     MOVE.W    #200,H_IMG
  57.     MOVE.W    #320,W_IMG
  58.     MOVE.W    #0,OFFSET_PIX
  59.     JSR    CONVERT
  60.     
  61.     JSR    SAVE
  62.     
  63.     MOVE.W    #52,CONTROL
  64.     MOVE.W    #1,CONTROL+2
  65.     MOVE.W    #1,CONTROL+4
  66.     MOVE.W    #1,CONTROL+6
  67.     MOVE.W    #0,CONTROL+8
  68.     MOVE.W    #1,INT_IN
  69.     MOVE.L    #ALERT,ADDR_IN
  70.     
  71.     JSR    AES
  72.     
  73.      CMPI.W  #2,INT_OUT
  74.      BNE    MAIN_LOOP
  75.      BRA    FIN
  76.      
  77.  
  78.      
  79. CONVERT
  80.  
  81.     PEA    CLS
  82.     MOVE.W    #9,-(A7)
  83.     TRAP    #1
  84.     ADDQ.L    #6,A7
  85.     
  86.  
  87.     LEA    PL1,A0
  88.     LEA    IMG,A1
  89.     
  90.     MOVE.W    H_IMG,D7
  91.     SUBQ    #1,D7
  92. LOOP
  93.  
  94.     MOVEM.L    D0-D7/A0-A6,-(A7)
  95.     MOVE.W    #'.',-(A7)
  96.     MOVE.W    #2,-(A7)
  97.     TRAP    #1
  98.     ADDQ.L    #4,A7
  99.     MOVEM.L    (A7)+,D0-D7/A0-A6
  100.     
  101.     MOVE.W    W_IMG,D6
  102.     DIVU    #16,D6
  103.     SUBQ.W    #1,D6
  104. LOOP2
  105.     MOVEQ    #15,D3
  106. LOOP3
  107.     
  108.     MOVE.B    (A2)+,D4
  109. PLAN1
  110.     MOVE.W    (A0),D5
  111.     BTST    #0,D4
  112.     BNE    CONT1
  113.     BCLR    D3,D5
  114.     BRA.S    PLAN2
  115. CONT1
  116.     BSET    D3,D5
  117. PLAN2
  118.     MOVE.W    D5,(A0)
  119.     MOVE.W    2(A0),D5
  120.     BTST    #1,D4
  121.     BNE    CONT2
  122.     BCLR    D3,D5
  123.     BRA.S    PLAN3
  124. CONT2
  125.     BSET    D3,D5
  126. PLAN3
  127.     MOVE.W    D5,2(A0)
  128.     MOVE.W    4(A0),D5
  129.     BTST    #2,D4
  130.     BNE    CONT3
  131.     BCLR    D3,D5
  132.     BRA.S    PLAN4
  133. CONT3
  134.     BSET    D3,D5
  135. PLAN4
  136.     MOVE.W    D5,4(A0)
  137.     MOVE.W    6(A0),D5
  138.     BTST    #3,D4
  139.     BNE    CONT4
  140.     BCLR    D3,D5
  141.     BRA.S    PLAN5
  142. CONT4
  143.     BSET    D3,D5
  144. PLAN5
  145.     MOVE.W    D5,6(A0)
  146.     MOVE.W    8(A0),D5
  147.     BTST    #4,D4
  148.     BNE    CONT5
  149.     BCLR    D3,D5
  150.     BRA.S    PLAN6
  151. CONT5
  152.     BSET    D3,D5
  153. PLAN6
  154.     MOVE.W    D5,8(A0)
  155.     MOVE.W    10(A0),D5
  156.     BTST    #5,D4
  157.     BNE    CONT6
  158.     BCLR    D3,D5
  159.     BRA.S    PLAN7
  160. CONT6
  161.     BSET    D3,D5
  162. PLAN7
  163.     MOVE.W    D5,10(A0)
  164.     MOVE.W    12(A0),D5
  165.     BTST    #6,D4
  166.     BNE    CONT7
  167.     BCLR    D3,D5
  168.     BRA.S    PLAN8
  169. CONT7
  170.     BSET    D3,D5
  171. PLAN8
  172.     MOVE.W    D5,12(A0)
  173.     MOVE.W    14(A0),D5
  174.     BTST    #7,D4
  175.     BNE    CONT8
  176.     BCLR    D3,D5
  177.     BRA.S    PLAN_FIN
  178. CONT8
  179.     BSET    D3,D5
  180. PLAN_FIN
  181.     MOVE.W    D5,14(A0)
  182.  
  183.     DBRA    D3,LOOP3
  184.     MOVE.W    PL1,(A1)+
  185.     MOVE.W    PL2,(A1)+
  186.     MOVE.W    PL3,(A1)+
  187.     MOVE.W    PL4,(A1)+
  188.     MOVE.W    PL5,(A1)+
  189.     MOVE.W    PL6,(A1)+
  190.     MOVE.W    PL7,(A1)+
  191.     MOVE.W    PL8,(A1)+
  192.     
  193.     ADD.L    #16,SIZE
  194.     DBRA    D6,LOOP2
  195.     ADD.W    OFFSET_PIX,A2
  196.     DBRA    D7,LOOP
  197.  
  198.     RTS
  199.  
  200.     
  201. AES:    MOVEM.L    D0-D7/A0-A6,-(A7)
  202.     MOVE.L    #AESPB,D1
  203.     MOVE.W    #$C8,D0
  204.     TRAP    #2
  205.     MOVEM.L    (A7)+,D0-D7/A0-A6
  206.     RTS
  207.     
  208.  
  209. GEMINIT:    MOVE.W    #10,CONTROL
  210.     CLR.W    CONTROL+2
  211.     MOVE.W    #1,CONTROL+4
  212.     CLR.W    CONTROL+6
  213.     CLR.W    CONTROL+8
  214.     JSR    AES
  215.     MOVE.W    INT_OUT,AP_ID
  216.     RTS
  217.     
  218. GEMEXIT    MOVE.W    #19,CONTROL
  219.     CLR.W    CONTROL+2
  220.     MOVE.W    #1,CONTROL+4
  221.     CLR.W    CONTROL+6
  222.     CLR.W    CONTROL+8
  223.     JSR    AES
  224.     RTS
  225.         
  226.     
  227. LOAD:    
  228.     
  229.     PEA    AFFICHAGE
  230.     PEA    DEFAULT
  231.     PEA     MASQUE
  232.     JSR    NOMFICH
  233.     ADDA.L    #12,A7
  234.     CMP.L    #'FIN',D0
  235.     BEQ    FIN
  236.     CMP.W    #0,D0
  237.     BEQ    ERROR
  238.     
  239. FSETDTA    PEA    DTABUF
  240.     MOVE.W    #$1A,-(A7)
  241.     TRAP    #1
  242.     ADDQ.L    #6,A7
  243.     TST.W    D0
  244.     BMI    ERROR
  245. FSFIRST    MOVE.W    #0,-(A7)
  246.     PEA    AFFICHAGE
  247.     MOVE.W    #$4E,-(A7)
  248.     TRAP    #1
  249.     ADDQ.L    #8,A7
  250.     BMI    ERROR
  251. FOPEN    MOVE.W    #2,-(A7)
  252.     PEA    AFFICHAGE
  253.     MOVE.W    #$3D,-(A7)
  254.     TRAP    #1
  255.     ADDQ.L    #8,A7
  256.     TST.L    D0
  257.     BMI    ERROR
  258.     MOVE.W    D0,FHANDLE
  259.     
  260.     MOVE.L    FSIZE,-(A7)
  261.     MOVE.W    #$48,-(A7)
  262.     TRAP    #1
  263.     ADDQ.L    #6,A7
  264.     MOVE.L    D0,ADRFIC
  265.     
  266. FREAD    MOVE.L    ADRFIC,-(A7)
  267.     MOVE.L    FSIZE,-(A7)
  268.     MOVE.W    FHANDLE,-(A7)
  269.     MOVE.W    #$3F,-(A7)
  270.     TRAP    #1
  271.     ADDA.L    #12,A7
  272.     MOVE.W    FHANDLE,-(A7)
  273.     MOVE.W    #$3E,-(A7)
  274.     TRAP    #1
  275.     ADDQ.L    #4,A7
  276.     
  277.     MOVE.W    #1,D0
  278.     RTS
  279.     
  280. NOMFICH    LINK    A6,#0
  281.     MOVEM.L    D1-D7/A0-A5,-(A7)
  282.     MOVEA.L    16(A6),A2
  283.     MOVE.W    #$19,-(A7)
  284.     TRAP    #1
  285.     ADDQ.L    #2,A7
  286.     ADDI.B    #'A',D0
  287.     MOVE.B    D0,(A2)
  288.     MOVE.B    #':',1(A2)
  289.     
  290.     CLR.W    -(A7)
  291.     PEA    2(A2)
  292.     MOVE.W    #$47,-(A7)    *DGETPATH
  293.     TRAP    #1
  294.     ADDQ.L    #8,A7
  295.     
  296.     CLR.W    D1
  297. FSEL_LP    TST.B    0(A2,D1.W)
  298.     BEQ.S    FSEL_LE
  299.     ADDQ.W    #1,D1
  300.     BRA.S    FSEL_LP
  301. FSEL_LE    MOVE.B    #'\',0(A2,D1.W)
  302.     CLR.W    D2
  303.     MOVEA.L    8(A6),A3    *POINTEUR SUR LE MASQUE
  304. FSEL_12    MOVE.B    0(A3,D2.W),1(A2,D1.W)
  305.     BEQ.S    FSEL_E2
  306.     ADDQ.W    #1,D1
  307.     ADDQ.W    #1,D2
  308.     BRA.S    FSEL_12
  309. FSEL_E2    MOVE.W    #91,CONTROL
  310.     CLR.W    CONTROL+2
  311.     MOVE.W    #2,CONTROL+4
  312.     MOVE.W    #3,CONTROL+6
  313.     MOVE.W    #0,CONTROL+8
  314.     MOVE.L    A2,ADDR_IN
  315.     MOVE.L    12(A6),ADDR_IN+4
  316.     MOVE.L    #TEXT,ADDR_IN+8
  317. DEFAUT    JSR    AES
  318.     TST.W    INT_OUT+2
  319.     BNE.S     FSEL_NA
  320.     MOVE.L    #'FIN',D0
  321.     BRA    FSEL_Q
  322. FSEL_NA    
  323.     JSR    DSETPATH
  324.     MOVEA.L    12(A6),A3
  325.     TST.B    (A3)
  326.     BNE.S    FSEL_13
  327.     CLR.W    D0    *ERROR
  328.     BRA    FSEL_Q
  329. FSEL_13    TST.B    (A2)+
  330.     BNE.S    FSEL_13
  331. FSEL_14    CMPI.B    #'\',-(A2)
  332.     BNE.S    FSEL_14
  333.     ADDQ.L    #1,A2
  334. FSEL_15    MOVE.B    (A3)+,(A2)+
  335.     BNE.S    FSEL_15
  336.     MOVE.W    #1,D0    *OK
  337. FSEL_Q    
  338.     LEA    AFFICHAGE,A0
  339. FIC_LOOP    
  340.     CMP.B    #0,(A0)+
  341.     BNE    FIC_LOOP
  342. POINT_LOOP
  343.     CMP.B    #".",-(A0)
  344.     BNE    POINT_LOOP
  345.     MOVE.L    (A0),FIC_TYPE
  346.     
  347.     MOVEM.L    (A7)+,D1-D7/A0-A5
  348.     UNLK    A6
  349.     
  350.     RTS
  351.     
  352. DSETPATH    MOVEM.L    D0-D7/A0-A6,-(A7)
  353.     LEA    AFFICHAGE,A0
  354.     MOVE.B    (A0),D0
  355.     SUB.B    #$41,D0
  356.     MOVE.W    D0,-(A7)
  357.     MOVE.W    #$E,-(A7)
  358.     TRAP    #1
  359.     ADDQ.L    #4,A7
  360.  
  361.     LEA    AFFICHAGE,A0
  362.     LEA    NEWPATH,A1
  363.     
  364. PATH_LOOP    MOVE.B    (A0)+,(A1)+
  365.     CMP.B    #0,(A0)
  366.     BNE    PATH_LOOP
  367. ANTI_LOOP
  368.     CMP.B    #"\",-(A1)
  369.     BNE    ANTI_LOOP
  370.     MOVE.B    #0,1(A1)
  371.     PEA    NEWPATH
  372.     MOVE.W    #$3B,-(A7)
  373.     TRAP    #1
  374.     ADDQ.W    #6,A7
  375.     
  376.     MOVEM.L    (A7)+,D0-D7/A0-A6
  377.     RTS
  378.  
  379.     
  380. ERROR    PEA    ERR_TEXT
  381.     MOVE.W    #9,-(A7)
  382.     TRAP    #1
  383.     ADDQ.L    #6,A7
  384.     MOVE.W    #0,D0
  385.     RTS
  386.     
  387.     
  388. SAVE
  389.     PEA    DTABUF
  390.     MOVE.W    #$1A,-(A7)
  391.     TRAP    #1
  392.     ADDQ.L    #6,A7
  393.     TST.W    D0
  394.     BMI    ERROR
  395. FSFIRST2    PEA    AFFICHAGE
  396.     MOVE.W    #$4E,-(A7)
  397.     TRAP    #1
  398.     ADDQ.L    #6,A7
  399.     BMI    ERROR
  400. FCREATE    MOVE.W    #0,-(A7)
  401.     PEA    AFFICHAGE
  402.     MOVE.W    #$3C,-(A7)
  403.     TRAP    #1
  404.     ADDQ.L    #8,A7
  405.     TST.L    D0
  406.     BMI    ERROR
  407.     MOVE.W    D0,FHANDLE
  408.     
  409.     
  410. FWRITE    MOVE.L    #IMG,-(A7)
  411.     MOVE.L    SIZE,-(A7)
  412.     MOVE.W    FHANDLE,-(A7)
  413.     MOVE.W    #$40,-(A7)
  414.     TRAP    #1
  415.     ADDA.L    #12,A7
  416.     MOVE.W    FHANDLE,-(A7)
  417.     MOVE.W    #$3E,-(A7)
  418.     TRAP    #1
  419.     ADDQ.L    #4,A7
  420.     RTS
  421.     
  422.     EVEN
  423. AESPB:    DC.L    CONTROL
  424.     DC.L    GLOBAL
  425.     DC.L    INT_IN
  426.     DC.L    INT_OUT
  427.     DC.L    ADDR_IN
  428.     DC.L    ADDR_OUT
  429.     EVEN
  430. VDIPB:    DC.L    CONTRL
  431.     DC.L    INTIN
  432.     DC.L    PTSIN
  433.     DC.L    INTOUT
  434.     DC.L    PTSOUT
  435.  
  436. ERR_TEXT    DC.B    'SELECTION INVALIDE',0
  437. DEFAULT    DC.L    0,0,0,0,0
  438. MASQUE    DC.B    '*.*',0
  439. TEXT    DC.B    'MCS TET CONVERTER',0
  440.     EVEN
  441. ALERT    DC.B    '[2][UN AUTRE FICHIRE|A CONVERTIR ?][OUI|NON]',0
  442.     EVEN
  443.     DATA
  444.     EVEN
  445. CLS    DC.B    $1B,'ECONVERSION EN COURS :',0
  446.     EVEN
  447. SIZE    DC.L    0
  448. PL1    DC.W    0
  449. PL2    DC.W    0
  450. PL3    DC.W    0
  451. PL4    DC.W    0
  452. PL5    DC.W    0
  453. PL6    DC.W    0
  454. PL7    DC.W    0
  455. PL8    DC.W    0
  456.  
  457.     EVEN
  458.  
  459.  
  460.     BSS
  461.     DS.L    100
  462. PILE    DS.L    1
  463. FIC_TYPE    DS.L    1
  464. W_IMG    DS.W    1
  465. H_IMG    DS.W    1
  466. OFFSET_PIX    DS.W    1
  467. OLD_SP    DS.L    1    
  468. GLOBAL    DS.W    16    *AES
  469. CONTROL    DS.W    10
  470. INT_IN    DS.W    128
  471. INT_OUT    DS.W    128
  472. ADDR_IN    DS.W    128
  473. ADDR_OUT    DS.W    128
  474.     EVEN
  475. CONTRL    DS.W    12    *VDI
  476. INTIN    DS.W    128
  477. PTSIN    DS.W    128
  478. INTOUT    DS.W    128
  479. PTSOUT    DS.W    128
  480.     EVEN
  481. AP_ID    DS.W    1
  482. HANDLE    DS.W    1
  483. X_MAX    DS.W    1
  484. Y_MAX    DS.W    1
  485. X    DS.W    1
  486. Y    DS.W    1
  487. H    DS.W    1
  488. W    DS.W    1
  489. AFFICHAGE    DS.L    64    *CHEMIN+NOMFICH
  490. NEWPATH    DS.B    20
  491. FHANDLE    DS.W    1
  492. DTABUF    DS.B    26
  493. FSIZE    DS.L    1
  494.     DS.L    14
  495. ADRFIC    DS.L    1
  496.  
  497. IMG
  498.     DS.B    300*1024
  499.     
  500.