Kernel 0.94+

This commit is contained in:
Rémy GIBERT 2021-03-26 18:30:56 +01:00
parent f862d6303b
commit 3c125ff09f
13 changed files with 1106 additions and 1014 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -14,34 +14,35 @@ NEW
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPPtrFD .BS 2
ZPPtrDevName .BS 2
Index .BS 1
hDevID .BS 1
hCatBuf .BS 1
ArgIndex .BS 1
hTrackBuf .BS 1
DSSS0000 .BS 1
CurTrack .BS 1
CurQTrack .BS 1
Counter .BS 1
TCounter .BS 1
CurHead .BS 1
HCounter .BS 1
BlkCnt .BS 2
TrkCnt .BS 1
Stepping .BS 1
VolNum .BS 1
AltBB .BS 1
HeadCnt .BS 1
.BS 1
CatSize .BS 1
CatBlkCnt .BS 1
bLL .BS 1
bCustomBlkSize .BS 1
bHighDensity .BS 1
bExtraTrack .BS 1
bVerify .BS 1
TimeOut .BS 1
ZS.END
.ED
@ -56,7 +57,7 @@ CS.START cld
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DA #32 Stack Size
.DA #64 Stack Size
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
@ -92,8 +93,8 @@ CS.RUN ldy #S.PS.ARGC
lda (pPS),y
beq .99
.1 inc Index
lda Index
.1 inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcc .11
@ -122,8 +123,8 @@ CS.RUN ldy #S.PS.ARGC
cpy #bCustomBlkSize
bne .1
inc Index
lda Index
inc ArgIndex
lda ArgIndex
>SYSCALL ArgV
bcs .99
@ -293,7 +294,7 @@ CS.RUN.LL >LDA.G DIB+S.DIB.T
sta BlkCnt,x
iny
inx
cpx #6
cpx #7
bne .12
.1 >PUSHW L.MSG.LL
@ -334,28 +335,39 @@ CS.RUN.LL.DISKII
stz CurQTrack
lda TrkCnt
sta Counter
sta TCounter
.1 jsr CS.RUN.CheckCtrlC
.1 lda HeadCnt
sta HCounter
stz CurHead
.2 jsr CS.RUN.CheckCtrlC
bcs .9
>PUSHW L.MSG.LLDISK2
>PUSHB CurHead
>PUSHB CurTrack
inc
>PUSHA
>PUSHB TrkCnt
>PUSHBI 3
>PUSHBI 4
>SYSCALL PrintF
bcs .9
>PUSHB DSSS0000
>PUSHB VolNum
>PUSHB CurHead
>PUSHB CurTrack
>PUSHWI 0 Empty track
>LIBCALL hLIBBLKDEV,LIBBLKDEV.D2TrkWrite16s
bcs .9
dec Counter
inc CurHead
dec HCounter
bne .2
dec TCounter
beq .8
inc CurTrack
@ -366,13 +378,13 @@ CS.RUN.LL.DISKII
tax
jsr CS.RUN.SeekToX
bra .1
jmp .1
.9 pha
jsr CS.RUN.MotorOff
pla
sec
rts
.99 rts
.8 ldx #0
jsr CS.RUN.SeekToX
@ -404,7 +416,7 @@ CS.RUN.LL.DISKII
jsr CS.RUN.Wait
clc
.99 rts
rts
*--------------------------------------
CS.RUN.LL.DISKII.V
lda hTrackBuf
@ -430,7 +442,12 @@ CS.RUN.LL.DISKII.V
stz CurTrack
lda TrkCnt
sta Counter
sta TCounter
.12 lda HeadCnt
sta HCounter
stz CurHead
.1 ldx #0
@ -446,12 +463,21 @@ CS.RUN.LL.DISKII.V
cpx #8
bne .2
inc CurTrack
dec Counter
inc CurHead
dec HCounter
bne .1
inc CurTrack
dec TCounter
bne .12
lda TrkCnt
sta Counter
sta TCounter
.13 lda HeadCnt
sta HCounter
stz CurHead
.3 ldx #7
@ -468,8 +494,12 @@ CS.RUN.LL.DISKII.V
dex
bpl .4
dec Counter
inc CurHead
dec HCounter
bne .3
dec TCounter
bne .13
>LDYA L.MSG.OK
>SYSCALL PutS
@ -479,12 +509,14 @@ CS.RUN.LL.DISKII.V
CS.RUN.LL.DISKII.VBLK
phx
>PUSHW L.MSG.VERIFY
>PUSHB CurHead
>PUSHB CurTrack
pla
pha
>PUSHA
>PUSHW.G IOCTL+S.IOCTL.BLKNUM
>PUSHBI 4
>PUSHBI 5
>SYSCALL PrintF
>PUSHB hDevID
@ -667,6 +699,7 @@ CS.RUN.CheckOpt ldy #1
.2 cmp OptionList,x
beq .3
dex
bpl .2
@ -735,8 +768,8 @@ MSG.CRLF .AZ "\r\n"
MSG.NOSIZE .AZ "Unable to get media size."
MSG.INIT .AZ "Formatting %s, Volname:%s\r\n"
MSG.LL .AZ "Low Level Format %D Blks\r\n"
MSG.LLDISK2 .AZ "\rWriting Track %02d (%02d/%02d)..."
MSG.VERIFY .AZ "\rVerifying Track %02d/%02d, Block %05D..."
MSG.LLDISK2 .AZ "\rWriting Head %d/Track %02d (%02d/%02d)..."
MSG.VERIFY .AZ "\rVerifying Head %d/Track %02d/Block %d (%05D)..."
MSG.WRITECAT .AZ "Writing Catalog..."
FMT.BLANK .AZ "BLANK%H%H"
*--------------------------------------
@ -750,7 +783,7 @@ Disk2.Default .DA 280 BlkCnt
.DA #4 Stepping
.DA #1 VolNum
.DA #0 AltBB
.DA #0 HeadCnt
.DA #1 HeadCnt
.BS 1
*--------------------------------------
Disk2.X .DA 320 BlkCnt
@ -758,7 +791,7 @@ Disk2.X .DA 320 BlkCnt
.DA #4 Stepping
.DA #2 VolNum
.DA #0 AltBB
.DA #0 HeadCnt
.DA #1 HeadCnt
.BS 1
*--------------------------------------
Disk2.H .DA 384 BlkCnt
@ -766,7 +799,7 @@ Disk2.H .DA 384 BlkCnt
.DA #3 Stepping
.DA #129 VolNum
.DA #$80 AltBB
.DA #0 HeadCnt
.DA #1 HeadCnt
.BS 1
*--------------------------------------
Disk2.HX .DA 432 BlkCnt
@ -774,39 +807,39 @@ Disk2.HX .DA 432 BlkCnt
.DA #3 Stepping
.DA #130 VolNum
.DA #$80 AltBB
.DA #0 HeadCnt
.DA #1 HeadCnt
.BS 1
*-------------------------------------- RANA Elite 2
Disk2.DefaultD .DA 640 BlkCnt
.DA #40 TrkCnt
.DA #4 Stepping
.DA #193 VolNum
.DA #192 VolNum
.DA #$80 AltBB
.DA #1 HeadCnt
.DA #2 HeadCnt
.BS 1
*--------------------------------------
Disk2.XD .DA 640 BlkCnt
.DA #40 TrkCnt
.DA #4 Stepping
.DA #193 VolNum
.DA #192 VolNum
.DA #$80 AltBB
.DA #1 HeadCnt
.DA #2 HeadCnt
.BS 1
*-------------------------------------- RANA Elite 3
Disk2.HD .DA 1280 BlkCnt
.DA #80 TrkCnt
.DA #2 Stepping
.DA #194 VolNum
.DA #193 VolNum
.DA #$80 AltBB
.DA #1 HeadCnt
.DA #2 HeadCnt
.BS 1
*--------------------------------------
Disk2.HXD .DA 1280 BlkCnt
.DA #80 TrkCnt
.DA #2 Stepping
.DA #194 VolNum
.DA #193 VolNum
.DA #$80 AltBB
.DA #1 HeadCnt
.DA #2 HeadCnt
.BS 1
*--------------------------------------
.DUMMY

View File

@ -44,10 +44,9 @@ L.OSD .DA OSD
*--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT
>SYSCALL PutS
lda MACHID
and #MACHID.T
cmp #MACHID.T.IIc
bne .1
lda A2osX.HWType
cmp #A2osX.HWType.IIc
bcc .1
* stz DCB+S.DCB.GFX.S //c : 80c Mode
>LDYA L.MSG.DETECT.IIC
@ -270,7 +269,7 @@ ClrScr lda #$55
*--------------------------------------
CS.END
MSG.DETECT .AZ "Apple IIe/IIc DHGR Driver."
MSG.DETECT.IIC .AZ "Apple //c : 'LCM Feline/80c' Mode."
MSG.DETECT.IIC .AZ "Apple //c,IIgs : 'LCM Feline/80c' Mode."
MSG.DETECT.EVE .AZ "Apple //e : 'LCM Eve' Board Detected."
MSG.DETECT.80C .AZ "No Specific H/W Found, 'Video7 80c' Mode."
*--------------------------------------

View File

@ -1,10 +1,10 @@
NEW
AUTO 3,1
*--------------------------------------
IO.D2.SeekTimeR .EQ 35 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 45 LIBBLKDEV Track Formatter
IO.D2.SeekTimeR .EQ 55 LIBBLKDEV Recalibration
IO.D2.SeekTimeF .EQ 55 LIBBLKDEV Track Formatter
IO.D2.SeekTimeB .EQ 45 LIBBLKDEV Boot Block
IO.D2.SeekTimeP .EQ 15 ProDOS.FX initial
IO.D2.SeekTimeP .EQ 28 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 5 ProDOS.FX increment -> until > 128
*--------------------------------------
IO.D2.Ph0Off .EQ $C080

View File

@ -2,23 +2,23 @@ NEW
AUTO 3,1
.LIST OFF
*--------------------------------------
LIBCRYPT.MD5 .EQ 4
LIBCRYPT.MD5Init .EQ 6
LIBCRYPT.MD5Update .EQ 8
LIBCRYPT.MD5Finalize .EQ 10
LIBCRYPT.MD4 .EQ 4
LIBCRYPT.MD4Init .EQ 6
LIBCRYPT.MD4Update .EQ 8
LIBCRYPT.MD4Finalize .EQ 10
*--------------------------------------
* S.MD5 STRUCT
* S.MD4 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.MD4.ABCD0 .EQ 0
S.MD4.A0 .EQ 0
S.MD4.B0 .EQ 4
S.MD4.C0 .EQ 8
S.MD4.D0 .EQ 12
S.MD4.BITCOUNT .EQ 16
S.MD4.EXTRABIT .EQ 24
S.MD4.FINALIZED .EQ 25
S.MD5 .EQ 26
S.MD4 .EQ 26
*--------------------------------------
MAN
SAVE inc/libcrypt.i

View File

@ -290,7 +290,7 @@ BB.ReadBlock lda blok figure out track & sector.
.9 ldy IO.D2.DrvOff,x
rts return error status in carry.
*--------------------------------------
BB.Wait phx (3)
BB.Wait100usecA phx (3)
.1 ldx #20 (2)
@ -314,7 +314,8 @@ BB.Trk2Qtrk asl x2
lsr x3
.1 adc #$ff SELF MODIFIED
BB.Trk2Qtrk.RTS rts
BB.Trk2Qtrk.RTS rts
*--------------------------------------
BB.Seek lda BB.HdrTrk get track we're on
jsr BB.Trk2Qtrk
@ -328,63 +329,78 @@ BB.Seek lda BB.HdrTrk get track we're on
cmp BB.TargetQTrack
beq BB.Read
tay
bit #1
bne .1
and #6
ora BB.Slotn0
tax
tya
inc
bra .3
.1 pha
bit IO.D2.Ph0Off,x
ldx IO.D2.Ph0Off,y
tay
lda IO.D2.Ph0On,y we are on 0/4 or 2/4 track
bcs .2
* lda #1
* bra .9 no wait, next operation will be phy/plx/Ph0On,y
bra .90
* Current < Target, must move in
inc
.1
* cmp BB.TargetQTrack we are on 1/4 or 3/4
bcs .2 if CS, C > T, must move out
inc CC: C < T, ON next PH
.HS B0 BCS
* Current > Target, must move out
.2 dec
.2 dec CS: C > T, ON prev PH
sta BB.CurrentQTrack
and #6
ora BB.Slotn0
tax
pla
bcs .3
bra .7 Ph ON to go to 0/4 or 2/4, then wait
*--------------------------------------
.3 bcs .4 if CS, C > T, must move out
* Current < Target, must move in
inc CC: C < T, ON next PH
.HS B0 BCS
.4 dec CS: C > T, ON prev PH
sta BB.CurrentQTrack
bit #1
bne .5 we must go to 1/4 or 3/4
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : Off Prev Ph
bra .8 go wait....
inc
inc
.5 phy we must go on 1/4 or 3/4
plx Y already ON, -> X for Ph0Off,x
.3 and #6
bcs .6 if CS, C > T, must move out
inc CC: C < T, ON next PH
* .HS B0 BCS
*.6 dec CS: C > T, ON prev PH
.6
.7 and #6
ora BB.Slotn0
tay
lda IO.D2.Ph0On,y now X and Y on
lda IO.D2.Ph0On,x
lda IO.D2.Ph0On,y
lda #IO.D2.SeekTimeB
jsr BB.Wait
.8 lda #IO.D2.SeekTimeB
lda BB.CurrentQTrack
.9 jsr BB.Wait100usecA ...wait...
.90 lda BB.CurrentQTrack
cmp BB.TargetQTrack
bne .1
bne .3
lda #0
jsr BB.Wait
jsr BB.Wait100usecA
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y

View File

@ -2,16 +2,16 @@ NEW
AUTO 3,1
*/--------------------------------------
*\--------------------------------------
D2MotorControl >PULLB MotorOn
>PULLB DrvSlt
jsr CheckDiskII
D2.MotorControl >PULLB D2.MotorOn
>PULLB D2.DrvSlt
jsr D2.CheckDiskII
bcs .9
lda MotorOn
lda D2.MotorOn
asl
lda #IO.D2.DrvOff
adc Slotn0
adc D2.Slotn0
tax
lda $C000,x
@ -20,13 +20,13 @@ D2MotorControl >PULLB MotorOn
.9 rts
*/--------------------------------------
*\--------------------------------------
D2Recalibrate >PULLB DrvSlt
jsr CheckDiskII
D2.Recalibrate >PULLB D2.DrvSlt
jsr D2.CheckDiskII
bcs .9
lda #168
ldy Slotn0
ldy D2.Slotn0
lda IO.D2.Ph0On,y
lda #IO.D2.SeekTimeR
@ -38,7 +38,7 @@ D2Recalibrate >PULLB DrvSlt
pha
and #6
ora Slotn0
ora D2.Slotn0
phy
plx
tay
@ -63,102 +63,94 @@ D2Recalibrate >PULLB DrvSlt
.9 rts
*/--------------------------------------
*\--------------------------------------
D2MoveHead >PULLB MoveTo
>PULLB MoveFrom
>PULLB DrvSlt
jsr CheckDiskII
D2.MoveHead >PULLB D2.TargetQTrack
>PULLB D2.CurrentQTrack
>PULLB D2.DrvSlt
jsr D2.CheckDiskII
bcs .9
php
sei
jsr D2MoveHead.SEI
jsr D2.MoveHead.SEI
plp
clc
.9 rts
D2MoveHead.SEI lda Slotn0
ora #IO.D2.RData
sta .4+1
sta .5+1
sta .6+1
sta .7+1
D2.MoveHead.SEI lda D2.CurrentQTrack
lda MoveFrom
tay
bit #1
bne .1
and #6
ora Slotn0
tax
jsr .10 we are on 0/4 or 2/4 track
tya
inc
bra .3
* lda #1
* bra .9 no wait, next operation will be phy/plx/Ph0On,y
.1 pha
jsr .8
pla
pha
bcs .2
* Current < Target, must move in
inc
bra .90
.1 cmp D2.TargetQTrack we are on 1/4 or 3/4
bcs .2 if CS, C > T, must move out
inc CC: C < T, ON next PH
.HS B0 BCS
* Current > Target, must move out
.2 dec CS: C > T, ON prev PH
.2 dec
sta D2.CurrentQTrack
sta MoveFrom
bra .7 Ph ON to go to 0/4 or 2/4, then wait
*--------------------------------------
.3 bcs .4 if CS, C > T, must move out
and #6
ora Slotn0
tax
inc CC: C < T, ON next PH
pla
.HS B0 BCS
bcs .3
.4 dec CS: C > T, ON prev PH
* Current < Target, must move in
sta D2.CurrentQTrack
inc
inc
bit #1
bne .5 we must go to 1/4 or 3/4
.3 and #6
ora Slotn0
bcs .30
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : Off Prev Ph
bra .8 go wait....
phx
tax
pla
.5 phy we must go on 1/4 or 3/4
plx Y already ON, -> X for Ph0Off,x
bcs .6 if CS, C > T, must move out
.30
tay
inc CC: C < T, ON next PH
lda IO.D2.Ph0On,x
.4 lda IO.D2.RData SELF MODIFIED
* .HS B0 BCS
lda IO.D2.Ph0On,y
.5 lda IO.D2.RData SELF MODIFIED
*.6 dec CS: C > T, ON prev PH
lda #IO.D2.SeekTimeF
jsr D2.Wait100usecA
.6
lda MoveFrom
cmp MoveTo
bne .1
.7 jsr .10 now X and Y on
.8 lda #IO.D2.SeekTimeF
.9 jsr D2.Wait100usecA ...wait...
.90 lda D2.CurrentQTrack
cmp D2.TargetQTrack
bne .3
jsr D2.Wait25600usec
.8 lda IO.D2.Ph0Off,x
.6 lda IO.D2.RData SELF MODIFIED
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
.7 lda IO.D2.RData SELF MODIFIED
rts
.10 and #6
ora D2.Slotn0
tay
lda IO.D2.Ph0On,y
rts
*/--------------------------------------
* # D2TrkRead16s
@ -170,96 +162,71 @@ D2MoveHead.SEI lda Slotn0
* CC : success, A = VolNum
* CS : A = Error
*\--------------------------------------
D2TrkRead16s >PULLW ZPPtr1
>PULLB TrkNum
>PULLB DrvSlt
D2.TrkRead16s >PULLW ZPPtr1
>PULLB D2.TrkNum
>PULLB D2.DrvSlt
jsr CheckDiskII
jsr D2.CheckDiskII
bcs .9
lda VolNum
lda D2.VolNum
clc
.9
D2TrkRead16s.RTS
D2.TrkRead16s.RTS
rts
*/--------------------------------------
* # D2TrkWrite16s
* Write a track (16 sectors)
* PUSHB = DSSS0000
* PUSHB = VolNum
* PUSHB = HeadNum (0,1)
* PUSHB = TrackNum * 4 : 0->136+
* PUSHW = Ptr to 16*256 buffer
* ## RETURN VALUE
* CC : success
* CS : A = Error
*\--------------------------------------
D2TrkWrite16s >PULLW ZPPtr1
>PULLB TrkNum
>PULLB VolNum
>PULLB DrvSlt
D2.TrkWrite16s >PULLW ZPPtr1
>PULLB D2.TrkNum
>PULLB D2.HeadNum
>PULLB D2.VolNum
>PULLB D2.DrvSlt
jsr CheckDiskII
bcs D2TrkRead16s.RTS
jsr D2.CheckDiskII
bcs D2.TrkRead16s.RTS
>LDYAI TRACK16.LEN+256+1
>SYSCALL2 GetMem
bcs D2TrkRead16s.RTS
bcs D2.TrkRead16s.RTS
>STYA ZPPtr2
stx hTrkBuf
stx D2.hTrkBuf
* lda TrkNum
* jsr D2.Trk2Qtrk
* tay
* and #6
* ora Slotn0
* tax
* tya
* inc
* and #6
* ora Slotn0
* tay
* stx PhX
* sty PhY
* lda Slotn0
* ora #IO.D2.RData
* sta .10+1
* sta .11+1
* sta .12+1
* sta .13+1
* lda IO.D2.Ph0On,x
*.10 lda IO.D2.RData SELF MODIFIED
* lda IO.D2.Ph0On,y
*.11 lda IO.D2.RData SELF MODIFIED
*
stz SectNum
stz D2.SectNum
ldy #0 put 256 FF sync bytes for slooooow drives
jsr PutSyncBytePtr2
jsr D2.PutSyncBytePtr2
ldy #TRACK16.GAP1
jsr PutSyncBytePtr2
jsr D2.PutSyncBytePtr2
.1 jsr PutAddrHeadPtr2
.1 jsr D2.PutAddrHeadPtr2
jsr HeaderCheckSum
jsr D2.HeaderCheckSum
ldy #3
.2 lda Checksum,y
jsr PutByte44Ptr2
.2 lda D2.Checksum,y
jsr D2.PutByte44Ptr2
dey
bpl .2
jsr PutTailPtr2
jsr D2.PutTailPtr2
ldy #TRACK16.GAP2
jsr PutSyncBytePtr2
jsr D2.PutSyncBytePtr2
jsr PutDataHeadPtr2
jsr D2.PutDataHeadPtr2
lda ZPPtr1+1
bne .7
@ -280,36 +247,31 @@ D2TrkWrite16s >PULLW ZPPtr1
bra .8
.7 jsr PutData
.7 jsr D2.PutData
inc ZPPtr1+1
.8 jsr PutTailPtr2
.8 jsr D2.PutTailPtr2
ldy #TRACK16.GAP3
jsr PutSyncBytePtr2
jsr D2.PutSyncBytePtr2
inc SectNum
lda SectNum
inc D2.SectNum
lda D2.SectNum
cmp #16
bne .1
lda #0
sta (ZPPtr2)
* ldx PhX
* ldy PhY
* lda IO.D2.Ph0Off,x
*.12 lda IO.D2.RData SELF MODIFIED
* lda IO.D2.Ph0Off,y
*.13 lda IO.D2.RData SELF MODIFIED
bit D2.VolNum
bvc .80
* jsr D2.Wait25600usec
jsr D2.HeadSelect
jsr D2WriteTrackPtr2
.80 jsr D2.WriteTrackPtr2
php
pha
lda hTrkBuf
lda D2.hTrkBuf
>SYSCALL2 FreeMem
pla
plp
@ -317,7 +279,7 @@ D2TrkWrite16s >PULLW ZPPtr1
rts
*/--------------------------------------
*\--------------------------------------
D2TrkReadNIB
D2.TrkReadNIB
*/--------------------------------------
* # D2TrkWriteNIB
* Write a track (NIBBLE)
@ -329,19 +291,19 @@ D2TrkReadNIB
* CS : A = Error
* A=0, currently starting/seeking...
*\--------------------------------------
D2TrkWriteNIB >PULLW ZPPtr1
>PULLB DrvSlt
D2.TrkWriteNIB >PULLW ZPPtr1
>PULLB D2.DrvSlt
jsr CheckDiskII was it a DISK II ?
jsr D2.CheckDiskII was it a DISK II ?
bcs .9
.9 rts
*--------------------------------------
* A=DSSS0000
*--------------------------------------
CheckDiskII pha
D2.CheckDiskII pha
and #$70 only 0SSS
sta Slotn0
sta D2.Slotn0
lsr
lsr
lsr
@ -365,11 +327,11 @@ CheckDiskII pha
asl
lda #0
adc #IO.D2.DrvSel1
adc Slotn0
adc D2.Slotn0
tax
lda $C000,x
ldx Slotn0
ldx D2.Slotn0
lda IO.D2.ReadMode,x
lda IO.D2.RData,x
@ -384,7 +346,7 @@ CheckDiskII pha
*--------------------------------------
* A=DSSS0000
*--------------------------------------
DrvSpinCheck ldy #0
D2.DrvSpinCheck ldy #0
lda IO.D2.RData,x
@ -403,16 +365,21 @@ DrvSpinCheck ldy #0
.8 sec
rts
*--------------------------------------
D2.Trk2Qtrk asl x2
sta .1+1
D2.HeadSelect lda D2.HeadNum A = 0/1
bit VolNum
bpl .1 x4
bvs .1 > $C0 ? (VOL=254)
asl A = 0/2
lsr x3
ora D2.Slotn0
tax x=n0/n2
lda IO.D2.Ph0On,x
lda IO.D2.Ph0On+4,x
lda #1
jsr D2.Wait100usecA
.1 adc #$ff SELF MODIFIED
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off+4,x
rts
*--------------------------------------
D2.Wait25600usec
@ -432,49 +399,53 @@ D2.Wait100usecA phx
rts (6)
*--------------------------------------
PutSyncBytePtr2 lda #$7f
D2.PutSyncBytePtr2
lda #$7f
.1 jsr PutBytePtr2
.1 jsr D2.PutBytePtr2
dey
bne .1
rts
*--------------------------------------
PutAddrHeadPtr2 ldy #2
D2.PutAddrHeadPtr2
ldy #2
.1 lda ADDR.Head,y
jsr PutBytePtr2
jsr D2.PutBytePtr2
dey
bpl .1
rts
*--------------------------------------
PutDataHeadPtr2 ldy #2
D2.PutDataHeadPtr2
ldy #2
.1 lda DATA.Head,y
jsr PutBytePtr2
jsr D2.PutBytePtr2
dey
bpl .1
rts
*--------------------------------------
PutTailPtr2 ldy #2
D2.PutTailPtr2 ldy #2
.1 lda TAIL,y
jsr PutBytePtr2
jsr D2.PutBytePtr2
dey
bpl .1
rts
*--------------------------------------
HeaderCheckSum lda VolNum
eor TrkNum
eor SectNum
D2.HeaderCheckSum
lda D2.VolNum
eor D2.TrkNum
eor D2.SectNum
sta Checksum
sta D2.Checksum
rts
*--------------------------------------
PutData stz Checksum
D2.PutData stz D2.Checksum
lda ZPPtr1
ldy ZPPtr1+1
@ -520,12 +491,12 @@ PutData stz Checksum
tax
eor Checksum
sta Checksum
eor D2.Checksum
sta D2.Checksum
lda FC2Nib,x
jsr PutBytePtr2
jsr D2.PutBytePtr2
dey
bpl .3
@ -536,23 +507,24 @@ PutData stz Checksum
tax
eor Checksum
sta Checksum
eor D2.Checksum
sta D2.Checksum
lda FC2Nib,x
jsr PutBytePtr2
jsr D2.PutBytePtr2
iny
bne .4
ldx Checksum
ldx D2.Checksum
lda FC2Nib,x
jsr PutBytePtr2
jsr D2.PutBytePtr2
rts
*--------------------------------------
PutByte44Ptr2 pha
D2.PutByte44Ptr2
pha
ror
jsr .1
@ -560,28 +532,28 @@ PutByte44Ptr2 pha
.1 ora #$AA
*--------------------------------------
PutBytePtr2 sta (ZPPtr2)
D2.PutBytePtr2 sta (ZPPtr2)
inc ZPPtr2
bne .8
inc ZPPtr2+1
.8 rts
*--------------------------------------
D2WriteTrackPtr2
lda hTrkBuf
D2.WriteTrackPtr2
lda D2.hTrkBuf
>SYSCALL2 GetMemPtr
>STYA ZPPtr1
php
sei
ldy #TrkWriter.Size
ldy #D2.TrkWriter.Size
.1 lda TrkWriter-1,y
.1 lda D2.TrkWriter-1,y
sta $1ff,y
dey
bne .1
ldx Slotn0
ldx D2.Slotn0
jsr $200

View File

@ -59,14 +59,14 @@ CS.START cld
.DA LIB.UNLOAD
.DA GetProDOSCatSize
.DA BuildProDOSCat
.DA D2MotorControl
.DA D2Recalibrate
.DA D2MoveHead
.DA D2TrkRead16s
.DA D2TrkWrite16s
.DA D2TrkReadNIB
.DA D2TrkWriteNIB
L.TrkWriter .DA TrkWriter
.DA D2.MotorControl
.DA D2.Recalibrate
.DA D2.MoveHead
.DA D2.TrkRead16s
.DA D2.TrkWrite16s
.DA D2.TrkReadNIB
.DA D2.TrkWriteNIB
L.D2.TrkWriter .DA D2.TrkWriter
L.ProDOS.Boot .DA ProDOS.Boot
L.ProDOSFX.Boot .DA ProDOSFX.Boot
.DA 0
@ -151,6 +151,7 @@ BuildProDOSCat >PULLW ZPPtr1 DstBuf
>LDYA L.ProDOS.Boot
bit VolDirHdr.Options
bpl .11
>LDYA L.ProDOSFX.Boot
.11 >STYA ZPPtr3
@ -340,9 +341,10 @@ CS.END
* X = Slot Cn
* ZPPtr1 = Ptr To NibbleBuf
*--------------------------------------
TrkWriter .PH $200
D2.TrkWriter .PH $200
TrkWriter.Start lda IO.D2.ReadProt,x
D2.TrkWriter.Start
lda IO.D2.ReadProt,x
lda IO.D2.ReadMode,x
bmi .9 Write protected
@ -414,7 +416,7 @@ TrkWriter.Start lda IO.D2.ReadProt,x
sec
rts
TrkWriter.Size .EQ *-TrkWriter.Start
D2.TrkWriter.Size .EQ *-D2.TrkWriter.Start
.EP
*--------------------------------------
ADDR.Head .HS 96AAD5
@ -616,22 +618,20 @@ VolDirHdr.CatSize .BS 1
DiskII.OFS .HS 010305FF
DiskII.SIG .HS 20000300
*--------------------------------------
DrvSlt .BS 1
Slotn0 .BS 1
hTrkBuf .BS 1
D2.hTrkBuf .BS 1
MoveFrom .BS 1
MoveTo .BS 1
D2.DrvSlt .BS 1
D2.Slotn0 .BS 1
D2.MotorOn .BS 1
D2.CurrentQTrack .BS 1
D2.TargetQTrack .BS 1
PhX .BS 1
PhY .BS 1
D2.Checksum .BS 1
D2.SectNum .BS 1
D2.TrkNum .BS 1
D2.VolNum .BS 1
Checksum .BS 1
SectNum .BS 1
TrkNum .BS 1
VolNum .BS 1
MotorOn .BS 1
D2.HeadNum .BS 1
Count .BS 2
*--------------------------------------

View File

@ -20,14 +20,14 @@ 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
MD4.ABCD
MD4.A .BS 4 Chunk Level,A,B,C,D
MD4.B .BS 4
MD4.C .BS 4
MD4.D .BS 4
MD5.F1 .BS 4
MD5.F2 .BS 4
MD4.F1 .BS 4
MD4.F2 .BS 4
ZS.END .ED
*--------------------------------------
@ -116,169 +116,198 @@ CS.START cld
*--------------------------------------
.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 MD4
.DA MD4Init
.DA MD4Update
.DA MD4Finalize
J.MD4.XXXX .DA MD4.0015
.DA MD4.1631
.DA MD4.3247
.DA MD4.4863
.DA 0
*--------------------------------------
LIB.LOAD
LIB.UNLOAD clc
rts
*/--------------------------------------
* ## MD5
* Return MD5 Hash for input String
* ## MD4
* Return MD4 Hash for input String
* # C
* `void md5 (const char* str, char* digest);`
* `void MD4 (const char* str, char* digest);`
* # ASM
* `>PUSHW digest`
* `>PUSHW str`
* ## RETURN VALUE
* CC
*\--------------------------------------
MD5 >PULLW ZPDataPtr
MD4 >PULLW ZPDataPtr
>PULLW ZPHashPtr
>LDYA ZPDataPtr
>SYSCALL2 strlen
>STYA ZPDataLen
.1 jsr MD5Init
.1 jsr MD4Init
bcs .9
pha save MD5 Context hMem
jsr MD5Update.I
jsr MD5Finalize.I
pha save MD4 Context hMem
jsr MD4Update.I
jsr MD4Finalize.I
pla
>SYSCALL2 FreeMem Free MD5 Context
>SYSCALL2 FreeMem Free MD4 Context
clc
.9 rts
*/--------------------------------------
* ## MD5Init
* Initialize a MD5 computation
* ## MD4Init
* Initialize a MD4 computation
* # C
* `hMD5 md5init ();`
* `hMD4 MD4init();`
* # ASM
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init`
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Init`
* ## RETURN VALUE
* A = hMem To S.MD5
* A = hMem To S.MD4
*\--------------------------------------
MD5Init >LDYAI S.MD5
MD4Init >LDYAI S.MD4
>SYSCALL2 getmem
bcs .9
>STYA ZPCtxPtr
ldy #0
.1 lda MD5.ABCDINIT,y
.1 lda MD4.ABCDINIT,y
sta (ZPCtxPtr),y
iny
cpy #S.MD5.BITCOUNT
cpy #S.MD4.BITCOUNT
bne .1
lda #0
.2 sta (ZPCtxPtr),y
iny
cpy #S.MD5 Includes S.MD5.FINALIZED Flag
cpy #S.MD4 Includes S.MD4.FINALIZED Flag
bne .2
txa
clc
.9 rts
*/--------------------------------------
* ## MD5Update
* Add Data to MD5 computation
* ## MD4Update
* Add Data to MD4 computation
* # C
* `void md5update (hMD5 md5, char* data, int len);`
* `void MD4update (hMD4 MD4, char* data, int len);`
* # ASM
* `>PUSHW len`
* `>PUSHW data`
* `>LDA.G md5`
* `>hLIBCRYPT,LIBCRYPT.MD5Update`
* `>LDA.G MD4`
* `>hLIBCRYPT,LIBCRYPT.MD4Update`
* ## RETURN VALUE
*\--------------------------------------
MD5Update >SYSCALL2 GetMemPtr get MD5 Context
MD4Update >SYSCALL2 GetMemPtr get MD4 Context
>STYA ZPCtxPtr
>PULLW ZPDataPtr get DATA
>PULLW ZPDataLen get LEN
MD5Update.I ldy #S.MD5.FINALIZED
MD4Update.I ldy #S.MD4.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
jsr MD4UpdateBitCount
ldy #0
.51 lda (ZPDataPtr),y Load Buffer with data
sta MD5.BUFFER64,y
sta MD4.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
sta MD4.BUFFER64,y
lda #0
.52 iny Pad with 0 to 64
cpy #64
beq .53
sta MD5.BUFFER64,y
sta MD4.BUFFER64,y
bra .52
.53 ldy #S.MD5.EXTRABIT Mark MD5 Context as Appended
.53 ldy #S.MD4.EXTRABIT Mark MD4 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
jsr MD4AppendBitCount
.58 jsr MD4Transform
jsr MD4UpdateABCD0
.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
* ## MD4Finalize
* # C
* `void md5finalize (hMD5 md5, char* digest);`
* `void MD4finalize (hMD4 MD4, char* digest);`
* # ASM
* `>PUSHW digest`
* `>LDA.G md5`
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize`
* `>LDA.G MD4`
* `>LIBCALL hLIBCRYPT,LIBCRYPT.MD4Finalize`
* ## RETURN VALUE
*\--------------------------------------
MD5Finalize pha
MD4Finalize pha
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr get MD5 Context
>STYA ZPCtxPtr get MD4 Context
>PULLW ZPHashPtr
jsr MD5Finalize.I
jsr MD4Finalize.I
pla
>SYSCALL2 FreeMem
rts
MD5Finalize.I ldy #S.MD5.FINALIZED
MD4Finalize.I ldy #S.MD4.FINALIZED
lda (ZPCtxPtr),y
bne .11
jsr MD5ExtraChunk
.11 ldy #S.MD5.ABCD0
jsr MD4ExtraChunk
.11 ldy #S.MD4.ABCD0
.1 lda (ZPCtxPtr),y
lsr
@ -286,22 +315,27 @@ MD5Finalize.I ldy #S.MD5.FINALIZED
lsr
lsr
tax
lda MD5.DIGITS,x
lda MD4.DIGITS,x
sta (ZPHashPtr)
inc ZPHashPtr
bne .2
inc ZPHashPtr+1
.2 lda (ZPCtxPtr),y
and #$0F
tax
lda MD5.DIGITS,x
lda MD4.DIGITS,x
sta (ZPHashPtr)
inc ZPHashPtr
bne .3
inc ZPHashPtr+1
.3 iny
cpy #S.MD5.ABCD0+16
cpy #S.MD4.ABCD0+16
bne .1
lda #0
sta (ZPHashPtr)
clc
@ -309,32 +343,32 @@ MD5Finalize.I ldy #S.MD5.FINALIZED
*--------------------------------------
* PRIVATE
*--------------------------------------
* MD5AppendBitCount
* MD4AppendBitCount
* In :
* ZPCtxPtr = MD5 Context
* ZPCtxPtr = MD4 Context
*--------------------------------------
MD5AppendBitCount
MD4AppendBitCount
ldx #56
ldy #S.MD5.BITCOUNT Append 8 Bytes of BITCOUNT
ldy #S.MD4.BITCOUNT Append 8 Bytes of BITCOUNT
.1 lda (ZPCtxPtr),y
sta MD5.BUFFER64,x
sta MD4.BUFFER64,x
inx
iny
cpy #S.MD5.BITCOUNT+8
cpy #S.MD4.BITCOUNT+8
bne .1
ldy #S.MD5.FINALIZED Mark MD5 Context as Finalized
ldy #S.MD4.FINALIZED Mark MD4 Context as Finalized
lda #$80
sta (ZPCtxPtr),y
rts
*--------------------------------------
* MD5UpdateBitCount
* MD4UpdateBitCount
* In :
* CL = Size (in bytes) to add to MD5 context
* ZPCtxPtr = MD5 Context
* CL = Size (in bytes) to add to MD4 context
* ZPCtxPtr = MD4 Context
*--------------------------------------
MD5UpdateBitCount
MD4UpdateBitCount
stz ZPChunkLen+1
lda ZPChunkLen
asl
@ -344,7 +378,7 @@ MD5UpdateBitCount
asl
rol ZPChunkLen+1
clc
ldy #S.MD5.BITCOUNT
ldy #S.MD4.BITCOUNT
adc (ZPCtxPtr),y
sta (ZPCtxPtr),y
iny
@ -364,40 +398,40 @@ MD5UpdateBitCount
.8 rts
*--------------------------------------
* MD5ExtraChunk
* MD4ExtraChunk
* In :
* ZPCtxPtr = MD5 Context
* ZPCtxPtr = MD4 Context
*--------------------------------------
MD5ExtraChunk ldy #S.MD5.FINALIZED
MD4ExtraChunk ldy #S.MD4.FINALIZED
lda #$80
sta (ZPCtxPtr),y Mark MD5 Context as "finalized"
sta (ZPCtxPtr),y Mark MD4 Context as "finalized"
ldx #0
ldy #S.MD5.EXTRABIT Extra Bit already appended ?
ldy #S.MD4.EXTRABIT Extra Bit already appended ?
lda (ZPCtxPtr),y
bne .1
lda #$80
sta MD5.BUFFER64 Add extra bit to buffer
sta MD4.BUFFER64 Add extra bit to buffer
sta (ZPCtxPtr),y Mark Extrabit added
inx
.1 stz MD5.BUFFER64,x pad with "0"...
.1 stz MD4.BUFFER64,x pad with "0"...
inx
cpx #56
bne .1 ...until room for bitcount
jsr MD5AppendBitCount
jsr MD5Transform
jsr MD4AppendBitCount
jsr MD4Transform
*--------------------------------------
* MD5UpdateABCD0
* MD4UpdateABCD0
* In:
* ZPCtxPtr = MD5 Context
* ZPCtxPtr = MD4 Context
*--------------------------------------
MD5UpdateABCD0 ldy #0
MD4UpdateABCD0 ldy #0
.1 clc ADC32 A+A0->A0, B, C, D....
.2 lda MD5.ABCD,y
.2 lda MD4.ABCD,y
adc (ZPCtxPtr),y
sta (ZPCtxPtr),y
iny
@ -410,22 +444,24 @@ MD5UpdateABCD0 ldy #0
rts
*--------------------------------------
* MD5Transform
* MD4Transform
* In:
* ZPCtxPtr = MD5 Context
* 512 Bits Padded chunk in MD5.BUFFER64
* ZPCtxPtr = MD4 Context
* 512 Bits Padded chunk in MD4.BUFFER64
* Out:
* Updated MD5.ABCD
* Updated MD4.ABCD
* https://tools.ietf.org/html/rfc1320 MD4
* https://tools.ietf.org/html/rfc1321 MD5
*--------------------------------------
MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
MD4Transform ldy #15 init ABCD Chunk with Context ABCD0
.1 lda (ZPCtxPtr),y
sta MD5.ABCD,y
sta MD4.ABCD,y
dey
bpl .1
stz MD5.i Start Proceed 0 to 63 bytes
lda #0 lda MD5.i
stz MD4.i Start Proceed 0 to 63 bytes
lda #0 lda MD4.i
.2 lsr
lsr
@ -433,94 +469,98 @@ MD5Transform ldy #15 init ABCD Chunk with Context ABCD0
and #6
tax
jsr MD5.XXXX
jsr MD4.XXXX
inc MD5.i
lda MD5.i
inc MD4.i
lda MD4.i
cmp #64
bne .2
rts
*--------------------------------------
MD5.XXXX jmp (J.MD5.XXXX,x)
MD4.XXXX jmp (J.MD4.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
MD4.0015 >AND32 MD4.B,MD4.C,MD4.F1
>NOT32 MD4.B,MD4.F2
>AND32 MD4.F2,MD4.D,MD4.F2
>ORA32 MD4.F1,MD4.F2,MD4.F
bra MD4.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
MD4.1631 >AND32 MD4.D,MD4.B,MD4.F1
>NOT32 MD4.D,MD4.F2
>AND32 MD4.F2,MD4.C,MD4.F2
>ORA32 MD4.F1,MD4.F2,MD4.F
bra MD4.XXXX.END
*--------------------------------------
MD5.3247 >EOR32 MD5.B,MD5.C,MD5.F
>EOR32 MD5.F,MD5.D,MD5.F
bra MD5.XXXX.END
MD4.3247 >EOR32 MD4.B,MD4.C,MD4.F
>EOR32 MD4.F,MD4.D,MD4.F
bra MD4.XXXX.END
*--------------------------------------
MD5.4863 >NOT32 MD5.D,MD5.F1
>ORA32 MD5.F1,MD5.B,MD5.F2
>EOR32 MD5.F2,MD5.C,MD5.F
MD4.4863 >NOT32 MD4.D,MD4.F1
>ORA32 MD4.F1,MD4.B,MD4.F2
>EOR32 MD4.F2,MD4.C,MD4.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
MD4.XXXX.END >MOV32 MD4.D,MD4.DTemp
>MOV32 MD4.C,MD4.D
>MOV32 MD4.B,MD4.C
>ADC32 MD4.A,MD4.F,MD4.F
lda MD4.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
.1 lda MD4.K,y ADC32 MD4.K[i],MD4.F,MD4.F
adc MD4.F,x
sta MD4.F,x
iny
inx
txa
eor #4 DO NOT DISTURB carry with cpx !!!
bne .1
ldy MD5.i
lda MD5.g,y
ldy MD4.i
lda MD4.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
.2 lda MD4.BUFFER64,y ADC32 M[g],MD4.F,MD4.F
adc MD4.F,x
sta MD4.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
ldy MD4.i
ldx MD4.s,y get s[i] in x
>ROL32x MD5.F
>ADC32 MD5.B,MD5.F,MD5.B
>MOV32 MD5.DTemp,MD5.A
>ROL32x MD4.F
>ADC32 MD4.B,MD4.F,MD4.B
>MOV32 MD4.DTemp,MD4.A
rts
*--------------------------------------
CS.END
MD5.ABCDINIT .HS 01234567.89ABCDEF.FEDCBA98.76543210
MD4.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
MD4.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
MD4.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
MD4.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
.HS AF0F7CF5.2AC68747.134630A8.019546FD
.HS D8988069.AFF7448B.B15BFFFF.BED75C89
.HS 2211906B.937198FD.8E4379A6.2108B449
@ -537,14 +577,16 @@ MD5.K .HS 78A46AD7.56B7C7E8.DB702024.EECEBDC1
.HS 4F7EA86F.E0E62CFE.144301A3.A111084E
.HS 827E53F7.35F23ABD.BBD2D72A.91D386EB
*--------------------------------------
MD5.DIGITS .AS "0123456789ABCDEF"
MD4.SQRT2 .HS 5A827999
MD4.SQRT3 .HS 6ED9EBA1
MD4.DIGITS .AS "0123456789ABCDEF"
*--------------------------------------
ZPDataLen .BS 2
MD5.DTemp .BS 4
MD5.F .BS 4
MD5.i .BS 1
MD5.BUFFER64 .BS 64
MD4.DTemp .BS 4
MD4.F .BS 4
MD4.i .BS 1
MD4.BUFFER64 .BS 64
*--------------------------------------
MAN
SAVE usr/src/lib/libcrypt.s

View File

@ -743,8 +743,12 @@ XDOS.SPParams.B .HS 0000 data buffer
.HS 000000 block number (3 bytes)
*--------------------------------------
.DO XRWDBG=1
XRW.DEBUG sta CLRPAGE2
lda #" "
sta $722
lda #"R"
bit XRW.bWrite
bpl .1

File diff suppressed because it is too large Load Diff