mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-08 08:33:37 +00:00
Kernel 0.9.1 : KERNEL, Preemtive mode, KERNEL & LIB Cleaning
This commit is contained in:
parent
b14a8e556d
commit
4e7d011929
35
.Docs/LIBCRYPT.md
Normal file
35
.Docs/LIBCRYPT.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
*** Auto generated by docgen.cmd ***
|
||||||
|
|
||||||
|
# MD5
|
||||||
|
+ Return MD5 Hash for input String
|
||||||
|
|
||||||
|
## In :
|
||||||
|
+ PUSHW = PTR to Src String
|
||||||
|
+ PUSHW = PTR to Dst MessageDigest Buffer
|
||||||
|
|
||||||
|
## Out :
|
||||||
|
+ CC
|
||||||
|
|
||||||
|
# MD5Init
|
||||||
|
|
||||||
|
## In :
|
||||||
|
|
||||||
|
## Out :
|
||||||
|
+ A = hMem To S.MD5
|
||||||
|
|
||||||
|
# MD5Update (Append "$80" & Padding & original size)
|
||||||
|
|
||||||
|
## In:
|
||||||
|
* PUSHW DATA LEN
|
||||||
|
* PUSHW DATA PTR
|
||||||
|
* PUSHB MD5 Context hMem
|
||||||
|
|
||||||
|
## Out :
|
||||||
|
|
||||||
|
# MD5Finalize
|
||||||
|
|
||||||
|
## In :
|
||||||
|
+ PUSHW = MessageDigest (PSTR, 16 Bytes, 32 Chars) +Ending 0
|
||||||
|
+ PUSHB = hMem To S.MD5
|
||||||
|
|
||||||
|
## Out:
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -30,6 +30,11 @@ set SRCDIR=%~dp0..\LIB
|
||||||
set FILTER=LIBBLKDEV.S*.txt
|
set FILTER=LIBBLKDEV.S*.txt
|
||||||
Call :SCAN
|
Call :SCAN
|
||||||
|
|
||||||
|
set DOCFILE=%~dp0..\.Docs\LIBCRYPT.md
|
||||||
|
set SRCDIR=%~dp0..\LIB
|
||||||
|
set FILTER=LIBCRYPT.S*.txt
|
||||||
|
Call :SCAN
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo All done : !c! Files scanned.
|
echo All done : !c! Files scanned.
|
||||||
echo.
|
echo.
|
||||||
|
|
172
BIN/MD5.S.txt
Normal file
172
BIN/MD5.S.txt
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
NEW
|
||||||
|
PREFIX /A2OSX.BUILD
|
||||||
|
AUTO 4,1
|
||||||
|
.LIST OFF
|
||||||
|
.OP 65C02
|
||||||
|
.OR $2000
|
||||||
|
.TF /A2OSX.BUILD/BIN/MD5
|
||||||
|
*--------------------------------------
|
||||||
|
.INB /A2OSX.BUILD/INC/MACROS.I
|
||||||
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||||
|
.INB /A2OSX.BUILD/INC/LIBCRYPT.I
|
||||||
|
*--------------------------------------
|
||||||
|
ZPPtr1 .EQ ZPBIN
|
||||||
|
ZPPtr2 .EQ ZPBIN+2
|
||||||
|
*--------------------------------------
|
||||||
|
* 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 CS
|
||||||
|
.DA DS.END-DS.START DS
|
||||||
|
.DA #16 SS
|
||||||
|
.DA #4 ZP
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
* Relocation Table
|
||||||
|
*--------------------------------------
|
||||||
|
.1 .DA CS.INIT
|
||||||
|
.DA CS.RUN
|
||||||
|
.DA CS.DOEVENT
|
||||||
|
.DA CS.QUIT
|
||||||
|
L.LIBCRYPT .DA LIBCRYPT
|
||||||
|
L.MSG.USAGE .DA MSG.USAGE
|
||||||
|
L.MSG.INIT .DA MSG.INIT
|
||||||
|
L.MSG.OK .DA MSG.OK
|
||||||
|
L.MSG.ERR .DA MSG.ERR
|
||||||
|
.DA 0
|
||||||
|
*--------------------------------------
|
||||||
|
CS.INIT ldy #S.PS.ARGC
|
||||||
|
lda (pPs),y
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
.1 >INC.G ArgIndex
|
||||||
|
|
||||||
|
>SYSCALL GetArg.A
|
||||||
|
bcs .7
|
||||||
|
|
||||||
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
lda (ZPPtr1)
|
||||||
|
cmp #'-'
|
||||||
|
bne .4
|
||||||
|
|
||||||
|
ldy #1
|
||||||
|
lda (ZPPtr1),y
|
||||||
|
beq .99
|
||||||
|
|
||||||
|
ldx OptionList
|
||||||
|
|
||||||
|
.2 cmp OptionList,x
|
||||||
|
beq .3
|
||||||
|
dex
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.99 >LDYA L.MSG.USAGE
|
||||||
|
>SYSCALL PrintF.YA
|
||||||
|
lda #K.E.SYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.3 ldy OptionVars-1,x
|
||||||
|
lda #$80
|
||||||
|
sta (pData),y
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.4 >LDA.G hFullPath
|
||||||
|
bne .99
|
||||||
|
|
||||||
|
.7 >LDA.G bText
|
||||||
|
|
||||||
|
.8 >LDYA L.LIBCRYPT
|
||||||
|
>SYSCALL LoadLib.YA
|
||||||
|
sta hLIBCRYPT
|
||||||
|
|
||||||
|
* lda (pPs)
|
||||||
|
* ora #S.PS.F.EVENT Now accept events
|
||||||
|
* sta (pPs)
|
||||||
|
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.RUN
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
>LDYA L.MSG.OK
|
||||||
|
>SYSCALL PrintF.YA
|
||||||
|
lda #0
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 pha
|
||||||
|
>PUSHA
|
||||||
|
>LDYA L.MSG.ERR
|
||||||
|
>SYSCALL PrintF.YA
|
||||||
|
pla
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.DOEVENT sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.QUIT >LDA.G hDataBuf
|
||||||
|
beq .1
|
||||||
|
>SYSCALL FreeMem.A
|
||||||
|
|
||||||
|
.1 lda hLIBCRYPT
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
>SYSCALL UnloadLib.A
|
||||||
|
|
||||||
|
.8 clc
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
A2CharAX pha
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
and #$0F
|
||||||
|
ora #$30
|
||||||
|
cmp #'9'+1
|
||||||
|
bcc .1
|
||||||
|
adc #6
|
||||||
|
.1 tax
|
||||||
|
pla
|
||||||
|
and #$0F
|
||||||
|
ora #$30
|
||||||
|
cmp #'9'+1
|
||||||
|
bcc .8
|
||||||
|
adc #6
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CS.END
|
||||||
|
*--------------------------------------
|
||||||
|
OptionList >PSTR "Dd"
|
||||||
|
OptionVars .DA #bText,#bText
|
||||||
|
*--------------------------------------
|
||||||
|
MSG.USAGE .AZ "Usage : MD5 [ -d input_text | infile… ] \r\n"
|
||||||
|
MSG.OK .AZ "[OK]\r\n"
|
||||||
|
MSG.ERR .AZ "[%h]\r\n"
|
||||||
|
MSG.INIT .AZ "Computing %s ..."
|
||||||
|
*--------------------------------------
|
||||||
|
LIBCRYPT .AZ "libcrypt.o"
|
||||||
|
hLIBCRYPT .BS 1
|
||||||
|
*--------------------------------------
|
||||||
|
.DUMMY
|
||||||
|
.OR 0
|
||||||
|
DS.START
|
||||||
|
ArgIndex .BS 1
|
||||||
|
bText .BS 1
|
||||||
|
hFullPath .BS 1
|
||||||
|
hDataBuf .BS 1
|
||||||
|
hMD5CtxBuf .BS 1
|
||||||
|
DS.END .ED
|
||||||
|
*--------------------------------------
|
||||||
|
MAN
|
||||||
|
SAVE /A2OSX.SRC/BIN/MD5.S
|
||||||
|
ASM
|
|
@ -431,7 +431,7 @@ S.EVT.W2 .EQ 6
|
||||||
S.EVT .EQ 8
|
S.EVT .EQ 8
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
S.TIME.CENTURY .EQ 0 19,20,21....
|
S.TIME.CENTURY .EQ 0 19,20,21....
|
||||||
S.TIME.YEAR .EQ 1 0.99
|
S.TIME.YEAR .EQ 1 0..99
|
||||||
S.TIME.MONTH .EQ 2 1..12
|
S.TIME.MONTH .EQ 2 1..12
|
||||||
S.TIME.DAY .EQ 3 1..31
|
S.TIME.DAY .EQ 3 1..31
|
||||||
S.TIME.HOUR .EQ 4 0..23
|
S.TIME.HOUR .EQ 4 0..23
|
||||||
|
|
|
@ -6,10 +6,10 @@ AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
.OP 65C02
|
.OP 65C02
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIBCRYPT.MD5PStrA .EQ 4
|
LIBCRYPT.MD5 .EQ 4
|
||||||
LIBCRYPT.MD5Init .EQ 6
|
LIBCRYPT.MD5Init .EQ 6
|
||||||
LIBCRYPT.MD5Update .EQ 8
|
LIBCRYPT.MD5Update .EQ 8
|
||||||
LIBCRYPT.MD5FinalizeA .EQ 10
|
LIBCRYPT.MD5Finalize .EQ 10
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* S.MD5 STRUCT
|
* S.MD5 STRUCT
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -10,13 +10,11 @@ AUTO 4,1
|
||||||
.INB /A2OSX.BUILD/INC/A2OSX.I
|
.INB /A2OSX.BUILD/INC/A2OSX.I
|
||||||
.INB /A2OSX.BUILD/INC/LIBCRYPT.I
|
.INB /A2OSX.BUILD/INC/LIBCRYPT.I
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ZPTmpPtr1 .EQ ZPLIB
|
ZPCtxPtr .EQ ZPLIB
|
||||||
ZPTmpPtr2 .EQ ZPLIB+2
|
ZPDataPtr .EQ ZPLIB+2
|
||||||
ZPTmpPtr3 .EQ ZPLIB+4
|
ZPDataLen .EQ ZPLIB+4
|
||||||
ZPTmpPtr4 .EQ ZPLIB+6
|
ZPChunkLen .EQ ZPLIB+6
|
||||||
ZPDataPtr .EQ ZPLIB+8
|
ZPHashPtr .EQ ZPLIB+8
|
||||||
ZPDataLen .EQ ZPLIB+10
|
|
||||||
ZPChunkLen .EQ ZPLIB+12
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* DWORD Macros : Do NOT disturb carry with cpx, cpy...
|
* DWORD Macros : Do NOT disturb carry with cpx, cpy...
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -103,88 +101,90 @@ CS.START cld
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.1 .DA LIB.LOAD
|
.1 .DA LIB.LOAD
|
||||||
.DA LIB.UNLOAD
|
.DA LIB.UNLOAD
|
||||||
.DA MD5PStrA
|
.DA MD5
|
||||||
.DA MD5Init
|
.DA MD5Init
|
||||||
.DA MD5Update
|
.DA MD5Update
|
||||||
.DA MD5FinalizeA
|
.DA MD5Finalize
|
||||||
.DA 0
|
.DA 0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
LIB.LOAD
|
LIB.LOAD
|
||||||
LIB.UNLOAD clc
|
LIB.UNLOAD clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
* MD5PStrA
|
* # MD5
|
||||||
* in :
|
* Return MD5 Hash for input String
|
||||||
* A = hMem To PSTR
|
* ## In :
|
||||||
* out :
|
* PUSHW = PTR to Src String
|
||||||
* A = hMem To MessageDigest
|
* PUSHW = PTR to Dst MessageDigest Buffer
|
||||||
*--------------------------------------
|
* ## Out :
|
||||||
MD5PStrA >SYSCALL GetMemPtr.A
|
* CC
|
||||||
>STYA ZPTmpPtr3 1 and 2 used by other MD5 functions
|
*\--------------------------------------
|
||||||
ldy #0
|
MD5 >PULLW ZPHashPtr
|
||||||
lda (ZPTmpPtr3),y get PStr len
|
>PULLYA
|
||||||
sta ZPTmpPtr4 ZPTmpPtr4 = str len
|
>STYA ZPDataPtr
|
||||||
stz ZPTmpPtr4+1 0,PSTR len <= 255
|
|
||||||
inc ZPTmpPtr3
|
>SYSCALL StrLen.YA
|
||||||
bne .1
|
>STYA ZPDataLen
|
||||||
inc ZPTmpPtr3+1 Make DATA skip PSTR Len Byte
|
|
||||||
.1 jsr MD5Init
|
.1 jsr MD5Init
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
pha save MD5 Context hMem
|
pha save MD5 Context hMem
|
||||||
>PUSHW ZPTmpPtr4 Push LEN
|
|
||||||
>PUSHW ZPTmpPtr3 Push DATA
|
jsr MD5Update.I
|
||||||
|
jsr MD5Finalize
|
||||||
|
|
||||||
pla
|
pla
|
||||||
pha
|
>SYSCALL FreeMem.A Free MD5 Context
|
||||||
>PUSHA Push MD5 Context
|
|
||||||
jsr MD5Update
|
|
||||||
pla get back MD5 Context
|
|
||||||
pha
|
|
||||||
jsr MD5FinalizeA
|
|
||||||
plx get back MD5 Context hMem
|
|
||||||
pha save MessageDigest hMem
|
|
||||||
txa
|
|
||||||
>SYSCALL FreeMem.A Free MD5 Context
|
|
||||||
pla get back MessageDigest hMem
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
* MD5Init
|
* # MD5Init
|
||||||
* In :
|
* ## In :
|
||||||
* Out :
|
* ## Out :
|
||||||
* A = hMem To S.MD5
|
* A = hMem To S.MD5
|
||||||
*--------------------------------------
|
*\--------------------------------------
|
||||||
MD5Init >LDYAI S.MD5.SIZE
|
MD5Init >LDYAI S.MD5.SIZE
|
||||||
>SYSCALL GetMem.YA
|
>SYSCALL GetMem.YA
|
||||||
bcs .9
|
bcs .9
|
||||||
>STYA ZPTmpPtr1
|
|
||||||
|
>STYA ZPCtxPtr
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.1 lda MD5.ABCDINIT,y
|
.1 lda MD5.ABCDINIT,y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
iny
|
iny
|
||||||
cpy #16
|
cpy #16
|
||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
.2 sta (ZPTmpPtr1),y
|
|
||||||
|
.2 sta (ZPCtxPtr),y
|
||||||
iny
|
iny
|
||||||
cpy #S.MD5.SIZE Includes S.MD5.FINALIZED Flag
|
cpy #S.MD5.SIZE Includes S.MD5.FINALIZED Flag
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
txa
|
txa
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
* MD5Update (Append "$80" & Padding & original size)
|
* # MD5Update (Append "$80" & Padding & original size)
|
||||||
* In:
|
* ## In:
|
||||||
* PULLB MD5 Context hMem
|
* PUSHW DATA LEN
|
||||||
* PULLW DATA PTR
|
* PUSHW DATA PTR
|
||||||
* PULLW DATA LEN
|
* PUSHB MD5 Context hMem
|
||||||
*--------------------------------------
|
* ## Out :
|
||||||
|
*\--------------------------------------
|
||||||
MD5Update >PULLA get MD5 Context
|
MD5Update >PULLA get MD5 Context
|
||||||
>SYSCALL GetMemPtr.A
|
>SYSCALL GetMemPtr.A
|
||||||
>STYA ZPTmpPtr1 get MD5 Context
|
>STYA ZPCtxPtr get MD5 Context
|
||||||
>PULLW ZPDataPtr get DATA
|
>PULLW ZPDataPtr get DATA
|
||||||
>PULLW ZPDataLen get LEN
|
>PULLW ZPDataLen get LEN
|
||||||
ldy #S.MD5.FINALIZED
|
|
||||||
lda (ZPTmpPtr1),y
|
MD5Update.I ldy #S.MD5.FINALIZED
|
||||||
|
lda (ZPCtxPtr),y
|
||||||
beq .1
|
beq .1
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
@ -218,7 +218,7 @@ MD5Update >PULLA get MD5 Context
|
||||||
bra .52
|
bra .52
|
||||||
.53 ldy #S.MD5.EXTRABIT Mark MD5 Context as Appended
|
.53 ldy #S.MD5.EXTRABIT Mark MD5 Context as Appended
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
lda ZPChunkLen
|
lda ZPChunkLen
|
||||||
cmp #56 Enough room for BITCOUNT ?
|
cmp #56 Enough room for BITCOUNT ?
|
||||||
bcs .58 no
|
bcs .58 no
|
||||||
|
@ -238,53 +238,58 @@ MD5Update >PULLA get MD5 Context
|
||||||
bcc .82
|
bcc .82
|
||||||
inc ZPDataPtr+1
|
inc ZPDataPtr+1
|
||||||
.82 bra .1
|
.82 bra .1
|
||||||
*--------------------------------------
|
*/--------------------------------------
|
||||||
* MD5FinalizeA
|
* # MD5Finalize
|
||||||
* In :
|
* ## In :
|
||||||
* A = hMem To S.MD5
|
* PUSHW = MessageDigest (PSTR, 16 Bytes, 32 Chars) +Ending 0
|
||||||
* Out:
|
* PUSHB = hMem To S.MD5
|
||||||
* A = MessageDigest (PSTR, 16 Bytes, 32 Chars)
|
* ## Out:
|
||||||
*--------------------------------------
|
*\--------------------------------------
|
||||||
MD5FinalizeA >SYSCALL GetMemPtr.A
|
MD5Finalize >PULLA
|
||||||
>STYA ZPTmpPtr1 get MD5 Context
|
>SYSCALL GetMemPtr.A
|
||||||
ldy #S.MD5.FINALIZED
|
>STYA ZPCtxPtr get MD5 Context
|
||||||
lda (ZPTmpPtr1),y
|
|
||||||
|
>PULLW ZPHashPtr
|
||||||
|
|
||||||
|
MD5Finalize.I ldy #S.MD5.FINALIZED
|
||||||
|
|
||||||
|
lda (ZPCtxPtr),y
|
||||||
bne .11
|
bne .11
|
||||||
|
|
||||||
jsr MD5ExtraChunk
|
jsr MD5ExtraChunk
|
||||||
.11 >LDYAI 33 Len + 32 Digits
|
|
||||||
>SYSCALL GetMem.YA
|
.11 ldy #S.MD5.ABCD0
|
||||||
bcs .9
|
|
||||||
>STYA ZPTmpPtr2
|
.1 lda (ZPCtxPtr),y
|
||||||
phx save hMem for return
|
|
||||||
lda #32
|
|
||||||
sta (ZPTmpPtr2)
|
|
||||||
inc ZPTmpPtr2
|
|
||||||
bne .10
|
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
.10 ldy #S.MD5.ABCD0
|
|
||||||
.1 lda (ZPTmpPtr1),y
|
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
tax
|
tax
|
||||||
lda MD5.DIGITS,x
|
lda MD5.DIGITS,x
|
||||||
sta (ZPTmpPtr2)
|
sta (ZPHashPtr)
|
||||||
inc ZPTmpPtr2
|
inc ZPHashPtr
|
||||||
bne .2
|
bne .2
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
.2 lda (ZPTmpPtr1),y
|
inc ZPHashPtr+1
|
||||||
|
|
||||||
|
.2 lda (ZPCtxPtr),y
|
||||||
and #$0F
|
and #$0F
|
||||||
tax
|
tax
|
||||||
lda MD5.DIGITS,x
|
lda MD5.DIGITS,x
|
||||||
sta (ZPTmpPtr2)
|
sta (ZPHashPtr)
|
||||||
inc ZPTmpPtr2
|
inc ZPHashPtr
|
||||||
bne .3
|
bne .3
|
||||||
inc ZPTmpPtr2+1
|
|
||||||
|
inc ZPHashPtr+1
|
||||||
|
|
||||||
.3 iny
|
.3 iny
|
||||||
cpy #S.MD5.ABCD0+16
|
cpy #S.MD5.ABCD0+16
|
||||||
bne .1
|
bne .1
|
||||||
pla get back hMem
|
|
||||||
|
lda #0
|
||||||
|
sta (ZPHashPtr)
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -292,12 +297,12 @@ MD5FinalizeA >SYSCALL GetMemPtr.A
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MD5AppendBitCount
|
* MD5AppendBitCount
|
||||||
* In :
|
* In :
|
||||||
* ZPTmpPtr1 = MD5 Context
|
* ZPCtxPtr = MD5 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD5AppendBitCount
|
MD5AppendBitCount
|
||||||
ldx #56
|
ldx #56
|
||||||
ldy #S.MD5.BITCOUNT Append 8 Bytes of BITCOUNT
|
ldy #S.MD5.BITCOUNT Append 8 Bytes of BITCOUNT
|
||||||
.1 lda (ZPTmpPtr1),y
|
.1 lda (ZPCtxPtr),y
|
||||||
sta MD5.BUFFER64,x
|
sta MD5.BUFFER64,x
|
||||||
inx
|
inx
|
||||||
iny
|
iny
|
||||||
|
@ -305,13 +310,13 @@ MD5AppendBitCount
|
||||||
bne .1
|
bne .1
|
||||||
ldy #S.MD5.FINALIZED Mark MD5 Context as Finalized
|
ldy #S.MD5.FINALIZED Mark MD5 Context as Finalized
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MD5UpdateBitCount
|
* MD5UpdateBitCount
|
||||||
* In :
|
* In :
|
||||||
* CL = Size (in bytes) to add to MD5 context
|
* CL = Size (in bytes) to add to MD5 context
|
||||||
* ZPTmpPtr1 = MD5 Context
|
* ZPCtxPtr = MD5 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD5UpdateBitCount
|
MD5UpdateBitCount
|
||||||
stz ZPChunkLen+1
|
stz ZPChunkLen+1
|
||||||
|
@ -324,17 +329,17 @@ MD5UpdateBitCount
|
||||||
rol ZPChunkLen+1
|
rol ZPChunkLen+1
|
||||||
clc
|
clc
|
||||||
ldy #S.MD5.BITCOUNT
|
ldy #S.MD5.BITCOUNT
|
||||||
adc (ZPTmpPtr1),y
|
adc (ZPCtxPtr),y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
iny
|
iny
|
||||||
lda ZPChunkLen+1
|
lda ZPChunkLen+1
|
||||||
adc (ZPTmpPtr1),y
|
adc (ZPCtxPtr),y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
bcc .8
|
bcc .8
|
||||||
.1 iny
|
.1 iny
|
||||||
lda (ZPTmpPtr1),y
|
lda (ZPCtxPtr),y
|
||||||
inc
|
inc
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
bne .8
|
bne .8
|
||||||
cpy #7
|
cpy #7
|
||||||
bne .1
|
bne .1
|
||||||
|
@ -342,18 +347,18 @@ MD5UpdateBitCount
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MD5ExtraChunk
|
* MD5ExtraChunk
|
||||||
* In :
|
* In :
|
||||||
* ZPTmpPtr1 = MD5 Context
|
* ZPCtxPtr = MD5 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD5ExtraChunk ldy #S.MD5.FINALIZED
|
MD5ExtraChunk ldy #S.MD5.FINALIZED
|
||||||
lda #$80
|
lda #$80
|
||||||
sta (ZPTmpPtr1),y Mark MD5 Context as "finalized"
|
sta (ZPCtxPtr),y Mark MD5 Context as "finalized"
|
||||||
ldx #0
|
ldx #0
|
||||||
ldy #S.MD5.EXTRABIT Extra Bit already appended ?
|
ldy #S.MD5.EXTRABIT Extra Bit already appended ?
|
||||||
lda (ZPTmpPtr1),y
|
lda (ZPCtxPtr),y
|
||||||
bne .1
|
bne .1
|
||||||
lda #$80
|
lda #$80
|
||||||
sta MD5.BUFFER64 Add extra bit to buffer
|
sta MD5.BUFFER64 Add extra bit to buffer
|
||||||
sta (ZPTmpPtr1),y Mark Extrabit added
|
sta (ZPCtxPtr),y Mark Extrabit added
|
||||||
inx
|
inx
|
||||||
.1 stz MD5.BUFFER64,x pad with "0"...
|
.1 stz MD5.BUFFER64,x pad with "0"...
|
||||||
inx
|
inx
|
||||||
|
@ -364,13 +369,13 @@ MD5ExtraChunk ldy #S.MD5.FINALIZED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MD5UpdateABCD0
|
* MD5UpdateABCD0
|
||||||
* In:
|
* In:
|
||||||
* ZPTmpPtr1 = MD5 Context
|
* ZPCtxPtr = MD5 Context
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD5UpdateABCD0 ldy #0
|
MD5UpdateABCD0 ldy #0
|
||||||
.1 clc ADC32 A+A0->A0, B, C, D....
|
.1 clc ADC32 A+A0->A0, B, C, D....
|
||||||
.2 lda MD5.ABCD,y
|
.2 lda MD5.ABCD,y
|
||||||
adc (ZPTmpPtr1),y
|
adc (ZPCtxPtr),y
|
||||||
sta (ZPTmpPtr1),y
|
sta (ZPCtxPtr),y
|
||||||
iny
|
iny
|
||||||
tya
|
tya
|
||||||
and #3
|
and #3
|
||||||
|
@ -381,13 +386,13 @@ MD5UpdateABCD0 ldy #0
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* MD5Transform
|
* MD5Transform
|
||||||
* In:
|
* In:
|
||||||
* ZPTmpPtr1 = MD5 Context
|
* ZPCtxPtr = MD5 Context
|
||||||
* 512 Bits Padded chunk in MD5.BUFFER64
|
* 512 Bits Padded chunk in MD5.BUFFER64
|
||||||
* Out:
|
* Out:
|
||||||
* Updated MD5.ABCD
|
* Updated MD5.ABCD
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
|
MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
|
||||||
.1 lda (ZPTmpPtr1),y
|
.1 lda (ZPCtxPtr),y
|
||||||
sta MD5.ABCD,y
|
sta MD5.ABCD,y
|
||||||
dey
|
dey
|
||||||
bpl .1
|
bpl .1
|
||||||
|
@ -466,18 +471,6 @@ MD5.NEXTi >MOV32 MD5.D,MD5.DTemp
|
||||||
jmp MD5.0015
|
jmp MD5.0015
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.END
|
CS.END
|
||||||
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.DTemp .BS 4
|
|
||||||
MD5.F .BS 4
|
|
||||||
MD5.F1 .BS 4
|
|
||||||
MD5.F2 .BS 4
|
|
||||||
MD5.i .BS 1
|
|
||||||
MD5.BUFFER64 .BS 64
|
|
||||||
*--------------------------------------
|
|
||||||
MD5.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210
|
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
|
MD5.s .DA #7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22,#7,#12,#17,#22
|
||||||
|
@ -509,6 +502,18 @@ MD5.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MD5.DIGITS .AS "0123456789ABCDEF"
|
MD5.DIGITS .AS "0123456789ABCDEF"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
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.DTemp .BS 4
|
||||||
|
MD5.F .BS 4
|
||||||
|
MD5.F1 .BS 4
|
||||||
|
MD5.F2 .BS 4
|
||||||
|
MD5.i .BS 1
|
||||||
|
MD5.BUFFER64 .BS 64
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/LIB/LIBCRYPT.S
|
SAVE /A2OSX.SRC/LIB/LIBCRYPT.S
|
||||||
ASM
|
ASM
|
||||||
|
|
|
@ -9,13 +9,13 @@ AUTO 4,1
|
||||||
* X = hMem to Expanded String (C-String)
|
* X = hMem to Expanded String (C-String)
|
||||||
* Y,A = PTR to Expanded String
|
* Y,A = PTR to Expanded String
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
||||||
|
|
||||||
.1 >STYA ZPPtr2
|
.1 >STYA ZPPtr2
|
||||||
stz ENV.BufLen init Expanded String len=0
|
stz ENV.BufLen init Expanded String len=0
|
||||||
stz ENV.bFound No var found yet
|
stz ENV.bFound No var found yet
|
||||||
|
|
||||||
stz ENV.bNoExp Reset no expand flag
|
stz ENV.bNoExp Reset no expand flag
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
|
@ -32,7 +32,7 @@ K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
||||||
|
|
||||||
lda ENV.bNoExp
|
lda ENV.bNoExp
|
||||||
eor #$ff
|
eor #$ff
|
||||||
sta ENV.bNoExp toggle flag
|
sta ENV.bNoExp toggle flag
|
||||||
bra .11
|
bra .11
|
||||||
|
|
||||||
.21 bit ENV.bNoExp
|
.21 bit ENV.bNoExp
|
||||||
|
@ -44,20 +44,20 @@ K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
||||||
stx ENV.BufLen
|
stx ENV.BufLen
|
||||||
bra .11
|
bra .11
|
||||||
|
|
||||||
.23 ldx ENV.bInVar already in a var?
|
.23 ldx ENV.bInVar already in a var?
|
||||||
bne .3 yes...
|
bne .3 yes...
|
||||||
|
|
||||||
cmp #'$' no, found one ?
|
cmp #'$' no, found one ?
|
||||||
bne .22 no, store...
|
bne .22 no, store...
|
||||||
|
|
||||||
sta ENV.bFound Toggle flag
|
sta ENV.bFound Toggle flag
|
||||||
sta ENV.bInVar
|
sta ENV.bInVar
|
||||||
|
|
||||||
bra .11 skip this char
|
bra .11 skip this char
|
||||||
|
|
||||||
.3 cmp #'{' we are in var, "{" after "$"?
|
.3 cmp #'{' we are in var, "{" after "$"?
|
||||||
bne .31
|
bne .31
|
||||||
ldx ENV.VarLen No char in var yet ?
|
ldx ENV.VarLen No char in var yet ?
|
||||||
beq .11 normal, "${" syntax is ok,skip
|
beq .11 normal, "${" syntax is ok,skip
|
||||||
|
|
||||||
bne .5 not allowed char in varname, end of var
|
bne .5 not allowed char in varname, end of var
|
||||||
|
@ -65,7 +65,7 @@ K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
||||||
.31 cmp #'}' end of var?
|
.31 cmp #'}' end of var?
|
||||||
beq .50
|
beq .50
|
||||||
|
|
||||||
jsr ENV.IsVarChar
|
jsr MEM.IsIDValid _,.,a-z,A-Z,0-9 ?
|
||||||
bcc .32 yes, add to varname
|
bcc .32 yes, add to varname
|
||||||
|
|
||||||
ldx ENV.VarLen
|
ldx ENV.VarLen
|
||||||
|
@ -95,13 +95,13 @@ K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
||||||
ply restore index in string...
|
ply restore index in string...
|
||||||
.52 jmp .10 reset start flag and continue
|
.52 jmp .10 reset start flag and continue
|
||||||
|
|
||||||
.8 ldx ENV.VarLen end of STR,are we in a var?
|
.8 ldx ENV.VarLen end of STR,are we in a var?
|
||||||
beq .80 no...exit...
|
beq .80 no...exit...
|
||||||
|
|
||||||
stz ENV.VarName,x
|
stz ENV.VarName,x
|
||||||
jsr ENV.GetValue yes, expand and add to STR
|
jsr ENV.GetValue yes, expand and add to STR
|
||||||
|
|
||||||
.80 lda ENV.hStr working from our temp string ?
|
.80 lda ENV.hStr working from our temp string ?
|
||||||
beq .81 no...
|
beq .81 no...
|
||||||
|
|
||||||
jsr K.FreeMem.A yes, discard....
|
jsr K.FreeMem.A yes, discard....
|
||||||
|
@ -122,27 +122,6 @@ K.ExpandStr.YA stz ENV.hStr Reset Intermediate string...
|
||||||
|
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.IsVarChar cmp #'_'
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
cmp #'0'
|
|
||||||
bcc .9
|
|
||||||
cmp #'9'+1
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
cmp #'A'
|
|
||||||
bcc .9
|
|
||||||
cmp #'Z'+1
|
|
||||||
|
|
||||||
* bcc .8
|
|
||||||
rts
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
ENV.GetValue jsr ENV.ExpandSysVar
|
ENV.GetValue jsr ENV.ExpandSysVar
|
||||||
bcc .9
|
bcc .9
|
||||||
|
|
||||||
|
@ -327,11 +306,11 @@ K.GetEnv.YA >STYA ZPPtr1
|
||||||
*\--------------------------------------
|
*\--------------------------------------
|
||||||
K.UnsetEnv.YA >STYA ZPPtr1 Store VAR Name
|
K.UnsetEnv.YA >STYA ZPPtr1 Store VAR Name
|
||||||
K.UnsetEnv.I jsr ENV.FindVarP1
|
K.UnsetEnv.I jsr ENV.FindVarP1
|
||||||
bcs .8 not found, quit
|
bcs K.UnsetEnv.I.8 not found, quit
|
||||||
|
|
||||||
jsr ENV.DelVarP3 Ptr3 -> ENVNAME
|
jsr ENV.DelVarP3 Ptr3 -> ENVNAME
|
||||||
|
|
||||||
.8 clc
|
K.UnsetEnv.I.8 clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PRIVATE
|
* PRIVATE
|
||||||
|
@ -350,21 +329,17 @@ ENV.ExpandSysVar
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
lda ENV.VarName
|
lda ENV.VarName
|
||||||
cmp #'0'-1 $0...$9 ??
|
jsr MEM.IsDigit $0...$9 ??
|
||||||
bcc .1
|
|
||||||
cmp #'9'+1
|
|
||||||
bcs .1
|
bcs .1
|
||||||
|
|
||||||
and #$0F
|
and #$0F
|
||||||
|
|
||||||
jsr K.GetArg.A
|
jsr K.GetArg.A
|
||||||
bcs .8 Arg# is undefined, do not append anything
|
bcs K.UnsetEnv.I.8 Arg# is undefined, do not append anything
|
||||||
|
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
jmp ENV.AddP3ToBuf
|
jmp ENV.AddP3ToBuf
|
||||||
|
|
||||||
.8 clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.1 ldx #ENV.SysVarsJmp-ENV.SysVars-1
|
.1 ldx #ENV.SysVarsJmp-ENV.SysVars-1
|
||||||
|
|
||||||
.2 cmp ENV.SysVars,x
|
.2 cmp ENV.SysVars,x
|
||||||
|
|
|
@ -561,34 +561,36 @@ K.SListFree.A
|
||||||
MEM.GetKeyCharY sta CLRREADAUX
|
MEM.GetKeyCharY sta CLRREADAUX
|
||||||
lda (ZPSListKeyPtr),y
|
lda (ZPSListKeyPtr),y
|
||||||
sta SETREADAUX
|
sta SETREADAUX
|
||||||
beq .9
|
beq MEM.IsDigit.9
|
||||||
|
|
||||||
cmp #'.'
|
MEM.IsIDValid cmp #'.'
|
||||||
beq .8
|
beq MEM.IsDigit.8
|
||||||
|
|
||||||
cmp #'_'
|
cmp #'_'
|
||||||
beq .8
|
beq MEM.IsDigit.8
|
||||||
|
|
||||||
cmp #'0'
|
MEM.IsDigitOrL cmp #'z'+1
|
||||||
bcc .9
|
bcs MEM.IsDigit.RTS
|
||||||
cmp #'9'+1
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
cmp #'A'
|
|
||||||
bcc .9
|
|
||||||
cmp #'Z'+1
|
|
||||||
bcc .8
|
|
||||||
|
|
||||||
cmp #'a'
|
cmp #'a'
|
||||||
bcc .9
|
bcs MEM.IsDigit.8
|
||||||
cmp #'z'+1
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.8 clc
|
MEM.IsDigitOrUC cmp #'Z'+1
|
||||||
|
bcs MEM.IsDigit.RTS
|
||||||
|
cmp #'A'
|
||||||
|
bcs MEM.IsDigit.8
|
||||||
|
|
||||||
|
MEM.IsDigit cmp #'9'+1
|
||||||
|
bcs MEM.IsDigit.RTS
|
||||||
|
cmp #'0'
|
||||||
|
bcs MEM.IsDigit.8
|
||||||
|
|
||||||
|
MEM.IsDigit.9 sec
|
||||||
|
|
||||||
|
MEM.IsDigit.RTS rts
|
||||||
|
|
||||||
|
MEM.IsDigit.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MEM.SetKeyCharY sta CLRWRITEAUX
|
MEM.SetKeyCharY sta CLRWRITEAUX
|
||||||
sta (ZPSListKeyPtr),y
|
sta (ZPSListKeyPtr),y
|
||||||
|
|
|
@ -666,7 +666,7 @@ K.SScanF jsr PullP1P2P3
|
||||||
|
|
||||||
* stz ASCBUF
|
* stz ASCBUF
|
||||||
.20 lda (ZPPtr1)
|
.20 lda (ZPPtr1)
|
||||||
jsr STDIO.IsDigit
|
jsr MEM.IsDigit
|
||||||
bcs .21
|
bcs .21
|
||||||
phx
|
phx
|
||||||
* inc ASCBUF
|
* inc ASCBUF
|
||||||
|
@ -802,7 +802,7 @@ K.PrintF.YA >STYA ZPPtr1
|
||||||
sta PADCHAR no, this is the first 0, so make it PADCHAR
|
sta PADCHAR no, this is the first 0, so make it PADCHAR
|
||||||
bra .2
|
bra .2
|
||||||
|
|
||||||
.4 jsr STDIO.IsDigit
|
.4 jsr MEM.IsDigit
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
.5 and #$0F we have a digit
|
.5 and #$0F we have a digit
|
||||||
|
@ -1090,15 +1090,6 @@ STDIO.IOERR lda #MLI.E.IO
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
STDIO.IsDigit cmp #'0'
|
|
||||||
bcc .1
|
|
||||||
cmp #'9'+1
|
|
||||||
rts
|
|
||||||
.1 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
STDIO.AT10
|
|
||||||
*--------------------------------------
|
|
||||||
PADLEN .BS 1
|
PADLEN .BS 1
|
||||||
PADCHAR .BS 1
|
PADCHAR .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
|
|
@ -129,7 +129,7 @@ STDLIB.Dec2Hex jsr STDLIB.32.Clear
|
||||||
lda (ZPPtr2),y
|
lda (ZPPtr2),y
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
jsr STDIO.IsDigit
|
jsr MEM.IsDigit
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
phy Save Y, pointing to next char
|
phy Save Y, pointing to next char
|
||||||
|
|
Loading…
Reference in New Issue
Block a user