diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index a6005363..69991f9c 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/KILL.S.txt b/BIN/KILL.S.txt index b0da0cb2..885623e2 100644 --- a/BIN/KILL.S.txt +++ b/BIN/KILL.S.txt @@ -71,7 +71,7 @@ CS.RUN ldy #S.PS.ARGC .9 >PUSHW L.MSG.USAGE >PUSHBI 0 - >SYSCALL printf + >SYSCALL printf2 lda #E.SYN sec diff --git a/INC/LIBCRYPT.I.txt b/INC/LIBCRYPT.I.txt deleted file mode 100644 index 16aec9ab..00000000 --- a/INC/LIBCRYPT.I.txt +++ /dev/null @@ -1,24 +0,0 @@ -NEW - AUTO 3,1 - .LIST OFF -*-------------------------------------- -LIBCRYPT.MD5 .EQ 4 -LIBCRYPT.MD5Init .EQ 6 -LIBCRYPT.MD5Update .EQ 8 -LIBCRYPT.MD5Finalize .EQ 10 -*-------------------------------------- -* S.MD5 STRUCT -*-------------------------------------- -S.MD5.ABCD0 .EQ 0 -S.MD5.A0 .EQ 0 -S.MD5.B0 .EQ 4 -S.MD5.C0 .EQ 8 -S.MD5.D0 .EQ 12 -S.MD5.BITCOUNT .EQ 16 -S.MD5.EXTRABIT .EQ 24 -S.MD5.FINALIZED .EQ 25 -* -S.MD5 .EQ 26 -*-------------------------------------- -MAN -SAVE INC/LIBCRYPT.I diff --git a/LIB/LIBCRYPT.S.txt b/LIB/LIBCRYPT.S.txt deleted file mode 100644 index 00f8e1a9..00000000 --- a/LIB/LIBCRYPT.S.txt +++ /dev/null @@ -1,549 +0,0 @@ -NEW - AUTO 3,1 - .LIST OFF - .OP 65C02 - .OR $2000 - .TF lib/libcrypt -*-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I - .INB INC/LIBCRYPT.I -*-------------------------------------- - .DUMMY - .OR ZPLIB -ZS.START -ZPCtxPtr .BS 2 -ZPDataPtr .BS 2 -ZPHashPtr .BS 2 - -ZPChunkLen .BS 2 - -MD5.ABCD -MD5.A .BS 4 Chunk Level,A,B,C,D -MD5.B .BS 4 -MD5.C .BS 4 -MD5.D .BS 4 - -MD5.F1 .BS 4 -MD5.F2 .BS 4 - -ZS.END .ED -*-------------------------------------- -* DWORD Macros : Do NOT disturb carry with cpx, cpy... -*-------------------------------------- - .MA ADC32 - ldx #3 - ldy #0 - clc -:1 lda ]1,y - adc ]2,y - sta ]3,y - iny - dex - bpl :1 - .EM -*-------------------------------------- - .MA AND32 - ldx #3 -:1 lda ]1,x - and ]2,x - sta ]3,x - dex - bpl :1 - .EM -*-------------------------------------- - .MA ORA32 - ldx #3 -:1 lda ]1,x - ora ]2,x - sta ]3,x - dex - bpl :1 - .EM -*-------------------------------------- - .MA EOR32 - ldx #3 -:1 lda ]1,x - eor ]2,x - sta ]3,x - dex - bpl :1 - .EM -*-------------------------------------- - .MA NOT32 - ldx #3 -:1 lda ]1,x - eor #$FF - sta ]2,x - dex - bpl :1 - .EM -*-------------------------------------- - .MA MOV32 - ldx #3 -:1 lda ]1,x - sta ]2,x - dex - bpl :1 - .EM -*-------------------------------------- - .MA ROL32x -:2 lda ]1+3 - rol - rol ]1 - rol ]1+1 - rol ]1+2 - rol ]1+3 - dex - bne :2 - .EM -*-------------------------------------- -* File Header (16 Bytes) -*-------------------------------------- -CS.START cld - jmp (.1,x) - .DA #$61 6502,Level 1 (65c02) - .DA #1 BIN Layout Version 1 - .DA 0 - .DA CS.END-CS.START - .DA 0 - .DA 0 - .DA 0 -*-------------------------------------- -* Relocation Table -*-------------------------------------- -.1 .DA LIB.LOAD - .DA LIB.UNLOAD - .DA MD5 - .DA MD5Init - .DA MD5Update - .DA MD5Finalize -J.MD5.XXXX .DA MD5.0015 - .DA MD5.1631 - .DA MD5.3247 - .DA MD5.4863 - .DA 0 -*-------------------------------------- -LIB.LOAD -LIB.UNLOAD clc - rts -*/-------------------------------------- -* ## MD5 -* Return MD5 Hash for input String -* # C -* `void md5 (const char* str, char* digest);` -* # ASM -* `>PUSHW digest` -* `>PUSHW str` -* ## RETURN VALUE -* CC -*\-------------------------------------- -MD5 >PULLW ZPDataPtr - >PULLW ZPHashPtr - >LDYA ZPDataPtr - >SYSCALL2 strlen - >STYA ZPDataLen -.1 jsr MD5Init - bcs .9 - pha save MD5 Context hMem - - jsr MD5Update.I - jsr MD5Finalize.I - pla - >SYSCALL2 FreeMem Free MD5 Context - clc -.9 rts -*/-------------------------------------- -* ## MD5Init -* Initialize a MD5 computation -* # C -* `hMD5 md5init ();` -* # ASM -* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init` -* ## RETURN VALUE -* A = hMem To S.MD5 -*\-------------------------------------- -MD5Init >LDYAI S.MD5 - >SYSCALL2 getmem - bcs .9 - >STYA ZPCtxPtr - ldy #0 -.1 lda MD5.ABCDINIT,y - sta (ZPCtxPtr),y - iny - cpy #S.MD5.BITCOUNT - bne .1 - lda #0 -.2 sta (ZPCtxPtr),y - iny - cpy #S.MD5 Includes S.MD5.FINALIZED Flag - bne .2 - txa - clc -.9 rts -*/-------------------------------------- -* ## MD5Update -* Add Data to MD5 computation -* # C -* `void md5update (hMD5 md5, char* data, int len);` -* # ASM -* `>PUSHW len` -* `>PUSHW data` -* `>LDA.G md5` -* `>hLIBCRYPT,LIBCRYPT.MD5Update` -* ## RETURN VALUE -*\-------------------------------------- -MD5Update >SYSCALL2 GetMemPtr get MD5 Context - >STYA ZPCtxPtr - >PULLW ZPDataPtr get DATA - >PULLW ZPDataLen get LEN -MD5Update.I ldy #S.MD5.FINALIZED - lda (ZPCtxPtr),y - beq .1 - sec - rts -.1 lda ZPDataLen+1 More than 256 Bytes remaining to hash ? - bne .3 yes - lda ZPDataLen - bne .2 Len = O ? - clc All data processed - rts -.2 cmp #64 More than 64 Bytes remaining to hash ? - bcc .50 yes -.3 lda #64 -.50 sta ZPChunkLen Save Chunk Len - jsr MD5UpdateBitCount - ldy #0 -.51 lda (ZPDataPtr),y Load Buffer with data - sta MD5.BUFFER64,y - iny - cpy ZPChunkLen - bne .51 - cpy #64 Full 64 Bytes DATA ? - beq .58 -* Append "$80" & Padding & original size - - lda #$80 no, Append $80 - sta MD5.BUFFER64,y - lda #0 -.52 iny Pad with 0 to 64 - cpy #64 - beq .53 - sta MD5.BUFFER64,y - bra .52 -.53 ldy #S.MD5.EXTRABIT Mark MD5 Context as Appended - lda #$80 - sta (ZPCtxPtr),y - lda ZPChunkLen - cmp #56 Enough room for BITCOUNT ? - bcs .58 no - jsr MD5AppendBitCount -.58 jsr MD5Transform - jsr MD5UpdateABCD0 -.8 lda ZPDataLen Substract Bytes processed from LEN - sec - sbc ZPChunkLen get back chunk Len - sta ZPDataLen - bcs .81 - dec ZPDataLen+1 -.81 lda ZPDataPtr Add Bytes processed to DATA - clc - adc ZPChunkLen - sta ZPDataPtr - bcc .1 - inc ZPDataPtr+1 - bra .1 -*/-------------------------------------- -* ## MD5Finalize -* # C -* `void md5finalize (hMD5 md5, char* digest);` -* # ASM -* `>PUSHW digest` -* `>LDA.G md5` -* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize` -* ## RETURN VALUE -*\-------------------------------------- -MD5Finalize pha - >SYSCALL2 GetMemPtr - >STYA ZPCtxPtr get MD5 Context - >PULLW ZPHashPtr - jsr MD5Finalize.I - pla - >SYSCALL2 FreeMem - rts -MD5Finalize.I ldy #S.MD5.FINALIZED - - lda (ZPCtxPtr),y - bne .11 - jsr MD5ExtraChunk -.11 ldy #S.MD5.ABCD0 - -.1 lda (ZPCtxPtr),y - lsr - lsr - lsr - lsr - tax - lda MD5.DIGITS,x - sta (ZPHashPtr) - inc ZPHashPtr - bne .2 - inc ZPHashPtr+1 -.2 lda (ZPCtxPtr),y - and #$0F - tax - lda MD5.DIGITS,x - sta (ZPHashPtr) - inc ZPHashPtr - bne .3 - inc ZPHashPtr+1 -.3 iny - cpy #S.MD5.ABCD0+16 - bne .1 - lda #0 - sta (ZPHashPtr) - clc -.9 rts -*-------------------------------------- -* PRIVATE -*-------------------------------------- -* MD5AppendBitCount -* In : -* ZPCtxPtr = MD5 Context -*-------------------------------------- -MD5AppendBitCount - ldx #56 - ldy #S.MD5.BITCOUNT Append 8 Bytes of BITCOUNT - -.1 lda (ZPCtxPtr),y - sta MD5.BUFFER64,x - inx - iny - cpy #S.MD5.BITCOUNT+8 - bne .1 - - ldy #S.MD5.FINALIZED Mark MD5 Context as Finalized - lda #$80 - sta (ZPCtxPtr),y - rts -*-------------------------------------- -* MD5UpdateBitCount -* In : -* CL = Size (in bytes) to add to MD5 context -* ZPCtxPtr = MD5 Context -*-------------------------------------- -MD5UpdateBitCount - stz ZPChunkLen+1 - lda ZPChunkLen - asl - rol ZPChunkLen+1 - asl times 8 to get bit count - rol ZPChunkLen+1 - asl - rol ZPChunkLen+1 - clc - ldy #S.MD5.BITCOUNT - adc (ZPCtxPtr),y - sta (ZPCtxPtr),y - iny - lda ZPChunkLen+1 - adc (ZPCtxPtr),y - sta (ZPCtxPtr),y - bcc .8 - -.1 iny - lda (ZPCtxPtr),y - inc - sta (ZPCtxPtr),y - bne .8 - - cpy #7 - bne .1 - -.8 rts -*-------------------------------------- -* MD5ExtraChunk -* In : -* ZPCtxPtr = MD5 Context -*-------------------------------------- -MD5ExtraChunk ldy #S.MD5.FINALIZED - lda #$80 - sta (ZPCtxPtr),y Mark MD5 Context as "finalized" - ldx #0 - ldy #S.MD5.EXTRABIT Extra Bit already appended ? - lda (ZPCtxPtr),y - bne .1 - - lda #$80 - sta MD5.BUFFER64 Add extra bit to buffer - sta (ZPCtxPtr),y Mark Extrabit added - inx - -.1 stz MD5.BUFFER64,x pad with "0"... - inx - cpx #56 - bne .1 ...until room for bitcount - - jsr MD5AppendBitCount - jsr MD5Transform -*-------------------------------------- -* MD5UpdateABCD0 -* In: -* ZPCtxPtr = MD5 Context -*-------------------------------------- -MD5UpdateABCD0 ldy #0 - -.1 clc ADC32 A+A0->A0, B, C, D.... - -.2 lda MD5.ABCD,y - adc (ZPCtxPtr),y - sta (ZPCtxPtr),y - iny - tya - and #3 - bne .2 - - cpy #16 - bne .1 - - rts -*-------------------------------------- -* MD5Transform -* In: -* ZPCtxPtr = MD5 Context -* 512 Bits Padded chunk in MD5.BUFFER64 -* Out: -* Updated MD5.ABCD -*-------------------------------------- -MD5Transform ldy #15 init ABCD Chunk with Context ABCD0 - -.1 lda (ZPCtxPtr),y - sta MD5.ABCD,y - dey - bpl .1 - - stz MD5.i Start Proceed 0 to 63 bytes - lda #0 lda MD5.i - -.2 lsr - lsr - lsr - and #6 - tax - - jsr MD5.XXXX - - inc MD5.i - lda MD5.i - cmp #64 - bne .2 - rts -*-------------------------------------- -MD5.XXXX jmp (J.MD5.XXXX,x) -*-------------------------------------- -MD5.0015 >AND32 MD5.B,MD5.C,MD5.F1 - >NOT32 MD5.B,MD5.F2 - >AND32 MD5.F2,MD5.D,MD5.F2 - >ORA32 MD5.F1,MD5.F2,MD5.F - bra MD5.XXXX.END -*-------------------------------------- -MD5.1631 >AND32 MD5.D,MD5.B,MD5.F1 - >NOT32 MD5.D,MD5.F2 - >AND32 MD5.F2,MD5.C,MD5.F2 - >ORA32 MD5.F1,MD5.F2,MD5.F - bra MD5.XXXX.END -*-------------------------------------- -MD5.3247 >EOR32 MD5.B,MD5.C,MD5.F - >EOR32 MD5.F,MD5.D,MD5.F - bra MD5.XXXX.END -*-------------------------------------- -MD5.4863 >NOT32 MD5.D,MD5.F1 - >ORA32 MD5.F1,MD5.B,MD5.F2 - >EOR32 MD5.F2,MD5.C,MD5.F -*-------------------------------------- -MD5.XXXX.END >MOV32 MD5.D,MD5.DTemp - >MOV32 MD5.C,MD5.D - >MOV32 MD5.B,MD5.C - >ADC32 MD5.A,MD5.F,MD5.F - lda MD5.i - asl - asl - tay - ldx #0 - clc - -.1 lda MD5.K,y ADC32 MD5.K[i],MD5.F,MD5.F - adc MD5.F,x - sta MD5.F,x - iny - inx - txa - eor #4 DO NOT DISTURB carry with cpx !!! - bne .1 - - ldy MD5.i - lda MD5.g,y - asl - asl - tay - ldx #0 - clc -.2 lda MD5.BUFFER64,y ADC32 M[g],MD5.F,MD5.F - adc MD5.F,x - sta MD5.F,x - iny - inx - txa - eor #4 DO NOT DISTURB carry with cpx !!! - bne .2 - - ldy MD5.i - ldx MD5.s,y get s[i] in x - - >ROL32x MD5.F - >ADC32 MD5.B,MD5.F,MD5.B - >MOV32 MD5.DTemp,MD5.A - rts -*-------------------------------------- -CS.END -MD5.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210 -*-------------------------------------- -MD5.s .DA #7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22 - .DA #5,#9,#14,#20,#5,#9,#14,#20,#5,#9,#14,#20,#5,#9,#14,#20 - .DA #4,#11,#16,#23,#4,#11,#16,#23,#4,#11,#16,#23,#4,#11,#16,#23 - .DA #6,#10,#15,#21,#6,#10,#15,#21,#6,#10,#15,#21,#6,#10,#15,#21 -*-------------------------------------- -MD5.g .DA #0,#1,#2,#3,#4,#5,#6,#7,#8,#9,#10,#11,#12,#13,#14,#15 - .DA #1,#6,#11,#0,#5,#10,#15,#4,#9,#14,#3,#8,#13,#2,#7,#12 - .DA #5,#8,#11,#14,#1,#4,#7,#10,#13,#0,#3,#6,#9,#12,#15,#2 - .DA #0,#7,#14,#5,#12,#3,#10,#1,#8,#15,#6,#13,#4,#11,#2,#9 -*-------------------------------------- -MD5.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1 - .HS AF0F7CF5.2AC68747.134630A8.019546FD - .HS D8988069.AFF7448B.B15BFFFF.BED75C89 - .HS 2211906B.937198FD.8E4379A6.2108B449 - .HS 62251EF6.40B340C0.515A5E26.AAC7B6E9 - .HS 5D102FD6.53144402.81E6A1D8.C8FBD3E7 - .HS E6CDE121.D60737C3.870DD5F4.ED145A45 - .HS 05E9E3A9.F8A3EFFC.D9026F67.8A4C2A8D - .HS 4239FAFF.81F67187.22619D6D.0C38E5FD - .HS 44EABEA4.A9CFDE4B.604BBBF6.70BCBFBE - .HS C67E9B28.FA27A1EA.8530EFD4.051D8804 - .HS 39D0D4D9.E599DBE6.F87CA21F.6556ACC4 - .HS 442229F4.97FF2A43.A72394AB.39A093FC - .HS C3595B65.92CC0C8F.7DF4EFFF.D15D8485 - .HS 4F7EA86F.E0E62CFE.144301A3.A111084E - .HS 827E53F7.35F23ABD.BBD2D72A.91D386EB -*-------------------------------------- -MD5.DIGITS .AS "0123456789ABCDEF" -*-------------------------------------- -ZPDataLen .BS 2 - -MD5.DTemp .BS 4 -MD5.F .BS 4 -MD5.i .BS 1 -MD5.BUFFER64 .BS 64 -*-------------------------------------- -MAN -SAVE USR/SRC/LIB/LIBCRYPT.S -ASM