From 1333d6a4910b130e7b8e253ae542a639d6a9bf12 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Fri, 2 Jun 2023 15:30:10 -0700 Subject: [PATCH] Functional PPA Driver --- Doc/RomWBW Applications.pdf | Bin 231153 -> 231155 bytes Doc/RomWBW Disk Catalog.pdf | Bin 124418 -> 124412 bytes Doc/RomWBW Errata.pdf | Bin 28506 -> 28605 bytes Doc/RomWBW ROM Applications.pdf | Bin 159619 -> 159615 bytes Doc/RomWBW System Guide.pdf | Bin 529183 -> 529181 bytes Doc/RomWBW User Guide.pdf | Bin 597581 -> 597699 bytes ReadMe.md | 2 +- ReadMe.txt | 2 +- Source/Doc/UserGuide.md | 3 + Source/HBIOS/imm.asm | 20 +- Source/HBIOS/ppa.asm | 617 ++++++++++++++++++++++++++++---- Source/HBIOS/syq.asm | 2 +- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 14 files changed, 565 insertions(+), 85 deletions(-) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 6287994bcd41ee77d24bc0e0a048ed0e883230cd..f81a8fba7668e20bca30eee0b254b9a461721d99 100644 GIT binary patch delta 15012 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 diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index b282d0b9a518ebab7c9947528628fea841a72330..fc1ed6d39561c68bfb0e4bc08d3deb37a274dafc 100644 GIT binary patch delta 4941 zcmai2duW$s6n3^SmVbDOt=Oi&!e!p_y!ZEQwotcu$!XITLD>?Qg~POI5xV^FLgb_@ zhpcSjB`X~yQxbC~8eS?)B{f@V$_O=WYB4B8$*nEJ@6PGz?R#@GqQjH-L!W|wu2)@O($KPf=Hn%U#tdAV{ZQ_Kv=v*2rrz57d~M^` zm)^|3>KC60^RGPcY)aGdrs;!j6eJSI9)2Qqnj$e3m!lDmzGINf;GI{&b z%=(2pD$52OsGBf*#K}FC@{=!$?|$`2-Aj#WWo2bi>N9gU_Mgksb!_@_k+SKg|~D7k+6k@UtZ=L$<|cipvRXG`g^iQBJ=()!9Zb-j*n zo>Me?P5G#zUq=pmbZ<&-_5FSNFU#(^GrMO>{tvw^NMVEnF#=rmhCA-*EfsXwYTiDP zvOZ7g1SEeFFDKGke*v&wQkw`mP@9xm)s&x185{}rPr|#nO$ZY#`K$mhl!^O6@WN3) zVHJ4dhiMwyW{Wy=7oL3(gb(C{09t8o(}5-f+8UsNwFecmMTi@oy`4>GGDZMF0l-Mh zK4`Rve-OWCjOED)&5>4CM6qm=$w3W`~iC#HN&Bj6fUJ z1tf{)XH5{v%O&yefL|HwDGCaISk}e`=4ZU2lvOUUrdB93UCPwPKV^aFGXCv?=;GLl zr4~3k2nrf3YdD25Xwn)S>lqD^XZ+L<*x=AwNUHN%1;cCt7!@^UNYTj5JJW4B(I;Wy0a9DO$$( zh*1Iw#`unbyYaJZ9ODpUl*J%SxJ*#CjZIM}{KyElL>LnSyGh_1jYSsI+gXWnMo|bl zK8}<4TZtk-9MMLph&(oocDUoP?#Cg^M9N~BXn$CoR}obylo`owfe8o(W>mD!F}bza zaO`qMw3n`P|Fh0A)kB-3s)s=owK>piZs6wZSxH>y=F_(LApQ;{YcA|_L*a7W3==1D zMw8MxFoO0Bp5;j+B^=%V5UoJ7b_!=S4Pqo)P!WB$K|5z?AAvKtc;5bA$Nq=n$ZF@3 zr)gk^+bFT&PQvy?5BO{#eklF4w}#^ifm50|;+9TphZ~o!+18ZOKhjKZQ0?g;OuBdT zS!^B_3Z*!1!?TL55*{_J6^pKl?IF-oCpSYT1?b0s^f)SbV8KR@7b4a=t%~i1q>RMC zzoJ4TcjCZdlUJnTI!wHKCc@c24pegXB5Bm-XJGbmmX zv4>3;4Lnwq*;q1oR<)O@L$R^$f_J|~ zsUsi6{)p`y2p~2q>konN9Y>SF{{T=i_+ca-#=;XGCvChj@o57!rRP(|%#gSWIX`-I zKISa*ohm3O4EVS$z@1AfJJ#nVM*Y9b^h91>+WZAGDi*w6@xrV$jES0%mXlL3r7-P3 D1H&yN delta 4767 zcmai2drZ}J6z`JdL{kvWT2|Kz0Uz;wKPX8Mt$d);SfxU;iCfJFDjI+2?o3;anr2LY zMLB#`)9R0$TT?`HPR;pRY3dYlh(uG%oM<&)9gKVNp2HS@vBUYE$LE~SIp@dC16|)a z*!82C30?#%)`$8=-mN;4znk^gdwEgf&L6~`mw(R7U73C+seX9ffc%%rs*|?g3Du6< zR^HFd&ri8=HS-OzG;?^xr9TILeEX@S2~+!JR*z?!@4NayL*$R7)OF{p zvU_Dck?be+Z)j;LtXw~0)$r#wCatar9lq52dSPYCx|;H*>-JtPn_4sTc*8q~zwABp z>vc`1p5ZL(;l>>^&#fproc!94*D_{p|Lgv$Q8k4FS4}@U=+Tqa*SC$%8Z%?go0}JZ z)sQ;y_ZKhZY^v@P94r_-ZOxL0c5mr6sq$<=r2E#c1+L)zx?%gf{n}h#Ro2uxdi943 z!`mlsJTzy~k@>Hzzt&^V*3!v|eYU)vzURcZvp;Prp1Z%bdvj&$jlz?~Pd+wwLGk$I zt+zLPK6v^g7iFG2HDkt=S-;&HTDLc{^@B}Q#_UU|z0*>WnP0TD{$k&g%MSERAG=`R zB~#dI!^G2{9UIi`L`8M&3(Ifrytt%G!uMSgLa+WbL<`9s_e>6DHjS~gjBw_-+0*h$ z%1guPd0B!9$zm$Odq+cS1}PS1Z9m~z;l#VYFlL;?GVZkwCLRl=gnUqXER@#QVhzE) z4Az211U=@=amA6kcidtXf!<5kmJ5i2# zBJ(sD&AE)z%LEj)FvOr%oEX&F@}Th-0FB})4Us8f2^h{=;>tOX^|;befMWOv?Myp9 zJ!3+}0LftSafk`qHOhG%mn&n|IzfsCYNV^2rZR0bj*~fK+TY$&NM|`Iq;nEG=Fmd% z#bAtcs4fbcd8VkIw()uqc&seP5ppF-6*#v7qs5hS^sOd*Yl{!R^~^aIK~Zxj2wdE; zP8>THp9v)5xWrD{1_ee?FfXH}i$o`aV3uJ;4(MYiqK)Y&Xpj-Kgzy}5PzZ}l5@CYF zz`_QF(?kZnjiDCWC?b=sU6@Hj~2)@ zrmVEy5k2b&!=zztv-d9kG5F!Jz;#lbk;jS|(s0r-i=kEwCKn1CX5T&Z3@T5D63Gx$ ziVHl)mGqj(I43Mr;1mO(tP)fvRQvGn7=lU(3V;QyP!gIM(tjFO9M)4-6Sium5m2zr zz#y5bT3E6kwb0T8yXrgHX0Q(x21si-Q*i8B6LM?eI?*#^!NM+$^0PSBHCj6|rnHw9 za|gIh&H@O~;}r~VxeC5J13BV+j1YuE+NjfG?c5E|tTGR!ofDbN7xX%=nnj>a&` zkRfD*CNwq5k|6{uUE(ngr6Tjez||Db7GS5bj*L?ST}7jYTyQ4VkfCO*akwzXT7_k> zjf4zx&URJ=8@mHzfLkU>1A)xo=Chq_2P+&YmSvg~c3R&2ON{z43-kQ zE8A`@j}Bib0@M_@4(u9wJX%YaILHhE*TP|iiUmgoIs6{+!Q)P3(jgS! zgwl)!0~$jq!*H`Wm_R5_P*2wHF_ z;28m~I63GXoS`TKIF^8<@c_bGNcBHi$4L&i8{DG*_GO$$ zGKk5LOB+7bqIw-e$HTfu6=V)(DCWL{8xG$A9_|_Z)^jFN&7cwj^*d}M4~4`|JXap~ zjOTC^25Xx-X(#XK1olqjwa%I4QU_PS1o=Gku)9#Wpe}JOAa|Gx2zNL#h>XKvC-xkG zhk5}FdSQbV=OHZwA@l;Y5Awy0#Vi3m=#ZchOq8O^aQMV6wc00oL62lx4dF* S>GVYK2@Fn5O&vLYRN}viS{>#9 diff --git a/Doc/RomWBW Errata.pdf b/Doc/RomWBW Errata.pdf index e2f32db7c60f6d4542b00d4e0b1df03adc52cbf3..1471eb0eb0dc0fcab89b3f6c25b3a3645cd3779f 100644 GIT binary patch delta 9105 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 delta 8972 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 diff --git a/Doc/RomWBW ROM Applications.pdf b/Doc/RomWBW ROM Applications.pdf index f3c3ecdf7f869651f75a19faada337bbbe2d3005..eae81f180f472985a0a86a2c7e573d1182337f69 100644 GIT binary patch delta 9110 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 delta 9045 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 diff --git a/Doc/RomWBW System Guide.pdf b/Doc/RomWBW System Guide.pdf index 96cffc1d05cb304887f689074c815d30bde4fcf7..894d9121cfb33baa359569344a6df1e537855035 100644 GIT binary patch delta 20253 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 diff --git a/Doc/RomWBW User Guide.pdf b/Doc/RomWBW User Guide.pdf index e3c525ec08624465e32ae1c90441428bbd830b61..af9d8ef71229d4b2a5ca21ed7b56a89d1a6bd743 100644 GIT binary patch delta 32269 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 z z#D2+rdpr_~jIRb|$5Nl-hZ>kqhIAXX)o_+rodf#vup!#97$!z50(&^+5~iRtJ{+OH zc1(hLO-5rCreaU25IMfOD7Wz9%HaX>^K2Ye9E!f|eE`O06=7({9z=j9RuxfG$iL$z zHe~P$#UhS`EHW{OFKj%befI>QP zIdKE%YFhS$zPjHBi!`cb+yFv|qzf4k4f!{@(2hlQ@gY3wGKqaD62Kg+h5|G^Bqi0W zaJDs(XKLcM175RDA~LT}6PrVl^z^UzB{F{eNJNnF(3g8j8iXMWp`R|a!B>O0p~t6p zD73+yDl2~~f_YdBGjW(0-Yi=*q*jMk2yO88h2lYU<|z>IjSQ1T)R_=DMqm9J1Mm%> z`(Wu}k*1}YLUiWI97I@|tByc(8QLuYyJBgW&hCmPMwtkw6$fB+p$*ci?2K{y82jN_ z5E}F$d+CYYm7{Lxr~L|{jf`cIQSVS(A5vxwKtl{se{Y1SGMPaCNV8uLGCL(3}rwhSQRMlFwws)rL~ zf`R7j6Dwl6j3PHo#j4cNjz{N_ET+#*(H9?f5c#8bg5^X?Q18HTG+cY87Rw3m0Mb(R ziC7>2pw7V*ogiQilSK_ubvg|TnF~y)d;Fl`8#?S29BAwn942Np_-LoVcWCt|0g+|& z(3zGPh!eA~rwB;DAhtx#4m5b}WPvE^qrn$IJf!eR zJ297_FCXxkkz$~4Dn$2yd-r&{Ob3K%U@{}-#OR_?ght(5c(e#wkmn9)g#ZOvHQs>I z`;HR^qNDAAv{+vrTSmz!Ky-26NyQGk_Keqo=){RPNwlZ>P5JsZu&>q&@7!6gr$Z uM~9w0WioZwW}W~4CL^15?P@Y*s%PNTnSnlIOb`#lM?*}ktQ-gQH2FU_cn8`5 delta 29430 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

Dza*ZHYQWS!UM*yXjP>>T*$Yly8*@!~U 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 TW4sxbfJ!m5we8x+#q9q8M~t?u diff --git a/ReadMe.md b/ReadMe.md index 3ddc1dd5..3727f082 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ **RomWBW ReadMe** \ Version 3.3 \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ -23 May 2023 +02 Jun 2023 # Overview diff --git a/ReadMe.txt b/ReadMe.txt index a409cd8a..fa0649e6 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -1,6 +1,6 @@ RomWBW ReadMe Wayne Warthen (wwarthen@gmail.com) -23 May 2023 +02 Jun 2023 diff --git a/Source/Doc/UserGuide.md b/Source/Doc/UserGuide.md index d6acd606..78378edb 100644 --- a/Source/Doc/UserGuide.md +++ b/Source/Doc/UserGuide.md @@ -3901,6 +3901,7 @@ may be discovered by RomWBW in your system. | GDC | Video | uPD7220 Video Display Controller | | HDSK | Disk | SIMH Simulator Hard Disk | | IDE | Disk | IDE/ATA Hard Disk Interface | +| IMM | Disk | IMM Zip Drive on PPI | | INTRTC | RTC | Interrupt-based Real Time Clock | | KBD | Kbd | 8242 PS/2 Keyboard Controller | | KIO | System | Zilog Serial/ Parallel Counter/Timer | @@ -3910,6 +3911,7 @@ may be discovered by RomWBW in your system. | I2C | System | I2C Interface | | PIO | Char | Zilog Parallel Interface Controller | | PPIDE | Disk | 8255 IDE/ATA Hard Disk Interface | +| PPA | Disk | PPA Zip Drive on PPI | | PPK | Kbd | Matrix Keyboard | | PPPSD | Disk | ParPortProp SD Card Interface | | PPPCON | Serial | ParPortProp Serial Console Interface | @@ -3922,6 +3924,7 @@ may be discovered by RomWBW in your system. | SIO | Char | Zilog Serial Port Interface | | SN76489 | Sound | SN76489 Programmable Sound Generator | | SPK | Sound | Bit-bang Speaker | +| SYQ | Disk | Iomega SparQ Drive on PPI | | TMS | Video | TMS9918/38/58 Video Display Controller | | UART | Char | 16C550 Family Serial Interface | | USB-FIFO | Char | FT232H-based ECB USB FIFO | diff --git a/Source/HBIOS/imm.asm b/Source/HBIOS/imm.asm index 079bf9af..7e59d1db 100644 --- a/Source/HBIOS/imm.asm +++ b/Source/HBIOS/imm.asm @@ -9,7 +9,7 @@ ; INTENDED TO CO-EXIST WITH LPT DRIVER. ; ; CREATED BY WAYNE WARTHEN FOR ROMWBW HBIOS. -; MUCH OF THE CODE IS DERIVED FROM FUZIX (ALAN COX). +; MUCH OF THE CODE IS DERIVED FROM LINUX AND FUZIX (ALAN COX). ; ; 5/23/2023 WBW - INITIAL RELEASE ; 5/26/2023 WBW - CLEAN UP, LED ACTIVITY @@ -189,7 +189,7 @@ IMM_INIT4: CALL DIO_ADDENT ; ADD ENTRY TO GLOBAL DISK DEV TABLE ; CALL IMM_RESET ; RESET/INIT THE INTERFACE -#IF (IMMTRACE == 0) +#IF (IMMTRACE <= 1) CALL IMM_PRTSTAT #ENDIF JR NZ,IMM_INIT6 @@ -224,6 +224,9 @@ IMM_INIT6: ; ON RETURN, ZF SET INDICATES HARDWARE FOUND ; IMM_DETECT: +#IF (IMMTRACE >= 3) + PRTS("\r\nDETECT:$") +#ENDIF ; INITIALIZE 8255 LD A,(IY+IMM_IOBASE) ; BASE PORT ADD A,IMM_IOSETUP ; BUMP TO SETUP PORT @@ -1024,7 +1027,7 @@ IMM_GETSTATUS: ; RET ; -; TERMINATE A BULD READ OPERATION +; TERMINATE A BULK READ OPERATION ; IMM_ENDREAD: IMM_WCTL($04) @@ -1151,7 +1154,8 @@ IMM_CHKCMD1: ; ; REQ SENSE CMD COMPLETED #IF (IMMTRACE >= 3) - LD A,16 + PRTS("\r\nSENSE:$") + LD A,$19 LD DE,HB_WRKBUF CALL Z,PRTHEXBUF #ENDIF @@ -1219,7 +1223,8 @@ IMM_INITDEV1: JR NZ,IMM_INITDEV2 ; IF ERROR, LOOP ; #IF (IMMTRACE >= 3) - LD A,16 + PRTS("\r\nSENSE:$") + LD A,$19 LD DE,HB_WRKBUF CALL PRTHEXBUF #ENDIF @@ -1241,9 +1246,10 @@ IMM_INITDEV3: LD HL,IMM_CMD_RDCAP ; POINT TO READ CAPACITY CMD CALL IMM_RUNCMD ; RUN THE SCSI ENGINE CALL Z,IMM_CHKCMD ; CHECK AND RECORD ANY ERRORS - RET NZ ; BAIL ON ON ERROR + RET NZ ; BAIL OUT ON ERROR ; #IF (IMMTRACE >= 3) + PRTS("\r\nRDCAP:$") LD A,8 LD DE,HB_WRKBUF CALL PRTHEXBUF @@ -1302,7 +1308,7 @@ IMM_ERR: LD (IY+IMM_STAT),A ; SAVE NEW STATUS ; IMM_ERR2: -#IF (IMMTRACE >= 1) +#IF (IMMTRACE >= 2) CALL IMM_PRTSTAT #ENDIF OR A ; SET FLAGS diff --git a/Source/HBIOS/ppa.asm b/Source/HBIOS/ppa.asm index d10b88ab..94bc5243 100644 --- a/Source/HBIOS/ppa.asm +++ b/Source/HBIOS/ppa.asm @@ -9,7 +9,7 @@ ; INTENDED TO CO-EXIST WITH LPT DRIVER. ; ; CREATED BY WAYNE WARTHEN FOR ROMWBW HBIOS. -; MUCH OF THE CODE IS DERIVED FROM FUZIX (ALAN COX). +; MUCH OF THE CODE IS DERIVED FROM LINUX AND FUZIX (ALAN COX). ; ; 5/23/2023 WBW - INITIAL RELEASE ; 5/26/3023 WBW - CLEAN UP, LED ACTIVITY @@ -71,8 +71,6 @@ ; ; TODO: ; -; - CURRENTLY HAS ONLY DETECTION LOGIC. NEED TO WRITE THE REST!!! -; ; - OPTIMIZE READ/WRITE LOOPS ; ; NOTES: @@ -137,6 +135,9 @@ PPA_LBA .EQU 8 ; OFFSET OF LBA (DWORD) #DEFINE PPA_WCTL(VAL) LD A,VAL \ CALL PPA_WRITECTRL #DEFINE PPA_WDATA(VAL) LD A,VAL \ CALL PPA_WRITEDATA ; +#DEFINE PPA_DPUL(VAL) LD A,VAL \ CALL PPA_DPULSE +#DEFINE PPA_CPUL(VAL) LD A,VAL \ CALL PPA_CPULSE +; ;============================================================================= ; INITIALIZATION ENTRY POINT ;============================================================================= @@ -192,7 +193,7 @@ PPA_INIT4: CALL DIO_ADDENT ; ADD ENTRY TO GLOBAL DISK DEV TABLE ; CALL PPA_RESET ; RESET/INIT THE INTERFACE -#IF (PPATRACE == 0) +#IF (PPATRACE <= 1) CALL PPA_PRTSTAT #ENDIF JR NZ,PPA_INIT6 @@ -227,6 +228,9 @@ PPA_INIT6: ; ON RETURN, ZF SET INDICATES HARDWARE FOUND ; PPA_DETECT: +#IF (PPATRACE >= 3) + PRTS("\r\nDETECT:$") +#ENDIF ; INITIALIZE 8255 LD A,(IY+PPA_IOBASE) ; BASE PORT ADD A,PPA_IOSETUP ; BUMP TO SETUP PORT @@ -235,34 +239,37 @@ PPA_DETECT: OUT (C),A ; DO IT CALL DELAY ; BRIEF DELAY FOR GOOD MEASURE ; - LD A,$AA \ CALL PPA_WRITEDATA + PPA_WDATA($AA) CALL PPA_DISCONNECT CALL PPA_CONNECT - LD A,$06 \ CALL PPA_WRITECTRL + PPA_WCTL($0E) CALL PPA_READSTATUS ; +#IF (PPATRACE >= 3) CALL PC_SPACE CALL PRTHEXBYTE +#ENDIF ; - AND $F0 - CP $F0 + AND $08 + CP $08 JR NZ,PPA_DETECT_FAIL - LD A,$04 \ CALL PPA_WRITECTRL +; + PPA_WCTL($0C) CALL PPA_READSTATUS ; +#IF (PPATRACE >= 3) CALL PC_SPACE CALL PRTHEXBYTE +#ENDIF ; - AND $F0 - CP $80 + AND $08 + CP $00 JR NZ,PPA_DETECT_FAIL - LD A,$AA \ CALL PPA_WRITEDATA - LD A,$0C \ CALL PPA_WRITECTRL - CALL PPA_CONNECT - LD A,$40 \ CALL PPA_WRITEDATA - LD A,$08 \ CALL PPA_WRITECTRL - LD A,$0C \ CALL PPA_WRITECTRL +; CALL PPA_DISCONNECT +; + PPA_WDATA($AA) + PPA_WCTL($0C) ; XOR A ; SIGNAL SUCCESS RET ; AND RETURN @@ -270,7 +277,6 @@ PPA_DETECT: PPA_DETECT_FAIL: OR $FF ; SIGNAL FAILURE RET NZ - ; ;============================================================================= ; DRIVER FUNCTION TABLE @@ -447,32 +453,6 @@ PPA_GEOM: ; FUNCTION SUPPORT ROUTINES ;============================================================================= ; -; -; -PPA_DELAY: - PUSH AF - CALL DELAY - CALL DELAY - CALL DELAY - CALL DELAY - POP AF - RET -; -; -; -PPA_WAITDONE: - LD HL,0 ; TIMEOUT COUNTER -PPA_WAITDONE1: - CALL PPA_READSTATUS - AND $F0 - BIT 7,A - RET NZ - DEC HL - LD A,H - OR L - ;JP Z,PPA_CMD_TIMEOUT ; TIMEOUT - JR PPA_WAITDONE1 -; ; OUTPUT BYTE IN A TO THE DATA PORT ; PPA_WRITEDATA: @@ -548,64 +528,92 @@ PPA_READSTATUS5: ; PPA_DPULSE: CALL PPA_WRITEDATA - LD A,$0C \ CALL PPA_WRITECTRL - LD A,$0E \ CALL PPA_WRITECTRL - LD A,$0C \ CALL PPA_WRITECTRL - LD A,$04 \ CALL PPA_WRITECTRL - LD A,$0C \ CALL PPA_WRITECTRL + PPA_WCTL($0C) + PPA_WCTL($0E) + PPA_WCTL($0C) + PPA_WCTL($04) + PPA_WCTL($0C) RET ; ; ; PPA_CPULSE: CALL PPA_WRITEDATA - LD A,$04 \ CALL PPA_WRITECTRL - LD A,$06 \ CALL PPA_WRITECTRL - LD A,$04 \ CALL PPA_WRITECTRL - LD A,$0C \ CALL PPA_WRITECTRL + PPA_WCTL($04) + PPA_WCTL($06) + PPA_WCTL($04) + PPA_WCTL($0C) RET ; ; ; PPA_CONNECT: - LD A,$00 \ CALL PPA_CPULSE - LD A,$3C \ CALL PPA_CPULSE - LD A,$20 \ CALL PPA_CPULSE - LD A,$8F \ CALL PPA_CPULSE + PPA_CPUL($00) + PPA_CPUL($3C) + PPA_CPUL($20) + PPA_CPUL($8F) RET ; ; ; PPA_DISCONNECT: - LD A,$00 \ CALL PPA_DPULSE - LD A,$3C \ CALL PPA_DPULSE - LD A,$20 \ CALL PPA_DPULSE - LD A,$0F \ CALL PPA_DPULSE + PPA_DPUL($00) + PPA_DPUL($3C) + PPA_DPUL($20) + PPA_DPUL($0F) +; + ; TURNS OFF MG014 LED + PPA_WCTL($8C) +; RET ; -; SCSI SELECT PROCESS +; INITIATE A SCSI BUS RESET. +; +PPA_RESETPULSE: + PPA_WDATA($40) + PPA_WCTL($08) + CALL DELAY ; 32 US, IDEALLY 30 US + PPA_WCTL($0C) + RET ; +; SCSI SELECT PROCESS ; PPA_SELECT: +#IF (PPATRACE >= 3) + PRTS("\r\nSELECT: $") +#ENDIF +; +#IF (PPATRACE >= 3) + CALL PPA_READSTATUS + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF +; LD A,1 << PPA_TGT CALL PPA_WRITEDATA - LD A,$0E \ CALL PPA_WRITECTRL - LD A,$0C \ CALL PPA_WRITECTRL + PPA_WCTL($0E) + PPA_WCTL($0C) LD A,1 << PPA_SELF CALL PPA_WRITEDATA LD A,$08 \ CALL PPA_WRITECTRL + PPA_WCTL($08) ; - LD HL,0 ; TIMEOUT COUNTER + LD HL,500 ; TIMEOUT COUNTER ; PPA_SELECT1: +#IF (PPATRACE >= 3) CALL PPA_READSTATUS - OR $F0 - RET NZ + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF + AND $40 + CP $40 + RET Z DEC HL LD A,H OR L - RET Z ; TIMEOUT - JR PPA_SELECT1 + JR NZ,PPA_SELECT1 + JP PPA_CMD_TIMEOUT ; ; SEND SCSI CMD BYTE STRING. AT ENTRY, HL POINTS TO START OF ; COMMAND BYTES. THE LENGTH OF THE COMMAND STRING MUST PRECEED @@ -615,7 +623,313 @@ PPA_SELECT1: ; DATA OUTPOUT IS BURSTED (NO CHECK FOR BUSY). SEEMS TO WORK FINE. ; PPA_SENDCMD: - JP PPA_ERR ; NOW DO STANDARD ERR PROCESSING +; +#IF (PPATRACE >= 3) + PRTS("\r\nSENDCMD:$") +#ENDIF +; + DEC HL ; BACKUP TO LENGTH BYTE + LD B,(HL) ; PUT IN B FOR LOOP COUNTER +; +#IF (PPATRACE >= 3) + LD A,B + CALL PC_SPACE + CALL PRTHEXBYTE + PRTS(" BYTES$") +#ENDIF +; + INC HL ; BACK TO FIRST CMD BYTE +; +PPA_SENDCMD1: + ;PPA_WCTL($0C) + LD A,(HL) ; LOAD CMD BYTE +; +#IF (PPATRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF +; + CALL PPA_WRITEDATA ; PUT IT ON THE BUS + INC HL ; BUMP TO NEXT BYTE + PPA_WCTL($0E) + PPA_WCTL($0C) + DJNZ PPA_SENDCMD1 ; LOOP TILL DONE +; + RET +; +; +; +; +; WAIT FOR SCSI BUS TO BECOME READY WITH A TIMEOUT. +; +PPA_WAITLOOP: + CALL PPA_READSTATUS + BIT 7,A + RET NZ ; DONE, STATUS IN A + DEC HL + LD A,H + OR L + RET Z ; TIMEOUT + JR PPA_WAITLOOP +; +PPA_WAIT: + LD HL,500 ; GOOD VALUE??? + PPA_WCTL($0C) + CALL PPA_WAITLOOP + + ;CALL PC_SPACE + ;CALL PRTHEXBYTE + + JP Z,PPA_CMD_TIMEOUT ; HANDLE TIMEOUT + ;PUSH AF + ;PPA_WCTL($04) + ;POP AF + AND $F0 + RET ; RETURN W/ RESULT IN A +; +; MAX OBSERVED PPA_WAITLOOP ITERATIONS IS $0116B3 +; +PPA_LONGWAIT: + LD B,3 ; VALUE??? + PPA_WCTL($0C) +PPA_LONGWAIT1: + LD HL,0 + CALL PPA_WAITLOOP + JR NZ,PPA_LONGWAIT2 ; HANDLE SUCCESS + DJNZ PPA_LONGWAIT1 ; LOOP TILL COUNTER EXHAUSTED + + ;CALL PC_SPACE + ;CALL PRTHEXBYTE + + JP PPA_CMD_TIMEOUT ; HANDLE TIMEOUT +; +PPA_LONGWAIT2: + ;PUSH AF + ;PPA_WCTL($04) +; +#IF 0 + PUSH AF + CALL PC_GT + LD A,B + CALL PRTHEXBYTE + CALL PC_COLON + CALL PRTHEXWORDHL + POP AF +#ENDIF +; + ;POP AF + + ;CALL PC_SPACE + ;CALL PRTHEXBYTE + + AND $F0 + RET ; RETURN W/ RESULT IN A +; +; GET A BYTE OF DATA FROM THE SCSI DEVICE. THIS IS A NIBBLE READ. +; BYTE RETURNED IN A. +; +PPA_GETBYTE: + CALL PPA_WAIT + PPA_WCTL($04) + CALL PPA_READSTATUS + AND $F0 + PUSH AF + PPA_WCTL($06) + CALL PPA_READSTATUS + AND $F0 + RRCA + RRCA + RRCA + RRCA + POP HL + OR H + PUSH AF + PPA_WCTL($0C) + POP AF + RET +; +; GET A CHUNK OF DATA FROM SCSI BUS. THIS IS SPECIFICALLY FOR +; READ PHASE. IF A LENGTH IS SPECIFIED (NON-ZERO HL), THEN THE +; DATA IS BURST READ. IF NO LENGTH SPECIFIED, DATA IS READ AS +; LONG AS SCSI DEVICE WANTS TO CONTINUE SENDING (NO OVERRUN +; CHECK IN THIS CASE). +; +; THIS IS A NIBBLE READ. +; +; DE=BUFFER +; HL=LENGTH (0 FOR VARIABLE) +; +PPA_GETDATA: + ; BRANCH TO CORRECT ROUTINE + LD A,H + OR L ; IF ZERO + JR NZ,PPA_GETDATALEN ; DO BURST READ +; +#IF (PPATRACE >= 3) + PRTS("\r\nGETDATA:$") +#ENDIF +; +PPA_GETDATA1: + PUSH HL ; SAVE BYTE COUNTER + CALL PPA_WAIT ; WAIT FOR BUS READY + POP HL ; RESTORE BYTE COUNTER + CP $D0 ; CHECK FOR READ PHASE + JR NZ,PPA_GETDATA2 ; IF NOT, ASSUME WE ARE DONE + PPA_WCTL($04) + CALL PPA_READSTATUS ; GET FIRST NIBBLE + AND $F0 ; ISOLATE BITS + PUSH AF ; SAVE WORKING VALUE + PPA_WCTL($06) + CALL PPA_READSTATUS ; GET SECOND NIBBLE + AND $F0 ; ISOLATE BITS + RRCA ; AND SHIFT TO LOW NIBBLE + RRCA + RRCA + RRCA + POP BC ; RECOVER LOW NIBBLE + OR B ; COMBINE + LD (DE),A ; AND SAVE THE FULL BYTE VALUE + INC DE ; NEXT BUFFER POS + INC HL ; INCREMENT BYTES COUNTER + JR PPA_GETDATA1 ; LOOP TILL DONE +; +PPA_GETDATA2: +; +#IF (PPATRACE >= 3) + CALL PC_SPACE + CALL PRTHEXWORDHL + PRTS(" BYTES$") +#ENDIF +; + PPA_WCTL($0C) + RET +; +PPA_GETDATALEN: +; +#IF (PPATRACE >= 3) + PRTS("\r\nGETDLEN:$") + CALL PC_SPACE + CALL PRTHEXWORDHL + PRTS(" BYTES$") +#ENDIF +; +PPA_GETDATALEN1: + PPA_WCTL($04) + CALL PPA_READSTATUS ; GET FIRST NIBBLE + AND $F0 ; ISOLATE BITS + PUSH AF ; SAVE WORKING VALUE + PPA_WCTL($06) + CALL PPA_READSTATUS ; GET SECOND NIBBLE + AND $F0 ; ISOLATE BITS + RRCA ; MOVE TO LOW NIBBLE + RRCA + RRCA + RRCA + POP BC ; RECOVER FIRST NIBBLE + OR B ; COMBINE + LD (DE),A ; SAVE FINAL BYTE VALUE + INC DE ; NEXT BUFFER POS + DEC HL ; DEC LOOP COUNTER + LD A,H ; CHECK LOOP COUNTER + OR L + JR NZ,PPA_GETDATALEN1 ; LOOP IF NOT DONE + PPA_WCTL($0C) + RET +; +; PUT A CHUNK OF DATA TO THE SCSI BUS. THIS IS SPECIFICALLY FOR +; WRITE PHASE. IF A LENGTH IS SPECIFIED (NON-ZERO HL), THEN THE +; DATA IS BURST WRITTEN. IF NO LENGTH SPECIFIED, DATA IS WRITTEN AS +; LONG AS SCSI DEVICE WANTS TO CONTINUE RECEIVING (NO OVERRUN +; CHECK IN THIS CASE). +; +; READS ARE DONE AS BYTE PAIRS. EACH LOOP READS 2 BYTES. +; +; DE=BUFFER +; HL=LENGTH (0 FOR VARIABLE) +; +PPA_PUTDATA: + LD A,H + OR L + JR NZ,PPA_PUTDATALEN +; +#IF (PPATRACE >= 3) + PRTS("\r\nPUTDATA:$") +#ENDIF +; +PPA_PUTDATA1: + PUSH HL ; SAVE BYTE COUNTER + CALL PPA_WAIT ; WAIT FOR BUS READY + POP HL ; RESTORE BYTE COUNTER + CP $C0 ; CHECK FOR WRITE PHASE + JR NZ,PPA_PUTDATA2 ; IF NOT, ASSUME WE ARE DONE + LD A,(DE) ; GET NEXT BYTE TO WRITE (FIRST OF PAIR) + CALL PPA_WRITEDATA ; PUT ON BUS + INC DE ; BUMP TO NEXT BUF POS + INC HL ; INCREMENT COUNTER + PPA_WCTL($0E) + PPA_WCTL($0C) + LD A,(DE) ; GET NEXT BYTE TO WRITE (SECOND OF PAIR) + JR PPA_PUTDATA1 ; LOOP TILL DONE +; +PPA_PUTDATA2: +; +#IF (PPATRACE >= 3) + CALL PC_SPACE + CALL PRTHEXWORDHL + PRTS(" BYTES$") +#ENDIF +; + RET +; +PPA_PUTDATALEN: +; +#IF (PPATRACE >= 3) + PRTS("\r\nPUTDLEN:$") + CALL PC_SPACE + CALL PRTHEXWORDHL + PRTS(" BYTES$") +#ENDIF +; +PPA_PUTDATALEN1: + LD A,(DE) ; GET NEXT BYTE (FIRST OF PAIR) + CALL PPA_WRITEDATA ; PUT ON BUS + INC DE ; INCREMENT BUF POS + DEC HL ; DEC LOOP COUNTER + PPA_WCTL($0E) + PPA_WCTL($0C) + LD A,H ; CHECK LOOP COUNTER + OR L + JR NZ,PPA_PUTDATALEN1 ; LOOP TILL DONE + RET +; +; READ SCSI COMMAND STATUS +; +PPA_GETSTATUS: +; +#IF (PPATRACE >= 3) + PRTS("\r\nSTATUS:$") +#ENDIF +; + CALL PPA_GETBYTE ; GET ONE BYTE + LD (PPA_CMDSTAT),A ; SAVE AS FIRST STATUS BYTE +; +#IF (PPATRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF +; + CALL PPA_WAIT ; CHECK FOR OPTIONAL SECOND BYTE + CP $F0 ; STILL IN STATUS PHASE? + RET NZ ; IF NOT, DONE + CALL PPA_GETBYTE ; ELSE, GET THE SECOND BYTE + LD (PPA_CMDSTAT+1),A ; AND SAVE IT +; +#IF (PPATRACE >= 3) + CALL PC_SPACE + CALL PRTHEXBYTE +#ENDIF +; + RET ; ; THIS IS THE MAIN SCSI ENGINE. BASICALLY, IT SELECTS THE DEVICE ; ON THE BUS, SENDS THE COMMAND, THEN PROCESSES THE RESULT. @@ -625,6 +939,83 @@ PPA_SENDCMD: ; BC: TRANSFER LENGTH (0=VARIABLE) ; PPA_RUNCMD: + ; THERE ARE MANY PLACES NESTED WITHIN THE ROUTINES THAT + ; ARE CALLED HERE. HERE WE SAVE THE STACK SO THAT WE CAN + ; EASILY AND QUICKLY ABORT OUT OF ANY NESTED ROUTINE. + ; SEE PPA_CMD_ERR BELOW. + LD (PPA_CMDSTK),SP ; FOR ERROR ABORTS + LD (PPA_DSKBUF),DE ; SAVE BUF PTR + LD (PPA_XFRLEN),BC ; SAVE XFER LEN + PUSH HL + CALL PPA_CONNECT ; PARALLEL PORT BUS CONNECT + CALL PPA_SELECT ; SELECT TARGET DEVICE + CALL PPA_WAIT ; WAIT TILL READY + POP HL + CALL PPA_SENDCMD ; SEND THE COMMAND +; +PPA_RUNCMD_PHASE: + ; WAIT FOR THE BUS TO BE READY. WE USE AN EXTRA LONG WAIT + ; TIMEOUT HERE BECAUSE THIS IS WHERE WE WILL WAIT FOR LONG + ; OPERATIONS TO COMPLETE. IT CAN TAKE SOME TIME IF THE + ; DEVICE HAS GONE TO SLEEP BECAUSE IT WILL NEED TO WAKE UP + ; AND SPIN UP BEFORE PROCESSING AN I/O COMMAND. + CALL PPA_LONGWAIT ; WAIT TILL READY +; +#IF (PPATRACE >= 3) + PRTS("\r\nPHASE: $") + CALL PRTHEXBYTE +#ENDIF +; + CP $C0 ; DEVICE WANTS TO RCV DATA + JR Z,PPA_RUNCMD_WRITE + CP $D0 ; DEVICE WANTS TO SEND DATA + JR Z,PPA_RUNCMD_READ + CP $F0 ; DEVICE WANTS TO BE DONE + JR Z,PPA_RUNCMD_END + JR PPA_CMD_IOERR +; +PPA_RUNCMD_WRITE: + LD DE,(PPA_DSKBUF) ; XFER BUFFER + LD HL,(PPA_XFRLEN) ; XFER LENGTH + CALL PPA_PUTDATA ; SEND DATA NOW + JR PPA_RUNCMD_PHASE ; BACK TO DISPATCH +; +PPA_RUNCMD_READ: + ;CALL PPA_NEGOTIATE ; NEGOTIATE FOR READ + ;CALL PPA_WAIT ; WAIT TILL READY + LD DE,(PPA_DSKBUF) ; XFER BUFFER + LD HL,(PPA_XFRLEN) ; XFER LENGTH + CALL PPA_GETDATA ; GET THE DATA NOW + ;CALL PPA_ENDREAD ; TERMINATE THE READ + JR PPA_RUNCMD_PHASE ; BACK TO DISPATCH +; +PPA_RUNCMD_END: + ;CALL PPA_NEGOTIATE ; NEGOTIATE FOR READ (STATUS) + ;CALL PPA_WAIT ; WAIT TILL READY + CALL PPA_GETSTATUS ; READ STATUS BYTES + ;CALL PPA_ENDREAD ; TERMINATE THE READ + CALL PPA_DISCONNECT ; PARALLEL PORT BUS DISCONNECT + XOR A ; SIGNAL SUCCESS + RET +; +PPA_CMD_IOERR: + LD A,PPA_STIOERR ; ERROR VALUE TO A + JR PPA_CMD_ERR ; CONTINUE +; +PPA_CMD_TIMEOUT: + LD A,PPA_STTO ; ERROR VALUE TO A + JR PPA_CMD_ERR ; CONTINUE +; +PPA_CMD_ERR: + LD SP,(PPA_CMDSTK) ; UNWIND STACK + PUSH AF ; SAVE STATUS + ;CALL PPA_RESETPULSE ; CLEAN UP THE MESS??? + LD DE,62 ; DELAY AFTER RESET PULSE + CALL VDELAY + CALL PPA_DISCONNECT ; PARALLEL PORT BUS DISCONNECT + LD DE,62 ; DELAY AFTER DISCONNECT + CALL VDELAY + POP AF ; RECOVER STATUS JP PPA_ERR ; NOW DO STANDARD ERR PROCESSING ; ; ERRORS SHOULD GENERALLY NOT CAUSE SCSI PROCESSING TO FAIL. IF A @@ -656,7 +1047,8 @@ PPA_CHKCMD1: ; ; REQ SENSE CMD COMPLETED #IF (PPATRACE >= 3) - LD A,16 + PRTS("\r\nSENSE:$") + LD A,$19 LD DE,HB_WRKBUF CALL Z,PRTHEXBUF #ENDIF @@ -693,7 +1085,86 @@ PPA_INITDEV: OUT (C),A ; DO IT CALL DELAY ; SHORT DELAY FOR BUS SETTLE ; - JP PPA_NOTSUP + ; BUS RESET + CALL PPA_CONNECT + CALL PPA_RESETPULSE + LD DE,62 ; 1000 US + CALL VDELAY + CALL PPA_DISCONNECT + LD DE,62 ; 1000 US + CALL VDELAY +; + ; INITIALLY, THE DEVICE MAY REQUIRE MULTIPLE REQUEST SENSE + ; COMMANDS BEFORE IT WILL ACCEPT I/O COMMANDS. THIS IS DUE + ; TO THINGS LIKE BUS RESET NOTIFICATION, MEDIA CHANGE, ETC. + ; HERE, WE RUN A FEW REQUEST SENSE COMMANDS. AS SOON AS ONE + ; INDICATES NO ERRORS, WE CAN CONTINUE. + LD B,4 ; TRY UP TO 4 TIMES +PPA_INITDEV1: + PUSH BC ; SAVE LOOP COUNTER +; + ; REQUEST SENSE COMMAND + LD DE,HB_WRKBUF ; BUFFER FOR SENSE DATA + LD BC,0 ; READ WHATEVER IS SENT + LD HL,PPA_CMD_SENSE ; POINT TO CMD BUFFER + CALL PPA_RUNCMD ; RUN THE SCSI ENGINE + JR NZ,PPA_INITDEV2 ; CMD PROC ERROR +; +#IF (PPATRACE >= 3) + PRTS("\r\nSENSE:$") + LD A,$19 + LD DE,HB_WRKBUF + CALL PRTHEXBUF +#ENDIF +; + ; CHECK SENSE KEY + LD A,(HB_WRKBUF + 2) ; GET SENSE KEY + OR A ; SET FLAGS +; +PPA_INITDEV2: + POP BC ; RESTORE LOOP COUNTER + JR Z,PPA_INITDEV3 ; IF NO ERROR, MOVE ON + DJNZ PPA_INITDEV1 ; TRY UNTIL COUNTER EXHAUSTED + JP PPA_IOERR ; BAIL OUT WITH ERROR +; +PPA_INITDEV3: + ; READ & RECORD DEVICE CAPACITY + LD DE,HB_WRKBUF ; BUFFER TO CAPACITY RESPONSE + LD BC,0 ; READ WHATEVER IS SENT + LD HL,PPA_CMD_RDCAP ; POINT TO READ CAPACITY CMD + CALL PPA_RUNCMD ; RUN THE SCSI ENGINE + CALL Z,PPA_CHKCMD ; CHECK AND RECORD ANY ERRORS + RET NZ ; BAIL OUT ON ERROR +; +#IF (PPATRACE >= 3) + PRTS("\r\nRDCAP:$") + LD A,8 + LD DE,HB_WRKBUF + CALL PRTHEXBUF +#ENDIF +; + ; CAPACITY IS RETURNED IN A 4 BYTE, BIG ENDIAN FIELD AND + ; INDICATES THE LAST LBA VALUE. WE NEED TO CONVERT THIS TO + ; LITTLE ENDIAN AND INCREMENT THE VALUE TO MAKE IT A CAPACITY + ; COUNT INSTEAD OF A LAST LBA VALUE. + LD A,PPA_MEDCAP ; OFFSET IN CFG FOR CAPACITY + CALL LDHLIYA ; POINTER TO HL + PUSH HL ; SAVE IT + LD HL,HB_WRKBUF ; POINT TO VALUE IN CMD RESULT + CALL LD32 ; LOAD IT TO DE:HL + LD A,L ; FLIP BYTES + LD L,D ; ... BIG ENDIAN + LD D,A ; ... TO LITTLE ENDIAN + LD A,H + LD H,E + LD E,A + CALL INC32 ; INCREMENT TO FINAL VALUE + POP BC ; RECOVER SAVE LOCATION + CALL ST32 ; STORE VALUE +; + XOR A ; SIGNAL SUCCESS + LD (IY+PPA_STAT),A ; RECORD IT + RET ; ;============================================================================= ; ERROR HANDLING AND DIAGNOSTICS @@ -726,7 +1197,7 @@ PPA_ERR: LD (IY+PPA_STAT),A ; SAVE NEW STATUS ; PPA_ERR2: -#IF (PPATRACE >= 1) +#IF (PPATRACE >= 2) CALL PPA_PRTSTAT #ENDIF OR A ; SET FLAGS diff --git a/Source/HBIOS/syq.asm b/Source/HBIOS/syq.asm index 737c4fbf..a503c808 100644 --- a/Source/HBIOS/syq.asm +++ b/Source/HBIOS/syq.asm @@ -9,7 +9,7 @@ ; INTENDED TO CO-EXIST WITH LPT DRIVER. ; ; CREATED BY WAYNE WARTHEN FOR ROMWBW HBIOS. -; MUCH OF THE CODE IS DERIVED FROM FUZIX (ALAN COX). +; MUCH OF THE CODE IS DERIVED FROM LINUX AND FUZIX (ALAN COX). ; ; 5/29/2023 WBW - INITIAL RELEASE ; diff --git a/Source/ver.inc b/Source/ver.inc index 70dd66c9..0ee41555 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,7 +2,7 @@ #DEFINE RMN 3 #DEFINE RUP 0 #DEFINE RTP 0 -#DEFINE BIOSVER "3.3.0-dev.18" +#DEFINE BIOSVER "3.3.0-dev.19" #define rmj RMJ #define rmn RMN #define rup RUP diff --git a/Source/ver.lib b/Source/ver.lib index 70d1d5ed..9bc8f615 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 3 rup equ 0 rtp equ 0 biosver macro - db "3.3.0-dev.18" + db "3.3.0-dev.19" endm