home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser 2002 January
/
STC_CD_01_2002.iso
/
GAMES
/
COLUMSRC
/
CONVERT.S
< prev
next >
Wrap
Text File
|
1993-04-20
|
7KB
|
500 lines
SETBLOCK MOVE.L A7,A5
MOVE.L #PILE,A7
MOVE.L 4(A5),A5
MOVE.L $C(A5),D0
ADD.L $14(A5),D0
ADD.L $1C(A5),D0
ADD.L #$100,D0
MOVE.L D0,-(A7)
MOVE.L A5,-(A7)
MOVE.W #0,-(A7)
MOVE.W #$4A,-(A7)
TRAP #1
ADD.L #12,A7
JSR GEMINIT
MAIN_LOOP
MOVE.L #0,SIZE
JSR LOAD
MOVE.L ADRFIC,A2
CMP.L #'.TET',FIC_TYPE
BEQ TET_CONV
CMP.L #'.MCS',FIC_TYPE
BEQ MCS_CONV
FIN
JSR GEMEXIT
MOVE.W #0,-(A7)
TRAP #1
TET_CONV
MOVE.W #296,H_IMG
MOVE.W #336,W_IMG
MOVE.W #3,OFFSET_PIX
JSR CONVERT
JSR SAVE
MOVE.W #52,CONTROL
MOVE.W #1,CONTROL+2
MOVE.W #1,CONTROL+4
MOVE.W #1,CONTROL+6
MOVE.W #0,CONTROL+8
MOVE.W #1,INT_IN
MOVE.L #ALERT,ADDR_IN
JSR AES
CMPI.W #2,INT_OUT
BNE MAIN_LOOP
BRA FIN
MCS_CONV
MOVE.W #200,H_IMG
MOVE.W #320,W_IMG
MOVE.W #0,OFFSET_PIX
JSR CONVERT
JSR SAVE
MOVE.W #52,CONTROL
MOVE.W #1,CONTROL+2
MOVE.W #1,CONTROL+4
MOVE.W #1,CONTROL+6
MOVE.W #0,CONTROL+8
MOVE.W #1,INT_IN
MOVE.L #ALERT,ADDR_IN
JSR AES
CMPI.W #2,INT_OUT
BNE MAIN_LOOP
BRA FIN
CONVERT
PEA CLS
MOVE.W #9,-(A7)
TRAP #1
ADDQ.L #6,A7
LEA PL1,A0
LEA IMG,A1
MOVE.W H_IMG,D7
SUBQ #1,D7
LOOP
MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.W #'.',-(A7)
MOVE.W #2,-(A7)
TRAP #1
ADDQ.L #4,A7
MOVEM.L (A7)+,D0-D7/A0-A6
MOVE.W W_IMG,D6
DIVU #16,D6
SUBQ.W #1,D6
LOOP2
MOVEQ #15,D3
LOOP3
MOVE.B (A2)+,D4
PLAN1
MOVE.W (A0),D5
BTST #0,D4
BNE CONT1
BCLR D3,D5
BRA.S PLAN2
CONT1
BSET D3,D5
PLAN2
MOVE.W D5,(A0)
MOVE.W 2(A0),D5
BTST #1,D4
BNE CONT2
BCLR D3,D5
BRA.S PLAN3
CONT2
BSET D3,D5
PLAN3
MOVE.W D5,2(A0)
MOVE.W 4(A0),D5
BTST #2,D4
BNE CONT3
BCLR D3,D5
BRA.S PLAN4
CONT3
BSET D3,D5
PLAN4
MOVE.W D5,4(A0)
MOVE.W 6(A0),D5
BTST #3,D4
BNE CONT4
BCLR D3,D5
BRA.S PLAN5
CONT4
BSET D3,D5
PLAN5
MOVE.W D5,6(A0)
MOVE.W 8(A0),D5
BTST #4,D4
BNE CONT5
BCLR D3,D5
BRA.S PLAN6
CONT5
BSET D3,D5
PLAN6
MOVE.W D5,8(A0)
MOVE.W 10(A0),D5
BTST #5,D4
BNE CONT6
BCLR D3,D5
BRA.S PLAN7
CONT6
BSET D3,D5
PLAN7
MOVE.W D5,10(A0)
MOVE.W 12(A0),D5
BTST #6,D4
BNE CONT7
BCLR D3,D5
BRA.S PLAN8
CONT7
BSET D3,D5
PLAN8
MOVE.W D5,12(A0)
MOVE.W 14(A0),D5
BTST #7,D4
BNE CONT8
BCLR D3,D5
BRA.S PLAN_FIN
CONT8
BSET D3,D5
PLAN_FIN
MOVE.W D5,14(A0)
DBRA D3,LOOP3
MOVE.W PL1,(A1)+
MOVE.W PL2,(A1)+
MOVE.W PL3,(A1)+
MOVE.W PL4,(A1)+
MOVE.W PL5,(A1)+
MOVE.W PL6,(A1)+
MOVE.W PL7,(A1)+
MOVE.W PL8,(A1)+
ADD.L #16,SIZE
DBRA D6,LOOP2
ADD.W OFFSET_PIX,A2
DBRA D7,LOOP
RTS
AES: MOVEM.L D0-D7/A0-A6,-(A7)
MOVE.L #AESPB,D1
MOVE.W #$C8,D0
TRAP #2
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
GEMINIT: MOVE.W #10,CONTROL
CLR.W CONTROL+2
MOVE.W #1,CONTROL+4
CLR.W CONTROL+6
CLR.W CONTROL+8
JSR AES
MOVE.W INT_OUT,AP_ID
RTS
GEMEXIT MOVE.W #19,CONTROL
CLR.W CONTROL+2
MOVE.W #1,CONTROL+4
CLR.W CONTROL+6
CLR.W CONTROL+8
JSR AES
RTS
LOAD:
PEA AFFICHAGE
PEA DEFAULT
PEA MASQUE
JSR NOMFICH
ADDA.L #12,A7
CMP.L #'FIN',D0
BEQ FIN
CMP.W #0,D0
BEQ ERROR
FSETDTA PEA DTABUF
MOVE.W #$1A,-(A7)
TRAP #1
ADDQ.L #6,A7
TST.W D0
BMI ERROR
FSFIRST MOVE.W #0,-(A7)
PEA AFFICHAGE
MOVE.W #$4E,-(A7)
TRAP #1
ADDQ.L #8,A7
BMI ERROR
FOPEN MOVE.W #2,-(A7)
PEA AFFICHAGE
MOVE.W #$3D,-(A7)
TRAP #1
ADDQ.L #8,A7
TST.L D0
BMI ERROR
MOVE.W D0,FHANDLE
MOVE.L FSIZE,-(A7)
MOVE.W #$48,-(A7)
TRAP #1
ADDQ.L #6,A7
MOVE.L D0,ADRFIC
FREAD MOVE.L ADRFIC,-(A7)
MOVE.L FSIZE,-(A7)
MOVE.W FHANDLE,-(A7)
MOVE.W #$3F,-(A7)
TRAP #1
ADDA.L #12,A7
MOVE.W FHANDLE,-(A7)
MOVE.W #$3E,-(A7)
TRAP #1
ADDQ.L #4,A7
MOVE.W #1,D0
RTS
NOMFICH LINK A6,#0
MOVEM.L D1-D7/A0-A5,-(A7)
MOVEA.L 16(A6),A2
MOVE.W #$19,-(A7)
TRAP #1
ADDQ.L #2,A7
ADDI.B #'A',D0
MOVE.B D0,(A2)
MOVE.B #':',1(A2)
CLR.W -(A7)
PEA 2(A2)
MOVE.W #$47,-(A7) *DGETPATH
TRAP #1
ADDQ.L #8,A7
CLR.W D1
FSEL_LP TST.B 0(A2,D1.W)
BEQ.S FSEL_LE
ADDQ.W #1,D1
BRA.S FSEL_LP
FSEL_LE MOVE.B #'\',0(A2,D1.W)
CLR.W D2
MOVEA.L 8(A6),A3 *POINTEUR SUR LE MASQUE
FSEL_12 MOVE.B 0(A3,D2.W),1(A2,D1.W)
BEQ.S FSEL_E2
ADDQ.W #1,D1
ADDQ.W #1,D2
BRA.S FSEL_12
FSEL_E2 MOVE.W #91,CONTROL
CLR.W CONTROL+2
MOVE.W #2,CONTROL+4
MOVE.W #3,CONTROL+6
MOVE.W #0,CONTROL+8
MOVE.L A2,ADDR_IN
MOVE.L 12(A6),ADDR_IN+4
MOVE.L #TEXT,ADDR_IN+8
DEFAUT JSR AES
TST.W INT_OUT+2
BNE.S FSEL_NA
MOVE.L #'FIN',D0
BRA FSEL_Q
FSEL_NA
JSR DSETPATH
MOVEA.L 12(A6),A3
TST.B (A3)
BNE.S FSEL_13
CLR.W D0 *ERROR
BRA FSEL_Q
FSEL_13 TST.B (A2)+
BNE.S FSEL_13
FSEL_14 CMPI.B #'\',-(A2)
BNE.S FSEL_14
ADDQ.L #1,A2
FSEL_15 MOVE.B (A3)+,(A2)+
BNE.S FSEL_15
MOVE.W #1,D0 *OK
FSEL_Q
LEA AFFICHAGE,A0
FIC_LOOP
CMP.B #0,(A0)+
BNE FIC_LOOP
POINT_LOOP
CMP.B #".",-(A0)
BNE POINT_LOOP
MOVE.L (A0),FIC_TYPE
MOVEM.L (A7)+,D1-D7/A0-A5
UNLK A6
RTS
DSETPATH MOVEM.L D0-D7/A0-A6,-(A7)
LEA AFFICHAGE,A0
MOVE.B (A0),D0
SUB.B #$41,D0
MOVE.W D0,-(A7)
MOVE.W #$E,-(A7)
TRAP #1
ADDQ.L #4,A7
LEA AFFICHAGE,A0
LEA NEWPATH,A1
PATH_LOOP MOVE.B (A0)+,(A1)+
CMP.B #0,(A0)
BNE PATH_LOOP
ANTI_LOOP
CMP.B #"\",-(A1)
BNE ANTI_LOOP
MOVE.B #0,1(A1)
PEA NEWPATH
MOVE.W #$3B,-(A7)
TRAP #1
ADDQ.W #6,A7
MOVEM.L (A7)+,D0-D7/A0-A6
RTS
ERROR PEA ERR_TEXT
MOVE.W #9,-(A7)
TRAP #1
ADDQ.L #6,A7
MOVE.W #0,D0
RTS
SAVE
PEA DTABUF
MOVE.W #$1A,-(A7)
TRAP #1
ADDQ.L #6,A7
TST.W D0
BMI ERROR
FSFIRST2 PEA AFFICHAGE
MOVE.W #$4E,-(A7)
TRAP #1
ADDQ.L #6,A7
BMI ERROR
FCREATE MOVE.W #0,-(A7)
PEA AFFICHAGE
MOVE.W #$3C,-(A7)
TRAP #1
ADDQ.L #8,A7
TST.L D0
BMI ERROR
MOVE.W D0,FHANDLE
FWRITE MOVE.L #IMG,-(A7)
MOVE.L SIZE,-(A7)
MOVE.W FHANDLE,-(A7)
MOVE.W #$40,-(A7)
TRAP #1
ADDA.L #12,A7
MOVE.W FHANDLE,-(A7)
MOVE.W #$3E,-(A7)
TRAP #1
ADDQ.L #4,A7
RTS
EVEN
AESPB: DC.L CONTROL
DC.L GLOBAL
DC.L INT_IN
DC.L INT_OUT
DC.L ADDR_IN
DC.L ADDR_OUT
EVEN
VDIPB: DC.L CONTRL
DC.L INTIN
DC.L PTSIN
DC.L INTOUT
DC.L PTSOUT
ERR_TEXT DC.B 'SELECTION INVALIDE',0
DEFAULT DC.L 0,0,0,0,0
MASQUE DC.B '*.*',0
TEXT DC.B 'MCS TET CONVERTER',0
EVEN
ALERT DC.B '[2][UN AUTRE FICHIRE|A CONVERTIR ?][OUI|NON]',0
EVEN
DATA
EVEN
CLS DC.B $1B,'ECONVERSION EN COURS :',0
EVEN
SIZE DC.L 0
PL1 DC.W 0
PL2 DC.W 0
PL3 DC.W 0
PL4 DC.W 0
PL5 DC.W 0
PL6 DC.W 0
PL7 DC.W 0
PL8 DC.W 0
EVEN
BSS
DS.L 100
PILE DS.L 1
FIC_TYPE DS.L 1
W_IMG DS.W 1
H_IMG DS.W 1
OFFSET_PIX DS.W 1
OLD_SP DS.L 1
GLOBAL DS.W 16 *AES
CONTROL DS.W 10
INT_IN DS.W 128
INT_OUT DS.W 128
ADDR_IN DS.W 128
ADDR_OUT DS.W 128
EVEN
CONTRL DS.W 12 *VDI
INTIN DS.W 128
PTSIN DS.W 128
INTOUT DS.W 128
PTSOUT DS.W 128
EVEN
AP_ID DS.W 1
HANDLE DS.W 1
X_MAX DS.W 1
Y_MAX DS.W 1
X DS.W 1
Y DS.W 1
H DS.W 1
W DS.W 1
AFFICHAGE DS.L 64 *CHEMIN+NOMFICH
NEWPATH DS.B 20
FHANDLE DS.W 1
DTABUF DS.B 26
FSIZE DS.L 1
DS.L 14
ADRFIC DS.L 1
IMG
DS.B 300*1024