Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-06-10 22:04:13 +02:00
parent d215bfbafe
commit 50438e6abf
9 changed files with 157 additions and 124 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -365,8 +365,9 @@ CS.RUN.LL.DISKII
sec
rts
.8 ldx #0
jsr CS.RUN.SeekToX
.8
* ldx #0
* jsr CS.RUN.SeekToX
>PUSHW L.MSG.CRLF
>PUSHBI 0

View File

@ -279,20 +279,6 @@ OPEN.I jsr CLOSE
lda #W5100.MR.PB+W5100.MR.AI+W5100.MR.IND
sta W5100.MR,x
>AR.SELECT SHAR
ldy #0
.1 lda DCB+S.DCB.NIC.MAC,y
sta W5100.DR,x
iny
cpy #6
bne .1
>AR.SELECT RMSR
lda #%00100101 ICMP=2k,UDP=2k,TCP=4k,0k
sta W5100.DR,x ...for Socket RX Buffers
sta W5100.DR,x ...for Socket TX Buffers
>AR.SELECT GAR
ldy #0
@ -313,7 +299,16 @@ OPEN.I jsr CLOSE
cpy #4
bne .3
>AR.SELECT SIPR
* >AR.SELECT SHAR
ldy #0
.1 lda DCB+S.DCB.NIC.MAC,y
sta W5100.DR,x
iny
cpy #6
bne .1
* >AR.SELECT SIPR
ldy #0
@ -323,15 +318,20 @@ OPEN.I jsr CLOSE
cpy #4
bne .4
>AR.SELECT RMSR
lda #%00100101 ICMP=2k,UDP=2k,TCP=4k,0k
sta W5100.DR,x ...for Socket RX Buffers
sta W5100.DR,x ...for Socket TX Buffers
lda /W5100.AR.S0.MR
sta Sn.IO
ldy #S.IP.PROTOCOL.ICMP
ldy #S.IP.PROTOCOL.UDP
jsr OPEN.SnY
inc Sn.IO
ldy #S.IP.PROTOCOL.UDP
ldy #S.IP.PROTOCOL.ICMP
jsr OPEN.SnY
inc Sn.IO
@ -412,7 +412,7 @@ READ php
jmp READWRITE.NODATA
.1 lda Sn.IP.PROTOCOL,y
sta .15+1
sta FRM.HDR.PROTO
lda Sn.RX.BASE,y
sta Sn.BASE
lda Sn.RXTX.MASK,y
@ -469,7 +469,16 @@ READ php
bcc .11
inc RXTX.Size+1
.11 >LDYA BUF.Size
.11 lda RXTX.Size
clc
adc #S.IP-S.ETH.EII
sta FRM.HDR.IPLEN+1
lda RXTX.Size+1
adc /S.IP-S.ETH.EII
sta FRM.HDR.IPLEN
>LDYA BUF.Size
>SYSCALL2 getmem
bcc .14
@ -484,28 +493,32 @@ READ php
dey
pla
sta (ZPIOCTL),y
ldy #S.ETH.EII.TYPE
.15 lda FRM.HDR-S.ETH.EII.TYPE,y
sta (ZPBufPtr),y
iny
cpy #S.ETH.EII.TYPE+FRM.HDR.LEN
bne .15
.15 lda #$ff SELF MODIFIED
* ldy #S.IP.PROTOCOL
* sta (ZPBufPtr),y
ldx #3
ldy #S.IP.SRC+3
* ldx #3
* ldy #S.IP.SRC+3
.12 lda RX.IP,x
sta (ZPBufPtr),y
dey
dex
bpl .12
*.12 lda RX.IP,x
* sta (ZPBufPtr),y
* dey
* dex
* bpl .12
ldx #3
ldy #S.IP.DST+3
* ldx #3
* ldy #S.IP.DST+3
*.13 lda DCB+S.DCB.NIC.IP,x
* sta (ZPBufPtr),y
* dey
* dex
* bpl .13
.13 lda DCB+S.DCB.NIC.IP,x
sta (ZPBufPtr),y
dey
dex
bpl .13
ldy #S.IP
@ -677,11 +690,13 @@ GET.IOCTLBUFPTR >STYA ZPIOCTL
*--------------------------------------
DRV.CS.END
Sn.cnt .EQ 3
Sn.IP.PROTOCOL .DA #S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.UDP,#S.IP.PROTOCOL.TCP
.LIST ON
Sn.IP.PROTOCOL .DA #S.IP.PROTOCOL.UDP,#S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.TCP
Sn.IO.BASE .DA /W5100.AR.S0.MR,/W5100.AR.S1.MR,/W5100.AR.S2.MR
Sn.TX.BASE .DA /TX.BASE,/TX.BASE+$800,/TX.BASE+$1000
Sn.RX.BASE .DA /RX.BASE,/RX.BASE+$800,/RX.BASE+$1000
Sn.RXTX.MASK .DA /$7FF,/$FFF,/$1FFF 2k,2k,4k
Sn.RXTX.MASK .DA /$7FF,/$7FF,/$FFF 2k-1,2k-1,4k-1
.LIST OFF
DEVSLOTx0 .BS 1
*--------------------------------------
DIB .DA #0
@ -700,6 +715,18 @@ DCB .DA #S.DCB.T.NIC
.DA #255,#255,#255,#255 MASK
.DA #0,#0,#0,#0 GW
*--------------------------------------
FRM.HDR .HS 0800 S.ETH.EII.TYPE
.HS 4500
FRM.HDR.IPLEN .BS 2 TOTAL LEN
.DA 0 ID
.DA 0 FLAGS
.DA #64 TTL
FRM.HDR.PROTO .BS 1 IP.PROTO
.DA 0 CHECKSUM
FRM.HDR.LEN .EQ *-FRM.HDR
*FRM.HDR.SRC .BS 4 IP.SRC
* .BS 4 IP.DST
*--------------------------------------
DRV.END
MAN
SAVE usr/src/drv/uther2.ai.drv.s

View File

@ -97,8 +97,8 @@ L59BD ldx A2L
*--------------------------------------
* read/write a track/sector
regrwts ldy #$01 retry count
sty XRW.Recalibrate only one recalibrate per call
regrwts ldy #3
sty XRW.RecalibrateCnt
sta XRW.ReqSector
* now check if the motor is on, then start it
@ -167,7 +167,7 @@ L538E lda A4L get command #
bcs L5398 must prenibblize for write
jsr XRW.PreNibble
*--------------------------------------
L5398 ldy #64
sty XRW.RetryCnt
@ -177,66 +177,44 @@ L539D jsr XRW.ReadAddr read next address field.
L53A4 dec XRW.RetryCnt one less chance.
bpl L539D branch to retry.
lda #MLI.E.IO anticipate a bad drive error.
dec XRW.Recalibrate can only recalibrate once.
bne hndlerr
XRW.Recalibrate lda #MLI.E.IO anticipate a bad drive error.
dec XRW.RecalibrateCnt can only recalibrate once.
bmi hndlerr
lda XRW.CurrentTrack
pha save track
clc
adc #8 pretend track is 12 > curtrk
ldy #64
sty XRW.RetryCnt reset retries to 64 max.
bra L53CC always.
lda #54
ldy XRW.UnitIndex
sta XRW.D2Trk-1,y
lda #0
jsr XRW.Seek
bra L5398
* have now read an address field. make sure this is
* the correct track, sector and volume.
L53BE ldy XRW.AddrField.T
cpy XRW.CurrentTrack
L53BE jsr XRW.DEBUG
lda XRW.AddrField.T
cmp XRW.ReqTrack
beq L53D5 ok
tya
pha
lsr
lsr
lsr
lsr
ora #$30
sta $724
pla
ora #$30
sta $725
lda XRW.CurrentTrack
pha
lsr
lsr
lsr
lsr
ora #$B0
sta $726
pla
ora #$B0
sta $727
lda XRW.AddrField.V
ldy XRW.UnitIndex
cmp XRW.D2VolNum-1,y
bne XRW.Recalibrate
* recalibrating from this track
lda XRW.CurrentTrack preserve destination track
pha
tya
L53CC ldy XRW.UnitIndex get index to drive #
lda XRW.AddrField.T
sta XRW.D2Trk-1,y set the slot dependent track location
pla
lda XRW.ReqTrack
jsr XRW.Seek
bra L539D
bra L5398
* drive is on right track, check sector
L53D5 lda XRW.AddrField.V
ldy XRW.UnitIndex
sta XRW.D2VolNum-1,y
L53D5 lda XRW.AddrField.S is this the right sector ?
lda XRW.AddrField.S is this the right sector ?
cmp XRW.ReqSector
bne L53A4 no, try another sector.
@ -754,17 +732,12 @@ L57CD pla place last byte into user buffer
sta (buf),y
rts
*--------------------------------------
* fast seek subroutine
* A = desired track
* XRW.CurrentTrack = current rack
*
* montimel,h are incremented by the # of 100us quantums required by seek for motor on time overlap.
* variables used: XRW.CurrentTrack, A2L, montimel, montimeh
* A = target track
*--------------------------------------
XRW.Seek ldx XRW.UnitIndex
pha save target track
XRW.Seek pha save target track
ldx XRW.UnitIndex
jsr XRW.Trk2Qtrk
sta XRW.TargetQTrack
@ -774,7 +747,6 @@ XRW.Seek ldx XRW.UnitIndex
sta XRW.CurrentQTrack
pla
sta XRW.CurrentTrack
sta XRW.D2Trk-1,x will be current track at the end
ldy #0
@ -951,16 +923,57 @@ L56E6 lda IO.D2.RData,x first bit-slip nibl
cmp #$DE
bne rderr
lda XRW.AddrField.V
ldy XRW.UnitIndex
sta XRW.D2VolNum-1,y
clc normal read ok
rts
rderr sec
rts
*--------------------------------------
XRW.DEBUG lda XRW.AddrField.T
pha
lsr
lsr
lsr
lsr
jsr .7
sta $724
pla
jsr .7
sta $725
lda XRW.ReqTrack
pha
lsr
lsr
lsr
lsr
jsr .7
sta $726
pla
jsr .7
sta $727
lda XRW.AddrField.T
cmp XRW.ReqTrack
bne .6
lda #$A0
sta $723
rts
.6 lda #'!'
sta $723
rts
.7 and #$0F
ora #$B0
cmp #"9"+1
bcc .9
adc #6
.9 rts
*--------------------------------------
.LIST ON
XRW.FREE .EQ $D540-*
@ -986,7 +999,7 @@ XRW.UnitIndex .HS 00
XRW.LastUnitUsed .HS 00
.HS 080C
* .HS FF
XRW.Recalibrate .HS 00
XRW.RecalibrateCnt .HS 00
.HS 101418
XRW.XX000000 .HS 008040C0 used in fast prenib as lookup for 2-bit quantities.
* .HS FFFF
@ -999,8 +1012,7 @@ XRW.montimeh .HS 00
XRW.ReqTrack .HS 00
XRW.ReqSector .HS 00
.HS 383C4044484C
* .HS FF
XRW.CurrentTrack .HS 00
.HS FF
.HS 5054585C606468
XRW.00XX0000 .HS 00201030 used in fast prenib.
XRW.EndDataMark .HS DEAAEB table using 'unused' nibbles ($C4,$C5,$C6,$C7)

View File

@ -6,7 +6,7 @@ NEW
.TF sbin/networkd
*--------------------------------------
LIB.MAX .EQ 4
DBG .EQ 1
DBG .EQ 0
*--------------------------------------
.INB inc/macros.i
.INB inc/a2osx.i
@ -254,10 +254,10 @@ CS.RUN >PUSHB DevID
.22 >PUSHB (pBuf),y
iny
cpy #36
cpy #50
bne .22
>PUSHBI 36
>PUSHBI 50
>SYSCALL printf
.FIN
@ -336,7 +336,8 @@ MSG.EXEC .AZ "NETWORKD:Running %s ...\r\n"
ETCNETWORK .AZ "${BOOT}etc/network"
.DO DBG=1
MSG.DBG .AS "FRM %h%h%h%h%h%h.%h%h%h%h%h%h.%h%h\r\n"
.AZ " %h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h.%h%h%h%h\r\n"
.AS " %h%h.%h%h%h%h%h%h.%h%h%h%h %d.%d.%d.%d %d.%d.%d.%d\r\n"
.AZ " %h%h%h%h%h%h%h%h.%h%h%h%h%h%h%h%h\r\n"
.FIN
*--------------------------------------
DevID .BS 1

View File

@ -1123,11 +1123,7 @@ TERMX.SETUP.L1X lda ZPDCBPtr
TERMX.SETUP.L1X.SCR
lda SCR.BASEL,x
sta ZPScrBaseL1
txa
lsr
and #$3
ora #4
* lda SCR.BASEH,x
lda SCR.BASEH,x
sta ZPScrBaseL1+1
TERMX.SETUP.L1X.8
rts
@ -1298,11 +1294,7 @@ TERMX.COPY.XtoL1
lda SCR.BASEL,x
sta ZPScrBaseL2
* lda SCR.BASEH,x
txa
lsr
and #$3
ora #4
lda SCR.BASEH,x
sta ZPScrBaseL2+1
sta SET80STORE
sta SETPAGE2
@ -1475,7 +1467,7 @@ REMAP.E0.FF .HS 5B4142434445464748495FA0DF544e4f
.HS 50DF5253545556575F595a5b5c5d5e5f
*--------------------------------------
SCR.BASEL .HS 00.80.00.80.00.80.00.80.28.A8.28.A8.28.A8.28.A8.50.D0.50.D0.50.D0.50.D0
*SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
SCR.BASEH .HS 04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07.04.04.05.05.06.06.07.07
*--------------------------------------
BUF.BASEL .DA #S.DCB.TTY+0
.DA #S.DCB.TTY+80