From 058eb00a47e949c87cf009106a9f0f67eceda9a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 29 Jun 2018 16:16:40 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/CONSOLE.DRV.S.txt | 28 ++--- INC/KERNEL.I.txt | 22 ++-- SBIN/INSDRV.S.txt | 4 +- SYS/KERNEL.S.BIN.txt | 234 +++++++++++++++++++-------------------- 6 files changed, 144 insertions(+), 144 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 8e134ba853578ee77e0f1e387b39be64f622ff13..4615c7cdd56edfaf7457e4c63558aa8e787bc34d 100644 GIT binary patch delta 1534 zcmY*Z4@?tR7=QQf3N514v0!m*J_O?=9V*kM`)`aRs2HS*Tb3m@%QP%$iRdud#L>;R zBMrwu6OV0G&njJ8Id)YN79$CX$yREI2iP9{bI&D+BXeve%Q7c%-Mi|N?Q;3P_xpW+ z-(_6t1;EECJ^gk_)CEp0*Y9|0?-A(z(ib_j3WR< z4G#i^2Fo_{K2X1XD|i&c&c?d##0I&myJ4ATF4px^j7#l?rjE(@cj=R9VIrrz3<4wK zrh(10@B+==l)J`d)!L_uKweH#IrslZy{AUmx~JlGeYSC#mE>mIO_`mL-Kc2RNjX4W zpJ|@(lXCMs;iqI?8v=#{zzM^l4sd{S(&(1_xc%x`u}qkXqq1D!WuQYRft#m$0U?9+ zMYDCPF*gtZ0ACo=8q|v8ayX<_Yu=QFMDgQdLbCW#IYE+hR74ggWR<$1dKqjHnT;-y z{lw39LuP-FxiT}{ue~8}&(;YMnLA;I8?}GQ15sHZwrghi?5mSu>IEOPKt_fB`a&#M-paCu>x%ZpkYE`pMuw2#RV|=R# z8c!dFB~%5s;xKG~aaY<&JD|skJ+*0%4fDX$f<5D@5X@M^V{1tz8zz-(*gkKxVZ8>u zi|sSstW-GW+Xu@!Dy84q+B7?!vQLd2lkx{!a3&(H9Xp<>MBDE6EF)Mdo$GGFY%8{x z5cH!y6Fk$3Rmy(8lMos0*;f2ELdr+=!IX;g2qsY2mCn%Q_zYU{Sx~566Lm_3-MiA> zY=*A?D&@^uoD{e72z*{sqM$99J8=ZIcPuC(gX*#2BGa!Sb_YO&p;0k5SkN0v&jY?S zfYqD0;M6!6lAF&)!gC?!3@DWT?6zWy+9D;D38aU2?urHLiqOH7c)h+_@oJPqN=6gW z-#1y@1;O^CN>#<{TPn*xRW2%DD?vq2L?u9VsP3g|?#oPOIjT`eFJzS;K1S9EmAj3WU0Oqf#$E2)%#$-{a;LLaA5lDXSsW!M(YsF-Ti3WMBk6}pHp9u{bwcd9WUfY;@IR(JMR3DKIX?q$dPbi;Y2mTDZF^d7XhllVN*n`huFYd>F zdYw6rQv7`y@@)_(^20cdc$y(SCNk(FU<@`eFUA-!>G$o byZnsHuW|YFT>gBQU+ePgT>b)|f64SeZbkS3 delta 1794 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 delta 7236 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 diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 921d9b09..3ddfee64 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -11,14 +11,6 @@ AUTO 4,1 .INB /A2OSX.BUILD/INC/IO.I .INB /A2OSX.BUILD/INC/NET.TELNET.I *-------------------------------------- -CURSOR.BLINK.SPEED .EQ 2 -ESCSEQ.MAXLEN .EQ 16 -*-------------------------------------- -ZPBaseL1 .EQ ZPDRV -ZPBaseL2 .EQ ZPDRV+2 -ZPTmpWord .EQ ZPDRV+4 -ZPTmpBool .EQ ZPDRV+6 -*-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld @@ -26,7 +18,7 @@ CS.START cld .DA #$61 6502,Level 1 (65c02) .DA #1 DRV Layout Version 1 .DA 0 - .DA CS.END-CS.START Code Length + .DA CS.END-CS.START Code Length To Relocate .DA 0 .DA 0 .DA 0 @@ -37,36 +29,46 @@ L.MSG.DETECT .DA MSG.DETECT L.INSDRV .DA DRV.CS.START .DA DRV.CS.END .DA DRV.END -L.DEV.NODE .DA DEV.NODE +L.NODE .DA DEV.NODE .DA 0 End Of Reloc Table *-------------------------------------- Dev.Detect >LDYA L.MSG.DETECT >SYSCALL printf + >PUSHW L.INSDRV+4 + >PUSHW L.INSDRV+2 >LDYA L.INSDRV >SYSCALL InsDrv bcs .9 >STYA DEV.NODE+S.NODE.DEV.DRVPTR - >LDYA L.DEV.NODE + >LDYA L.NODE >SYSCALL MKNOD .9 rts CS.END MSG.DETECT .AZ "Apple IIe/IIc 80 Col Driver.\r\n" *-------------------------------------- -DEV.NODE .DA #S.NODE.T.CDEV +NODE .DA #S.NODE.T.CDEV .DA #0 HANDLER .DA #0 BUSID .DA #0 DEVID - .DA 0 DRVPTR + .BS 2 DRVPTR .DA 0 ROMPTR .AZ "CON" NAME .HS 00000000 *-------------------------------------- * Driver Code *-------------------------------------- +CURSOR.BLINK.SPEED .EQ 2 +ESCSEQ.MAXLEN .EQ 16 +*-------------------------------------- +ZPBaseL1 .EQ ZPDRV +ZPBaseL2 .EQ ZPDRV+2 +ZPTmpWord .EQ ZPDRV+4 +ZPTmpBool .EQ ZPDRV+6 +*-------------------------------------- DRV.CS.START cld jmp (.1,x) .1 .DA STATUS diff --git a/INC/KERNEL.I.txt b/INC/KERNEL.I.txt index cd1369e5..e5387a43 100644 --- a/INC/KERNEL.I.txt +++ b/INC/KERNEL.I.txt @@ -17,20 +17,22 @@ H.BIN.T.LIB65 .EQ $7CD8 6502:cld,jmp (abs,x) H.BIN.T.BIN65 .EQ $7CD8 6502:cld,jmp (abs,x) *H.BIN.T.LIB80 .EQ $A28D Z80: *H.BIN.T.BIN80 .EQ $A28D Z80: -H.BIN.JMP .EQ 2 -*H.BIN.CODE.TYPE .EQ 4 +H.BIN.JMP .EQ 2 +H.BIN.CPU .EQ 4 +H.BIN.CPU.6502 .EQ $60 +H.BIN.CPU.65C02 .EQ $61 +H.BIN.CPU.65R02 .EQ $62 +H.BIN.CPU.65816 .EQ $63 *H.BIN.VERSION .EQ 5 -H.BIN.CODE.LEN .EQ 8 +H.BIN.CODE.LEN .EQ 8 +* +H.BIN.DS.SIZE .EQ 10 +H.BIN.SS.SIZE .EQ 12 +H.BIN.ZP.SIZE .EQ 13 * -H.BIN.EXE.DS.SIZE .EQ 10 -H.BIN.EXE.SS.SIZE .EQ 12 -H.BIN.EXE.ZP.SIZE .EQ 13 H.BIN.EXE.REL.TABLE .EQ 16 * -H.BIN.DRV.NODE.O .EQ 10 -H.BIN.DRV.CODE.O .EQ 12 -H.BIN.DRV.CODE.LEN .EQ 14 -H.BIN.DRV.REL.TABLE .EQ 2 Skip cld jmp +H.BIN.DRV.REL.TABLE .EQ 4 *-------------------------------------- ZPKERNEL .EQ $0 ZPMEMMGR .EQ $10 diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index b7442915..cd2d9b19 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -19,8 +19,8 @@ ZPPTR3 .EQ ZPBIN+4 *-------------------------------------- CS.START cld jmp (.1,x) - .DA #$61 6502,Level 1 (65c02) - .DA #1 BIN Layout Version 1 + .DA #H.BIN.CPU.65C02 + .DA #1 .DA 0 .DA CS.END-CS.START Code Length To Relocate .DA 0 Data Segment to Allocate diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index d9b2be51..cf561d5e 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -204,10 +204,10 @@ BIN.Load.1 >PUSHWI K.S.STAT bcs .9 >LDYA K.S.STAT+S.STAT.P.AUXTYPE - >STYA BIN.R.Start + >STYA BIN.R.CS.Start >PUSHYA Push AUXTYPE - >PUSHBI 6 S.FI.T.BIN + >PUSHBI S.FI.T.BIN >PUSHBI SYS.FOpen.R >PUSHW BIN.CmdLine @@ -220,10 +220,10 @@ BIN.Load.1 >PUSHWI K.S.STAT tya * clc CC from bcs .99 - adc BIN.R.Start Get AUXTYPE for actual Base Address + adc BIN.R.CS.Start Get AUXTYPE for actual Base Address sta BIN.R.End compute Range End=AUXTYPE+FILELEN pla - adc BIN.R.Start+1 + adc BIN.R.CS.Start+1 sta BIN.R.End+1 txa @@ -233,10 +233,10 @@ BIN.Load.1 >PUSHWI K.S.STAT pha YA = actual load address tya sec - sbc BIN.R.Start + sbc BIN.R.CS.Start sta BIN.R.Offset Offset=ZPPtr1-AUXTYPE pla - sbc BIN.R.Start+1 + sbc BIN.R.CS.Start+1 sta BIN.R.Offset+1 ldy #H.BIN.CODE.LEN get Code Len @@ -285,49 +285,31 @@ BIN.hMem .BS 1 * #K.InsDrv * ##ASM * **In:** -* Y,A = .DRV File Loaded Address -* Note: -* BIN.Load called from K.LoadDrv -* Already setup correctly pDrv, -* BIN.R.Start,End +* PUSHW = DRV.END +* PUSHW = DRV.CS.END +* Y,A = DRV.CS.START *\-------------------------------------- -K.InsDrv ldy #H.BIN.DRV.CODE.O - lda (pDrv),y - clc - adc BIN.R.Start Advance start From AUXTYPE to AUXTYPE+DRV code offset - sta BIN.R.Start - - iny - lda (pDrv),y - adc BIN.R.Start+1 - sta BIN.R.Start+1 - - lda DevMgr.Free Offset = Target DRV address-(AUXTYPE+DRV OFFSET) - sec - sbc BIN.R.Start - sta BIN.R.Offset - - lda DevMgr.Free+1 - sbc BIN.R.Start+1 - sta BIN.R.Offset+1 +K.InsDrv >STYA BIN.R.CS.Start + >PULLW BIN.R.CS.End + >PULLW BIN.R.End lda BIN.R.End Compute DRVLen=End-start sec - sbc BIN.R.Start - sta BIN.InsDrv.Len + sbc BIN.R.CS.Start + sta BIN.R.Len lda BIN.R.End+1 - sbc BIN.R.Start+1 - sta BIN.InsDrv.Len+1 + sbc BIN.R.CS.Start+1 + sta BIN.R.Len+1 - lda DevMgr.Free + lda DevMgr.Free Compute new DevMgr.Free clc - adc BIN.InsDrv.Len - sta BIN.InsDrv.End + adc BIN.R.Len + sta BIN.R.End tay Save DRVEnd LO lda DevMgr.Free+1 - adc BIN.InsDrv.Len+1 A = DRVEnd HI - sta BIN.InsDrv.End+1 + adc BIN.R.Len+1 A = DRVEnd HI + sta BIN.R.End+1 bcs .9 we crossed $FFFF, out of mem @@ -347,107 +329,101 @@ K.InsDrv ldy #H.BIN.DRV.CODE.O sec rts -.10 inc DevMgr.Count - - >SYSCALL GetDevByID - >STYA ZPPtr2 setup Ptr2 to dest HEADER +.10 lda DevMgr.Free Offset = Target DRV address-Src Address + sec + sbc BIN.R.CS.Start + sta BIN.R.Offset - ldy #H.BIN.DRV.HEADER.O - lda (pDrv),y - clc - adc pDrv - sta ZPPtr1 - iny - lda (pDrv),y - adc pDrv+1 - sta ZPPtr1+1 set Ptr1 to Src HEADER - - ldy #S.DEV-1 - -.1 lda (ZPPtr1),y copy header to Dev.Table - sta (ZPPtr2),y - dey - bpl .1 - - ldy #S.DEV.DRV.JMP+1 Setup Main JMP lda DevMgr.Free+1 - sta (ZPPtr2),y - tax + sbc BIN.R.CS.Start+1 + sta BIN.R.Offset+1 + + jsr BIN.Move + + jsr BIN.RelDrv - dey - lda DevMgr.Free - sta (ZPPtr2),y - - sta ZPPtr2 set Ptr2 to Dest CODE - stx ZPPtr2+1 - - ldy #H.BIN.DRV.CODE.O - lda (pDrv),y - clc - adc pDrv - sta ZPPtr1 - iny - lda (pDrv),y - adc pDrv+1 - sta ZPPtr1+1 set Ptr1 to Src CODE + >LDYA BIN.R.End + >STYA DevMgr.Free - lda BIN.InsDrv.Len+1 + ldx DevMgr.Count + lda DevMgr.Free + sta Dev.Table + inx + lda DevMgr.Free+1 + sta Dev.Table + + inx + stx DevMgr.Count + + clc + rts +*-------------------------------------- +BIN.Move lda BIN.R.CS.Start + clc + sta ZPPtr1 + adc BIN.R.Offset + sta BIN.R.CS.Start + sta ZPPtr2 + + lda BIN.R.CS.Start+1 + sta ZPPtr1+1 + adc BIN.R.Offset+1 + sta BIN.R.CS.Start+1 + sta ZPPtr2+1 + + lda BIN.R.Len+1 eor #$ff pha - lda BIN.InsDrv.Len + lda BIN.R.Len eor #$ff tax ldy #0 -.2 inx Move CODE in LC - bne .3 +.1 inx + bne .2 pla inc - beq .4 + beq .3 pha -.3 lda (ZPPtr1),y +.2 lda (ZPPtr1),y sta (ZPPtr2),y iny - bne .2 + bne .1 + inc ZPPtr1+1 inc ZPPtr2+1 - bra .2 - -.4 ldy #H.BIN.DRV.CODE.LEN - lda DevMgr.Free Make Ptr1 = code start - sta ZPPtr1 + bra .1 + +.3 lda BIN.R.CS.End clc - adc (pDrv),y - sta ZPPtr2 - - iny - lda DevMgr.Free+1 - sta ZPPtr1+1 - adc (pDrv),y - sta ZPPtr2+1 Make ZPPtr2 = ZPPtr1 + CodeLen - - jsr BIN.RelDrv - - >LDYA BIN.InsDrv.End - >STYA DevMgr.Free + adc BIN.R.Offset + sta BIN.R.CS.End + lda BIN.R.CS.End+1 + adc BIN.R.Offset+1 + sta BIN.R.CS.End+1 + + lda BIN.R.End clc + adc BIN.R.Offset + sta BIN.R.End + + lda BIN.R.End+1 + adc BIN.R.Offset+1 + sta BIN.R.End+1 rts *-------------------------------------- -BIN.InsDrv.Len .BS 2 -BIN.InsDrv.End .BS 2 -*-------------------------------------- * BIN.Rel___ : -* In : -* ZPPtr1 = Ptr to Code -* ZPPtr2 = End Of Code *-------------------------------------- -BIN.R.Start .BS 2 +BIN.R.CS.Start .BS 2 +BIN.R.CS.End .BS 2 BIN.R.End .BS 2 BIN.R.Offset .BS 2 *-------------------------------------- +BIN.R.Len .BS 2 +*-------------------------------------- BIN.RelExe ldy #H.BIN.T+1 lda (ZPPtr1),y cmp /H.BIN.T.BIN65 @@ -509,7 +485,7 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE .3 lda (ZPPtr1) get OPCODE lsr /2 tax - lda BIN.OPCODES,x get OPCODE definition + lda BIN.65816,x get OPCODE definition bcs .4 go get LO nibble lsr lsr move HI -> LO @@ -529,10 +505,10 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE iny make Y point to HI - cpx BIN.R.Start + cpx BIN.R.CS.Start lda (ZPPtr1),y Get HI - sbc BIN.R.Start+1 - bcc .5 addr < BIN.R.Start, out of range + sbc BIN.R.CS.Start+1 + bcc .5 addr < BIN.R.CS.Start, out of range txa Get back LO cpx BIN.R.End @@ -558,20 +534,40 @@ BIN.RelDrv ldy #H.BIN.DRV.REL.TABLE bcc .7 inc ZPPtr1+1 -.7 eor ZPPtr2 A = ZPPtr1 +.7 eor BIN.R.CS.End A = ZPPtr1 bne .3 lda ZPPtr1+1 - eor ZPPtr2+1 + eor BIN.R.CS.End+1 bne .3 next opcode.... .8 rts *-------------------------------------- -* 65C02 OPCODES +* 6502/65C02/65816 OPCODES * Bit 3 : 1 = absolute addressing * Bit 2-1-0 : opcode + @ length *-------------------------------------- * 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F -BIN.OPCODES .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 +BIN.65816 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3 + .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 + .HS 2.2.2.1.2.2.2.2.1.B.1.1.1.B.B.3 +*-------------------------------------- +* 65R02 OPCODES +*-------------------------------------- +* 0.1.2.3.4.5.6.7.8.9.A.B.C.D.E.F +BIN.65R02 .HS 1.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3 .HS B.2.2.1.2.2.2.2.1.2.1.1.B.B.B.3 .HS 2.2.2.1.2.2.2.2.1.B.1.1.B.B.B.3