CP/M2.2  S11082C SERIAL# }227-22- @14254 DOUBLE-DDISKETTE^CPM FROM*NORTH * STAR D120DQH *K02543A SYS-TRKSBIOS USER CPM CCP CPM BDOS --------DIR.SEC1DIR.SEC2DIR.SEC3DIR.SEC4--------CPM DATADATASEC1DATASEC2DATASEC3DATASEC4........ N*S r@ r1"%"!r̈́r!t>2y?sr!{̈́r22Ϳs:>=Er:Crz2z!rͦy>2wG#7wG# ˆsDs>Ás:ʣs:>t"t#G}@oz2]u{ o&";t~{=! >‚s! ~Yjtjt!~qt*~}OG?sWr! _t/<_: .:oVoVoV:8—t=•tÁs@ͣs:uus5uG#5uG# uvuÞs>Ás:::@u:Hu::_u:I~_G#~_G# auXDs2:y2:s§u{¥u:y@|uͿs2vºu:ʺuOu:=uy2vx!&vr+uyuq!v:vu|u7 u w+ɷyĦyy sMvG:y T D S (C) 1980 North Star Computers, Inc.1!y~6#*yav###!YY""O_2y=22ͧv͸ybv>22!s"*y"!"y:Oi&6s"2=2{~w}iwy:͆wO>!|yuvyGOxGw%w!\|~w%wFx@w:y ww%w>Gw %ww>2x€y*ypiw+w#6# Dw~q#p#s#r#!s#r#!s#r:!6~J<=sw~2#!2=<ڡw!wAʠww!wͦy s< MOUNT A: IN DRIVE 1, TYPE ANY KEY O?(?(Q?(? ( `i"y2`i"i&y zy>22Õx2! bx]x:wÕx6Õxʕx5**>(vx>@,}xo*y‘x*yʕx2**y±x**yxy:>¿x<*"*"#y:go|*:G=x2yw# xx=!~yw y!4yz>{:yȯ2yG:O*|:9s͆w*&yXQO~ay{ʀy}#]y>o~yOzpyW~&Ay}#ڏy!yͦyMv&zW|E!|yuILLEGAL ACCESS~ Ұy0O s#æy*y> s> s ]@ÌzMzzVzczVzzÊzpzzz,z:z>0>Vzyczypz> yɯ>>7>>7>@!~/w/wʾz$$$zFp,¾z$z|¾zïz>A>0>` s> >>>`zy> >>Y22!|>yu!| ~ n{[n{#[{Mv>2y2y>2yMv.trt|tttttu u ͒]> Ò]> Ò]͘]~#͌]ì] _2d<]2dd]]]]d]]d]]] ^!d2:d2a{_:dʖ^:d>Ľ]d]ʖ^:d=2dd]–^]!Ba!d6#5d]ʖ^:dĽ]!]ͬ]^ʧ^^Â`^^ ])^!]F#xʺ^~0^wë^w!]"] !d~6ͽ]d]:dý](`!e`#^͘]*]~ "_"_͌]#_>?͌]͘]^Â` _=_.:;<> O_o$>!dY_2d*]O_"]ʉ_@G:ʐ_:dwÖ_x2dp0_ʹ_#*©_6?ë_w˜_0__ï_#6 ¹_._0__#*_6?_w_0___#6 _#6_"] #~? ` `xDIR ERA TYPESAVEREN USER7!`ydO`#<` T`y#O` 3`2]1dy_^͸]2dy2dͽ]:]˜`1d͘]^A͌]>>͌]9^^^2d^_ _:d¥c.`!`_~#fowab]bbccc!v"]!]`ç]READ ERROR`ç]NO FILE^_:d _!d ~ 3a#0 _Wx _x _ _ _G a~ _# 3ax~#Ba!Y_~ɯ2d:d=!dý]:d=!d:dý]^_Ta!d~ a 6?#ˆa]`b:d`O> Kab{a͘]^A͒]>:͒]a͢]>:͒]͢]xKa aa> Ka b> ͒]x b a͢]a^b]ØaÆd^_ BbRbͧ]9^!]5‚`#~Y‚`#"]Tad]<`ÆdALL (Y/N)?^_ _Ta]ʧb͘]!d6!d~ڇb] bw4!Y_~ʆd͌]^†dtb=ʆd`fa _`^_ _Tad] ^b2do&)|b+!^d^bbd]<ccͧ]^ÆdNO SPACE^_ _:dTa]yc!ddBa*]O_=?c_sc#"]^_scG!d~Ycpscp2d]mcd^Æd`Ædfa _cͧ]ÆdFILE EXISTS` __:d _^Éd^:d c:dʉd=2d)^ͽ]Édd _Ta!d@a]kd!^d]d]}|qdc=qdfa^_!d~2d>`_~2d2d\!d!Ba!]~>d >d#0d~Od#Cdx2͘]^^1d)^ͽ]Â`fa _zdͧ]ÆdBAD LOADCOMfa^_:d !d _Â`$$$ SUB7eeeee"Ch{2r!"Eh9"h1Ah2r2r!try)K!Ge_^#V*Chsgfgssggggfg~qqEqqqqqqqqqqqr rr,jrr&r-rArGrMrqSrhhr!ee!eôe!eôe!eeBdos Err On : $Bad Sector$Select$File R/O$f:BhA2eeff!h~6 sefO͐f  :hEfs sBf s2h>: hbf#f s: hsy! h4 5~yyf5 6yfҐf^Hf@Oy Hf Hf: h–fͬf s s#Hff: h! h Hfùf Hf Hf $O͐ff: h2 h*ChN#e g ggxf: h2 hpg&gxf~+ég7gf2 hfHg! h>wf_g: h! hf5ͤfNgkgͱff¦gͱfxʊg#Nfxg: hf! h2 hͤf! h5™gf#wOf~x½gfp Hffhshyh! e^#V w#Ph:BhOs|^#V#"r##"r##"r##"r!rOh*r!rOh*r|!r6ʝh6>s*rw#w*rw#w'sûh*s! eJh*ri"r"r!rN#F*r^#V*r~#foyxh*r{_zW+h*riyxi#h*rDMs*rs#r*rs#ryOxG*r0sMD!s!rN:r EiG>O:r \iSi*Ch :rqin& ^#V>iO^i"r*r}:r*r)=i"r:rO:ro"r*Ch *Ch!ͮi~2r~2rͦi:r2rͮi:riO:rw:rw |g}oi*r# i )j:BhO!jyoxg*r:BhOi}!rN#F j"r*r#*rs#r^j ~!eJhj! eJh*r:ro$*Ch~ij6ijw*r*r{#zjr+s{ozg*r*r͕ji*r*r jj,jw͜jj͸hjjͲh!rj!rN#F$s*r*rOh!r~#k:Ahk#~$k=2Ehkk͌jk:rh:r/GyO>2r!rq*Ch"rj͡hkjʔl*rJljҔl^j:rOyʃl?|lx |l sl-l|lNl-l# Sl:r2Eh!r~Яwj>hTj ljDj^j6kkj-lälPYyl 5kl*r{zlBK5kllڋm>*Chw~#+w#w+ɯ2Eh2r2rjijlj^j *Ch :rm~mwm~nm͔m͔mn#n # m nw ~>2rm!Eh5Tj*Ch!r"Chlj"Ch!w# Fn! w͌jlxj2r͢mj*Ch ~<wʃnG:r!rʎnìn 4~ʶnlj¬n:r<ʶn$njʶnïnZmͻihhxj>2r>2rͻi:r!rnnZn2r:Ehnwḯin͊ihͲhih>2r>2rTj*ChGjͻi:rhwḯino>i2r;oO ^iDM;l}Ho>h"r*Ch :r:rdodjsloO s#r:Eh͊i:r==»oy==»o*rWw#oj*r"rh͸h*r:rG#šo"rjh͸h:r!row4!ijwp:rpiZn!Eh~o=2r6i2r*Ch!!~~#~O~G#n,-.‹p! w! yGp!xp͢m.:Eh<ʄp! q!pQm:Eh<p. ʄp$n.:Eh<ʄphij6}2EhxjpnpoN! ~态O>G~G!~G} l*Ch!r#r#rj q^jͥp_y#x#{qs+p+q-lp*Ch ͥp!!q#p#w*r:BhOiYhGh}*rMD j"rãk:r!Bhw!q>2r*Ch~=2ruq:Bh2r~2rwEq:Ah*Chw>"h!"r"r2Bh!"rj!qrjQqQmQqâm~?qͦi~?rjQqlj*r"ChQq-ljQq͜llQqünQqnrjQq$nQqml*r)r:Bhh"rj*r)r*r)rQq;ml*r"Eh:r;r:Ahh2AhQqÓpQqÜpQqp*Ch}/_|/*rW}_*r"r}o|g"r:rʑr*Ch6:rʑrw:r2rEq*h*Eh}DQq>2rpoCPMGEN COMl PIP COM:XSUB COMED COM4ASM COM@ !"#$%&'DDT COM&()*+,LOAD COM-.STAT COM)/01234DUMP COM5ONECOPY COM67SUBMIT COM 89DIRDUMP COM :;COLDBOOTCOM<HDOFF COM=DUMP ASM!>?@ABDIRDUMP ASMCDEFGHIJKLMNOPQRÀ1;SYSGEN 1.1COPYRIGHT,1980 NORTH STAR COMPUTERS,INC.*0"] X82 3:\yP}J!:#!+;#:[O!:>:[O!,>:[O !>:[O!> *+++5A?GO*~>2\yƁ2[P  ~# &&!::[O>:\:OS  Enter Destination Disk Drive number(1-4)- or RETURN to Cold-Boot from drive 1- or CONTROL-C to Warm-Boot ? $ Load output diskette in drive x and RETURN to +#==w  !"!6NʄY 6: 76 *e.H"7 @1^#~8@!18"3s5m0#~^@!05"3p ʄ"3 ʄNʞY„!1~@wÓ ʡ> 2+~SP¡>2+j ʿ~NY¿>2+ ~NY!1~w>2X*  >2! " : O: & >2& >294&>o:X7x2v4YyiO:X* ҁ >:X*ځ5>* >* :ʦ]>* :& K5:94& q5:v4&5:X54>}4?_A5zj&) ^#VpCONTROL-C aborts with warm boot. $ Q1. Enter Memory Size in Kilobytes OR Simply type RETURN for your xxK System? $ Q2A. Enter Drive 1 Capacity (Q=Quad, D=Double) or RETURN=none? $ Q3A. Enter Stepping Speed for Drive 1 (F=Fast, N=Normal)? $ Q4A. Is this a North Star HARD DISK System (Y or N)? $ Q4C. Is it a 5 inch hard disk or an HD-18 (5 or 18)? $ Q4B. Give the PATHNAME of the Hard Disk Work File OR Simply type RETURN for "CPMWORK"? $ Q5. Do you want Read-After-Write Check (Y oDIRDUMP ASMSTFORMAT COMUVWCOPY COMXYZSYSGEN COM [\HD18BOOTCOM]^_`abcdefghijklHD18BOOTCOMhmnopqrstuvwxyUSER ASM5z{|}~HD05BOOTCOMHD05BOOTCOMhN*Swrite CP/M system onto it? $ N-Capacity drive cannot write on D or Q diskette$ Must put N-Capacity diskette in N-Capacity Driv1|21>22!64Ͷ!56Ͷ!48Ͷ!32þ~/w/w|2 "p *"z% : G*~0GG#~0 A=G#~.*#~2*5*7x2 !: / <:!p#w*z ,-ž"21!QD"B$>A2 2 2 2 } !Dʙ!Nʙ!Qx" ʜNʳFœx*OD: 1o&dV!1z/_yw!1z/_xw!ND": <2 Ej: Bx*!Q " Y X94v4O=G}i-/:Xgx:=5:21:94sO!͜ !+͜:v421]O !͜5շ_Â{ ÙҪ~w#¡}ҝœ*ž#h   !2~a_w# !~^#6~-ʀ!~,؇G,ذG#~0 ? ?$S_>hh>0:s_ North Star CP/M 2.2 System Generator Note: All responses end with RETURN, - (minus sign) restarts at question 1, r N)? $ Q6. Is the Printer attached to the Parallel Port or to the Second Serial Port (P or S)? $ Q6B. Is your Parallel Printer connected through the Hard Disk (HD-18 only). Y (unlikely) or N? $ Q7. Do you want the program AUTO.COM automatically started when you Cold Boot (Y or N)? $ WARNING - AT LEAST 40K REQUIRED TO RUN CP/M ON THE HARD DISK $ SYNCHRONIZATION ERROR$ The Reserved Area boundaries shown below ASSUME a STANDARD System. You must change them if non-standard (e.g. PROM option.)$ The computed locations for the System Components are: $ The locations you supplied for the System Components are: $ ----------------- A. The top of RAM address (in hexadecimal) is set at: FFh$ B. The MDS Controller/FPB/PROM Reserved area ENDS at: FFh C. The Reserved area (E800h is standard) BEGINS at: 00h$ D. The Hard Disk BIOS Extension begins at: 00h$:`O> K{́͘}~A͒}>:͒}ԁ͢}>:͒}͢}xK > K > ͒}x A DI$@ A$@$$@H! "!$$" @B$!!!DH$$"H @@BHH  !$$A"D@ "A" "BHA " !$ D B I $ !$$ H@BD D$ HI DIA!$$$ $" "$D ! $"  $AB " BDD $$D!"DI$!$BH!"IB I$"D HD" " $"! @H !BI " I  $I$I$DI$ !I$@"$"$! I$I$B "  "\`X`AUTO COPYRIGHT (C) 1979, DIGITAL RESEARCH ]_͌]> ͒]> Ò]> Ò]͘]~#͌]ì] _2d<]2dd]]]]d]]d]]] ^!d2:d2a{_:dʖ^:d>Ľ]d]ʖ^:d=2dd]–^]!Ba!d6#5d]ʖ^:dĽ]!]ͬ]^ʧ^^Â`^^ ])^!]F#xʺ^~0^wë^w!]"] !d~6ͽ]d]:dý](`!e _!d ~ 3a#0 _Wx _x _ _ _G a~ _# 3ax~#Ba!Y_~ɯ2d:d=!dý]:d=!d:dý]^_Ta!d~ a 6?#ˆa]`b:d`O> Kab{a͘]^A͒]>:͒]a͢]>:͒]͢]xKa aa> Ka b> ͒]x b a͢]a^b]ØaÆd^_ BbRbͧ]9^!]5‚`#~Y‚`#"]Tad]<`ÆdALL (Y/N)?^_ _Ta]ʧb͘]!d6!d~ڇb] bw4!Y_~ʆd͌]^†dtb=ʆd`fa _`^_ _Tad] ^b2do&)|b+!^d^bbd]<ccͧ7eeeee"Ch{2r!"Eh9"h1Ah2r2r!try)K!Ge_^#V*Chsgfgssggggfg~qqEqqqqqqqqqqqr rr,jrr&r-rArGrMrqSrhhr!ee!eôe!eôe!eeBdos Err On : $Bad Sector$Select$File R/O$f:BhA2eeff!h~6 sefO͐f  :hEfs sBf s2h>: hbf#f s: hsy! h4 5~yyf5 6yfҐf^Hf@Oy Hf Hf: h–fͬf s s#Hff: h! h Hfùf Hf Hf $O͐ff: h2 h*ChN#e g  ف͢}ف~}ØÆ^ BRͧ}9~!}5‚#~Y‚#"}T̈́}<ÆALL (Y/N)?^ T}ʧ͘}!6!~ڇ} w4!Y~ʆ͌}~†t=ʆـf ^ T̈́} ~2o&)|+!~̈́~Ԃ̈́}<ͧDI$$$D$@B B HH II$@DI ABI$"$H$H@$$I! H*  $H@@A I $D!!$I"BI"I"@$BIIH$$$$BBI$@BI!"$$@$@H@"H$HH@A A! HBBD!$ $ $@ I $$HA$ I$DD $H$HH!"D" @A$ @$I$  $$$UUUUUUr@ r1"%"!r̈́r!t>2y?sr!{̈́r22Ϳs:>=Er:Crz2z!rͦy>2?͌]͘]^Â` _=_.:;<> O_o$>!dY_2d*]O_"]ʉ_@G:ʐ_:dwÖ_x2dp0_ʹ_#*©_6?ë_w˜_0__ï_#6 ¹_._0__#*_6?_w_0___#6 _#6_"] #~? ` `xDIR ERA TYPESAVEREN USER7!`ydO`#<` T`y#O` 3`2]1dy_^͸]2dy2dͽ]:]˜`1d͘]^A͌]>>͌]9^^^2d^_ _:d¥c.`!`_~#fowab]bbccc!v"]!]`ç]READ ERROR`ç]NO FILE^_:d]^ÆdNO SPACE^_ _:dTa]yc!ddBa*]O_=?c_sc#"]^_scG!d~Ycpscp2d]mcd^Æd`Ædfa _cͧ]ÆdFILE EXISTS` __:d _^Éd^:d c:dʉd=2d)^ͽ]Édd _Ta!d@a]kd!^d]d]}|qdc=qdfa^_!d~2d>`_~2d2d\!d!Ba!]~>d >d#0d~Od#Cdx2͘]^^1d)^ͽ]Â`fa _zdͧ]ÆdBAD LOADCOMfa^_:d !d _Â`$$$ SUBggxf: h2 hpg&gxf~+ég7gf2 hfHg! h>wf_g: h! hf5ͤfNgkgͱff¦gͱfxʊg#Nfxg: hf! h2 hͤf! h5™gf#wOf~x½gfp Hffhshyh! e^#V w#Ph:BhOs|^#V#"r##"r##"r##"r!rOh*r!rOh*r|!r6ʝh6>s*rw#w*rw#w'sûh*s! eJh*ri"r"r!rN#F*r^#V*r~#foyxh*r{_zW+h*riyxi#h*rDMs*rs#r*rs#ryOxG*r0sMD!s!rN:r EiG>O:r \iSi*Ch :rqin& ^#V>iO^i"r*r}:r*r)=i"r:rO:ro"r*Ch *Ch!ͮi~2r~2rͦi:r2rͮi:riO:rw:rw |g}oi*r# i )j:BhO!jyoxg*r:BhOi}!rN#F j"r*r#*rs#r^j ~!eJhj! eJh*r:ro$*Ch~ij6ijw*r*r{#zjr+s{ozg*r*r͕ji*r*r jj,jw͜jj͸hjjͲh!rj!rN#F$s*r*rOh!r~#ڋm>*Chw~#+w#w+ɯ2Eh2r2rjijlj^j *Ch :rm~mwm~nm͔m͔mn#n # m nw ~>2rm!Eh5Tj*Ch!r"Chlj"Ch!w# Fn! w͌jlxj2r͢mj*Ch ~<wʃnG:r!rʎnìn 4~ʶnlj¬n:r<ʶn$njʶnïnZmͻihhxj>2r>2rͻi:r!rnnZn2r:Ehnwḯin͊ihͲhih>qs+p+q-lp*Ch ͥp!!q#p#w*r:BhOiYhGh}*rMD j"rãk:r!Bhw!q>2r*Ch~=2ruq:Bh2r~2rwEq:Ah*Chw>"h!"r"r2Bh!"rj!qrjQqQmQqâm~?qͦi~?rjQqlj*r"ChQq-ljQq͜llQqünQqnrjQq$nQqml*r)r:Bhh"rj*r)r*r)rQq;ml*r"Eh:r;r:Ahh2AhQqÓpQqÜpQqp*Ch}/_|/*rW}_*r"r}o|g"r:rʑr*Ch6:rʑrw:r2rEq*h*Eh}DQq>2rpo@ͣs:uus5uG#5uG# uvuÞs>Ás:::@u:Hu::_u:I~_G#~_G# auXDs2:y2:s§u{¥u:y@|uͿs2vºu:ʺuOu:=uy2vx!&vr+uyuq!v:vu|u7 u w+ɷyĦyy sMvG:y T D S (C) 1980 North Star Computers, Inc.1!y~6#*yav###!YY""O_2y=22ͧv͸ybv>22!s"*y"!"y:Oi&6s"2=2{~w}iwy:͆wO>!|yuvyGOxGw%w!\|~w%wFyw y!4yz>{:yȯ2yG:O*|:9s͆w*&yXQO~ay{ʀy}#]y>o~yOzpyW~&Ay}#ڏy!yͦyMv&zW|E!|yuILLEGAL ACCESS~ Ұy0O s#æy*y> s> s ]PÌzMzzVzczVzzÊzpzzz,z:z>0>Vzyczypz> yɯ>>7>>7>@!~/w/wʾz$$$zFp,¾z$z|¾zïz>A>0>` s> >>>`zy"r*r*r#"r͕jkj:r k2rhjÞjy<_WyOxOxG*r ~Vk5kdkw^j :rʈkNÎk N#Fyʝk*r}|\k#uk*ri#DM*r6# x±k*r*rs#r͡h*r6#6jkj^j>k:Ahk#~$k=2Ehkk͌jk:rh:r/GyO>2r!rq*Ch"rj͡hkjʔl*rJljҔl^j:rOyʃl?|lx |l sl-l|lNl-l# Sl:r2Eh!r~Яwj>hTj ljDj^j6kkj-lälPYyl 5kl*r{zlBK5kll2rTj*ChGjͻi:rhwḯino>i2r;oO ^iDM;l}Ho>h"r*Ch :r:rdodjsloO s#r:Eh͊i:r==»oy==»o*rWw#oj*r"rh͸h*r:rG#šo"rjh͸h:r!row4!ijwp:rpiZn!Eh~o=2r6i2r*Ch!!~~#~O~G#n,-.‹p! w! yGp!xp͢m.:Eh<ʄp! q!pQm:Eh<p. ʄp$n.:Eh<ʄphij6}2EhxjpnpoN! ~态O>G~G!~G} l*Ch!r#r#rj q^jͥp_y#x#{Mvzz1x zzzxçvx"x'x9xHxz-xyu9sy<:yPs=Ϳs:5Ws:ut@ͣs:چsts>wG#7wG# ˆsDs>Ás:ʣs:>t"t#G}@oz2]u{ o&";t~{=! >‚s! ~Yjtjt!~qt*~}OG?sWr! _t/<_: .:oVoVoV:8—t=•tÁsx@w:y ww%w>Gw %ww>2x€y*ypiw+w#6# Dw~q#p#s#r#!s#r#!s#r:!6~J<=sw~2#!2=<ڡw!wAʠww!wͦy s< MOUNT A: IN DRIVE 1, TYPE ANY KEY O?(?(Q?(? ( `i"y2`i"i&y zy>22Õx2! bx]x:wÕx6Õxʕx5**>(vx>@,}xo*y‘x*yʕx2**y±x**yxy:>¿x<*"*"#y:go|*:G=x2yw# xx=!~> >>Y22!|>yu!| ~ n{[n{#[{Mv>2y2y>2yMv.trt|tttttu u _[]INPIRDPTRUR1UR2RDROUTLPTUL1PRNLSTPTPUP1UP2PUNTTYCRTUC1CONNULEOFDISK READ ERROR$DISK WRITE ERROR$VERIFY ERROR$NOT A CHARACTER SINK$READER STOPPING $NOT A CHARACTER SOURCE$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:> !/>!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 * :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!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 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* "}*}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  /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:[ *M:>!(:=2%> >>!F!5+N! ~2!4<2T>>!b}*bMͭz!b~26!~6<+wé>!`ҥ*`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>÷: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ͬ!\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:HDM!  ::=H-\:N2O_og_{ozg^#V))) _{ozg^#V) d^#V|g}o n_{ozgO{ozgi`N#Fogo&og H ©=¨' !'6!36' :1/!aE*#">z?C9IͲÁ.!6> !ڇ*&' ~2 ʀ: y.*M!4Q>!қ:=2á:2:Ҭ\>!ҿ:=2K:2K!:!:K\: \!p+q͈*W Extended Submit Vers 2.0Xsub Already Present$Requires CP/M Version 2.0 or later$:y*###ƒ# yk   җ 4!~=ŐW!xʵ ~#èbx {~#o}où.xsubb!np+q*m2_!pp+q*o ]xsub*"-!/"*"+!""1 M*!"́!"* (xsub active)$|*y ʥ*"*7***x*́͋<͛ :%*=26͋!7^#6 #6 #6$ 8*7~O #w# !6:6=*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ͯ -:>>!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: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͈*2% ͋*-"*$$$ SUBq:(=2(N *$*& w*$#"$*&#"&' !"N*M^7 !)6:!)ھ *N*DM͆ 2*ʭ :*ʗ ͯ *N"P*6:2)÷ *N"N!) $@BA$! A "!$"" ]xsub*"-!/"*"+!""1 M*!"́!"* (xsub active)$|*y ʥ*"*7***x*́͋<͛ :%*=26͋!7^#6 #6 #6$ 8*7~O #w# !6:6= COPYRIGHT (C) 1979, DIGITAL RESEARCH DISK OR DIRECTORY FULL$FILE EXISTS, ERASE IT$NEW FILE$** FILE IS READ/ONLY **$"SYSTEM" FILE NOT ACCESSIBLE$BAK$$$BAK$$$-(Y/N)?$NO MEMORY$BREAK "$" AT $1mM"m +!8s~1m!f6!!6e*!M͛ /$^L:!@OL:! 2͑e:b:! L:h<2hb:! b:hO>!hw:! pX:! …!!6  LÊ!!6ûô:!ʛ͑:! ҩ OҸû:!R†!6G>!!!6 :2.t -? >!!6!6s, !6:xB!6OU2!SB!G6:҃!6:G҃*G& ~2!:G<2G_ Qқ=e  b:!-®! 6:!#¿͇;J:!:!!6Lv:!:Jv: *#"͎"&! 6R*I""ë :!M:H| ! 6>F ͛e: <2 O! Hqy d F : 2! 6*#s#r :!N ͢ *o/ Ҧ Ͷn! 6!"&R! 6o$ Î Ç :!S0 $͢- :2"+s#r!:* *& ~2!:<2 :!W> v :!X³ Z͎\ Ee ð :7/҃ E!76e ͕ :xƒ - ͷ*&"K(Kڰ *KM N͔*K"KҌ :!Z ͎  ͢ : :!  'v!gq:7 e !p+q*DM  =? ) !p+q.*DMF -L *9"`!"b!h6!j6!|6.!=\ -x !e:dʥ *eM \R :xʥ @ *dM \, :x \͕ :x - V :e _ :f w : =e !e:d*eM =e : =e =͕ !]6:x>- !"!76!6!6!66*dM  *dM !6:8!*`*;DM \u 2xʻ>!xҨ- *`*;6:82*`"`:<2w!"`9`h*`*;~2*`#"`6:0O  ú!p+q:/(*DMͩ:  : I N* *DM:aO>!Һ x!: ڦ> ʡ* +" >¡! 6: <2 =O! N͒:  O͒: ! 6:h!o$O* ͸ ! 6 !h6!: 2 3* & 6 : <2 =O! N͒*dM  :sGsu n>!6:<2=O! N͒!">!"͎/Ҵ*+">>!": *#"*""*!".+",*$"**o".!",!36:3{. *M  *!M 1m! 6!6! 6: 2Ebͽ!e:d\::eH2 H҆ͽ:e2!:d2e:!2dû :!I¬!: :H2 ҮX:h2iҐ:!ʍ:!:!H:!H,!"! 6#~ F)ͷX:! X):i!h)9 e:!:h2jO>F L>!":i!jHҼ*"+M ~ ʼͲ!f6!h6!"! 6F!f6:h2k!iҠ:i2k:j2h:k!hҶ9 æ:h2j!!6:j2he:! >"Ͳ*"M ~2!O :! *+"! 6:!B)! >w!"&*o"(R :!C:eR :!DKeX :!K\ͷX :!Lj^ :!Pš͎҇! 6F×͢җ:Ç :!T¨F :!U¾: 2 :!V͎"$DMͩ/ *oDMͩ : 2 :! (::H%^bF : ͎H :!Ay! 6*""&*o"(R͎an͢na! 6R :!F”͢ґ Ä :!J $:2$͢ :=2:<2!*& ~2!ü*""I*M*o/!:":f *g&!lq:l $ !h4:l 1 !h6*lM :hB     !h55!mq:m :hO>H2ny} !m6 !o6:n!oښ *mM !o4‚ !pq:p ڪ >:p :p H:p H!qq*qM͛  ^W :q@2q*qMW   !sp+q*r !up+q *tDM !wp+q*v !zp+q*y2x!|p+q*{2x!~p+q*}2x!p+q*!p+q*!p+q*!p+q*2x!p+q*!6   >>! q* &!p+q*:*eM !b+!s{!f!6:!b*b*^DM =ͅ N- *b"b:<2)f!"b!q9bڀ*b*^:w*b#"b!q:6ڶZͅ ʱ- !66*6& :w:6<26!J6*b}:J<2Jm=? :x- : ;*dM .=\ -=ͨ ;: *eM =ͨ .M= -C!q:Y*M !q:a/>z!/H!q*MaҎ:_:!q:ҥ*My:!p+q!'"!6>**ͪ{2**ͪ"*! ͪ":!!*22*,**"0M ~ H3*0"**+"*+">23:2/k!36,*+s#rx:3x*0"*: “**"&*"+"(á*$#"&**#"(*"#""*$#"$*"+""*$+"$*#"!4qM*"*$: *(y"$DM}|C#~ *#"*&DMyxC 1*+":4?w+"$""ͷR: —*$"("҈!"&Ô""&*""&$mڸ*o"(**$"($"O26͛*"M :6w͢:6 !7q:*7M͒:7o$+͛ͪ*$M ~28Om:8 I͇͢u$oqo͛rP! 6!"&*$"(R͎ҔM͢ҡÔ($ҵ! 6R͇vͶ2!*!Mm$"*"M :!w͢:! e2!:! : /HH/Q:! @!!6 R!!6 :!KR$*& :!w:<2dn!:s+q*$";!>6:>/;oH*;#"(";:92=*=& *(M !::=2>/H:=<2=*(#"(æÀ:>*(+"(R:>!6*FM8 *FM   Oy2F :FY5>>:!02HO> /!";u*)))*) *H& "PҘ! 6+s#ré! 6"DM!>))덑o|g =±^#V) ^#V|g}o _{ozgi`N#Fogo&og_{_z#W H = LIBX$$$$$$$LIB1*" COPYRIGHT(C) 1978, DIGITAL RESEARCH á 4êü /L9ASMPRNHEX$:2*o/*!My:<2=O!s Hq**DMͷ! 6: e!"*""?k*&"?*?+M ~2A :hHҏ *&"?(?:A ½8*#" ҽ*?M ~2AO *?"?ҕ!"*"*"^: 2B! 6F:B2 o(>&H6͛9!C6>!Ca R>:C<2C?! 6!"͇͢Ґq"ڊ͛Íq!!6 !!6 !6*!Ma2D*!M͒2!:D/!+w!6e2!͢!Eq!E:!:H:H!Fq!4w_#~ ʸ A:4~~# ¼ > \ ?ʻ w# !ͼ ? !ͼ !)ͼ !ͼ :5͡ :6:6͡ :7͡ :\ ʻ 24!dͮ 25ͮ 27ͮ 26!8 ( ʃ !Y 1  :7ʞ !z 8  !"2D2X2#! 8 !ͼ z{* ! !"!8 w#  +6# *#"~!ͼ G:6QxJQS*!w#"! 1 !"!Y~~# …¡z!ͼ wʹ* ! w#" ! 8 !" ! zz_O4:  :6y@2 0 0:x0_<2! wI2 2> 2 >2ɯ22 !~@_6^4#: w~$w: 0 q: A: A͋q: a{_2  2 - !ɯ2I:  ;*:  ͭͷ ͭ͋>9q>9: '!2 >9 7:! 6 >2>2: 2 Qͭ:Ğ! :lj<͖<j<|<: OʊQ>ÖH >2 2 û: B­>ôD> ¸!52 !"!N#~#A07O! ~*!) " {zA"*![N![ N#Fr+sq#p/>G=#w#w3#w#w!JSYMBOL TABLE OVERFLOW G*##~w*##~͎*_###s#r^#V`à 4 Wm ()*+,-/ABCDEHLMDBDIDSDWEIIFINORSPACIADCADDADIANAANDANICMACMCCMPCPIDAADADDCRDCXENDEQUHLTINRINXJMPLDALXIMODMOVMVINOPNOTORAORGORIOUTPOPPSWRALRARRETRLCRRCRSTSBBSBISETSHLSHRSTASTCSUBSUIXORXRAXRICALLENDMLDAXLHLDPCHLPUSHSHLDSPHLSTAXXCHGXTHLENDIFMACROTITLE  PF FP! ( 2/z'{ͅ>ɯo>g"k!m6ů{_zW5>)D*kOxGd !m?FDM!xGyOڂÃ)sn55)=â|g}o=î--#zg{ozg{ozg{oÓ:: ;,!ɯ22=2l!"]!~H5_!m~0:ą:  *":  :‰:̅ԅ!^#=ʅVq”*qͦ1& O:lµ̅>2ly:_!w~!s!m~ùy !~=w_!m~ ͅ:|: |Ë  |*" ͩ !6="1 :  1}1:n:>BʋSSͦSSxS 1:  1"" ͦ 1 |͍ >O U!" 1 1!|_!^#fk $8AP`ixH ñññ81Ľ y0îH ñGîG  ñH ñ(Ľ yîH ñîîĽ y0îîH ñG 1: :,; c*| } 8O:! G~#x=2> > ! >x6 #='G! ~ p( O*}O>4?:7w:#ĸ*"!͸* }w>ͪg( ʆ1 Y :7ʗ8 z !<ͼ CP/M ASSEMBLER - VER 2.0 NO SOURCE FILE PRESENT NO DIRECTORY SPACE SOURCE FILE NAME ERROR SOURCE FILE READ ERROR OUTPUT FILE WRITE ERROR CANNOT CLOSE FILES END OF ASSEMBLY G:7xʘ!#~ʄl͸Ä**!O {zʊ͸*"!!#^4!$wͯͯWƐ'@'ê>:ͪ!#^Ww*!{͚|͚}͚͚{!$~#͚͚> ͪ> ͪ:  '<ͭ'<>V$>O$:Ğà\ÞØ`rÍÖ![w#w#b!"!F#v2[G*##~w*##~<*}q!~ڬ6![^![^#fk"͎͘!G#*####*^#Vû!^*"*?'  v:P@< !  PP27 ( *"  NZZ NCC POPEP M x_BH!œ#¶ ¦{KÈCÈ<:JCR:  !6 s!#  ɯ<:O=_Z!F!V#fjQ̓E!^#Vo&)~#FxGyѯ<àn8!~ڢͅ6~44O! s#r!~ ڿ6ͅ^4!mw!wp!~ͅ!55N! N#fio&)^#fkͰ>2lyPLnR>UX:l̅2l͓*>ERʵ2C!" """ :ʼ:*1 |R|ͦ0FIL: R  R* } *" :¿::¿üX!C^#fk[@ :Œ:=ʌG!ʆF#H vÛc*| EH ͺ,^1 ͦ *""1 EH DH ͺ,1 ͦ :  1:  " > 2 Ľ y0G G t :):,.>C :|: Jü;r :R: ʼʋ!ʼR!ʼʋ>SR{ozg!~4ʧͦ !6 ! **̈́**̈́\iͩ !w#H USE FACTOR !* "z{*"* "I !" :1 R O*UR X* G:xl :  *̩ : l x͖ *#"EH DH 0:~ ! ^4! w͆ Æ *! 6z͖ {͖ 4>R>V>D >P >L >N=COPYRIGHT (C) 1980, DIGITAL RESEARCH DDT VERS 2.2$10 !~=W!xe ~#Xbxʇ {z~#o}o҃i.2_!fp+q*e2_2_!hp+q*g!jp+q*i!lp+q*k!np+q*m2_!pp+q*oÃO$*sy͏ , $  ͌ 9!z6 # L!zw͌j# X:z 0 ͘=N#Fy}80*z{¯#z+++ ¥ z#½# · 9!`͠ y9!rͷz8O!B N#N ¾SP.* |} !9":q!"- Ͷ Aګ ҫ _!7^#V~  \p Z z ů2[\͓͢ ҫ ͐ =« f " ͓ ҫ ͐ ʻf " =ʻf "=« ý> 2͐ f "]=f =« *]}o"_  *]"a. ~ #E }"]*a 6 *]}#|#*]E ͐ « f f f {zA|« W}d ͐ f f f DMʡڏ"=ʡͲ=ʡYPͲ1**!O~4#~#F#x~#s#r#w>͐ « f f  . ᯕo>g. ë «   Ͷ ͐ =« f xY |« }ҫ gA>S Ag}S S i |« }!w s#r:[ʔ _!~ʦ ![4ç \͢¦ 2[ 7 >?  e͢!g"c> _͢a_!f~> 5*c~#"c 0 7   > >  ͢| } @ >. *_}o| , 0 ë ^#V#!Y ))))o P q s#r#!V4 !V6# ,® >2Vñ m ͅ m ͅ m ͅ « Vʫ ! XN!~  )*)þ))>+><7"9.Yͯ * M^2U :2:2ͳ:_³ͯ !6! @!!BH @@ABH B! "BHI$$BI$BI $ HI D$HD$$ H B!$D$"$B$DA!ABI$H B$I $HI$H$! $I $I$$A !A@$I$"!$H$I$I "! $A$  HHAA"I @BB $A" y=!z{w# % w!P͠ y͓}*w#"͌ @.@<!Eͷ~P !ͷ’P͌Q!ͷªP}QxQ!ͷ͓G@Q! ͷ y͓Gþ!ͷ ͓Q!ͷ͓Q͌Q!.ͷ6y#G͙Qà!2ͷQ͓͌Q!>ͷq eg͙Q:zJEËC–EQyQxQRQ** {zҷ*~#" <AOGƐ'@'OxƐ'@'ON# O!b q!vz͒q.?*!9"8"͉Z*" +*'/7?v"*2:EI SPHLDI XCHGPCHLXTHLRET HLT CMC STC CMA DAA RAR RAL RRC RLC NOP CPI ORI XRI ANI SBI IN SUI OUT ACI ADI CALLJMP LDA STA LHLDSHLDMOV ADD ADC SUB SBB ANA XRA ORA CMP INR DCR MVI LXI STAXINX DAD LDAXDCX RST PSW POP PUSHNZZ NCC POPEP M B C D E H L M A B D H SP PSW ??= M!Eâê ö  - Ð f  "J*"!"!"2O!" "]""!1!++""M>28!"9:] !í 1 2|2\  !]w# ʫ .&  0 6 #& .K !e K w# ʫ : U 6 #K 6AW w#] !e~H#~E#~X*}|́ "!́ ͐ !ʬ =« f kʫ j \͢F w# ͋ t ʫ : W& _& & O { `i"F & & w# & ͋ « t Y t Y GтWx ͢!o ~Z #N  *. *.  NEXT PC͐ =« f  . ~ Ͷ ʻ .͓ =« f |« }w#Ä >2L͐ ! =« f }ʫ +"MD Å D  !  #! _^! ^#V~ x+ >= = !~  . !   #x f L L ͓ͅ ҆ *" !6ï +"_*~ #E گ ʫ ^#V. ï ~ CZMEIABDHSP!"M"+"!91*~!O~6=G#^#V#~x (#"!N#FW( *J>7Å*M|N+"M N:LHͅÅD Å >* *͓ b" . *"] !/~##ʁtZ*F#n!Is!^#V&&##&))::^#V#*^#V>+)x-8_$$$I$$H!!! BH" !I B  $$!BD! $!BI D@"!$I$$H"!I$I$I$UUU$$A$ D$HD$$ H B!$D$"$B$DA!ABI$H B$I $HI$H$! $I $I$$A !A@$I$"!$H$I$I "! $A$  HHAA"I @BB $A"@ COPYRIGHT (C) 1978, DIGITAL RESEARCH ERROR: $, LOAD ADDRESS $DISK READ$INVERTED LOAD ADDRESS$DISK WRITE$LOAD ADDRESS $ERROR ADDRESS $BYTES READ:$INVALID HEX DIGIT$CHECK SUM ERROR $FIRST ADDRESS $LAST ADDRESS $BYTES READ $RECORDS WRITTEN $HEXCANNOT OPEN SOURCE$COMNO MORE DIRECTORY SPACE$CANNOT CLOSE FILE$*!9"!e !" !" \!""͊: ƒde"\\\͊: ²d\͝: )d;! q* &f  ! q> ! : A O6Y: !2 6=21 á:1 : r+s#r==_HL"4 " >6 ͪS* "6 =23 :1 =21 v=O* #" Y8  ͝҉* +"8 .!2 ʞR̀* "4 4 = ͝* #" çR*6 DM+R*8 DM+R*: DM+R*< M!? q=  ͝Kd*= ! ͸p!@ 6>!@ X*= }O!< *@ & w*= #"= !@ 4)!< 4\mad* }O!< :? wlR*4 DM+{R* DM+R 4 ͝*4 }¿= 4 ͝< N*4 #"4  å;*4 DM+: Y23 Copyright (c) 1979, Digital Research????????????CON:RDR:PUN:LST:DEV:VAL:USR:DSK:TTY:CRT:BAT:UC1:TTY:PTR:UR1:UR2:TTY:PTP:UP1:UP2:TTY:CRT:LPT:UL1:R/OR/WSYSDIRR/O R/W SYS DIR ** Aborted **Active User :Active Files: Drive Characteristics65536: 128 Byte Record CapacityKilobyte Drive Capacity32 Byte Directory EntriesChecked Directory EntriesRecords/ ExtentRecords/ BlockSectors/ TrackReserved Tracks is Temp R/O Disk: d:=R/OSet Indicator: d:filename.typ $R/O $R/W $SYS $DIRDisk SL!*p+q*)O2'!,p+q*+O2'O2'O!.p+q*-LRRLR\LR" O!/q*/& L!1p+q*0#L~*##N!ͽ͞"T!Vq*VMͳ!Xp+q!W* >Wr#MͲ!_p+q!`6>!`6*`&*^*`&Y />!`4 >*]& ~ O!]49!a6:a*]& ~2bO>z*bM >!b/~,H~:H~*H~.H~>H~<H~=H*]& 6!]4T!]4!cq*a&Y :cw!a4>!H% - *DM ͱͷDM  ͱ* N#F 9ͱ * ^#V))DM Tͱ* ~ *} *M!+s#r#4 !s+p+q!6!66:!ڄ !6!6>!r *&**&Y i !6!4+4A :} :!4- >!699 2¨ :!4: :2!6+6>! :O!9 DMi ͱ:!O!Y DMi :2: 0O! q: O: O! p+q* |O* }O! p+q*  f! p+q* DMB! p+q)R* DMB1B* DM+;! p+q* i2 ! p+q* i2 ! p+q* i2 i2 !" p+q*! f!$ p+q*# i!& p+q*% i!( p+q*' i2 !* p+q*) f!/ s+p+q+p+q:/ =2/ X*+ *- w*+ #"+ *- #"- 1* #" ͖r*   ~!" ! ͸×* " x20 º*   DM":0 Ad*   6!" Ç!" : !"6 "8 ": }2< !"4 "= ! A 0O> :A 0:A AO>&R̀:A A H.2B !2 w:B !D s+q*C &͍:D _og_{ozg^#V) _{ozgi`N#Fogo&og_{_z#Wq=  ͝Kd*= ! ͸p!@ 6>!@ X*= }O!< *@ & w*= #"= !@ 4)!< 4\mad* }O!< :? wlR*4 DM+{R* DM+R 4 ͝*4 }¿= 4 ͝< N*4 #"4  å;*4 DM+: Y2tatus : DSK: d:DSK:User Status : USR:Iobyte Assign: =Bad DelimiterInvalid AssignmentBad Delimiter: Bytes Remaining On R/, Space: Invalid File Indicator** Too Many Files **File Not Found Size Recs Bytes Ext Acc65536 set to R/O Invalid Disk AssignmentWrong CP/M Version (Requires 2.0)!9"2!T OË!]6:\:] Hr3 Ë:\ʀË͇ /ҋͺ *2!"q*"&L ͐ ͐ ͐!$p+q*#~*#N͐*##"#÷!&p+q͠*%DMͱ O O!(q*(&!gr+s+p+q!h6>fr*d*f!is*d́"dPY! "f>!h#~Haͫo!h6:i0O͐!mr+s+p+q*lTZs#r*lڶ*l+s#r*jN#F+q#pÌ!nq!"o"q}2uo&"s* s:n*sDM2u:uqos*s"s*o͊O !v6>!vQ*v&w 6`i+46)A*:'ʓ:'O!) ~2vʍ:vO!w 6,]!v6>!v*v&w ~һ*vM !v4˜8AO͐:͐ͱ*##N!ͽ"* N#F*͠":2͠!4 F :® )!6>!ګ ͠:O!9 DMi 8ͱ!6> !ڤ Å :2k ä  ͐:!O!Y DMi w !4C F :¿ >F : F :=229:Y= ;>9*&Y DM =2 I>!6:=28 :2:2 :!!29:Y T >:Y,e \>Ì !p+q*~:ʉ *N͐*#"o :͐!p+q!'"!6> **{2*́"PY! ">!+~H !6:0O͐à k͐͠Q" 8AO͐jͱͷDM͏ m  Z"l"!6>ʥ *}҆ *M ͱ*}x O͐} W͐ͱ !+s#r!+s#r#4D ͠:\ʹ :\=Oͳͩ !6!)6l :) :)=2) :] & !"}2\!h6?!j6?\:'C:'ƀo&")!)6!"):)/)HҘ]!)6> !)ڎ*)&*)*)&*) y!)6 Ä:) 2):)<2)M*)#")/:)ҩ*)+")`*")#"]!*)!/H!")!"]*)) *)s#r!)*)) *)) N#Fq#p*)) *)s#r*)#")!)6 J:)!)J!)6 :)<2)*)")҈q:tw͠ͱ!"))ҍ*)) ^#V")]͠.*)DM\ -°!\6:\ͣ:ͱ*}DM'ͫ*)%) N#F'ͫ*)!) N#F'k͐ͫ*)) N#FͫR͐/͐ *) ~IO͐NW͐ͫ8AO͐:͐ *) ~2)t(͐:)҃)͐*)#")Ã& \!"))\Ұ*)")]͠*)M! ^#V *) >*) w *) >*) w *) >*)-:YS:Z Hҧ!6> 2)½>!)6> !)*)&*)>2) :) .͐*)M͐:)<2)99:Y=/9&ͩ c,Hͩ 9 EHͺ i`N#Fog_og_ogDM!>))덑o|gҘ =†DM!>))ҭ =¥~ ³^#V) ½^#V|g}o _{ozgi`N#Fogo&og_{_z#W!9"1W͜Q>2!͢QG}DrYQ|͏}͏#> ex͏#r* _> e> e ҉0Ë7e}} :³ʳ7_<2!~ɯ2|\\FILE DUMP VERSION 1.4$ NO INPUT FILE PRESENT ON DISK$!Y , <    *$A!6 # T!w $r# *`: 0 *A*! ~ ʰxkb))))_y‘BK{ͅ*!66!"80*{#z+++ #1 G!\~=x2#~ 2=+!ͱ! "!"":=XX: ʱ2222<‚@ê*6#6#! "=Ɓo& ͱ<‚:=D*$.":2)+*"<U+*:7 *4# *"1G*":!##j<‡Uø<‡ ø*:*N#Fx p+q G)*"Ç+@) !).*)&*)*)&*) w:)<2)*)) >w#6*)) w#6*)!) w#6*)%) w#6*)) N#F*)) q#p*)%) *) ~e *) * ~o&͞ *)%) q#p!)6* >!)6!)6>!)=:)!)w=*)&*)~2):)*)& *):)2):):*)!) *)) s, >X\:)“>!d!")>!)d!")!")*++!)a*)) ^#V")]*)")*)) ^#V")]!)6> !)T*)&*)~2)*)&*)~2)O;*)) ^#V" w *) >*) w.*)DM\ -+!\6uͱ:)O! DMͱ*)#")Ù*))))))"):m w>.Yn -:YS:Z Hҧ!6> 2)½>!)6> !)*)&*)>2) :) .͐*)M͐:)<2)99:Y=/9&ͩ c,Hͩ 9 EHͺ i`N#Fog_og_ogDM!>))덑o|gҘ =†DM!>))ҭ =¥~ ³^#V) ½^#V|g}o _{ozgi`N#Fogo&og_{_z#W*ȯ2! 6#w#6#6#6* "*ȯ2!S>._!_ S_<‡ ø*:*N#Fx p+q G)*"Ç+@) l!m^#"j6*j"jͧ6\@55G:5d.@d#w#w#w"j+~?\ Tx*rͅu> #wdͅ|aړ{ғ_ _.:>п~ #ç~#± !:l=_:<  :_!:\ #>D|}  ñ:<WFILENAME SYNTAX INCORRECT$ This program copies one or more files (ala PIP) between two diskettes alternately mounted in the logged-drive. Procedure: Enter a filename (may be wildcard like *.*) then Return The name is validated and stacked in a list. To end the list and begin the actual copying, Enter a null line (simply a return) $ Although drive qualification is allowed on the command line, You may not specify a drive letter at this  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?$!9"!͇͊!p+q* ͊!p+q*͍2!p+q*͍2!p+q*͊!p+q*͍!p+q*͍!p+q*͍2!s+p+q+p+q:=2ʦ** w*#"*#"!p+q(+*DM*p*& 6:ep\:=-!6]:ͧz2~e:~2O! 6*~& 6$>!~_z*~& w!~5Bx:yͧ*v+"vv ~_{ozg001 $$$$ SUB6ͭ:}"!}5́ͭ́3*yM"h:}^a A2}O>Vͧ^:}>*z& ~ !z4í!{q*v#"v͙dͧ*vv :{w:x<2xO>}|ͧ#0*"!>8 !9"1C>?!hw#w#w#w!":\M_\ ]!\6? ͣM\ʿƀ_r* "ͣ!ͬr~# £4~:60+~0Ҭ60ì5 !**}|> "!C>M6 #=Bͣ >. * ͣR .A  A  ! ^v#~_RSʴBʁX F͡vʛvG͡v2*#~0? ?{vvGv{ F}k))_iG)|g64 (Hard Disk is 256) $ No Files Matched, will show ALL FILES$ Enter S and a decimal Sector Number "S349" or Enter B and a hex Block Number "B2A" or Enter R to reprint dir.dump, X to exit: $ Incorrect - Unrecognized Input$ Sectors 0 to 19 are in the system track area They are not accounted for as a CP/M BLOCK$ Enter S and a decimal Sector Number "S349" or Enter B and a hex Block Number$ CP/M BLOCK XX CONTAINS SECTORS ump, X to exit: $ Incorrect - Unrecogni $point; ABORTING$ Enter filename (just RETURN begins copying): $ FILENAME NOT FOUND$ UNEXPECTED OPEN FAILURE (COPY INCOMPLETE) OF FILE: $ I/O ERROR WHILE READING: $ Mount INPUT Diskette and type RETURN$ Mount OUTPUT Diskette and type RETURN$ ABNORMAL TERMINATION OF ENTIRE PROCESS$ OUTPUT DISK OR DIRECTORY FULL, WRITE ERROR IN FILE: $ Mount SYSTEM Diskette, type RETURN to WarmBoot$ͧ!t6>!t%\= >!t6:t<2t=O! ~2u b:<2O>9b!60+~9b!60+4:uat:u_2u:uMʉSͧ!v6!"v!|6:|Ҁ!x6 2}:} Hk:} h:}$6 2}$*}M3:}02}O> ͧ3!z6ͭ:}"!}5́ͭ́3*yM"h:}^a A2}O>Vͧ^:}>*z& ~ !z4í!{q*v#"v͙dͧ*vv :{w:x<2xO>}|ͧ}o2|v*#~0 ?)T]))_!!(6 #8i*[)W)###tt+#tt F##~!+~} }022}0221{ ҷ {022z22+!>)) =33=~#~0:~0:#1)T)_!! User- FileName-EXTENT -#of - BLOCK NUMBERS ALLOCATED TO FILE (in Hex) -Number -RECS- 1- 2- 3- 4- 5- 6- 7- 8- 9-10-11-12-13-14-15-16 $ TOTAL FCBs listed = 0 Directory Capacity is   *+++ LOAD SYSTEM DISKETTE AND RETURN TO COLD BOOT $5204D :10013000414E442052455455524E20544F20434F77 :090140004C4420424F4F5420248E :0000000000 BOOT $' 1 d d d d 4 *+++ LOAD SYSTEM DISKETTE AND RETURN TO COLD BOOT $:g.~g.; FILE DUMP PROGRAM, READS AN INPUT FILE AND PRINTS IN HEX ; ; COPYRIGHT (C) 1975, 1976, 1977, 1978 ; DIGITAL RESEARCH ; BOX 579, PACIFIC GROVE ; CALIFORNIA, 93950 ; ORG 100H BDOS EQU 0005H ;DOS ENTRY POINT CONS EQU 1 ;READ CONSOLE TYPEF EQU 2 ;TYPE FUNCTION PRINTF EQU 9 ;BUFFER PRINT ENTRY BRKF EQU 11 ;BREAK KEY FUNCTION (TRUE IF CHAR READY) OPENF EQU 15 ;FILE OPEN READF EQU 20 ;READ FUNCTION ; FCB EQU 5CH ;FILE CONTROL BLOCK ADDRESS BUFF EQU 80H ;INPUT DISK BUFFER ADDRESS ; ; NON GRAPHEA (RESTORED AT FINIS) LXI SP,STKTOP ; READ AND PRINT SUCCESSIVE BUFFERS CALL SETUP ;SET UP INPUT FILE CPI 255 ;255 IF FILE NOT PRESENT JNZ OPENOK ;SKIP IF OPEN IS OK ; ; FILE NOT THERE, GIVE ERROR MESSAGE AND RETURN LXI D,OPNMSG CALL ERR JMP FINIS ;TO RETURN ; OPENOK: ;OPEN OPERATION OK, SET BUFFER INDEX TO END MVI A,80H STA IBP ;SET BUFFER POINTER TO 80H ; HL CONTAINS NEXT ADDRESS TO PRINT LXI H,0 ;START WITH 0000 ; GLOOP: PUSH H ;SAVE LINE POSITION CALL GNB POP H ;RECALLTHAT A JMP TO 0000H REBOOTS) CALL CRLF LHLD OLDSP SPHL ; STACK POINTER CONTAINS CCP'S STACK LOCATION RET ;TO THE CCP ; ; ; SUBROUTINES ; BREAK: ;CHECK BREAK KEY (ACTUALLY ANY KEY WILL DO) PUSH H! PUSH D! PUSH B; ENVIRONMENT SAVED MVI C,BRKF CALL BDOS POP B! POP D! POP H; ENVIRONMENT RESTORED RET ; PCHAR: ;PRINT A CHARACTER PUSH H! PUSH D! PUSH B; SAVED MVI C,TYPEF MOV E,A CALL BDOS POP B! POP D! POP H; RESTORED RET ; CRLF: MVI A,CR CALL PCHAR MVI A,LF CALL PCIC CHARACTERS CR EQU 0DH ;CARRIAGE RETURN LF EQU 0AH ;LINE FEED ; ; FILE CONTROL BLOCK DEFINITIONS FCBDN EQU FCB+0 ;DISK NAME FCBFN EQU FCB+1 ;FILE NAME FCBFT EQU FCB+9 ;DISK FILE TYPE (3 CHARACTERS) FCBRL EQU FCB+12 ;FILE'S CURRENT REEL NUMBER FCBRC EQU FCB+15 ;FILE'S RECORD COUNT (0 TO 128) FCBCR EQU FCB+32 ;CURRENT (NEXT) RECORD NUMBER (0 TO 127) FCBLN EQU FCB+33 ;FCB LENGTH ; ; SET UP STACK LXI H,0 DAD SP ; ENTRY STACK POINTER IN HL FROM THE CCP SHLD OLDSP ; SET SP TO LOCAL STACK AR LINE POSITION JC FINIS ;CARRY SET BY GNB IF END FILE MOV B,A ; PRINT HEX VALUES ; CHECK FOR LINE FOLD MOV A,L ANI 0FH ;CHECK LOW 4 BITS JNZ NONUM ; PRINT LINE NUMBER CALL CRLF ; ; CHECK FOR BREAK KEY CALL BREAK ; ACCUM LSB = 1 IF CHARACTER READY RRC ;INTO CARRY JC FINIS ;DON'T PRINT ANY MORE ; MOV A,H CALL PHEX MOV A,L CALL PHEX NONUM: INX H ;TO NEXT LINE NUMBER MVI A,' ' CALL PCHAR MOV A,B CALL PHEX JMP GLOOP ; FINIS: ; END OF DUMP, RETURN TO CCP ; (NOTE HAR RET ; ; PNIB: ;PRINT NIBBLE IN REG A ANI 0FH ;LOW 4 BITS CPI 10 JNC P10 ; LESS THAN OR EQUAL TO 9 ADI '0' JMP PRN ; ; GREATER OR EQUAL TO 10 P10: ADI 'A' - 10 PRN: CALL PCHAR RET ; PHEX: ;PRINT HEX CHAR IN REG A PUSH PSW RRC RRC RRC RRC CALL PNIB ;PRINT NIBBLE POP PSW CALL PNIB RET ; ERR: ;PRINT ERROR MESSAGE ; D,E ADDRESSES MESSAGE ENDING WITH "$" MVI C,PRINTF ;PRINT BUFFER FUNCTION CALL BDOS RET ; ; GNB: ;GET NEXT BYTE LDA IBP CPI 80H JNZ G0 ; READ ANOTHER BUFFER ; ; CALL DISKR ORA A ;ZERO VALUE IF READ OK JZ G0 ;FOR ANOTHER BYTE ; END OF DATA, RETURN WITH CARRY SET FOR EOF STC RET ; G0: ;READ THE BYTE AT BUFF+REG A MOV E,A ;LS BYTE OF BUFFER INDEX MVI D,0 ;DOUBLE PRECISION INDEX TO DE INR A ;INDEX=INDEX+1 STA IBP ;BACK TO MEMORY ; POINTER IS INCREMENTED ; SAVE THE CURRENT FILE ADDRESS LXI H,BUFF DAD D ; ABSOLUTE CHARACTER ADDRESS IS IN HL MOV A,M ; BYTE IS IN THE ACCUMULATOR ORA A ;RESET CARRY BIT RET ; ; STACK AREA DS 64 ;RESERVE 32 LEVEL STACK STKTOP: ; END OPENF CALL BDOS ; 255 IN ACCUM IF OPEN ERROR RET ; DISKR: ;READ DISK FILE RECORD PUSH H! PUSH D! PUSH B LXI D,FCB MVI C,READF CALL BDOS POP B! POP D! POP H RET ; ; FIXED MESSAGE AREA SIGNON: DB 'FILE DUMP VERSION 1.4$' OPNMSG: DB CR,LF,'NO INPUT FILE PRESENT ON DISK$' ; VARIABLE AREA IBP: DS 2 ;INPUT BUFFER POINTER OLDSP: DS 2 ;ENTRY SP VALUE FROM CCP ;; Multi-Purpose North Star CP/M Disk Utility ; ; Primary function is to dump the contents of the ; CP/M Directory in a formatted Hexadecimal fashion. ; It shows Filename, Extent, and CP/M Blocks owned by the file. ; This function applies to diskettes and Hard Disk. ; ; Invoke from CCP with: DIRDUMP ; which will show all files, or: DIRDUMP filename.ext ; which will show only filenames which match. ; ; Upon completion of the dump, the secondary function ; of converting decimal sector numbers tfile had the error and its surrounding ; block numbers (which can be translated to sector numbers). ; You could now use DOS or the skeleton disk access code ; (illustrated below) to inspect the surrounding sectors ; to assess the damage (also use COPY's surface check facility). ; Note to N-Drive owners, sector numbers reported by the BIOS ; for D or Q diskettes must be hand translated by dividing the ; the track number by 4 on side 1 (side 2 is too complicated.) ; ; ; This source code contains an ------- ; ORG 100H ;USUAL COM FILE ORIGIN START JMP LOADDIR ;GO LOAD DIRECTORY INTO RAM ; ; ; ; ;**************************************************** ;****** ILLUSTRATION OF HOW TO USE THE DISK DRIVER IN ; THE BIOS FOR DOS STYLE I/O (UP TO FULL TRACK) ;****** THIS CODE HAS NOTHING TO DO WITH THE REST OF ; THIS PROGRAM - IS SHOWS THE ACCESS TO THE ; DISK DRIVERS AS FORMAT,COPY,SYSGEN DO IT. ; LXI D,30H ;OFFSET TO RTCOM ENTRY POINT-3 LHLD 1 ;ADDRESS OF BIOS(+3) DAD D ;ADD - NOW HLSETUP: ;SET UP FILE ; OPEN THE FILE FOR INPUT XRA A ;ZERO TO ACCUM STA FCBCR ;CLEAR CURRENT RECORD ; LXI D,FCB MVI C,OPENF CALL BDOS ; 255 IN ACCUM IF OPEN ERROR RET ; DISKR: ;READ DISK FILE RECORD PUSH H! PUSH D! PUSH B LXI D,FCB MVI C,READF CALL BDOS POP B! POP D! POP H RET ; ; FIXED MESSAGE AREA SIGNON: DB 'FILE DUMP VERSION 1.4$' OPNMSG: DB CR,LF,'NO INPUT FILE PRESENT ON DISK$' ; VARIABLE AREA IBP: DS 2 ;INPUT BUFFER POINTER OLDSP: DS 2 ;ENTRY SP VALUE FROM CCP ;o CP/M block ; numbers or vice versa may be performed. ; This facility is most useful if COPY discovers errors ; and you wish to locate the damage to assess bad files. ; ; For Example: A CRC error is reported in sector 047 ; When prompted, enter S47 and this program will tell ; you that CP/M Block xx contains sectors 042 & 047, ; where block xx = 0C (if D diskette) or 06 (if Q diskette) ; or 03 if an N-Diskette. ; ; You may now look for block xx in the directory dump listed ; to determine which additional feature: ; The calling sequence to the DOS style Disk Driver ; is illustrated so you could use it with DDT or ; write your own utility without having to revert to DOS. ; It accomodates Multiple Sector I/O (up to full track). ; ; PETER GOLITZEN - SEPTEMBER 1980 ; REVISED JULY 1981 to accomodate N-Series Diskettes ; ; Since this SOURCE program is rather bulky, you probably ; will want to erase it from your standard System Diskette. ; ;--------------------------------------------------- POINT TO RTCOM SHLD BJMP+1 ;PLANT IN CALL BELOW ;ENTRY POINT IS ESTABLISHED ; ;LOAD DESIRED PARAMETERS INTO THE REGISTERS AS FOLLOWS IOLOOP LXI H,0 ;HL=BUFFER ADDRESS MVI B,0 ;B=TRACK NUMBER (0-34,69 IF QUAD) MVI D,0 ;D=SECTOR NUMBER (0-9) MVI C,81H ;C=DRIVE NUMBER (1-4) + ;D7 (80H) IS DOUBLE DENSITY BIT. MVI A,1 ;NUMBER OF SECTORS (NOTE A+D MUST BE ;<=10, I.E. ALL I/O IS ON ONE TRACK) MVI E,1 ;OPERATION - 0=WRITE, 1=READ, 2=VERIFY BJMP CALL 0 ;ENTRY POINT PLANTED IN HERE CALL 38H ;HANDY RETURN TO DDT JMP IOLOOP ;LOOP TO ACCESS AGAIN ;****** END OF ILLUSTRATION OF HOW TO ACCESS BIOS DISK DRIVERS ;-------------------------------------------------------------- ; ; DDDD III RRRRR DDDD U U M M PPPPP ; D D I R R D D U U MM MM P P ; D D I R R D D U U M M M P P ; D D I RRRRR D D U U M M PPPPP ; D D I R R D D U U M M P ; D D I R R D D U U M FIELDS ; ;INITIALIZE LOOP CURSOR LXI H,BUFBASE-32 ;PREP TO RUN THRU BUFFER SHLD BUFCUR ;INIT CURSOR ; ;SELECT DRIVE (IF NOT DEFAULT) LDA DFCB ;GET SPECIFIED DRIVE (IFF NE 0) ORA A ;SKIP SELECT-DISK IF 0 JZ RESTART ;DEFAULT FCB ALREADY REQUESTED LOG'D DRIVE MOV E,A ;MAKE DEFAULT DRIVE DCR E ;CONVERT TO ZERO-ORIGIN MVI C,14 ;"LOG-ON" REQUEST CALL BDOS ;NOW REQUESTED DRIVE IS CURRENT ; ; ;*** PREPARE TO LOAD MATCHED ENTRIES INTO BUFFER RESTART MVI C,17 ;GET FIRST FCB FROM DIRECTORY B LXI D,DFCB CALL BDOS CPI 0FFH ;IF END OF DIRECTORY JZ GETDONE ;ALL DONE WITH GET MIDLOOP RRC ;MULTIPLY BY 32 RRC ;WITH 3 ROTATE RIGHT RRC ;SHORT WAY AROUND ADI 80H ;DMA AREA AT 80 MOV E,A ;POINT DE @ FCB IN DMA AREA MVI D,0 LDAX D ;INSPECT FIRST BYTE ORA A ;IF D7 IS ON, FILE IS ERASED JM GETLOOP ;WAS ON, BYPASS LHLD BUFCUR ;GET BUFFER CURSOR LXI B,32 ;ADVANCE 32 & ALSO SET C=COUNT=32 DAD B ;PRE-ADVANCE BUFFER CURSOR SHLD BUFCUR ;UPDATE CURSOR XCHG ;REVERSE SRC & DEST OF LEAD BLANKS) JNC CNTD ;LOOP MVI M,'0' ;MAKE 0 JMP CNTD ; ;***** DONE WITH DIRECTORY ACQUISITION ; ; ; ; ; ; ; ;***************************************** ;***** PRINT THE FCB'S IN THE BUFFER ***** GETDONE NOP LXI D,TITLES ;PRINT HEADER MVI C,9 CALL BDOS ; REPRINT LXI H,BUFBASE ;INIT CURSOR ; ;LOOP TO PRINT ALL FCB'S PRTLOP CALL FCBPRT ;USE PRINT ROUTINE BELOW LHLD BUFCUR ;ADDR OF LAST FCB READ XCHG LHLD PRTCUR ;VERSUS PRINT BUFFER PTR MOV A,L ;CHECK IF EQUAL CMP E ;COUNT EIGHT BYTES MAX CALL MOVER ;GET 8 BYTES MOVED BAKBL DCX D ;BACK UP PRINT CURSOR LDAX D ;GET LAST BYTE CPI ' ' ;IF BLANK JZ BAKBL ;KEEP BACKING UP OVER BLANKS INX D ;RETURN TO LAST BLANK MVI A,'.' ;STAGE A PERIOD STAX D ;PLANT AFTER FILENAME INX D ;DE TO WHERE EXTENSION GOES LXI B,9 ;OFFSET TO FILENAME EXTENSION LHLD PRTCUR ;REFRESH FCB ADDRESS DAD B ;HL@EXTENSION MVI C,3 ;THREE BYTES CALL MOVER ;MOVE EXTENSION LXI D,PRTEXT ;EXTENT NUMBER ;NOTE HL @ EXTENT NUMBER CALL H M P ; DDDD III R R DDDD UUUUUU M M P ; ; ;********************************************** ;***** READ ENTIRE DIRECTORY INTO BUFFER ***** ; LOADDIR LXI H,0 ;SAVE CCP STACK POINTER DAD SP ;HL=CCP SP SHLD CCPSP ;STASH AWAY LXI SP,STACK ;USE OUR OWN STACK ; ;FILL OUT WITH ? DEFAULT FCB TO REQUEST ALL EXTENTS MVI A,'?' ;GET ALL EXTENTS LXI H,68H ;EXTENT NUMBER IN DEFAULT FCB MOV M,A ;PICK UP ALL EXTENTS INX H ! MOV M,A ! INX H ! MOV M,A INX H ! MOV M,A ;IN ALL OVERFLOW LXI D,DFCB ;DEFAULT FCB PROVIDES PATTERN CALL BDOS ;GIT IT CPI 0FFH ;IF NONE RETURNED, JNZ MIDLOOP ;FOUND ONE, ENTER LOOP BELOW ; ;NO FILES MATCHED, COMPLAIN, THEN PROCESS ALL (AS IF *.*) LXI D,NOFMSG MVI C,9 ;TELL USER CALL BDOS LXI D,DFCB+1 ;PREPARE TO SMEAR FILENAME LXI H,DFCB ;& USER WITH ?????????.??? MVI M,'?' ;PLANT ? IN USER-BYTE MVI C,11 ;11 BYTES NAME CALL MOVER JMP RESTART ;START ABOVE ; ;LOOP LOADS BUFFER WITH ALL ACCEPTABLE FCB'S GETLOOP MVI C,18 ;ASK FOR NEXT FC REGS CALL MOVER ;NOW MOVE FCB INTO HUGE BUFFER LXI H,FCBCT+2 ;DECIMAL ASCII NUMBER CALL CNTD ;COUNT FCB'S DECIMAL-ASCII-NUMBER JMP GETLOOP ;REPEAT UNTIL END ; ;THE USUAL MOVE ROUTINE MOVER MOV A,M ;GET BYTE STAX D ;PUT BYTE INX H ! INX D DCR C JNZ MOVER RET ; ;ASCII DECIMAL COUNTER (COUNTS FCB'S LOADED) CNTD INR M ;BUMP DIGIT MOV A,M ;SEE IF OVERFLOW CPI ':' RC ;NOPE, DONE MVI M,'0' ;RESET TO 0 DCX H ;ADVANCE TO NEXT DIGIT MOV A,M ;SEE IF WAS <0 CPI '0' ;(TAKES CARE JNZ CURNE MOV A,H CMP D CURNE JZ PRTDONE LXI D,32 ;ADVANCE TO NEXT FCB DAD D JMP PRTLOP ; ;****** PRINT A DIRECTORY ENTRY (FCB) SUBROUTINE ****** FCBPRT SHLD PRTCUR ;SAVE FCB ADDRESS XCHG ;INTO DE LXI H,PRTBUF ;BLANK BUFFER MVI A,LPRTBUF BLKLOP MVI M,' ' ;BLANK IT INX H DCR A JNZ BLKLOP ; ;PRINT BUFFER NOW BLANKED, COPY IN FILENAME XCHG ;FCB CURSOR BACK INTO HL LXI D,PRTBUF-1 ;INIT BUFFER CURSOR CALL HEXNZ ;DISPLAY USER CODE INX D ;ADD BLANK BEFORE FILENAME MVI C,8 EX ;OUTPUT A HEX DIGIT CALL HEXNZ ;OUTPUT IF NON-ZERO CALL HEXNZ ;OUTPUT BYTE 14 IF NZ CALL HEXNZ ;OUTPUT BYTE 15 IF NZ INX D ;MOVE D ALONG INX D ;TO EXTENT DISPLAY MVI C,16 ;DO 16 BYTES XPLOP CALL HEXNZ DCR C JNZ XPLOP ; ;PRINT THE LINE FORMULATED LXI D,PRTLIN ;NOW DO PRINT MVI C,9 CALL BDOS RET ;BACK TO CALLER ;****** END OF FCBPRT SUBROUTINE ********************** ; ; ; ;DIRECTORY IS NOW PRINTED, REPORT COUNT PRTDONE LXI D,ENDMSG ;SHOW FCB COUNT MVI C,9 CALL BDOS ; ; ; ; ; ; ; ;****************************************************** ; PROMPT FOR SECONDARY FUNCTIONS ; (SECTOR-TO-BLOCK OR BLOCK-TO-SECTOR CONVERSIONS) ;ASK WHAT TO DO NOW? NOWHAT LXI D,DOWHATMSG ;ASK WHAT NOW MVI C,9 CALL BDOS ; LXI D,USERRESP ;ADDRESS USER RESPONSE MVI C,10 ;GET LINE FROM CONSOLE CALL BDOS LXI H,USERRESP+1 ;EXAMINE RESPONSE MOV E,M ;GET LENGTH (-1) DCR E ;LEAVE IN E FOR LATER USE JM BADIN ;IF WAS 0, NOW MINUS, ASK AGAIN ;NOTE - CONTROL-C REBOOT'S DIRECTLY FR JC BADIN ;IF CY ON, REJECT DCR E ;SEE IF ONE BYTE JZ GOTB ;WE GOT BLOCK DCR E ;CHECK FOR ONLY TWO BYTES JNZ BADIN ;REJECT IF OVER 2 BYTES RLC ! RLC ! RLC ! RLC ;PUT LEAD DIGIT IN FRONT MOV B,A ;GET IT OUT OF THE WAY CALL HEXIN ;GET ANOTHER DIGIT JC BADIN ;BAD IF C ORA B ;MASH THE TWO DIGITS TOGETHER GOTB STA BLOCK ;GOT THE BLOCK NUMBER JMP SHOWB ;GO SHOW THE BLOCK ; ;EDIT AND CONVERT A HEXADECIMAL DIGIT FROM ASCII STRING HEXIN INX H ;ADVANCE INPUT STRING CURSOR MOV A,M ;GET DIGIT DECIN ;USE ASCII-TO-DECIMAL ROUTINE JC BADIN ;IF CY ON, REJECT DCR B ;COUNT DOWN LENGTH JNZ DECLOP ;LOOP THRU INPUT STRING ;NOW WE HAVE SECTOR NUMBER, CONVERT IT TO BLOCK LXI B,-10 ;DIVIDE BY 10 CALL DIVIDE ;USE DIVIDE ROUTINE BELOW ;AFTER DIVIDE, DE=QUOTIENT(TRACK), HL=REMAINDER(SECTOR) MOV A,E ;INSPECT TRACK NUMBER DCR E ;REMOVE 2 FROM TRACK NUMBER DCR E ;SINCE 0&1 ARE SYSTEM TRACKS CPI 2 ;IF TRACK 2 OR HIGHER JNC CVTKB ;TRACK# IS OKAY LXI D,MSYST ;TRACK 0 & 1 ARE SYSTEM TRACKS L DISKTYPE ;DETERMINE BLOCK SIZE (1,2,4K) SUI 2 ;NOW A=1,2,3 CORRESPONDINGLY MOV B,A ;PLACE ITERATION COUNT IN B POP H ;RESTORE KILOBYTE NUMBER DAD H ;PRE-COMPENSATING LEFT SHIFT ;RIGHT SHIFT LOOP RSHFTL MOV A,H ;SLIDE HIGH BITS DOWNWARD ORA A ;CLEAR CARRY RAR MOV H,A ;PUT HIGH BYTE BACK MOV A,L ;DO LOW DIGIT RAR ;PICK UP BIT FROM HI BYTE MOV L,A DCR B ;COUNT POWER OF TWO IN BLOCKSIZE JNZ RSHFTL STA BLOCK ;;A=ONE BYTE BLOCK NUMBER MOV A,H ;CANNOT HANDLE BLOCKS>256 ORA A ;CHERCVD INTO E MVI D,0 ;SIGN EXTEND TO 16 BITS DAD D ;ADD IN LAST DIGIT XCHG ;LEAVE IN DE POP H ;RESTORE CURSOR RET ;BACK TO CALLER ; ;***** SHOW ALL SECTORS IN THE CP/M BLOCK SHOWB LXI H,BLOCK ;POINT TO BLOCK NUMBER LXI D,BMBLK ;MSG RECEIVING AREA CALL HEX ;CONVERT BYTE@HL TO HEX LXI H,BMSEC ;SECTOR AREA OF MESSAGE MVI B,40 ;COUNT BLLOP MVI M,' ' INX H DCR B JNZ BLLOP ;BLANK LOOP ;VECTOR UPON BLOCKSIZE (1,2, OR 4K) CALL DISKTYPE ;DETERMINE IF D,Q, OR N LHLD BLOCK ;STAGE BLOCOM BDOS INX H ;EXAMINE FIRST BYTE MOV A,M ;GET FIRST BYTE ANI 5FH ;MAKE UPPER CASE LETTER CPI 'R' JZ REPRINT ;REPEAT ABOVE LIST CPI 'S' ;REQUEST TO XLAT SECTOR# JZ STOB ;XLAT SECTOR TO BLOCK CPI 'B' ;REQUEST TO XLAT BLOCK# JZ BTOS ;XLAT BLOCK TO SECTOR CPI 'X' ;X=EXIT JZ CCPEX ;EXIT TO CCP BADIN LXI D,BADINMSG ;TELL USER UNRECOGNIZED MVI C,9 CALL BDOS JMP NOWHAT ;DID NOT RECOGNIZE REQUEST ; ;BLOCK-TO-SECTOR REQUEST, CAPTURE HEX BLOCK NUMBER BTOS CALL HEXIN ;GET FIRST DIGIT FROM STRING SUI '0' ;REMOVE ASCII BIAS RC ;IF <'0', EXIT WITH CY ON CPI 'G'-'0' ;IF >'F' CMC ;EXIT WITH CY ON RC CPI 10 ;IF 0-9 CMC ;WERE DONE, SO EXIT RNC ;WITH CARRY OFF CPI 17 ;IF WAS ':' TO '@' RC ;ERROR WITH CY ON SUI 7 ;REMOVE 'A' BIAS RET ;DONE ; ; ;REQUEST WAS TO CONVERT SECTOR-TO-BLOCK STOB MOV A,E ;GET LENGTH SPEC ORA A ;CHECK IF 0 JZ BADIN ;NO GOOD CPI 5 ;MUST BE 1 TO 4 DIGITS JNC BADIN MOV B,A ;COUNT LENGTH IN B LXI D,0 ;INIT NUM TO ZERO DECLOP CALLMVI C,9 ;TELL USER NOT IN CP/M'S SPACE CALL BDOS JMP NOWHAT ;ASK AGAIN ;CONVERT TO "KILOBYTE NUMBER" CVTKB MOV A,L ;DE-SKEW SECTOR NUMBER CPI 5 ;IF SECTORS, 5-9 JC NOT59 ;SKIP IF NOT SUI 5 ;MAKE INTO 0-4 NOT59 EQU $ ;NOW A=0-4 A "KILOBYTE NUMBER" MOV L,E ;NOW HL AND DE ARE TRACK NUMBER DAD H ;HL=TRK*2 DAD H ;HL=TRK*4 DAD D ;HL=TRK*5 "OTHER PART OF KILOBYTE NUMBER" MOV E,A ;SECTOR COMPONENT OF KILOBYTE NUMBER DAD D ;NOW HL=KILOBYTE NUMBER PUSH H ;SAVE "THE KILOBYTE NUMBER" CALCK NOW ZERO JNZ BADIN ;NO, REJECT INPUT JMP SHOWB ;GO SHOW ENTIRE BLOCK ; ; ;VALIDATE DECIMAL ASCII DIGIT, MULTIPLY DE * 10 AND ADD DIGIT DECIN INX H ;ADVANCE CURSOR MOV A,M ;GET BYTE SUI '0' ;REMOVE ASCII BIAS RC ;ERROR RETURN WITH CY ON CPI 10 ;IF >10 CMC ;FLIP CARRY RC ;ERROR RETURN WITH CY ON PUSH H ;SAVE STRING CURSOR XCHG ;PREVIOUS CUMULATIVE RESULT DAD H ; *2 MOV D,H ; COPY *2 TO DE MOV E,L DAD H ; *4 DAD H ; *8 DAD D ; ADD *2 TO MAKE *10 MOV E,A ;LAST DIGIT K NUMBER JC BLK1K ;D=1K, SKIP AHEAD DAD H ;CVT BLOCK TO 2KB VALUE JZ BLK2K ;Q=2K, SKIP AHEAD DAD H ;N=4K, MAKE INTO 4KB VALUE INX H ! INX H ! INX H ;;DO +3 FIRST CALL MAKSECT ;DO FOURTH KILOBYTE CALL MAKSECT ;AND THIRD KILOBYTE DCX H ;NEED THIS TO FALL BELOW BLK2K INX H ;DO SECOND KILOBYTE FIRST CALL MAKSECT BLK1K CALL MAKSECT ;SHOW THE FIRST KILOBYTE ;WRAP IT UP BY SENDING MESSAGE LXI D,BMSG ;SEND MESSAGE MVI C,9 CALL BDOS JMP NOWHAT ;LOOP AND ASK FOR MORE INPUT ; ; ;DETERMINE DISK TYPE - DOUBLE OR QUAD OR N-SERIES DISKTYPE MVI C,31 ;ASK CPM FOR DPB VECTOR CALL BDOS INX H ;ADVANCE TO BSH FACTOR INX H ;THIRD BYTE IN DPB MOV A,M ;EXPECT 3,4, OR 5 CPI 4 ;CY=1K, Z=2K, NC&NZ=4K RET ;LET USER EXAMINE TRICHOTOMY ; ; ;WIERD BINARY TO DECIMAL CONVERSION ;OF KILOBYTE NUMBER TO SECTOR NUMBER MAKSECT PUSH H ;SAVE INPUT NUMBER LBMSEC EQU 30 ;LENGTH OF MOVE LXI D,BMSODD+LBMSEC ;SLIDE UPWARD ALL PRIOR RESULTS LXI H,BMSEC+LBMSEC ;FROM RIGHT END OF MESSAGE MVI B,30 +9 LXI B,-10 ;NOW DIVIDE TRACK NUMBER CALL DIVIDE MOV A,L ;LOW DIGIT OF TRACK# IS ADI 30H ;APPLY ASCII BIAS STA BMSEC+3 ;TEN'S DIGIT OF SECTOR# STA BMSEC+8 MVI D,'1' ;INIT 1000'S DIGIT TO ONE MOV A,E ;HIGH DIGIT SUI 10 ;IS THERE A THOUSANDS DIGIT JNC THOU1 ;YES, IS 1000+ MVI D,' ' ;NO, RESET 1000'S DIGIT TO BLANK MOV A,E ;RE-STAGE HUNDRED DIGIT THOU1 ADI 30H STA BMSEC+2 ;STORE HUNDREDS DIGIT STA BMSEC+7 MOV A,D ;STAGE 1000'S DIGIT STA BMSEC+1 STA BMSEC+6 POP H ;RECOVER OISOR JC DIVSOK ;IF C, SUBTRACT WAS OK POP H ;TRY FAILED, RESTORE TRIAL DCR A ;COUNT DOWN JNZ DIVLOOP ;LOOP BACK RET ;EXIT DIVSOK INX SP ;LEAVE HL, SO KILL THE INX SP ;SAVED JUNK ON THE STACK INX D ;PLANT A ONE IN THE QUOTIENT DCR A ;COUNT DOWN JNZ DIVLOOP ;LOOP BACK RET ;EXIT ;HL=REMAINDER, DE=QUOTIENT ; ; ; ;****** CONVERT BYTE @HL TO HEX ****** ; HEXNZ IF BYTE=0, ADVANCES CURSORS (LEAVES BLANK) HEXNZ MOV A,M ;STAGE SOURCE BYTE INX D ;ASSUME ONE BYTE LEAD BLANK ORA A ;TEST' JC RHOK ADI 7 RHOK STAX D INX D ;LEAVE DE ADVANCED INX H ;BUMP SOURCE CURSOR RET ;DONE ; ; CCPEX LXI SP,0 ;RESTORE CCP'S STACK CCPSP EQU $-2 RET ;EXIT ; ; ; ;****** WORKING STORAGE - VARIABLES ****** BLOCK DB 0 ;CPM'S BLOCK NUMBER DB 0 ;ALLOW LHLD ; ; PRTCUR DS 2 ;PRINT LOOP CURSOR BUFCUR DS 2 ;DIRECTORY BUFFER CURSOR ; ;USER RESPONSE BUFFER USERRESP DB 20,0 DS 20 ;MESSAGE RECEIVING AREA ; ; ;***** MESSAGE TEXTS ********************************** TITLES DB 0DH,0AH,0A 'Enter B and a hex Block Number "B2A" or' db 0dh,0ah db 'Enter R to reprint dir.dump, X to exit: $' BADINMSG db 0dh,0ah db 'Incorrect - Unrecognized Input$' MSYST db 0dh,0ah db 'Sectors 0 to 19 are in the system track area' db 0dh,0ah db 'They are not accounted for as a CP/M BLOCK$' ; ; ;PRINT LINE STAGING AREA FOR DIRECTORY PRINT PRTLIN DB 0DH,0AH PRTBUF DS 15 PRTEXT DS 11 ;EXTENT AREA DS 51 ;BLOCK NUMBERS LPRTBUF EQU $-PRTBUF DB '$' ;TERMINATOR ; ; ;PRINT LINE STAGING AREA FO;THREE SETS OF SECTOR NUMBERS RLMOVL DCX H ! DCX D ;RIGHT-TO-LEFT MOVE LOOP MOV A,M ;NOTE PRE-DECREMENT STAX D DCR B JNZ RLMOVL POP H ;RECOVER NUMBER PUSH H ;KEEP A COPY ;BEGIN SUCCESSIVE DIVISIONS LXI D,10 ;OFFSET 10KB FOR SYSTEM TRACKS DAD D ;=20 SECTORS LATER XCHG ;TO DE FOR DIVISION LXI B,-5 ;DIVIDE BY 5 CALL DIVIDE ; E=TRACK, L=SECTOR MOV A,L ;FIDDLE WITH SECTOR NUMBER ADI 30H ;ADD ASCII BIAS STA BMSEC+4 ;SECTOR DIGIT INTO MESSAGE ADI 5 ;SECOND SECTOR SKEWED STA BMSECRIGINAL NUMBER DCX H ;HANDY TO REDUCE BY ONE RET ;DONE ; ; ; ; ;***** DIVIDE ROUTINE (UNSIGNED 8080) ***** ; ENTER WITH DIVISOR (NEGATED) IN BC, AND DIVIDEND IN DE DIVIDE LXI H,0 ;SIGN EXTEND TO 32 BIT DIVIDEND MVI A,16 ;LOOP COUNTER DIVLOOP DAD H ;LEFT SHIFT DIVIDEND XCHG ;PUT LOW HALF IN HL DAD H ;LEFT SHIFT LOW HALF JNC DIVNOPR ;NO CARRY TO PROPOGATE INX D ;YES, PROP INTO DE DIVNOPR XCHG ;NOW PUT HIGH HALF INTO HL PUSH H ;SAVE BEFORE TRIAL SUBTRACT DAD B ;TRY SUBTRACTING DIV IF NZ JNZ HEX ;NZ, GO SHOW HEX DIGIT INX D ;Z, WAS ZERO, LEAVE BLANK INX D ;IN ALL THREE BYTES INX H ;LEAVE INPUT CURSOR ADVANCED RET ; ;ENTER HERE IF ZERO-SUPPRESS NOT WANTED HEX MOV A,M ;REFETCH BYTE ANI 0F0H ;PICK LEFT NYBBLE RRC RRC RRC RRC ADI '0' ;ADD ASCII BIAS CPI ':' ;IF 0-9 JC LHOK ;LEFT HEX IS OK ADI 7 ;ADD MORE TO MAKE A-F LHOK STAX D ;PLANT BYTE INX D ;TO RIGHT DIGIT MOV A,M ;REFRESH SOURCE BYTE ANI 0FH ;PICK RIGHT NYBBLE ADI '0' ;ADD ASCII BIAS CPI ':H DB 'User- FileName-EXTENT -#of - BLOCK NUMBERS' DB ' ALLOCATED TO FILE (in Hex)' DB 0DH,0AH DB ' -Number -RECS- 1- 2- 3- 4- 5- 6- ' DB '7- 8- 9-10-11-12-13-14-15-16' DB 0DH,0AH,'$' ENDMSG DB 0DH,0AH,0AH DB 'TOTAL FCBs listed = ' FCBCT DB ' 0',0dh,0ah DB 'Directory Capacity is 64 (Hard Disk is 256)' db 0DH,0AH,'$' NOFMSG DB 0DH,0AH DB 'No Files Matched, will show ALL FILES$ ' DOWHATMSG DB 0DH,0AH db 'Enter S and a decimal Sector Number "S349" or' db 0dh,0ah dbR BLOCK-SECTOR DISPLAY ; BMSG DB 0DH,0AH,0AH DB 'CP/M BLOCK ' BMBLK DB 'XX CONTAINS SECTORS ' BMSEC DS 10 BMSODD DS 10 BMSND DS 20 ;ADDED FOR N-DRIVES 4K BLOCKS DB 20H,0AH,'$' ; ; ;PAGE ZERO CP/M DEFINITIONS BDOS EQU 5 DFCB EQU 5CH ; DS 100 ;STACK AREA STACK DS 1 ; ORG ($+100H) AND 0FF00H ;ROUND TO PAGE BUFBASE DS 2048 END START  PRTEXT DS 11 ;EXTENT AREA DS 51 ;BLOCK NUMBERS LPRTBUF EQU $-PRTBUF DB '$' ;TERMINATOR ; ; ;PRINT LINE STAGING AREA FO>FORMAT VERSION 1.1 COPYRIGHT,1981 NORTH STAR COMPUTERS,INC.E! 2u!Dz!nQz!2zX!Sz!D9D~2w#"}!'Fڽ2v02:v@:wʽ@:vD:uNf½*} D:u!EQ!"NA!%"{!c 6# *0"y!|4F:{I!c 7> x*%!c 6# OO:uSh!c 7> x!c 6 # ||!":w2!ʲ!^"!²!@"!!7!c >xDj !k~> #~`_ ~# NOT format Quad-Capacity *** CPMGEN was told that Drive is NOT Quad$ *** ERROR - BAD DRIVE NUMBER$ *** ERROR - Only N=NINE Format Permitted since CPMGEN was told drive is N-TYPE$ *** ERROR - N Format cannot be done since CPMGEN was not told drive is N-TYPE$ Select one of the format options below: D = Double-Density Single-Sided = D Q = Quad-Capacity (Double-Sided)= Q S = Single-Density = S X = eXit - Warm Boot from A: = X Enter option letter (D,Q,S,X): $ - Proceeding to FoCPM DATADATASEC1DATASEC2DATASEC3DATASEC4........UAD.CAPDOUBLE-DNINE-CAP CP/M 2.2 XXXXXXXXDISKETTECPM FROMNORTH * STAR ---------SYSTEM--TRACKS-BIOS USER CPM CCP CPM BDOS --------DIR.SEC1DIR.SEC2DIR.SEC3DIR.SEC4--------<COPY VERSION 1.1 COPYRIGHT,1981 NORTH STAR COMPUTERS,INC.1*!0" !~2V@w"X!"###""![ U#n2 2 ! n#ҷF°>2 !T#n÷>n>2 ! n :\: : ,:  x!d d! dx,: *  !d dx : * Sx!Id!d! dx!kd!d! ~2 #!: „!0: <ʄ!A! ʸQNʫDn: n: n)): n): n)}2 !35 # F!701!60{222""tar CP/M 2.2 Diskette Copier (ver 1.1) Copies Double-Density Diskettes (DQ capacities) $ Mount the Diskettes to be processed and- Enter INPUT Drive number(1-4): Or Mount System Diskette and RETURN to Exit: $ To Surface Check Only, Enter "N", To Verify-Compare two diskettes, Enter "V", To Copy, Enter OUTPUT Drive number(1-4): $ Enter SECOND INPUT Drive number(1-4): $ Proceeding to copy xxx track diskette $ Surface-Checking (read & CRC check) xxx track diskette $ Verifying-Comparing two xA 11? when ready,$ Diskette Successfully Initialized $ Enter Drive number(1-4): $ To format as: Nine-Capacity Diskette: $ To format as: Quad-Capacity Diskette: $ To format as: Double-Density Diskette: $ To format as: Single-Density Diskette: $ *** ERROR - Canrmat 35 * Tracks - $ - Proceeding to Format 70 * Tracks -... $ - Proceeding to Format 160 * Tracks...$ y (Double-Si)= QQUAD.CAPDOUBLE-DNINE-CAP CP/M 2.2 XXXXXXXXDISKETTECPM FROMNORTH * STAR ---------SYSTEM--TRACKS-BIOS USER CPM CCP CPM BDOS --------DIR.SEC1DIR.SEC2DIR.SEC3DIR.SEC4--------"z2 : : ~>2 !" ]: G: gx2 5: ʠ: Š>!2 " : O: G>  ! 4* : =Xà]: G: gx2 ‘* }. : ¿ : <¿ :  <B nF nO$O~#: O!> A*15?0G*O~ =怰HG++~ K@>2!" !O@z: 2 V* |g: ʠ>"Ҝ#<àxG> ҫ2 #~}#<: 2      North Sxx track diskettes $ Verification/Comparison: $ Surface Check: $ Copy: $B Input is CP/M Quad-Capacity Diskette Enter RETURN for normal two-sided$ Input is CP/M Single-Sided Diskette Although Q will Force two-sided process, Enter RETURN for normal one-sided$C Input is not recognized as CP/M Diskette Enter D for one-side or RETURN or Q for two-sided$ Input is CP/M Quad Diskette BUT drive(s) not two-sided per CPMGEN, D Forces processing ONLY one-sided$ Input is CP/M Single-Sided Diskette Enter D or RETURN for one-sided$ Input lacks CP/M capacity code Enter RETURN or D for one-sided$$ Input is CP/M N-type Diskette Enter RETURN for N-type$ Input is not an N-type diskette Enter N to force an N-type$ Copy COMPLETE$ Surface Check COMPLETE$ Verify COMPLETE$ *** but ERRORS were FOUND & BYPASSED $ *** COPY ABORTED *** OUTPUT ERROR CANNOT BE FORCED $ Diskette is coded as N-type (F2 code), Must have N-series disk drives to process it$ N-tÖ1;SYSGEN 1.1COPYRIGHT,1980 NORTH STAR COMPUTERS,INC.*0"] X82 3:\yP}J!:#!+;#:[O!:>:[O!,>:[O !>:[O!> *+++5A?GO*~>2\yƁ2[P  ~# &&!::[O>:\:OS 2 Enter Destination Disk Drive number(1-4)- or RETURN to Cold-Boot from drive 1- or CONTROL-C to Warm-Boot ? $ Load output diskette in drive x and RETURN to !*#!4#:[O!> e$ If System RAM Image already in RAM (@1400H), Enter RETURN- To read System into RAM Image, Enter Drive number(1-4)? $ Load input diskette in drive x and RETURN to read CP/M system from it? $ North Star CP/M 2.2 Sysgen Any response of CONTROL-C causes Warm Boot $H 1*0" ڞ2 «>2 3:\O ë>2 :[O!*>&Y !!7ɯ7ɯ7ɯ7Sø!88$ h>J>>:=>x!F#   >@ RAM PARITY ERROR O!P&JP 5000 C $( P htH9@…p(!x(!D" " " * [ K x(!D" " " K [ *  ͩ 2 >>`'<::::::::: >!* ^^^^= QYz/{/F> >`> > q ʌÏp ͩ 2 ں@: ( Xs#Xs#Xs#Xs#Xs#Xs#Xs#Xs#(X R q EH>n! GR Rẍ́ LF>  %W:(>p! à :(2 !* W(o! write CP/M system onto it? $ N-Capacity drive cannot write on D or Q diskette$ Must put N-Capacity diskette in N-Capacity Drive$ If System RAM Image already in RAM (@1400H), Enter RETURN- To read System into RAM Image, Enter Drive number(1-4)? $ Load input diskette in drive x and RETURN to read CP/M system from it? $ North Star CP/M 2.2 Sysgen Any response of CONTROL-C causes Warm Boot $H 1*0" ڞ2 «>2 3:\O ë>2 :[O!*>Xx <47ɯ/>> >>>`/_> >>>@!T]<>>>7>7 !+~(>G^> >>>`x> >x>) ((xxP>7?7>k PX// ͩ 2 0: G(@2 x͌  Ó # # q ڌmR 8! lẍ́ `( ( x(~ ͸ x  ( x: P G (1x > > ͸P >~͸ 0 P*: > !>`+~+<(R 8>> ~+ #K~(>#~ :> 22> `` !:=k>)_: _ i> U>0  {>z >: >   >{ 0 >t! ͠ {s! |   0 ͭ {  (( >  :+2 y e> >C A>6 2 >>`=>U> >>` + %U  > /o w(x: R 0}y }2 [z@G: >w ɯ2 : 2 : A2 S S " " "" "!9" ** R8x  y >s }G ~22 : C!#w#/w ' $!( %") & # *#": 2 * #" : *8*2: =2  > !#w/#w: :G<8:<2x(2:2 * " * " *" : 2 :s,15(!"48>.G !G _#!~#fo{,25S= 8>>'!1 Aħ~ħ>(fnR>0ԧ-,̧V^!96rs66uV^!9ͧG2{,33>*= !eqѷ!"41qxG15D <! <>G> Y*3b3:/eG*0+R>":/O[0"0ox2/>eGm~>$~>/6ifn~>'?ͻtu!?!?6Nq~wN~ >)~=>6~>#͓|3B>'|(#~ 0>0zu{uGw͘p qHͬ>'V^yA\>fnV ^?ͻM#`͓-GJ |(Gu r sx- F Np q 6 fntu6 6 V^fnR#>2NB>1>-`iBDMapBRAfn~͞tux w oy!FN##x>0OèB< ~ R>RV^>>> *8R#DM::<2:*8R"8>2:!_"8\V^y\i  :.>Ͱ x2."2!"4~ 2.fn"2!"4# x O/G/O~w}<<<G>'~ 0͠<(-(, >͠<( >- >, x{y~   >ɯ ͒>͒*;#|+( yѷ>,>-*;#|S;!";0>zW:/G K( so>so! >!~ ͜R0!b3!.p5!2/"0!&hͤ!RBKM!9!#P !#9!222xdG26|*&h)!fn|>4#|+>xiM!:G>2[S=Sfn|+}+>2>25:%%:&1>7ɯ25*'<"f/n.xX:X>8*=[|s|o}s>9tu2>!)~2=66:>i}:= !+|¸z´2625Ͱ) 6#6 ixe8?0>!o&G! Gw2 O7: 2* " * " * ": 2 P y 8P g> {a y 8>  >|x> >|> >|>>g >_ 2!~4#0 ! 4 57! ͱ >kĆ( z  <DG(!~4#>r G(>q >|! ͱ * 2 : O([[** [ K  : G: G: !~4#! x > >>` * 45x ! x ! x ! ~4#8 !  x !4~#0! 4#45+5qFNVpqrwwwww/wwirr?ͻ!?:.( Ͳ4frsA\[2rs~ O:.w FNV^V^~ >)5?.ѷ!?rs!?666V^i4DMfn+|#>%([0R(J M`iy6i4FN x>&?.ѷV^ѷM?ͻ!?:.eG?.!? >:.eGmpqrsim~wiV^# 8 N!"4!xg:.G!"4!xg!^ͧ -!"4:.g~<( !R swͧ>^V ^ z>+>>ͳ* "BK[[R !#( x Bz>BK>ͳ*B"^sut^snf66*4*2!^zWK>*4R(*2!M"4y_>!*8"8::=2:6*8'''Wrs!\ fnR *8R(::=(!~w#~w:0O:1OͲ> ́:/GoK>soͲ> y08:0>  ́> s>!GͲ( >+>S6ʹ>'~>#:.i~>~wH:.i:.Bi:.Ai([?[M!:06(6'6*6)6+6-6,!"4!xg!xg?ͻ !? :.>>*V^tuR!!96666rs|(!"4!+(!9ɯ~>;y~ ~ | }(0fn# x ˯?.!?>y~ | }> x Ͳ>͔>AͲ>͔>ͣ>y0 8?Ox ؀'؁G~#O, 8ɯqxs# G!|7?ɷG!|7?#:# x ~#,? !?#_xF> # !"4:.g:.g!9~w~w:6w:7woyMMOxxG!9|29"726>5d 12*P qD$fZ| message code Cold Boot ?zկ ( :  Y 2r(Q0Mշļ -  wO#7wO#!u(<>  # *q>*sG :kOx25*o B8} /_8"oQL*m~z0"0#Gxg2j|DK>(x`*mo/G~vy %:+Լ0z *q vv25>?W$D$(>TW$0W$<$>DW$y?0W$<$>SW$ $D$( !$+6 T]͇$7 ",7 ,&"7w#͇$f$͇$ 7:/!$O:$o&>">25O#yu$}2$>"$2$~ !!>د2$>2/!"$ͯ":$  7*$":/2/y2$*!""!/:$O:$o&>"" :/"!:$ N # !%ͷ$@(Z_(( 02((O(O(r(' (p (q(.(((>$ ^>T͸%0>$> $>>@$>7>3ͷ$o&$ ( |%8=%8%8 ˸x > % 6 7x> %7o&9~8 <(+~07 $7% F&1D5&""!~-~(f(,~>=&&:#&z2;>J!"51N͑.!" :5!06ʺ(: >\ !5~6!-l(y͟'͑.(k/#" \(:DH252D:32 .̓G͑.&0g!z&k/!0_!0WoH##&##¼&yt&&HAC|6AD6ALJAR6AS6CPPCF@9CR:5DAV@DEC5DH`@DSyntax Output Device Sync Orette Available˒ Transfer To DOS Port CF MC on Boundary Full Expanded KeywordGO One Attribute Size Lockedͭ Text OnEnd of Exceeded Newing A Only Making Partial Block Execution Message ValueSingled:::: Unforeseen Yet ImplementedAre You Sure? AbortedWoStructure Contaminated Line LongNotMicro DiskTooDriveSide ControlReadWriteVerifyDeletedCannot BeAllocatedion FactorArgumentOut Of RangeOpenTableSpaceˆ ReadyCRCFullMismatchRevision =!@>!A*6COPYRIGHT 1980, NORTH STAR COMPUTERS, INC.:  Y3   bLM4zNO) +!#$,%-&P'[(!+31(2W4X6}RySvVuVtSpVoSnTmUlT7]3 \1D!"!"!."!F&"-!"!"-2D̓GB͍((>o&GͿ>C͍((>y0*>Ϳ>D͍(GͿ>g&!~!ø!>* &@:(:>?: 4>>Gͼ*k-~Y^ 6YGp(4G! v/ >;!:kw( w>:>G# 8:;= ͼ::(:0 :::0BO#BO#::+::: :xO: ::j_x8~_O#~_O#:u_*4:g:k=) =2u|!!u4!D!> 7ó!gy2k=0y82m<2rLv x(> 0> 8+ > 8!9"s: 2ͼ2#~ (R$N#F !$͖$8"$<<$## >25,~ (<$F>$# R$ $<$R$~j#) $<$S(D>$o& $~= <$~#R$(0#$ $PRESS RETURN TO CONTINUE"D$:$! 5##\$ D$:3=2 <2 0#$#$0#$#$#$/8x( :8G :$  >$ s#r#^#V#G "W$͇$( (08 0 (Oy2$> ;#*$~ (#"$#z+{x˸>>+x ><! (v>%%8u(j͸%0d>_ w#6 G ˸6 OV?DS ADT'EB?EM?EP}?FM7@GOAHE.KIL@?INCJP6?LFBLIIMC;MD5MLcJMM@ODI?OFwHPANPOl?RDBRN7RSHSFBSL8SM@STMSXHTY6VM@WRBWS>ST'VF'VD'>Gt&!-l(y!i8" O:D2D!6~6o yF >}hG̓GB͍(&GͿ>x(#C͍(:9eo&GͿ>D͍(*7:/Ϳ>͍(̓G2D!9F:9Fݦ<(>J( !-l(͍(̓G!*E:*Eݦ<>J!-l(͍(ÃGH͍(8( *>%0YʃG̓G>It&F(#N# !+.F#N# GFcOy>5t& !(~# ~(>~#(*>͍(ÃGe>J(~(xi >26ß&North Star Operating, Version 2.0.0rk: EmptyĻ Field Changed . . . Waitingʖ In Header In Data Seek Relativeʯ RunningControl-C Stop Completed˒ StructureBad:Unused:Overhead:Used: Track SpacingIllegalExtraneousDensityLengthMemoryByteSectorFileAccountNameNumberDiskHardSystemDirectoryErrorAlreadyTypeCommand FoundMissingProtectedRequiredAddressetteSourceDestinationExcessiveNumericSpecification In UseWARNING: CopyOption=(CPH>=*>!CPG ~#" =+" =(=(>%t&H0GG0xG)Gk/# ^HE02D>t&* ~# n/+" 0?:͍/>$t&k/͋.7!ʹ/T]͋.* +" !0100O)ܱ/)ܱ/)ܱ/)ܱ/oBK)80)8- 8*)8' 8y 8!0H('T(100x(p>Kt&Ox?y>t& 0p ^Ha8{0߷0:00AG?76͉/>$t&|yt&}`0Ê0k/!0S(D #" ~͋. +" 7#" k/͋.>'t&k/^HOTk/!0>t&!0>t&RFͣ0MO+0* " k/k/͋.0~͋. #, V#^+~ (͋.(#zy/{0͋.7 7yt&}o|gk/,;1#~y/;10;1O#" 08(>~#!8*> 9>:D*>> *>G_|@N H̓G7Y> H(~7:D262DQʹ(2D:9eGe>J((~ 1 xe1O>+Hyɯ26'K>J(~(!-"652+5C,5S.5"05"25"45"85J*85*45*25*05[.5K,5͈18 :+5*65p&)\2xt&)=<з7yt&*\2xt&->2(p&%>"D"D! > ڠ2y:EON!13"*D!*Eď3͢.!-p&:E=O:E=2y2<2=!N=26 #2 *DGDM>8+ >t&0 ( 0x >t&!"Dï30͊0\5O2+6  !*Ex2V>,t&!> 1>1>1>?2D0"D͊0~y/8K>1nf>15!@> G<~'K^V@>'Kd" ;HO!76"!#>y <,UG<"͢.!J !~ (H6¼.͢.˹>:32 E1DS 8=>,*D8=> C5(ô(>>0͊010͊0>1nf>10͠00͊0>106͟7͊0O2##N##~怰w# !H64q4k/%0G0K#B8 ~%0U(<0͊0)k/!0N(Y >;t&͋.0͊0:4.Ĵ(^!͍2Zô(!" E1x9(==R2O&HSD&H~怱2Er9)~2E>2E2E2E#E :y0O2E>2E2E2E2E2E2E`0xʶ9y2EHG!"DRx9)=2EW_SD!*E-{2x2ESEy2E~ 2Enf)>&t&2E~2E:ð&TO":SL:CR;1x(z0;SD>R2Y0͊0O: >t&&HSD&Hy2E:Ewn:)!E*D|4[;1>t&xt&͉/" E͊0"E>!-"652N>t&:EG[E:EO>J!-p&!9F{2* E|<> 12Ego"D" En*D8=!B=+=8=>,K*D@9(7*D~y/~!8= CR 6k/"('(͍/0zyt&Ck/^H^HG^H"('0k/͍/>$t&k/,(- ^H͍/0^H͍/0+@>>2t&ͅ==DMT/ͅ=Ê0̀/Ê0ͅ=k/͋.>$t&!EI=p#^H,(SDÊ0G>x0:*>*>(>|>}>> G:D > (> z{J>(>~>@>7(# (>>F>8(>F>̓G>>͌>8(>͌>8xG͐>(> (>~>-8y*>~~00y*>@>7(# ۷>O(> ůT/͊0J͍(Ϳ>!NG>h*>(>>-*>(>*;. 0aA=͆A>܃A͏A108GO͏A108FHG͏A( (,( 0p5>>AOp#(>aAp#(>> 8~>>=+H(>( (_(>{H>fAɯ%0|@( (_*>>_*>>0BO2O&H&H~#=(>!t&{>&t&z>&t&C&H!N@>0 1!(ͯ.! x"ͯ.1([ > 10=PBO2O&H&Hz>&t&~怱O{"!*Ex2!Ex2E(>t&:1E>&t&:0E2E"E>&t&!"E>1BB͠0=B͍/͠0B͊0:EOzB<!*E͏3g&G0G>t&k/%0S( D ^Hù02E͉/,N!9Fď3!-p&O*D O*D }O|GÍ2¼.*D1:D(}͢.EO!E~w,G:EOs3}!N=3 w36 # x3#xù2 "2Ex2E"E"E!E>27ɯ2E2E2E2E>2E2E0`4!E"E4͉/:E8 z>t&{52E͊0>2g&2D D"E!9F>J2D !> J͘'!> JĘ'>J(!DĘ'>Jz&z&!Dz&g&*p22E!i83R24Y00͉/Y0(x2E2D0#<4!Hq#p#:D_:Ew#!E!,( (w#6 #"Dg&*D|<͉/0:EOHD ~%0P(.H *͟7x=(>1^x(^VN>1k/͋.( 7"ð& >1ˁˁˀˉˈˉˑˑːSC[7BUb7RWi7ROp7DPw7DE~7͉/>$t&{怲>t&C͍/> t&?0yt&O2͠000m2͊0O2+6  ( ͋.(w#40j8z!c833p2"DO22E͉/>$t&͊0N#F#&H~(#<@>0 *D@>>t&PY4F(+r+s4@@_ ͉/>$t&͊0>1nf@>F(!*Ex2t&nf^V > Jg&ѷ!-p&F(;HG2E͠0;HO2E2DHG0"HHG0k/!0N(+Y(͋.f)[;![;"Dk/3[Dz::EG:EF:y02EF(Y0:EOxG;y2E!"DRxZ;)2D@>0/ʹ(DM:E=z;8͔2!9F:9Fݦ<Zʴ(!NN6* E"E>J(1( 2(!-͛'Zʹ(>J!-ě':EG*E>J!-p&0"D;ð&CR;TO;YN1>?2Dk/"D*D~y/8^>!-"652nf>1U<!@> *D#~͋. " ~'K^V@>'Ki" ;HO!<"!#>y <,U "͢.!J !~ (<0¼.͢.˹>:32 +=E1?DS 8=>,+G>h*>(>>.*>!N:/>t*>(>>-*>:/>t*>ÃG̀/>* ͊0̓G&T/͊0:D2=T/^HO͊0GHI=͠0PE=͊0HQT/E=͊0HP(>y>(>T/=V>T/I=͊0P>>:*>>>>0*>y(> ja>>G>t*>>>W>>h*>z~҃G ڃG>>z>-*>z*>ÃGͽ=x y0 ~@>#1 MD@> =!DE~w w@>#5 =>2D=2Dc>:Dw>> >Yt&T/ͽ= (#>~>(> >(>i`>̓G>|@@>#T/=E:DG # > >|@̓G@>ʃG# 5>G>>x#,( ^Hyo;H2EFOͣ0> t&0cC\2O&H##~怱2Ext|>t&x<̓C!*Ex2t&!*0E:>t&F(!NN6 ;HOY0>t&͊0xO! {N"ҵC > 1T/0;HG^H( >+t&͊0*DxX">1͋.(0>1nf"D͊0>12E_W>1̈́I!@> ̓GE͍(!EGJC͍(h&GÃG~ -^VͰJz #^VͰJ*D@> E'K*D@> GJnfH/~o>(- o&GHHSF AHWN(AHU~ AHDV(AHnG-}ƒG}nf Ϳ>GÃG:/ÃG(>~y>F#x  H ÿ>T/͊0d26xi>J}(xe( ̓G !"D!"EKI*E|(̓G*D#@>*E|7@>SET/͉/0!e͊0>1|>t&E>1J!@> ~ype] {[raddr]} [attr...] HelpaccountTOCRSLOFIllegalOption{,d}pathnamelenraddrbval{[args]}region[#n][account]{d}{dens}{[#n]}{sides}{len}[alloc][d]paddrFROMdaddr{[]}12MDCF[len] {[,,...]},d ͉/0!e͊0|>t&E>J˜'^͍(:/yN`͍(f-n,nN:/yNa͍(RR:/yN_͍(f(n'nNѯR:/̓G< H H͉/>$t&͊0| N}ʠN23>t&0  !bb!b6>2^*"`!`*`"`>J^Q^Q!Y~ڲW!<]~.QwV.Q*`!^>J!Y²Wx!Y±W:^!>Y±W*^|²Q}/ҲQ!/!^> JʲQ!qYʲW!YòW:^2b*^"b*^"b#:^Q*^))))#####"b#0 *^(*^))))"b>W!5Z²W:^2eb*^"fb>2db*`"ib>2^>2`!b"`~t"BSV :bhR:^hR S;PR>2^ZV!ZVt>  :tO!t A6# R!t~a8_w# !t~XSSSTWARQ0*@2`G#~=( : #~VR(6# UhR!ZVhR~hRqBSh!%b"`>2`:`o&"`>!^!`J!UZW*`#:_w#*_s#r:` 5:_![W:`(#!fT]6!"`>&W!O[WBW :_2`!t>!_J!\W:`¦U!t>J!\W:`GJ :`_!t>J!w[W:%bGb*`&p:`G!b"`~UVU!\Vɯ2`!db"`"`2`2`~LVLVVLV"`*`V#V:`1V@2\:`@2\!\V>2`V*`V:`2`!b"`~ʦVͬV:`@_: =V**`ͻVVqV  ^{#ûV*`(!`4! eR!db(V"`   yW:4OG>FDPRESS RETURN TO CONTINUE":  =2 H>|@:D! 5:3=2 _G0H|@ H>*>0GGG0GGG/"DG*DxH:HGH :D  H Hs#r#^#V#G "+H0Hk/18<0O#~"  ċ.y2E>t&* ~͋.mH#" #z+{F(͉/8͊0|>t&E>1>ͯHyQʹ('KʹHy >+H2DUi26xdȯyO:DJˁ(}((~(ˁ͘'F(͊0>͑H> 2F(0͊0'K~'Knf:/(>GJ̓G|@* k/͋.~K!0W!0_͊0O!&~eK~eKBHCHK ####y-KK-K!&-FHFH H HʴK####‡K.;K.þK/OyR>5t& !K~# ~(>~#K*>;KÃG newaccountnamed1 d2CFCF [len]CFCFCFCF {daddr} {[char]}d{[command]}dMC YNMClines floppyname,d floppyname [filet*!}|2O2O2O2O2O2O*}|2O!6#s#r!OG:/ÃG(>~y>F#x  H ÿ>T/͊0d26xi>J}O!Ns#FrCOy 8(0o&~(*O8 ({og"O|(l]ͰO(=((o!@> ~:^$Q RÐP?  @?@ 8 ? @@?@!&XV*~!j^¬PV*F|8&Ox!]±WA yP!]ұW`~/w/w±WxbO p!P0~w# }R!XV2`:b!a]RUUhR:`VW:`SVW>2b>W!UZ²WVW*`"!t*`~~,ˆS#~1҂SG#~‚S*`6#p#6#6U![W!_>J! \Wx2`{2`!"`"`>&W!&[W!f:`## 2` BW *`~!2b(!"/bz2`:`G:`(x!YW:`2%b:_2&b*_"'b*_")b:_2.b*^#V":b:_!P =2T*)b{#zW#:`#°T+~#~>2`qT:`ʰT:`°T![W:`ʁT:`/ʒT@ >2`{#zڰTF+n`")bڰT!L\:`@2b\V#~2+b#~2,b#~2-b#~G2Db#~2Eb#~2Fb#^#V#~2Kb"Ib*)b|g}oT+"Gb!_Qb>2`2`!b"`>2`! "`>!^!`J2`!f"`>2`>!_!`J*`#"`:_> TW*0"^!b"` >͛^!d> ͛^> 2`!"`>2`>!^!`J!UZ²W!^>JbO!XVVW!]V26&!1\:`@2[!ZVVW*`6>!_J/ X:2Xx: X1 2Xy2X!XV Hard Disk Boot In-Process To review connections, enter Semicolon (;) within a second or two $ No ; entered, so proceeding with prior connections$CONNECTION TO HARD DISK FAILED BECAUSE:$HDOS ERROR: XXX -SEE APPENDIX B OF HARD-DISK MANUAL$CP/M WORK FILE OPEN OR CREATE FAILED $CP/M WORK FILE IS WRITE PROTECTED - CANNOT PROCEED$NOT ENOUGH SPACE FOR 94 BLOCK WORK FILE$ATTEMPT TO SET WORK-FILE SIZE FAILED$CP/M WORK-FILE MUST BE FILETYPE 6, FIX WITH HDOS "TY" COMMAND$INCORRECT FILETYPE - MUST BE 7 FOR CP/M OR 16 FOR MS/DOS$READ FROM CP/M WORK FILE FAILED$WRITE INTO CP/M WORK FILE FAILED$CONNECTION TABLE CURRENTLY EMPTY$----- ENTER A CONNECTION or T=To HDOS or S=SAVE or X=EXIT?$UNRECOGNIZED INPUT - EXPECT UNIT:PATHNAME$ATTEED - MUST BE UNIQUE$----- Current Connections in WorkFile: WAITING FOR DISK TO COME UP TO SPEED$A: MUST BE A HARD DISK CP/M CONNECTION$NO ROOM FOR HDBIOS - FLOPPY BIOS TOO HIGH - RUN CPMGEN$INVALID VALUE FOUND IN HDPAGE (BIOS+6F7) - RUN CPMGEN$Entering HDOS (slight delay) to CReate "units", etc. When finished, Return to CP/M HDBOOT process with command "CP"$ ABORT - HDBOOT can only function at cold boot$ScBbSc@*b%b:bO>f{n>2%bÏe))))x K)bB0Wsn1nK'b#G:+bO:,b()= l&)zQbW~#fo))))x :&bO :.b >f{n 2Ïe#x/ 0:2ez :81 2e{2e:%b?2e!ex :eW HARD DISK ERROR#=XXX, UNIT Xj&f( P hvhH;g@‡fp(!x(!D"m"m"m*m[mKmx(!D"m"m"mKm[m*m!jjͫj2f>>`'<:f:f:f: f:!f:"f:#f:$f:%f>!*m^^^^f= Q !f>`+~+<(Vm8>> ~+ #Kf~(>#~ :f>j2 f2f> `` m!:f=mi>)_:m_ i> U>0  }i>zm>:mh>   >{m0 >t!mͤm}is!m̀mj 2lmͯj}i  ((ji>jjf:2my e> >CmA>8j2m>>`=>U> >>` + %U  > /o w(x:mVm0}{l}2f[fz@Gwmɯ2m:m2m:mA2mSmSm"m"m" f"m""f!9"m*MPT TO CONNECT UNIT X: FAILED BECAUSE$ERROR TRYING TO READ CP/M DIRECTORY AREA$WRITE ERROR INITIALIZING CP/M DIRECTORY$ERROR ATTEMPTING TO SET FILE TYPE$SIZE OF THE UNIT WAS ILLEGALLY REDUCED$UNIT IS EMPTY AND WRITE-PROTECTED - USELESS$FLOPPY DRIVE NUMBER UNACCEPTABLE$ATTEMPT TO OPEN UNIT FAILED BECAUSE$UNIT SIZE IS BELOW MINIMUM$ONLY A WARNING - UNIT X: IS OVERALLOCATED ABOVE MAXIMUM$CLOSE OF UNIT FAILED$ATTRIBUTE CHANGE TO "DIRTY" FAILED$ERROR IN LINES WITH * - YOU MUST CORRECT IT$UNITS X: AND Y: DUPLICAT*+++!"f>2f!DM*f#q#p##6!66#Udq#p##eq#p!^#V#"sd"d^#V#"e^#V!c!f"b>2%b2b[&f*!:(fO*b:bO> fydSnb~*bd2bd*b-[n*%b(K:%b<($4b!nd Sc!cd(:%bd:bd!4bn!Scc:-b*/b*b!ѯ2d_sn1n*b!Yz/{/Hi> >`> >l‘fsk hʎfÑfph!jjͫj2fgڼg@:m( Xs#Xs#Xs#Xs#Xs#Xs#Xs#Xs#(Xh R skGgJg>n!mGVmTgx͈mNgHi>l h %W:f(>p!mäm:f(2m!*mW(o!m>kmPX//!jjͫj2fg0:mG(@2mx͐mlÕf # #h skڎfh hmVm8!mlx͈m`(!j( x(~ ͺh x !j( x:mRlG!j(1x >l>lͺhRl >~ͺh 2l P**mR8x  y >sm}Ik~2f2m:m Cf!f#w#/w ' $!( %") & # * f#" f:m2m*m#"m:f *8*2f:m=2m l>m!f#w/#w:f l :fG<8:f<2fx(2f:f2m*m"m*m"m* f"m:m2m:mGw2mO7:m2f*m"m*m"m*m" f:m2mRl{l8Rlg@l{cl{l8>  l>|x>l>|>l>|>>g >_ 2 f! f~4#0 !m4 57!m͵m>kĆ(fz  <DG(! f~4#>rmG(>qm>|!m͵m*m2m:mO([f[f* f*m[mKmj:mG:mG:m!f~4#!m|m> >>` *m45|m!f|m!f|m!f~4#8 !mm|m! f4~#0!m4#45+5 @  $$AH"B$@ BAHI $@@@"A ! H@A$DADB!@@I!"DI$A$ ORG 07A00H ;ORIGIN FOR 32K SYSTEM ; ; ;***** USER AREA ***** USER AREA ***** USER AREA ***** ; SEQUENTIAL BASIC INPUT OUTPUT SYSTEM ; PERFORMS CHARACTER INPUT/OUTPUT FOR THE ; CP/M SEQUENTIAL DEVICES - CONSOLE & LIST ; ;THESE ROUTINES ARE FOR STANDARD HORIZON SYSTEMS ;MAY BE REPLACED IN EITHER THE SYSGEN-RAM-IMAGE AT ; 3200H-33FFH, OR IN SECTOR 8 (IN THE SYSTEM TRACK AREA), ; OR IN ITS ACTUAL EXECUTABLE LOCATION (7A00H-7BFFH IN 32K) ; ; ;****** BEGINNING OF JUMP VECTOR ********N HD-18 ;*** CPMGEN ALTERS BIOS+10H TO JUMP TO "PRTSER" OR "PRTPAR" ; DEPENDING UPON PRINTER INTERFACE ANSWER. ; ;****** END OF DEFINED JUMP VECTOR **************************** ; ; ; ; ;*** STANDARD HORIZON USART I/O ROUTINES *** ; ;INPUT FROM STANDARD (LEFT) SERIAL PORT CINL IN 3 ;GET STATUS FOR LEFT SERIAL PORT NOP ;ROOM FOR PATCHING ANI 2 ;RCVR READY ? JZ CINL ;NO, KEEP TESTING IN 2 ;GET THE ACTUAL CHARACTER NOP ;ROOM FOR PATCHING ANI 7FH ;STRIP PARITY BIT (D7) RET ;RETT BYTE NOP ;ROOM FOR PATCHING ANI 7FH ;CLEAR PARITY BIT RET ; ;CONSOLE INPUT PENDING TEST CONTST IN 3 ;GET LEFT USART STATUS NOP ;ROOM FOR PATCHING ANI 2 ;HAS BYTE BEEN RECEIVED? RZ ;NO, RETURN WITH ZERO IN A MVI A,0FFH ;YES, RETURN WITH FFH IN A RET ; ;OUTPUT TO CONSOLE OR STANDARD (LEFT) SERIAL PORT COUTL IN 3 ;GET STATUS NOP ;ROOM FOR PATCHING ANI 1 ;IS TX READY? JZ COUTL ;NO, LOOP UNTIL IT IS MOV A,C ;GET BYTE TO SEND NOP ;ROOM FOR PATCHING OUT 2 ;SEND IT RET ;D  @BB  ABI@ @ !     " !$DH !$BHHD!A"I$I$" @ I!D@$ $$$ :^$Q RÐP?  @?@ 8 ? @@?@!&XV*~!j^¬PV*F|8&Ox!]±WA yP!]ұW`~/w/w±WxbO p!P0~w# }************** ; USERBASE EQU $ ;MARK ORIGIN OF USER AREA JMP INIT ;COLD BOOT INIT (USART & PARITY SETUP) JMP CONTST ;CONSOLE TEST FOR INPUT JMP CINL ;CONSOLE INPUT (LEFT PORT) JMP COUTL ;CONSOLE OUTPUT(LEFT PORT) PRTSER JMP COUTR ;SERIAL PRINTER(RIGHT SERIAL PORT) JMP COUTL ;PUNCH TO CONSOLE JMP CINL ;PAPER TAPE READER FROM CONSOLE JMP PRTTST ;TEST PRINTER STATUS - NULL IMPLEMENTATION PRTPAR JMP COUTP ;PARALLEL PRINTER (IF CPMGEN TOLD PARALLEL) PRTP18 JMP COUTP18 ;PARALLEL PRINTER HUNG OURN WITH CHAR IN A REGISTER ; ;INPUT FROM SECONDARY (RIGHT) SERIAL PORT CINR IN 5 ;GET STATUS FOR RIGHT SERIAL PORT NOP ;ROOM FOR PATCHING ANI 2 ;RCVR READY ? JZ CINR ;NO, LOOP TILL RECEIVED IN 4 ;GET CHAR FROM DATA PORT NOP ;ROOM FOR PATCHING ANI 7FH RET ; ;INPUT FROM PARALLEL PORT CINP IN 6 ;MOTHERBOARD STATUS ANI 2 ;PI FLAG JZ CINP ;LOOP UNTIL DATA IN 0 ;READ DATA FROM PARALLEL PORT PUSH PSW ;SAVE BYTE MVI A,30H ;RESET VALUE OUT 6 ;RESET PI FLAG POP PSW ;RESTORE INPUONE ; ;OUTPUT TO SECONDARY (RIGHT) SERIAL PORT (PRINTER) COUTR IN 5 ;GET USART STATUS NOP ;ROOM FOR PATCHING ANI 1 ;IS TX READY? JZ COUTR ;LOOP TIL READY MOV A,C ;BYTE FROM C TO A NOP ;ROOM FOR PATCHING OUT 4 ;SEND BYTE VIA DATA PORT RET ;DONE ; ;OUTPUT TO PARALLEL PORT - IF CPMGEN TOLD THAT PRINTER ; IS PARALLEL, JUMP VECTOR ALTERED TO JUMP HERE COUTP IN 6 ;MOTHERBOARD STATUS ANI 1 ;TEST PO FLAG JZ COUTP ;EXTERNAL DEVICE NOT READY YET MVI A,20H ;RESET THE FLAG OUT 6 MOV A,C ;CHAR TO BE SENT TO A NOP ;ROOM FOR PATCHING TOGGLEP ORI 80H ;SET STROBE FALSE OUT 0 ;SEND CHARACTER XRI 80H ;TOGGLE STROBE TO TRUE OUT 0 ;KEEP SENDING XRI 80H ;TOGGLE STROBE BACK TO FALSE OUT 0 RET ;DONE ; ; ;NULL IMPLEMENTATION OF PRINTER TEST PRTTST XRA A ;LEAVE ZERO IN A RET ;DONE ; ;*********** INITIALIZATION CODE **************** ;******* PERFORMED ONLY ON COLD BOOTSTRAP ******* INIT NOP ;THREE NOP'S FOR PATCHING NOP NOP ; ;INITIALIZE MOTHER BOARD AND SERIAL LXI H,0 ;PREPARE TO CYCLE THROUGH RAM ;BEFORE SETTING PARITY FOR EACH KILOBYTE, CHECK IF REALLY RAM TINKCK MOV A,M ;GET FIRST BYTE OF KBYTE CMA ;FORM ITS COMPLEMENT MOV M,A ;CHANGE IT IN RAM CMP M ;SEE IF CHANGED IN RAM CMA ;RESTORE IT ;***NOTE, THESE FEW BYTES BETTER NOT BE ON A 1K BOUNDARY MOV M,A ;FOR THEY COULD ZAP THEMSELVES!!! JZ TINPAR ;IS RAM, GO INITIALIZE IT INR H ;NOT RAM, SO SKIP OVER INR H ;THIS KILOBYTE INR H JMP TINKADV ;SKIP OVER INIT CODE TINPAR MOV B,M ;READ BYT IN 4 ;FROM SECOND PORT ; ;INIT PARALLEL PORTS MVI A,30H ;RESET PAR. INPUT FLAG OUT 6 MVI A,60H ;SET PAR. OUTPUT FLAG OUT 6 ;WRAP IT UP BY SENDING A CR TO THE PRINTER & EXIT MVI C,0DH ;A CARRIAGE RETURN JMP USERBASE-700H+15 ;GOTO PRINT JUMP IN BIOS VECTOR ;******* END OF INITIALIZATION CODE ********* ; ;**** PARALLEL PRINTER OUTPUT WHEN HUNG ON HD-18 HARD DISK COUTP18 MVI A,20H ;SET COMMAND MODE OUT 6 MVI A,0FEH ;SELECT CONTROLLER 101 OUT 0 MVI A,0E1H ;SET CTLER TO I/O MODE OU; 1. SUPPORT NON-STANDARD DISK CONTROLLER PROM ADDRESSES ; 2. AUTOSTART HDBOOT AND SUPPLY THE WORK-FILE PATHNAME ; FOR NORTH STAR HARD DISK SYSTEMS. ; ; IF YOU HAVE NEITHER A NORTH STAR HARD DISK ; NOR A NON-STANDARD MDS PROM ADDRESSES, ; THEN YOU MAY FREELY OVERWRITE THE AREA AND USE THE ; ENTIRETY OF SECTOR 8 IN THE SYSTEM TRACK AREA. ; ; IF YOU DO HAVE A HARD DISK OR NON-STANDARD MDS PROMS, ; THEN YOU MUST LEAVE THE LAST 80H BYTES INTACT. ; IN THE SYSGEN RAM IMAGE, YOU MUST LEAVE 3380H TH&Y! !!7ɯ7ɯ7ɯ7S!::% h>J>>:=>x!F#   >@ RAM PARITY ERROR O!P&JP 5000 C PORTS XRA A ;ZERO A OUT 6 ;INIT MOTHERBOARD OUT 6 ;REPETITIVELY OUT 6 OUT 6 ;STANDARD (LEFT) SERIAL PORT INITIALIZATION MVI A,0CEH ;2 STOP BITS, 16X CLOCK OUT 3 ;& 8 DATA BITS, NO PARITY MVI A,37H ;CMD: RTS,ER,RXF,DTR,TXEN OUT 3 ;SECONDARY(RIGHT)SERIAL PORT INITIALIZATION MVI A,0CEH ;2 STOP BITS, 16X CLOCK OUT 5 ;& 8 DATA BITS, NO PARITY MVI A,37H ;CMD: RTS,ER,RXF,DTR,TXEN OUT 5 ; ;PARITY INITIALIZATION MVI A,40H ;DISABLE PARITY LOGIC OUT 0C0H ;BEFORE READING UNWRITTEN RAM E FROM RAM MOV M,B ;RESTORE IT WITH CORRECT PARITY INR L ;INCREMENT LOW ORDER ADDR BYTE JNZ TINPAR ;LOOP IF NOT END OF 256B BLOCK TINKADV INR H ;INCREMENT BLOCK NUMBER JZ TINU ;WRAPPED AROUND, EXIT MOV A,H ;SEE IF ON 1K BOUNDARY ANI 3 JNZ TINPAR ;NO, TIGHT LOOP THRU ONE KILOBYTE JMP TINKCK ;YES, TEST NEW KB FOR REAL RAM ; ;PARITY ALL CORRECT, ENABLE PARITY TESTING TINU MVI A,41H ;TURN PARITY ON OUT 0C0H ;ON RAM BOARDS ; ;REMOVE ANY JUNK APPEARING IN INPUT PORTS IN 2 ;FROM STD PORT T 0 MVI A,60H ;SET DATA MODE OUT 6 P18WAIT IN 6 ;TEST CTLER'S PO FLAG ANI 8 ;FOR READY JZ P18WAIT ;LOOP UNTIL READY IN 0 ;CLEAR CONTROLLER'S PO FLAG MOV A,C ;CHARACTER TO SEND ORI 80H ;SET STROBE FALSE OUT 0 ;PUT CHAR IN PORT XRI 80H ;TOGGLE STROBE *TRUE OUT 0 XRI 80H OUT 0 MVI A,20H ;BACK TO COMMAND MODE OUT 6 MVI A,0FFH ;DESELECT CONTROLLER OUT 0 RET ;DONE ; ; ; THE LAST 80H BYTES OF THIS 512 BYTE USER AREA IS NEEDED ; BY THE DISK BIOS FOR TWO SPECIAL PURPOSES. RU ; 33FFH UNMODIFIED, USE ONLY 3200H-337FH FOR YOUR ; REPLACEMENT USER AREA H STAR HARD DISK SYSTEMS. ; ; IF YOU HAVE NEITHER A NORTH STAR HARD DISK ; NOR A NON-STANDARD MDS PROM ADDRESSES, ; THEN YOU MAY FREELY OVERWRITE THE AREA AND USE THE ; ENTIRETY OF SECTOR 8 IN THE SYSTEM TRACK AREA. ; ; IF YOU DO HAVE A HARD DISK OR NON-STANDARD MDS PROMS, ; THEN YOU MUST LEAVE THE LAST 80H BYTES INTACT. ; IN THE SYSGEN RAM IMAGE, YOU MUST LEAVE 3380H THXx <67ɯ>/G>>@!T]<>>>7>7 !+~(>G^> xx>) ((xxP>7?7$`( ͋h H}@f` x(!! ~ of " ͳ Ó  2  : OSyqÓ g | /il  : jÓ xRBB LyHx>= xM= g x@qÓ p)@  2  : GXs#Xs#(X R | (>n! ! p t  &W:(>p!  :(2 * g : O>q8z |ɯ2 !~G#N#~Wf n 7B8r“ fn7B! 8~ͳ : ȯd ] @ < :+g !:_: _ c: ͳ P %<( >{Ó : ͳ {: t! (! >i Ò ! ! rp g $ : xo x0 x@  x  x+~+<(>~+ : #K~(>#~ :>G: OA>G: Ox>>2 22 xA2 C S S " " ""@@ sF1O(!"N8>.Q !Q _#!~#fo{F25SW 8>>'!; Aı~ı>(fnR>0Ա-,̱V^!96rs66uV^!9ͱ G<{F33>*W !e{ѷ!"N;{xG1OP V!9 V>G> Y6=n=:IeG*J+R>":IO[J"Jyx2I>eGy~>$~>/6sfn~>'Ytu!Y'!Y6NqV^~ >)~=>6~>#͝|=B>'|(#~ 0>0z{Gͤp qR͸>'V^̓Kf>fnV ^YY#l ͝7GT |(Gu r sx- F Np q 6 fntu6 6 V^fnR#>2NB>1>-`iBDMkzBRKfn~ͪtux w y̓8!FN##x>0OòB< ~ R>RR(:T=(>> *RR#DM:T<2T*RR"R>2T!y"RfV^̓fs  :H> x2H"L!"N~ 2Hfn"L!"N# x O/G/O~w}<<<G>'~ 0ͪF(-(, >ͪF( >- >, xʅ̓~ ' >ɯ ͜>͜*U#|+( ̓ѷ>,>-*U#|SU!"UJ>zW2:IG U( }y2>}y! W0g ! >o! p >kÓ PXx/x/  2 (: G(2 ! 4~#(Ґ X px #x # | i,>m! ! p >l! 2 y(x: I #! :A(! :" 2 G  o(}_  (~g O q>@ͳ _ g G(K > @(   hÕ= 2 * ##6+  wr >wGV : 6r ( * ~2 rz@2 _ͳ {#^q#Vp#n B(t2 C0ROͳ x(*:8_x0s“ ~8: _| Wx!r+q+w2 y     *#"* |#" )* ~=#< $~ #~8 * ### : 2 * :og} !w: =2 F >ʓ !#w/#w~ F ##~4ݾ !5w+4+~ wݾ8 >s“ #~8:2 !  *" : Gw2 O7: 2!  * "2 4~#(02 4 5!4~#0: * 2 : O(G [[** [ K g : G: G: ~wNqFNVpqrwwwww/wwsrrY!Y :H( ͼ4f8rsKf[Lrs~ O:Hw FNV^V^~ >)5Y8ѷ!Y'rs!Y666V^sNDMfn+|#>%([JR(d W`i̓6sNFN x>&Y8ѷV^ѷWY!Y 8:HeGY8!Y  >8:HeGypqrssy~wsV^># B X)!"N!x́:HG!"N!x́!xͱ -!"N:H́~<( !R swͱ>xV ^ z>+>>ͽ* "BK[[R !#( x Bz>BK>ͽ*B"^sut^snf66*N*L!xzWK>*NR(*L!g"Ny_>!*R"R:T=2T6*R'''Wrs!v fnR *R >!~w#~w:JO:KO> ͍:IGyU2>}y> y08:0>  ͍> ͍>!G( >+>SP>'~>#:H̓~>~wR:H̓:HB̓:HA̓2[I[Y!:<6(6'6*6)6+6-6,!"N!x́!x́Y !Y  :H>>*V^tuR!!96666rs|(!"N!+(!9ɯ~>E!~ ͦ\0!+n=!Hp?!2I"J!*&hͮ!RBK!M"FY!9!#Z !#9!222xdG26͎6&h)!fn|>4#|+>x̓Y!:G>2[SWSfn|=}=>2>2O:%7:&C>7ɯ2O*'<"f/n.xj:j>8*W[|ʅ|}ʅ>9tu2X!)~2W66:X̓}:W !A+|z2625) 6#6!H6 ̓xe8<6Z !{P0pd message code Cold Boot ?zկ ( :  Y 2r(Q0Mշļ 7 wO#7wO#!u(<>  - *q>*sG* :kOx25*o2- B8} /_8"oQL*m~z0"0#Gxg2j|DK>(x`*mo/G~v!:+0z *q vv25>?a$N$(>Ta$0a$F$>Da$y?0a$F$>Sa$$N$( !$+6 T]͑$7 ",7 ,0"7w#͑$p$͑$ 7:/!$O:$o&>">25O#y$}2$>"$2$~ !">د2$>2/!"$͹":$  7*$"M!/~wy2$*!""!/:$O:$o&>"" :/"!:$ N ˸6 ! %$@(Z_(( 02((O(O(r(' (p (q(.(((>$ ^>T%0>$> $>>@$>7>3$o&$ ( |%8=%8%8 ˸x > % 6 7x> %7o&9~8 <(+~07 $7% C&1D5&""!~-~(f(,~>=&&:#&z2;>J!"5͈.!" :5!06ʰ(:!>\ !5~6!-b(y͕'͈.'(/#" \(:DG252D:32 ͸.hG͈.&/h!t&(//_/WWH##&##¶&yn& H CPP CR5 DE5 Output Device Sync Or Available˒ Transfer To DOS Port CF MC on Boundary Full Expanded KeywordGO One Attribute Size Locked Text OnEnd of Exceeded Newing A Only Making Partial Block Execution Message ValueSingled:::: Unforeseen Yet ImplementedAre You Sure? AbortedWork: E?0>!o&G!̓~ ~ | }(0fn# x ˯Y8!Y >̓~ | }> x >ͮ>A>ͮ>ͽ>y0 8?Ox ؀'؁G~#O, 8ɯqxs# G!|7?ɷG!|7?#:# x ~#,Y !Y#_xF> # !"N:H́:H́!9~w~w:Pw:QwoyMMOxxG!9|29"726>5d ;!!>* &@:(:>?: 4>>G*k-~Y^ 6YGp(4G! v/ >!:kw(* * w>:- >J>G- 8:;= ͼ::(:0 :: :0BO#BO#::+::: :xO: ::j_x8~_O#~_O#:u_*4:g:k=) =2u|!!u4!D!> 7ý!gy2k=0y82m<2rL̀ x(> 0> 8+ > 8!9"s: 2 # ~ (\$N#F !$͠$8"$25,~ (F$FH$# \$$F$\$~t#)$F$S(DH$o&$~= F$~#\$(0-$$PRESS RETURN TO CONTINUE"N$:$! 5##f$ N$:3=2 <2 0-$-$0-$-$-$/8x( :8G :$  H$ s#r#^#V#G "a$͑$( (08 0 (Oy2$> E#*$~ (#"$#z+{x˸>>+x ><! (v>%%8u(j%0d>_ w#6 G HEK JP? LIH SL7 STM DT'VF'VD'>Gn&!-b(y!A8" O:D2D!6~6o yF >}hGhGB̓(&ͼG͞>x(#C̓(:9eo&ͼG͞>D̓(*7.͞>̓(hG2D!F:Fݦ<(>J( !-b(̓(hG!E:Eݦ<>J!-b(̓(hGH̓(8( >/YhGhG>In&F(#N# !".F#N# GFdOy>5n& !(~# ~>~#~( >̓(hGe>J(~(xi >2625Ù&North Star Operating, Subset V2.1.0SyntaxmptyĻ Field Changed . . . Waitingʖ In Header In Data Seek Relativeʯ RunningControl-C Stop Completed˒ StructureSkips:Unused:Overhead:Used: Track Spacing HelpIllegalExtraneousDensityLengthMemoryByteSectorFileAccountNameNumberDiskHardSystemDirectoryErrorAlreadyTypeCommand FoundMissingProtectedRequiredAddressSourceDestinationExcessiveNumericSpecification In UseWARNING: CopyOptionStructure Contaminated Line LongNotFloppy DiskTooDriveSide ControlReadWriteVerifyDeletedCannot BeAllocatedion FactorArgumentOut Of RangeOpenTableSpaceˆ ReadyCRCFullMismatchRevision=!@>!A*6COPYRIGHT 1980, NORTH STAR COMPUTERS, INC.:  Y3  bLM4{NO) +!R#$,%-&P'[(!+31(2W4X6}RySvVuVtSpVoSnTmUlT7]3 \1D!."!C&"-!"!"-26ye29"7a&!~=(CPG>= >!CPG ~#" =+" =(=(>%n&G0>~#!8 > >:D >> >G_^@N GhG7Y> G(~7:D262DQͪ(2D:9eGe>J((~ ͞1 xeĞ1O>Hyɯ26K>J(~(!-"525C5S5"5" 5" 5"5J*5* 5* 5*5[5K5E18 :5*5j&)2xn&)=<з7yn&*2xn&->S51%>"D"D! > X2y:DON!2"!-"5*D!E[3͍.!-j&:D=O:D=2y2<Ҹ2=!N=¬26 #±2 !-"5*DN!F[3!-j&O*D O*D }O|GE2§.*Dn&!"D{3́0G045 2+6  !E52V>,n&!> ͸1>͸1>ø1>?2D́0"DG0~6/8K>͸1nf>͸1͝5!> !<~K^V>Kd"  HO!6"!#>y <,U!<"͍.!J !~ ( 6§.͍.˹>:32 1CS =>,*D=> 5'ê(>>́0G0ø1́0G0>͸1nf>ø1́0]0́0G0>ø1́0ҿ6w7G0 2##N##~怰w# H6´4qô4(//G0K#B8 ~/U(<D ~/P(.H *w7x=(>͸1^x.Ī(^!E2Zê(!"D0xʧ9(==2O HSD H~怱2DJ9)~2D>2D2D2D#D9y0O2D>2D2D2D2D2D2D0xʎ9y2D-G!"DRxʤ9)=2DW_SD!E-82x2DSDy2D~ 2Dnf)>&n&2D~2D!-"59ê&TO:SLa:CR:0x(z;SD>20G0O: >n& HSD Hy2D:DwL:)!D*D|̴41;0>n&xn&F/"DG0"D>1N>n&:DG[D:DO>J!-j&!F82*D|<> ĸ12Dgo"D"Dnf)1;!1;"D(/͕3[Dz::DG:'7*D~6/~!= CR 6(/"('(J//zyn&C(/FHFHGFH"('/(/J/>$n&(/,(- FHJ//FHJ//z7( +>>2n&_=Ͳ=DM/_=G0=/G0_=(/͂.>$n&!D#=p#FH,(SDG0G=x0: > >>|=}=> G:D > > z{)>>~=>7(# >=%>8>%>hG>͠>k>8>k>8]Go>> >~>-8y >~~00y >>7(# ۷>O> ů/G0J̓(͞>!NͨG>h >>>- >>*;.+ͨG>h >>>. >!N.>t GþG0xG)þG(/# FH02D>n&* ~# +/+" 0?:J/>$n&(/͂.7!q/T]͂.* +" ///O)n/)n/)n/)n/oBK)80)8- 8*)8' 8y 8/H('T(/0x(p>Kn&Ox?y>n&/p FHa8{0߷0:00AG?76F/>$n&|yn&}0G0(//S(D #" ~͂. +" 7#" (/͂.>'n&(/FHOT(//>n&/>n&RF`0MO+͕0* " (/(/͂./~͂. #, V#^+~ (͂.(#z6/{0͂.7 7yn&}o|g(/,0#~6/000O#" ́080:D(}͍.DO!D~w,G:DO73}!N=C3 ;36 # xC3#xw2!-"5 "2Dx2D"D"D!D>17ɯ2D2D2D2D>2D!-"52D́044!D"D;4F/:D8 z>n&{42DG0>1a&2D D"D!F>J2D !> J͎'!> JĎ'>J(!DĎ'>Jt&t&!Dt&a&*-22D!A832;400F/0(x2D2D0#<4Hq#p#:D_:Dw#!D!,( (w#6 #"Da&*D|8+ >n&0 ( 0x >(^VN>͸1(/͂.( ]7"ê& >ø1ˁˁˀˉˈˉˑˑːSC37BU:7RWA7ROH7DPO7DEV7F/>$n&{怲>n&CJ/> n&?̓0yn& 2]0́0/*2G0 2+6  ( ͂.(w#ô4́0B8z!;833-2"D 22DF/>$n&G0N#F# H~(#<>0 *D>>n&PY4<(+r+sô4@@_ F/>$n&G0>͸1nf><(!E52n&nf^V > Ja&ѷ!-j&<( HG2D]0 HO2D2D-G0"H-G0(//N(+Y(͂./G0)(//N(Y >;n&͂./G0:4D$:y02D<(0:DOx;y2D!"DRx0;)2D>0/ͪ(DM:D=P;8L2!F:Fݦ<Zʪ(!NN6!D*D"D>J(1( 2(!-͑'Zͪ(>J!-đ':DG*D>J!-j&́0"D;ê&CR;TO;YN;(/>͸1>?2D(/"D*D~6/8^>!-"51nf>͸1/<!> *D#~͂. " ~K^V>Ki"  HO!<"!#>y <,U "͍.!J !~ (ͷ<0§.͍.˹>:32 =1?CS =>,*D=!===>,K*D9>>>- >.>t >hG=/>* G0<(hG&/G0:D2=/FHOG0GG#=]0P=G0HQ/=G0HP>y=>/Ͳ=V=/#=G0P>>: >>͠>>0 >y> ja>͠>ͼG>t >>͠>W=>h >z~hG hG>͠>z>- >z >hG͜=x y0 ~>#0 MD> ͸=!DD~w w>#5 ͩ=>2Dͩ=2DB>:DV>ͬ> >Yn&/͜= (#=~=> =>i`=hGͬ>^@>#/͸=D:DG # = ͬ>^@hG>hG# >G>͠>x#,( /CAͲ=hA>eAqA/8GOqA/8FHGqA( (,( /p>>AOp#>CAp#>> 8~=>=H>( (_>{G=HAɯ/^@( (_ >>_ >>́0A 2O H H~#=(>!n&{>&n&z>&n&C H!N>0 1!(͚.! x"͚.1([ > ͸1j&́0Ͳ=5B 2O H Hz>&n&~怱O{"!E52!Dx2D(>n&:E>&n&:E2D"D>&n&!"D>ø1ʹBB]0Ͳ=ʹBJ/]0BG0:DOzB<!ES3a&0G>n&(//S( D FHv02DF/, FHyo H2DFO`0> n&G0*Dxb">͸1͂.(́0>͸1nf"DG0>͸12D_W>͸1lI!> hGE̓(!D/JC̓(h&ͼGhG~ -^V͘Jz #^V͘J*D> DK*D> /Jnf/~o>(- o&ͼGGHSF AGWN(AGU~ AGDV(AGnͼG-}hG}nf ͞>ͨGhG.hG>~yʠ>F#x  G Þ>/G0d26xi>J}(xe( hG !"D!"D3I*D|(hG*D#>*D|7>SD/F/0!eG0>͸1|>n&E>͸1J!> ~K~Knf.͉accountTOCRSLOFIllegalOption{,d}pathnamelenraddrbval{[args]}region[#n][account]{d}{dens}{[#n]}{sides}{len}[alloc][d]paddrFROMdaddr{[]}12MDCF[len] {[,,...]},d F/0!eG0|>n&E>JŽ'^̓(.TN`̓(f-n,IN.TNa̓(RR.TN_̓(f(n'INѯR.hG< G GF/>$n&G0|{N}{N23>n& H͉/>$t&͊0| N}ʠN23>t&0  !bb!b6>2^*"`!`*`"`>J^Q^Q!Y~ڲW!<]~.QwV.Q*`!^>J!Y²Wx!Y±W:^!>Y±W*^|²Q}/ҲQ!/!^> JʲQ!qYʲW!YòW:^2b*^"b*^"b#:^Q*^))))#####"b#0 *^(*^))))"b>W!5Z²W:^2eb*^"fb>2db*`"ib>2^>2`!b"`~t"BSV :bhR:^hR S;PR>2^ZV!ZVt>  :tO!t A6# R!t~a8_w# !t~XSSSTWARQ0*@2`G#~=( : #~VR(6# UhR!ZVhR~hRqBShn&́0HC2O H##~怱2Dx!C<+V+^hC0>n|>n&x<hC!E52n&!*E:>n&<(!NN6 HO0>n&G0xO! {N"ҚC yW:44G>FDPRESS RETURN TO CONTINUE":  =2 Gͬ>^@:D! 5:3=2 DGH^@ G> >0GGG0GGG/"DG*DxG:GGG :D  G Gs#r#^#V#G "HH(/18<0O#~"  Ă.y2D> !-j&* ~͂.UH#" #z+{<(F/8G0|>n&E>ø1>͗HyQͪ(K͜Hy >H2DUi26xdȯyO:DJˁ(}((~(ˁ͎'<(G0>yH> ø1<(́0G0> ø1/0 HGFH( >+>/JhG^@* (/͂.eK/W/_G0O!&~MK~MKBGCGK ####y,3K>cn&!&,FGFG G GʛK####nK,ͥK,åK-OyP>5n& !K~# ~>~#K >ͥKhG newaccountnamed1 d2CFCF [len]CFCFCFCF {daddr} {[char]}{[command]}dMC YNMClines floppyname,d floppyname [filetype] {[raddr]} [attr...]*!}|2O2O2O2O2O2O*}|2O!6#s#r!OG:/ÃG(>~y>F#x  H ÿ>T/͊0d26xi>J}O!Ns#FrCOy 8(0o&~(*O8 ({og"O|(l]ͰO(=((o!@> ~:^$Q RÐP?  @?@ 8 ? @@?@!&XV*~!j^¬PV*F|8&Ox!]±WA yP!]ұW`~/w/w±WxbO p!P0~w# }R!XV2`:b!a]RUUhR:`VW:`SVW>2b>W!UZ²WVW*`"!t*`~~,ˆS#~1҂SG#~‚S*`6#p#6#6U![W!_>J! \Wx2`{2`!"`"`>&W!&[W!f:`## 2` BW *`~!2b(!"/bz2`:`G:`(x!YW:`2%b:_2&b*_"'b*_")b:_2.b*^#V":b:_!P =2T*)b{#zW#:`#°T+~#~>2`qT:`ʰT:`°T![W:`ʁT:`/ʒT@ >2`{#zڰTF+n`")bڰT!L\:`@2b\V#~2+b#~2,b#~2-b#~G2Db#~2Eb#~2Fb#^#V#~2Kb"Ib*)b|g}oT+"Gb!_Qb>2`!%b"`>2`:`o&"`>!^!`J!UZW*`#:_w#*_s#r:` 5:_![W:`(#!fT]6!"`>&W!O[WBW :_2`!t>!_J!\W:`¦U!t>J!\W:`GJ :`_!t>J!w[W:%bGb*`&p:`G!b"`~UVU!\Vɯ2`!db"`"`2`2`~LVLVVLV"`*`V#V:`1V@2\:`@2\!\V>2`V*`V:`2`!b"`~ʦVͬV:`@_: =V**`ͻVVqV  ^{#ûV*`(!`4! eR!db(V"`   X B OF HARD-DISK MANUAL$CP/M WORK FILE OPEN OR CREATE FAILED $CP/M WORK FILE IS WRITE PROTECTED - CANNOT PROCEED$NOT ENOUGH SPACE FOR 94 BLOCK WORK FILE$ATTEMPT TO SET WORK-FILE SIZE FAILED$CP/M WORK-FILE MUST BE FILETYPE 6, FIX WITH HDOS "TY" COMMAND$INCORRECT FILETYPE - MUST BE 7 FOR CP/M OR 16 FOR MS/DOS$READ FROM CP/M WORK FILE FAILED$WRITE INTO CP/M WORK FILE FAILED$CONNECTION TABLE CURRENTLY EMPTY$----- ENTER A CONNECTION or T=To HDOS or S=SAVE or X=EXIT?$UNRECOGNIZED INPUT - EXPECT UNIT:PATHNAME$ATTEED - MUST BE UNIQUE$----- Current Connections in WorkFile: WAITING FOR DISK TO COME UP TO SPEED$A: MUST BE A HARD DISK CP/M CONNECTION$NO ROOM FOR HDBIOS - FLOPPY BIOS TOO HIGH - RUN CPMGEN$INVALID VALUE FOUND IN HDPAGE (BIOS+6F7) - RUN CPMGEN$Entering HDOS (slight delay) to CReate "units", etc. When finished, Return to CP/M HDBOOT process with command "CP"$ ABORT - HDBOOT can only function at cold boot$ScBbSc@*b%b:bO>f{n>2%bÏe))))x K)bB0Wsn1nK'b#G:+bO:,b()= l&)zQbW~#fo))))x :&bO :.b >f{n 2Ïe#x/ 0:2ez :81 2e{2e:%b?2e!ex :eW HARD DISK ERROR#=XXX, UNIT Xpj)f`(n͐hh H‚g@kf` x(&i!k~ of "fj͸kØmkj2fk:nOSyqØmlj́l4hnfqf2`!b"`>2`! "`>!^!`J2`!f"`>2`>!_!`J*`#"`:_> TW*0"^!b"` >͛^!d> ͛^> 2`!"`>2`>!^!`J!UZ²W!^>JbO!XVVW!]V26&!1\:`@2[!ZVVW*`6>!_J/ X:2Xx: X1 2Xy2X!XV Hard Disk Boot In-Process To review connections, enter Semicolon (;) within a second or two $ No ; entered, so proceeding with prior connections$CONNECTION TO HARD DISK FAILED BECAUSE:$HDOS ERROR: XXX -SEE APPENDIMPT TO CONNECT UNIT X: FAILED BECAUSE$ERROR TRYING TO READ CP/M DIRECTORY AREA$WRITE ERROR INITIALIZING CP/M DIRECTORY$ERROR ATTEMPTING TO SET FILE TYPE$SIZE OF THE UNIT WAS ILLEGALLY REDUCED$UNIT IS EMPTY AND WRITE-PROTECTED - USELESS$FLOPPY DRIVE NUMBER UNACCEPTABLE$ATTEMPT TO OPEN UNIT FAILED BECAUSE$UNIT SIZE IS BELOW MINIMUM$ONLY A WARNING - UNIT X: IS OVERALLOCATED ABOVE MAXIMUM$CLOSE OF UNIT FAILED$ATTRIBUTE CHANGE TO "DIRTY" FAILED$ERROR IN LINES WITH * - YOU MUST CORRECT IT$UNITS X: AND Y: DUPLICAT*+++!"f>2f!DM*f#q#p##6!66#Udq#p##eq#p!^#V#"sd"d^#V#"e^#V!c!f"b>2%b2b[&f*!:(fO*b:bO> fydSnb~*bd2bd*b-[n*%b(K:%b<($4b!nd Sc!cd(:%bd:bd!4bn!Scc:-b*/b*b!ѯ2d_sn1n*b!kj:njØmxWgGgGgkLyHx>= xM= ljx@vgØmp.h@gkj2fg :mGXs#Xs#(X h R ́l(>n!m!fumyjk &W:f(>p!mÄm:f(2m*mlj:nOW0lj!m>o!fum>kØmPXx/x/kj2fg(:mG(2m!f4~#(ҕm]mufx #x # h ́lnf1h>m!m!fum>l!m2my(x:mI #!n:fA(!n: f"n2nG ko(}_ k(~g O q>@͸kk_ g G(Kn>k@(   hÚh= 2m*n##6+k wwi >wG[j:m6wi k( *n~2nrz@2n_͸k{#^q#Vp#n B(t2nC0RO͸kx(*: f8_x0q8z |ɯ2f!f~G#N#~Wf n 7B8wi˜mfn7B!n8~͸k:nȯijbjk@ < f:nlj!:f_:m_ c:n͸kPk %<( >{Øm:n͸k{:nt!m(!m>ḯm×j!m!frumlj)ij:ns˜m#~8:f2m!mm* f"m:mGw2mO7:m2f!mm*m" f2m4~#(02m4 5! f4~#0:m*m2m:mO(G [f[f* f*m[mKmlj:mG:mG:m@@n @  $$AH"B$@ BAHI $@@@"A ! H@A B$  BI$B@BD  Ix@ x@(xkk:nxo x0 x@"k x  x+~+<(>~+ :f #Kf~(>#~ :f>G:nOA>G:nOx>>2m2 f2mxA2mCmSmSm"m"m" f"m""f*n!9"m*mN P0 <+lWxDOxݾ8 >s˜m~8:m_lWx!fr+q+w2my     * f#" f*m|#"m )*m~=#< $~ #~8 *n### :m2m*n:fog} !fw:m=2m Km>ʘm!f#w/#w~   @BB   ! @$H$ $  A@$H @I! "H B H""H$@" @   D $$"@":^$Q RÐP?  @?@ 8 ? @@?@!&XV*~!j^¬PV*F|8&Ox!]±WA yP!]ұW`~/w/w±WxbO p!P0~w# }