IMD 1.18: 20/12/2012 19:29:11  1y2@!o~2#~2B!~#2%<)~#\!͈z8!Y@!YI*Tej~#[ ͈·h͗@_͗W͗~{~#ˆFZ~'^Z^~_'B@ ###ì ;Qk6T5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-./? 4 4@< <2@@+ @W@)!*":2:2*"22i`""i`{n&y22y2`i""y2ɛ!yA2D! ~#foʗ~22# N#F 22@9{͛!o))))oo ~#~#~22! s#r22:G!~8w!<a:G x!<a: >>Y!>6 ͐~@w@:G:2'>ҩ=ȯ24<::د2ɯ26!":G!:Z)T2*!4~6ʇ!# }*""*""*"":6<>F!w*:O:#G{_>Ww:w#s#r#y: 2~~!~?> =L xJ29!7͎>ͧ :d >'y 1!i>22!"!":Oͬ}:Gx<2222!">2ͧ>2! ~# x²!~# xL yi]\]\1*@)&~22(#~222!i2J!"CompuPro Systems CP/M 2.2Q Disk Loader 1} Q͕!0> w# .!0Ϳ! w# 9͕!")*)ӷ{*) ")`*)  +|ˆ!,ͭ:4 .!4^#{ ­ 0:A[a{ 7#_  ++ *. BIOS COM Loading $ Can't open $ What BIOS*.COM do you want to read? $ Error reading $ڙڥګڱ"C{2!"E9"1Aݯ22!ty)K!G_^#V*Cܐ~E ,&-AGMSݛ!!ô!ô!Bdos Err On : $Bad Sector$Select$File R/O$:BA2!~6 O͐  :ݷE B 2>: ݷb# : ݷy! 4 5~yy5 6yҐ^H@Oy H H: –ͬ  #H: ! ݾ Hù H H $O͐: 2 *CN# x: 2 p&x~+é7ۯ2 H! >w_: ! ݾ5ͤNkͱ¦ͱxʊ#Nx: ݷ! ݖ2 ͤ! 5™#wO~x½p Hy<< ʑ :!qMD#2E>! ^#V w#P:BO|^#V#"##"##"##"!O*!O*|!6ʝ6>*w#w*w#w'û*! J*""!N#F*^#V*~#foyx*{_zW+*yx#*DM*s#r*s#ryOxG*0MD!!N: EG>O: \޷Sހ*C :qn& ^#V>O^"*}:*)=":O:硵o"*C *C!ͮ~2~2ͦ:2ͮ:ޯO:w:w |g}o*篆# ):BO!yoxg*:BO}!N#F "*#*s#r^ ~!J! J*:o$*C~i6iw**{#zr+s{ozg**͕** ߾,w͜͸Ͳ!!N#F$**O!~#:Aݾ#~$=2Ek͌::/GyO>2!q*C"͡ʔ*JҔ^:Oyʃ?|x | s-|N-# S:2E!~Яw>T D^6k-äPYy 5*{zBK5ڋ>*Cw~#+w#w+ɯ2E22i^ *C :~w~͔͔# #  w ~>2!E5T*C!"C"C!w# F! w͌x߯2͢*C ~<wʃG:!ʎì 4~ʶ¬:<ʶ$ʶïZͻޯx>2>2ͻ:!Z2:Eݷẅ́͊Ͳ>2>2T*CGͻ:ẅ́n>2;O ^DM;}H>"*C ::ddslO s#r:Eݷ͊:==»y==»*Ww#*"͸*:G#š"͸:!w4!iw:Z!E~=26ޯ2*C!!~~#~O~G#n,-.‹! w! yG!x͢.:E<ʄ! q!pQ:E<. ʄ$.:E<ʄi6}2ExN! ~态O>G~G!~G} *C!r#r#r ^ͥ_y#x#{s+p+q-*C ͥ!!q#p#w*:BOYG}*MD "ã:!Bݾw!>2*C~=2u:B2~2wE:A*Cݶw>"!""2B!"!rQQQâ~?ͦ~?rQ*"CQ-Q͜QüQrQ$Q*):B"*)*)Q;*"E:;:A2AQÓQÜQ*C}/_|/*W}_*"}o|g":ʑ*C6:ʑw:2E**E}DQ>2\XSUBMIT STARTUP COPYRIGHT (C) 1979, DIGITAL RESEARCH _͌> ͒> Ò> Ò͘~#͌ì _2<ү2 Ӈ!ٶ2:2a{_:ٷʖ:ٷ>Ľʖ:=2–!B!6#5ʖ:ٷĽ!ͬʧ )!F#xʺ~0wëw!" !~6ͽ:ý(!#͘*~ "Է"͌#>?͌͘ =_.:;<> Oԅo$>!Y2*O"ʉ@G:ʐ:wÖx2p0ʹ#*©6?ëw˜0ï#6 ¹.0#*6?w0#6 #6" #~?  xDIR ERA TYPESAVEREN USER!yO#< Ty#O 3կ21y_͸2y2ͽ:ҷ˜1͘A͌>>͌92^ :ٷ¥.!_~#fow]׭؎إ!v"!çREAD ERRORçNO FILE^:ٷ ! ~ 3#0 Wx x Ԁ Ԃ G ~ # 3x~#B!Y~ɯ2:ٷ=!پý:ٷ=!پ:ý^T!~  6?#ˆ:`O> K{͘A͒>:͒͢>:͒͢xK > K > ͒x  ͢ØÆ^ BRͧ9!5‚#~Y‚#"T<ÆALL (Y/N)?^ Tʧ͘!6!~ڇ ׯw4!Y~ʆ͌†t=ʆf ^ T ׯ2o&)|+!<ͧÆNO SPACE^ :Ty!B*O=?_s#"^sG!~Yظpsp2mÆÆf ͧÆFILE EXISTS _: É: :ٷʉ=2)ͽÉ T!@k!}|q=qf^!~2>`~2ٯ2\!!B!~> >#0~O#Cx2͘1)ͽÂf zͧÆBAD LOADCOMf^: !ٶ Â$$$ SUBDSKTST COMPD2 COM PD2 COMcIM7 RSPZINT1 COM8259A COM 9511 COM9512 COMI4TEST COMI3TEST COMMEMTEST COMFORMAT COM CLOCK COM!DISK2 COM"#$%&'()DISK2 COMo*+,-./0MDRVIN CMD1MDRV CMD2MEMMNGR CMD`345678MEMSPUZ CMD&9:;BENCH87 CMD<=>?@ABCBENCH87 CMD DI4PTST COMEDIPTST COMFDMATST COMGDMAEND COMHSWAP5 COMICTEST COMJT5 BASKFORTH BLKLMNOPQRSFORTH BLKTUVWXYZ[FORTH BLK\]^_`abcFORTH BLKdefghijkTICK186 CMD_`8259A CMD aSW!SPUZ CMDbcSPZ CMDdeSS2RAMT CMD fSS2RAMCKCMD gCLOCKSS1CMD hCSTAT CMDijklmnopCSTAT CMDNqrstuFORMAT CMD-vwxCLOCKSS2CMDyz{|}~CLOCKSS2CMDCOPY CMD&LDR5SS1 LDRGIOTEST CMDMT286 CMDMT286 CMDhSPIOTESTCMDMEMSP186CMD*SP186 DATSPEEK CMDSP186M BATIO186 CMDM186A CMDM186A CMDcM186B CMDM186B CMDbSP186MC BATSP186IO BATSS18259 CMDLDR8SS2 LDR?CPM8SS1 SYSvFORTH BLKlmnopqrsFORTH BLKtuvwxyz{FORTH BLK|}~FORTH BLKFORTH BLKTST SUBMDR CMD1TIMER COMDISK2 BLKDISK2 BLKDISK2 BLKREPTEST SUBTEST SUBPIP COM:8087 A8680130 A86MDR A86MDR A86KMEMMNGR C CLOCK A86II3TEST ASM9512 ASMCTEST ASMZINT1 ASMI4TEST ASMDSKTST ASMDSKTST ASM{DMATST ASM[SWAP85 ASMDMAEND ASM8259A ASMKDV COMLDR8SS1 LDR?LDR5SS2 LDRGMDRIVE CMD7CPM SYSvCRC COMCRCKLISTCRC!DV COMbDRIVER BLKDRIVER BLKHMEM16 CMD'ASM86 CMD ASM86 CMDM    CLOCK CMD SYSGEN CMDDDT86 CMDmCENTTESTCMDED CMDHSS28259 CMD GENCMD CMD+ !"GENDEF CMDL#$%&'MFORM CMD(PIP CMD;)*+,STAT CMDI-./01SUBMIT CMD23SCOPY CMD(456LMCMD CMD(789CPM5SS1 SYSv:;<=>?@ACPM8SS2 SYSyBCDEFGHICPM5SS2 SYSyJKLMNOPQ80130 CMDR8087 CMDSMEMCOLORCMDTUMEMMONO CMDVWMTSPUZ COMXYSPUZ2681COMZVINT CMD[IO3ATESTCMD\]2651 CMD^C Copyright Sorcim, 1980 2.2A. Sorcim Proprietary product. !9"1͸ !  ! :fn {1!   ͇~ * CompuPro Disk Sub-system Diagnostic Version 2.2A. Legal commands for disk test are: 0 - Confidence Test. 1 - Seek test. 2 - Read/Display track,sector. 3 - Read test. 4 - Write verify read test. 5 - Random seek, read/write. * - Display all controller status bytes. D - Select drive. E - Display and clear error count. F - Format a diskette. H - Help me. R - Restart test. S - Set mode of disk (Single, double). X - Exit back to CPM. >:4 20_!4~22 ! {!"c>ͨ!(<:0!ͨ  :0ʰMy2.<2x͖!.<>F :xLµ! ! 8 FORMAT completeValidating formatConfirm ready for format of disk (y)  6Tt :L X!a {! {Disk doas NOT have write ENABLEDFORMAT error, ABORT!"c:xR !:xw ª  > > _& , !& Z i Z i Z i Z i }0>02 >0]T< ] =kbG: v > x>2 0 | }ͻ  } ~ ͝ ڸ #}œ y o},  ÿ  ~_  Oy #} † Ä z{7# >( ~ͻ >) > 0{*s  T!U~7O#~Ͳ w# A6!Vs02 >0]T< ] =kbG: v > BJ~0ڔ:ڏAڔ[Ҕ #z+Fyx ʵBGNʶQH y'd 7~0 # =~0_ #)))~0:5AG_# ))))~0)o# J ^#V͎ڗO **~2*#"m2m͖ 2m!6m!6m!6 m2mͯ m!62m!62m!62m!62m'2:2:TҒ:2!6*ME:2::Ҳ:<22ý: 2:} >ͯ :i:2:d*M:[  ;**************** TEST PROGRAM FOR 80130S ************************** ;* * ;* WRITTEN 2-26-80 BY MARK GARETZ * ;* MODIFIED 8-24-82 BY LEN OTT ;* * ;* ASSUMES 80130 AT FFF0H AND I/O 1 AT 0 ;******************************************************************** ;MODIFIED 12-23-81 FOR 80130 ORG 100H BASE EQU 0FFF0H ;PORT BASE ADDRESS FOR 80130 MPRTA EQU BASE ;MASTER PORT A MPRTB EQU BASE+2 ;MASTER PORT B IOPORT EQU 0 ;I/O 1 SERIAL PORT DATA EQU IOPORT STATUS EQU IOPORT+1 VIPORT EQU 4 ;PORT TO SET VI LINES CR EQU 0DH LF EQU 0AH ;END OF EQUATES START: CLI LD AL,#1BH ;ICW1 LD DX,#MPRTA OUTB DX LD AL,#80H ;ICW2 LD DX,#MPRTB OUTB DX LD AL,#0DH ;ICW4 OUTB DX LD AL,#0 OUTB DX XOR AX,AX ;WRITE THE VECTOR TABLE MOV DS,AX LD BX,#200H MOV CX,CS LD AX,#SRVRQ0 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ1 STO AX,[BX] ADD>LR >R 6y8 >2j>2xR :xO>LR :xd2x 2h O :x=! Random Seek, read/write Test complete >2l!{:{*G!Oq#z><2h2! *h :j=<22j!"c͙!"c*GDM!2# x*:kO:j>2j:hL!Y Write verify read Test completeTest Pattern is : Track # -!56:hR >  @¸:L ž*E#"E  :k2l><2h:hL! Read test complete!56:hR >  @!:L *C#"C 7 {>2l!~2h^2h!~2jn2j!"c!*G!̀ ! IAgain ? (y) :Enter track to use :Enter sector to use:! Ͳ A2fA2D K 2g?Specify drive (A: - D:) :!  ʅ{040O:g_!~2/ #~24 #~26 #~27 #:4 _!8~212k{_!~2G_#~2HW!@ 5 :4 20 Select Disk format mode (0,1,2,3): 0 - 128 2 = 512 1 = 256 3 = 1024 @@@5cpm equ 224 pstrng equ 9 reset equ 0 ;cpm reset function ;test for 8087 org 100h esc 28,bx xor ax,ax mov bx,offset control mov [bx],ax esc 15,control or ax,[bx] jz no_8087 mov dx,offset yes87 jmp pmsg ;print message if 8087 is alive ; no_8087:mov dx,offset no87 jmp pmsg ;print no 8087 message ; pmsg: mov cl,pstrng int cpm mov cl,reset ;and lets return to cpm int cpm ; control db 2 db 2 yes87 db 'THE 8087 IS ALIVE!!$' no87 db 'NO 8087 HERE!!!!$' end  BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ2 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ3 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ4 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ5 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ6 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 LD AX,#SRVRQ7 STO AX,[BX] ADD BX,#2 STO CX,[BX] ADD BX,#2 ;CAUSE AN INTERRUPT ON VI0 LD AL,01111_1110B ; OUTB VIPORT ;OUTPUT TO VIPORT ;TURN OFF INTERRUPTS WATE: CLI LD DL,#'!' ;ERROR MARK INTO DL CALL HAND ;CALL OUTPUT ROUTINE STI JMP WATE ;WAIT FOR INTERUPT HAND: INB STATUS ;READ UART STATUS AND AL,#01H JZ HAND MOV AL,DL ;GET CHAR OUTB DATA RET ;RETURN TO CALLER ORG 300H SRVRQ0: CLI LD DL,#30H LD AL,#01111_1101B JMP EXIT SRVRQ1: CLI LD DL,#31H LD AL,#01111_1011B JMP EXIT SRVRQ2: CLI LD DL,#32H LD AL,#01111_0111B JMP EXIT SRVRQ3: CLI LD DL,#33H LD AL,#01110_1111B !"h}2j>2l!"c>2e!  ͒ F!~ ! *C ! *E ! *A ! *? !"C"E"A"?ERROR counters are: Read errors : Write errors : Seek errors : Soft errors :*?#"?:5<25͝ ! :7 ͻ !) :8 O!K  ~ͻ # ERROR, Func=Status bytes=GO:bI yͻ yA2 !  . n ! :K 2g! b >R > 2 !  ʪ : @2 @ :Q G:g Drive x not ready_:/ 2/ :h21 :j23 =_:l25 ͝ !/ ͨ #:fw+~27 ~# y28 A:b( :7 Pͻ B·( . K 7 7 :K 2 2h>28 !  ·g >. :K O:fg *A#"A 7:f2 ! b $!e~+® ½ : :A Q AOy2fn ! ~<w M Z> = x !@   0F :F 6 0_! ^#V AͲ *X :b/2b ?f !  H] !DRNS!E!8 XʈF!`!r6Iy {a{ > G x Ɛ'@' ~O # Ͳ Y7> ÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !r+s+p+q*~$7*>*>H&>*#"*#"> 2:R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\-:>>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!:=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&6++ o g^#VFORTȌ)sqfq`oupR{*4+p+q"4KB EXIQ*4N#F#"4 HUNNESQ*4+p+q"4  `U{,*^#V*s#r^#V ^#V* (LIT o g -BRANC`iN#F ?BRANC} *4"4 !(LOOP*44#4*4s#r!(+LOOP9*4^#V|L!!"-(DO6w%Bw%%%i"U(?DO6 ` %w%Bw%%%i"BOUND6di$>NEXԝ $EXECUT$zPERFOR^#V^#V͋$G$NOO# $PAUS2 %=*4^#V#~#fo %T*4@%((LEAVEl*4####N#F#"4 %`(?LEAVE|l &^#V &7s#r &Cn& &Cs 'CMOV`ix~#  'CMOVE`i + +x~+  (SP)!9 (!SP: (NRPI*4 (ARPY"4 )DROk )bDUy )2SWAЉ )OVEҙ*qTUC˪*QNIк *RO*-RO*FLIcj *?DU6w< FILŦ< EMI= SC{= PRIO{/= STAT{=7 WARNIN{=) DP{= R{=U LAS{uq=E CS{=y CURREN{!= #VOCӝ= CONTEX{/!.> 'TI{> WIDT{>a VOC-LIN{L> BL{> >I{> SPA{>#TI{> END{? B̝ ?(Bӝ?3BEL̝?CAP{?>FILa`ixs} g ?ERAS6_i?XBLAN6-_i?KCOUNԧ^#?l LENGTȽ^#Vë?yMOV6 ia{ @UPPEz ~w# @HER6 i@PA6Pdi@-TRAILIN6w\a dQ-xQMiACOMni`xʘ~…# Õ!Ñ! s! BeCAPS-COMЯi`x~O~# !! ô! BCOMPAR6RliCBDOM&o C BIO.*BK?&o C#(KEY?6,OiCH(KEY60i,iC_(EMIT60,i iC{(PRINT60,,i iDKEYQDKEgDCD(PEMIT6wdTdiiM:FLUS6BitiNFILE-SIZ6 #iiNCPM-ERR6`iNOOPEN-FIL6 Z@$Can't open file9QiNdMOR6$iNfCPM-FC\NDEFAUL6h 4-xh riN(LOAD6 % % T *  iNLOAO$DIGI;{0 P _O1DOUBLE6[ 4OiOCONVER64w% 9 i  f[ iiO-NUMBER6w4-`w%[ ~w,/!  [ C -`iP\(NUMBER6n"iPNUMBE+Q HOL6  iQF<6) iQt#6 )iQrSIG6'-MiQ6   d0dMiQ#6 iQaHE6 iQDECIMA6 iR(U.6fwiRU62PiR&U.6%c2iR(.6wfwiR76W2PiRm.6%Wc2iRQ(UD.6fwiR7UD62PiRUD.6%c2iR(D.6z fwiRD62Piwi+R*4^#V#"4 + >'*4++"4s#r + R?*4^#V +PICT)9^#V +8ROL6%=R'wB4ii,ANċ{ozg ,Oҟ{ozg ,KXOҴ{ozg ,`NO}/o|/g ,TRUŝ,FALSŝ! ! -CSE~w -CRESE{/_~w -CTOGGL3~w -'OD!í-=OFV!í.Nf .NEGATy+.z/W{/_ .ABӞ|y .`+~w#~w ...n./2) /2|g}o /U2|g}o /8&))) / 16# /2D## //1S+ /=2a++ !)t)| l0LUMD}ggxDgJ Ulg0U*6i_|g{|g{)Ҵ_|g{,! 2UM/MO`i}||ejkW\a 30}30))3"0:|330SIZŝ*H>BUFFER6iH#>EN6_iH:BUFFER6$.diIKFCB{DISK2 BLK /0ICLR-FC6 w4 iIaRECORD6 !diIuMAXREC6 &diICAPACIT64RD.6%c2i SSKI,`iz@~#1S#SCAN`izb~#STE/STRIN6diTPLAC6 4iT(SOURCE6 BkiTgSOURCTPARSE-WOR6% q=*Li %4 iTPARS6% qLiw4 iU'WOR6iUFWOR6NNwd-iU}.6) 2iU6)  iV6"BiVTRAVERSŷ> VDONE6? x""TiVwFORTH-86)RTiVVERSIOΝdV.VERSIO6f.M.Mw2PiW N>LIN6_iWL>NAM6BiW;BODY6_iW]NAME64iWLLINK6UuiWm>BOD6BiW>NAM6QiW>LIN6DiW>VIE6_iWVIEW6BiXHAS#~o&) X(FIND |##?B #B % ###~@! ^#V| YV#THREADӝYFIN61 T \ i ;dw w1 1 ` i  wy iY DEFINE6-]R wi iZQ ?STAC6' @$Stack UndMA6  ii4BETWEE6%i4WITHI6Q! i5 2Q ^#V^#V 5J 2n s#r#s#r 6g 2DROЇ 6} 2DUЗ 6 2SWAЪ !9~rW+~s_6 2OVE !9V+^+V+^ 67 3DU6w i64DU6 i6 2RO6ggi7 D !9^q#Vp}o|g7 DNEGATE ї_>W>o>g7 S>c !zn +79 DAB| |E 8s D2 |g}ozW{_8 D6C  i8[ ?DNEGAT6' C i9 D06i9 D6 i9 DU6   x  i9 D6R`7 ? ii9 D6 # i9C DMI6 H e i9R DMA6 # ~ i: *6 % i:M/MO6 w% %%z =' w Q=ii: MU/MO6%=%i; 6ii; /MO6%a  i; 6% i; MO6% ii; */MO6%  i;Q *6Y i<k TOӦ<A ENTR٦<v LIN˦<3 SP<g RP< DЦ < #OUԦ < #LINŦ< OFFSEԦ< BASŦ< HLĦiIBADREC{IIN-FILE6w@$ Out of RangeiI VIEW6 (diISET-DRIV6iiIdSET-DM6iiILREC-REA6' !iIREC-WRIT6' "iJREAD-BLOC3J~WRITE-BLOCbJSET-I6w diJFILE-REA6 \Owd;iiJ'FILE-WRIT6 wB  \wdzi iJUFILE-I63*b*iKLATEST6 dw UO iUdiiKABSENT6w.U\j ``wB ``w.w.wd.i wUjddiLUPDAT6UdBiLDISCAR6UdTiLzMISSIN6A_AA_T .BA.d.dT.wd$iLBUFFE606iUdiLBLOC60`iUwdiMEMPTY-BUFFER6.4$U\d dd iMSAVE-BUFFER6U\w4 wdwwerflow')@$Stack OverflowiZ STATUZINTERPRE6 L!X!@fX!i>!i[0!ALLO6 i[ 6l!i[!!C6l!i[d!ALIG6i[!EVE6i[!COMPIL6wB%z!i[!IMMEDIAT6@s 1i[v!LITERA6!z!i[!DLITERA6!!i[!ASCI6-]4? 7"!i[!CONTRO6-]4@? _"!i\;"?MISSIN6"N2@$ ?i\c"6 n"i\"['6"!i\"[COMPILE6"z!i\"("6 d%i\"(."6 d%2i\",6" N4l!i\b .6!""i\#6!""i]#FENC{]]"TRI6\ \e#  Y#I#BE# i]4#(FORGET6w.#@$ Below fencew  ##w w# \ ;##i i]&#FORGE6-]R#w  n"v#i^"WHERK^"ABOR'$^k#(ABORT6 8 +i^$(ABORT"6j$ 8 ^$   $=P2P$d%i^$ABORT6!@$"i^$CRAS6@$ Uninitialized execution vector.i_$?CONDITIO6@$Conditionals Wrongi_#>MAR6z!i_$>4,7,iim,RECURS6s uz!im+OCTA6 im-FUDG{m{+M6v-Q-r-n-d-i I-BASICӝ z-FILE-INTERFACŝ 3-C/̝@ ,L/SCҝ -6 -7 4- i -(6i -6qi -?ENOUG68,Q@$Not enough Parametersi -THR6-4<.;+4.i -+THR6 d d&.i W---6 T i @.ONL٦.+/./?* ALS6 wB _i5(kw Q d i 6"Bi SEA6"  i .PREVIOU6 wB _ _dTi FORT6i .DEFINITION6)i .ORDE6" Context: \y/ws/e,Bc/i" Current: e,i /VOC6 w\ e,w/ii v.CP/͌)1m13J3. FCB{PD2 COM]/01234^ /RESE6 ii CLOS6 i #0SEARCH6 i ;0SEARC6 i U0OPE6 i MAK6 i DELET6 i 0REA6 i n0WRIT6 i 0(!FCB6w ww4HLĚ6*08ST6208LD6:0U8JMК609JNښ60)9Jښ6049JNÚ60>9JÚ60I9JPϚ60S9JPŚ60^9JК60i9J͚609C00}9C0<09Cӝ090090<09Pŝ090090>0s9NO6i09NEX6$9i08MO64@dd4i09MV64d44i09LX64444i0:I64 5i0-:THE65i0A:ELS6F: W:i09BEGI6*5i0_:UNTI64<5i0:AGAI64<5i09WHIL6F:i0v:REPEA6 :W:i 03BUnj)-[iZZ [3 0SSU{}o|g 0 2 >2 >o2  0:DNEX{ o g^#V 0I;DNEXTY; 0;'DEBU{5[ 0`;DEBNEX{PY;ҭ;:|;<2|;­;2|;7;*z;Y;S; 0;PNEXԼ;>2 !;"   0:FI;7; 04(PAUSE;*4!9*s#r##0;RESTAR <0i0gMAR6$i_6%?>RESOLV6$%i_I%?FRO{= EXCHANG6 3 3i 3FRO6 {33 3i LOA6 %3 + i t3CPU8080.BL?3CPU8080 BLK퀀G0`.AVO{!0%4COD6U''_ g4(i0`4END-COD6g4 'i0m4C64i03LABE6U'(i0486i04DOES-OН0C!0z!0?3UTILITY BLKI@|6i@M=<6i@;>6i@=0>6'i@=0<68i@=HIDDEΌ)pYQXXW:@=>TYP6))2i@=LMARGI{@=RMARGI{F@l=?LIN6 d'>O>>ci@->?C65>i@ >LIS6-w# "Scr # wq-\>;PwB;- d-C=>ii@c>TRIA6  7  \>;j>>i@=INDE6-4\'?;P;B-C=;G `?>i@>IN6wG C?wPwB-C=45?ii@>LARGES6\? ? wB?ii@S>WORD6>c \ \ o?w?wUw5>,PP?O? i@A/WORD6?i@?#TIME{@e?TIME6@@:@@>@ Ti@-?MAN6W@ Ti@@WHE60v@%i@>6# i@z@6# i@@6# j>i@B@ESTABLIS6Ui@@(COPY6 dBi@i@[@COP6@i@@VIEW-FI(RECURSIV6'id(CONSTAN6U'z!'d)VARIABL6U'z!'{d_(DEFE6U'$z!'d,)VOCABULAR6U'z!z!z!z! z! 5(k idE)DEFINITION6  ie])2CONSTAN6U'z!z!5(kO ie)2VARIABL6)5(kif)#USE{f(USEҌ)T**=*$* (fALLO6)ifCREAT6-*)z!'fVARIABL6-**ifDEFE6H*'g)>I6ww`w`i*d*ig)(IS6=l*B%ig)I6? *!**"l*ihf*RU6? +(? *MAR?%05?>RESOLVU%05?8PUS`607RS`60I8DC`60`8LDA`6 08OU608I608AD608AC60w8SU608SB608AN60k8XR608OR608CP608SHLĚ6"08CAL̚608LLE{\\34=:9;?A!@Ê*@@VIE6"w\A7 QAdrj>i @@HOPPE{ @@U/{ @@CONVEY-COP@ @hAHO6qAi @'A.T6q"to wqi @A(CONVEY6AwwqAdAA}AdAi @ACONVE6qA'B4'Bw4}A% %ACBA;Bii @AT6-]@iAi @COP63B3Bi @fBCONVE6A%mB*ABAi @wAUP6waz! B-i@BINSER6%=w=di@AREPLAC6i@IBDELET6%=w8@C w=ddi@BFOUN{@ASEARC6RCT%4C CRCBj4yCiRCi@BA5N@JCBLObN@C-LINN@CDARCN5(k T Ti@CEDITOҌ)PVPNJ=@.SCREEI@(AT6 i@D(BLOT6-ci@D(DARK6\QDKDi@6DTO6f Ti@6f dQf i@UD6[D- iDi@eDCURSO6f i@DLINE6D-7 i@DCOL6D-G i@D+6DdDi@D'STAR6# Bi@D'CURSO6D\Mw;LMii@B6f %# %D# 3F# f 3-wiDOG-iDi@3BRIN64\kMw;MaMii@QIH19-A6 Y  d  d i@qMH19-DAR6 E i@MH19-BLO6i K i@MH19--LIN6 M i@MHEAT6I*DzM*CM*CM*CM*Ci@KFDP-A6 =  d  d i@,NFDP-BLO6i T i@WNFDP-DAR6 i@vNFDP--LIN6 R i@NFALC6I*D5N*CN*CN*CbN*Ci@MTELEVIDE6Ni@KQUM6Ni@NANSI-A6  [ 4; 4H i@OANSI-BLO6i "[Ki@DOANSI-DAR6 "[2Ji@cOANSI--LIN6 "[1Mi@OANS6I*DO*CoO*C!*CPO*Ci@OADM-A6 =  d  d i@OADM-BLO6i T i@PADM-DAR6 i@!PADM--LIN6 R i@8PAD6I*DO*C,P*CDP*C P*Ci @NDUMB-.AL6dIi @PDUM6P*DD*C(D*C!*C?D*Ci"@L##6fw2Pi"@pLEMIT66X&WT&WB\*YwdXBYiXi3@XPR-S-PAG6X&WT&WB\hYwBXdRYiXi3@2YPR-FLUS6&WwY&WYWYVWOi4@VSHO6CW4\Y;}WY;W&W`YYY{YYYgWi4@LSHO6CW4\!Z;}W Z;W;VLW&W`Z>YY{Y)Z>YgWi4@VLISTIN6QYi@WBUGGINǝ6@/ZTASKINǝ97@;IDBU{ALLOT YYF7@-;.RI6qZ%w44qZ=qZZ Zii7@o;SLO{7@ZRE{7@;(DEBUG6x;B ;:;i7@Z'UNNES64wi`[i8@ZTRAC6 ZO,Z[ZTZT" --> BC`~[ZZF`[i}*Z[Q`@$Unbugi;i8@YZDEBU6"_w[Zi8@IZRESUM6ZB;i:@[TASK6U'| ) (< wdw (<d (<)d (<> }Sii(@WS.UNNES6"; ii(@S.FINIS6Rii)@EXECUTION-CLASyR7\!"@$5(i"'*@S.EXECUTION-CLASYRRRRRRRS)S)SbSS)SRSRi+@S.PF6Y>wSSw(Tii+@T.IMMEDIAT6@mT" IMMEDIATEi,@DT.CONSTAN6w-" CONSTANT ,i,@qT.VARIABL6wq" VARIABLE w,"Value = -i,@T.6": w,c$Ti,@T.DOES6w,EXTEND80BLKMz{|}~ [HELL6"8080 Forth 83 Model "Modified 26Oct83t}..)i \MAR6U'5(kv#i t]EMPTف]\BU{ALLOT FaCoFi@HTIL6FHFCi@HJUS6FHCi@_HK6DHFEi@ ID؝@FIDٝ@I.LIN6DPED=^ D$E=i@\IREDISPLA6KIVId CKICCw- Dd-2i@1ICHANGED6- wDdFd-li@I.AL6C# -c-\J;I J;IJDFCKICdIKICCKIC Ti@HEDIT-A6D-% KIdVIdCi@INE6-\J;DJJ T}J7GJ;IjDtJDi@IGET-I6EJ"Enter your ID: E\J. JEEEi@JSTAM6ED-dEEi@dJ>VO{!@@JQUI6**!K i@CDON6K# qfETKJYK"Un"modifiedi@CE6JfETCKIC"Scr ## -DF-\K;VIdCwPw- Dd-2KD**! KCi@hKEDI6-# [DmKi@1K(WHERE6KiDi@XCSHADO׌)L8LLYC@DISPLACEMEN6i@1SHADO6i@>SHADO6.LBL=jLlLdi@K6# VL# i@C6# wVL@tLi@LCOP6 @VLVL@i@LCONVE6 BVLVLBi@L6 G-wiDtLVLGtLi@LLBRIN64"DOES> 4$Ti,@T.USER-VARIABL6w-"USER VARIABLE w,"Value = l*-i-@U.DEFE6" DEFERRED w,"IS l*Ri-@UU.USER-DEFE6"USER DEFERRED w,"IS l*Ri-@U.OTHE6w`Ui" CODE WORDOw`UTOi"UNKNOWNi.@;SDEFINITION-CLASyR6{.@U.DEFINITION-CLASYRT}TT#U^UUUi/@V((SEE)6wwV?VQTi/@GRSE6"Ri1@dREPSO6 i1@sVCITO6   i1@VINIT-PV1@RLOGϝ1@VPAGE{1@VPAGV W5(kV T Ti1@CFORM-FEE6    i1@SCR#{ALLOT =cw1@UVPR-STAR6* &WTVVi1@8WPR-STO6* i2@]WTEXT6Bw-~! WCOWi2@uWP6&W&Wwdi2@+V2P6wP- %)B=d)-Bd)-d4-)C2i2@W2SC6c=cw\KX ;WAX i2@SME6"'MICHAEL STOLOWITZ 335 Merrilee Place," Danville (415) 837-3887i3@WP-HEADIN6c"Page# V-c 3i3@XP-FOOTIN6-cWXVi3@XPR-PAG*]DISK-ERRO{7\ORǝaCT̝aDATaSE̝aSEC/TR˝ a#HEADӝa#TRKӝaDMAXSE{A]BYTE/SEÝbDRIV{4bHEA{BbTRAC{bCONTRO{]bSECTO{#bNTRٝObHDE{mbSKE{bSFTE{bDRIVE-STbCY̝bHĝbSEÝbSE6ahXFE6\h;;dC@hilhFMTCY6. cWb]ga\h;duhhiydduh"THIS BOARD PASSES THE TEST ipHO6Odci2qHI68q]iDq6piEoM6I@iZqP6pI@iPD2.COM OdciqHI6q]iq6pifqM6I@iqP6pI@iEMPTY L OT MANY ;00 1 ; ; 30nov83mcsd4`i15DECIMALPROT MANY ;00 1 ; ; 30nov83mcsi(@S.FINIS6Rii)@EXEdg\n;mhn4n4nipnWARETES6]dg\n;mhn4n4ninSTART!lENDnSTARTnENDPnSTARTD oEND EoSTARTR)oENDRmTBYT{nB6\wo moi6oWRBL6"WRITING SECTOR \o;=];feo 7oi{oCHKBL6]"CHECKING SECTOR \p;=];fZokeo 7oioWRMAN6"WRITING SECTORS 33 TO 121y!\_p];fSpooo0o#ooLo?ooipCHKMAN6nnoooo0o#ooLo?ooiRoPRO6Odc]f"FORMATTING FIRST 22 CYLINDERSZkkZo'ppkZo'pphFORMA6Odc]dg b\&i;hiihWIP6].b_ b\miie\ii];ieR  @f. MiEiih(CHKFMT~i{…i{i-Œi *iCHKFM6feaY!XH# .Y  :|<2|qfXX   9512 TEST BEGUN $ ERROR $ OK $ ADJUSTING 9512 STACK $ PERMANENT ERROR $ COPYRIGHT COMPUPRO 1983 $??@ 1L !~X# >lY!XA# )Y} t  9511 TEST BEGUN $ 9512 TEST BEGUN $ ERROR $ OK $ COPYRIGHT COMPUPRO 1983 $0@p??@} 1>J > W>`W>W>P>Q>Q>QQ>P>=R>S>S>SS>R>$Q>SVY1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D y@\xÔð <XtÐì> WV >$Q>S>`WT$ >Q>S>WU8 >Q>S> WVL >Q>S>`WT` >Q>S>WUt >Q>S> WV >Q>S>WU >Q>S>`WT > Q>S>WU >Q>S> WV >$Q>S>`WT >IQ>S>WU >Q>S> WV >$Q>S>`WT$ >IQ>S>WU7 >Q> S> PR  Number 15 of 15 $ Number 14 of 15 $ Number 13 of 15 $ Number 12 of 15 $ Number 11 of 15 $ Number 10 of 15 $ Number 9 of 15 $ Illegal Interrupt! $ Number 8 of 15 $ Number 7 of 15 $ Number 6 of 15 $ Number 5 of 15 $  >>>< KG)=x8~x{>'~><GhaxQu͇r>>uʰ_ʇ{ COPYRIGHT COMPUPRO 1983 $SFORMAT .com Copyright SORCIM Corp. 1981 S/N-123456,Ver All 2.2BST GB 8080!9"1F!1ͯ!%R†>2 j j *>2 !ڋj>2B : b&!S ڛ!!0 !: >2B ! " 2A :A !C : 2 :A 3ͷ> Lw:A G: O: _> L@2 ;6w: r: G2 8>F!yʃ!ÛDisk does NOT have write ENABLEDFORMAT error, ABORT! <2 %:`: L!a6>V2`: w> @I:0>S2`!a4:B />E2`7! ͷAii2 A2z ʖ!2 _!~# ¨! 128 256 5121024 Disk is Formatted as byte sectors Disk is NOT formattedSpecify drive (A: - D:) :!m ڛ0&4&0_!~2 #~2 #~2 #~2 #: _! ~2 Select Disk format mode (0,1,2,3): 0 - 128 2 = 512 1 = 256 3 = 1024 @@@5!" }2 !" >2 ÷2k!_  1͑5:RʺLGͱ*ͥ!Ϳ*!Ϳͱ7ͱ>GhmOͱUgͱtxGŒxͱ͙xGŸͱU;;ͱ1ͱ͛͝ >9ͱ ͇>9!J460#460#460!L>01!IpN͝+;N͝+N͝!I6 !I>)%000͑: ̱ͥPIxeWIe*#"!5*ͱS> 2ʢTIUI͇5O͝ô~/wGNx/wyM#ͨҿ5**p#ͨ**~M#ͨp#ͨx/w#ͨ~M#ͨx/G~Mx/G#ͨ E͗zZ>Z0:cO͝xGw#ͨxxG~M#ͨ҈xGw#ͨҝxG~M#ͨҭx2/w#* z{:G/w#ͨ)DM͗8L_L8L 7O͝a5{5 Oy0J  Jͱg"c*co_͉{_0y1͝o͛m͛‰ ͝ Ý #|7{z*"p#ͨҺ*"~M#ͨ*}Gog"M> 2>02J2K !c:/2 !>w> 2a!aT:a@2a@7:5G:  Drive x not ready2!·> :/O: „!ÛSeek error: 2!_: 2 : 2 : 2 =_: 2 ͢! 6#: w+~#yA· /:/! ~+<XKK:z:?AzEzAOy2 !ËFORMAT will format a diskette to be used with the CompuPro disk subsystem. The FORMAT program is initiated by: FORMAT Where is the Carriage Return. If the drive is not specified, it will be prompted for. The density will then be requested. Ûʋa{ ~O#ͷY7> > _Format error, Do you want to continue (y) ?Do you want to FORMAT another disk ? R - request new parameters. cr - duplicate last FORMAT. N - exit back to system. CompuPro Disk Sub-system FORMAT Version 2.2B 1 2 n >< 'Gx >>~>'><GD=x-QcN>>Qʌ_c{ COPYRIGHT COMPUPRO 1983 $2L!"ͱ*.ͥͱͤ"ͥ͑͑*ͱͱSF!ͥ!ͨ"c ͱ!ͥ8ͱS{*ͥ*#ͨҏ0ͱc""ͱ5ʜ!$ʵF~/wNpʧ% SORCIM, Memory T E S T E R - Version 01 Copyright SORCIM, 1979, 1980. BIOS located at: LWA of ram is at: Test options actions are: cr - continue test ^c - exit back to cpm ^x - start anew Ready ? Starting address, (cr= default) : Ending address, (cr=to bios ) : Test cycle is : Fast complement from 0 to Bit STUCK low or HIGH Adjacent bit shorted Odd,even bit Bit shift left Bit shift right Address Line Random number : loc hex bits(good) hex bits (was) INPUT ERROR - retry, entering 4 HEX digits : RE-ENTER - FWA must be at-least : RE-ENTER - LWA is too LOW:2 22 3 4 5 6 7 012345678012345FORMAT completeConfirm ready for format on disk drive a (y) 6TtF#yA· /:/! ~+<XKK:z:?AzEzAOy2 !ËFORMAT will format a diskette to be used with the CompuPro disk subsystem. The FORMAT program is initiated by: FORMAT Where is the Carriage Return. If the drive is not specified, it will be prompted for. The density will then be requested. Ûʋa{ ~O#ͷY7> > _Format error, Do you want to continue (y) ?Do you want to FORMAT another disk ? R - request new parameters. cr - duplicate last FORMAT. N - exit back to system. CompuPro Disk Sub-system FORMAT Version 2.2B 1 2  |D !.*-x}o|g!e!8byOxGyA x *)x}o|g}t !>w>#w!8byOxGyœ *)x}o|g} *-x}o|g!e !N#F!~w#~w}_ !__ *-x}o|g!e!>w>#w!8b!8byOxGy ``!N#F!~w#~w} !_ %+ 3ui Hard: %+ 3ui Soft: %+ 3uiFormatting Track: J`!~#fo"-x*-xx ;>2't:'t2&t!I .!.ͦ>2)x2*x!r:)x:*x#B *)xh!~:'tOG:&tOG*)x!( .!.*)x*-x >2+x2,x!r:+x:,x#U *+xͪ*+x*)x*-x*+x#"+x ! .*-xx ``*)x#")xô %+ 3ui Hard: %+ 3ui Soft: %+ 3uiVerifying Track: J`!~#fo"-x>2't:'t2&t! .!.>2)x2*x!r:)x:*x#[ !~:'tOG:&tOG*)x!_ .!.*)x*-x >2+x2,x!r:+x:,x#n *+x*)x*-x͘!*+x#"+x0 *-xx ! .``*)x#")x J`!~#fo}o|g!eX!r~# !"-x*-x:-x2-x:.x2.x} !8bç X!h!~#fo 6``!8byOxGy !8b*t+XW!9N#F#^#V"yh"{h"}hO>./Gf!N#F!N#Fu*rN*rx !r~#j!r~#r*rs !r~#ʃ*rͪ !r~#•!r~#ʻ6!r~#ʻ>2r2r*rs *rͪ fUnknown argument %p. sys20sys10m10mm26m20m10verifyallseektestdataformatBad sector size. sizeBad skew specification. skewBad drive specification. driveArg count f!6!~w#~w!~w#~w!~#¶!j.!XW!!~OGi`)  !!~OG~w#~w+>#y`!6!d!~#foN#F~0yc! !r!~#fo##N#F=!~#fo##N#Fl(y!r>>#f!E!~#foN#F~0y! ! r!~#fo##N#F=!~#fo##N#Fl(yo!,.!XWo!J.!XW!4ö!'!~#foN#F~0yw! ! r!~#fo##N#F=!~#fo##N#Fl(yʞ: r9: rʮ: rI: rʮ: rY: rʮ: ri: rʮÞ!4ö!!~#foN#F~0y>2r2rö!.!XW!6!~!~OGi`))!r ! r  # !~2r2r!~OGi`))#r ~2 rX J`!h!~#fo ~OG!y( x#. ``!h!~#fo ~OG!~#fo}o|g| !N#F!h!~#fo ~OG}o|gMD>O>Gç !N#F!h!~#fo ~OG}o|gMDi`"-x!~#fo}o|g}o|g")x!h!~#fo ~OG!~#~ :)x2)x:*x2*x :)x 2)x:*x2*x*)x!e*-x:-x2-x:.x2.x};!8bX!h!~#fo !~``f!8byOxGy[!r~#£*r}o|g!e!8byOxGyŽff>2(t2)t! r:(t:)t#*(tMD) h * r#}*(t#"(tó>2*t2+t**t"(t! r:*t:+t#/*(tMD) h ~OG: r: r2*(t#* rWa"(tf*(tMD) h **t**t#"*t}*(t* r * rWa"(tJ`!~#fo"-x!h")x* rMD) h :)x:*xҧ*)x:-xw*)x###")x|``J`!~#fo"-x!h")x* rMD) h :)x:*x*)x:-xw*)x###")xþ``J`!~#fo"-x* r")x!!!h !*-xra!yOx#G!*-x͒!r~#p*-x}o|g!e!8byOxGyX!r~#3!N#F!*-x͒!N#F!*-x͒>2)x2*x! r:)x:*x#3!j*)x*)x#")x!N#F!N#F*-xs! 9ï*)x:)x2)x:*x2*xog8XS&P CdgT!  >@ZI>Zg~O͐#5g! lw#]g w#r8 0:@ZE yìH«yìy[`Z ZZ[! >:S>:S> S> S>/S>/S~͸0S#~͸0S#g> S> S>͸G>͸,aK{K__ ѷ8  TIME AND DATE TEST ROUTINES FOR SYSTEM SUPPORT 1 PLEASE TYPE ONE OF THE FOLLOWING COMMANDS: S - SET THE TIME AND DATE P - PRINT THE TIME AND DATE ONCE C - CONTINUOUSLY PRINT THE TIME AND DATE X - EXIT TO OPERATING SYSTEM COMMAND: $ THAT WAS NOT ONE OF THE ABOVE COMMANDS PLEASE TRY AGAIN $ WHAT IS THE TIME? (24 HOUR FORMAT - HH:MM:SS) $ WHAT IS THE DATE? (MM/DD/YY) $ THE TIME AND DATE ARE: $  2 r!4ö!4ô! !~#foN#F~0y:>2r2rö!!~#foN#F~0ya>2r2rö!!~#foN#F~0yʈ>2r2rö!!~#foN#F~0y>2r2r>2r2r>2r2r>2r2r>2r2rö!!~#foN#F~0y>2r2rö!!~#foN#F~0y?> 2r2r>2r2 r!"r>2r2rö!!~#foN#F~0yʀ>2r2r>2r2 r!"r>2r2rö!!~#foN#F~0y>2r2r>2r2 r!"r>2r2rö!!~#foN#F~0y> 2r2r>2r2 r!"r>2r2rö!!~#foN#F~0yG> 2r2r>2r2 r> 2r2r>2r2rö!!~#foN#F~0yʌ> 2r2r>2r2 r> 2r2r>2r2rö!~#foN#F!.!XWö20 pin cable plugged in backwards.Seek complete line stuck false. Waiting for drive ready. 50 pin cable is plugged in backwards.Controller does not respond. J`!~#fo"-x!*-xra!*-x͒*-x}o|g!e!>dw#w!~#ʰ!~w#~wÖ!8bi`")x:)x:*x!0_*)x} o|g}|! _*)x}o|g}}p*-x}o|g!e!8byOxGy``f!r~#Eͦ#!r~#Q͈fPANIC: %p f!N#F!T.!XWff!N#F!~w#~w}ʧ!.ÁfSoft error while writing bad sector map. Can't write out bad sector map. f!9!r~#!r~#f!jywx#w!r~#~K!N#F!~w#~w6!!6!jywx#w!!%t ~!N#F!~w#~w!~OGi`MD)) 1r ~OGyOxGyw!N#F!~w#~w!~OGi`MD)) 2r ~!N#F!~w#~w!~OGi`MD)) 3r ~!N#F!~w#~w6!N#F!~w#~w!~OG* r2't:'t2&t!j!!!*rs! 9:&t !.:'t!.fBus overrun. Sector header not found. Data CRC error. %+ 7i HARD %+ 5i %+ 4i %+ 6i Track Head Sector Retries Type No bad sectors detected. Bad sector report: f!9!.:%t!.f!y.!!G:%tO~!~#foMD)) 3r !~#foMD)) 3r ~!~#foMD)) 4r !~#foMD)) 4r ~!~#foMD)) 5r !~#foMD)) 5r ~!~#foMD)) 1r !~!~#foMD)) 2r !~!~#foMD)) 3r !~!~#foMD)) 4r !~!~#foMD)) 5r !~ff!9!8b!N#F!e!N#F!a!e!~#fo}o|g!e!6%!~r#~}!~w!~OG!eff!~#fo)))}o|g!yOx#G!e!N#F!eff!9! ~#fo} o|g}!6! ~#fo}@o|g}R!6!~p! N#F!~OG!N#F!N#F!N#F '! 9p! ~#fo}o|g}!6ff!6!~ !!! N#F ! N#F!!N#F͒!~#fo}o|g!e!8byOxGy< !~i !~OG!~OG! N#F!N#F!N#F! 9!~ o :'t2'tw !8bypOxGy!!8byw!4Àf:&t2&tf error. timeoutoverrunCRCRead header f!!N#Fra!yOx#G!!N#F͒!!!N#F !~#fo}o|g2)x:*x2*x)):)x2)x:*x2*x*-x#"-x÷(! ~7)#~):)x:*x)*-x~0)*-x ~A)*-x >Z)*-x ~OG! MDË)*-x ~OGyx”)x)*-x##"-x:)x2)x:*x2*x)*-x~+))*-x#"-x:)x2)x:*x2*x))!)x># **-x~0**-x>9*!*-x~OG! }|Ü**+x!~#-*!N#F>O>G4*!N#Fywx#w!)x>#C+*-x~Ai**-x>Zi**-x~OG! MDq**-x~OGylz*xC+*-x#"-xC+*-x~a**-x>z**!!N#F! N#Fa!~#fo }|:)x2)x:*x2*x*-x#"-x)*-x~A **-x>Z *!*-x~A+*-x>Z+*-x~OG! MD#+*-x~OG! }|!!   #* **-x!yOx#G`` can't write can't read J`!9!t!}|!")x!*)x*)x#")x~!>#+!>#`,*)x> p,*)x~`,p,!>w#w!vs+ywx#w!"+x!t:+x,:,x#-*+x~<<-!:N!!*+x -y-!!e+*+x !g+!=.! 9!XW-!>#,+!~w#~w*)x#")xö+!>#-*)x> -*)x~-!tN#F!t~w#~w*)x~A,*)x>Z,*)x~OG! MD,*)x~OGyw!~w#~w*)x#")xG\0!6!!%t !~OGi`MD)) 3r ~OG!~OGi`MD)) 2r ~OG!~OGi`MD)) 1r ~OG!f.!~OGi`MD)) 5r ~ ¦!].f!4!~OGi`MD)) 5r ~OG!V.!~OGi`MD)) 4r ~!E.Þ!~OGi`MD)) 4r ~!+.Þ!~OGi`MD)) 4r ~ž!.Þf!jywx#w!r~#~z!N#F!~w#~w:rwNfSeek test f!}.!! C!! C!! C!Z! C!! C!!C!!C!!C!5!C!K!C!i!C!!C*rx fPass %i f*,t*,t#",t!:.!.!N#F!~w#~w}ʋ!~#fofbfJ`>2-x2.x!r:-x:.x#!*-x*-x#"-xÛ``J`*r "-x!-x~#*r *-x:-x2-x:.x2.x``J`>2)x2*x*r "-x!r:)x:*x#W*)x*-x*)x#")x:-x2-x:.x2.x``J`>2-x2.x*-x !ryx#~``*-x*-x *-x#"-xgJ`*r "-x*-x >``*-x*-x :-x2-x:.x2.xéf*rWaff!!e!8byOxGy !!8bypOxGy\!! .!8by OxGyb!! .Ê!f!8byOxGyʂ!! .Ê!! .!} .fJ`!9!~#fo"-x!*-xra!yOx#G!*-x͒!N#F!*-x͒!N#F!*-x͒!6!~OG! ryx#N"!j!N#F!4}OG!N#F!N#F*-xQ"! 9"``f!6!~ "!!! N#F ! N#F!!N#F͒!~#fo}o|g!e!8byOxGy#ò"!~G#!~OG!~OG! N#F!N#F!N#F! 9!~ M#:'t2'tU#!8bypOxGy"!!8byw!4^"f:&t2&tf%+ 3ui Hard: %+ 3i Soft: %+ 3i Data test Track: J`!9*rx !{#.>2't:'t2&t!.>2-x2.x!r:-x:.x#T$*-x*r !~:'tOG:&tOG*-x![#.!.>2)x2*x!r:)x:*x#g$*)x*-xq$*)x#")x.$*rx ! .``*-x#"-x#J`!*rra!yOx#G!*r͒!N#F!*r͒!N#F!*r͒!6!~OGi`)2t ~#fo")x:)x$:*x%!j"-x!r:-,!tN#F!t~w#~w6é+!v!N#F0``*+x#"+x+*+x~>š-!:N!!*+x ͹8yl-x-!!V+*+x !X+!=.! 9!XW-!N#F!~w#~w)!v :+xw:,x#w*+x~2-*+x#"+x-f!N#F!~#--!N#FIff!N#F!~t?ff!!N#F!~t!A͉1fJ`!"-x*-x~#|.*-xN#F=*-xN#F!N#FU*-x##"-xG.``J`!~#fo"-x!!  #.``!~#fo ")x!~#fo"+x!+x:)x:*x#/*)x#")x!+x:)x:*x#I/*-x !N#F*)x*-x~#fof>.I/!:)x/:*x#/*-x !N#F*)x*-x ~#fof/:+x2+x:,x2,x!+x:)x:*x#/*-x !N#F*+x*-x~#fofxI/!+x:)x:*x#.*-x *+x*)x*-x ~#fofý.*)x!yOx#G!~#fo!)xyOx#G}|%0*-x*)x !N#F.*-x!N#F*)x .Y0*-x!N#F*)x .*-x*)x !N#F.``f!!~#fo !.fJ`!~#fo"-x!~#fo")x*)x~0*-x*-x#"-x*)x*)x#")x ʗ0``*-x~00``J`!~#fo"-x!~#fo")x!~#fo"+x*-x~n*rWaff*r *rWaff!!ff*r *r fJ`>2-x2.x!r:-x:.x#җ*-x*-x#"-xv``J`*r "-x!-x~#*-x:-x2-x:.x2.xç``f!9!6!~OG!ryx#ҍ!!~OG*rͧ !~OG:.t2.t:/t2/t*.t)".t!~OG*.t}o|gra:.t2.t:/t2/t*.t)".t!~OG:.t2.t:/t2/t*.t)".t*.t*.t!a ".t!4*.t*.t#".tMDfSeek error. Track: %i Found: %i J`!9!~#fo"-x*-x*r !!*rͧ y*rx ``!~OG!-xyx#A!~OG*-x!.*rx ````f!~#foMD)) 1r ~OGi`!~#foMD)) 1r ~OG}o|g"0t!0t~#ʖ*0tMDf!~#foMD)) 2r ~OGi`!~#foMD)) 2r ~OG}o|g"0t!0t~#*0tMDf!~#foMD)) 3r ~OG!~#foMD)) 3r ~OG}o|gMDff!9!!~#foMD)) 1r ~!!~#foMD)) 2r ~!!~#foMD)) 3r ~!!~#foMD)) 4r ~!!~#foMD)) 5r ~!~#foMD)) 1r !~#foMD)) 1r ~!~#foMD)) 2r !~#foMD)) 2r x:.x'%*-x*-x#"-x:)xw$``!4$>2+x2,x!6! r:+x:,x#҉%!~ʉ%!!j*+x!N#F!N#F*rs! 9yw~%!~%>2+x2,x!6! r:+x:,x#%!~%!!j*+x!N#F!N#F*r&! 9yw~%!~%%*+x#"+x7%*+x#"+xÙ%f!6!~ {&!!! N#F ! N#F!!N#F͒!~#fo}o|g!e!8byOxGy&c&!~&!~OG!~OG! N#F!N#F!N#F! 9!~ &:'t2't'!8bypOxGy{&!4!!8byw&f:&t2&tff!9!6!!%t '!~OGi`MD)) 1r ~OG!yM'x#d(!~OGi`MD)) 2r ~OG!yu'x#d(!~OGi`MD)) 3r ~OG!y'x#d(!~OGi`MD)) 5r ~OG! yx#'f!~OGi`MD)) 1r !~!~OGi`MD)) 3r !~!~OGi`MD)) 2r !~!~OGi`MD)) 4r ! ~!~OGi`MD)) 5r ! ~:%t2%tf!4'J`!~#fo"-x!~#fo")x!~#fo"+x!>w#w!:-xw:.x#w!>w#w!)x>#(*-x> )*-x~)!)x>#))*-x~-²)!>w#w*-x#"-x:)x 1*-x~N=1*-x#"-x*)x*+xN#F*+x~w#~w~#fo}|*-xMD``*)x>w#w*-x~051*-x>951*)x*-x~OG*)x~#foMD)) )  }|*-x#"-xG1J`!9!~#fo"-x*-x"+x*+x~1*+x~%1*+x#"+xâ1*+x "-xÜ1!+x:-x:.x#2*+x!-xyOx#G*-x!N#F!~#fof*+x*+x#"+x~2``!>w#w!6 *+x~-X2!>w#w!*+x#"+x*+x~*+x#"+xz2*+x~+z2!*+x#"+x*+x~*+x#"+x! !*+x0i`"+x!>w#w*+x~.2! !*+x 0i`"+x*+x~a2*+x~h2*+x~o2*+x~u3!*+x*+x#"+x~!~h3>2)x2*xP3!62!~o33>2)x2*xP3!~uJ3> 2)x2*xP3!")x*+x~xg3!>w#w3*+x~b<4!! N#F! ~w#~w~#~!! N#F! ~w#~w~#fo}|!~#3!!!  #3!N#F3!N#Fywx#w!~#:8!!  #:8!!!N#F!~#fof!~w#~w3*+x~p¾4!! ~#fo~#~!! N#F! ~w#~wN#F=ywx#w!~#3!!!  #4!N#Fõ4!N#Fywx#w3*+x~l65!~a°5!! ~#fo~#~#~#~!>w#w!~wx=*)x*)x#")x~OG=0yw!~w#~w#v=*+x*+x#"+x60!~w#~w:-x2-x:.x2.x2=!-x>#=*+x*+x#"+x*)x!yOxGyxһ=*)x*)x#")x~OGþ=0yw:-x2-x:.x2.xv=*+x!yOx#G``J`!~#fo"-x*-x")x*)x~ >*)x#")x=*)x!-xyOx#G``J`!~#fo"-x*-x")x!#~>! >#>!!x~#~#~#~!x e~#~#~#~*)x*)x#")x6-! ~#¥>! > w#w>! #~>! ! ~#fo>o>g}|!! #~~+~ !#~>!!|bF?! N#F!x~#~#~#~!x!d##N#F+++N#F*)x>*)x ")x*)x!x~#~#~#~!x!Zd>02#x2$x2"x2!x!!xNb##~*)x>9?*)x~'w*)x!-xyOx#G``write error write error bad putc call J`!~#fo"-x!~#fo")x!-x~#@!!?!U!XW:*xV@*-x ~#~n@*-x N#F*-x ~w#~w*-x :)xw@*-x >#A*)xMD``*-x N#F*-x *-xN#FU*-x yŸ@x#ʿ@! !?!U!XW@*-x >w#w*-x :)xw:)x @:*x@*-x ~@#~V@*)xMyw*)x#")xÞH:+x:,x5I*+x*+x#"+x*-x 6 I*)x~.HI*)x#")xVI*)x~VI``>2+x2,x*)x~I:+x:,xI*+x*+x#"+x*-x *)x~aI*)x>zI*)x~OG! MDøI*)x~OGyw*)x#")x`I:+x:,xI*+x*+x#"+x*-x 6 I*)x~OG``J`!9!~#fo"-x:v%J!! y2v!>w#w!!v  #UJ!~#fo))w ~mJ!!v  #}J``!~w#~w0J!!~#fo))w }|!~#fo6!!~#¶J!~#fo~w!~#fo##>w#w!:-xw:.x#w>2)x2*x*-x~:BK*-x~BK:)x:*xsK*)x*)x#")x! *-x~a4K*-x>z4K*-x~OG! MDw>#w!~#fo#~SL!~#foMD``!~#foMD``*-x*+x{HywL!N#F:N``!~#fo#~OG! !~#fo}o|g}¨L|L*+x! x6M!N#F:N``*+x! !~L#~M!N#F:N!~#f#~w+#~ 6!!~#fo !##~!!͘d4*+x~f=6!!}|!!N#F!!yOx#G! ~#fo >+F+N=z5!q;!9ywx#w! ! ~#fo }|3!!}|!*)x! ~#fo##N#F+++N#F!>ywx#w! ! ~#fo####}|3!!}|!>w#w! ! ~#fo####}|3*+x~d¾6!!}|!!>>#n6u6!N#F!! ~#fo >+F+N=ˆ6!8!9ywx#w! ! ~#fo }|3*+x~c6*+x~s6*+x~i6!~$7!~a?7!! N#F! ~w#~w}|*+x~c†7!>w#w 8!:+xw:,x#w!>w#w3!! N#F! ~w#~w~#~*+x~c7!)x>#7!~w#~w7!!~#fo~#~!!N#F!͖a}!!~!!}|!>w#w 8!!}|!*)x!N#F!}Cywx#w*+x~c3*+x~s3*+x~i3:+x2+x:,x2,x3!>#m8!N#F!N#F!N#F!~#fof!~#½1!!  #1!!!N#F!~#fof!~w#~ww8f!N#F!!N#FIfJ`!9!~#fo"-x!!x\09!D``*-x N#F*-x *-xN#FU*-x y5Ax#UA! !?!U!XW``*-x >w#w*)xMD``write error write error bad putl call J`!~#fo"-x!~#fo")x!-x~#A!!A!U!XW``!~#fo"+x!+x>#rB!*-x *-x ~#fo }|!+x>#C*-x ~#~C!N#F!~w#~w*)x*)x#")x~:+x2+x:,x2,x*-x ~w#~w B*-x ~ƒB#~_C*-x ~#_C*-x ~#fo*-x ~ _C*-x N#F*-x *-xN#FU*-x yBx#lC! !kA!U!XW_C!+x>#A!*-x *-xN#FUy.CxNC! !xA!U!XWA*-x >w#wA!~#foMD``*-x >w#w_CJ`!~#fo"-x*-x"+x!#~C!>#C!!~#fo>o>g}|*+x*+x#"+x6-!~#fo}o|g")x!~#C!> w#w!D!#~!D!!~#fo>o>g}|!:)x:*x#YD!N#F*)x!N#F9D*+x~'w*+x!-xyOx#G``J`!9!~#fo"-x>2)x2*x!#~D!!x~#~D!x$_|_!!w\oE*x "+x!+oMD``*+x! x*M!N#F:N``!~#fo~w!v~#LM!G͌Wi`"v!~#foMD``J`!~#fo"-x!#~M!!  #M*-x!~#fo ~5M!~#fo ")x:*xM*-x*)x ~9&N*-x*)x 60:)x2)x:*x2*xèM``:*xM*-x61!~#fo")x!)x>#4N*-x*)x 60:)x2)x:*x2*xM*-x*)x 4M``J`!N#FWi`"-x!-x~#]N``*-x ~#N*-x~OGyOxGyN!*-xͰY*-x~OGy OxGyN*-x ~#fo ~w*-x N#F! *-x !*-x N#FHRywx#w*-x6!~#foMD``J`!~#fo"-x!~#fo")x*-x*)x "+x*+x*-x~#fo!)xyOx#Gywx#w*+x *-x ~#~*-x*)x }|*+xMD``J`!~#fo"-x*-x ~#fo")x*-x*-x~#fo ####!)xy©Ox#O*-x*)x~#fo####  *-x *)x ~#~``out of heap space J`!N#F!N#F:Pi`"-x!-x~#P*-xMD``!!O!U!XW``J`!~#fo"-x:-x:.x]PbP*-xMDi`#}o|g##"-x!v")x*)x~#fo"+x!+x~#P*+x~#fo####!-xyx#P*+x!-x  #P*)x*+x ~#~Q:vP:v.Q:v2v:v2v.Q*+x ")xxP*)x*-x!x~#~9!x$_|_*-x*-x#"-x6-!!~#fo!~#fo }|!>>#h9!>w#w!!~#fo#! >+F+N=9!͗D! 9ywx#w!!N#F!~#fo#!YM~w#~w>2)x2*x!:)x:*x##:!:)x:*x##:*-x*-x#"-x!*)x ~*)x#")x!~w#~w9!>#Ҝ:*-x*-x#"-x6.>2+x2,x!:+x:,x#:*)x*+x !yx#:*-x*-x#"-x!*)x ~*)x#")x*+x#"+xH:*-x*-x#"-x6e!#~;*-x*-x#"-x6-!!~#fo>o>g}|;!:+x:,x#Ҝ:*-x*-x#"-x60*+x#"+x:*-x*-x#"-x6+*-x*-x#"-x!N#F! ͯ`0 }*-x*-x#"-x!N#F! `0 }*-x!yOx#G``J`!9!~#fo"-x!~#fo"+x!!x\;*+x*+x#"+x6-!!x~#~¿;!x$_|_!")x!!! >+F+N=;*)x͗D! 9ywx#w!!~#fo*-x }|!>>#;w#w!!N#F!!YM~w#~w!!  ##<*+x*+x#"+x60!-x>#2=*+x*+x#"+x6.2=!>#<*+x*+x#"+x*)x!yOxGyx>#(F!*+x)))w \lF!!x~#~3E!x*+x)))w ͞\|_*)x!*+x ra ")xlF>2+x2,x!:+x:,x#;G!~#;G!!x~#~¦E!x!w^|_!! `!!x~#~E!x!!x!N#F~e9_|_*-x*-x#"-x!~#fo0 }*+x#"+xyE!!w\F!!x~#~JF!x!w͞\|_*)x#")xoE:+x2+x:,x2,xD!x~#~F!x!w^!w\oE*x "+x!+x>#oE!*+x)))w x~#~F!x!^|_!w\(G!!|_!*+x ra:)x2)x:*x2*x:+x2+x:,x2,xõF!:+x:,x#cG*-x*-x#"-x60*+x#"+x;G*)xMD``PONMLKJIHGFEDCBACONRDRPUNLSTJ`>2-x2.x!v:-x:.x#G*-x:N*-x#"-xèG:vOG! *vMD``J`!~#fo"-x!vywx#w!~#fo~#FH*-x"+x!~#fo~#fo")x*+x*)x \H*)x~\H*+x#"+x*)x#")x H``!~w#~wG*+x*)x LH!~#fo##~OG``J`!~#fo"-x!~#fo")x>2+x2,x*)x~. I*)x~ I:+x:,xI*+x*+x#"+x*-x *)x~aH*)x>zH*)x~OG! MDH*)x~OG*+xNywx#w*+x !~#~*+x MD``!>w#w!-x:v:v#ڂQ!!:vw:v#w+N#F͓Sywx#w+~#‚Q:v2v:v2v9Q!~#­Q!!:-xw:.x#w+N#F͓Sywx#w!~#½Q``!~#fo!~#fo }|!v~#Q!~#fo"v!~#fo!~#fo :v:v"R!~#fo!~#fo "v!!~#fo##HRrPbad free call J`!~#fo "-x!~#ʜR!v:-x:.x#ڂR!v:-x:.x#کR!!9R!U!XW!~#foMD``!v~#R*-x >w#w*-x"vÜR!v:-x:.x#R*-x :vw:v#w*-x"v*-xnOÜR*v")x*)x ~#fo"+x!+x~#.S!-x:+x:,x#.S*+x")xR!+x~#jS*-x :+xw:,x#w*)x :-xw:.x#w*-xnO*)xnOÜR*-x >w#w*)x :-xw:.x#w*)xnOÜRf!:vw:v#w*v!~#fo "v!:v:vS!/x:v:vS!~#fo"vf!~#foMDfTTTUJ`!~#fo"-x!~#fo"+x!>#^T! yOxGyqT! yPTxqT!XWqT*+x!yOx#G``*-x ~T*-x ~OG!Se*-x ~#fo")x!*-xʹWy³TxU``*+x~OG! !~w#~w*+x#"+xT*+x~OG! T*+x~O\!4!q#p! N#F $]!4 !gy]y!Ox#Gyƀ+wx#w !#w Q]!69!#~w d]!MD! +„]y]ڥ]!MD!  #–]!4! +~w ¬]!5]]!N#F!f!~]!~#]~w! N#F !#~]jh!9!9! N#F!6 (^ƀ4 !gy_!q#p!N#F!gyk^! N#F &%b^_!~O#~Gyր+wx#w! #w ‡^>8!w! ~#+~w ^!~^!MD!  #¼^!#~w ^!5”^!N#F!f!~_!~#_~w! N#F !#~_jh!9~#fo~#7_~ƀw!9!9!N#F ! #wU_!~ƀw! N#F!fjh!9N#F!9~#fo~#~’_jhMD!9!9!N#F!gy`y֨OxG_!~#+~w_y_`y`!#~w_ _! ͞_N#F!~#~jh͞_N#F!~+~ +~+~ jh͞_MD`!9*-x*+x*)xi`!")x"+x"-x!9~w#~w#~w#~w+MD!9 _ #}`{ !94}`! 9~`+w>#w! 9N#Fx`O>Gs``O>G! 9q#pjh! 9~G! T!~#foMD``!>#U*)x! ~ʝU*)x" N#F*)x" ~w#~w*+x*+x#"+x~*)x$ >2x2x>2x>2x!xNb!~w#~w*)x! 5U*-x~OGyOxGyU*)x! ~U*)x" ~#fo6*-x~wT J`!N#FWi`"+x!+x~#U``*+x~OGyOxGy-V!N#F!N#F*+xT``!~#fo"-x!>#xV*-x")x!>#V*-x~ ʋV*-x#"-x!~w#~wKV*-x!yOx#G``*-x!)xyOx#G*)x*+xT*-x!)xyOx#G}V|V``!>#8V!!U*+xTyVxV``*-x#"-x!~w#~w8VJ`!~#fo"-x:.xDW!v:-x:.x#DW*-x))w ~JW``*-x))w MD``f!v~#ʃW!W:vrW:vʃW*vfi`"v[W*vfÃWJ`*v"-x!~#fo"v*-xMD``YYYJ`!~#fo"-x*-x ~#fo")x!*)x$ x~#~#~#~!x!͘d##~#~*)x$ ##N#Fi`}o|g"+x*)x! !!+xyOx#Gyw*)x" *)x* *+x }|!~#}X!*)x( tX #}X``!*-xͰYxX!N#F!N#F*-xZxX``*)x ~OG*)x ~OGyOxG}|XXi`"+x!*)x( Y # a+w>#w! 9N#Fx!aO>Gs`1aO>G! 9q#pjh! 9N#Fs`! 9q#pjh! 9N#Fs`! 9q#pjh!9~a/<æajhO!9~#fo) Žaa!9~a/<ÂajhO!9~#fo||g}o ²aa!9~a/<ÂajhO!9~#fo|g}o aMD!9q#pjh!! 9~+-b~b! 9N#F ! 9~w#~w! 9~w+~wa!9q#pjh&!!9fOG!9N#F!9~#fo ## # +++ #jh!9N#F!9~#fo ## # +++ #Rh!9MD!9~#~#~#~ !9~w#~w#~w#~w#~w#~w#~w#~w!9MD! 9  # # #b!9MD! 9  # # #!94b!9!9jh#~#~+++~#~#~Cc#>#>+++>#~#~#~ #~{uc>#># >#-c!9MD!9~#foUc! 9MD!9~#foUcͦb!9N#F!9͈c:c-c!9MD!9~#foUc! 9MD!9~#foUcͦb!9N#F!9͈c:c-c! 9MD!9~#fo#Cc!9MD!9~#fo#Ccͦb!9N#Fkb9uc:c-c!d!9~rd/<èdjhO!9~#fo##~w#~w+++~w#~w djh!9~d/G!9~#fo^#VzM\_>WxƀGzƀWyoxf\k\>Ó\>Ó\! 9N#F!9~#fo# ##˜\ +˜\~\чRhf\a\!9!9!6!N#F!gy\! N#F > ]!~]!>#ww djh!9~#fo##w>#w>+++w>#wMD!9!9!N#F!>w#w#w##w#w!!f! N#F !#~oejh*eq#px#w#wNe*eq#p#w#wNe*e w #w #w #wNe*e w #w #w #wNe&}!!9f~#e#~#foy#fx#f+++~#fo##e!9!9!N#F!gyf!q#p! N#F!gySf!N#Ff!yOx#Gufyʢf+~w#~w!ÀfO>G! ~#+~w†fҔfw yʡfÁf!MD!  #w°f!N#F!f!MD ! ~#fo+ #wfjh!9!9N#F! ~gi`+ >#wg-g+-g!gg! ~Rg# +~w:g!9~w#~w-g! ~ygi`+ #~wag!9~w#~wRg gi`7#~w…g-g!9~gi`+#w ggʼgi`>#w²g>w! !9z~w+~ w++~ wg!!9N#F!9^#V! #~#~ h! ~#~W!h+0h'hLh>w+~w}Lhi`>#wChJ!9N#F###q#p+++q!9N#F#q#p ( U @"3DUfw,pPb(3PX(PFFPF^;r[PF^;rPFYFPFYFFPP'P$vPXPP']GFFPF^;w/FPF^;r v4Xv4,X]ËGtw VU vJF%1FF0CP3PPP!FV^ t؃]^Ëܸ1GVUF tFuv~vv~~D+EtyEȻYKKyً3x CC$CCE y3CC1W^~FuF]^^XZ^X3SS y ؃πRP0CPSVW~^Z^XZ^X3R3SSP0CPSVWW^3؎W_E %E%] VW_^D %  DEËE E E E uE7E tm ]]]]E ueUUU )]WUFtF uv~JyvDv~;3SSSSSS_ǣD . t. .CCsCCt֋F-0@FFGGGGGGGGGG}G{GyGwG uG sG qG oG mGkG/xW v @ BCG@M [u+pUNJNJNJދF3FF܋!~]_" " " " WUF uv~FuFFF F} vi[Y3PPPPQS vT5Qv~;rwNNOOv~FFGGvFFYċF-?)FF1F~Cv~]_ ܊o w y2y:}ĹW9Wu KK$t w$t$t2 ܉G_ttt4^XZ[YU]MQSRP_D3۹%uPPP8PRS3PD%-?=#=|)D-8yT\D 3E_Xˎ& A.2 UWFVv~ u y ؃ y ރS 3SN;w r;w+@N^Yt tu t؃FV _] v UF fF FfF FfFV ] v ûWg؎Ћ&>O3  t5x t/PV±$'@'Nuӱ 9nvnX&^3^.U+;&v^.PF^;r PvX^P^ƉƋ4F uF]øKP PPJ]FFIc7NJNJv]~eX uvFZ~KFQ+v%X u]ËF=|]ËF udF=FY~v,4X uaFvv Pv5X u Fv4,X uoPvYvV^Ɖ@v:X u7vV^ƉF&PvY Fv4,X uoPvYvV^ƉvVX u7vV^ƉFPvYPv_X u#iNFF[Lv4XF؉FF uv-~vv F]Ë]F Fqv{X u#v~-Pv4^XF=|z0Pv4^X.Pv4^XvvYF=|vvY+FPv4X^;|0Pv4^Xsv"DFF0Pv4^Xyv#vW~v,4X uF u.Pv4^Xv4,X uHvFF0Pv4^Xzvvn~^ƉXF=}_P P Pv̊ uv́4Xv,4Xv́4X+oF̸>PvЊ^;tvЁ4XqF̸PsPv ^;uPvv ^;uPuPv ^;uwP PPEPFԉXFPvP ]fFFF=|,vV^ƉƋ4 u v4XF=tPPKFF uPv4X5^#PvtXPv(^;:PFƊ^;tFFF=|5FF=|@vVPvX^P^ƉƉ^ƉƊPvVF^ƉƊP-^;t v4XF=t*PF^#PPvX^P^ƉƊD^;tPvtY PvX^P^ƉƊDPvXPPvtX^#^;t3Pv4^;tPvtX PvtX PvtX v4XPvtX5^# uvvPvX uF uv4VPMPv4VFP6^;PYPvtXvtPvtX ufPvtvtVFPvV^ƉXPvtX5^# FF uFPvY awrb _FPRPFFPvFF=u F=t3PFFPv|FVQF=tF=uPRPvF=u F]ø]Ë]uPvY+v4VF^;uP PP6Fv4 uvVv4^;r v4Fv4VvXFPvXPvtX^PF^ƁPF^;t+PvtX^PvtYv4VvXFFv4FPvtX^PF^ƁPF^;t(PvtX^PvtYv4VvX]7FP0^;ƸvH uH uP9PF^;ƸvH uHPX]Ë]vFPvtX^# u 3ҋ]øPvtY#F Pmvt XRPvvvtt XZ^_^_׉VFPvvXZVF?vvvttXZ^_׉VF3ҋ]vt X u$vtt vvXZ^_;u;r9vt XRPvtt XZ^_RPvvXZ^_;u;sp PvtX^# u vTPYP^5RPvvXZ^_#pPvXPF+F ^ t3]Ë]Iv ug%Pv^;t7F-Pv4^^;ƸtHF u v4XvF0PF^;u F*Pv^;tv 4^4XFv4XEFvPS u*0Pv4^^+P PvX^^ƉF.Pv^;ƸtHF uv4X*Pv^;tv 4^4XFv4XEFvP u*0Pv4^^+P PvX^^ƉFlPvPR^;ƸtHF u v4XvP8F uFF Fv4^M~UFF PvVF޸gPv^;tF=|F=PF^PvVvPvދYvP\PvP\^ƉFܸEPv4^XF=|-Pv4^XF؉F+Pv4^Xv޸UPv\PF썆\FVF uFF Fv4^(~0FF PvVF޸PvދF^^PvVwPvދYvFށP\PvP\^ƉF܍\P$F썆\FFF9FF*F FFF u F uv4V#PPv4t#t!XZYuRPvtXZTPZPvtX^# uvttXZ uv4t!,\t4XZvtVPv4V!PFPYPF^;|1PvVvt^ƉƊ^;t v4XPYPF^+ƙRPvtTY[ӉTF]ËF u#v4 u v4Vv]Ë]PvtX^# u6PvtX^# uPv4^;tPvtXvtV P PPPvt XPvtƊ^Pvt X Pvt XPvt^ƉXv4V~PvtXPvtX^# u PvtƊ^;t% PvtXPvt X Pvt X]øPvtt XZY!RFZFFF=|vttPYPvX^RPvtt XZ^_^_;u;rPYPvX^Pvt^PPkFF3RPv4t!XZTPZv4V!P>FF=t F=t=PPYPPYPvX^Pvt^P F F u v4XF u@Pv#RPvt XZTPZPvt Xv7vtt vvXZ^_+RPvt XZvt vt X^;vt vt XvvXZ]Ë]*FP!PF^ƉFXF =|RPvvXZ^_;u;r FvvXZ؃VFRPv XRPvvXZ؃RP^YƉƊPv,4^XF ؙRPFu5XZU ujvvXZVF3RPv X3RPvv?^YƉƊPv,4^Xv X3RPFu5mXZU uF u-Pv,4^XP!PF^+F^ t3FFPvvF]Ë]`P%PF u:PFƊ^;tIvPFF=A}F=P~F@PvXgPvY P PvtVvVPvtVF uvVPvt V( uF]v ]Ë]pv4Fv udv4^P#FF=.t:F=!|]ËF uv,4XFPv4^XFPvX]Ë]PPF^^#ƉF6Fv4F uvVvtX^;sPF^PvtX^;sMPvFFދF u,F Fv4^t4vXZTPZFF KF=|!v 4^4XRPvXZTPZv 4^4X3RPvXZTPZvލ\Pvt4\Fv(Fv 4^4XFv FF uF;FrFFFwv 4XFܸFF[FFܸFFFCcsdDxXuUoObBfegewod\F uF;FwF u-Pv܊^;t 0PF^;t.Pv4vvЃv,4Xv,4XvVv4,X^;wPvVvvЃF;FwvvY+FvvvvЃF uF u)v4,X uPvVvvЃv4XPv4vvЃ]4F̍v4^Fv4,X ux Pv̊^;t Pv̊^;t PvX6APv̊^;sZPv̊^;v Pv̊Yv́4XwPvXZF҉FЉFθF̸FPv4^^ƉFv4,X uv̊ u<Pv̊^;t F́F<>Pv̊^;t F́FFPv4^VFtY PYPvX^Pvt X]L PvtX^# ugvtvt X^;|Pvt vt^ƉXvt XRPvtt XZ^_RPvttXZ^_;u;r.vt XRPvtt XZ^_RPvtXZTPZFvt PYPvX^^;|PYPvX^Pvt^PPvXRPPvtt XZY^_RPv4t!XZTPZv4V"PA u@PvtY v4XIPvtY#]UNV]vvX^Fv F uPvvy F]Ë]|PF^P u]voFPvtX5^# u v4Vvt u vtVvPPvX^P^ƉX]Ë]FF=|0vV^ƉƋ4 u v,v4XvJ]PF^+PFPvtX^# uO PvtX^# u vPv4VPd^;@PvtY @PvtX^# uPPX]Ë]FFFv uv4^PdFF uFPvY F u X^PF^ƁFv4VvXPvtX+F^+PvtXFPvX vtXFv4VvX FFSF uPF^PF u%FPvtXFPvXPvYF]Ë]U؎v~N;rNO]UVF]ލvVvP*P(]Ë]fvV4XF^;s]Í44X^+ƉFvƋYF]Ë]U؎~NF]vv4Vv4PvX^PvYPv4X]ݍvVvvV(Pc]Ë]v4XFv4^ uPF+F^ t3]Ë]X݊FPA^;~ ZPF^;~ PvYF]Ë]݊FPa^;~ zPF^;~PvYF]Ë]v܃FPvtX^# uP PP_܃PvtX^# uwFvVvX^;r^ Pv^;tPvtX^# u Pv4V}v4^Pv4Vcv4XFvVvX^;rX Pv^;tPvtX^# u v Ptvv4^P]v4Xvt vt X^;vt vt X@PvtX^# > u_> uMûE2> u9û1U> u#> uû s> uCs> uû Uo> u`> uû* 1Q\> uJY9uÊŊQ.>.+ tIsY.>.+u tItÊЊ.>.+WQY_st :etOnstcõQoYQYsQ..>+uЪIЪXP.>.+u IПtПtYQ.>.+uتIتXP.>.+u؟I؟tYÈ.5 .>5 ЪW.>r.;>s5 Ъ.;>s _s_á0 2 ..>+uBI2Ī2 ..>+u It22Įu 0 2NJ؊ÜPSQRVWUOWPSQRVWUOW & 0X#*  6r   2 i]_^ZY[X3 ñ/sPQ>5YQE*YX7|ù ?:u0Kû C?0QCtYû t< uSRQ t< t<t <uYZ[sPX $׊>ж Њб0s$uuu 16 Bit Rasmussen Memory Test (M86) Ver 6.1 Page(s) in SPUZ BRD# NO SPUZ BRD# BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page. BEGINING RAM TEST ON SPUZ BRD# Page : Fast COMPLEMENT TEST BIT STUCK TEST SHORTED BIT TEST CHECKBOARD PATTERN TEST(AA55) WALKING BIT TEST ADDRESS LINE SHORTED TEST RANDOM NUMBER TEST Testing Each page for page overlap Filling each page with it's number * Verifing each page for it's number All pages verify OK DONE WITH PASS HIT CR TO CONTINUE,^X TO RESTART,OR ^C TO STOP00000123456789ABCDEF0 uPFPX]Ë]Xۋvtvt X^;}Ovtvt XvvtXRPvt TY[ӉTPvt XPvt Xvt X uPvtX5^# u3Pvt Xvvt X u Pvt X PvtY FPvt 4vt^ƉX] LOOK AT EXTENDED ADDRESS LIGHTS ON JADE BOARD!!! NOT AT ME.......! BAD FILE$%03dcon: TOO MANY ARGS$warw REDIRECTION ERROR$cFREE$WRITE$% NO CORE$ $$@Y@@חA7yACnF?O8M 0HwZ۾sOu?yGz?(C6?30yE>ؗҜ<#I9D2F[%nd( ??$@$@$@CONCONRDRPUNPRN0123456789ABCDEFvt vt X^;vt vt X@PvtX^# Q Yñ VWRQSPѱX[YZ_^ñRQS[YZRS [Z}}FSTLOCLSTLOC>\?u(eN A3ۋú@A&&<uƇ6  &U& t :6 rC뮻 >3Qm0 {$XPpY"DY YA :6 |ðA3P1PvC>X$APXPXPXPXû3ЈĪ:t &  û> uq IIЋ&DUU(LRFޓN+@FFN}FޓLRFN+@FFN}hPvXH[PFH[PCFPcFHF~uPF[FN+@FFN}^FPTCPvXH[PFH[P1CPvXH[PFH[PC>!FP뗋FޓF;tfFPBRQSPFP??FPB FPPvXH[PFH[PFPBB6PvXH[PFH[PFPbBFPZBnBj]UULRFN+@FFN} OPFH[P BFPFHF~uqPF[FN+@FFN}PFPAPvXH[PFH[PAPPFH[PAFPZPPFH[PFPiAPvXH[PFH[PFAvZALRFN+@FFN}LRPF[+ؓ@FPPFH[P@FPF@FFꓡLR;upFLRFN+@FFN}PFP@PvXH[PFHU~&=} ~&FFF-HFvvvv PHr"PXFXFXFXFFvvvv XFXFXFXFvvvv .HFvvvvvRQSP,XFXFXFXFvvvvPdP!FP?RQSPXFXFXFXFvvvv Pr0vvvv PXFXFXFXFF@F~WQPvvvv P~vr&~W1~W1-P11SPQPF#~Wr1~Wp1 Pf1]1SPQP ~WO1~WM10Pvvvv[P01'1SPQPvvvvvvvvP } P XFXFXFXF~W0~W0.P00SPQPPF[FN+@FFN}{~W0~W00PvvvvG[Pt0k0SPQP.vvvvvvvvP P XFXFXFXFz~W0~W0EP 00SPQP~|.~W/~W/-P//SPQPF؉F#~W/~W/+P//SPQPkPRQSPc FFFFN}R~Wt/~Wr/0PFF쓙[PY/P/SPQPFF쓙‰FF쓸 <.uPXFXFXFXFF^6^62Pr~4~*PvRQSP|XFXFXFXFP~XFXFXFXFvvvv^62䓸0+Svvvv?XFXFXFXFF@FU^6CvvvvXFXFXFXFvvvvX[YZ]UvUPXFXFXFXF^6 OPHRH[PX>i>iLRJRJR+@xRJRxR}[P6JRXH[PJRH[PP6JRXH[PJRH[P=H?=똸LRJRJR+@zRJRzR}O OPJRH[P OPJRH[P=@RPz= OPJRH[Pe=^v=PPLRJRJR+@|RJR|R}-PPJRH[P=RPPPG)RP**** End of test.****PP5)p: (%3UUv vvvXFXFXFXF룋]UUS~t+~tFvv v vFPFPvv v vr yHP PF[+ؓH[;ظ~@Pvv v vPx D [#r+~|Fvv v vFPFPvv v vFPFPFPFPvP,] UU~RP0P9Pj0+P0/-P0/.P0/0>jS&&<t>jS8WX& >jS8WX&F>jS.&2PF2P~RPe0)[#r+>jSW>jS(&Pm >jS8WX&F>jS.&uFFF2]UU_@SP>SP P0r`FPPP g2F~ u-FP,FP,F2P,,SPPP 32F~WFPFF~t~WPt 2FPPPR >jS8WX&F~ u~t,F&<uFPF&2H_&%FP.,FP,,F2P ,,SPPP >jSW>jS(&P>jS8WX&Fq~RP~RP.EP..P.--g.PF&2[FN+@FFN}FPF[×&2P~RPA.^'rVlSPjSFXFRPkRPBad real, Try again:P.~^یȎ؃ЎZRRU^]^X[YZRRU^]RQSP^X[YZRQSPRQSPZ_Ќێ؋ۃUv ]Uf ]UF F^ ]_UF F^ ]_UF Fɛ^ ]_UF F^ ]_UR.RFRRR?.R]ZUR.RFRRR?.R]ZUFR]^RRRRUF ^%=u];tv~ Ўع]u@ZR5&RRX x%tC&RRX y%tC&RRX x@&RRvX x%tK&RUU^ [>SX@S$&HS&LSFSJS PRSXTSPVSXXS>FSWhSPPu"fShSPfSNSXPS>NSWNSP%>NSWZSP%>NSWPP%>JSW>NSWP"PZSX\SPbSXdShSPfS^SX`SNSRXR:SP00Pã>SX@SãBSXDSRPPCON:#RPPRPPCON:"RPP]Ì؎& 3Ȏ &&];t&5&GGUF v vvvPtrFv vvvPrGF~~@Pv vvvv RQSP[#r FHFȋF@F=F~5}@Pv RQSPv vvv{[#r F@FȋFFF]UvU PF [FN+@FFN}~W;^6P6P^6P6PF~W5~W50PF[P55SPQP~W~W);FP^6P6P^6P6Pm1;^6P6P^6P6P P<X^6X^6X^6X^6 ] UUvvvvPtrPXFXFXFXFhvvvvBXFXFXFXFvvvvP Pf~&P RQSP9XFXFXFXFvvvvFFP~&[@FvvvvP&rF@F~WQPP~ &PF[+ؓ[FN+@FFN}%~W3~W3 P33SPQPvvvvPr#~W3~W3-P33SPQPeFHPRQSFXFXFXFvFP~W~Wj3~Wh3.P^3U3SPQP~&PFP~W]UP)FPFjSXlSu~WFPF]A UU6R6R6R6RP rFPR@[;t06R6R6R6R Pb&XFXFXFXFFPRH[;t06R6R6R6R P"XFXFXFXFLPXFXFXFXF~OPF[FN+@FFN}+vvvv PuXFXFXFXF~u{PF y[FN+@FFN}+vvvv PRXFXFXFXFʸPvvvv'XFXFXFXFFRvvvvXRXRXRXRvvvvXFXFXFXFvvvvX[YZ]UvU^6@^6^6P^6P6P_&2[;F&^6P6P_W^6[×&FF2]UvU~0|@P~9@[#rFFF2]UvUF^6PXFXFXFXF^62PrPvvvv Pd^62䓸0+SXFXFXFXF^6vvvvXFXFXFXFvvvvX[YZ]UvU PXFXFXFXF^6 N~v=t2;~F] ƪUU=FP~W9P ~t~WvFPFP~W9P ~tRPRP Can't close: PPFPPP in RESETPPeRP}Program abortedPP;,!F~t FFFFF~WXjSXlSFFFFF~8WXFXFFPPF~uxnSFFFFF~WFP9Pp~uA~t~8WX& ?Fu>jSW>jS(&P9FF~WFP9P ]UU~ WXjSXlS~ &&<u~ &&<t>~ *&=u~ ,W~ *&_&~ 6&PPB~ 6&P~ &&2PPeP^?PT5PJ+LPnS~&~&~ &&] UU~ &&<#~ Wv*nS~&~ &&] 69u_+ F e UUF~ ~KpSPF[×&2r"FFpSPF[×&CF@FFRPFCB Table Exhausted!nSF~6&P-F]UUF2PpSPF[@&2=t@[#rpSPF[&&=ujpSPF[&&=uDpSPF[ÉFXF~(W~&&[PP~&&[+SPv_PpSPF[@PCnSv:]UUFPFjSXlS]UUpSPF[ÉFXF~&&=}~Wv_&~&&~(W~&&[×&F~&W~&&@_&F2]UUpSPF[ÉFXF~&&=}vZ~&&~(W~&&[×F&~&W~&&@_&]UU nS>jS&&<tuPFPF~tP PPP~ t P P>jS8WXF&>jS.W~u@_&>jS&&<t*PPP_F>jS8WXF&>jS&&<t'PFP'F>jS8WXF&>jS6&F>jS.&FFFP>jS(&[;ظ@PF2[#r7>jSWXFXF~8WFH[PvFP_&F@F>jS.F&>jS,WFH_&]UU nS>jS&&<tP>jSF~t ~&~tFPFP APFPI  FPFP $P  } FPPP>jS8WX&F~ u~t,F&<uFPF&2H_&.~$u%FPbFP`F2PTKSPPP>jSW>jS(&P >jS8WX&FhPF&2[FN+@aFa}FPF[×&2PFPrYlSPjSFXFRPRPBad Integer, Try again:PPFPFjSXlS!qFP~W~u@P ]UU ~&~ &<t~ WX&2P+P-Pr~ WX&FF F+FFP~ &2[FN+@FFN}pFu3~W~&P~ WF[×&2P[_&2~W~& P~ WF[×&2䓸#[_&녂~-t~W~&_&] UU,FPFPFPv$P[×&PF$#PrFF2]"@@iUU FF;| FFFFF]UU~&2F~&2FPvv[FN+@FFN}\~WF[×PP8 )F]UUpSPF[×&]UUPpSPF[(PnSPpSPF[@PnS]UU FPpSPF[(PnSPpSPF[@P{nS>nSuFF2]UU F~WCON:or~&&F~WLST:Fr~&&Fy~WKBD:P~WTRM: [ r~&&F;~WRDR:P~WPUN:[ r~&&FF2]UU0FFP P~P~&<~@P~&<}@[ rVP~&2[FN+@FFN},~WF[×&2PFPrFF2]UU ~a|@P~z@[#rF2䓸#ÈFFFF2]UU~&<t@P~WX&< u@[#r~WPP ~&<uF@FP  X@PPFP X@PP~WX&<:tF~WX&2PFFFFF~WF[×&2P.Pk:PdEfPF쓋F;ظ}@[#PFP~&2[;ظ@[#r9FPFH[P~WF[×&8WX&2PW>jS&&<tP>jS8WX&2P'>jS&&<tP>jS8WX&2P>jS&&<tP>jS8WX&2Pn>jS6&FP>jS(&[FN+@FFN}->jSWXFXF~8WFH[×&2Pvd>jS*&]UUpSP~6&[@PV]UU PN PG ]UU>jS/&2rF>jS/&>jS&&<uF]UU~WFF[P~WF[P~&2PFFH[+S2~WXP~&2PF[+ؓ_&]UU~/&~WXjSXlS~.&u ~/& ~4&u~.W~8WX&<u@P~.&2[ _&~8WX&< u@FF2P~.&2[ r ~/&F2P~&&<u@[#rc~.&2P~/&2[ r~8WX& ]UU~WnS]V3U]ZR[ÀSuF\U]<uZZ[ʱ3U]^\!&|Ɏپ2/3SSPUUS~&<tFP@:PASTMP0&F~WF[×&FF2PF2[;u!F2PF2[;FF0뙋F쓋F;tFF쓋F;FFF2]UU ~W~W=u@FF2]UU ~W~W=t@FF2]UU ~W~Wv=u@FF2]UU ~W~WJ=u@FF2]UU ~W~WF~u@P~u@[ ÈFF2]UU ~W~WF~u@P~u@[ ÈFF2]UU~WXP~&2Pvv ];UU~u~ PFHFF2P]UUPFF+ؓ[FN+@FFN} PEPF[FN+@FFN}~ WFH[×&2P ܋] UUDSPBSPO<>P3r F2P)>jS8WXF&>jSW>jS(&P ]UU~WXjSXlSK] $;|UU  ZFXFFF]UU [ Z]UU> [|+ Z [F ZP Z&2@_& [@ []UUPFPFPP'&2䉆 [=P[+ؓ2PH_&F@FF@Fk~WF[×&<.u@PFP~&2[;ظ@[#roF@FF~}@PFP~&2[;ظ@[#r8FPFH[P~WF[×&2P_&F@FF@F~W%-PP~WXPF2䓸@+ؓ_&FP~WXPP"FP~WX PP ]UUpSPPPZ]UUFFF~upSPF[@P$PPpSPF[@P~W~WrFnSv~Wr#nSpSPF[@&qPpSPF[@P;nS>nStFv"3pSPF[&&pSPF[&nSF]UUFFF~upSPF[@P$PPpSPF[@P~W~WrFnSvc~War#nSpSPF[@&qPpSPF[@PnSPpSPF[@PnS>nSt FvpSPF[&&nSF]UU ~6&=t~6W~WP_&~6&=uD~&&<~"PpSP~6&[@PB0.$$$PP:SPF PP :SP:S&2@_&:S&<9):S&0:SP:S&2@_&~WvFP&~t~4&F ~4&~.&~/&~&&~WXjSXlS~*&~,F&~0W~8Wy~(F&~WX&<:u@P~WX&jS&&<t>jS8WX& >jS8WX&F>jS.&2PF2P^PW t[#r+>jSW>jS(&P_>jS8WX&F>jS.&uF~$tFFF2]UU@SP>SP6P rF~&F F~$tF%~+t F~-t FF~ u\Fu&~W~&PF2P[_&%~W~& PF2䓸#[_&uFFu~W~&_& P Z [PP  ZP Z&2P[_& [P[ã []UU @SP>SP?Pr Ff>jS&&<,>jSW>jS(&Py>jS8WX&F)>jS8WX&F>jSW>jS(&P8F2]ù܃"66 X PUN~v] UN~v] UN~OvN] UN~OvN] Z[X PSRUEEю3F;Fȋظ CF][YXS[YXS[ЎU~ ]$S[^ ю SZ[ ю3ˁ6R3PPP[ZYtSU]2SRQ¹3U]YZU][ZYSU]ù܃"66!X P[XY_QYtSUU~ W9PP~ W~W%P݋] _ZY[X;u ;u3_ZY[X;u;t^8 x t^( x^ t x^ t x_YZX[+UF UFF 3FFF tVV FV FtVVFV F FuFFFFVV VVQvvvvKYs"QvvvvVYF^VV }!͌!VP͢:Q:^+!͌1!͌!͌!fA͢:BB!&͌A!v͢:BZtUZ!0͌z!J͌> > ~ʟ_#Î~w#>¥ Loading MPX 16K 4K with routine to test DMA arbitration by accessing system memory from 010000H to 01FFFFH. Loaded. at 010000H to 01FFFFH. Running. AAA> ~ʟ_#Î~w#>¥ Loading MPX 16K 4K with routine to test DMA arbitration by accessing s1O2O2`>22!~/Gw~B>2~/Gw~B!Ͷ22!B>wX! Ͷ22!B>Uw@!P22~:`ʁ!!Ͷ>!Ow@!@Ͷ>!Ow@>2!z2k~G/Ow~Įp[>2`!@~>\2<2>2<2~Gx# MPX is No System Memory MPX: Error in Memory Access. MPX: All Memory Access Good.VVFuF^Ft ]F^]_X[SPZ_&2PZ_&PZ_&EP&PZX_&ZX_&ZX[_&&].>S.BSZЎ^UvЌێ~ ]Z ZЎ^ UvЌێ~]Z>>9512 COMI4TEST COM I3TEST COM MEMTEST COM FORMAT COM CLOCK COMDISK2 COMDISK2 COMoMDRVIN CMDMDRV CMDMEMMNGR CMD` !"#$%MEMSPUZ CMD&&'(BENCH87 CMD)*+,-./0BENCH87 CMD 1I4PTST COM2DIPTST $$$>>Gx9512 COMI4TEST COM I3TEST COM MEMTEST COM FORMAT COM CLOCK COMDISK2 COMDISK2 COMoMDRVIN CMDMDRV CMDMEMMNGR CMD` !"#$%MEMSPUZ CMD&&'(BENCH87 CMD)*+,-./0BENCH87 CMD 1I4PTST $$$ 2O>2P:O #,!5!D5!l5~_#5 CPU: Proper Termination of Process. CPU: Proper Termination But MPX Error. CPU: Error, Illegal response from MPX. FORMAT COM CLOCK COMDISK2 COMDISK2 COMoMDRVIN CMDMDRV CMDMEMMNGR CMD` !"#$%MEMSPUZ CMD&&'(BENCH87 CMD)*+,-./0BENCH87 CMD 1I4PTST COM2DIPTST COM3DMATST COM4DMAEND $$$I II"DON'T LOOK AT ME..."I("LOOK AT THE EXTENDED ADDRESS LED'S ON THE MULLEN BOARD!"J2 J<AJF ,A,JP X : X6JZAAGJd A FOJnAZJx ,AnJ X : XxJAAJ A xJ ,J J ,BJ J ,$J J ,J J J X : XKK ,$K 'K" ,B1K, =K6 ,GK@ SKJ ,]KT hK^ ,rKh ~Kr ,K| K ,K K ,K K ,KKJ ,]KT hK^ ,rKh ~Kr ,K| K ,KDMATST COM4DMAEND COM5SWAP5 COM6CTEST COM7T5 $$$ B3!͔!͔!͔!͔  >>>!> w<#@RG> w#> w#>w!>@w<#~mb> w#> w#>w!>w<#ʈ}> w#> w#>w3ͤ~#Ô¤ This is a test of the INTERFACER 4 CENTRONICS port COPYRIGHT COMPUPRO 1983 $MDRVIN CMDMDRV CMDMEMMNGR CMD` !"#$%MEMSPUZ CMD&&'(BENCH87 CMD)*+,-./0BENCH87 CMD 1I4PTST COM2DIPTST COM3DMATST COM4DMAEND COM5SWAP5 COM6CTEST $$$c>2>2>2>2>2>22:=B2:G:Q(nn0cnnDc 1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D yc>2>2>2>2>2>22:=B2:G:Q(nn0cnnDc 1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D yc>2>2>2>2>2>22:=B2:G:Q(nn0cnnDc 1ͻ ͯ 2ͯ ͖ (Ăy 2͵ ͋ ͖ ͖ Ăy0 ͖ 2ͯ 1 'd ! ^#V#*0}o|g*  ":D x=D yHERE BEGINS THE 85/88 SWAP TEST$THIS 85/88 SWAPS OK$THIS 85/88 FAILS THE SWAP TEST$n > y> y_  ( DISK BOOT ) 0 SET_DRIVE HOME 100 SEEK HOME 0 WARNING !  ( ERROR MESSAGES ) EMPTY STACK DICTIONARY FULL HAS INCORRECT ADDRESS MODE ISN'T UNIQUE DISC RANGE ? FULL STACK DISC ERROR ! FILE OPEN ERROR OUT OF VIRTUAL RANGE FILE MAKE ERROR DISK WRITE ERROR DISK FILE CLOSE ERROR EXECUTION VARIABLE UNDEFINED COPYRIGHT COMPUPRO 1983   ( ERROR MESSAGES ) COMPILATION ONLY, USE IN DEFINITION EXECUTION ONLY CONDITIONALS NOT PAIRED DEFINITION NOT FINISHED IN PROTECTED DICTIONARY USE ONLY WHEN LOADING OFF CURRENT EDITING SCREEN DECLARE VOCABULARY   ( DISK2 SOFTWARE MCS 81JUL03 ) A0 CONSTANT STEP_IN 80 CONSTANT STEP_OUT : HOME 4 STEP_OUT OR DRIVE @ OR CTL P! 0 TRACK ! BEGIN CTL P@ 1 AND WHILE DATA P@ DROP 2 MSEC REPEAT ; CODE (SEEK) ( N --- ) D POP BEGIN DATA IN E DCR 0= UNTIL NEXT JMP END-CODE : SEEK ( TRK --- ) TRACK @ OVER TRACK ! - -DUP IF ( NEW ) DUP 0 > IF STEP_IN ELSE STEP_OUT ENDIF DRIVE @ OR CTL P! ABS (SEEK) BEGIN CTL P@ 4 AND 0= UNTIL 28 MSEC ENDIF ; --> ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 ) SEC/TRK #HEADS * CONSTANT SEC/CYL : T&SCALC ( D --- ) SEC/CYL U/ SET_TRACK SEC/TRK /MOD SET_HEAD SET_SECTOR ; --> ( DISK2 SOFTWARE MCS 81JUL03 ) HEX C8 CONSTANT ORG ( FIRST HARD DISK PORT ) ORG CONSTANT CTL ORG 1+ CONSTANT DATA D0 CONSTANT SEL ( SELECTOR CHANNEL PORT ) B CONSTANT SEC/TRK ( DISK CHARACTERISTICS ) 8 CONSTANT #HEADS F5 CONSTANT #TRKS 0 VARIABLE DMAXSEC 2 ALLOT SEC/TRK #HEADS * #TRKS U* DMAXSEC 2! 400 CONSTANT BYTE/SEC --> ( DISK2 SOFTWARE MCS 81JUL03 ) : SET_DRIVE ( DRV --- ) DUP DRIVE ! PWR2 10 * HEAD @ OR DRIVE_STB SET ; : SET_TRACK DUP CYL SET SEEK ; : SET_HEAD DUP HD SET HEAD ! DRIVE @ SET_DRIVE ; : SET_SECTOR DUP SEC SET SECTOR ! ; --> ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 ) : STAT. BASE @ HEX SWAP CR ." DISK ERROR " 2H. TRACK @ DUP . HEAD @ DUP . SECTOR @ DUP . SWAP ROT #HEADS * + SEC/TRK * + DECIMAL . CR BASE ! ; : TRY 0 DO LOAD_CHAN CONTROL @ CTL P! WAIT_DONE CTL P@ DUP 7E AND 2 - DUP DISK-ERROR ! DRIVE @ 0 SET_DRIVE SET_DRIVE IF STAT. ELSE DROP LEAVE ENDIF LOOP ; --> ( DISK2 SOFTWARE MCS 81JUL03 ) 2 VARIABLE DRIVE 0 VARIABLE HEAD 0 VARIABLE TRACK 0 VARIABLE CONTROL 0 VARIABLE SECTOR 5 CONSTANT NTRY 0 VARIABLE HDER 0 VARIABLE SKER 0 VARIABLE SFTER 0 CONSTANT DRIVE_STB 8 CONSTANT CYL 10 CONSTANT HD 18 CONSTANT SEC : SET ( DATA REG --- ) CTL P! DATA P! ; : WAIT_DONE BEGIN CTL P@ 80 AND 0= UNTIL ; : COMMAND ( OP --- ) 8 * C0 + DRIVE @ + CTL P! WAIT_DONE ; --> ( DISK2 SOFTWARE MCS 81JUL03 ) A CONSTANT PRIORITY F PRIORITY - 20 OR CONSTANT SEL_BYTE HERE 4 ALLOT DUP 4 ERASE CONSTANT CHAN_BUF : LOAD_CHAN SEL P@ DROP 4 0 DO CHAN_BUF I + C@ SEL P! LOOP ; : SET_ADDR ( ADR --- ) 100 /MOD CHAN_BUF 1+ C! CHAN_BUF 2+ C! ; -->  ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 ): DHR/W ( ADDR BLOCK R/W --- ) >R T&SCALC SET_ADDR R> SEL_BYTE OVER IF 80 OR ENDIF CHAN_BUF 3 + C! ( SEL CTL BYTE ) IF C8 ELSE D0 ENDIF DRIVE @ OR CONTROL ! NTRY TRY DISK-ERROR @ IF ( ERROR ) TRACK @ HOME SEEK ( RECALIBRATE & SEEK ) NTRY TRY ENDIF DISK-ERROR @ 8 ?ERROR ; : HR/W ( ADDR BLOCK R/W --- ) 0 SWAP DHR/W ; DECIMAL --> ( PATCH FORTH TO FLOPPY AND HARD DISK ) HEX : MAGIC ( ADDR BLOCK FLAG -- ) R> DROP SWAP DUP 80 < IF ( FLOPPY ) [ ' R/W 2 + 1 ] AGAIN ELSE 80 - SWAP HR/W ENDIF ; ' MAGIC CFA ' R/W ! DECIMAL ( GODBOUT HARD DISK CONTROLLER ) : FMTCYL ( TRK --- ) CHR . EMIT SEEK TRACK @ LIMIT TDATA #HEADS 0 DO I SET_HEAD FMTTRK LOOP ; : FORMAT ( DRV --- ) SET_DRIVE HOME LIMIT 2 + SDATA #TRKS 0 DO I FMTCYL LOOP ; : J RP@ 6 + @ ; : WIPE LIMIT BYTE/SEC E5 FILL #TRKS 0 DO SEC/CYL 0 DO LIMIT I 0 SEC/CYL J U* D+ 0 DHR/W CHR . EMIT LOOP LOOP ; -->  HEX : RD SEL_BYTE 80 OR CHAN_BUF 3 + C! ; : WR SEL_BYTE CHAN_BUF 3 + C! ; : Y RD LIMIT SET_ADDR LOAD_CHAN 4 COMMAND ; : Z RD LIMIT SET_ADDR LOAD_CHAN 1 COMMAND ; : X CR ." STATUS = " BASE @ HEX CTL P@ . CR LIMIT DUMPLINE 63F0 DUMPLINE BASE ! ; : XX X LIMIT 400 RANGE DO I DUMP 100 +LOOP ; : W WR LIMIT SET_ADDR LOAD_CHAN 2 COMMAND ; DECIMAL ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 )HEX : TDATA ( C ADDR --- ) SEC/TRK 0 DO 2DUP C! 3 + LOOP 2DROP ; : SDATA ( ADDR --- ) SEC/TRK 1 - 0 DO ( FOR N - 1 SECTORS ) I 1+ OVER I 3 * + C! LOOP ( WRITE 1 - N ) SEC/TRK 1 - 3 * + 0 SWAP C! ; ( AND 0 ) : BUILD TRACK @ LIMIT TDATA HEAD @ LIMIT 1+ TDATA LIMIT 2 + SDATA ; : CALC SEC/TRK HEAD @ * SEC/TRK #HEADS TRACK @ * * + SECTOR @ + . ; : BELL 7 EMIT ; --> ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 ) CODE (CHKFMT) ( CNT CMD --- ) D POP H POP E A MOV C7 ANI CTL OUT ( SEND TIMEOUT COMMAND ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) BEGIN E A MOV CTL OUT ( SEND READ HEADER ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) L DCR 0= UNTIL NEXT JMP END-CODE ( LOOP CNT TIMES ) : CHKFMT RD LOAD_CHAN SEC/TRK E0 DRIVE @ OR (CHKFMT) ; --> ( PATCH FORTH TO HARD DISK ) : PATCH R> DROP HR/W ; ' PATCH CFA ' R/W ! ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 ) CODE (FORMAT) ( CNT CMD --- ) D POP H POP E A MOV C7 ANI CTL OUT ( SEND 0 COMMAND ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) BEGIN E A MOV CTL OUT ( SEND WRITE HEADER ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) L DCR 0= UNTIL NEXT JMP END-CODE ( LOOP CNT TIMES ) : FMTTRK LIMIT SET_ADDR SEL_BYTE CHAN_BUF 3 + C! LOAD_CHAN HEAD @ LIMIT 1+ TDATA SEC/TRK D8 DRIVE @ OR (FORMAT) ; : XFER 80 0 DO I I 80 + EDITOR COPY FORTH LOOP ; -->  ( SECTOR UNIQUENESS ) HEX : WDATA 15 0 DO LIMIT 200 I FILL ( FILL WITH SECTOR NUMBER ) LIMIT 37 I + 0 HR/W ( WRITE THE SECTOR ) LOOP ; : RDATA 15 0 DO LIMIT 37 I + 1 HR/W LIMIT DUMP LOOP ; : -TEXT ( A1 A2 N ___ FLAG ) DUP 0 DO DROP OVER I + C@ OVER I + C@ - DUP IF LEAVE ENDIF LOOP SWAP DROP SWAP DROP ; --> ( GODBOUT HARD DISK INTERFACE MCS 81JUN05 ) CODE (FORMAT) ( CNT CMD --- ) D POP H POP E A MOV 10 ADI CTL OUT ( SEND TIMEOUT COMMAND ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) BEGIN E A MOV CTL OUT ( SEND WRITE HEADER ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) L DCR 0= UNTIL NEXT JMP END-CODE ( LOOP CNT TIMES ) : FMTTRK LIMIT SET_ADDR 2B CHAN_BUF 3 + C! LOAD_CHAN HEAD @ LIMIT 1+ TDATA SEC/TRK D8 DRIVE @ OR (FORMAT) ; : XFER 80 0 DO I I 80 + EDITOR COPY FORTH LOOP ; --> ( GODBOUT HARD DISK TEST ROUTINES ) HEX : FEW-FORMAT LIMIT 2 + SDATA 16 0 DO I FMTCYL LOOP ; : DATACHK ( DATA BYTE -- ) 400 0 DO LIMIT I + C@ OVER - IF CR CR ." BAD DATA" CR CR ABORT ENDIF LOOP ; : E5FL LIMIT 400 E5 FILL ; : 1AFL LIMIT 400 1A FILL ; : FEW-WIPE 500 C DO LIMIT I 0 HR/W CHR . EMIT ?TERMINAL IF LEAVE ENDIF LOOP ; : T 0 SET_DRIVE HOME LIMIT 1000 1 HR/W FEW-FORMAT E5FL FEW-WIPE LIMIT D 1 HR/W LIMIT DUMP E5 DATACHK 1AFL FEW-WIPE LIMIT D 1 HR/W LIMIT DUMP 1A DATACHK FMTTRK ( TRASH TRACK) BELL ; ( DISK2 READ WRITE TEST SOFTWARE RLK 81SEP16 ) : DRWTEST ( DSECTOR ___ ) DUP LIMIT BYTE/SEC + SWAP 0 HR/W ( WRITE FROM LIMIT+400H ) DUP LIMIT SWAP 1 HR/W ( READ INTO LIMIT ) LIMIT DUP BYTE/SEC + BYTE/SEC -TEXT ( COMPARE SECTOR BYTES ) IF ." ERROR IN SECTOR NUMBER " . BELL ELSE DROP ENDIF ; : HEX-NIB DUP A < IF CHR 0 ELSE A - CHR A ENDIF + ; : DTEST ( TEST ENTIRE DISK ) LIMIT 800 RANGE DO I F AND HEX-NIB I C! LOOP ( WRITE DATA ) #TRKS 0 DO SEC/CYL 0 DO CR ." SECTOR " I J U* 2DUP D. DRWTEST LOOP ?TERMINAL IF LEAVE ENDIF LOOP ; DECIMAL  \ BILL'S EXTRAS SCREEN DECIMAL 9 LOAD 20 LOAD 30 LOAD : LD LIMIT DUMP ; : CLD CHKFMT LIMIT DUMP ; : CTLSEE HEX CTL P@ . DECIMAL ; : ERASER LIMIT 400 ERASE ; : BADFIND 21560 0 DO LIMIT I 1 HR/W CHR . EMIT LOOP ; ( DISK2 READ WRITE TEST SOFTWARE RLK 81SEP16 ) : RWTEST ( SECTOR ___ ) DUP LIMIT 400 + SWAP 0 HR/W ( WRITE FROM LIMIT+400H ) DUP LIMIT SWAP 1 HR/W ( READ INTO LIMIT ) [ LIMIT 3FF + ] LITERAL C@ FF = IF ." ERROR IN SECTOR NUMBER " . BELL ELSE DROP ENDIF ; : HEX-NIB DUP A < IF CHR 0 ELSE A - CHR A ENDIF + ; : DTEST ( TEST ENTIRE DISK ) LIMIT 800 RANGE DO I F AND HEX-NIB I C! LOOP ( WRITE DATA ) SEC/TRK #HEADS #TRKS * * SWAP DO CR ." SECTOR " I DUP . RWTEST ?TERMINAL IF LEAVE ENDIF LOOP ;    ( DISK2 READ WRITE TEST SOFTWARE RLK 81SEP16 ) : RWTEST ( SECTOR ___ ) DUP LIMIT 400 + SWAP 0 HR/W ( WRITE FROM LIMIT+400H ) DUP LIMIT SWAP 1 HR/W ( READ INTO LIMIT ) LIMIT DUP 400 + 400 -TEXT ( COMPARE 1024 BYTES ) IF ." ERROR IN SECTOR NUMBER " . ELSE DROP ENDIF ; : DTEST ( TEST ENTIRE DISK ) LIMIT 800 55 FILL ( DATA TO BE WRITEN ) SEC/TRK #HEADS #TRKS * * 0 DO CR ." SECTOR " I DUP . RWTEST LOOP ; DECIMAL      ( SELECTOR CHANNEL DEBUG ) HEX F0 CONSTANT SEL 0 CONSTANT DISK : SET ( ADDR CTL --- ) SEL P@ DROP ( INIT FOR FOUR BYTES ) 0 SEL P! SWAP 100 /MOD SEL P! SEL P! SEL P! ; ( W/R IO/M U/D WAIT P3 P2 P1 P0 = CONTROL BYTE ) : RDLIM 0 LIMIT A0 SET ; DECIMAL                                                                                 ; ; ;SUBMIT FILE FOR CPU 68K TEST ; ; ; mform m x dir a: dir m: pip m:=a:pip.68k[vrwo] m:pip m:=a:stat.68k[vrwo] m:stat a:*.* m:stat m:*.* ; ;end ;  &$uSR Z[ tCR=tZ0:r'RPmXZð9S :t[0C:t[0C:t[0[QSV  ?0u &K?0uK^[Y<tSRѱZ[000BOARD # $ DOES EXIST. $ DOES NOT EXIST!!! I WILL SKIP IT. $ BEGINING TEST ON BOARD #$ BIT STUCK HIGH, TESTING 00 $ BIT STUCK LOW, TESTING 0FFH $ CHECKERBOARD TEST (055H) $ ADDRESS LINE TEST $ RANDOM WRITE/READ TEST $ PASS NUMBER $ DONE TESTING ALL BOARDS. GIVE ALL BAD BOARDS A RED DOT!!! $ ERROR - BYTE SHOULD BE $ WAS $ AT ADDRESS $ CHECK MEMORY CHIP AT ROW $ COLUMN $ ERROR: UNABLE TO GET 4K MEMORY SEGMENT FROM CPM!! ADD MORE MEMORY TO SYSTEM. $COPYRIGHT (C) COMPUPRO 1983. $EE  ƊƈF@|PPYQ0 Y_[XTPSWQY_[XUPSWQt Y_[XUPSPSWQY_[XCPд̰+ĴXPSWQtY_[X[Xw$Шt PS&QY[XPSQu Y[X&[^Z]RVRRO&%PKȃXU$<Ow]Z[+_Y2كPSP  ؁XRSP3XP2NX2TXXY0XQ2Ĺ/A9})sPQbzX[YQSP%}kYQXYXYOUNJNJRătt 3OZRut O3:tZ BOARD # $ DOES EXIST. $ DOES NOT EXIST!!! I WILL SKIP IT. $ BEGINING TEST ON BOARD #$ BIT STUCK HIGH, TESTING 00 $ BIT STUCK LOW, TESTING 0FFH $ CHECKERBOARD TEST (055H) $ ADDRESS LINE TEST $ RANDOM WRITE/READ TEST $ PASS NUMBER $ DONE TESTING ALL BOARDS. GIVE ALL BAD BOARDS A RED DOT!!! $ ERROR - BYTE SHOULD BE $ WAS $ AT ADDRESS $ CHECK MEMORY CHIP AT ROW $ COLUMN $ ERROR: UNABLE TO GET 4K MEMORY SEGMENT FROM CPM!! ADD MORE MEMORY TO SYSTEM. $COPYRIGHT (C) COMPUPRO 1983. $\ DISK2 - Load Screen MAR 16 84 BLK @ LIST 1 27 +THRU DEFINE JVD2DIAG.BLK FROM JVD2DIAG.BLK 1 LOAD 256 HERE CP/M SAVE DIAG.COM FORTH CR CR .( DIAG.COM file saved.) EXIT This screen loads test drivers for the DISK2 and SELECTOR channels.   !"#()*+012389:; $%&',-./4567 !"#$%&'01234567 ()*+,-./89:;<=>? ͭexͭ :  : 2x Wy'OxGzð''Ox0_y a{  0_*.*.O*.!O*.$*.': 7.* CompuPro COPY Utility Version 2.4.$ Do you want to copy: SYSTEM tracks only? (type S) DATA tracks only? (type D) ALL of the disk? (type A) Exit back to System (type X) $ Source drive? (A, B, C, OR D) $ Destination drive? (A, B, C, OR D) $ Put source disk on A Put destination disk on B Then type $ $ Track $ Disk have incompatible formats.$ COPY complete.$ Do you want to COPY again? (Y/N) $ Read error on drive $ Write error on drive $ track $ sector $ Compare error Track $ Sector $ Byte $ Permanent error.$ Remount system disk on A: and type RETURN.$    !$%(),-01 "#&'*+./23our "A"). a. "Prot" only, no directory. 4 Switc 1- wa ohme ou alon wit switc 1-7 t mak sur it was working. Switch 1-8 selects sector size of 512 and switch 1-7 selects sector size of 1024. Dual is using sector size of 512. RESULTS 1 board passe al th abov test wit n proble th firs time Tw board failed bot o whic ha bee i th "won' forma har dis" category On o thes board passe productio test wit bot Compupr an Dua switc settings formattin th firs 2 cylinder o th har disk bu i faile th MP/ tes b failin t boo MP/M Th othe boar woul no communicat wit th har disk givin ou "har dis no ready o th director an hangin u o th "prot test. On o th faile boards th on whic woul no boo MP/M turne ou t hav pi o pro ben unde makin intermitte1C>> W>`W>W͘͠_R1Ff͘͠0Q1X2_> W>`W>W ͘͠0ʆ1ʌ2ʒTUV  HIT R TO RESET TIMER OR F TO FIRE TIMER $ RESET 0, 1, OR 2 OR HIT CONTROL C TO RETURN TO CP/M $ FIRE 0, 1, OR 2 OR HIT CONTROL C TO RETURN TO CP/M $\ OK - Load Screen 20dec83mcs 1 11 +thru exit \ DISK2 - Port Equates & Constants 14nov83mcsHEX C8 CONSTANT CTL \ DISK2 Control/Status Port CTL 1+ CONSTANT DATA \ DISK2 Data Port 0 CONSTANT DRV \ DRV reg# 8 CONSTANT CYL \ CYL reg# 10 CONSTANT HD \ HD reg# 18 CONSTANT SEC \ SEC reg# F0 CONSTANT SEL \ SELECTOR CHANN 25 CONSTANT SEL-BYTE \ 1's comp of priority + 20h 10 CONSTANT NTRY \ Number of tries DECIMAL \ DISK2 - SET WAIT-DONE COMMAND 14nov83mcsHEX : SET ( c reg# -- ) CTL P! DATA P! ; : WAIT-DONE ( -- ) BEGIN KEY? ABORT" Command Aborted" CTL P@ 80 AND 0= UNTIL ; : COMMAND ( c --- ) 8 * C0 + DRIVE @ + CTL P! WAIT-DONE ; DECIMAL EXIT \ DISK2 - CHAN-BUF LOAD-CHAN SET-ADDR 14nov83mcs CREATE CHAN-BUF 4 ALLOT CHAN-BUF 4 ERASE : LOAD-CHAN ( -- ) SEL P@ DROP CHAN-BUF 4 BOUNDS DO I C@ SEL P! LOOP ; : SET-ADDR ( adr -- ) FLIP CHAN-BUF 1+ ! ; EXIT \ DISK2 - Drive Characteristics 30nov83mcs 11 CONSTANT SEC/TRK \ Sectors per track 8 CONSTANT #HEADS \ Number of heads 245 CONSTANT #TRKS \ Number of cylinders VARIABLE MAXSEC \ Sectors per disk SEC/TRK #HEADS * #TRKS * MAXSEC ! EXIT \ DISK2 - HOME (SEEK) SEEK 14nov83mcsHEX : HOME ( -- ) 80 ( step out ) 4 OR DRIVE @ OR CTL P! BEGIN CTL P@ 1 AND WHILE DATA P@ ( step ) DROP 2 MSEC REPEAT 0 TRACK ! ; CODE (SEEK) ( N -- ) D POP BEGIN DATA IN E DCR 0= UNTIL NEXT C; : SEEK ( TRK -- ) TRACK @ OVER TRACK ! - ?DUP IF ( NEW ) DUP 0< IF 80 ELSE A0 THEN DRIVE @ OR CTL P! ABS (SEEK) BEGIN CTL P@ 4 AND 0= UNTIL 28 MSEC THEN ; DECIMAL \ DISK2 - T&SCALC 11nov83mcs SEC/TRK #HEADS * CONSTANT SEC/CYL : T&SCALC ( D --- ) SEC/CYL UM/MOD SET-TRACK SEC/TRK /MOD SET-HEAD SET-SECTOR ; EXIT \ DISK2 - Variables 11nov83mcs VARIABLE DRIVE \ Drive Number VARIABLE SECTOR \ Sector Number VARIABLE HEAD \ Head Number VARIABLE TRACK \ Cylinder Number VARIABLE CONTROL \ Control Byte CREATE BUF B/BUF ALLOT EXIT \ DISK2 - SET-DRIVE SET-TRACK SET-HEAD SET-SECTOR 11nov83mcsHEX : SET-DRIVE ( n --- ) DUP DRIVE ! PWR2 10 * HEAD @ OR DRV SET ; : SET-TRACK ( n -- ) DUP CYL SET SEEK ; : SET-HEAD ( n -- ) DUP HD SET HEAD ! DRIVE @ PWR2 10 * HEAD @ OR DRV SET ; : SET-SECTOR ( n -- ) DUP SEC SET SECTOR ! ; DECIMAL EXIT \ DISK2 - STAT. TRY 14nov83mcsHEX : STAT. ( n -- ) BASE @ SWAP HEX CR ." Disk Error = " . SPACE TRACK ? HEAD ? SECTOR ? TRACK @ #HEADS * HEAD @ + SEC/TRK * SECTOR @ + SPACE DECIMAL . CR BASE ! ; : TRY 0 DO LOAD-CHAN CONTROL @ CTL P! WAIT-DONE CTL P@ DUP 7E AND 2 - DUP DISK-ERROR ! DRIVE @ 0 SET-DRIVE SET-DRIVE IF STAT. ELSE DROP LEAVE THEN LOOP ; DECIMAL EXIT \ DISK2 FORMAT - TDATA SDATA BUILD 11nov83mcsHEX : TDATA ( C ADDR --- ) SEC/TRK 0 DO 2DUP C! 3 + LOOP 2DROP ; : SDATA ( ADDR --- ) SEC/TRK 1 - 0 DO ( FOR N - 1 SECTORS ) I 1+ OVER I 3 * + C! LOOP ( WRITE 1 - N ) SEC/TRK 1 - 3 * + 0 SWAP C! ; ( AND 0 ) : BUILD TRACK @ BUF TDATA HEAD @ BUF 1+ TDATA BUF 2 + SDATA ; DECIMAL \ DISK2 FORMAT - (CHKFMT) CHKFMT 11nov83mcsHEX CODE (CHKFMT) ( CNT CMD --- ) D POP H POP E A MOV C7 ANI CTL OUT ( SEND TIMEOUT COMMAND ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) BEGIN E A MOV CTL OUT ( SEND READ HEADER ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) L DCR 0= UNTIL NEXT C; ( LOOP CNT TIMES ) : CHKFMT RD LOAD-CHAN SEC/TRK E0 DRIVE @ OR (CHKFMT) ; DECIMAL \ DISK2 - DHR/W HR/W 11nov823mcHEX : DHR/W ( ADDR BLOCK R/W --- ) >R T&SCALC SET-ADDR R> SEL-BYTE OVER IF 80 OR THEN CHAN-BUF 3 + C! ( SEL CTL BYTE ) IF C8 ELSE D0 THEN DRIVE @ OR CONTROL ! NTRY TRY DISK-ERROR @ IF ( ERROR ) TRACK @ HOME SEEK ( RECALIBRATE & SEEK ) NTRY TRY THEN DISK-ERROR @ ABORT" Disk Error" ; : HR/W ( ADDR BLOCK R/W --- ) 0 SWAP DHR/W ; DECIMAL \ DISK2 FORMAT - (FORMAT) FMTTRK 30nov83mcsHEX CODE (FORMAT) ( CNT CMD --- ) D POP H POP E A MOV 10 ADI CTL OUT ( SEND TIMEOUT COMMAND ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) BEGIN E A MOV CTL OUT ( SEND WRITE HEADER ) BEGIN CTL IN 80 ANI 0= UNTIL ( WAIT DONE ) L DCR 0= UNTIL NEXT C; ( LOOP CNT TIMES ) : FMTTRK ( -- ) BUF SET-ADDR SEL-BYTE CHAN-BUF 3 + C! LOAD-CHAN HEAD @ BUF 1+ TDATA SEC/TRK D8 DRIVE @ OR (FORMAT) ; DECIMAL \ DISK2 TEST - SECTOR UNIQUENESS 11nov83mcsHEX : WDATA 15 0 DO BUF 200 I FILL ( FILL WITH SECTOR NUMBER ) BUF 37 I + 0 HR/W ( WRITE THE SECTOR ) LOOP ; : RDATA 15 0 DO BUF 37 I + 1 HR/W BUF DUMP LOOP ; : -TEXT ( A1 A2 N --- FLAG ) DUP 0 DO DROP OVER I + C@ OVER I + C@ - DUP IF LEAVE THEN LOOP SWAP DROP SWAP DROP ; DECIMAL \ DISK2 - RD WR RH RD X XX W 30nov83mcsHEX : RD SEL-BYTE 80 OR CHAN-BUF 3 + C! ; : WR SEL-BYTE CHAN-BUF 3 + C! ; : Y RD BUF SET-ADDR LOAD-CHAN 4 COMMAND ; \ HEADER : Z RD BUF SET-ADDR LOAD-CHAN 1 COMMAND ; \ SECTOR : X CR ." STATUS = " BASE @ HEX CTL P@ . CR BUF DLN 63F0 DLN BASE ! ; : XX X BUF 400 BOUNDS DO I DUMP 100 +LOOP ; : W WR BUF SET-ADDR LOAD-CHAN 2 COMMAND ; \ SECTOR DECIMAL \ DISK2 FORMAT - FMTCYL FORMAT 11nov83mcsHEX : FMTCYL ( TRK --- ) ASCII . EMIT SEEK TRACK @ BUF TDATA #HEADS 0 DO I SET-HEAD FMTTRK LOOP ; : FORMAT ( DRV --- ) SET-DRIVE HOME BUF 2 + SDATA #TRKS 0 DO I FMTCYL LOOP ; DECIMAL \ DISK2 TEST - DRWTEST HEX-NIB DTEST 30nov83mcsHEX : DRWTEST ( DSECTOR --- ) DUP BUF B/BUF + SWAP 0 HR/W ( WRITE FROM BUF+400H ) DUP BUF SWAP 1 HR/W ( READ INTO BUF ) BUF DUP B/BUF + B/BUF -TEXT ( COMPARE SECTOR BYTES ) IF ." ERROR IN SECTOR NUMBER " . BEEP ELSE DROP THEN ; : HEX-NIB DUP 0A < IF ASCII 0 ELSE 0A - ASCII A THEN + ; : DTEST ( TEST ENTIRE DISK ) BUF 800 BOUNDS DO I F AND HEX-NIB I C! LOOP ( WRITE DATA ) #TRKS 0 DO SEC/CYL 0 DO CR ." SECTOR " I J *D 2DUP D. DRWTEST LOOP KEY? IF LEAVE THEN LOOP ; DECIMAL \ DISK2 TEST - LD CLD BLD ERASER FDATA PF PS 11nov83mcs HEX : LD BUF 64 DUMP ; : CLD CHKFMT BUF 64 DUMP ; : BLD BUILD BUF 64 DUMP ; : ERASER BUF 400 ERASE BUF 64 DUMP ; : FDATA BUF 400 FF FILL BUF 64 DUMP ; : PF CTL P@ . ; : PS CTL P! ; DECIMAL \ DISK2 TEST - MORE DISK2 PRODUCTION TEST BCH 14nov83mcsHEX : WRMANY END0 START0 WRBLK END1 START1 WRBLK END2 START2 WRBLK END3 START3 WRBLK ; : CHKMANY END0 START0 CHKBLK END1 START1 CHKBLK END2 START2 CHKBLK END3 START3 CHKBLK ; : PROT 0 SET-DRIVE HOME BUF 1000 1 HR/W CR ." FORMATTING FIRST 22 CYLINDERS" FEW-FORMAT E5 FILBUF E5 TBYTE ! WRMANY CHKMANY 1A FILBUF 1A TBYTE ! WRMANY CHKMANY 0 SET-TRACK 4 SET-HEAD FMTTRK BEEP CR CR ." THIS BOARD PASSES THE TEST " ; DECIMAL \ DISK2 TEST - RWTEST HEX-NIB DTEST 30nov83mcsHEX : RWTEST ( SECTOR --- ) DUP BUF 400 + SWAP 0 HR/W ( WRITE FROM BUF+400H ) DUP BUF SWAP 1 HR/W ( READ INTO BUF ) [ BUF 3FF + ] LITERAL C@ FF = IF ." ERROR IN SECTOR NUMBER " . BEEP ELSE DROP THEN ; : HEX-NIB DUP A < IF ASCII 0 ELSE A - ASCII A THEN + ; DECIMAL EXIT : DTEST ( TEST ENTIRE DISK ) BUF 800 BOUNDS DO I F AND HEX-NIB I C! LOOP ( WRITE DATA ) SEC/TRK #HEADS #TRKS * * SWAP DO CR ." SECTOR " I DUP . RWTEST KEY? IF LEAVE THEN LOOP ; DECIMAL \ DISK2 TEST - BI DEC DEX SECR SECW REPORT BOOFL LOGSE11nov83mcsHEX : BI 2 BASE ! ; : DEC DECIMAL ; : DEX DEC ; : SECR BUF SWAP 1 HR/W LD ; : SECW BUF SWAP 0 HR/W LD ; : REPORT CR ." TRACK: " TRACK ? ." HEAD: " HEAD ? ." SECTOR: " SECTOR ? CR CR ; : BOOTFL 33 0 DO BUF I 0 HR/W LOOP ; : LOGSEC ( TRACK HEAD SECTOR -- BLOCK ) ROT ROT SEC/TRK * SWAP SEC/CYL * + + ; DECIMAL \ DISK2 TEST - READ WRITE TEST SOFTWARE 11nov83mcsEXIT : RWTEST ( SECTOR --- ) DUP BUF 400 + SWAP 0 HR/W ( WRITE FROM BUF+400H ) DUP BUF SWAP 1 HR/W ( READ INTO BUF ) BUF DUP 400 + 400 -TEXT ( COMPARE 1024 BYTES ) IF ." ERROR IN SECTOR NUMBER " . ELSE DROPTHEN ; : DTEST ( TEST ENTIRE DISK ) BUF 800 55 FILL ( DATA TO BE WRITEN ) SEC/TRK #HEADS #TRKS * * 0 DO CR ." SECTOR " I DUP . RWTEST LOOP ; DECIMAL \ DISK2 TEST - FEW-FORMAT DATACHK FILBUF FEW-WIPE T 12nov83mcsHEX : FEW-FORMAT BUF 2 + SDATA 16 0 DO I FMTCYL LOOP ; : DATACHK \ ( DATA BYTE -- ) 400 0 DO BUF I + C@ OVER - ABORT" BAD DATA " LOOP ; : FILBUF BUF 400 ROT FILL ; : FEW-WIPE 500 21 DO BUF I 0 HR/W ." ." KEY? IF LEAVE THEN LOOP ; : T 0 SET-DRIVE HOME BUF 1000 1 HR/W FEW-FORMAT E5 FILBUF FEW-WIPE BUF 400 ERASE BUF 21 1 HR/W BUF 400 DUMP E5 DATACHK 1A FILBUF FEW-WIPE BUF 400 ERASE BUF 21 1 HR/W BUF 400 DUMP 1A DATACHK FMTTRK ( TRASH TRACK) BEEP ; DECIMAL DECIMAL \ DISK2 TEST - PRODUCTION TEST FOR DISK 2 11nov83mcsDECIMAL ( VAR AND CONSTANT DICTIONARY FOLLOWS) 33 CONSTANT START0 129 CONSTANT END0 7920 CONSTANT START1 8016 CONSTANT END1 17600 CONSTANT START2 17696 CONSTANT END2 21120 CONSTANT START3 21216 CONSTANT END3 VARIABLE TBYTE HEX : BS ( COUNT -- ) 0 DO 08 EMIT LOOP ; : WRBLK ( END START -- ) CR ." WRITING SECTOR " DO I 5 U.R BUF I 0 HR/W 5 BS 0C +LOOP ; : CHKBLK ( END START -- ) BUF 400 ERASE CR ." CHECKING SECTOR " DO I 5 U.R BUF I 1 HR/W TBYTE C@ DATACHK 5 BS 0C +LOOP ; DECIMAL \ DISK2 TEST - FNUM FILLBYTE WT 12nov83mcsHEX : FNUM DUP 10 * SWAP NEGATE F AND OR ; : FILLBYTE ( BYTE -- ) BUF 400 ROT FILL ; : WT ( TSTBYTE -- ) DUP FILLBYTE 10 1 DO BUF I FNUM SEC/CYL * SEC/CYL 0 DO 2DUP I + DUP . 0 HR/W LOOP LOOP ; DECIMAL  dir a: mform pip m:=alpha.68k[v pip m:=fprime.68k[v m:alpha m:fprime TIMER COM~DISK2 BLKDISK2 BLKDISK2 BLKREPTEST SUBTEST $$$\ DISK2 TEST - WARETEST 12nov83mcsHEX : WARETEST BUF 2 + SDATA 10 1 DO I FNUM FMTCYL LOOP E5 WT 1A WT ; DECIMAL CR CR .( DISK2 words loaded.) EXIT dir a: mform pip m:=alpha.68k[v pip m:=fprime.68k[v m:alpha m:fprime REPTEST TIMER COM~DISK2 BLKDISK2 BLKDISK2 BLKREPTEST $$$ (INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE)(INP:/OUT:SPACE) COPYRIGHT (C) 1979, DIGITAL RESEARCH, PIP VERS 1.5$$$ SUB =.:,<> _[]INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING $NOT A CHARACTER SOURCE$ABORTED$BAD PARAMETER$INVALID USER NUMBER$RECORD TOO LONG$INVALID DIGIT$END OF FILE, CTL-Z?$CHECKSUM ERROR$CORRECT ERROR, TYPE RETURN OR CTL-Z$INVALID FORMAT$HEX$$$$NO DIRECTORY SPACE$NO FILE$COM$START NOT FOUND$QUIT NOT FOUND$CANNOT CLOSE DESTINATION FILE$DESTINATION IS R/O, DELETE (Y/N)?$**NOT DELETED**$$$$$$$NOT FOUND$COPYING -$REQUIRES CP/M 2.0 OR NEWER FOR OPERATION.$UNRECOGNIZED DESTINATION$CANNOT WRITE$INVALID PIP FORMAT$CANNOT READ$INVALID SEPARATOR$1 :2L> ̈́M9  :2!q: " *M n :c4 *M n :2!c:Q !c:2: !:cw>!n !5 Y : { !6!q:!lwҙ  â :0O !q:O| :O| !6:]2l:o'2o:n'2n:m'2m*mMͣ *nMͣ *oMͣ :]:   *}2D" * * *&"!q:UY: Y:ҩ: ʩ:_2ʘ:€!6<:<2!ژ!6 >!]Ҥ; !6:Q::H: !6*M : !6!q:a/>z!/H:_2:!q:A/>Z!/H8: 2::=O>m:W!Q} Hmd>9>!6:2*M!E ^#V͎ڗO **~2*#"m2m͖ 2m!6m!6m!6 m2mͯ m!62m!62m!62m!62m'2:2:TҒ:2!6*ME:2::Ҳ:<22ý: 2:} >ͯ :i:2:d*M:[ 2*">!b!ͯ >!`0ͯ !q:E:24J!46*}a!44EJ *KM^'́:‚ͯ !36'n::0:f9OY#9.3'ͳ.:020' 'ͳ'7 6'!j>A+!s!"@͓1!"<**"͓n "Dn"":!Q2҂:X!Wғä:ڤ*MEÓ:ұ@@:O2Mc;!6#6>!)*&P ~"::H:H:H:H"!6!4:_jYO jM*"S*" 3@bl*M1͓!""7 *M^͆ \͔!":͎H*#"ͧÝ/ :>͛9ͯ .*#":_!' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈*221@:2!o6+6+6!6#6!6#6:G*o .!N6:^*M^!K6!6!6+6' :$::=2K  :ʤ\:ҷ\x'Ͳ:!\͢  :͈'! Ͳ:$: $͈Ͳ!N6' :!Cwͯ !6:^͢c!6{:/>!/H{ͯ :<2Š ::=HҮͯ !6:Ҿ:2 !6::/H͈;!6:> !/>HHͯ :^!w:<2:0}:@E}:!S!W6: z!]6:cm!c6:_z!_6l ::,: HHҰͯ : 2ó:E:1:2v!q!*8!*6: >ͦ>ͦ!q:_  !p+q.*   !q*&!p+q*2!p+q*2!p+q*22!p+q*!p+q*!p+q*!p+q*2!p+q**M:>!(:=2%> >>!F!5+N! ~2!4<2T>>!b}*bMͭz:b2!b6:<2é>!`ҥ*`MͭҞ!`6!6> :é:(!q:!wO! ~2*& :w>!:!4!6>:N<2N!> *N& N2 !p+q!6!6+6 !6: S: M!6g8:N2M*M8p!6!6!6>!ڕ*&P 6!4z!6!6#6#6!6*M8:ھ:*͇g2ê::¿::,͡A<2O>*M8):[ͱ!N5!6ñ:5!6#6>!ڰ!6:<2O>/:!O!T *M͡H~K:¡!6[–ͱ!N5:2:2!4=:[¼ͱ4:!6:.2O8: :* ͇g:[ ͱ!N5!6:%:<2*6 * 6å!q!6> !d*&I :]>!4A>:<2O* :w:?†!6!q!6?!:ҠgÐ!q*&*~!6:22: :]Hں:A2O>: 2ͯ DM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨!p+q* !q*& *M *M !p+q*!!p+q*"!p+q*$!6  !kp+q*j> >ڪ Þ !qp+q/ *pDM9: :M2r:N!r !:r *r& N!r4 !6:͔: :ͳ.!ws+p+q+p+q:w=2wN *s*u w*s#"s*u#"u' !"*M^7 !x6:!xھ **DM͆ 2yʭ :yʗ ͯ *"*6:2x÷ *"!x4d !"/ !j}=2| !"*KM^'_ !z6:|!z1 * "}*}DM͆ ' ͯ *"!z4 :e !"͆ !z6:|!z '? 2*H#"H!{6:{ր!Ң *{& :{4 2!{4m *":ڹ ͯ !z4I '2!"!q: !4>!S :S! :2*M! ^#V͎ * :w*#" = = = = = ͯ  *M !6q  !6q  !6q  *& !6à  !6 à  !60à  *& !6  !6  !6  *& . 1 4 7 : = F P [ f q  ÷:S:QHI:N<22: H@"2Í202O> c!6Í202O> ڍ*&O*& !sc*&P :w:·>!ұͯ :22:_!6=!6>'!E!4!p+q*0 !r+s+p+q*~$7*>*>H&>*#"*#"> 2:R͎:!6!6=2:ʙ!6:“H9Ž>!6-e!6ͻ2=2ʺ-é:>>"ͻ2:!!5ͻ2ͬ!\-:>>!p+q:,!6*DM9:<!6:z 2W!6D*&L :w:<2Ov*:>=20O> ڒ:0:AO>Ҥ::A }}Hͬ!wͻO`idͻV[2O>2:!X!6:!:=O!L NE!4 E E:/.*&L 6$L9k9.Xͯ *KM^020 :020:121'ͳ':²ͯ !G6!"!"7 *M^n/ :a/:H!6:ͯ !&6JMP EXIT SRVRQ4: CLI LD DL,#34H LD AL,#01101_1111B JMP EXIT SRVRQ5: CLI LD DL,#35H LD AL,#01011_1111B JMP EXIT SRVRQ6: CLI LD DL,#36H LD AL,#00111_1111B JMP EXIT SRVRQ7: CLI LD DL,#37H LD AL,#01111_1110B EXIT: OUTB VIPORT ;SET VI LINES CALL HAND ;CHAR TO OUT IS IN DL LD AL,#60H EXIT1: LD DX,#MPRTA ;PORT # IN DX OUTB DX ;OUT TO 16 BIT ADDRESS INC AL CMP AL,#68H JNZ EXIT1 IRET T TO VIPORT ;TURN OFF INTERRUPTS WATE: CLI LD DL,#'!' ;ERROR MARK INTO DL CALL HAND ;CALL OUTPUT ROUTINE STI JMP WATE ;WAIT FOR INTERUPT HAND: INB STATUS ;READ UART STATUS AND AL,#01H JZ HAND MOV AL,DL ;GET CHAR OUTB DATA RET ;RETURN TO CALLER ORG 300H SRVRQ0: CLI LD DL,#30H LD AL,#01111_1101B JMP EXIT SRVRQ1: CLI LD DL,#31H LD AL,#01111_1011B JMP EXIT SRVRQ2: CLI LD DL,#32H LD AL,#01111_0111B JMP EXIT SRVRQ3: CLI LD DL,#33H LD AL,#01110_1111B O RETURN ABOVE ; RAMSEG EQU 0F000H ;START OF RAM WE WILL USE ;RAM 16 AT TOP OF 1 MEG ROMSEG EQU 0FF00H ; WITH 4K OF ROM AT TOP CSEG ;INITIALIZE THINGS START: IF NOT CPM ;IF NOT CPM MUST SET OUR OWN SEGMENTS ORG 0FF000H ;PUT PROGRAM AT TOP OF MEMORY MOV BX,RAMSEG ;START OF RAM MOV DS,BX MOV SS,BX ;SS AND DS CAN BE SAME MOV SP,0FFH ;LOTS OF STACK SPACE MOV BX,ESSEG ; MOV ES,BX ;SET ES TO MESSAGE AREA ( IN ROM ) CALL I4INIT ;INITIALIZE I/O4 MOV BX,OFFSET DIGIT1;INITIALIZE COUNTER MOV AL,'0' MOV BYTE PTR [BX],AL INC BX MOV BYTE PTR [BX],AL INC BX MOV BYTE PTR [BX],AL ENDIF MOV BX,OFFSET CPYMSG CALL PRINT ;PRINT COPYRIGHT MESSAGE ;FIRST DO BOARD SEARCH MOV CL,7 MOV BX,0FFFFH ;CHECK TOP OF BOARDS MOV SI,OFFSET F_BORD SIZLOP: MOV AL,CL  CONO ;AL HAS NUMBER OF BOARD IF CPM ;PRINT A CR ONLY IF TO TERMINAL CALL CRLF2 ENDIF MOV BX,OFFSET OOMSG ;TESTING MESSAGE CALL PRINT MOV AL,BYTE PTR CURBORD ;GET CURRENT BOARD AGAIN DEC AL SHL AL,1 ! SHL AL,1 ! SHL AL,1 ;MAKE ADDRESS MOV BX,0 MOV AH,0 ;FILL WITH ZEROS MOV CX,0 MOV DI,8 ;FILL 80000 TIMES PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL FILL POP CX ! POP DI ! POP BX ! POP AX PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL VERIFY JZ NOERR1 ;IF NOT ERROR GO ON CALL ERROR ;IF ERROR GO PRINT MESSAGE AND CONTINUE JMP NEXT_BD ;WE GOT AN ERROR SO SKIP THIS BOARD NOERR1: POP CX ! POP DI ! POP BX ! POP AX ;NOW FILL ENTIRE BOARD WITH 0FFH MOV BX, CALL SET MOV AL,0 ;WRITE OUT A 0 OUT HDATA,AL MOV AL,CL ; CALL SET IN AL,HDATA MOV [SI],AL ;SET VALUE RETURNED INTO ARRAY INC SI ADD CL,8 ;NEXT BOARD CMP CL,MAXBORD*8 ;UP TO 8 BOARDS,8 INCREMENTS PER BOARD JL SIZLOP ;IF MORE TO DO MOV AL,1 ;PRINT "FOUND " MESSAGES MOV SI,OFFSET F_BORD PEXIST: PUSH AX ;SAVE CURRENT BOARD NUMBER MOV BX,OFFSET EXITS ;"BOARD # " MESSAGE CALL PRINT POP CX ;GET CURRENT BOARD PUSH CX ADD CL,'0' ;ADD IN ASCII OFFSET CALL CONO ;AND PRINT IT MOV AL,[SI] ;GET FLAG FOR THIS BOARD MOV BX,OFFSET YESEX ;YES IT EXISTS MESSAGE CMP AL,0FFH ;WAS IT THERE JNZ OFFSET FFMSG CALL PRINT MOV AL,BYTE PTR CURBORD DEC AL SHL AL,1 ! SHL AL,1 ! SHL AL,1 MOV BX,0 MOV AH,0FFH MOV CX,0 MOV DI,8 ;FILL FF 80000 TIMES PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL FILL POP CX ! POP DI ! POP BX ! POP AX PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL VERIFY JZ NOERR2 ;IF NOT ERROR GO ON CALL ERROR ;IF ERROR GO PRINT MESSAGE AND CONTINUE JMP NEXT_BD NOERR2: POP CX ! POP DI ! POP BX ! POP AX ;NOW DO A 55 TEST MOV BX,OFFSET O55MSG CALL PRINT MOV AL,BYTE PTR CURBORD DEC AL SHL AL,1 ! SHL AL,1 ! SHL AL,1 MOV BX,0 MOV AH,055H MOV CX,0 MOV DI,8 ;FILL 512K TIMES PUSH AX ! PUSH BX ! PUSH D; ; PROGRAM TO TEST M-DRIVE/H BOARDS. Will test up to 8 boards, and can ; skip nonexistent boards. ; 2/21/83 LLO ; ; FOR ROM VERSION - MEMORY MAP LOOKS AS FOLLOWS (USE A RAM 16) ; ; 0F_0000H +--------------------------------------- ; | STACK SPACE ; 0F_0100H +--------------------------------------- ; | ; | DATA SPACE ; | ; | ; 0F_F000H +-------------------------------------- ; | ; | CODE SPACE (IN ROM) ; | ; 0F_FFF0H +-------------------------------------- ; | 8086 RESET VECTOR ; 0F_FFFFH +-------------------------------------- ; HBASE equ 0C6H ;BASE OF HDRIVE BOARD HDATA EQU HBASE HADDR EQU HBASE + 1 MAXBORD EQU 8 ; FALSE EQU 0 TRUE EQU NOT FALSE CPM EQU TRUE ;FALSE FOR ROMMABLE VERSION CR EQU 0AH LF EQU 0DH BASE16 EQU 16 BASE10 EQU 10 BASE2 EQU 2 ALLOC EQU 55 ;CPM ALLOCATE MEMORY FUNCTION FREEMEM EQU 57 ;CPM FUNCTION TEXISTS MOV BX,OFFSET NOEX ;NO IT DOES NOT EXIST EXISTS: CALL PRINT ;PRINT EXISTS OR NOT MESSAGE POP AX INC SI ;UP TO NEXT FLAG INC AL ;UP TO NEXT BOARD CMP AL,MAXBORD ; JLE PEXIST ; ;*********************************************************** ; NOW START TESTING TSTSTRT:MOV SI,OFFSET F_BORD-1 MOV BYTE PTR CURBORD,1 ;SET CURRENT BOARD TO 1 TESTLP: XOR BH,BH ; MOV BYTE PTR ERRCNT,BH ;ZERO ERROR COUNTER FOR THIS BOARD MOV BL,BYTE PTR CURBORD ;GET FLAG CMP BYTE PTR (OFFSET F_BORD-1)[BX],0FFH ; JNE TST1 JMP NEXT_BD ;DO NEXT BOARD TST1: PUSH BX ;SAVE CURRENT SPOT MOV BX,OFFSET TSTMSG ;TESTING MESSAGE CALL PRINT POP CX ADD CL,'0' ;ADD IN ASCII BIAS CALL I ! PUSH CX CALL FILL POP CX ! POP DI ! POP BX ! POP AX PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL VERIFY JZ NOERR3 ;IF NOT ERROR GO ON CALL ERROR ;IF ERROR GO PRINT MESSAGE AND CONTINUE JMP NEXT_BD NOERR3: POP CX ! POP DI ! POP BX ! POP AX ; ; ADDRESS LINE TEST ; first test location 0 ADRTST: MOV BX,OFFSET ADRMSG CALL PRINT MOV AH,0AAH MOV AL,BYTE PTR CURBORD ;GET CURRENT BOARD DEC AL SHL AL,1 ! SHL AL,1 ! SHL AL,1 MOV BX,0 MOV CX,1 MOV DI,0 ;FILL JUST ONE BYTE PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL FILL POP CX ! POP DI ! POP BX ! POP AX MOV DI,7 MOV CX,0FFFFH MOV BX,1 MOV AH,55H PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL VERIFY JZ NOERR 1024)/2 ;MOVE 4K WORTH REP MOVSW ;TO NEW SPOT POP DS ;RESTORE DS ENDIF IF NOT CPM ;IF ROM VERSION, WILL HAVE 4K OF ROM,USE THAT PUSH CS POP ES ;CS -> ES ENDIF MOV AL,BYTE PTR CURBORD DEC AL ;MAKE BOARD # INTO ADDRESS SHL AL,1 ! SHL AL,1 ! SHL AL,1 ! MOV BX,0 ;ALWAYS START AT BOTTOM OF BOARD PUSH DS ! PUSH AX ! PUSH BX ; CALL SET ;SET THE BOARD TO AL:BX PUSH ES POP DS ;PREPARE FOR LODS ES -> DS MOV DX,HDATA MOV CX,512 / 4 ;DO THIS MANY OF 4K CHUNKS WRTCHK: PUSH CX ;SAVE COUNT MOV SI,OFFSET SAVBUF MOV CX,4 * 1024 ;DO 4K TIMES WRTCH2: LODSB ;GET A BYTE INTO AL OUT DX,AL ;AND OUTPUT IT LOOP WRTCH2 ;4K TIMES POP CX LOOP WRTCHK ;DO THIS LOOP 128 TIMES ; ;NOW VERIFY BOARD POP BX ! POP AX ! ;GET START ADDR BACK POP DS ;DONE WITH DS, RESTORE IT PUSH AX ! PUSH BX ;AND SAVE FOR ERROR CALL SET ;AND RESET MDRIVE/H MOV CX,512 / 4 ;AGAIN 128-4K CHUNKS REDCHK: PUSH CX MOV DI,OFFSET SAVBUF ;ES ALREADY SET MOV CX,4 * 1024 REDCH2: IN AL,DX UPPER BYTE OF ADDRESS USED TO START ; ; REGISTERS - CX = LOW WORD OF NUMBER OF CHECKS LEFT TO DO ; DI = HIGH BYTE OF NUMBER OF CHECKS LEFT TO DO ; AH = SHOULD BE BYTE ; AL = WAS BYTE ; ;******************************************************* ; ERROR: POP BP ;SAVE RETURN ADDRESS POP DX POP BX SUB DX,CX E1: SBB BX,DI ;UPPER BYTE POP DI POP CX XOR CH,CH ;CLEAR UPPER BYTE ADD DX,DI E2: ADC BX,CX SUB DX,1 SBB BX,0 ; HERE BX:DX HAVE ADDRESS THAT FAILED ; AH = SHOULD BE BYTE ; AL = WAS BYTE PUSH AX PUSH BX ;SAVE ROW AND COLUMN PUSH AX MOV CL,12 ;PUT MOST OF NUMBER INTO BX MOV AX,DX ;FOR PRINT SHL BX,CL MOV CL,4 SHR AX,CL OR 4 CALL ERROR JMP NEXT_BD NOERR4: POP CX ! POP DI ! POP BX ! POP AX MOV BX,1 MOV AL,BYTE PTR CURBORD DEC AL SHL AL,1 ! SHL AL,1 ! SHL AL,1 ADDRLP: MOV AH,55H PUSH AX ! PUSH BX MOV CX,1 MOV DI,0 PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL FILL POP CX ! POP DI ! POP BX ! POP AX INC BX ADC AL,0 ;WANT DI:CX = 512K - AL:BX PUSH AX ;SAVE AX MOV DX,AX MOV AH,0 MOV CL,8 DIV CL DEC AH MOV AL,7 MOV CX,0 SUB CX,BX SBB AL,AH MOV AH,0 MOV DI,AX POP AX PUSH AX ! PUSH BX ! PUSH DI ! PUSH CX CALL VERIFY JZ NOERR5 CALL ERROR JMP NEXT_BD NOERR5: POP CX ! POP DI ! POP BX ! POP AX POP BX ;GET BYTE FROM M-DRIVE/H SCASB ;COMPARE IT WITH CODE LOOPE REDCH2 ;DO MORE IF NO ERROR JNE ERR6 ;PROCESS ERROR IF OCCURED POP CX LOOP REDCHK ;ELSE GO DO NEXT 4K ;HERE BOARD SHOULD BE GOOD POP BX ! POP AX ;RESTORE STACK POP ES JMP NEXT_BD ; ; ; PROCESS ERROR FROM RANDOM FILL ROUTINE ERR6: POP BX ;# 4K CHUNKS LEFT TO DO POP SI ;GET OLD BX POP DX ;GET OLD AX POP BP ;SAVE OLD ES PUSH DX ;PUT OLD AX BACK PUSH SI ;AND SAME FOR OLD BX MOV DX,8 ;WANTED TO DO 512K CHECKS PUSH DX MOV DX,0 PUSH DX ;STACK IS NOW SET FOR ERROR ROUTINE DEC DI ;POINT DI TO FAILED SHOULD BE BYTE MOV AH,ES:[DI] ;SHOULD BE IN AH,WAS IN AL PUSH AX ;SAVE FOR LATER MOV AX,4*1024 ;4K... DEC BX ; -1 JUST DONE MUL BX ;...* # OF CHUNKS LEFT TO DO ADD CX,AX ;# BYTE IN 4K LEFT TO DO ADC DX,0 ;DX IS OVERFLOW FROM MUL + CARRY OF ADD MOV DI,DX ;HIGH BYTE OF # OF CHECKS LEFT TO DO POP AX ;SHOULD AND WAS PUSH BP POP ES ;RESTORE ES CALL ERROR ;GO PROCESS ERROR ;  BX,AX AND DX,000FH ;MASK OFF UPPER BITS POP AX PUSH DX PUSH BX PUSH AX MOV BX,OFFSET ERR1MSG CALL PRINT POP AX PUSH AX MOV AL,AH XOR AH,AH MOV BX,BASE16 CALL PUTN ;PRINT SHOULD BE MOV BX,OFFSET ERR2MSG CALL PRINT POP AX XOR AH,AH MOV BX,BASE16 CALL PUTN ;PRINT WAS MOV BX,OFFSET ERR3MSG CALL PRINT POP AX MOV BX,BASE16 CALL PUTN ;PRINT HIGH WORD OF ADDRESS POP AX MOV BX,BASE16 CALL PUTN ;PRINT LOW WORD OF ADDRESS CALL CRLF2 POP CX ADD CL,'0' ;ADD IN ASCII OFFSET POP AX PUSH CX ;SAVE ROW NUMBER XOR AL,AH MOV CX,'0'- ! POP AX SHL BX,1 ;NEXT ADDRESS TO TEST JNBE ADDRLP ;NO NEED TO CHANGE AL SO MOVE ON PUSHF ;LETS SAVE CARRY FLAG MOV CL,AL AND AL,00000111B ;GET BOARD LOCATION AND CL,11111000B ;GET BOARD # POPF ;GET CARRY FLAG BACK RCL AL,1 ;SHIFT IN CARRY FLG IF NEEDED TEST AL,8 ;WHEN AL IS 8 WE ARE DONE JZ ADRDON OR AL,CL ;PUT BOARD LOCATION WITH BOARD # JMP ADDRLP ;AL FIXED SO MOVE ON ; ADRDON: ; DO A RANDOM DATA FILL AND VERIFY. THE CODE SEGEMENT IS USED ; TO GET RANDOM DATA MOV BX,OFFSET RANDMSG CALL PRINT ; PUSH ES IF CPM PUSH DS PUSH DS POP ES ;DS -> ES FOR MOVE PUSH CS POP DS ;CS -> DS FOR MOVE MOV SI,0 ; MOV DI,OFFSET SAVBUF ;TO BUFFER IN DS MOV CX,(4 *JMP NEXT_BD ;AND DO NEXT BOARD ; NEXT_BD: MOV AL,BYTE PTR CURBORD INC AL MOV BYTE PTR CURBORD,AL CMP AL,8 JG EXIT JMP TESTLP EXIT: IF NOT CPM MOV BX,OFFSET DONMSG CALL PRINT ENDIF FINIS: IF CPM CALL CRLF2 MOV BX,OFFSET PASSMSG CALL PRINT CALL CYCCNT ;UPDATE PASS COUNTER CALL SCORE ;PRINT IT JMP TSTSTRT ;AND DO OVER CALL CRLF ENDIF IF NOT CPM JMP FINIS ;DYNAMIC STALL FOR ROM ENDIF ; ;*************************************************** ; ; ERROR - Print a message and up error counter ; ; ENTRY - STACK: (+0) = RETURN ADDRESS ; (+1) = LOW WORD OF NUMBER OF CHECKS TO DO ; (+2) = HIGH BYTE OF NUMBER OF CHECKS ; (+3) = ADDRESS USED TO START CHECK ; (+4) = 1 E3: INC CX CMP CX,'9' JGE E4 CLC RCR AL,1 JNC E3 PUSH AX PUSH CX ;PRINT BIT NUMBER MOV BX,OFFSET ERR4MSG ;PRINT ROW MESSAGE CALL PRINT POP AX POP BX ;GET BIT MAP OUT POP CX ;GET ROW NUMBER PUSH CX ;SAVE ROW NUMBER PUSH BX ;SAVE BIT MAP PUSH AX ;SAVE ASCII BIT # CALL CONO ;PRINT ROW NUMBER MOV BX,OFFSET ERR5MSG CALL PRINT POP CX PUSH CX CALL CONO ;PRINT COLUMN NUMBER CALL CRLF POP CX POP AX ;GET BAD BITS MAP BACK JMP E3 E4: POP CX ;FIX STACK CALL CRLF NOP ; INT 3 PUSH BP ;RETURN ADDRESS NTRY - AL,BX = Address to start checking from ; DI,CX = # Bytes to check ; AH = Byte to check ; ; EXIT - Z bit set if error ; ;***************************************************** ; VERIFY: PUSH DX CALL SET MOV DX,HDATA CMP CX,0 ;IF CX HAS A # DO IT NOW JNE V2 V1: CMP DI,0 ;ANY TO DO? JE VDONE ;EXIT IF NOT DEC DI ;DECREMENT IT NOW IN CASE OF ERROR XOR CX,CX ;MAX CX COUNT V2: IN AL,DX ;GET A BYTE CMP AL,AH ;WAS IT GOOD LOOPE V2 ;LOOP UNTIL CX=0 OR AL<>AH JE V1 ;IF ERROR QUIT, ELSE NEXT DI VDONE: POP DX ; RET ; ; CRLF - Print a carrage return followed by a line feed ; CRLF2: CALL CRLF CRLF: MOV CL,CR CALL CONO MOV CL,LF CALL  INC BYTE PTR [BX] ;INCREMENT DIGIT1 POP BX RET CARRY1: MOV BYTE PTR [BX],'0' ;ZERO DIGIT1 INC BX ;DIGIT2 INTO HL CMP AL,[BX] JE CARRY2 INC BYTE PTR [BX] ;INCREMENT DIGIT2 POP BX RET CARRY2: MOV BYTE PTR [BX],'0' ;ZERO DIGIT2 INC BX ;DIGIT2 INTO HL CMP AL,BYTE PTR [BX] JE ROLOVR INC BYTE PTR [BX] ;INCREMENT DIGIT3 POP BX RET ROLOVR: MOV BYTE PTR [BX],'0' ;ZERO DIGIT3 POP BX RET ; ; SCORE: PUSH CX ;DONT MESS WITH REGISTER CX PUSH BX ;SAVE BX PUSH SI ;SAVE SI MOV SI,OFFSET MSDFLG ;SI WILL POINT TO MSD FLAG MOV BX,OFFSET DIGIT3 ;HL HAS ADDRESS OF MSD CMP BYTE PTR [BX],'0' ;IS MSD A AN ASCII '0'? JNE G1 ! JMP MSD0 ;IF SO THEN JUMP TO FLAG SETTER G1: MOV BYTE PTR [SI],0 ;ZERO FLAG MOV CL,BYTE PTR [BX];MOST SIGNIFICANT DIGIT INTO C CALL CONO ;OUTPUT DIR RET ; ; ; ;******************************************************** ;* * ;* SET - Set the HDRIVE board address * ;* counters * ;* ENTRY - AL,BX 24 Bit address to set * ;* * ;* EXIT - board is set * ;* * ;******************************************************** SET: OUT HADDR,AL MOV AL,BH OUT HADDR,AL MOV AL,BL OUT HADDR,AL RET ; ;****************************************************** ; ; FILL - Fill the HDRIVE board with a value ; ; ENTRY - AL,BX = Address to start filling at. ; DI,CX = # Bytes to write to HDRIVE ; AH = Byte to write to HDRIVE ; ; EXIT - Board i CONO RET ; ;********************************************************** ; ; PRINT - Print a string terminated bye a '$' ( for CPM) ; ; ENTRY - BX = Address of string terminated by a '$' ; ; EXIT - BX = Address of end of string. ; ;********************************************************** ; PRINT: MOV CL,ES:BYTE PTR [BX] CMP CL,'$' JNE PRNT2 PUSH BX ! PUSH DX ! PUSH ES MOV CL,0BH ;CONSOLE STATUS INT 224 POP ES ! POP DX ! POP BX OR AL,AL JZ PRNT1 ;NO CHAR SO CONTINUE MOV CL,1 ;CLEAR INPUT BUFFER INT 224 ;GET CHAR AND IGNORE GOSYS: MOV CL,0 INT 224 ;IF ^C START OVER PRNT1: RET PRNT2: CALL CONO INC BX JMP PRINT ; ;*********************************************** ; ; PRINT AN UNSIGNED NUMBER IN ASCII ; ENTRY AX =ECTLY GDIG2: DEC BX ;HL HAS ADDRESS OF MIDDLE DIGIT CMP BYTE PTR [BX],'0' ;MIDDLE DIGIT A ZERO? JNE G2 ! JMP FLGCHK ;IF SO SEE IF MSD ALSO A ZERO G2: PDIG2: MOV CL,BYTE PTR [BX] ;MIDDLE DIGIT INTO C REG CALL CONO ;OUTPUT MIDDLE DIGIT GDIG3: DEC BX ;GET LSD MOV CL,BYTE PTR [BX] CALL CONO ;OUTPUT LEAST SIGNIFICANT DIGIT POP SI ;RESTORE SI POP BX ;RESTORE BX POP CX ;RESTORE REGISTER CX RET ; ;THIS ROUTINE IS REACHED ONLY IF MSD IS A '0' ;IT WILL SET THE MSD=ZERO FLAG AND SKIP AHEAD TO MIDDLE DIGIT MSD0: MOV BYTE PTR [SI],1 ;SET THE MSD FLAG JMP GDIG2 ;DO NOT PRINT MSD BUT SKIP TO MIDDLE DIGIT ; ;THIS ROUTINE IS REACHED ONLY IF THE MIDDLE DIGIT IS A '0' ;IT WILL CHECK TO SEE WHETHER THE MSD WAS ALSO A ZERO AND IF ;SO WILL SKIP AHEAD TO THE LSD ;IF THE MSD IS NOT A ZERO IT WILL ALLOW THE MIDDLE DIGIT TO PRINT ;SI IS MSD FLAG ADDRESS FLGCHK: CMP BYTE PTR [SI],1 ;IS MSD FLAG SET JZ GDIG3 ;IF FLAG SET SKIP TO LSD JMP PDIG2 ;SINCE MSD NOT A ZERO, PRINT MIDDLE DIGs filled with AH ; ;******************************************************* ; FILL: PUSH DX ;SAVE DX CALL SET ;SET HDRIVE BOARD MOV DX,HDATA ;FOR FAST OUT MOV AL,AH ;GET BYTE TO OUT CMP CX,0 ; JE FILL1 ;IF NO VALUE IN CX FILL0: OUT DX,AL ;OUTPUT BYTE TO BOARD CX TIMES LOOP FILL0 ; FILL1: CMP DI,0 ;DI IS HIGH BYTE OF COUNTER JE FILLOT ;IF BOTH CX & DI 0 XOR CX,CX ;MAX COUNT IS 0 FOR CX COUNTER FILL2: OUT DX,AL LOOP FILL2 ;UNTIL CX IS 0 DEC DI ; JMP FILL1 ;AND DO AGAIN FILLOT: POP DX ;RESTORE DX RET ; ; ;****************************************************** ; ; VERIFY - Verify that HDRIVE board has given ; byte in given range ; ; E NUMBER TO BE PRINTED ; BX = BASE TO PRINT IN ; ;*********************************************** PUTN: MOV DX,0 ;PREPARE FOR DIVIDE DIV BX ;PERFORM DIVIDE AND MODULO PUSH DX ;SAVE MODULO CMP AX,0 ;TEST FOR DIGITS REMAINING JZ PNUM ;GO AND PRINT NUMBER CALL PUTN ;RECURSION TO DO REST OF NUMBER PNUM: POP DX ;GET REST OF BINARY DIGIT ADD DL,'0' ;ADD IN ASCII OFFSET CMP DL,'9'+1 ; JC PNDEC ADD DL,'a'-'9'-1 ;MAKE HEX IF NEEDED PNDEC: PUSH DX PUSH AX MOV CL,DL CALL CONO POP AX POP DX RET ;********************************************************* ; CYCCNT: MOV AL,'9' PUSH BX MOV BX,OFFSET DIGIT1 CMP AL,[BX] JE CARRY1 IT ; ; ;********************************************************* ; CONO - Output a char to the console. ; ; ENTRY - CL char to output ;********************************************************** ; ; CompuPro Interfacer 3 support routines ; GBI3 EQU 10h ;Interfacer 3 Base address GBI3D EQU GBI3+0 ;Uart data location GBI3S EQU GBI3+1 ;Uart status GBI3M EQU GBI3+2 ;Uart mode register GBI3C EQU GBI3+3 ;Uart command register GBI3U EQU GBI3+7 ;Uart select register GBI3DV EQU 00000010b ;Interfacer 3 Data Available GBI3MT EQU 00000001b ;Interfacer 3 Transmit Buffer Empty GBI3DS EQU 10000000b ;Interfacer 3 Data set ready CON EQU 0 ;Interfacer 3 Console Select PRN EQU 4 ;Interfacer 3 Printer Select ULS EQU 8 ;Interfacer 3 User list 1 select ; CONO: IF NOT CPM MOV AL,CONUSR OUT GBI3U,AL ;SELECT USER OF I/O 3 C1: IN GBI3S ANI GBI3DS+GBI3MT ; SUI GBI3DS+GBI3MT ; JNZ C1 ;LOOP UNTIL READY MOV AL,CL AND AL,#7FH ;STRIP HIGH BIT FOR PRINTER OU GBI3D ENDIESSEG: DB 0 ; ;********************************************************* ; STACK SEGMENT ; IN NON CPM VERSION STACK SEGMENT WILL BE SET WITH CODE ; STKSEG: DB 0 ;LET STACK SEG BEGIN HERE FOR ROM VERSION SSEG RS 128 DB 0 IF NOT CPM ORG 0FFFF0H ;RESET VECTOR FOR 8086 JMPF 0F0000H ;JUMP TO START OF CODE ENDIF END  M EQU Byte Ptr 0[BX] ;**************************************************** ; * ; TEST ROUTINES FOR THE SYSTEM SUPPORT 1 * ; REAL TIME CLOCK * ; * ;**************************************************** ;this program assumes that the System Support 1 is addressed ;to the block of ports at 50H, to change to a different address, ;change BASE in equates. BASE EQU 50H ;BASE PORT ADDRESS CLKCMD EQU BASE+10 ;CLOCK COMMAND PORT CLKDATA EQU BASE+11 ;CLOCK DATA PORT BDOS EQU 0005H ;BDOS CALL ADDRESS READ EQU 10H ;READ BIT PATTERN WRITE EQU 20H ;WRITE BIT PATTERN (+HOLD) HOLD EQU 40H ;HOLD BIT PATTERN CSEG ; ORG 100H ;this is the main loop that prints the sign-on message, decides ;what command has been entered and executes that particular routine. ; MOV SP,(Offset STACK) ;SET THE STACK POINTER START: MOV DX,(Offset SIGNON) ;PRINT SIGNON MESSF IF CPM PUSH BX ! PUSH DX ! PUSH ES MOV DL,CL MOV CL,2 ;CONO FUNCTION INT 224 POP ES ! POP DX ! POP BX ENDIF RET ; IF NOT CPM I4INIT: MOV AL,CONUSR OUT GBI3U,AL MOV AL,011101110B OUT GBI3M,AL MOV AL,01111110B ;9600 BAUD, OUT GBI3M,AL MOV AL,00100111B ;COMMAND OUT GBI3C,AL RET ENDIF ; CODEND: ;********************************************************* ; START OF EXTRA SEGMENT ; This data will be in rom ;******************************************************** IF CPM ESEG ENDIF IF NOT CPM ORG CODEND ENDIF EXITS DB 'BOARD # ','$' YESEX DB ' DOES EXIST.',CR,LF,'$' NOEX DB ' DOES NOT EXIST!!! I WILL SKIP IT.',CR,LF,'$' TSTMSG DB CR,LF,'BEGINING TEST ON BOARD #','$' IF CPM OOMSG DB ' BIT STUCK HIGH, TESTING 00',CR,LF,'$' FFMSG DB ' BIT STUCK LOW, TESTING 0FFH',CR,LF,'$' O55MSG DB ' CHECKERBOARD TEST (055H)',CR,LF,'$' ADRMSG DB ' ADDRESS LINE TEST',CR,LF,'$' RANDMSG DB ' RANDOM WRITE/READ TEST',CR,LF,'$' ENDIF IF NOT CPM OOMSG#define true 0xff #define false 0 #define del true #define memmngr 0xFD #define bus 0x5 main() { unsigned char j,i,r; printf("\nLOOK AT EXTENDED ADDRESS LIGHTS ON JADE BOARD!!!\n"); printf(" NOT AT ME.......!\n"); delay(128); j=1 << 3; for (i = 0 ; i < 8 ; i++) { /* j=i << 4; */ if (i < 4) j=j << 1; else j=j >> 1; outportb(memmngr,j); delay(128); /* r=inportb(bus); if ((r | 0xF) != (j | 0xf)) { printf("\nBAD MEMORY MANAGER\n"); exit(0); } */ } /* printf("\n8086 memory manager is good!\n");*/ outportb(memmngr,0);/* reset address lines */ } delay(count) unsigned count; { unsigned i,j; for (i=count; i > 0 ; i--) { for (j=0 ; j < 256 ; j++); } } AGE CALL PMSG ;PRINT IT CALL GETCHAR ;GET COMMAND CHARACTER CMP AL,'X' ;IF X JNZ L_1 MOV CL,0 ;THEN RESTART SYSTEM MOV DL,0 INT 224 L_1: CMP AL,'S' ;IF S JZ SETTIME ;THEN SET TIME CMP AL,'P' ;IF P JNZ L_2 JMP PTIME ;THEN PRINT THE TIME L_2: CMP AL,'C' ;IF C JNZ L_3 JMP FOREVER ;THEN PRINT TIME FOREVER L_3: MOV DX,(Offset ERROR) ;NONE OF THE ABOVE CALL PMSG ;PRINT ERROR MESSAGE JMPS START ;AND TRY AGAIN ;this routine sets up HL to point to a table to receive the digits ;to be written to the clock. DE contains the pointer to the table ;of address values that correspond to the desired digit. The table ;is organized in the proper order for reading and writing. The ;routine gets the digits from the console and puts them into memory ;and then writes them to the clock. SETTIME:CALL GETTIME ;GET THE DATE AND TIME DATA MOV BX,(Offset DTABLE) ;H GETS DIGIT TABLE ADDRESS MOV DX,(Offset ATABLE) ;D GETS ADDRESS TABLE MOV CH,13 ;NUMBER OF DB ' 1 ',CR,'$' FFMSG DB ' 2 ',CR,'$' 055MSG DB ' 3 ',CR,'$' ADRMSG DB ' 4 ',CR,'$' RANDMSG DB ' 5,CR,LF,'$' ENDIF PASSMSG DB ' PASS NUMBER ','$' DONMSG DB CR,LF,CR,LF,'DONE TESTING ALL BOARDS.' DB ' GIVE ALL BAD BOARDS A RED DOT!!!',CR,LF,'$' ERR1MSG DB CR,LF,' ERROR - BYTE SHOULD BE ','$' ERR2MSG DB ' WAS ','$' ERR3MSG DB ' AT ADDRESS ','$' ERR4MSG DB ' CHECK MEMORY CHIP AT ROW ','$' ERR5MSG DB ' COLUMN ','$' ; NOMEMMS DB ' ERROR: UNABLE TO GET 4K MEMORY SEGMENT FROM CPM!!' DB ' ADD MORE MEMORY TO SYSTEM. ',CR,LF,LF,'$' CPYMSG DB 'COPYRIGHT (C) COMPUPRO 1983.',CR,LF,'$' ;********************************************************* ; ; START OF DATA SEGMENT ; This code will sit in unitialized RAM ;********************************************************* DSEG ORG 100H F_BORD RB 8 CURBORD RB 1 ERRCNT RB 1 DIGIT1 DB '0' DIGIT2 DB '0' DIGIT3 DB '0' MSDFLG DB 0 IF CPM MCB DW 0,0 DB 0 SAVBUF RW (4 * 1024) / 2 ;RESERVE 4K BYTES ENDIF  DIGITS TO WRITE +1 MOV AL,HOLD ;SET HOLD BIT OUT CLKCMD,AL ;AND WRITE IT OUT SET1: DEC CH ;DECREMENT DIGIT COUNT JNZ HERE ;SKIP THIS NEXT BIT IF NOT DONE MOV AL,0 ;CLEAR A OUT CLKCMD,AL ;CLEAR HOLD BIT MOV DX,(Offset TIMEIS) ;SHOW THAT THE TIME IS NOW: CALL PMSG ;WHATEVER CALL CLKPRNT ;PRINT THE STUFF JMPS START ;WE'RE DONE HERE: MOV AL,M ;GET THE DIGIT INTO A MOV CL,AL ;AND PUT IT IN C MOV SI,DX ;GET THE COMMAND IN A MOV AL,[SI] CALL WRTDGT ;WRITE THE DIGIT LAHF ;NEXT INC BX SAHF LAHF ;AND NEXT INC DX SAHF JMPS SET1 ;AND CONTINUE ;this is the routine that gets the digits from the console and ;stores them into memory at the address pointed to by HL. GETTIME:MOV DX,(Offset ASKTIME) ;PROMPT TIME INPUT CALL PMSG MOV BX,(Offset DTABLE) ;ADDRESS TO PUT DIGITS GET1: CALL GETNUMB ;GET DIGIT CMP AL,0DH ;IS IT A CR? JZ GETDATE ;YES, GET THE DATE AND AL,0FH ;CONVERT TO BCD MOV M,AL ;OTHERWISE, PUT THE DIGIT IN MEMORY utine prints the current time and date once and returns ;(complete with colons and slashes) CLKPRNT:MOV BX,(Offset ATABLE) ;GET THE TABLE ADDRESS IN HL CALL PRINTWO ;PRINT THE FIRST TWO DIGITS MOV AL,':' CALL PCHAR CALL PRINTWO ;PRINT THE NEXT TWO DIGITS MOV AL,':' CALL PCHAR CALL PRINTWO ;PRINT THE NEXT TWO DIGITS MOV AL,' ' CALL PCHAR ;PRINT TWO SPACES MOV AL,' ' CALL PCHAR CALL PRINTWO ;PRINT TWO MORE DIGITS MOV AL,'/' ;PRINT A SLASH CALL PCHAR CALL PRINTWO MOV AL,'/' CALL PCHAR CALL PRINTWO ;PRINT THE LAST TWO DIGITS RET ;WE'RE DONE ;this routine prints two digits from the clock. It is called with ;the digit address of the first digit in HL. Exits with HL pointing ;to the address of the next two digits. PRINTWO:MOV AL,M ;GET THE ADDRESS FROM TABLE CALL RDDGT ;READ THE DIGIT ADD AL,30H ;CONVERT TO ASCII CALL PCHAR ;AND PRINT IT INC BX ;INCREMENT THE POINTER MOV AL,M ;GET THE NEXT ADDRESS CALL RDDGT ADD AL,30H CALL P_9 EQU $ DSEG ORG 100H ;MESSAGES SIGNON DB 0DH,0AH,0DH,0AH,'TIME AND DATE TEST ROUTINES FOR ' DB 'SYSTEM SUPPORT 1',0DH,0AH,0DH,0AH DB 'PLEASE TYPE ONE OF THE FOLLOWING COMMANDS:',0DH,0AH DB 'S - SET THE TIME AND DATE',0DH,0AH DB 'P - PRINT THE TIME AND DATE ONCE',0DH,0AH DB 'C - CONTINUOUSLY PRINT THE TIME AND DATE',0DH,0AH DB 'X - EXIT TO OPERATING SYSTEM',0DH,0AH DB 0DH,0AH,'COMMAND: $' ERROR DB 0DH,0AH,'THAT WAS NOT ONE OF THE ABOVE COMMANDS' DB 0DH,0AH,'PLEASE TRY AGAIN $' ASKTIME DB 0DH,0AH,'WHAT IS THE TIME? (24 HOUR FORMAT - HH:MM:SS) $' ASKDATE DB 0DH,0AH,'WHAT IS THE DATE? (MM/DD/YY) $' TIMEIS DB 0DH,0AH,'THE TIME AND DATE ARE: $' ;DIGIT ADDRESS TABLE ;this table contains the "address" values that are sent in the ;command byte in the following order: Hours 10, Hours 1, Min 10, ;Min 1, Sec 10, Sec 1, Month 10, Month 1, Days 10, Days 1, Years 10 ;Years 1. ATABLE DB 5,4,3,2,1,0,0AH,9,8,7,0CH,0BH ;this is the area which gets the digits as they are entered from the ;cINC BX ;INCREMENT THE TABLE ADDRESS JMPS GET1 ;GET THE NEXT DIGIT GETDATE:MOV DX,(Offset ASKDATE) CALL PMSG GET2: CALL GETNUMB CMP AL,0DH ;IS IT A CR? JNZ L_4 RET ;YES, RETURN L_4: AND AL,0FH ;CONVERT TO BCD MOV M,AL ;PUT DIGIT IN MEMORY INC BX JMPS GET2 ;this routine gets a character from the console, and checks the ;input for either a carriage return or a valid digit between 0-9 ;will not return until a CR or valid digit is typed. GETNUMB:CALL GETCHAR ;GET A CHARACTER CMP AL,0DH ;IS IT A CR? JNZ L_5 RET L_5: CMP AL,'0' JB GETNUMB CMP AL,'9'+1 JNB GETNUMB RET ;this routine writes the digit to the clock, and checks to ;see if it's the hours or days 10 digit and sets the 24 hour ;and leap year bits accordingly. This routine is called with ;digit address in A and the digit to be written in C. WRTDGT: ;SAVE THE COMMAND PUSH AX ADD AL,HOLD ;ADD IN THE HOLD BIT OUT CLKCMD,AL ;AND OUTPUT IT CMP AL,5+HOLD ;WAS IT THE HOURS 10 DIGIT? JNZCHAR INC BX RET ;this routine prints the time once and jumps back to the main loop PTIME: MOV DX,(Offset TIMEIS) ;PRINT "THE TIME IS -" CALL PMSG CALL CLKPRNT ;AND PRINT THE TIME AND DATE JMP START ;AND RESTART ;this routine prints the time forever (unless a CNTL C is typed) ;it continually reads the seconds 1 digit and waits for it to ;change before printing the time. FOREVER:MOV AL,0AH ;LINE FEED CALL PCHAR ;SEND IT FOR1: MOV AL,0DH ;CARRIAGE RETURN CALL PCHAR ;SEND IT CALL CLKPRNT ;PRINT THE TIME MOV AL,0 ;ADDRESS OF SECONDS DIGIT CALL RDDGT ;READ THE SECONDS DIGIT MOV CH,AL ;SAVE IT IN B FOR2: MOV AL,0 CALL RDDGT ;READ IT AGAIN CMP AL,CH ;COMPARE IT TO THE ONE WE JUST READ JZ FOR2 ;LOOP IF IT'S THE SAME JMPS FOR1 ;OTHERWISE PRINT IT AGAIN ;CP/M CALLS AND UTILITIES ;this routine gets a character from the console, converts it to ;uppercase, strips off the parity and checks for CNTL C GETCHAR:PUSH BX ;SAVE HL MOV CL,01 ;CHARACTERonsole. DTABLE RS 12 ;this is the area for the stack ; RS 32 ;FOR 16 LEVEL STACK ; STACK RS 0  WRT1 ;NO MOV AL,CL ;OTHERWISE GET THE DIGIT ADD AL,08H ;AND SET 24 HOUR MODE JMPS WRT3 WRT1: CMP AL,8+HOLD ;WAS IT THE DAYS 10 DIGIT JNZ WRT2 ;NO MOV AL,CL ;OTHERWISE GET THE DIGIT AND AL,03H ;AND SET NON-LEAP YEAR MODE JMPS WRT3 WRT2: MOV AL,CL ;PUT THE DIGIT IN A WRT3: OUT CLKDATA,AL ;AND OUTPUT IT POP AX ;GET THE COMMAND BACK ADD AL,WRITE+HOLD ;ADD IN THE WRITE AND HOLD BITS OUT CLKCMD,AL ;SEND IT OUT SUB AL,WRITE ;CLEAR THE WRITE BIT OUT CLKCMD,AL ;AND SEND IT RET ;NOW WE'RE DONE ;this routine reads a digit from the clock and masks the leap year ;and AM/PM/24 hour mode bits. This routine is called with the digit ;address in A and returns with the digit value in A RDDGT: ADD AL,READ ;ADD IN THE READ BIT OUT CLKCMD,AL ;AND OUTPUT IT CMP AL,05H+READ ;WAS IT THE HOURS 10 DIGIT IN AL,CLKDATA ; GET THE DIGIT JZ L_6 RET ;IF IT WASN'T, WE'RE DONE L_6: SUB AL,08H ;IF IT WAS, THEN KILL 24 HOUR BIT RET ;AND THEN RETURN ;this ro IN FUNCTION INT 224 POP BX CMP AL,'a' ;RANGE CHECK FOR UPPER CASE JB SKIP ;CONVERSION CMP AL,'z'+1 ; JNB SKIP AND AL,5FH ;CONVERT TO UPPER CASE SKIP: AND AL,7FH ;AND STRIP PARITY CMP AL,03H ;IS IT A CNTL C? JNZ L_7 MOV CL,0 ;YES, RESTART SYSTEM MOV DL,0 INT 224 L_7: RET ;OTHERWISE WE'RE DONE ;this routine prints a character on the console and checks ;to see if any characters were entered while printing. PCHAR: PUSH DX ;SAVE D REGISTER MOV DL,AL ;CHARACTER TO PRINT IN E MOV CL,02H ;CHARACTER OUT FUNCTION PUSH BX ;SAVE HL INT 224 MOV CL,0BH ;CONSOLE STATUS CHECK INT 224 ;SEE IF A CHARACTER WAS TYPED POP BX POP DX OR AL,AL ;SET THE FLAGS JZ L_8 CALL GETCHAR ;IF A CHARACTER WAS TYPED, GO GET IT L_8: RET ;OR RETURN ;this routine prints the string pointed to by DE until a $ is ;encountered. Should be called with DE pointing to start of string. PMSG: PUSH BX MOV CL,09H ;PSTRING FUNCTION INT 224 POP BX RET ;L;* ;* ;* INTERFACER 3 TEST PROGRAM ;* ;* ; Thi progra wil initialize 265s for asynchronous ;operation at 9600 baud wit dat bits on sto bit n ;parity. This program will echo all characters received on any ;user channel (from 0 to 31) and if any user sends a ^C, the ;program will terminate and return back to CP/M. ;* ;* base equ 10h udata equ BASE+0h ;data port in and out ustat equ BASE+1h ;status register port mode equ BASE+2h ;mode register port commr equ BASE+3h ;command register port txreg equ BASE+4h ;tx int register rxreg equ BASE+5h ;rx int register user equ BASE+7h ;port to select user exit equ 0 ;CP/M reentry point tbmt equ 01h ;transmitter buffer empty dav equ 02h ;data available bdos equ 5 cr equ 0aH lf equ 0dH print equ 9H * * * org 100h lxi d,cpymsg mvi c,print call bdos Start mvi a,0ffh ;init user Loop inr a ;next user cpi 20H ;check for final uart jz echo ;start echo routine out user ;select uart mov b,a ;save; CENTRONICS TEST PROGRAM ; 3/25/82 ; ;* ;* ;* INTERFACER 3 TEST PROGRAM ;* ;* ;* base equ 10h udata equ BASE+0h ;data port in and out ustat equ BASE+1h ;status register port mode equ BASE+2h ;mode register port commr equ BASE+3h ;command register port txreg equ BASE+4h ;tx int register rxreg equ BASE+5h ;rx int register user equ BASE+7h ;port to select user exit equ 0 ;CP/M reentry point tbmt equ 01h ;transmitter buffer empty dav equ 02h ;data available cr equ 0dh ;carr. return lf equ 0ah ;line feed bdos equ 5 pstring equ 9H * * * org 100h lxi d,cpymsg mvi c,pstring call bdos start1 call setup ;setup message area start2 call start ;init user line1 lxi h,msg1 ;point to message call print ;print message lxi h,msg3 ;point call print ;print lxi h,msg4 ;point call print ;print lxi h,msg5 ;point graphics call print ;print graphics mvi c,0bh ;check call 0005h ; console cpi 00h ; status jz start2 ;for entry jmp 0 ;exit Start mvi a, user in b call init ;init the uart mov a,b ;restore user jmp loop ;next Init mvi a,0CEh ;set up the 2651 out mode ;send to mode register 1 mvi a,7Eh ;9600 baud, internal clocks out mode ;SEND BYTE TO M.R. 2 mvi a,27h ;could be 07h (no 1420) out commr ret Echo mvi a,0FFh ;mask value out txreg ;set tx int reg out rxreg ;set rx int reg Loop1 inr a ;next user out user ;select uart mov b,a ;save user in b call cstat ;check for data cpi 0AAh ;data if aa cz ok ;do echo loop mov a,b ;restore user jmp loop1 ;next Ok call inloop ;get data call oloop ;output data ret Cstat in ustat ;look for key entry ani dav ;check status jz nodat ;no data mvi a,0AAh ;data char ret Nodat mvi a,0 ;no data char ret Inloop in ustat ;look for key entry ani dav ;check the status jz inloop ;wait for key entry in udata ;get key entry ani 7Fh ;mask parity off cpi 03h ;has a ^c been hit? jz done ;return to CP/M mov e,a ;save input in E reg. ret Oloop in us;test routine for 9512 BDOS EQU 5 PSTRING EQU 9H ;PRINTS STRING IN DE REGISTER RCON EQU 0AH ;READS STRING INTO LOCATION IN DE REG. COUT EQU 2H ;OUTPUTS SINGLE CHARACTER IN REG E TO TERMINAL CIN EQU 1 ;INPUTS CONSOLE CHARACTER TO REG A CR EQU 0AH LF EQU 0DH DREG EQU 58H creg: equ 59H ; ORG 100H lxi d,cpymsg ;print copyright message mvi c,pstring call bdos ; LXI SP,STACK ;INITIALIZE STACK ; START: LXI D,GREET MVI C,PSTRING CALL BDOS ; XRA A STA COUNT ;INITIALIZE COUNTER ; ;write table1 to 9512 EXAM: lxi h,tbl1 mvi c,8 test1: mov a,m out dreg inx h dcr c jnz test1 mvi a,1 out creg nop ;put rst 7 here for operation with ndt ;compare 9512 answer with predicted answer mvi c,4 lxi h,tbl1A comp1: in dreg cmp m jnz error inx h dcr c jnz comp1 nop ;put rst 7 here for ddt in creg ;check status lxi d,okmsg mvi c,pstring call bdos nop ;put rst 7 here for ddt jmp 0 ; ;IF ONE OFF THEN POP 2-- IF NO GO ONE MORE 04H ;init CENTRONICS out user ;select uart mvi a,0ffh ;interrupts enable out txreg ;transmit int enabled out rxreg ;receive enabled mvi a,0h ;init centronics out ustat ;out ret setup lxi h,msg3 ;point to buffer mvi a,20h ;init sloop mov m,a ;put byte inr a ;next up inx h ;next loc cpi 40h ;beyond last char jz done1 ; jmp sloop ;again done1 mvi a,cr ;carrage return mov m,a ; inx h ; mvi a,lf ;line feed mov m,a ; inx h ; mvi a,0 ;null mov m,a ;place setup1 lxi h,msg4 ;point to buffer mvi a,40h ;init sloop1 mov m,a ;put byte inr a ;next up inx h ;next loc cpi 7eh ;beyond last char jz done2 ; jmp sloop1 ;again done2 mvi a,cr ;carrage return mov m,a ; inx h ; mvi a,lf ;line feed mov m,a ; inx h ; mvi a,0 ;null mov m,a ;place setup2 lxi h,msg5 ;point to buffer mvi a,0A0h ;init sloop2 mov m,a ;put byte inr a ;next up inx h ;next loc cpi 0E0h ;beyond last char jz done3 ; jmp sloop2 ;again done3 mvi a,cr ;carrage return mov m,a ;tat ;check ready for output ani tbmt ;check status jz oloop ;wait for ready mov a,e ;get data out udata ;output character ret cpymsg: db cr,lf,'COPYRIGHT COMPUPRO 1983' db cr,lf,cr,lf,'$' Done jmp exit ;return to cp/m end no 1420) out commr ret Echo mvi a,0FFh ;mask value out txreg ;set tx int reg out rxreg ;set rx int reg Loop1 inr a ;next user out user ;select uart mov b,a ;save user in b call cstat ;check for data cpi 0AAh ;data if aa cz ok ;do echo loop mov a,b ;restore user jmp loop1 ;next Ok call inloop ;get data call oloop ;output data ret Cstat in ustat ;look for key entry ani dav ;check status jz nodat ;no data mvi a,0AAh ;data char ret Nodat mvi a,0 ;no data char ret Inloop in ustat ;look for key entry ani dav ;check the status jz inloop ;wait for key entry in udata ;get key entry ani 7Fh ;mask parity off cpi 03h ;has a ^c been hit? jz done ;return to CP/M mov e,a ;save input in E reg. ret Oloop in usTEST SHOULD DO IT ; error: lxi d,errmsg mvi c,pstring call bdos nop ;put rst 7 here for ddt LDA COUNT INR A STA COUNT CPI 3 JZ PERM CPI 2 JZ SECOND IN DREG ;ADJUST 9512 STACK POINTER IN DREG SECOND: LXI D,ADJMSG MVI C,PSTRING CALL BDOS jmp EXAM ; PERM: LXI D,PERMSG MVI C,PSTRING CALL BDOS EXIT: JMP 0 ; COUNT: DB 0 ; ;MESSAGES ; GREET: DB CR,LF,'9512 TEST BEGUN',CR,LF,'$' ; ERRMSG: DB CR,LF,'ERROR ','$' OKMSG: DB CR,LF,'OK ','$' ADJMSG: DB CR,LF,'ADJUSTING 9512 STACK',CR,LF,'$' PERMSG: DB CR,LF,'PERMANENT ERROR',CR,LF,'$' cpymsg: DB CR,LF,'COPYRIGHT COMPUPRO 1983' DB CR,LF,CR,LF,'$' ; TBL1: DB 00,00,80H,3FH,00,00,80H,3FH TBL1A: DB 40H,00,00,00 DS 64 ;32 LEVEL STACK STACK:  inx h ; mvi a,lf ;line feed mov m,a ; inx h ; mvi a,0 ;null mov m,a ;place ret print call start ;select user call instat ;check status mov a,m ;get byte cpi 0 ;is it a null? rz ;done out udata ;output data inx h ;next byte jmp print ;again instat in ustat ;get status cpi 0c5h ;check all ok? jnz instat ;loop not ready ret msg1 db cr,lf,lf db 'This is a test of the INTERFACER 4 CENTRONICS port' db cr,lf,lf db 0 msg2 db cr,lf,lf db 0 cpymsg: db cr,lf,'COPYRIGHT COMPUPRO 1983' DB CR,LF,CR,LF,'$' msg3 ds 100h msg4 ds 100h msg5 ds 100h end  jz done2 ; jmp sloop1 ;again done2 mvi a,cr ;carrage return mov m,a ; inx h ; mvi a,lf ;line feed mov m,a ; inx h ; mvi a,0 ;null mov m,a ;place setup2 lxi h,msg5 ;point to buffer mvi a,0A0h ;init sloop2 mov m,a ;put byte inr a ;next up inx h ;next loc cpi 0E0h ;beyond last char jz done3 ; jmp sloop2 ;again done3 mvi a,cr ;carrage return mov m,a ; DI ;ENABLE INTERRUPTS MVI B,21H ;EXCLAMATION MARK INTO B CALL HAND ;CALL HANDSHAKE ROUTINE EI JMP WATE ;WAIT FOR INTERRUPT HAND: DI IN STATUS ;PUT STATUS INTO REG A ANI TBE ;SEE IF IT'S READY JZ HAND ;IF NOT READY START OVER MOV A,B ;CHARACTER TO PRINT INO A OUT DATA ;OUTPUT REG A TO TERMINAL RET ; VECT0: MVI B,'0' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT1: MVI B,'1' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT2: MVI B,'2' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT3: MVI B,'3' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT4: MVI B,'4' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT5: MVI B,'5' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT6: MVI B,'6' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT7: MVI B,'7' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP ;* ;* ;* INTERFACER 4 TEST PROGRAM ;* ;* ; Thi progra wil initialize 265s for asynchronous ;operation at 9600 baud wit dat bits on sto bit n ;parity. This program will echo all characters received on any ;user channel (from 0 to 31) and if any user sends a ^C, the ;program will terminate and return back to CP/M. ;* ;* base equ 10h udata equ BASE+0h ;data port in and out ustat equ BASE+1h ;status register port mode equ BASE+2h ;mode register port commr equ BASE+3h ;command register port txreg equ BASE+4h ;tx int register rxreg equ BASE+5h ;rx int register user equ BASE+7h ;port to select user exit equ 0 ;CP/M reentry point tbmt equ 01h ;transmitter buffer empty dav equ 02h ;data available bdos equ 5 print equ 9H cr equ 0aH lf equ 0dH * * * org 100h lxi d,cpymsg mvi c,print call bdos fs mvi a,0 ;first board out user ;select mvi a,0ffh ;interrupts on out txreg ;enable transmit int out rxreg ;enable receive int Start mvi a,0ffh  CPYMSG: DB CR,LF,'COPYRIGHT COMPUPRO 1983' DB CR,LF,CR,LF,'$' INTERRUPT HAND: DI IN STATUS ;PUT STATUS INTO REG A ANI TBE ;SEE IF IT'S READY JZ HAND ;IF NOT READY START OVER MOV A,B ;CHARACTER TO PRINT INO A OUT DATA ;OUTPUT REG A TO TERMINAL RET ; VECT0: MVI B,'0' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT1: MVI B,'1' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT2: MVI B,'2' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT3: MVI B,'3' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT4: MVI B,'4' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT5: MVI B,'5' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT6: MVI B,'6' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP VECT7: MVI B,'7' ;VECTOR LINE NUMBER INTO B REG JMP HAND ;OUTPUT NOP NOP NOP ;init user Loop inr a ;next user cpi 20H ;check for final uart jz echo ;start echo routine usel out user ;select uart mov b,a ;save user in b ani 3 ;mask for centronics cz cinit ;sense I-loop call init ;init the uart mov a,b ;restore user jmp loop ;next Cinit in udata ;get sense switch ani 1 ;bit 0 jz iloop ;110 baud mvi e,7Eh ;9600 baud nu mov a,b ;resore user inr a ;next user mov b,a ;save user out user ;select next user ret ;init usart 9600 iloop mvi e,72h ;110 baud jmp nu ;next user Init mvi a,0CEh ;set up the 2651 out mode ;send to mode register 1 mov a,e ;get baud value out mode ;SEND BYTE TO M.R. 2 mvi a,27h ;could be 07h (no 1420) out commr mvi e,7eh ;reset 9600 ret Echo mvi a,0FFh ;mask value out txreg ;set tx int reg out rxreg ;set rx int reg Loop1 inr a ;next user out user ;select uart mov b,a ;save user in b call cstat ;check for data cpi 0AAh ;data if aa cz ok ;do echo loop mov a,b ;restore user jmp loop1 ;next O;ROUTINE TO TEST INTERRUPT CIRCUITRY OF Z-80 BOARD ;8 ROUTINES FROM 0 THROUGH 8 AND UP TO 38H WILL BE INITIALIZED ;GENERATING AN INTERRUPT BY HAND SHOULD CAUSE THE Z-80 TO EXECUTE THE ;THE APPROPRIATE ROUTINE. REQUIRES GODBOUT OPERATING SYSTEM,WITH ;INTERFACER ADDRESSED AT 0. STATUS EQU 1 ;INTERFACER STATUS PORT DATA EQU 0 ;INTERFACER DATA PORT TBE EQU 1 ;INTERFACER TRANSMITTER BUFFER EMPTY BIT CR EQU 0AH ;CARRIAGE RETURN LF EQU 0DH ;LINE FEED PRINT EQU 9H ;PRINT STRING IN DE REGISTER BDOS EQU 5 ORG 100H LXI SP,80H ; LXI D,CPYMSG ;COPYRIGHT MESSAGE MVI C,PRINT CALL BDOS ; ;MOVE CODE FROM VECT0 TO VECT7 + 8 INTO RAM BEGINNING AT 0 LXI H,VECT0 ;HL POINTS TO SOURCE ADDRESS LXI D,0 ;DESTINATION ADDRESS MVI C,40H ;LENGTH OF ROUTINES MOVEIT: MOV A,M ;BYTE TO MOVE INTO REG A XCHG ;HL HAS DESTINATION ADDRESS MOV M,A ;CODE INTO LOWER MEMORY XCHG ;SWAP BACK INX H ;NEXT SOURCE ADDRESS INX D ;NEXT DESTINATION ADDRESS DCR C ;DECREMENT COUNTER JNZ MOVEIT ;KEEP GOING WATE:k call inloop ;get data call oloop ;output data ret Cstat in ustat ;look for key entry ani dav ;check status jz nodat ;no data mvi a,0AAh ;data char ret Nodat mvi a,0 ;no data char ret Inloop in ustat ;look for key entry ani dav ;check the status jz inloop ;wait for key entry in udata ;get key entry ani 7Fh ;mask parity off cpi 03h ;has a ^c been hit? jz done ;return to CP/M mov e,a ;save input in E reg. ret Oloop in ustat ;check ready for output ani tbmt ;check status jz oloop ;wait for ready mov a,e ;get data out udata ;output character ret cpymsg: db cr,lf,'COPYRIGHT COMPUPRO 1983' db cr,lf,cr,lf,'$' Done jmp exit ;return to cp/m end  value out txreg ;set tx int reg out rxreg ;set rx int reg Loop1 inr a ;next user out user ;select uart mov b,a ;save user in b call cstat ;check for data cpi 0AAh ;data if aa cz ok ;do echo loop mov a,b ;restore user jmp loop1 ;next Ount MTRK = 76 ;maximum track for seek (0-76)=77 MRTRY = 5 ;Maximum retries of r/w op ; Controller port definitions. FDPORT EQU 0C0H ;Base port address for Controller FDCS EQU FDPORT ;Status register FDCD EQU FDPORT+1 ;Data register FDMA EQU FDPORT+2 ;Dma address (when write) INTS EQU FDPORT+2 ;Status Register (when read) ; Controller function definitions F.RTK = 02 ;Read track F.SPEC = 03 ;Specify F.DSTS = 04 ;Drive status F.WRT = 05 ;Write data F.RDAT = 06 ;Read data F.RECA = 07 ;recalibrate F.RSTS = 08 ;Read status F.DRID = 10 ;Read disk identification F.FMT = 13 ;Format track F.SEEK = 15 ;Seek HUT: = 240/16 ;Head unload = 240 ms SRT: = 16-8 ;Step rate = 8 ms (stuggart) HLT: = 35 ;Head load = 36 ms ND: = 00 ;Set DMA mode page org 0100h DSKTST: JMP STARTUP CPYMSG: DB CR,LF,'Copyright Sorcim, 1980 ' DB VER,'.' DW rev (LEVEL) DB '.' DB CR,LF,'Sorcim Proprietary product.',CR,LF,01Ah DC LF STARTUP proc PUSH PSW PUSH B PUSH D PUSH H LXI H,0  format LD A,FMT.N LDK HL,TRKDAT+3 CALL UFN ;update Ns in table CALL CRLF ;new line LDK C,F.FMT LD A,FMT.N OR A JZ :1 ;if NOT MF mode LDK C,F.FMT+40h :1: MOV A,C STO A,FMTRK ;set MF mode XOR A ; FORMAT rest of disk :2: INC A STO A,CTRK ;set next track CALL UFCHRN ;Update UFCHRN LDK HL,FMTRK CALL IFMT ;issue format LDK A,'F' CALL CONOUT ;indicate new track LD A,CTRK CMP MTRK JNZ :2 ;if not done LDK HL,VFMTM CALL NLSTR CALL TREAD LDK HL,FMTC CALL NLSTR JMP OTEC ;display errors FMTC: DC 'FORMAT complete.' VFMTM: DC 'Validating format.' VFMTR: DC 'Confirm ready for format of disk (y).' FMTR1: DB F.FMT DB 0 ;h,us1,us0 DB 0 ;N DB 26 ;SC DB 1Bh ;128 DB 0E5h ;filler FMTRK: DB F.FMT DB 0 ;h,us1,us0 FMT.N DB 0 ; 0, 1, 2,3 FMT.S DB 0 ;26,15,8 FMT.G DB 0 ;36,54,74 DB 0E5h ;filler TFGPL: DB 01Bh,036h,054h,074h DB 26, 26, 15, 8 space 4,10 IFMT: ;Issue format command ; Entry HL=FWA of FMT command table LDK B,6  DAD SP SHLD SYSTK ;save system stack RESTRT: LDK SP,STK CALL PARG ;process command args LDK HL,CPYMSG ;copyright message CALL OSTR LDK BC,1500 CALL DELAY ;delay message on screen LDK HL,IMSG CALL OSTR ;initial message LD A,ACTDSK ;pass active disk CALL SDRV ;select CALL CERF ;clear all errors JMP DSKTR ; Here if restart DSKT1: LDK SP,STK LDK HL,IMSG CALL OSTR ;output message DSKTR: CALL RDRV ;reset drive ; Master loop of Diagnostic :2: CALL GNC ;get next command CALL GOTO ;Go to processor JMP :2 ;continue GOTO: JMP [hl] EXIT: MVI C,RDS ;Reset disk system CALL BDOS LHLD SYSTK SPHL POP H POP D POP B POP PSW RET ;return to system SYSTK: DW 0 IMSG: DB CR,LF,LF,LF DB 'CompuPro Disk Sub-system Diagnostic',CR,LF DB 'Version ' DB VER,'.' DW rev (LEVEL) DB '.',CR,LF DB 'Legal commands for disk test are:',CR,LF DB '0 - Confidence Test.',CR,LF DB '1 - Seek test.',CR,LF DB '2 - Read/Display track,sector.',CR,LF LDK C,7 CALL EXECT ;format trk 0 OR A RZ ;if ok LD A,LSTSB+1 OR A RZ ;if ok CMP 2 JNZ :3 ;if not NO write ring LDK HL,NWRMS CALL NLSTR JMP DSKTR :3: LDK HL,FMERM CALL NLSTR JMP DSKTR NWRMS: DC 'Disk doas NOT have write ENABLED.' FMERM: DC 'FORMAT error, ABORT.' space 4,10 UFCHRN: ;Update C,H,R,N for next format proc LDK HL,TRKDAT STO HL,BUFADR LD A,CTRK CALL DOSEEK ;Seek to track LDK HL,TRKDAT LD A,CTRK ; JMP UFN space 4,10 UFN: ;Update N for format proc LDK C,26 ;maximum sectors :2: STO A,[hl] ;update track LDK DE,4 ADD HL,DE DEC C JNZ :2 ;if not done RET TRKDAT: R SET 1 ECHO 26 DB 0,0,R,0 R SET R+1 ENDM page TCONF: ;Confidence test LDK A,MTRK CALL DOSEEK ;set to max track LDK A,1 CALL DOSEEK ;Set to 1st track CALL TWRT ;perform write/read test CALL TSEK ;Perform Seek read test CALL TREAD ;perform read test CALL TRSEK ;perform random seek CALL OTEC ;display error counters RET space 4,10  TITLE 'GBC Disk Test program.' ; Disk Diagnostic for CompuPro controller ; ; +-----------------------+ ; | | ; | Disktest | ; | | ; +-----------------------+ ; ; ; COMPUPRO ; Oakland Airport ; Oakland California ; ; Copyright 1980, Compupro Corporation. ; ; This product is a copyright program product of ; COMPUPRO and is supplied for use with the COMPUPRO ; Disk controllers. ; ; Version number: 2.2A ; Version date: October 27, 1980 ; ; The following code is supplied to customers who ; purchase a hard/floppy disk system from GBC. ; VER = '2' LEVEL = '2A' CR = 0Dh ;ASCII carriage return LF = 0Ah ;ASCII line feed BKSCHR = 08h ;ASCII baskspace ABTCHR = 03h ;ASCII control C PRMCHR = '>' ;prompt char BDOS = 0005h ;BDOS jump address RCO = 1 ;Read console WCO = 2 ;Write console RCB = 10 ;Read console (buufered) GCNS = 11 ;get console status RDS = 13 ;Reset disk system TBUFF = 0080h ;Command line buffer ; Assembly Constants DELCNT = 5000 ;Delay co DB '3 - Read test.',CR,LF DB '4 - Write verify read test.',CR,LF DB '5 - Random seek, read/write.',CR,LF DB CR,LF DB '* - Display all controller status bytes.',CR,LF DB 'D - Select drive.',CR,LF DB 'E - Display and clear error count.',CR,LF DB 'F - Format a diskette.',CR,LF DB 'H - Help me.',CR,LF DB 'R - Restart test.',CR,LF DB 'S - Set mode of disk (Single, double).',CR,LF DB 'X - Exit back to CPM.',CR,LF DC LF page FMTT: ;Format tracks ; Exit Disk reformatted. proc LDK A,-1 ;force selection CALL SDRV ;Select drive CALL SELFMT ;select mode of disk LD A,COD.N STO A,FMT.N ;set N for format MOV E,A LDK D,0 LDK HL,TFGPL ADD HL,DE LD A,[hl] ;get GPL for format STO A,FMT.G ;set into table CALL RDRV ;reset drive LDK HL,VFMTR CALL NLSTR ;verify user is ready CALL GANS JC DSKTR ;if no confirmation LDK HL,TRKDAT STO HL,BUFADR ;reset DMA LDK A,0 CALL UFN ;set Ns in table ; FORMAT track 0 as single. LDK HL,FMTR1 CALL IFMT ;issueTSEK: ;Seek and read test proc LDK A,1 STO A,ACTSEC ;set beginning sector LDK A,2 :3: STO A,CTRK CALL DOSEEK ;perform seek CALL RSEC ;read LD A,CTRK MOV C,A LDK A,MTRK SUB C CALL DOSEEK ;perform seek CALL RSEC ;read data LD A,CTRK INC A CMP MTRK JNZ :3 ;if not done LDK HL,TSEKM CALL OSTR RET TSEKM: DB CR,LF DC 'Seek Test complete.' CTRK: DB 0 ;current track space 4,10 TRSEK: ;Test random seek with read proc LD A,MSEC STO A,NSECS ;set to full track LDK A,100 :2: STO A,CTRK ;max tries CALL GNRN ;get next track STO A,ACTTRK ;set track CALL RSEC ;read CALL GNRN ;get next random number LDK B,0 MOV C,A CALL DELAY ;delay LD A,CTRK DEC A JNZ :2 ;if not done LDK HL,TRSEKM CALL OSTR RET TRSEKM: DB CR,LF DC 'Random Seek, read/write Test complete.' space 4,10 TWRT: ;Test writing sectors ; NOTE: this test takes about 8 minutes to run to ; completion on a floppy disk. proc CALL RDRV ;reset drive LDK A,1 STO ALL RSEC ;read next track LD A,ACTTRK CMP MTRK JNZ :2 ;if not done LDK HL,TRDM CALL OSTR RET TRDM: DB CR,LF DC 'Read test complete.' space 4,10 RSEC: ;Read sector ; Exit Cbit set if read error proc LDK HL,RTRY STO 0,[hl] ;clear retry count :2: LD A,ACTTRK CALL DOSEEK ;seek to track LDK A,F.RDAT LDK B,9 LDK C,7 CALL EXFNC ;issue read CMP 40h JNZ :3 ;if bad read LD A,LSTSB+1 CMP 80h RZ ;if good read :3: CALL USOFE ;update soft errors CMP MRTRY JNZ :2 ;if not max LD HL,RERCNT INC HL STO HL,RERCNT CALL OERR ;update errors STC ;indicate error RET RTRY: DB 0 ;retry count MVI C,GCNS CALL BDOS OR A JNZ DSKTR ;if abort SOFCNT: DW 0 ;Soft error count SERCNT: DW 0 ;total seek errors RERCNT: DW 0 ;read error count WERCNT: DW 0 ;write error count LSECB: DW 0 ;length of sector space 4,10 TRDIS: ;Test read and display proc LDK A,1 STO A,NSECS LDK HL,TRKN LD A,[hl] STO A,ACTTRK CALL GNUM ;Get track JC :2 STA FMT.N RET SELMS: DB cr,lf DB 'Select Disk format mode (0,1,2,3):',cr,lf DB '0 - 128 2 = 512',cr,lf DB '1 = 256 3 = 1024 ' DC PRMCHR SELFM: DB 00h,00h,07h,80h DB 40h,01h,0eh,0FFh DB 40h,02h,1bh,0FFh DB 40h,03h,35h,0FFh BUFLT: DW 128 DW 256 DW 512 DW 1024 page RDRV: ;Reset drive performing on ; Exit A = 0, transfer ok LDK HL,1 STO HL,ACTTRK ;track to 1 MOV A,L STO A,ACTSEC ;set sector = 1 LDK A,5 STO A,NSECS LDK HL,DSKB1 STO HL,BUFADR ;set FWA of load LDK A,0 STO A,BUFADE LDK HL,SPEC LDK B,3 LDK C,0 CALL EXEC ;Specify disk command CALL RCAL ;recalibrate drive 0 RET COD.F: DB F.RDAT+40h ;Command = read DB 0 ;hds,ds1,dso COD.T DB 1 ;C, track 1 DB 0 ;Head COD.BR DB 1 ;record COD.N DB 1 ;N=MFM mode 256 COD.FR DB 22 ;EOT COD.G DB 0Eh ;GPL, MFM 256 COD.D DB 0ffh ;DTL, MFM 256 LRCMD = *-COD.F page ; Output total error count ; Exit Error count cells cleared OTEC: LDK HL,OTMSG CALL NLSTRA,NSECS ;set # of sectors to 1 ; Get test pattern LDK HL,TPAT CALL GNUM ;get test pattern LD A,TPAT LD HL,LSECB EX DE,HL ;length to DE LDK HL,DSKB1 MOV C,A ; Fill write buffer with test pattern :2: STO C,[hl] INC HL DEC DE MOV A,D OR E JNZ :2 ;if not done with fill LDK A,0 ; Write track loop :5: INC A STO A,ACTTRK STO A,DSKB1 ;set track as first byte LDK HL,TRKM CALL OSTR ;output track message LD HL,ACTTRK CALL NOUT ;output track LD A,ACTSEC DEC A ; Write sector loop :6: INC A STO A,DSKB1+1 ;set sector as 2nd byte STO A,ACTSEC LDK HL,DSKB1 STO HL,BUFADR CALL WSEC ;write sector LDK HL,DSKB2 STO HL,BUFADR ;set read buffer different CALL RSEC ;now read back ; Now compare buffers for equal LD HL,LSECB MOV B,H MOV C,L LDK DE,DSKB1 LDK HL,DSKB2 :7: LD A,[de] CMP [hl] JZ :9 ;if equal ; *** output data error *** CALL WERR ;indicate write error :9: INC DE INC HL DEC BC MOV A,B OR C JNZ :7 ;if not do ;if error STO A,ACTTRK :2: LDK HL,SECN LD A,[hl] STO A,ACTSEC CALL GNUM JC :4 ;if error STO A,ACTSEC :4: LDK HL,DSKB1 STO HL,BUFADR CALL RSEC LDK HL,DSKB1 LD HL,LSECB EX DE,HL ;length LDK HL,DSKB1 CALL DMEM ;display buffer LDK HL,TDMSG CALL NLSTR CALL GANS ;get answer JNC TRDIS ;if again RET TDMSG: DC 'Again ? (y) : ' TRKN: DB 0 DC 'Enter track to use : ' SECN: DB 0 DC 'Enter sector to use: ' page ; Select drive ; Entry A= -1, request disk, else use A as disk drive ; Check for repeat of previous FORMAT, 2**7 on. SDRV: proc CMP -1 JNZ :2 ;If drive known SDRVA: LDK HL,SDRVM CALL NLSTR ;send format request MVI C,RCO ;Read console CALL BDOS CALL NORM SUI 'A' JM SDRVA ;if illegal CMP 'D'+1-'A' JP SDRVA ;If illegal :2: STO A,ACTDSK ;set active disk ADI 'A' STO A,PRMDRV ;set into prompt ; Try and determine density of device CALL DDTYP ;Determine disk type STA ACTTYP JZ SETDP ;If type determined JMP SELFMT S LDK HL,OTRD CALL NLSTR LD HL,RERCNT CALL NOUT ;output counter LDK HL,OTWT CALL NLSTR LD HL,WERCNT CALL NOUT ;output write errors LDK HL,OTSK CALL NLSTR LD HL,SERCNT CALL NOUT ;output seek errors LDK HL,OSFE CALL NLSTR LD HL,SOFCNT CALL NOUT ;output soft errors ; Clear all error counters CERF: LDK HL,0 STO HL,RERCNT ;clear read error count STO HL,WERCNT ;clear wrt error count STO HL,SERCNT ;clear seek STO HL,SOFCNT ;clear soft errors RET OTMSG: DC 'ERROR counters are: ' OTRD: DC ' Read errors : ' OTWT: DC ' Write errors : ' OTSK: DC ' Seek errors : ' OSFE: DC ' Soft errors : ' space 4,10 USOFE: ;Update soft error count ; Exit RTRY updated LD HL,SOFCNT INC HL STO HL,SOFCNT LD A,RTRY INC A STO A,RTRY RET space 4,10 OERR: ;Output error ; Entry STSCNT = number of valid status bytes ; FNCODE = last function code proc CALL CKABT ;check for abort PUSH HL ! PUSH DE ! PUSH BC LDK HL,ERMSG CALL NLSTR ;indicate errorne ; Check for all sectors LD A,MSEC MOV C,A LD A,ACTSEC CMP C JNZ :6 ;if not all sectors ; Check for all tracks LDK A,1 STO A,ACTSEC ;reset sector # LD A,ACTTRK CMP MTRK JNZ :5 ;if not done LDK HL,TWRTM CALL OSTR RET TWRTM: DB CR,LF DC 'Write verify read Test complete.' TPAT: DB 0F0h DC 'Test Pattern is : ' TRKM: DB CR DC 'Track # - ' space 4,10 WSEC: ;Write a sector proc LDK HL,RTRY STO 0,[hl] ;clear retry count :2: LD A,ACTTRK CALL DOSEEK ;seek to track LDK A,F.WRT LDK B,9 LDK C,7 CALL EXFNC ;issue read CMP 40h JNZ :3 ;if bad read LD A,LSTSB+1 CMP 80h RZ ;if good read :3: CALL USOFE ;update soft errors CMP MRTRY JNZ :2 ;if not max ; Here on any type of write error WERR: PUSH HL LD HL,WERCNT INC HL STO HL,WERCNT POP HL JMP OERR ;update errors space 4,10 TREAD: ;Test reading sectors proc CALL RDRV ;reset drive LD A,MSEC STO A,NSECS ;read whole track LDK A,0 :2: INC A STO A,ACTTRK CDRVM: DB 'Specify drive (A: - D:) :',BKSCHR DC BKSCHR page SELFMT: proc ;Select disk mode format LDK HL,SELMS CALL OSTR MVI C,RCO ;Read console CALL BDOS CMP ' ' JZ :SFMT1 ;if no change JC DSKTR ;if abort CMP '0' JM SELFMT ;If illegal CMP '3'+1 JP SELFMT ;If illegal SUB '0' RLC MOV C,A LD A,ACTTYP ANI 1 ;Extract sided bit ORA C SETDP: ANI 0FEh ;Remove sided bit RLC ;n*4 LDK D,0 MOV E,A LDK HL,SELFM ADD HL,DE LD A,[hl] ! STO A,COD.F ! INC HL LD A,[hl] ! STO A,COD.N ! INC HL LD A,[hl] ! STO A,COD.G ! INC HL LD A,[hl] ! STO A,COD.D ! INC HL LD A,COD.N MOV E,A LDK HL,TFGPL+4 ADD HL,DE LD A,[hl] STO A,FMT.S STO A,MSEC ;set max sectors/track ; Now set max sector buffer size MOV A,E RLC MOV E,A ;*2 LDK HL,BUFLT ADD HL,DE LD A,[hl] STO A,LSECB MOV E,A INC HL LD A,[hl] STO A,LSECB+1 ;set buffer length MOV D,A LDK HL,PRMSIZ EX DE,HL CALL CBD4 ;convert to decimal :SFMT1: LDA COD.N ;Save format code LD A,FNCODE CALL HOUT ;output in hex LDK HL,STMSG CALL OSTR LD A,STSCNT MOV C,A LDK HL,LSTSB INC C ! DEC C :2: JZ :4 ;if all done LD A,[hl] ;get status byte CALL HOUT ;output hex INC HL DEC C JMP :2 ;loop :4: POP BC ! POP DE ! POP HL RET ERMSG: DC ' ERROR, Func= ' STMSG: DC 'Status bytes= ' FNCODE: DB 0 STSCNT: DB 0 ;number of valid status bytes space 4,10 OSTS: ;Output status to terminal ; Entry A= status byte PUSH BC MOV B,A ;save status STO A,[de] ;save in table INC DE ;update pointer MOV C,A LD A,OUTF OR A JZ :3 ;if no direct output MOV A,C ;status byte CALL HOUT ;output byte in hex :3: POP BC RET page ; DDTYP - Determine floppy disk type. ; ; ENTRY C = Selected drive. ; ; Exit Zbit set = no error ; A = disk type (0-3) DDTYP: MOV A,C ADI 'A' STA NRDYM2 ;Set drive into message LDK HL,DSTS LDK B,DSTSL LDK C,0 CALL EXECP ;Perform command LDK B,1 CALL GCMPS ;Get the one status byte ANI 020h ;Mask ready; Entry B= Number+1 of status bytes to ; input. ; HL= Exit address ; Exit A= ST0, status INT: IN INTS OR A JP INT ;if not done ; Get completion status. ; Entry B= # of status bytes to read GCMPS: GCS2: IN FDCS OR A JP GCS2 ;if not ready ; Read in (B) status bytes ; ST0,1,2, C,H,R and N LDK DE,LSTSB ;last status bytes GCS3 IN FDCS OR A JP GCS3 ;if nnt ready IN FDCD ;read status STO A,[de] INC DE ;for next store DEC B ;decrement counter JNZ GCS3 ;wait until all done LD A,LSTSB ANI 0F8h ;ignore us0,1 bits RET LSTSB: DB 0,0,0,0,0,0,0 page ; Seek to specified Track/Sector ; Entry A = track. ; ; Exit Cbit set if seek error DOSEEK: STO A,DSEKC+2 STO A,ACTTRK LDK A,2 STO A,STSCNT LDK HL,DSEKC LDK B,3 MOVETO: LDK C,0 CALL EXECP ;perform positioning DSEK2: IN INTS OR A JP DSEK2 ;if not complete LDK A,F.RSTS OUT FDCD ;request status LDK B,2 CALL GCMPS ;read status CMP 20h RZ ;If on track LDA LSTSB ;Get CMP '5'+1 JP GNC ;if illegal option SUB '0' RLC MOV E,A LDK D,0 LDK HL,TNUMC ADD HL,DE LD E,[hl] INC HL LD D,[hl] ;get address in DE EX DE,HL RET CMDP: PRMSIZ: DB ' ' PRMDRV: DB 'A' DC '>' ; Here if not number command ; check for alpha :10: CALL NORM ;normalize char CMP '*' JNZ :11 ;if not Display status LD A,OUTF CMA STO A,OUTF ;reset status JMP GNC :11: CMP '?' JNZ :13 ;if not help :12: LDK HL,IMSG CALL OSTR JMP GNC ;try again :13: CMP 'H' JZ :12 ;if help ; Test for select drive LDK HL,SDRVA CMP 'D' RZ ;if select drive ; Test for reset CMP 'R' JZ RESTRT ;if restart ; Test for select CMP 'S' LDK HL,SELFMT RZ ;if select mode ; Test for output total errors CMP 'E' LDK HL,OTEC RZ ;if output errors CMP 'X' JZ EXIT ;if exit back to cpm CMP 'F' LDK HL,FMTT RZ ;if format command LDK HL,DSKT1 RET TNUMC: ;Command jump table DW TCONF ;confidence test DW TSEK DW TRDIS  bit JNZ DTYP1 ;If drive is ready LDK HL,NRDYM1 CALL OSTR ORI 0FFh ;Clear zero flag RET DTYP1: LDA LSTSB ;Get status byte ANI 008h ;Mask TS bit RRC RRC RRC STA ACTTYP ;Save sided flag LDK HL,RECAL ;Do a test seek LDK B,LRECAL CALL MOVETO ;Process command RNZ ;If error LDK A,2 ;Seek to track two CALL DOSEEK ;Do seek RNZ ;If error LDK A,F.DRID STA DRID DTYP2: LDK HL,DRID LDK B,DRIDL LDK C,7 CALL EXECP ;Process command JZ DTYP3 ;If read valid LDA DRID XRI 040h ;Compliment MFM bit STA DRID ANI 040h JNZ DTYP2 ;If MFM not tried ORI 0FFh RET DTYP3: LDA LSTSB+6 ;Get number of bytes ADD A MOV B,A LDA ACTTYP ORA B ;Combine N with sided flag CMP A ;Set zero flag RET DSTS: DB F.DSTS DB 0 DSTSL: = *-DSTS DRID: DB F.DRID DB 0 DRIDL: = *-DRID NRDYM1: DB CR,LF,'Drive ' NRDYM2: DB 'x' DC ' not ready.' page ; Execute function ; Entry A = Function code ; B = # of bytes to output ; C = # of bytes fo status from buffer ANI 3h ;Mask unit number MOV C,A LD A,ACTDSK CMP C JNZ DSEK2 ;If not same unit LD HL,SERCNT INC HL STO HL,SERCNT CALL OERR STC RET space 4,10 RCAL: ;Recalibrate drive LD A,ACTDSK STO A,RECAL+1 ;set drive LDK HL,RECAL LDK B,2 JMP MOVETO ;process command DSEKC DB F.SEEK DB 0 DB 0 SPEC DB F.SPEC VFD 4\SRT,4\HUT VFD 7\(HLT+1)/2,1\ND LSPEC = *-SPEC RECAL DB F.RECA,0 LRECAL = *-RECAL space 4,10 SDMA: ;Send DMA to controller PUSH HL ;save user's HL LDK HL,BUFADE LDK E,3 SDMA1: LD A,[hl] ;get ext adr OUT FDMA DEC HL ;data is backward in memory DEC E JNZ SDMA1 ;if not all 3 bytes POP HL RET page PARG: ;Process command line arugments proc IN INTS ;free status JP :3 ;if no pending int ; input any hanging status :2: IN FDCS OR A JP :2 ;if all done IN FDCD CMP 80h JNZ :2 ;if not done ; process any command argument :3: LD A,TBUFF OR A LDK C,-1 ;indicate un-initialized JZ :4 ;if no ar DW TREAD DW TWRT DW TRSEK page CKABT: ;Check for abort ; Exit to master loop if console active PUSH HL ! PUSH DE ! PUSH BC MVI C,GCNS CALL BDOS POP BC ! POP DE ! POP HL OR A RZ ;if no abort MVI C,RCO ;trash char CALL BDOS JMP DSKTR ;anew space 4,10 NORM: ;Normalize character UPPER ;Entry A= char ;Exit A= normalized char CMP 'a' RM ;if not lower case CMP 'z'+1 RNC ;if not lower case SUI 'a'-'A' RET space 4,10 HOUT: ;Output hex followed by space CALL HNOUT LDK A,' ' JMP CONOUT ;one space HNOUT: ;Output hex data to terminal ; Entry A= byte to output MOV B,A ;save byte RRC ! RRC ! RRC ! RRC ANI 0Fh CALL OHN ;output high MOV A,B ANI 0Fh CALL OHN ;output low RET space 4,10 ; Output hex nibble. OHN: ADI 90h DAA ACI 40h DAA JMP CONOUT space 4,10 NLSTR: ;Output newline followed by message PUSH HL CALL CRLF POP HL ; JMP OSTR OSTR: ;Output message to console ; Entry HL= FWA of message LD A,[hl] OR A ;cher status ; Exit None EXFNC: MOV E,A LD A,COD.F ANI 1110_0000b ;high 3 bits only OR E STO A,COD.F ;set code LD A,ACTTRK STO A,COD.T LD A,ACTSEC STO A,COD.BR DEC A MOV E,A LD A,NSECS ;Note, cannot be 0 ADD E STO A,COD.FR ;set EOT CALL CKABT ;check for abort LDK HL,COD.F ;FWA of function block EXECT: CALL SDMA ;Set DMA EXECP: INC HL LD A,ACTDSK ;Set drive into command table STO A,[hl] DEC HL EXEC: PUSH BC ;save length LD A,[hl] STO A,FNCODE ;Save last function code EXEC1: IN FDCS OR A JP EXEC1 ;if no master ready bit LD A,[hl] ;command byte OUT FDCD ;to controller INC HL DCR B JNZ EXEC1 ;if more bytes POP BC MOV A,C ;# of status bytes+1 OR A STA STSCNT RZ ;if no status bytes MOV B,C ;# of status bytes LD A,OUTF ORA A JZ INT ;If no direct output CALL CRLF LD A,FNCODE MOV D,B CALL HOUT ;Output function MOV B,D ; JMP INT ; Check for no status function ; If so, exit without checking DMA ; Status. guments LD A,TBUFF+2 CMP 'A' LDK C,0 ;default drive=0 JM :4 ;if not legal drive CMP 'P'+1 JP :4 ;if not legal drive SUB 'A' MOV C,A ;set drive :4: MOV A,C STO A,ACTDSK ;set drive CALL CERF ;clear error flags RET space 4,10 GNRN: ;Get next random number ; Exit A= number LDK HL,RNDV LD A,[hl] RLC INC A RLC RLC XRA [hl] STO A,[hl] CMP 1 JC GNRN ;if too small CMP MTRK+1 RC ;if in range JMP GNRN RNDV: DB 5Ah ;seed space 4,10 ; Delay n milliseconds ; Entry BC= length DELAY: proc :1: LDK A,DELCNT/26 :2: DCX B INX B DCR A JNZ :2 ;If 1 millisecond not elapsed DEC BC MOV A,B OR C JNZ :1 ;If time interval not elapsed RET space 4,10 GNC: ;Get command character ; Entry None ; Exit A= next command character ; HL=address for command proc LDK HL,CMDP CALL NLSTR ;prompt user :1: MVI C,RCO ;get command CALL BDOS CMP ' ' JZ :1 ;if leading blank CMP '0' JM :10 ;if not number CMP '9'+1 JP :10 ;if not number ck sign bit PUSH AF MOV C,A CALL CONOUT ;output char POP AF INC HL JP OSTR ;if not done RET space 4,10 GANS: ;Get answer to 'y' question ; Exit Cbit set if NO. MVI C,RCO CALL BDOS CALL NORM CMP 'Y' STC RNZ ;if NO confirmation CLC RET space 4,10 CRLF: ;Output new line ; Must perserve all registers LDK A,CR CALL CONOUT LDK A,LF JMP CONOUT space 4,10 O2SP: ;Output 2 spaces CALL OSP OSP: ;Output one space LDK A,' ' ; JMP CONOUT space 4,10 CONOUT: ;Output character to console ; Entry A=character ; Exit DE=DE,BC=BC,HL=HL PUSH HL ! PUSH DE ! PUSH BC MOV E,A MVI C,WCO CALL BDOS POP BC ! POP DE ! POP HL RET page NOUT: ;Output decimal number ; Entry HL= number ; Exit Number sent to console LDK DE,TEMN CALL CBD5 LDK HL,TEMN CALL OSTR RET TEMN: DC ' ' space 4,10 ;CBD Convert Binary number to Ascii Decimal ; with leading zero suppression. ; Entry HL= value to convert. ; DE-> Fwa to store conversion. CBD5: LK BC,-N JZ :21 ;If at end of line MOV L,A ;pad length :20A: MOV A,L INR L ANI NEWLN JZ :21 ;If all done CALL O2SP ;Output two spaces CALL OSP ;output third space JMP :20A ;next ; Now output the ASCII equivalent of data, filtering ; out non-displayable characters :21: POP H ;restore FWA CALL O2SP ;output 2 spaces CALL OSP ;output 3rd space :22: LD A,[hl] ANI 7Fh ;ignore parity for ASCII echo MVI C,'_' ;use for illegal character CPI ' ' JC :24 ;If illegal control character CPI 7Fh JNC :24 ;If NOT displayable character MOV C,A ;ok character :24: MOV A,C CALL CONOUT CALL CDEHL INX HL RC ;if all done MOV A,L ANI NEWLN JNZ :22 ;If not full line ; Check for output of 128 bytes, if so output ONE ; blank line DCR B JNZ :5 ;If not 128 CALL CRLF ;Output blank line JMP :4 ;reset counter CDEHL: ;Compare DE to HL MOV A,D CMP H RNZ MOV A,E CMP L RNZ STC RET page GNUM: ;Get number from user ; Entry HL-> Current value, followed by P '9'+1 JC NUMB3 ;If decimal digit CMP 'a' xor 020h JC NUMB2 ;If below alpha, end of field CMP ('z'+1) xor 020h JNC NUMB2 ;if not alfabetic, end of field NUMB3: INC C ;count "digits" INC HL JMP NUMB1 ;loop thru alphanumerics ; C= length OF number Field ; HL-> terminating char NUMB2: DEC HL LD B,[hl] ;B= last character EX [sp],HL ;stack ^Last, HL-> First MOV A,C OR A JZ DEC8 ;If empty number, ERROR MOV A,B ;check for post-radix DEC C JZ NUMB5 ;If single digit CMP 'b' xor 020h JZ BINN ;If Binary CMP 'n' xor 020h JZ DEC ;If Decimal CMP 'q' xor 020h JZ OCT ;If Octal CMP 'h' xor 020h JZ HEX ;If HEX NUMB5: INC C ; Convert Decimal number DEC: MOV A,C CMP 2 JM DEC4 ;ONE digit Conversion JZ DEC3 ;TWO digitS CMP 4 JM DEC2 ;THREE digitS JZ DEC1 ;FOUR digitS LDK BC,10000 ;FIVE digit Conversion CALL DECC DEC1: LDK BC,1000 CALL DECC DEC2: LDK BC,100 CALL DECC DEC3: LDK BC,10 CALL DECC DEC4: LDK BC,10000 CALL CBO ;convert Ten-Thousands digit CALL CLZ CBD4: CBD: LK BC,-1000 CALL CBO ;convert Thousands digit CALL CLZ ;CHECK LEADING ZEROS CBD3: LK BC,-100 CALL CBO CALL CLZ CBD2: LK BC,-10 CALL CBO CALL CLZ MOV A,L ADI '0' STAX D LK A,'0' STA CLZA ;RESET TO IGNORE LEADING ZEROS RET space 4,10 ;CBO Convert ONE digit TO Decimal HEX ; ENTRY (A) = number CBO: LK A,'0' PUSH DE CBO1: MOV E,L MOV D,H INR A DAD B JC CBO1 ;IF not DONE DCR A MOV L,E MOV H,D POP DE RET ;CLZ Check for leading zeros and if found ; change to leading SPACES. ; ENTRY (A) = number CLZ: MOV B,A LDA CLZA CMP B JNZ CLZ4 ;If 1st Leading digit found LK A,' ' STAX D CLPLUG: INC DE ;plug with RET if no leading spaces RET CLZ4: MOV A,B STAX D INC DE LK A,0FFH STA CLZA ;SET TO IGNORE LEADING ZERO RET CLZA: DB '0' page DMEM: ;Display memory on console proc ; Display Main loop ; Dis; prompt message string ; Exit Cbit set if no # ; A= low of # proc PUSH HL INC HL CALL NLSTR ;output prompt string LDK A,'(' CALL CONOUT POP HL PUSH HL LD A,[hl] CALL HOUT ;output current value LDK A,')' CALL CONOUT LDK A,' ' CALL CONOUT ;space CALL RNUM ;read number POP HL MOV A,E JC :5 ;if no number STO E,[hl] ;reset :5: PUSH AF ;save flags CALL CRLF POP AF ;flags and low of number RET space 4,10 RNUM: ;Read number ; Exit DE= number ; Cbit set if illegal or NONE proc MVI C,RCB LXI D,TEMB CALL BDOS LDK HL,TEMB+1 LD A,[hl] OR A STC RZ ;if NO data MOV C,A INC HL :3: LD A,[hl] ;next char CALL NORM STO A,[hl] ;replace as UPPER INC HL DEC C JNZ :3 ;if not all normalized STO 0,[hl] ;set eos LDK HL,TEMB+2 CALL NUMBR ;convert number RET TEMB: DB 30 DS 30 space 4,10 ; NUMIN converts a number to its value (garbage results if ; value exceeds 2**16-1 = 65535). An optional post-radix ; may be specifie1 CALL DECC ; Set exit conditions for GOOD number DEC5: CLC ;clear error indicator DEC7: POP HL ;reply HL-> Last POP BC RET ; Set exit conditions for BAD number DECE: POP BC ;discard DECC return address DEC8: STC ;Indicate error in Field JMP DEC7 ; process conversion of Decimal digit ; BC= unit value ; HL-> character ; Exit to DECE if error ; DE updated DECC: LD A,[hl] SUB '0' JM DECE ;If character below digits CMP 9+1 JP DECE ;If character above digits INC HL OR A RZ ;If digit = 0 EX DE,HL DECC1: ADD HL,BC DEC A JNZ DECC1 ;If not DONE EX DE,HL RET ; Convert Octal number OCT: LD A,[hl] SUB '0' JM DEC8 ;If character below digits CMP 7+1 JP DEC8 ;If digit exceeds radix OR E MOV E,A DEC C INC HL ;next digit JZ DEC5 ;If all digits processed EX DE,HL ADD HL,HL ADD HL,HL ADD HL,HL EX DE,HL JMP OCT ; Convert Hexadecimal number HEX: LD A,[hl] CMP '0' JM DEC8 ;Iplay bytes to user. ; DE= Length ; HL= FWA NEWLN = 16-1 ;length of line DEC DE ;length-1 for compute of LWA EX DE,HL ADD HL,DE EX DE,HL ;set lwa :4: MVI B,8 ;8 lines then blank line :5: CALL CRLF ;ECHO CARRIAGE RETURN/LINE FEED MOV A,H SUI high(DSKB1) CALL HNOUT ;high byte of adr MOV A,L CALL HOUT ;low byte with space following CALL O2SP CALL OSP ;one more space PUSH HL ;save starting adr MVI C,0 ;initialize counter :10: PUSH BC ;save counter MOV A,L RRC CNC OSP ;Output space if even byte LD A,[hl] ;Get contents of next memory location CALL HNOUT ;display contents CALL CKABT CALL CDEHL ;check for end of request POP BC INR C ;update counter JC :20 ;If end found, output remaining ASCII INX HL ;If more to GO, point to next LOC to display MOV A,L ;Get LOW order bits of NEW Address ANI NEWLN ;check for 16 JNZ :10 ;If NOT at end of line ; Now check to see if pad need to align ASCII text ; C= count of bytes this line :20: MOV A,C ANI NEWLd: ; B 2 Binary ; Q 8 Octal ; N 10 Decimal ; H 16 Hexadecimal ; If the string contains no explicit radix (last character ; is not one of the above), the caller may specify the ; default radix. The cell NUMBAS should contain Ascii ; B, Q, or H. If NUMBAS is not defined, or has another ; value then N (= decimal) is assumed. An error is ; reported if a digit greater than the radix appears, or ; the radix appears, or if the field is empty. "Digit" means ; if the field is empty. "Digit" means '0'..'9' or ; 'A' .. 'Z'. ;NUMBR Convert Ascii number to value. ; Entry HL-> first character of possible number ; NUMBAS= default radix specifier. ; If 2**7 set, pre-radix specified. ; If NUMBAS not DEFined, decimal assumed. ; Exit Cbit set if error ; DE= result value. ; HL-> last character of number. ; Preserves BC. NUMBR: PUSH BC PUSH HL LDK DE,0 MOV B,D MOV C,D NUMB1: LD A,[hl] ;GET NEXT SOURCE Character CMP '0' JC NUMB2 ;If below digits, end of field CMf not number CMP '9'+1 JM HEX1 ;If HEX CMP 'a' xor 020h JM DEC8 ;If not number CMP ('f'+1) xor 020h JP DEC8 ;If not number SUI 7 HEX1: AND 0Fh OR E MOV E,A INC HL DEC C ;decrement digit processed count JZ DEC5 ;If all digits processed EX DE,HL ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,HL EX DE,HL JMP HEX ; Convert Binary number BINN: LDK DE,0 ;initialize results BINN1: LD A,[hl] SUI '0' JM DEC8 ;If illegal number CMP 1+1 JP DEC8 ;If illegal number EX DE,HL ADD HL,HL ;left shift 1 OR L ;add in this bit MOV L,A EX DE,HL INC HL ;next user character DEC C ;count-1 JNZ BINN1 ;if not all processed JMP DEC5 page ; Temporaries and buffer OUTF: DB 0 ;Console output flag BUFADR: DW 0 ;lsbs of address BUFADE: DB 0 ; Disk access information. ; This area is organized into the following groups ; disk drive ; track number ; sector number ; drive type ACTDSK: DS 1 ;Actual transfer operation ACTTYP: DS 1 ;ActuElectronics. fstlnk equ 50h ;first place where MPX goes to get command linkad equ 41h ;after "size" instruction, new link address ;is at this location mpxatn equ 0F1h ;MPX attention port ldcpm equ 00h fdos equ ldcpm+05h mpxcod equ 300h ;this is where the MPX routine is put in ;in main memory to be loaded to the mpx. ;If the program that the main CPU runs grows, ;this address might have to be increased. mpxdst equ 300h ;where code goes in MPX RAM. iospot equ 40h ;the MPX looks here in main memory to find ;out what I/O device is on the bus. (I/O 1-2, ;Sys Sup,I/O 3-4,Bit Bang) org 100h begin: call crlf lxi h,load ;message is 'Loading '. call write lxi h,chksiz lxi d,fstlnk call mpxins ;load mpx command 'checksize' at ;location 'firstlink' out mpxatn ;run 'checksize' on MPX sized: lda fstlnk+1 ;has MPX finished checking size ora a jz sized lda fstlnk+0EH ;result byte 1. ora a ;if FFH then 16K, if 00H then 4K jz wrtfor lxrite: push d push b writ: mov a,m ;this small routine prints chars ora a ;starting at location HL and jz fin ;continues printing until an ;00h is encountered at which mvi c,02h ;time it returns. mov e,a push h call fdos pop h inx h jmp writ fin: pop b pop d ret *---------------- mpxins: push b mvi b,00h insl: mov a,m ;this routine takes information xchg ;from @HL and puts it @DE. a mov m,a ;total of 16 bytes are transferred. xchg ;this is for loading the MPX command. inx d inx h inr b ;check for 16 bytes mvi a,10h cmp b jnz insl pop b ret *----------------- load: db 0dh,0ah,'Loading MPX ',0h sxtn: db '16K ',0h fork: db '4K ',0h mormsg: db 'with routine to test DMA arbitration by accessing' db 0dh,0ah,'system memory from 010000H to 01FFFFH.',0h loaded: db ' Loaded.',0h crappy: db ' at 010000H to 01FFFFH.',0dh,0ah,0h okmsg: db ' Running.',0dh,0ah,0h chksiz: db 06h,00h,00h,00h,00h,00h,00h,00h,00h,00h,00h dw lial disk's type ACTTRK: DS 2 ;Actual transfer operation ACTSEC: DS 1 ;Actual transfer operation MSEC: DS 1 ;Max sectors per track NSECS: DS 1 ;Actual # of sectors to xfer DS 2*30 STK: DS 0 ; Disk buffer ORG ((*+100h)/100h)*100h DSKB1: DS 0 DSKB2: = *+1024+1 ;2nd disk buffer END i h,sxtn call write jmp loader ;finished sizing, now load program wrtfor: lxi h,fork call write *now the MPX has run the size routine and the CRT either says * "Loading 16K " or "Loading 4K ". *The new Link Address is now 'linkad' *The loader routine now instructs the MPX to load the memory and *DMA test routine form the main memory. loader: lxi h,mormsg ;just more message to the terminal call write lxi h,ldram ;inst to load MPX RAM from sys RAM lxi d,linkad ;second link address call mpxins ;load command bytes from 'linkad' up out mpxatn prgld: lda linkad+1 ;is MPX finished loading ora a jz prgld lxi h,loaded ;finishes loading MPX RAM call write *now the MPX has loaded the its RAM with the program that it *is going to run. Now we only have to tell it to run the program runner: lxi d,linkad lxi h,exram ;instruction to execute a program call mpxins ;load command bytes out mpxatn *now the MPX is running the program to test its DMA. The nkad db 00h,00h,00h ldram: db 07h,00h dw mpxcod db 00h dw mpxcod+1FFh ;the mpx code is less than db 00h ;200H bytes long. dw mpxdst db 00h dw linkad db 00h,00h,00h exram: db 08h,00h dw mpxdst db 00h,00h,00h,00h,00h,00h,00h dw linkad db 00h,00h,00h *==============================================================+ *Below here is the MPX routine which will be loaded and run. *It simply moves through the second page of main memory *looking for an error. It *is always checking location 'linkad+0Fh' for an '0F0H' which *will signal for it to finish its test and return a verdict *on the DMA activity. *============================================================== dmalo equ 8004H dmahi equ 8005H mpxst equ 024FH ;Internal MPX stack pointer. err equ 0260H ;When the MPX gets an error in ;its ramblings, it puts an FFH ;here. mpxres equ 4000H ;this is the beginning of the ;mpx initializtion routine for ;resetting the MPX. secpag equ 01H extwi*The purpose of this program is to load the MPX with a routine *which will continuously exercise its DMA. The idea is to run *this routine simulteneously with the DISK1 to make sure that the *DISK1 is exercising its priority properly. This routine will *simply read and write to locations from 10000H to 1FFFFH until it *is told to stop by the sister routine "HOWRYOU.COM". This second *routine places a '0FH' at location 4FH in main memory which tells *the MPX that its time to finish up and tell the system whether *any mistakes have been made in all of its memory accessing. *The main program can make a system call to output to the *terminal but the MPX can't. This was resolved by looking at *location 'IOSPOT' (40h at writing) to see what device is being *used. This is all pretty well explained in the last part of the *program. The bottom line is that I/O1,2,3,4, and Sys Sup's can *all be used by the test as the console (3,4 assume user active). *Written by D.A.Plomgren, 1/83, for Godbout MPX will *put in the first part of its routine a 'AAH' at location 'linkad+1' *in main memory to signify that it has indeed started running, and *it has found some memory in the second page. If it does not find *any memory in the second page, MPX puts a '55h' at location 'linkad+1' *and writes a nasty messasge to the terminal. finish: lda linkad+1 ;get signal byte ora a jz finish ;MPX has returned something cpi 0AAh ;memory is O.K. jz goodmg cpi 055h ;Memory is not there. jnz finish ;If not aah and not 55h, wait until ;mpx returns one or the other. lxi h,crappy call write ;write a nasty message to the terminal jmp reboot goodmg: lxi h,okmsg call write reboot: jmp ldcpm ;re-boot CPM *these next sub's and defines are neeeded by the main program, *but not the mpx. crlf: mvi c,02h ;this routine just sends mvi a,0ah ;a carriage return and line call fdos ;feed to the terminal. mvi c,02h mvi a,0dh call fdos ret *------------------ wn equ 0C000H org mpxcod ;this address is where the MPX code ;first resides in main memory for the ;mpx to load into its own memory. mpxrou: lxi sp,mpxst ;initialize stack pointer xra a sta mpxst ;clear top of stack. sta err ;clear error location. *now check for memory in second page-10000H to 1FFFFH by looking at *location 010100H and 01FFFFH for some. mvi a,secpag ;high address of second page sta dmahi sta dmalo lxi h,extwin mov a,m ;get byte form main memory cma mov b,a ;save mov m,a ;put back in memory mov a,m ;get it back cmp b ;compare it jnz nomem mvi a,0ffh ;now to 01ff00 sta dmalo mov a,m ;this is exactly as above. cma mov b,a mov m,a mov a,m cmp b jnz nomem yesmem: lxi h,mpxis ;write message 'MPX is ' call writem xra a ;place good news ('aah') at sta dmalo ;'linkad+1' in main memory sta dmahi lxi h,extwin+linkad+1 mvi a,0AAh mov m,a ;put aah to memory jmp intd ;now start memory test  with stored complement. cnz error ;if they don't match, crap out--but ;continue testing. inr b ;put one greater than last test back mov m,b ;into memory. inx d ;try next memory location. jmp chkfin ;back to check status. error: push psw mvi a,0ffh ;when a memory error occurs, place sta err ;0ffh at the err location. pop psw ret *this prog is needed by the MPX but not the main prog. *This routine goes to location 'iospot' in main memory to find the *I/O device. A 00H indicates a I/O 1-2 (Ports 0,1), a 01H indicates *a bit banger, a 02H says System Support(ports 5ch,5dh), and *a 03H says Interfacer 3 or 4(port 10,11h). The initial address *of the string is @HL and the end is marked with an ascii 00H tbmt equ 01h writem: push b ;WRITE a message to the Console***** push d xchg ;put string address in DE lxi h,extwin+iospot ;what does iospot say the interfacer ;type is. mov a,m cpi 00h jz printm ;00H is already in var 'putchr+1' an; ; 7 DEC 82 ; ;THIS TESTS A DUAL PROCESSOR BY SWAPPING REPEATEDLY FROM 85 ;TO 88 AND BACK AGAIN. THIS TEST IS IN 85 CODE; ;THE 86 PORTION OF THE TEST IS ENTERED USING THE ASSEMBLER ;DIRECTIVE "DB" OR "DEFINE BIT". ;THIS VERSION OF THE TEST INCLUDES AN OUTPUT OF FFH TO MEM ADRS ;F000 TO INFORM THE MAIN TEST PROGRAM THAT AN ERROR HAS OCCURRED. ;THEREFORE, THIS VERSION ("SWAP85") SHOULD NOT BE USED FOR LAB ;TESTING THAT DOES NOT USE A MAIN SUBMIT PROGRAM; INSTEAD, THE ;"SWAP5" TEST SHOULD BE USED IN THE LAB. ; ; BDOS EQU 0005H ;SYSTEM UTILITY PSTRING EQU 09 REBOOT EQU 0000H ;SYSTEM REBOOT CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED CONOUT EQU 2 SWPORT EQU 00FDH ;SWAP PORT ; ORG 100H LXI D,STRTMSG ;LOAD START MESSAGE CALL PRINT ;PRINT IT SWAPSLEFT: DB 0 ;RESERVE MEM FOR SWAPCOUNTER VAR ; ;FOLLOWING LOADS 88 JUMP TO 400H AT FFF0H ; MVI A,0EAH ;88 JUMP INSTRUCTION STA 0FFF0H ;STORE JUMP FOR 8088 MVI A,00H ;BEGINNING OF 8088 JMP ADRS STA nomem: lxi h,nommsg call writem ;give first part of bad memory ;message. xra a sta dmalo ;Place bad news '55h' at linkad+1 sta dmahi ;in main memory. lxi h,extwin+linkad+1 mvi a,55h mov m,a ;put 55h to main memory. jmp mpxres ;this goes to the mpx routine which ;initializes the MPX to its power-on ;benign state. *now the routine has checked whether main memory exists or not in the *second page. If it does, the memory tests now starts below. If not, *the MPX jumps to the EPROM for reset. intd: lxi d,0h chkfin: lxi h,extwin+linkad+0fh xra a sta dmalo sta dmahi mov a,m ;see if main program wants mpx ;to finish up. If MPX finds a F0h ;at 'linkad+0Fh', it is time to finish cpi 0F0h jnz testm lda err ;now mpx will finish testing, and ora a ;check if its had any errors. jz goodmm lxi h,notsg ;We've had errors, so say so. call writem mvi a,0aah lxi h,extwin+linkad+0Eh mov m,a ;put aah at linkad+0eh for bad nd ;01h is in 'getstt+1' cpi 02h jz sysup ;use port 5CH cpi 03h jz intr34 ;Interfacer 3 and 4. Use port 10h jmp printm ;if not 0,2,3 use port 0 for lack ;of a better option. sysup: mvi a,5ch ;tell OUT what port sta putchr+1 inr a sta getstt+1 ;tell IN what port jmp printm intr34: mvi a,10H ;as above sta putchr+1 inr a sta getstt+1 *The address of the message is in DE. The equivalent IN and *OUT instructions with the proper port are called in putchr and *getstt. printm: xchg ;get address back in HL wrt: mov a,m ;get next character. ora a jz finis ;a 0h follows all strings. mov b,a ;save data in b. nexstt: call getstt ;use this just like an IN STATUS ani tbmt jz nexstt mov a,b ;get data back. call putchr ;use this just like OUT DATA inx h ;next character. jmp wrt finis: pop d pop b ret *these two below just mimic the IN and OUT assembler instructions *but the port which they access is controlled by what is put in *'putc 0FFF1H MVI A,04H STA 0FFF2H MVI A,00H STA 0FFF3H MVI A,00H STA 0FFF4H ;END OF 88 JMP ADRS ; MVI A,0FFH ;LOADS ACC TO STA SWAPSLEFT ;INITIALIZE SWAPSLEFT COUNTER ; STA 600H ;INIT 88CTR ; ;FOLLOWING PRINTS 85-ON-LINE MSG AND DECREMENTS SWAP COUNTER ; FIVE: LDA SWAPSLEFT ;LOADS SWAPSLEFT TO DCR A ;DECREMENT IT JZ OKMSG ;OK IF 255 OK SWAPS STA SWAPSLEFT ;RESTORES SWAPS COUNTER IN SWPORT ;SWAP PROCESSORS LDA 600H ;LOAD ACC FROM 88 CTR MOV B,A ;MOVE IT TO B LDA SWAPSLEFT ;LOAD ACC WITH SWAPSLEFT CTR CMP B ;COMPARE SWAPSLEFT WITH 88 CTR JNZ ERRMSG ;ERROR IF NOT EQUAL JMP FIVE ;JUMP TO 8085 ROUTINE ; OKMSG: CALL CRLF CALL CRLF LXI D,OKTXT ;OKMSG TEXT CALL PRINT ;PRINT IT JMP REBOOT ;RETURN TO CPM ; ERRMSG: MVI A,0FFH ;FOR INPUT TO MAIN TEST PROGRAM STA 0F000H ;MAIN TEST FAILURE CHECK BYTE CALL CRLF CALL CRLF LXI D,ERRTXT ;LOAD ERROR MESSAGE CALL PRINT ;PRINT IT JMP REBOOT ;RETURN TO CPM ; ; 8088 CODE BEGINS HERE ; ORews jmp mpxres goodmm: lxi h,verygm ;all tests are good, so say so call writem mvi a,0ffh ;put ffh at linkad+0eh for good news lxi h,extwin+linkad+0Eh mov m,a jmp mpxres *this below is the basic memory test that is to be run. *Register DE contains the actual memory currently under test. It *is initialized once in 'intd' and is incremented every time the loop *below is run. D is moved into dmalo and E into L for the address to *be in M. testm: mvi a,secpag ;MPX keeps on checking. sta dmahi ;The program HOWRYOU.COM places a F0h ;at 'linkad+0fh' to end routine. lxi h,extwin ;MPX address in HL loopt: mov a,d ;put actual address in dmalo sta dmalo mov l,e ;put low byte of actual address to HL mov a,m ;get main memory at (secpag)(D)(E)h mov b,a ;save cma mov c,a ;save. Now original data is in b, and ;complement is in c and a. mov m,a ;put complement to main memory. nop mov a,m ;read complement from main memory. cmp c ;comparehr+1' and 'getstt+1'. putchr: db 0D3h,00h ;OUT port number ret getstt: db 0DBh,01h ;IN port number ret *these next defines are needed by the mpx, but not the main prog mpxis: db ' MPX is',0h nommsg: db 0dh,0ah,'No System Memory ',0h notsg: db 0dh,0ah,'MPX: Error in Memory Access.',0h verygm: db 0dh,0ah,'MPX: All Memory Access Good.',0h end G 400H ;BEGINNING OF 8088 CODE: DB 0BBH ;LOAD B REG WITH DB 000H ;00 DB 000H ;00. DB 08EH ;LOAD DS REG FROM DB 0DBH ;BX REG. DB 0FEH ;DEC MEMORY FROM DB 00EH ;BYTE ADRS DB 000H ;0600H. DB 006H ; DB 0E4h ;IN FROM DB 0FDh ;PORT FD. DB 0EAh ;JUMP BACK TO DB 005h ;400 HEX DB 004h DB 000h DB 000h ; ;******************************************* ;* ;* STRING DATA FOR CONSOLE MSGS ;* ;******************************************* ; STRTMSG: DB 'HERE BEGINS THE 85/88 SWAP TEST$' OKTXT: DB 'THIS 85/88 SWAPS OK$' ERRTXT: DB 'THIS 85/88 FAILS THE SWAP TEST$' ; ;******************************************************************** ;* ;* CONSOLE I/O SUBROUTINES ;* ;******************************************************************** ; PRINT: PUSH D CALL CRLF POP D MVI C,PSTRING CALL BDOS RET ; CRLF: MVI A,CR CALL PUTCHR MVI A,LF CALL PUTCHR RET ; PUTCHR: MVI C,CONOUT MOV E,A CALL BDOS RET ; ENDweird ;the premise is that the MPX can only call write ;respond with a 'good' or 'bad'. If any jmp reboot ;other comes up, issue a message. gdnews: lxi h,gd call write jmp reboot bdnews: lxi h,bd call write jmp reboot *------------------------- write: mov a,m ;general purpose write routine. ora a ;Initial address of output is rz ;contained in HL. Terminates when ;@HL contains 0h. mvi c,02h mov e,a push h call fdos pop h inx h jmp write *--------------------------- gd: db 0dh,0ah,'CPU: Proper Termination of Process.',0dh,0ah,0h bd: db 0dh,0ah,'CPU: Proper Termination But MPX Error.',07h,0dh,0ah,0h weird: db 0dh,0ah,'CPU: Error, Illegal response from MPX.',07h,0dh,0ah,0h end (kills irq's 1 and 4) out spic1 ;for first pass xra a ;count byte for timer out timer2 ;wait for consle input ; main: di ;disable interrupts mvi c,conin call bdos ;get any character ei ;enable interrupts halt jmp main ; ; org 200h ; table: jmp mirq0 db 0 jmp mirq1 db 0 jmp mirq2 db 0 jmp mirq3 db 0 jmp mirq4 db 0 jmp mirq5 db 0 jmp mirq6 db 0 jmp mirq7 db 0 jmp sirq0 db 0 jmp sirq1 db 0 jmp sirq2 db 0 jmp sirq3 db 0 jmp sirq4 db 0 jmp sirq5 db 0 jmp sirq6 db 0 jmp sirq7 db 0 ; mirq0: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t0 out tcntrl ;set up next timer xra a out timer2 ;print message lxi d,m0msg call pmsg ;set up next pic masks mvi a,24h out mpic1 ;master pic interrupt mask mvi a,12h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq1: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t1 out tcntacr equ 0dh ;carriage return alf equ 0ah ;line feed bdos equ 5 conin equ 1 pstring equ 9 ; base equ 50h ;mult/io i/o base mpic0 equ base ;master pic port a=0 mpic1 equ base+1 ;master pic port a=1 spic0 equ base+2 ;slave pic port a=0 spic1 equ base+3 ;slave pic port a=1 ; ic4 equ 1 ;flag to require icw4 d4 equ 10h ;bit to signify pic init command ltim equ 8 ;level trigger interrupt mode addi equ 4 ;call address interval is 4 sngl equ 0 ;only one pic in system imask equ 00h ;interrupt mask-- enable all interrupts eoi equ 20h ;end of interrupt command to pic ; timer0 equ base+4 timer1 equ base+5 timer2 equ base+6 tcntrl equ base+7 ;timer control register md0t0 equ 20h ;mode 0 for timer 0 md0t1 equ 60h ;mode 0 for timer 1 md0t2 equ 0a0h ;mode 0 for timer 2 ; org 100h ;print copyright mesg lxi d,cpymsg ;copyright message call pmsg ; start: di ;disable interrupts lxi sp,stack mvi a,0ffh ;CPU-Z board interrupt mask out 0feh ;disable VI lines to CPU-Z lrl ;set up next timer xra a out timer0 ;print message lxi d,m1msg call pmsg ;set up next pic masks mvi a,0h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq2: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t2 out tcntrl ;set up next timer xra a out timer1 ;print message lxi d,m2msg call pmsg ;set up next pic masks mvi a,0h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq3: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t0 out tcntrl ;set up next timer xra a out timer2 ;print message lxi d,m3msg call pmsg ;set up next pic masks mvi a,0h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq4: push h push d push b push psw ;eliminate cause of interrup*This program is used in conjuntion with dmatst.com. When dmatst *is called, it sets the MPX to doing dma in the second page of *memory. When this is called, it stops the nonsense and prints *out whether the MPX has encountered any problems with its memory *accessing. It does this by simply placing a 0F0h at result byte *2, or 'linkad+0fh'. It then monitors result byte 1 ('linkad+0eh') *to see what the MPX says. If it returns a 0aah then there has been *an error. If it returns a 0ffh then memory and DMA'ing is good. good equ 0ffh ;what MPX returns is one of these two bad equ 0aah reboot equ 00h fdos equ reboot+05h linkad equ 41h ;where to find relevant information *-------------------------------------- org 100h howru: xra a ;clear response byte from MPX sta linkad+0eh mvi a,0f0h ;tell mpx to finish and respond sta linkad+0fh loop1: lda linkad+0eh ora a ;wait until MPX responds with something jz loop1 cpi good jz gdnews cpi bad jz bdnews lxi h,xi d,dirmsg ;directions call pmsg ; ;bring all timers low mvi a,md0t0 out tcntrl mvi a,md0t1 out tcntrl mvi a,md0t2 out tcntrl ; ;initialize master pic ; minit: mvi a,d4+ltim+addi+sngl+ic4 out mpic0 ;icw1 mvi a,2 ;address table starts at 200h out mpic1 ;icw2 mvi a,80h ;slave owner identifier out mpic1 ;icw3 mvi a,10h ;special fully nested mode out mpic1 ;icw4 xra a ;enable all interrupts out mpic1 ;ocw1 mvi a,8h ;non-polled mode out mpic0 ;ocw3 ; sinit: mvi a,d4+ltim+addi+sngl+ic4+20h out spic0 ;icw1 mvi a,2 ;address table starts at 200h out spic1 ;icw2 mvi a,7h ;slave out spic1 ;icw3 mvi a,10h ;special fully nested mode out spic1 ;icw4 xra a ;enable all interrupts out spic1 ;ocw1 mvi a,8h ;non-polled mode out spic0 ;ocw3 ; ;set timer 2 high and mask out higher priority timer 2 interrupts ;should only allow s-irq7 ; begin: mvi a,24h ;master interrupt mask (kills irq's 2 and 5) out mpic1 ;for first pass mvi a,12h ;slave interrupt mask t mvi a,md0t1 out tcntrl ;set up next timer xra a out timer0 ;print message lxi d,m4msg call pmsg ;set up next pic masks mvi a,1h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq5: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t2 out tcntrl ;set up next timer xra a out timer1 ;print message lxi d,m5msg call pmsg ;set up next pic masks mvi a,2h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq6: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t0 out tcntrl ;set up next timer xra a out timer2 ;print message lxi d,m6msg call pmsg ;set up next pic masks mvi a,4h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; mirq7: push h push d push b push psw ;errupt ; sirq5: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t0 out tcntrl ;set up next timer xra a out timer2 ;print message lxi d,s5msg call pmsg ;set up next pic masks mvi a,24h out mpic1 ;master pic interrupt mask mvi a,2h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; sirq6: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t1 out tcntrl ;set up next timer xra a out timer0 ;print message lxi d,s6msg call pmsg ;set up next pic masks mvi a,49h out mpic1 ;master pic interrupt mask mvi a,4h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; sirq7: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t2 out tcntrl ;set up next timer xra a out timer1 ;print message lxi d,s7msg call pmsg ;set up next pic masks mvi a,12h out mpic1 ;master pic interrupt mask mvi a,9h out spic1 ;slave pic interrupt mask ; Ë,Å, o g^#VFORT)UprppnpR{*4+p+q"4KB EXIQ*4N#F#"4 HUNNESQ*4+p+q"4  `U{,*^#V*s#r^#V ^#V* (LIT o g -BRANC`iN#F ?BRANC} *4"4 !(LOOP*44#4*4s#r!(+LOOP9*4^#V|L!!"-(DO6w%Bw%%%i"U(?DO6 ` %w%Bw%%%i"BOUND6di$>NEXԝ $EXECUT$zPERFOR^#V^#V͋$G$NOO# $PAUS2 %=*4^#V#~#fo %T*4@%((LEAVEl*4####N#F#"4 %`(?LEAVE|l &^#V &7s#r &Cn& &Cs 'CMOV`ix~#  'CMOVE`i + +x~+  (SP)!9 (!SP: (NRPI*4 (ARPY"4 )DROk )bDUy )2SWAЉ )OVEҙ*qTUC˪*QNIк *RO*-RO*FLIcj *?DU6wliminate cause of interrupt mvi a,md0t2 out tcntrl ;set up next timer xra a out timer1 ;print message lxi d,m7msg call pmsg ;set up next pic masks mvi a,0h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; sirq0: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t1 out tcntrl ;set up next timer xra a out timer0 ;print message lxi d,s0msg call pmsg ;set up next pic masks mvi a,9h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; sirq1: push h push d push b push psw ;eliminate cause of interrupt mvi a,md0t2 out tcntrl ;set up next timer xra a out timer1 ;print message lxi d,s1msg call pmsg ;set up next pic masks mvi a,12h out mpic1 ;master pic interrupt mask mvi a,0h out spic1 ;slave pic interrupt mask ; jmp intret ;return from interrupt ; sirq2: push h pus jmp intret ;return from interrupt ; ; ;routine below is a good general purpose exit routine ; intret: mvi a,eoi ;signal end of interrupt to pic out mpic0 out spic0 pop psw pop b pop d pop h ret ;back to main program or next interrupt ; pmsg: mvi c,pstring ;print string pointed to by de jmp bdos ;and ending with $ ; m0msg: db acr,alf,'Number 15 of 15',acr,alf,'$' m1msg: db acr,alf,'Number 14 of 15',acr,alf,'$' m2msg: db acr,alf,'Number 13 of 15',acr,alf,'$' m3msg: db acr,alf,'Number 12 of 15',acr,alf,'$' m4msg: db acr,alf,'Number 11 of 15',acr,alf,'$' m5msg: db acr,alf,'Number 10 of 15',acr,alf,'$' m6msg: db acr,alf,'Number 9 of 15',acr,alf,'$' m7msg: db acr,alf,'Illegal Interrupt!',acr,alf,'$' s0msg: db acr,alf,'Number 8 of 15',acr,alf,'$' s1msg: db acr,alf,'Number 7 of 15',acr,alf,'$' s2msg: db acr,alf,'Number 6 of 15',acr,alf,'$' s3msg: db acr,alf,'Number 5 of 15',acr,alf,'$' s4msg: db acr,alf,'Number 4 of 15',acr,alf,'$' s5msg: db acr,alf,'Number 3 of 15',acr,alfwi+R*4^#V#"4 + >'*4++"4s#r + R?*4^#V +PICT)9^#V +8ROL6%=R'wB4ii,ANċ{ozg ,Oҟ{ozg ,KXOҴ{ozg ,`NO}/o|/g ,TRUŝ,FALSŝ! ! -CSE~w -CRESE{/_~w -CTOGGL3~w -'OD!í-=OFV!í.Nf .NEGATy+.z/W{/_ .ABӞ|y .`+~w#~w ...n./2) /2|g}o /U2|g}o /8&))) / 16# /2D## //1S+ /=2a++ !)t)| l0LUMD}ggxDgJ Ulg0U*6i_|g{|g{)Ҵ_|g{,! 2UM/MO`i}||ejkW\a 30}30))3"0:|330W>o>g7 S>c !zn +79 DAB| |E 8s D2 |g}ozW{_8 D6C  i8[ ?DNEGAT6' C i9 D06i9 D6 i9 DU6   x  i9 D6R`7 ? ii9 D6 # i9C DMI6 H e i9R DMA6 # ~ i: *6 % i:M/MO6 w% %%z =' w Q=ii: MU/MO6%=%i; 6ii; /MO6%a  i; 6% i; MO6% ii; */MO6%  i;Q *6Y i<k TOӦ<A ENTR٦<v LIN˦<3 SP<g RP< DЦ < #OUԦ < #LINŦ< OFFSEԦ< BASŦ< HLĦAPACIT64iIBADREC{IIN-FILE6w'$ Out of RangeiIVIEW6 (diISET-DRIV6$iiIuSET-DM6$iiI]REC-REA68 !$ iIREC-WRIT68 "$ iJREAD-BLOCDJWRITE-BLOCsJSET-I6w diJFILE-REA6\`wdLiiJ8FILE-WRIT6 wB \wdi iJfFILE-I6DT+sT+ iKLATEST6 dw fO ifdiiK-ABSENT6w?f\{ `qwB `qw?w?wd?i wfjd+diLUPDAT6fdBiLDISCAR6fdTiLMISSIN6R_R R_T ?BR?d?dT?wd$iLBUFFE60GifdiL$BLOC60qifwdiMEMPTY-BUFFER6?4$f\d dd iMSAVE-BUFFER6f\ w4wM DEFINE6>c!w  iZ ?STAC6' $Stack Underflow':$Stack OverflowiZ$!STATUZINTERPRE6-! !!!w!i(!i[u!ALLO6 i[!6*!i[f!C6*!i[!ALIG6i[!EVE6i[!COMPIL6wB%!i[!IMMEDIAT6@ 1i[!LITERA6"!i[3"DLITERA6="="i["ASCI6>4P |"="i[!CONTRO6>4@P "="i\"CRAS6$ Uninitialized execution vector.i\"?MISSIN6"C$ ?i\"6 !"i\"['6#="i\ #[COMPILE6#!i\I"("6 d%i\3#(."6 d%Ci\I#,6"{4!i\ .6"P#g#i\}#6"9#g#i]#FENC{^]b#TRI6 \#  ##B# i]#(FORGET6w#$ Below fencew  $ $w w8$ #"$i i]#FORGE6>c_$w  ; V " #i^#WHERL^y$?ERRO$^#(?ERROR6$%% 8 T$ $aCa+$ i^$(ABORT"6=$d%i^`"< FILŦ< PRINTINǦ< EMI= SC{= PRIO{!=. STAT{=H WARNIN{=: DP{= R{=f LAS{p=V CS{= CURREN{!= #VOCӝ= CONTEX{!!.> 'TI{> WIDT{>r VOC-LIN{L> BL{> >I{> SPA{>#TI{>! END{?B̝ ?9Bӝ?DBEL̝?CAP{?OFILr`ixʄ} x ?,ERAS6pi?iBLAN6>pi?\COUNԸ^#?} LENGT^#Vü?MOV6 ia{ @UPPE z~w# @HER6 i@#PA6*Pdi@-TRAILIN6w\r dQ>xQ^iACOMi`xʩ~–# æ!â! Ä! BvCAPS-COMi`x~O~# !! ! BCOMPAR6c}iCBDO&M&o CBIO?*BKP&o C4(KEY?6=OiCY(KEY60bz=iCp(EMIT60=i iC(PRINT60==i iDKEYbDKExDC D(Pdw wdTdiiMKFLUS6SiiN&FILE-SIZ6 #$iiNCPM-ERR6`iN`OPEN-FIL6 $k$Can't open fileJQiNuMOR6$iNwCPM-FC\NDEFAUL6y 4>xy iN(LOAD6% % T+ iNLOA O5DIGIL{0 a _OBDOUBLE6l 4OiOCONVER64w% J i  wl iiPm(NUMBER?6w4-`w%l w,/! l 'C >`iP>NUMBER6e; JaijKowiiP(NUMBER6="iP3NUMBEQ{HOL6  iQ<6: iQ#6 :iQSIG6'-iQ6   d0diQ#6 0iQHE6 iQ@DECIMA6 iRT(U.6.iRU6sCaiRU.6%stCiRl(.6w.iR6CaiR.6%tCiR(UD.6.ABORT6"$g#i^$ABOR6 8+i_$?CONDITIO6$Conditionals Wrongi_B$>MAR6*!i_S%>RESOLV6*i_$MAR6[%i_%?>RESOLV66%r%i_%? ; w*_*w 4!*Qia&CREAT6/'"{ib&!CS6' ib'?CS6' x$ Stack Changedib&'HID6 w ; ib&REVEA6 w ; ib'(;USES6 ib'ASSEMBLE)q::::)b';USE6'"E((#(c(ib;((;CODE6 ibq(;COD6'"((#(c(ib(DOES6"(!k!ic(6P TicW(6P B-! !w)8EMIT6w iDCRL6 (  ( T iDTYP6S( KiiDSPAC6>( iDYSPACE6 aiD6BACKSPACE6I( iDBEE6V( iEBS-I6iwQIV( iE<(DEL-IN6iwQI( aIV( iEBACK-U6iwwtiE RES-I6$ResetiEP-I6i( +w`imiFkCR-I6i>( iFB(CHAR6 ( d4iFuCHAFDEL-IFC{FCC{0}IGHEXPEC6wRnw>Vwdjw`hj. iiGTI6 iGQUER6|P"&T TiH'FIRSԝHvLIMIԝH#BUFFERӝHB/BUƝHB/REÝHREC/BL˝HB/FC)HDISK-ERRO{H>SIZŝ*H&>BUFFER6.iH4>EN6_iHKBUFFER6$?diI\FCB{D3WRDS BLKHICLR-FC6 w 4 iIrRECORD6 !diIMAXREC6 &diICiRUD6CaiRUD.6%tCiR(D.6z .iR2D69CaiRMD.6%9tCi S)SKIЇ`izʛ~v#ÌvS~SCAΩ`izʽ~v#îvT/STRIN6diT^PLAC6 4iT(SOURCE6S|&iTSOURCTPARSE-WOR6%* =i %4 iT0PARS6%* iw4 iU!'WOR6*iUWOR6=wd>iU.6){CiUs6){ iV63BiVTRAVERS> VDONE6P x33TiVFORTH-86iV>.VERSIO6d..CaiWON>LIN6_iW L>NAM6BiWBODY6_iWNAME64iWLINK6iW>BOD6BiW>NAM6QiW>LIN6iW>VIE6 _iW VIEW6BiXHAS= #~o&) X4 (FINDX |##?‡ #‡ j ###~@! ^#V|^ Y#THREADӝY" FIN6B T \ i ;dw wB B ` i ; V w iY ) )!%)iw!)T"%)i="((ic(6'  '((E(6c(6'"i#((id1)RECURSIV6#(idM)CONSTAN6'!E(da)VARIABL6'!E({d(DEFE6'"!E(d)VOCABULAR6' \)!)* ! (k id)DEFINITION6  ie)2CONSTAN6'!!(kO ie*2VARIABL6*(kie(AVO{!eu)COD6'(**_ V*c(ieEND-COD6V* #(if\*#USE{fO*USE)****m(fALLO6*ifCREAT6**!E(fVARIABL6**ifDEFE6*E(g2*>I6ww`w`iG+dI+ig)(IS6=+B%ig*I6P +"T++#+ih+RU6P +(P +!+!ihh+QUI6  T( Wo!+P +P# ok+ih+BOOB^h*WAR6$ Warm Startih+COL6++ii+INITIA̝i,O60,<ii6,STAR6;,ii+BY6*4^iP#Pages$i!,*."""4͓8" ͓!,,ѳp q{lM+DEPT6' ilY,.6C6*i04C!0!0 5?>MAR%0!5?>RESOLV%005?8IΠ608ADɠ608ACɠ608SUɠ608SBɠ608ANɠ608XRɠ608ORɠ608CP@64 i@@64 >i@@ESTABLIS6fi@A(COPY6 dSi.Ai@@COP6.CA.i@AVIEW-FILE{] ^4E=E{~]]4Q=^A@bAVIE6@lAVIE6# wA7 QyAd>i @:AHOPPE{ @"AU/{ @YACONVEY-COPCA @AHO6Ai @A.T6P#to wi @ B(CONVEY6fBwwAd!BBAdJB.i @ACONVE6.A'B4Bw4A% %BBBBBBii @7BT6>iBi @COP6N4SN4Si @BCONVE6B%BT+BuBBi @AUP6waz! BC>i@&CINSER6%=w=di@BREPLAC6i@BDELET6%=w8C w=ddi@qCFOUN{@lBSEARC6CT% C D4D  DCBj4CiCi@FCAO@CBLO5O@%D-LINlO@CDARXDTO(k T Ti@=DEDITO)QsP~OKc>@.SCREEJ@(AT6 i@D(BLOT6$.ti@D(DARK6\DDi@C/SCҝ@DTO6w Ti@D6w d,(-\$-,;QRa-1-P#Empty il,.I6w4w-w( w-_}-4wU- ail,DUM6\-wa\-w4-7-iim5-RECURS6 !imE,OCTA6 i -BASICӝ -FILE-INTERFACŝ -C/̝@ -L/SCҝ *.6 w$.G i 8.(6i .6i ].?ENOUG6,Q$Not enough Parametersi P.THR6u.4.;<.i k.+THR6dd.i &,--6 Ti .ONL ///0m@* ALS6 wB _i(kw Q d i 63Bi SEA6#  i =/PREVIOU6 wB _ _dTi FORT6i h/DEFINITION6*i K/ORDE6P# Context: \/w/;-B/iP# Current: ;-i /VOC6 w ;-w0ii .CP/)32 233/ FCB{Y COM@^^ Q0RESE6 $ii CLOS6 $i 0SEARCH6 $i 0SEARC6 $i 0OPE6 $i 608SHLĻ6"09CAL̻608LHLĻ6*09ST6209LD6:0v8JMл60?9JNڻ60J9Jڻ60U9JNû60_9Jû60j9JPϻ60t9JPŻ609Jл609Jͻ60)9C009C0<09Cӝ0490090<09Pŝ090090>09NO6i09NEX6E9i08MO6$@dd5i0:MV6$d55i09LX6$455i06:I65*5i0N:THE6<5i0b:ELS6g: x:i0 :BEGI6K5i0:UNTI65]5i0:AGAI65]5i09WHIL6g:i0:REPEA6 :x:i 0d4BU)/\&;[\14 0SSU{}o|g 0 2 >2 >o2  0;DNEX{ o g^#V 0j;DNEXTz; 02;'DEBU{7\ 0;DEBNEX{PY=;;:;<2;;2;X;*;z;t; 0;PNEX;>2 !;"   0:FI;X; 04(PAUSE <*4!9*s#r##0;RESTAR*c2 g1i 1MAKE-FIL61k$Can't MAKE File i ^1HEADE! F1SAV6 X011i2<22wN1k$ Write errord7c2i0k$ Close error i <0CREATE-FIL6u.X012w2;-20i /1.NAM6 $.2  :d4 CadCti .DI6 9# ????????.???X0g1:020wk@3i i ..FIL64 TCdP#.Cai V3FILE6 ^3i 2FILE6 '  *w !1 (k i B2?DEFIN6  !33i 3i 2OPE63 i 3DEFIN6 3 i |3FILE)4C4"NMM0 >FRO{G= EXCHANG6 =4 =4i 4FRO6 3N4 '4i LOA6 %=4 < i 3CPU8080.BL˺3CPU8080 BLK  G04LABE6'c(i04DOES-OН00i0W6i@=<6i@=>6i@>0>6'i@0>0<68i@@>HIDDE)ZNUYX;@!>>TYP6::Ci@P>LMARGI{@g>RMARGI{F@=?LIN6 d>>>ti@>?C6>i@>LIS6u.w4 P#Scr # w2.\'?;awS;$. d$.To>?ii@>TRIA6 ( 7  \W?;>O?i@>INDE6u.4\?;a;S$.To>;G `?q?i@[?IN6wG ?wawS$.To>4?ii@/?LARGES6\@  @ wB?ii@>WORD6>t * * ?wg@ww>;-aac@O3@ i@/WORD6@i@@#TIME{@?TIME6@@@@@ Ti@?MAN6@ Ti@}@WHE60@%i@>64 i@ $.wDOH$.Di@HBRIN64\/Iw;H%Iii@IFIND6wF%FEECi@5I6=IFGDi@H6u.=IuIGDOi4 \IGDwFEECIGDijIi$Break!IFi@H6wFwwDOGCi@eH6QIIi@MI6IHi@ITIL6OGxGGCi@IJUS6OGxGCi@_IK6ExGGcFi@ID؝@-JDٝ@J.LIN6:EaEMEo>^( EEo>i@CJREDISPLA62J=Jd *D2J7D*Dw$. sEd$.Cai@JCHANGED6$. wsEdFd$.}i@kJ.AL6*D4 a.t3t2.\K;JJ;wJJsEF*DKJ*DED*D Ti@IEDIT-A6(E$.% 2Jd=Jd*Di@JNE62.\K;E7K T{K7HK;wJjDaKDi@JGET-I6GKP#Enter your ID: G\K.( KGGG"i@QK>VO{!@-KQUI6T+o!K i@KDDON6K4 E"LP#UnP#modifiedG@Gi@iDE6KETRD2J*DP#Scr #4 a.sEF2.\L;=Jd*Dwaw$. sEd$.CafL*DDT+o! KrDi@5LEDI6u.4 D:Li@L(WHERE6LDi@CSHADO)L MM4[|D@DISPLACEMEN6bTTUP#DOES> Uii(@T.UNNES6P#; ii(@U.FINIS6bTii)@EXECUTION-CLAST7\"P#$(i9#E(*@8U.EXECUTION-CLASS|TTTTTTTTTU)UTTBUbTi+@U.PF6>w`UUwUii+@U.IMMEDIAT6@ VP# IMMEDIATEi,@U.CONSTAN6wa.P# CONSTANT ;-i,@V.VARIABL6wP# VARIABLE w;-P#Value = a.i,@7V.6P#: w;-tUi,@pV.DOES6w;-P#DOES> 4Ui,@V.USER-VARIABL6wa.P#USER VARIABLE w;-P#Value = +a.i-@V.DEFE6P# DEFERRED w;-P#IS +TTi-@V.USER-DEFE6P#USER DEFERRED w;-P#IS +TTi-@ W.OTHE6w`W;-P#IS CODEOw`WVO;-P# IS UNKNOWNi.@TDEFINITION-CLAST6{.@WW.DEFINITION-CLASSuVVCVVV.W`Wi/@W((SEE)6wwWWUi/@SSE6#TTi1@TEPSO6( i1@&XINIT-P.X1@LTLOGϝ1@JXPAGE{1@WXPAGrXX(k_X T Ti1@RFORM-FEE6 ( i1@SCR#{ALLOT XTEXT1@WPR-STAR6 B TT+( XT_XDXi1@XPR-STO6T+(  T`im`READ-HEA6_`iaNR/6_____`i!aRELO6 `iVaFORMA6____ `i`STATU6 `iaSELEC6_ `i `EXAMIN6___`iaMODIF6___`iaMAXTR{a#HEAD{`HEA{#bSEC/TR˝ jaBU{6i@1SHADO6i@>SHADO6MM&>=M?Mdi@L64 )M4 i@C64 w)MCAGMi@WMCOP6 `A)M)M`Ai@nMCONVE6 uB)M)MuBi@M6 H$.wDGM)MHGMi@MBRIN64\Mw;MMii@B6w %4 %E4 N4 G4 w N4$.wDOH$.Di@54BRIN64\>Nw;M4Nii@8JH19-A6( Y(  d(  d( i@DNH19-DAR6( E( i@oNH19-BLO6i( K( i@NH19--LIN6( M( i@NHEAT6JT+DMNT+*DzNT+RDNT+EDNT+7Di@KFDP-A6( =(  d(  d( i@NFDP-BLO6i( T( i@*OFDP-DAR6( i@IOFDP--LIN6( R( i@`OFALC6JT+DOT+*DTOT+RDlOT+ED5OT+7Di@NTELEVIDE6Oi@KQUM6Oi@OANSI-A6 ^( [( 4;( 4H( i@OANSI-BLO6i( P#[Ki@PANSI-DAR6( P#[2Ji@6PANSI--LIN6( P#[1Mi@TPANS6JT+DOT+*DBPT+RDaPT+ED#PT+7Di@OPERKIN-A6( X(  d( ( Y(  d( i@PPERKIN-BLO6i( I( i2@XTEXT6Sw>~! ,YTO.Yi2@YP6XXwdi2@W2P6wa$. %:S=d:$.Sd:$.d4$.:TCi2@OY2SC6t=tw\Y ;UYY i3@2YP-HEADIN6tP#Page# _Xa.t3i3@YP-FOOTIN6:tP#Forth 83 ModellXi3@ZPR-PAG6YXTXB\vZwdYB`ZiZi3@BZPR-S-PAG6YXTXB\ZwBYdZiZi3@~ZPR-FLUS6XwZXZ7YZQX7YOi4@XSHO6X4\&[; Y[;7YX`"[LZ[Z.[LZXi4@MSHO6X4\m[; YY[;7Y;)M7YX`i[ZG[Zu[ZXi4@eXLISTIN6Q;[i@XBUGGINǝ6@{[TASKINǝ97@;L.I6w;-wQdti7@;SLO{7@N;RE{7@[(DEBUG6;B,; ;;i7@['UNNES64wi`\i8@[TRAC6%, [[\[T[TP# --> ,CC`\[[F`\i+[\Q`$Unbugi;i8@[DEBU6#_w\[i8@[RESUM6[B;i:@\TASK6'| *** Ii@PPERKIN-DAR6( K(  \2Q( *Qi@QPERKI6JT+DPT+*DQT+RD!T+EDPT+7Di @6QDUMB-.AL6KJi @mQDUM6yQT+DDT+*DDT+7D!T+EDDT+RDi"@0D.6Cai"@LD.6Q;QQi"@CMEMIT6w>~! Ri.( i"@QDL6wt QadQa[R;QQRi"@L?.6 `zRP#\/i~Rai"@_R?.6 `RP#ViRi#@Q.HEA6wt\R;eRRa\R;eRRa\S;RRdi#@RDUM6 FR\3S;!R7'S i#@SD6w@S@di#@;SD6$. 4 Sd$.Si%@ROU6P#Subscript out of range on w;-P# Max is a.P# tried +i%@QMA6 SBdSuSi%@oSCASE6)(((kSi&@SASSOCIATIVE6)(kww\FTB `BT i;j*T i'@TS(SEEX'@.WOR6w;-Bi'@ZT.INLIN6bTwBi'@rT.BRANC6bTwBi'@T.QUOT6bTbTi'@T.STRIN6bT Cadi(@DOES6wd4`i(@T.(;CODE @ ; 0 PV CMND 1 PV STAT 2 PV ARG0 10 PV DATA 13 PV LINK 2 PV DRV : ARG ( n -- a ) ARG0 + ; lFMTTR6P#FM lFMTTR6P#FMTTRK ww9bldIb\Wm;dGmildIb \{mw;7mmilIb \mw;7milll9bsai mFMTCY6P#FMTCYL ww`,b\mw;mmii mFMTDS6L`b\ n;mni mR6kdk`i nR6kdk`i ,nB6UbpUbUbBUb`i GnRE6wkdk`UbpUbUb`itlTS6kP#FORMAT FIRST TWO CYLINDERSmmP#READ FIRST 100 SECTORSjP#&WR, RD AND CHK SECS 1 TO 10 WITH 1A'S \Go;;fl7oP#SHOW RESULTS OF LAST CHKUbPSP#%WR, RD AND CHK SECS 1 TO 10 WITH E5'S\o;;floP#SHOW RESULTS OF LAST CHKUbPSP#PRECOMP AREA TEST mmP#RD SECS WAY THE HELL OUT THERE!:u0uj( P# OKEY DOKEYinDE6^ikIN-DPȝDcpIN-RA͝@lGET-RA6{pUbaipGET-DP6lpUbaiBYE iEMPTY CHK" BUF 50 dumpOct83map50 dump  \ DISK3-1 - DRIVE STAT. EXEC INIT X 17Oct83map: STAT. ( -- ) CR ." Error Status = " STAT C@ . CR ; : (EXEC) ( N -- ) CMND C! 0 STAT C! DRIVE @ DRV C! ATTN BEGIN STAT C@ KEY? OR UNTIL ; : EXEC ( N -- ) (EXEC) STAT C@ 255 - IF STAT. KEY? ABORT" PROGRAM ABORTED" THEN ; : SET-DRIVE ( n -- ) DUP DRV C! DRIVE ! ; 113 36215: ARG ( n -- a ) ARG0 + ;V ARG0 10 PV DATA 13 PV LINKap \ test words 17Oct83mapHEX n;mni mR6kdk`i nR6kdk`i ,nB6UbpUbUbBUb`i GnRE6wkdk`UbpUbUb`itlTS6kP#FORMAT FIRST TWO CYLINDERSmmP#READ FIRST 100 SECTORSjP#&WR, RD AND CHK SECS 1 TO 10 WITH 1A'S \Go;;fl7oP#SHOW RESULTS OF LAST CHKUbPSP#%WR, RD AND CHK SECS 1 TO 10 WITH E5'S\o;;floP#SHOW RESULTS OF LAST CHKUbPSP#PRECOMP AREA TEST mmP#RD SECS WAY THE HELL OUT THERE!:u0uj( P# OKEY DOKEYinDE6^ikIN-DPȝDcpIN-RA͝@lGET-RA6{pUbaipGET-DP6lpUbaiBYE iEMPTY CHK" BUF 50 dumpOct83map50 dump \ DISK3 - High Level Driver - Load Screen 17Oct83map1 24 +THRU EXIT  \ DISK3-1 - NOOP STATUS SELECT SPECIFY HOME SEEK 11Oct83map: NOOP ( -- ) 0 EXEC ; : VERSION ( -- ) 1 EXEC ; : GLOBALS ( mode #trys #drives -- ) 3 ARG C! 2 ARG C! 1 ARG C! 2 EXEC ; : SPECIFY ( adr -- ) DATA ! 3 EXEC ; : SET-MAP ( adr -- ) DATA ! 4 EXEC ; : HOME ( -- ) 5 EXEC ; : SEEK ( cylinder -- ) 1 ARG ! 6 EXEC ; : READ-HEAD ( adr -- ) DATA ! 7 EXEC ; : NR/W ( address block r/w-flag count -- ) 6 ARG ! 1 ARG C! 2 ARG ! 0 4 ARG ! DATA ! 8 EXEC ; : RELOC ( -- ) 9 EXEC ; : FORMAT ( addr gap3 fill head -- ) 3 ARG C! 2 ARG C! 1 ARG C! DATA ! 10 EXEC ; \ Q540 26Sep83map: MSEC ( n -- n ) 202 * ; : USEC ( N -- N ) 202 1000 */ ; CREATE Q540 ( STEP-RATE ) 0 USEC , ( SETTLE-TIME ) 0 USEC , ( BYTE/SEC ) 1024 , ( SEC/TRK ) 9 , ( TRK/CYL ) 8 DUP #HEADS ! , ( CYL/DRV ) 512 DUP MAXTRK ! , ( PRECOMP ) 256 , ( REDUCE ) 512 , ( SKEW-FACTOR ) 1 , ( RESERVED ) 0 , ( POSITION ) 0 , \ DISK3 - FMTCYL FMTDSK 11Oct83map: FMTCYL ( cylinder -- ) CR ." FMTCYL " DUP . DUP SEEK #HEADS @ 0 DO DUP I FMTTRK KEY? ?LEAVE LOOP DROP ; : FMTDSK ( 0 -- ) SET-DRIVE MAXTRK @ 0 DO I FMTCYL KEY? ?LEAVE LOOP ; \ Variables 17Oct83map: STATUS ( -- ) 12 EXEC ; : SELECT ( cable -- ) 1 ARG C! 13 EXEC ; : EXAMINE ( FR TO N -- ) 4 ARG ! DATA ! 2 ARG ! 14 EXEC ; : MODIFY ( fr to n -- ) 4 ARG ! 2 ARG ! DATA ! 15 EXEC ; VARIABLE MAXTRK VARIABLE #HEADS VARIABLE HEAD 9 CONSTANT SEC/TRK \ Tools 11Oct83map: EX ( adr -- ) BUF C/L EXAMINE BUF C/L DUMP ; : ST ( -- ) INIT Q540 SPECIFY HOME ; : DD 16 DUMP ; : B. BUF DD ; : IO. IOPB DD ; : R ( n -- ) RD B. ; : WW ( byte sector -- ) swap BUF B/BUF ROT FILL WR ; : W ( sector -- ) dup ww ; : t ( byte -- ) buf b/buf bounds do i c@ over <> if i buf - u. then key? ?leave loop drop ; : tt ( byte sector -- ) 2dup ww rd t ; : ts ( sector -- ) 256 0 do cr i . i over tt 1+ key? ?leave loop drop ; \ more tools 11Oct83map: R2 ( -- ) 2 Q540 18 + ! Q540 SPECIFY ; : R0 ( -- ) 0 Q540 18 + ! Q540 SPECIFY ; : BM ( -- ) BUF 256 -1 FILL 0 BUF ! 0 BUF 2+ ! BUF SET-MAP ; : RES ( n -- ) DUP Q540 18 + ! Q540 SPECIFY BUF 256 -1 FILL BUF SWAP 2* ERASE BUF SET-MAP ; \ rds wrs 13Oct83mapHEX CREATE BUF 800 ALLOT : RD ( n -- ) BUF SWAP 1 1 NR/W ; : WR ( n -- ) BUF SWAP 0 1 NR/W ; : WRS ( last+1 first -- ) ?DO I . BUF B/BUF I FILL I WR LOOP ; : RDS ( last+1 first -- ) DO I . I RD LOOP ; : RH ( -- ) BUF READ-HEAD BUF DLN ; DECIMAL : TR/W ( address sec track r/w-flag count -- ) 6 ARG ! 1 ARG C! 4 ARG ! 2 ARG ! DATA ! 8 EXEC ; : TRD ( sec track -- ) BUF -ROT 1 1 TR/W ; : TWR ( sec track -- ) BUF -ROT 0 1 TR/W ; : tr trd buf dln ; : tw twr buf dln ; \ DISK3 - FMTBUF FMTTRK 11Oct83mapHEX E5 CONSTANT FILLCHAR 10 CONSTANT GAP3 DECIMAL CREATE FMTBUF SEC/TRK 8 * ALLOT : FMTTRK ( cylinder head -- ) CR ." FMTTRK " OVER . DUP . DUP HEAD ! FMTBUF 3 + SEC/TRK 0 DO I OVER C! 4 + LOOP DROP FMTBUF 2 + SEC/TRK 4 * BOUNDS DO DUP I C! 4 +LOOP DROP FMTBUF SEC/TRK 4 * BOUNDS DO DUP I ! 4 +LOOP DROP FMTBUF GAP3 FILLCHAR HEAD @ FORMAT ; !\ ST412 06may83mcs CREATE ST412 ( STEP-RATE ) 30 USEC , ( SETTLE-TIME ) 0 MSEC , ( SECTOR-SIZE ) 1024 8 / , ( SEC/CYL ) 9 4 * , ( SEC/TRK ) 9 , ( MAXTRK ) 306 , ( PRECOMP ) 128 , ( REDUCE ) 306 , ( SKEW-FACTOR ) 1 , \ ATASI 3046 46 MEG DRIVE 06may83mcs create A3046 ( STEP-RATE ) 3 USEC , ( SETTLE-TIME ) 0 MSEC , ( SECTOR-SIZE ) 1024 8 / , ( SEC/CYL ) 9 7 * , ( SEC/TRK ) 9 , ( MAXTRK ) 645 , ( PRECOMP ) 320 , ( REDUCE ) 645 , ( SKEW-FACTOR ) 1 , 645 maxtrk ! \ test words 17Oct83map: DEX DECIMAL ; HEX 4406 CONSTANT IN-DPH 4000 CONSTANT IN-RAM : GET-RAM IN-RAM BUF 800 EXAMINE ; : GET-DPH IN-DPH BUF 100 EXAMINE ; DEX \ ST506-1K 06may83mcs CREATE ST506-1K ( STEP-RATE ) 3 MSEC , ( SETTLE-TIME ) 0 MSEC , ( SECTOR-SIZE ) 1024 8 / , ( SEC/CYL ) 9 4 * , ( SEC/TRK ) 9 , ( MAXTRK ) 153 , ( PRECOMP ) 128 , ( REDUCE ) 128 , ( SKEW-FACTOR ) 1 , \ 603SE 11O06may83mcs CREATE 603SE ( STEP-RATE ) 2 MSEC , ( SETTLE-TIME ) 0 MSEC , ( SECTOR-SIZE ) 1024 8 / , ( SEC/CYL ) 9 4 * , ( SEC/TRK ) 9 , ( MAXTRK ) 230 , ( PRECOMP ) 192 , ( REDUCE ) 192 , ( SKEW-FACTOR ) 1 ,  \ CMI 5619 19 MEG DRIVE 30MAR83RLK CREATE CM5619 ( STEP-RATE ) 2 MSEC , ( SETTLE-TIME ) 0 MSEC , ( SECTOR-SIZE ) 1024 8 / , ( SEC/CYL ) 9 6 * , ( SEC/TRK ) 9 , ( MAXTRK ) 306 , ( PRECOMP ) 150 , ( REDUCE ) 306 , ( SKEW-FACTOR ) 1 , \ test words 17Oct83mapHEX : TST ST ( INITIALIZE) CR CR ." FORMAT FIRST TWO CYLINDERS" 0 FMTCYL 1 FMTCYL ( FORMAT CYLS 1 & 2) CR CR ." READ FIRST 100 SECTORS" CR 100 0 RDS CR CR ." WR, RD AND CHK SECS 1 TO 10 WITH 1A'S " CR 10 0 DO I . 1A I TT LOOP CR CR ." SHOW RESULTS OF LAST CHK" BUF 50 dump CR CR ." WR, RD AND CHK SECS 1 TO 10 WITH E5'S" CR 10 0 DO I . E5 I TT LOOP CR CR ." SHOW RESULTS OF LAST CHK" BUF 50 dump CR CR ." PRECOMP AREA TEST " CR 19F FMTCYL 1A0 FMTCYL CR CR ." RD SECS WAY THE HELL OUT THERE!" CR 753A 7530 RDS CR CR CR CR 07 emit ." OKEY DOKEY" ; decimal !  FSTLOCLSTLOC1ST PAGE@.@.>\?uûÆ&& 4u> tƄ F.;t"t Ϡ *͵ VxA}.. A: t    A: t   .+ tIsY.>.+utItÊЊ.>.+WQY_st :etOastVõQoYQYsQ..>+uЪIЪXP.>.+u IПtПtYQ.>.+uتIتXP.>.+u؟I؟tYÈ. .> ЪW.>r.;>s Ъ.;>s _s_á ..>+uBI2Ī ..>+u It%2Įu  2NJ؊ÜPSQRVWUOW & (X n 2 ^]_^ZY[Xñ/sPQ8YQ-YX7|ù ?:u0Kû C?0Cuûs t< uSRQ t< t<t<uZYZ[oPX  "$׊:ж Њб0s uuuñ   VWRQSPѱX[YZ_^ñRQS[YZRS [ZkP PZ^w^P ]U>k1u] PhPqP|hPs]U1HDB4PPPp` `,abD`+ȉF]UPPX]UPPI]UPFP8]UPFP%]U PP]U PP]UPFP]UPv]U츀PPv]U^Ov]UPv]UPv]UPv]UPvw]UPvg]UPPV]U P P]Uf~u~t ~u ~t]U~r@P~w@Y"]UFȈFpw3pƋ^@$< uppƋ^@$P'puư.Pp >p wpƋ^@$Ppu]UvY:P Pv`]UFȈFCU*ktY]U ]Ur-VP"Pq 33:lu]à3:muְ]]UPM1-31P31P$1N1{3|3O151]U1P1w>j1uP1OM1]U]UM1g]UnP]UM1~Pq]UB-4PD-4d1@X1y3-9>j1t6IP*6$13P 3PPP3P 3P%Pt]U{3"v3s {3v3Fs]U~ uc ~ tcv ]Udedd:FsƋ^ee$?]Uv ^ PƋ^NN t7ÊN :Ou%QNP^ PsF]UFPvFPFP]Ur q>qwb>qur0q㋏F1sF1V>suqƊr^s0q΋^r0qu]UP!Pv6 PPF@P(Pv^G P5]U^GPv.-^]U~u~u ~u]UF8.-t.-P]U^G"(-=ui(-7>(-sP^6(-@$P^GP/-t)>/-u^6(-@$(-뿋^PP1밁(-(-^6(-@$/-Fw"/-]U^7L*-*-^;G"s,ƍ@$P,^GPt ^PP*-]U^7. vAv9^G",-=u S|,-F^6,-@$,-@^G" ]U^G"^7h<0r^GP(uv6y3sv'v(Pq]Uv+P`]UtPt]U츘"Ph]UtP]U츘"P]U츼&P]U(P]U+P 16 Bit Viasyn Memory Test (M86) Ver 5.0 ENTER STARTING BLOCK (4-F, CR= 4 DEFAULT) ?  ENTER ENDING BLOCK (a-F, CR= F DEFAULT) ?  aK IN PAGE 64K IN PAGE NO MEMORY IN PAGE BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page. BEGINNING RAM TEST ON PAGE : BIT STUCK TEST SHORTED BIT TEST CHECKBOARD PATTERN TEST(AA55) WALKING BIT TEST ADDRESS LINE SHORTED TEST RANDOM NUMBER TEST Testing each page for page overlap Filling each page with it's number * Verifing each page for it's number All pages verify OK DONE WITH PASS HIT CR TO CONTINUE, ^X TO RESTART, ^C TO STOP 00000123456789ABCDEF N^ N뿰] UFF F+9Bv >P^v ^ P@Ƌ^PPBBPB^F BGv ^ PBFQlBFȊF ȉB] UvvP6`vP]UvvP6bRP4s FR]UvvvP6`]U6a^Pv]U6av^P]UvvvP6b\]UFF+9Bvvv6B}FB]UvvPPvo]UHf>f?w-f㋇L>LtLVVfu]UL`ȉXJȉZggL:GwAJ:GwgȴƋXZ:v]àgȴƋXZ:rgu]UJLLT]UTHJHJJ tUrJT]U P P]Y\QUcPrP P>\u PvP>\u P|P>\u PPHJ>Jt6JJ>ctu]Uc1ic1+ʈj>irH]À>k1ujȢjjv P]UFȈFt ]U츘"P]U츼&P]U(P]U+P]U츘"PvgF"Pv"P]U4- 3.->\t \Ȣ.-PVtPP!&PP(PP +PPP]PvP#P]P&PP]P(PP]P+P>e tPeP~P P PQ1P1-1-<r@1-÷u1-Q1P u@Y"sÈ1-Ȋ1-ƇQ1.È1-P~PQ1Px2-3-5->m t/>m$t4-!>2-w@P<$u@Y"r5-5-r>2-t|P0-< t>0-Aut">0-Hu&>0-Pu( >0-Su +P뷀>0-Fu'TPM0-0-Du w34-2-(j1+k1t3Pz<t4-4-]U>2-t3-0-2-3-0- 0-]UP0-60-_s0-,A^^?v?s4- 4-2-]U6-]UF11Os1]U:-s{3sz>->>-u:-4>>- u<-r!>>- u<-<-6>->>- u>- ;-s 6>->->-]U>2 t@P>2 t@Y se2]UF22Os2]U?-?-s?/2PJs 622Ƈ2`-Pe-PIË b-4Pg-P>2 tAP2P"P-NPs6b-l_]Uk-k-k-<sÊ`-:Ru]ð]UN1 M1sy3sy3vD$1]Uw3s ^ ^]U^-C^-FHFÊ-]UvY]Ut-P-,s-r-333:-sÊs-r-r-؊-s-:P33:-w#s-3PR6363{3u԰ Po Pi]U>-vg31t--F-s--]U6p-]U>q-t.Pv-t--]U>21uYn->q-t-t-Pv-81s 671f661 PZPT641M631Fq-]U>21u8q-:o-t$21uNq-:o-u l-;31t">q-tFo-q-Pv-31t--6p-21P231@31l-]Un-q-]U]UFp-Fo-,.n-sZ]U졚-]U/6/]UP^G+@PST^G@]U///:FsƋ^0Ist/F]U>&1u4///:Fs"(1/ƊP6/T]U//-^P/s^G^G^G/]U//v]U//v]U젆3 Í3-0/Pr0[Pas/s6-* 000]U/]U/]Y0QU0P0PrS0P0P,+Ps/0P 0PTs%0:0u0P 0P]Ps]0G u uO@0G]U>&1u9>'1u2^(1^^?t?t^^?t?u]U^?u0O@^?u"0O0O^?u0O]UGsPq]U>2u>21t6311P2]U츇3Ps!>3u3}3F&3F31 P]Y 0 000QU51.n*61G181L13191D61A181I131;1061E181K131=161C181J131?1*2*F*Z*Zs61 0518131]ð$Ps/ 051081061 031sA,3Ps&>3u361 0518131]s P]U671 0z661 0i6611PK2]UR0000sy30vy300}?->2@t>2_u?-Fs62i]U;-2@-@-se22<'u@P>2 u@Y"s 62LՀ>2'u'2<'u 622;-&1@-;-&1]UF-P2˷2E-2,D->E-Bu A-B-N>E-Ot>E-Qu A-B-4>E-Hu A-B-!>E-Du A- B-A- B-D-C-C-C-À20tC-B-8D-sR8-C-:D-wHÊ2E-,0E-< v.E-E-:A-rF-8-A-E-8-C-F-F-s&1]&1'18-(1]UP622P&1Ps&1]Uv3:-<-;-=- PP1P PP2P122 ]U6-=-s=->:-s)&1<-s :-v3]=-<-2 ]222Ps5]62ds]À>2'uw]&1>2!u2 >2;u>2 t?22 <-s=-]]U>2 t6]U>&1u 2:Fu]U>&1u2:Fu>2 u]U P]UvsF#~ tJ-~ uJ-v]UF:J-v P]U^?t 7F]UJ-H-nPQ1PPl1PP1, PPH-P/^:u0/F]U^u ^t<]U^w=P^w/YÊ0>0u^^0^G]U~u~u ~u]U>&1u/>'1u(>2:u!(1^^$ c`]U^P^GF^G]U>&1t&^Pf&1^G'1^G(1^GL622P-Ps;6-^P^G0&1u>2t)>2s"$^P^G0<t<t<u]QU^P."^G^G31^G81s51 ^G61^Gy^Pz^t^GC1^G$^GJ1sP^O G>2u^P2P2F222^P62@m !"F""~"]YU(Ps3--<v@ ^PY)Ps%-K[Ps8/s/^P^G^P_s ^P] UPPP"F &1uA>2v:02I0000:2s 23Y]s 63h]ðP`P]Uis63G63@]ðP8P2PZ]U;s2>3t+3 t63 636363]ðP0>0w P0uP]UP/]UP$]UP]Ui631v]UA1PI1P;1PP]UC1PJ1P?1PP]UE1PK1P=1PPw]UG1PL1P91PP`]UPP]U21..P622Q01QY"s136.1}3P6u3%3P017Yrz3]3Kr#36.1}3]À>3t3(s 6.13Pp4]À>3uk73P>3t@Y s P2631P]ý-$.G.]U>2 t@P>2;t@Y ]UsPC]U>21t%3Ps>3u 3^ P|]U>|3u Pe]ø3Pr>3t ]á30>0t |3q]1]U P ]U0O1"M1sM103P$3PPI-]U젌1sI-I-:1w P% P P,I-]U>I-vc]UI-I-1, 8I-r]U~ u'J-,1+ʈNFȈFj1u y3s]à{3s1=>2u2K-L-J-K-P1P2PPz2*K-1u2*K-1*L-tvPQYK-P1P2PP<>2 t%PM->M-wM-2M-u1*L-tPQYL-P1P1PP1Pz]Uy3 M1s P621P PP2P21]UM1s H-I-]UM1sApmPP6$13P3P>P7FP3P3P#P]U_-_-_-:\-s/ƋN-V-:v]à_-ƋN-V-:sǰ]ð]U>]-u]à]-1^-\-&^-T-V-^-R-X-{.X-R-_-_-<wƋR-P-_-u]ËV-\-ȉT-X-R-]-*^-^-]-a]àUF\-FN-FP->\- s&\-㋇R-T-Ê]-T-]Ud-d-d-Ƌ^8t0]Y`-QUj-%^P7^F uF^PFHP] S#j#u###^PPPP&1u,>(1u0u0sM1]À>(1u0]U>|3t |3]ðP#]U{3s P030 P P0PRڀ>2t@P>2:t@Y"P62lY"s2,A0sp>2w@PY r4622P0PI.Ps1<>2w@PfY sL"622P&0PPP&0Pؠ0s]600P&0P {{3]UP0]U000:2s2s]ð]Uv3]U츋1P]UP1P]U21.1>&1u?PPl1P؀>2v2622Pl1P>&1u)]ð Pk]X111UM1s]U1]UN1sN1M11]UM1szN1M1]]UO1]UO1]U0]U000:0sH0PL]U젆30<v00000:s PP]Ux3sF0H00]Uvv]U,1]U,1 Í3*0*0]U000:FsƊN^:u0F]U,17i]U,0,0wQ]U,17bro]Up.0.0wG]U[0000G uPТ00s\03 Í30s0tPN0,P,Psـ>3s03띠0]U0000:3s" Í30ÀuGu0Р0rC000:3s4 Í30Gu0t@PwY"s°]ð]Us8s.Zss 1sPWPO]U2u3P2P%3P]Uu30P%3P0P02P0P2P}]UP P}3PM]U>&1tF/111:Fs(11Ɗ1^:uaؠ1]U>21u76u3%3P.1Psy6.1}3Pǀ>3tc36.1}3PQ6u3%3P.1Pr<6.1}3P1>3uF >3t11sv]U>21u6u3%3P.1Ps z3]ð]U51$ 1F381sN 1 F3613313]U>21t 6.1}3P:]U>51t P] ]U+PsTs PPss]622P01Ps]ðP]U PP".?]]])];]M]_]q]à3s]]à3s]]à3s]]ðP]]]] j44F33]U33643P3Ps3?t3643P63>rB363k4Ps]ð]Uv9]Ù>2,u]U>&1u#~u 33>(1w(6(1t~u 3 3.Hj4Q Pd*uHH|HHHHHHHH|HHHHHHHH|HHH]U3H3ÀPC]U3H3ÀP,>2,ṵP>2)tj4]]Uv]Uv]U622P3P:32ȉ33Ù>2:tj4F62.I Pwj4]ÈIIIIIIIII62.I PAIIIIIˀ>2(u m4]U333n434PPP3P;PdPk4P.PPP4P!4344]U>&1t]622P3P24;˰]U>&1u>2,t]]U4s]s j44]]00w"00w]U,2020G+3140O;61u@P640{<t@Y sP2640>2 u20w2P]U6060G;61tP60G+31P>2 u60w2PQ]U,10u{8080G@uG0"0:0t@x3]UK:0:0G0G@u^"0.400&000.$1Т006"00>44440s60]U:0G$00$u@P>0t@Y"]U^G<0O0W0"ш0W"ш0>0u000q0u000Y000.50$0$ 0,0t0>0u00 0555F$8F0$0 F 0P>0t6<0>0u6=0~]U>0u]Ã><0u]6<0 ]U0@t0t]ð]ð]U,10^60`P]UT>0>0G060@P]U00,1? t)7PP6.6wֺ66660]U~tNn~s*Nf>0u@P~w@Y"s Ft000Nf]U,10{,1760Ph]U,10W]@0@0G06060]$]1]l]4]M]i]q]]]]]]]]ðP;]? ???? ?%?*?/?@?Q?b?b?f?n?s?x?}????????????????UFsհPP.@P}0Pr%PgPXPNPp?Psts) %!Ph=@H@S@b@b@l@}@@@]U!1Ps)sPvH!1]U!1sk]U>2 t@?.8AP^]ðP]o]]H]ðAA%A*A/A4A]U&1"1<u]À>"1u >2:u]À>"1t>"1u5622P01PCs";,ԡ(1"1>&1u >"1u]ð]À>"1t]ð]U1]131Bz3w3PPl1P3]U>2 t]ð]U>&1u P:>(1wb6(1,Ӏ>2,t(O>&1uH622P3Ps5 P63oӀ>&1u622P3Ps 63K]j4]U>&1u-v~u 6(1 >(1v j476(1'>&1u%622P3PEsFPp63ij4]U>&1u%622P3P sv;634j4]U P.ICPC5C9C=CECfҀ>2,u"\622P3Ps 63?]7? 0<$T%`%Uxb<==      $  *  9  H   f w  H          l  ! ( " 7 #    o    8  9  :  ; '/?  ?  &?  \wsrv,17P3]U,10",1P$0XP$0X$ 0F Í3B00>0t%0>0tx 00s 00]U,10>0u ,10B0G0>0u0:0s@0P:0v@Y"]à0:0t@]UB0G0<u]ËB0G$0>0u:0a>0u>0t@0P:0t@Y ]À>0uEB0GD00˷.86D0]6D0]6D0U<t@]8888]UB0G0G0G$00.9>0t@P>0m>0>0t@]sP>0t@Y ]`]Â>0t@P>0u@0>0t@P>0>0t@B0OPɰt@Y"]&989?9K9^9c9z99]U>0t@]U,1F0,100t]à0:3t0"0000:0s Pk 0蠿0sF0,10]U*1,1s]Ë,1?u]Ë,1]Ux3s,1?u@"x3sm7 PPP.:t4e뙠::::::::::::u:x3s,Ox3]U8Cs-N622P01Psذ P;۰]̰]U01*1]U*10Ê$u@]U03Rj4]UP]U>&1u>(1w|P6(1 Ҁ>2(ueҀ>&1u;622P3P:rF33363Sр>2(u#р>&1u>(1w6(10р>2)tj4]ѡ33À?u >2)uzу3>2,t]i>]U P]UP]U>21t|j43sj4^.DP; p.G)P'DDDDDDDDD j4s 4P]U>21u3Ej443sj43.sj4J j4s 4P%]UP]UP]UP]UP]UP]UP]UP]UP]UP]U>21u=j43sj4>21u j4 4sP y43]U4^m4ȋ^8wQ4^4t@Pvv44QY"s 44Â4u4^u]U44<wÊ:Nt 4u4]U44<w6Ê:Nu<r(4:Fuu >2Bu 4uà4]U>&1t]4>'1u4>'1u44(1@]U>&1u>'1t]á(1@]U3@3cv j44 F33]U33cv#t}|~yuq{ypzx ^             h*1* G T t        .,  =      $ <L 4 n               4   N  l    NAEfJNBE SALt STOSWCMP RCLCALLFLDSDIVJNLLESF SARJNO RCR REP  SHL(JMP JNP8VHLT JPO\ STCP} SUB*JNS`b STDhpINTp0 RETz SCASBNOP ROL SHRyMUL_ POP ORLOOPNZ SAHFJNGEJZJNLEHXLOCKQ SCASXHXCHG REPE IDIVJMPFh STI|NOT JNZ,MOV RORrLODSBCMPSB4 OUTXOR REPNELOOPEJ RETFhLODS<CMPSDIRET WAITNhPOPF$IMUL0 RETN` XLATh~INTO~LOOPJMPSJCXZOXas,<nu|NV0@x $4Xr0000LABELSVARIABLESNUMBERS'd A86H86LSTSYM %   Oq           ,,wAESC,JLECBW< MOVSW JNECWD>JPE^JNGJGJL<IN4JO >JP4RLAHFDCALLHJSJELEMENTMISSING TYPE INFORMATION IN OPERAND(S)LABEL OUT OF RANGEMISSING SEGMENT INFORMATION IN OPERANDERROR IN CODEMACROBUILDING** ERROR NO: ** NEAR: "  YNCP/M ASM86 1.1 SOURCE: PAGEEND OF ASSEMBLY. NUMBER OF ERRORS: . USE FACTOR: CP/M 8086 ASSEMBLER VER 1.1 PARAMETER ERROR NO FILE DISK READ ERROR DISK FULL DIRECTORY FULL CANNOT CLOSE SYMBOL TABLE OVERFLOW USER BREAK. OK(Y/N)? END OF PASS 1 END OF PASS 2 +-*/ +-    A86 @      ACDEMRSXBWDS$\\C؎м E &u .kG-.k&G.m.i$t.i  tj>] t=\|&G?K&< rs t?.6uL t? u?l<@s$tA$[ t?H&t7P ౑$t.kg.k&gXñ 2뵉6> "Eٰ>" 5 ,>u   u" u2Ê&þ ot .>>1.ZY*].^.......6.>...&...F.F.F.Ȏ؎мkt.I.t.IuZ=I.&Jt J.FtvHt..6&;u)6''tI9. t)%..6&ttt tJ.[X[YZ.]^_...&.6.6.6< t <,t< t<:,0< r <s< rFZ~Gu;mt PXGt&&8uW_m%@9+ۊEt ش t <:t < u D#BB >hr9\ u(f.hB>D@BuȁD볺\KMfDءOQ+rPh\xqtu u8\|DBBw\S.hrBuDt!&X6Z6X;XvX&\V`< tQ+\rK^dbtu+.m.k.i@AC2@<u w<u2<u$< u&< u*|<u(qPwX= 9:< t= 9:>w(>$u!,2$0*6(4/8;t1:/u$;0u ,;2tC<t t8g,2/$0:t] t8?<&?",>*(@9u<؎(8ø><u= = 46,/S60626466=.o.q.m.k.i.o.q>u &>w >$u,&>.k&? t II,MXdisk  CompuPro 16 Bit Sysgen vers 1.2k $ Cannot access Disk Queue. $ Source file not found. $ Error in reading sourc`f?JK E COPYRIGHT (C) 1981, DIGITAL RESEARCH DDT86 1. 01/25/82 ABCDSBSDCDSEIODITSZAPC CDESXXXX CANNOT CLOS INSUFFICIENT MEMOR NO SPAC MEMORY REQUEST DENIE NO FIL START EN VERIFY ERROR AT DISK WRITE ERROҠ*+عþ t<@v@ȿ K &..&X%&k.мktou:<0r>qo-s!8< t<;t,Ar<wlm.;??/ `   [ .L0ñññ ñ ñ tþptþa uþHt< u;6\&6b&:t\%b\\9`rbt=&P^Xl^ ptmu !<, ^u ; s > >&6  Fr +:t ; v 6&t; u; wCMDW< tt\th< ud&>e u e\vjf\SZ\`nEr.ع0\ `mu u%`+\r>\)\Mr \;`v..l< t+).'P'X< t,< u,I..F SXPSPNXY[X+6\< ul+< tA&>nEu\.&9tl7lZ31< 3Zts785>1;>5w*W_3Wv;1r17t8u;\`< t:+\r4^dbb< u$6\&>b\tbt \;`v< tP\tD< u@\0hfyf}-jf~<^Z+ 1nR\>\ 6\h< t<.t#Je file. $ Source disk (or return to skip):$ Destination disk (or return to skip):$ Drive selected out of range (A-P). $ Error on data transfer -- disk or drive bad. $ Selected drive cannot be used for this function. $ Selected disk is single density. This function requires a double density disk. $ Unable to reset disk system. Please close all open files on the floppy disk(s). $ Requested drive does not contain a disk or cannot be found. $ Error - Please use a console in the foreground $ Place source disk on drive a and hit return$ Place destination disk on drive a and hit return$MXdisk  CompuPro 16 Bit Sysgen vers 1.2k $ Cannot access Disk Queue. $ Source file not found. $ Error in reading sourc9-35t ñ8zþ9k;f@tþ|UFY]U]úQ þ6G"K>.t`9_(< t< t<:u,@Oÿ <*uWQY_t 㴪I? Ë>G ?ùM +щUù g +щUùQKYA rþpȸ.!. þgøp .#0t1qþg4Xu-^ùS S )sQ CYA:SrþuþM2Tu w SS s QYA:Sr..69tVTt &Êȳrجд t0SRPyQq^|q[X Î_á.....Z^&t-&.Z& t. t.&.+.15&E&+Ɋ&'P_&ot¿ȫ ȫ$mu u>\\s>HH:j->>`"$PXPdX>wt<rá<M:K@Q>O< tC\8t7< u >nRu, ZMK< tMQO< u 1\Jpupuq}#oPWcKXu[@zT< tW< tj&W &< uUUU <.tnq< u) tUÀuZ u^U>U r{WUU+S< u t w͋U@ I =.,:;[]<>   %*/49>CHMRW\afkpuz s]UF &Ê  s q Ѐ> u ][]??= $WORD $BYTE $FVfv HOPHOHODE@AIJGDE@AIJGf=;:SR##Qj)Wa    a?  a    a?H H H H HHa?     O O O O OOP P P P PPK     ########aaaaaaaa????????0+ 3& 21/(f f h h 9 9 9 9 979?<hhhhhhhj gs`e]9 9 9 9 qrklffxymnvw9999999999999999C C8699d d$ $TU i!!!!!!!!zo_V>>Q)W X>>^tB"LNM) y INJAJBJCJEJGJLJOJPJSJZORAAAAADAAMAASADCADDANDCBWCLCCLDCLICMCCMPCS:CWDDAADASDECDIVDS:ES:ESCHLTINCINTJAEJBEJGEJLEJMPJNAJNBJNCJNEJNGJNLJNOJNPJNSJNZJPEJPOLDSLEALESMOV5G 5G 5G 5G 5G s]zs]s]s]À>6u]55G6:5u >6:u.55G>6t55G5G ]Ë5G]à5:5t>6u-55G5:5u5G5G ]]ðPd]U56}>5,t]U5,65G s]U>5 ts]U55r-5=w%Ê3:J6u劏3I63K63G6]/]U6,<v6㋇5P66 8P6w<5P5P66!s6P6 J6]à65P6u]UB6E6D6C6>5 t>5.u]sPs>>I6uD6seD6>I6uE6sME66K6X랰]8]U65v5]UQ6B6ȢB6 u 6 ]à sL> u > u]À> u!> u &?t &7> u&76  .+P PPN$P '6!]U젔 s6 ,P],P6 ]U  MULNEGNOPNOTOUTPOPRCLRCRREPRETROLRORSALSARSBBSHLSHRSS:STCSTDSTISUBXORCALLIDIVIMULINTOIRETJCXZJMPFJMPSJNAEJNBEJNGEJNLELAHFLOCKLOOPPOPFPUSHREPEREPZRETFSAHFTESTWAITXCHGXLATCALLFCMPSBCMPSWLODSBLODSWLOOPELOOPZMOVSBMOVSWPUSHFREPNEREPNZSCASBSCASWSTOSBSTOSWLOOPNELOOPNZ E QjzAXCXDXBXSPBPSIDIALCLDLBLAHCHDHBHESCSSSDSU P P]U6]U?P]U5P]U86"%6L6t5P]>L6v 5PM]UF5ÊO s$ usF5 G K6FG6vD]U26"76sFK6FG6,6PV]U.>'6w 6G6,686K6-6G66P!]U ]U>'6w $6sK6]U=6P%6s =6Pr]U=6PfK6$<u =6PT]U>%6u >=6vq>%6u>=6r%6]i]UT]U|6Pnr]U>:6w F 86F %6K6]U36"!6]U36"$6]U76"$6P>'6w@P>:6w@Y"Y"]U.56s]]U56s Pl]]U5~=6+ȁw36s5@=6+Q5]d]U$6s=>-6u26sK6>=6t@"36s&6K66G66P]]Uq6K66G6,6P~]U?W>:6v76"6s]]U516sK6Ê5 -6P]ðPK65,6P]U06sK6,6 5R16sK6Ê5 -6Pr]àK655]U]U>,6u 06s]]U^vs K6Ms7K6~ u'>=6r>=6rK6N6P#}s]U : r  S^ * &  > w$ : w79 P- u]U]U& u s] ]U`6 ]U&" A6 ^]U2]U']U]UC]UK]U3P]U&#:Pj6]U]U s H]=]U s %]]Uu| ]Ud sP[]VP]U; 8 sP]ð1P]U< &$ 6 I]UPv6 ]U \]U > v ] s6 -]"6 ]Uy{ ]U> u ]Z6 R]U> u ]7 4]U!   P]U > u > uX]?]U ]U  > u( ㋇6 Ƌ @ > w  . D?:50++1&7!=CIR tz{vql g2bE]VXSNID?:^:t FFܰ]UM6>M6wM65:FuM6u]UF,0< v@NAPv@Y ]UF,0< vF,A ]U5N66>6u6665È6 r66Ts,>6u 66]6N6s6]6]àN6s66Ds5R66UY 5N6t]UR>5 t>5 t]]UO6F8O6w 5^;u O6^ FO6uհ]U츰5PP5GP]U츴5PP5GP]U츽 PP5Ps 5G]ð]U츭 PP5GP\s15G5G 5uG5G5G ]ð]U츝 PP5GPs15G5G 5uG5G5G ]ð]U>6u0>5BYu 5G >5WOu5G 5 t]ð]UP>6:t@Y"]UFB6?6B6]UC6s5 &PC65G]U>6u>5 u5G ]s8s5 tdË5G G ]]U5G s?5:5u5G *F5G?>5+u *F5G *F5Gs 5:5t]U5G5G5G5G5G5G % P]U P]U36s"K655=6+Q]ðPK65]U>=6w%36s>=6uPJ]ðPB=6P]]Uay>*6@s&76" 6s*6PK6X$G6,6P ]]U5,656s K6 P]à36s 6=6]]U!6s>-6u16sK6  %6P]Á>=6w36s p=6P+]Z]U>6u6sR6>*6w 6sR6$46sR6 K6 86P>R6u*6P]US66s K656=66;6]ðPK65r]Us K6B]s K6B]s PHa]p]U!6"%6"16s -6Pf]Qs P']6]Uz76"626"sK66G6,6 >'6t06"$6sK6,6G66P]À>:6u76"!6s%6 K66=6!>'6u46"$6s86 K66*6]s'>'6w%6 6P]K6(]qs K6]W]UF55'65|:P65o P56mr>I6vI6.3,> Vzup$k*f0ao\WR MVH_ <66s* +ȉ$6<6뒀>MuC>u<>uJ0 ˈ< u7>NuQsP6ssm$a";rN빀>Su?2_ s8 +Qi:s۴Ê_>WuW>XtAPG sAPfQ"sp2 PAPcPocP>Yu $>>;&wp>s.>Zu s 0<u~ s}>t3UPPp]UPPa]UPPR]URr PFP:]U~ rU~ uUv]U>Uu]ðP PP.U]U~ t@U*"ЈsF :w vu]U~ r$F< t@P~ t@Y P~ t@Y ]Uvs ^PsF@vi]U P P]U Pv7]Uv]U Pv]UPv19f4_/+30353:3?3D3I3N3S3X3]3b3g3l3q3v3{333333E5] 7   ?   Q j 8kl'/! "RS#$ TUw%sr&vrVt'}|(~) WX*vYr+sZw,s-u.~[|/}\0q1{2y3upz4z5{ x t]678^mn_oz{p9qr:;<= >?`as@ABbtucCdDEeFGH vwIJLMNxyO (fghiP 0BXBPSIDI,:+ [] ambiguous operand$H@XPWXَэ&DPUVN]0102821102654321.DD (-p H  ;v P +H+ȉ+ȉ ƇpK\>St(<0u PlP P >] u%P \PsC (<0uP &T\:u <sPz P >Yt7P* dp  "UD#5D?)D>DF* F*DRTP6\P6|>*t Po6**DhEEPjsHPZsF\P<s\\P=P PP\Pk <>It:[t@P>t@Y"s$W Kp urt<t<t<u3>u>u uU:Vv>unUWt P W:VvUPvY]UPvo]UZZP9]U PPMsPP?<u]ð]UPP&]UPFP]UPv]UPv]UFȈFYv 6   u]U ]U ;r6 <t ]U<s/;s(POP2PPLP >Yt]ð]UHr0ocPztr߸cPF]U>w PucP]U Ȣur pPy> u Kp t PR[6Ls^P. @P% > u rς>u%> rU> uU$*UU> uo > u  P W~>tU"rOP=s \Pa>RunAPss2s PcPAPMabAP<tSAP3QPs,P< ;sP=PP>-u6>#u$6s>:u%L>:u>uPs>Bu*$& >Cu$>Du >Ku8z>Lun>Pu!s asNu>Tt{>Uu>t@)>VuCs"+ P /P 6 #=>t@sVxVq> u>uc>u\ZHQ>t@P8Y r>Au5 $&s( s@>Funsw>Ju}X|sUȢ:sÊ%cPwcPu'>wu]u]UtPtPJ>YuSs$P<s\P-lPOPE\PP*P=P,P]UPvNQ]U>uv7]U~as@P~zv@Y"]UvsF$_F]UP2 P PP>wZP< r  > t8>t>u>rȢƇ  부>uxu]U~uFsvCF]U,', tDF1F1VȻ 1,>us0P빰 ]Ur#v:P Ps *P]U6]U>t]]UtÈ]ð ]U>tt uqȴ s:PzsC>Uus";r P ?*P PU:[t@s Ƈ\ ȴ\>]UsP]Y.QU> t>u. PPP.@P P P> usms>wmuu>:u#>3s,:pP:s]U]U]U]U"@&;t>$u6]]U>ws txuu]U]Us ;r]U  ]U>Wut> uj]U66~ ]UT]U:Ft@P>[t@Y"P>t@Y"]Uvs5v PPPb>Nu >Yuϰ]U,0@< v@]Us@6]U9v )]+] LIBX$$$$$$$LIBYYq4<....,..Q.S.ºoS.[&BBCC&CCIu W`WWPQQQQPRSSSxSqRjQcS\TU}KPRQSP`W\VU..>}',RQSPW8T1..>}. PR X[YZϱ PSRZ[Xú R tX0 PSQRZY[X System SuppouW.G,A<wF.G I>.u:Ts> w$늀>wr]øoP]UƊ.]U> w.>?t>*uP:u]u˰]UP\PP]UPs,< w Ê\:t > t<u٠<sP#P=PrF< toP ]U츀P8]U>brAPt]bbbȴ']Uhj|(<0u Pa\P(<0u,PGYu<sP; P!PLP&PQ>Yu>TtT &PK&: ]U]U>t@]U]Us]ð]U>u 042"042sp0;4u@206Pp u@Z"s0ˡH u@s2)0s60뉂>u 0$ H "@$0@&]U]U]U ]U"]U H Àp u]U"]U>u5";&X$$$$$$$LIB$$$BAK COPYRIGHT (C) 1981, DIGITAL RESEARCH 12/81Invalid Filename$DIRECTORY FULL$DISK FULL$  ,.=:<>_[]*?Error Creating Password$Password ? $Cannot Edit Wildcard Filename$FILE IS READ/ONLY$File not Found$NEW FILE$-(Y/N)?$NO MEMORY$Filename Required$Output File Exists, Erase It$BREAK "$" AT $rt II 8253/8259a Interrupt Test Program v. 1.2 Copyright Viasyn 1986 Please standby... $ *** Board FAILED diagnostics. *** $ Board PASSED 8253/8259A diagnostics. $Timer0 Timer1 Timer2 Errors ------ ------ ------ ------ $"""""""""""""sTFs"p< u pˡ ;$vFs p"p]UP]UP]U[]U ;FtE]U>u#"&; v$]á +$]á $+"9r"&]U ;"r^sP*<u]à p> u]]UsvuF]U";rf]x"pP> uD]]U$Fs+"9r']U$"&ss~";&s]U]U;sx<t 68B]U ;"u< p> u]Uf<t@P> t@"Y ]Us#> u   >u]U_Èdr]U"8ѡ89w@"sF8@&8F_6&:pt@P:^t@Y"s&ʠs&<]U%]UP6_s]Uv+^ uPIP S+^ u PAPCS]UP]U,>u  $::Kp< u >Ut _$::;&w.> u&Xَэ&RP~+ɋUVN]0102821100654321UPP]UR~ĸZXRT\PP!P* PPPPw>uP($PePP\P\P\PF>u'W \P=>u?PV@]U]UPFP]U P P]U~ v FA, F0P]UFPF$P]UFPFP]U Pv]Uv]UKPvSP6ZJ]UcP]UPv]UPv]UPv]UPv]UPPz]UPvi]UPvY]UPvI]UPv9]UPv&]UFȈF]u@P> u@Y"r>AuP YNÀ>Mu(P YPP YK딀>XuP YR>BuPY ]CODE DATA EXTRASTACKX1 X2 X3 X4 8080 NZERONHEADyyXَэ&P +ɋUVN]0102821100654321U~ v FA, FF0vc ]UFPF$P]UFPFP]UF0P! ]UFd1PF 11RF 1R]Us v ,P :^w-ȴÊ_< s#P 6>6 uʰ:P 6\d>\u,Pt 6)HPg 9sP ]U\:Fu]UƋ^u \:u۰]U>\ t@ 9]Usx]UsP$P]]U>u>\u>t>v&PS #.PD5Ps$P9P{:vWQP"s:Pr[PPZP:_P2QP)?PoP6|PPPPPPPPPtS]U츺Pk ]U> wƇu\sf_F]UP> t]UF,0< vF,A<vF,A ]UFN ]U>w:Fu]u]U\6s(6zTwBP,uPTPPÙ>tnPfTƇTT]Ubdf|s|h>wLJju,`Z$<:t >uLf@P<Pmh`Z>buZbr@Y"ssh녀>u K>t,>t@ZP; r@Z"P;s@Y"s)ZK>uZ; r+ I|9lslTZH%`d1@L>Pu d1@P`dsKPP<wFÃjt3jʁjȉ1P YLPuPuh`jT^<:t >t'PPhZq<u>u >u>v0>s),8w㋇jZu(>,uP> t@Y rP}LJ,Ps P 5>\ t@P>\,t@Y ss>\t P };r;vQ>usP~ Ƈ~>u ;vȀ>u +9w>uU>uC>u3>u#> u>@u%>u >v>t;wZ>uUuvHs_㋇)sP Ρ ,>u%% u@P;w@Y s8s]Xs]À>uxsP s.x;P IP6@P62MP"P8P<PXP\PvPzP]À> s P ]á+@r3 s!;P6 PR6PD A&;P >t 6P:P l PQ >t&&PP6P6 Ps>v @A&60 PAPA P6Q P6a Py>us 6r PYt>t@ZP; w@Y"sZ+ jZ8SPE6fP7P\Ps4h|\P]KPPPP8\Pt]UZR;v xPIFX6Z]UZR;r@"sX6ZZ]U츠P6`TPt6ZFPf1`;Zs u!X6`0` P]U6`:P P]U6zN\Pt4]UzRzdR;w zs]6zRPdA+zZQ]UP<t>vPPh&Ȣu >u끷ZH|9jw0 u|끷S|j,F YK]UV6V< tV]U> u]Is>]t> uÈ>u뿀> u]U > w1s  Ƈ    P7 u  > r@" sW <v@" s' COPYRIGHT (C) 1981, DIGITAL RESEARCH [], ERROR: $, LOAD ADDRESS $DISK WRITE$DISK READ$INSUFFICIENT MEMORY TO CREATE CMD FILE $LOAD ADDRESS $ERROR ADDRESS $BYTES READ:$INVALID HEX DIGIT$CHECK SUM ERROR $BYTES READ $RECORDS WRITTEN $H86CANNOT OPEN SOURCE$CMDNO MORE DIRECTORY SPACE$CANNOT CLOSE FILE$& P6I Pp Pv6 P P  P>vs 6 PHP PhHP P\P PbP PW1P P26 P'! P6 % P sP ) P < P 661H9wl1 tj >tB >sg V PU ;r)u@s L P6 P P 1PX1 t6 T P k P6n o P 1P s P ]UF1v uFFFF]Uv6 P@ v6 v@ ]U;P ? vk :P 0 v  ]UC ;P  P - P P P P s:PO P P <wiÊsW QP^ s:P P6C Pz P61 s:P[ P6  PM u P  P) C P/ 3 P : P +> P F P P[ Ps ]Us  P ]U>wƇu9r84  o P>\ tnw PMs|Mu]U~ u~ u $~ r>rsF]Ut PBPX>u] P]U P| Pv]U Pk]U,P`]UF0PR]U;PE]UF t[F 1 1>t@"FPw@Y"FsFs P6F 1F]U~ v F, AFF0v]UFPF$P]UFPFP]UvhPs]UFPPPdP]UvPP'P]UvPP'P]U7sE6s]6>5u]ð;P:5sȴW]U^?$t 7F]UvFPPPdPg]U)v]Uv]U> s;Pnv]Uq P]Ut P]Uv]Uv]Uvv]Uvv]U>\t>\u]À>\u>_;u >_ t_\]À>^v]Ê^㋇x Ê^ \>t[^w@˷_֋P:t@Y"sʈǂ>u]\^\]U[:Ft@s[] $Alloc $no disk$Disk $ is the same as Disk $dpb$Equivalent Parameters$als$Same Allocation Vector Size$css$Same Checksum Vector Size$xlt$Same Translate Table$too few$Disk $ is CP/M 1.4 Double Density Compatible$65536$128 Byte Record Capacity$Kilobyte Drive Capacity$32 Byte Directory Entries$Checked Directory Entries$Records / Extent$Records / Block$Sectors / Track$Reserved Tracks$Sector Skew Factor$dpb$equ$Disk Parameter Block$Sectors Per Track$Block Shift$Block Mask$Extnt Mask$1.4 Compatible$Disk Size - 1$Directory Max$Alloc0$Alloc1$Check Size$Offset$xlt$equ$No Translate Table$Translate Table$als$equ$Allocation Vector Size$css$equ$Check Vector Size$ds$rs$Uninitialized Scratch Memory Follows:$begdat$equ$Start of Scratch Area$dirbuf$Directory Buffer$alv$als$Alloc Vector$csv$css$Check Vector$enddat$equ$End of Scratch Area$datsiz$equ$-begdat$Size of Scratch Area$Marks End of Module$program$No Stmt$ maclib$ macpar$ disks$ diskdef$extra $ DISKDEF Table Generator, Vers 1.0 $DEF No Input File Prese X.  P P|+ Pp Pd 8 >\ t P+g]U1]UPFP]U P P]U Pv]Uv]UPv]UPv]UPv]UPv]UPv~]UPvn]UPv[]UPvK]U@v[]U9s]á@=vD>s0P\P_tƇЁ]US<u9S]UTTȢT5t#V58VwVVu7]U45W<u:PAW< t@P>Wt@Y sI>W u P2>W u PI4uW< r<t,a<s&W_6W!`W뙠45764]U4XwXƇXum?$u2X>Xw&Xƻm,AY<s ƇXuӀ>e u e򤸀P\P >u P$P Pw897|XX<wƇ:nt, Command Form is: GENDEF x $ Where x.DEF Holds Disk Definitions With Optional Parameters : C: Create Diskdef Comment O: Generate Offset-Relative Labels Z: Z80, 8080, or 8085 (else 8086, 8088) x.LIB is Created Upon Completion. $Premature End-of-File$Length $Convert$Quote $ LIBno ".LIB" directory space$".LIB" disk full$cannot close ".LIB"$dw$db$ DISKSENDEFMACLIBDISKDEF ƇB XuƇ:$ P]]U>H u GNHoDPw]U8r38EPvV4*^ZZt P ?P]U~tv]U4:5r9s]Ê44]U^]s]\>\uZ>[ t>[u[4s\&s\>['u \[\9s P런r>[t2[^_È^v>\u]]ø P^[ [>\u>[$ts]뗀>\t >[$u[>s݀>[Ot>[Qu >[Hu>t[$>Bu ^>Du^ :^wvȴÊ_t+袀sr@s\u>\u P\].>\u%>['u [<'t]À>[ u ! PZ]]Q]U[,0< v@]U[APv@Y ]U[,A<v@]UPY ]U[\]]UPP8]U\. >ltlPYP>u2 P6]U졆Ht3\ -&G^3຀\%>uMOW2Ȁ>t<u DS<uP]UPF$Px]U P P]U PvW]Uv]U4 P4P1]U PP"]U PP]UPv]UPv3]UPv3]U>3u]Ê3ˀ`:u]ðPP3]UPv3]UPP3]UPvo]UPv_3]UPvL3]UPv93]UPv&3]UPP]UPv3]U PP]U PFP]U6]U6]U6]U!Pv]U"Pv]U#Pv]U$Pvx]UFȈF3u PP#]UtP,Њ"s3>3u PP"-"."/"0"1"2P93PPPH]U#s%@P>3Nu@Y"sP"P3р>3YtPP]&&P+PPPPP" -" ." /" 0 " 1" 2 PsP]U-:P:X%-s)>@r]á]á;r]Us1-3u>3u%u뷰PPC]U Pdh\P >3u@ P; r@Y"s  ؀>3u>u P\Ps]á @ 3$@PPPPPPrQY s: s&s>uPW#]U<uEi< uG^< uIS<uKHD,\S6E6G6K6I.. (..>Du 6$t;PQSR<uc tZ[YX tZ[YX"&OZ[YXÀ>t*PQSR"&g>u4Z[YXñ2,TGt O$2$gMXdisk  Unable to get needed memory!!! $ INVALID DRIVE $ NO DRIVE SPECIFIED $ DRIVE SPECIFIED IS NOT A MEMORY DRIVE $ FORMATTING MEMORY DRIVE $CONFIRM DESTROY ALL FILES ON THE MEMORY DRIVE (Y or N)? $ ERROR IN GETTING MXdisk QUEUE$ ERROR - PLEASE USE A CONSOLE IN THE FOREGROUND $u]6:Pd' &'sP3t PP͠rP;sjP;t@3ta>3t PP:t >uPUТ& "s PP$6]Áj]U~ r>t:wgs PFP. v?PFPp-;rF6:ӈ ]U~ u>uva28r(*>t  P/~ u]U~t@"s F0P]UFPF$P]U8t@'''P66>u :P  P ]U젾s~ tg)sD~ t>>t"<u<:r  P>tP)~ uv~ u)]U~ar ~zwf_F]U~Ar ~ZwN F]U< w(Ê t< u.P6u]U?P>3t33$@PPPs ]ư]U:u :u6]U젶:5r ]à6]U+< t]U>+ t]YQUG% + ,>,#s>, u+G$>wƇup,6+js#>,r]À>+*uPw+Ѐ>+:t>,u<G,A<v]6+s>+[uqG% ]>,t]> wi<v@֋P:t@Y"rȀ>uG%^<[u]Àu]À>+[uc^>,u],>+.u- +PDs>, r]À>+*u P{QӀ>+[uG%G ]]U> wF:uu]U,,Ɗ+?u ]U+?,:Fs]Uc++< t@+P]t@Z rAv>+ tİPP뾀>+St>+Qu1+<t@P>+ t@Y r+9+,0< v#+,0< w ݠ{{TXَэ&PUVN]0102821100654321U]UF]Ð{.츀P5PPw>5t@("s P|&=0r -PP(s "PI5r* #)!"%(s *P>5w`P s PPO>+=t >+_tMPX> u?>t52 sP\P$P]@(5-P >u%> uPP#P!€>v PP0므>t!%s>+,t>+ t PP>+,t@%>u>u>u>r> w s PP>t">u">"'w P"u> uPz %sP7UPP]UP. PP*u;r"s>t 67PP* PP$ sCs **> t@ss2<u]ðPPis&s 6]às 6]à]U>tȢ<u/ ])>tƊ6]<u]Â>t%6Is맂>t6s ]]]UFFƊ6u 6:u]U+s;w@"$]À>+t@]U>:t#>us]ðPP6>u"s&>:u@P>u@Y"sWXM:P66}k>t ZRt PP?]U,0< w]à,A<v PP,A ]UP]UPY ]UPY ]U>t PP>t PP]UtP4 P>3u PPpP>3t}PsUsL>3Yu'u<v PP'G$v+]EOZau!<Na (1/8/82) CP/M-86 PIP VERS 1.1 DISK READ$DISK WRITE$VERIFY$INVALID DESTINATION$INVALID SOURCE$USER ABORTED$BAD PARAMETER$INVALID USER NUMBER$INVALID FORMAT$HEX RECORD CHEt<[t<=u W ƇW tW ]U> s F S  ]UG>S =t]9]U/>S u%>S u]ð]U F tIF1 F1VȻ 1F t> u s 0P]U '   t3F1 ʈ ӈX F1VȻ 1 ]Y"QU   Ȣ t> uذ,P]U X u st "s v ]U  <w3Ƌ^^ ^ȿ 1 1 u]UX PPPw_ PPPi^7^G  > w$ s _ P_.  uո_ PX PJv]U^G$ࢧ o/G]UP^OʉRPY"PQ^OʉX ˆGP^']UO AP:P]U]U츐 PFPdP]U^]U$PrPPe(;v!&(+9&w$P&s$]U*P Pm P**GP@*6* P P6* PP@P P P PP P P PPr <u K ]Â> tVs, PPJ u]U P P Pc P\ PU]U^.66 O \ %6 g k 6 O { 6 g  P P -]U >  ѡ> ;4r@"s66 > ]U4> 4>4w 6 ;r P H> > 6 < wƋ6  u8 < > ㉇6]U?r  < wƋ":u6  uۋG $ ㋏6SGPQ"G Y[6P]Ë? s : ]U>4w@ >@ u@ D 49D wۋD ㋇8> X6 D ㋇6> B  < wSƋ 6 $ :sD ㋇6B 868@ : v  uD reI]U  p<0w@ s K s   T P Pq6M K s  P Ph s+ PZ3 PS@ @ ;4rMË6> 766 4\\K s\P{!\PPJ> 6'P> ㋇61PX1 t< 7CKSUM$FILE NOT FOUND$START NOT FOUND$QUIT NOT FOUND$INVALID HEX DIGIT$CLOSE FILE$UNEXPECTED END OF HEX FILE$INVALID SEPARATOR$NO DIRECTORY SPACE$INVALID FORMAT WITH SPARCE FILE$ =.:;,<> _[]OUTPRNLSTAXOCONAXIINPNULEOFERROR: $ - $$$$DESTINATION IS R/O, DELETE (Y/N)?$**NOT DELETED**$COPYING -$REQUIRES CP/M-86$CP/M-86 PIP VERSION 1.1$PPv P PPpRW P PzPfP? Pi Pb PNP' PQ]U6*P:P]U*GF]U~M" P 6M Jj9* P > w Ƈ  u踀 PI P>H t(H  ,t,s 6 ., ]U    :FwJ  > w' Ƌ^ :S t   uҠ s  u]U PP u> t] > u > u|> unp> u d Ȣ ࢿ rX @ PPȢ  Ȣ r = P]U^?:t 7F:P]U   > wF  P8 P  @ P .  u]U= PtF P\ P P\ PUl P P P > wU  P P  r%> w P  @ P uF]UN sP P6O AP P| 'P< kPn~ P : '8 7Pb^ Ps; ? PkERP, PwsOWP( sB sXP PAPdP1P[P2PRP3PIP4P@66 @ 'PC Pb6 6'PkP6'P]U@ @ ;4sH> 66 } P P:> tJ P P#6 S@ ]UF >O t O F %P6F ]U, PP <uR\ > ut \ P]øk P]ø Pv츼 Pon P]UU P\ Pv]U PP~ <uo]À> u]]UVtʺٹsB]hU1PP/]U   @ &?uP] &]hUF &]UF &@&]UPP  P ]hhPXَэ&T Pp+ɋUVN]0102821100654321UAO M <0t@N Qs6 ]À>T :u+S ,AP;3s ]À>S =uS!]]zs( ]UPP]UPFP]U P]UFȈF [uW  S P PPW <v>O t O ..sOWP, P[P{]Ul0 >0t0s 6 .0 ]UGL s > u]ðP >  2 PP6>  P =w@ s 4\h?j?I PZ>H t,H $ s> 6cʠ s#>4u M P]àL s x]]UFȈF w%> u.P Ƌ^$P u]UFƋ6 s]Uvsv|]U s ^P ^P X1  > t   " : u: s P_ P7kP6  ]U  < w'Ƌ^8?t$:t uҰ]U  * <s@" sN Ƌ s@ > tFs ƋP 뤋< ]UsE>H u]àH À? s!PZ\Ps$:M u]]U> 26 8 6 < 6 : ]Ur >S =u,(f m t {  Files Size Recs Bytes FCBs Attributes NameSysDirTotal:, File Not FoundDisk Reset Deniedd:=ROAA.[.&YۜXӍ&0PV> 3 ȜX.[.&YP.Y.[.[..YUVN]U]U Pv]UPvZ]UPvZ]UPv]UPv]UPv]UPvpZ]UFȈFZu* P]U>v\P&t]ȴÊ< u&66<9v6055<9v 504,a<s&_]U9Pt@ P ]U2  r T <u@P> u@Y"r> t׀> $uI$ <$te ,0 < vz D > t  `rWs6 뇀> ^u,A <v PS P6 jπ> t@ 6 T2]U [ < t@P> t@Y s ]ð]U [ u ]U2@2=vQ PF2 <}vi P]U copyright(c) 1977, digital research $Error On Line $SUBNo 'SUB' File Present$Disk Write Error$Command Buffer Overflow$Command Too Long$Parameter Error$Invalid Control Character$Directory Full$Cannot Close, Read/Only?$?   Drive Read Only (RO)Read Write (RW)System (Sys)Directory (Dir) Directory Entriesd:filename.typ Use: STAT Invalid Assignment set to 128 Byte Record[ro] [rw] [sys] or [dir]CON:AXI:AXO:LST:DEV:VAL:USR:DSK:RO RW SYS DIR SIZETTY:CRT:BAT:UC1:TTY:PTR:UR1:UR2:TTY:PTP:UP1:UP2:TTY:CRT:LPT:UL1: ** Aborted **User : Drive Characteristics CapacityKilobyte Drive Capacity32 ByteCheckeds / Directory Entrys / Blocks / TrackReserved TracksActive Active Files: is STAT 2.2Read Only Disk: d:=ROSet Attribute: Disk Status : DSK: d:DSK:User Status : USR: d:USR:Iobyte Assign: =, Free Space: Bad Directory on Space Allocation Conflict:[size] Too Many9P,Y9PP>Zu PzQ t3 ƇƇ$> t,  ø9P>Zu P(]U2H2Ê]001 $$$$ SUB(.Viasyn Single Floppy Disk COPY Version 4.0d Ȏ= P"N3ྀV ^)< u.=,4|"g < tSu R>Du r2&(&_ tP t>u> s>u66( 3(R9u=:WuoVltu (u$ R" QRYu uj R" QWs`YuE R" QfVFBYuru3Ym àe ( s " P" (st "%"XF ired for correct operation BIOS revision level must be greater than 1.1R CCP/M XIOS call not supported Unable to obtain enough memory Exclusion not obtained in MXdisk queue access Fatal error getting MXdisk queue access Source drive (a-p): Destination disk -- Source disk -- -- retry Cylinder 00 Copy Canceled . . . . do you want to try again (Y/N)? Copy complete .... Select one: (A) All tracks (D) Data tracks only (S) System tracks only (X) Return to CP/M (?) Provide helpful information Selection: Do you want to copy another disk? R - request new parameters. cr - duplicate last COPY N - exit back to system. > Illegal cylinder request, copy aborted. Fatal disk I/O error, copy aborted. Destination and Source disk formats do not match, copy aborted. -- Invalid Drive Specified -- -- Drive x: is Not Ready -- PleasXَэ&HP~+ɋUVN]0102821100654321UPP]UHĸpn@j\PP!P*PPPPw>uP(PePP\P\P\PF>u\P=>u-PV@]U]UPFP]U P P]U~ v FA, F0P]UFPF$P]UFPFP]U Pv]Uv]UkPvsP6pJ]U츃P]UPv]UPv]UPv]UPv]UPPz]UPvi]UPvY]UPvI]UPv9]UPv&]UFȈF$6 u3ûDu û5Ā:r0Ë+̀0}9òt À>*tSQR౎ZY[Ê'wÊwÊ wûX4˜; s$.P (ÀMâSQR u)t PRX ZY[fAv>*u  u u(X R*t2&K&2S[,A<sÀ>*t 2&G%ð-t&>*tfYk t t t+ u'>*t'9 t ct e*t tZY[$<t *t &g >t>*tVy>*u+OW2 <sb2.pe insert diskette and close drive door If you wish to cancel this copy, press any key. -- Drive x: Diskette has Write Protect Notch enabled -- Please remove diskette and disable the protection. When the diskette has been replaced in the drive, it will be copied as previously specified. If you wish to cancel this copy, press any key. -- Seek Error -- SCOPY will perform a multiple track copy of two floppy disks of the same format type and same number of sides on a single disk system. To start, type: COPY [param] where is Newline and [param] is one of the following optional parameters: "A" = Copy all tracks on disk "S" = Copy system tracks only "D" = Copy data tracks only If the optional parameter is left out, COPY will prompt you for the amount of the disk to copy. The copy process can be stopped at any time by pressing a ^C. [Hit any key to continue] DMA address is :sf_F]UP> t]UFN ]U>w:fu]u]UF,0< vF,A<vF,A ]Ur6s(6jwBP,uPjPPÙ>tPfjƇjj]Uz|~$%|>wLJuxp<uAPPnt>uJt>tt4t"<uu&PPePaP$㉇J.t$>t;~te9~u@ÈPv@Y"rP>ttB~ȢP [JjP Yi.t뷀>u .t6t~<w3 Ãjt j%1jnunuƸiPPP<P\PtmP.%P]Up@;v P Fn6p]Up@;r@"sn6pp]UP6xP6pP1x;ps u!n6x,믻^Jà 4JÉLÉPÉNË,S6J6L6N6P..H2(..[ S >*u.++2&[s< t<{s ct^ڏG9cuT5 uT"RY&ûȊ$t@&&G(ȡV3 TV*Ę) R(s R%RÜ>*t4u {ÝMo>*t4uPSQR5 ZY[Xu4Ü>*t4tPSQR5 ZY[Xu4AM EMXdisk ?XASDCP/M-86 or CP/M 8-16 or CCP/M 8-16 requ)0=x P]U6x7:P P]U6\Ptm%]U@|@;w ]UK&&]UtHtt Ppp;|vH|]UPPZPYp]U'>'w'(t'u''rB>'w;!<w!'طM:(t!u؀>!t뷰]à'1]U..:Fwt.u]Ulm6l< tl]UP> u]I0s>]t> ù>0u뿀>0 u]U3>3w1s 3Ƈ5 35P3u042>0 r@"4sW211<v@"2s'015:t21Ǡ2s40뗠4s00]U>]u@P> u@Y"sp>AuP0 Ylƀ>Mu(hP0 Yn0P0 Yi뗀>Xu9P0 Yp4]L ʱ3͎(  t8u"Ê& t8uÊб뽱빲 W?C CMDSW! CMD$$$ SUB  =_.:;<>,DIRSUSERREN TYPEERA DIR Program file "filename.CMD" not found File Not Found No FilesAll (Y/N)? File Already ExistsMemory Not AvailableRead ErrorCannot Close $$$.SUB << Non- << System Files Exist >> Ȏ؏''&'>'tм&''&GtUWV$^_]$'&''ω'$~ S3ۉ'$$s]ي. >CODE DATA EXTRASTACKX1 X2 X3 X4 8080 NZERONHEADCGROUPDGROUPEGROUPSGROUPASUBMIT START Copyright (C) 1980, Digital Research  . Q>u!  t:X$ > u . > u$.  tA>eB> ;t΋6Jtut>) u&< t tC?{ 뉿Q ) u < t 3u qu) ? u ?C3Ru ZàȘV tuFuZBR$uS[A:: CL $uu,tN>t% :>t m jb4) ,  to  u!7 ?tC?Yuπ>) t( t] <uP}t놾( 8 6<=t<_unF6udX>t8uS( 8u@( V8 u1>) t*FtCr( t<t b43ۊ$t$'>G%`uO$ t $$Q$$'L%>'>'Y'Q! Q$Q$6'6'L%>''YN \(2d +i  Fclyq[! I j" $>$t >D%w E%D%'($ u%l rPX< t< t < t<t< à$ uKD$t8<u:1<t2$>D%u 7'O't>D%u wU$à$ uQYQYQ>'tY$<t< s t<u< uÊNs P^Y@ u $$u #$:$s u n i<$tAQY렘$$'&CSQS[Y< u< t<u t͠$$Q<u t&K|<u QS$<u'<u[$$:sG<uK[~<u5Q?Y[SQ tC&QS[YS$ t*$$ $uC&QS[Y&< COPYRIGHT (C) 1982, DIGITAL RESEARCH [], ERROR: $, LOAD ADDRESS $DISK WRITE$DISK READ$INSUFFICIENT MEMORY TO CREATE CMD FILE $LOAD ADDRESS $ERROR ADDRESS $BYTES READ:$RECORDS WRITTEN $ABSCANNOT OPEN SOURCE$CMDNO MORE DIRECTORY SPACE$CANNOT CLOSE FILE$L <t Si:[tu<) 3 ? u ;? t"C0 sr r<sr? uC 0<9v P1X,  u>) u% tȢD2C` t;>1 tM1 ( u"2t-t( !( H ;@u.) w< tCi!:؎EP( 6X8 H \( ! >t t< usNA u&&&TR =t.. 3.tWi"tH1ȢB"u8 L 01"u* %t6<0  3Ɋ <.uF3C36[ C??u À[F t< tQYtFC<*u?NNF uC Ê t< sWH _ñ t  uC   QSб[Y]tÀ>tRZIt5u9t3RZ)tu>tRZtԋG H (  ( R!Zñ )u <u؎@:s,[&/ ؎bDi?t uLD0? u0!jfË'Î''ð( (( (#'"#u#3$$''$'$'Sy[u sÊ' $$A>$؎2󪡶$$ $jW>'u ?t력':u C,$uȢ'Ί'StP$$$ډ$$'$ $$ $$ t >'t J%H%c=H%tXH%>J%tKI%K'G%`'Pt)3Ã>'t[>G%`u'G $uG%'ñ>'t1'G 6$6$V O^G 8D DtrG 3'' u.'G$u#>'t6$6$'"à G :D r D GD$>$t$ u' u:u'FCù u u;u 'J'''??t ?tZH >'6$@Ë''''  >'tn)$0$f6''$>''uË'ڱ2Cu ڈE!| B'$tsunD9GrGSuX:$sMcuD+9GrG-pu2u-/^u :$s+u^$G2'ËG$$$, uσtutc<uutGESu GDGD3$D%D%E% 2$Ê$?%9t!sUG;u E+GE@ܰËG;EtsE+GEEEEEE$E%Ã.E%>E%GEE$À>$tE%u'$>$st QD+Gu  DYQVW$Ȣ$*t2ɋ_^YRW3ҵ:$sD;rЊt _ZRW:$sD+Gtr;sЊ߰t _ZËGSFF[UQ;r F;FrY] à$$$URQ;uF;FuYQ2G)D(F+Fu +D+DF+F؉DYZ]ËGDEQRVS /[:s Eu^ZY UVQ$:$s ;s F;w;FsްY^] U$:$s +Fu] U$:$s F+u] ñ$$ȎPnSi>Gx3B T Wild Interrupt!! -- HALT`(Ȏػe(Sv[C uñ h cPXHuÌ؎T(ÈT(àT($u $t uU($tu]u$4Ȱu̠T($àT($u$t$u2U($tu ]$t\$u $t$$4t$ȰuT($묠T($u$tàT($0t$ T($u$4uu6U($tu ]4$u\u $4t$4tȰuT(T($utu0U($ty $4u$4uðU(U($0t"x$t$<u$t$<u7< u.)$t$<u3ۀs%㋟7 tCw N$77@sL!7Ë tڊÈ77É7É7á7$7à77XBY*ʎ>767@ u7 à7'uV +顝$'à''É'&$'Ê' $$B$á$' >'t $'à$'t3+[S;grG[[k' O!G#Êg ȊGPZZ $á'!$!$9$Su 6' * |''G%'Gt gG%`$$Ȣ$<s'$$$S['À>G%`u'$$:$r'ut -'$b'S$$t؈W؉W$>'tÀ>$uG>$u@>$3@$R"$@$:t R{Z$$:$u$_$$:r'g<u>$u>'u$'2$Q>'uË' $t蠱$""$t *$t+>'u$tM>'tf''' Ë'$Q'!ڊ$PC$Ȋ$XC ۳ul ڈ ڊ*u ڊ*$tD$|DtD$Q8RZY>'t1Q6Y$9DsD8\|t Ts [T t)$7T>'t5H;$wױ7=$+,>E%$;uED%#8t ðÀ>$u #ډ#ð|t.|t\;\v+\\UUðTTÃ|tDD$$>$u $#$,#<t<u$|uD< u ÃpuS5[$ÃË%sá'$$'$'$ʱ3#>'tuN$p#Q?t$GOQqu€YY Ў$'0$&E#8t 0D&ED|tD'&e&>$u &e& ƒv$''$'$'á$''ً''7_ uF<:u#,Ar2<}.Fu<.t <:t<;tN]lut '<.u] FLuft<;u]F2*͈MuEty8u <t< u'ZRt<*u ?CuCFuñ W#t .8tG< w_[Y767@Y u7u2À>7t7ʎڎ¾778ڎ777t7ʎڎt777777 rف5G97u397u#7㋇33Ƈ3t*7#77u7 77<7777>7t >7u278787< r{%D5_ 83(-f-f-b-b-R-P-F-D-;-o.o.o.o.o.o.o.D7_:r*Ѷ:r*ʊѶ 7u/D0$Ds 7t uD&'4%4DD @t 67tTDdD7 t à7< rK837t-.o.-.7;38;3:txS^[tƇ;3L8Juf8 `<@uH 8,u Y3$t4 8@t*30t0 {u 8@uou7t޹d>7u93_7Ƈ;3 A4< r 6365 635443u!7Ƈ3643t%63D ًGg7wuC&78u 8$7t 8 t!tSu>7 ru;t à8%'uYQt'tY2'S'G[Y'8<K%!>'u$$tFI t&$;rQ$$ ȈYFË t IRQ3sYZ;$sBQRsZYQȈY[Z uǻË$#$ Ë'؀>$tO؋OÊ$$ـ&$ĘË'G $G$G "$$Ë'$>$uG $GË$$ 3$á'$$$#@&$ 6$R$$V Y$` L QYG r4u3á$'$& $ uû.&<tûE&V&^&(Sb'A)&&^YZ9'ڊOW[(' '$''u > .:;=,[]<> < t< tF++ɪ   BDOS: Error on Drive :, $Data Sector Unreadable$Unable to Select$File is Flagged as Read Only$*>7 r43g  Ċ7Ƈ;3 77:ûF3 S([t 7@@u à7<@s+QRZY& 8@ À>7@rRu"u:bt 8 t tOtZXK8 8 t>7@sÀ.88Ɗltmuֻ8$@ $G>7 r7 7GWGOowGtG8  8%-@ Ĵ t\H3@ /7GOloDGwV'^u!>7 r D $77t I3ûN3S3@wGO:u[QR5H3BPEXZY þ4>7 r54á77$:À>7 rTtg2.t+)t&7>7 s޻3EttPXûB3$ à:3>7 s$ $ â:327  PXu¨ PXu¨¨tQ2EYûD3?3G_/, t 8$:7u 2ɠ7G/@uCu& 8@tC 8$PXPXtPX¨tÀ>7 sPSQ7 t Y[XP$ 89393t!SQ7㋟3xyY[X L ʱ3͎(  t8u"Ê& t8uÊб뽱빲 W?C CMDSW! CMD$$$ SUB  =_.:;<>,DIRSUSERREN TYPEERA DIR Program file "filename.CMD" not found File Not Found No FilesAll (Y/N)? File Already ExistsMemory Not AvailableRead ErrorCannot Close $$$.SUB << Non- << System Files Exist >> Ȏ؏''&'>'tм&''&GtUWV$^_]$'&''ω'$~ S3ۉ'$$s]ي. >3333F\| Disk WRITE protected - Fix and Load Drive x: - any key exits 54)434=4G4a4464<T4@5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-./? 4 4@< <1@@+ @W@4;5:s84;5:86555556(_6(*Pǧ6( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@6;`7:8ASUBMIT START Copyright (C) 1980, Digital Research  . Q>u!  t:X$ > u . > u$.  tA>eB> ;t΋6Jtut>) u&< t tC?{ 뉿Q ) u < t 3u qu) ? u ?C3Ru ZàȘV tuFuZBR$uS[A:: CL $uu,tN>t% :>t m jb4) ,  to  u!7 ?tC?Yuπ>) t( t] <uP}t놾( 8 6<=t<_unF6udX>t8uS( 8u@( V8 u1>) t*FtCr( t<t b43ۊ$t$'>G%`uO$ t $$Q$$'L%>'>'Y'Q! Q$Q$6'6'L%>''YN \(2d +i  Fclyq[! I j" $>$t >D%w E%D%'($ u%l rPX< t< t < t<t< à$ uKD$t8<u:1<t2$>D%u 7'O't>D%u wU$à$ uQYQYQ>'tY$<t< s t<u< uÊNs P^Y@ u $$u #$:$s u n i<$tAQY렘$$'&CSQS[Y< u< t<u t͠$$Q<u t&K|<u QS$<u'<u[$$:sG<uK[~<u5Q?Y[SQ tC&QS[YS$ t*$$ $uC&QS[Y&<6;`7H:B8;7; 9@o77557 3ێ۾@ʎ㋇V(T(3Ǝ(L󥾀 @ .a(3ۋˎ؆@tʎ+a(Hc(Ҽĉ77;77:7>7@t;Spj[tߠ77<t< }<u777K779Sc(a(=t[99Sa(u[EDisk 1A (8 inch floppy) C: D: Disk 1A (5-1/4" floppy) A: B: 9>77Ȏظ*-((ƻ R tY0:rs CompuPro Systems CP/M 8-16 vers 1.1T System Memory: K 1 Megabyte TPA Base = :0000 Configured for ... / M-Drive/H, active as M: CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@6;`7:8L <t Si:[tu<) 3 ? u ;? t"C0 sr r<sr? uC 0<9v P1X,  u>) u% tȢD2C` t;>1 tM1 ( u"2t-t( !( H ;@u.) w< tCi!:؎EP( 6X8 H \( ! >t t< usNA u&&&TR =t.. 3.tWi"tH1ȢB"u8 L 01"u* %t6<0  3Ɋ <.uF3C36[ C??u À[F t< tQYtFC<*u?NNF uC Ê t< sWH _ñ t  uC   QSб[Y]tÀ>tRZIt5u9t3RZ)tu>tRZtԋG H (  ( R!Zñ *u <u؎@:s,[&/ ؎bDi?t uLD0? u0!jfË'Î''ð( (( (#'"#u#3$$''$'$'Sy[u sÊ' $$A>$؎2󪡶$$ $jW>'u ?t력':u C,$uȢ'Ί'StP$$$ډ$$'$ $$ $$ t >'t J%H%c=H%tXH%>J%tKI%K'G%`'Pt)3Ã>'t[>G%`u'G $uG%'ñ>'t1'G 6$6$V O^G 8D DtrG 3'' u.'G$u#>'t6$6$'"à G :D r D GD$>$t$ u' u:u'FCù u u;u 'J'''??t ?tZH >'6$@Ë''''  >'tn)$0$f6''$>''uË'ڱ2Cu ڈE!| B'$tsunD9GrGSuX:$sMcuD+9GrG-pu2u-/^u :$s+u^$G2'ËG$$$, uσtutc<uutGESu GDGD3$D%D%E% 2$Ê$?%9t!sUG;u E+GE@ܰËG;EtsE+GEEEEEE$E%Ã.E%>E%GEE$À>$tE%u'$>$st QD+Gu  DYQVW$Ȣ$*t2ɋ_^YRW3ҵ:$sD;rЊt _ZRW:$sD+Gtr;sЊ߰t _ZËGSFF[UQ;r F;FrY] à$$$URQ;uF;FuYQ2G)D(F+Fu +D+DF+F؉DYZ]ËGDEQRVS /[:s Eu^ZY UVQ$:$s ;s F;w;FsްY^] U$:$s +Fu] U$:$s F+u] ñ$$ȎP@ lpGxDeB V Wild Interrupt!! -- HALT`(Ȏػe(Sv[C uñ h coPXHuÌ؎T(ÈT(àT($u $t uU($tu]u$4t \]$ʠT($빰àT($u$t$u2U($tu ]$t\$u $t$$4t$t\]$t\]$àT($뛠T($u$tàT($0t$ T($u$4uu6U($tu ]4$u\u $4t$4tt\]$4u\]àT(T($utu0U($ty $4u$4uðU( X$<uY$0t"x$t$<u$t$<u< u$t$<u3ۀs%㋟7 tCw N$88@s!8Ë tڊÈ88É8É 8á 8$ 8à88XBY*ʎ>'uV +顝$'à''É'&$'Ê' $$B$á$' >'t $'à$'t3+[S;grG[[k' O!G#Êg ȊGPZZ $á'!$!$9$Su 6' * |''G%'Gt gG%`$$Ȣ$<s'$$$S['À>G%`u'$$:$r'ut -'$b'S$$t؈W؉W$>'tÀ>$uG>$u@>$3@$R"$@$:t R{Z$$:$u$_$$:r'g<u>$u>'u$'2$Q>'uË' $t蠱$""$t *$t+>'u$tM>'tf''' Ë'$Q'!ڊ$PC$Ȋ$XC ۳ul ڈ ڊ*u ڊ*$tD$|DtD$Q8RZY>'t1Q6Y$9DsD8\|t Ts [T t)$7T>'t5H;$wױ7=$+,>E%$;uED%#8t ðÀ>$u #ډ#ð|t.|t\;\v+\\UUðTTÃ|tDD$$>$u $#$,#<t<u$|uD< u ÃpuS5[$ÃË%sá'$$'$'$ʱ3#>'tuN$p#Q?t$GOQqu€YY Ў$'0$&E#8t 0D&ED|tD'&e&>$u &e& ƒv$''$'$'á$''ً''7_ uF<:u#,Ar2<}.Fu<.t <:t<;tN]lut '<.u] FLuft<;u]F2*͈MuEty8u <t< u'ZRt<*u ?CuCFuñ W#t .8tG< w_[Y868@ u8 à8868@Y u8u2À>8t8ʎڎ¾#8828ڎ8#88t8ʎڎt8888 88 rف5G98u398u#8㋇33Ƈ3t*8#+88u8 +88= 8888>8t >8u2828 8288< r{%D5_ j3(M-------x-v-m-.......D!8_:r*Ѷ:r*ʊѶ !8u/D0$Ds !8t uD&Y4W4DD @t 68tTDdD18 t à 8< rKj3 8t.O..".O.8m348m3:txS^[tƇm3L48Juf28 `<@uH<8,u '3$t4;8@t*4jt {u;8@uou18t޹d>18uk3_8Ƈm3 A34< r h3"75 h3D5I4f3u!8Ƈ36f3t%h3D ًGg8wuC&88u;8$8'uYQt'tY2'S'G[Y'8<K%!>'u$$tFI t&$;rQ$$ ȈYFË t IRQ3sYZ;$sBQRsZYQȈY[Z uǻË$#$ Ë'؀>$tO؋OÊ$$ـ&$ĘË'G $G$G "$$Ë'$>$uG $GË$$ 3$á'$$$#@&$ 6$R$$V Y$` L QYG r4u3á$'$& $ uû.&<tûE&V&^&(Sb'A)&&^YZ9'ڊOW[(' '$''u > .:;=,[]<> < t< tF++ɪ   BDOS: Error on Drive :, $Data Sector Unreadable$Unable to Select$File is Flagged as Read Only$+t;8 t!tSu>8 ru;t àA8%>8 rf3g  Ċ8Ƈm3 88:ûx3 S([t 7@@u à 8<@s+QRZY&;8@ À> 8@rRu"u:bt;8 t tOtZXK28 28 t> 8@sÀ.2828Ɗltmuֻ28$@ $G> 8 r 8 8GWGOowGtG28 ;8%-@ Ĵ t\z3@ /8GOloDGwV'^u!> 8 r D $ 8 8t {3û3S3@wGO:u[QR5z3BPXZY þI4> 8 r54á 88$:À> 8 rTtg2.t+)t&7> 8 s޻&4EttP{Xût3$ àl3> 8 s$ $ âl328  PXu¨ PXu¨¨tQ2Yûv3q3G_/, t ;8$:8u 2ɠ8G/@uCu&;8@tC;8$PXPXtPX¨tÀ> 8 sPSQ 8 t vY[XP$ 8k3k3t!SQ8㋟3xGY[X  System Memory: K 1 Megabyte TPA Base = :0000 Configured for ... / M-Drive/H, active as M: L ʱ3͎(  t8u"Ê& t8uÊб뽱빲 W?C CMDSW! CMD$$$ SUB  =_.:;<>,DIRSUSERREN TYPEERA DIR Program file "filename.CMD" not found File Not Found No FilesAll (Y/N)? File Already ExistsMemory Not AvailableRead ErrorCannot Close $$$.SUB << Non- << System Files Exist >> Ȏ؏''&'>'tм&''&GtUWV$^_]$'&''ω'$~ S3ۉ'$$s]ي. >3333F]} Disk WRITE protected - Fix and Load Drive x: - any key exits C5Q4[4e4o4y44464<T5@5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-./? 4 4@< <1@@+ @W@5;5::C85;5z:8!7556 66I6(Ǒ6(*P6( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@ASUBMIT START Copyright (C) 1980, Digital Research  . Q>u!  t:X$ > u . > u$.  tA>eB> ;t΋6Jtut>) u&< t tC?{ 뉿Q ) u < t 3u qu) ? u ?C3Ru ZàȘV tuFuZBR$uS[A:: CL $uu,tN>t% :>t m jb4) ,  to  u!7 ?tC?Yuπ>) t( t] <uP}t놾( 8 6<=t<_unF6udX>t8uS( 8u@( V8 u1>) t*FtCr( t<t b43ۊ$t$'>G%`uO$ t $$Q$$'L%>'>'Y'Q! Q$Q$6'6'L%>''YN \(2d +i  Fclyq[! I j" $>$t >D%w E%D%'($ u%l rPX< t< t < t<t< à$ uKD$t8<u:1<t2$>D%u 7'O't>D%u wU$à$ uQYQYQ>'tY$<t< s t<u< uÊNs P^Y@ u $$u #$:$s u n i<$tAQY렘$$'&CSQS[Y< u< t<u t͠$$Q<u t&K|<u QS$<u'<u[$$:sG<uK[~<u5Q?Y[SQ tC&QS[YS$ t*$$ $uC&QS[Y&<>( ?(@6;7:86;7: 9;7:;;9@55777 3ێ۾@ʎ㋇V(T(3Ǝ(L󥾀 P .a(3ۋˎ؆@tʎ+a(Hc(Ҽʼn 88;88;8>8@t;Snh[tߠ87<t< }<u777K77~ruvwxz|~DUfZ~'Z~'Z~'Z~'~'~'nw''Z~' u' ^~' ^~'^^_'\]\]\]\]\]\ ]\]\]\]\]\ ]\];\]\];\] 9Guà 9J$ $ $0 .9 9$ע9$ $0t$ .9.9$@ 9$ .9.99$ע999U($<u9`#9YCSU;Sc(a(=t[;;Sa(u[EDisk 1A (8 inch floppy) A: B: Disk 1A (5-1/4" floppy) C: D: : 88Ȏظ*-((Ļ R tY0:r CompuPro Systems CP/M 8-16 vers 1.1V L <t Si:[tu<) 3 ? u ;? t"C0 sr r<sr? uC 0<9v P1X,  u>) u% tȢD2C` t;>1 tM1 ( u"2t-t( !( H ;@u.) w< tCi!:؎EP( 6X8 H \( ! >t t< usNA u&&&TR =t.. 3.tWi"tH1ȢB"u8 L 01"u* %t6<0  3Ɋ <.uF3C36[ C??u À[F t< tQYtFC<*u?NNF uC Ê t< sWH _ñ t  uC   QSб[Y]tÀ>tRZIt5u9t3RZ)tu>tRZtԋG H (  ( R!Zñ +u <u؎@:s,[&/ ؎bDi?t uLD0? u0!jfË'Î''ð( (( (#'"#u#3$$''$'$'Sy[u sÊ' $$A>$؎2󪡶$$ $jW>'u ?t력':u C,$uȢ'Ί'StP$$$ډ$$'$ $$ $$ t >'t J%H%c=H%tXH%>J%tKI%K'G%`'Pt)3Ã>'t[>G%`u'G $uG%'ñ>'t1'G 6$6$V O^G 8D DtrG 3'' u.'G$u#>'t6$6$'"à G :D r D GD$>$t$ u' u:u'FCù u u;u 'J'''??t ?tZH >'6$@Ë''''  >'tn)$0$f6''$>''uË'ڱ2Cu ڈE!| B'$tsunD9GrGSuX:$sMcuD+9GrG-pu2u-/^u :$s+u^$G2'ËG$$$, uσtutc<uutGESu GDGD3$D%D%E% 2$Ê$?%9t!sUG;u E+GE@ܰËG;EtsE+GEEEEEE$E%Ã.E%>E%GEE$À>$tE%u'$>$st QD+Gu  DYQVW$Ȣ$*t2ɋ_^YRW3ҵ:$sD;rЊt _ZRW:$sD+Gtr;sЊ߰t _ZËGSFF[UQ;r F;FrY] à$$$URQ;uF;FuYQ2G)D(F+Fu +D+DF+F؉DYZ]ËGDEQRVS /[:s Eu^ZY UVQ$:$s ;s F;w;FsްY^] U$:$s +Fu] U$:$s F+u] ñ$$ȎP@ lpGxDeB V Wild Interrupt!! -- HALT`(Ȏػe(Sv[C uñ h coPXHuÌ؎T(ÈT(àT($u $t uU($tu]u$4t \]$ʠT($빰àT($u$t$u2U($tu ]$t\$u $t$$4t$t\]$t\]$àT($뛠T($u$tàT($0t$ T($u$4uu6U($tu ]4$u\u $4t$4tt\]$4u\]àT(T($utu0U($ty $4u$4uðU( X$<uY$0t"x$t$<u$t$<u< u$t$<u3ۀs%㋟7 tCw N$88@s!8Ë tڊÈ88É8É 8á 8$ 8à88XBY*ʎ>'uV +顝$'à''É'&$'Ê' $$B$á$' >'t $'à$'t3+[S;grG[[k' O!G#Êg ȊGPZZ $á'!$!$9$Su 6' * |''G%'Gt gG%`$$Ȣ$<s'$$$S['À>G%`u'$$:$r'ut -'$b'S$$t؈W؉W$>'tÀ>$uG>$u@>$3@$R"$@$:t R{Z$$:$u$_$$:r'g<u>$u>'u$'2$Q>'uË' $t蠱$""$t *$t+>'u$tM>'tf''' Ë'$Q'!ڊ$PC$Ȋ$XC ۳ul ڈ ڊ*u ڊ*$tD$|DtD$Q8RZY>'t1Q6Y$9DsD8\|t Ts [T t)$7T>'t5H;$wױ7=$+,>E%$;uED%#8t ðÀ>$u #ډ#ð|t.|t\;\v+\\UUðTTÃ|tDD$$>$u $#$,#<t<u$|uD< u ÃpuS5[$ÃË%sá'$$'$'$ʱ3#>'tuN$p#Q?t$GOQqu€YY Ў$'0$&E#8t 0D&ED|tD'&e&>$u &e& ƒv$''$'$'á$''ً''7_ uF<:u#,Ar2<}.Fu<.t <:t<;tN]lut '<.u] FLuft<;u]F2*͈MuEty8u <t< u'ZRt<*u ?CuCFuñ W#t .8tG< w_[Y868@ u8 à8868@Y u8u2À>8t8ʎڎ¾#8828ڎ8#88t8ʎڎt8888 88 rف5G98u398u#8㋇33Ƈ3t*8#+88u8 +88= 8888>8t >8u2828 8288< r{%D5_ j3(M-------x-v-m-.......D!8_:r*Ѷ:r*ʊѶ !8u/D0$Ds !8t uD&Y4W4DD @t 68tTDdD18 t à 8< rKj3 8t.O..".O.8m348m3:txS^[tƇm3L48Juf28 `<@uH<8,u '3$t4;8@t*4jt {u;8@uou18t޹d>18uk3_8Ƈm3 A34< r h3"75 h3D5I4f3u!8Ƈ36f3t%h3D ًGg8wuC&88u;8$8'uYQt'tY2'S'G[Y'8<K%!>'u$$tFI t&$;rQ$$ ȈYFË t IRQ3sYZ;$sBQRsZYQȈY[Z uǻË$#$ Ë'؀>$tO؋OÊ$$ـ&$ĘË'G $G$G "$$Ë'$>$uG $GË$$ 3$á'$$$#@&$ 6$R$$V Y$` L QYG r4u3á$'$& $ uû.&<tûE&V&^&(Sb'A)&&^YZ9'ڊOW[(' '$''u > .:;=,[]<> < t< tF++ɪ   BDOS: Error on Drive :, $Data Sector Unreadable$Unable to Select$File is Flagged as Read Only$,t;8 t!tSu>8 ru;t àA8%>8 rf3g  Ċ8Ƈm3 88:ûx3 S([t 7@@u à 8<@s+QRZY&;8@ À> 8@rRu"u:bt;8 t tOtZXK28 28 t> 8@sÀ.2828Ɗltmuֻ28$@ $G> 8 r 8 8GWGOowGtG28 ;8%-@ Ĵ t\z3@ /8GOloDGwV'^u!> 8 r D $ 8 8t {3û3S3@wGO:u[QR5z3BPXZY þI4> 8 r54á 88$:À> 8 rTtg2.t+)t&7> 8 s޻&4EttP{Xût3$ àl3> 8 s$ $ âl328  PXu¨ PXu¨¨tQ2Yûv3q3G_/, t ;8$:8u 2ɠ8G/@uCu&;8@tC;8$PXPXtPX¨tÀ> 8 sPSQ 8 t vY[XP$ 8k3k3t!SQ8㋟3xGY[X  System Memory: K 1 Megabyte TPA Base = :0000 Configured for ... / M-Drive/H, active as M: 3&.>& t(< THE 8087 IS ALIVE!!$NO 8087 HERE!!!!$STAT CMDI-./01SUBMIT CMD23SCOPY CMD(456LMCMD CMD(789CPM5SS1 SYSv:;<=>?@ACPM8SS2 SYSyBCDEFGHICPM5SS2 SYSyJKLMNOPQ80130 CMDR8087 $$$3333F]} Disk WRITE protected - Fix and Load Drive x: - any key exits C5Q4[4e4o4y44464<T5@5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-./? 4 4@< <1@@+ @W@5;5:85;5:8!7556 66I6(Ǒ6(*P6( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@55 3ػɸ (08!$t\051-2%345 67P`( ?(@6;7::C86;7z:t8;7:;;9@77557 3ێ۾@ʎ㋇V(T(3Ǝ(L󥾀 P .a(3ۋˎ؆@tʎ+a(Hc(Ҽʼn 88;88;8>8@t;Snh[tߠ87<t< }<u777K77~ruvwxz|~DUfZ~'Z~'Z~'Z~'~'~'nw''Z~' u' ^~' ^~'^^_'\]\]\]\]\]\ ]\]\]\]\]\ ]\];\]\];\] 9Guà 9J$ $ $0 .9 9$ע9$ $0t$ .9.9$@ 9$ .9.99$ע999U($<u9`#9YCSU;Sc(a(=t[;;Sa(u[EDisk 1A (8 inch floppy) C: D: Disk 1A (5-1/4" floppy) A: B: : 88Ȏظ*-((Ļ R tY0:r CompuPro Systems CP/M 8-16 vers 1.1V ,&FSTLOCLSTLOC1ST PAGE LAST PAGE>\?u.Æ.&&.+ tIsY.>.+utItÊЊ.>.+WQY_st :etOastVõQoYQYsQ..>+uЪIЪXP.>.+u IПtПt Filling each page with it's number * Verifing each page for it's number All pages verify OK PC Video Ram Tested OK HIT CR TO CONTINUE,^X TO RESTART,OR ^C TO STOP00000123456789ABCDEFNUOW7&8%UXg77sn88827 ^]_^ZY[Xñ/sPQ{8YQ-YX7|ù<?:u0Kû8C?0Cuû t< uSRQ t< t<t <uYZ[oPX>$׊:ж Њб0s uuuñ   VWRQSPѱX[YZ_^ñRQS[YZRS [Z PC Video board MONO ram test Ver 5.0 PC VIDEO BOARD AT PAGE NO PCVIDEO BOARD AT PAGE BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page. BEGINING RAM TEST ON PAGE : BIT STUCK TEST SHORTED BIT TEST CHECKBOARD PATTERN TEST(AA55) WALKING BIT TEST ADDRESS LINE SHORTED TEST RANDOM NUMBER TEST Testing Each page for page overlap YQ.>.+uتIتXP.>.+u؟I؟tYÈ.S.>SЪW.>r.;>sSЪ.;>s _s_áNP..>+uBI2ĪP..>+u It%2Įu N2NJ؊ÜPSQRVWUOW7&8%UXg77sn88827 ^]_^ZY[Xñ/sPQ{8YQ-YX7|ù<?:u0Kû8C?0Cuû t< uSRQ t< t<t <uYZ[oPX>$׊:ж Њб0s uuuñ   VWRQSPѱX[YZ_^ñRQS[YZRS [Z PC Video board COLOR ram test Ver 5.0 PC VIDEO BOARD AT PAGE NO PCVIDEO BOARD AT PAGE BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page. BEGINING RAM TEST ON PAGE : BIT STUCK TEST SHORTED BIT TEST CHECKBOARD PATTERN TEST(AA55) WALKING BIT TEST ADDRESS LINE SHORTED TEST RANDOM NUMBER TEST Testing Each page for page overlap &FSTLOCLSTLOC?1ST PAGE LAST PAGE>\?u.Æ.&&.+ tIsY.>.+utItÊЊ.>.+WQY_st :etOastVõQoYQYsQ..>+uЪIЪXP.>.+u IПtПt Filling each page with it's number * Verifing each page for it's number All pages verify OK PC Video Ram Tested OK HIT CR TO CONTINUE,^X TO RESTART,OR ^C TO STOP00000123456789ABCDEFNUOW7&8%UXg77sn88827 ^]_^ZY[Xñ/sPQ{8YQ-YX7|ù<?:u0Kû8C?0Cuû t< uSRQ t< t<t <uYZ[oPX>$׊:ж Њб0s uuuñ   VWRQSPѱX[YZ_^ñRQS[YZRS [Z PC Video board COLOR ram test Ver 5.0 PC VIDEO BOARD AT PAGE NO PCVIDEO BOARD AT PAGE BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page. BEGINING RAM TEST ON PAGE : BIT STUCK TEST SHORTED BIT TEST CHECKBOARD PATTERN TEST(AA55) WALKING BIT TEST ADDRESS LINE SHORTED TEST RANDOM NUMBER TEST Testing Each page for page overlap YQ.>.+uتIتXP.>.+u؟I؟tYÈ.S.>SЪW.>r.;>sSЪ.;>s _s_áNP..>+uBI2ĪP..>+u It%2Įu N2NJ؊ÜPSQRVWUOW7&8%UXg77sn88827 ^]_^ZY[Xñ/sPQ{8YQ-YX7|ù<?:u0Kû8C?0Cuû t< uSRQ t< t<t <uYZ[oPX>$׊:ж Њб0s uuuñ   VWRQSPѱX[YZ_^ñRQS[YZRS [Z PC Video board MONO ram test Ver 5.0 PC VIDEO BOARD AT PAGE NO PCVIDEO BOARD AT PAGE BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page. BEGINING RAM TEST ON PAGE : BIT STUCK TEST SHORTED BIT TEST CHECKBOARD PATTERN TEST(AA55) WALKING BIT TEST ADDRESS LINE SHORTED TEST RANDOM NUMBER TEST Testing Each page for page overlap -  1>͐:R5 (8Iv͇ͨͨ >2&7y7*.̈́7"̈́777͜ҏ! ̈́! "ҬT 7! ̈́Á#7͜!̈́*# 7ì""7͐j7*̈́!*!77>G<07U7͐͐HQ 7͐͐]g 7U͚͚5 71͐͐ >9777~/wGNx/wy#͐*KB*͐**xw*x*Bxw/ /2xwXNrxwmcÆxÌx/O͐*::q#)å*"!w+*"G+~V:7̈́PͰx2 ͬW2 Ͱͬ: G: O:=2J7͜>2x! / i>7Yz77TͰUͰ ʬ  z>0:O>9!4460#460#460!6>077P]QVQOQHRAS:S3S,Q%PSR3؎ȫȫȫ ȫȫȫȫȫ-ȫ1ȫ5ȫ9ȫ=ȫAȫEȫIȫ]$t01234 567\@0P9ϰ7.BCDE FGH\RgP\A!36N+%N+N!36 !3>000͐O:s  ́_sʕ́ 7O0  E7Eg"E*o_{_01¶´   #|7{z*}Gog"x1!$#F~/wNp% MEMR Rasmussen Memory Test - Version 2.0 Copyright (C) 1979 Lifeboat Associates BIOS located at Top of memory at Press "SP" or "^C" to warm boot at any time or "^X" to restart test from beginning. Response of "CR" gives default test range which starts above this program and ends at BIOS.LOCATION SHOULD BE WAS BIT DOES NOT MATCH "CR" to continue test - "SP", "^C" or "X" to stop Test series complete Starting address (Hex or "CR") THIS COMPLETES TEST NUMBER Ending address (Hex or "CR") Input error - Retype 4 hex digits Fast complement test from 0 to Bit stuck high or low test Adjacent bits shorted test Checkerboard (55AAH pattern) test Walking bit left  0> >> >>>  ʹ _O!͟@y! ͟ P ‘!͟ cy !͟s˜!͟!@͟!r͟>^#ʰʹä Wait for Channel A Txmitter... Wait for Channel B Txmitter... Wait for Channel A ReCeiVer... Wait for Channel B ReCeiVer...  FAILED when sending from channel A to B !  FAILED when sending from channel B to A ! -- SERIAL PORT OK -- STAT CMDI-./01SUBMIT CMD23SCOPY CMD(456LMCMD CMD(789CPM5SS1 SYSv:;<=>?@ACPM8SS2 SYSyBCDEFGHICPM5SS2 SYSyJKLMNOPQ80130 CMDR8087 CMDSMEMCOLORCMDTUMEMMONO CMDVWMTSPUZ COMXYSPUZ2681$$$test Walking bit right test Address line test Random number test - Cycle: Re-enter, starting address must be at least Re-enter, ending address too low00:2 22og"x1!$#F~/wNp% MEMR Rasmussen Memory Test - Version 2.0 Copyright (C) 1979 Lifeboat Associates BIOS located at Top of memory at Press "SP" or "^C" to warm boot at any time or "^X" to restart test from beginning. Response of "CR" gives default test range which starts above this program and ends at BIOS.LOCATION SHOULD BE WAS BIT DOES NOT MATCH "CR" to continue test - "SP", "^C" or "X" to stop Test series complete Starting address (Hex or "CR") THIS COMPLETES TEST NUMBER Ending address (Hex or "CR") Input error - Retype 4 hex digits Fast complement test from 0 to Bit stuck high or low test Adjacent bits shorted test Checkerboard (55AAH pattern) test Walking bit left -HHUU "t >t <~tP>tmX} m>u9a>t>t  t t (rrPXt P X@=~<~2P$u ú{oo_dPQV2KXnRAXd>t"& >t  >t >t> > ufð PXPS$uF" uð P4P/$u"" u$tP%$u2$t"|| v1.1 IO186 & TICK186.CMD are two diagnostic programs for the VIASYN/CompuPro SP186 to be ran concurrently, IO186 must run FIRST, then TICK186; best thing to do is to have these two pgms run from a BATch file. IO186 main function is to test the Serial Port on the SP186 Board; its secondary function is to hook up with TICK186 as to prove that these two processes can reside, and Run on the same SP186 board, at the same time. ! TESTS WORK WITH SINGLE SP186 BOARD IN SYSTEM ONLY ! tech talks only (event sequence): a) IO186 is run First, it will resides on Bank#0 by allocation default b) IO186 does Ku$'u}'ɺ úo ú% R tX0PXP$X$< } 07BQKC< t<t-<t$C,0r< r,:s& t Yú CS[ 12.. Interfacer 3A Test Program Version 1.3 Copyright 1986 Viasyn Corporation. $ Interfacer Serial ports at relative users: $ Enter user number to test or any key to test user number $ >> $ --- Not a serial port.T $ Testing Interfacer 3A User #$ Pass # $ ** Loopback Mismatch - Sent: $ Received: $** Character was not received. Make sure pin 2 is connected to pin 3 on the RS-232. $** Transmit interrupts not received. Lost $** No flag set in tranLL K R^^'_\\]$tj\ KtQ]$t_\:udIu]@tq$ty%_]@uc$uk]$t_]$u`>uຈR$@uR$uPQ\X{X뉺땺aw>t}`>tfI>tO2>t8PR$@tR$tPSQRڊ tLCZY[XPSRZ[Xú R tX0$QP$ XP$XY< }07PSQRZY[Xsimple Channel A-B cross transmitt-Receive multiple times c) IO186 writes the result of this serial channel test into Bank#1 space d) IO186 detaches from the console and WAIT for TICK186 to start running. e) TICK186 is run manually (you type in TICK186) or executes from BATch file it resides on Bank#1 by allocation default f) TICK186 picks up result of serial channel test left by IO186 and prints it. You get SERIAL PORT OK. g) TICK186 tells IO186 that it's done by setting a flag h) IO186 displays "reAttching, SP186 COOL !" and quits i) TICK186 quits $>]?u  ˌȩt/|u ˺/! <tҺS 3؀> u  .3ɋȎ@&_rËuuuuÃ&} uSomething's wrong. This ain't bank#1 ! Sure IO186 is up ??? $Can't find SP86ALOC. Run INIT186 first. $SW186 TICK186 Wait a minute... I'm not running in the SP186 ! $=* YGTASK #1 GTICK186: -- I AM UP ANDsmit mask. Lost $** Receive interrupts not received. Lost $** No flag set in receive mask. Lost $. No interrupt errors detected. $. Character loop-back test had no errors. $** Character loop-back failed. Errors = $. Interfacer serial port tests okay. $ ------ PORT FAILED TEST ------ $ Continuous Mode ON $ Continuous Mode OFF $ X Mode ON $ X Mode OFF $. Hardware handshaking (CD, DSR & CTS) tests okay. $** Carrier Detect stuck false. $** Carrier Detect stuck true. $** Data Set Ready stuck true. $Clear to EOS:Y$Clear to EOL:T$erial ports at relative users: $ Enter user number to test or any key to test user number $ >> $ --- Not a serial port.T $ Testing Interfacer 3A User #$ Pass # $ ** Loopback Mismatch - Sent: $ Received: $** Character was not received. Make sure pin 2 is connected to pin 3 on the RS-232. $** Transmit interrupts not received. Lost $** No flag set in tran System Support I UART Test Version 1.3 Copyright 1986 Viasyn Corporation. Character I/O Mismatch Sent: Received: Character was not received. Make sure pin 2 is connected to pin 3 on the RS-232. Carrier Detect not received. Make sure pin 8 is tied to pin 6. Data Set Ready not received. Make sure pin 20 is tied to pin 6. RTS/CTS circuit not functioning. Make sure pin 4 is connected to pin 5. Receive Interrupts not seen. Check UART and 8259A Transmit Interrupts not seen. Check UART and 8259A Receive Interrupts got stuck. Check UART and 8259A Transmit Interrupts got stuck. Check UART and 8259A System Support Serial port tests okay. . RUNNING -- wait for IO186... $IO186 space d) IO186 detaches from the console and WAIT for TICK186 to start running. e) TICK186 is run manually (you type in TICK186) or executes from BATch file it resides on Bank#1 by allocation default f) TICK186 picks up result of serial channel test left by IO186 and prints it. You get SERIAL PORT OK. g) TICK186 tells IO186 that it's done by setting a flag h) IO186 displays "reAttching, SP186 COOL !" and quits i) TICK186 quits $>]?u  ˌȩt/|u ˺/! <tҺS 3؀> u  .3ɋȎ@&_rËuuuuÃ&} uSomething's wrong. This ain't bank#1 ! Sure IO186 is up ??? $Can't find SP86ALOC. Run INIT186 first. $SW186 TICK186 Wait a minute... I'm not running in the SP186 ! $=* YGTASK #1 GTICK186: -- I AM UP ANDYZñ Number 15 of 15 $ Number 14 of 15 $ Number 13 of 15 $ Number 12 of 15 $ Number 11 of 15 $ Number 10 of 15 $ Number 9 of 15 $ Illegal Interrupt! $ Number 8 of 15 $ Number 7 of 15 $ Number 6 of 15 $ Number 5 of 15 $ Number 4 of 15 $ Number 3 of 15 $ Number 2 of 15 $ Number 1 of 15 $ Hit any key-- board should count from 1 to 15. $ Copyright Viasyn 1986 $QRVWȎغ u._^ZY[Xú PR.>t SQVWȎغ u_^Y[@.B.ZXAm80 Am8Usr0 Am8Usr1 Am8Usr2 Am8Usr3 Am8Usr4 Am8Usr5 Am8Usr6 Am8Usr7 Am86 Am6Usr0 Am6Usr1 Am6Usr2 Am6Usr3 Am6Usr4 Am6Usr5 Am6Usr6 Am6Usr7 ^ ^ SPUZUSERSPUZALOCMXspuz  SW: Multi-sector count not supported, ABORTING $ SW: MX queue error, ABORTING $ SW: 8 bit queue buffer full, ABORTING $SW: Program file cannot be opened $SW: Disk read error during COM file loading. $SW: No space available for 8 bit program $SW: Error opening SPUZ queue. $SW: Error opening MXSPUZ. $SW: Requires CDOS 8-16 for correct operation. $COM ????????COMZ`f MLLI!Vly j!uo~#fo OVerSWITCH for SPUZ: Version 5.8, Copyright (C) 1985, VIASYN. Returns True. $>]?u*. u .<.I.1.K t m-Hສ u3 u( u u >u   t & H 3󥱜]󥱚.ڱ3L2K P ࢧ؎e3\ 222:$:_!q#p:<2!D2K!272 *SW: Bios calls not supported $!2U!l!l!l"s!"1DM`i2CS"2=2>@:K[*RR}vºS.[&BBCC&CCIu W`WWPQQQQPRSSSSR$QSV9Vs!>[RQSP WV$QSRQSP`WTQSRQSPWUQSyRQSP WVrQS\RQSP`WTUQS?RQSPWU8QS"RQSP WVQSRQSPWUQSRQSP`WT* QSRQSPWU=QSRQSP WVP$QSRQSP`WTcIQStRQSPWUvmQSWRQSP WVP$QS:RQSP`WT3IQSRQSPWUQ S PRX[u.&K wȎر ñ%00>t6ˎþ^ ` VЊ^.^ ut3ۊـ/w.Br wWE ]?4 .>sL .;suډY.>.ًи.>t =FuX.>RZ=t"ڋ_.&OډO.;r./ڋ"ڋRWȎ_[=tO^ ڋwQȎ&O^ Y4^ @ڱ3^ /K.ົP XC&O'vH PXb0یŽڎێ‹. t6ċ8G .QRZY< t< u SQRZY[ t $<t'<u<t<tPбXŲڊdˎۻ^ &>^ |t3ɊLs^ ׌ˎù<$V$ A^N<$uS.>u%PS.@SPZ Spuz initializer. (C) Copyright 1985, VIASYN Ver5.6 $S&_r^t;tVW_tؾt^&_ uT33ۋ@&ú@A&&<u1ƇT &U&&;uCGG>uÓ0 øRPú\BXZRPmXZù< t - 0QSȻ׊2$u$[YPQVW u_^YXô Z[P M HXPSQRڊ t7CZY[XPXQP$ XP$XY< }07PSQRZY[XSystem Support 2 RAM Battery Test Program version 1.1 Testing 6264 at U22 Testing 6264 at U21 Error -- byte should be was at address : RAM has valid data  Q Q`P]_^ZY[X..&ê l t7A Q Lt&&5&A57&0&O7,$ l4YúAPXPXPXPX ú4t65>LdMXspuz MXspuz d SPZ or SPUZALOC procces already running, aborting... $ No SPUZ boards present, aborting... $ Detaching from console. 1 SPUZ(s) is ready to run 8 bit tasks $X>ະ؎3>83ۋˊT N^GCr>>tl3ߋN>tN*>t:vGt5>^nрOر^>ƀnSPUZUSERSPUZALOCSPUZUSERSPUZALOCSPUZalocqX $$//7ŽP`mw3CPr>t>u_D˺B=˺6ú)#ú\U{Uú..&;uFF&úCCLuù@ø øRPú\BXZWQY_WQS&;uGG[Y_&[Y_RP7k.`#UJXZP m hXPSQRڊ tWCZY[XPSRZ[Xú R tX0/PXQP$ XP$XY< }07PSQRZY[XSystem Support 2 RAM test program version 1.1  Pass # The time is <G >G^::O>0yK[***{CS"""sر^>ƀnSPUZUSERSPUZALOCSPUZUSERSPUZALOCSPUZalocqX  Board FAILED memory test Memory test completed. Turn system power off for a few minutes. Re-boot the system and run BAT to check the battery. Testing 6264 at U22 Testing 6264 at U21 Testing bit stuck low Testing bit stuck high Walking bit left test Testing checkerboard (55AA) Testing checkerboard (AA55) Random data test Error -- byte should be was at address :/,,wAu >u]Ë F3Pv PE >vPg P\P36g ?6u 6s g P%>] tU] %_ >a ue P6e e 6e c 룁>u P>u PI>u ]U3FF;r{6Fc c Pc PAPPP>tPP36c 6c uFy]U3FFF>u FFAPP^3FF;F~6 PF6P,>u  PP-P5P3FF;r4=P6Fe 6e c Pg P6c 36g >ucg PK6 u 3FV%6VF6VF FFPFZ;} FFcF]U3FFF;FKF3F~}&6vPvvZ;t3FFFӁ~uF]F3]U3  u P6vF~u > tPk]3] FP'NFFuP]øPFPF~uP ]N^#‹V^ Pu]]UPt "Pi 9P^ nPS PH P= 3F~}ZVPP 3F~}-V‹VPP FF6 P ]U 3FF~}RV‹ PVPPk   F맋]UP6-F~u~u ]U"6APP APP 3Fށ~}3vVF3Fށ~ }?6g vވF36s g P>] t<6] %%Fށ~tND: $ THAT WAS NOT ONE OF THE ABOVE COMMANDS PLEASE TRY AGAIN $ WHAT IS THE TIME? (24 HOUR FORMAT - HH:MM:SS) $ WHAT IS THE DATE? (MM/DD/YY) $ THE TIME AND DATE ARE: $  6 P6 %ZЋ™FVvv16 P6e 4?P6e Љ6u %PDP6u %ʉ PF6t PZ#ˆ6s %PJP PMu OPu UPh6 P!uOWP6~uX PAP P1PP2PP3PP4PP6 Pg Pg PAP[PF6 Px3FF&;F~6-PZFhPw3FF;F}6 P/F666pP@]U6g F%u3]U6vuF P]U3a e e ;s7>a u/6e c _ P6c a e 뿋]UF~ 7vv?t$vv%Pvv%Z;t3]F¸]Us>ryP-PPWc c 6e 636 Pc P_ P36c 6c ]U to>] u]Ë] %_ 66_ vVށ3Fށ~}%vFuvލP. F6 P ]UAPP  3RP 3RPXZFVvv#P FVRP3RPXZRP=P  3RPWP  3%RPsP^  RPfP; P XRPDP  3RP+P  3RPP ]U3RPvvXZF3RPvvXZFV3RPvvXZF3RPvvXZFVFVF3RPF3RPOXZRPF3[Yʉ^N~u PB F%PP. vvP ]UFVrHur@3RPvv XZRPP3RPvvXZRPP3RPvvXZRP P]Uu3]Í6=uP6Z>u 3]Á>u/&quP6>u]UP APP]UFP6c PZ ˆ^P6c PZ#ˆmPd6c PZ ˆ}PD6c PZ#ˆ99..)UF3vFF;F}(vF4vPvFиsPPP)ujQ6:u76AP;cu6=u`u]Uve]UtF3F~t,F%t voF%FF6 Pn]UF3F~t,F%t vnQF%FF͋]UAPP66#ƒuWOPP&3҉FVvv6KP]U3F Fv#F;v F+&3]U PFFFvP PPv 3FFF;Fs23F~}!6 vV%VЉVFFƋF]UP\FP<P6 VJPvd  ]UJ6 u;6 u3]ø]U6=t3]]U3F~} }<P>_ Pg Pu66_ %;u] 늋]UF +F~}~ty6F_ F>t6F_ V ЉV~t2~u_ FP*F6c PZˆ)Fs]Uv%F>tvVЉVPF[3VVVF~t FVV6 F#Ftl>u$3APPPAP66_ PPc Pc PP3]ËF6 VPZ ˆ]U66_ |F~ }A6F_ %u#6F_ %6c vPZ ˆF븍6_ %u6c PZ#ˆ6c PZˆ6_ %6e Љ6_ P Z#Ћ6e Љ3PP#66_  }6c PZ ˆ]U>s]øF~ 3FFF;w6Fe 6e F6Fe 6e FF~ |vv%Fvv%FFPFZ;~M6FF6F/Pi$P\<jJ* ]UP6FFPOAPP Ft PAPPP]UvVF]UvVF]U>FvP]UP]UP]UP]UP P%]UPo]UvP[]UPJ]UF>tVVv%P]UPPvP] ]UP] ]U' tP)PbP]U P]Uv#P]UvPu]UPSQWȎ~F& A&F_Y[X]P2 PPPSQRVUWFVv~u y ؃ y ރS 3SN;w r;w+@N^Yt tu t؃FV_]^ZY[XUQRPN v FV FV XZY]UPRF fF FfF FfFV ZX]UQRPN v FV FV XZY]<@&B؎ZЋ&R !+2󪸀P# Uvޱ^~ V3]UF]U3FF3Fv% tkvF%PCFދF tFNȋF tFF tFNawrb($####FPC3PFFPvF~t~u.PFFPvFE_r$Y$1$1$~u~tP33RPv~t F]3]U~v3]ËF%F Fv4v tovD;Fr[FvT;r6v4Fvv4~5vD+FvDFv vDFv4~5 FFF tFPF t7FvFvDFF;Fv3PF+FPFVP[F]UvIFvD% tP P^PvD% tT3FF;FsEv% uvD% t Pv4vF%Pv4Fh3FF;FsAv% uvD% t v PPvvF%P;F뷋v~E ;D ~ vD vD vD%@ tF]Uv~E ;D|=vDvD vvDv\ Lʉ\ L3vD vD vD t5vD% t&3vD v vD t vD vT ЉTFvt~U TvD ]UvD% uv~E ;D}vt~u vD TRPvD [YʋvDT;'u;s!vD TRPvD [Yʋv\L3FvF;D }svtFVPvD TRP3RP XZRPF[Yʋv4\!L#v4"P% t@vT ЉTF}vT#ЉT]UF3RPF3RPXZFVFVruv3FvF t3PvvF]Uv}PFvD% tvD% t vK< tv4T Јv4P%~@vT ЉT< tv4T#ЈvD%@ t3]UFFv;tP PZP FFv4v tF;FwFFFF܋F;Fu믋v4~5Fv ;Ft4FVvT;u!vDvDvDv4~5 FFFFF t2FVvT;uvDvDvDv4~5>VvT;uF>3v]UF%0s t t F%9v t t]UvFvD% t ]øvT#ЉTF PvD TFVRPvV ##N u uu3;r w;r NO uNOێ t u]U؎v~N;rNO]Ët T\DU؎~NF]UߎNj~33Iыы~3IOtF]U4FF̋vF̊%FFN tTv̊% u v̊% u 3v̈*v̊%Arv̊%Zw v̊ЈF3v̈LF҉FЉF΋FF̸FvF̊%FFN uv̊% tvv̊%u F̃FF̍vԋVF~|QP PP v̊% tFNFgaF̋vЊ%>u FЍcF̍ePv;tvv;tgPv;tiP PFP }vԉFPvP^]UvF t3PvvP PP# F]UF+>3ҋ]U3F~}6 F4 t v-Fv]UPvVvPtFF]UvVv6P%P]UF%arF%zwVЈVF%]UNV]U 3FF~}6 F4 tF E ]UF t(x t"PV& t 9nvnX@&B22±$'@'NuUv% uv%%tDFFFv% tv%%tF+F3PvvvփFFFFv%-tȉF tFv%F~0uF Fv%*uv F FF63Fv%P(  t FvF0‰Fϋv%.tȉF tZFv%*uv F FF63Fv%P  t FvF0‰F3Fv%PCltȉF tFv%PbF tFF Fv%PvbFPvFVKFFF ^FF FFFF tEv%As t t"v%Zv t tFF t!F FvFTFVFF ,~}v F FVv F 3҉FVv捆bPvv4 F ubFFV usFvFF tLF;FvAFPFVƒV+Pv0PF+FPvFFFPFV‹V+ƒPFV‹V+Pz.vV+VbFP{D [Yʉ^NFVFVvD TRPvD [YʋvDT;'u;s!vD TRPvD [Yʋv\LvDTFVFV]433l3vD tvD T;V| u;Fv$vD TRPvD [Y;NDu;^w=vD% t vFV%vD T3vD vFVv+D TvD v~E ;D ~ vD vD FV]U*3FVփ!V~ |FVusFFV؃FV6 3RPF RPvvXZ؃RPXZ%NvF ؙRPvvXZFV t\FVFV6 3RPF 3RPvvhXZRPXZ%NvF RPvv7XZFV t밋F t -NvFփ!+F3҉FFPvvF]UP%PyF tv%:u:v%PF~A|~P F@v\VЉV P PvDPrvVPvDP: tvVPvD P tF]v3]Uv4vv% tFvF%P%F~.u%~!}]ËF tNFvF뮋Fv3]UF%F~v3]Ë FPF~u$PPFF tFF%vDv: v%:t3F~|3F~}76 FF%Pvv%PZ;uF~tF%P6 FD%Z;u`vT ЉT6 FD%vvD%u v4u vD vD vDF#vD% tSvNv tF tv4PNv4FP<%~vDvtvD uvPvtvtF6 VvD% u7F t-v4#Pv4D!T#RP3RP XZvDTvDT taP P%F tJ3P Pjv4#P[v4D!T#RP3RPXZvDTv P,vD% u|vDT tov4D!T#vtPv4!P3F~}vtv%uFߋFv\Lʉ\LF]ËF tv4 t v4v]UFP t]v FvD% t v4vDt# t%v4P%~@vT ЉTvt t vtXvO36FF FvF4vV[FFF F tF;FsFF3FnF F FF3FVFFF3FCcsdDxXuUoObBgfe+++)))))))))))))F t_F;FvWF t0v%-u#~0uPFFPvvփNNFN;FvPvVvvփF;FvF)F3FvvvvփF t&F tFN tPvVvvփF]UߎNj~33I-+]U~s6 F4v tF]ÍP PP>]UvD% uvD% tpv4ufvtvt P RPPvD vt%vD vt~U Xv4TvtvD% t,vt% u vtvD vD ]ËvD TRP3RPXZF3FF~|v~E URPF[Y;L~u;\rvtFVPFFv4D!T#v4!Pl%F~u~u$3PPvtFV3F F t F>F t@vT ЉTFvD vDTv+D TRPvD [Y;|u;vvDTv+D0+>3Z;s3]Ë>FF>Љ>F]UFA|FZ PZFˆFF]U3PvVFF%et uoF%gt tHF} t uF~ t u t t t u t uF} t uFF tF FFPvVVЉV~|FF PvF tFPv FP^vF u|EvF~}-vFF؉F +vF PvFRPF}-FPF+FPv`0P+FPv8F%gu-Nv%0u 3vv%.u3vv )]U3FvV&FP| PpX tFP FPF3FFP| P(X t~}3]ËF t\~~F PFPkNF t PFP[PHۍFPvFPoP.FP^ PVX tk FFN tXVV60 FVFPxX t'6z FVFPPFFP P-X u FFN tXVV6z FVFPX  $RO RW SYS DIR SIZECON:AXI:AXO:LST:DEV:VAL:USR:DSK:TTY:CRT:BAT:UC1:TTY:PTR:UR1:UR2:TTY:PTP:UP1:UP2:TTY:CRT:LPT:UL1: panic: not enough memory! %c: R, Free Space: File Not Found %c:%.8s.%.3s set to , Drive %c: User :%3d Size Recs Bytes FCBs Attributes Name %5u %5uk %4u Sys RDir R%c:%.8s.%.3s Total:%5luk%5uToo Many Files Bad Directory on %c: Space Allocation Conflict: User :%3d %c:%.8s.%.3s Invalid Assignment t'60 FVwFPpBP/N랍FPZ PRX t PBFP; PN3RPFPFFFFv%@vFPFPPFP PCX tFP PX t3PvVoVЉVF t FPFPvVAF]UF FFP^| PVX tFPGLFP-vF~}H0vF.vFFF~} F)F3FFF} 0vFcFP,XZFF0vF PFPFRP5PzFPdNF t믋F t .vFFN tGFPlXZFF0vF PNFPGFRP FP3vF+F 3ҋ]PSQRVWUfF]_^ZY[XÃFFvDFDFDFFUPRQFV N v FV YZX]PSQRVWUfF]_^ZY[XЎW_E %E%] VW_^D %  DEËE E E E uE7E tm ]]]]E ueUUU )]UF tv ]; vFF%1FF0CP3PPPpF^ t؉F vF%1FFInvalid Assignment Invalid Assignment STAT 3.0 Read Only Disk: d:=RO Set Attribute: d:filename.typ [ro] [rw] [sys] [dir] Disk Status : DSK: d:DSK: User Status : USR: d:USR: Iobyte Assign: %.4s = %.4s %.4s is %.4s %c: Active User :%3u %c: Active Files:%3u %c: Drive Characteristics 128 Byte Record Capacity Kilobyte Drive Capacity 32 Byte Directory Entries Checked Directory Entries 128 Byte Records / Directory Entry 128 Byte Records / Block 128 Byte Records / Track Reserved Tracks %1u,: %3d,%03d%7d Invalid Assignment Usage: STAT d:Filename.typ [size] [ro] [rw] [sys] [dir]Read Only (RO)Read Write (RW)System (Sys)Directory (Dir)Invalid Assignment Drive %c: set to Read Only (RO) Disk Reset Denied Drive %c: set to Read Write (RW) Invalid Assignment Usage: STAT d:=RO ** Aborted **0CP3PPP2FV^ t؃FVv! vFtF uv~vv~~D+EtyEȻYKKyً3x CC$CCE y3CC1Wn^~LF uF vFVvF33SS0vFV vF3SS y ؃πvRP0CPS~~F tFuv~~uvxv~o3SSSSSS_|A"A . t.] .]CCsCCtڋF-0@FFދF3FF܋Y~6" " " " Fuv~F uFFF F } v[Y3PPPPQS v5Qv~;rwNNOOv~FFGGvFFYċF-?)FF1F~}v~Y&nv! y2y:}!ĹR9u NN$t w$t$t2 F ~FFEFEFE|gFFvD3۹%u؋8FV^F9)F%-?=#=|)F-8yV^F 3~E!NO CORE$con: TOO MANY ARGS$warw REDIRECTION ERROR$cALLOC$WRITE$BAD FILE$FREE$ 5V0```````````````LLLLLLLLLL```````IIIIIIAAAAAAAAAAAAAAAAAAAA``````JJJJJJBBBBBBBBBBBBBBBBBBBB``` CONCONRDRPUNPRN0123456789ABCDEF$@Y@@חA7yACnF?O8M30HwZ?sOu ?{Gz?-C6?:0yE>ؗҜ<2#I9 t c'< t <t ? tM tZY[$<t t u&g> tRZR9ZÀ> u OW2 <sb2.,믻N S$ à 4$ É& É* É( Ë, S6$ 6& 6( 6* G.: .< "  (.: .< [ S > uo  2&[s< t<{s t u NÝ B> t uPSQR ZY[Xu Ü> t tPSQR ZY[Xu M  MXdisk YY+CompuPro Floppy Disk FORMAT Version 4.5g  *  ( 3V ^7< @r^u> t-rB r:u5-\iu*u%Jo &  < t @s$u"O^> sV9 $1UC %P0D2XSz$[ \> r$Sj %0 [ urt rj òYbtj 0 Q I ƊY0€:p < r$  CP/M-86 required to do a directory reformat CP/M-86 or CP/M 8-16 or CCP/M 8-16 required for correct operation BIOS revision level must be greater than 1.1R CCP/M XIOS call not supported Unable to obtain enough memory Error getting MXdisk access Exclusion not obtained in MXdisk access Specify drive (A: - P:) : Confirm READY to format disk in drive a: (Y/N): Format Canceled . . . . do you want to try again (Y/N)? Format complete .... Do you want to format another disk? R - request new parameters. cr - duplicate last FORMAT. N - exit back to system. > Active BIOS 5-1/4" formats: type # title sides sector size (0) 128 byte 256 byte 512 byte 1024 byteType # Density Sector Size (0) IBM 1 (3740) single 128 byte (1) double 256 byte (2) double 512 byte (3)  &&_ t<u-2Š u !uru2PX À> tSQRojZY[_t j û> r3 @  &&_ $  t0+u:S @ $ ŠHuu+Yru2P;X Š.P (ÀMSQRаuZY[PjXZY[ SQR@quZY[F:P|XZY[   VSQRFZY[t S u E 2À> u ]&n\s     3҉  3   ˰  > 媃. t- u  ; u  뎱q" < r< s,0<s :ûy0 ~Stz Gl[gAAy>y4u_ u  uS I 2> t  & &K 2û ,A<s À> t   &G %ðt&> tYn t nt 1 double 1024 byte Select disk format type (0-3): ==> Host Drive: 80 track, 2 sided Diskette: 80 track, 2 sided 8 inch 5-1/4" disk: track, sided, format type #, byte sectorsNOT Formatted77M77M40(80P1282565121024 is a Memory Drive. is a Hard Disk Drive. -- Invalid Drive Specified -- -- Selected Drive is Not Ready -- Please insert diskette and close drive door If you wish to cancel this format, press any key. -- Diskette has Write Protect Notch enabled -- Please remove diskette and disable the protection. When the diskette has been replaced in the drive, it will be formatted as previously specified. If you wish to cancel this format, press any key. -- Seek Error -- -- Drive Format Error -- Clearing all directory entries for Read/Write on Drive x: is not an M-Drive/H --Confirm ready to reformat directory (Y/N)? FORMAT will format a diskette to be compatible with the CompuPro disk subsystem. The FORMAT program F tFF u PT FF~ |vVF~}0FPPF[X~}6/P A~~~ }6:P #~u_F^4P Fjx uz t P  P F t6v%F%]Ë]U Fx tFPPi %F t3FF;F}6P FP%FF0P6vz%F%Z;t⸎P  P[Rr@PH%F%Z;t 3P9ZF]UP 3F~|F4Pt Pj PP} %F u6v ~yt~Yu v~QP HP PP% %F u6v~yt~Yu FA]U6tFx t,F ȉz~ ~n ~u F2z t VЉVu Fz u ~ u3Fx t5xv6t>]U3F t 36 P;|3|3u pP4PPPP%tE}F4 t vFv]UF-]U3FF3Fv%tbvF0=FF uFN΋F uFF uFN뭃atwtՃrtbtFA3PFFPv F~u~u,PFFPve FCttt~u~tP33RPv~t F]3]UvFvD%t=P PPv3FF;FrvF |yFvFFvD%t]~u vL NN~ u=vXF |7~ u v#FvDvT ЉT~ tlvD%@tF]UvD%tvT#ЉTvD%]Ëv~E ;D |jvD% t v*vD%u:v~E ;Du"vDv\ Lʉ\ L3vD vD u3vD vg v~E ;D |]Ëvt~E E %]UvFvD%tCP PhPvD%tP3FF;FsAv0 uvD%t Pv4 vF0Pv4 Fd3FF;Fs=v0 uvD%t v PMvvF0P9F뻋v~E ;D ~ vD vD vD%@twill format a diskette as either 128, 256, 512 or 1024 byte sectors, depending on the user request. The FORMAT command has several optional arguments, all associated with any logical drive connected to a DISK 1 controller or Memory drive. FORMAT d:# will format Drive "d:", with type "#", and is primarily intended for batch formatting. FORMAT d? will display the format of Drive "d:". FORMAT d* will re-write the directory of "d:" with all entries marked as "not in use" (repaired). PNu3|2F ux tzFPz t P PP0%0Pt 0pu F0At 0au 3F u@F4Po;}l| t#dP[R,P+ P7F t6:P6/P6PF t%x uF t 1P 5P6,P|F49PPP% u恾st St!;}2| t4P-ċF t,F;zt#6tFz6tF t u6rlP[t tdP[u t1 t uP[t u16rJ]UFFP%Fv%F F%V‰F]UdPF[V PF%[3FF0PFFP| PF%[3Rvc]U3F65vv0t-vv0 tvvF]Uv~E ;D|=vDvD vt vDv\ Lʉ\ L3vD vD vD u1vD%t$3vD v vD u vD vT ЉTFvt~U E ]UF t(x t"PV& t 9nvnX1&322±$'@'NuUPRF fF FfF FfFV ZX]Uv%uv0%tAFFFv%tv0%tF+F3PvvvփFFtFFv0-tȉF tFv%F~0uF Fv0*uv F FF53Fv0P  t FvF0‰FЋv0.tȉF tXFv0*uv F FF53Fv0Pt  t FvF0‰F3Fv0P`ltȉF tFv0@F uFF Fv0PvbFPvFVFFF @FF FFFF uBv0As t t!v0Zv t t1FF t!F FvFTFVFF ,~}v F FVv F 3҉FVv捆bPvv F ubrrU~m|~4~]þPPF[[PPF[RPF[uZZЉVPF[VF]U lFPF[t tdPF[u t1 t uPF[t u1F3F;F~$FVЉVFvF |/PFH[VPFF[V~3F3FF]Uv F]UF%Pv ]UF;tu6x tVЈVx uz tVЈVF;ru t VЈV t P\Py]PY%u۾ZF4ZPRF0P[PB PZP53P[P)]UZF4ZP [P%FF;tu%F%x u F%zV0#ЈVF;ru0F%  ȉ t V0#ЈVF%]U~|~ ~]3FF~}=6FFP.%F%0Pp  FV‰FF뼋F]U 3F0 tF~uN3vvF]UbP<oP2|P(PP]U t'3PFst~Su<ҋx u]U4FF̋vF̊%FFN tNv̊0 t v̊0 u 3v̈(v̊0Arv̊0Zw v̊ЈF3v̈F҉FЉF΋FF̸FvF̊%@FFN tv̊%umv̊0u F@FF̍vԋVF~|P PP v̊%tFNFw F̋vЊ0>u FиF̸PvI;uvv7;tPv";tP PdP)vԉFPvP]Uv t v uF3Fv-uFv+tNF33҉FVv0|:v9/ 3RPvvHXZRPvF0[Yʉ^N뻋F tFV؃FV]U3FPvVvPtFF]UPvVvPtFF]UvVv6PP]UNV]ñ-1&3؎ZЋ&R+2󪸀PUV]UVF]U3F~1FFV usFvFF t>F@;Fv5F@PFF@+FPv+0PF@+FPv9F@FF@PFF+F@PFF+FP .vV+VbFP FF FvF4vV FFF F tF;FsFF3FoF F FF3FWFFF3FDP& csdDxXuUoObBgfel-WWWF u^F;FvVF t/v0-u#~0uPFFPvvփNNFN;FvPvVvvփF;FvF)F3FvvvvփF t&F tFN tPvVvvփF/]U~sF4v tF]øJP PAPc]U 3FF3F~}F4 uF~uXPPbF uAFF%vDv v0:t3F~|3F~}4FF0Pvv0PZ;uFŁ~u~F%PFD%Z;u_vT ЉTFD%vvD%u v4u vD vD vDF+vD%uvv uv4D%t(P P%FV‹]Ãt uyuJvD uvD T;V| u;Fv$vD TRPvD [Y;NBu;^w;vD% t v#FV%vD T3vD vFVv+D TvD v~E ;D ~ vD vD FV]U*3FVփ!V~ |FVusFFV؃FV3RPF RPvv" XZ؃RPXZ%NvF ؙRPvv XZFV uYFVFV3RPF 3RPvv XZRPcXZ%NvF RPvv XZFV uF t -NvFփ!+F3҉F@PvviF]UFA|FZ PZFˆFF]UPSQWȎ~F& A&F_Y[X]U؎v~N;rNO]U؎~NF]UߎNj~33I-+]U3PvVFF0et ukF0gt tGF} t uF~ t u1 t t1 t u1 t uF} t u1F tF FFPvVVЉV~|FF PvF tFPv FP^vF tzEvFD%vF0:u9v0PF~A|~P F@vZVЉV P PvDP>vVPvDP8 uvVPvD P tF]v3]Uv4vv%tCvF0Pj%F~.t%~!}]ËF tNFvF볋Fv3]U~v3]ËF@%F Fv4v tlvD;FrYFvT;r4v4vvv4~5vD+FvDFv vDFv4~5FF눋F uFPF t5FvFvDFF;Fv3PF+FPFFPF]Uv%t"F%vF;u NF]3]UFa|FzPZFˆFF]P2 PPPSQRVUWFVv~u y ؃ y ރS 3SN;w r;w+@N^Yt tu t؃FV_]^ZY[XUQRPN v FV FV XZY]UPRQFV N v FV YZX]PSQRVWUfF]_^ZY[XЎW_E %E%] VW_^D %  DEËE E E E uE6E tm ]]]]E ueUFv4t% P|%F tv4Pcv4FPQ0~vDvtvD uPvtvt FVvD%u2F t(v4#Pv4D!T#RP3RP0XZvDTvDT ugP P%F tP3P P%v4#Psv4D!T#RP3RPXZvDTv PD%vD%txvDT tkv4D!T#vtP v4!P3F~}vtv0tFF-v\Lʉ\L~tv P%F]ËF tv4 t v4]vT~tv Ph%]UFvD%uvD%thv4u^vtvt P PPvD vtF%vD vt~U Mv4vtvD%t&vt0 u vtFvD vD ]Ëv4D%t(P Pf%Fv4t% PN%vD TRP3RPXZF3FF~|v~E URPF[Y;L~u;\s}vtFVPFFv4D!T#v4!P%F~t~u$3PPvt~}-vFF؉F +vF PvFRPF}+F@PF+FPv0P+FPv-FF0gu<.Pv ~  t+Nv00u 3vv0.u3vv ]U3FvV FPP|X tFP FPF3FFPP5X u~}3]ËF tZ~~FPFP{NF tP{FPtl PY܍FPaFPZ. P?FPIPB X tk FFN tXVV6iFV FP X t'6FVFP P FFPP@ X u FFN tXVV6FVFP X t'6iFVdFP]U PB N랍FPGP@ X tP1FP*" P N3RP FP FFFFv%-@vFPFP P FPPZ X uFPP, X t3PvV~VЉVF t FPFPvvV[ F]UF FFPRPK X tFP<gFP -vF~}G0vF.vFFF~} F)F3FFF } 0vFUU )]UF tv ]= vHF%1FF0CP3PPPpF^ t؉F v F%1FF0CP3PPP2FV^ t؃FVv! vFtF uv~vv~~D+EtyEȻYKKyً3x CC%CCE y3CC1Wp^~NF uF vFVvF33SS0vFV vF3SS y ؃πvRP0CPS~F tFuv~vvzv~q3SSSSSS_55 . t.] .]CCsCCtڋF-0@FFދF3FF܋[~8" " " " Fuv~F uFFF F ~ v[Y3PPPPQS v5Qv~;rwNNOOv~FFGGvFFYċF-?)FF1F~v~[ &nv! y2y:}!ĹR9u NN$t w$t$t2 F ~FFEFEFE~iFFvDFV3FF u FEF t@vT ЉTFvD vDTv+D TRPvD [Y;|u;vvDTv+D TvD ~tv P%]UFvD% u3v4D%t(P P%Fv4t% P%v~E ;D}vt~u vD TRPvD [YʋvDT;'u;s!vD TRPvD [Yʋv\L3FvF;D }pvtFVPvD TRP3RPXZRPF[Yʋv4\!L#v4"P%t@vT ЉTF뀸vT#ЉT~tv P%]U3FFFP:  t]vFvD%t\v4D%t(P P-%Fv4t% P%v4P0~Fv4 vt t vt v 3V~tv P%F]UF00s t tF09v t t1]UvFvD%t ‹]øvT#ЉTF vD TFVRPvD [Yʉ^NFVFVvD TRPvD [YʋvDT;'u;s!vD TRPvD [Yʋv\LvDTFV]FPHXZF0vFPFPFRPU p FP NF uF t .vFFN tCFPhXZF0vFPNFPGFRP 3 FP 3vF+F 3ҋ]PSQRVWUfF]_^ZY[XÃFFvDFDFDFFUF3RPF3RPXZFVruv3FvF t3PvvCF]UFvPFvD%tvD% t v- tv4T Јv4D%t(P P%Fv4t% P%v4P0~@vT ЉT- tv4T0#Ј~tv PD%vD%@t3]UFFv;tTP PP( FFv4v tF;FvFFFFދF;Ftv4~5Fv ;Ft4FVvT;u!vDvDvDv4~5 FFFFF t2FVvT;uvDvDvDv4~5/VvT;uF/3v]UP'PtF u/PvXF tFvރvD%vD% } vD%vD%~v]ËF@F v23۹%u؋8FV^F;+~#=t^FVt^^Ff ~F%-?=}#=~)F-8yV^F 3~EUF@%F~v3]ËFPF+/3Z;s3]Ë/FF/Љ/F] $monthdayyearhourminuteseconddatetime ERROR! Sunday MondayTuesdayWednesdayThursday FridaySaturday %s PM AM READY TO SET CLOCK!! Press 'Y' to change %s, or any other key to continue: Press 'Y' to change clock format, or any other key to continue: -- NOTE: A NEW SECONDS VALUE IS ALWAYS RE-SET TO ZERO!! -- Enter new %s, or CR for default (): Enter AM or PM, o5[ u.r's%+;Gw&ûu^uS(&3&G5&GR&O-ే8 uvR s3GGGGS[ ur̾R ;tDVS[^ tbY>(t7u HÝ<>(t7uPSQR8 ZY[Xu7Ü>(t7tPSQR8 ZY[Xu7AM@ HMXdisk ?XASDCP/M-86 or CP/M 8-16 or CCP/M 8-16 required for correct operation BIOS revision level must be greater than 1.1R CCP/M XIOS call not supported Unable to obtain enough memory Exclusion not obtained in r CR for default (PM): AM): Press 'S' to set %s to %02d PM AM or any other key to NOT set new %s: CLOCK v1.4 ********** (c) VIASYN 1986 Press 'S' to set clock, or any other key to exit: con: TOO MANY ARGS$warw REDIRECTION ERROR$cNO CORE$READ$WRITE$BAD FILE$FREE$    &*/4;BGLT\dlvCONCONRDRPUNPRN0123456789ABCDEF$@Y@@חA7yACnF?O8M30HwZ?sOu!?{Gz?-C6?:0yE>ؗҜ<2#I9Su <>Du  q2< r#(&_ tP t > u> s>uz66" 3"RL2 fu:W0JuVg4tu "uV]&R=]u86VWou:Vt\u- &ru3  gXu3û\u   6'u3û\iu    %MXdisk queue access Fatal error getting MXdisk queue access Source drive (a-p): Destination drive (a-p): Confirm READY to copy disks in drives a: and b: (Y/N): -- retry Cylinder 00 Copy Canceled . . . . do you want to try again (Y/N)? Copy complete .... Select one: (A) All tracks (D) Data tracks only (S) System tracks only (X) Return to CP/M (?) Provide helpful information Selection: Do you want to copy another disk? R - request new parameters. cr - duplicate last COPY N - exit back to system. > Fatal disk I/O error, copy aborted. -- Invalid Drive Specified -- -- Drive x: is Not Ready -- Please insert diskette and close drive door If you wish to cancel this copy, press any key. -- Drive x: Diskette has Write Protect Notch enabled -- Please remove diskette and disable the protection. When the diskette has been replaced in the drive, it willSS2RAMT CMD fSS2RAMCKCMD gCLOCKSS1CMD hCSTAT CMDijklmnopCSTAT CMDNqrstuFORMAT CMD-vwxCLOCKSS2$$$yz{|}~CLOCKSS2$$$u"> 6&؎u3û\u ûfpĀ:r0p ut r òqt À>(tSQRGBZY[Š˜; s#.,?:=6CP (ÀMSQRuZY[PTXZY[ âA>(u  u u.3 -(t5&K&2S[,A<sÀ>(t 5&G%ðt&>(tvR t gt t$ u 'k t <t ?(tT tZY[$<t(t {&g >t>(tRZR8ZÀ>(u)OW2 <sb2.,믻ULTà 4TÉVÉZÉXË,S6T6V6X6ZF.<.>R5(.<.>[ S >(uo))2&[s< t<{s where is Newline and [param] is one of the following optional parameters: "A" = Copy all tracks on disk "S" = Copy system tracks only "D" = Copy data tracks only If the optional parameter is left out, COPY will prompt you for the amount of the disk to copy. The copy process can be stopped at any time by pressing a ^C. [Hit any key to continue]e and close drive door If you wish to cancel this copy, press any key. -- Drive x: Diskette has Write Protect Notch enabled -- Please remove diskette and disable the protection. When the diskette has been replaced in the drive, it will3ȎЎ؎XDEteR<t"tZ€ueeXe+;sfi..gg< t<0r<:r u1=t ?$S,[urIP5=$Ȣ5<s>?$ 3ۉ |y2>=t? t >5t>TuO ÊBdos Err On : $Bad Sector$Select$File R/O$ S(A#Y PQTU266P>>RYXQ!Q$YPQU2R6>P>YXÉNÀ>VVW^YWZ]QZ]RVZYQ^]]]à uD $t@ <u 9 <u, 2âà uQYQ YQ>t Y<t< s t<u< uÀ u $uñ <$tAQYàMMËRâ ð 'QYÊ tKډ/ &< t 3 36 4 t |IDKD6 Rȋ6 - Y/ "B*AËـ><tًȵDËD Ê"DFB"# ؉DË úBڊ@$"A4<u2Bڠ@ù2CQY á $Ë  'B ڊs?t 3HË ËI;rBR+ӋZñK+sQLKYt :t s\È. N^  S ; RÍI GDA%4elaB0 Wild Interrupt!! -- HALTMȎػRS[C uñ { vPXHuÌ؎CÈCàC$u $t uD$tu]u$4Ȱu̠C$C$u$t$u2D$tu ]$t\$u $t$$4t$ȰuC$àC$u$4uu6D$tu ]4$u\u $4t$4tȰu뭻sCw N$.h\Ë tڊÉÉÉá$%ʎ>6@ u 2ÌڎtʎڎtفG9u(㋇Ƈt/#u >Ȏ؎м@->+.+LDMPM COPYRIGHT (C) 1983 CompuProC:uûIË'ICI`sI$QYH u@QYHрŠ$QY Ȋ$يQYR$Y QȈYQZuR><tQSQCS t %;r[CYϋ%CˋC)t;J?t:u C,$uȢ oZѠ3FQ.$""*$Y378td8<t u u:uFڋ;u2BCBCuùهً:rهي1 6 |tڻڱ2Cu ڈ}21!It $t$""1t &$t&Su2twt 3t >u2>< r{%D_ (KvtkD_:r*Ѷ:r*ʊѶ u/D0$Ds t uD&DD @t 6tTDdD t à< rKtM M:txS[tƇrpuf <@uH,u 3$t4@t*lt u@uut޹d>uƇ A< r : u!EƇ6t%D ًGguC&8u$>t t!tS+u> r"u;t à%> rg  ĊƇ :û SN[t 7@@u À> rTtg2.t+)t&7> s޻PEttPDXû$ à> s$ $ â2  PXu¨ PXu¨¨tQ2YûG_/, t $:u 2ɠG/@uansmit interrupts not received. Lost $** No flag set in transmit mask. Lost $** Receive interrupts not received. Lost $** No flag set in receive mask. Lost $. No interrupt errors detected. $. Character loop-back test had no errors. $** Character loop-back failed. Errors = $. Interfacer serial port tests okay. $ ------ PORT FAILED TEST ------ $ Continuous Mode ON $ Continuous Mode OFF $ X Mode ON $ X Mode OFF $. Hardware handshaking (CD, DSR & DTR) tests okay. $** Carrier Detect and Data Set Ready both stuck false. $** Carrier Detect and Data Set Ready both stuck true. $. RTS/CTS handshaking okay. $** RTS/CTS circuit not functioning. Make sure pin 4 is connected to pin 5. $** Carrier Detect stuck false; DSR okay. $** Carrier Detect stuck true; DSR okay. $** Data Set Ready stuck false; CD okay. $** Data Set Ready stuck true; CD okay. $Clear to EOS:Y$Clear to EOL:T$Cu&@tC$PXPXtPX¨tÀ> sPSQ t ?Y[XP$ 8t!SQ㋟xY[X F???? Disk WRITE protected - Fix and Load Drive x: - any key exits 9%/a(ǩ(*P( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@F 3ێۊ_@Ȏ㋇EC3ɋَ؆@=sHʎ-;v.J@3..HLɎَNѼSZ~'Z~'Z~'Z~'~'~'nw''Z~' u' ^~' ^~'^^_'W6TT'WpUUWVVRS`SSSR RR RHPQ@QQQP PLLgg "t<~tP>tpX pk>u9>t>t  t t} tosfPXt Pc X@=~<~2P$u ú]PQ0XPX*>tnrb >tTXH >t:>. >t< $ > udð PP$u" uð PP{$un" u^$t8P$@Xt)$tR%IDP$4Xt#P$@ PH9GuöaCP3Ҋw t0QQ[YuA$uCompuPro CP/M 8-16 1.1Sd loader -- Error reading LOADER.CMD'~'~'nw''Z~' u' ^~' ^~'^^_'W6TT'WpUUWVVRS`SSSR RR RHPQ@QQQP PXu&$u+{ú|sjaXO$t$t Ku$'u%E úp úM R tX0PXP$X$< } 07BQKC< t<t-<t$C,0r< r,:s& t Yú CS[ 12.. Interfacer 3/4 Test Program Version 1.3 Copyright 1986 Viasyn Corporation. $ Interfacer Serial ports at relative users: $ Enter user number to test or any key to test user number $ >> $ --- Not a serial port.T $ Testing Interfacer User #$ Pass # $ ** Loopback Mismatch - Sent: $ Received: $** Character was not received. Make sure pin 2 is connected to pin 3 on the RS-232. $** Tr3oo%z)Q,2PVZ ñ uPPt<vA+ێkOZero divide error$%Ë-++Ë6_Cr Ë6_+́;s;rÃԱi@t+ P X"r.t " t5 t 5t+Ɉ  XYZ+^gVDRQSVRSSSP6 [ZB;vStack overflow$+RSCP/M V1.11 4/10/84 SMALL Model CLEAR library. Copyright 1983,1984 Digital Research.$UWVVN8*^_]U2FڙRP+۸SPSPFΏFЍFP+PP7FؙRP+۸SPSPFҏFF֙RP+PPoFPY6PDDCPDDPPDDrP~DDvvvvθPi P_DDPVDD PFPhFܓ2 uFP8DDSP 6 6vvX t6 6vvX t+ t.vvvvθP#P =u PDDxTPDD PFPFܓ2 u\FPDDSP 66 6 X u+ tDFFPP~ PO vv X[ tvv !P3 vvv vX vv\ X[F^SP+PP X tvv+PP@ X[ tvv+PP* z X[ t+ tAvv+PP S X[ uvv+PP X[ t+ u+ tFF|2%PPCPT 4=t'PPvvvv8 F^ t"vv+PP X tF]UFx uF_ uFF]UF2 uF>rF]UUFU uFF]UF66P+P~XZF6 6FF66FFdUPPP+Pvv uFPUPP+Pvv uFFPP+PFPP+PFN uvvX[ tFUPPvvvv6 uFPUPvvvv uFF]UFFFv v+PPo+P@P@FFF PPv vvv avvvvvv FPvvFPvvvvv vvvq uFFP+PN ;N|N;Nwr4F ]+׸Ҹ͹XZ[w7RPыG&bڹUUF f؋Ff؋Ff]YSPUFPvnPc]UFPvvN]ZYX[QSPZX[YSPQ X[YZSPRQ& UV+dPƺ XP DDF|^]UVWvdžF udžFFFF^ t^<%t+ uՃ~vPv FFFF<%tdžFF2F<-uFFFF ~0uFFFFFdž~*uƉFFFFL3}dž PF2-0XÉFFF~0r ~9w+ u~.u+FFF~*uƉFǃFFF;"Ǻ PF2-0XÉNjFFF~0r ~9w+ udž~lt ~Lt+ tFFFF t)P:+PX  PP PPV tPPX t)P:+PX  P+P PPV tPPX t)P:+PX  P+PPPV` tPPXv t)P:+PX  P+PPPV 6 vvX t66 vvX t+ t.vvvvθPP8 =u PDD66 6 6RX[SP+PPX t6 6vvX t66 vvDX t+ t-vvvvθPP =u PVDDI6 6P66 Po66,P] t   u t]U Fb(%F(%F3F((#F((**3FF (*%((,FP([F~r(]UPP,PEPFv,P,FP*PFFfF=rFP P,POFv,P,FPOFFfF=rY uFF]UFIPDDF!F@PZP uFF~rًF]UF6 6X[F^SPFFFvv+PP66 X t66 vvXZFvv+PvvvP+PX tuvvFFFPP+Phvv+PPXZ)Fv,Pvv FP+Pv3+F v+FP,FPvv v,Pvv FP+PP vv66 2X t6 6P*vvvv X uF]UbPXDDM t uPHDDP?DD t P/DDP&DD t PDDP DDL t PDDPDD t PDD t PDDPP-P66 6 6FP ]UVWV^ ڎËVvN 33sutOONNuO&. Ǎf_^]ÌV.^.UVWV^ ڎËVvN sf_^]UVWV^ ڎ.VF fN |<+suyusCùufÿsuRuLNv0فڃ~#u-+su!uˌOsuFt@ËIu.;u V;t IuËuAu َË&. f_^]. UVWV^ ڎËVF fN |0+sCùÿsNv*فڃ~+sˌsf_^]UFF]U FFFvvvvFFFF9F~vvX[]UFFFFHFFFP> PFF2X؊2% tFF2 P FF2PX[FtPPX-ƉFFƉFP^%[F2PWPVF2PWPVwF2PWPVvF2PV^F2=gt=Gt=ft=Ft=eur=Euj=Cu?=cu7=Su=su=xu=Xu=oup=Oud=uu=Uu =du=Du[v8DD9} |+ tlj+ uX~0u^<-u+ tvFF2PPvF2P; vPv^vF2P  tf_^]UVWvD% uD% t L D u6D% uVPHDD[GG t+ tLLD% tVPX[Gd9unG%@ t+ t nPDDVD% tPPDPP, [GD D=uL0L "VD[G2%_^]UV+PP PPu PPg FFF,V> P2X؊2% t 2 P2PX[F uvv ^]U+P P^%+PPc@'FFFvv+PP66 X t66 vvXZFvv+PvgvvkP+PX uvvFFFPP+PC vv+PP XZ)Fv,Pvv uFFP+Pv +F v#+FP,FPvvX uFv,Pvv: uFFP+PP vv66 X tF]UFF Fvv+Pv [ FFvv+PP$ PP XZFvvPP XZFF+SP+PP+Pv X[F^SPvv[X tFFPP vv XZF vv+P@P ^Pz2%PF+F HF؊2P|PU5=t)v F+F FPvvF^ tF]UP DDPPF tF2PP ~ u P DD~u P DDF2]UP DDPPcF tF2PP ~u P@ DD~yt ~Yt+]UPP666 6d +ۋSP666 6 ]UFv vFFvvFFvv+PP PP XZFvvPP XZFvvFFF+SP+PP +Pv X[F^SP66 2 X uvvFF2P F2[;tFFRPv vX u͋FFPv vSPFRP FPVpN~|LvvX[]U+۸SPvv]UvEADDPv]UF8FF<tFF<t+ tNFF9FrNFFPdP`DD[2=t*FF< tFF< t+ t+ t{FFF]UvKDD]UVWv |2%VDD_^]ZX[Ww7ZX[)_w7ZX[w7WZX[w7)_YXZ[WYXZ[)WYXZ[!!WYXZ[  WYXZ[11WZYX['WZYX[oUVV]U+FuFu@FF]UF^!F!^ ]UF^ F ^ ]UF^1F1^ ]UN^ F^ F]UN^ F^ F]Z[YX[SPZ[YX+[SPUF UFF 3FFF tVV FV FtVVFV F Fu3FFFFVV VVQvvvvYYs$QvvvvOYYYF^VV VVFu"F^Ft ]YSPF^ZX[؃SPZ[YX;[u;uPZ[YX;[u;u+PU4= t=1t="t=1t>:20.="0t=" t="t=1t=1t=0u~=0uv]U+PDP>t >t+ t +]UVFF+;vv66+PP X tPvv!FP+P@PF|f^]UP^XЙRPP+]UV+V DDF|^]UVW PFXÉVF[GDPPPP+PP P+PP P+PP5 P PP4_^]UVWvr +, PƺXÉNj% u +_^]U]UVWv~ƉF }~~ fuF+~ et ~ Et+ t@F ljF uF~~F F 2PvPP@Pvp ~ fu WvV23DDFH؊<.u FHF< t9Ft Vv\2Ff_^]UF 2Pvvv]UF 2Pvvv]UF 2Pvvv]UVWvF<<.uljF/ P2X؊2% t+ u׊ u@<"t <'t+ tDF2P@P)F~u @PWLF+ljƋF@P~DD+FƓ2 t > PƓ2X؊2% u+ tˋƓ t Fo+PDD+P@P  t@PRP\PDD@<>tJP@@P=uPP+PPP[;t+ t@P_PT +P@P=t@PnP2?PW( u*PW( u+ u F4PPӃPWPF~u }PWMFPF2Pv#FP&DD@PDDFFPvD&vDDPWP-F~uWDD2=>u=<u}'NJ t+PDD"PDD=uPP!+P PP҃PDDf_^]Uv|P%v|P%P|Px%|P P҃PsDD]UVWv"P["_^]UVWvv+PPX tNP PX tVPX PovvXZf_^]UVWv~v vFFP+PPޏFFP+PP+PPJX uhPovv0X u%@ t:"P+P@P4PP=Vp=tF$!P+P@P4PvvV9=tPvv4PD%XÉF.GPFF2[FPPDXXPP%XX9Fsv v+PP[X t+ uv v+PPX u=PQ PH!X tVP6X P1vvXZDFPPXXFFv v+PPt܏FFvv+PPX t!!PvvWvvVRPFFFPvv]Vvv+PP5XP$>vv+PPݍFP /vv+PPXZNjPZ PQ*X tVP?X P:vvvvX t vvv vXZ,v v+PPX t vvXZ%@ t:"P+P@P4PPV=t$!P+P@P4PvvV=t vvv vXZPvvfPv vً4FGPFF2[FPPXXv vWvD% t-V@DDD% t DPDDVGG[GDdP* DD_^]U]UVWvLLD% =uDPDX+ÉF ~+ t#vDPP)Nj9Ft LMD% tD tD% tDDPDؙRPPRDVD[G+f_^]UVWv |PF2[2% VF2P6_^]UVWv~^G% t*^GWV^7P9t ^O/++ PvF2Pe[;u O u+_^]UVWFH+@VDD u+VWv_^]UVW"NjTDPDX3 t P1DD+=D;Fr1"9uvDD u PDD+ƉNjƸ u_^]UVW^ƋDPF[;w v[DFⓋÉWD+F[GWE[GW[v[VF[GVD[GF"_^]UVWLLF?FP/DDƃu+9@RP+P@P PFF2%X؊2% tFF2% PFF2%PX[F~ |G.F \FF< tLGP> PFF2%X؊2% tFF2% PFF2%PX[F~ |Gf_^]UVWvV?DD u F% t% t% u+ t8PO PFGX tP+PPVGP4PV %@ t)"P+P@P4PPW2 =tFE2PDDFPPЃ%=uFvE2PVDDVDD~uFf_^]UVW=u~VDD PƺXÉǃ~u Pv" u D$Pv" u )PvV)  t# _^]U+PvvZ]U+PvvF]UPvv1]UVWv+ljFD% ujD uD% u+ tYVVPDD[GG[GG uL5LPDD tL@DPF2[+PPX uϋP  PX tVPX PtvvXZf_^]UVWv^% t PDD~svPXP[u0P+P@PŃ[< uP PyŃ2%9s PPQŃ.<u^ +EFPG2[N~v v+ u~vF G+Íf_^]UWV+V Fu Ƌأ<>.F^ ;wr ;vr+v@6<>>^_]UVvDD uc~u+Y% t ?% tvvV'% tvvV vvV# ^]UVWv PFXÉFFWV tE t vE2[G~u?P@Pl t+ t^G2PVDDF~u WPgÃ~u^% t WvBÃFv^G2PC~t ~t+ tF~+PPXf_^]UFFF^G2PDDFF\v Pƒvvv+PPX0Pvvv +P@P;X t%` t+ u ~+ tn% t++PPv VG[GVD[GV[V[EⓋ;uWD[GWE[GW[W[ǣ"+_^]UVWvVDDFH+@FPZDDF u+c^Nj9tG9sGPF2[NF u$FNjNjFƋ OWN2[NF uvv\f_^]UVW=uV&DD PƺXÉǃ~u ~u PvF, u q$Pv+, u VPvV tV|DD- P+PPE2P +PP+PE2Pm _^]U+Pvv#]U+Pvv]UPvv]UVWFPv vFPvF Ѓ ƍF9uFFFN20ǃ9~FFP[F9uۋ^Ff_^]UVW <FF ƋFRPFFv~ FF~u?FPF%[FP+PPCOvvX[ t t+ u~uJ FPF%[FP+PPOvvX[ t t+ u uH'tF tvv+PPX t+ t^-vvTFF(vvvvSPFFFP^2[vvX[ űƍf_^]UVWLL^ƋF NjFFF t }؉Ƌ^-GP^+[2D% tVVF[GG[GPF2[D% t"FvދGP7i DD%@ tN~ tDPD[;s+ t&DPDX+ÉFPDPP VD[GD+DPDX+ÉFPDPPDVD[G9Ft LF2%f_^]UVWF 0F 2v~"_^]Z[w7ZYX[GUVvDD u tPvvyPvvOhVv DDSP+X PV P}vv XPo,NF =t=t=uwԁ$P++PP(X tPPPPX[^]UP+ۋSPv]U]U]UVWv~ v vFFP+PP+FFPvv_X u%@ t:"P+P@P4PPlV=tz$!P+P@P4PvvVh=t vvv vXZ=Pvv 4PD%XÉF^F~uL P PX tVPLX P;vvv vBXZE~ uFPP XX+GPF2[FPPXXFPPXX9Fsv v+PPX t+ t7v 4v X t +PPvv XZF)+PPvv X t +PPvv XZFFv,PFPvF~t=~~"% t  F FFFPFRP FFPFRPՍF PFRPՍFPFRPԋFF vv +PPX tv^G2P^F tP,P3vvX[]UV~u+)P P @Ƌ9FtFHP P^]U~tF9FtFHP P]UVWv,DD u % t+ۋ%@ tV PZXPUD2PIDDFP#P[vD2Pb0P+PP+P@PԏFF% u.vv+PPX u PvvX uz%@ t<"P+P@P4PPV=t $!P+P@P4PvvV=tPvv@Vvv+PPXP!4NjFGF9s <t+ uV4+ÙRPvXPe P+PP'Vvv+P@PN+PP>XP-VP&X P PuX[f_^]UVvDD u+ % t@^]UVvDD u+%^]UvP 4!P+P@P4PF+SPV3=tuvv4P9  @P+PvFFP+PvUɋFFP PiX tVP~X PyFf_^]Udžpdžn^% t &Tr^% tSr^% tFllG% ndžvFFF^< u*džvp tF@=|xF Fd^< u n t+ tHPv%X+ÉtFt=}dtvxF Ftt uF xFPFF2[FNv~} ~t+ t.xPFH[xPrDD~tF]ÃF FF2n=uDu&t t =ut u Etu Eut+؉^TV@^ RPFXY؃㓇ҋʋV҃VR ҃R FFufVVVV 3FFFFFߋOOO/ }^FuNfVVVF2n=uDutuEu=ut=tC^5VPF=uDuNu Eu:tV2u EGE+0E00E&Dt NEANEû+IDt-ENFEÃVW NLNLNLNҎںMP\Ŋ[ÃRxE%=$@r)ZBRE%=$@r ZBRE]M]_^UGGĀt- G-?% x0%GUPSQR]]]]0%G]MuXEM߃0ـ?5r K?9v01E@E]MWV؎FFO|O;0}I2AAI0G0+OI~.G ~0GIJuO=0tG^_ä.G0I2 P2X؊2% t 2P2PX[FN t F t+ u_^]UVWv~GPF2[N t*2P4P u F t+ t+ u_^]UVWv+#Ǻ PF2X-0v@[G> P2X؊2% uƊ t2v> P2X؊2% t 2P2PX-A@[F u"^G<w ^<w+ u+ t+_^]UVWv~+PvFFFP+PPaϏFFPvvX u%@ t:"P+P@P4PPV=t$PwPP΋ Pc+P@PϸPPwZX t3!P+P@P4PvvVf=tun=tuD\LE]M;} FNFTVTVTVVF2͈NV+=5vdE]M5r֊͊ߊĴt NuFu%VN^FF tFn^^^^N6V+VN^FsڃVuNJ݊Ίs^4u N6vF^NV t;#y ؃u3u ԊKs]UEË\ݱxT}`LTD| <$ Ċ֊tu"y؃33ҷt"ú"y@Bx"y"t -x@BËD-y-4|D$ \LU ֊͊ߊtEuDt]ENJ݊Ίu ]Mܓ3Dt̀24E3ۉ]]=t Dt]ËDEDEDEÁFsFuFuFF tFFF==|FtN2F4EF^NE] E%-D%-þB RPB BXZB R FFuþRs BuBuBFFGG uËGW/DtDx4|8*O-ځ4r R Z4|8Dtt3_L&ML&ML&M & ø 286 MEMORY TEST (12/02/85) (C) 1985 VIASYN This program resides at 0x%05X thru 0x%05X. Please set your memory test limits accordingly. Enter hex start real address (or CR to end): %cSTART ADDRESS MUST BE < 0x%05X OR >= 0x%05X! Enter hex stop real address (or CR to end): %cSTOP ADDRESS MUST BE <= 0x%05X OR > 0x%05X! %cSTART & STOP ADDRESSES MUST BOTH BE > 0x%05X OR < 0x%05X! real start address = 0x%06X real end address = 0x%06X # of bytes to test is 0x%X random test %u Error at real add$Pvv4PD%XÉF+PvFFG< u ~ t+ tF GFNFFPF2[PP-XX9Fr ~v+ u9Fr6"P+P@P4PvvV=tvvvvXZQ @~u<P- P$X tVPX P vvXZ ~vf_^]UVWv~FO _^]UVWvFP+PP&XZFP+Pv[X u%@ t6"P+P@P4PPhV=tPAPP]̋ P-+P@P̸PPAX tP+P4P 4!P+P@P4PF+SPV=t\$P+PvP+PPXZF+FNjF9vFu+ wWv4FP FP+PWˋF)FF=u @P+Pv3L"P+P@P4PF+SPVD=t$PPPF~rhFF"PF+SPvF+SPV;Ft*FFFNjFP+PW#ʋF)F~wPZPPvʋ PF+P@PʸPPZ X tP+P4_uF ^VNNNð n3FtM]]ð3UVWvLLPF2X#ÉljFF2PP軭O Ff_^]UVWvF2FF$+NjƉF;Ǔ<$u/^<$t v P^$PPP@ÉFGF9|9Ft v P'Ff_^]úUVW؎~*ʋ~OvҋsF_^]UVW؎~+ыv~tH@UVW؎~+ыv~t|&]awaawa:t밋W؎6*ыH_UVW؎*~V+ы~vOs\UVW؎+~V+чʋ~vss+UVW؎+~V+ыv~t H@F_^]UVW؎N~vs_^]UVW؎~FNs_^]UVWv؎~Nī_^]UVW؎^vN ~s_^]û+VW؎6|*6Du6|OuA_^+_^$@Y@@@@j@.AcAחA7yACyCxDnF\)c=Hsȡ1I=P1PK?O8M20HwZ$g>55g9& $t j7=|{f::*[:>:}MH+sPR699ZXPR&9 4ZXSQRVWP&ƅ&&;uX_^ZY[Xށ&'F&;u&&_^ZY[ =&&-&&&w&&gP&$PP0 TX&&&>&PRPSQY[XP$u=949ZXÜQPX Q;=sJu:u+P;X=L >;XúYN;PR99ZXPSQR&>trZY[XWRQSPXP& |KuX[YZ_RP2XZP  XPQRS@B@[ZYXPSQRڊ tCZY[XPSQRZY[XPSQR ZCËGBBY[XPRSڊ C u[ZX$.,=:|[]* QRP!XPб]Ttt >\?u/o!V_q t u3ۋúBOC&&<uƇ G&UO&q tX,Y׋o C륻 3Qn o  XP t">]Ft$5WYq YAo : |SQCA ;'this is no way to run an air line!' SS2RAMT CMD fSS2RAMCKCMD gCLOCKSS1CMD hCSTAT CMDijklmnopCSTAT CMDNqrstuFORMAT CMD-vwxCLOCKSS2CMDyz{|}~CLOCKSS2CMDCOPY CMD&LDR5SS1 LDRGIOTEST CMDMT286 CMDMT286 CMDhSPIOTESTCMDMEMSP186CMD*SP186 $$$&'(&8'u &8'uY[ðAÌȎػGu=bft 3ЈĪ:t &s r +û >q u>q u>q uû E2>q uû 1U>q u>q uû s>q uCs>q uû6 Uo>q ur`>q ucûX 1Qf>q uITY9uÊŊQ.>.+ tIsY.>.+u tItÊЊ.>.+WQY_st :etOnstcõQoYQYsQ..>+uЪIЪXP.>.+u IПtПtYQ.>.+uتIتXP.>.+u؟I؟tYÈ. .> ЪW.>r.;>s Ъ.;>s _s_á ..>+uBI2Ī ..>+u It22Įu  2NJ؊ÜPSQRVWUOWPSQRVWUOWr &s : X-" r r . rs s s 2r i]_^ZY[X3q ñ/+ 16 Bit Rasmussen Memory Test (M86) adapted for sp186 Ver 6.2 Page(s) in sp86 BRD# NO sp86 BRD# BAD LOCATION AT SHOULD BE WAS BIT DOES NOT MATCH Done with 64K page.?$ =YBEGINING RAM TEST ON sp86 BRD# Page : PASS #= T Fast COMPLEMENT TEST= T BIT STUCK TEST= T SHORTED BIT TEST= T CHECKBOARD PATTERN TEST(AA55)= T WALKING BIT TEST= T ADDRESS LINE SHORTED TEST= T RANDOM NUMBER TEST = YTesting Each page for page overlap Filling each page with it's number * sPQ6 5YQ= *YX7|ùx ?:u0Kût C?0QCtYû t u< t< uSRQ t< t<t <uYZ[sPXz $׊>ж Њб0s$uuuQ Yñ VWRQSPѱX[YZ_^ñRQS[YZRS [ZVerifing each page for it's number All pages verify OK HIT CR TO CONTINUE,^X TO RESTART,OR ^C TO STOP ]/G6 ! E R R O R ! G4 HIT ^C G000000123456789ABCDEF 6],0<wU< v,09v7.&{.&t.8.7F.FF.&Po X$OC2Ɋg HUH ? $ SP186 AT 0000:0000 - 0000:FFFF. $SPEEK $$$hannal A Txmitter...$ Wait for Channel B Txmitter...$ Wait for Channel A ReCeiVer...$ Wait for Channel B ReCeiVer...$  FAILED when sending from channel A to B ! $  FAILED when sending from channel B to A ! $ -- SERIAL PORT OK -- $+=# GTASK#0 GIO186: Waiting for 2nd Bank...Dettaching=( ----------------------------------------------------------------- $=& reAttaching... sp186 COOL ! $=0 $ IO186 displays "reAttching, SP186 COOL !" and quits i) TICK186 quits $>]?u  ˌȩt55/A ˰%5E@& QȾu~$tn$t:uR\$tL$t:u8Y⵾Y7| ౓&> u * 3ɋ Ѿ'ɿ <$u&_rtú  ˋuuuuÃ&} uCan't find SP86ALOC. Run INIT186 first. $SW186 IO186 Wait a minute... I'am not running in the SP186 ! $ Wait for C v1.1 IO186 & TICK186.CMD are two diagnostic programs for the VIASYN/CompuPro SP186 to be ran concurrently, IO186 must run FIRST, then TICK186; best thing to do is to have these two pgms run from a BATch file. IO186 main function is to test the Serial Port on the SP186 Board; its secondary function is to hook up with TICK186 as to prove that these two processes can reside, and Run on the same SP186 board, at the same time. ! TESTS WORK WITH SINGLE SP186 BOARD IN SYSTEM ONLY ! tech talks only (event sequence): a) IO186 is run First, it will resides on Bank#0 by allocation default b) IO186 does SW186 M186A SW186 M186B SS2RAMT CMD fSS2RAMCKCMD gCLOCKSS1CMD hCSTAT CMDijklmnopCSTAT CMDNqrstuFORMAT CMD-vwxCLOCKSS2CMDyz{|}~CLOCKSS2CMDCOPY CMD&LDR5SS1 LDRGIOTEST CMDMT286 CMDMT286 CMDhSPIOTESTCMDMEMSP186CMD*SP186 DATSPEEK CMDSP186M $$$simple Channel A-B cross transmitt-Receive multiple times c) IO186 writes the result of this serial channel test into Bank#1 space d) IO186 detaches from the console and WAIT for TICK186 to start running. e) TICK186 is run manually (you type in TICK186) or executes from BATch file it resides on Bank#1 by allocation default f) TICK186 picks up result of serial channel test left by IO186 and prints it. You get SERIAL PORT OK. g) TICK186 tells IO186 that it's done by setting a flag h) IO186 displays "reAttching, SP186 COOL !" and quits i) TICK186 quits $>]?u  ˌȩt55/A ˰%5E@& QȾu~$tn$t:uR\$tL$t:u8Y⵾Y7| ౓&> u * 3ɋ Ѿ'ɿ <$u&_rtú  ˋuuuuÃ&} uCan't find SP86ALOC. Run INIT186 first. $SW186 IO186 Wait a minute... I'am not running in the SP186 ! $ Wait for C6cc%z)Q2PVZ ñ uPPt<vHAJ+ێkOZero divide error$%Ë-++Ë6_Cr Ë6_+́;s;rÃԱi@t+ P X"r.t " t5 t 5t+ɈNLXYZ+^gVDRQSVRSSSP6 [ZB;vStack overflow$+RSCP/M V1.11 4/10/84 SMALL Model CLEAR library. Copyright 1983,1984 Digital Research.$UWVVNRz*^_]U(F@@FCP{DD+PPGPkXPaDDPXDDHJLN6N6L6J6HoX[DFSP+PPX t6J6HP6N6LP6F6DPPDD:PDDPDD1 ~tt:FPP^ tF~ | uȸ t]U\PnDD+P(DD]U Fbh%Fh%F3Fhh#Fhhjj3FF hj%hhlF]UFVVT< uFTVT>TrF]UTUVFVU uFF]UF6F6DP+PXZF6J6HFF6F6DFFdUPPP+Pvv uFPUPP+Pvv uFFPP+P;FPP+P8FN uvvX[ tFUPPvvvv6 uFPUPvvvv uFF]UFFFv v+PP+P@PFFF TVVPTPv vvvL avvvvvv2 FPvvMFPvvKvvv vvv uFFP+PPvvvvvYX uF]U}PDDS tPDDl PPEP}DD~ tPmDDl PPPVDD tPFDDl PPP/DDE t PDDl PPPDDz t2PDDl PP t?PDDl PPgPDDPPPnP6N6L6J6HP l PPE]UVWV^ ڎËVvN 33sutOONNuOËǍf_^]UFF]UVWV^ ڎËV%tdžFF2F<-uFFFF ~0uFFFFFdž~*uƉFFFFL3}dž PF2-0XÉFFF~0r ~9w+ u~.u+FFF~*uƉFǃFFF;"Ǻ PF2-0XÉNjFFF~0r ~9w+ udž~lt ~Lt+ tFFFF tx(P)PX  PP PPV tPPX tx(P)PX  P+P PPV tPPX tx(P)PX  P+PPPV` tPPXv tx(P)PX  P+PPPV tPPX-ƉFFƉFP^%[F2PWPVF2PWPVwF2PWPVvF2PV^F2=gt=Gt=ft=Ft=eur=Euj=Cu?=cu7=Su=su=xu=Xu=oup=Oud=uu=Uu =du=Du[v8DD9} |+ tlj+ uX~0u^FPh[F~rh]UPXPlPnPFvlPlFPSPFFfF=rFP`PlPPFvlPlFPPFFfF=rY uFF]UFaP"DDF!F@PrP  uFF~rًF]UF6J6HX[F^SPFFFvv+PP6N6LX t6N6LvvXZFvv+PvvvP+PX tuvvFFFPP+Pvv+PPXZ)FvlPvv FP+Pv\+F v+FPlFPvv vlPvv FP+PPvv6N6L[X t6J6HFFFvv+PP6N6LX t6N6LvvXZFvv+PvvvP+PX uvvFFFPP+Pl vv+PP XZ)FvlPvv uFFP+Pv. +F v#+FPlFPvvX uFvlPvv: uFFP+PP vv6N6LX tF]UFF Fvv+Pv FFvv+PPM PP XZFvvPP XZFF+SP+PPvN sf_^]UVWV^ ڎ.VF fN |<+suyusCùufÿsuRuLNv0فڃ~#u-+su!uˌQsuHtBËIu.;u V;t"IuËuAu ًf_^]UVWV^ ڎËVF fN |0+sCùÿsNv*فڃ~+sˌsf_^]UFF]U FFFvvvvFFFF9F~vvX[]UFFFFHFFFP PFF2X؊2% tFF2 P FF2PX[FFF2P F2[;tFFRPv vX u͋FFPv vSPFRP FPVpN~|LvvX[]U+۸SPvv]UvEADDPv]UF8FF<tFF<t+ tNFF9FrNFFPP`DD[2=t*FF< tFF< t+ t+ t{FFF]UvDD]UVWv |2%V<-u+ tvFF2PPvF2P; vPv^vF2P  tf_^]UVWvD% uD% t L D u6D% uVPHDD[GG t+ tLLD% tVPX[G9uG%@ t+ t PDDVD% tPPDPP, [GD D=uL0L "VD[G2%_^]UV+PBP PBPu PBPg FFF,V P2X؊2% t 2 P2PX[F uvv ^]U+P PRX^V%+PPVV@'VVR= t=1t="t=1t>:V20.X="0t=" t="t=1t=1t=0u~=0uv]U+PDP_>Rt >Rt+ t V+]UVFF+;vv6\6Z+PP X tZPvv!FP+P@PF|PRTf^]UP^XЙRPZP+]UV+V DDF|^]UVW PFXÉVF[GDPPPP+PP+Pv+ X[F^SPvvX t|FFPP vv XZF F+F HF؊2Pvv+P@P vP5=t)v F+F FPvvF^ tF]UPIDDPPF tF2PP%~ u PDD~u P DDF2]UP DDPPF tF2P P ~u P| DD~yt ~Yt+]UVPTP6F6D6J6H +ۋSP6F6D6J6H ]UFv vFFvvFFvv+PPE PP XZFvvPP XZFvvFFF+SP+PP +Pv X[F^SP6N6Ln X uvv6J6HT X u+ t:FVPTPVPTPFPP P{ vv X[ uvv IP\ vvv v vv X[F^SP+PP X tvv+PPi X[ tvv+PPS X[ t+ u>vv+PP/  X[ tvv+PP X[ t+ u+ tTFVTFV>=t'VPTPvvvv F^ t,vv+PP X tF]UVVTFVVT uFVVTi uFDD_^]ZX[Ww7ZX[)_w7ZX[w7WZX[w7)_YXZ[WYXZ[)WYXZ[!!WYXZ[  WYXZ[11WZYX['WZYX[oUVV]U+FuFu@FF]UF^!F!^ ]UF^ F ^ ]UF^1F1^ ]UN^ F^ F]UN^ F^ F]Z[YX[SPZ[YX+[SPUF UFF 3FFF tVV FV FtVVFV F Fu3FFFFVV VVQvvvvYYs$QvvvvOYYYF^VV VVFu"F^Ft ]YSPF^ZX[؃SPZ[YX;[u;uPZ[YX;[u;u+PUN ;N|N;Nwr4F ]+׸Ҹ͹[XZ[w7RPыG&ڹUF f؋Ff؋Ff]YSPUFPvPc]UFPvvN]ZYX[QSPZX[YSPQ X[YZSPRQ& UV+Pƺ XP DDF|^]UVWvdžF udžFFFF^ t^<%t+ uՃ~vPv FFFF<7 P+PP P+PP5 P PP4_^]UVWvrP RT+, PƺXÉNj% uP RT+_^]U]UVWv~ƉF }~~ fuF+~ et ~ Et+ t@F ljF uF~~F F 2PvPP@Pvp ~ fu WvV23DDFH؊<.u FHF< t9Ft Vv\2Ff_^]UF 2Pvvv]UF 2Pvvv]UF 2Pvvv]UVWvF<<.uljF/tJP@@P=uPP+PPP[;t+ t@PPT +P@P=t@PP2?PW( u*PW( u+ u F4PP4ՃPWPF~u PWMFPF2Pv#FP&DD@PnDDFFPvD&vDDPWP-F~uWDD2=>u=<u}'NJ t+PDD"P^DD=uPP!+P PPqԃPDDf_^]Uv|P%v|P%P|Px%|P PԃPsDD]UVWv"P["_^]UVWv~F4FF2FD t;D2HF~ |G1GP0PF X[G:FD tF tOGPD2Ha[G:F\FF< tLGP PFF2%X؊2% tFF2% PFF2%PX[F~ |G.F \FF< tLGP PFF2%X؊2% tFF2% PFF2%PX[F~ |Gf_^]UVWvV?DD %XX9Fsv v+PP[X t+ uv v+PPX u=PQ PH!X tVP6X P1vvXZDFPPXXFFv v+PPt܏FFvv+PPX t!!PvvWvvVRPFFFPvv]Vvv+PP5XP$>vv+PPݍFP /vv+PPXZNjPZ PQ*X tVP?X P:vvvvX t vvv vXZ,v v+PPX t vvXZ%@ t:"P+P@P4PPV=tPRT$!P+P@P4PvvV=t vvv vXZPvvfPv vً4FGPFF2[FPPXXv v+PPX uϋP  PX tVPX PtvvXZf_^]UVWv^% t PDD~svPXP[u0P+P@P,ǃ[< uP Pƃ2%9s PPƃ.<u^ +EFPG2[N~v v+ u~vF G+Íf_^]UWV+V Fu Ƌأ~PvF2Pe[;u O u+_^]UVWFH+@VDD u+VWv_^]UVWdNjTDPDX3 t P1DD+=D;Fr1d9uvDD u PDD+ƉNjƸ u_^]UVW^ƋDPF[;w v[DFⓋÉWD+F[GWE[GW[v[VF[GVD[GFd_^]UVWLLF?FPDDƃu+9@RP+P@P^_]UVvDD uc~u+Y% tP RT?% tvvV'% tvvV vvV# ^]UVWv PFXÉFFWV tPRTE t vE2[G~u?P@Pl t+ tPRT^G2PVDDF~u WPă~u^% t WvăFv^G2PC~t ~t+ tF~+PPXf_^]UFFF^G2PDDFF\v PBăvvv+PPX0Pvvv +P@P;X tV%` t+ u ~+ tnV% t++PPvv X t +PPvv XZF)+PPvv X t +PPvv XZFFv,PzÃFPvjÃF~t=~~"V% t R F RFFFPFRP FFPFRPՍF PFRPՍFPFRPԋFF vv +PPX tv^G2P^F tP,PƒvvX[]UV~u+)P Pƒ@Ƌ9FtFHP Pvƒ^]U~tF9FtFHP PQƒ] tV|DDPRT- P+PPE2P +PP+PE2Pm _^]U+Pvv#]U+Pvv]UPvv]UVWFPv vFPvF Ѓ ƍF9uFFFN20ǃ9~FFP[F9uۋ^Ff_^]UVW ~FF ƋFRPFFv~ FF~u?FPF%[FP+PPCOvvX[ t t+ u~uJ FPF%[FP+PPOvvX[ t t+ u uH'tF tvv+PPX t+ t^-vvTFF(vvvvSPFFFP^2[vvX[ űƍf_^]UVWLL^ƋF NjFFF t }؉Ƌ^-GP^+[^+ uǍf_^]UVvDD un% t+a% tP RTG% tvvV/% tF+SPvV F+SPvV ^]UVW$+PDD "lPDDFkG t P2X؊2% t+ u׊ u@<"t <'t+ tDF2P@P)F~u PWLF+ljƋF@P~DD+FƓ2 t PƓ2X؊ DDSP+X PV P}vv XPo,PRTNF =t=t=uwԁ$P++PP(X tPPPPX[^]UP+ۋSPv]U]U]UVWv~ v vFFP+PP+FFPvv_X u%@ t:"P+P@P4PPlV=tPRTz$!P+P@P4PvvVh=t vvv vXZ=Pvv 4PD%XÉF^F~uL P PX tVPLX P;vvv vBXZE~ uFPP XX+GPF2[FPPXXFPPXX9Fsv v+PPX t+ t7v v+PPX tNP PX tVPX PovvXZf_^]UVWv~v vFFP+PPޏFFP+PP+PPJX uhPovv0X u%@ t:"P+P@P4PP=Vp=tPRTF$!P+P@P4PvvV9=tPRTPvv4PD%XÉF.GPFF2[FPPDXXPP7UVWv,DD u % t+ۋ%@ tV PZXPUD2PIDDFP#PvD2Pb0P+PP+P@PԏFF% u.vv+PPX u PvvX uz%@ t<"P+P@P4PPV=tPRT $!P+P@P4PvvV=tPRTPvv@Vvv+PPXP!4NjFGF9s <t+ uV4+ÙRPvXPe P+PP'Vvv+P@PN+PP>XP-VP&X P PuX[f_^]UVvDD u+ % t@^]UVvDD u+%^]UvDD tB+]UP4Pv4PP4P4P P聿PȽDD]UVWv P+Pv, P PF@P PFPVXƊ<:u*FPv=u PFPFV(Ɗ<*uP?PF@PFPF@PFP<.uC PFPFVƊ<*uP?PF PxFPF PFPU<;u' PFPFVƸPFPFP(+2= t=v%X+ÉtFt=}dtvxF Ftt uF xFPFF2[FNv~} ~t+ t.xPFH[xPrDD~tF]ÃF FF2n=uDu&t t =ut u Etu Eut+؉^TV@^ RPFXY؃㓇ҋʋV҃VR ҃R FFufVVVV 3FFFFFߋOOO/ }^FuNfVVVF2n=uDutuEu=ut=tC^5VPF=uDuNu Eu:tV2u Eun=tuD\LE]M;} FNFTVTVTVVF2͈NV+=5vdE]M5r֊͊ߊĴt NuFu%VN^FF tFn^^^^N6V+VN^FsڃVuNJ݊Ίs^4u N6vF^NV t;#y ؃u3u ԊKs|O;0}I2AAI0G0+OI~.G ~0GIJuO=0tG^_ä.G0I2tt+PeDDFPPM t+PDDDF~ |ݸ u t ]U Fb%F%F3F#F3FF % FP[F~r]UP60123456789abcdef!!!!"n CON:^^LST:Cprogram: unmatched quoteCannot open Cannot append Cannot create : No matchStack Overflow $Raw I/OC RTL - program not linked for Program terminating $<>.,=:|[]*  P PnPFv P FPSPFFfF=rFPP PPFv P FPPFFfF=rY uFF]UFP"DDF!F@P%P  uFF~rًF]UF66X[F^SPFFFvv+PP66X t66vvXZFvv+PvvvP+PX tuvvFFFPP+Pvv+PPXZ)Fv Pvv FP+Pv\+F v+FP FPvv v Pvv FP+PPvv66[X t66FFFvv+PP66X t66vvXZFvv+PvvvP+PX uvvFFFPP+Pl vv+PP XZ)Fv Pvv uFFP+Pv. +F v#+FP FPvvX uFv Pvv: uFFP+PP vv66X tF]UFF Fvv+Pv FFvv+PPM PP XZFvvPP XZFF+SP+PP+Pv+ X[F^SPvvX t|8FFPP vv XZF F+F HF؊2Pvv+P@P )P5=t)v F+F FPvvF^ tF]UZPIDDPPF tF2PP%~ u PDD~u P DDF2]UP DDPPF tF2PP ~u P| DD~yt ~Yt+]U PP6666 +ۋSP6666 ]UFv vFFvvFFvv+PPE PP XZFvvPP XZFvvFFF+SP+PP +Pv X[F^SP66n X uvv66T X u+ t:F PP PPFPP P{ vv X[ tvv P_ vvv v vv X[F^SP+PP X tvv+PPl X[ tvv+PPV X[ t+ t>vv+PP/  X[ tvv+PP X[ t+ u+ tF F >=t' PPvvvv F^ t,vv+PP X tF]U  F   uF  i uFF]UF  < uZX[w7WZX[w7)_YXZ[WYXZ[)WYXZ[!!WYXZ[  WYXZ[11WZYX['WZYX[oUVV]U+FuFu@FF]UF^!F!^ ]UF^ F ^ ]UF^1F1^ ]UN^ F^ F]UN^ F^ F]Z[YX[SPZ[YX+[SPUF UFF 3FFF tVV FV FtVVFV F Fu3FFFFVV VVQvvvvYYs$QvvvvOYYYF^VV VVFu"F^Ft ]YSPF^ZX[؃SPZ[YX;[u;uPZ[YX;[u;u+PUN ;N|N;Nwr4F ]+׸Ҹ͹5XZ[w7RPыG&ڹUF f؋Ff؋Ff]YSPUFPv`Pc]UFPvvN]ZYX[QSPZX[YSPQ X[YZSPRQ& UV+VPƺ XP DDF|^]UVWvdžF udžFFFF^ t^<%t+ uՃ~vPv FFFF<%tdžFF2F<-uFF PP4_^]UVWvr +, PƺXÉNj% u +_^]U]UVWv~ƉF }~~ fuF+~ et ~ Et+ t@F ljF uF~~F F 2PvPP@Pvp ~ fu WvV23DDFH؊<.u FHF< t9Ft Vv\2Ff_^]UF 2Pvvv]UF 2Pvvv]UF 2Pvvv]UVWvF<<.uljF/rF]UU F U uFF]UF66P+PXZF66FF66FFdUPPP+Pvv uFPUPP+Pvv uFFPP+P;FPP+P8FN uvvX[ tFUPPvvvv6 uFPUPvvvv uFF]UFFFv v+PP+P@PFFF   PPv vvvL avvvvvv2 FPvvMFPvvKvvv vvv uFFP+PPvvvvvYX uF]U0PDDS tHPDD PPEUP}DD~ tmPmDD PPzPVDD tPFDD PPP/DDE tPDD PPPDDz tPDD PP tPDD PPPDDPP!P66669P PPE]UVWV^ ڎËVvN 33sutOONNuOËǍf_^]UFF]UVWV^ ڎËVvN sf_^]UVWV^FF ~0uFFFFFdž~*uƉFFFFL3}dž PF2-0XÉFFF~0r ~9w+ u~.u+FFF~*uƉFǃFFF;"Ǻ PF2-0XÉNjFFF~0r ~9w+ udž~lt ~Lt+ tFFFF tR(P)PX  PP PPV tPPX tR(P)PX  P+P PPV tPPX tR(P)PX  P+PPPV` tPPXv tR(P)PX  P+PPPV tPPX-ƉFFƉFP^%[F2PWPVF2PWPVwF2PWPVvF2PV^F2=gt=Gt=ft=Ft=eur=Euj=Cu?=cu7=Su=su=xu=Xu=oup=Oud=uu=Uu =du=Du[v8DD9} |+ tlj+ uX~0u^<-u+ tvFF2P+_^]UVWFH+@VDD u+VWv_^]UVWNjTDPDX3 t P1DD+=D;Fr19uvDD u PDD+ƉNjƸ u_^]UVW^ƋDPF[;w v[DFⓋÉWD+F[GWE[GW[v[VF[GVD[GF_^]UVWLLF?FPDDƃu+9@RP+P@P: 20. ="0t=" t="t=1t=1t=0u~=0uv]U+PDP>t >t+ t  +]UVFF+;vv66+PP X tPvv!FP+P@PF|f^]UP^XЙRPP+]UV+V DDF|^]UVW PFXÉVF[GDPPPP+PP P+PP P+PP5 P9PE2P +PP+PE2Pm _^]U+Pvv#]U+Pvv]UPvv]UVWFPv vFPvF Ѓ ƍF9uFFFN20ǃ9~FFP[F9uۋ^Ff_^]UVW 2FF ƋFRPFFv~ FF~u?FPF%[FP+PPCOvvX[ t t+ u~uJ FPF%[FP+PPOvvX[ t t+ u uH'tF tvv+PPX t+ t^-vvTFF(vvvvSPFFFP^2[vvX[ űƍf_^]UVWLL^ƋF NjFFF t }؉Ƌ^-GP^+[^+ uǍf_^]UVvDD un% t+a% t G% tvvV/% tF+SPvV F+SPvV ^]UVW$+PDD " PDDFkG t4 P2X؊2% t+ u׊ u@<"t <'t+ tDF2P@P)F~u 6PWLF+ljƋF@P~DD+FƓ2 t 4 PƓ2X؊2% u+ tˋƓ t F XPo,NF =t=t=uwԁ$P++PP(X tPPPPX[^]UP+ۋSPv]U]U]UVWv~ v vFFP+PP+FFPvv_X u%@ t:"P+P@P4PPlV=tz$!P+P@P4PvvVh=t vvv vXZ=Pvv 4PD%XÉF^F~uL P PX tVPLX P;vvv vBXZE~ uFPP XX+GPF2[FPPXXFPPXX9Fsv v+PPX t+ t7v v+PPX tNP PX tVPX PovvXZf_^]UVWv~v vFFP+PPޏFFP+PP+PPJX uhPovv0X u%@ t:"P+P@P4PP=Vp=tF$!P+P@P4PvvV9=tPvv4PD%XÉF.GPFF2[FPPDXXPP%XX9Fsv v+PP[X t+ۋ%@ tV PZXPUD2PIDDFP#PƒvD2Pb0P+PP+P@PԏFF% u.vv+PPX u PvvX uz%@ t<"P+P@P4PPV=t $!P+P@P4PvvV=tPvv@Vvv+PPXP!4NjFGF9s <t+ uV4+ÙRPvXPe P+PP'Vvv+P@PN+PP>XP-VP&X P PuX[f_^]UVvDD u+ % t@^]UVvDD u+%^]UvDD t+]UP4Pv4PP4P4P P觿PDD]UVWv P+Pv, P PF@P PFPVXƊ<:u*FPv=u PFPFV(Ɗ<*uP?PF@PFPF@PFP<.uC PFPFVƊ<*uP?PF PxFPF PFPU<;u' PFPFVƸPFPFP(+2= t= t=tf_^]UVWv~2GP4o+PDD+P@P  t@PHP\PDD@<>tJP@@P=uPP+PPP[;t+ t@PUPT +P@P=t@PdP2?PW( u*PW( u+ u F4PPZՃPWPF~u sPWMFPF2Pv#FP&DD@PDDFFPvD&vDDPWP-F~uWDD2=>u=<u}'NJ t+PDD"PDD=u~PP!+P PPԃPDDf_^]Uv|P%v|P%P|Px%|P P-ԃPsDD]UVWv"P["_^]UVWv~F4FF2FD t;D2HF~ |G1GP0PF X[G:FD tF tOGPD2Ha[G:F\FF< tLGP4 PFF2%X؊2% tFF2% PFF2%PX[F~ |G.F \FF< tLGP4 PFF2%X؊2% tFF2% PFF2%PX[F~ |Gf_^]UVWvV?DD u F% t+ uv v+PPX u=PQ PH!X tVP6X P1vvXZDFPPXXFFv v+PPt܏FFvv+PPX t!!PvvWvvVRPFFFPvv]Vvv+PP5XP$>vv+PPݍFP /vv+PPXZNjPZ PQ*X tVP?X P:vvvvX t vvv vXZ,v v+PPX t vvXZ%@ t:"P+P@P4PPV=t$!P+P@P4PvvV=t vvv vXZPvvfPv vً4FGPFF2[FPPXXv v+PPX uϋP  PX tVPX PtvvXZf_^]UVWv^% t PDD~svPXP[u0P+P@PRǃ[< uP P#ǃ2%9s PPƃ.<u^ +EFPG2[N~v v+ u~vF G+Íf_^]UWV+V Fu Ƌأ24.F^ ;wr ;vr+v P2X؊2% t 2P2PX[FN t F t+ u_^]UVWv~GPF2[N t*2P4P u F t+ t+ u_^]UVWv+#Ǻ PF2X-0v@[G4 P2X؊2% uƊ t2v4 P2X؊2% t 2P2PX-A@[F u"^G<w ^<w+ u+ t+_^]UVWv~+PvFFFP+PPaϏFFPvvX u%@ t:"P+P@P4PPV=t$PwPP΋ Pc+P@PϸPPwZX t3!P+P@P4PvvVf=t$Pvv4PD%XÉF+PvFFG< u ~ t+ tF GFNFFPF2[PP-XX9Fr ~v+ u9Fr6"P+P@P4PvvV=tvvvvXZQ @~u<P- P$X tVPX P vvXZ ~vf_^]UVWv~FO _^]UVWvFP+PP&XZFP+Pv[X u%@ t6"P+P@P% t% u+ t8PO PFGX tP+PPVGP*PV %@ t)"P+P@P4PPW2 =tFE2PDDFPPу%=uFvE2PVDDVDD~uFf_^]UVW=u~VDD PƺXÉǃ~u Pv" u DPv" u )PvV)  t# _^]U+PvvZ]U+PvvF]UPvv1]UVWv+ljFD% ujD uD% u+ tYVVPDD[GG[GG uL5LPDD tL@DPF2[2D% tVVF[GG[GPF2[D% t"FvދGP7i DD%@ tN~ tDPD[;s+ t&DPDX+ÉFPDPP VD[GD+DPDX+ÉFPDPPDVD[G9Ft LF2%f_^]UVWF 0F 2v~"_^]Z[w7ZYX[GUVvDD u tPvvyPvvOhVv DDSP+X PV P}vv@62>4^_]UVvDD uc~u+Y% t ?% tvvV'% tvvV vvV# ^]UVWv PFXÉFFWV tE t vE2[G~u?P@Pl t+ t^G2PVDDF~u WPŃ~u^% t WvăFv^G2PC~t ~t+ tF~+PPXf_^]UFFF^G2PDDFF\v Phăvvv+PPX0Pvvv +P@P;X t %` t+ u ~+ tn % t++PPvv X t +PPvv XZF)+PPvv X t +PPvv XZFFv,PÃFPvÃF~t=~~" % t  F FFFPFRP FFPFRPՍF PFRPՍFPFRPԋFF vv +PPX tv^G2P^F tP,PƒvvX[]UV~u+)P Pƒ@Ƌ9FtFHP Pƒ^]U~tF9FtFHP Pwƒ]UVWv,DD u % t94PPhV=tPAPP]̋ P-+P@P̸PPAX tP+P4P 4!P+P@P4PF+SPV=t\$P+PvP+PPXZF+FNjF9vFu+ wWv4FP FP+PWˋF)FF=u @P+Pv3L"P+P@P4PF+SPVD=t$PPPF~rhFF"PF+SPvF+SPV;Ft*FFFNjFP+PW#ʋF)F~wPZPPvʋ PF+P@PʸPPZ X tP+P4P 4!P+P@P4PF+SPV3=tuvv4P9  @P+PvFFP+PvUɋFFP PiX tVP~X PyFf_^]Udžpdžn^% t |Rr^% t6Rr^% tFllG% ndžvFFF^< u*džvp tF@=|xF Fd^< u n t+ tHPv%X+ÉtFt=}dtv~t|&]awaawa:t밋W؎6*ыH_UVW؎*~V+ы~vOs\UVW؎+~V+чʋ~vss+UVW؎+~V+ыv~t H@F_^]UVW؎N~vs_^]UVW؎~FNs_^]UVWv؎~Nī_^]UVW؎^vN ~s_^]û+VW؎6|*6Du6|OuA_^+_^$@Y@@@@j@.AcAחA7yACyCxDnF\)c=Hsȡ1I=P1PK?O8M20HwZ$gAAIxF Ftt uF xFPFF2[FNv~} ~t+ t.xPFH[xPrDD~tF]ÃF FF2n=uDu&t t =ut u Etu Eut+؉^TV@^ RPFXY؃㓇ҋʋV҃VR ҃R FFufVVVV 3FFFFFߋOOO/ }^FuNfVVVF2n=uDutuEu=ut=tC^5VPF=uDuNu Eu:tV2u Eun=tuD\LE]M;} FNFTVTVTVVF2͈NV+=5vdE]M5r֊͊ߊĴt NuFu%VN^FF tFn^^^^N6V+VN^FsڃVuNJ݊Ίs^4u N6vF^NV t;#y ؃u3u ԊKs]UEË\ݱxT}0G0+OI~.G ~0GIJuO=0tG^_ä.G0I2.,=:|[]* CON:LST::ttwpºS.[&BBCC&CCIu WH`WAW:P3Q,Q%QQPR SSSSR$QSV.W$MvCRQSP WV$QSgRQSP`WrTk`Q^SW>RQSPWIUB7Q5S.RQSP W VQ SRQSP`WTQSRQSPWUQSRQSP WVQSqRQSPW|UujQhSaHRQSP`WSTL)A Q?S8RQSPW*U#<QSRQSP W3ȎЎ؎XDEteR<t"tZ€ueeXe+;sfi..gg< t<0r<:r u1=t ?$S,[urIP5=$Ȣ5<s>?$ 3ۉ |y2>=t? t >5t>TuO ÊBdos Err On : $Bad Sector$Select$File R/O$VO$QSRQSP`WTbIQSRQSPWUuQS{RQSP WVt$QrSkRRQSP`W]TVKIQISB)RQSPW4U-"Q S PR X[YZϱ Ü Number 15 of 15 $ Number 14 of 15 $ Number 13 of 15 $ Number 12 of 15 $ Number 11 of 15 $ Number 10 of 15 $ Number 9 of 15 $ Illegal Interrupt! $ Number 8 of 15 $ Number 7 of 15 $ Number 6 of 15 $ Number 5 of 15 $ Number 4 of 15 $ Number 3 of 15 $ Number 2 of 15 $ Number 1 of 15 $ Hit any key-- board should count from 1 to 15. $ 8259a Interrupt Test Program v. 1.2 Copyright Viasyn 1986 $ S(A#Y PQTU266P>>RYXQ!Q$YPQU2R6>P>YXÉNÀ>VVW^YWZ]QZ]RVZYQ^]]]à uD $t@ <u 9 <u, 2âà uQYQ YQ>t Y<t< s t<u< uÀ u $uñ <$tAQYàMMËRâ ð 'QYÊ tKډ/ &< t 3 36 4 t |IDKD6 Rȋ6 - Y/ "B*AËـ><tًȵDËD Ê"DFB"# ؉DË úBڊ@$"A4<u2Bڠ@ù2CQY á $Ë  'B ڊs?t 3HË ËI;rBR+ӋZñK+sQLKYt :t s\È. N^  S ; RÍI  Ab.AB/ Wild Interrupt!! -- HALTGLS[C uñ oPXHuà>u]$t \]$t à>$u ]$t\$ð\]$t\]$à>$u ]$4u\ð\]$4u\]3ۀsCw N$eY3ɉË tڊÉÉÉá$#>6@ u 2Ìڎttࣝu 8t 8u2M$Ds t uD&DD @t 6tTDdD t àPuf f<@uH,u 3$t4@t*4t u@uuut޹dȎ؎м@c,u$u.C ! y&4@4 yC yFRLDMPM COPYRIGHT (C) 1983 CompuProC:uûIË'ICI`sI$QYH u@QYHрŠ$QY Ȋ$يQYR$Y QȈYQZuR><tQSQCS t %;r[CYϋ%CˋC)t;J?t:u C,$uȢ oZѠ3FQ.$""*$Y378td8<t u u:uFڋ;u2BCBCuùهً:rهي1 6 |tڻڱ2Cu ڈ}21!It $t$""1t &$t&Su2twt ;>ueƇ\Au46t%D ًGguC&8u$>t t!tS+u> r"u;t à%> rg  ĊƇ :û SN[t 7@@u À> rTtcg2.t+)t&7> s޻/EttP#Xû$ à> s$ $ â2  PXu¨ PXu¨¨tQ2YûG_/, t $:u 2ɠG/@uCu&@tC$PXPXtPX¨tÀ> sPSQ t Y[XP$ 8t!SQ㋟xY[X F Disk WRITE protected - Fix and Load Drive x: - any key exits #-7Q46<T@5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-.L <t Si:[tu<) 3 ? u ;? t"C0 sr r<sr? uC 0<9v P1X,  u>) u% tȢD2C` t;>1 tM1 ( u"2t-t( !( H ;@u.) w< tCi!:؎EP( 6X8 H \( ! >t t< usNA u&&&TR =t.. 3.tWi"tH1ȢB"u8 L 01"u* %t6<0  3Ɋ <.uF3C36[ C??u À[F t< tQYtFC<*u?NNF uC Ê t< sWH _ñ t  uC   QSб[Y]tÀ>tRZIt5u9t3RZ)tu>tRZtԋG H (  ( R!Zñ u <u؎@:s,[&/ ؎bDi?t uLD0? u0!jfË'Î''ð( (( (#'"#u#3$$''$'$'Sy[u sÊ' $$A>$؎2󪡶$$ $jW>'u ?t력':u C,$uȢ'Ί'StP$$$ډ$$'$ $$ $$ t >'t J%H%c=H%tXH%>J%tKI%K'G%`'Pt)3Ã>'t[>G%`u'G $uG%'ñ>'t1'G 6$6$V O^G 8D DtrG 3'' u.'G$u#>'t6$6$'"à G :D r D GD$>$t$ u' u:u'FCù u u;u 'J'''??t ?tZH >'6$@Ë''''  >'tn)$0$f6''$>''uË'ڱ2Cu ڈE!| B'/? 4 4@< <1@@+ @W@5r 3ێۊ_@Ȏ㋇?=3ɋَ؆@=sHʎ-;v.@3..ɎَHѼ=&K~ruvwxz|~DUf^^_'\]\]\]\]\]\ ]\]Guà)J$ $ $0 .B+$עD$ $0t$ .O$@ *$ .S6$עWA>$<uHkZt3Ҋ t/3ɻQQ6[YuA$u~4@CompuPro CP/M 8-16 1.1Se 8" loader -- Error reading LOADER.CMDL ʱ3͎(  t8u"Ê& t8uÊб뽱빲 W?C CMDSW! CMD$$$ SUB  =_.:;<>,DIRSUSERREN TYPEERA DIR Program file "filename.CMD" not found File Not Found No FilesAll (Y/N)? File Already ExistsMemory Not AvailableRead ErrorCannot Close $$$.SUB << Non- << System Files Exist >> Ȏ؏''&'>'tм&''&GtUWV$^_]$'&''ω'$~ S3ۉ'$$s]ي. >>'uV +顝$'à''É'&$'Ê' $$B$á$' >'t $'à$'t3+[S;grG[[k' O!G#Êg ȊGPZZ $á'!$!$9$Su 6' * |''G%'Gt gG%`$$Ȣ$<s'$$$S['À>G%`u'$$:$r'ut -'$b'S$$t؈W؉W$>'tÀ>$uG>$u@>$3@$R"$@$:t R{Z$$:$u$_$$:r'g<u>$u>'u$'2$Q>'uË' $t蠱$""$t *$t+>'u$tM>'tf''' Ë'$Q'!ڊ$PC$Ȋ$XC ۳ul ڈ ڊ*u ڊ*$tu!  t:X$ > u . > u$.  tA>eB> ;t΋6Jtut>) u&< t tC?{ 뉿Q ) u < t 3u qu) ? u ?C3Ru ZàȘV tuFuZBR$uS[A:: CL $uu,tN>t% :>t m jb4) ,  to  u!7 ?tC?Yuπ>) t( t] <uP}t놾( 8 6<=t<_unF6udX>t8uS( 8u@( V8 u1>) t*FtCr( t<t b43ۊ$t$'>G%`uO$ t $$Q$$'L%>'>'Y'Q! Q$Q$6'6'L%>''YN \(2d +i  Fclyq[! I j" $>$t >D%w E%D%'($ u%l rPX< t< t < t<t< à$ uKD$t8<u:1<t2$>D%u 7'O't>D%u wU$à$ uQYQYQ>'tY$<t< s t<u< uÊNs P^Y@ u $$u #$:$s u n i<$tAQY렘$$'&CSQS[Y< u< t<u t͠$$Q<u t&K|<u QS$<u'<u[$$:sG<uK[~<u5Q?Y[SQ tC&QS[YS$ t*$$ $uC&QS[Y&<;'uYQt'tY2'S'G[Y'8<K%!>'u$$tFI t&$;rQ$$ ȈYFË t IRQ3sYZ;$sBQRsZYQȈY[Z uǻË$#$ Ë'؀>$tO؋OÊ$$ـ&$ĘË'G $G$G "$$Ë'$>$uG $GË$$ 3$á'$$$#@&$ 6$R$$V Y$` L QYG r4u3á$'$& $ uû.&<tûE&V&^&(Sb'A)&&^YZ9'ڊOW[(' '$''u > .:;=,[]<> < t< tF++ɪ   BDOS: Error on Drive :, $Data Sector Unreadable$Unable to Select$File is Flagged as Read Only$>7 r43g  Ċ7Ƈ;3 77:ûF3 S([t 7@@u à7<@s+QRZY& 8@ À>7@rRu"u:bt 8 t tOtZXK8 8 t>7@sÀ.88Ɗltmuֻ8$@ $G>7 r7 7GWGOowGtG8  8%-@ Ĵ t\H3@ /7GOloDGwV'^u!>7 r D $77t I3ûN3S3@wGO:u[QR5H3BPEXZY þ4>7 r54á77$:À>7 rTtg2.t+)t&7>7 s޻3EttPXûB3$ à:3>7 s$ $ â:327  PXu¨ PXu¨¨tQ2EYûD3?3G_/, t 8$:7u 2ɠ7G/@uCu& 8@tC 8$PXPXtPX¨tÀ>7 sPSQ7 t Y[XP$ 89393t!SQ7㋟3xyY[X $tsunD9GrGSuX:$sMcuD+9GrG-pu2u-/^u :$s+u^$G2'ËG$$$, uσtutc<uutGESu GDGD3$D%D%E% 2$Ê$?%9t!sUG;u E+GE@ܰËG;EtsE+GEEEEEE$E%Ã.E%>E%GEE$À>$tE%u'$>$st QD+Gu  DYQVW$Ȣ$*t2ɋ_^YRW3ҵ:$sD;rЊt _ZRW:$sD+Gtr;sЊ߰t _ZËGSFF[UQ;r F;FrY] à$$$URQ;uF;FuYQ2G)D(F+Fu +D+DF+F؉DYZ]ËGDEQRVS /[:s Eu^ZY UVQ$:$s ;s F;w;FsްY^] U$:$s +Fu] U$:$s F+u] ñ$$ȎPnSi>Gx3B T Wild Interrupt!! -- HALT`(Ȏػe(Sv[C uñ h cPXHuÌ؎T(ÈT(àT($u $t uU($tu]u$4Ȱu̠T($àT($u$t$u2U($tu ]$t\$u $t$$4t$ȰuT($묠T($u$tàT($0t$ T($u$4uu6U($tu ]4$u\u $4t$4tȰuT(T($utu0U($ty $4u$4uðU(U($0t"x$t$<u$t$<u7< u.)$t$<u3ۀs%㋟7 tCw N$77@sL!7Ë tڊÈ77É7É7á7$7à77XBY*ʎ>767@ u7 à7?()*+,-./? 4 4@< <1@@+ @W@4;5:84;5H:\86555556(_6(*Pǧ6( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@6;`7:8.'S$[PS\+\E+E;v[X++$#<tf<u$|t>D$|DtD$Q8RZY>'t1Q6Y$9DsD8\|t Ts [T t)$7T>'t5H;$wױ7=$+,>E%$;uED%#8t ðÀ>$u #ډ#ð|t.|t\;\v+\\UUðTTÃ|tDD$$>$u $#$,#<t<u$|uD< u ÃpuS5[$ÃË%sá'$$'$'$ʱ3#>'tuN$p#Q?t$GOQqu€YY Ў$'0$&E#8t 0D&ED|tD'&e&>$u &e& ƒv$''$'$'á$''ً''7_ uF<:u#,Ar2<}.Fu<.t <:t<;tN]lut '<.u] FLuft<;u]F2*͈MuEty8u <t< u'ZRt<*u ?CuCFuñ W#t .8tG< w_[Y767@Y u7u2À>7t7ʎڎ¾778ڎ777t7ʎڎt777777 rف5G97u397u#7㋇33Ƈ3t*7#77u7 77<7777>7t >7u278787< r{%D5_ 83(-f-f-b-b-R-P-F-D-;-o.o.o.o.o.o.o.D7_:r*Ѷ:r*ʊѶ 7u/D0$Ds 7t uD&'4%4DD @t 67tTDdD7 t à7< rK837t-.o.-.7;38;3:txS^[tƇ;3L8Juf8 `<@uH 8,u Y3$t4 8@t*30t0 {u 8@uou7t޹d>7u93_7Ƈ;3 A4< r 6365 635443u!7Ƈ3643t%63D ًGg7wuC&78u 8$7t 8 t!tSu>7 ru;t à8%<6;`7:8;7; 9@55o777 3ێ۾@ʎ㋇V(T(3Ǝ(L󥾀 @ .a(3ۋˎ؆@tʎ+a(Hc(Ҽĉ77;77:7>7@t;Spj[tߠ77<t< }<u777K779Sc(a(=t[99Sa(u[EDisk 1A (8 inch floppy) A: B: Disk 1A (5-1/4" floppy) C: D: 9>77Ȏظ*-((ƻ R tY0:rs CompuPro Systems CP/M 8-16 vers 1.1T System Memory: K 1 Megabyte TPA Base = :0000 Configured for ... / M-Drive/H, active as M: CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@6;`7:83ȎЎ؎XDEteR<t"tZ€ueeXe+;sfi..gg< t<0r<:r u1=t ?$S,[urIP5=$Ȣ5<s>?$ 3ۉ |y2>=t? t >5t>TuO ÊBdos Err On : $Bad Sector$Select$File R/O$ S(A#Y PQTU266P>>RYXQ!Q$YPQU2R6>P>YXÉNÀ>VVW^YWZ]QZ]RVZYQ^]]]à uD $t@ <u 9 <u, 2âà uQYQ YQ>t Y<t< s t<u< uÀ u $uñ <$tAQYàMMËRâ ð 'QYÊ tKډ/ &< t 3 36 4 t |IDKD6 Rȋ6 - Y/ "B*AËـ><tًȵDËD Ê"DFB"# ؉DË úBڊ@$"A4<u2Bڠ@ù2CQY á $Ë  'B ڊs?t 3HË ËI;rBR+ӋZñK+sQLKYt :t s\È. N^  S ; RÍI=GDA%4elB/ Wild Interrupt!! -- HALTMȎػRS[C uñ { vPXHuÌ؎CÈCàC$u $t uD$tu]u$4Ȱu̠C$C$u$t$u2D$tu ]$t\$u $t$$4t$ȰuC$àC$u$4uu6D$tu ]4$u\u $4t$4tȰu뭻sCw N$&-.h\$Ë tڊÉ!ÉÉá$%ʎ>6@ u 2Ìڎ#1#tʎڎt!'9$u(&㋇20Ƈ0t/#9$u 9$#*>t >Ȏ؎м@c,u$u.C ! y&4@4 yC yFRLDMPM COPYRIGHT (C) 1983 CompuProC:uûIË'ICI`sI$QYH u@QYHрŠ$QY Ȋ$يQYR$Y QȈYQZuR><tQSQCS t %;r[CYϋ%CˋC)t;J?t:u C,$uȢ oZѠ3FQ.$""*$Y378td8<t u u:uFڋ;u2BCBCuùهً:rهي1 6 |tڻڱ2Cu ڈ}21!It $t$""1t &$t&Su2twt <u2.+$؈Dsֈt 6-tTD /t uD&DD @dD? !uGNuV f<@u;$,u$t/ #@t%@Tt u#@uu?td>?uAmuQ&Ƈ01Yt%ljD ًGg(KuH#$Ȁ&'8'bu1bu*. S}[t 7@@u à) '':ðt`t]tû*9AN$ û,'GN+, t #$:-u 2ɠ-G!Cu# C#$t¨t ==== Disk WRITE protected - Fix and Load Drive x: - any key aborts 46<T?@5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-./? 4 4@< <1@@+ @W@3ȎЎ؎XDEteR<t"tZ€ueeXe+;sfi..gg< t<0r<:r u1=t ?$S,[urIP5=$Ȣ5<s>?$ 3ۉ |y2>=t? t >5t>TuO ÊBdos Err On : $Bad Sector$Select$File R/O$?v+ 3ێۊ_@Ȏ㋇EC3ɋَ؆@=sHʎ-;v.@3..ɎَNѼ]WZ~'Z~'Z~'Z~'~'~'nw''Z~' u' ^~' ^~'^^_'W6TT'WpUUWVVRS`SSSR RR RHPQ@QQQP P PH9GuöCpF3Ҋ! t0'>QFQBc[YuA$u-CompuPro CP/M 8-16 1.1Sd loader -- Error reading LOADER.CMD S(A#Y PQTU266P>>RYXQ!Q$YPQU2R6>P>YXÉNÀ>VVW^YWZ]QZ]RVZYQ^]]]à uD $t@ <u 9 <u, 2âà uQYQ YQ>t Y<t< s t<u< uÀ u $uñ <$tAQYàMMËRâ ð 'QYÊ tKډ/ &< t 3 36 4 t |IDKD6 Rȋ6 - Y/ "B*AËـ><tًȵDËD Ê"DFB"# ؉DË úBڊ@$"A4<u2Bڠ@ù2CQY á $Ë  'B ڊs?t 3HË ËI;rBR+ӋZñK+sQLKYt :t s\È. N^  S ; RÍI  Ab.aB Wild Interrupt!! -- HALTGLS[C uñ oPXHuà>u]$t \]$t à>$u ]$t\$ð\]$t\]$à>$u ]$4u\ð\]$4u\]3ۀsCw N$eY3ɉË tڊÉÉÉá$#>6@ u 2Ìڎttࣽu 8t 8u2-< r{%D_ (T}tD_:r*Ѷ:r*ʊѶ u/D0$Ds t uD&DD @t 6tTDdD tȎ؎м@->+.+LDMPM COPYRIGHT (C) 1983 CompuProC:uûIË'ICI`sI$QYH u@QYHрŠ$QY Ȋ$يQYR$Y QȈYQZuR><tQSQCS t %;r[CYϋ%CˋC)t;J?t:u C,$uȢ oZѠ3FQ.$""*$Y378td8<t u u:uFڋ;u2BCBCuùهً:rهي1 6 |tڻڱ2Cu ڈ}21!It $t$""1t &$t&Su2twt = à< rKt!V)V:txSs[tƇa_uf u<@uH,u 3$t4@t*ct u@uut޹d>utƇ A< r " u46t%D ًGguC&8u$>t t!tS+u> r"u;t à%> rg  ĊƇ :û SN[t 7@@u À> rTtg2.t+)t&7> s޻OEttPCXû$ à> s$ $ â2  PXu¨ PXu¨¨tQ2YûG_/, t $:u 2ɠG/@uCu&@tC$PXPXtPX¨tÀ> sPSQ t >Y[XP$ 8t!SQ㋟xY[X F Disk WRITE protected - Fix and Load Drive x: - any key exits ! I(Ǒ(*P( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@? 3ێۊ_@Ȏ㋇?=3ɋَ؆@=sHʎ-;v.2@3..04ɎَHѼ>K~ruvwxz|~DUf^^_'\]\]\]\]\]\ ]\]GuàIJ$ $ $0 .bK$עd$ $0t$ .o$@ J$ .sV$עwa>$<uhkzT3Ҋ t/3ɻQQ[YuA$u CompuPro CP/M 8-16 1.1Se 5-1/4" loader -- Error reading LOADER.CMD^^// /M-DRIVE/H RAM TEST COPYRIGHT (C) 1983 COMPUPRO" ƊPGuJPUƊ$?P$?ƊƢ!$?XƊXƀ>!XtF";|PS[SQR t<u<uZY[SR Z[ñNUNJNJRătt 3OZRut O3:tZ C&$uSR Z[ t 3R tZ0:r'RPXZRXQP$&׊XYð9S$:t[0C:t[0C:t[0[QSV'&?0u aK?0uSKM^[Y<tPSRZ[Xú R tX0P0s1PQYXXSRѱZ[SRZ[000=L ʱ3͎(  t8u"Ê& t8uÊб뽱빲 W?C CMDSW! CMD$$$ SUB  =_.:;<>,DIRSUSERREN TYPEERA DIR Program file "filename.CMD" not found File Not Found No FilesAll (Y/N)? File Already ExistsMemory Not AvailableRead ErrorCannot Close $$$.SUB << Non- << System Files Exist >> Ȏ؏''&'>'tм&''&GtUWV$^_]$'&''ω'$~ S3ۉ'$$s]ي. > M-DRIVE/H DIAGNOSTIC PROGRAM Version 2.2c THE FOLLOWING 512k PAGES WERE FOUND: $ DOES EXIST. $ DOES NOT EASUBMIT START Copyright (C) 1980, Digital Research  . Q>u!  t:X$ > u . > u$.  tA>eB> ;t΋6Jtut>) u&< t tC?{ 뉿Q ) u < t 3u qu) ? u ?C3Ru ZàȘV tuFuZBR$uS[A:: CL $uu,tN>t% :>t m jb4) ,  to  u!7 ?tC?Yuπ>) t( t] <uP}t놾( 8 6<=t<_unF6udX>t8uS( 8u@( V8 u1>) t*FtCr( t<t b43ۊ$t$'>G%`uO$ t $$Q$$'L%>'>'Y'Q! Q$Q$6'6'L%>''YN \(2d +i  Fclyq[! I j" $>$t >D%w E%D%'($ u%l rPX< t< t < t<t< à$ uKD$t8<u:1<t2$>D%u 7'O't>D%u wU$à$ uQYQYQ>'tY$<t< s t<u< uÊNs P^Y@ u $$u #$:$s u n i<$tAQY렘$$'&CSQS[Y< u< t<u t͠$$Q<u t&K|<u QS$<u'<u[$$:sG<uK[~<u5Q?Y[SQ tC&QS[YS$ t*$$ $uC&QS[Y&<XIST. $ BEGINNING TEST ON PAGE #$ BIT STUCK HIGH, TESTING 00 $ BIT STUCK LOW, TESTING 0FFH $ CHECKERBOARD TEST (055H) $ WALKING BIT LEFT $ ADDRESS LINE TEST $ RANDOM WRITE/READ TEST $ FILLING EACH PAGE WITH ITS NUMBER...$ VERIFYING EACH PAGE. $ PASS NUMBER $ DONE TESTING ALL BOARDS. GIVE ALL BAD BOARDS A RED DOT!!! $ >>> ERROR - BYTE SHOULD BE $b WAS $b AT ADDRESS $H. $ CHECK MEMORY CHIP AT ROW $ COLUMN $ ERROR: UNABLE TO GET 4K MEMORY SEGMENT FROM CPM!! ADD MORE MEMORY TO SYSTEM. $ Do <^C> to abort; <^X> to restart; any other key to continue. $0123456789ABCDEF M-DRIVE/H DIAGNOSTIC PROGRAM Version 2.2c THE FOLLOWING 512k PAGES WERE FOUND: $ DOES EXIST. $ DOES NOT EL <t Si:[tu<) 3 ? u ;? t"C0 sr r<sr? uC 0<9v P1X,  u>) u% tȢD2C` t;>1 tM1 ( u"2t-t( !( H ;@u.) w< tCi!:؎EP( 6X8 H \( ! >t t< usNA u&&&TR =t.. 3.tWi"tH1ȢB"u8 L 01"u* %t6<0  3Ɋ <.uF3C36[ C??u À[F t< tQYtFC<*u?NNF uC Ê t< sWH _ñ t  uC   QSб[Y]tÀ>tRZIt5u9t3RZ)tu>tRZtԋG H (  ( R!Zñ >u <u؎@:s,[&/ ؎bDi?t uLD0? u0!jfË'Î''ð( (( (#'"#u#3$$''$'$'Sy[u sÊ' $$A>$؎2󪡶$$ $jW>'u ?t력':u C,$uȢ'Ί'StP$$$ډ$$'$ $$ $$ t >'t J%H%c=H%tXH%>J%tKI%K'G%`'Pt)3Ã>'t[>G%`u'G $uG%'ñ>'t1'G 6$6$V O^G 8D DtrG 3'' u.'G$u#>'t6$6$'"à G :D r D GD$>$t$ u' u:u'FCù u u;u 'J'''??t ?tZH >'6$@Ë''''  >'tn)$0$f6''$>''uË'ڱ2Cu ڈE!| B'$tsunD9GrGSuX:$sMcuD+9GrG-pu2u-/^u :$s+u^$G2'ËG$$$, uσtutc<uutGESu GDGD3$D%D%E% 2$Ê$?%9t!sUG;u E+GE@ܰËG;EtsE+GEEEEEE$E%Ã.E%>E%GEE$À>$tE%u'$>$st QD+Gu  DYQVW$Ȣ$*t2ɋ_^YRW3ҵ:$sD;rЊt _ZRW:$sD+Gtr;sЊ߰t _ZËGSFF[UQ;r F;FrY] à$$$URQ;uF;FuYQ2G)D(F+Fu +D+DF+F؉DYZ]ËGDEQRVS /[:s Eu^ZY UVQ$:$s ;s F;w;FsްY^] U$:$s +Fu] U$:$s F+u] ñ$$ȎPnSi>Gx3B T Wild Interrupt!! -- HALT`(Ȏػe(Sv[C uñ h cPXHuÌ؎T(ÈT(àT($u $t uU($tu]u$4Ȱu̠T($àT($u$t$u2U($tu ]$t\$u $t$$4t$ȰuT($묠T($u$tàT($0t$ T($u$4uu6U($tu ]4$u\u $4t$4tȰuT(T($utu0U($ty $4u$4uðU(U($0t"x$t$<u$t$<u7< u.)$t$<u3ۀs%㋟7 tCw N$77@sL!7Ë tڊÈ77É7É7á7$7à77XBY*ʎ>767@ u7 à7'uV +顝$'à''É'&$'Ê' $$B$á$' >'t $'à$'t3+[S;grG[[k' O!G#Êg ȊGPZZ $á'!$!$9$Su 6' * |''G%'Gt gG%`$$Ȣ$<s'$$$S['À>G%`u'$$:$r'ut -'$b'S$$t؈W؉W$>'tÀ>$uG>$u@>$3@$R"$@$:t R{Z$$:$u$_$$:r'g<u>$u>'u$'2$Q>'uË' $t蠱$""$t *$t+>'u$tM>'tf''' Ë'$Q'!ڊ$PC$Ȋ$XC ۳ul ڈ ڊ*u ڊ*$tD$|DtD$Q8RZY>'t1Q6Y$9DsD8\|t Ts [T t)$7T>'t5H;$wױ7=$+,>E%$;uED%#8t ðÀ>$u #ډ#ð|t.|t\;\v+\\UUðTTÃ|tDD$$>$u $#$,#<t<u$|uD< u ÃpuS5[$ÃË%sá'$$'$'$ʱ3#>'tuN$p#Q?t$GOQqu€YY Ў$'0$&E#8t 0D&ED|tD'&e&>$u &e& ƒv$''$'$'á$''ً''7_ uF<:u#,Ar2<}.Fu<.t <:t<;tN]lut '<.u] FLuft<;u]F2*͈MuEty8u <t< u'ZRt<*u ?CuCFuñ W#t .8tG< w_[Y767@Y u7u2À>7t7ʎڎ¾778ڎ777t7ʎڎt777777 rف5G97u397u#7㋇33Ƈ3t*7#77u7 77<7777>7t >7u278787< r{%D5_ 83(-f-f-b-b-R-P-F-D-;-o.o.o.o.o.o.o.D7_:r*Ѷ:r*ʊѶ 7u/D0$Ds 7t uD&'4%4DD @t 67tTDdD7 t à7< rK837t-.o.-.7;38;3:txS^[tƇ;3L8Juf8 `<@uH 8,u Y3$t4 8@t*30t0 {u 8@uou7t޹d>7u93_7Ƈ;3 A4< r 6365 635443u!7Ƈ3643t%63D ًGg7wuC&78u 8$7t 8 t!tSu>7 ru;t à8%'uYQt'tY2'S'G[Y'8<K%!>'u$$tFI t&$;rQ$$ ȈYFË t IRQ3sYZ;$sBQRsZYQȈY[Z uǻË$#$ Ë'؀>$tO؋OÊ$$ـ&$ĘË'G $G$G "$$Ë'$>$uG $GË$$ 3$á'$$$#@&$ 6$R$$V Y$` L QYG r4u3á$'$& $ uû.&<tûE&V&^&(Sb'A)&&^YZ9'ڊOW[(' '$''u > .:;=,[]<> < t< tF++ɪ   BDOS: Error on Drive :, $Data Sector Unreadable$Unable to Select$File is Flagged as Read Only$>>7 r43g  Ċ7Ƈ;3 77:ûF3 S([t 7@@u à7<@s+QRZY& 8@ À>7@rRu"u:bt 8 t tOtZXK8 8 t>7@sÀ.88Ɗltmuֻ8$@ $G>7 r7 7GWGOowGtG8  8%-@ Ĵ t\H3@ /7GOloDGwV'^u!>7 r D $77t I3ûN3S3@wGO:u[QR5H3BPEXZY þ4>7 r54á77$:À>7 rTtg2.t+)t&7>7 s޻3EttPXûB3$ à:3>7 s$ $ â:327  PXu¨ PXu¨¨tQ2EYûD3?3G_/, t 8$:7u 2ɠ7G/@uCu& 8@tC 8$PXPXtPX¨tÀ>7 sPSQ7 t Y[XP$ 89393t!SQ7㋟3xyY[X RROR++ <* |): o% |g}o" 2  ; 0T ~T #~A > T > _h : F{͇2h2|: ʲ !\   :\2 ! \  \ ! \  \! \  \<7=Ɓo&   ]  2h2|2   ~$#~# x  : F} *}= ">͇1 ] FILE: XXXXXXXX.XXX CRC = oS) \<‘@ ++OPEN FAILED++ !" !" * | ʹ) \!~2 #" Ý: ) > T : ) @ ++FILE READ E3333F\| Disk WRITE protected - Fix and Load Drive x: - any key exits 54)434=4G4a4464<T4@5t     $%&'()*+ ,- ./ 01 !23"# !"#0123$%&'4567 ()*+89:; ,-./01234567  !"#$%&'89:;<=>?()*+,-./? 4 4@< <1@@+ @W@4;5:84;5H:\86555556(_6(*Pǧ6( 2     CompuPro default Single   CompuPro default Double  CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@6;`7:8#CRC.COM 5.0 6/18/82CRCKFILE???!9" 1 M @ CRC Ver 5.0 CTL-S pauses, CTL-C aborts :] O@ ++Searching for CRCKLIST file++@ Now searching for "CRCKFILE" file++ !  1 .) F!  ͡]͸! ͔0CRCKLIST???CRCKFILE???!9" M à*,*.}|ډ!".*,{z{** u*.".G*.",!".***,}>*.#".ɯ22)! ",". <  NO FILECRC FILE$!   >. @ Checking with file - ! ~T #M M 2 2 2 2 ! >2 3o: : @ ***No CRC Files found***$> ʉ ʉw#: <2 P6: .6@ Can not parse string ! ~ʽT #ñM ! > 6 #6^#6! ~T #! 4M #x] #e w~ T #>2 @ - s M@ File not found ! 4 >2 o: G: „: G: „@ *Match* 2 ! 4@ <-- is, was --> : ) > T : ) M 2 ! 4<2 ~# @ Not a space between CRC values<2 G-CATALOG???6;`7:8;7; 9@55o777 3ێ۾@ʎ㋇V(T(3Ǝ(L󥾀 @ .a(3ۋˎ؆@tʎ+a(Hc(Ҽĉ77;77:7>7@t;Spj[tߠ77<t< }<u777K779Sc(a(=t[99Sa(u[EDisk 1A (8 inch floppy) A: B: Disk 1A (5-1/4" floppy) C: D: 9>77Ȏظ*-((ƻ R tY0:rs CompuPro Systems CP/M 8-16 vers 1.1T System Memory: K 1 Megabyte TPA Base = :0000 Configured for ... / M-Drive/H, active as M: CompuPro default Double !"#$%&' CompuPro Standard Double8?9 :  ; 7@<< =<7@>( ?(@6;`7:8@ ++ Now searching for "-CATALOG" file++ !  ) .) ! ”>.”#””͡”››tK››͸›* =: =͔="  ʳ ª~#.  ¿~  #~  .+~#0:0~#!A.O.Gy~#0M0 K MMɷ:m2 FSÄCRCKLIST$$$››tK›, › **}|!"*{z*~]*"Ü  DISK FULL: CRCFILE$!"*~*#"ɯ2i2}! "!"]]2 s : ~# ++FILE NOT FOUND++$: F*}’">͇†]<  CANNOT CLOSE CRCFILE$CRCKLISTCRCSK FULL: CRCFILE$  w# !]͐ DONE$!e S!]Q !eZ @ --> FILE: XXXXXXXX.XXX CRC = oS) \<‘@ ++OPEN FAILED++ !" !" * | ʹ) \!~2 #" Ý: ) > T : ) @ ++FILE READ E? --> FILE: IM7 .RSP CRC = BD 7E --> FILE: ZINT1 .COM CRC = 13 C1 --> FILE: 8259A .COM CRC = FD 35 --> FILE: 9511 .COM CRC = 08 E5 --> FILE: 9512 .COM CRC = 7C 60 --> FILE: I4TEST .COM CRC = C9 BE --> FILE: I3TEST .COM CRC = 5A ED --> FILE: MEMTEST .COM CRC = 3F 73 --> FILE: FORMAT .COM CRC = B2 4E --> FILE: CLOCK .COM CRC = 72 E2 --> FILE: DISK2 .COM CRC = 79 E3 --> FILE: MDRVIN .CMD CRC = E8 5B --> FILE: MDRV .CMD CRC = 0A 3C --> FILE: MEMMNGR .CMD CRC = F7 63 --> FILE: MEMSPUZ .CMD CRC = 15 2E --> FILE: BENCH87 .CMD CRC = 8C 5A --> FILE: I4PTST .COM CRC = 95 0E --> FILE: DIPTST .COM CRC = E2 72 --> FILE: DMATST .COM CRC = 99 8A --> FILE: DMAEND .COM CRC = 6B F6 --> FILE: SWAP5 .COM CRC = CA D3 --> FILE: CTEST .COM CRC = 51 9E --> FILE: T5 .BAS CRC = 75 E7 --> FILE: FORTH .BLK CRC = 7C 35 --> FILE: TST .SUB CRC = 2C 44 --> FILE: MDR .CMD CRC = F8 8B --> FILE: TIMER .COM CRC = F3  2A 70 --> FILE: SPZ .CMD CRC = 24 00 --> FILE: SS2RAMT .CMD CRC = 62 11 --> FILE: SS2RAMCK.CMD CRC = B7 4C --> FILE: CLOCKSS1.CMD CRC = CE 56 --> FILE: CSTAT .CMD CRC = 6D 2E --> FILE: FORMAT .CMD CRC = 12 B5 --> FILE: CLOCKSS2.CMD CRC = 30 6C --> FILE: COPY .CMD CRC = A1 EA --> FILE: LDR5SS1 .LDR CRC = 41 8A --> FILE: IOTEST .CMD CRC = 92 31 --> FILE: MT286 .CMD CRC = 69 63 --> FILE: SPIOTEST.CMD CRC = C5 3B --> FILE: MEMSP186.CMD CRC = 19 03 --> FILE: SP186 .DAT CRC = 5D F3 --> FILE: SPEEK .CMD CRC = 35 5B --> FILE: SP186M .BAT CRC = D6 04 --> FILE: IO186 .CMD CRC = 87 BF --> FILE: M186A .CMD CRC = AC 9C --> FILE: M186B .CMD CRC = 04 F3 --> FILE: SP186MC .BAT CRC = 19 F6 --> FILE: SP186IO .BAT CRC = A3 5B --> FILE: SS18259 .CMD CRC = 6F 07 --> FILE: LDR8SS2 .LDR CRC = 62 7D --> FILE: CPM8SS1 .SYS CRC = 74 E5 --> FILE: LDR8SS1 .LDR CRC = C4 03 --> FILE: LDR5SS2 .LDR CRC = 58 76 --> FILE: MDRIVE .CMD CRC5E --> FILE: DISK2 .BLK CRC = 0F 0C --> FILE: REPTEST .SUB CRC = 24 42 --> FILE: TEST .SUB CRC = E2 23 --> FILE: PIP .COM CRC = B7 5C --> FILE: PD2 .COM CRC = FD 1D --> FILE: DSKTST .COM CRC = E3 10 --> FILE: 8087 .A86 CRC = 10 BF --> FILE: 80130 .A86 CRC = 2A 52 --> FILE: MDR .A86 CRC = 74 8B --> FILE: MEMMNGR .C CRC = A8 37 --> FILE: CLOCK .A86 CRC = 63 DB --> FILE: I3TEST .ASM CRC = 5A E0 --> FILE: 9512 .ASM CRC = 5E 79 --> FILE: CTEST .ASM CRC = 04 2B --> FILE: ZINT1 .ASM CRC = E9 A4 --> FILE: I4TEST .ASM CRC = C7 F6 --> FILE: DSKTST .ASM CRC = B0 77 --> FILE: DMATST .ASM CRC = D6 0B --> FILE: SWAP85 .ASM CRC = 5D 13 --> FILE: DMAEND .ASM CRC = 87 AD --> FILE: 8259A .ASM CRC = DA 41 --> FILE: DV .COM CRC = 87 BA --> FILE: DRIVER .BLK CRC = 29 B3 --> FILE: MEM16 .CMD CRC = 70 4C --> FILE: ASM86 .CMD CRC = 1D 11 --> FILE: CLOCK .CMD CRC = CE 56 --> FILE: SYSGEN .CMD CRC = 8 = C0 65 --> FILE: CPM .SYS CRC = 74 E5 --> FILE: CRC .COM CRC = B2 07LE: CLOCKSS1.CMD CRC = CE 56 --> FILE: CSTAT .CMD CRC = 6D 2E --> FILE: FORMAT .CMD CRC = 12 B5 --> FILE: CLOCKSS2.CMD CRC = 30 6C --> FILE: COPY .CMD CRC = A1 EA --> FILE: LDR5SS1 .LDR CRC = 41 8A --> FILE: IOTEST .CMD CRC = 92 31 --> FILE: MT286 .CMD CRC = 69 63 --> FILE: SPIOTEST.CMD CRC = C5 3B --> FILE: MEMSP186.CMD CRC = 19 03 --> FILE: SP186 .DAT CRC = 5D F3 --> FILE: SPEEK .CMD CRC = 35 5B --> FILE: SP186M .BAT CRC = D6 04 --> FILE: IO186 .CMD CRC = 87 BF --> FILE: M186A .CMD CRC = AC 9C --> FILE: M186B .CMD CRC = 04 F3 --> FILE: SP186MC .BAT CRC = 19 F6 --> FILE: SP186IO .BAT CRC = A3 5B --> FILE: SS18259 .CMD CRC = 6F 07 --> FILE: LDR8SS2 .LDR CRC = 62 7D --> FILE: CPM8SS1 .SYS CRC = 74 E5 --> FILE: LDR8SS1 .LDR CRC = C4 03 --> FILE: LDR5SS2 .LDR CRC = 58 76 --> FILE: MDRIVE .CMD CRCD D8 --> FILE: DDT86 .CMD CRC = 1F 39 --> FILE: CENTTEST.CMD CRC = 2C 44 --> FILE: ED .CMD CRC = 2F E3 --> FILE: SS28259 .CMD CRC = 6B D0 --> FILE: GENCMD .CMD CRC = A8 44 --> FILE: GENDEF .CMD CRC = AC 97 --> FILE: MFORM .CMD CRC = FE B1 --> FILE: PIP .CMD CRC = 41 67 --> FILE: STAT .CMD CRC = 8C 7B --> FILE: SUBMIT .CMD CRC = EE 67 --> FILE: SCOPY .CMD CRC = F3 85 --> FILE: LMCMD .CMD CRC = 61 81 --> FILE: CPM5SS1 .SYS CRC = 5F DA --> FILE: CPM8SS2 .SYS CRC = 6C 07 --> FILE: CPM5SS2 .SYS CRC = 7F EE --> FILE: 80130 .CMD CRC = A1 9D --> FILE: 8087 .CMD CRC = AC A1 --> FILE: MEMCOLOR.CMD CRC = 92 81 --> FILE: MEMMONO .CMD CRC = 3D A1 --> FILE: MTSPUZ .COM CRC = E5 E3 --> FILE: SPUZ2681.COM CRC = F5 4F --> FILE: VINT .CMD CRC = 24 4E --> FILE: IO3ATEST.CMD CRC = 87 C3 --> FILE: 2651 .CMD CRC = 9B DC --> FILE: TICK186 .CMD CRC = 34 89 --> FILE: 8259A .CMD CRC = E1 26 --> FILE: SW!SPUZ .CMD CRC =?@@AABBCCDDEEFFGGHHIIJJKKLL