diff --git a/.Floppies/A2OSX.BOOT.woz b/.Floppies/A2OSX.BOOT.woz index 82345074..bc3beb00 100644 Binary files a/.Floppies/A2OSX.BOOT.woz and b/.Floppies/A2OSX.BOOT.woz differ diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 880b953e..a5f1992d 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.TEST.po b/.Floppies/A2OSX.TEST.po index 39e56658..9eeeb28b 100644 Binary files a/.Floppies/A2OSX.TEST.po and b/.Floppies/A2OSX.TEST.po differ diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index 910707b0..df62edf3 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -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 diff --git a/DRV/DHGR.DRV.G.txt b/DRV/DHGR.DRV.G.txt index 6898884e..699d5c64 100644 --- a/DRV/DHGR.DRV.G.txt +++ b/DRV/DHGR.DRV.G.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.BLT.txt b/DRV/DHGR.DRV.S.BLT.txt index ab115899..16627821 100644 --- a/DRV/DHGR.DRV.S.BLT.txt +++ b/DRV/DHGR.DRV.S.BLT.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.LBUF.txt b/DRV/DHGR.DRV.S.LBUF.txt index 45095703..aa5f9ff1 100644 --- a/DRV/DHGR.DRV.S.LBUF.txt +++ b/DRV/DHGR.DRV.S.LBUF.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.LINE.txt b/DRV/DHGR.DRV.S.LINE.txt index 1df54766..a13c5dc8 100644 --- a/DRV/DHGR.DRV.S.LINE.txt +++ b/DRV/DHGR.DRV.S.LINE.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.PIX.txt b/DRV/DHGR.DRV.S.PIX.txt index e151b058..5a8e6cd5 100644 --- a/DRV/DHGR.DRV.S.PIX.txt +++ b/DRV/DHGR.DRV.S.PIX.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.RECT.txt b/DRV/DHGR.DRV.S.RECT.txt index 740cff35..b07c23f2 100644 --- a/DRV/DHGR.DRV.S.RECT.txt +++ b/DRV/DHGR.DRV.S.RECT.txt @@ -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 diff --git a/DRV/DHGR.DRV.S.txt b/DRV/DHGR.DRV.S.txt index b108cc4a..7745ecc5 100644 --- a/DRV/DHGR.DRV.S.txt +++ b/DRV/DHGR.DRV.S.txt @@ -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 diff --git a/DRV/UTHER2.AI.DRV.S.txt b/DRV/UTHER2.AI.DRV.S.txt index 59fa052d..ec4ec1ec 100644 --- a/DRV/UTHER2.AI.DRV.S.txt +++ b/DRV/UTHER2.AI.DRV.S.txt @@ -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 diff --git a/LIB/LIBBLKDEV.S.BB.txt b/LIB/LIBBLKDEV.S.BB.txt index 57604724..6d9ad384 100644 --- a/LIB/LIBBLKDEV.S.BB.txt +++ b/LIB/LIBBLKDEV.S.BB.txt @@ -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 diff --git a/LIB/LIBBLKDEV.S.D2.txt b/LIB/LIBBLKDEV.S.D2.txt index 490c48df..8c0cdf46 100644 --- a/LIB/LIBBLKDEV.S.D2.txt +++ b/LIB/LIBBLKDEV.S.D2.txt @@ -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) diff --git a/ProDOS.FX/ProDOS.S.XRW.txt b/ProDOS.FX/ProDOS.S.XRW.txt index 5ed11e6b..bbde7176 100644 --- a/ProDOS.FX/ProDOS.S.XRW.txt +++ b/ProDOS.FX/ProDOS.S.XRW.txt @@ -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 diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index 15d836d9..5de47923 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -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 " diff --git a/SBIN/NETWORKD.S.txt b/SBIN/NETWORKD.S.txt index 2a84f13f..9bddfe70 100644 --- a/SBIN/NETWORKD.S.txt +++ b/SBIN/NETWORKD.S.txt @@ -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 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index c5ae1512..1f990841 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -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