From 89f0b22a7a929d84e2fe29678f9972280db20398 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 13 Mar 2017 17:55:43 +0100 Subject: [PATCH] Kernel version 0.9 : Implementing Block Device Support --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/FORMAT.S.txt | 49 ++++------------------------------------- LIB/LIBBLKDEV.S.txt | 35 ++++++++++++++++------------- SYS/KERNEL.S.INIT3.txt | 28 ++++++++++++++++++----- 5 files changed, 47 insertions(+), 65 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index 29656642197b2cf5d60f0b2ca3e76baa2aadc619..fd0f4b98c55b33463fa97d06d5d97faf1a95bf3d 100644 GIT binary patch delta 5053 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 F{tx-T<&OXW diff --git a/A2OSX.SRC.po b/A2OSX.SRC.po index 49fb047b03100968d728cb546f0c5cea6765ca1f..fd197c3e49e9ef4b5451ba21e4a8b3a7529761dd 100644 GIT binary patch delta 26055 zcmb7scYIV;`uDk$xsyBhP6)}=%p@TdNJxehy0kPP5|WS!)f$ojk&uKWDA>Xvpn@Ic z7^R4=*b5f0i@NKsWi6}g+C^P^S#=e=`+iTkGn4ZBKm);YD2-YiuuGal>QYRt>NGlqB@j*l9r&* z{YP|Xe%<=s1+8m|dxX;8-qI8vyS%=>w>vbyF|S}FF%mJTbzL}EOgtl%olo57vL#_` zdNMt;T2ISz4mZRlhm;VHn-9@F7?SE$f+dt5+-dh@xqZWpOOfMBiPyg~G1=3Xssu|Z zBPqLxIMbB=p59pMh?)+x`Y0thg*LZ06D>pO@9ym(TBeeJWON~MXDMt8s%wMCFQ^aB zsjgkpSWL8R*_kt>vxI25qSG^)chdV)tcjW07&&5W?1;wd1yxHLiI%72-{YEXG4^Kh zW6LHVuDEx;$Eu8QldjREFr&nSrpp%WJjvVUIBNkZ%7}BIVe9C7|KSZ;l#F{v`&$%+ z+`A*N{^a=sHeS0_>F;gYK(x!0{WDQ|}%I$h&92)Rmz| zG4)E9$G=W2{y<(fd_hlU|Y_t61Bge~_sIsiFtZvSn zP*o#IDN<-ts@2n%P^|Pfb+j<@iilPM_?~WJFXjJkCW#Z!+tMrr5lNmX*tc0TFQrEu%-W9iF~&Np=zOR15*d;i#1Wc2^CW zmTj3f2k@=UBzZ3WUC|tlnRMPjOblABW|JO27*9fL$2fK!pCXv$&ve~ac4w;lFJ!1- z&Ul*iuW0L~Gp{#NJnCNouKx`!knj0KeFlG~KTF@6tEUB?8)k6edD7q6-9-1lVYpJ= zeT$I^0KzdA~w+74xeagYy;=?R_GI<_7?72k?gk!gB*j`8Qqnlj6(z zNa8FZ>c_xod?NM+x6k$|36>E5XY{t8l$7kxhue`a7!_Y)0*F%2S9GC6arGHr17mj+ zQ;+I@(4X)Pfi^N#*0+Pv5bZm;i~kinWB;Dyk7t~l_yfrYuV4e`w)U10?=h0U8Nb4~ zpW)ula8D=K@(DjOsO;*F@U$>V`iacQ-&_`+5nde<-6MYH-4Ld%-~9`4EGu9DU7?`Z zBx3)S`-ac2APi4t$|TF2gy# zL%%4^i3&N~Vz<0qZ+wzTQZozP(4{Ho&tGmiJb!uI{Tq`&q|p_T>1o{xoqbGk(M=(% zE#1>2%nL@vlJ2(NR;DtE+N)ei($`DCqU(+L8OG@VWOfqH^bAn$-oWVON><*qP#tk^ z6r4NY&Sspc(3f}E(+VADNfcA363^K}t3~I9Kqcxqm^bZQg|S50F~ytb=!+S$Y4DJS zvL!?fgBagt`q)g}+jpLjHTsr_e%vag`q*uJpCc5soe?8kxE;(}H{9i;Dl zV+}N@_W&aGUV)VDz#yeh)cce@#CgA1Z;aws4`HBwII_A2#OlU9NdITG=6fC*X7_U+ zrn6LQPQoMRMi!IQ$7q*o4J15nuAzt&K0&Wmtp%PZrBZxK-qAl}zRbVSH&ttf=V`II z+Fxbg-_YlMhK^ir_pE+a^f{gbX;XK>GTB1x&ntq7Q~$0=CT?hLYAFkkt(@CXwx9rq zmq!v_V0|X*zNif1+?RN-=jYK=l{@p+v z58&{++QY%p^N9K&hPfY7f|Dt;B4h50@vwQsM8yRl>5mH1J&z4Tdf;)o`whdNd<0{p zig^NK(w&)1}kk#^o63dq6{GJWbQG9HZ>GBtqUF_|9spCT?7o zA+YK*jBZ>VX5KP32=#V$w>DOk6ZJXt=+8&)Ic^Y>&SPGnyS}lG&VEsFPK?R=Qgod! zGn)Uw7%f$Kl`-LQ{~Ttq+H2C9|ChApUmpg@`vzV3t<|HvDXjOmr1k!`wBFwlj>Ef{ zFz}vm9F7iyMSEXP^?{t~!(o8D|7ML`oN~+3bR0h7Q+q#_Q-30-{#0z|fnTge=}~X4 zraIJERZG;#1X6Sg2~LF0rAa^A-Im$YXhps{EAP1BY>Mf)`b@GU8EhnJGpX{6 zJ$3Xf*)s{&AaIT>W2$?DshWsd4wdMwpm)#HU2!C(lAfAs^;#xX(SzfxZdx)<%}ALe zFt9bjfqB!@PP7HW zqETysE2WMe9jE#{^-Mo6B;W#e^GtXBK!G~8k7y0T!blDcvX4koqcBHIcw#JKvo$jl z%ek0sM{@)hGjx|=7JVtRXSfNq40yZ1*z=j0*H~6wQxyzVFRvoTa=CS-L_GnM6W@u< zD1;@yt+K7Bxv9G)ypq}GL_0~?Jle@b_~)mP=w@vfJVczQ4z`(SO}jP4>uxcDnKLhs zKfRSsU!s&s!-8+tJ%-7wl>h@KaD=WNKIMX9yMy<0tRc^ zdU|1tJJyPAheRi82f!0L85J900$?K&x&%qV68xd969%B#%~skY&>dK;9_tHFBc4eX z)8bmOvA4AcqPMAq*e6?r$u)9{h4DVDsnA8tJWiZy=?~5eg{Ky6#W4{3G>cFpzT+%0 zY9u@sE@xHQf;{4#4)jd3gj?V?hub>BUFGXnl7txyyjH3f_e=oQFAB{ok1-6BXUWDT z%ot>Yl4i%Wv||qv${3bxu7OBuIXz*4EznnCQeMd^XLDbKgC)sTa6;jku4ruC(7T|s z1!mhEOaILJMKv``q|XgR%+2x59oo)(E+>3j4qqPSv1$w0<@m@%%G+VKS9GrL=naou+q5BEQj$mfjp!93pGYa##z7>8{3k8^?TYX`$jP>zHNjwz*w2v%J?30`?K`&7eSPw58Eb)eO3qu{*K2hEkdeA2Uawq zS=&m4)wK<0$E>d6qJ=~~ANWRIz;+ia4p)HTFC)GSF*y&i)dal*H#qLy;!AluF=dPhsP&vib*i}9UVgdaO!8Nf+x8PXA#U%0C*hZr6W`KKQ+c+Rl z>_v}fA9e_*(Ao^^Zey6UcMnmoV>ZfuwtQ3il;q(E9sCT#Oi1QjPw#rqmTkX*^B~Fn z6MgGFTaI!gEk0^-`Ezup6=q3>L9*ju5H+JR3eP8UKd?PUL{Qxu$iPdJ8 zkfg%{(G%kV**Ae058`JZyA&nF`OrW(EKYrx&G|^|B*gt_?4Nv25ce3H^Kpr{lq4M) zh>I9c$i9ihc#{1TQzFLJ)0=J{3crDg2(?A*pkm^Fn%@1s%~k(bHUYwG>xV$X)n|I4{TE>{R6P> zSH!HbASB^cA_K!KSCSDd*amZes|(_NjXwT?&C~a<7>JRt$3QR}<_%%PXm1Kr(fyV% z6$i}Wep?J0(CByvH-cG=6N|~ncg6bnyuhly2XaRog)LsZOPp#EQQt>f(g(sm$JXT* zABjh#_d^n#M44}A{2TbzwlND-`&byfEGEbKauU%#Wi#Mfe4J}KITLh*B20U+G876Ou@(`BVTL27kz@w|Dk`Azde%2LxAyc9 zR{{-xWOFJb=z|~I#>`AK$r≶nQl#GQQ#zF%-MYB+t!IGwRr)Qa$vSk8CWJf<{=d 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 LX#cPSTR "L" OptionVars .DA #bLL *-------------------------------------- -MSG.USAGE >CSTR "Usage : FORMAT [VOLUME.NAME]\n -L : Low-Level Format\n" -MSG.OK >CSTR "[OK]\n" -MSG.ERR >CSTR "[%h]\n" +MSG.USAGE >CSTR "Usage : FORMAT [VOLUME.NAME]\r\n -L : Low-Level Format\r\n" +MSG.OK >CSTR "[OK]\r\n" +MSG.ERR >CSTR "[%h]\r\n" *-------------------------------------- LIBBLKDEV >PSTR "libblkdev.o" DefaultVolName >PSTR "BLANK" @@ -206,7 +166,6 @@ DS.START VolName .BS 16 DevName .BS 4 bCANCEL .BS 1 -bSTOP .BS 1 bLL .BS 1 DS.END .ED diff --git a/LIB/LIBBLKDEV.S.txt b/LIB/LIBBLKDEV.S.txt index c9c4e28d..797ebb09 100644 --- a/LIB/LIBBLKDEV.S.txt +++ b/LIB/LIBBLKDEV.S.txt @@ -75,9 +75,13 @@ L.TrkWriter .DA TrkWriter L.ProDOS.Boot .DA ProDOS.Boot .DA 0 */-------------------------------------- -* In PUSHW = DevSize (in 512b blocks) -* Out: X=BlockCount (max 22) -* A=PageCount (max 44) +* #GetProDOSCatSize +* Compute space needed for ProDOS Catalog +* ##In : +* PUSHW = DevSize (in 512b blocks) +* ##Out : +* X=BlockCount (max 22) +* A=PageCount (max 44) *\-------------------------------------- GetProDOSCatSize >PULLAX A=DevSizeLo @@ -105,18 +109,19 @@ GetProDOSCatSizeAX asl A = Total pages needed to build catalog. rts */-------------------------------------- -* BuildProDOSCat -* In: PUSHW = DevSize (in 512b blocks) -* PUSHW = VolName (PSTR) -* PUSHW = DstBuf (Zero filled) -* Blk0 : ProDOS.BootBlk -* Blk1 : SOS.BootBlk -* Blk2,3,4,5 : Volume Directory -* Blk6.... : Volume Bitmap (4096/Blk) -* max devSize = 65535 -> max 16 Bitmap Blk -* absolute MAX DstBuf size= -* 7 for Disk II(280blk),3.5(1600),3.5HD(2880) -* 22 for 32mb Hardisk... +* #BuildProDOSCat +* ##In : +* PUSHW = DevSize (in 512b blocks) +* PUSHW = VolName (PSTR) +* PUSHW = DstBuf (Zero filled) +* Blk0 : ProDOS.BootBlk +* Blk1 : SOS.BootBlk +* Blk2,3,4,5 : Volume Directory +* Blk6.... : Volume Bitmap (4096/Blk) +* max devSize = 65535 -> max 16 Bitmap Blk +* absolute MAX DstBuf size= +* 7 for Disk II(280blk),3.5(1600),3.5HD(2880) +* 22 for 32mb Hardisk... *\-------------------------------------- BuildProDOSCat >PULLW ZPPtr1 DstBuf >PULLW ZPPtr2 VolName diff --git a/SYS/KERNEL.S.INIT3.txt b/SYS/KERNEL.S.INIT3.txt index 46fdc3c5..e1e53cfe 100644 --- a/SYS/KERNEL.S.INIT3.txt +++ b/SYS/KERNEL.S.INIT3.txt @@ -342,7 +342,7 @@ DevMgrInit.SP ldy #$ff .9 rts *-------------------------------------- -DevMgrInit.DII +DevMgrInit.DII rts *-------------------------------------- DevMgrInit.BLK @@ -353,8 +353,19 @@ DevMgrInit.AddDev inc DevMgr.Count jsr K.GetDevByIDA >STYA ZPPtr1 + + ldy #S.DEV-1 + +.1 lda SP.DEV,y + sta (ZPPtr1),y + dey + bne .1 rts *-------------------------------------- +SP.DEV .BS 2 JMP + .DA #S.DEV.S.BLOCK S + >PSTR "S1D1" 5 bytes +*-------------------------------------- SmartPort.OFS .HS 07010305 SmartPort.SIG .HS 00200003 *-------------------------------------- @@ -369,10 +380,6 @@ SP.DEV.STATUS .DA #3 SP.STATUS1 .BS 4 SP.STATUS2 .BS S.DEVSTAT *-------------------------------------- -SP.DEV .BS 2 JMP - .BS 1 S - >PSTR "S1D1" 5 bytes -*-------------------------------------- SP.DRV cld ldy #7 lda (pDev),y @@ -382,6 +389,17 @@ SP.DRV.lo ldy #$ff SP.DRV.hi lda #$ff jmp A2osX.PRTCALL *-------------------------------------- +DII.DRV cld + lda #$ff DSSS0000 + cpx #DEVMGR.CONTROL + bcs .9 + + + + +.9 lda #MLI.ERR.BADCALL + rts +*-------------------------------------- BLK.DRV *-------------------------------------- EvtMgrInit lda #$A5