IRQ, NSC, ACOS, CIFS, SRW

This commit is contained in:
Rémy GIBERT 2021-06-22 20:59:02 +02:00
parent a336e2122f
commit 3880d48b57
17 changed files with 426 additions and 259 deletions

Binary file not shown.

Binary file not shown.

View File

@ -38,28 +38,28 @@ CORE.Init ldy #CCS.MAX
bcs .9
>STA.G hVars
>LDYAI STRVSEG
>SYSCALL StrVNew
bcs .9
sta hStrings
>LDYAI 256
>SYSCALL GetMem
bcs .9
>STYA ZPStrBuf
txa
>STA.G hStrBuf
>LDYAI FWREF
>SYSCALL GetMem
>STYA ZPFWRefBufPtr
txa
>STA.G hFWRefBuf
lda #0
sta (ZPFWRefBufPtr)
@ -85,7 +85,7 @@ CORE.Quit lda hStrings
*--------------------------------------
CORE.Cleanup ldy #hFWRefBuf
jsr CORE.Quit.Freemem
>LDA.G hVars
beq .1
@ -106,15 +106,15 @@ CORE.Quit.RTS rts
CORE.Quit.Freemem
lda (pData),y
beq .8
pha
lda #0
sta (pData),y
pla
>SYSCALL FreeMem
.8 rts
.8 rts
*--------------------------------------
CORE.Compile jsr CORE.GetChar
bcs CORE.Quit.RTS
@ -156,7 +156,7 @@ CORE.Compile jsr CORE.GetChar
jsr CORE.KW.JMP
bcs .99
bra .8
*--------------------------------------
.3 jsr CORE.CreateOrGetVar
@ -177,7 +177,7 @@ CORE.Compile jsr CORE.GetChar
lda ZPTYPE
cmp EXP.TYPE
bne .91
tax
beq .4
@ -196,10 +196,10 @@ CORE.Compile jsr CORE.GetChar
.88 ldy pCCS
bmi .89
jsr KW.ENDIF
bcs .99
.89 clc
jmp CORE.GetNextChar skip char
@ -220,28 +220,28 @@ CORE.FWREF >LDA.G hFWRefBuf
.1 lda (ZPInputBufPtr)
beq .8
sta ZPPtr1+1
jsr CORE.GetNextChar
sta ZPPtr1
jsr CORE.GetNextChar
jsr CORE.GetLabel
bcs .9
lda ZPADDR
sta (ZPPtr1)
ldy #1
lda ZPADDR+1
sta (ZPPtr1),y
bra .1
.8 clc
rts
.9 >PUSHW L.MSG.FWREFERR
>PUSHW ZPInputBufPtr
>PUSHBI 2
@ -249,7 +249,7 @@ CORE.FWREF >LDA.G hFWRefBuf
sec
rts
*--------------------------------------
CORE.Run lda #$0 RTS
CORE.Run lda #$60 RTS
sta (ZPCodeBufPtr)
jsr CORE.Cleanup
@ -283,14 +283,14 @@ CORE.Run lda #$0 RTS
CORE.LookupOPS lda (ZPInputBufPtr)
jsr CORE.IsOPSChar
bcc .55
jsr CORE.IsLetter
bcs .99
sec
.55 ror bFlag
.55 ror bFlag
>LDYA L.ACOS.OPS
>STYA ZPPtr1
@ -345,8 +345,8 @@ CORE.LookupOPS lda (ZPInputBufPtr)
.11 jmp CORE.IsLetter
.19 sec
.99 rts
.19 sec
.99 rts
*--------------------------------------
CORE.LookupSkip sec
.HS 90 BCC
@ -374,7 +374,7 @@ CORE.Lookup clc
.3 plp
bcc .8
tya Keyword Len
jmp CORE.SkipA
@ -407,7 +407,7 @@ CORE.Lookup clc
cmp #'$'
bne .11
clc
rts
@ -468,7 +468,7 @@ CORE.AddFWRef lda ZPCodeBufPtr+1
jsr CORE.IsIDValid
bcs .8
jsr CORE.2FWRefBuf
bra .1
@ -494,9 +494,9 @@ CORE.CreateOrGetVar
jsr CORE.NewVarKey
bcs .99
>STYA ZPSID
jsr CORE.GetVarType
stx ZPTYPE
@ -504,16 +504,16 @@ CORE.CreateOrGetVar
lda STRID
sta ZPADDR
lda STRID+1
sta ZPADDR+1
inc STRID
bne .10
inc STRID+1
bra .10
bra .10
.1 lda ZPDataBufPtr
sta ZPADDR
@ -540,14 +540,14 @@ CORE.CreateOrGetVar
clc
rts
.90 lda #E.TMISMATCH
sec
sec
.99 rts
*--------------------------------------
CORE.NewVarKey >LDA.G hVars
CORE.NewKey >PUSHA
>PUSHW ZPInputBufPtr
>SYSCALL SListNewKey
@ -557,11 +557,11 @@ CORE.NewKey >PUSHA
txa
jsr CORE.SkipA
pla Y,A = KeyID
clc
.9 rts
.9 rts
*--------------------------------------
CORE.GetAddr >PUSHA
>PUSHA for SListGetData
@ -588,10 +588,10 @@ CORE.GetAddr >PUSHA
*--------------------------------------
CORE.GetVarType jsr CORE.GetChar
bcs .9
cmp #'$'
bne .9
inc ZPInputBufPtr
bne .1
inc ZPInputBufPtr+1 skip $
@ -602,7 +602,7 @@ CORE.GetVarType jsr CORE.GetChar
.9 ldx #0 Z
rts
rts
*--------------------------------------
CORE.ToUpperCase
cmp #'a'
@ -618,19 +618,19 @@ CORE.ToUpperCase.RTS
rts
*--------------------------------------
CORE.IsOPSChar phx
ldx #ACOS.OPSChars.Cnt-1
.1 cmp ACOS.OPSChars,x
beq .8
dex
bpl .1
plx
sec
rts
.8 plx
clc
rts
@ -654,7 +654,7 @@ CORE.IsEndExp cmp #')' CS = true
CORE.IsEndInst cmp #':' CS = true
beq .8
cmp #C.CR
beq .8
@ -702,6 +702,41 @@ CORE.IsDigit10 cmp #'0'
.9 sec
rts
*--------------------------------------
CORE.CheckOP jsr CORE.GetCharNB
bcs CORE.CheckCP.CSYN
cmp #'('
bne CORE.CheckCP.CSYN
jsr CORE.GetNextCharNB skip (
clc
rts
*--------------------------------------
CORE.CheckComma jsr CORE.GetCharNB
bcs CORE.CheckCP.CSYN
cmp #','
bne CORE.CheckCP.CSYN
jsr CORE.GetNextCharNB skip ,
clc
rts
*--------------------------------------
CORE.CheckCP jsr CORE.GetCharNB
bcs CORE.CheckCP.CSYN
cmp #')'
bne CORE.CheckCP.CSYN
jsr CORE.GetNextCharNB skip )
clc
rts
CORE.CheckCP.CSYN
lda #E.CSYN
sec
rts
*--------------------------------------
CORE.CheckCharNB
cmp #C.SPACE
beq .9

View File

@ -15,13 +15,13 @@ EXP.Eval.R lda EXP.AOPS
*--------------------------------------
.10 jsr CORE.GetCharNB
bcs .39
.11 cmp #'('
bne .12
jsr CORE.GetNextCharNB skip (
bcs .39
jsr EXP.Eval.R
bcs .39
@ -34,13 +34,13 @@ EXP.Eval.R lda EXP.AOPS
jsr CORE.GetNextCharNB skip )
bra .41
.12 cmp #'"'
bne .20
jsr EXP.CreateStrConst
bcs .37
bra .40
*--------------------------------------
.20 jsr CORE.IsLetter
@ -55,8 +55,8 @@ EXP.Eval.R lda EXP.AOPS
bcs .21
jsr EXP.FNjmpX
bcs .99
bcs .99
bra .40
.21 jsr EXP.VARLookup
@ -65,11 +65,11 @@ EXP.Eval.R lda EXP.AOPS
.22 ldx EXP.TYPE
bne .23
jsr CODE.INTGET
bra .40
.23 jsr CODE.STRGET
bra .40
@ -85,27 +85,27 @@ EXP.Eval.R lda EXP.AOPS
.50 jsr CORE.IsEndExp
bcs .80
jsr CORE.IsKW
bcc .80
jsr CORE.LookupOPS
bcs .90
stx EXP.AOPS
lda (pStack) get op context
bmi .60 no prev op, go get arg2
cmp EXP.AOPS we have arg1 A=op1 arg2 X=op2
bcc .60
inc pStack prev op has precedence
tay
ldx ACOS.OPS2FPU,y
jsr CODE.FPUCALL go compute (arg1 op1 arg2)
.60 lda EXP.AOPS we must compute arg2 op2 arg3 before
>PUSHA
@ -122,22 +122,22 @@ EXP.Eval.R lda EXP.AOPS
bra .80
.90 lda #E.ESYN
.99 tay Save Err code
.98 >PULLA
tax
bpl .98
sec
.HS 90 BCC
.88 clc
pla
sta EXP.AOPS
tya
rts
*--------------------------------------
EXP.FNjmpX jmp (J.ACOS.FN,x)
@ -145,19 +145,19 @@ EXP.FNjmpX jmp (J.ACOS.FN,x)
EXP.CreateStrConst
lda #'$'
sta EXP.TYPE
ldy #0
.1 jsr CORE.GetNextChar
bcs .91
cmp #'"'
beq .2
sta (ZPConstBufPtr),y
iny
bne .1
.2 lda #0
sta (ZPConstBufPtr),y
@ -170,14 +170,14 @@ EXP.CreateStrConst
adc ZPConstBufPtr
sta ZPConstBufPtr
bcc .3
inc ZPConstBufPtr+1
.3 jsr CORE.GetNextCharNB skip "
clc
rts
.91 lda #E.ESYN
* sec
rts
@ -189,12 +189,12 @@ EXP.Int16 >PUSHW ZPInputBufPtr
bcs .9
jsr CODE.PUSHINT16
>POP 4
clc
.9 rts
.9 rts
*--------------------------------------
EXP.VARLookup >LDA.G hVars
@ -217,10 +217,10 @@ EXP.VARLookup >LDA.G hVars
bcs .99
jsr CORE.GetVarType
cpx EXP.TYPE
bne .90
clc
rts
@ -233,7 +233,7 @@ EXP.VARLookup >LDA.G hVars
phy
pha KeyID
jsr CORE.GetVarType
stx EXP.TYPE
@ -241,16 +241,16 @@ EXP.VARLookup >LDA.G hVars
lda STRID
sta EXP.ADDR
lda STRID+1
sta EXP.ADDR+1
inc STRID
bne .10
inc STRID+1
bra .10
bra .10
.11 lda ZPDataBufPtr
sta EXP.ADDR

View File

@ -13,17 +13,17 @@ FN.KEY
sec
rts
*--------------------------------------
FN.LEN jsr CORE.GetCharNB
bcs .90
cmp #'('
bne .90
FN.LEN jsr CORE.CheckOP
bcs .99
jsr EXP.Eval
bcs .99
lda EXP.TYPE
beq .91
beq .90
jsr CORE.CheckCP
bcs .99
ldx #0
@ -37,52 +37,31 @@ FN.LEN jsr CORE.GetCharNB
clc
rts
.90 lda #E.CSYN
sec
rts
.91 lda #E.TMISMATCH
.90 lda #E.TMISMATCH
sec
.99 rts
.99 rts
*--------------------------------------
FN.LEFTd jsr CORE.GetCharNB
bcs .90
cmp #'('
bne .90
jsr CORE.GetNextCharNB skip (
bcs .90
FN.LEFTd jsr CORE.CheckOP
bcs .99
jsr EXP.Eval
bcs .99
lda EXP.TYPE
beq .91
jsr CORE.GetCharNB
bcs .90
cmp #','
bne .90
jsr CORE.GetNextCharNB skip ,
bcs .90
lda EXP.TYPE
beq .90
jsr CORE.CheckComma
bcs .99
jsr EXP.Eval
bcs .99
lda EXP.TYPE
bne .91
jsr CORE.GetCharNB
bcs .90
cmp #')'
bne .90
jsr CORE.GetNextCharNB skip )
jsr CORE.CheckCP
bcs .99
ldx #0
@ -97,14 +76,10 @@ FN.LEFTd jsr CORE.GetCharNB
clc
rts
.90 lda #E.CSYN
sec
rts
.91 lda #E.TMISMATCH
.90 lda #E.TMISMATCH
sec
.99 rts
.99 rts
*--------------------------------------
FN.MIDd
FN.PDL
@ -112,10 +87,76 @@ FN.PEEK
FN.RANDOM
FN.RIGHTd
FN.RNDd
FN.STRd
lda #E.CSYN
sec
rts
*--------------------------------------
FN.STRd jsr CORE.CheckOP
bcs .99
jsr EXP.Eval
bcs .99
lda EXP.TYPE
bne .90
jsr CORE.CheckCP
bcs .99
ldx #0
.1 lda CCODE.STR,x
jsr CODE.EmitByte
inx
cpx #CCODE.STR.LEN
bne .1
lda #'$'
sta EXP.TYPE
clc
rts
.90 lda #E.TMISMATCH
sec
.99 rts
*--------------------------------------
FN.TIMEd
FN.VAL
lda #E.CSYN
sec
rts
*--------------------------------------
FN.VAL jsr CORE.CheckOP
bcs .99
jsr EXP.Eval
bcs .99
lda EXP.TYPE
beq .90
jsr CORE.CheckCP
bcs .99
ldx #0
.1 lda CCODE.VAL,x
jsr CODE.EmitByte
inx
cpx #CCODE.VAL.LEN
bne .1
stz EXP.TYPE
clc
rts
.90 lda #E.TMISMATCH
sec
.99 rts
*--------------------------------------
FN.WHENd
*--------------------------------------
FN.WIDTH
lda #E.CSYN
sec

View File

@ -472,7 +472,7 @@ CCODE.FPRINTINT.LEN .EQ *-CCODE.FPRINTINT
CCODE.LEN >PULLW ZPPtr1
ldy #$FF
.1 iny
lda (ZPPtr1),y
bne .1
@ -488,19 +488,35 @@ CCODE.LEFT >PULLW ZPPtr2 cnt
sta ZPPtr1+1
ldy #0
.1 lda (ZPPtr1),y
beq .8
iny
cpy ZPPtr2
bne .1
lda #0
sta (ZPPtr1),y
.8
.8
CCODE.LEFT.LEN .EQ *-CCODE.LEFT
*--------------------------------------
CCODE.STR >PULLYA int
pha
>PUSHW ZPStrBuf
>PUSHW L.MSG.INT16
pla
>PUSHYA
>PUSHBI 2
>SYSCALL sprintf
>PUSHW ZPStrBuf
CCODE.STR.LEN .EQ *-CCODE.STR
*--------------------------------------
CCODE.VAL >PULLYA str
>SYSCALL atoi
>PUSHYA
CCODE.VAL.LEN .EQ *-CCODE.VAL
*--------------------------------------
.INB usr/src/bin/acos.s.code
.INB usr/src/bin/acos.s.core

View File

@ -262,31 +262,32 @@ NSC.Write php
.8 plp
rts
*--------------------------------------
NSC.Select sta $C300
NSC.Select
* sta $C300
lda $C00B Workaround for Ultrawarp bug
lda $C304 Reset DS1216E comparison register with READ A2=1
ldx #8 Read 8 bytes...
ldy #8 Read 8 bytes...
.3 lda DS1216E.PATTERN-1,x
phx
ldx #8 ....of 8 bits
.3 lda DS1216E.PATTERN-1,y
phy
ldy #8 ....of 8 bits
.4 ldy #0
.4 ldx #0
lsr
bcc .5
iny
inx
.5 pha
lda $C300,y Write Pattern bit in A0, with A2=0
pla
dex
.5 bit $C300,x Write Pattern bit in A0, with A2=0
dey
bne .4
plx
dex
ply
dey
bne .3
rts

View File

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

View File

@ -390,17 +390,18 @@ BB.Seek lda BB.HdrTrk get track we're on
cmp BB.TargetQTrack
bne .3
lsr CS if X,Y on
lda #0
jsr BB.Wait100usecA
lda IO.D2.Ph0Off,y
ldy BB.Slotn0
lda IO.D2.DrvOn,y
bcc .90
lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
.90
*--------------------------------------
BB.Read ldx BB.Slotn0

View File

@ -85,7 +85,6 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
jsr D2.SeekPhOnY we are on 0/4 or 2/4 track
lda #1
bra .9 no wait, next operation will be phy/plx/Ph0On,y
.1 cmp D2.TargetQTrack we are on 1/4 or 3/4
@ -129,24 +128,23 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
.8 lda #IO.D2.SeekTimeF
.9 jsr D2.Wait100usecA ...wait...
jsr D2.Wait100usecA ...wait...
lda D2.CurrentQTrack
.9 lda D2.CurrentQTrack
cmp D2.TargetQTrack
bne .3
lsr CS if X,Y on
jsr D2.Wait25600usec
lda IO.D2.Ph0Off,y
ldy D2.Slotn0
lda IO.D2.DrvOn,y
bcc .90
lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
rts
.90 rts
D2.SeekPhOnY and #6
ora D2.Slotn0

View File

@ -530,7 +530,7 @@ CIFS2.FOpen jsr ReadSocket
jsr CheckSMBStatus
bcs .90
>DEBUG
>LDYAI S.FD.REG
>SYSCALL2 GetMem
bcs .91
@ -569,13 +569,14 @@ CIFS2.FOpen jsr ReadSocket
>SYSCALL2 mknod
.91 jsr FreeRespData
stz CIFS.Status
bra .90
.9 jsr Exit.NODATA
beq .99
.90 >POP 6
.99 rts
*--------------------------------------
CIFS.FClose jsr GetPFD
@ -631,22 +632,82 @@ CIFS2.FClose sta hFILE
lda hFILE
jsr CIFS.CloseDir
lda hResp
>SYSCALL2 FreeMem
jmp Exit.OK
.9 jmp Exit.NODATA
.99 rts
*--------------------------------------
CIFS.FRead
clc
>RET 5
CIFS.FRead ldy #4 hNod
lda (pStack),y
jsr GetPFD
jsr GetCtx
ldx #S.SMB.H.CMD.READ.ANDX
jsr RequestSetupX
ldx #0
.1 lda SMB.ComRead.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.ComRead.H.Len
bne .1
jsr ReqSetupPtr2
ldy #S.FD.REG.REF
lda (pFD),y
pha
iny
lda (pFD),y
ldy #S.NETBIOS+S.SMB.H+6 FileID
sta (ZPReqPtr),y
pla
dey
sta (ZPReqPtr),y
jsr SetReqLen
jsr WriteSocket
bcs .9
jmp Sleep
.9 >RET 5
*--------------------------------------
CIFS2.FRead
CIFS2.FRead jsr ReadSocket
bcs .9
jsr GetRespData
jsr CheckSMBStatus
bcs .90
lda hResp
>SYSCALL2 FreeMem
ldy #1
lda (pStack),y
ora (pStack)
clc
>RET 5
beq .90
stz CIFS.Status Back to CIFS.FRead for next chunk
jmp Sleep2
.9 jsr Exit.NODATA
beq .99
.90 >POP 5
.99 rts
*--------------------------------------
CIFS.FWrite ldy #4 hNod
lda (pStack),y
@ -785,6 +846,8 @@ CIFS2.FWrite jsr ReadSocket
clc
beq .90
stz CIFS.Status Back to CIFS.FWrite for next chunk
jmp Sleep2
.9 jsr Exit.NODATA
@ -924,7 +987,8 @@ CIFS2.Rename jsr ReadSocket
jsr CheckSMBStatus
bcs .99
jmp Exit.OK
jsr Exit.OK
bra .99
.9 jmp Exit.NODATA

View File

@ -1181,12 +1181,12 @@ SMB.ComRead.H .DA #10 WORD COUNT
.HS FF000000 NO MORE CMD
.BS 2 FID
.BS 4 Offset
.BS 2 MaxCountOfBytesToReturn
.HS 0001 MaxCountOfBytesToReturn
.HS 0000 MinCountOfBytesToReturn
.HS 00000000 Timeout
.HS 0000 Remaining
.HS 0000 ByteCount
SMB.ComRead.H.Len .EQ *-SMB.ComRead.H
* .BS 2 ByteCount
*--------------------------------------
SMB.ComWrite.H .DA #12 WORD COUNT
.HS FF000000 NO MORE CMD

View File

@ -12,8 +12,8 @@ IRQ ldx #$FA save 6 bytes of page 0
inx
bne .2
lda mslot
sta IRQ.DoneCn+2
* lda mslot
* sta IRQ.DoneCn+2
* ldx #0
@ -57,11 +57,11 @@ IRQ.Done ldx #$FA
inx
bne .1
lda CLRC8ROM
* lda CLRC8ROM
IRQ.DoneCn lda $C100 SELF MODIFIED
lda IRQ.DoneCn+2
sta mslot
*IRQ.DoneCn lda $C100 SELF MODIFIED
* lda IRQ.DoneCn+2
* sta mslot
rti
*--------------------------------------

View File

@ -354,11 +354,12 @@ LDR.LCBNK1 lda RRAMWRAMBNK1 switch in LC bank 1
DS1216E.DATA1 .EQ idxl
DS1216E.DATA2 .EQ A1L
*--------------------------------------
LDR.ClkDevScan lda RDCXROM
php
LDR.ClkDevScan php
sei
lda RDCXROM
php
sta SETCXROM
sta $C300
@ -376,32 +377,34 @@ LDR.ClkDevScan lda RDCXROM
dex
bne .1
sta $C300
*--------------------------------------
* sta $C300
lda $C00B Workaround for Ultrawarp bug
lda $C304 Reset DS1216E comparison register with READ A2=1
ldx #8 Read 8 bytes...
ldy #8 Read 8 bytes...
.3 ldy #8 ....of 8 bits
.3 lda DS1216E.SIG-1,x
phy
ldy #8 ....of 8 bits
.4 ldx #0
lsr
bcc .5
lda DS1216E.SIG-1,x
inx
.4 lsr
bcs .5
.5 bit $C300,x Write Pattern bit in A0, with A2=0
bit $C300
bra .50
.5 bit $C301 Write Pattern bit in A0, with A2=0
.50 dey
dey
bne .4
dex
ply
dey
bne .3
*--------------------------------------
ldx #8
.6 ldy #8
@ -421,7 +424,9 @@ LDR.ClkDevScan lda RDCXROM
sta CLRCXROM
.8 ldx #8
.8 plp
ldx #8
.9 lda DS1216E.DATA1-1,x
cmp DS1216E.DATA2-1,x

View File

@ -7,36 +7,39 @@ NEW
*--------------------------------------
DS1216E.DATA .EQ $200 Reverted YY MM DD Day HH mm SS CS
*--------------------------------------
NCLK.START lda RDCXROM
php
NCLK.START php
sei NO IRQ !!!
lda RDCXROM
php
sta SETCXROM
sta $C300
* sta $C300
lda $C00B Workaround for Ultrawarp bug
lda $C304 Reset DS1216E comparison register with READ A2=1
ldx #8 Read 8 bytes...
ldy #8 Read 8 bytes...
.1 ldy #8 ....of 8 bits
lda DS1216E.PATTERN-1,x
.2 lsr
bcs .3
.1 lda DS1216E.PATTERN-1,y
phy
bit $C300
bra .30
ldy #8 ....of 8 bits
.3 bit $C301 Write Pattern bit in A0, with A2=0
.2 ldx #0
lsr
bcc .3
.30 dey
inx
.3 bit $C300,x Write Pattern bit in A0, with A2=0
dey
bne .2
dex
ply
dey
bne .1
ldx #8
@ -102,7 +105,8 @@ NCLK.START lda RDCXROM
sta CLRCXROM
.8 rts
.8 plp
rts
*--------------------------------------
DS1216E.PATTERN .HS 5CA33AC55CA33AC5 Reverted 7->0
*--------------------------------------

View File

@ -782,10 +782,9 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
bit #1 A = Current QT
bne .1
jsr XRW.SeekPhOnY we are on 0/4 or 2/4 track : PhY on
lda #1
bra .9 no wait, next operation will be phy/plx/Ph0On,y
.1 cmp XRW.TargetQTrack we are on 1/4 or 3/4
@ -829,23 +828,23 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
.8 lda XRW.SeekTime
.9 jsr XRW.Wait100usecA ...wait...
jsr XRW.Wait100usecA ...wait...
lda XRW.CurrentQTrack
.9 lda XRW.CurrentQTrack
cmp XRW.TargetQTrack
bne .3
lsr CS if X,Y on
jsr XRW.Wait25600usec
lda IO.D2.Ph0Off,y
ldy A2L
lda IO.D2.DrvOn,y
bcc .90
lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
clc Exit wit CC (recalibrate)
.90 clc Exit wit CC (recalibrate)
rts
*--------------------------------------
XRW.SeekPhOnY and #6

View File

@ -52,14 +52,15 @@ NSC.Print sty TmpPtr1
DS1216E.DATA1 .EQ $10
DS1216E.DATA2 .EQ $18
*--------------------------------------
NSC.Detect lda RDCXROM
php
NSC.Detect php
sei
lda RDCXROM
php
sta SETCXROM
sta $C300
* sta $C300
lda $C00B Workaround for Ultrawarp bug
ldx #8
@ -75,40 +76,40 @@ NSC.Detect lda RDCXROM
dex
bne .1
sta $C300
* sta $C300
lda $C00B Workaround for Ultrawarp bug
lda $C304 Reset DS1216E comparison register with READ A2=1
ldx #8 Read 8 bytes...
ldy #8 Read 8 bytes...
.3 ldy #8 ....of 8 bits
lda DS1216E.PATTERN-1,x
.3 lda DS1216E.PATTERN-1,x
phy
.4 lsr
bcs .5
ldy #8 ....of 8 bits
.4 ldx #0
lsr
bcc .5
bit $C300
bra .50
inx
.5 bit $C300,x Write Pattern bit in A0, with A2=0
.5 bit $C301 Write Pattern bit in A0, with A2=0
.50 dey
dey
bne .4
dex
ply
dey
bne .3
*--------------------------------------
ldx #8
.6 ldy #8
.7 lda $C304
lsr
ror DS1216E.DATA2-1,x
dey
bne .7
@ -120,7 +121,9 @@ NSC.Detect lda RDCXROM
sta CLRCXROM
.8 ldx #8
.8 plp
*--------------------------------------
ldx #8
.81 lda DS1216E.DATA1-1,x
cmp DS1216E.DATA2-1,x
@ -129,7 +132,7 @@ NSC.Detect lda RDCXROM
dex
bne .81
sec
* sec from CMP
rts
.9 clc