I want to share my one-day work with you all

Programming the 6502 microprocessor and its relatives in assembly and other languages.
Post Reply
sippey
Posts: 4
Joined: 08 May 2003

I want to share my one-day work with you all

Post by sippey »

The codes below is algorithm of BlowFish (a cipher algorithm).
My code is compiled under "6502 Macro Assembler&Simulator".
To adapt to other compilers or platforms , several modifies is needed.

Code: Select all


	.ORG 0
	jmp main
OrgS1=OrgSbox

OrgS2=OrgSbox+256*4
OrgS3=OrgSbox+256*4*2
OrgS4=OrgSbox+256*4*3
OrgSend=OrgSbox+256*4*4

S1=Sbox
S2=S1+256*4
S3=S1+256*4*2
S4=S1+256*4*3
Send=S1+256*4*4

Pboxa=Pbox+4
Pboxb=Pbox+16*4

MAX_KEYLEN=56
MIN_KEYLEN=5
;======================================================
;vars
DataL 	.DB 0,0,0,0
DataR 	.DB 0,0,0,0

OutL 	.DB 0,0,0,0
OutR 	.DB 0,0,0,0

KeyLen 	.DB 0
KeyPtr	.DB 0,0
KeyStr	.DB "TESTKEY"
	
SboxPtr	.DB 0,0

;SPtr1	.DB 0,0	
;SPtr2	.DB 0,0	
;SPtr3	.DB 0,0	
;SPtr4	.DB 0,0	
;SPtrEnd .DB 0,0

TmpDW0	.DB 0,0,0,0
TmpDW1	.DB 0,0,0,0
TmpDW2	.DB 0,0,0,0
TmpDW3	.DB 0,0,0,0
TmpDW4	.DB 0,0,0,0
TmpDW5	.DB 0,0,0,0
TmpDW6	.DB 0,0,0,0
TmpDW7	.DB 0,0,0,0
TmpDW8	.DB 0,0,0,0
TmpDW9	.DB 0,0,0,0

	.ORG $1000
Pbox	.DCB 18*4,0
Sbox	.DCB 4*4*256,0
;======================================================
xchgBYTE	.MACRO a,b
		LDA a
		LDX b
		STA b
		STX a
	.ENDM
xchgWORD	.MACRO a,b
		xchgBYTE a,b
		xchgBYTE a+1,b+1
	.ENDM
xchgDWORD	.MACRO a,b
		xchgWORD a,b
		xchgWORD a+2,b+2
	.ENDM

memcpy256B	.MACRO src,dest,len;len=0 mean 1byte
		LDY #len
.cpynextB	LDA src,y
		STA dest,y
		DEY
		CPY #$FF
		BNE .cpynextB
	.ENDM
memcpy1KB	.MACRO src,dest
		memcpy256B src,dest,$FF
		memcpy256B src+256,dest+256,$FF
		memcpy256B src+256*2,dest+256*2,$FF
		memcpy256B src+256*3,dest+256*3,$FF
	.ENDM
	
setBYTE		.MACRO var,val
		LDA #val
		STA var
	.ENDM

setWORD		.MACRO var,val
		setBYTE var,<val
		setBYTE var+1,>val
	.ENDM

setDWORD	.MACRO var,valH,valL
		setWORD var,valL
		setWORD var+2,valH
	.ENDM

xorBYTE		.MACRO a,b,c
		LDA a
		EOR b
		STA c
	.ENDM
xorWORD 	.MACRO a,b,c
		xorBYTE	a,b,c
		xorBYTE	a+1,b+1,c+1
	.ENDM
	
xorDWORD 	.MACRO a,b,c
		xorWORD	a,b,c
		xorWORD	a+2,b+2,c+2
	.ENDM

loadBYTE	.MACRO a,ptr
		LDY #0
		LDA (ptr),y
		STA a
	.ENDM
loadWORD	.MACRO a,ptr
		LDY #0
		LDA (ptr),y
		STA a
		INY
		LDA (ptr),y
		STA a+1
	.ENDM
loadDWORD	.MACRO a,ptr
		LDY #0
		LDA (ptr),y
		STA a
		INY
		LDA (ptr),y
		STA a+1
		INY
		LDA (ptr),y
		STA a+2
		INY
		LDA (ptr),y
		STA a+3
	.ENDM
	
storBYTE	.MACRO a,ptr
		LDY #0
		LDA a
		STA (ptr),y
	.ENDM
storWORD	.MACRO a,ptr
		LDY #0
		LDA a
		STA (ptr),y
		INY
		LDA a+1
		STA (ptr),y
	.ENDM
storDWORD	.MACRO a,ptr
		LDY #0
		LDA a
		STA (ptr),y
		INY
		LDA a+1
		STA (ptr),y
		INY
		LDA a+2
		STA (ptr),y
		INY
		LDA a+3
		STA (ptr),y
	.ENDM
	
;MinusBYTE	.MACRO 

addBYTE		.MACRO a,b,c
		LDA a
		ADC b
		STA c
	.ENDM
addWORD		.MACRO a,b,c
		addBYTE a,b,c
		addBYTE a+1,b+1,c+1
	.ENDM
addDWORD	.MACRO a,b,c
		addWORD a,b,c
		addWORD a+2,b+2,c+2
	.ENDM
	
;======================================================
InitBF
	;initialize key

	
	;cpy sbox()
	memcpy1KB OrgS1,S1
	memcpy1KB OrgS2,S2
	memcpy1KB OrgS3,S3
	memcpy1KB OrgS4,S4
	
	;intialize pbox step1
	LDX #0
	LDY #3
	
L2		LDA KeyStr,x
		EOR OrgPbox,y
		STA Pbox,y
		INX
		CPX KeyLen
		BNE L1
			LDX #0
L1	DEY
	TYA
	AND #3
	CMP #3
	BNE L2
	CPY #$43
	BEQ L0
	TYA
	CLC
	ADC #8
	TAY
	JMP L2			
L0	
	;intialize pbox step2
	setBYTE  TmpDW5,0
	setDWORD DataL,0,0
	setDWORD DataR,0,0
	NOP
L4	JSR BF_Encrypt
	
		LDY #0
		LDX TmpDW5
L5		LDA DataL,y
		STA Pbox,x
		INY
		INX
		CPY #8
		BNE L5			
	STX TmpDW5
	CPX #72
	BNE L4
	NOP
	;initial sbox
	setWORD  TmpDW5,Sbox

L6	JSR BF_Encrypt

		LDY #7
L7		LDA DataL,y
		STA (TmpDW5),y
		DEY 
		CPY #$FF
		BNE L7
	CLC
	LDA TmpDW5
	ADC #8
	STA TmpDW5
	BCC L8
		INC TmpDW5+1
L8	LDA TmpDW5+1
	CMP #>Send
	BNE L6
	LDA TmpDW5
	CMP #<Send
	BNE L6
	
	
	RTS
	
;======================================================
;private MACRO
LoadS	.MACRO Snum,address,tag	;use TmpDW2
		setWORD TmpDW2,0
		LDA address
		CLC
		ASL
		ROL TmpDW2+1
		ASL
		ROL TmpDW2+1
		ADC #<Snum
		STA TmpDW2
		LDA TmpDW2+1
		ADC #>Snum
		STA TmpDW2+1
		loadDWORD tag,TmpDW2
	.ENDM
	
;======================================================
BF_Encrypt

	setWORD TmpDW0,Pbox
	
L9	;cycle
		loadDWORD TmpDW1,TmpDW0
		xorDWORD DataL,TmpDW1,DataL
		
		LoadS S1,DataL+3,TmpDW3
		
		LoadS S2,DataL+2,TmpDW4
		CLC
		addDWORD TmpDW3,TmpDW4,TmpDW3
		
		LoadS S3,DataL+1,TmpDW4				
		xorDWORD TmpDW3,TmpDW4,TmpDW3

		LoadS S4,DataL,TmpDW4	
		CLC
		addDWORD TmpDW3,TmpDW4,TmpDW3
				
		xorDWORD DataR,TmpDW3,DataR
		xchgDWORD DataL,DataR
		
	CLC
	LDA TmpDW0
	ADC #4
	STA TmpDW0
	BCC L10	
		INC TmpDW0+1
L10	LDA TmpDW0+1
	CMP #>Pboxb
	BEQ TL1
		JMP L9
TL1	LDA TmpDW0
	CMP #<Pboxb
	BEQ TL2
		JMP L9
TL2
	
	xchgDWORD DataL,DataR
	xorDWORD DataR,Pbox+16*4,DataR
	xorDWORD DataL,Pbox+17*4,DataL
	
	RTS
	
;======================================================
BF_Decrypt
	
	setWORD TmpDW0,Pbox+17*4
	
L11	;cycle
		loadDWORD TmpDW1,TmpDW0
		xorDWORD DataL,TmpDW1,DataL
		
		LoadS S1,DataL+3,TmpDW3
		
		LoadS S2,DataL+2,TmpDW4
		CLC
		addDWORD TmpDW3,TmpDW4,TmpDW3
		
		LoadS S3,DataL+1,TmpDW4				
		xorDWORD TmpDW3,TmpDW4,TmpDW3

		LoadS S4,DataL,TmpDW4	
		CLC
		addDWORD TmpDW3,TmpDW4,TmpDW3
				
		xorDWORD DataR,TmpDW3,DataR
		xchgDWORD DataL,DataR
	SEC
	LDA TmpDW0
	SBC #4
	STA TmpDW0
	BCS L12	
		DEC TmpDW0+1
L12	LDA TmpDW0+1
	CMP #>Pboxa
	BEQ TL3
		JMP L11
TL3
	LDA TmpDW0
	CMP #<Pboxa
	BEQ TL4
		JMP L11
TL4
	
	xchgDWORD DataL,DataR
	xorDWORD DataR,Pbox+4,DataR
	xorDWORD DataL,Pbox,DataL
	
	RTS	
;======================================================
main	NOP
	setWORD KeyPtr,KeyStr
	setBYTE KeyLen,7
	
	JSR InitBF
	NOP
	setDWORD DataL,0,0
	setDWORD DataR,0,0
	
	setDWORD DataL,0,1
	setDWORD DataR,0,2
	JSR BF_Encrypt
	NOP
	JSR BF_Decrypt
	NOP
	RTS

;======================================================
;Data Segment
OrgPbox
	.db $88, $6A, $3F, $24, $D3, $08, $A3, $85, $2E, $8A, $19, $13, $44, $73, $70, $03
	.db $22, $38, $09, $A4, $D0, $31, $9F, $29, $98, $FA, $2E, $08, $89, $6C, $4E, $EC
	.db $E6, $21, $28, $45, $77, $13, $D0, $38, $CF, $66, $54, $BE, $6C, $0C, $E9, $34
	.db $B7, $29, $AC, $C0, $DD, $50, $7C, $C9, $B5, $D5, $84, $3F, $17, $09, $47, $B5
	.DB $D9, $D5, $16, $92, $1B, $FB, $79, $89

OrgSbox
	.db $A6, $0B, $31, $D1, $AC, $B5, $DF, $98, $DB, $72, $FD, $2F, $B7, $DF, $1A, $D0
	.db $ED, $AF, $E1, $B8, $96, $7E, $26, $6A, $45, $90, $7C, $BA, $99, $7F, $2C, $F1 
	.db $47, $99, $A1, $24, $F7, $6C, $91, $B3, $E2, $F2, $01, $08, $16, $FC, $8E, $85 
	.db $D8, $20, $69, $63, $69, $4E, $57, $71, $A3, $FE, $58, $A4, $7E, $3D, $93, $F4 
	.db $8F, $74, $95, $0D, $58, $B6, $8E, $72, $58, $CD, $8B, $71, $EE, $4A, $15, $82 
	.db $1D, $A4, $54, $7B, $B5, $59, $5A, $C2, $39, $D5, $30, $9C, $13, $60, $F2, $2A 
	.db $23, $B0, $D1, $C5, $F0, $85, $60, $28, $18, $79, $41, $CA, $EF, $38, $DB, $B8 
	.db $B0, $DC, $79, $8E, $0E, $18, $3A, $60, $8B, $0E, $9E, $6C, $3E, $8A, $1E, $B0 
	.db $C1, $77, $15, $D7, $27, $4B, $31, $BD, $DA, $2F, $AF, $78, $60, $5C, $60, $55 
	.db $F3, $25, $55, $E6, $94, $AB, $55, $AA, $62, $98, $48, $57, $40, $14, $E8, $63 
	.db $6A, $39, $CA, $55, $B6, $10, $AB, $2A, $34, $5C, $CC, $B4, $CE, $E8, $41, $11 
	.db $AF, $86, $54, $A1, $93, $E9, $72, $7C, $11, $14, $EE, $B3, $2A, $BC, $6F, $63 
	.db $5D, $C5, $A9, $2B, $F6, $31, $18, $74, $16, $3E, $5C, $CE, $1E, $93, $87, $9B 
	.db $33, $BA, $D6, $AF, $5C, $CF, $24, $6C, $81, $53, $32, $7A, $77, $86, $95, $28 
	.db $98, $48, $8F, $3B, $AF, $B9, $4B, $6B, $1B, $E8, $BF, $C4, $93, $21, $28, $66 
	.db $CC, $09, $D8, $61, $91, $A9, $21, $FB, $60, $AC, $7C, $48, $32, $80, $EC, $5D 
	.db $5D, $5D, $84, $EF, $B1, $75, $85, $E9, $02, $23, $26, $DC, $88, $1B, $65, $EB 
	.db $81, $3E, $89, $23, $C5, $AC, $96, $D3, $F3, $6F, $6D, $0F, $39, $42, $F4, $83 
	.db $82, $44, $0B, $2E, $04, $20, $84, $A4, $4A, $F0, $C8, $69, $5E, $9B, $1F, $9E 
	.db $42, $68, $C6, $21, $9A, $6C, $E9, $F6, $61, $9C, $0C, $67, $F0, $88, $D3, $AB 
	.db $D2, $A0, $51, $6A, $68, $2F, $54, $D8, $28, $A7, $0F, $96, $A3, $33, $51, $AB 
	.db $6C, $0B, $EF, $6E, $E4, $3B, $7A, $13, $50, $F0, $3B, $BA, $98, $2A, $FB, $7E 
	.db $1D, $65, $F1, $A1, $76, $01, $AF, $39, $3E, $59, $CA, $66, $88, $0E, $43, $82 
	.db $19, $86, $EE, $8C, $B4, $9F, $6F, $45, $C3, $A5, $84, $7D, $BE, $5E, $8B, $3B 
	.db $D8, $75, $6F, $E0, $73, $20, $C1, $85, $9F, $44, $1A, $40, $A6, $6A, $C1, $56 
	.db $62, $AA, $D3, $4E, $06, $77, $3F, $36, $72, $DF, $FE, $1B, $3D, $02, $9B, $42 
	.db $24, $D7, $D0, $37, $48, $12, $0A, $D0, $D3, $EA, $0F, $DB, $9B, $C0, $F1, $49 
	.db $C9, $72, $53, $07, $7B, $1B, $99, $80, $D8, $79, $D4, $25, $F7, $DE, $E8, $F6 
	.db $1A, $50, $FE, $E3, $3B, $4C, $79, $B6, $BD, $E0, $6C, $97, $BA, $06, $C0, $04 
	.db $B6, $4F, $A9, $C1, $C4, $60, $9F, $40, $C2, $9E, $5C, $5E, $63, $24, $6A, $19 
	.db $AF, $6F, $FB, $68, $B5, $53, $6C, $3E, $EB, $B2, $39, $13, $6F, $EC, $52, $3B 
	.db $1F, $51, $FC, $6D, $2C, $95, $30, $9B, $44, $45, $81, $CC, $09, $BD, $5E, $AF 
	.db $04, $D0, $E3, $BE, $FD, $4A, $33, $DE, $07, $28, $0F, $66, $B3, $4B, $2E, $19 
	.db $57, $A8, $CB, $C0, $0F, $74, $C8, $45, $39, $5F, $0B, $D2, $DB, $FB, $D3, $B9 
	.db $BD, $C0, $79, $55, $0A, $32, $60, $1A, $C6, $00, $A1, $D6, $79, $72, $2C, $40 
	.db $FE, $25, $9F, $67, $CC, $A3, $1F, $FB, $F8, $E9, $A5, $8E, $F8, $22, $32, $DB 
	.db $DF, $16, $75, $3C, $15, $6B, $61, $FD, $C8, $1E, $50, $2F, $AB, $52, $05, $AD 
	.db $FA, $B5, $3D, $32, $60, $87, $23, $FD, $48, $7B, $31, $53, $82, $DF, $00, $3E 
	.db $BB, $57, $5C, $9E, $A0, $8C, $6F, $CA, $2E, $56, $87, $1A, $DB, $69, $17, $DF 
	.db $F6, $A8, $42, $D5, $C3, $FF, $7E, $28, $C6, $32, $67, $AC, $73, $55, $4F, $8C 
	.db $B0, $27, $5B, $69, $C8, $58, $CA, $BB, $5D, $A3, $FF, $E1, $A0, $11, $F0, $B8 
	.db $98, $3D, $FA, $10, $B8, $83, $21, $FD, $6C, $B5, $FC, $4A, $5B, $D3, $D1, $2D 
	.db $79, $E4, $53, $9A, $65, $45, $F8, $B6, $BC, $49, $8E, $D2, $90, $97, $FB, $4B 
	.db $DA, $F2, $DD, $E1, $33, $7E, $CB, $A4, $41, $13, $FB, $62, $E8, $C6, $E4, $CE 
	.db $DA, $CA, $20, $EF, $01, $4C, $77, $36, $FE, $9E, $7E, $D0, $B4, $1F, $F1, $2B 
	.db $4D, $DA, $DB, $95, $98, $91, $90, $AE, $71, $8E, $AD, $EA, $A0, $D5, $93, $6B 
	.db $D0, $D1, $8E, $D0, $E0, $25, $C7, $AF, $2F, $5B, $3C, $8E, $B7, $94, $75, $8E 
	.db $FB, $E2, $F6, $8F, $64, $2B, $12, $F2, $12, $B8, $88, $88, $1C, $F0, $0D, $90 
	.db $A0, $5E, $AD, $4F, $1C, $C3, $8F, $68, $91, $F1, $CF, $D1, $AD, $C1, $A8, $B3 
	.db $18, $22, $2F, $2F, $77, $17, $0E, $BE, $FE, $2D, $75, $EA, $A1, $1F, $02, $8B 
	.db $0F, $CC, $A0, $E5, $E8, $74, $6F, $B5, $D6, $F3, $AC, $18, $99, $E2, $89, $CE 
	.db $E0, $4F, $A8, $B4, $B7, $E0, $13, $FD, $81, $3B, $C4, $7C, $D9, $A8, $AD, $D2 
	.db $66, $A2, $5F, $16, $05, $77, $95, $80, $14, $73, $CC, $93, $77, $14, $1A, $21 
	.db $65, $20, $AD, $E6, $86, $FA, $B5, $77, $F5, $42, $54, $C7, $CF, $35, $9D, $FB 
	.db $0C, $AF, $CD, $EB, $A0, $89, $3E, $7B, $D3, $1B, $41, $D6, $49, $7E, $1E, $AE 
	.db $2D, $0E, $25, $00, $5E, $B3, $71, $20, $BB, $00, $68, $22, $AF, $E0, $B8, $57 
	.db $9B, $36, $64, $24, $1E, $B9, $09, $F0, $1D, $91, $63, $55, $AA, $A6, $DF, $59 
	.db $89, $43, $C1, $78, $7F, $53, $5A, $D9, $A2, $5B, $7D, $20, $C5, $B9, $E5, $02 
	.db $76, $03, $26, $83, $A9, $CF, $95, $62, $68, $19, $C8, $11, $41, $4A, $73, $4E 
	.db $CA, $2D, $47, $B3, $4A, $A9, $14, $7B, $52, $00, $51, $1B, $15, $29, $53, $9A 
	.db $3F, $57, $0F, $D6, $E4, $C6, $9B, $BC, $76, $A4, $60, $2B, $00, $74, $E6, $81 
	.db $B5, $6F, $BA, $08, $1F, $E9, $1B, $57, $6B, $EC, $96, $F2, $15, $D9, $0D, $2A 
	.db $21, $65, $63, $B6, $B6, $F9, $B9, $E7, $2E, $05, $34, $FF, $64, $56, $85, $C5 
	.db $5D, $2D, $B0, $53, $A1, $8F, $9F, $A9, $99, $47, $BA, $08, $6A, $07, $85, $6E 
	.db $E9, $70, $7A, $4B, $44, $29, $B3, $B5, $2E, $09, $75, $DB, $23, $26, $19, $C4 
	.db $B0, $A6, $6E, $AD, $7D, $DF, $A7, $49, $B8, $60, $EE, $9C, $66, $B2, $ED, $8F 
	.db $71, $8C, $AA, $EC, $FF, $17, $9A, $69, $6C, $52, $64, $56, $E1, $9E, $B1, $C2 
	.db $A5, $02, $36, $19, $29, $4C, $09, $75, $40, $13, $59, $A0, $3E, $3A, $18, $E4 
	.db $9A, $98, $54, $3F, $65, $9D, $42, $5B, $D6, $E4, $8F, $6B, $D6, $3F, $F7, $99 
	.db $07, $9C, $D2, $A1, $F5, $30, $E8, $EF, $E6, $38, $2D, $4D, $C1, $5D, $25, $F0 
	.db $86, $20, $DD, $4C, $26, $EB, $70, $84, $C6, $E9, $82, $63, $5E, $CC, $1E, $02 
	.db $3F, $6B, $68, $09, $C9, $EF, $BA, $3E, $14, $18, $97, $3C, $A1, $70, $6A, $6B 
	.db $84, $35, $7F, $68, $86, $E2, $A0, $52, $05, $53, $9C, $B7, $37, $07, $50, $AA 
	.db $1C, $84, $07, $3E, $5C, $AE, $DE, $7F, $EC, $44, $7D, $8E, $B8, $F2, $16, $57 
	.db $37, $DA, $3A, $B0, $0D, $0C, $50, $F0, $04, $1F, $1C, $F0, $FF, $B3, $00, $02 
	.db $1A, $F5, $0C, $AE, $B2, $74, $B5, $3C, $58, $7A, $83, $25, $BD, $21, $09, $DC 
	.db $F9, $13, $91, $D1, $F6, $2F, $A9, $7C, $73, $47, $32, $94, $01, $47, $F5, $22 
	.db $81, $E5, $E5, $3A, $DC, $DA, $C2, $37, $34, $76, $B5, $C8, $A7, $DD, $F3, $9A 
	.db $46, $61, $44, $A9, $0E, $03, $D0, $0F, $3E, $C7, $C8, $EC, $41, $1E, $75, $A4 
	.db $99, $CD, $38, $E2, $2F, $0E, $EA, $3B, $A1, $BB, $80, $32, $31, $B3, $3E, $18 
	.db $38, $8B, $54, $4E, $08, $B9, $6D, $4F, $03, $0D, $42, $6F, $BF, $04, $0A, $F6 
	.db $90, $12, $B8, $2C, $79, $7C, $97, $24, $72, $B0, $79, $56, $AF, $89, $AF, $BC 
	.db $1F, $77, $9A, $DE, $10, $08, $93, $D9, $12, $AE, $8B, $B3, $2E, $3F, $CF, $DC 
	.db $1F, $72, $12, $55, $24, $71, $6B, $2E, $E6, $DD, $1A, $50, $87, $CD, $84, $9F 
	.db $18, $47, $58, $7A, $17, $DA, $08, $74, $BC, $9A, $9F, $BC, $8C, $7D, $4B, $E9 
	.db $3A, $EC, $7A, $EC, $FA, $1D, $85, $DB, $66, $43, $09, $63, $D2, $C3, $64, $C4 
	.db $47, $18, $1C, $EF, $08, $D9, $15, $32, $37, $3B, $43, $DD, $16, $BA, $C2, $24 
	.db $43, $4D, $A1, $12, $51, $C4, $65, $2A, $02, $00, $94, $50, $DD, $E4, $3A, $13 
	.db $9E, $F8, $DF, $71, $55, $4E, $31, $10, $D6, $77, $AC, $81, $9B, $19, $11, $5F 
	.db $F1, $56, $35, $04, $6B, $C7, $A3, $D7, $3B, $18, $11, $3C, $09, $A5, $24, $59 
	.db $ED, $E6, $8F, $F2, $FA, $FB, $F1, $97, $2C, $BF, $BA, $9E, $6E, $3C, $15, $1E 
	.db $70, $45, $E3, $86, $B1, $6F, $E9, $EA, $0A, $5E, $0E, $86, $B3, $2A, $3E, $5A 
	.db $1C, $E7, $1F, $77, $FA, $06, $3D, $4E, $B9, $DC, $65, $29, $0F, $1D, $E7, $99 
	.db $D6, $89, $3E, $80, $25, $C8, $66, $52, $78, $C9, $4C, $2E, $6A, $B3, $10, $9C 
	.db $BA, $0E, $15, $C6, $78, $EA, $E2, $94, $53, $3C, $FC, $A5, $F4, $2D, $0A, $1E 
	.db $A7, $4E, $F7, $F2, $3D, $2B, $1D, $36, $0F, $26, $39, $19, $60, $79, $C2, $19 
	.db $08, $A7, $23, $52, $B6, $12, $13, $F7, $6E, $FE, $AD, $EB, $66, $1F, $C3, $EA 
	.db $95, $45, $BC, $E3, $83, $C8, $7B, $A6, $D1, $37, $7F, $B1, $28, $FF, $8C, $01 
	.db $EF, $DD, $32, $C3, $A5, $5A, $6C, $BE, $85, $21, $58, $65, $02, $98, $AB, $68 
	.db $0F, $A5, $CE, $EE, $3B, $95, $2F, $DB, $AD, $7D, $EF, $2A, $84, $2F, $6E, $5B 
	.db $28, $B6, $21, $15, $70, $61, $07, $29, $75, $47, $DD, $EC, $10, $15, $9F, $61 
	.db $30, $A8, $CC, $13, $96, $BD, $61, $EB, $1E, $FE, $34, $03, $CF, $63, $03, $AA 
	.db $90, $5C, $73, $B5, $39, $A2, $70, $4C, $0B, $9E, $9E, $D5, $14, $DE, $AA, $CB 
	.db $BC, $86, $CC, $EE, $A7, $2C, $62, $60, $AB, $5C, $AB, $9C, $6E, $84, $F3, $B2 
	.db $AF, $1E, $8B, $64, $CA, $F0, $BD, $19, $B9, $69, $23, $A0, $50, $BB, $5A, $65 
	.db $32, $5A, $68, $40, $B3, $B4, $2A, $3C, $D5, $E9, $9E, $31, $F7, $B8, $21, $C0 
	.db $19, $0B, $54, $9B, $99, $A0, $5F, $87, $7E, $99, $F7, $95, $A8, $7D, $3D, $62 
	.db $9A, $88, $37, $F8, $77, $2D, $E3, $97, $5F, $93, $ED, $11, $81, $12, $68, $16 
	.db $29, $88, $35, $0E, $D6, $1F, $E6, $C7, $A1, $DF, $DE, $96, $99, $BA, $58, $78 
	.db $A5, $84, $F5, $57, $63, $72, $22, $1B, $FF, $C3, $83, $9B, $96, $46, $C2, $1A 
	.db $EB, $0A, $B3, $CD, $54, $30, $2E, $53, $E4, $48, $D9, $8F, $28, $31, $BC, $6D 
	.db $EF, $F2, $EB, $58, $EA, $FF, $C6, $34, $61, $ED, $28, $FE, $73, $3C, $7C, $EE 
	.db $D9, $14, $4A, $5D, $E3, $B7, $64, $E8, $14, $5D, $10, $42, $E0, $13, $3E, $20 
	.db $B6, $E2, $EE, $45, $EA, $AB, $AA, $A3, $15, $4F, $6C, $DB, $D0, $4F, $CB, $FA 
	.db $42, $F4, $42, $C7, $B5, $BB, $6A, $EF, $1D, $3B, $4F, $65, $05, $21, $CD, $41 
	.db $9E, $79, $1E, $D8, $C7, $4D, $85, $86, $6A, $47, $4B, $E4, $50, $62, $81, $3D 
	.db $F2, $A1, $62, $CF, $46, $26, $8D, $5B, $A0, $83, $88, $FC, $A3, $B6, $C7, $C1 
	.db $C3, $24, $15, $7F, $92, $74, $CB, $69, $0B, $8A, $84, $47, $85, $B2, $92, $56 
	.db $00, $BF, $5B, $09, $9D, $48, $19, $AD, $74, $B1, $62, $14, $00, $0E, $82, $23 
	.db $2A, $8D, $42, $58, $EA, $F5, $55, $0C, $3E, $F4, $AD, $1D, $61, $70, $3F, $23 
	.db $92, $F0, $72, $33, $41, $7E, $93, $8D, $F1, $EC, $5F, $D6, $DB, $3B, $22, $6C
	.db $59, $37, $DE, $7C, $60, $74, $EE, $CB, $A7, $F2, $85, $40, $6E, $32, $77, $CE 
	.db $84, $80, $07, $A6, $9E, $50, $F8, $19, $55, $D8, $EF, $E8, $35, $97, $D9, $61 
	.db $AA, $A7, $69, $A9, $C2, $06, $0C, $C5, $FC, $AB, $04, $5A, $DC, $CA, $0B, $80 
	.db $2E, $7A, $44, $9E, $84, $34, $45, $C3, $05, $67, $D5, $FD, $C9, $9E, $1E, $0E 
	.db $D3, $DB, $73, $DB, $CD, $88, $55, $10, $79, $DA, $5F, $67, $40, $43, $67, $E3 
	.db $65, $34, $C4, $C5, $D8, $38, $3E, $71, $9E, $F8, $28, $3D, $20, $FF, $6D, $F1 
	.db $E7, $21, $3E, $15, $4A, $3D, $B0, $8F, $2B, $9F, $E3, $E6, $F7, $AD, $83, $DB 
	.db $68, $5A, $3D, $E9, $F7, $40, $81, $94, $1C, $26, $4C, $F6, $34, $29, $69, $94 
	.db $F7, $20, $15, $41, $F7, $D4, $02, $76, $2E, $6B, $F4, $BC, $68, $00, $A2, $D4 
	.db $71, $24, $08, $D4, $6A, $F4, $20, $33, $B7, $D4, $B7, $43, $AF, $61, $00, $50 
	.db $2E, $F6, $39, $1E, $46, $45, $24, $97, $74, $4F, $21, $14, $40, $88, $8B, $BF 
	.db $1D, $FC, $95, $4D, $AF, $91, $B5, $96, $D3, $DD, $F4, $70, $45, $2F, $A0, $66 
	.db $EC, $09, $BC, $BF, $85, $97, $BD, $03, $D0, $6D, $AC, $7F, $04, $85, $CB, $31 
	.db $B3, $27, $EB, $96, $41, $39, $FD, $55, $E6, $47, $25, $DA, $9A, $0A, $CA, $AB 
	.db $25, $78, $50, $28, $F4, $29, $04, $53, $DA, $86, $2C, $0A, $FB, $6D, $B6, $E9 
	.db $62, $14, $DC, $68, $00, $69, $48, $D7, $A4, $C0, $0E, $68, $EE, $8D, $A1, $27 
	.db $A2, $FE, $3F, $4F, $8C, $AD, $87, $E8, $06, $E0, $8C, $B5, $B6, $D6, $F4, $7A 
	.db $7C, $1E, $CE, $AA, $EC, $5F, $37, $D3, $99, $A3, $78, $CE, $42, $2A, $6B, $40 
	.db $35, $9E, $FE, $20, $B9, $85, $F3, $D9, $AB, $D7, $39, $EE, $8B, $4E, $12, $3B 
	.db $F7, $FA, $C9, $1D, $56, $18, $6D, $4B, $31, $66, $A3, $26, $B2, $97, $E3, $EA 
	.db $74, $FA, $6E, $3A, $32, $43, $5B, $DD, $F7, $E7, $41, $68, $FB, $20, $78, $CA 
	.db $4E, $F5, $0A, $FB, $97, $B3, $FE, $D8, $AC, $56, $40, $45, $27, $95, $48, $BA 
	.db $3A, $3A, $53, $55, $87, $8D, $83, $20, $B7, $A9, $6B, $FE, $4B, $95, $96, $D0 
	.db $BC, $67, $A8, $55, $58, $9A, $15, $A1, $63, $29, $A9, $CC, $33, $DB, $E1, $99 
	.db $56, $4A, $2A, $A6, $F9, $25, $31, $3F, $1C, $7E, $F4, $5E, $7C, $31, $29, $90 
	.db $02, $E8, $F8, $FD, $70, $2F, $27, $04, $5C, $15, $BB, $80, $E3, $2C, $28, $05 
	.db $48, $15, $C1, $95, $22, $6D, $C6, $E4, $3F, $13, $C1, $48, $DC, $86, $0F, $C7 
	.db $EE, $C9, $F9, $07, $0F, $1F, $04, $41, $A4, $79, $47, $40, $17, $6E, $88, $5D 
	.db $EB, $51, $5F, $32, $D1, $C0, $9B, $D5, $8F, $C1, $BC, $F2, $64, $35, $11, $41 
	.db $34, $78, $7B, $25, $60, $9C, $2A, $60, $A3, $E8, $F8, $DF, $1B, $6C, $63, $1F 
	.db $C2, $B4, $12, $0E, $9E, $32, $E1, $02, $D1, $4F, $66, $AF, $15, $81, $D1, $CA 
	.db $E0, $95, $23, $6B, $E1, $92, $3E, $33, $62, $0B, $24, $3B, $22, $B9, $BE, $EE 
	.db $0E, $A2, $B2, $85, $99, $0D, $BA, $E6, $8C, $0C, $72, $DE, $28, $F7, $A2, $2D 
	.db $45, $78, $12, $D0, $FD, $94, $B7, $95, $62, $08, $7D, $64, $F0, $F5, $CC, $E7 
	.db $6F, $A3, $49, $54, $FA, $48, $7D, $87, $27, $FD, $9D, $C3, $1E, $8D, $3E, $F3 
	.db $41, $63, $47, $0A, $74, $FF, $2E, $99, $AB, $6E, $6F, $3A, $37, $FD, $F8, $F4 
	.db $60, $DC, $12, $A8, $F8, $DD, $EB, $A1, $4C, $E1, $1B, $99, $0D, $6B, $6E, $DB 
	.db $10, $55, $7B, $C6, $37, $2C, $67, $6D, $3B, $D4, $65, $27, $04, $E8, $D0, $DC 
	.db $C7, $0D, $29, $F1, $A3, $FF, $00, $CC, $92, $0F, $39, $B5, $0B, $ED, $0F, $69 
	.db $FB, $9F, $7B, $66, $9C, $7D, $DB, $CE, $0B, $CF, $91, $A0, $A3, $5E, $15, $D9 
	.db $88, $2F, $13, $BB, $24, $AD, $5B, $51, $BF, $79, $94, $7B, $EB, $D6, $3B, $76 
	.db $B3, $2E, $39, $37, $79, $59, $11, $CC, $97, $E2, $26, $80, $2D, $31, $2E, $F4 
	.db $A7, $AD, $42, $68, $3B, $2B, $6A, $C6, $CC, $4C, $75, $12, $1C, $F1, $2E, $78 
	.db $37, $42, $12, $6A, $E7, $51, $92, $B7, $E6, $BB, $A1, $06, $50, $63, $FB, $4B 
	.db $18, $10, $6B, $1A, $FA, $ED, $CA, $11, $D8, $BD, $25, $3D, $C9, $C3, $E1, $E2 
	.db $59, $16, $42, $44, $86, $13, $12, $0A, $6E, $EC, $0C, $D9, $2A, $EA, $AB, $D5 
	.db $4E, $67, $AF, $64, $5F, $A8, $86, $DA, $88, $E9, $BF, $BE, $FE, $C3, $E4, $64 
	.db $57, $80, $BC, $9D, $86, $C0, $F7, $F0, $F8, $7B, $78, $60, $4D, $60, $03, $60 
	.db $46, $83, $FD, $D1, $B0, $1F, $38, $F6, $04, $AE, $45, $77, $CC, $FC, $36, $D7 
	.db $33, $6B, $42, $83, $71, $AB, $1E, $F0, $87, $41, $80, $B0, $5F, $5E, $00, $3C 
	.db $BE, $57, $A0, $77, $24, $AE, $E8, $BD, $99, $42, $46, $55, $61, $2E, $58, $BF 
	.db $8F, $F4, $58, $4E, $A2, $FD, $DD, $F2, $38, $EF, $74, $F4, $C2, $BD, $89, $87 
	.db $C3, $F9, $66, $53, $74, $8E, $B3, $C8, $55, $F2, $75, $B4, $B9, $D9, $FC, $46 
	.db $61, $26, $EB, $7A, $84, $DF, $1D, $8B, $79, $0E, $6A, $84, $E2, $95, $5F, $91 
	.db $8E, $59, $6E, $46, $70, $57, $B4, $20, $91, $55, $D5, $8C, $4C, $DE, $02, $C9 
	.db $E1, $AC, $0B, $B9, $D0, $05, $82, $BB, $48, $62, $A8, $11, $9E, $A9, $74, $75 
	.db $B6, $19, $7F, $B7, $09, $DC, $A9, $E0, $A1, $09, $2D, $66, $33, $46, $32, $C4 
	.db $02, $1F, $5A, $E8, $8C, $BE, $F0, $09, $25, $A0, $99, $4A, $10, $FE, $6E, $1D 
	.db $1D, $3D, $B9, $1A, $DF, $A4, $A5, $0B, $0F, $F2, $86, $A1, $69, $F1, $68, $28 
	.db $83, $DA, $B7, $DC, $FE, $06, $39, $57, $9B, $CE, $E2, $A1, $52, $7F, $CD, $4F 
	.db $01, $5E, $11, $50, $FA, $83, $06, $A7, $C4, $B5, $02, $A0, $27, $D0, $E6, $0D 
	.db $27, $8C, $F8, $9A, $41, $86, $3F, $77, $06, $4C, $60, $C3, $B5, $06, $A8, $61 
	.db $28, $7A, $17, $F0, $E0, $86, $F5, $C0, $AA, $58, $60, $00, $62, $7D, $DC, $30 
	.db $D7, $9E, $E6, $11, $63, $EA, $38, $23, $94, $DD, $C2, $53, $34, $16, $C2, $C2 
	.db $56, $EE, $CB, $BB, $DE, $B6, $BC, $90, $A1, $7D, $FC, $EB, $76, $1D, $59, $CE 
	.db $09, $E4, $05, $6F, $88, $01, $7C, $4B, $3D, $0A, $72, $39, $24, $7C, $92, $7C 
	.db $5F, $72, $E3, $86, $B9, $9D, $4D, $72, $B4, $5B, $C1, $1A, $FC, $B8, $9E, $D3 
	.db $78, $55, $54, $ED, $B5, $A5, $FC, $08, $D3, $7C, $3D, $D8, $C4, $0F, $AD, $4D 
	.db $5E, $EF, $50, $1E, $F8, $E6, $61, $B1, $D9, $14, $85, $A2, $3C, $13, $51, $6C 
	.db $E7, $C7, $D5, $6F, $C4, $4E, $E1, $56, $CE, $BF, $2A, $36, $37, $C8, $C6, $DD 
	.db $34, $32, $9A, $D7, $12, $82, $63, $92, $8E, $FA, $0E, $67, $E0, $00, $60, $40 
	.db $37, $CE, $39, $3A, $CF, $F5, $FA, $D3, $37, $77, $C2, $AB, $1B, $2D, $C5, $5A 
	.db $9E, $67, $B0, $5C, $42, $37, $A3, $4F, $40, $27, $82, $D3, $BE, $9B, $BC, $99 
	.db $9D, $8E, $11, $D5, $15, $73, $0F, $BF, $7E, $1C, $2D, $D6, $7B, $C4, $00, $C7 
	.db $6B, $1B, $8C, $B7, $45, $90, $A1, $21, $BE, $B1, $6E, $B2, $B4, $6E, $36, $6A 
	.db $2F, $AB, $48, $57, $79, $6E, $94, $BC, $D2, $76, $A3, $C6, $C8, $C2, $49, $65 
	.db $EE, $F8, $0F, $53, $7D, $DE, $8D, $46, $1D, $0A, $73, $D5, $C6, $4D, $D0, $4C 
	.db $DB, $BB, $39, $29, $50, $46, $BA, $A9, $E8, $26, $95, $AC, $04, $E3, $5E, $BE 
	.db $F0, $D5, $FA, $A1, $9A, $51, $2D, $6A, $E2, $8C, $EF, $63, $22, $EE, $86, $9A 
	.db $B8, $C2, $89, $C0, $F6, $2E, $24, $43, $AA, $03, $1E, $A5, $A4, $D0, $F2, $9C 
	.db $BA, $61, $C0, $83, $4D, $6A, $E9, $9B, $50, $15, $E5, $8F, $D6, $5B, $64, $BA 
	.db $F9, $A2, $26, $28, $E1, $3A, $3A, $A7, $86, $95, $A9, $4B, $E9, $62, $55, $EF 
	.db $D3, $EF, $2F, $C7, $DA, $F7, $52, $F7, $69, $6F, $04, $3F, $59, $0A, $FA, $77 
	.db $15, $A9, $E4, $80, $01, $86, $B0, $87, $AD, $E6, $09, $9B, $93, $E5, $3E, $3B 
	.db $5A, $FD, $90, $E9, $97, $D7, $34, $9E, $D9, $B7, $F0, $2C, $51, $8B, $2B, $02 
	.db $3A, $AC, $D5, $96, $7D, $A6, $7D, $01, $D6, $3E, $CF, $D1, $28, $2D, $7D, $7C 
	.db $CF, $25, $9F, $1F, $9B, $B8, $F2, $AD, $72, $B4, $D6, $5A, $4C, $F5, $88, $5A 
	.db $71, $AC, $29, $E0, $E6, $A5, $19, $E0, $FD, $AC, $B0, $47, $9B, $FA, $93, $ED 
	.db $8D, $C4, $D3, $E8, $CC, $57, $3B, $28, $29, $66, $D5, $F8, $28, $2E, $13, $79 
	.db $91, $01, $5F, $78, $55, $60, $75, $ED, $44, $0E, $96, $F7, $8C, $5E, $D3, $E3 
	.db $D4, $6D, $05, $15, $BA, $6D, $F4, $88, $25, $61, $A1, $03, $BD, $F0, $64, $05 
	.db $15, $9E, $EB, $C3, $A2, $57, $90, $3C, $EC, $1A, $27, $97, $2A, $07, $3A, $A9 
	.db $9B, $6D, $3F, $1B, $F5, $21, $63, $1E, $FB, $66, $9C, $F5, $19, $F3, $DC, $26
	.db $28, $D9, $33, $75, $F5, $FD, $55, $B1, $82, $34, $56, $03, $BB, $3C, $BA, $8A 
	.db $11, $77, $51, $28, $F8, $D9, $0A, $C2, $67, $51, $CC, $AB, $5F, $92, $AD, $CC 
	.db $51, $17, $E8, $4D, $8E, $DC, $30, $38, $62, $58, $9D, $37, $91, $F9, $20, $93 
	.db $C2, $90, $7A, $EA, $CE, $7B, $3E, $FB, $64, $CE, $21, $51, $32, $BE, $4F, $77 
	.db $7E, $E3, $B6, $A8, $46, $3D, $29, $C3, $69, $53, $DE, $48, $80, $E6, $13, $64 
	.db $10, $08, $AE, $A2, $24, $B2, $6D, $DD, $FD, $2D, $85, $69, $66, $21, $07, $09 
	.db $0A, $46, $9A, $B3, $DD, $C0, $45, $64, $CF, $DE, $6C, $58, $AE, $C8, $20, $1C 
	.db $DD, $F7, $BE, $5B, $40, $8D, $58, $1B, $7F, $01, $D2, $CC, $BB, $E3, $B4, $6B 
	.db $7E, $6A, $A2, $DD, $45, $FF, $59, $3A, $44, $0A, $35, $3E, $D5, $CD, $B4, $BC 
	.db $A8, $CE, $EA, $72, $BB, $84, $64, $FA, $AE, $12, $66, $8D, $47, $6F, $3C, $BF 
	.db $63, $E4, $9B, $D2, $9E, $5D, $2F, $54, $1B, $77, $C2, $AE, $70, $63, $4E, $F6 
	.db $8D, $0D, $0E, $74, $57, $13, $5B, $E7, $71, $16, $72, $F8, $5D, $7D, $53, $AF 
	.db $08, $CB, $40, $40, $CC, $E2, $B4, $4E, $6A, $46, $D2, $34, $84, $AF, $15, $01 
	.db $28, $04, $B0, $E1, $1D, $3A, $98, $95, $B4, $9F, $B8, $06, $48, $A0, $6E, $CE 
	.db $82, $3B, $3F, $6F, $82, $AB, $20, $35, $4B, $1D, $1A, $01, $F8, $27, $72, $27 
	.db $B1, $60, $15, $61, $DC, $3F, $93, $E7, $2B, $79, $3A, $BB, $BD, $25, $45, $34 
	.db $E1, $39, $88, $A0, $4B, $79, $CE, $51, $B7, $C9, $32, $2F, $C9, $BA, $1F, $A0 
	.db $7E, $C8, $1C, $E0, $F6, $D1, $C7, $BC, $C3, $11, $01, $CF, $C7, $AA, $E8, $A1 
	.db $49, $87, $90, $1A, $9A, $BD, $4F, $D4, $CB, $DE, $DA, $D0, $38, $DA, $0A, $D5 
	.db $2A, $C3, $39, $03, $67, $36, $91, $C6, $7C, $31, $F9, $8D, $4F, $2B, $B1, $E0 
	.db $B7, $59, $9E, $F7, $3A, $BB, $F5, $43, $FF, $19, $D5, $F2, $9C, $45, $D9, $27 
	.db $2C, $22, $97, $BF, $2A, $FC, $E6, $15, $71, $FC, $91, $0F, $25, $15, $94, $9B 
	.db $61, $93, $E5, $FA, $EB, $9C, $B6, $CE, $59, $64, $A8, $C2, $D1, $A8, $BA, $12 
	.db $5E, $07, $C1, $B6, $0C, $6A, $05, $E3, $65, $50, $D2, $10, $42, $A4, $03, $CB 
	.db $0E, $6E, $EC, $E0, $3B, $DB, $98, $16, $BE, $A0, $98, $4C, $64, $E9, $78, $32 
	.db $32, $95, $1F, $9F, $DF, $92, $D3, $E0, $2B, $34, $A0, $D3, $1E, $F2, $71, $89 
	.db $41, $74, $0A, $1B, $8C, $34, $A3, $4B, $20, $71, $BE, $C5, $D8, $32, $76, $C3 
	.db $8D, $9F, $35, $DF, $2E, $2F, $99, $9B, $47, $6F, $0B, $E6, $1D, $F1, $E3, $0F 
	.db $54, $DA, $4C, $E5, $91, $D8, $DA, $1E, $CF, $79, $62, $CE, $6F, $7E, $3E, $CD 
	.db $66, $B1, $18, $16, $05, $1D, $2C, $FD, $C5, $D2, $8F, $84, $99, $22, $FB, $F6 
	.db $57, $F3, $23, $F5, $23, $76, $32, $A6, $31, $35, $A8, $93, $02, $CD, $CC, $56 
	.db $62, $81, $F0, $AC, $B5, $EB, $75, $5A, $97, $36, $16, $6E, $CC, $73, $D2, $88 
	.db $92, $62, $96, $DE, $D0, $49, $B9, $81, $1B, $90, $50, $4C, $14, $56, $C6, $71 
	.db $BD, $C7, $C6, $E6, $0A, $14, $7A, $32, $06, $D0, $E1, $45, $9A, $7B, $F2, $C3 
	.db $FD, $53, $AA, $C9, $00, $0F, $A8, $62, $E2, $BF, $25, $BB, $F6, $D2, $BD, $35 
	.db $05, $69, $12, $71, $22, $02, $04, $B2, $7C, $CF, $CB, $B6, $2B, $9C, $76, $CD 
	.db $C0, $3E, $11, $53, $D3, $E3, $40, $16, $60, $BD, $AB, $38, $F0, $AD, $47, $25 
	.db $9C, $20, $38, $BA, $76, $CE, $46, $F7, $C5, $A1, $AF, $77, $60, $60, $75, $20 
	.db $4E, $FE, $CB, $85, $D8, $8D, $E8, $8A, $B0, $F9, $AA, $7A, $7E, $AA, $F9, $4C 
	.db $5C, $C2, $48, $19, $8C, $8A, $FB, $02, $E4, $6A, $C3, $01, $F9, $E1, $EB, $D6 
	.db $69, $F8, $D4, $90, $A0, $DE, $5C, $A6, $2D, $25, $09, $3F, $9F, $E6, $08, $C2 
	.db $32, $61, $4E, $B7, $5B, $E2, $77, $CE, $E3, $DF, $8F, $57, $E6, $72, $C3, $3A
6502 yeah~!
sippey
Posts: 4
Joined: 08 May 2003

Post by sippey »

Oh, I'm sorry that this code include no comment.
Some extra literature will be needed if you really want to understand it instead of just use it.

My literature about Blowfish is in Chinese , so I will not post it here.
6502 yeah~!
Post Reply