Modified ProDOS.FX IRQ handler

This commit is contained in:
Rémy GIBERT 2021-06-11 19:20:35 +02:00
parent 1e78e4ef84
commit 5ce42af7a7
18 changed files with 496 additions and 391 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,221 +1,221 @@
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/hmacmd5
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/libcrypt.i
*--------------------------------------
FILEBUF.SIZE .EQ 4096
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPDataBufPtr .BS 2
ZPDataLen .BS 2
ArgIndex .BS 1
Arg1 .BS 1
Arg2 .BS 1
bText .BS 1
bKey .BS 1
hFile .BS 1
hDataBuf .BS 1
hHMACMD5Ctx .BS 1
ZS.END .ED
*--------------------------------------
* 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 #ZS.END-ZS.START 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
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBCRYPT
>SYSCALL LoadLib
bcs .9
sta hLIBCRYPT
* clc
.9 rts
*--------------------------------------
CS.RUN ldy #S.PS.ARGC
lda (pPS),y
beq .99
.0 ldx #0
.1 inc ArgIndex
lda ArgIndex
phx
>SYSCALL ArgV
plx
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
beq .99
ldy #OptionVars-OptionList-1
.2 cmp OptionList,y
beq .3
dey
bpl .2
.99 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
rts
.3 ldx OptionVars,y
sec
ror 0,x
bra .1
.4 txa
bpl .99
lda ArgIndex
sta $fe,x
bra .0
.8 lda Arg1
beq .99
lda Arg2
beq .99
lda bText
beq CS.RUN.FILE
*--------------------------------------
CS.RUN.TEXT lda Arg1
>SYSCALL ArgV
>PUSHYA
lda Arg2
>SYSCALL ArgV
>PUSHYA
>PUSHEA.G HMACMD5Buf
>LIBCALL hLIBCRYPT,LIBCRYPT.HMACMD5
jmp CS.RUN.PRINT
*--------------------------------------
CS.RUN.FILE >LDYAI FILEBUF.SIZE
>SYSCALL GetMem
bcs .9
>STYA ZPDataBufPtr
stx hDataBuf
lda Arg1
>SYSCALL ArgV
>PUSHYA
>PUSHBI O.RDONLY
>PUSHBI 0 ftype
>PUSHWZ Aux type
>SYSCALL FOpen
bcs .9
sta hFile
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init
bcs .9
sta hHMACMD5Ctx
.1 >SLEEP
>PUSHB hFile
>PUSHW ZPDataBufPtr Dst Ptr
>PUSHWI FILEBUF.SIZE Bytes To Read
>SYSCALL FRead
bcc .2
cmp #MLI.E.EOF
beq .8
.9 rts
.2 >STYA ZPDataLen
>SLEEP
>PUSHB hHMACMD5Ctx
>PUSHW ZPDataBufPtr
>PUSHW ZPDataLen
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Update
bra .1
.8 >PUSHB hHMACMD5Ctx
>PUSHEA.G HMACMD5Buf
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize
CS.RUN.PRINT >LEA.G HMACMD5Buf
>SYSCALL PutS
lda #0
* sec
* rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT lda hLIBCRYPT
beq .1
>SYSCALL UnloadLib
.1 lda hDataBuf
beq .2
>SYSCALL FreeMem
.2 lda hFile
beq .3
>SYSCALL FClose
.3 clc
rts
*--------------------------------------
CS.END
LIBCRYPT .AZ "libcrypt"
hLIBCRYPT .BS 1
*--------------------------------------
OptionList .AS "DdKk"
OptionVars .DA #bText,#bText, #bKey,#bKey
*--------------------------------------
MSG.USAGE .AZ "Usage : HMACMD5 [ -d input text | input file -k key ]\r\n"
*--------------------------------------
.DUMMY
.OR 0
DS.START
HMACMD5Buf .BS 33
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/hmacmd5.s
ASM
NEW
AUTO 3,1
.LIST OFF
.OP 65C02
.OR $2000
.TF bin/hmacmd5
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.e.i
.INB inc/libcrypt.i
*--------------------------------------
FILEBUF.SIZE .EQ 4096
*--------------------------------------
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPDataBufPtr .BS 2
ZPDataLen .BS 2
ArgIndex .BS 1
Arg1 .BS 1
Arg2 .BS 1
bText .BS 1
bKey .BS 1
hFile .BS 1
hDataBuf .BS 1
hHMACMD5Ctx .BS 1
ZS.END .ED
*--------------------------------------
* 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 #ZS.END-ZS.START 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
.DA 0
*--------------------------------------
CS.INIT >LDYA L.LIBCRYPT
>SYSCALL LoadLib
bcs .9
sta hLIBCRYPT
* clc
.9 rts
*--------------------------------------
CS.RUN ldy #S.PS.ARGC
lda (pPS),y
beq .99
.0 ldx #0
.1 inc ArgIndex
lda ArgIndex
phx
>SYSCALL ArgV
plx
bcs .8
>STYA ZPPtr1
lda (ZPPtr1)
cmp #'-'
bne .4
ldy #1
lda (ZPPtr1),y
beq .99
ldy #OptionVars-OptionList-1
.2 cmp OptionList,y
beq .3
dey
bpl .2
.99 >PUSHW L.MSG.USAGE
>PUSHBI 0
>SYSCALL PrintF
lda #E.SYN
sec
rts
.3 ldx OptionVars,y
sec
ror 0,x
bra .1
.4 txa
bpl .99
lda ArgIndex
sta $fe,x
bra .0
.8 lda Arg1
beq .99
lda Arg2
beq .99
lda bText
beq CS.RUN.FILE
*--------------------------------------
CS.RUN.TEXT lda Arg1
>SYSCALL ArgV
>PUSHYA
lda Arg2
>SYSCALL ArgV
>PUSHYA
>PUSHEA.G HMACMD5Buf
>LIBCALL hLIBCRYPT,LIBCRYPT.HMACMD5
jmp CS.RUN.PRINT
*--------------------------------------
CS.RUN.FILE >LDYAI FILEBUF.SIZE
>SYSCALL GetMem
bcs .9
>STYA ZPDataBufPtr
stx hDataBuf
lda Arg1
>SYSCALL ArgV
>PUSHYA
>PUSHBI O.RDONLY
>PUSHBI 0 ftype
>PUSHWZ Aux type
>SYSCALL FOpen
bcs .9
sta hFile
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Init
bcs .9
sta hHMACMD5Ctx
.1 >SLEEP
>PUSHB hFile
>PUSHW ZPDataBufPtr Dst Ptr
>PUSHWI FILEBUF.SIZE Bytes To Read
>SYSCALL FRead
bcc .2
cmp #MLI.E.EOF
beq .8
.9 rts
.2 >STYA ZPDataLen
>SLEEP
>PUSHB hHMACMD5Ctx
>PUSHW ZPDataBufPtr
>PUSHW ZPDataLen
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Update
bra .1
.8 >PUSHB hHMACMD5Ctx
>PUSHEA.G HMACMD5Buf
>LIBCALL hLIBCRYPT,LIBCRYPT.MD5Finalize
CS.RUN.PRINT >LEA.G HMACMD5Buf
>SYSCALL PutS
lda #0
* sec
* rts
*--------------------------------------
CS.DOEVENT sec
rts
*--------------------------------------
CS.QUIT lda hLIBCRYPT
beq .1
>SYSCALL UnloadLib
.1 lda hDataBuf
beq .2
>SYSCALL FreeMem
.2 lda hFile
beq .3
>SYSCALL FClose
.3 clc
rts
*--------------------------------------
CS.END
LIBCRYPT .AZ "libcrypt"
hLIBCRYPT .BS 1
*--------------------------------------
OptionList .AS "DdKk"
OptionVars .DA #bText,#bText, #bKey,#bKey
*--------------------------------------
MSG.USAGE .AZ "Usage : HMACMD5 [ -d input text | input file -k key ]\r\n"
*--------------------------------------
.DUMMY
.OR 0
DS.START
HMACMD5Buf .BS 33
DS.END .ED
*--------------------------------------
MAN
SAVE usr/src/bin/hmacmd5.s
ASM

View File

@ -398,6 +398,7 @@ CS.RUN.LOOP.RUN jsr CORE.Run
CS.RUN.LOOP.END ldy #S.PS.RC
sta (pPS),y
bcc CS.RUN.LOOP.80
tay
beq CS.RUN.LOOP.80 0 = EOF

View File

@ -4,7 +4,7 @@ NEW
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 48 ProDOS.FX initial
IO.D2.SeekTimeP .EQ 58 ProDOS.FX initial
IO.D2.SeekTimeI .EQ 10 ProDOS.FX increment -> until > 128
*--------------------------------------
IO.D2.Ph0Off .EQ $C080

View File

@ -11,6 +11,8 @@ S.NETBIOS .EQ 4
S.SMB.H.PROTO .EQ 0 \xFF 'SMB'
S.SMB.H.CMD .EQ 4
S.SMB.H.CMD.CLOSE .EQ $04
S.SMB.H.CMD.READ.ANDX .EQ $2E
S.SMB.H.CMD.WRITE.ANDX .EQ $2F
S.SMB.H.CMD.TRANS2 .EQ $32
S.SMB.H.CMD.NEGOTIATE .EQ $72
S.SMB.H.CMD.SESSION.SETUP.ANDX .EQ $73

View File

@ -129,7 +129,7 @@ ndsk2 sta dent save low adr of device call entry.
sty iobuff y=0
sty idxl
sty idxh
sty idxh
sty idxp
sty blok+1
@ -299,7 +299,7 @@ BB.Wait100usecA phx (3)
dec (2)
bne .1 (3)
plx (4)
rts (6)
@ -310,7 +310,7 @@ BB.Trk2Qtrk asl x2
bit BB.HdrVol
bpl .1 x4
bvs .1 > $C0 ? (VOL=254)
lsr x3
.1 adc #$ff SELF MODIFIED
@ -333,12 +333,14 @@ BB.Seek lda BB.HdrTrk get track we're on
bne .1
jsr .20 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 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
@ -370,10 +372,10 @@ BB.Seek lda BB.HdrTrk get track we're on
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : Off Prev Ph
bra .8 go wait....
.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
inc CC: C < T, ON next PH
@ -381,9 +383,10 @@ BB.Seek lda BB.HdrTrk get track we're on
.6 jsr .20 now X and Y on
.8 lda #IO.D2.SeekTimeB
jsr BB.Wait100usecA ...wait...
.9 lda BB.CurrentQTrack
.9 jsr BB.Wait100usecA ...wait...
lda BB.CurrentQTrack
cmp BB.TargetQTrack
bne .3
@ -394,10 +397,10 @@ BB.Seek lda BB.HdrTrk get track we're on
ldy BB.Slotn0
lda IO.D2.DrvOn,y
lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
lda IO.D2.DrvOn,y
*--------------------------------------
BB.Read ldx BB.Slotn0
@ -413,7 +416,7 @@ rdhead sec anticipate error.
clc indicate reading header.
ldy #0 Retry cnt waiting D5
rddata php carry set if reading sector.
rd0 iny

View File

@ -84,13 +84,14 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
bne .1
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
bcs .2 if CS, C > T, must move out
inc CC: C < T, ON next PH
.HS B0 BCS
@ -116,10 +117,10 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
lda IO.D2.Ph0Off,x we must go to 0/4 or 2/4 : Off Prev Ph
bra .8 go wait....
.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
inc CC: C < T, ON next PH
@ -127,6 +128,7 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
.6 jsr D2.SeekPhOnY now X and Y on
.8 lda #IO.D2.SeekTimeF
.9 jsr D2.Wait100usecA ...wait...
lda D2.CurrentQTrack
@ -139,13 +141,13 @@ D2.MoveHead.SEI lda D2.CurrentQTrack
ldy D2.Slotn0
lda IO.D2.DrvOn,y
lda IO.D2.Ph0Off,x
lda IO.D2.DrvOn,y
rts
D2.SeekPhOnY and #6
ora D2.Slotn0
tay
@ -229,11 +231,11 @@ D2.TrkWrite16s >PULLW ZPPtr1
lda ZPPtr1+1
bne .7
ldy #$57
ldx #2
lda #$96
.3 sta (ZPPtr2)
inc ZPPtr2
bne .4
@ -243,7 +245,7 @@ D2.TrkWrite16s >PULLW ZPPtr1
bne .3
dex
bne .3
bra .8
.7 jsr D2.PutData
@ -260,10 +262,10 @@ D2.TrkWrite16s >PULLW ZPPtr1
lda #0
sta (ZPPtr2)
bit D2.VolNum
bvc .80
jsr D2.HeadSelect
.80 jsr D2.WriteTrackPtr2
@ -370,10 +372,10 @@ D2.HeadSelect lda D2.HeadNum A = 0/1
ora D2.Slotn0
tax x=n0/n2
lda IO.D2.Ph0On,x
lda IO.D2.Ph0On+4,x
lda #1
jsr D2.Wait100usecA

View File

@ -9,7 +9,11 @@ CIFS2.ChMod
*--------------------------------------
CIFS.FStat
*--------------------------------------
CIFS2.FStat lda #MLI.E.BADCALL
CIFS2.FStat
txa
ora #$80
* lda #MLI.E.BADCALL
sec
rts
*--------------------------------------
@ -35,15 +39,7 @@ CIFS.Stat >STYA pPath resolved path
jsr SetT2ReqLenYA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
jsr WriteSocket
bcs .9
jmp Sleep
@ -115,14 +111,7 @@ CIFS.MKDir >STYA pPath resolved path
jsr SetT2ReqLenYA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
jsr WriteSocket
bcs .9
jmp Sleep
@ -275,15 +264,7 @@ CIFS.ReadDir.Send
jsr SetT2ReqLenYA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
jsr WriteSocket
bcs .9
jmp Sleep
@ -536,6 +517,8 @@ CIFS2.ChOwn
*--------------------------------------
CIFS.FOpen >STYA pPath resolved path
jsr GetGTX
ldx #S.SMB.H.CMD.NT.CREATE.ANDX
jsr RequestSetupX
@ -573,14 +556,7 @@ CIFS.FOpen >STYA pPath resolved path
jsr SetReqLenYAtA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
jsr WriteSocket
bcs .9
jmp Sleep
@ -605,14 +581,14 @@ CIFS2.FOpen jsr ReadSocket
>SYSCALL2 GetMem
bcs .99
>STYA ZPPtr2
>STYA pFD
lda #S.FD.T.REG
sta (ZPPtr2)
sta (pFD)
lda hHandler
ldy #S.FD.PFT
sta (ZPPtr2),y
sta (pFD),y
ldy #S.NETBIOS+S.SMB.H+6 FileID
lda (ZPRespPtr),y
@ -621,10 +597,10 @@ CIFS2.FOpen jsr ReadSocket
lda (ZPRespPtr),y
ldy #S.FD.REG.REF+1
sta (ZPPtr2),y
sta (pFD),y
dey
pla
sta (ZPPtr2),y
sta (pFD),y
ldy #4 path
@ -661,33 +637,44 @@ CIFS2.FOpen jsr ReadSocket
*--------------------------------------
CIFS.FClose jsr GetPFD
jsr GetGtx
ldx #S.SMB.H.CMD.CLOSE
jsr RequestSetupX
ldx #0
.1 lda SMB.ComCreate.H,x
.1 lda SMB.ComClose.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.ComCreate.H.Len
cpx #SMB.ComClose.H.Len
bne .1
tya save Y = LEN
phy save Y = LEN
ldy #S.FD.REG.REF
lda (pFD),y
pha
iny
lda (pFD),y
ldy #S.NETBIOS+S.SMB.H+2 FileID
sta (ZPReqPtr),y
pla
dey
sta (ZPReqPtr),y
ply
tya
iny Skip ByteCount
iny
jsr SetReqLenYAtA
pha
>PUSHB MountTable+3 hSocket
>PUSHW ZPReqPtr
pla
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
jsr WriteSocket
bcs .9
jmp Sleep
@ -744,12 +731,91 @@ CIFS2.FRead
clc
>RET 5
*--------------------------------------
CIFS.FWrite
clc
>RET 5
CIFS.FWrite ldy #4
lda (pStack),y
jsr GetPFD
jsr GetGTX
ldx #S.SMB.H.CMD.WRITE.ANDX
jsr RequestSetupX
ldx #0
.1 lda SMB.ComWrite.H,x
sta (ZPReqPtr),y
iny
inx
cpx #SMB.ComWrite.H.Len
bne .1
sty LenOfs
iny
iny
sty ZPReqLen
stz ZPReqLen+1
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.FWrite
CIFS2.FWrite ldy #4
lda (pStack),y
jsr ReadSocket
bcs .9
jsr GetRespData
ldy #S.NETBIOS+S.SMB.H.STATUS
lda (ZPRespPtr),y
clc
beq .8
lda #MLI.E.IO
sec
.8 jsr FreeRespData
stz CIFS.Status
>RET 5
.9 cmp #E.NODATA
bne .99
dec CIFS.Retries
beq .98
lda #0
sec
rts
.98 lda #MLI.E.IO
.99 sec
stz CIFS.Status
>RET 5
*--------------------------------------
CIFS.FFlush
@ -764,7 +830,9 @@ CIFS.Remove
CIFS2.Remove
CIFS.Rename
CIFS2.Rename
lda #MLI.E.BADCALL
* lda #MLI.E.BADCALL
txa
ora #$80
sec
rts
*--------------------------------------

View File

@ -35,6 +35,7 @@ auxtype .BS 2
ZPRespPtr .BS 2
bFlag .BS 1
LenOfs .BS 1
ZS.END .ED
*--------------------------------------
@ -152,7 +153,7 @@ LIB.LOAD >LDYA L.LIBTCPIP
>SYSCALL2 GetMemPtr
>STYA pLIBTCPIP
>LDYAI 256
>LDYAI 512
>SYSCALL2 GetMem
bcs .9
@ -318,18 +319,11 @@ CIFS.SessionSetup
jsr SetReqLenYAtA
phy
pha
ldy #6 hSocket
lda (pStack),y
>PUSHA
>PUSHW ZPReqPtr
pla
ply
>PUSHYA
>PUSHW ZPReqLen
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
bcs .99
@ -451,20 +445,9 @@ CIFS.TreeConnect
jsr SetReqLenYAtA
phy
pha
ldy #4 hSocket
lda (pStack),y
>PUSHA
>PUSHW ZPReqPtr
pla
ply
>PUSHYA
ldx #LIBTCPIP.Send
jsr GO.LIBTCPIP
jsr WriteSocketA
bcs .99
lda #0
@ -586,9 +569,12 @@ GetPFD tax
>STYA pFD
rts
*--------------------------------------
MakeTrans2Req lda MountTable+2
GetGTX lda MountTable+2
>SYSCALL2 GetMemPtr
>STYA ZPCtxPtr
rts
*--------------------------------------
MakeTrans2Req jsr GetGTX
ldx #S.SMB.H.CMD.TRANS2
jsr RequestSetupX
@ -668,6 +654,21 @@ AppendPath ldx #0
.5 rts
*--------------------------------------
SetReqLen lda ZPReqLen
sec
sbc LenOfs
ldy LenOfs
sta (ZPReqPtr),y
iny
lda ZPReqLen+1
sbc #0
sta (ZPReqPtr),y
bra SetReqLenNETBIOS
*--------------------------------------
* Y = LEN from S.NETBIOS.TYPE
* A = Ptr to LEN Word
*--------------------------------------
@ -678,8 +679,10 @@ SetReqLenYAtA sty ZPReqLen
pha
tya
dec
dec
sec
sbc ZPPtr1
ply
@ -722,7 +725,6 @@ SetReqLenNETBIOS
dey
sta (ZPReqPtr),y
>LDYA ZPReqLen
rts
*--------------------------------------
Sleep ldy #S.PS.PID
@ -904,6 +906,14 @@ ClearSocket jsr ReadSocket
.8 clc
rts
*--------------------------------------
WriteSocket lda MountTable+3 hSocket
WriteSocketA >PUSHA
>PUSHW ZPReqPtr
>PUSHW ZPReqLen
ldx #LIBTCPIP.Send
jmp (pLIBTCPIP)
*--------------------------------------
ReadSocket lda MountTable+3 hSocket
ldx #LIBTCPIP.Recv
GO.LIBTCPIP jmp (pLIBTCPIP)
@ -1033,15 +1043,13 @@ SMB.ComWrite.H .DA #12 WORD COUNT
.BS 4 Offset
.HS 00000000 Timeout
.HS 0001 WriteMode=WritethroughMode
.BS 2 Remaining
.HS 0000 Remaining
.HS 0000 Reserved
.BS 2 DataLength
.BS 2 DataOffset
SMB.ComWrite.H.Len .EQ *-SMB.ComWrite.H
.BS 2 ByteCount
SMB.ComWrite.T
* .BS 2 ByteCount
* DATA.....
SMB.ComWrite.T.Len .EQ *-SMB.ComWrite.T
*--------------------------------------
SMB.Trans2.H .DA #15 WORD COUNT
.BS 2 TotalParamCount

View File

@ -35,10 +35,9 @@ CS.START cld
*--------------------------------------
.1 .DA LIB.LOAD
.DA LIB.UNLOAD
.DA LIBTUI.Init
.DA LIBTUI.Close
.DA Init
.DA Close
*--------------------------------------
L.SEQ.INIT .DA SEQ.INIT
.DA 0
*--------------------------------------
@ -48,7 +47,7 @@ LIB.LOAD clc
LIB.UNLOAD clc
rts
*--------------------------------------
LIBTUI.Init >LDYAI 256
Init >LDYAI 256
>SYSCALL GetMem
bcs .9
@ -58,7 +57,7 @@ LIBTUI.Init >LDYAI 256
* clc
.9 rts
*--------------------------------------
LIBTUI.Close clc
Close clc
rts
*--------------------------------------
LIBTUI.LBOXNew >PULLB hCtx

View File

@ -106,13 +106,18 @@ mliy .DA #0 MLI Y register savearea
*--------------------------------------
GP.MLIEXIT eor $E000 test for rom enable
beq .1 taken if ram enabled
sta RROMBNK2 read ROM
bne .2 always
.1 lda bnkbyt2 for alternate ram
eor $D000 test
beq .2 branch if not alternate ram
lda RRAMWRAMBNK2 else enable alt $D000
.2 pla return code
rti re-enable interrupts and return
*--------------------------------------
GP.MLICONT sec
@ -151,7 +156,7 @@ GP.FREE2 .EQ $BFEB-*
*--------------------------------------
GP.IRQV bit RRAMWRAMBNK1 ***NEW ROM ONLY IRQ $fffe > $Cxxx space***
bit RRAMWRAMBNK1 Entry used when rom/mainLC/auxLC
jmp XDOS.IRQV
jmp IRQ
*--------------------------------------
bnkbyt1 .DA #0
bnkbyt2 .DA #0

View File

@ -3,69 +3,78 @@ NEW
*--------------------------------------
* this routine handles interrupts and is coded to reach 'lreset' precisely at
* address $FFCB (ROM rts opcode) for rom switching to function.
* $2D9B-2DFF moved to $FF9B-FFFF
* $FF9B
*--------------------------------------
IRQ.START
XDOS.IRQV ldx #$FA save 6 bytes of page 0
IRQ ldx #$FA save 6 bytes of page 0
.2 lda $00,x
sta svzerop-$FA,x
sta IRQ.ZPSave-$FA,x
inx
bne .2
ldx #0
lda mslot
sta IRQ.DoneCn+2
.3 stx irqXindex
* ldx #0
lda inttbl+1,x test for a valid routine.
.3 lda inttbl+1,x test for a valid routine.
beq .4 branch if no routine.
jsr gointX execute
phx
jsr IRQ.GoX
plx
bcc irqdone
bcc IRQ.Done
.4 ldx irqXindex
inx
.4 inx
inx
cpx #10
bne .3
inc irqcount allow 255 unclaimed interrupts
bne irqdone before system death.
inc IRQ.Cnt allow 255 unclaimed interrupts
bne IRQ.Done before system death.
lda #$01 bad irq so
jsr GP.SysDeath kill the system.
*--------------------------------------
.LIST ON
IRQ.FREE1 .EQ $ffc8-*
.LIST OFF
.BS IRQ.FREE1
gorom sta RROMBNK2 hits ROM rts at $FFCB
* 'lreset' address must = $FFCB for rom switch i/o to work
IRQ.Reset1 sta RROMBNK2
.DO *=$FFCB
* hits ROM rts at $FFCB
.ELSE
ERROR
.FIN
*--------------------------------------
IRQ.Done ldx #$FA
lreset lda /resetv-1
pha
lda #resetv-1
pha
jmp gorom
irqdone ldx #$FA
.1 lda svzerop-$FA,x restore the zero page
.1 lda IRQ.ZPSave-$FA,x restore the zero page
sta $00,x
inx
bne .1
lda CLRC8ROM
IRQ.DoneCn lda $C100 SELF MODIFIED
lda IRQ.DoneCn+2
sta mslot
rti
*--------------------------------------
IRQ.GoX jmp (inttbl,x) interrupt routine x
gointX jmp (inttbl,x) interrupt routine x
IRQ.Reset lda /resetv-1
pha
lda #resetv-1
pha
bra IRQ.Reset1
irqcount .HS 00 # of unclaimed interrupts.
irqXindex .HS 00
svzerop .HS 000000000000
IRQ.Cnt .HS 00 # of unclaimed interrupts.
IRQ.ZPSave .HS 000000000000 6 bytes
.LIST ON
IRQ.FREE2 .EQ $fffa-*
@ -74,11 +83,12 @@ IRQ.FREE2 .EQ $fffa-*
.BS IRQ.FREE2
.DA nmivect nmi handler
.DA lreset reset handler
.DA IRQ.Reset reset handler
irqv .DA * PATCHED with ROM vector by LDR
.LIST OFF
*--------------------------------------
IRQ.LEN .EQ *-IRQ.START
IRQ.LEN .EQ *-IRQ
*--------------------------------------
MAN
SAVE USR/SRC/PRODOS.FX/PRODOS.S.IRQ
LOAD USR/SRC/PRODOS.FX/PRODOS.S

View File

@ -168,7 +168,7 @@ m128k sta idapple Save MACHID in temp location
lda /MLI
jsr X.Unpak.XatYA
jsr lc1in switch in language card bank 1.
jsr LDR.LCBNK1
ldx #PAKME.XRW-PAKME.Table
ldy #$D000
@ -202,15 +202,15 @@ LDR.IRQ lda RROMWRAMBNK2
ldy irqv interrupt vector
ldx irqv+1 x = high byte
jsr lc1in set language card bank 1 to r/w
jsr LDR.LCBNK1
sta SETALTZP
stx irqv+1 interrupt vector
sty irqv save irq vector in aux lc
stx irqv+1
sta CLRALTZP
stx irqv+1 save irq vector in main lc
sty irqv
stx irqv+1 save irq vector in main lc
lda #calldisp
sta jspare+1 P8 system death vector
@ -238,7 +238,7 @@ LDR.IIGS sta cortflag
* stz vmode force setvid to reset cursor
* jsr setvid reset output to screen
* jsr lc1in set language card bank 1 to r/w
* jsr LDR.LCBNK1
lda #'C'
ldx PAKME.CCLK
@ -346,7 +346,10 @@ LDR.SetupQC bit RRAMWRAMBNK2 read/write RAM bank 2
lda #$EE byte to distinguish LC bank 2
sta $D000
jmp lc1in switch in LC bank 1
*--------------------------------------
LDR.LCBNK1 lda RRAMWRAMBNK1 switch in LC bank 1
lda RRAMWRAMBNK1
rts
*--------------------------------------
DS1216E.DATA1 .EQ idxl
DS1216E.DATA2 .EQ A1L
@ -375,6 +378,8 @@ LDR.ClkDevScan lda RDCXROM
bne .1
sta $C300
lda $C00B Workaround for Ultrawarp bug
lda $C304 Reset DS1216E comparison register with READ A2=1
ldx #8 Read 8 bytes...
@ -490,7 +495,7 @@ LDR.SetupCLK stx ZPInBufPtr
ldx #LDR.MSG.CLK
jsr LDR.PrintX
jsr lc1in
jsr LDR.LCBNK1
lda #$D742
sta ZPOutBufPtr
@ -510,7 +515,7 @@ LDR.SetupRAM lda DEVCNT
cmp #13
bcs LDR.SetupCLK.RTS
jsr lc1in
jsr LDR.LCBNK1
ldx #PAKME.RAM-PAKME.Table
ldy #$FF00
@ -805,7 +810,7 @@ LDR.MountSPDevs ldx #LDR.DEVPTRS.CNT-1
sec
rts
.3 jsr lc1in write enable LC ram bank 1.
.3 jsr LDR.LCBNK1
tya divide index by 2
lsr
@ -1092,9 +1097,6 @@ LDR.3F0 .DA breakv
jmp oldrst ctrl-y vector
.HS 004000
.DA GP.IRQV global page interrupt vector
lc1in lda RRAMWRAMBNK1
lda RRAMWRAMBNK1
rts
*--------------------------------------
* patch to gsos vectors so error is returned for os calls - rev note #101
*--------------------------------------

View File

@ -178,6 +178,7 @@ XDOS.intmgr sta A4L interrupt command
ldy #$03 get address of routine.
lda (A3L),y must not be zero page.
beq badint error if it is.
sta inttbl-2,x save high address
dey
lda (A3L),y

View File

@ -743,11 +743,13 @@ XDOS.SPParams.B .HS 0000 data buffer
.HS 000000 block number (3 bytes)
*--------------------------------------
.DO XRWDBG=1
XRW.DEBUG.BASE .EQ $750
XRW.DEBUG sta CLRPAGE2
lda #" "
sta $722
sta XRW.DEBUG.BASE+$22
lda #"R"
bit XRW.bWrite
@ -755,7 +757,7 @@ XRW.DEBUG sta CLRPAGE2
lda #"W"
.1 sta $723
.1 sta XRW.DEBUG.BASE+$23
ldx #$24
@ -781,7 +783,7 @@ XRW.DEBUG.PBYTEx
adc #6
.8 sta $700,x
.8 sta XRW.DEBUG.BASE,x
inx
rts

View File

@ -395,11 +395,11 @@ XRW.TestWP ldx A2L
.LIST ON
XRW.Write bit IO.D2.ReadProt,x (4) PREWRITE MODE
.LIST OFF
* bit IO.D2.ReadMode,x (4)
bit IO.D2.ReadMode,x (4)
lda #$FF (2)
nop (2)
* nop (2)
sta IO.D2.WriteMode,x (5) goto write mode
ora IO.D2.WShift,x (4)
@ -784,6 +784,7 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
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
@ -827,6 +828,7 @@ XRW.SeekYA sta XRW.D2Trk-1,x will be current track at the end
.6 jsr XRW.SeekPhOnY now X and Y on
.8 lda XRW.SeekTime
.9 jsr XRW.Wait100usecA ...wait...
lda XRW.CurrentQTrack

View File

@ -11,7 +11,7 @@ LOWERCASE .EQ 1
ACL .EQ 1
LOGO .EQ 1
*--------------------------------------
XRWDBG .EQ 0
XRWDBG .EQ 1
*--------------------------------------
.INB inc/zp.i
.INB inc/io.i