Kernel 0.94

This commit is contained in:
Rémy GIBERT 2020-06-09 15:40:21 +02:00
parent 3cdac2576c
commit d215bfbafe
18 changed files with 356 additions and 173 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -387,19 +387,25 @@ CS.RUN.LL.DISKII.V
>SYSCALL GetMemPtr
>STYA.G IOCTL+S.IOCTL.BUFPTR
>STZ.G IOCTL+S.IOCTL.BLKNUM
iny
sta (pData),y
>LDYA BlkCnt
>STYA.G IOCTL+S.IOCTL.BLKNUM
stz CurTrack
* >STZ.G IOCTL+S.IOCTL.BLKNUM
* iny
* sta (pData),y
lda TrkCnt
sta Counter
dec
sta CurTrack
.1 ldx #8
.2 phx
>DECW.G IOCTL+S.IOCTL.BLKNUM
>PUSHW L.MSG.VERIFY
>PUSHB CurTrack
>PUSHW.G IOCTL+S.IOCTL.BLKNUM
@ -418,11 +424,10 @@ CS.RUN.LL.DISKII.V
plx
bcs .9
>INCW.G IOCTL+S.IOCTL.BLKNUM
dex
bne .2
inc CurTrack
dec CurTrack
dec Counter
bne .1

View File

@ -349,6 +349,6 @@ BASEH .HS 20.24.28.2C.30.34.38.3C
.HS 23.27.2B.2F.33.37.3B.3F
*--------------------------------------
MAN
SAVE USR/SRC/DRV/DHGR.DRV.G
LOAD USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.g
LOAD usr/src/drv/dhgr.drv.s
ASM

View File

@ -18,27 +18,34 @@ NEW
BITBLT ldy CB.CACHE+S.CB.SrcPtr
lda CB.CACHE+S.CB.SrcPtr+1
bne BITBLT.1
sta SETREADAUX
sta SETWRITEAUX
tya
>SYSCALL2 GetMemPtr
jsr BITBLT.1
sta CLRREADAUX
sta CLRWRITEAUX
rts
BITBLT.1 >STYA ZPBMDataPtr
ldy #S.BM-1
.1 lda (ZPBMDataPtr),y
sta BM.Cache,y
dey
bpl .1
ldx #0
lda BM.Cache+S.BM.F
cmp #S.BM.F.BBP1
beq .11
ldx #$80
.11 stx BLT.CMASK
lda ZPBMDataPtr
clc
@ -93,11 +100,14 @@ BITBLT.1 >STYA ZPBMDataPtr
inc BLT.BMDataPtr+1
clc
.3 pla
adc BLT.BMMaskPtr
sta BLT.BMMaskPtr
bcc .4
inc BLT.BMMaskPtr+1
.4 >LDYA CB.Cache+S.CB.DstX
jsr LBUF.SetBounds1YA
stx BLT.SCRBitOfs
@ -116,6 +126,7 @@ BITBLT.1 >STYA ZPBMDataPtr
jsr LBUF.SetBounds2YA
ldx BLT.SCRBitOfs
beq BITBLT.LOOP0
ldy Shift.L.LO-1,x X = 1->6
sty ZPScrShiftPtr
ldy Shift.L.HI-1,x X = 1->6
@ -285,10 +296,12 @@ BLT.Get7BMBits ldx BLT.BMBitOfsL
dex OFS 0->6
beq BLT.Get7BMBits1 OFS was 1....done and go to next byte, OFS=0
lda Shift.R.LO-1,x X = 1->6
sta ZPBMShiftPtr
lda Shift.R.HI-1,x X = 1->6
sta ZPBMShiftPtr+1
lda (ZPBMDataPtr)
lsr OFS=1->7, shift one (Range 0->127)
and Mask7BitsH,x Get only left upper X bits
@ -297,9 +310,10 @@ BLT.Get7BMBits ldx BLT.BMBitOfsL
pha
inc ZPBMDataPtr Next BM data byte
bne .1
inc ZPBMDataPtr+1
.1 lda (ZPBMDataPtr) get next byte
inc ZPBMDataPtr+1
.1 lda (ZPBMDataPtr) get next byte
and Mask7BitsL,x only first Y bits 000000yy
tay
pla get back right part bits 000xxxxx
@ -312,6 +326,7 @@ BLT.Get7BMBits0 lda #7
lda (ZPBMDataPtr)
and #%01111111 Get only 7 needed bits
rts
BLT.Get7BMBits1 lda (ZPBMDataPtr)
lsr OFS=1->7, shift one (Range 0->127)
@ -323,6 +338,6 @@ BLT.Get7BMBits1 lda (ZPBMDataPtr)
.8 rts
*--------------------------------------
MAN
SAVE USR/SRC/DRV/DHGR.DRV.S.RECT
LOAD USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.s.rect
LOAD usr/src/drv/dhgr.drv.s
ASM

View File

@ -18,7 +18,7 @@ LBUF.SetBounds2YA
cmp LBUF.C1 C1=C2, go combine in C1
beq .1
lda C2.MASK,x
lda C2.MASK,x
sta LBUF.C2.MASK
lda C2.DATA,x
sta LBUF.C2.DATA
@ -36,11 +36,14 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
sta ZPBasePtr
lda BASEH,y
sta ZPBasePtr+1
lda CB.Cache+S.CB.OP
bit #S.CB.OP.RESTORE
bne .4
bit #S.CB.OP.SAVE
beq .3
ldx LBUF.C1
.1 ldy COL.BANK,x
@ -50,14 +53,18 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
sta (ZPBMSavePtr)
inc ZPBMSavePtr
bne .2
inc ZPBMSavePtr+1
.2 cpx LBUF.C2
inx
bcc .1
lda CB.Cache+S.CB.OP
.3 and #$F
tax
jmp (J.LBUF.DrawAtY,x)
.4 ldx LBUF.C1
.5 ldy COL.BANK,x
@ -67,7 +74,9 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
sta (ZPBasePtr),y
inc ZPBMSavePtr
bne .6
inc ZPBMSavePtr+1
.6 cpx LBUF.C2
inx
bcc .5
@ -75,7 +84,7 @@ LBUF.DrawAtY lda BASEL,y setup line Base Ptr
rts
*--------------------------------------
LBUF.DrawAtY.SET
LBUF.DrawAtY.AND.SET USELESS
LBUF.DrawAtY.AND.SET
ldx LBUF.C1 x C1->C2
ldy COL.BANK,x
sta $C000,y
@ -91,6 +100,7 @@ LBUF.DrawAtY.AND.SET USELESS
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
@ -102,6 +112,7 @@ LBUF.DrawAtY.AND.SET USELESS
inx
cpx LBUF.C2
bcc .1
.2 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
@ -117,7 +128,7 @@ LBUF.DrawAtY.AND.SET USELESS
.8 rts
*--------------------------------------
LBUF.DrawAtY.XOR
LBUF.DrawAtY.AND.XOR UELESS
LBUF.DrawAtY.AND.XOR
lda #$51 EOR (Indirect),Y
bra LBUF.DrawAtY.XXX
*--------------------------------------
@ -127,13 +138,16 @@ LBUF.DrawAtY.XXX
sta .10+1
sta .20+1
sta .30+1
ldx LBUF.C1 x C1->C2
ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y Get C1
and LBUF.C1.MASK clear ONLY bits starting at X1 mod 7
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte
@ -142,7 +156,9 @@ LBUF.DrawAtY.XXX
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
@ -153,6 +169,7 @@ LBUF.DrawAtY.XXX
inx
cpx LBUF.C2
bne .1
.2 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
@ -180,24 +197,27 @@ LBUF.DrawAtY.AND.ORA
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte ora with screen bits
and LBUF.C1.DATA set ONLY bits starting at X1 mod 7
ora ZPTmpByte ora with screen bits
sta (ZPBasePtr),y update screen
inx
cpx LBUF.C2
beq .2 C1=C2, go setup C2
bcs .8 C1+1 > C2, we are done...
.1 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
lda (ZPBasePtr),y
and LBUF.MASK,x
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
and LBUF.MASK,x
ora LBUF.DATA,x set all bytes between C1+1 & C2-1
sta (ZPBasePtr),y
inx
cpx LBUF.C2
bne .1
.2 ldy COL.BANK,x
sta $C000,y
ldy COL.OFS,x
@ -205,13 +225,14 @@ LBUF.DrawAtY.AND.ORA
ora LBUF.C2.MASK
and (ZPBasePtr),y
sta ZPTmpByte
lda LBUF.DATA,x get DATA bits
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora ZPTmpByte
and LBUF.C2.DATA set ONLY bits ending at X2 mod 7
ora ZPTmpByte
sta (ZPBasePtr),y update screen
.8 rts
*--------------------------------------
MAN
SAVE USR/SRC/RV/DHGR.DRV.S.LBUF
LOAD USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.s.lbuf
LOAD usr/src/drv/dhgr.drv.s
ASM

View File

@ -8,6 +8,7 @@ HLINE lda CB.Cache+S.CB.M
cmp #S.CB.M.MONO
bne HLINE.C16
HLINE.MONO >LDYA CB.Cache+S.CB.X1
jsr LBUF.SetBounds1YA
>LDYA CB.Cache+S.CB.X2
@ -15,7 +16,9 @@ HLINE.MONO >LDYA CB.Cache+S.CB.X1
lda CB.Cache+S.CB.COLOR
beq .1
lda #%01111111
.1 ldx LBUF.C1
.2 sta LBUF.DATA,x
cpx LBUF.C2
@ -24,6 +27,7 @@ HLINE.MONO >LDYA CB.Cache+S.CB.X1
ldy CB.Cache+S.CB.Y1
jmp LBUF.DrawAtY
HLINE.C16 lda CB.Cache+S.CB.X1
and #%11111100
tay
@ -45,10 +49,13 @@ HLINE.C16 lda CB.Cache+S.CB.X1
lda L.Color.Pixels+1
adc #0
sta ZPTmpWord+1
ldx LBUF.C1
.1 txa
and #3 Compute index in Palette (Mod 4)
tay
.2 lda (ZPTmpWord),y
sta LBUF.DATA,x
cpx LBUF.C2
@ -94,6 +101,7 @@ VLINE.MONO.BLACK
cpy CB.Cache+S.CB.Y2
iny
bcc .1
rts
VLINE.MONO.WHITE
@ -136,6 +144,6 @@ VLINE.C16 lda CB.Cache+S.CB.X1
rts
*--------------------------------------
MAN
SAVE USR/SRC/DRV/DHGR.DRV.S.LINE
LOAD USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.s.line
LOAD usr/src/drv/dhgr.drv.s
ASM

View File

@ -32,6 +32,7 @@ SETPIXEL.MONO >LDYA CB.Cache+S.CB.X1
lda CB.Cache+S.CB.OP
* cmp #S.CB.OP.XOR
beq SETPIXEL.MONO.XOR
lda CB.Cache+S.CB.COLOR
bne SETPIXEL.MONO.WHITE
SETPIXEL.MONO.BLACK
@ -97,19 +98,21 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
iny
lda Color.Masks,x
beq .11
and Color.Pixels,y apply color
sta ZPTmpByte
sta CLRPAGE2
lda (ZPBasePtr)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
sta (ZPBasePtr)
.11 inc ZPBasePtr
inx
iny
lda Color.Masks,x
beq .12
and Color.Pixels,y apply color
sta ZPTmpByte
sta SETPAGE2
@ -117,10 +120,12 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
sta (ZPBasePtr)
.12 inx
iny
lda Color.Masks,x
beq .13
and Color.Pixels,y apply color
sta ZPTmpByte
sta CLRPAGE2
@ -128,6 +133,7 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
and Color.NMasks,x reset existing pixel,
ora ZPTmpByte
sta (ZPBasePtr)
.13 rts
*--------------------------------------
* GETPIXEL
@ -135,6 +141,6 @@ SETPIXEL.C16.YX lda DIV7.0,y PixelX MOD 7 (range 0->19)
GETPIXEL rts
*--------------------------------------
MAN
SAVE USR/SRC/DRV/DHGR.DRV.S.PIX
LOAD USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.s.pix
LOAD usr/src/drv/dhgr.drv.s
ASM

View File

@ -23,6 +23,7 @@ FILLRECT jsr HLINE
ply
cpy CB.Cache+S.CB.Y2
bne .2
.8 rts
*--------------------------------------
* 4 : SrcX1
@ -52,6 +53,6 @@ GETRECTBUFSIZE >LDYA CB.Cache+S.CB.X1
rts
*--------------------------------------
MAN
SAVE USR/SRC/DRV/DHGR.DRV.S.BLT
LOAD USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.s.blt
LOAD usr/src/drv/dhgr.drv.s
ASM

View File

@ -5,13 +5,13 @@ NEW
.OR $2000
.TF drv/dhgr.drv
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.I
.INB INC/MLI.E.I
.INB INC/IO.I
.INB INC/GFX.I
.INB INC/GFX.EVE.I
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/io.i
.INB inc/gfx.i
.INB inc/gfx.eve.i
*--------------------------------------
ZPPtr .EQ ZPBIN
*--------------------------------------
@ -36,6 +36,13 @@ L.MSG.DETECT.80C .DA MSG.DETECT.80C
L.DRV.CS.START .DA DRV.CS.START
L.FD.DEV .DA FD.DEV
L.FD.DEV.NAME .DA FD.DEV.NAME
*--------------------------------------
L.SHIFT .DA SHIFT.L1
.DA SHIFT.L2
.DA SHIFT.L3
.DA SHIFT.L4
.DA SHIFT.L5
.DA SHIFT.L6
.DA 0 End Of Reloc Table
*--------------------------------------
Dev.Detect >LDYA L.MSG.DETECT
@ -91,6 +98,7 @@ Dev.Detect >LDYA L.MSG.DETECT
>PUSHW L.FD.DEV.NAME
>SYSCALL MKDEV
bcs .9
php
sei
>LDYAI $4000
@ -106,6 +114,53 @@ Dev.Detect >LDYA L.MSG.DETECT
.9 rts
*--------------------------------------
DrvReloc lda FD.DEV+S.FD.DEV.DRVPTR
sec
sbc #DRV.CS.START
sta ZPPtr
lda FD.DEV+S.FD.DEV.DRVPTR+1
sbc /DRV.CS.START
sta ZPPtr+1
ldx #0
ldy #0
.1 lda L.SHIFT,x Get relocated LO BYTE
clc
adc ZPPtr
sta Shift.L.LO,y
inx
lda L.SHIFT,x Get relocated HI BYTE
adc ZPPtr+1
sta Shift.L.HI,y
inx
iny
cpy #6
bne .1
ldx #0 SHIFT.L1 = SHIFT.R6 !!!
ldy #5
.2 lda L.SHIFT,x Get relocated LO BYTE
clc
adc ZPPtr
sta Shift.R.LO,y
inx
lda L.SHIFT,x Get relocated HI BYTE
adc ZPPtr+1
sta Shift.R.HI,y
inx
dey
bpl .2
rts
*--------------------------------------
ClrScr ldx #0
txa lda #0
.1 ldy BASEL,x
@ -205,12 +260,7 @@ J.LBUF.DrawAtY .DA LBUF.DrawAtY.XOR
.DA LBUF.DrawAtY.AND.XOR
.DA LBUF.DrawAtY.AND.SET
.DA LBUF.DrawAtY.AND.ORA
L.SHIFT .DA SHIFT.L1
.DA SHIFT.L2
.DA SHIFT.L3
.DA SHIFT.L4
.DA SHIFT.L5
.DA SHIFT.L6
* .DA $ffff
L.Color.Pixels .DA Color.Pixels
.DA 0 end or relocation
*--------------------------------------
@ -249,6 +299,7 @@ STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB
clc
rts
STATUS.9 lda #MLI.E.BADCTL
sec
rts
@ -260,40 +311,17 @@ OPEN tax DEV.ID in A
bne CLOSE.IOE
lda A2osX.SCRNDEVS+9
beq .20
beq .1
lda #E.OOH
sec
rts
.20 stx A2osX.SCRNDEVS+9
.1 stx A2osX.SCRNDEVS+9
stx DCB+S.DCB.GFX.DEVID
lda #S.DIB.S.OPENED
tsb DIB+S.DIB.S
ldx #0
ldy #0
.1 lda L.SHIFT,x Get relocated LO BYTE
sta Shift.L.LO,y
inx
lda L.SHIFT,x Get relocated HI BYTE
sta Shift.L.HI,y
inx
iny
cpy #6
bne .1
ldx #0 SHIFT.L1 = SHIFT.R6 !!!
ldy #5
.2 lda L.SHIFT,x Get relocated LO BYTE
sta Shift.R.LO,y
inx
lda L.SHIFT,x Get relocated HI BYTE
sta Shift.R.HI,y
inx
dey
bpl .2
*--------------------------------------
CONTROL lda DCB+S.DCB.GFX.DEVID NON STANDARD
cmp A2osX.ASCREEN
@ -339,13 +367,17 @@ WRITE >STYA ZPIOCTL NON STANDARD
.1 tax
ldy CB.CmdLen,x
.2 lda (ZPIOCTL),y
sta CB.Cache,y
dey
bpl .2
.3 jsr .10
clc
rts
.10 jmp (J.Cmds,x)
*--------------------------------------
* IN:
@ -357,8 +389,10 @@ WRITE >STYA ZPIOCTL NON STANDARD
*--------------------------------------
DIVMOD7YA dec
bmi .2
clc
beq .1
lda DIV7.512,y
adc #$49
ldx MOD7.512,y
@ -368,6 +402,7 @@ DIVMOD7YA dec
adc #$24
ldx MOD7.256,y
rts
.2 lda DIV7.0,y
ldx MOD7.0,y
rts
@ -385,6 +420,7 @@ YAMultX stx ZPTmpByte
ldy #0 Result LO
tya Result HI
bra .3
.1 pha
tya
clc
@ -392,22 +428,25 @@ YAMultX stx ZPTmpByte
tay
pla
adc ZPTmpWord+1
.2 asl ZPTmpWord
rol ZPTmpWord+1
.3 lsr ZPTmpByte
bcs .1
bne .2
rts
*--------------------------------------
.INB USR/SRC/DRV/DHGR.DRV.S.BLT
.INB USR/SRC/DRV/DHGR.DRV.S.LBUF
.INB USR/SRC/DRV/DHGR.DRV.S.LINE
.INB USR/SRC/DRV/DHGR.DRV.S.PIX
.INB USR/SRC/DRV/DHGR.DRV.S.RECT
.INB usr/src/drv/dhgr.drv.s.blt
.INB usr/src/drv/dhgr.drv.s.lbuf
.INB usr/src/drv/dhgr.drv.s.line
.INB usr/src/drv/dhgr.drv.s.pix
.INB usr/src/drv/dhgr.drv.s.rect
*--------------------------------------
DRV.CS.END
*--------------------------------------
.INB USR/SRC/DRV/DHGR.DRV.G
.INB usr/src/drv/dhgr.drv.g
*--------------------------------------
CONTROL.80C .DA #SETIOUDIS
.DA #CLRTEXT
@ -424,12 +463,14 @@ CONTROL.80C .DA #SETIOUDIS
.DA #SETAN3
.DA #0
CONTROL.EVE .DA #SETIOUDIS
.DA #CLRTEXT
.DA #SETHIRES
.DA #HR1.OFF
.DA #HR2.ON
.DA #HR3.ON
.DA #0
*--------------------------------------
Shift.L.LO .BS 6
@ -472,5 +513,5 @@ DRV.CS.SIZE .EQ DRV.CS.END-DRV.CS.START
DRV.SIZE .EQ DRV.END-DRV.CS.START
.LIST OFF
MAN
SAVE USR/SRC/DRV/DHGR.DRV.S
SAVE usr/src/drv/dhgr.drv.s
ASM

View File

@ -486,26 +486,26 @@ READ php
sta (ZPIOCTL),y
.15 lda #$ff SELF MODIFIED
ldy #S.IP.PROTOCOL
sta (ZPBufPtr),y
* 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

View File

@ -354,7 +354,7 @@ BB.Seek lda BB.HdrTrk get track we're on
.5 lda IO.D2.Ph0On,x
ply
lda #164
lda #184
jsr BB.Wait100usecA
bra .1

View File

@ -26,21 +26,12 @@ D2Recalibrate >PULLB DrvSlt
bcs .9
stz MoveTo
lda #252
lda #162
sta MoveFrom
jsr D2MoveHead.1
* lda #0
* jsr D2.PhaseOn
* lda #0 wait 25.6 ms
* jsr D2.Wait100usecA
* lda #0
* jsr D2.PhaseOff
lda #0 wait 25.6 ms
jsr D2.Wait100usecA
jsr D2.Wait25600usec
clc
.9 rts
@ -63,7 +54,7 @@ D2MoveHead.1 ldy #0
sbc MoveFrom
beq .8
bcc .3
bcc .2
* Current < Target, must move in
@ -78,42 +69,45 @@ D2MoveHead.1 ldy #0
* Current > Target, must move out
.3 cmp #$FF
.2 cmp #$FF
beq .5 one QT remaining
lda MoveFrom
bit #1 from QT1 or QT3
bne .30
bne .3
dec
.30 dec
.3 dec
.4 sta MoveFrom
jsr D2.PhaseOn
lda #164
lda #194
jsr D2.Wait100usecA
bra .1
.5 lda MoveTo
and #6
ora Slotn0
tax
inc
inc
and #$F7
tay
lda IO.D2.Ph0On,x
lda IO.D2.Ph0On,y
phx
* lda #164
* jsr D2.Wait100usecA
.5 bcs .6
lda #0 wait 25.6 ms
jsr D2.Wait100usecA
plx
tya
inc
inc
bra .7
.6 tya
clc
adc #6
.7 and #$f6
tax
lda IO.D2.Ph0On,x
phx
lda #194
jsr D2.Wait100usecA
jsr D2.Wait25600usec
plx
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
rts
@ -121,8 +115,7 @@ D2MoveHead.1 ldy #0
.8 tya
beq D2.PhaseOn.RTS
lda #0 wait 25.6 ms
jsr D2.Wait100usecA
jsr D2.Wait25600usec
lda IO.D2.Ph0Off,y
rts
@ -140,6 +133,8 @@ D2.PhaseOn and #6
ply
D2.PhaseOn.RTS rts
*--------------------------------------
D2.Wait25600usec
lda #0
D2.Wait100usecA sec (2)
.1 ldx #18 (2)

View File

@ -185,7 +185,7 @@ L53A4 dec XRW.RetryCnt one less chance.
pha save track
clc
adc #12 pretend track is 12 > curtrk
adc #8 pretend track is 12 > curtrk
ldy #64
sty XRW.RetryCnt reset retries to 64 max.
@ -198,6 +198,29 @@ L53BE ldy XRW.AddrField.T
cpy XRW.CurrentTrack
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
* recalibrating from this track
lda XRW.CurrentTrack preserve destination track
@ -211,7 +234,7 @@ L53CC ldy XRW.UnitIndex get index to drive #
jsr XRW.Seek
bra L539D
* drive is on right track, check volume mismatch
* drive is on right track, check sector
L53D5 lda XRW.AddrField.S is this the right sector ?
cmp XRW.ReqSector
@ -363,6 +386,7 @@ L595F sta pch
lsr or odd address. shift even/odd -> carry.
lda (buf),y if even, then leave intact.
bcc L596D branch if odd.
iny if even, then pre-xor with byte 1.
eor (buf),y
L596D sta A1L save result for write routine.
@ -755,12 +779,12 @@ XRW.Seek ldx XRW.UnitIndex
ldy #0
.2 lda XRW.TargetQTrack
.1 lda XRW.TargetQTrack
sec
sbc XRW.CurrentQTrack
beq .8
bcc .3
bcc .2
* Current < Target, must move in
@ -775,40 +799,46 @@ XRW.Seek ldx XRW.UnitIndex
* Current > Target, must move out
.3 cmp #$FF
.2 cmp #$FF
beq .5 one QT remaining
lda XRW.CurrentQTrack
bit #1 from QT1 or QT3
bne .30
bne .3
dec
.30 dec
.3 dec
.4 sta XRW.CurrentQTrack
jsr XRW.PhaseOn
lda #164
lda #194
jsr XRW.Wait100usecA
bra .2
bra .1
.5 lda XRW.TargetQTrack
and #6
ora A2L
tax
.5 bcs .6
tya
inc
inc
and #$F7
tay
lda IO.D2.Ph0On,x
lda IO.D2.Ph0On,y
bra .7
phx
.6 tya
clc
adc #6
.7 and #$f6
tax
lda IO.D2.Ph0On,x
phx
lda #194
jsr XRW.Wait100usecA
lda #0 wait 25.6 ms
jsr XRW.Wait100usecA
plx
lda IO.D2.Ph0Off,x
lda IO.D2.Ph0Off,y
rts

View File

@ -75,6 +75,7 @@ L.MSG.INITOK .DA MSG.INITOK
L.MSG.SKTERR .DA MSG.SKTERR
L.MSG.INCOMING .DA MSG.INCOMING
L.MSG.REQ .DA MSG.REQ
L.MSG.FILE .DA MSG.FILE
L.MSG.SKTCLOSE .DA MSG.SKTCLOSE
L.KEYWORDS.REQ .DA KEYWORDS.REQ
J.KEYWORDS.REQ .DA CS.RUN.REQ.GET
@ -361,7 +362,7 @@ CS.RUN.CLIENT >LDYAI 1024
tay
beq .1
jmp .90
jmp .99
.2 jsr CS.RUN.REQ.GetReq
@ -377,36 +378,39 @@ CS.RUN.CLIENT >LDYAI 1024
jsr CS.RUN.REQ.JMP
bcc .3
bcs .9
bcs .98
.4 >LDA.G REQ.FullPath
.4 >LDA.G REQ.hReq
>SYSCALL FreeMem
>STZ.G REQ.hReq
>LDA.G REQ.FullPath
beq .9
jsr CS.RUN.OpenFile
bcs .9
jsr CS.RUN.SendFile
bcs .5
bcs .99
bcc .6
bra .8
.9 >PUSHWI HTTP.404.len
>PUSHW L.HTTP.404
>LDA.G CLN.hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
.5 >STZ.G REQ.KeepAlive
.6 >LDA.G REQ.hReq
beq .8
.8 >LDA.G REQ.KeepAlive
beq .99
jmp .10
.98 >LDA.G REQ.hReq
beq .99
>SYSCALL FreeMem
.8 >LDA.G REQ.KeepAlive
beq .90
jmp .10
.90 >LDA.G REP.hBuf
.99 >LDA.G REP.hBuf
>SYSCALL freemem
>PUSHW L.MSG.SKTCLOSE
@ -493,9 +497,12 @@ CS.RUN.REQ.GetLine
.9 sec
rts
*--------------------------------------
CS.RUN.OpenFile >LEA.G REQ.FullPath
>SYSCALL puts
CS.RUN.OpenFile >PUSHW L.MSG.FILE
>PUSHB.G CLN.hSocket
>PUSHEA.G REQ.FullPath
>PUSHBI 3
>SYSCALL printf
>PUSHEA.G REQ.FullPath
>PUSHBI O.RDONLY
>PUSHBI 0 type
@ -743,6 +750,7 @@ MSG.INITOK .AZ "HTTPD:Listening on port %D, root dir: %s.\r\n"
MSG.SKTERR .AZ "HTTPD:Skt Bind Error."
MSG.INCOMING .AZ "HTTPD:Skt $%h Opened From %d.%d.%d.%d\r\n"
MSG.REQ .AZ "HTTPD:Req $%h From Skt $%h\r\n"
MSG.FILE .AZ "HTTPD:Skt $%h File %s\r\n"
MSG.SKTCLOSE .AZ "HTTPD:Skt $%h Close\r\n"
*--------------------------------------
KEYWORDS.REQ .AS "GET "

View File

@ -6,14 +6,15 @@ NEW
.TF sbin/networkd
*--------------------------------------
LIB.MAX .EQ 4
DBG .EQ 1
*--------------------------------------
.INB INC/MACROS.I
.INB INC/A2OSX.I
.INB INC/MLI.I
.INB INC/MLI.E.I
.INB INC/NIC.I
.INB INC/ETH.I
.INB INC/LIB.NET.I
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/mli.i
.INB inc/mli.e.i
.INB inc/nic.i
.INB inc/eth.i
.INB inc/lib.net.i
*--------------------------------------
* Zero Page Segment, up to 32 bytes
*--------------------------------------
@ -37,7 +38,11 @@ CS.START cld
.DA #0
.DA CS.END-CS.START Code Size (without Constants)
.DA DS.END-DS.START Data SegmentSize
.DO DBG=1
.DA #128 Stack Size
.ELSE
.DA #64 Stack Size
.FIN
.DA #ZS.END-ZS.START Zero Page Size
.DA 0
*--------------------------------------
@ -56,6 +61,9 @@ L.DEVNAME .DA DEVNAME
L.IOCTL .DA IOCTL
L.DCB.NIC .DA DCB.NIC
L.ETCNETWORK .DA ETCNETWORK
.DO DBG=1
L.MSG.DBG .DA MSG.DBG
.FIN
.DA 0
*--------------------------------------
CS.INIT lda DevID
@ -235,6 +243,23 @@ CS.RUN >PUSHB DevID
bcs .8 No Frame
sta hFrameIn
.DO DBG=1
>SYSCALL GetMemPtr
>STYA pBuf
>PUSHW L.MSG.DBG
ldy #0
.22 >PUSHB (pBuf),y
iny
cpy #36
bne .22
>PUSHBI 36
>SYSCALL printf
.FIN
ldx #0
@ -309,6 +334,10 @@ MSG.DEV.OK .AZ "NETWORKD:Bound To Device : %s\r\n"
MSG.LIB .AZ "NETWORKD:Loading %s ...\r\n"
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"
.FIN
*--------------------------------------
DevID .BS 1
LibCnt .BS 1
@ -323,5 +352,5 @@ DS.START
DS.END .ED
*--------------------------------------
MAN
SAVE USR/SRC/SBIN/NETWORKD.S
SAVE usr/src/sbin/networkd.s
ASM

View File

@ -84,8 +84,19 @@ PS.Exec jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
* ## RETURN VALUE
* A = Child PSID
*\--------------------------------------
K.Fork clc
rts
K.Fork jsr PS.CreateChild A=PID,Child S.PS at PS.NewPSPtr,PS.Load.hMem
bcs .9
sta .8+1
ldy #S.PS.S
lda #S.PS.S.RUN
sta (PS.NewPSPtr),y
.8 lda #$ff SELF MODIFIED
* clc
.9 rts
*--------------------------------------
* PS.CreateChild
* in :
@ -94,22 +105,29 @@ K.Fork clc
*--------------------------------------
PS.CreateChild ldx #0
bra .2 Skip PS0
.1 lda PS.Table.PID,x
beq .4 Found an empty slot
.2 inx
cpx CORE.PSCount
bne .1
cpx #K.PS.MAX
bne .3
lda #E.OOH
sec
rts
.99 plx
rts
.3 inc CORE.PSCount
.4 inc CORE.LastPSID Get a PSID not already running
beq .4 not = 0
lda CORE.LastPSID
jsr CORE.GetPS Y=PS Index, X,A unmodified
bcc .4 running...loop
@ -120,6 +138,7 @@ PS.CreateChild ldx #0
>LDYAI S.PS
jsr K.GetMem0 Blank Everything in this S.PS
bcs .99
>STYA PS.NewPSPtr
txa
plx
@ -136,10 +155,13 @@ PS.CreateChild ldx #0
lda #S.PS.F.NOHUP
bit PS.Flags
beq .5
lda PS.Table.hPS Select PS0
jsr K.GetMemPtr
bra .6
.5 >LDYA pPs
.6 >STYA ZPPtr1
ldy #S.PS.PID
lda (ZPPtr1),y
@ -152,6 +174,7 @@ PS.CreateChild ldx #0
jsr K.StrDup
bcs .9
jsr Mem.SetOwner Set Ownership
txa
@ -200,6 +223,7 @@ PS.CreateChild ldx #0
lda CORE.LastPSID Exit with A=PSID
clc
rts
.9 pha
>PUSHBI 2
lda CORE.LastPSID